@herca/rn-kit 0.1.114 → 0.1.115
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/MonthPicker.js +28 -1
- package/lib/module/DatePicker/MonthPicker.js.map +1 -1
- package/lib/module/DatePicker/README_MONTHPICKER.md +1 -0
- package/lib/module/DatePicker/README_YEARPICKER.md +1 -0
- package/lib/module/DatePicker/YearPicker.js +37 -1
- package/lib/module/DatePicker/YearPicker.js.map +1 -1
- package/lib/module/Input/InputMonth.js +15 -0
- package/lib/module/Input/InputMonth.js.map +1 -1
- package/lib/module/Input/InputYear.js +9 -0
- package/lib/module/Input/InputYear.js.map +1 -1
- package/lib/module/Typography/type.js.map +1 -1
- package/lib/typescript/src/DatePicker/MonthPicker.d.ts +10 -1
- package/lib/typescript/src/DatePicker/MonthPicker.d.ts.map +1 -1
- package/lib/typescript/src/DatePicker/YearPicker.d.ts +10 -1
- package/lib/typescript/src/DatePicker/YearPicker.d.ts.map +1 -1
- package/lib/typescript/src/Input/InputMonth.d.ts.map +1 -1
- package/lib/typescript/src/Input/InputYear.d.ts.map +1 -1
- package/lib/typescript/src/Typography/type.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/DatePicker/MonthPicker.tsx +33 -1
- package/src/DatePicker/README_MONTHPICKER.md +1 -0
- package/src/DatePicker/README_YEARPICKER.md +1 -0
- package/src/DatePicker/YearPicker.tsx +43 -1
- package/src/Input/InputMonth.tsx +18 -0
- package/src/Input/InputYear.tsx +9 -0
- package/src/Typography/type.tsx +10 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useState, useCallback } from 'react';
|
|
3
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
4
4
|
import { View, FlatList, StyleSheet, TouchableOpacity } from 'react-native';
|
|
5
5
|
import BottomSheet from "../BottomSheet/BottomSheet.js";
|
|
6
6
|
import Typography from "../Typography/Typography.js";
|
|
@@ -14,6 +14,7 @@ export default function MonthPicker({
|
|
|
14
14
|
onClose,
|
|
15
15
|
onChange,
|
|
16
16
|
mode = 'single',
|
|
17
|
+
value,
|
|
17
18
|
cancelLabel = 'Batal',
|
|
18
19
|
confirmLabel = 'pilih',
|
|
19
20
|
title = 'Pilih Bulan',
|
|
@@ -25,6 +26,32 @@ export default function MonthPicker({
|
|
|
25
26
|
});
|
|
26
27
|
const [multipleValue, setMultipleValue] = useState([]);
|
|
27
28
|
const [singleValue, setSingleValue] = useState(null);
|
|
29
|
+
|
|
30
|
+
// Compared as a string, not by reference: a parent that rebuilds the value
|
|
31
|
+
// object on every render would otherwise wipe a selection mid-sheet.
|
|
32
|
+
const valueKey = JSON.stringify(value ?? null);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
const incoming = JSON.parse(valueKey);
|
|
35
|
+
|
|
36
|
+
// No value at all means uncontrolled -- the sheet's own state is the
|
|
37
|
+
// only record of the selection, so don't touch it.
|
|
38
|
+
if (!isOpen || incoming === null) return;
|
|
39
|
+
if (Array.isArray(incoming)) {
|
|
40
|
+
setSingleValue(incoming[0] ?? null);
|
|
41
|
+
setMultipleValue(incoming);
|
|
42
|
+
setRangeValue({
|
|
43
|
+
startDate: null,
|
|
44
|
+
endDate: null
|
|
45
|
+
});
|
|
46
|
+
} else {
|
|
47
|
+
setSingleValue(null);
|
|
48
|
+
setMultipleValue([]);
|
|
49
|
+
setRangeValue({
|
|
50
|
+
startDate: incoming.startDate ?? null,
|
|
51
|
+
endDate: incoming.endDate ?? null
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}, [isOpen, valueKey]);
|
|
28
55
|
const handleSelectMonth = useCallback(month => {
|
|
29
56
|
if (mode === 'single') {
|
|
30
57
|
setSingleValue(month);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useCallback","View","FlatList","StyleSheet","TouchableOpacity","BottomSheet","Typography","Button","Color","generateMonthOptions","getTestID","jsx","_jsx","jsxs","_jsxs","MonthPicker","isOpen","onClose","onChange","mode","cancelLabel","confirmLabel","title","testID","rangeValue","setRangeValue","startDate","endDate","multipleValue","setMultipleValue","singleValue","setSingleValue","handleSelectMonth","month","prev","includes","filter","m","isSelected","handleSubmit","footer","style","styles","containerBottomSheetFooter","children","flex1","variant","size","color","onPress","header","weight","gray","center","container","data","numColumns","keyExtractor","item","
|
|
1
|
+
{"version":3,"names":["useState","useCallback","useEffect","View","FlatList","StyleSheet","TouchableOpacity","BottomSheet","Typography","Button","Color","generateMonthOptions","getTestID","jsx","_jsx","jsxs","_jsxs","MonthPicker","isOpen","onClose","onChange","mode","value","cancelLabel","confirmLabel","title","testID","rangeValue","setRangeValue","startDate","endDate","multipleValue","setMultipleValue","singleValue","setSingleValue","valueKey","JSON","stringify","incoming","parse","Array","isArray","handleSelectMonth","month","prev","includes","filter","m","isSelected","handleSubmit","footer","style","styles","containerBottomSheetFooter","children","flex1","variant","size","color","onPress","header","weight","gray","center","container","data","numColumns","keyExtractor","item","toString","contentContainerStyle","yearList","renderItem","selected","yearItem","option","optionSelected","label","create","gap","paddingBottom","width","margin","pagination","marginTop","flexDirection","justifyContent","alignItems","marginBottom","buttonNav","backgroundColor","borderRadius","padding","flex","paddingVertical","paddingHorizontal","borderWidth","borderColor","base","white100","primary"],"sourceRoot":"../../../src","sources":["DatePicker/MonthPicker.tsx"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,WAAW,EAAEC,SAAS,QAAQ,OAAO;AACxD,SAASC,IAAI,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,gBAAgB,QAAQ,cAAc;AAC3E,OAAOC,WAAW,MAAM,+BAA4B;AACpD,OAAOC,UAAU,MAAM,6BAA0B;AACjD,OAAOC,MAAM,MAAM,qBAAkB;AACrC,OAAOC,KAAK,MAAM,mBAAgB;AAClC,SAASC,oBAAoB,QAAQ,cAAW;AAChD,SAASC,SAAS,QAAQ,yBAAsB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAuBjD,eAAe,SAASC,WAAWA,CAAC;EAClCC,MAAM;EACNC,OAAO;EACPC,QAAQ;EACRC,IAAI,GAAG,QAAQ;EACfC,KAAK;EACLC,WAAW,GAAG,OAAO;EACrBC,YAAY,GAAG,OAAO;EACtBC,KAAK,GAAG,aAAa;EACrBC;AACgB,CAAC,EAAE;EACnB,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG5B,QAAQ,CAGzC;IAAE6B,SAAS,EAAE,IAAI;IAAEC,OAAO,EAAE;EAAK,CAAC,CAAC;EACtC,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGhC,QAAQ,CAAW,EAAE,CAAC;EAChE,MAAM,CAACiC,WAAW,EAAEC,cAAc,CAAC,GAAGlC,QAAQ,CAAgB,IAAI,CAAC;;EAEnE;EACA;EACA,MAAMmC,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAACf,KAAK,IAAI,IAAI,CAAC;EAE9CpB,SAAS,CAAC,MAAM;IACd,MAAMoC,QAAQ,GAAGF,IAAI,CAACG,KAAK,CAACJ,QAAQ,CAAC;;IAErC;IACA;IACA,IAAI,CAACjB,MAAM,IAAIoB,QAAQ,KAAK,IAAI,EAAE;IAElC,IAAIE,KAAK,CAACC,OAAO,CAACH,QAAQ,CAAC,EAAE;MAC3BJ,cAAc,CAACI,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;MACnCN,gBAAgB,CAACM,QAAQ,CAAC;MAC1BV,aAAa,CAAC;QAAEC,SAAS,EAAE,IAAI;QAAEC,OAAO,EAAE;MAAK,CAAC,CAAC;IACnD,CAAC,MAAM;MACLI,cAAc,CAAC,IAAI,CAAC;MACpBF,gBAAgB,CAAC,EAAE,CAAC;MACpBJ,aAAa,CAAC;QACZC,SAAS,EAAES,QAAQ,CAACT,SAAS,IAAI,IAAI;QACrCC,OAAO,EAAEQ,QAAQ,CAACR,OAAO,IAAI;MAC/B,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACZ,MAAM,EAAEiB,QAAQ,CAAC,CAAC;EAEtB,MAAMO,iBAAiB,GAAGzC,WAAW,CAClC0C,KAAa,IAAK;IACjB,IAAItB,IAAI,KAAK,QAAQ,EAAE;MACrBa,cAAc,CAACS,KAAK,CAAC;IACvB,CAAC,MAAM,IAAItB,IAAI,KAAK,OAAO,EAAE;MAC3B,IACEM,UAAU,CAACE,SAAS,KAAK,IAAI,IAC5BF,UAAU,CAACE,SAAS,KAAK,IAAI,IAAIF,UAAU,CAACG,OAAO,KAAK,IAAK,EAC9D;QACAF,aAAa,CAAC;UAAEC,SAAS,EAAEc,KAAK;UAAEb,OAAO,EAAE;QAAK,CAAC,CAAC;MACpD,CAAC,MAAM,IAAIa,KAAK,GAAGhB,UAAU,CAACE,SAAS,EAAE;QACvCD,aAAa,CAAC;UAAEC,SAAS,EAAEc,KAAK;UAAEb,OAAO,EAAEH,UAAU,CAACE;QAAU,CAAC,CAAC;MACpE,CAAC,MAAM;QACLD,aAAa,CAAC;UAAEC,SAAS,EAAEF,UAAU,CAACE,SAAS;UAAEC,OAAO,EAAEa;QAAM,CAAC,CAAC;MACpE;IACF,CAAC,MAAM,IAAItB,IAAI,KAAK,UAAU,EAAE;MAC9BW,gBAAgB,CAAEY,IAAI,IACpBA,IAAI,CAACC,QAAQ,CAACF,KAAK,CAAC,GAChBC,IAAI,CAACE,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAKJ,KAAK,CAAC,GAC/B,CAAC,GAAGC,IAAI,EAAED,KAAK,CACrB,CAAC;IACH;EACF,CAAC,EACD,CAACtB,IAAI,EAAEM,UAAU,CACnB,CAAC;EAED,MAAMqB,UAAU,GAAIL,KAAa,IAAK;IACpC,IAAItB,IAAI,KAAK,QAAQ,EAAE,OAAOsB,KAAK,KAAKV,WAAW;IACnD,IAAIZ,IAAI,KAAK,OAAO,EAAE;MACpB,MAAM;QAAEQ,SAAS;QAAEC;MAAQ,CAAC,GAAGH,UAAU;MACzC,OACGE,SAAS,KAAKc,KAAK,IAAIb,OAAO,KAAK,IAAI,IACvCD,SAAS,KAAK,IAAI,IACjBC,OAAO,KAAK,IAAI,IAChBa,KAAK,IAAId,SAAS,IAClBc,KAAK,IAAIb,OAAQ;IAEvB;IACA,IAAIT,IAAI,KAAK,UAAU,EAAE,OAAOU,aAAa,CAACc,QAAQ,CAACF,KAAK,CAAC;IAC7D,OAAO,KAAK;EACd,CAAC;EAED,MAAMM,YAAY,GAAGA,CAAA,KAAM;IACzB,IAAI5B,IAAI,KAAK,QAAQ,EAAE;MACrBD,QAAQ,GAAGa,WAAW,KAAK,IAAI,GAAG,CAACA,WAAW,CAAC,GAAG,EAAE,CAAC;IACvD,CAAC,MAAM,IAAIZ,IAAI,KAAK,OAAO,EAAE;MAC3BD,QAAQ,GAAGO,UAAU,CAAC;IACxB,CAAC,MAAM;MACLP,QAAQ,GAAGW,aAAa,CAAC;IAC3B;IACAZ,OAAO,GAAG,CAAC;EACb,CAAC;EAED,oBACEH,KAAA,CAACT,WAAW;IACVmB,MAAM,EAAEd,SAAS,CAACc,MAAM,EAAE,OAAO,CAAE;IACnCR,MAAM,EAAEA,MAAO;IACfC,OAAO,EAAEA,OAAQ;IACjB+B,MAAM,eACJlC,KAAA,CAACb,IAAI;MAACgD,KAAK,EAAEC,MAAM,CAACC,0BAA2B;MAAAC,QAAA,gBAC7CxC,IAAA,CAACX,IAAI;QAACgD,KAAK,EAAEC,MAAM,CAACG,KAAM;QAAAD,QAAA,eACxBxC,IAAA,CAACL,MAAM;UACLiB,MAAM,EAAEd,SAAS,CAACc,MAAM,EAAE,QAAQ,CAAE;UACpCD,KAAK,EAAEF,WAAY;UACnBiC,OAAO,EAAC,UAAU;UAClBC,IAAI,EAAC,QAAQ;UACbC,KAAK,EAAC,SAAS;UACfC,OAAO,EAAExC;QAAQ,CAClB;MAAC,CACE,CAAC,eACPL,IAAA,CAACX,IAAI;QAACgD,KAAK,EAAEC,MAAM,CAACG,KAAM;QAAAD,QAAA,eACxBxC,IAAA,CAACL,MAAM;UACLiB,MAAM,EAAEd,SAAS,CAACc,MAAM,EAAE,SAAS,CAAE;UACrCD,KAAK,EAAED,YAAa;UACpBkC,KAAK,EAAC,SAAS;UACfD,IAAI,EAAC,QAAQ;UACbE,OAAO,EAAEV;QAAa,CACvB;MAAC,CACE,CAAC;IAAA,CACH,CACP;IAAAK,QAAA,gBAEDxC,IAAA,CAACX,IAAI;MAACgD,KAAK,EAAEC,MAAM,CAACQ,MAAO;MAAAN,QAAA,eACzBxC,IAAA,CAACN,UAAU;QACTgD,OAAO,EAAC,IAAI;QACZK,MAAM,EAAC,UAAU;QACjBH,KAAK,EAAEhD,KAAK,CAACoD,IAAI,CAAC,GAAG,CAAE;QACvBC,MAAM;QAAAT,QAAA,EAEL7B;MAAK,CACI;IAAC,CACT,CAAC,eAEPX,IAAA,CAACX,IAAI;MAACgD,KAAK,EAAEC,MAAM,CAACY,SAAU;MAAAV,QAAA,eAC5BxC,IAAA,CAACV,QAAQ;QACP6D,IAAI,EAAEtD,oBAAoB,CAAC,CAAE;QAC7BuD,UAAU,EAAE,CAAE;QACdC,YAAY,EAAGC,IAAI,IAAKA,IAAI,CAAC9C,KAAK,CAAC+C,QAAQ,CAAC,CAAE;QAC9CC,qBAAqB,EAAElB,MAAM,CAACmB,QAAS;QACvCC,UAAU,EAAEA,CAAC;UAAEJ;QAAK,CAAC,KAAK;UACxB,MAAMK,QAAQ,GAAGzB,UAAU,CAACoB,IAAI,CAAC9C,KAAK,CAAC;UACvC,oBACER,IAAA,CAACX,IAAI;YAACgD,KAAK,EAAEC,MAAM,CAACsB,QAAS;YAAApB,QAAA,eAC3BxC,IAAA,CAACR,gBAAgB;cACfoB,MAAM,EAAEd,SAAS,CAACc,MAAM,EAAE,UAAU0C,IAAI,CAAC9C,KAAK,EAAE,CAAE;cAClDqC,OAAO,EAAEA,CAAA,KAAMjB,iBAAiB,CAAC0B,IAAI,CAAC9C,KAAK,CAAE;cAC7C6B,KAAK,EAAE,CACLC,MAAM,CAACuB,MAAM,EACbF,QAAQ,GAAGrB,MAAM,CAACwB,cAAc,GAAG,IAAI,CACvC;cAAAtB,QAAA,eAEFxC,IAAA,CAACN,UAAU;gBACTgD,OAAO,EAAC,IAAI;gBACZO,MAAM;gBACNF,MAAM,EAAC,UAAU;gBACjBH,KAAK,EAAEe,QAAQ,GAAG/D,KAAK,CAACoD,IAAI,CAAC,GAAG,CAAC,GAAGpD,KAAK,CAACoD,IAAI,CAAC,GAAG,CAAE;gBAAAR,QAAA,EAEnDc,IAAI,CAACS;cAAK,CACD;YAAC,CACG;UAAC,CACf,CAAC;QAEX;MAAE,CACH;IAAC,CACE,CAAC;EAAA,CACI,CAAC;AAElB;AAEA,MAAMzB,MAAM,GAAG/C,UAAU,CAACyE,MAAM,CAAC;EAC/Bd,SAAS,EAAE;IACTe,GAAG,EAAE;EACP,CAAC;EACDR,QAAQ,EAAE;IACRS,aAAa,EAAE;EACjB,CAAC;EACDN,QAAQ,EAAE;IACRO,KAAK,EAAE,KAAK;IACZC,MAAM,EAAE;EACV,CAAC;EACDC,UAAU,EAAE;IACVC,SAAS,EAAE,CAAC;IACZC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,eAAe;IAC/BC,UAAU,EAAE,QAAQ;IACpBR,GAAG,EAAE;EACP,CAAC;EACDnB,MAAM,EAAE;IACN4B,YAAY,EAAE;EAChB,CAAC;EACDC,SAAS,EAAE;IACTC,eAAe,EAAEhF,KAAK,CAACoD,IAAI,CAAC,GAAG,CAAC;IAChC6B,YAAY,EAAE,CAAC;IACfC,OAAO,EAAE;EACX,CAAC;EACDvC,0BAA0B,EAAE;IAC1BgC,aAAa,EAAE,KAAK;IACpBQ,IAAI,EAAE,CAAC;IACPd,GAAG,EAAE;EACP,CAAC;EACDxB,KAAK,EAAE;IACLsC,IAAI,EAAE;EACR,CAAC;EACDlB,MAAM,EAAE;IACNI,GAAG,EAAE,CAAC;IACNe,eAAe,EAAE,CAAC;IAClBC,iBAAiB,EAAE,EAAE;IACrBC,WAAW,EAAE,CAAC;IACdL,YAAY,EAAE,CAAC;IACfM,WAAW,EAAEvF,KAAK,CAACwF,IAAI,CAACC;EAC1B,CAAC;EACDvB,cAAc,EAAE;IACdc,eAAe,EAAEhF,KAAK,CAAC0F,OAAO,CAAC,EAAE,CAAC;IAClCH,WAAW,EAAEvF,KAAK,CAAC0F,OAAO,CAAC,GAAG;EAChC;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -14,6 +14,7 @@ Komponen **MonthPicker** adalah komponen pemilih bulan berbasis **React Native**
|
|
|
14
14
|
| `onClose` | `() => void` | `undefined` | Callback yang dipanggil saat pengguna menekan tombol **Batal** atau menutup **BottomSheet**. |
|
|
15
15
|
| `onChange` | `(value: number[] \| { startDate: number \| null; endDate: number \| null }) => void` | `undefined` | Callback yang dipanggil ketika pengguna menekan tombol **Pilih**. Parameter yang dikirim tergantung pada `mode`. |
|
|
16
16
|
| `mode` | `'single' \| 'range' \| 'multiple'` | `'single'` | Menentukan cara pemilihan bulan. |
|
|
17
|
+
| `value` | `number[] \| { startDate: number \| null; endDate: number \| null }` | `undefined` | Pilihan yang ditandai saat sheet dibuka. Bentuknya sama persis dengan yang dilaporkan `onChange`, jadi nilai dari `onChange` bisa langsung dikembalikan ke sini. Jika tidak diisi, picker hanya mengingat pilihan dari tap-nya sendiri. |
|
|
17
18
|
| `testID` | `string` | `undefined` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-sheet`, `-cancel`, `-confirm`, dan `-option-{value}` untuk tiap bulan. |
|
|
18
19
|
|
|
19
20
|
### Bentuk *value* yang Dikirim oleh `onChange`
|
|
@@ -18,6 +18,7 @@ Semua outputnya dibungkus dalam komponen **BottomSheet** untuk konsistensi UI.
|
|
|
18
18
|
| `onClose` | `() => void` | `-` | Dipanggil saat pengguna menutup picker atau menekan **Batal**. |
|
|
19
19
|
| `onChange` | `(value: number[] \| { startDate: number \| null; endDate: number \| null }) => void` | `-` | Dipanggil setelah pengguna menekan **Pilih**. Bentuk *value* bergantung pada `mode`. |
|
|
20
20
|
| `mode` | `'single' \| 'range' \| 'multiple'` | `'single'` | Menentukan mode pemilihan. |
|
|
21
|
+
| `value` | `number[] \| { startDate: number \| null; endDate: number \| null }` | `-` | Pilihan yang ditandai saat sheet dibuka; halaman ikut berpindah ke tahun tersebut. Bentuknya sama persis dengan yang dilaporkan `onChange`. Jika tidak diisi, picker hanya mengingat pilihan dari tap-nya sendiri. |
|
|
21
22
|
| `testID` | `string` | `-` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-sheet`, `-cancel`, `-confirm`, dan `-option-{year}` untuk tiap tahun. |
|
|
22
23
|
|
|
23
24
|
### Bentuk *value* `onChange`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useState, useCallback, useMemo } from 'react';
|
|
3
|
+
import { useState, useCallback, useMemo, useEffect } from 'react';
|
|
4
4
|
import { View, FlatList, StyleSheet, TouchableOpacity } from 'react-native';
|
|
5
5
|
import BottomSheet from "../BottomSheet/BottomSheet.js";
|
|
6
6
|
import Typography from "../Typography/Typography.js";
|
|
@@ -14,6 +14,7 @@ export default function YearPicker({
|
|
|
14
14
|
onClose,
|
|
15
15
|
onChange,
|
|
16
16
|
mode = 'single',
|
|
17
|
+
value,
|
|
17
18
|
title = 'Pilih Tahun',
|
|
18
19
|
cancelLabel = 'Batal',
|
|
19
20
|
confirmLabel = 'Pilih',
|
|
@@ -43,6 +44,41 @@ export default function YearPicker({
|
|
|
43
44
|
const start = pageIndex * pageSize;
|
|
44
45
|
return years.slice(start, start + pageSize);
|
|
45
46
|
}, [years, pageIndex]);
|
|
47
|
+
|
|
48
|
+
// Compared as a string, not by reference: a parent that rebuilds the value
|
|
49
|
+
// object on every render would otherwise wipe a selection mid-sheet.
|
|
50
|
+
const valueKey = JSON.stringify(value ?? null);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
const incoming = JSON.parse(valueKey);
|
|
53
|
+
|
|
54
|
+
// No value at all means uncontrolled -- the sheet's own state is the
|
|
55
|
+
// only record of the selection, so don't touch it.
|
|
56
|
+
if (!isOpen || incoming === null) return;
|
|
57
|
+
|
|
58
|
+
// The year the sheet should be looking at: a lone selection, or the start
|
|
59
|
+
// of a range. Years run 121 deep across pages, so without this the sheet
|
|
60
|
+
// opens on the current year and the highlight is off-screen.
|
|
61
|
+
let anchor;
|
|
62
|
+
if (Array.isArray(incoming)) {
|
|
63
|
+
setSingleValue(incoming[0] ?? null);
|
|
64
|
+
setMultipleValue(incoming);
|
|
65
|
+
setRangeValue({
|
|
66
|
+
startDate: null,
|
|
67
|
+
endDate: null
|
|
68
|
+
});
|
|
69
|
+
anchor = incoming[0] ?? null;
|
|
70
|
+
} else {
|
|
71
|
+
setSingleValue(null);
|
|
72
|
+
setMultipleValue([]);
|
|
73
|
+
setRangeValue({
|
|
74
|
+
startDate: incoming.startDate ?? null,
|
|
75
|
+
endDate: incoming.endDate ?? null
|
|
76
|
+
});
|
|
77
|
+
anchor = incoming.startDate ?? null;
|
|
78
|
+
}
|
|
79
|
+
const anchorIndex = anchor === null ? -1 : years.indexOf(anchor);
|
|
80
|
+
if (anchorIndex !== -1) setPageIndex(Math.floor(anchorIndex / pageSize));
|
|
81
|
+
}, [isOpen, valueKey, years]);
|
|
46
82
|
const handleSelectYear = useCallback(year => {
|
|
47
83
|
if (mode === 'single') {
|
|
48
84
|
setSingleValue(year);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useCallback","useMemo","View","FlatList","StyleSheet","TouchableOpacity","BottomSheet","Typography","Button","Color","Icon","getTestID","jsx","_jsx","jsxs","_jsxs","YearPicker","isOpen","onClose","onChange","mode","title","cancelLabel","confirmLabel","testID","currentYear","Date","getFullYear","pageSize","rangeValue","setRangeValue","startDate","endDate","multipleValue","setMultipleValue","singleValue","setSingleValue","years","start","total","Array","from","length","_","i","initialPageIndex","index","findIndex","y","Math","floor","pageIndex","setPageIndex","pageYears","slice","handleSelectYear","year","prev","includes","filter","isSelected","handleSubmit","footer","style","styles","containerBottomSheetFooter","children","flex1","variant","size","color","onPress","header","buttonNav","max","disabled","name","base","white100","weight","gray","container","data","numColumns","keyExtractor","item","toString","contentContainerStyle","yearList","renderItem","selected","yearItem","option","optionSelected","center","create","gap","paddingBottom","width","margin","pagination","marginTop","flexDirection","justifyContent","alignItems","marginBottom","backgroundColor","borderRadius","padding","flex","paddingVertical","paddingHorizontal","borderWidth","borderColor","primary"],"sourceRoot":"../../../src","sources":["DatePicker/YearPicker.tsx"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"names":["useState","useCallback","useMemo","useEffect","View","FlatList","StyleSheet","TouchableOpacity","BottomSheet","Typography","Button","Color","Icon","getTestID","jsx","_jsx","jsxs","_jsxs","YearPicker","isOpen","onClose","onChange","mode","value","title","cancelLabel","confirmLabel","testID","currentYear","Date","getFullYear","pageSize","rangeValue","setRangeValue","startDate","endDate","multipleValue","setMultipleValue","singleValue","setSingleValue","years","start","total","Array","from","length","_","i","initialPageIndex","index","findIndex","y","Math","floor","pageIndex","setPageIndex","pageYears","slice","valueKey","JSON","stringify","incoming","parse","anchor","isArray","anchorIndex","indexOf","handleSelectYear","year","prev","includes","filter","isSelected","handleSubmit","footer","style","styles","containerBottomSheetFooter","children","flex1","variant","size","color","onPress","header","buttonNav","max","disabled","name","base","white100","weight","gray","container","data","numColumns","keyExtractor","item","toString","contentContainerStyle","yearList","renderItem","selected","yearItem","option","optionSelected","center","create","gap","paddingBottom","width","margin","pagination","marginTop","flexDirection","justifyContent","alignItems","marginBottom","backgroundColor","borderRadius","padding","flex","paddingVertical","paddingHorizontal","borderWidth","borderColor","primary"],"sourceRoot":"../../../src","sources":["DatePicker/YearPicker.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -28,6 +28,12 @@ const monthLabel = (month, language) => month === null || month === undefined ||
|
|
|
28
28
|
language
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Back to the 0-based index MonthPicker indexes its options by. Anything
|
|
34
|
+
* outside 1-12 maps to nothing, matching what the field renders.
|
|
35
|
+
*/
|
|
36
|
+
const zeroBased = month => month === null || month === undefined || month < 1 || month > 12 ? null : month - 1;
|
|
31
37
|
export default function InputMonth({
|
|
32
38
|
label,
|
|
33
39
|
placeholder,
|
|
@@ -52,6 +58,14 @@ export default function InputMonth({
|
|
|
52
58
|
// shows whatever was last picked.
|
|
53
59
|
const start = value ?? (mode === 'range' ? selected.startValue : selected.value); // prettier-ignore
|
|
54
60
|
const end = valueEnd ?? selected.endValue;
|
|
61
|
+
|
|
62
|
+
// What the sheet should open on. Without this the picker only knows about
|
|
63
|
+
// taps it saw itself, so a value coming from a prop -- or a clear -- would
|
|
64
|
+
// show in the field but leave the sheet blank.
|
|
65
|
+
const pickerValue = mode === 'range' ? {
|
|
66
|
+
startDate: zeroBased(start),
|
|
67
|
+
endDate: zeroBased(end)
|
|
68
|
+
} : [zeroBased(start)].filter(m => m !== null);
|
|
55
69
|
const handleOpen = () => {
|
|
56
70
|
setIsOpen(true);
|
|
57
71
|
onSelectClick?.();
|
|
@@ -97,6 +111,7 @@ export default function InputMonth({
|
|
|
97
111
|
testID: testID,
|
|
98
112
|
isOpen: isOpen,
|
|
99
113
|
mode: mode,
|
|
114
|
+
value: pickerValue,
|
|
100
115
|
onClose: handleClose,
|
|
101
116
|
onChange: handleChange,
|
|
102
117
|
...(title ? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","View","MonthPicker","dateFormatter","PickerField","jsx","_jsx","jsxs","_jsxs","EMPTY","value","startValue","endValue","monthLabel","month","language","undefined","date","Date","options","pattern","InputMonth","label","placeholder","placeholderEnd","valueEnd","mode","onSelectClick","onPickerClose","onChange","hasClear","title","cancelLabel","confirmLabel","testID","isOpen","setIsOpen","selected","setSelected","start","end","handleOpen","handleClose","handleChange","picked","oneBased","next","Array","isArray","
|
|
1
|
+
{"version":3,"names":["useState","View","MonthPicker","dateFormatter","PickerField","jsx","_jsx","jsxs","_jsxs","EMPTY","value","startValue","endValue","monthLabel","month","language","undefined","date","Date","options","pattern","zeroBased","InputMonth","label","placeholder","placeholderEnd","valueEnd","mode","onSelectClick","onPickerClose","onChange","hasClear","title","cancelLabel","confirmLabel","testID","isOpen","setIsOpen","selected","setSelected","start","end","pickerValue","startDate","endDate","filter","m","handleOpen","handleClose","handleChange","picked","oneBased","next","Array","isArray","handleClear","children","display","displayEnd","onPress","onClear","onClose"],"sourceRoot":"../../../src","sources":["Input/InputMonth.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -36,6 +36,14 @@ export default function InputYear({
|
|
|
36
36
|
const [selected, setSelected] = useState(EMPTY);
|
|
37
37
|
const start = value ?? (mode === 'range' ? selected.startValue : selected.value); // prettier-ignore
|
|
38
38
|
const end = valueEnd ?? selected.endValue;
|
|
39
|
+
|
|
40
|
+
// What the sheet should open on. Without this the picker only knows about
|
|
41
|
+
// taps it saw itself, so a value coming from a prop -- or a clear -- would
|
|
42
|
+
// show in the field but leave the sheet blank.
|
|
43
|
+
const pickerValue = mode === 'range' ? {
|
|
44
|
+
startDate: start ?? null,
|
|
45
|
+
endDate: end ?? null
|
|
46
|
+
} : [start].filter(y => y !== null && y !== undefined);
|
|
39
47
|
const handleOpen = () => {
|
|
40
48
|
setIsOpen(true);
|
|
41
49
|
onSelectClick?.();
|
|
@@ -77,6 +85,7 @@ export default function InputYear({
|
|
|
77
85
|
testID: testID,
|
|
78
86
|
isOpen: isOpen,
|
|
79
87
|
mode: mode,
|
|
88
|
+
value: pickerValue,
|
|
80
89
|
onClose: handleClose,
|
|
81
90
|
onChange: handleChange,
|
|
82
91
|
...(title ? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","View","YearPicker","PickerField","jsx","_jsx","jsxs","_jsxs","EMPTY","value","startValue","endValue","yearLabel","year","undefined","String","InputYear","label","placeholder","placeholderEnd","valueEnd","mode","onSelectClick","onPickerClose","onChange","hasClear","title","cancelLabel","confirmLabel","testID","isOpen","setIsOpen","selected","setSelected","start","end","handleOpen","handleClose","handleChange","picked","next","Array","isArray","
|
|
1
|
+
{"version":3,"names":["useState","View","YearPicker","PickerField","jsx","_jsx","jsxs","_jsxs","EMPTY","value","startValue","endValue","yearLabel","year","undefined","String","InputYear","label","placeholder","placeholderEnd","valueEnd","mode","onSelectClick","onPickerClose","onChange","hasClear","title","cancelLabel","confirmLabel","testID","isOpen","setIsOpen","selected","setSelected","start","end","pickerValue","startDate","endDate","filter","y","handleOpen","handleClose","handleChange","picked","next","Array","isArray","handleClear","children","display","displayEnd","onPress","onClear","onClose"],"sourceRoot":"../../../src","sources":["Input/InputYear.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fontSizeMap","h1","h2","h3","h4","p1","p2","p3","t1","t2","t3","lineHeightMap","fontWeightMap","regular","medium","semibold","bold"],"sourceRoot":"../../../src","sources":["Typography/type.tsx"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["fontSizeMap","h1","h2","h3","h4","p1","p2","p3","t1","t2","t3","lineHeightMap","fontWeightMap","regular","medium","semibold","bold"],"sourceRoot":"../../../src","sources":["Typography/type.tsx"],"mappings":";;AAgBA,OAAO,MAAMA,WAAmD,GAAG;EACjEC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE;AACN,CAAC;AAED,OAAO,MAAMC,aAAqD,GAAG;EACnEV,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE;AACN,CAAC;AAED,OAAO,MAAME,aAAsD,GAAG;EACpEC,OAAO,EAAE,KAAK;EACdC,MAAM,EAAE,KAAK;EACbC,QAAQ,EAAE,KAAK;EACfC,IAAI,EAAE;AACR,CAAC","ignoreList":[]}
|
|
@@ -7,11 +7,20 @@ interface MonthPickerProps {
|
|
|
7
7
|
endDate: number | null;
|
|
8
8
|
}) => void;
|
|
9
9
|
mode?: PickerMode;
|
|
10
|
+
/**
|
|
11
|
+
* The selection to open on, shaped exactly like what `onChange` reports:
|
|
12
|
+
* an array of 0-based months for single/multiple, a pair for range. Leave
|
|
13
|
+
* it out to let the sheet keep whatever it was last given by a tap.
|
|
14
|
+
*/
|
|
15
|
+
value?: number[] | {
|
|
16
|
+
startDate: number | null;
|
|
17
|
+
endDate: number | null;
|
|
18
|
+
};
|
|
10
19
|
title?: string;
|
|
11
20
|
cancelLabel?: string;
|
|
12
21
|
confirmLabel?: string;
|
|
13
22
|
testID?: string;
|
|
14
23
|
}
|
|
15
|
-
export default function MonthPicker({ isOpen, onClose, onChange, mode, cancelLabel, confirmLabel, title, testID, }: MonthPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export default function MonthPicker({ isOpen, onClose, onChange, mode, value, cancelLabel, confirmLabel, title, testID, }: MonthPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
16
25
|
export {};
|
|
17
26
|
//# sourceMappingURL=MonthPicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonthPicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker/MonthPicker.tsx"],"names":[],"mappings":"AASA,KAAK,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAElD,UAAU,gBAAgB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CACT,KAAK,EAAE,MAAM,EAAE,GAAG;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KACnE,IAAI,CAAC;IACV,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,OAAO,EACP,QAAQ,EACR,IAAe,EACf,WAAqB,EACrB,YAAsB,EACtB,KAAqB,EACrB,MAAM,GACP,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"MonthPicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker/MonthPicker.tsx"],"names":[],"mappings":"AASA,KAAK,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAElD,UAAU,gBAAgB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CACT,KAAK,EAAE,MAAM,EAAE,GAAG;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KACnE,IAAI,CAAC;IACV,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,OAAO,EACP,QAAQ,EACR,IAAe,EACf,KAAK,EACL,WAAqB,EACrB,YAAsB,EACtB,KAAqB,EACrB,MAAM,GACP,EAAE,gBAAgB,2CAgKlB"}
|
|
@@ -7,11 +7,20 @@ interface YearPickerProps {
|
|
|
7
7
|
endDate: number | null;
|
|
8
8
|
}) => void;
|
|
9
9
|
mode?: PickerMode;
|
|
10
|
+
/**
|
|
11
|
+
* The selection to open on, shaped exactly like what `onChange` reports:
|
|
12
|
+
* an array of years for single/multiple, a pair for range. Leave it out to
|
|
13
|
+
* let the sheet keep whatever it was last given by a tap.
|
|
14
|
+
*/
|
|
15
|
+
value?: number[] | {
|
|
16
|
+
startDate: number | null;
|
|
17
|
+
endDate: number | null;
|
|
18
|
+
};
|
|
10
19
|
title?: string;
|
|
11
20
|
cancelLabel?: string;
|
|
12
21
|
confirmLabel?: string;
|
|
13
22
|
testID?: string;
|
|
14
23
|
}
|
|
15
|
-
export default function YearPicker({ isOpen, onClose, onChange, mode, title, cancelLabel, confirmLabel, testID, }: YearPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export default function YearPicker({ isOpen, onClose, onChange, mode, value, title, cancelLabel, confirmLabel, testID, }: YearPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
16
25
|
export {};
|
|
17
26
|
//# sourceMappingURL=YearPicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YearPicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker/YearPicker.tsx"],"names":[],"mappings":"AASA,KAAK,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAElD,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CACT,KAAK,EAAE,MAAM,EAAE,GAAG;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KACnE,IAAI,CAAC;IACV,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,MAAM,EACN,OAAO,EACP,QAAQ,EACR,IAAe,EACf,KAAqB,EACrB,WAAqB,EACrB,YAAsB,EACtB,MAAM,GACP,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"YearPicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker/YearPicker.tsx"],"names":[],"mappings":"AASA,KAAK,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAElD,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CACT,KAAK,EAAE,MAAM,EAAE,GAAG;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KACnE,IAAI,CAAC;IACV,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,MAAM,EACN,OAAO,EACP,QAAQ,EACR,IAAe,EACf,KAAK,EACL,KAAqB,EACrB,WAAqB,EACrB,YAAsB,EACtB,MAAM,GACP,EAAE,eAAe,2CAyMjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputMonth.d.ts","sourceRoot":"","sources":["../../../../src/Input/InputMonth.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE/C,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,eAAe,GAAG,SAAS,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB,CAAC;AAEF,KAAK,cAAc,GAAG,SAAS,GAAG;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"InputMonth.d.ts","sourceRoot":"","sources":["../../../../src/Input/InputMonth.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE/C,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,eAAe,GAAG,SAAS,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB,CAAC;AAEF,KAAK,cAAc,GAAG,SAAS,GAAG;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,cAAc,CAAC;AAqC/D,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,KAAK,EACL,WAAW,EACX,cAAc,EACd,KAAK,EACL,QAAQ,EACR,IAAe,EACf,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,WAAW,EACX,YAAY,EACZ,MAAM,GACP,EAAE,eAAe,2CAiFjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputYear.d.ts","sourceRoot":"","sources":["../../../../src/Input/InputYear.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE/C,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,eAAe,GAAG,SAAS,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB,CAAC;AAEF,KAAK,cAAc,GAAG,SAAS,GAAG;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,cAAc,CAAC;AAW9D;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,KAAK,EACL,WAAW,EACX,cAAc,EACd,KAAK,EACL,QAAQ,EACR,IAAe,EACf,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,WAAW,EACX,YAAY,EACZ,MAAM,GACP,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"InputYear.d.ts","sourceRoot":"","sources":["../../../../src/Input/InputYear.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE/C,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,eAAe,GAAG,SAAS,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB,CAAC;AAEF,KAAK,cAAc,GAAG,SAAS,GAAG;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,cAAc,CAAC;AAW9D;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,KAAK,EACL,WAAW,EACX,cAAc,EACd,KAAK,EACL,QAAQ,EACR,IAAe,EACf,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,WAAW,EACX,YAAY,EACZ,MAAM,GACP,EAAE,cAAc,2CAqEhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/Typography/type.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/Typography/type.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,MAAM,sBAAsB,GAC9B,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAET,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEhE,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAW9D,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAWhE,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAKjE,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useState, useCallback } from 'react';
|
|
1
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
2
2
|
import { View, FlatList, StyleSheet, TouchableOpacity } from 'react-native';
|
|
3
3
|
import BottomSheet from '../BottomSheet/BottomSheet';
|
|
4
4
|
import Typography from '../Typography/Typography';
|
|
@@ -16,6 +16,12 @@ interface MonthPickerProps {
|
|
|
16
16
|
value: number[] | { startDate: number | null; endDate: number | null }
|
|
17
17
|
) => void;
|
|
18
18
|
mode?: PickerMode;
|
|
19
|
+
/**
|
|
20
|
+
* The selection to open on, shaped exactly like what `onChange` reports:
|
|
21
|
+
* an array of 0-based months for single/multiple, a pair for range. Leave
|
|
22
|
+
* it out to let the sheet keep whatever it was last given by a tap.
|
|
23
|
+
*/
|
|
24
|
+
value?: number[] | { startDate: number | null; endDate: number | null };
|
|
19
25
|
title?: string;
|
|
20
26
|
cancelLabel?: string;
|
|
21
27
|
confirmLabel?: string;
|
|
@@ -27,6 +33,7 @@ export default function MonthPicker({
|
|
|
27
33
|
onClose,
|
|
28
34
|
onChange,
|
|
29
35
|
mode = 'single',
|
|
36
|
+
value,
|
|
30
37
|
cancelLabel = 'Batal',
|
|
31
38
|
confirmLabel = 'pilih',
|
|
32
39
|
title = 'Pilih Bulan',
|
|
@@ -39,6 +46,31 @@ export default function MonthPicker({
|
|
|
39
46
|
const [multipleValue, setMultipleValue] = useState<number[]>([]);
|
|
40
47
|
const [singleValue, setSingleValue] = useState<number | null>(null);
|
|
41
48
|
|
|
49
|
+
// Compared as a string, not by reference: a parent that rebuilds the value
|
|
50
|
+
// object on every render would otherwise wipe a selection mid-sheet.
|
|
51
|
+
const valueKey = JSON.stringify(value ?? null);
|
|
52
|
+
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
const incoming = JSON.parse(valueKey);
|
|
55
|
+
|
|
56
|
+
// No value at all means uncontrolled -- the sheet's own state is the
|
|
57
|
+
// only record of the selection, so don't touch it.
|
|
58
|
+
if (!isOpen || incoming === null) return;
|
|
59
|
+
|
|
60
|
+
if (Array.isArray(incoming)) {
|
|
61
|
+
setSingleValue(incoming[0] ?? null);
|
|
62
|
+
setMultipleValue(incoming);
|
|
63
|
+
setRangeValue({ startDate: null, endDate: null });
|
|
64
|
+
} else {
|
|
65
|
+
setSingleValue(null);
|
|
66
|
+
setMultipleValue([]);
|
|
67
|
+
setRangeValue({
|
|
68
|
+
startDate: incoming.startDate ?? null,
|
|
69
|
+
endDate: incoming.endDate ?? null,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}, [isOpen, valueKey]);
|
|
73
|
+
|
|
42
74
|
const handleSelectMonth = useCallback(
|
|
43
75
|
(month: number) => {
|
|
44
76
|
if (mode === 'single') {
|
|
@@ -14,6 +14,7 @@ Komponen **MonthPicker** adalah komponen pemilih bulan berbasis **React Native**
|
|
|
14
14
|
| `onClose` | `() => void` | `undefined` | Callback yang dipanggil saat pengguna menekan tombol **Batal** atau menutup **BottomSheet**. |
|
|
15
15
|
| `onChange` | `(value: number[] \| { startDate: number \| null; endDate: number \| null }) => void` | `undefined` | Callback yang dipanggil ketika pengguna menekan tombol **Pilih**. Parameter yang dikirim tergantung pada `mode`. |
|
|
16
16
|
| `mode` | `'single' \| 'range' \| 'multiple'` | `'single'` | Menentukan cara pemilihan bulan. |
|
|
17
|
+
| `value` | `number[] \| { startDate: number \| null; endDate: number \| null }` | `undefined` | Pilihan yang ditandai saat sheet dibuka. Bentuknya sama persis dengan yang dilaporkan `onChange`, jadi nilai dari `onChange` bisa langsung dikembalikan ke sini. Jika tidak diisi, picker hanya mengingat pilihan dari tap-nya sendiri. |
|
|
17
18
|
| `testID` | `string` | `undefined` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-sheet`, `-cancel`, `-confirm`, dan `-option-{value}` untuk tiap bulan. |
|
|
18
19
|
|
|
19
20
|
### Bentuk *value* yang Dikirim oleh `onChange`
|
|
@@ -18,6 +18,7 @@ Semua outputnya dibungkus dalam komponen **BottomSheet** untuk konsistensi UI.
|
|
|
18
18
|
| `onClose` | `() => void` | `-` | Dipanggil saat pengguna menutup picker atau menekan **Batal**. |
|
|
19
19
|
| `onChange` | `(value: number[] \| { startDate: number \| null; endDate: number \| null }) => void` | `-` | Dipanggil setelah pengguna menekan **Pilih**. Bentuk *value* bergantung pada `mode`. |
|
|
20
20
|
| `mode` | `'single' \| 'range' \| 'multiple'` | `'single'` | Menentukan mode pemilihan. |
|
|
21
|
+
| `value` | `number[] \| { startDate: number \| null; endDate: number \| null }` | `-` | Pilihan yang ditandai saat sheet dibuka; halaman ikut berpindah ke tahun tersebut. Bentuknya sama persis dengan yang dilaporkan `onChange`. Jika tidak diisi, picker hanya mengingat pilihan dari tap-nya sendiri. |
|
|
21
22
|
| `testID` | `string` | `-` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-sheet`, `-cancel`, `-confirm`, dan `-option-{year}` untuk tiap tahun. |
|
|
22
23
|
|
|
23
24
|
### Bentuk *value* `onChange`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useState, useCallback, useMemo } from 'react';
|
|
1
|
+
import { useState, useCallback, useMemo, useEffect } from 'react';
|
|
2
2
|
import { View, FlatList, StyleSheet, TouchableOpacity } from 'react-native';
|
|
3
3
|
import BottomSheet from '../BottomSheet/BottomSheet';
|
|
4
4
|
import Typography from '../Typography/Typography';
|
|
@@ -16,6 +16,12 @@ interface YearPickerProps {
|
|
|
16
16
|
value: number[] | { startDate: number | null; endDate: number | null }
|
|
17
17
|
) => void;
|
|
18
18
|
mode?: PickerMode;
|
|
19
|
+
/**
|
|
20
|
+
* The selection to open on, shaped exactly like what `onChange` reports:
|
|
21
|
+
* an array of years for single/multiple, a pair for range. Leave it out to
|
|
22
|
+
* let the sheet keep whatever it was last given by a tap.
|
|
23
|
+
*/
|
|
24
|
+
value?: number[] | { startDate: number | null; endDate: number | null };
|
|
19
25
|
title?: string;
|
|
20
26
|
cancelLabel?: string;
|
|
21
27
|
confirmLabel?: string;
|
|
@@ -27,6 +33,7 @@ export default function YearPicker({
|
|
|
27
33
|
onClose,
|
|
28
34
|
onChange,
|
|
29
35
|
mode = 'single',
|
|
36
|
+
value,
|
|
30
37
|
title = 'Pilih Tahun',
|
|
31
38
|
cancelLabel = 'Batal',
|
|
32
39
|
confirmLabel = 'Pilih',
|
|
@@ -59,6 +66,41 @@ export default function YearPicker({
|
|
|
59
66
|
return years.slice(start, start + pageSize);
|
|
60
67
|
}, [years, pageIndex]);
|
|
61
68
|
|
|
69
|
+
// Compared as a string, not by reference: a parent that rebuilds the value
|
|
70
|
+
// object on every render would otherwise wipe a selection mid-sheet.
|
|
71
|
+
const valueKey = JSON.stringify(value ?? null);
|
|
72
|
+
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
const incoming = JSON.parse(valueKey);
|
|
75
|
+
|
|
76
|
+
// No value at all means uncontrolled -- the sheet's own state is the
|
|
77
|
+
// only record of the selection, so don't touch it.
|
|
78
|
+
if (!isOpen || incoming === null) return;
|
|
79
|
+
|
|
80
|
+
// The year the sheet should be looking at: a lone selection, or the start
|
|
81
|
+
// of a range. Years run 121 deep across pages, so without this the sheet
|
|
82
|
+
// opens on the current year and the highlight is off-screen.
|
|
83
|
+
let anchor: number | null;
|
|
84
|
+
|
|
85
|
+
if (Array.isArray(incoming)) {
|
|
86
|
+
setSingleValue(incoming[0] ?? null);
|
|
87
|
+
setMultipleValue(incoming);
|
|
88
|
+
setRangeValue({ startDate: null, endDate: null });
|
|
89
|
+
anchor = incoming[0] ?? null;
|
|
90
|
+
} else {
|
|
91
|
+
setSingleValue(null);
|
|
92
|
+
setMultipleValue([]);
|
|
93
|
+
setRangeValue({
|
|
94
|
+
startDate: incoming.startDate ?? null,
|
|
95
|
+
endDate: incoming.endDate ?? null,
|
|
96
|
+
});
|
|
97
|
+
anchor = incoming.startDate ?? null;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const anchorIndex = anchor === null ? -1 : years.indexOf(anchor);
|
|
101
|
+
if (anchorIndex !== -1) setPageIndex(Math.floor(anchorIndex / pageSize));
|
|
102
|
+
}, [isOpen, valueKey, years]);
|
|
103
|
+
|
|
62
104
|
const handleSelectYear = useCallback(
|
|
63
105
|
(year: number) => {
|
|
64
106
|
if (mode === 'single') {
|
package/src/Input/InputMonth.tsx
CHANGED
|
@@ -61,6 +61,15 @@ const monthLabel = (
|
|
|
61
61
|
options: { pattern: 'MMMM', language },
|
|
62
62
|
});
|
|
63
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Back to the 0-based index MonthPicker indexes its options by. Anything
|
|
66
|
+
* outside 1-12 maps to nothing, matching what the field renders.
|
|
67
|
+
*/
|
|
68
|
+
const zeroBased = (month: number | null | undefined) =>
|
|
69
|
+
month === null || month === undefined || month < 1 || month > 12
|
|
70
|
+
? null
|
|
71
|
+
: month - 1;
|
|
72
|
+
|
|
64
73
|
export default function InputMonth({
|
|
65
74
|
label,
|
|
66
75
|
placeholder,
|
|
@@ -86,6 +95,14 @@ export default function InputMonth({
|
|
|
86
95
|
const start = value ?? (mode === 'range' ? selected.startValue : selected.value); // prettier-ignore
|
|
87
96
|
const end = valueEnd ?? selected.endValue;
|
|
88
97
|
|
|
98
|
+
// What the sheet should open on. Without this the picker only knows about
|
|
99
|
+
// taps it saw itself, so a value coming from a prop -- or a clear -- would
|
|
100
|
+
// show in the field but leave the sheet blank.
|
|
101
|
+
const pickerValue =
|
|
102
|
+
mode === 'range'
|
|
103
|
+
? { startDate: zeroBased(start), endDate: zeroBased(end) }
|
|
104
|
+
: ([zeroBased(start)].filter((m) => m !== null) as number[]);
|
|
105
|
+
|
|
89
106
|
const handleOpen = () => {
|
|
90
107
|
setIsOpen(true);
|
|
91
108
|
onSelectClick?.();
|
|
@@ -141,6 +158,7 @@ export default function InputMonth({
|
|
|
141
158
|
testID={testID}
|
|
142
159
|
isOpen={isOpen}
|
|
143
160
|
mode={mode}
|
|
161
|
+
value={pickerValue}
|
|
144
162
|
onClose={handleClose}
|
|
145
163
|
onChange={handleChange}
|
|
146
164
|
{...(title ? { title } : {})}
|
package/src/Input/InputYear.tsx
CHANGED
|
@@ -69,6 +69,14 @@ export default function InputYear({
|
|
|
69
69
|
const start = value ?? (mode === 'range' ? selected.startValue : selected.value); // prettier-ignore
|
|
70
70
|
const end = valueEnd ?? selected.endValue;
|
|
71
71
|
|
|
72
|
+
// What the sheet should open on. Without this the picker only knows about
|
|
73
|
+
// taps it saw itself, so a value coming from a prop -- or a clear -- would
|
|
74
|
+
// show in the field but leave the sheet blank.
|
|
75
|
+
const pickerValue =
|
|
76
|
+
mode === 'range'
|
|
77
|
+
? { startDate: start ?? null, endDate: end ?? null }
|
|
78
|
+
: ([start].filter((y) => y !== null && y !== undefined) as number[]);
|
|
79
|
+
|
|
72
80
|
const handleOpen = () => {
|
|
73
81
|
setIsOpen(true);
|
|
74
82
|
onSelectClick?.();
|
|
@@ -114,6 +122,7 @@ export default function InputYear({
|
|
|
114
122
|
testID={testID}
|
|
115
123
|
isOpen={isOpen}
|
|
116
124
|
mode={mode}
|
|
125
|
+
value={pickerValue}
|
|
117
126
|
onClose={handleClose}
|
|
118
127
|
onChange={handleChange}
|
|
119
128
|
{...(title ? { title } : {})}
|
package/src/Typography/type.tsx
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import type { ColorValue, StyleProp, TextStyle } from 'react-native';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export type TypographyVariantProps =
|
|
4
|
-
|
|
4
|
+
| 'h1'
|
|
5
|
+
| 'h2'
|
|
6
|
+
| 'h3'
|
|
7
|
+
| 'h4'
|
|
8
|
+
| 'p1'
|
|
9
|
+
| 'p2'
|
|
10
|
+
| 'p3'
|
|
11
|
+
| 't1'
|
|
12
|
+
| 't2'
|
|
13
|
+
| 't3';
|
|
5
14
|
|
|
6
15
|
export type Weight = 'regular' | 'medium' | 'semibold' | 'bold';
|
|
7
16
|
|