Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add minute interval on Android #177

Merged
merged 35 commits into from
Jun 30, 2020
Merged
Changes from 1 commit
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
9b71ba9
minuteInterval types
evgeniy-ferapontov Nov 5, 2019
b42a395
minuteInterval android prop pass-through
evgeniy-ferapontov Nov 5, 2019
923e974
implemented custom picker and minuteInterval interface
evgeniy-ferapontov Nov 5, 2019
1564419
ignore intellij files
evgeniy-ferapontov Nov 5, 2019
3565d28
propper onTimeChanged
evgeniy-ferapontov Nov 5, 2019
6cebd37
refactored android picker
evgeniy-ferapontov Nov 6, 2019
8a49862
updated readme
evgeniy-ferapontov Nov 11, 2019
068ee38
added dependencies repos, upgraded gradle version
evgeniy-ferapontov Dec 12, 2019
605db40
fixed incorrectly displayed minutes when interval is set
evgeniy-ferapontov Dec 12, 2019
9239bc2
indentation and tests
evgeniy-ferapontov Dec 12, 2019
38e3d04
updated readme
evgeniy-ferapontov Dec 12, 2019
dc72274
added docs + correct handling in textinput mode
evgeniy-ferapontov Dec 13, 2019
a1e2acd
fixed get resources in RNDismissableTimePickerDialog
BenderBRodrigez May 14, 2020
0261535
separated CustomTimePickerDialog
BenderBRodrigez May 18, 2020
7d8882f
fix detox prettier errors
luancurti May 21, 2020
9212f15
make minute interval work with timepicker default
luancurti May 21, 2020
6af788a
fix add text color again o ts types
luancurti May 21, 2020
8aaa1de
remove note force timepicker mode spinner
luancurti May 21, 2020
4dbdcd6
fix detox tests
luancurti May 21, 2020
d798fff
remove minute interval options mutation
luancurti Jun 6, 2020
a4791a1
merge minute interval android/ios type
luancurti Jun 6, 2020
b8b6d0f
run attached window custom code only minute interval is set
luancurti Jun 6, 2020
e14ef50
refactor onClick and onAttachedWindow
luancurti Jun 6, 2020
59d0d4f
wait datepicker to be visible with timeout
luancurti Jun 11, 2020
de3ae1a
remove/undo some small changes
vonovak Jun 17, 2020
a136eac
reactor minuteinterval
vonovak Jun 25, 2020
850a288
fix time picker on older androids
vonovak Jun 26, 2020
e9e9603
e2e tests wip
vonovak Jun 28, 2020
23708f4
add e2e tests
vonovak Jun 28, 2020
b60cf3e
rename TimePickerDialog
vonovak Jun 28, 2020
b294f39
add forgotten folder
vonovak Jun 28, 2020
36030f7
make more space
vonovak Jun 28, 2020
53f9e56
fix minuteInterval assignment
vonovak Jun 28, 2020
3f1a980
minor polish
vonovak Jun 28, 2020
c6def15
fix isValidMinuteInterval
vonovak Jun 28, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
make minute interval work with timepicker default
luancurti authored and vonovak committed Jun 28, 2020
commit 9212f15e3f4a18b16a9fc295a33cc653f1dc249a
Original file line number Diff line number Diff line change
@@ -12,8 +12,4 @@ public final class RNMinuteIntervals {
public static boolean isValid(Integer interval) {
return Arrays.asList(MinuteIntervals).contains(interval);
}

public static boolean isRadialPickerCompatible(Integer interval) {
return MinuteIntervals[0].equals(interval) || MinuteIntervals[1].equals(interval);
}
}
Original file line number Diff line number Diff line change
@@ -64,48 +64,34 @@ static TimePickerDialog getDialog(

RNTimePickerDisplay display = RNTimePickerDisplay.DEFAULT;
if (args != null && args.getString(RNConstants.ARG_DISPLAY, null) != null) {
if (RNMinuteIntervals.isRadialPickerCompatible(minuteInterval)) {
display = RNTimePickerDisplay.valueOf(args.getString(RNConstants.ARG_DISPLAY).toUpperCase(Locale.US));
} else {
display = RNTimePickerDisplay.SPINNER;
}
display = RNTimePickerDisplay.valueOf(args.getString(RNConstants.ARG_DISPLAY).toUpperCase(Locale.US));
}

if (args != null) {
is24hour = args.getBoolean(RNConstants.ARG_IS24HOUR, DateFormat.is24HourFormat(activityContext));
}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (display == RNTimePickerDisplay.CLOCK) {
return new RNDismissableTimePickerDialog(
activityContext,
activityContext.getResources().getIdentifier(
"ClockTimePickerDialog",
"style",
activityContext.getPackageName()
),
onTimeSetListener,
hour,
minute,
minuteInterval,
is24hour,
display
);
} else if (display == RNTimePickerDisplay.SPINNER) {
return new RNDismissableTimePickerDialog(
activityContext,
activityContext.getResources().getIdentifier(
"SpinnerTimePickerDialog",
"style",
activityContext.getPackageName()
),
onTimeSetListener,
hour,
minute,
minuteInterval,
is24hour,
display
);
switch (display) {
case CLOCK:
case SPINNER:
String resourceName = display == RNTimePickerDisplay.CLOCK
? "ClockTimePickerDialog"
: "SpinnerTimePickerDialog";
return new RNDismissableTimePickerDialog(
activityContext,
activityContext.getResources().getIdentifier(
resourceName,
"style",
activityContext.getPackageName()
),
onTimeSetListener,
hour,
minute,
minuteInterval,
is24hour,
display
);
}
}
return new RNDismissableTimePickerDialog(
Original file line number Diff line number Diff line change
@@ -135,6 +135,7 @@ private Bundle createFragmentArguments(ReadableMap options) {
}
if (options.hasKey(RNConstants.ARG_NEUTRAL_BUTTON_LABEL) && !options.isNull(RNConstants.ARG_NEUTRAL_BUTTON_LABEL)) {
args.putString(RNConstants.ARG_NEUTRAL_BUTTON_LABEL, options.getString(RNConstants.ARG_NEUTRAL_BUTTON_LABEL));
}
if (options.hasKey(RNConstants.ARG_INTERVAL) && !options.isNull(RNConstants.ARG_INTERVAL)) {
args.putInt(RNConstants.ARG_INTERVAL, options.getInt(RNConstants.ARG_INTERVAL));
}
9 changes: 1 addition & 8 deletions src/timepicker.android.js
Original file line number Diff line number Diff line change
@@ -9,7 +9,6 @@
*/
import {
DISPLAY_DEFAULT,
DISPLAY_SPINNER,
TIME_SET_ACTION,
DISMISS_ACTION,
MINUTE_INTERVAL_DEFAULT,
@@ -19,10 +18,6 @@ import {toMilliseconds} from './utils';

import type {TimePickerOptions, DateTimePickerResult} from './types';

const isRadialPickerCompatible = (interval: number) => {
return interval === 1 || interval === 5;
};

export default class TimePickerAndroid {
/**
* Opens the standard Android time picker dialog.
@@ -45,10 +40,8 @@ export default class TimePickerAndroid {
*/
static async open(options: TimePickerOptions): Promise<DateTimePickerResult> {
toMilliseconds(options, 'value');
options.display = options.display || DISPLAY_DEFAULT;
options.minuteInterval = options.minuteInterval || MINUTE_INTERVAL_DEFAULT;
options.display = isRadialPickerCompatible(options.minuteInterval)
? options.display || DISPLAY_DEFAULT
: DISPLAY_SPINNER;

return NativeModules.RNTimePickerAndroid.open(options);
}