react-native-platform-components 0.8.7 → 0.8.8
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 +56 -29
- package/android/src/main/java/com/platformcomponents/PCDatePickerViewManager.kt +3 -1
- package/ios/PCDatePicker.mm +2 -1
- package/ios/PCDatePickerView.swift +60 -6
- package/lib/commonjs/DatePicker.js +1 -1
- package/lib/commonjs/DatePicker.js.map +1 -1
- package/lib/commonjs/DatePickerNativeComponent.ts +1 -0
- package/lib/module/DatePicker.js +1 -1
- package/lib/module/DatePicker.js.map +1 -1
- package/lib/module/DatePickerNativeComponent.ts +1 -0
- package/lib/typescript/commonjs/src/DatePicker.d.ts +1 -1
- package/lib/typescript/commonjs/src/DatePicker.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts +1 -0
- package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/DatePicker.d.ts +1 -1
- package/lib/typescript/module/src/DatePicker.d.ts.map +1 -1
- package/lib/typescript/module/src/DatePickerNativeComponent.d.ts +1 -0
- package/lib/typescript/module/src/DatePickerNativeComponent.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/DatePicker.tsx +2 -2
- package/src/DatePickerNativeComponent.ts +1 -0
package/README.md
CHANGED
|
@@ -174,9 +174,9 @@ export function Example() {
|
|
|
174
174
|
visible={visible}
|
|
175
175
|
presentation="modal"
|
|
176
176
|
mode="date"
|
|
177
|
-
onConfirm={(d) => {
|
|
177
|
+
onConfirm={(d, confirmed) => {
|
|
178
178
|
setDate(d);
|
|
179
|
-
setVisible(false);
|
|
179
|
+
if (confirmed) setVisible(false);
|
|
180
180
|
}}
|
|
181
181
|
onClosed={() => setVisible(false)}
|
|
182
182
|
ios={{ preferredStyle: 'inline' }}
|
|
@@ -200,7 +200,7 @@ export function Example() {
|
|
|
200
200
|
date={date}
|
|
201
201
|
presentation="embedded"
|
|
202
202
|
mode="date"
|
|
203
|
-
onConfirm={(d) => setDate(d)}
|
|
203
|
+
onConfirm={(d, confirmed) => setDate(d)}
|
|
204
204
|
ios={{ preferredStyle: 'inline' }}
|
|
205
205
|
android={{ material: 'system' }}
|
|
206
206
|
/>
|
|
@@ -458,18 +458,18 @@ Native date & time picker using **platform system pickers**.
|
|
|
458
458
|
|
|
459
459
|
### Props
|
|
460
460
|
|
|
461
|
-
| Prop | Type | Description
|
|
462
|
-
| -------------- | ------------------------------------------------------- |
|
|
463
|
-
| `date` | `Date \| null` | Controlled date value
|
|
464
|
-
| `minDate` | `Date \| null` | Minimum selectable date
|
|
465
|
-
| `maxDate` | `Date \| null` | Maximum selectable date
|
|
466
|
-
| `locale` | `string` | Locale identifier (e.g., `'en-US'`)
|
|
467
|
-
| `timeZoneName` | `string` | Time zone identifier
|
|
468
|
-
| `mode` | `'date' \| 'time' \| 'dateAndTime' \| 'countDownTimer'` | Picker mode
|
|
469
|
-
| `presentation` | `'modal' \| 'embedded'` | Presentation style
|
|
470
|
-
| `visible` | `boolean` | Controls modal visibility (modal mode only)
|
|
471
|
-
| `onConfirm` | `(date: Date) => void`
|
|
472
|
-
| `onClosed` | `() => void` | Called when modal is dismissed
|
|
461
|
+
| Prop | Type | Description |
|
|
462
|
+
| -------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------- |
|
|
463
|
+
| `date` | `Date \| null` | Controlled date value |
|
|
464
|
+
| `minDate` | `Date \| null` | Minimum selectable date |
|
|
465
|
+
| `maxDate` | `Date \| null` | Maximum selectable date |
|
|
466
|
+
| `locale` | `string` | Locale identifier (e.g., `'en-US'`) |
|
|
467
|
+
| `timeZoneName` | `string` | Time zone identifier |
|
|
468
|
+
| `mode` | `'date' \| 'time' \| 'dateAndTime' \| 'countDownTimer'` | Picker mode |
|
|
469
|
+
| `presentation` | `'modal' \| 'embedded'` | Presentation style |
|
|
470
|
+
| `visible` | `boolean` | Controls modal visibility (modal mode only) |
|
|
471
|
+
| `onConfirm` | `(date: Date, confirmed: boolean) => void` | Called on date change; `confirmed` is `true` for deliberate selections (see below) |
|
|
472
|
+
| `onClosed` | `() => void` | Called when modal is dismissed |
|
|
473
473
|
|
|
474
474
|
### iOS Props (`ios`)
|
|
475
475
|
|
|
@@ -490,6 +490,33 @@ Native date & time picker using **platform system pickers**.
|
|
|
490
490
|
| `positiveButtonTitle` | `string` | Custom confirm button text |
|
|
491
491
|
| `negativeButtonTitle` | `string` | Custom cancel button text |
|
|
492
492
|
|
|
493
|
+
### The `confirmed` Flag
|
|
494
|
+
|
|
495
|
+
`onConfirm` fires on every date/time change, but the second argument (`confirmed`) lets you distinguish between browsing and deliberate selections:
|
|
496
|
+
|
|
497
|
+
| Platform / Mode | Every change | Deliberate selection |
|
|
498
|
+
| -------------------- | ---------------------------------------- | ------------------------------------------------------ |
|
|
499
|
+
| **iOS modal** | `confirmed: false` (scrolling the wheel) | `confirmed: true` (tapping the already-selected value) |
|
|
500
|
+
| **iOS embedded** | `confirmed: true` | — |
|
|
501
|
+
| **Android modal** | — | `confirmed: true` (pressing OK) |
|
|
502
|
+
| **Android embedded** | `confirmed: true` | — |
|
|
503
|
+
|
|
504
|
+
A common pattern is to close the modal only on a confirmed selection:
|
|
505
|
+
|
|
506
|
+
```tsx
|
|
507
|
+
<DatePicker
|
|
508
|
+
date={date}
|
|
509
|
+
visible={visible}
|
|
510
|
+
presentation="modal"
|
|
511
|
+
mode="time"
|
|
512
|
+
onConfirm={(d, confirmed) => {
|
|
513
|
+
setDate(d);
|
|
514
|
+
if (confirmed) setVisible(false);
|
|
515
|
+
}}
|
|
516
|
+
onClosed={() => setVisible(false)}
|
|
517
|
+
/>
|
|
518
|
+
```
|
|
519
|
+
|
|
493
520
|
---
|
|
494
521
|
|
|
495
522
|
## ContextMenu
|
|
@@ -635,12 +662,12 @@ Native glass morphism effect using **UIGlassEffect** on iOS 26+. On Android and
|
|
|
635
662
|
|
|
636
663
|
### iOS Props (`ios`)
|
|
637
664
|
|
|
638
|
-
| Prop
|
|
639
|
-
|
|
|
640
|
-
| `effect`
|
|
641
|
-
| `interactive`
|
|
642
|
-
| `tintColor`
|
|
643
|
-
| `colorScheme`
|
|
665
|
+
| Prop | Type | Description |
|
|
666
|
+
| ------------- | -------------------------------- | ---------------------------------------------------- |
|
|
667
|
+
| `effect` | `'clear' \| 'regular' \| 'none'` | Glass effect intensity (default: `'regular'`) |
|
|
668
|
+
| `interactive` | `boolean` | Enable touch interaction feedback (default: `false`) |
|
|
669
|
+
| `tintColor` | `string` | Overlay tint color (hex string) |
|
|
670
|
+
| `colorScheme` | `'light' \| 'dark' \| 'system'` | Appearance mode (default: `'system'`) |
|
|
644
671
|
|
|
645
672
|
### Android Props (`android`)
|
|
646
673
|
|
|
@@ -704,14 +731,14 @@ This is intentional. The goal is native fidelity, not pixel-level customization.
|
|
|
704
731
|
|
|
705
732
|
All color props in this library support the same formats as React Native's `backgroundColor`:
|
|
706
733
|
|
|
707
|
-
| Format | Example
|
|
708
|
-
|
|
|
709
|
-
| Hex
|
|
710
|
-
| RGB
|
|
711
|
-
| RGBA
|
|
712
|
-
| HSL
|
|
713
|
-
| HSLA
|
|
714
|
-
| Named
|
|
734
|
+
| Format | Example | Description |
|
|
735
|
+
| ------ | --------------------------------- | ---------------------------------- |
|
|
736
|
+
| Hex | `#RGB`, `#RRGGBB`, `#RRGGBBAA` | Standard hex colors |
|
|
737
|
+
| RGB | `rgb(255, 0, 0)` | RGB values (0-255) |
|
|
738
|
+
| RGBA | `rgba(255, 0, 0, 0.5)` | RGB with alpha (0-1) |
|
|
739
|
+
| HSL | `hsl(0, 100%, 50%)` | Hue (0-360), saturation, lightness |
|
|
740
|
+
| HSLA | `hsla(0, 100%, 50%, 0.5)` | HSL with alpha (0-1) |
|
|
741
|
+
| Named | `red`, `steelblue`, `transparent` | CSS named colors |
|
|
715
742
|
|
|
716
743
|
**Props that accept colors:**
|
|
717
744
|
|
|
@@ -141,12 +141,14 @@ class PCDatePickerViewManager :
|
|
|
141
141
|
|
|
142
142
|
private class ConfirmEvent(
|
|
143
143
|
surfaceId: Int,
|
|
144
|
-
private val ts: Double
|
|
144
|
+
private val ts: Double,
|
|
145
|
+
private val confirmed: Boolean = true
|
|
145
146
|
) : Event<ConfirmEvent>(surfaceId) {
|
|
146
147
|
override fun getEventName(): String = "topConfirm"
|
|
147
148
|
override fun dispatch(rctEventEmitter: RCTEventEmitter) {
|
|
148
149
|
val payload = com.facebook.react.bridge.Arguments.createMap().apply {
|
|
149
150
|
putDouble("timestampMs", ts)
|
|
151
|
+
putBoolean("confirmed", confirmed)
|
|
150
152
|
}
|
|
151
153
|
rctEventEmitter.receiveEvent(viewTag, eventName, payload)
|
|
152
154
|
}
|
package/ios/PCDatePicker.mm
CHANGED
|
@@ -46,13 +46,14 @@ using namespace facebook::react;
|
|
|
46
46
|
|
|
47
47
|
__weak __typeof(self) weakSelf = self;
|
|
48
48
|
|
|
49
|
-
_datePickerView.onChangeHandler = ^(NSNumber *ms) {
|
|
49
|
+
_datePickerView.onChangeHandler = ^(NSNumber *ms, BOOL confirmed) {
|
|
50
50
|
__typeof(self) strongSelf = weakSelf;
|
|
51
51
|
if (!strongSelf)
|
|
52
52
|
return;
|
|
53
53
|
|
|
54
54
|
PCDatePickerEventEmitter::OnConfirm event{};
|
|
55
55
|
event.timestampMs = ms.doubleValue;
|
|
56
|
+
event.confirmed = confirmed;
|
|
56
57
|
|
|
57
58
|
strongSelf.eventEmitterTyped.onConfirm(event);
|
|
58
59
|
};
|
|
@@ -6,25 +6,28 @@ private let logger = Logger(subsystem: "com.platformcomponents", category: "Date
|
|
|
6
6
|
@objcMembers
|
|
7
7
|
public final class PCDatePickerView: UIControl,
|
|
8
8
|
UIPopoverPresentationControllerDelegate,
|
|
9
|
-
UIAdaptivePresentationControllerDelegate
|
|
9
|
+
UIAdaptivePresentationControllerDelegate,
|
|
10
|
+
UIGestureRecognizerDelegate
|
|
10
11
|
{
|
|
11
12
|
// MARK: - UI
|
|
12
13
|
private let picker = UIDatePicker()
|
|
13
14
|
private var modalVC: UIViewController?
|
|
14
15
|
private var inlineConstraints: [NSLayoutConstraint] = []
|
|
16
|
+
private var confirmWorkItem: DispatchWorkItem?
|
|
17
|
+
private var tapGesture: UITapGestureRecognizer?
|
|
15
18
|
|
|
16
|
-
// Suppress
|
|
19
|
+
// Suppress "programmatic" valueChanged events (apply props / initial present settle).
|
|
17
20
|
private var suppressChangeEvents = false
|
|
18
21
|
private func suppressNextChangesBriefly() {
|
|
19
22
|
suppressChangeEvents = true
|
|
20
|
-
// Clear on next runloop tick (usually enough to skip the
|
|
23
|
+
// Clear on next runloop tick (usually enough to skip the "settle" event).
|
|
21
24
|
DispatchQueue.main.async { [weak self] in
|
|
22
25
|
self?.suppressChangeEvents = false
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
|
|
26
29
|
// MARK: - Events (wired from ObjC++)
|
|
27
|
-
public var onChangeHandler: ((NSNumber) -> Void)?
|
|
30
|
+
public var onChangeHandler: ((NSNumber, Bool) -> Void)?
|
|
28
31
|
public var onCancelHandler: (() -> Void)?
|
|
29
32
|
|
|
30
33
|
// MARK: - Props
|
|
@@ -283,6 +286,14 @@ public final class PCDatePickerView: UIControl,
|
|
|
283
286
|
// Prevent "settle" events right as we present.
|
|
284
287
|
suppressNextChangesBriefly()
|
|
285
288
|
|
|
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
|
+
|
|
286
297
|
let vc = UIViewController()
|
|
287
298
|
picker.translatesAutoresizingMaskIntoConstraints = false
|
|
288
299
|
vc.view.addSubview(picker)
|
|
@@ -343,6 +354,11 @@ public final class PCDatePickerView: UIControl,
|
|
|
343
354
|
guard let vc = modalVC else { return }
|
|
344
355
|
logger.debug("dismissIfNeeded: dismissing modal, emitCancel=\(emitCancel)")
|
|
345
356
|
modalVC = nil
|
|
357
|
+
confirmWorkItem?.cancel()
|
|
358
|
+
if let tap = tapGesture {
|
|
359
|
+
picker.removeGestureRecognizer(tap)
|
|
360
|
+
tapGesture = nil
|
|
361
|
+
}
|
|
346
362
|
vc.dismiss(animated: true) { [weak self] in
|
|
347
363
|
guard let self else { return }
|
|
348
364
|
if emitCancel { self.onCancelHandler?() }
|
|
@@ -360,6 +376,11 @@ public final class PCDatePickerView: UIControl,
|
|
|
360
376
|
public func presentationControllerDidDismiss(_ presentationController: UIPresentationController)
|
|
361
377
|
{
|
|
362
378
|
modalVC = nil
|
|
379
|
+
confirmWorkItem?.cancel()
|
|
380
|
+
if let tap = tapGesture {
|
|
381
|
+
picker.removeGestureRecognizer(tap)
|
|
382
|
+
tapGesture = nil
|
|
383
|
+
}
|
|
363
384
|
onCancelHandler?()
|
|
364
385
|
}
|
|
365
386
|
|
|
@@ -367,17 +388,50 @@ public final class PCDatePickerView: UIControl,
|
|
|
367
388
|
_ popoverPresentationController: UIPopoverPresentationController
|
|
368
389
|
) {
|
|
369
390
|
modalVC = nil
|
|
391
|
+
confirmWorkItem?.cancel()
|
|
392
|
+
if let tap = tapGesture {
|
|
393
|
+
picker.removeGestureRecognizer(tap)
|
|
394
|
+
tapGesture = nil
|
|
395
|
+
}
|
|
370
396
|
onCancelHandler?()
|
|
371
397
|
}
|
|
372
398
|
|
|
399
|
+
// MARK: - Gesture delegate
|
|
400
|
+
|
|
401
|
+
public func gestureRecognizer(
|
|
402
|
+
_ gestureRecognizer: UIGestureRecognizer,
|
|
403
|
+
shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer
|
|
404
|
+
) -> Bool {
|
|
405
|
+
return gestureRecognizer === tapGesture
|
|
406
|
+
}
|
|
407
|
+
|
|
373
408
|
// MARK: - Value changes
|
|
374
409
|
|
|
375
410
|
@objc private func handleValueChanged() {
|
|
376
|
-
// Skip
|
|
411
|
+
// Skip "programmatic/settle" changes
|
|
377
412
|
if suppressChangeEvents { return }
|
|
378
413
|
|
|
379
414
|
let ms = picker.date.timeIntervalSince1970 * 1000.0
|
|
380
|
-
|
|
415
|
+
let isModal = presentation == "modal" && modalVC != nil
|
|
416
|
+
onChangeHandler?(NSNumber(value: ms), !isModal)
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
@objc private func handlePickerTap() {
|
|
420
|
+
guard presentation == "modal", modalVC != nil else { return }
|
|
421
|
+
|
|
422
|
+
confirmWorkItem?.cancel()
|
|
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)
|
|
381
435
|
}
|
|
382
436
|
|
|
383
437
|
// MARK: - Apply props (avoid firing valueChanged)
|
|
@@ -44,7 +44,7 @@ function DatePicker(props) {
|
|
|
44
44
|
} = props;
|
|
45
45
|
const isModal = presentation === 'modal';
|
|
46
46
|
const handleConfirm = (0, _react.useCallback)(e => {
|
|
47
|
-
onConfirm?.(new Date(e.nativeEvent.timestampMs));
|
|
47
|
+
onConfirm?.(new Date(e.nativeEvent.timestampMs), e.nativeEvent.confirmed);
|
|
48
48
|
}, [onConfirm]);
|
|
49
49
|
const handleClosed = (0, _react.useCallback)(() => {
|
|
50
50
|
onClosed?.();
|
|
@@ -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","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;;AA6DA;AACA;AACA,MAAMgB,gBAAgB,GAAGC,MAAM,CAACC,gBAAgB;AAEhD,SAASC,kBAAkBA,CAACC,CAA0B,EAAU;EAC9D,IAAI,CAACA,CAAC,EAAE,OAAOJ,gBAAgB;EAC/B,MAAMK,EAAE,GAAGD,CAAC,CAACE,OAAO,CAAC,CAAC;EACtB,OAAOL,MAAM,CAACM,QAAQ,CAACF,EAAE,CAAC,GAAGA,EAAE,GAAGL,gBAAgB;AACpD;AAEA,SAASQ,gBAAgBA,CACvBC,YAA+D,EAC/DC,OAA4B,EACP;EACrB;EACA,IAAID,YAAY,KAAK,OAAO,EAAE,OAAOE,SAAS;EAC9C,OAAOD,OAAO,GAAG,MAAM,GAAG,QAAQ;AACpC;AAEO,SAASE,UAAUA,CAACC,KAAsB,EAAsB;EACrE,MAAM;IACJC,KAAK;IACLC,IAAI;IACJC,OAAO;IACPC,OAAO;IACPC,MAAM;IACNC,YAAY;IACZC,IAAI;IACJX,YAAY,GAAG,OAAO;IACtBC,OAAO;IACPW,SAAS;IACTC,QAAQ;IACRC,GAAG;IACHC,OAAO;IACPC;EACF,CAAC,GAAGZ,KAAK;EAET,MAAMa,OAAO,GAAGjB,YAAY,KAAK,OAAO;EAExC,MAAMkB,aAAa,GAAG,IAAAC,kBAAW,EAC9B/C,CAAwC,IAAK;IAC5CwC,SAAS,GAAG,IAAIQ,IAAI,CAAChD,CAAC,CAACiD,WAAW,CAACC,WAAW,CAAC,CAAC;
|
|
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":"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","ignoreList":[]}
|
package/lib/module/DatePicker.js
CHANGED
|
@@ -37,7 +37,7 @@ export function DatePicker(props) {
|
|
|
37
37
|
} = props;
|
|
38
38
|
const isModal = presentation === 'modal';
|
|
39
39
|
const handleConfirm = useCallback(e => {
|
|
40
|
-
onConfirm?.(new Date(e.nativeEvent.timestampMs));
|
|
40
|
+
onConfirm?.(new Date(e.nativeEvent.timestampMs), e.nativeEvent.confirmed);
|
|
41
41
|
}, [onConfirm]);
|
|
42
42
|
const handleClosed = useCallback(() => {
|
|
43
43
|
onClosed?.();
|
|
@@ -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","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;AA+CrC;AACA;AACA,MAAMC,gBAAgB,GAAGC,MAAM,CAACC,gBAAgB;AAEhD,SAASC,kBAAkBA,CAACC,CAA0B,EAAU;EAC9D,IAAI,CAACA,CAAC,EAAE,OAAOJ,gBAAgB;EAC/B,MAAMK,EAAE,GAAGD,CAAC,CAACE,OAAO,CAAC,CAAC;EACtB,OAAOL,MAAM,CAACM,QAAQ,CAACF,EAAE,CAAC,GAAGA,EAAE,GAAGL,gBAAgB;AACpD;AAEA,SAASQ,gBAAgBA,CACvBC,YAA+D,EAC/DC,OAA4B,EACP;EACrB;EACA,IAAID,YAAY,KAAK,OAAO,EAAE,OAAOE,SAAS;EAC9C,OAAOD,OAAO,GAAG,MAAM,GAAG,QAAQ;AACpC;AAEA,OAAO,SAASE,UAAUA,CAACC,KAAsB,EAAsB;EACrE,MAAM;IACJC,KAAK;IACLC,IAAI;IACJC,OAAO;IACPC,OAAO;IACPC,MAAM;IACNC,YAAY;IACZC,IAAI;IACJX,YAAY,GAAG,OAAO;IACtBC,OAAO;IACPW,SAAS;IACTC,QAAQ;IACRC,GAAG;IACHC,OAAO;IACPC;EACF,CAAC,GAAGZ,KAAK;EAET,MAAMa,OAAO,GAAGjB,YAAY,KAAK,OAAO;EAExC,MAAMkB,aAAa,GAAGhC,WAAW,CAC9BiC,CAAwC,IAAK;IAC5CP,SAAS,GAAG,IAAIQ,IAAI,CAACD,CAAC,CAACE,WAAW,CAACC,WAAW,CAAC,CAAC;
|
|
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":"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","ignoreList":[]}
|
|
@@ -18,7 +18,7 @@ export type DatePickerProps = {
|
|
|
18
18
|
* Wrapper ergonomics: boolean.
|
|
19
19
|
*/
|
|
20
20
|
visible?: boolean;
|
|
21
|
-
onConfirm?: (dateTime: Date) => void;
|
|
21
|
+
onConfirm?: (dateTime: Date, confirmed: boolean) => void;
|
|
22
22
|
onClosed?: () => void;
|
|
23
23
|
/** Test identifier */
|
|
24
24
|
testID?: string;
|
|
@@ -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,KAAK,IAAI,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;KACpD,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,CAqErE"}
|
|
@@ -2,6 +2,7 @@ import type { CodegenTypes, ViewProps } from 'react-native';
|
|
|
2
2
|
export type TimestampMs = CodegenTypes.Double;
|
|
3
3
|
export type DateChangeEvent = {
|
|
4
4
|
timestampMs: CodegenTypes.Double;
|
|
5
|
+
confirmed: boolean;
|
|
5
6
|
};
|
|
6
7
|
export type DatePickerMode = 'date' | 'time' | 'dateAndTime' | 'countDownTimer';
|
|
7
8
|
export type DatePickerPresentation = 'modal' | 'embedded';
|
|
@@ -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;
|
|
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;AAExE,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;CACjC,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"}
|
|
@@ -18,7 +18,7 @@ export type DatePickerProps = {
|
|
|
18
18
|
* Wrapper ergonomics: boolean.
|
|
19
19
|
*/
|
|
20
20
|
visible?: boolean;
|
|
21
|
-
onConfirm?: (dateTime: Date) => void;
|
|
21
|
+
onConfirm?: (dateTime: Date, confirmed: boolean) => void;
|
|
22
22
|
onClosed?: () => void;
|
|
23
23
|
/** Test identifier */
|
|
24
24
|
testID?: string;
|
|
@@ -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,KAAK,IAAI,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;KACpD,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,CAqErE"}
|
|
@@ -2,6 +2,7 @@ import type { CodegenTypes, ViewProps } from 'react-native';
|
|
|
2
2
|
export type TimestampMs = CodegenTypes.Double;
|
|
3
3
|
export type DateChangeEvent = {
|
|
4
4
|
timestampMs: CodegenTypes.Double;
|
|
5
|
+
confirmed: boolean;
|
|
5
6
|
};
|
|
6
7
|
export type DatePickerMode = 'date' | 'time' | 'dateAndTime' | 'countDownTimer';
|
|
7
8
|
export type DatePickerPresentation = 'modal' | 'embedded';
|
|
@@ -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;
|
|
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;AAExE,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;CACjC,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.8",
|
|
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
|
@@ -37,7 +37,7 @@ export type DatePickerProps = {
|
|
|
37
37
|
*/
|
|
38
38
|
visible?: boolean;
|
|
39
39
|
|
|
40
|
-
onConfirm?: (dateTime: Date) => void;
|
|
40
|
+
onConfirm?: (dateTime: Date, confirmed: boolean) => void;
|
|
41
41
|
onClosed?: () => void;
|
|
42
42
|
|
|
43
43
|
/** Test identifier */
|
|
@@ -100,7 +100,7 @@ export function DatePicker(props: DatePickerProps): React.ReactElement {
|
|
|
100
100
|
|
|
101
101
|
const handleConfirm = useCallback(
|
|
102
102
|
(e: NativeSyntheticEvent<DateChangeEvent>) => {
|
|
103
|
-
onConfirm?.(new Date(e.nativeEvent.timestampMs));
|
|
103
|
+
onConfirm?.(new Date(e.nativeEvent.timestampMs), e.nativeEvent.confirmed);
|
|
104
104
|
},
|
|
105
105
|
[onConfirm]
|
|
106
106
|
);
|