From 2261adc1ff07bba181a8e0a2512814d0f0754d50 Mon Sep 17 00:00:00 2001 From: Henning Hall Date: Thu, 19 Apr 2018 22:39:56 +0200 Subject: [PATCH] locale wip --- .../date_picker/DatePickerManager.java | 2 +- .../date_picker/wheels/DayWheel.java | 1 - .../date_picker/wheels/HourWheel.java | 4 +- .../henninghall/date_picker/wheels/Wheel.java | 19 +++++-- example/App.js | 55 +++++++++++++++++-- example/yarn.lock | 6 +- 6 files changed, 72 insertions(+), 15 deletions(-) diff --git a/android/src/main/java/com/henninghall/date_picker/DatePickerManager.java b/android/src/main/java/com/henninghall/date_picker/DatePickerManager.java index 4ccfd33..b0ef71f 100644 --- a/android/src/main/java/com/henninghall/date_picker/DatePickerManager.java +++ b/android/src/main/java/com/henninghall/date_picker/DatePickerManager.java @@ -38,7 +38,7 @@ public class DatePickerManager extends SimpleViewManager { @ReactProp(name = "locale") public void setLocale(PickerView view, @Nullable String locale) { - view.setLocale(LocaleUtils.toLocale(locale)); + view.setLocale(LocaleUtils.toLocale(locale.replace('-','_'))); } public Map getExportedCustomBubblingEventTypeConstants() { diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java index 8de374d..b7dc379 100644 --- a/android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java +++ b/android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java @@ -24,7 +24,6 @@ public class DayWheel extends Wheel { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, -5000); - for(int i=0; i<=(max-min); i++){ values.add(format.format(cal.getTime())); cal.add(Calendar.DAY_OF_MONTH, 1); diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java index b5417bd..13ecfb0 100644 --- a/android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java +++ b/android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java @@ -18,14 +18,14 @@ public class HourWheel extends Wheel { void init() { int numberOfHours = Utils.usesAmPm(locale) ? 12 : 24; - for(int i=0; i(); - this.format = new SimpleDateFormat(getFormatTemplate(), locale); + this.parent = (ViewGroup) picker.getParent(); refresh(); picker.setOnValueChangedListener(new NumberPickerView.OnValueChangeListener() { @@ -52,18 +55,26 @@ public abstract class Wheel { } public void setLocale(Locale locale) { - this.locale =locale; + this.locale = locale; refresh(); } private void refresh() { this.format = new SimpleDateFormat(getFormatTemplate(), locale); - if (visible()) init(); + this.values = new ArrayList<>(); + + if (visible()) { + add(); + init(); + } else remove(); } private void remove() { ((ViewManager) picker.getParent()).removeView(picker); } + private void add() { + parent.addView(picker); + } } diff --git a/example/App.js b/example/App.js index 264f0d3..7496c8a 100644 --- a/example/App.js +++ b/example/App.js @@ -1,25 +1,55 @@ import React, { Component } from 'react'; -import { View, StyleSheet} from 'react-native'; - +import { View, StyleSheet, ScrollView, Text, TouchableOpacity } from 'react-native'; +import SearchInput, { createFilter } from 'react-native-search-filter'; +import DeviceInfo from 'react-native-device-info'; import DatePicker from 'react-native-date-picker-x'; +import locales from './locales'; export default class App extends Component { - state = { chosenDate: new Date() } + searchUpdated(term) { + this.setState({ searchTerm: term }) + } + + state = { + chosenDate: new Date(), + searchTerm: '', + locale: DeviceInfo.getDeviceLocale(), + } setDate = (newDate) => this.setState({ chosenDate: newDate }) render() { + const result = locales.filter(createFilter(this.state.searchTerm)).slice(0, 5); + console.log({result}); + return ( + Current locale: {this.state.locale} + { this.searchUpdated(term) }} + style={styles.searchInput} + placeholder="Change locale" + /> + + {result.map(locale => ( + this.setState({locale})} key={locale} style={styles.item}> + {locale} + + )) + } + + ); } + } const styles = StyleSheet.create({ @@ -29,4 +59,21 @@ const styles = StyleSheet.create({ justifyContent: 'center', backgroundColor: 'white', }, -}) \ No newline at end of file + item: { + borderWidth: 1, + marginTop: -1, + borderColor: 'rgba(0,0,0,1)', + padding: 3, + width: 100, + alignItems: 'center', + }, + emailSubject: { + color: 'rgba(0,0,0,0.5)' + }, + searchInput: { + padding: 5, + borderColor: '#CCC', + borderWidth: 1, + width: 100, + } +}) diff --git a/example/yarn.lock b/example/yarn.lock index cc4d08c..d4ce2e8 100644 --- a/example/yarn.lock +++ b/example/yarn.lock @@ -4297,9 +4297,9 @@ react-is@^16.3.1: version "16.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.3.1.tgz#ee66e6d8283224a83b3030e110056798488359ba" -react-native-date-picker-x@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/react-native-date-picker-x/-/react-native-date-picker-x-1.0.2.tgz#1fd82670a663d8ac4d12d1697991cef34fdc3ddb" +react-native-date-picker-x@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/react-native-date-picker-x/-/react-native-date-picker-x-1.0.3.tgz#f98b60da64651de8573ca7ae3a67f58d4bd03c40" react-native-device-info@^0.21.5: version "0.21.5"