@snack-uikit/chips 0.16.3 → 0.16.4-preview-ba12ca94.0
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/cjs/components/ChipAssist/ChipAssist.js +73 -0
- package/dist/cjs/components/ChipAssist/index.js +25 -0
- package/dist/cjs/components/ChipChoice/components/ChipChoiceBase/ChipChoiceBase.js +128 -0
- package/dist/cjs/components/ChipChoice/components/ChipChoiceBase/index.js +25 -0
- package/dist/cjs/components/ChipChoice/components/ChipChoiceCustom.js +77 -0
- package/dist/cjs/components/ChipChoice/components/ChipChoiceDate.js +85 -0
- package/dist/cjs/components/ChipChoice/components/ChipChoiceDateRange.js +93 -0
- package/dist/cjs/components/ChipChoice/components/ChipChoiceMultiple.js +146 -0
- package/dist/cjs/components/ChipChoice/components/ChipChoiceSingle.js +131 -0
- package/dist/cjs/components/ChipChoice/components/index.js +29 -0
- package/dist/cjs/components/ChipChoice/constants.js +32 -0
- package/dist/cjs/components/ChipChoice/hooks.js +47 -0
- package/dist/cjs/components/ChipChoice/index.js +46 -0
- package/dist/cjs/components/ChipChoice/types.js +5 -0
- package/dist/cjs/components/ChipChoice/utils/index.js +26 -0
- package/dist/cjs/components/ChipChoice/utils/options.js +85 -0
- package/dist/cjs/components/ChipChoice/utils/typeGuards.js +25 -0
- package/dist/cjs/components/ChipChoice/utils/utils.js +49 -0
- package/dist/cjs/components/ChipChoiceRow/ChipChoiceRow.js +84 -0
- package/dist/cjs/components/ChipChoiceRow/components/ForwardedChipChoice.js +12 -0
- package/dist/cjs/components/ChipChoiceRow/components/constants.js +15 -0
- package/dist/cjs/components/ChipChoiceRow/components/index.js +25 -0
- package/dist/cjs/components/ChipChoiceRow/constants.js +22 -0
- package/dist/cjs/components/ChipChoiceRow/index.js +25 -0
- package/dist/cjs/components/ChipChoiceRow/types.js +5 -0
- package/dist/cjs/components/ChipToggle/ChipToggle.js +82 -0
- package/dist/cjs/components/ChipToggle/index.js +25 -0
- package/dist/cjs/components/index.js +28 -0
- package/dist/cjs/constants.js +43 -0
- package/dist/cjs/helperComponents/ButtonClearValue/ButtonClearValue.js +42 -0
- package/dist/cjs/helperComponents/ButtonClearValue/index.js +25 -0
- package/dist/cjs/helperComponents/index.js +25 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/types.js +5 -0
- package/dist/esm/components/ChipAssist/ChipAssist.d.ts +11 -0
- package/dist/esm/components/ChipAssist/index.js +1 -0
- package/dist/esm/components/ChipAssist/styles.module.css +159 -0
- package/dist/esm/components/ChipChoice/components/ChipChoiceBase/ChipChoiceBase.d.ts +20 -0
- package/dist/esm/components/ChipChoice/components/ChipChoiceBase/index.js +1 -0
- package/dist/esm/components/ChipChoice/components/ChipChoiceBase/styles.module.css +410 -0
- package/dist/esm/components/ChipChoice/components/ChipChoiceCustom.d.ts +25 -0
- package/dist/esm/components/ChipChoice/components/ChipChoiceDate.d.ts +15 -0
- package/dist/esm/components/ChipChoice/components/ChipChoiceDateRange.d.ts +15 -0
- package/dist/esm/components/ChipChoice/components/ChipChoiceMultiple.d.ts +8 -0
- package/dist/esm/components/ChipChoice/components/ChipChoiceSingle.d.ts +8 -0
- package/dist/esm/components/ChipChoice/components/index.js +5 -0
- package/dist/esm/components/ChipChoice/constants.d.ts +18 -0
- package/dist/esm/components/ChipChoice/hooks.d.ts +11 -0
- package/dist/esm/components/ChipChoice/index.d.ts +11 -0
- package/dist/esm/components/ChipChoice/styles.module.css +203 -0
- package/dist/esm/components/ChipChoice/types.d.ts +76 -0
- package/dist/esm/components/ChipChoice/utils/index.js +2 -0
- package/dist/esm/components/ChipChoice/utils/options.d.ts +9 -0
- package/dist/esm/components/ChipChoice/utils/typeGuards.d.ts +6 -0
- package/dist/esm/components/ChipChoice/utils/utils.d.ts +19 -0
- package/dist/esm/components/ChipChoiceRow/ChipChoiceRow.d.ts +22 -0
- package/dist/esm/components/ChipChoiceRow/components/ForwardedChipChoice.d.ts +2 -0
- package/dist/esm/components/ChipChoiceRow/components/constants.d.ts +7 -0
- package/dist/esm/components/ChipChoiceRow/components/index.js +1 -0
- package/dist/esm/components/ChipChoiceRow/constants.d.ts +12 -0
- package/dist/esm/components/ChipChoiceRow/index.js +1 -0
- package/dist/esm/components/ChipChoiceRow/styles.module.css +6 -0
- package/dist/esm/components/ChipChoiceRow/types.d.ts +29 -0
- package/dist/esm/components/ChipToggle/ChipToggle.d.ts +13 -0
- package/dist/esm/components/ChipToggle/index.js +1 -0
- package/dist/esm/components/ChipToggle/styles.module.css +219 -0
- package/dist/esm/components/index.js +4 -0
- package/dist/esm/constants.d.ts +37 -0
- package/dist/esm/helperComponents/ButtonClearValue/ButtonClearValue.d.ts +11 -0
- package/dist/esm/helperComponents/ButtonClearValue/styles.module.css +43 -0
- package/dist/esm/helperComponents/index.d.ts +1 -0
- package/dist/esm/helperComponents/index.js +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/styles.module.css +0 -0
- package/dist/esm/types.d.ts +20 -0
- package/package.json +16 -12
- /package/dist/{components → cjs/components}/ChipAssist/ChipAssist.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipAssist/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipAssist/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/components/ChipChoiceBase/ChipChoiceBase.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/components/ChipChoiceBase/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/components/ChipChoiceBase/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/components/ChipChoiceCustom.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/components/ChipChoiceDate.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/components/ChipChoiceDateRange.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/components/ChipChoiceMultiple.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/components/ChipChoiceSingle.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/components/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/constants.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/hooks.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/types.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/utils/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/utils/options.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/utils/typeGuards.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoice/utils/utils.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoiceRow/ChipChoiceRow.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoiceRow/components/ForwardedChipChoice.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoiceRow/components/constants.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoiceRow/components/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoiceRow/constants.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoiceRow/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipChoiceRow/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/ChipChoiceRow/types.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipToggle/ChipToggle.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipToggle/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/ChipToggle/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/index.d.ts +0 -0
- /package/dist/{constants.d.ts → cjs/constants.d.ts} +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ButtonClearValue/ButtonClearValue.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ButtonClearValue/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ButtonClearValue/styles.module.css +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/index.d.ts +0 -0
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{styles.module.css → cjs/styles.module.css} +0 -0
- /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
- /package/dist/{components → esm/components}/ChipAssist/ChipAssist.js +0 -0
- /package/dist/{components/ChipAssist/index.js → esm/components/ChipAssist/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/ChipChoice/components/ChipChoiceBase/ChipChoiceBase.js +0 -0
- /package/dist/{components/ChipChoice/components/ChipChoiceBase/index.js → esm/components/ChipChoice/components/ChipChoiceBase/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/ChipChoice/components/ChipChoiceCustom.js +0 -0
- /package/dist/{components → esm/components}/ChipChoice/components/ChipChoiceDate.js +0 -0
- /package/dist/{components → esm/components}/ChipChoice/components/ChipChoiceDateRange.js +0 -0
- /package/dist/{components → esm/components}/ChipChoice/components/ChipChoiceMultiple.js +0 -0
- /package/dist/{components → esm/components}/ChipChoice/components/ChipChoiceSingle.js +0 -0
- /package/dist/{components/ChipChoice/components/index.js → esm/components/ChipChoice/components/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/ChipChoice/constants.js +0 -0
- /package/dist/{components → esm/components}/ChipChoice/hooks.js +0 -0
- /package/dist/{components → esm/components}/ChipChoice/index.js +0 -0
- /package/dist/{components → esm/components}/ChipChoice/types.js +0 -0
- /package/dist/{components/ChipChoice/utils/index.js → esm/components/ChipChoice/utils/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/ChipChoice/utils/options.js +0 -0
- /package/dist/{components → esm/components}/ChipChoice/utils/typeGuards.js +0 -0
- /package/dist/{components → esm/components}/ChipChoice/utils/utils.js +0 -0
- /package/dist/{components → esm/components}/ChipChoiceRow/ChipChoiceRow.js +0 -0
- /package/dist/{components → esm/components}/ChipChoiceRow/components/ForwardedChipChoice.js +0 -0
- /package/dist/{components → esm/components}/ChipChoiceRow/components/constants.js +0 -0
- /package/dist/{components/ChipChoiceRow/components/index.js → esm/components/ChipChoiceRow/components/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/ChipChoiceRow/constants.js +0 -0
- /package/dist/{components/ChipChoiceRow/index.js → esm/components/ChipChoiceRow/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/ChipChoiceRow/types.js +0 -0
- /package/dist/{components → esm/components}/ChipToggle/ChipToggle.js +0 -0
- /package/dist/{components/ChipToggle/index.js → esm/components/ChipToggle/index.d.ts} +0 -0
- /package/dist/{components/index.js → esm/components/index.d.ts} +0 -0
- /package/dist/{constants.js → esm/constants.js} +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/ButtonClearValue/ButtonClearValue.js +0 -0
- /package/dist/{helperComponents/ButtonClearValue/index.js → esm/helperComponents/ButtonClearValue/index.d.ts} +0 -0
- /package/dist/{helperComponents → esm/helperComponents/ButtonClearValue}/index.js +0 -0
- /package/dist/{index.js → esm/index.d.ts} +0 -0
- /package/dist/{types.js → esm/types.js} +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
12
|
+
return mod && mod.__esModule ? mod : {
|
|
13
|
+
"default": mod
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", {
|
|
17
|
+
value: true
|
|
18
|
+
});
|
|
19
|
+
exports.ChipAssist = ChipAssist;
|
|
20
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
21
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
22
|
+
const loaders_1 = require("@snack-uikit/loaders");
|
|
23
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
24
|
+
const constants_1 = require("../../constants");
|
|
25
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
26
|
+
/** Чип с лейблом */
|
|
27
|
+
function ChipAssist(_a) {
|
|
28
|
+
var {
|
|
29
|
+
icon,
|
|
30
|
+
size = constants_1.SIZE.S,
|
|
31
|
+
label,
|
|
32
|
+
disabled,
|
|
33
|
+
loading,
|
|
34
|
+
onClick,
|
|
35
|
+
className,
|
|
36
|
+
tabIndex
|
|
37
|
+
} = _a,
|
|
38
|
+
rest = __rest(_a, ["icon", "size", "label", "disabled", "loading", "onClick", "className", "tabIndex"]);
|
|
39
|
+
const variant = icon && size !== constants_1.SIZE.Xs ? constants_1.VARIANT.IconBefore : constants_1.VARIANT.LabelOnly;
|
|
40
|
+
const spinnerSize = size === constants_1.SIZE.Xs ? 'xs' : 's';
|
|
41
|
+
const handleClick = e => {
|
|
42
|
+
if (disabled || loading) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(e);
|
|
46
|
+
};
|
|
47
|
+
return (0, jsx_runtime_1.jsxs)("button", Object.assign({
|
|
48
|
+
type: 'button'
|
|
49
|
+
}, (0, utils_1.extractSupportProps)(rest), {
|
|
50
|
+
tabIndex: tabIndex,
|
|
51
|
+
"data-size": size,
|
|
52
|
+
"data-loading": loading || undefined,
|
|
53
|
+
"data-variant": variant,
|
|
54
|
+
disabled: !loading && disabled,
|
|
55
|
+
onClick: handleClick,
|
|
56
|
+
className: (0, classnames_1.default)(styles_module_scss_1.default.assistChip, className),
|
|
57
|
+
children: [variant === constants_1.VARIANT.IconBefore && !loading && (0, jsx_runtime_1.jsx)("span", {
|
|
58
|
+
className: styles_module_scss_1.default.icon,
|
|
59
|
+
"data-test-id": constants_1.CHIP_ASSIST_TEST_IDS.icon,
|
|
60
|
+
children: icon
|
|
61
|
+
}), loading && (0, jsx_runtime_1.jsx)("span", {
|
|
62
|
+
className: styles_module_scss_1.default.spinner,
|
|
63
|
+
"data-test-id": constants_1.CHIP_ASSIST_TEST_IDS.spinner,
|
|
64
|
+
children: (0, jsx_runtime_1.jsx)(loaders_1.Sun, {
|
|
65
|
+
size: spinnerSize
|
|
66
|
+
})
|
|
67
|
+
}), (0, jsx_runtime_1.jsx)("span", {
|
|
68
|
+
className: (0, classnames_1.default)(styles_module_scss_1.default.labelLayout, styles_module_scss_1.default.label),
|
|
69
|
+
"data-test-id": constants_1.CHIP_ASSIST_TEST_IDS.label,
|
|
70
|
+
children: label
|
|
71
|
+
})]
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return m[k];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
} : function (o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
});
|
|
19
|
+
var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
});
|
|
25
|
+
__exportStar(require("./ChipAssist"), exports);
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
12
|
+
return mod && mod.__esModule ? mod : {
|
|
13
|
+
"default": mod
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", {
|
|
17
|
+
value: true
|
|
18
|
+
});
|
|
19
|
+
exports.ChipChoiceBase = void 0;
|
|
20
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
21
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
22
|
+
const merge_refs_1 = __importDefault(require("merge-refs"));
|
|
23
|
+
const react_1 = require("react");
|
|
24
|
+
const loaders_1 = require("@snack-uikit/loaders");
|
|
25
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
26
|
+
const constants_1 = require("../../../../constants");
|
|
27
|
+
const helperComponents_1 = require("../../../../helperComponents");
|
|
28
|
+
const constants_2 = require("../../constants");
|
|
29
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
30
|
+
exports.ChipChoiceBase = (0, react_1.forwardRef)((_a, ref) => {
|
|
31
|
+
var {
|
|
32
|
+
size = constants_1.SIZE.S,
|
|
33
|
+
disabled,
|
|
34
|
+
loading,
|
|
35
|
+
icon,
|
|
36
|
+
label,
|
|
37
|
+
valueToRender,
|
|
38
|
+
value,
|
|
39
|
+
onClick,
|
|
40
|
+
className,
|
|
41
|
+
tabIndex = 0,
|
|
42
|
+
onClearButtonClick,
|
|
43
|
+
onKeyDown,
|
|
44
|
+
showClearButton: showClearButtonProp = true
|
|
45
|
+
} = _a,
|
|
46
|
+
rest = __rest(_a, ["size", "disabled", "loading", "icon", "label", "valueToRender", "value", "onClick", "className", "tabIndex", "onClearButtonClick", "onKeyDown", "showClearButton"]);
|
|
47
|
+
const variant = icon && size !== constants_1.SIZE.Xs ? constants_1.VARIANT.IconBefore : constants_1.VARIANT.LabelOnly;
|
|
48
|
+
const spinnerSize = size === constants_1.SIZE.Xs ? 'xs' : 's';
|
|
49
|
+
const localRef = (0, react_1.useRef)(null);
|
|
50
|
+
const clearButtonRef = (0, react_1.useRef)(null);
|
|
51
|
+
const [isDroplistOpened, setIsDroplistOpened] = (0, react_1.useState)(false);
|
|
52
|
+
const handleChipClick = e => {
|
|
53
|
+
if (loading || disabled) return;
|
|
54
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(e);
|
|
55
|
+
!isDroplistOpened && setIsDroplistOpened(true);
|
|
56
|
+
};
|
|
57
|
+
const handleChipKeyDown = e => {
|
|
58
|
+
var _a;
|
|
59
|
+
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);
|
|
60
|
+
if (e.key === 'ArrowRight') {
|
|
61
|
+
(_a = clearButtonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
62
|
+
e.stopPropagation();
|
|
63
|
+
e.preventDefault();
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const handleClearButtonClick = e => {
|
|
67
|
+
onClearButtonClick === null || onClearButtonClick === void 0 ? void 0 : onClearButtonClick(e);
|
|
68
|
+
};
|
|
69
|
+
const handleClearButtonKeyDown = e => {
|
|
70
|
+
var _a;
|
|
71
|
+
switch (e.key) {
|
|
72
|
+
case 'ArrowLeft':
|
|
73
|
+
{
|
|
74
|
+
(_a = localRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
case 'Enter':
|
|
78
|
+
case ' ':
|
|
79
|
+
{
|
|
80
|
+
e.stopPropagation();
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
default:
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const showClearButton = showClearButtonProp && (value instanceof Date || Boolean(value));
|
|
88
|
+
return (0, jsx_runtime_1.jsxs)("div", Object.assign({}, (0, utils_1.extractSupportProps)(rest), {
|
|
89
|
+
role: 'button',
|
|
90
|
+
ref: (0, merge_refs_1.default)(localRef, ref),
|
|
91
|
+
className: (0, classnames_1.default)(styles_module_scss_1.default.choiceChip, className),
|
|
92
|
+
"data-size": size,
|
|
93
|
+
"data-variant": variant,
|
|
94
|
+
"data-loading": loading || undefined,
|
|
95
|
+
"data-disabled": !loading && disabled || undefined,
|
|
96
|
+
onClick: handleChipClick,
|
|
97
|
+
onKeyDown: handleChipKeyDown,
|
|
98
|
+
tabIndex: tabIndex,
|
|
99
|
+
children: [variant === constants_1.VARIANT.IconBefore && (0, jsx_runtime_1.jsx)("span", {
|
|
100
|
+
className: styles_module_scss_1.default.icon,
|
|
101
|
+
"data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.icon,
|
|
102
|
+
children: icon
|
|
103
|
+
}), (0, jsx_runtime_1.jsxs)("span", {
|
|
104
|
+
className: styles_module_scss_1.default.labelLayout,
|
|
105
|
+
children: [label && (0, jsx_runtime_1.jsx)("span", {
|
|
106
|
+
className: styles_module_scss_1.default.label,
|
|
107
|
+
"data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.label,
|
|
108
|
+
children: label + ': '
|
|
109
|
+
}), loading ? (0, jsx_runtime_1.jsx)("span", {
|
|
110
|
+
className: styles_module_scss_1.default.spinner,
|
|
111
|
+
"data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.spinner,
|
|
112
|
+
children: (0, jsx_runtime_1.jsx)(loaders_1.Sun, {
|
|
113
|
+
size: spinnerSize
|
|
114
|
+
})
|
|
115
|
+
}) : (0, jsx_runtime_1.jsx)("span", {
|
|
116
|
+
className: styles_module_scss_1.default.value,
|
|
117
|
+
"data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.value,
|
|
118
|
+
children: valueToRender !== null && valueToRender !== void 0 ? valueToRender : value
|
|
119
|
+
})]
|
|
120
|
+
}), !disabled && !loading && showClearButton && (0, jsx_runtime_1.jsx)(helperComponents_1.ButtonClearValue, {
|
|
121
|
+
size: constants_2.BUTTON_CLEAR_VALUE_SIZE_MAP[size],
|
|
122
|
+
onClick: handleClearButtonClick,
|
|
123
|
+
"data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.clearButton,
|
|
124
|
+
onKeyDown: handleClearButtonKeyDown,
|
|
125
|
+
ref: clearButtonRef
|
|
126
|
+
})]
|
|
127
|
+
}));
|
|
128
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return m[k];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
} : function (o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
});
|
|
19
|
+
var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
});
|
|
25
|
+
__exportStar(require("./ChipChoiceBase"), exports);
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", {
|
|
12
|
+
value: true
|
|
13
|
+
});
|
|
14
|
+
exports.ChipChoiceCustom = ChipChoiceCustom;
|
|
15
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
const react_1 = require("react");
|
|
17
|
+
const dropdown_1 = require("@snack-uikit/dropdown");
|
|
18
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
19
|
+
const constants_1 = require("../../../constants");
|
|
20
|
+
const hooks_1 = require("../hooks");
|
|
21
|
+
const ChipChoiceBase_1 = require("./ChipChoiceBase");
|
|
22
|
+
function ChipChoiceCustom(_a) {
|
|
23
|
+
var _b;
|
|
24
|
+
var {
|
|
25
|
+
size = constants_1.SIZE.S,
|
|
26
|
+
value: valueProp,
|
|
27
|
+
onChange: onChangeProp,
|
|
28
|
+
placement = 'bottom-start',
|
|
29
|
+
widthStrategy = 'gte',
|
|
30
|
+
content,
|
|
31
|
+
valueRender
|
|
32
|
+
} = _a,
|
|
33
|
+
rest = __rest(_a, ["size", "value", "onChange", "placement", "widthStrategy", "content", "valueRender"]);
|
|
34
|
+
const localRef = (0, react_1.useRef)(null);
|
|
35
|
+
const [value, setValue] = (0, utils_1.useValueControl)({
|
|
36
|
+
value: valueProp,
|
|
37
|
+
onChange: onChangeProp
|
|
38
|
+
});
|
|
39
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
|
40
|
+
const handleOnKeyDown = (0, hooks_1.useHandleOnKeyDown)({
|
|
41
|
+
setOpen
|
|
42
|
+
});
|
|
43
|
+
const closeDroplist = (0, react_1.useCallback)(() => {
|
|
44
|
+
setOpen(false);
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
var _a;
|
|
47
|
+
return (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
48
|
+
}, 0);
|
|
49
|
+
}, []);
|
|
50
|
+
const clearValue = () => {
|
|
51
|
+
setValue === null || setValue === void 0 ? void 0 : setValue(undefined);
|
|
52
|
+
closeDroplist();
|
|
53
|
+
};
|
|
54
|
+
return (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, {
|
|
55
|
+
trigger: 'click',
|
|
56
|
+
widthStrategy: widthStrategy,
|
|
57
|
+
placement: placement,
|
|
58
|
+
outsideClick: true,
|
|
59
|
+
triggerRef: localRef,
|
|
60
|
+
open: open,
|
|
61
|
+
onOpenChange: setOpen,
|
|
62
|
+
"data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.droplist,
|
|
63
|
+
content: typeof content === 'function' ? content({
|
|
64
|
+
closeDroplist,
|
|
65
|
+
value,
|
|
66
|
+
onChange: setValue
|
|
67
|
+
}) : content,
|
|
68
|
+
children: (0, jsx_runtime_1.jsx)(ChipChoiceBase_1.ChipChoiceBase, Object.assign({}, rest, {
|
|
69
|
+
valueToRender: (_b = valueRender === null || valueRender === void 0 ? void 0 : valueRender(value)) !== null && _b !== void 0 ? _b : value,
|
|
70
|
+
onClearButtonClick: clearValue,
|
|
71
|
+
ref: localRef,
|
|
72
|
+
value: value,
|
|
73
|
+
size: size,
|
|
74
|
+
onKeyDown: handleOnKeyDown()
|
|
75
|
+
}))
|
|
76
|
+
});
|
|
77
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", {
|
|
12
|
+
value: true
|
|
13
|
+
});
|
|
14
|
+
exports.ChipChoiceDate = ChipChoiceDate;
|
|
15
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
const react_1 = require("react");
|
|
17
|
+
const calendar_1 = require("@snack-uikit/calendar");
|
|
18
|
+
const dropdown_1 = require("@snack-uikit/dropdown");
|
|
19
|
+
const locale_1 = require("@snack-uikit/locale");
|
|
20
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
21
|
+
const constants_1 = require("../../../constants");
|
|
22
|
+
const constants_2 = require("../constants");
|
|
23
|
+
const hooks_1 = require("../hooks");
|
|
24
|
+
const ChipChoiceBase_1 = require("./ChipChoiceBase");
|
|
25
|
+
function ChipChoiceDate(_a) {
|
|
26
|
+
var {
|
|
27
|
+
size = constants_1.SIZE.S,
|
|
28
|
+
value,
|
|
29
|
+
defaultValue,
|
|
30
|
+
onChange,
|
|
31
|
+
valueRender,
|
|
32
|
+
dropDownClassName,
|
|
33
|
+
mode = 'date'
|
|
34
|
+
} = _a,
|
|
35
|
+
rest = __rest(_a, ["size", "value", "defaultValue", "onChange", "valueRender", "dropDownClassName", "mode"]);
|
|
36
|
+
const [selectedValue, setSelectedValue] = (0, utils_1.useValueControl)({
|
|
37
|
+
value,
|
|
38
|
+
defaultValue,
|
|
39
|
+
onChange
|
|
40
|
+
});
|
|
41
|
+
const localRef = (0, react_1.useRef)(null);
|
|
42
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
|
43
|
+
const handleOnKeyDown = (0, hooks_1.useHandleOnKeyDown)({
|
|
44
|
+
setOpen
|
|
45
|
+
});
|
|
46
|
+
const closeDroplist = (0, react_1.useCallback)(() => {
|
|
47
|
+
setOpen(false);
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
var _a;
|
|
50
|
+
return (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
51
|
+
}, 0);
|
|
52
|
+
}, []);
|
|
53
|
+
const {
|
|
54
|
+
t
|
|
55
|
+
} = (0, locale_1.useLocale)('Chips');
|
|
56
|
+
const valueToRender = valueRender ? valueRender(selectedValue) : selectedValue && new Date(selectedValue).toLocaleDateString() || t('allLabel');
|
|
57
|
+
const clearValue = () => setSelectedValue(undefined);
|
|
58
|
+
return (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, {
|
|
59
|
+
content: (0, jsx_runtime_1.jsx)(calendar_1.Calendar, {
|
|
60
|
+
mode: mode,
|
|
61
|
+
size: constants_2.CALENDAR_SIZE_MAP[size],
|
|
62
|
+
value: selectedValue,
|
|
63
|
+
onChangeValue: value => {
|
|
64
|
+
setSelectedValue(value);
|
|
65
|
+
closeDroplist();
|
|
66
|
+
},
|
|
67
|
+
navigationStartRef: element => element === null || element === void 0 ? void 0 : element.focus(),
|
|
68
|
+
onFocusLeave: closeDroplist
|
|
69
|
+
}),
|
|
70
|
+
outsideClick: true,
|
|
71
|
+
triggerRef: localRef,
|
|
72
|
+
open: open,
|
|
73
|
+
onOpenChange: setOpen,
|
|
74
|
+
className: dropDownClassName,
|
|
75
|
+
"data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.droplist,
|
|
76
|
+
children: (0, jsx_runtime_1.jsx)(ChipChoiceBase_1.ChipChoiceBase, Object.assign({}, rest, {
|
|
77
|
+
ref: localRef,
|
|
78
|
+
onClearButtonClick: clearValue,
|
|
79
|
+
value: selectedValue,
|
|
80
|
+
valueToRender: valueToRender,
|
|
81
|
+
size: size,
|
|
82
|
+
onKeyDown: handleOnKeyDown()
|
|
83
|
+
}))
|
|
84
|
+
});
|
|
85
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", {
|
|
12
|
+
value: true
|
|
13
|
+
});
|
|
14
|
+
exports.ChipChoiceDateRange = ChipChoiceDateRange;
|
|
15
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
const react_1 = require("react");
|
|
17
|
+
const uncontrollable_1 = require("uncontrollable");
|
|
18
|
+
const calendar_1 = require("@snack-uikit/calendar");
|
|
19
|
+
const dropdown_1 = require("@snack-uikit/dropdown");
|
|
20
|
+
const locale_1 = require("@snack-uikit/locale");
|
|
21
|
+
const constants_1 = require("../../../constants");
|
|
22
|
+
const constants_2 = require("../constants");
|
|
23
|
+
const hooks_1 = require("../hooks");
|
|
24
|
+
const ChipChoiceBase_1 = require("./ChipChoiceBase");
|
|
25
|
+
function defaultRangeFormatter(_ref) {
|
|
26
|
+
let {
|
|
27
|
+
value,
|
|
28
|
+
allLabel
|
|
29
|
+
} = _ref;
|
|
30
|
+
if (!value || !value.length) return allLabel;
|
|
31
|
+
const [from, to] = value;
|
|
32
|
+
return `${from.toLocaleDateString()} ${constants_1.DEFAULT_EMPTY_VALUE} ${to.toLocaleDateString()}`;
|
|
33
|
+
}
|
|
34
|
+
function ChipChoiceDateRange(_a) {
|
|
35
|
+
var {
|
|
36
|
+
size = constants_1.SIZE.S,
|
|
37
|
+
value,
|
|
38
|
+
defaultValue,
|
|
39
|
+
onChange,
|
|
40
|
+
valueRender,
|
|
41
|
+
dropDownClassName
|
|
42
|
+
} = _a,
|
|
43
|
+
rest = __rest(_a, ["size", "value", "defaultValue", "onChange", "valueRender", "dropDownClassName"]);
|
|
44
|
+
const [selectedValue, setSelectedValue] = (0, uncontrollable_1.useUncontrolledProp)(value, defaultValue, onChange);
|
|
45
|
+
const {
|
|
46
|
+
t
|
|
47
|
+
} = (0, locale_1.useLocale)('Chips');
|
|
48
|
+
const valueToRender = valueRender ? valueRender(selectedValue) : defaultRangeFormatter({
|
|
49
|
+
value: selectedValue,
|
|
50
|
+
allLabel: t('allLabel')
|
|
51
|
+
});
|
|
52
|
+
const clearValue = () => setSelectedValue(undefined);
|
|
53
|
+
const localRef = (0, react_1.useRef)(null);
|
|
54
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
|
55
|
+
const closeDroplist = (0, react_1.useCallback)(() => {
|
|
56
|
+
setOpen(false);
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
var _a;
|
|
59
|
+
return (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
60
|
+
}, 0);
|
|
61
|
+
}, []);
|
|
62
|
+
const handleOnKeyDown = (0, hooks_1.useHandleOnKeyDown)({
|
|
63
|
+
setOpen
|
|
64
|
+
});
|
|
65
|
+
return (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, {
|
|
66
|
+
content: (0, jsx_runtime_1.jsx)(calendar_1.Calendar, {
|
|
67
|
+
mode: 'range',
|
|
68
|
+
size: constants_2.CALENDAR_SIZE_MAP[size],
|
|
69
|
+
value: selectedValue,
|
|
70
|
+
onChangeValue: value => {
|
|
71
|
+
setSelectedValue(value);
|
|
72
|
+
closeDroplist();
|
|
73
|
+
},
|
|
74
|
+
// bug with focus
|
|
75
|
+
// navigationStartRef={element => element?.focus()}
|
|
76
|
+
onFocusLeave: closeDroplist
|
|
77
|
+
}),
|
|
78
|
+
outsideClick: true,
|
|
79
|
+
triggerRef: localRef,
|
|
80
|
+
open: open,
|
|
81
|
+
"data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.droplist,
|
|
82
|
+
onOpenChange: setOpen,
|
|
83
|
+
className: dropDownClassName,
|
|
84
|
+
children: (0, jsx_runtime_1.jsx)(ChipChoiceBase_1.ChipChoiceBase, Object.assign({}, rest, {
|
|
85
|
+
ref: localRef,
|
|
86
|
+
onClearButtonClick: clearValue,
|
|
87
|
+
value: selectedValue,
|
|
88
|
+
valueToRender: valueToRender,
|
|
89
|
+
size: size,
|
|
90
|
+
onKeyDown: handleOnKeyDown()
|
|
91
|
+
}))
|
|
92
|
+
});
|
|
93
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", {
|
|
12
|
+
value: true
|
|
13
|
+
});
|
|
14
|
+
exports.ChipChoiceMultiple = ChipChoiceMultiple;
|
|
15
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
const react_1 = require("react");
|
|
17
|
+
const list_1 = require("@snack-uikit/list");
|
|
18
|
+
const locale_1 = require("@snack-uikit/locale");
|
|
19
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
20
|
+
const constants_1 = require("../../../constants");
|
|
21
|
+
const constants_2 = require("../constants");
|
|
22
|
+
const hooks_1 = require("../hooks");
|
|
23
|
+
const utils_2 = require("../utils");
|
|
24
|
+
const options_1 = require("../utils/options");
|
|
25
|
+
const ChipChoiceBase_1 = require("./ChipChoiceBase");
|
|
26
|
+
const defaultMultiValueLabelFormatter = _ref => {
|
|
27
|
+
let {
|
|
28
|
+
value,
|
|
29
|
+
total,
|
|
30
|
+
allLabel
|
|
31
|
+
} = _ref;
|
|
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 ChipChoiceMultiple(_a) {
|
|
42
|
+
var {
|
|
43
|
+
value: valueProp,
|
|
44
|
+
defaultValue,
|
|
45
|
+
options,
|
|
46
|
+
onChange: onChangeProp,
|
|
47
|
+
valueRender,
|
|
48
|
+
size = constants_1.SIZE.S,
|
|
49
|
+
label,
|
|
50
|
+
searchable,
|
|
51
|
+
contentRender,
|
|
52
|
+
dropDownClassName,
|
|
53
|
+
showClearButton = true,
|
|
54
|
+
resetSearchOnOptionSelection = true
|
|
55
|
+
} = _a,
|
|
56
|
+
rest = __rest(_a, ["value", "defaultValue", "options", "onChange", "valueRender", "size", "label", "searchable", "contentRender", "dropDownClassName", "showClearButton", "resetSearchOnOptionSelection"]);
|
|
57
|
+
const [value, setValue] = (0, utils_1.useValueControl)({
|
|
58
|
+
value: valueProp,
|
|
59
|
+
defaultValue,
|
|
60
|
+
onChange: onChangeProp
|
|
61
|
+
});
|
|
62
|
+
const flattenOptions = (0, react_1.useMemo)(() => {
|
|
63
|
+
const {
|
|
64
|
+
flattenOptions
|
|
65
|
+
} = (0, utils_2.kindFlattenOptions)({
|
|
66
|
+
options
|
|
67
|
+
});
|
|
68
|
+
return flattenOptions;
|
|
69
|
+
}, [options]);
|
|
70
|
+
const [searchValue = '', setSearchValue] = (0, react_1.useState)('');
|
|
71
|
+
const {
|
|
72
|
+
t
|
|
73
|
+
} = (0, locale_1.useLocale)('Chips');
|
|
74
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
|
75
|
+
const handleOnKeyDown = (0, hooks_1.useHandleOnKeyDown)({
|
|
76
|
+
setOpen
|
|
77
|
+
});
|
|
78
|
+
const flatMapOptions = (0, react_1.useMemo)(() => Object.values(flattenOptions), [flattenOptions]);
|
|
79
|
+
const selectedOptions = (0, react_1.useMemo)(() => value && value.length ? value.map(id => flattenOptions[id]).filter(Boolean) : [], [flattenOptions, value]);
|
|
80
|
+
const valueToRender = valueRender ? valueRender(selectedOptions) : defaultMultiValueLabelFormatter({
|
|
81
|
+
value: selectedOptions !== null && selectedOptions !== void 0 ? selectedOptions : [],
|
|
82
|
+
total: Object.keys(flattenOptions).length,
|
|
83
|
+
allLabel: t('allLabel')
|
|
84
|
+
});
|
|
85
|
+
const fuzzySearch = (0, hooks_1.useFuzzySearch)(options, flatMapOptions);
|
|
86
|
+
const result = (0, react_1.useMemo)(() => !searchable || valueToRender === searchValue ? options : fuzzySearch(searchValue), [fuzzySearch, options, searchValue, searchable, valueToRender]);
|
|
87
|
+
const items = (0, react_1.useMemo)(() => (0, options_1.transformOptionsToItems)(result, contentRender), [contentRender, result]);
|
|
88
|
+
const clearValue = () => setValue([]);
|
|
89
|
+
const chipRef = (0, react_1.useRef)(null);
|
|
90
|
+
const listRef = (0, react_1.useRef)(null);
|
|
91
|
+
const handleSelectionChange = (0, react_1.useCallback)(newValue => {
|
|
92
|
+
var _a;
|
|
93
|
+
if (newValue !== undefined) {
|
|
94
|
+
setValue(newValue);
|
|
95
|
+
if (searchValue) {
|
|
96
|
+
(_a = listRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
97
|
+
}
|
|
98
|
+
if (resetSearchOnOptionSelection) {
|
|
99
|
+
setSearchValue('');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}, [searchValue, setValue, resetSearchOnOptionSelection]);
|
|
103
|
+
(0, react_1.useEffect)(() => {
|
|
104
|
+
if (searchValue && !open) {
|
|
105
|
+
setSearchValue('');
|
|
106
|
+
}
|
|
107
|
+
}, [searchable, open, searchValue]);
|
|
108
|
+
return (0, jsx_runtime_1.jsx)(list_1.Droplist, Object.assign({}, rest, {
|
|
109
|
+
items: items,
|
|
110
|
+
selection: {
|
|
111
|
+
value,
|
|
112
|
+
onChange: handleSelectionChange,
|
|
113
|
+
mode: 'multiple'
|
|
114
|
+
},
|
|
115
|
+
trigger: 'clickAndFocusVisible',
|
|
116
|
+
placement: 'bottom-start',
|
|
117
|
+
widthStrategy: 'gte',
|
|
118
|
+
listRef: listRef,
|
|
119
|
+
size: constants_2.DROPLIST_SIZE_MAP[size],
|
|
120
|
+
"data-test-id": constants_1.CHIP_CHOICE_TEST_IDS.droplist,
|
|
121
|
+
open: open,
|
|
122
|
+
onOpenChange: open => {
|
|
123
|
+
if (!open) {
|
|
124
|
+
setSearchValue('');
|
|
125
|
+
}
|
|
126
|
+
setOpen(open);
|
|
127
|
+
},
|
|
128
|
+
scroll: true,
|
|
129
|
+
className: dropDownClassName,
|
|
130
|
+
search: searchable ? {
|
|
131
|
+
value: searchValue,
|
|
132
|
+
onChange: setSearchValue
|
|
133
|
+
} : undefined,
|
|
134
|
+
children: (0, jsx_runtime_1.jsx)(ChipChoiceBase_1.ChipChoiceBase, Object.assign({}, rest, {
|
|
135
|
+
ref: chipRef,
|
|
136
|
+
onClearButtonClick: clearValue,
|
|
137
|
+
value: value,
|
|
138
|
+
showClearButton: showClearButton && !(Array.isArray(value) && [0].includes(value.length)),
|
|
139
|
+
valueToRender: valueToRender,
|
|
140
|
+
label: label,
|
|
141
|
+
loading: rest.loading,
|
|
142
|
+
size: size,
|
|
143
|
+
onKeyDown: handleOnKeyDown()
|
|
144
|
+
}))
|
|
145
|
+
}));
|
|
146
|
+
}
|