@homecode/ui 4.29.1 → 4.30.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/esm/index.js +1 -0
- package/dist/esm/src/components/Autocomplete/Autocomplete.js +2 -1
- package/dist/esm/src/components/Chip/Chip.js +17 -0
- package/dist/esm/src/components/Chip/Chip.styl.js +7 -0
- package/dist/esm/src/components/InputFile/InputFile.js +2 -1
- package/dist/esm/src/components/Select/Select.styl.js +2 -2
- package/dist/esm/src/components/Select/Select2.js +29 -6
- package/dist/esm/types/src/components/Chip/Chip.d.ts +13 -0
- package/dist/esm/types/src/components/Select/Select.types.d.ts +2 -0
- package/dist/esm/types/src/components/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export { Button } from './src/components/Button/Button.js';
|
|
|
4
4
|
export { ButtonGroup } from './src/components/ButtonGroup/ButtonGroup.js';
|
|
5
5
|
export { Calendar } from './src/components/Calendar/Calendar.js';
|
|
6
6
|
export { Checkbox } from './src/components/Checkbox/Checkbox.js';
|
|
7
|
+
export { Chip } from './src/components/Chip/Chip.js';
|
|
7
8
|
export { Container } from './src/components/Container/Container.js';
|
|
8
9
|
export { DatePicker } from './src/components/DatePicker/DatePicker.js';
|
|
9
10
|
export { DatePickerInput } from './src/components/DatePickerInput/DatePickerInput.js';
|
|
@@ -26,6 +26,8 @@ import 'justorm/react';
|
|
|
26
26
|
import 'lodash.omit';
|
|
27
27
|
import 'nanoid';
|
|
28
28
|
import '../Checkbox/Checkbox.styl.js';
|
|
29
|
+
import '../Chip/Chip.styl.js';
|
|
30
|
+
import '../Tooltip/Tooltip.styl.js';
|
|
29
31
|
import '../Container/Container.js';
|
|
30
32
|
import '../DatePicker/DatePicker.styl.js';
|
|
31
33
|
import 'moment';
|
|
@@ -54,7 +56,6 @@ import '../ProgressCircular/ProgressCircular.styl.js';
|
|
|
54
56
|
import '../Router/Router.js';
|
|
55
57
|
import '../Table/Table.styl.js';
|
|
56
58
|
import '../Tabs/Tabs.styl.js';
|
|
57
|
-
import '../Tooltip/Tooltip.styl.js';
|
|
58
59
|
import '../Text/Text.js';
|
|
59
60
|
import '../Virtualized/Virtualized.styl.js';
|
|
60
61
|
import '../Virtualized/List/List.styl.js';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
import { Button } from '../Button/Button.js';
|
|
4
|
+
import S from './Chip.styl.js';
|
|
5
|
+
import { Tooltip } from '../Tooltip/Tooltip.js';
|
|
6
|
+
import { Icon } from '../Icon/Icon.js';
|
|
7
|
+
|
|
8
|
+
function Chip({ children, className, selected, onRemove, onClick, removeTooltip, size = 'm', }) {
|
|
9
|
+
const buttonSize = size === 'xs' ? 's' : size;
|
|
10
|
+
const closeIcon = jsx(Icon, { type: "close", size: buttonSize });
|
|
11
|
+
return (jsxs("div", { className: cn(S.chip, S[`size_${size}`], className, selected && S.selected), onClick: onClick, children: [jsx("span", { className: S.content, children: children }), onRemove && (jsx(Button, { round: true, square: true, variant: "clear", size: buttonSize, className: S.remove, onClick: e => {
|
|
12
|
+
e.stopPropagation();
|
|
13
|
+
onRemove();
|
|
14
|
+
}, children: removeTooltip ? (jsx(Tooltip, { content: removeTooltip, children: closeIcon })) : (closeIcon) }))] }));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { Chip };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".Chip_chip__DXD0C{align-items:center;background:var(--accent-color-alpha-100);cursor:pointer;display:inline-flex;gap:2px;transition:background .2s ease}.Chip_chip__DXD0C:hover{background:var(--accent-color-alpha-200)}.Chip_size_xs__IbN1f{border-radius:var(--indent-xs);font-size:12px;padding-left:var(--indent-xs)}.Chip_size_s__ERE3z{border-radius:var(--indent-s);font-size:16px;padding-left:var(--indent-s)}.Chip_size_m__F2Bbw{border-radius:var(--indent-m);font-size:20px;padding-left:var(--indent-m)}.Chip_size_l__YgtcF{border-radius:var(--indent-l);font-size:24px;padding-left:var(--indent-l)}.Chip_selected__UcBat,.Chip_selected__UcBat:hover{background:var(--accent-color-alpha-300)}.Chip_content__2xloA,.Chip_remove__vqyOL{align-items:center;display:flex}.Chip_remove__vqyOL{justify-content:center;opacity:.3;transform:scale(.6);transition:opacity .2s ease,transform .1s ease}.Chip_remove__vqyOL:hover{background-color:var(--danger-color-alpha-300);transform:scale(.8)}.Chip_remove__vqyOL svg{transform:scale(.8)}.Chip_chip__DXD0C:hover .Chip_remove__vqyOL{opacity:1}";
|
|
4
|
+
var S = {"chip":"Chip_chip__DXD0C","size_xs":"Chip_size_xs__IbN1f","size_s":"Chip_size_s__ERE3z","size_m":"Chip_size_m__F2Bbw","size_l":"Chip_size_l__YgtcF","selected":"Chip_selected__UcBat","content":"Chip_content__2xloA","remove":"Chip_remove__vqyOL"};
|
|
5
|
+
styleInject(css_248z);
|
|
6
|
+
|
|
7
|
+
export { S as default };
|
|
@@ -30,6 +30,8 @@ import '../RequiredStar/RequiredStar.styl.js';
|
|
|
30
30
|
import '../Select/Select.styl.js';
|
|
31
31
|
import 'lodash.omit';
|
|
32
32
|
import '../Checkbox/Checkbox.styl.js';
|
|
33
|
+
import '../Chip/Chip.styl.js';
|
|
34
|
+
import '../Tooltip/Tooltip.styl.js';
|
|
33
35
|
import '../Container/Container.js';
|
|
34
36
|
import '../DatePicker/DatePicker.styl.js';
|
|
35
37
|
import 'moment';
|
|
@@ -53,7 +55,6 @@ import '../ProgressCircular/ProgressCircular.styl.js';
|
|
|
53
55
|
import '../Router/Router.js';
|
|
54
56
|
import '../Table/Table.styl.js';
|
|
55
57
|
import '../Tabs/Tabs.styl.js';
|
|
56
|
-
import '../Tooltip/Tooltip.styl.js';
|
|
57
58
|
import '../Text/Text.js';
|
|
58
59
|
import '../Virtualized/Virtualized.styl.js';
|
|
59
60
|
import '../Virtualized/List/List.styl.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".Select_root__mjOjv{max-height:200px;max-width:100%;position:relative}.Select_root__mjOjv.Select_disabled__AlOQi{opacity:.4;pointer-events:none}.Select_additionalLabel__K0--Z{flex-grow:1;overflow:hidden;text-align:left;text-overflow:ellipsis}.Select_trigger__OH48f{position:relative;z-index:1}.Select_triggerArrow__1LEop{flex-shrink:0;margin-left:.3em;margin-right:-.3em;transition:transform .2s ease-out}.Select_triggerArrow__1LEop.Select_isOpen__WlMUH{transform:rotateX(-180deg)}.Select_disabled__AlOQi .Select_triggerArrow__1LEop{color:var(--text3-color)}.Select_triggerButton__lErtt{justify-content:space-between;text-align:left;width:100%}.Select_triggerButton__lErtt.Select_hasTriggerArrow__vPLad>span{max-width:calc(100% - 22px)}.Select_triggerButton__lErtt.Select_isError__WJJLq{box-shadow:inset 0 0 0 2px var(--danger-color)}.Select_triggerButton__lErtt .Select_triggerButtonLabel__XXLzh{line-height:1.2em;opacity:0;overflow:hidden;text-overflow:ellipsis}.Select_triggerButton__lErtt .Select_triggerButtonLabel__XXLzh.Select_hasSelected__zQhBV{opacity:1}.Select_presetPanel__Yu94r{box-shadow:inset 0 -1px 0 var(--decent-color-alpha-100);display:flex;padding:5px}.Select_presetButton__BAl0q{flex-grow:1;justify-content:center}.Select_presetButton__BAl0q+.Select_presetButton__BAl0q{margin-left:8px}.Select_options__3C0-v{max-height:200px;overflow-y:auto}.keyboard .Select_options__3C0-v{pointer-events:none}.Select_option__iJkfJ{align-items:center;cursor:pointer;display:flex;overflow:hidden;padding-bottom:0!important;padding-top:0!important;position:relative;text-align:left;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap;width:100%}.Select_isTree__SiTaD .Select_option__iJkfJ{min-height:36px}.Select_size-s__qBK9t .Select_option__iJkfJ{font-size:12px;height:26px;padding:0 14px}.Select_size-m__jp7n- .Select_option__iJkfJ{font-size:16px;height:34px;padding:0 16px}.Select_size-l__b4EEy .Select_option__iJkfJ{font-size:20px;height:42px;padding:0 18px}.Select_size-xl__0OerX .Select_option__iJkfJ{font-size:24px;height:50px;padding:0 20px}.Select_option__iJkfJ:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.Select_option__iJkfJ:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.Select_isTree__SiTaD .Select_option__iJkfJ{padding-left:30px}.Select_option__iJkfJ.Select_isGroup__aP1lY{color:var(--accent-color);font-weight:500;pointer-events:none}.Select_isExpanded__rG8R1>.Select_option__iJkfJ{display:flex}.Select_option__iJkfJ>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Select_option__iJkfJ:before{content:\"\";display:inline-block}.Select_option__iJkfJ.Select_level-0__vu03A:before{content:none}.Select_option__iJkfJ.Select_level-1__ozH2U:before{min-width:24px;width:24px}.Select_option__iJkfJ.Select_level-2__XDqeh:before{min-width:48px;width:48px}.Select_option__iJkfJ.Select_level-3__Bc9XS:before{min-width:72px;width:72px}.Select_option__iJkfJ.Select_level-4__KfQcQ:before{min-width:96px;width:96px}.Select_option__iJkfJ.Select_level-5__DGSDM:before{min-width:120px;width:120px}.Select_option__iJkfJ.Select_level-6__p688A:before{min-width:144px;width:144px}.Select_option__iJkfJ.Select_isIndeterminate__dy-xV,.Select_option__iJkfJ.Select_isSelected__n3ZeN{background-color:var(--active-color-alpha-500)}.keyboard .Select_option__iJkfJ.Select_isFocused__oZSgY,.pointer .Select_option__iJkfJ:hover{box-shadow:inset 100vw 0 0 0 var(--accent-color-alpha-200)}.Select_expandButton__UTwlR{background-color:transparent!important;display:flex;height:100%;justify-content:flex-end;overflow:visible;padding:0;position:relative;width:30px}.Select_expandButton__UTwlR:before{content:\"\";display:block;height:calc(100% + 20px);position:absolute;right:0;top:-10;width:100px}.Select_size-m__jp7n- .Select_expandButton__UTwlR{margin-left:-40px}.Select_size-l__b4EEy .Select_expandButton__UTwlR{margin-left:-46px}.Select_expandIcon__gWAIB{-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .1s ease-out}.Select_isExpanded__rG8R1 .Select_expandIcon__gWAIB{transform:rotate(90deg) translateZ(0)}.Select_expandButton__UTwlR:hover .Select_expandIcon__gWAIB{color:var(--primary-color)}@keyframes Select_fadeIn__QpAwZ{0%{opacity:0}10%{opacity:0}to{opacity:1}}";
|
|
4
|
-
var S = {"root":"Select_root__mjOjv","disabled":"Select_disabled__AlOQi","additionalLabel":"Select_additionalLabel__K0--Z","trigger":"Select_trigger__OH48f","triggerArrow":"Select_triggerArrow__1LEop","isOpen":"Select_isOpen__WlMUH","triggerButton":"Select_triggerButton__lErtt","hasTriggerArrow":"Select_hasTriggerArrow__vPLad","isError":"Select_isError__WJJLq","triggerButtonLabel":"Select_triggerButtonLabel__XXLzh","hasSelected":"Select_hasSelected__zQhBV","presetPanel":"Select_presetPanel__Yu94r","presetButton":"Select_presetButton__BAl0q","options":"Select_options__3C0-v","option":"Select_option__iJkfJ","isTree":"Select_isTree__SiTaD","size-s":"Select_size-s__qBK9t","size-m":"Select_size-m__jp7n-","size-l":"Select_size-l__b4EEy","size-xl":"Select_size-xl__0OerX","isGroup":"Select_isGroup__aP1lY","isExpanded":"Select_isExpanded__rG8R1","level-0":"Select_level-0__vu03A","level-1":"Select_level-1__ozH2U","level-2":"Select_level-2__XDqeh","level-3":"Select_level-3__Bc9XS","level-4":"Select_level-4__KfQcQ","level-5":"Select_level-5__DGSDM","level-6":"Select_level-6__p688A","isSelected":"Select_isSelected__n3ZeN","isIndeterminate":"Select_isIndeterminate__dy-xV","isFocused":"Select_isFocused__oZSgY","expandButton":"Select_expandButton__UTwlR","expandIcon":"Select_expandIcon__gWAIB","fadeIn":"Select_fadeIn__QpAwZ"};
|
|
3
|
+
var css_248z = ".Select_root__mjOjv{max-height:200px;max-width:100%;position:relative}.Select_root__mjOjv.Select_disabled__AlOQi{opacity:.4;pointer-events:none}.Select_additionalLabel__K0--Z{flex-grow:1;overflow:hidden;text-align:left;text-overflow:ellipsis}.Select_trigger__OH48f{position:relative;z-index:1}.Select_triggerArrow__1LEop{flex-shrink:0;margin-left:.3em;margin-right:-.3em;transition:transform .2s ease-out}.Select_triggerArrow__1LEop.Select_isOpen__WlMUH{transform:rotateX(-180deg)}.Select_disabled__AlOQi .Select_triggerArrow__1LEop{color:var(--text3-color)}.Select_triggerButton__lErtt{justify-content:space-between;text-align:left;width:100%}.Select_triggerButton__lErtt.Select_hasTriggerArrow__vPLad>span{max-width:calc(100% - 22px)}.Select_triggerButton__lErtt.Select_isError__WJJLq{box-shadow:inset 0 0 0 2px var(--danger-color)}.Select_triggerButton__lErtt .Select_triggerButtonLabel__XXLzh{line-height:1.2em;opacity:0;overflow:hidden;text-overflow:ellipsis}.Select_triggerButton__lErtt .Select_triggerButtonLabel__XXLzh.Select_hasSelected__zQhBV{opacity:1}.Select_presetPanel__Yu94r{box-shadow:inset 0 -1px 0 var(--decent-color-alpha-100);display:flex;padding:5px}.Select_presetButton__BAl0q{flex-grow:1;justify-content:center}.Select_presetButton__BAl0q+.Select_presetButton__BAl0q{margin-left:8px}.Select_options__3C0-v{max-height:200px;overflow-y:auto}.keyboard .Select_options__3C0-v{pointer-events:none}.Select_option__iJkfJ{align-items:center;cursor:pointer;display:flex;overflow:hidden;padding-bottom:0!important;padding-top:0!important;position:relative;text-align:left;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap;width:100%}.Select_isTree__SiTaD .Select_option__iJkfJ{min-height:36px}.Select_size-s__qBK9t .Select_option__iJkfJ{font-size:12px;height:26px;padding:0 14px}.Select_size-m__jp7n- .Select_option__iJkfJ{font-size:16px;height:34px;padding:0 16px}.Select_size-l__b4EEy .Select_option__iJkfJ{font-size:20px;height:42px;padding:0 18px}.Select_size-xl__0OerX .Select_option__iJkfJ{font-size:24px;height:50px;padding:0 20px}.Select_option__iJkfJ:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.Select_option__iJkfJ:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.Select_isTree__SiTaD .Select_option__iJkfJ{padding-left:30px}.Select_option__iJkfJ.Select_isGroup__aP1lY{color:var(--accent-color);font-weight:500;pointer-events:none}.Select_isExpanded__rG8R1>.Select_option__iJkfJ{display:flex}.Select_option__iJkfJ>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Select_option__iJkfJ:before{content:\"\";display:inline-block}.Select_option__iJkfJ.Select_level-0__vu03A:before{content:none}.Select_option__iJkfJ.Select_level-1__ozH2U:before{min-width:24px;width:24px}.Select_option__iJkfJ.Select_level-2__XDqeh:before{min-width:48px;width:48px}.Select_option__iJkfJ.Select_level-3__Bc9XS:before{min-width:72px;width:72px}.Select_option__iJkfJ.Select_level-4__KfQcQ:before{min-width:96px;width:96px}.Select_option__iJkfJ.Select_level-5__DGSDM:before{min-width:120px;width:120px}.Select_option__iJkfJ.Select_level-6__p688A:before{min-width:144px;width:144px}.Select_option__iJkfJ.Select_isIndeterminate__dy-xV,.Select_option__iJkfJ.Select_isSelected__n3ZeN{background-color:var(--active-color-alpha-500)}.keyboard .Select_option__iJkfJ.Select_isFocused__oZSgY,.pointer .Select_option__iJkfJ:hover{box-shadow:inset 100vw 0 0 0 var(--accent-color-alpha-200)}.Select_expandButton__UTwlR{background-color:transparent!important;display:flex;height:100%;justify-content:flex-end;overflow:visible;padding:0;position:relative;width:30px}.Select_expandButton__UTwlR:before{content:\"\";display:block;height:calc(100% + 20px);position:absolute;right:0;top:-10;width:100px}.Select_size-m__jp7n- .Select_expandButton__UTwlR{margin-left:-40px}.Select_size-l__b4EEy .Select_expandButton__UTwlR{margin-left:-46px}.Select_expandIcon__gWAIB{-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .1s ease-out}.Select_isExpanded__rG8R1 .Select_expandIcon__gWAIB{transform:rotate(90deg) translateZ(0)}.Select_expandButton__UTwlR:hover .Select_expandIcon__gWAIB{color:var(--primary-color)}.Select_chip__FRK2y{margin-left:-.4em}.Select_chipsContainer__JruCi{overflow-y:auto;padding:4px 0}.Select_size-s__qBK9t .Select_chipsContainer__JruCi{max-height:108px}.Select_size-m__jp7n- .Select_chipsContainer__JruCi{max-height:180px}.Select_size-l__b4EEy .Select_chipsContainer__JruCi{max-height:220px}.Select_chipContainerInner__cYHSk{display:flex;flex-wrap:wrap;gap:4px}.Select_chip__FRK2y{margin:0}@keyframes Select_fadeIn__QpAwZ{0%{opacity:0}10%{opacity:0}to{opacity:1}}";
|
|
4
|
+
var S = {"root":"Select_root__mjOjv","disabled":"Select_disabled__AlOQi","additionalLabel":"Select_additionalLabel__K0--Z","trigger":"Select_trigger__OH48f","triggerArrow":"Select_triggerArrow__1LEop","isOpen":"Select_isOpen__WlMUH","triggerButton":"Select_triggerButton__lErtt","hasTriggerArrow":"Select_hasTriggerArrow__vPLad","isError":"Select_isError__WJJLq","triggerButtonLabel":"Select_triggerButtonLabel__XXLzh","hasSelected":"Select_hasSelected__zQhBV","presetPanel":"Select_presetPanel__Yu94r","presetButton":"Select_presetButton__BAl0q","options":"Select_options__3C0-v","option":"Select_option__iJkfJ","isTree":"Select_isTree__SiTaD","size-s":"Select_size-s__qBK9t","size-m":"Select_size-m__jp7n-","size-l":"Select_size-l__b4EEy","size-xl":"Select_size-xl__0OerX","isGroup":"Select_isGroup__aP1lY","isExpanded":"Select_isExpanded__rG8R1","level-0":"Select_level-0__vu03A","level-1":"Select_level-1__ozH2U","level-2":"Select_level-2__XDqeh","level-3":"Select_level-3__Bc9XS","level-4":"Select_level-4__KfQcQ","level-5":"Select_level-5__DGSDM","level-6":"Select_level-6__p688A","isSelected":"Select_isSelected__n3ZeN","isIndeterminate":"Select_isIndeterminate__dy-xV","isFocused":"Select_isFocused__oZSgY","expandButton":"Select_expandButton__UTwlR","expandIcon":"Select_expandIcon__gWAIB","chip":"Select_chip__FRK2y","chipsContainer":"Select_chipsContainer__JruCi","chipContainerInner":"Select_chipContainerInner__cYHSk","fadeIn":"Select_fadeIn__QpAwZ"};
|
|
5
5
|
styleInject(css_248z);
|
|
6
6
|
|
|
7
7
|
export { S as default };
|
|
@@ -6,6 +6,7 @@ import cn from 'classnames';
|
|
|
6
6
|
import omit from 'lodash.omit';
|
|
7
7
|
import { AssistiveText } from '../AssistiveText/AssistiveText.js';
|
|
8
8
|
import { Button } from '../Button/Button.js';
|
|
9
|
+
import { Chip } from '../Chip/Chip.js';
|
|
9
10
|
import { Input } from '../Input/Input.js';
|
|
10
11
|
import { Icon } from '../Icon/Icon.js';
|
|
11
12
|
import { Label } from '../Label/Label.js';
|
|
@@ -17,7 +18,7 @@ import useEvent from '../../hooks/useEvent.js';
|
|
|
17
18
|
import S from './Select.styl.js';
|
|
18
19
|
|
|
19
20
|
function Select2(props) {
|
|
20
|
-
const { className, value, onChange, onSearchChange, disableTriggerArrow, inputProps, popupProps, scrollProps, size = 'm', round, optionClassName, additionalOptions = [], options, variant, label, additionalLabel, error, blur, disabled, trigger, required, hideRequiredStar, isSearchable, presets = [], selectAllButton, clearButton, showSelectedCount, disableLabel, } = props;
|
|
21
|
+
const { className, value, onChange, onChipClick, onSearchChange, disableTriggerArrow, inputProps, popupProps, scrollProps, size = 'm', round, optionClassName, additionalOptions = [], options, variant, label, additionalLabel, error, blur, disabled, trigger, required, hideRequiredStar, isSearchable, presets = [], selectAllButton, clearButton, showSelectedCount, disableLabel, selectedChipRemoveTooltip, } = props;
|
|
21
22
|
const isMultiple$1 = isMultiple(value);
|
|
22
23
|
const closeOnSelect = props.closeOnSelect ?? !isMultiple$1;
|
|
23
24
|
const contentRef = useRef(null);
|
|
@@ -172,26 +173,47 @@ function Select2(props) {
|
|
|
172
173
|
}, [])
|
|
173
174
|
.join(', '));
|
|
174
175
|
}, [isMultiple$1, value, ids]);
|
|
176
|
+
const renderSelectedChips = () => {
|
|
177
|
+
if (!isMultiple$1 || !value || !value.length)
|
|
178
|
+
return null;
|
|
179
|
+
return value.map(id => {
|
|
180
|
+
const label = getLabel(id);
|
|
181
|
+
if (!label)
|
|
182
|
+
return null;
|
|
183
|
+
return (jsx(Chip, { className: S.chip, size: size, onRemove: () => onItemToggle(id), onClick: () => onChipClick?.(id), removeTooltip: selectedChipRemoveTooltip, children: label }, id));
|
|
184
|
+
});
|
|
185
|
+
};
|
|
175
186
|
const triggerArrow = useMemo(() => {
|
|
176
187
|
if (disableTriggerArrow || (inputProps?.hasClear && searchVal))
|
|
177
188
|
return null;
|
|
178
189
|
return (jsx(Icon, { type: "chevronDown", className: cn(S.triggerArrow, isOpen && S.isOpen), size: size }));
|
|
179
190
|
}, [isOpen, searchVal]);
|
|
180
191
|
const renderTriggerInput = () => {
|
|
192
|
+
const hasChips = isMultiple$1 && value && value.length > 0;
|
|
193
|
+
const inputValue = isMultiple$1
|
|
194
|
+
? isFocused && isSearchActive
|
|
195
|
+
? searchVal
|
|
196
|
+
: ''
|
|
197
|
+
: isFocused && isSearchActive
|
|
198
|
+
? searchVal
|
|
199
|
+
: selectedLabel;
|
|
181
200
|
return (jsx(Input, { ...triggerProps, ...inputProps,
|
|
182
201
|
// TODO: autoComplete
|
|
183
|
-
addonRight: triggerArrow, error: isErrorVisible, value:
|
|
202
|
+
addonRight: triggerArrow, error: isErrorVisible, value: inputValue, onChange: handleSearchChange, label: getFieldLabel(label), placeholder: hasChips && !inputValue ? '' : inputProps?.placeholder }));
|
|
184
203
|
};
|
|
185
204
|
const renderTriggerButton = () => {
|
|
186
205
|
const { label, className, ...rest } = triggerProps;
|
|
187
206
|
const props = omit(rest, ['name', 'inputProps']);
|
|
188
|
-
|
|
207
|
+
isMultiple$1 && value && value.length > 0;
|
|
208
|
+
const fullSelectedLabel = [label, additionalLabel].filter(Boolean);
|
|
209
|
+
// ?
|
|
210
|
+
// : [selectedLabel, label, additionalLabel].filter(Boolean);
|
|
189
211
|
const hasSelected = fullSelectedLabel.length > 0;
|
|
190
212
|
const displayLabel = hasSelected ? fullSelectedLabel : label;
|
|
191
|
-
const title = hasSelected ? fullSelectedLabel : null;
|
|
213
|
+
const title = hasSelected && !isMultiple$1 ? fullSelectedLabel : null;
|
|
192
214
|
const isError = isErrorVisible;
|
|
193
215
|
const classes = cn(S.triggerButton, isError && S.isError, triggerArrow && S.hasTriggerArrow, className);
|
|
194
|
-
return (jsxs("div", { children: [jsxs(Button, { className: classes, variant: "default", ...props, style: { clipPath: labelClipPath }, title: title?.join?.(', '), children: [jsx("div", { className: cn(S.triggerButtonLabel, hasSelected && S.hasSelected), children: displayLabel }), triggerArrow] }), jsx(Label, { size: size, isOnTop: hasSelected, isError: isError, onClipPathChange: setLabelClipPath, children: getFieldLabel(label) })] }));
|
|
216
|
+
return (jsxs("div", { children: [jsxs(Button, { className: classes, variant: "default", ...props, style: { clipPath: labelClipPath }, title: title?.join?.(', '), children: [jsx("div", { className: cn(S.triggerButtonLabel, hasSelected && S.hasSelected), children: displayLabel }), triggerArrow] }), !isMultiple$1 && (jsx(Label, { size: size, isOnTop: hasSelected, isError: isError, onClipPathChange: setLabelClipPath, children: getFieldLabel(label) }))] }));
|
|
195
217
|
};
|
|
196
218
|
const renderTrigger = () => {
|
|
197
219
|
if (trigger)
|
|
@@ -199,7 +221,8 @@ function Select2(props) {
|
|
|
199
221
|
const triggerElem = isSearchable
|
|
200
222
|
? renderTriggerInput()
|
|
201
223
|
: renderTriggerButton();
|
|
202
|
-
|
|
224
|
+
const hasChips = isMultiple$1 && value && value.length > 0;
|
|
225
|
+
return (jsxs("div", { className: S.trigger, children: [hasChips && (jsx(Scroll, { y: true, className: S.chipsContainer, innerClassName: S.chipContainerInner, size: size, fadeSize: size, autoHide: true, children: renderSelectedChips() })), triggerElem, required && !hideRequiredStar && jsx(RequiredStar, { size: size })] }));
|
|
203
226
|
};
|
|
204
227
|
const renderPresets = () => {
|
|
205
228
|
const items = presets.map(({ label, ids }) => ({
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
type ChipSize = 'xs' | 's' | 'm' | 'l';
|
|
3
|
+
type Props = {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
onRemove?: () => void;
|
|
8
|
+
onClick?: () => void;
|
|
9
|
+
removeTooltip?: ReactNode;
|
|
10
|
+
size?: ChipSize;
|
|
11
|
+
};
|
|
12
|
+
export declare function Chip({ children, className, selected, onRemove, onClick, removeTooltip, size, }: Props): JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -49,6 +49,7 @@ export type Props = FormControl<Value> & InheritedInputProps & {
|
|
|
49
49
|
searchValue?: string;
|
|
50
50
|
expandSelected?: boolean;
|
|
51
51
|
onChange: (value: Value) => void;
|
|
52
|
+
onChipClick?: (id: Id) => void;
|
|
52
53
|
onSearchChange?: (value: string) => void;
|
|
53
54
|
onOpen?: () => void;
|
|
54
55
|
onClose?: () => void;
|
|
@@ -61,6 +62,7 @@ export type Props = FormControl<Value> & InheritedInputProps & {
|
|
|
61
62
|
disableTriggerArrow?: boolean;
|
|
62
63
|
popupProps?: SelectPopupProps;
|
|
63
64
|
hideRequiredStar?: boolean;
|
|
65
|
+
selectedChipRemoveTooltip?: ReactNode;
|
|
64
66
|
};
|
|
65
67
|
export type State = {
|
|
66
68
|
isFocused: boolean;
|
|
@@ -4,6 +4,7 @@ export * from './Button/Button';
|
|
|
4
4
|
export * from './ButtonGroup/ButtonGroup';
|
|
5
5
|
export * from './Calendar/Calendar';
|
|
6
6
|
export * from './Checkbox/Checkbox';
|
|
7
|
+
export * from './Chip/Chip';
|
|
7
8
|
export * from './Container/Container';
|
|
8
9
|
export * from './DatePicker/DatePicker';
|
|
9
10
|
export * from './DatePickerInput/DatePickerInput';
|