@herca/rn-kit 0.1.118 → 0.1.119
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/lib/module/DatePicker/DatePicker.js +30 -6
- package/lib/module/DatePicker/DatePicker.js.map +1 -1
- package/lib/typescript/src/DatePicker/DatePicker.d.ts +1 -1
- package/lib/typescript/src/DatePicker/DatePicker.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/DatePicker/DatePicker.tsx +28 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useCallback, useState, useEffect } from 'react';
|
|
3
|
+
import { useCallback, useState, useEffect, useMemo } from 'react';
|
|
4
4
|
import { StyleSheet, View } from 'react-native';
|
|
5
5
|
import BottomSheet from "../BottomSheet/BottomSheet.js";
|
|
6
6
|
import Calendar, { formatDate } from "../Calendar/Calendar.js";
|
|
@@ -19,10 +19,13 @@ export default function DatePicker({
|
|
|
19
19
|
hint,
|
|
20
20
|
mode,
|
|
21
21
|
value,
|
|
22
|
+
markedDates: callerMarkedDates,
|
|
22
23
|
confirmLabel = 'Terapkan',
|
|
23
24
|
cancelLabel = 'Batalkan',
|
|
24
25
|
isCancelButtonDisabled = false,
|
|
25
26
|
isConfirmButtonDisabled = false,
|
|
27
|
+
selectedBackgroundColor = Color.primary[1000],
|
|
28
|
+
selectedTextColor = Color.base.white100,
|
|
26
29
|
testID,
|
|
27
30
|
...calendarProps
|
|
28
31
|
}) {
|
|
@@ -67,7 +70,9 @@ export default function DatePicker({
|
|
|
67
70
|
if (mode === 'single' && value?.date) {
|
|
68
71
|
updatedMarkDates = {
|
|
69
72
|
[formatDate(value.date)]: {
|
|
70
|
-
selected: true
|
|
73
|
+
selected: true,
|
|
74
|
+
backgroundColor: selectedBackgroundColor,
|
|
75
|
+
textColor: selectedTextColor
|
|
71
76
|
}
|
|
72
77
|
};
|
|
73
78
|
}
|
|
@@ -99,7 +104,24 @@ export default function DatePicker({
|
|
|
99
104
|
endDate: null,
|
|
100
105
|
date: null
|
|
101
106
|
});
|
|
102
|
-
}, [isOpen, value, mode]);
|
|
107
|
+
}, [isOpen, value, mode, selectedBackgroundColor, selectedTextColor]);
|
|
108
|
+
|
|
109
|
+
// the value the caller already applied has to survive the marks the caller
|
|
110
|
+
// paints for its own reasons -- an override would drop the selection, and a
|
|
111
|
+
// caller's colours on that same day would hide it, so the selection sits on
|
|
112
|
+
// top of the mark it shares a day with and leaves the rest of it alone
|
|
113
|
+
const markedDates = useMemo(() => {
|
|
114
|
+
const merged = {
|
|
115
|
+
...callerMarkedDates
|
|
116
|
+
};
|
|
117
|
+
Object.entries(markDates ?? {}).forEach(([date, mark]) => {
|
|
118
|
+
merged[date] = {
|
|
119
|
+
...merged[date],
|
|
120
|
+
...mark
|
|
121
|
+
};
|
|
122
|
+
});
|
|
123
|
+
return merged;
|
|
124
|
+
}, [callerMarkedDates, markDates]);
|
|
103
125
|
return /*#__PURE__*/_jsx(View, {
|
|
104
126
|
children: /*#__PURE__*/_jsxs(BottomSheet, {
|
|
105
127
|
testID: getTestID(testID, 'sheet'),
|
|
@@ -129,10 +151,12 @@ export default function DatePicker({
|
|
|
129
151
|
})]
|
|
130
152
|
}),
|
|
131
153
|
children: [/*#__PURE__*/_jsx(Calendar, {
|
|
132
|
-
|
|
154
|
+
...calendarProps,
|
|
155
|
+
markedDates: markedDates,
|
|
156
|
+
selectedBackgroundColor: selectedBackgroundColor,
|
|
157
|
+
selectedTextColor: selectedTextColor,
|
|
133
158
|
mode: mode,
|
|
134
|
-
onChange: handleOnChangeCalendar
|
|
135
|
-
...calendarProps
|
|
159
|
+
onChange: handleOnChangeCalendar
|
|
136
160
|
}), testID ? /*#__PURE__*/_jsx(View, {
|
|
137
161
|
testID: getTestID(testID, 'error'),
|
|
138
162
|
children: /*#__PURE__*/_jsx(Alert, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useState","useEffect","StyleSheet","View","BottomSheet","Calendar","formatDate","Button","Alert","Color","getTestID","jsx","_jsx","jsxs","_jsxs","DatePicker","onChange","isOpen","onClose","required","hasError","onHasError","hint","mode","value","confirmLabel","cancelLabel","isCancelButtonDisabled","isConfirmButtonDisabled","testID","calendarProps","errorValidate","setErrorValidate","markDates","setMarkDates","valueDatepicker","setValueDatepicker","startDate","endDate","date","handleOnChangeCalendar","val","handleOnPressSubmitButton","isEmpty","isRangeMode","isInvalidRange","handleOnPressCancelButton","updatedMarkDates","selected","start","Date","end","dates","dt","setDate","getDate","dateStr","
|
|
1
|
+
{"version":3,"names":["useCallback","useState","useEffect","useMemo","StyleSheet","View","BottomSheet","Calendar","formatDate","Button","Alert","Color","getTestID","jsx","_jsx","jsxs","_jsxs","DatePicker","onChange","isOpen","onClose","required","hasError","onHasError","hint","mode","value","markedDates","callerMarkedDates","confirmLabel","cancelLabel","isCancelButtonDisabled","isConfirmButtonDisabled","selectedBackgroundColor","primary","selectedTextColor","base","white100","testID","calendarProps","errorValidate","setErrorValidate","markDates","setMarkDates","valueDatepicker","setValueDatepicker","startDate","endDate","date","handleOnChangeCalendar","val","handleOnPressSubmitButton","isEmpty","isRangeMode","isInvalidRange","handleOnPressCancelButton","updatedMarkDates","selected","backgroundColor","textColor","start","Date","end","dates","dt","setDate","getDate","dateStr","gray","merged","Object","entries","forEach","mark","children","footer","style","styles","footerContainer","buttonWrapper","variant","title","color","onPress","disabled","message","hide","create","flexDirection","justifyContent","flex"],"sourceRoot":"../../../src","sources":["DatePicker/DatePicker.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,6 +15,6 @@ interface DatePickerProps extends CalendarTypes {
|
|
|
15
15
|
isConfirmButtonDisabled?: boolean;
|
|
16
16
|
testID?: string;
|
|
17
17
|
}
|
|
18
|
-
export default function DatePicker({ onChange, isOpen, onClose, required, hasError, onHasError, hint, mode, value, confirmLabel, cancelLabel, isCancelButtonDisabled, isConfirmButtonDisabled, testID, ...calendarProps }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export default function DatePicker({ onChange, isOpen, onClose, required, hasError, onHasError, hint, mode, value, markedDates: callerMarkedDates, confirmLabel, cancelLabel, isCancelButtonDisabled, isConfirmButtonDisabled, selectedBackgroundColor, selectedTextColor, testID, ...calendarProps }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
19
19
|
export {};
|
|
20
20
|
//# sourceMappingURL=DatePicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,+BAA+B,CAAC;AAIvC,UAAU,eAAgB,SAAQ,aAAa;IAC7C,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,KAAK,IAAI,CAAC;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,EACR,MAAM,EACN,OAAO,EACP,QAAgB,EAChB,QAAgB,EAChB,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,YAAyB,EACzB,WAAwB,EACxB,sBAA8B,EAC9B,uBAA+B,EAC/B,MAAM,EACN,GAAG,aAAa,EACjB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,+BAA+B,CAAC;AAIvC,UAAU,eAAgB,SAAQ,aAAa;IAC7C,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,KAAK,IAAI,CAAC;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,EACR,MAAM,EACN,OAAO,EACP,QAAgB,EAChB,QAAgB,EAChB,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,WAAW,EAAE,iBAAiB,EAC9B,YAAyB,EACzB,WAAwB,EACxB,sBAA8B,EAC9B,uBAA+B,EAC/B,uBAA6C,EAC7C,iBAAuC,EACvC,MAAM,EACN,GAAG,aAAa,EACjB,EAAE,eAAe,2CAoKjB"}
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useState, useEffect } from 'react';
|
|
1
|
+
import { useCallback, useState, useEffect, useMemo } from 'react';
|
|
2
2
|
import { StyleSheet, View } from 'react-native';
|
|
3
3
|
import BottomSheet from '../BottomSheet/BottomSheet';
|
|
4
4
|
import Calendar, { formatDate } from '../Calendar/Calendar';
|
|
@@ -40,10 +40,13 @@ export default function DatePicker({
|
|
|
40
40
|
hint,
|
|
41
41
|
mode,
|
|
42
42
|
value,
|
|
43
|
+
markedDates: callerMarkedDates,
|
|
43
44
|
confirmLabel = 'Terapkan',
|
|
44
45
|
cancelLabel = 'Batalkan',
|
|
45
46
|
isCancelButtonDisabled = false,
|
|
46
47
|
isConfirmButtonDisabled = false,
|
|
48
|
+
selectedBackgroundColor = Color.primary[1000],
|
|
49
|
+
selectedTextColor = Color.base.white100,
|
|
47
50
|
testID,
|
|
48
51
|
...calendarProps
|
|
49
52
|
}: DatePickerProps) {
|
|
@@ -95,7 +98,11 @@ export default function DatePicker({
|
|
|
95
98
|
|
|
96
99
|
if (mode === 'single' && value?.date) {
|
|
97
100
|
updatedMarkDates = {
|
|
98
|
-
[formatDate(value.date) as string]: {
|
|
101
|
+
[formatDate(value.date) as string]: {
|
|
102
|
+
selected: true,
|
|
103
|
+
backgroundColor: selectedBackgroundColor,
|
|
104
|
+
textColor: selectedTextColor,
|
|
105
|
+
},
|
|
99
106
|
};
|
|
100
107
|
}
|
|
101
108
|
|
|
@@ -134,7 +141,21 @@ export default function DatePicker({
|
|
|
134
141
|
date: null,
|
|
135
142
|
}
|
|
136
143
|
);
|
|
137
|
-
}, [isOpen, value, mode]);
|
|
144
|
+
}, [isOpen, value, mode, selectedBackgroundColor, selectedTextColor]);
|
|
145
|
+
|
|
146
|
+
// the value the caller already applied has to survive the marks the caller
|
|
147
|
+
// paints for its own reasons -- an override would drop the selection, and a
|
|
148
|
+
// caller's colours on that same day would hide it, so the selection sits on
|
|
149
|
+
// top of the mark it shares a day with and leaves the rest of it alone
|
|
150
|
+
const markedDates = useMemo(() => {
|
|
151
|
+
const merged: CalendarMarkDatesType = { ...callerMarkedDates };
|
|
152
|
+
|
|
153
|
+
Object.entries(markDates ?? {}).forEach(([date, mark]) => {
|
|
154
|
+
merged[date] = { ...merged[date], ...mark };
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
return merged;
|
|
158
|
+
}, [callerMarkedDates, markDates]);
|
|
138
159
|
|
|
139
160
|
return (
|
|
140
161
|
<View>
|
|
@@ -167,10 +188,12 @@ export default function DatePicker({
|
|
|
167
188
|
}
|
|
168
189
|
>
|
|
169
190
|
<Calendar
|
|
170
|
-
|
|
191
|
+
{...calendarProps}
|
|
192
|
+
markedDates={markedDates}
|
|
193
|
+
selectedBackgroundColor={selectedBackgroundColor}
|
|
194
|
+
selectedTextColor={selectedTextColor}
|
|
171
195
|
mode={mode}
|
|
172
196
|
onChange={handleOnChangeCalendar}
|
|
173
|
-
{...calendarProps}
|
|
174
197
|
/>
|
|
175
198
|
{testID ? (
|
|
176
199
|
<View testID={getTestID(testID, 'error')}>
|