@impulse-ui-native/datetime 2.1.1 → 2.1.3
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/dist/components/time/time-picker.js +1 -1
- package/dist/components/time/time-picker.js.map +1 -1
- package/dist/hooks/use-datetime-picker.hook.js +1 -1
- package/dist/hooks/use-datetime-picker.hook.js.map +1 -1
- package/dist/hooks/use-datetime-range-picker.hook.js +1 -1
- package/dist/hooks/use-datetime-range-picker.hook.js.map +1 -1
- package/package.json +10 -10
|
@@ -25,13 +25,13 @@ const TimePicker = memo(function TimePicker2(props) {
|
|
|
25
25
|
onPressSuffix: onSuffixPress
|
|
26
26
|
} = props;
|
|
27
27
|
const id = useId();
|
|
28
|
-
const { isOpen, isClosed, finishClose, open, close } = useIsOpen();
|
|
29
28
|
const [selected, setSelected] = useControllableState({
|
|
30
29
|
prop: value,
|
|
31
30
|
defaultProp: defaultValue ?? null,
|
|
32
31
|
onChange
|
|
33
32
|
});
|
|
34
33
|
const [tempTime, setTempTime] = useState(selected);
|
|
34
|
+
const { isOpen, isClosed, finishClose, open, close } = useIsOpen();
|
|
35
35
|
const onPressOpen = useCallback(() => {
|
|
36
36
|
setTempTime(selected);
|
|
37
37
|
open();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/time/time-picker.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useId, useState } from \"react\";\n\nimport { useControllableState, useIsOpen } from \"@impulse-ui-native/core\";\nimport { ClockIcon } from \"@impulse-ui-native/icon/icons/clock\";\nimport { Control, Pressable } from \"@impulse-ui-native/primitives\";\n\nimport { DatetimePickerCommonProps, TimePickerValue } from \"../../types\";\nimport { formatTimepickerValue } from \"../../utils\";\nimport { TimePickerFlyout } from \"./time-picker.flyout\";\n\ninterface TimePickerProps extends DatetimePickerCommonProps {\n value?: TimePickerValue | null;\n defaultValue?: TimePickerValue | null;\n onChange?: (value: TimePickerValue | null) => void;\n}\n\nexport const TimePicker = memo(function TimePicker(props: TimePickerProps) {\n const {\n value,\n defaultValue,\n placeholder,\n clearable = true,\n size = \"medium\",\n onChange,\n variant = \"outlined\",\n label,\n error,\n disabled,\n PrefixIcon = ClockIcon,\n Prefix,\n onPressPrefix: onPrefixPress,\n SuffixIcon,\n Suffix,\n onPressSuffix: onSuffixPress,\n } = props;\n\n const id = useId();\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/time/time-picker.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useId, useState } from \"react\";\n\nimport { useControllableState, useIsOpen } from \"@impulse-ui-native/core\";\nimport { ClockIcon } from \"@impulse-ui-native/icon/icons/clock\";\nimport { Control, Pressable } from \"@impulse-ui-native/primitives\";\n\nimport { DatetimePickerCommonProps, TimePickerValue } from \"../../types\";\nimport { formatTimepickerValue } from \"../../utils\";\nimport { TimePickerFlyout } from \"./time-picker.flyout\";\n\ninterface TimePickerProps extends DatetimePickerCommonProps {\n value?: TimePickerValue | null;\n defaultValue?: TimePickerValue | null;\n onChange?: (value: TimePickerValue | null) => void;\n}\n\nexport const TimePicker = memo(function TimePicker(props: TimePickerProps) {\n const {\n value,\n defaultValue,\n placeholder,\n clearable = true,\n size = \"medium\",\n onChange,\n variant = \"outlined\",\n label,\n error,\n disabled,\n PrefixIcon = ClockIcon,\n Prefix,\n onPressPrefix: onPrefixPress,\n SuffixIcon,\n Suffix,\n onPressSuffix: onSuffixPress,\n } = props;\n\n const id = useId();\n\n const [selected, setSelected] = useControllableState<TimePickerValue | null>({\n prop: value,\n defaultProp: defaultValue ?? null,\n onChange,\n });\n\n const [tempTime, setTempTime] = useState<TimePickerValue | null>(selected);\n const { isOpen, isClosed, finishClose, open, close } = useIsOpen();\n\n const onPressOpen = useCallback(() => {\n setTempTime(selected);\n open();\n }, [open, selected]);\n\n const onPressApply = useCallback(() => {\n setSelected(tempTime);\n close();\n }, [tempTime, close]);\n\n const onPressClear = useCallback(() => {\n setTempTime(null);\n }, []);\n\n const syncState = useCallback(() => {\n setTempTime(selected);\n }, [selected]);\n\n const onCloseFinished = useCallback(() => {\n syncState();\n finishClose();\n }, [syncState, finishClose]);\n\n useEffect(() => {\n if (!isOpen && isClosed) {\n setTempTime(selected);\n }\n }, [isOpen, selected, isClosed]);\n\n return (\n <Control.Provider\n size={size}\n variant={variant}\n error={error}\n disabled={disabled}\n >\n <Control.Root>\n <Control.Label>{label}</Control.Label>\n <Pressable onPress={onPressOpen}>\n <Control.Container>\n <Control.Addon\n icon={PrefixIcon}\n Content={Prefix}\n onPress={onPrefixPress}\n />\n\n {selected === null && placeholder ? (\n <Control.Placeholder>{placeholder}</Control.Placeholder>\n ) : null}\n\n {selected !== null ? (\n <Control.Value>{formatTimepickerValue(selected)}</Control.Value>\n ) : null}\n\n <TimePickerFlyout\n id={id}\n title=\"Time\"\n open={isOpen}\n value={tempTime}\n clearable={clearable}\n onClose={close}\n onCloseFinished={onCloseFinished}\n onChange={setTempTime}\n onPressApply={onPressApply}\n onPressClear={onPressClear}\n onPressCancel={close}\n />\n\n <Control.Addon\n icon={SuffixIcon}\n Content={Suffix}\n onPress={onSuffixPress}\n />\n </Control.Container>\n </Pressable>\n <Control.Error />\n </Control.Root>\n </Control.Provider>\n );\n});\n"],"mappings":"AAoFQ,cAEE,YAFF;AApFR,SAAS,MAAM,aAAa,WAAW,OAAO,gBAAgB;AAE9D,SAAS,sBAAsB,iBAAiB;AAChD,SAAS,iBAAiB;AAC1B,SAAS,SAAS,iBAAiB;AAGnC,SAAS,6BAA6B;AACtC,SAAS,wBAAwB;AAQ1B,MAAM,aAAa,KAAK,SAASA,YAAW,OAAwB;AACzE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,eAAe;AAAA,EACjB,IAAI;AAEJ,QAAM,KAAK,MAAM;AAEjB,QAAM,CAAC,UAAU,WAAW,IAAI,qBAA6C;AAAA,IAC3E,MAAM;AAAA,IACN,aAAa,gBAAgB;AAAA,IAC7B;AAAA,EACF,CAAC;AAED,QAAM,CAAC,UAAU,WAAW,IAAI,SAAiC,QAAQ;AACzE,QAAM,EAAE,QAAQ,UAAU,aAAa,MAAM,MAAM,IAAI,UAAU;AAEjE,QAAM,cAAc,YAAY,MAAM;AACpC,gBAAY,QAAQ;AACpB,SAAK;AAAA,EACP,GAAG,CAAC,MAAM,QAAQ,CAAC;AAEnB,QAAM,eAAe,YAAY,MAAM;AACrC,gBAAY,QAAQ;AACpB,UAAM;AAAA,EACR,GAAG,CAAC,UAAU,KAAK,CAAC;AAEpB,QAAM,eAAe,YAAY,MAAM;AACrC,gBAAY,IAAI;AAAA,EAClB,GAAG,CAAC,CAAC;AAEL,QAAM,YAAY,YAAY,MAAM;AAClC,gBAAY,QAAQ;AAAA,EACtB,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,kBAAkB,YAAY,MAAM;AACxC,cAAU;AACV,gBAAY;AAAA,EACd,GAAG,CAAC,WAAW,WAAW,CAAC;AAE3B,YAAU,MAAM;AACd,QAAI,CAAC,UAAU,UAAU;AACvB,kBAAY,QAAQ;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,QAAQ,UAAU,QAAQ,CAAC;AAE/B,SACE;AAAA,IAAC,QAAQ;AAAA,IAAR;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,+BAAC,QAAQ,MAAR,EACC;AAAA,4BAAC,QAAQ,OAAR,EAAe,iBAAM;AAAA,QACtB,oBAAC,aAAU,SAAS,aAClB,+BAAC,QAAQ,WAAR,EACC;AAAA;AAAA,YAAC,QAAQ;AAAA,YAAR;AAAA,cACC,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS;AAAA;AAAA,UACX;AAAA,UAEC,aAAa,QAAQ,cACpB,oBAAC,QAAQ,aAAR,EAAqB,uBAAY,IAChC;AAAA,UAEH,aAAa,OACZ,oBAAC,QAAQ,OAAR,EAAe,gCAAsB,QAAQ,GAAE,IAC9C;AAAA,UAEJ;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,OAAM;AAAA,cACN,MAAM;AAAA,cACN,OAAO;AAAA,cACP;AAAA,cACA,SAAS;AAAA,cACT;AAAA,cACA,UAAU;AAAA,cACV;AAAA,cACA;AAAA,cACA,eAAe;AAAA;AAAA,UACjB;AAAA,UAEA;AAAA,YAAC,QAAQ;AAAA,YAAR;AAAA,cACC,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS;AAAA;AAAA,UACX;AAAA,WACF,GACF;AAAA,QACA,oBAAC,QAAQ,OAAR,EAAc;AAAA,SACjB;AAAA;AAAA,EACF;AAEJ,CAAC;","names":["TimePicker"]}
|
|
@@ -6,6 +6,7 @@ function useDatetimePicker({
|
|
|
6
6
|
defaultValue,
|
|
7
7
|
onChange
|
|
8
8
|
}) {
|
|
9
|
+
const id = useId();
|
|
9
10
|
const [visible, setVisible] = useState(
|
|
10
11
|
value ?? defaultValue ?? /* @__PURE__ */ new Date()
|
|
11
12
|
);
|
|
@@ -17,7 +18,6 @@ function useDatetimePicker({
|
|
|
17
18
|
defaultProp: defaultValue ?? null,
|
|
18
19
|
onChange
|
|
19
20
|
});
|
|
20
|
-
const id = useId();
|
|
21
21
|
const { isOpen, isClosed, open, close } = useIsOpen();
|
|
22
22
|
const onPressOpen = useCallback(() => {
|
|
23
23
|
setTempDate(selected);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/use-datetime-picker.hook.ts"],"sourcesContent":["import { useCallback, useEffect, useId, useState } from \"react\";\n\nimport { useControllableState, useIsOpen } from \"@impulse-ui-native/core\";\n\nimport { TimePickerValue, TimeRange } from \"../types\";\nimport { isDateInMonth, isSameDay } from \"../utils\";\n\ninterface UseDatetimePickerStateOptions {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (value: Date | null) => void;\n}\n\nexport function useDatetimePicker({\n value,\n defaultValue,\n onChange,\n}: UseDatetimePickerStateOptions) {\n const [visible, setVisible] = useState<Date>(\n value ?? defaultValue ?? new Date(),\n );\n\n const [tempDate, setTempDate] = useState<Date | null>(\n value ?? defaultValue ?? null,\n );\n\n const [selected, setSelected] = useControllableState<Date | null>({\n prop: value,\n defaultProp: defaultValue ?? null,\n onChange,\n });\n\n const
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/use-datetime-picker.hook.ts"],"sourcesContent":["import { useCallback, useEffect, useId, useState } from \"react\";\n\nimport { useControllableState, useIsOpen } from \"@impulse-ui-native/core\";\n\nimport { TimePickerValue, TimeRange } from \"../types\";\nimport { isDateInMonth, isSameDay } from \"../utils\";\n\ninterface UseDatetimePickerStateOptions {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (value: Date | null) => void;\n}\n\nexport function useDatetimePicker({\n value,\n defaultValue,\n onChange,\n}: UseDatetimePickerStateOptions) {\n const id = useId();\n\n const [visible, setVisible] = useState<Date>(\n value ?? defaultValue ?? new Date(),\n );\n\n const [tempDate, setTempDate] = useState<Date | null>(\n value ?? defaultValue ?? null,\n );\n\n const [selected, setSelected] = useControllableState<Date | null>({\n prop: value,\n defaultProp: defaultValue ?? null,\n onChange,\n });\n\n const { isOpen, isClosed, open, close } = useIsOpen();\n\n const onPressOpen = useCallback(() => {\n setTempDate(selected);\n open();\n }, [open, selected]);\n\n const syncState = useCallback(() => {\n setTempDate(selected);\n\n if (selected) {\n setVisible(selected);\n }\n }, [selected]);\n\n const onPressApply = useCallback(() => {\n setSelected(tempDate);\n close();\n }, [close, tempDate]);\n\n const onPressCancel = useCallback(() => {\n close();\n }, [close]);\n\n const onPressCalendarDay = useCallback((date: Date) => {\n setTempDate((prev) => {\n if (!prev) {\n return date;\n }\n\n if (isSameDay(date, prev)) {\n return null;\n }\n\n const nextDate = new Date(date);\n\n nextDate.setHours(prev.getHours());\n nextDate.setMinutes(prev.getMinutes());\n nextDate.setSeconds(prev.getSeconds());\n nextDate.setMilliseconds(prev.getMilliseconds());\n\n return nextDate;\n });\n }, []);\n\n const onChangeTime = useCallback(\n (time: TimePickerValue | null) => {\n setTempDate((prev) => {\n const nextDate = new Date(prev ?? visible);\n\n nextDate.setHours(time?.hours ?? 0);\n nextDate.setMinutes(time?.minutes ?? 0);\n nextDate.setSeconds(time?.seconds ?? 0);\n nextDate.setMilliseconds(0);\n\n return nextDate;\n });\n },\n [visible],\n );\n\n const onPressClear = useCallback(() => {\n setTempDate(null);\n }, []);\n\n const onPressQuickDateOption = useCallback(\n (optionValue: Date | TimeRange) => {\n if (!(optionValue instanceof Date)) {\n return;\n }\n\n setTempDate(optionValue);\n\n if (!isDateInMonth(optionValue, visible)) {\n setVisible(optionValue);\n }\n },\n [visible],\n );\n\n useEffect(() => {\n if (!isOpen && isClosed) {\n setTempDate(selected);\n }\n }, [isOpen, selected, isClosed]);\n\n return {\n id,\n isOpen,\n visible,\n tempDate,\n selected,\n setVisible,\n setTempDate,\n setSelected,\n open,\n close,\n onPressOpen,\n onPressApply,\n onPressCancel,\n onPressCalendarDay,\n onChangeTime,\n onPressClear,\n onPressQuickDateOption,\n syncState,\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -14,6 +14,7 @@ function useDatetimeRangePicker({
|
|
|
14
14
|
defaultValue,
|
|
15
15
|
onChange
|
|
16
16
|
}) {
|
|
17
|
+
const id = useId();
|
|
17
18
|
const [visible, setVisible] = useState(
|
|
18
19
|
getInitialVisibleDate(value, defaultValue)
|
|
19
20
|
);
|
|
@@ -25,7 +26,6 @@ function useDatetimeRangePicker({
|
|
|
25
26
|
defaultProp: defaultValue ?? null,
|
|
26
27
|
onChange
|
|
27
28
|
});
|
|
28
|
-
const id = useId();
|
|
29
29
|
const { isOpen, isClosed, open, close } = useIsOpen();
|
|
30
30
|
const onPressOpen = useCallback(() => {
|
|
31
31
|
setTempRange(selected);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/use-datetime-range-picker.hook.ts"],"sourcesContent":["import { useCallback, useEffect, useId, useState } from \"react\";\n\nimport { useControllableState, useIsOpen } from \"@impulse-ui-native/core\";\n\nimport { RangeSide, TimePickerValue, TimeRange } from \"../types\";\nimport {\n applyTime,\n endOfDay,\n getInitialVisibleDate,\n isDateInMonth,\n isSameDay,\n normalizeRange,\n startOfDay,\n} from \"../utils\";\n\ninterface UseDatetimeRangePickerStateOptions {\n value?: TimeRange | null;\n defaultValue?: TimeRange | null;\n onChange?: (value: TimeRange | null) => void;\n}\n\nexport function useDatetimeRangePicker({\n value,\n defaultValue,\n onChange,\n}: UseDatetimeRangePickerStateOptions) {\n const [visible, setVisible] = useState<Date>(\n getInitialVisibleDate(value, defaultValue),\n );\n\n const [tempRange, setTempRange] = useState<TimeRange | null>(\n value ?? defaultValue ?? null,\n );\n\n const [selected, setSelected] = useControllableState<TimeRange | null>({\n prop: value,\n defaultProp: defaultValue ?? null,\n onChange,\n });\n\n const
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/use-datetime-range-picker.hook.ts"],"sourcesContent":["import { useCallback, useEffect, useId, useState } from \"react\";\n\nimport { useControllableState, useIsOpen } from \"@impulse-ui-native/core\";\n\nimport { RangeSide, TimePickerValue, TimeRange } from \"../types\";\nimport {\n applyTime,\n endOfDay,\n getInitialVisibleDate,\n isDateInMonth,\n isSameDay,\n normalizeRange,\n startOfDay,\n} from \"../utils\";\n\ninterface UseDatetimeRangePickerStateOptions {\n value?: TimeRange | null;\n defaultValue?: TimeRange | null;\n onChange?: (value: TimeRange | null) => void;\n}\n\nexport function useDatetimeRangePicker({\n value,\n defaultValue,\n onChange,\n}: UseDatetimeRangePickerStateOptions) {\n const id = useId();\n\n const [visible, setVisible] = useState<Date>(\n getInitialVisibleDate(value, defaultValue),\n );\n\n const [tempRange, setTempRange] = useState<TimeRange | null>(\n value ?? defaultValue ?? null,\n );\n\n const [selected, setSelected] = useControllableState<TimeRange | null>({\n prop: value,\n defaultProp: defaultValue ?? null,\n onChange,\n });\n\n const { isOpen, isClosed, open, close } = useIsOpen();\n\n const onPressOpen = useCallback(() => {\n setTempRange(selected);\n open();\n }, [open, selected]);\n\n const syncState = useCallback(() => {\n setTempRange(selected);\n\n const nextVisible = selected?.start ?? selected?.end;\n\n if (nextVisible) {\n setVisible(nextVisible);\n }\n }, [selected]);\n\n const onPressApply = useCallback(() => {\n setSelected(normalizeRange(tempRange));\n close();\n }, [close, tempRange]);\n\n const onPressCancel = useCallback(() => {\n close();\n }, [close]);\n\n const onPressCalendarDay = useCallback((date: Date) => {\n setTempRange((prev) => {\n const startDate = startOfDay(date);\n const endDate = endOfDay(date);\n\n if (!prev?.start || prev.end) {\n return {\n start: startDate,\n };\n }\n\n if (isSameDay(startDate, prev.start)) {\n return null;\n }\n\n if (startDate < prev.start) {\n return {\n start: startDate,\n end: endOfDay(prev.start),\n };\n }\n\n return {\n start: prev.start,\n end: endDate,\n };\n });\n }, []);\n\n const onChangeStartTime = useCallback(\n (time: TimePickerValue | null) => {\n setTempRange((prev) => {\n const fallbackDate = prev?.start ?? visible;\n\n return normalizeRange({\n start: applyTime(fallbackDate, time),\n end: prev?.end,\n });\n });\n },\n [visible],\n );\n\n const onChangeEndTime = useCallback(\n (time: TimePickerValue | null) => {\n setTempRange((prev) => {\n const fallbackDate = prev?.end ?? prev?.start ?? visible;\n\n return normalizeRange({\n start: prev?.start,\n end: applyTime(fallbackDate, time),\n });\n });\n },\n [visible],\n );\n\n const onChangeTime = useCallback(\n (side: RangeSide, time: TimePickerValue | null) => {\n if (side === \"start\") {\n onChangeStartTime(time);\n return;\n }\n\n onChangeEndTime(time);\n },\n [onChangeEndTime, onChangeStartTime],\n );\n\n const onPressClear = useCallback(() => {\n setTempRange(null);\n }, []);\n\n const onPressQuickDateOption = useCallback(\n (optionValue: Date | TimeRange) => {\n if (optionValue instanceof Date) {\n const nextDate = startOfDay(optionValue);\n\n setTempRange({\n start: nextDate,\n });\n\n if (!isDateInMonth(nextDate, visible)) {\n setVisible(nextDate);\n }\n\n return;\n }\n\n const nextRange = normalizeRange(optionValue);\n\n setTempRange(nextRange);\n\n const nextVisible = nextRange?.start ?? nextRange?.end;\n\n if (nextVisible && !isDateInMonth(nextVisible, visible)) {\n setVisible(nextVisible);\n }\n },\n [visible],\n );\n\n useEffect(() => {\n if (!isOpen && isClosed) {\n setTempRange(selected);\n }\n }, [isOpen, selected, isClosed]);\n\n return {\n id,\n isOpen,\n visible,\n tempRange,\n selected,\n setVisible,\n setTempRange,\n setSelected,\n open,\n close,\n onPressOpen,\n onPressApply,\n onPressCancel,\n onPressCalendarDay,\n onChangeTime,\n onChangeStartTime,\n onChangeEndTime,\n onPressClear,\n onPressQuickDateOption,\n syncState,\n };\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@impulse-ui-native/datetime",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.3",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.mts",
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
],
|
|
20
20
|
"sideEffects": false,
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@impulse-ui-native/
|
|
23
|
-
"@impulse-ui-native/
|
|
24
|
-
"@impulse-ui-native/select": "2.1.
|
|
25
|
-
"@impulse-ui-native/
|
|
26
|
-
"@impulse-ui-native/
|
|
27
|
-
"@impulse-ui-native/
|
|
28
|
-
"@impulse-ui-native/
|
|
22
|
+
"@impulse-ui-native/core": "2.1.3",
|
|
23
|
+
"@impulse-ui-native/icon": "2.1.3",
|
|
24
|
+
"@impulse-ui-native/select": "2.1.3",
|
|
25
|
+
"@impulse-ui-native/theme": "2.1.3",
|
|
26
|
+
"@impulse-ui-native/flyout": "2.1.3",
|
|
27
|
+
"@impulse-ui-native/portal": "2.1.3",
|
|
28
|
+
"@impulse-ui-native/primitives": "2.1.3"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/react": "~19.2.14",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"react-native": "0.86.2",
|
|
37
37
|
"typescript": "~6.0.3",
|
|
38
38
|
"@impulse-ui-native/eslint-config": "1.0.0",
|
|
39
|
-
"@impulse-ui-native/
|
|
40
|
-
"@impulse-ui-native/
|
|
39
|
+
"@impulse-ui-native/prettier-config": "1.0.0",
|
|
40
|
+
"@impulse-ui-native/tsconfig": "1.0.0"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
43
|
"react": ">=18",
|