@cloud-ru/uikit-product-mobile-chips 0.8.36 → 0.8.37

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.
Files changed (156) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/components/AdaptiveChips/AdaptiveChips.d.ts +6 -0
  3. package/dist/cjs/components/AdaptiveChips/AdaptiveChips.js +28 -0
  4. package/dist/cjs/components/AdaptiveChips/index.d.ts +1 -0
  5. package/dist/cjs/components/AdaptiveChips/index.js +17 -0
  6. package/dist/cjs/components/MobileChipChoice/components/ChipChoiceBase/ChipChoiceBase.d.ts +20 -0
  7. package/dist/cjs/components/MobileChipChoice/components/ChipChoiceBase/ChipChoiceBase.js +72 -0
  8. package/dist/cjs/components/MobileChipChoice/components/ChipChoiceBase/index.d.ts +1 -0
  9. package/dist/cjs/components/MobileChipChoice/components/ChipChoiceBase/index.js +17 -0
  10. package/dist/cjs/components/MobileChipChoice/components/ChipChoiceBase/styles.module.css +427 -0
  11. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceCustom.d.ts +25 -0
  12. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceCustom.js +38 -0
  13. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceDate.d.ts +22 -0
  14. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceDate.js +73 -0
  15. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceDateRange.d.ts +15 -0
  16. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceDateRange.js +52 -0
  17. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceMultiple.d.ts +8 -0
  18. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceMultiple.js +128 -0
  19. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceSingle.d.ts +8 -0
  20. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceSingle.js +112 -0
  21. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceTime.d.ts +12 -0
  22. package/dist/cjs/components/MobileChipChoice/components/MobileChipChoiceTime.js +71 -0
  23. package/dist/cjs/components/MobileChipChoice/components/index.d.ts +6 -0
  24. package/dist/cjs/components/MobileChipChoice/components/index.js +22 -0
  25. package/dist/cjs/components/MobileChipChoice/components/styles.module.css +37 -0
  26. package/dist/cjs/components/MobileChipChoice/constants.d.ts +16 -0
  27. package/dist/cjs/components/MobileChipChoice/constants.js +20 -0
  28. package/dist/cjs/components/MobileChipChoice/hooks.d.ts +23 -0
  29. package/dist/cjs/components/MobileChipChoice/hooks.js +69 -0
  30. package/dist/cjs/components/MobileChipChoice/index.d.ts +12 -0
  31. package/dist/cjs/components/MobileChipChoice/index.js +19 -0
  32. package/dist/cjs/components/MobileChipChoice/styles.module.css +211 -0
  33. package/dist/cjs/components/MobileChipChoice/types.d.ts +80 -0
  34. package/dist/cjs/components/MobileChipChoice/types.js +2 -0
  35. package/dist/cjs/components/MobileChipChoice/utils/index.d.ts +2 -0
  36. package/dist/cjs/components/MobileChipChoice/utils/index.js +18 -0
  37. package/dist/cjs/components/MobileChipChoice/utils/options.d.ts +9 -0
  38. package/dist/cjs/components/MobileChipChoice/utils/options.js +36 -0
  39. package/dist/cjs/components/MobileChipChoice/utils/typeGuards.d.ts +6 -0
  40. package/dist/cjs/components/MobileChipChoice/utils/typeGuards.js +22 -0
  41. package/dist/cjs/components/MobileChipChoice/utils/utils.d.ts +19 -0
  42. package/dist/cjs/components/MobileChipChoice/utils/utils.js +33 -0
  43. package/dist/cjs/components/MobileChipChoiceRow/MobileChipChoiceRow.d.ts +29 -0
  44. package/dist/cjs/components/MobileChipChoiceRow/MobileChipChoiceRow.js +124 -0
  45. package/dist/cjs/components/MobileChipChoiceRow/components/ForwardedChipChoice.d.ts +2 -0
  46. package/dist/cjs/components/MobileChipChoiceRow/components/ForwardedChipChoice.js +9 -0
  47. package/dist/cjs/components/MobileChipChoiceRow/components/constants.d.ts +9 -0
  48. package/dist/cjs/components/MobileChipChoiceRow/components/constants.js +14 -0
  49. package/dist/cjs/components/MobileChipChoiceRow/components/index.d.ts +1 -0
  50. package/dist/cjs/components/MobileChipChoiceRow/components/index.js +17 -0
  51. package/dist/cjs/components/MobileChipChoiceRow/constants.d.ts +12 -0
  52. package/dist/cjs/components/MobileChipChoiceRow/constants.js +19 -0
  53. package/dist/cjs/components/MobileChipChoiceRow/index.d.ts +2 -0
  54. package/dist/cjs/components/MobileChipChoiceRow/index.js +20 -0
  55. package/dist/cjs/components/MobileChipChoiceRow/styles.module.css +28 -0
  56. package/dist/cjs/components/MobileChipChoiceRow/types.d.ts +36 -0
  57. package/dist/cjs/components/MobileChipChoiceRow/types.js +2 -0
  58. package/dist/cjs/components/index.d.ts +3 -0
  59. package/dist/cjs/components/index.js +19 -0
  60. package/dist/cjs/constants.d.ts +43 -0
  61. package/dist/cjs/constants.js +46 -0
  62. package/dist/cjs/helperComponents/ButtonClearValue/ButtonClearValue.d.ts +11 -0
  63. package/dist/cjs/helperComponents/ButtonClearValue/ButtonClearValue.js +18 -0
  64. package/dist/cjs/helperComponents/ButtonClearValue/index.d.ts +1 -0
  65. package/dist/cjs/helperComponents/ButtonClearValue/index.js +17 -0
  66. package/dist/cjs/helperComponents/ButtonClearValue/styles.module.css +43 -0
  67. package/dist/cjs/helperComponents/ItemContent/ItemContent.d.ts +9 -0
  68. package/dist/cjs/helperComponents/ItemContent/ItemContent.js +25 -0
  69. package/dist/cjs/helperComponents/ItemContent/index.d.ts +1 -0
  70. package/dist/cjs/helperComponents/ItemContent/index.js +17 -0
  71. package/dist/cjs/helperComponents/ItemContent/styles.module.css +122 -0
  72. package/dist/cjs/helperComponents/index.d.ts +2 -0
  73. package/dist/cjs/helperComponents/index.js +18 -0
  74. package/dist/cjs/index.d.ts +1 -0
  75. package/dist/cjs/index.js +17 -0
  76. package/dist/cjs/styles.module.css +0 -0
  77. package/dist/cjs/types.d.ts +20 -0
  78. package/dist/cjs/types.js +2 -0
  79. package/dist/esm/components/AdaptiveChips/AdaptiveChips.d.ts +6 -0
  80. package/dist/esm/components/AdaptiveChips/AdaptiveChips.js +24 -0
  81. package/dist/esm/components/AdaptiveChips/index.d.ts +1 -0
  82. package/dist/esm/components/AdaptiveChips/index.js +1 -0
  83. package/dist/esm/components/MobileChipChoice/components/ChipChoiceBase/ChipChoiceBase.d.ts +20 -0
  84. package/dist/esm/components/MobileChipChoice/components/ChipChoiceBase/ChipChoiceBase.js +66 -0
  85. package/dist/esm/components/MobileChipChoice/components/ChipChoiceBase/index.d.ts +1 -0
  86. package/dist/esm/components/MobileChipChoice/components/ChipChoiceBase/index.js +1 -0
  87. package/dist/esm/components/MobileChipChoice/components/ChipChoiceBase/styles.module.css +427 -0
  88. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceCustom.d.ts +25 -0
  89. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceCustom.js +35 -0
  90. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceDate.d.ts +22 -0
  91. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceDate.js +67 -0
  92. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceDateRange.d.ts +15 -0
  93. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceDateRange.js +46 -0
  94. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceMultiple.d.ts +8 -0
  95. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceMultiple.js +122 -0
  96. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceSingle.d.ts +8 -0
  97. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceSingle.js +105 -0
  98. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceTime.d.ts +12 -0
  99. package/dist/esm/components/MobileChipChoice/components/MobileChipChoiceTime.js +65 -0
  100. package/dist/esm/components/MobileChipChoice/components/index.d.ts +6 -0
  101. package/dist/esm/components/MobileChipChoice/components/index.js +6 -0
  102. package/dist/esm/components/MobileChipChoice/components/styles.module.css +37 -0
  103. package/dist/esm/components/MobileChipChoice/constants.d.ts +16 -0
  104. package/dist/esm/components/MobileChipChoice/constants.js +17 -0
  105. package/dist/esm/components/MobileChipChoice/hooks.d.ts +23 -0
  106. package/dist/esm/components/MobileChipChoice/hooks.js +61 -0
  107. package/dist/esm/components/MobileChipChoice/index.d.ts +12 -0
  108. package/dist/esm/components/MobileChipChoice/index.js +11 -0
  109. package/dist/esm/components/MobileChipChoice/styles.module.css +211 -0
  110. package/dist/esm/components/MobileChipChoice/types.d.ts +80 -0
  111. package/dist/esm/components/MobileChipChoice/types.js +1 -0
  112. package/dist/esm/components/MobileChipChoice/utils/index.d.ts +2 -0
  113. package/dist/esm/components/MobileChipChoice/utils/index.js +2 -0
  114. package/dist/esm/components/MobileChipChoice/utils/options.d.ts +9 -0
  115. package/dist/esm/components/MobileChipChoice/utils/options.js +33 -0
  116. package/dist/esm/components/MobileChipChoice/utils/typeGuards.d.ts +6 -0
  117. package/dist/esm/components/MobileChipChoice/utils/typeGuards.js +15 -0
  118. package/dist/esm/components/MobileChipChoice/utils/utils.d.ts +19 -0
  119. package/dist/esm/components/MobileChipChoice/utils/utils.js +30 -0
  120. package/dist/esm/components/MobileChipChoiceRow/MobileChipChoiceRow.d.ts +29 -0
  121. package/dist/esm/components/MobileChipChoiceRow/MobileChipChoiceRow.js +118 -0
  122. package/dist/esm/components/MobileChipChoiceRow/components/ForwardedChipChoice.d.ts +2 -0
  123. package/dist/esm/components/MobileChipChoiceRow/components/ForwardedChipChoice.js +6 -0
  124. package/dist/esm/components/MobileChipChoiceRow/components/constants.d.ts +9 -0
  125. package/dist/esm/components/MobileChipChoiceRow/components/constants.js +11 -0
  126. package/dist/esm/components/MobileChipChoiceRow/components/index.d.ts +1 -0
  127. package/dist/esm/components/MobileChipChoiceRow/components/index.js +1 -0
  128. package/dist/esm/components/MobileChipChoiceRow/constants.d.ts +12 -0
  129. package/dist/esm/components/MobileChipChoiceRow/constants.js +16 -0
  130. package/dist/esm/components/MobileChipChoiceRow/index.d.ts +2 -0
  131. package/dist/esm/components/MobileChipChoiceRow/index.js +2 -0
  132. package/dist/esm/components/MobileChipChoiceRow/styles.module.css +28 -0
  133. package/dist/esm/components/MobileChipChoiceRow/types.d.ts +36 -0
  134. package/dist/esm/components/MobileChipChoiceRow/types.js +1 -0
  135. package/dist/esm/components/index.d.ts +3 -0
  136. package/dist/esm/components/index.js +3 -0
  137. package/dist/esm/constants.d.ts +43 -0
  138. package/dist/esm/constants.js +43 -0
  139. package/dist/esm/helperComponents/ButtonClearValue/ButtonClearValue.d.ts +11 -0
  140. package/dist/esm/helperComponents/ButtonClearValue/ButtonClearValue.js +12 -0
  141. package/dist/esm/helperComponents/ButtonClearValue/index.d.ts +1 -0
  142. package/dist/esm/helperComponents/ButtonClearValue/index.js +1 -0
  143. package/dist/esm/helperComponents/ButtonClearValue/styles.module.css +43 -0
  144. package/dist/esm/helperComponents/ItemContent/ItemContent.d.ts +9 -0
  145. package/dist/esm/helperComponents/ItemContent/ItemContent.js +19 -0
  146. package/dist/esm/helperComponents/ItemContent/index.d.ts +1 -0
  147. package/dist/esm/helperComponents/ItemContent/index.js +1 -0
  148. package/dist/esm/helperComponents/ItemContent/styles.module.css +122 -0
  149. package/dist/esm/helperComponents/index.d.ts +2 -0
  150. package/dist/esm/helperComponents/index.js +2 -0
  151. package/dist/esm/index.d.ts +1 -0
  152. package/dist/esm/index.js +1 -0
  153. package/dist/esm/styles.module.css +0 -0
  154. package/dist/esm/types.d.ts +20 -0
  155. package/dist/esm/types.js +1 -0
  156. package/package.json +7 -6
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.MobileChipChoiceCustom = MobileChipChoiceCustom;
15
+ const jsx_runtime_1 = require("react/jsx-runtime");
16
+ const react_1 = require("react");
17
+ const uncontrollable_1 = require("uncontrollable");
18
+ const uikit_product_mobile_dropdown_1 = require("@sbercloud/uikit-product-mobile-dropdown");
19
+ const utils_1 = require("@snack-uikit/utils");
20
+ const constants_1 = require("../../../constants");
21
+ const hooks_1 = require("../hooks");
22
+ const ChipChoiceBase_1 = require("./ChipChoiceBase");
23
+ function MobileChipChoiceCustom(_a) {
24
+ var _b;
25
+ var { size = constants_1.SIZE.S, value: valueProp, onChange: onChangeProp, content, valueRender, onClearButtonClick, open: openProp, onOpenChange } = _a, rest = __rest(_a, ["size", "value", "onChange", "content", "valueRender", "onClearButtonClick", "open", "onOpenChange"]);
26
+ const localRef = (0, react_1.useRef)(null);
27
+ const [value, setValue] = (0, utils_1.useValueControl)({
28
+ value: valueProp,
29
+ onChange: onChangeProp,
30
+ });
31
+ const [open, setOpen] = (0, uncontrollable_1.useUncontrolledProp)(openProp, false, onOpenChange);
32
+ const handleOnKeyDown = (0, hooks_1.useHandleOnKeyDown)({ setOpen });
33
+ const closeDroplist = (0, react_1.useCallback)(() => {
34
+ setOpen(false);
35
+ setTimeout(() => { var _a; return (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, 0);
36
+ }, [setOpen]);
37
+ return ((0, jsx_runtime_1.jsx)(uikit_product_mobile_dropdown_1.MobileDropdown, { open: open, onOpenChange: setOpen, "data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.droplist, content: typeof content === 'function' ? content({ closeDroplist, value, onChange: setValue }) : content, children: (0, jsx_runtime_1.jsx)(ChipChoiceBase_1.ChipChoiceBase, Object.assign({}, rest, { valueToRender: (_b = valueRender === null || valueRender === void 0 ? void 0 : valueRender(value)) !== null && _b !== void 0 ? _b : value, onClearButtonClick: onClearButtonClick, ref: localRef, value: value, size: size, onKeyDown: handleOnKeyDown() })) }));
38
+ }
@@ -0,0 +1,22 @@
1
+ import { ReactNode } from 'react';
2
+ import { CalendarProps } from '@snack-uikit/calendar';
3
+ import { ChipChoiceCommonProps } from '../types';
4
+ type ChipChoiceDateWithSeconds = {
5
+ mode?: 'date-time';
6
+ showSeconds?: boolean;
7
+ };
8
+ export type MobileChipChoiceDateProps = ChipChoiceCommonProps & {
9
+ /** Значение компонента */
10
+ value?: Date;
11
+ /** Значение компонента по-умолчанию */
12
+ defaultValue?: Date;
13
+ /** Колбек смены значения */
14
+ onChange?(value: Date): void;
15
+ /** Колбек формирующий строковое представление выбранного значения. Принимает выбранное значение */
16
+ valueRender?(value?: Date): ReactNode;
17
+ mode?: Exclude<CalendarProps['mode'], 'range'>;
18
+ } & (ChipChoiceDateWithSeconds | {
19
+ mode?: 'date' | 'month' | 'year';
20
+ });
21
+ export declare function MobileChipChoiceDate({ size, value, defaultValue, onChange, valueRender, mode, onClearButtonClick, open: openProp, onOpenChange, ...rest }: MobileChipChoiceDateProps): import("react/jsx-runtime").JSX.Element;
22
+ export {};
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.MobileChipChoiceDate = MobileChipChoiceDate;
18
+ const jsx_runtime_1 = require("react/jsx-runtime");
19
+ const react_1 = require("react");
20
+ const uncontrollable_1 = require("uncontrollable");
21
+ const uikit_product_locale_1 = require("@sbercloud/uikit-product-locale");
22
+ const uikit_product_mobile_dropdown_1 = require("@sbercloud/uikit-product-mobile-dropdown");
23
+ const calendar_1 = require("@snack-uikit/calendar");
24
+ const scroll_1 = require("@snack-uikit/scroll");
25
+ const utils_1 = require("@snack-uikit/utils");
26
+ const constants_1 = require("../../../constants");
27
+ const constants_2 = require("../constants");
28
+ const hooks_1 = require("../hooks");
29
+ const ChipChoiceBase_1 = require("./ChipChoiceBase");
30
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
31
+ function MobileChipChoiceDate(_a) {
32
+ var _b;
33
+ var { size = constants_1.SIZE.S, value, defaultValue, onChange, valueRender, mode = 'date', onClearButtonClick, open: openProp, onOpenChange } = _a, rest = __rest(_a, ["size", "value", "defaultValue", "onChange", "valueRender", "mode", "onClearButtonClick", "open", "onOpenChange"]);
34
+ const [selectedValue, setSelectedValue] = (0, utils_1.useValueControl)({ value, defaultValue, onChange });
35
+ const showSeconds = mode === 'date-time' ? ((_b = rest.showSeconds) !== null && _b !== void 0 ? _b : true) : undefined;
36
+ const localRef = (0, react_1.useRef)(null);
37
+ const [open, setOpen] = (0, uncontrollable_1.useUncontrolledProp)(openProp, false, onOpenChange);
38
+ const handleOnKeyDown = (0, hooks_1.useHandleOnKeyDown)({ setOpen });
39
+ const closeDroplist = (0, react_1.useCallback)(() => {
40
+ setOpen(false);
41
+ setTimeout(() => { var _a; return (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, 0);
42
+ }, [setOpen]);
43
+ const { t } = (0, uikit_product_locale_1.useLocale)('Chips');
44
+ const valueToRender = (0, react_1.useMemo)(() => {
45
+ if (valueRender) {
46
+ return valueRender(selectedValue);
47
+ }
48
+ if (!selectedValue)
49
+ return t('allLabel');
50
+ const date = new Date(selectedValue);
51
+ if (mode === 'date-time') {
52
+ return date.toLocaleString(constants_2.DEFAULT_LOCALE, {
53
+ year: 'numeric',
54
+ month: 'numeric',
55
+ day: 'numeric',
56
+ hour: '2-digit',
57
+ minute: '2-digit',
58
+ second: showSeconds ? '2-digit' : undefined,
59
+ });
60
+ }
61
+ return date.toLocaleDateString(constants_2.DEFAULT_LOCALE, {
62
+ year: 'numeric',
63
+ month: 'numeric',
64
+ day: mode === 'date' ? 'numeric' : undefined,
65
+ });
66
+ }, [mode, selectedValue, showSeconds, t, valueRender]);
67
+ const handleChangeValue = (0, react_1.useCallback)((value) => {
68
+ setSelectedValue(value);
69
+ closeDroplist();
70
+ }, [closeDroplist, setSelectedValue]);
71
+ const navigationStartRef = (0, react_1.useRef)(null);
72
+ return ((0, jsx_runtime_1.jsx)(uikit_product_mobile_dropdown_1.MobileDropdown, { content: (0, jsx_runtime_1.jsx)(scroll_1.Scroll, { className: mode === 'date-time' ? styles_module_scss_1.default.dateTimeWrapper : styles_module_scss_1.default.dateWrapper, barHideStrategy: 'never', children: (0, jsx_runtime_1.jsx)(calendar_1.Calendar, { mode: mode, size: 'l', value: selectedValue, onChangeValue: handleChangeValue, navigationStartRef: navigationStartRef, onFocusLeave: closeDroplist, showSeconds: showSeconds, locale: constants_2.DEFAULT_LOCALE }) }), open: open, onOpenChange: setOpen, "data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.droplist, children: (0, jsx_runtime_1.jsx)(ChipChoiceBase_1.ChipChoiceBase, Object.assign({}, rest, { ref: localRef, onClearButtonClick: onClearButtonClick, value: selectedValue, valueToRender: valueToRender, size: size, onKeyDown: handleOnKeyDown() })) }));
73
+ }
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ import { ChipChoiceCommonProps } from '../types';
3
+ type Range = [Date, Date];
4
+ export type MobileChipChoiceDateRangeProps = ChipChoiceCommonProps & {
5
+ /** Значение компонента */
6
+ value?: Range;
7
+ /** Значение компонента по умолчанию */
8
+ defaultValue?: Range;
9
+ /** Колбек смены значения */
10
+ onChange?(value: Range): void;
11
+ /** Колбек формирующий строковое представление выбранного значения. Принимает массив выбранных значений */
12
+ valueRender?(value?: Range): ReactNode;
13
+ };
14
+ export declare function MobileChipChoiceDateRange({ size, value, defaultValue, onChange, valueRender, onClearButtonClick, open: openProp, onOpenChange, ...rest }: MobileChipChoiceDateRangeProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.MobileChipChoiceDateRange = MobileChipChoiceDateRange;
18
+ const jsx_runtime_1 = require("react/jsx-runtime");
19
+ const react_1 = require("react");
20
+ const uncontrollable_1 = require("uncontrollable");
21
+ const uikit_product_locale_1 = require("@sbercloud/uikit-product-locale");
22
+ const uikit_product_mobile_dropdown_1 = require("@sbercloud/uikit-product-mobile-dropdown");
23
+ const calendar_1 = require("@snack-uikit/calendar");
24
+ const constants_1 = require("../../../constants");
25
+ const hooks_1 = require("../hooks");
26
+ const ChipChoiceBase_1 = require("./ChipChoiceBase");
27
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
28
+ function defaultRangeFormatter({ value, allLabel }) {
29
+ if (!value || !value.length)
30
+ return allLabel;
31
+ const [from, to] = value;
32
+ return `${from.toLocaleDateString()} ${constants_1.DEFAULT_EMPTY_VALUE} ${to.toLocaleDateString()}`;
33
+ }
34
+ function MobileChipChoiceDateRange(_a) {
35
+ var { size = constants_1.SIZE.S, value, defaultValue, onChange, valueRender, onClearButtonClick, open: openProp, onOpenChange } = _a, rest = __rest(_a, ["size", "value", "defaultValue", "onChange", "valueRender", "onClearButtonClick", "open", "onOpenChange"]);
36
+ const [selectedValue, setSelectedValue] = (0, uncontrollable_1.useUncontrolledProp)(value, defaultValue, onChange);
37
+ const { t } = (0, uikit_product_locale_1.useLocale)('Chips');
38
+ const valueToRender = valueRender
39
+ ? valueRender(selectedValue)
40
+ : defaultRangeFormatter({ value: selectedValue, allLabel: t('allLabel') });
41
+ const localRef = (0, react_1.useRef)(null);
42
+ const [open, setOpen] = (0, uncontrollable_1.useUncontrolledProp)(openProp, false, onOpenChange);
43
+ const closeDroplist = (0, react_1.useCallback)(() => {
44
+ setOpen(false);
45
+ setTimeout(() => { var _a; return (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, 0);
46
+ }, [setOpen]);
47
+ const handleOnKeyDown = (0, hooks_1.useHandleOnKeyDown)({ setOpen });
48
+ return ((0, jsx_runtime_1.jsx)(uikit_product_mobile_dropdown_1.MobileDropdown, { content: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.dateWrapper, children: (0, jsx_runtime_1.jsx)(calendar_1.Calendar, { mode: 'range', size: 'l', value: selectedValue, onChangeValue: value => {
49
+ setSelectedValue(value);
50
+ closeDroplist();
51
+ }, onFocusLeave: closeDroplist }) }), open: open, "data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.droplist, onOpenChange: setOpen, children: (0, jsx_runtime_1.jsx)(ChipChoiceBase_1.ChipChoiceBase, Object.assign({}, rest, { ref: localRef, onClearButtonClick: onClearButtonClick, value: selectedValue, valueToRender: valueToRender, size: size, onKeyDown: handleOnKeyDown() })) }));
52
+ }
@@ -0,0 +1,8 @@
1
+ import { ContentRenderProps, MobileChipChoiceMultipleProps } from '../types';
2
+ import { FlattenOption } from '../utils';
3
+ export type ChipChoiceMultipleValueFormatterProps<T extends ContentRenderProps = ContentRenderProps> = {
4
+ value: FlattenOption<T>[];
5
+ total: number;
6
+ allLabel: string;
7
+ };
8
+ export declare function MobileChipChoiceMultiple<T extends ContentRenderProps = ContentRenderProps>({ value: valueProp, defaultValue, options, onChange: onChangeProp, valueRender, size, label, searchable: searchableProp, contentRender, onClearButtonClick, open: openProp, onOpenChange, virtualized, disableFuzzySearch, autoApply, onApprove, onCancel, ...rest }: MobileChipChoiceMultipleProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.MobileChipChoiceMultiple = MobileChipChoiceMultiple;
18
+ const jsx_runtime_1 = require("react/jsx-runtime");
19
+ const react_1 = require("react");
20
+ const uncontrollable_1 = require("uncontrollable");
21
+ const uikit_product_locale_1 = require("@sbercloud/uikit-product-locale");
22
+ const uikit_product_mobile_dropdown_1 = require("@sbercloud/uikit-product-mobile-dropdown");
23
+ const button_1 = require("@snack-uikit/button");
24
+ const utils_1 = require("@snack-uikit/utils");
25
+ const constants_1 = require("../../../constants");
26
+ const hooks_1 = require("../hooks");
27
+ const utils_2 = require("../utils");
28
+ const options_1 = require("../utils/options");
29
+ const ChipChoiceBase_1 = require("./ChipChoiceBase");
30
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
31
+ const defaultMultiValueLabelFormatter = ({ value, total, allLabel }) => {
32
+ const len = value.length;
33
+ if ([0, total].includes(len) && total !== len) {
34
+ return allLabel;
35
+ }
36
+ if (len === 1) {
37
+ return value[0].label;
38
+ }
39
+ return `${len.toString()}/${total}`;
40
+ };
41
+ function MobileChipChoiceMultiple(_a) {
42
+ var { value: valueProp, defaultValue, options, onChange: onChangeProp, valueRender, size = constants_1.SIZE.S, label, searchable: searchableProp, contentRender, onClearButtonClick, open: openProp, onOpenChange, virtualized, disableFuzzySearch = false, autoApply = true, onApprove, onCancel } = _a, rest = __rest(_a, ["value", "defaultValue", "options", "onChange", "valueRender", "size", "label", "searchable", "contentRender", "onClearButtonClick", "open", "onOpenChange", "virtualized", "disableFuzzySearch", "autoApply", "onApprove", "onCancel"]);
43
+ const { t } = (0, uikit_product_locale_1.useLocale)();
44
+ const [value, setValue] = (0, utils_1.useValueControl)({
45
+ value: valueProp,
46
+ defaultValue,
47
+ onChange: onChangeProp,
48
+ });
49
+ const [deferredValue, setDeferredValue] = (0, utils_1.useValueControl)({
50
+ defaultValue,
51
+ });
52
+ const flattenOptions = (0, react_1.useMemo)(() => {
53
+ const { flattenOptions } = (0, utils_2.kindFlattenOptions)({ options });
54
+ return flattenOptions;
55
+ }, [options]);
56
+ const searchable = searchableProp && Object.values(flattenOptions).length > 5;
57
+ const [searchValue = '', setSearchValue] = (0, react_1.useState)('');
58
+ const [open, setOpen] = (0, uncontrollable_1.useUncontrolledProp)(openProp, false, onOpenChange);
59
+ const handleOnKeyDown = (0, hooks_1.useHandleOnKeyDown)({ setOpen });
60
+ const flatMapOptions = (0, react_1.useMemo)(() => Object.values(flattenOptions), [flattenOptions]);
61
+ const dropListSelection = (0, react_1.useMemo)(() => (autoApply ? value : deferredValue), [autoApply, deferredValue, value]);
62
+ const selectedOptions = (0, react_1.useMemo)(() => (value && value.length ? value.map(id => flattenOptions[id]).filter(Boolean) : []), [flattenOptions, value]);
63
+ const valueToRender = valueRender
64
+ ? valueRender(selectedOptions)
65
+ : defaultMultiValueLabelFormatter({
66
+ value: selectedOptions !== null && selectedOptions !== void 0 ? selectedOptions : [],
67
+ total: Object.keys(flattenOptions).length,
68
+ allLabel: t('Chips.allLabel'),
69
+ });
70
+ const optionSearch = (0, hooks_1.useOptionSearch)({ options, flatMapOptions, disableFuzzySearch });
71
+ const result = (0, react_1.useMemo)(() => (!searchable || valueToRender === searchValue ? options : optionSearch(searchValue)), [optionSearch, options, searchValue, searchable, valueToRender]);
72
+ const items = (0, react_1.useMemo)(() => (0, options_1.transformOptionsToItems)(result, contentRender), [contentRender, result]);
73
+ const chipRef = (0, react_1.useRef)(null);
74
+ const listRef = (0, react_1.useRef)(null);
75
+ const handleSelectionChange = (0, react_1.useCallback)((newValue) => {
76
+ var _a;
77
+ if (newValue !== undefined) {
78
+ if (autoApply) {
79
+ setValue(newValue);
80
+ }
81
+ else {
82
+ setDeferredValue(newValue);
83
+ }
84
+ if (searchValue) {
85
+ (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.focus();
86
+ }
87
+ }
88
+ }, [autoApply, searchValue, setValue, setDeferredValue]);
89
+ const handleOnCancelClick = () => {
90
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
91
+ setDeferredValue(value);
92
+ setOpen(false);
93
+ };
94
+ const handleOnApproveClick = () => {
95
+ onApprove === null || onApprove === void 0 ? void 0 : onApprove();
96
+ setValue(deferredValue);
97
+ setOpen(false);
98
+ };
99
+ const autoApplyFooter = (0, hooks_1.useAutoApplyFooter)({
100
+ autoApply,
101
+ onApprove: handleOnApproveClick,
102
+ onCancel: handleOnCancelClick,
103
+ });
104
+ (0, react_1.useEffect)(() => {
105
+ if (searchValue && !open) {
106
+ setSearchValue('');
107
+ }
108
+ }, [searchable, open, searchValue]);
109
+ (0, react_1.useEffect)(() => {
110
+ setDeferredValue(value);
111
+ // eslint-disable-next-line react-hooks/exhaustive-deps
112
+ }, [value]);
113
+ return ((0, jsx_runtime_1.jsx)(uikit_product_mobile_dropdown_1.MobileDroplist, { items: items, selection: {
114
+ value: dropListSelection,
115
+ onChange: handleSelectionChange,
116
+ mode: 'multiple',
117
+ }, "data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.droplist, open: open, onOpenChange: open => {
118
+ if (!open) {
119
+ setSearchValue('');
120
+ handleOnCancelClick();
121
+ }
122
+ setOpen(open);
123
+ }, label: label, virtualized: virtualized, footer: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.footer, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.footerTopLine, children: [(0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.counter, children: `${t('MobileChips.selectedN')}${(value === null || value === void 0 ? void 0 : value.length) || 0}` }), (0, jsx_runtime_1.jsx)(button_1.ButtonFunction, { label: t('MobileChips.resetAll'), onClick: () => {
124
+ handleSelectionChange([]);
125
+ }, size: 'm' })] }), autoApply ? ((0, jsx_runtime_1.jsx)(button_1.ButtonFilled, { fullWidth: true, label: t('MobileChips.select'), onClick: () => {
126
+ setOpen(false);
127
+ }, size: 'l' })) : (autoApplyFooter)] }), children: (0, jsx_runtime_1.jsx)(ChipChoiceBase_1.ChipChoiceBase, Object.assign({}, rest, { ref: chipRef, onClearButtonClick: onClearButtonClick, value: value, valueToRender: valueToRender, label: label, loading: rest.loading, size: size, onKeyDown: handleOnKeyDown() })) }));
128
+ }
@@ -0,0 +1,8 @@
1
+ import { ItemId } from '@sbercloud/uikit-product-mobile-dropdown';
2
+ import { ContentRenderProps, MobileChipChoiceSingleProps } from '../types';
3
+ export type ChipChoiceSingleValueFormatterProps = {
4
+ label?: ItemId;
5
+ allLabel?: string;
6
+ };
7
+ export declare function defaultSingleValueFormatter({ label, allLabel }: ChipChoiceSingleValueFormatterProps): ItemId | undefined;
8
+ export declare function MobileChipChoiceSingle<T extends ContentRenderProps = ContentRenderProps>({ value: valueProp, defaultValue, options, onChange: onChangeProp, valueRender, size, label, searchable: searchableProp, contentRender, onClearButtonClick, open: openProp, onOpenChange, virtualized, disableFuzzySearch, autoApply, onApprove, onCancel, ...rest }: MobileChipChoiceSingleProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.defaultSingleValueFormatter = defaultSingleValueFormatter;
18
+ exports.MobileChipChoiceSingle = MobileChipChoiceSingle;
19
+ const jsx_runtime_1 = require("react/jsx-runtime");
20
+ const react_1 = require("react");
21
+ const uncontrollable_1 = require("uncontrollable");
22
+ const uikit_product_locale_1 = require("@sbercloud/uikit-product-locale");
23
+ const uikit_product_mobile_dropdown_1 = require("@sbercloud/uikit-product-mobile-dropdown");
24
+ const utils_1 = require("@snack-uikit/utils");
25
+ const constants_1 = require("../../../constants");
26
+ const hooks_1 = require("../hooks");
27
+ const utils_2 = require("../utils");
28
+ const options_1 = require("../utils/options");
29
+ const ChipChoiceBase_1 = require("./ChipChoiceBase");
30
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
31
+ function defaultSingleValueFormatter({ label, allLabel }) {
32
+ return label !== null && label !== void 0 ? label : allLabel;
33
+ }
34
+ function MobileChipChoiceSingle(_a) {
35
+ var { value: valueProp, defaultValue, options, onChange: onChangeProp, valueRender, size = constants_1.SIZE.S, label, searchable: searchableProp, contentRender, onClearButtonClick, open: openProp, onOpenChange, virtualized, disableFuzzySearch = false, autoApply = true, onApprove, onCancel } = _a, rest = __rest(_a, ["value", "defaultValue", "options", "onChange", "valueRender", "size", "label", "searchable", "contentRender", "onClearButtonClick", "open", "onOpenChange", "virtualized", "disableFuzzySearch", "autoApply", "onApprove", "onCancel"]);
36
+ const [value, setValue] = (0, utils_1.useValueControl)({
37
+ value: valueProp,
38
+ defaultValue,
39
+ onChange: onChangeProp,
40
+ });
41
+ const [deferredValue, setDeferredValue] = (0, utils_1.useValueControl)({
42
+ defaultValue,
43
+ });
44
+ const flattenOptions = (0, react_1.useMemo)(() => {
45
+ const { flattenOptions } = (0, utils_2.kindFlattenOptions)({ options });
46
+ return flattenOptions;
47
+ }, [options]);
48
+ const searchable = searchableProp && Object.values(flattenOptions).length > 5;
49
+ const { t } = (0, uikit_product_locale_1.useLocale)('Chips');
50
+ const [open, setOpen] = (0, uncontrollable_1.useUncontrolledProp)(openProp, false, onOpenChange);
51
+ const handleOnKeyDown = (0, hooks_1.useHandleOnKeyDown)({ setOpen });
52
+ const flatMapOptions = (0, react_1.useMemo)(() => Object.values(flattenOptions), [flattenOptions]);
53
+ const dropListSelection = (0, react_1.useMemo)(() => (autoApply ? value : deferredValue), [autoApply, deferredValue, value]);
54
+ const selectedOption = (0, react_1.useMemo)(() => (value ? flattenOptions[value] : {}), [flattenOptions, value]);
55
+ const [searchValue, setSearchValue] = (0, react_1.useState)('');
56
+ const valueToRender = valueRender
57
+ ? valueRender(selectedOption)
58
+ : defaultSingleValueFormatter({ label: selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label, allLabel: t('allLabel') });
59
+ const optionSearch = (0, hooks_1.useOptionSearch)({ options, flatMapOptions, disableFuzzySearch });
60
+ const result = (0, react_1.useMemo)(() => (!searchable || valueToRender === searchValue ? options : optionSearch(searchValue)), [optionSearch, options, searchValue, searchable, valueToRender]);
61
+ const items = (0, react_1.useMemo)(() => (0, options_1.transformOptionsToItems)(result, contentRender), [contentRender, result]);
62
+ const chipRef = (0, react_1.useRef)(null);
63
+ const handleSelectionChange = (0, react_1.useCallback)((newValue) => {
64
+ var _a;
65
+ if (newValue !== undefined) {
66
+ (_a = chipRef.current) === null || _a === void 0 ? void 0 : _a.focus();
67
+ if (autoApply) {
68
+ setOpen(false);
69
+ setSearchValue('');
70
+ setValue(newValue);
71
+ }
72
+ else {
73
+ setDeferredValue(newValue);
74
+ }
75
+ return;
76
+ }
77
+ if (autoApply) {
78
+ setOpen(false);
79
+ }
80
+ }, [autoApply, setOpen, setValue, setDeferredValue]);
81
+ const handleOnCancelClick = (0, react_1.useCallback)(() => {
82
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
83
+ setDeferredValue(value);
84
+ setOpen(false);
85
+ }, [onCancel, setDeferredValue, setOpen, value]);
86
+ const handleOnApproveClick = (0, react_1.useCallback)(() => {
87
+ onApprove === null || onApprove === void 0 ? void 0 : onApprove();
88
+ setValue(deferredValue);
89
+ setOpen(false);
90
+ }, [deferredValue, onApprove, setOpen, setValue]);
91
+ const autoApplyFooter = (0, hooks_1.useAutoApplyFooter)({
92
+ autoApply,
93
+ onApprove: handleOnApproveClick,
94
+ onCancel: handleOnCancelClick,
95
+ });
96
+ (0, react_1.useEffect)(() => {
97
+ if (searchValue && !open) {
98
+ setSearchValue('');
99
+ }
100
+ }, [searchable, open, searchValue]);
101
+ return ((0, jsx_runtime_1.jsx)(uikit_product_mobile_dropdown_1.MobileDroplist, { items: items, selection: {
102
+ value: dropListSelection,
103
+ onChange: handleSelectionChange,
104
+ mode: 'single',
105
+ }, "data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.droplist, open: open, onOpenChange: open => {
106
+ if (!open) {
107
+ setSearchValue('');
108
+ handleOnCancelClick();
109
+ }
110
+ setOpen(open);
111
+ }, label: label, virtualized: virtualized, footer: !autoApply && autoApplyFooter ? (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.footer, children: autoApplyFooter }) : undefined, children: (0, jsx_runtime_1.jsx)(ChipChoiceBase_1.ChipChoiceBase, Object.assign({}, rest, { ref: chipRef, onClearButtonClick: onClearButtonClick, value: value, valueToRender: valueToRender, label: label, loading: rest.loading, size: size, onKeyDown: handleOnKeyDown() })) }));
112
+ }
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from 'react';
2
+ import { TimePickerProps } from '@snack-uikit/calendar';
3
+ import { ChipChoiceCommonProps } from '../types';
4
+ type TimeValue = TimePickerProps['value'];
5
+ export type MobileChipChoiceTimeProps = Omit<ChipChoiceCommonProps, 'widthStrategy'> & Pick<TimePickerProps, 'value' | 'defaultValue' | 'showSeconds'> & {
6
+ /** Колбек смены значения */
7
+ onChange?(value: TimeValue): void;
8
+ /** Колбек формирующий строковое представление выбранного значения. Принимает выбранное значение */
9
+ valueRender?(value?: TimeValue): ReactNode;
10
+ };
11
+ export declare function MobileChipChoiceTime({ size, value, defaultValue, onChange, valueRender, showSeconds, onClearButtonClick, open: openProp, onOpenChange, ...rest }: MobileChipChoiceTimeProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.MobileChipChoiceTime = MobileChipChoiceTime;
18
+ const jsx_runtime_1 = require("react/jsx-runtime");
19
+ const react_1 = require("react");
20
+ const uncontrollable_1 = require("uncontrollable");
21
+ const uikit_product_locale_1 = require("@sbercloud/uikit-product-locale");
22
+ const uikit_product_mobile_dropdown_1 = require("@sbercloud/uikit-product-mobile-dropdown");
23
+ const calendar_1 = require("@snack-uikit/calendar");
24
+ const utils_1 = require("@snack-uikit/utils");
25
+ const constants_1 = require("../../../constants");
26
+ const constants_2 = require("../constants");
27
+ const hooks_1 = require("../hooks");
28
+ const ChipChoiceBase_1 = require("./ChipChoiceBase");
29
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
30
+ const getStringTimeValue = (time, { showSeconds, locale }) => {
31
+ var _a, _b, _c;
32
+ if (!time) {
33
+ return '';
34
+ }
35
+ const date = new Date();
36
+ date.setHours((_a = time.hours) !== null && _a !== void 0 ? _a : 0);
37
+ date.setMinutes((_b = time.minutes) !== null && _b !== void 0 ? _b : 0);
38
+ date.setSeconds((_c = time.seconds) !== null && _c !== void 0 ? _c : 0);
39
+ return date.toLocaleTimeString(locale, {
40
+ hour: 'numeric',
41
+ minute: 'numeric',
42
+ second: showSeconds ? 'numeric' : undefined,
43
+ });
44
+ };
45
+ function MobileChipChoiceTime(_a) {
46
+ var { size = constants_1.SIZE.S, value, defaultValue, onChange, valueRender, showSeconds = true, onClearButtonClick, open: openProp, onOpenChange } = _a, rest = __rest(_a, ["size", "value", "defaultValue", "onChange", "valueRender", "showSeconds", "onClearButtonClick", "open", "onOpenChange"]);
47
+ const [selectedValue, setSelectedValue] = (0, utils_1.useValueControl)({ value, defaultValue, onChange });
48
+ const localRef = (0, react_1.useRef)(null);
49
+ const [open, setOpen] = (0, uncontrollable_1.useUncontrolledProp)(openProp, false, onOpenChange);
50
+ const handleOnKeyDown = (0, hooks_1.useHandleOnKeyDown)({ setOpen });
51
+ const closeDroplist = (0, react_1.useCallback)(() => {
52
+ setOpen(false);
53
+ setTimeout(() => { var _a; return (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, 0);
54
+ }, [setOpen]);
55
+ const { t } = (0, uikit_product_locale_1.useLocale)('Chips');
56
+ const valueToRender = (0, react_1.useMemo)(() => {
57
+ if (valueRender) {
58
+ return valueRender(selectedValue);
59
+ }
60
+ if (!selectedValue)
61
+ return t('allLabel');
62
+ return getStringTimeValue(selectedValue, { showSeconds, locale: constants_2.DEFAULT_LOCALE });
63
+ }, [selectedValue, showSeconds, t, valueRender]);
64
+ const handleChangeValue = (0, react_1.useCallback)((value) => {
65
+ setSelectedValue(value);
66
+ closeDroplist();
67
+ }, [closeDroplist, setSelectedValue]);
68
+ const navigationStartRef = (0, react_1.useRef)(null);
69
+ const focusNavigationStartItem = () => setTimeout(() => { var _a; return (_a = navigationStartRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, 0);
70
+ return ((0, jsx_runtime_1.jsx)(uikit_product_mobile_dropdown_1.MobileDropdown, { content: (0, jsx_runtime_1.jsx)(calendar_1.TimePicker, { className: styles_module_scss_1.default.timeWrapper, value: selectedValue, size: 'l', fitToContainer: false, onChangeValue: handleChangeValue, navigationStartRef: navigationStartRef, onFocusLeave: closeDroplist, showSeconds: showSeconds }), open: open, onOpenChange: setOpen, "data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.droplist, children: (0, jsx_runtime_1.jsx)(ChipChoiceBase_1.ChipChoiceBase, Object.assign({}, rest, { ref: localRef, onClearButtonClick: onClearButtonClick, value: selectedValue, valueToRender: valueToRender, size: size, onKeyDown: handleOnKeyDown(focusNavigationStartItem) })) }));
71
+ }
@@ -0,0 +1,6 @@
1
+ export * from './MobileChipChoiceCustom';
2
+ export * from './MobileChipChoiceSingle';
3
+ export * from './MobileChipChoiceMultiple';
4
+ export * from './MobileChipChoiceDate';
5
+ export * from './MobileChipChoiceDateRange';
6
+ export * from './MobileChipChoiceTime';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./MobileChipChoiceCustom"), exports);
18
+ __exportStar(require("./MobileChipChoiceSingle"), exports);
19
+ __exportStar(require("./MobileChipChoiceMultiple"), exports);
20
+ __exportStar(require("./MobileChipChoiceDate"), exports);
21
+ __exportStar(require("./MobileChipChoiceDateRange"), exports);
22
+ __exportStar(require("./MobileChipChoiceTime"), exports);
@@ -0,0 +1,37 @@
1
+ .footer{
2
+ width:100%;
3
+ }
4
+
5
+ .footerTopLine{
6
+ display:flex;
7
+ align-items:center;
8
+ justify-content:space-between;
9
+ gap:4px;
10
+ }
11
+
12
+ .counter{
13
+ color:var(--sys-neutral-text-light, #8b8e9b);
14
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
15
+ font-weight:var(--sans-body-m-font-weight, Regular);
16
+ line-height:var(--sans-body-m-line-height, 20px);
17
+ font-size:var(--sans-body-m-font-size, 14px);
18
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
19
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
20
+ }
21
+
22
+ .bodyNoPadding{
23
+ padding:0 !important;
24
+ }
25
+
26
+ .dateWrapper{
27
+ height:384px;
28
+ }
29
+
30
+ .dateTimeWrapper{
31
+ height:458px;
32
+ padding-bottom:8px;
33
+ }
34
+
35
+ .timeWrapper{
36
+ min-width:100%;
37
+ }
@@ -0,0 +1,16 @@
1
+ export declare const BUTTON_CLEAR_VALUE_SIZE_MAP: {
2
+ xs: "xxs";
3
+ s: "xs";
4
+ m: "xs";
5
+ l: "xs";
6
+ };
7
+ export declare const CHIP_CHOICE_TYPE: {
8
+ readonly Multiple: "multiple";
9
+ readonly Date: "date";
10
+ readonly DateTime: "date-time";
11
+ readonly DateRange: "date-range";
12
+ readonly Single: "single";
13
+ readonly Custom: "custom";
14
+ readonly Time: "time";
15
+ };
16
+ export declare const DEFAULT_LOCALE: Intl.Locale;