react-native-platform-components 0.8.8 → 0.8.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -12
- package/ios/PCDatePicker.mm +8 -0
- package/ios/PCDatePickerView.swift +72 -57
- package/lib/commonjs/DatePicker.js +2 -1
- package/lib/commonjs/DatePicker.js.map +1 -1
- package/lib/commonjs/DatePickerNativeComponent.ts +2 -0
- package/lib/module/DatePicker.js +2 -1
- package/lib/module/DatePicker.js.map +1 -1
- package/lib/module/DatePickerNativeComponent.ts +2 -0
- package/lib/typescript/commonjs/src/DatePicker.d.ts +8 -0
- package/lib/typescript/commonjs/src/DatePicker.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts +2 -0
- package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/DatePicker.d.ts +8 -0
- package/lib/typescript/module/src/DatePicker.d.ts.map +1 -1
- package/lib/typescript/module/src/DatePickerNativeComponent.d.ts +2 -0
- package/lib/typescript/module/src/DatePickerNativeComponent.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/DatePicker.tsx +9 -0
- package/src/DatePickerNativeComponent.ts +2 -0
package/README.md
CHANGED
|
@@ -473,12 +473,13 @@ Native date & time picker using **platform system pickers**.
|
|
|
473
473
|
|
|
474
474
|
### iOS Props (`ios`)
|
|
475
475
|
|
|
476
|
-
| Prop | Type | Description
|
|
477
|
-
| -------------------------- | -------------------------------------------------- |
|
|
478
|
-
| `preferredStyle` | `'automatic' \| 'compact' \| 'inline' \| 'wheels'` | iOS date picker style
|
|
479
|
-
| `countDownDurationSeconds` | `number` | Duration for countdown timer mode
|
|
480
|
-
| `minuteInterval` | `number` | Minute interval (1-30)
|
|
481
|
-
| `roundsToMinuteInterval` | `'inherit' \| 'round' \| 'noRound'` | Rounding behavior
|
|
476
|
+
| Prop | Type | Description |
|
|
477
|
+
| -------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------ |
|
|
478
|
+
| `preferredStyle` | `'automatic' \| 'compact' \| 'inline' \| 'wheels'` | iOS date picker style |
|
|
479
|
+
| `countDownDurationSeconds` | `number` | Duration for countdown timer mode |
|
|
480
|
+
| `minuteInterval` | `number` | Minute interval (1-30) |
|
|
481
|
+
| `roundsToMinuteInterval` | `'inherit' \| 'round' \| 'noRound'` | Rounding behavior |
|
|
482
|
+
| `showConfirmToolbar` | `boolean` | Modal only. Show Cancel/Done toolbar below the picker. Defaults to `true`. See below. |
|
|
482
483
|
|
|
483
484
|
### Android Props (`android`)
|
|
484
485
|
|
|
@@ -494,12 +495,14 @@ Native date & time picker using **platform system pickers**.
|
|
|
494
495
|
|
|
495
496
|
`onConfirm` fires on every date/time change, but the second argument (`confirmed`) lets you distinguish between browsing and deliberate selections:
|
|
496
497
|
|
|
497
|
-
| Platform / Mode | Every change
|
|
498
|
-
| -------------------- |
|
|
499
|
-
| **iOS modal** | `confirmed: false` (
|
|
500
|
-
| **iOS embedded** | `confirmed: true`
|
|
501
|
-
| **Android modal** | —
|
|
502
|
-
| **Android embedded** | `confirmed: true`
|
|
498
|
+
| Platform / Mode | Every change | Deliberate selection |
|
|
499
|
+
| -------------------- | ----------------------------------------- | ------------------------------------- |
|
|
500
|
+
| **iOS modal** | `confirmed: false` (user still adjusting) | `confirmed: true` (tapping **Done**) |
|
|
501
|
+
| **iOS embedded** | `confirmed: true` | — |
|
|
502
|
+
| **Android modal** | — | `confirmed: true` (pressing OK) |
|
|
503
|
+
| **Android embedded** | `confirmed: true` | — |
|
|
504
|
+
|
|
505
|
+
On iOS in modal presentation, the picker is shown in a popover with a Cancel/Done toolbar below it. Tapping **Done** emits `confirmed: true`; tapping **Cancel** or outside the popover calls `onClosed`. Set `ios.showConfirmToolbar: false` to hide the toolbar — in that mode `confirmed: true` never fires, and your app is expected to drive dismissal by flipping `visible` off (reading the current date from the stream of `confirmed: false` events). This only makes UX sense paired with `ios.preferredStyle: 'inline'`.
|
|
503
506
|
|
|
504
507
|
A common pattern is to close the modal only on a confirmed selection:
|
|
505
508
|
|
package/ios/PCDatePicker.mm
CHANGED
|
@@ -191,6 +191,14 @@ using namespace facebook::react;
|
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
+
// Expecting: "show" | "hide"
|
|
195
|
+
if (oldIos.confirmToolbar != newIos.confirmToolbar) {
|
|
196
|
+
_datePickerView.confirmToolbarMode =
|
|
197
|
+
(!newIos.confirmToolbar.empty())
|
|
198
|
+
? [NSString stringWithUTF8String:newIos.confirmToolbar.c_str()]
|
|
199
|
+
: @"show";
|
|
200
|
+
}
|
|
201
|
+
|
|
194
202
|
if (needsToUpdateMeasurements) {
|
|
195
203
|
[self updateMeasurements];
|
|
196
204
|
}
|
|
@@ -6,15 +6,19 @@ private let logger = Logger(subsystem: "com.platformcomponents", category: "Date
|
|
|
6
6
|
@objcMembers
|
|
7
7
|
public final class PCDatePickerView: UIControl,
|
|
8
8
|
UIPopoverPresentationControllerDelegate,
|
|
9
|
-
UIAdaptivePresentationControllerDelegate
|
|
10
|
-
UIGestureRecognizerDelegate
|
|
9
|
+
UIAdaptivePresentationControllerDelegate
|
|
11
10
|
{
|
|
12
11
|
// MARK: - UI
|
|
13
12
|
private let picker = UIDatePicker()
|
|
14
13
|
private var modalVC: UIViewController?
|
|
15
14
|
private var inlineConstraints: [NSLayoutConstraint] = []
|
|
16
|
-
|
|
17
|
-
private var
|
|
15
|
+
|
|
16
|
+
private var modalToolbarHeight: CGFloat {
|
|
17
|
+
// iOS 26 renders bar button items as oversized Liquid Glass pills;
|
|
18
|
+
// they overflow a standard 44pt toolbar and clip against the popover.
|
|
19
|
+
if #available(iOS 26.0, *) { return 60 }
|
|
20
|
+
return 44
|
|
21
|
+
}
|
|
18
22
|
|
|
19
23
|
// Suppress "programmatic" valueChanged events (apply props / initial present settle).
|
|
20
24
|
private var suppressChangeEvents = false
|
|
@@ -88,6 +92,11 @@ public final class PCDatePickerView: UIControl,
|
|
|
88
92
|
didSet { if oldValue != roundsToMinuteIntervalMode { applyRoundsMode() } }
|
|
89
93
|
}
|
|
90
94
|
|
|
95
|
+
/// "show" | "hide" — modal only. When "hide", the popover has no
|
|
96
|
+
/// Cancel/Done bar and the caller is responsible for driving dismissal
|
|
97
|
+
/// via the `visible` prop; valueChanged still emits confirmed=false.
|
|
98
|
+
public var confirmToolbarMode: String = "show"
|
|
99
|
+
|
|
91
100
|
// MARK: - Init
|
|
92
101
|
|
|
93
102
|
public override init(frame: CGRect) {
|
|
@@ -199,13 +208,15 @@ public final class PCDatePickerView: UIControl,
|
|
|
199
208
|
height: max(PCConstants.minTouchTargetHeight, fitted.height))
|
|
200
209
|
}
|
|
201
210
|
|
|
202
|
-
/// Separate sizing for popover content.
|
|
211
|
+
/// Separate sizing for popover content. Accounts for the Cancel/Done
|
|
212
|
+
/// toolbar that sits below the picker in modal presentation.
|
|
203
213
|
private func popoverContentSize() -> CGSize {
|
|
204
214
|
picker.setNeedsLayout()
|
|
205
215
|
picker.layoutIfNeeded()
|
|
206
216
|
|
|
207
217
|
let fitted = picker.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize)
|
|
208
|
-
|
|
218
|
+
let extra = confirmToolbarMode == "hide" ? 0 : modalToolbarHeight
|
|
219
|
+
return CGSize(width: fitted.width, height: fitted.height + extra)
|
|
209
220
|
}
|
|
210
221
|
|
|
211
222
|
// MARK: - Presentation
|
|
@@ -286,18 +297,29 @@ public final class PCDatePickerView: UIControl,
|
|
|
286
297
|
// Prevent "settle" events right as we present.
|
|
287
298
|
suppressNextChangesBriefly()
|
|
288
299
|
|
|
289
|
-
// Set up tap-to-confirm gesture for modal mode
|
|
290
|
-
confirmWorkItem?.cancel()
|
|
291
|
-
let tap = UITapGestureRecognizer(target: self, action: #selector(handlePickerTap))
|
|
292
|
-
tap.cancelsTouchesInView = false
|
|
293
|
-
tap.delegate = self
|
|
294
|
-
picker.addGestureRecognizer(tap)
|
|
295
|
-
tapGesture = tap
|
|
296
|
-
|
|
297
300
|
let vc = UIViewController()
|
|
298
301
|
picker.translatesAutoresizingMaskIntoConstraints = false
|
|
299
302
|
vc.view.addSubview(picker)
|
|
300
303
|
|
|
304
|
+
// Cancel / Done toolbar below the picker — right-justified so both
|
|
305
|
+
// actions sit in the trailing corner, clear of the calendar header.
|
|
306
|
+
// Skipped entirely when confirmToolbarMode == "hide".
|
|
307
|
+
let toolbar: UIToolbar? = confirmToolbarMode == "hide" ? nil : {
|
|
308
|
+
let t = UIToolbar()
|
|
309
|
+
t.translatesAutoresizingMaskIntoConstraints = false
|
|
310
|
+
let flex = UIBarButtonItem(
|
|
311
|
+
barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
|
|
312
|
+
let cancelItem = UIBarButtonItem(
|
|
313
|
+
barButtonSystemItem: .cancel,
|
|
314
|
+
target: self, action: #selector(handleCancelTap))
|
|
315
|
+
let doneItem = UIBarButtonItem(
|
|
316
|
+
barButtonSystemItem: .done,
|
|
317
|
+
target: self, action: #selector(handleDoneTap))
|
|
318
|
+
t.items = [flex, cancelItem, doneItem]
|
|
319
|
+
vc.view.addSubview(t)
|
|
320
|
+
return t
|
|
321
|
+
}()
|
|
322
|
+
|
|
301
323
|
let useInlineFallback: Bool
|
|
302
324
|
if #available(iOS 26.0, *) {
|
|
303
325
|
useInlineFallback = false
|
|
@@ -310,21 +332,42 @@ public final class PCDatePickerView: UIControl,
|
|
|
310
332
|
vc.view.backgroundColor = .systemBackground
|
|
311
333
|
vc.view.isOpaque = true
|
|
312
334
|
|
|
313
|
-
NSLayoutConstraint
|
|
335
|
+
var constraints: [NSLayoutConstraint] = [
|
|
314
336
|
picker.topAnchor.constraint(equalTo: vc.view.topAnchor),
|
|
315
337
|
picker.leadingAnchor.constraint(equalTo: vc.view.leadingAnchor),
|
|
316
338
|
picker.trailingAnchor.constraint(equalTo: vc.view.trailingAnchor),
|
|
317
|
-
|
|
318
|
-
|
|
339
|
+
]
|
|
340
|
+
if let toolbar {
|
|
341
|
+
constraints += [
|
|
342
|
+
toolbar.topAnchor.constraint(equalTo: picker.bottomAnchor),
|
|
343
|
+
toolbar.leadingAnchor.constraint(equalTo: vc.view.leadingAnchor),
|
|
344
|
+
toolbar.trailingAnchor.constraint(equalTo: vc.view.trailingAnchor),
|
|
345
|
+
toolbar.bottomAnchor.constraint(equalTo: vc.view.bottomAnchor),
|
|
346
|
+
toolbar.heightAnchor.constraint(equalToConstant: modalToolbarHeight),
|
|
347
|
+
]
|
|
348
|
+
} else {
|
|
349
|
+
constraints.append(
|
|
350
|
+
picker.bottomAnchor.constraint(equalTo: vc.view.bottomAnchor))
|
|
351
|
+
}
|
|
352
|
+
NSLayoutConstraint.activate(constraints)
|
|
319
353
|
} else {
|
|
320
354
|
// Liquid Glass path
|
|
321
355
|
vc.view.backgroundColor = .clear
|
|
322
356
|
vc.view.isOpaque = false
|
|
323
357
|
|
|
324
|
-
NSLayoutConstraint
|
|
358
|
+
var constraints: [NSLayoutConstraint] = [
|
|
325
359
|
picker.topAnchor.constraint(equalTo: vc.view.topAnchor),
|
|
326
360
|
picker.leadingAnchor.constraint(equalTo: vc.view.leadingAnchor),
|
|
327
|
-
]
|
|
361
|
+
]
|
|
362
|
+
if let toolbar {
|
|
363
|
+
constraints += [
|
|
364
|
+
toolbar.topAnchor.constraint(equalTo: picker.bottomAnchor),
|
|
365
|
+
toolbar.leadingAnchor.constraint(equalTo: vc.view.leadingAnchor),
|
|
366
|
+
toolbar.trailingAnchor.constraint(equalTo: vc.view.trailingAnchor),
|
|
367
|
+
toolbar.heightAnchor.constraint(equalToConstant: modalToolbarHeight),
|
|
368
|
+
]
|
|
369
|
+
}
|
|
370
|
+
NSLayoutConstraint.activate(constraints)
|
|
328
371
|
}
|
|
329
372
|
|
|
330
373
|
let size = popoverContentSize()
|
|
@@ -354,11 +397,6 @@ public final class PCDatePickerView: UIControl,
|
|
|
354
397
|
guard let vc = modalVC else { return }
|
|
355
398
|
logger.debug("dismissIfNeeded: dismissing modal, emitCancel=\(emitCancel)")
|
|
356
399
|
modalVC = nil
|
|
357
|
-
confirmWorkItem?.cancel()
|
|
358
|
-
if let tap = tapGesture {
|
|
359
|
-
picker.removeGestureRecognizer(tap)
|
|
360
|
-
tapGesture = nil
|
|
361
|
-
}
|
|
362
400
|
vc.dismiss(animated: true) { [weak self] in
|
|
363
401
|
guard let self else { return }
|
|
364
402
|
if emitCancel { self.onCancelHandler?() }
|
|
@@ -376,11 +414,6 @@ public final class PCDatePickerView: UIControl,
|
|
|
376
414
|
public func presentationControllerDidDismiss(_ presentationController: UIPresentationController)
|
|
377
415
|
{
|
|
378
416
|
modalVC = nil
|
|
379
|
-
confirmWorkItem?.cancel()
|
|
380
|
-
if let tap = tapGesture {
|
|
381
|
-
picker.removeGestureRecognizer(tap)
|
|
382
|
-
tapGesture = nil
|
|
383
|
-
}
|
|
384
417
|
onCancelHandler?()
|
|
385
418
|
}
|
|
386
419
|
|
|
@@ -388,23 +421,9 @@ public final class PCDatePickerView: UIControl,
|
|
|
388
421
|
_ popoverPresentationController: UIPopoverPresentationController
|
|
389
422
|
) {
|
|
390
423
|
modalVC = nil
|
|
391
|
-
confirmWorkItem?.cancel()
|
|
392
|
-
if let tap = tapGesture {
|
|
393
|
-
picker.removeGestureRecognizer(tap)
|
|
394
|
-
tapGesture = nil
|
|
395
|
-
}
|
|
396
424
|
onCancelHandler?()
|
|
397
425
|
}
|
|
398
426
|
|
|
399
|
-
// MARK: - Gesture delegate
|
|
400
|
-
|
|
401
|
-
public func gestureRecognizer(
|
|
402
|
-
_ gestureRecognizer: UIGestureRecognizer,
|
|
403
|
-
shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer
|
|
404
|
-
) -> Bool {
|
|
405
|
-
return gestureRecognizer === tapGesture
|
|
406
|
-
}
|
|
407
|
-
|
|
408
427
|
// MARK: - Value changes
|
|
409
428
|
|
|
410
429
|
@objc private func handleValueChanged() {
|
|
@@ -412,26 +431,22 @@ public final class PCDatePickerView: UIControl,
|
|
|
412
431
|
if suppressChangeEvents { return }
|
|
413
432
|
|
|
414
433
|
let ms = picker.date.timeIntervalSince1970 * 1000.0
|
|
434
|
+
// In modal mode, valueChanged is "user is still adjusting" —
|
|
435
|
+
// confirmation only happens when the user taps Done. Embedded
|
|
436
|
+
// presentation always confirms (there's no Done button to gate on).
|
|
415
437
|
let isModal = presentation == "modal" && modalVC != nil
|
|
416
438
|
onChangeHandler?(NSNumber(value: ms), !isModal)
|
|
417
439
|
}
|
|
418
440
|
|
|
419
|
-
@objc private func
|
|
441
|
+
@objc private func handleDoneTap() {
|
|
420
442
|
guard presentation == "modal", modalVC != nil else { return }
|
|
443
|
+
let ms = picker.date.timeIntervalSince1970 * 1000.0
|
|
444
|
+
onChangeHandler?(NSNumber(value: ms), true)
|
|
445
|
+
dismissIfNeeded(emitCancel: false)
|
|
446
|
+
}
|
|
421
447
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
let dateAtTap = picker.date
|
|
425
|
-
let workItem = DispatchWorkItem { [weak self] in
|
|
426
|
-
guard let self, self.modalVC != nil else { return }
|
|
427
|
-
// If picker date is still the same, the tap was on the selected row → confirm
|
|
428
|
-
if self.picker.date == dateAtTap {
|
|
429
|
-
let ms = dateAtTap.timeIntervalSince1970 * 1000.0
|
|
430
|
-
self.onChangeHandler?(NSNumber(value: ms), true)
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
confirmWorkItem = workItem
|
|
434
|
-
DispatchQueue.main.asyncAfter(deadline: .now() + 0.15, execute: workItem)
|
|
448
|
+
@objc private func handleCancelTap() {
|
|
449
|
+
dismissIfNeeded(emitCancel: true)
|
|
435
450
|
}
|
|
436
451
|
|
|
437
452
|
// MARK: - Apply props (avoid firing valueChanged)
|
|
@@ -65,7 +65,8 @@ function DatePicker(props) {
|
|
|
65
65
|
preferredStyle: ios.preferredStyle,
|
|
66
66
|
countDownDurationSeconds: ios.countDownDurationSeconds,
|
|
67
67
|
minuteInterval: ios.minuteInterval,
|
|
68
|
-
roundsToMinuteInterval: ios.roundsToMinuteInterval
|
|
68
|
+
roundsToMinuteInterval: ios.roundsToMinuteInterval,
|
|
69
|
+
confirmToolbar: ios.showConfirmToolbar === false ? 'hide' : 'show'
|
|
69
70
|
} : undefined,
|
|
70
71
|
android: android ? {
|
|
71
72
|
firstDayOfWeek: android.firstDayOfWeek,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_DatePickerNativeComponent","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NO_DATE_SENTINEL","Number","MIN_SAFE_INTEGER","dateToMsOrSentinel","d","ms","getTime","isFinite","normalizeVisible","presentation","visible","undefined","DatePicker","props","style","date","minDate","maxDate","locale","timeZoneName","mode","onConfirm","onClosed","ios","android","testID","isModal","handleConfirm","useCallback","Date","nativeEvent","timestampMs","confirmed","handleClosed","nativeProps","styles","picker","dateMs","minDateMs","maxDateMs","preferredStyle","countDownDurationSeconds","minuteInterval","roundsToMinuteInterval","firstDayOfWeek","material","dialogTitle","positiveButtonTitle","negativeButtonTitle","jsx","StyleSheet","create"],"sourceRoot":"../../src","sources":["DatePicker.tsx"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,0BAAA,GAAAC,sBAAA,CAAAH,OAAA;AASqC,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAV,uBAAA,YAAAA,CAAAM,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAdrC;;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_DatePickerNativeComponent","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NO_DATE_SENTINEL","Number","MIN_SAFE_INTEGER","dateToMsOrSentinel","d","ms","getTime","isFinite","normalizeVisible","presentation","visible","undefined","DatePicker","props","style","date","minDate","maxDate","locale","timeZoneName","mode","onConfirm","onClosed","ios","android","testID","isModal","handleConfirm","useCallback","Date","nativeEvent","timestampMs","confirmed","handleClosed","nativeProps","styles","picker","dateMs","minDateMs","maxDateMs","preferredStyle","countDownDurationSeconds","minuteInterval","roundsToMinuteInterval","confirmToolbar","showConfirmToolbar","firstDayOfWeek","material","dialogTitle","positiveButtonTitle","negativeButtonTitle","jsx","StyleSheet","create"],"sourceRoot":"../../src","sources":["DatePicker.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,12 +14,14 @@ export type DatePickerPresentation = 'modal' | 'embedded';
|
|
|
14
14
|
|
|
15
15
|
export type IOSDatePickerStyle = 'automatic' | 'compact' | 'inline' | 'wheels';
|
|
16
16
|
export type IOSRoundsToMinuteInterval = 'inherit' | 'round' | 'noRound';
|
|
17
|
+
export type IOSConfirmToolbar = 'show' | 'hide';
|
|
17
18
|
|
|
18
19
|
export type IOSProps = {
|
|
19
20
|
preferredStyle?: string; // IOSDatePickerStyle
|
|
20
21
|
countDownDurationSeconds?: CodegenTypes.Double;
|
|
21
22
|
minuteInterval?: CodegenTypes.Int32;
|
|
22
23
|
roundsToMinuteInterval?: string; // IOSRoundsToMinuteInterval
|
|
24
|
+
confirmToolbar?: string; // IOSConfirmToolbar
|
|
23
25
|
};
|
|
24
26
|
|
|
25
27
|
export type AndroidProps = {
|
package/lib/module/DatePicker.js
CHANGED
|
@@ -58,7 +58,8 @@ export function DatePicker(props) {
|
|
|
58
58
|
preferredStyle: ios.preferredStyle,
|
|
59
59
|
countDownDurationSeconds: ios.countDownDurationSeconds,
|
|
60
60
|
minuteInterval: ios.minuteInterval,
|
|
61
|
-
roundsToMinuteInterval: ios.roundsToMinuteInterval
|
|
61
|
+
roundsToMinuteInterval: ios.roundsToMinuteInterval,
|
|
62
|
+
confirmToolbar: ios.showConfirmToolbar === false ? 'hide' : 'show'
|
|
62
63
|
} : undefined,
|
|
63
64
|
android: android ? {
|
|
64
65
|
firstDayOfWeek: android.firstDayOfWeek,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","StyleSheet","NativeDatePicker","jsx","_jsx","NO_DATE_SENTINEL","Number","MIN_SAFE_INTEGER","dateToMsOrSentinel","d","ms","getTime","isFinite","normalizeVisible","presentation","visible","undefined","DatePicker","props","style","date","minDate","maxDate","locale","timeZoneName","mode","onConfirm","onClosed","ios","android","testID","isModal","handleConfirm","e","Date","nativeEvent","timestampMs","confirmed","handleClosed","nativeProps","styles","picker","dateMs","minDateMs","maxDateMs","preferredStyle","countDownDurationSeconds","minuteInterval","roundsToMinuteInterval","firstDayOfWeek","material","dialogTitle","positiveButtonTitle","negativeButtonTitle","create"],"sourceRoot":"../../src","sources":["DatePicker.tsx"],"mappings":";;AAAA;AACA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAE1C,SAASC,UAAU,QAAQ,cAAc;AAEzC,OAAOC,gBAAgB,MAShB,6BAA6B;AAAC,SAAAC,GAAA,IAAAC,IAAA;
|
|
1
|
+
{"version":3,"names":["React","useCallback","StyleSheet","NativeDatePicker","jsx","_jsx","NO_DATE_SENTINEL","Number","MIN_SAFE_INTEGER","dateToMsOrSentinel","d","ms","getTime","isFinite","normalizeVisible","presentation","visible","undefined","DatePicker","props","style","date","minDate","maxDate","locale","timeZoneName","mode","onConfirm","onClosed","ios","android","testID","isModal","handleConfirm","e","Date","nativeEvent","timestampMs","confirmed","handleClosed","nativeProps","styles","picker","dateMs","minDateMs","maxDateMs","preferredStyle","countDownDurationSeconds","minuteInterval","roundsToMinuteInterval","confirmToolbar","showConfirmToolbar","firstDayOfWeek","material","dialogTitle","positiveButtonTitle","negativeButtonTitle","create"],"sourceRoot":"../../src","sources":["DatePicker.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,12 +14,14 @@ export type DatePickerPresentation = 'modal' | 'embedded';
|
|
|
14
14
|
|
|
15
15
|
export type IOSDatePickerStyle = 'automatic' | 'compact' | 'inline' | 'wheels';
|
|
16
16
|
export type IOSRoundsToMinuteInterval = 'inherit' | 'round' | 'noRound';
|
|
17
|
+
export type IOSConfirmToolbar = 'show' | 'hide';
|
|
17
18
|
|
|
18
19
|
export type IOSProps = {
|
|
19
20
|
preferredStyle?: string; // IOSDatePickerStyle
|
|
20
21
|
countDownDurationSeconds?: CodegenTypes.Double;
|
|
21
22
|
minuteInterval?: CodegenTypes.Int32;
|
|
22
23
|
roundsToMinuteInterval?: string; // IOSRoundsToMinuteInterval
|
|
24
|
+
confirmToolbar?: string; // IOSConfirmToolbar
|
|
23
25
|
};
|
|
24
26
|
|
|
25
27
|
export type AndroidProps = {
|
|
@@ -27,6 +27,14 @@ export type DatePickerProps = {
|
|
|
27
27
|
countDownDurationSeconds?: NativeIOSProps['countDownDurationSeconds'];
|
|
28
28
|
minuteInterval?: NativeIOSProps['minuteInterval'];
|
|
29
29
|
roundsToMinuteInterval?: IOSRoundsToMinuteInterval;
|
|
30
|
+
/**
|
|
31
|
+
* Modal only. Show a Cancel/Done toolbar below the picker. Defaults to
|
|
32
|
+
* true. When false, `onConfirm` never fires with `confirmed: true` —
|
|
33
|
+
* the caller is expected to drive dismissal themselves by flipping
|
|
34
|
+
* `visible` off (and can read the current date from the stream of
|
|
35
|
+
* `confirmed: false` events).
|
|
36
|
+
*/
|
|
37
|
+
showConfirmToolbar?: boolean;
|
|
30
38
|
};
|
|
31
39
|
android?: {
|
|
32
40
|
firstDayOfWeek?: NativeAndroidProps['firstDayOfWeek'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAwB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG/E,OAAyB,EAGvB,KAAK,QAAQ,IAAI,cAAc,EAC/B,KAAK,YAAY,IAAI,kBAAkB,EACvC,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,mBAAmB,EAAW,MAAM,eAAe,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAE7B,2DAA2D;IAC3D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAElB,mDAAmD;IACnD,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAEtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,GAAG,CAAC,EAAE;QACJ,cAAc,CAAC,EAAE,kBAAkB,CAAC;QACpC,wBAAwB,CAAC,EAAE,cAAc,CAAC,0BAA0B,CAAC,CAAC;QACtE,cAAc,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAClD,sBAAsB,CAAC,EAAE,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAwB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG/E,OAAyB,EAGvB,KAAK,QAAQ,IAAI,cAAc,EAC/B,KAAK,YAAY,IAAI,kBAAkB,EACvC,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,mBAAmB,EAAW,MAAM,eAAe,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAE7B,2DAA2D;IAC3D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAElB,mDAAmD;IACnD,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAEtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,GAAG,CAAC,EAAE;QACJ,cAAc,CAAC,EAAE,kBAAkB,CAAC;QACpC,wBAAwB,CAAC,EAAE,cAAc,CAAC,0BAA0B,CAAC,CAAC;QACtE,cAAc,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAClD,sBAAsB,CAAC,EAAE,yBAAyB,CAAC;QACnD;;;;;;WAMG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;IAEF,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QACtD,QAAQ,CAAC,EAAE,mBAAmB,CAAC;QAC/B,WAAW,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAChD,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;QAChE,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;KACjE,CAAC;CACH,CAAC;AAqBF,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAsErE"}
|
|
@@ -8,11 +8,13 @@ export type DatePickerMode = 'date' | 'time' | 'dateAndTime' | 'countDownTimer';
|
|
|
8
8
|
export type DatePickerPresentation = 'modal' | 'embedded';
|
|
9
9
|
export type IOSDatePickerStyle = 'automatic' | 'compact' | 'inline' | 'wheels';
|
|
10
10
|
export type IOSRoundsToMinuteInterval = 'inherit' | 'round' | 'noRound';
|
|
11
|
+
export type IOSConfirmToolbar = 'show' | 'hide';
|
|
11
12
|
export type IOSProps = {
|
|
12
13
|
preferredStyle?: string;
|
|
13
14
|
countDownDurationSeconds?: CodegenTypes.Double;
|
|
14
15
|
minuteInterval?: CodegenTypes.Int32;
|
|
15
16
|
roundsToMinuteInterval?: string;
|
|
17
|
+
confirmToolbar?: string;
|
|
16
18
|
};
|
|
17
19
|
export type AndroidProps = {
|
|
18
20
|
firstDayOfWeek?: CodegenTypes.Int32;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/DatePickerNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG5D,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAChF,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC/E,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"DatePickerNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/DatePickerNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG5D,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAChF,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC/E,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC;IAC/C,cAAc,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,cAAc,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEtC;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAClE,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IACrE,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAErE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,SAAS,EAAE,WAAW;IACzD,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,SAAS,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5D;;AAED,wBAAmE"}
|
|
@@ -27,6 +27,14 @@ export type DatePickerProps = {
|
|
|
27
27
|
countDownDurationSeconds?: NativeIOSProps['countDownDurationSeconds'];
|
|
28
28
|
minuteInterval?: NativeIOSProps['minuteInterval'];
|
|
29
29
|
roundsToMinuteInterval?: IOSRoundsToMinuteInterval;
|
|
30
|
+
/**
|
|
31
|
+
* Modal only. Show a Cancel/Done toolbar below the picker. Defaults to
|
|
32
|
+
* true. When false, `onConfirm` never fires with `confirmed: true` —
|
|
33
|
+
* the caller is expected to drive dismissal themselves by flipping
|
|
34
|
+
* `visible` off (and can read the current date from the stream of
|
|
35
|
+
* `confirmed: false` events).
|
|
36
|
+
*/
|
|
37
|
+
showConfirmToolbar?: boolean;
|
|
30
38
|
};
|
|
31
39
|
android?: {
|
|
32
40
|
firstDayOfWeek?: NativeAndroidProps['firstDayOfWeek'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAwB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG/E,OAAyB,EAGvB,KAAK,QAAQ,IAAI,cAAc,EAC/B,KAAK,YAAY,IAAI,kBAAkB,EACvC,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,mBAAmB,EAAW,MAAM,eAAe,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAE7B,2DAA2D;IAC3D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAElB,mDAAmD;IACnD,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAEtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,GAAG,CAAC,EAAE;QACJ,cAAc,CAAC,EAAE,kBAAkB,CAAC;QACpC,wBAAwB,CAAC,EAAE,cAAc,CAAC,0BAA0B,CAAC,CAAC;QACtE,cAAc,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAClD,sBAAsB,CAAC,EAAE,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAwB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG/E,OAAyB,EAGvB,KAAK,QAAQ,IAAI,cAAc,EAC/B,KAAK,YAAY,IAAI,kBAAkB,EACvC,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,mBAAmB,EAAW,MAAM,eAAe,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAE7B,2DAA2D;IAC3D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAElB,mDAAmD;IACnD,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAEtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,GAAG,CAAC,EAAE;QACJ,cAAc,CAAC,EAAE,kBAAkB,CAAC;QACpC,wBAAwB,CAAC,EAAE,cAAc,CAAC,0BAA0B,CAAC,CAAC;QACtE,cAAc,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAClD,sBAAsB,CAAC,EAAE,yBAAyB,CAAC;QACnD;;;;;;WAMG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;IAEF,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QACtD,QAAQ,CAAC,EAAE,mBAAmB,CAAC;QAC/B,WAAW,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAChD,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;QAChE,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;KACjE,CAAC;CACH,CAAC;AAqBF,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAsErE"}
|
|
@@ -8,11 +8,13 @@ export type DatePickerMode = 'date' | 'time' | 'dateAndTime' | 'countDownTimer';
|
|
|
8
8
|
export type DatePickerPresentation = 'modal' | 'embedded';
|
|
9
9
|
export type IOSDatePickerStyle = 'automatic' | 'compact' | 'inline' | 'wheels';
|
|
10
10
|
export type IOSRoundsToMinuteInterval = 'inherit' | 'round' | 'noRound';
|
|
11
|
+
export type IOSConfirmToolbar = 'show' | 'hide';
|
|
11
12
|
export type IOSProps = {
|
|
12
13
|
preferredStyle?: string;
|
|
13
14
|
countDownDurationSeconds?: CodegenTypes.Double;
|
|
14
15
|
minuteInterval?: CodegenTypes.Int32;
|
|
15
16
|
roundsToMinuteInterval?: string;
|
|
17
|
+
confirmToolbar?: string;
|
|
16
18
|
};
|
|
17
19
|
export type AndroidProps = {
|
|
18
20
|
firstDayOfWeek?: CodegenTypes.Int32;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/DatePickerNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG5D,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAChF,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC/E,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"DatePickerNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/DatePickerNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG5D,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAChF,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC/E,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC;IAC/C,cAAc,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,cAAc,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEtC;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAClE,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IACrE,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAErE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,SAAS,EAAE,WAAW;IACzD,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,SAAS,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5D;;AAED,wBAAmE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-platform-components",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.9",
|
|
4
4
|
"description": "Native UI components for React Native: DatePicker, ContextMenu, SelectionMenu, SegmentedControl, LiquidGlass.",
|
|
5
5
|
"main": "./lib/commonjs/index.js",
|
|
6
6
|
"module": "./lib/module/index.js",
|
package/src/DatePicker.tsx
CHANGED
|
@@ -48,6 +48,14 @@ export type DatePickerProps = {
|
|
|
48
48
|
countDownDurationSeconds?: NativeIOSProps['countDownDurationSeconds'];
|
|
49
49
|
minuteInterval?: NativeIOSProps['minuteInterval'];
|
|
50
50
|
roundsToMinuteInterval?: IOSRoundsToMinuteInterval;
|
|
51
|
+
/**
|
|
52
|
+
* Modal only. Show a Cancel/Done toolbar below the picker. Defaults to
|
|
53
|
+
* true. When false, `onConfirm` never fires with `confirmed: true` —
|
|
54
|
+
* the caller is expected to drive dismissal themselves by flipping
|
|
55
|
+
* `visible` off (and can read the current date from the stream of
|
|
56
|
+
* `confirmed: false` events).
|
|
57
|
+
*/
|
|
58
|
+
showConfirmToolbar?: boolean;
|
|
51
59
|
};
|
|
52
60
|
|
|
53
61
|
android?: {
|
|
@@ -132,6 +140,7 @@ export function DatePicker(props: DatePickerProps): React.ReactElement {
|
|
|
132
140
|
countDownDurationSeconds: ios.countDownDurationSeconds,
|
|
133
141
|
minuteInterval: ios.minuteInterval,
|
|
134
142
|
roundsToMinuteInterval: ios.roundsToMinuteInterval,
|
|
143
|
+
confirmToolbar: ios.showConfirmToolbar === false ? 'hide' : 'show',
|
|
135
144
|
}
|
|
136
145
|
: undefined,
|
|
137
146
|
|
|
@@ -14,12 +14,14 @@ export type DatePickerPresentation = 'modal' | 'embedded';
|
|
|
14
14
|
|
|
15
15
|
export type IOSDatePickerStyle = 'automatic' | 'compact' | 'inline' | 'wheels';
|
|
16
16
|
export type IOSRoundsToMinuteInterval = 'inherit' | 'round' | 'noRound';
|
|
17
|
+
export type IOSConfirmToolbar = 'show' | 'hide';
|
|
17
18
|
|
|
18
19
|
export type IOSProps = {
|
|
19
20
|
preferredStyle?: string; // IOSDatePickerStyle
|
|
20
21
|
countDownDurationSeconds?: CodegenTypes.Double;
|
|
21
22
|
minuteInterval?: CodegenTypes.Int32;
|
|
22
23
|
roundsToMinuteInterval?: string; // IOSRoundsToMinuteInterval
|
|
24
|
+
confirmToolbar?: string; // IOSConfirmToolbar
|
|
23
25
|
};
|
|
24
26
|
|
|
25
27
|
export type AndroidProps = {
|