primereact 10.4.0 → 10.5.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/calendar/calendar.cjs.js +12 -4
- package/calendar/calendar.cjs.min.js +1 -1
- package/calendar/calendar.esm.js +12 -4
- package/calendar/calendar.esm.min.js +1 -1
- package/calendar/calendar.js +12 -4
- package/calendar/calendar.min.js +1 -1
- package/checkbox/checkbox.cjs.js +2 -0
- package/checkbox/checkbox.cjs.min.js +1 -1
- package/checkbox/checkbox.esm.js +2 -0
- package/checkbox/checkbox.esm.min.js +1 -1
- package/checkbox/checkbox.js +2 -0
- package/checkbox/checkbox.min.js +1 -1
- package/chips/chips.cjs.js +109 -20
- package/chips/chips.cjs.min.js +1 -1
- package/chips/chips.esm.js +109 -20
- package/chips/chips.esm.min.js +1 -1
- package/chips/chips.js +109 -20
- package/chips/chips.min.js +1 -1
- package/core/core.js +643 -465
- package/core/core.min.js +4 -4
- package/dropdown/dropdown.cjs.js +313 -141
- package/dropdown/dropdown.cjs.min.js +1 -1
- package/dropdown/dropdown.esm.js +313 -141
- package/dropdown/dropdown.esm.min.js +1 -1
- package/dropdown/dropdown.js +313 -141
- package/dropdown/dropdown.min.js +1 -1
- package/inputnumber/inputnumber.cjs.js +21 -17
- package/inputnumber/inputnumber.cjs.min.js +1 -1
- package/inputnumber/inputnumber.esm.js +21 -17
- package/inputnumber/inputnumber.esm.min.js +1 -1
- package/inputnumber/inputnumber.js +21 -17
- package/inputnumber/inputnumber.min.js +1 -1
- package/inputswitch/inputswitch.cjs.js +3 -1
- package/inputswitch/inputswitch.cjs.min.js +1 -1
- package/inputswitch/inputswitch.esm.js +3 -1
- package/inputswitch/inputswitch.esm.min.js +1 -1
- package/inputswitch/inputswitch.js +3 -1
- package/inputswitch/inputswitch.min.js +1 -1
- package/knob/knob.cjs.js +62 -0
- package/knob/knob.cjs.min.js +1 -1
- package/knob/knob.esm.js +62 -0
- package/knob/knob.esm.min.js +1 -1
- package/knob/knob.js +62 -0
- package/knob/knob.min.js +1 -1
- package/listbox/listbox.cjs.js +362 -92
- package/listbox/listbox.cjs.min.js +1 -1
- package/listbox/listbox.esm.js +363 -93
- package/listbox/listbox.esm.min.js +1 -1
- package/listbox/listbox.js +362 -92
- package/listbox/listbox.min.js +1 -1
- package/menu/menu.cjs.js +4 -2
- package/menu/menu.cjs.min.js +1 -1
- package/menu/menu.esm.js +4 -2
- package/menu/menu.esm.min.js +1 -1
- package/menu/menu.js +5 -4
- package/menu/menu.min.js +1 -1
- package/multiselect/multiselect.cjs.js +377 -107
- package/multiselect/multiselect.cjs.min.js +1 -1
- package/multiselect/multiselect.esm.js +377 -107
- package/multiselect/multiselect.esm.min.js +1 -1
- package/multiselect/multiselect.js +377 -107
- package/multiselect/multiselect.min.js +1 -1
- package/package.json +1 -1
- package/paginator/paginator.cjs.js +251 -251
- package/paginator/paginator.cjs.min.js +1 -1
- package/paginator/paginator.esm.js +258 -258
- package/paginator/paginator.esm.min.js +1 -1
- package/paginator/paginator.js +251 -251
- package/paginator/paginator.min.js +1 -1
- package/panelmenu/panelmenu.cjs.js +2 -1
- package/panelmenu/panelmenu.cjs.min.js +1 -1
- package/panelmenu/panelmenu.esm.js +2 -1
- package/panelmenu/panelmenu.esm.min.js +1 -1
- package/panelmenu/panelmenu.js +3 -3
- package/panelmenu/panelmenu.min.js +1 -1
- package/passthrough/tailwind/index.cjs.js +3 -2
- package/passthrough/tailwind/index.cjs.min.js +1 -1
- package/passthrough/tailwind/index.esm.js +3 -2
- package/passthrough/tailwind/index.esm.min.js +1 -1
- package/passthrough/tailwind/index.js +3 -2
- package/passthrough/tailwind/index.min.js +1 -1
- package/password/password.cjs.js +22 -20
- package/password/password.cjs.min.js +1 -1
- package/password/password.esm.js +22 -20
- package/password/password.esm.min.js +1 -1
- package/password/password.js +22 -20
- package/password/password.min.js +1 -1
- package/primereact.all.cjs.js +1473 -485
- package/primereact.all.cjs.min.js +1 -1
- package/primereact.all.esm.js +1473 -485
- package/primereact.all.esm.min.js +1 -1
- package/primereact.all.js +1473 -485
- package/primereact.all.min.js +1 -1
- package/radiobutton/radiobutton.cjs.js +1 -0
- package/radiobutton/radiobutton.cjs.min.js +1 -1
- package/radiobutton/radiobutton.esm.js +1 -0
- package/radiobutton/radiobutton.esm.min.js +1 -1
- package/radiobutton/radiobutton.js +1 -0
- package/radiobutton/radiobutton.min.js +1 -1
- package/rating/rating.cjs.js +103 -4
- package/rating/rating.cjs.min.js +1 -1
- package/rating/rating.esm.js +103 -4
- package/rating/rating.esm.min.js +1 -1
- package/rating/rating.js +103 -4
- package/rating/rating.min.js +1 -1
- package/resources/themes/arya-blue/theme.css +328 -67
- package/resources/themes/arya-green/theme.css +328 -67
- package/resources/themes/arya-orange/theme.css +328 -67
- package/resources/themes/arya-purple/theme.css +26 -6
- package/resources/themes/bootstrap4-dark-blue/theme.css +328 -67
- package/resources/themes/bootstrap4-dark-purple/theme.css +26 -6
- package/resources/themes/bootstrap4-light-blue/theme.css +328 -67
- package/resources/themes/bootstrap4-light-purple/theme.css +26 -6
- package/resources/themes/fluent-light/theme.css +327 -66
- package/resources/themes/lara-dark-amber/theme.css +328 -67
- package/resources/themes/lara-dark-blue/theme.css +328 -67
- package/resources/themes/lara-dark-cyan/theme.css +328 -67
- package/resources/themes/lara-dark-green/theme.css +328 -67
- package/resources/themes/lara-dark-indigo/theme.css +328 -67
- package/resources/themes/lara-dark-pink/theme.css +328 -67
- package/resources/themes/lara-dark-purple/theme.css +26 -6
- package/resources/themes/lara-dark-teal/theme.css +328 -67
- package/resources/themes/lara-light-amber/theme.css +328 -67
- package/resources/themes/lara-light-blue/theme.css +328 -67
- package/resources/themes/lara-light-cyan/theme.css +328 -67
- package/resources/themes/lara-light-green/theme.css +328 -67
- package/resources/themes/lara-light-indigo/theme.css +328 -67
- package/resources/themes/lara-light-pink/theme.css +328 -67
- package/resources/themes/lara-light-purple/theme.css +26 -6
- package/resources/themes/lara-light-teal/theme.css +328 -67
- package/resources/themes/luna-amber/theme.css +328 -67
- package/resources/themes/luna-blue/theme.css +328 -67
- package/resources/themes/luna-green/theme.css +328 -67
- package/resources/themes/luna-pink/theme.css +328 -67
- package/resources/themes/md-dark-deeppurple/theme.css +158 -138
- package/resources/themes/md-dark-indigo/theme.css +454 -193
- package/resources/themes/md-light-deeppurple/theme.css +26 -6
- package/resources/themes/md-light-indigo/theme.css +328 -67
- package/resources/themes/mdc-dark-deeppurple/theme.css +158 -138
- package/resources/themes/mdc-dark-indigo/theme.css +454 -193
- package/resources/themes/mdc-light-deeppurple/theme.css +26 -6
- package/resources/themes/mdc-light-indigo/theme.css +328 -67
- package/resources/themes/mira/theme.css +328 -67
- package/resources/themes/nano/theme.css +328 -67
- package/resources/themes/nova/theme.css +328 -67
- package/resources/themes/nova-accent/theme.css +328 -67
- package/resources/themes/nova-alt/theme.css +328 -67
- package/resources/themes/rhea/theme.css +328 -67
- package/resources/themes/saga-blue/theme.css +328 -67
- package/resources/themes/saga-green/theme.css +328 -67
- package/resources/themes/saga-orange/theme.css +328 -67
- package/resources/themes/saga-purple/theme.css +26 -6
- package/resources/themes/soho-dark/theme.css +353 -92
- package/resources/themes/soho-light/theme.css +328 -67
- package/resources/themes/tailwind-light/theme.css +329 -71
- package/resources/themes/vela-blue/theme.css +328 -67
- package/resources/themes/vela-green/theme.css +328 -67
- package/resources/themes/vela-orange/theme.css +328 -67
- package/resources/themes/vela-purple/theme.css +26 -6
- package/resources/themes/viva-dark/theme.css +328 -67
- package/resources/themes/viva-light/theme.css +328 -67
- package/selectbutton/selectbutton.cjs.js +96 -50
- package/selectbutton/selectbutton.cjs.min.js +1 -1
- package/selectbutton/selectbutton.esm.js +96 -50
- package/selectbutton/selectbutton.esm.min.js +1 -1
- package/selectbutton/selectbutton.js +96 -50
- package/selectbutton/selectbutton.min.js +1 -1
- package/slider/slider.cjs.js +25 -4
- package/slider/slider.cjs.min.js +1 -1
- package/slider/slider.esm.js +25 -4
- package/slider/slider.esm.min.js +1 -1
- package/slider/slider.js +25 -4
- package/slider/slider.min.js +1 -1
- package/splitter/splitter.cjs.js +16 -15
- package/splitter/splitter.cjs.min.js +1 -1
- package/splitter/splitter.esm.js +16 -15
- package/splitter/splitter.esm.min.js +1 -1
- package/splitter/splitter.js +16 -15
- package/splitter/splitter.min.js +1 -1
- package/tabview/tabview.cjs.js +6 -5
- package/tabview/tabview.cjs.min.js +1 -1
- package/tabview/tabview.d.ts +39 -34
- package/tabview/tabview.esm.js +6 -5
- package/tabview/tabview.esm.min.js +1 -1
- package/tabview/tabview.js +6 -5
- package/tabview/tabview.min.js +1 -1
- package/togglebutton/togglebutton.cjs.js +15 -14
- package/togglebutton/togglebutton.cjs.min.js +1 -1
- package/togglebutton/togglebutton.esm.js +14 -13
- package/togglebutton/togglebutton.esm.min.js +1 -1
- package/togglebutton/togglebutton.js +15 -14
- package/togglebutton/togglebutton.min.js +1 -1
- package/tristatecheckbox/tristatecheckbox.cjs.js +3 -2
- package/tristatecheckbox/tristatecheckbox.cjs.min.js +1 -1
- package/tristatecheckbox/tristatecheckbox.esm.js +3 -2
- package/tristatecheckbox/tristatecheckbox.esm.min.js +1 -1
- package/tristatecheckbox/tristatecheckbox.js +3 -2
- package/tristatecheckbox/tristatecheckbox.min.js +1 -1
- package/web-types.json +1 -1
|
@@ -132,6 +132,10 @@ function _toConsumableArray(arr) {
|
|
|
132
132
|
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
+
function _readOnlyError(name) {
|
|
136
|
+
throw new TypeError("\"" + name + "\" is read-only");
|
|
137
|
+
}
|
|
138
|
+
|
|
135
139
|
function _arrayWithHoles(arr) {
|
|
136
140
|
if (Array.isArray(arr)) return arr;
|
|
137
141
|
}
|
|
@@ -233,7 +237,8 @@ var classes$1 = {
|
|
|
233
237
|
var props = _ref5.itemProps;
|
|
234
238
|
return utils.classNames('p-multiselect-item', {
|
|
235
239
|
'p-highlight': props.selected,
|
|
236
|
-
'p-disabled': props.disabled
|
|
240
|
+
'p-disabled': props.disabled,
|
|
241
|
+
'p-focus': props.focusedOptionIndex === props.index
|
|
237
242
|
});
|
|
238
243
|
},
|
|
239
244
|
checkboxContainer: 'p-checkbox p-component',
|
|
@@ -246,7 +251,7 @@ var classes$1 = {
|
|
|
246
251
|
},
|
|
247
252
|
transition: 'p-connected-overlay'
|
|
248
253
|
};
|
|
249
|
-
var styles$1 = "\n@layer primereact {\n .p-multiselect {\n display: inline-flex;\n user-select: none;\n cursor: pointer;\n }\n \n .p-multiselect-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n cursor: pointer;\n }\n \n .p-multiselect-label-container {\n overflow: hidden;\n flex: 1 1 auto;\n cursor: pointer;\n }\n \n .p-multiselect-label {\n display: block;\n white-space: nowrap;\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n \n .p-multiselect-label-empty {\n overflow: hidden;\n visibility: hidden;\n }\n \n .p-multiselect-token {\n cursor: default;\n display: inline-flex;\n align-items: center;\n flex: 0 0 auto;\n }\n \n .p-multiselect-token-icon {\n cursor: pointer;\n }\n \n .p-multiselect .p-multiselect-panel {\n min-width: 100%;\n }\n \n .p-multiselect-inline.p-multiselect-panel {\n border: none;\n position: initial;\n background: none;\n box-shadow: none;\n }\n \n .p-multiselect-inline.p-multiselect-panel .p-multiselect-items {\n padding: 0;\n }\n \n .p-multiselect-flex.p-multiselect-panel .p-multiselect-items {\n display: flex;\n flex-wrap: wrap;\n }\n \n .p-multiselect-items-wrapper {\n overflow: auto;\n }\n \n .p-multiselect-items {\n margin: 0;\n padding: 0;\n list-style-type: none;\n }\n \n .p-multiselect-item {\n cursor: pointer;\n display: flex;\n align-items: center;\n font-weight: normal;\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n }\n \n .p-multiselect-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .p-multiselect-select-all-label {\n margin-left: 0.5rem;\n }\n \n .p-multiselect-filter-container {\n position: relative;\n flex: 1 1 auto;\n }\n \n .p-multiselect-filter-icon {\n position: absolute;\n top: 50%;\n margin-top: -.5rem;\n }\n \n .p-multiselect-filter-container .p-inputtext {\n width: 100%;\n }\n \n .p-multiselect-close {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n overflow: hidden;\n position: relative;\n margin-left: auto;\n }\n \n .p-multiselect-clear-icon {\n position: absolute;\n top: 50%;\n margin-top: -.5rem;\n }\n \n .p-fluid .p-multiselect {\n display: flex;\n }\n}\n";
|
|
254
|
+
var styles$1 = "\n@layer primereact {\n .p-multiselect {\n display: inline-flex;\n user-select: none;\n cursor: pointer;\n }\n \n .p-multiselect-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n cursor: pointer;\n }\n \n .p-multiselect-label-container {\n overflow: hidden;\n flex: 1 1 auto;\n cursor: pointer;\n }\n \n .p-multiselect-label {\n display: block;\n white-space: nowrap;\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n \n .p-multiselect-label-empty {\n overflow: hidden;\n visibility: hidden;\n }\n \n .p-multiselect-token {\n cursor: default;\n display: inline-flex;\n align-items: center;\n flex: 0 0 auto;\n }\n \n .p-multiselect-token-icon {\n cursor: pointer;\n }\n \n .p-multiselect .p-multiselect-panel {\n min-width: 100%;\n }\n \n .p-multiselect-inline.p-multiselect-panel {\n border: none;\n position: initial;\n background: none;\n box-shadow: none;\n }\n \n .p-multiselect-inline.p-multiselect-panel .p-multiselect-items {\n padding: 0;\n }\n \n .p-multiselect-flex.p-multiselect-panel .p-multiselect-items {\n display: flex;\n flex-wrap: wrap;\n }\n \n .p-multiselect-items-wrapper {\n overflow: auto;\n }\n \n .p-multiselect-items {\n margin: 0;\n padding: 0;\n list-style-type: none;\n }\n \n .p-multiselect-item {\n cursor: pointer;\n display: flex;\n align-items: center;\n font-weight: normal;\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n outline: none;\n }\n \n .p-multiselect-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n \n .p-multiselect-select-all-label {\n margin-left: 0.5rem;\n }\n \n .p-multiselect-filter-container {\n position: relative;\n flex: 1 1 auto;\n }\n \n .p-multiselect-filter-icon {\n position: absolute;\n top: 50%;\n margin-top: -.5rem;\n }\n \n .p-multiselect-filter-container .p-inputtext {\n width: 100%;\n }\n \n .p-multiselect-close {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n overflow: hidden;\n position: relative;\n margin-left: auto;\n }\n \n .p-multiselect-clear-icon {\n position: absolute;\n top: 50%;\n margin-top: -.5rem;\n right: 3rem;\n }\n \n .p-fluid .p-multiselect {\n display: flex;\n }\n}\n";
|
|
250
255
|
var inlineStyles = {
|
|
251
256
|
root: function root(_ref7) {
|
|
252
257
|
var props = _ref7.props;
|
|
@@ -280,6 +285,8 @@ var MultiSelectBase = componentbase.ComponentBase.extend({
|
|
|
280
285
|
filterBy: null,
|
|
281
286
|
filterInputAutoFocus: true,
|
|
282
287
|
filterLocale: undefined,
|
|
288
|
+
selectOnFocus: false,
|
|
289
|
+
autoOptionFocus: false,
|
|
283
290
|
filterMatchMode: 'contains',
|
|
284
291
|
filterPlaceholder: null,
|
|
285
292
|
filterTemplate: null,
|
|
@@ -532,6 +539,8 @@ var Checkbox = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespace
|
|
|
532
539
|
onClick: function onClick(e) {
|
|
533
540
|
return _onClick(e);
|
|
534
541
|
},
|
|
542
|
+
'data-p-highlight': checked,
|
|
543
|
+
'data-p-disabled': props.disabled,
|
|
535
544
|
onContextMenu: props.onContextMenu,
|
|
536
545
|
onMouseDown: props.onMouseDown
|
|
537
546
|
}, otherProps, ptm('root'));
|
|
@@ -739,7 +748,9 @@ var MultiSelectItem = /*#__PURE__*/React__namespace.memo(function (props) {
|
|
|
739
748
|
context: {
|
|
740
749
|
selected: props.selected,
|
|
741
750
|
disabled: props.disabled,
|
|
742
|
-
focused: focusedState
|
|
751
|
+
focused: focusedState,
|
|
752
|
+
focusedIndex: props.focusedIndex,
|
|
753
|
+
index: props.index
|
|
743
754
|
}
|
|
744
755
|
});
|
|
745
756
|
};
|
|
@@ -751,22 +762,11 @@ var MultiSelectItem = /*#__PURE__*/React__namespace.memo(function (props) {
|
|
|
751
762
|
};
|
|
752
763
|
var onClick = function onClick(event) {
|
|
753
764
|
if (props.onClick) {
|
|
754
|
-
props.onClick(
|
|
755
|
-
originalEvent: event,
|
|
756
|
-
option: props.option
|
|
757
|
-
});
|
|
765
|
+
props.onClick(event, props.option);
|
|
758
766
|
}
|
|
759
767
|
event.preventDefault();
|
|
760
768
|
event.stopPropagation();
|
|
761
769
|
};
|
|
762
|
-
var onKeyDown = function onKeyDown(event) {
|
|
763
|
-
if (props.onKeyDown) {
|
|
764
|
-
props.onKeyDown({
|
|
765
|
-
originalEvent: event,
|
|
766
|
-
option: props.option
|
|
767
|
-
});
|
|
768
|
-
}
|
|
769
|
-
};
|
|
770
770
|
var checkboxIconProps = mergeProps({
|
|
771
771
|
className: cx('checkboxIcon')
|
|
772
772
|
}, getPTOptions('checkboxIcon'));
|
|
@@ -775,7 +775,7 @@ var MultiSelectItem = /*#__PURE__*/React__namespace.memo(function (props) {
|
|
|
775
775
|
selected: props.selected
|
|
776
776
|
}) : null;
|
|
777
777
|
var content = props.template ? utils.ObjectUtils.getJSXElement(props.template, props.option) : props.label;
|
|
778
|
-
var tabIndex = props.disabled ?
|
|
778
|
+
var tabIndex = props.disabled ? -1 : props.tabIndex;
|
|
779
779
|
var checkboxContainerProps = mergeProps({
|
|
780
780
|
className: cx('checkboxContainer')
|
|
781
781
|
}, getPTOptions('checkboxContainer'));
|
|
@@ -791,7 +791,6 @@ var MultiSelectItem = /*#__PURE__*/React__namespace.memo(function (props) {
|
|
|
791
791
|
})),
|
|
792
792
|
style: props.style,
|
|
793
793
|
onClick: onClick,
|
|
794
|
-
onKeyDown: onKeyDown,
|
|
795
794
|
onFocus: onFocus,
|
|
796
795
|
onBlur: onBlur,
|
|
797
796
|
tabIndex: tabIndex,
|
|
@@ -893,14 +892,15 @@ var MultiSelectPanel = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__n
|
|
|
893
892
|
var selected = props.isSelected(option);
|
|
894
893
|
return /*#__PURE__*/React__namespace.createElement(MultiSelectItem, {
|
|
895
894
|
hostName: props.hostName,
|
|
895
|
+
index: j,
|
|
896
896
|
key: optionKey,
|
|
897
|
+
focusedOptionIndex: props.focusedOptionIndex,
|
|
897
898
|
label: optionLabel,
|
|
898
899
|
option: option,
|
|
899
900
|
style: style,
|
|
900
901
|
template: props.itemTemplate,
|
|
901
902
|
selected: selected,
|
|
902
903
|
onClick: props.onOptionSelect,
|
|
903
|
-
onKeyDown: props.onOptionKeyDown,
|
|
904
904
|
tabIndex: tabIndex,
|
|
905
905
|
disabled: disabled,
|
|
906
906
|
className: props.itemClassName,
|
|
@@ -951,13 +951,14 @@ var MultiSelectPanel = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__n
|
|
|
951
951
|
return /*#__PURE__*/React__namespace.createElement(MultiSelectItem, {
|
|
952
952
|
hostName: props.hostName,
|
|
953
953
|
key: optionKey,
|
|
954
|
+
focusedOptionIndex: props.focusedOptionIndex,
|
|
954
955
|
label: optionLabel,
|
|
955
956
|
option: option,
|
|
956
957
|
style: style,
|
|
958
|
+
index: index,
|
|
957
959
|
template: props.itemTemplate,
|
|
958
960
|
selected: selected,
|
|
959
961
|
onClick: props.onOptionSelect,
|
|
960
|
-
onKeyDown: props.onOptionKeyDown,
|
|
961
962
|
tabIndex: tabIndex,
|
|
962
963
|
disabled: disabled,
|
|
963
964
|
className: props.itemClassName,
|
|
@@ -1086,19 +1087,35 @@ var MultiSelect = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
|
|
|
1086
1087
|
var mergeProps = hooks.useMergeProps();
|
|
1087
1088
|
var context = React__namespace.useContext(PrimeReact.PrimeReactContext);
|
|
1088
1089
|
var props = MultiSelectBase.getProps(inProps, context);
|
|
1089
|
-
var _React$useState = React__namespace.useState(
|
|
1090
|
+
var _React$useState = React__namespace.useState(null),
|
|
1090
1091
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
1091
|
-
|
|
1092
|
-
|
|
1092
|
+
focusedOptionIndex = _React$useState2[0],
|
|
1093
|
+
setFocusedOptionIndex = _React$useState2[1];
|
|
1093
1094
|
var _React$useState3 = React__namespace.useState(false),
|
|
1094
1095
|
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
var _React$useState5 = React__namespace.useState(
|
|
1096
|
+
clicked = _React$useState4[0],
|
|
1097
|
+
setClicked = _React$useState4[1];
|
|
1098
|
+
var _React$useState5 = React__namespace.useState(''),
|
|
1098
1099
|
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
1099
|
-
|
|
1100
|
-
|
|
1100
|
+
filterState = _React$useState6[0],
|
|
1101
|
+
setFilterState = _React$useState6[1];
|
|
1102
|
+
var _React$useState7 = React__namespace.useState(-1),
|
|
1103
|
+
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
|
1104
|
+
startRangeIndex = _React$useState8[0],
|
|
1105
|
+
setStartRangeIndex = _React$useState8[1];
|
|
1106
|
+
var _React$useState9 = React__namespace.useState(false),
|
|
1107
|
+
_React$useState10 = _slicedToArray(_React$useState9, 2),
|
|
1108
|
+
focusedState = _React$useState10[0],
|
|
1109
|
+
setFocusedState = _React$useState10[1];
|
|
1110
|
+
var _React$useState11 = React__namespace.useState(props.inline),
|
|
1111
|
+
_React$useState12 = _slicedToArray(_React$useState11, 2),
|
|
1112
|
+
overlayVisibleState = _React$useState12[0],
|
|
1113
|
+
setOverlayVisibleState = _React$useState12[1];
|
|
1101
1114
|
var elementRef = React__namespace.useRef(null);
|
|
1115
|
+
var searchValue = React__namespace.useRef(null);
|
|
1116
|
+
var searchTimeout = React__namespace.useRef(null);
|
|
1117
|
+
var firstHiddenFocusableElementOnOverlay = React__namespace.useRef(null);
|
|
1118
|
+
var lastHiddenFocusableElementOnOverlay = React__namespace.useRef(null);
|
|
1102
1119
|
var inputRef = React__namespace.useRef(props.inputRef);
|
|
1103
1120
|
var labelRef = React__namespace.useRef(null);
|
|
1104
1121
|
var overlayRef = React__namespace.useRef(null);
|
|
@@ -1140,6 +1157,14 @@ var MultiSelect = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
|
|
|
1140
1157
|
_useOverlayListener2 = _slicedToArray(_useOverlayListener, 2),
|
|
1141
1158
|
bindOverlayListener = _useOverlayListener2[0],
|
|
1142
1159
|
unbindOverlayListener = _useOverlayListener2[1];
|
|
1160
|
+
var onFirstHiddenFocus = function onFirstHiddenFocus(event) {
|
|
1161
|
+
var focusableEl = event.relatedTarget === inputRef.current ? utils.DomHandler.getFirstFocusableElement(overlayRef.current, ':not([data-p-hidden-focusable="true"])') : inputRef.current;
|
|
1162
|
+
utils.DomHandler.focus(focusableEl);
|
|
1163
|
+
};
|
|
1164
|
+
var onLastHiddenFocus = function onLastHiddenFocus(event) {
|
|
1165
|
+
var focusableEl = event.relatedTarget === inputRef.current ? utils.DomHandler.getLastFocusableElement(overlayRef.current, ':not([data-p-hidden-focusable="true"])') : inputRef.current;
|
|
1166
|
+
utils.DomHandler.focus(focusableEl);
|
|
1167
|
+
};
|
|
1143
1168
|
var onPanelClick = function onPanelClick(event) {
|
|
1144
1169
|
overlayservice.OverlayService.emit('overlay-click', {
|
|
1145
1170
|
originalEvent: event,
|
|
@@ -1149,63 +1174,60 @@ var MultiSelect = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
|
|
|
1149
1174
|
var allowOptionSelect = function allowOptionSelect() {
|
|
1150
1175
|
return !props.selectionLimit || !props.value || props.value && props.value.length < props.selectionLimit;
|
|
1151
1176
|
};
|
|
1152
|
-
var
|
|
1153
|
-
var
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1177
|
+
var findNextSelectedOptionIndex = function findNextSelectedOptionIndex(index) {
|
|
1178
|
+
var matchedOptionIndex = hasSelectedOption && index < visibleOptions.length - 1 ? visibleOptions.slice(index + 1).findIndex(function (option) {
|
|
1179
|
+
return isValidSelectedOption(option);
|
|
1180
|
+
}) : -1;
|
|
1181
|
+
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;
|
|
1182
|
+
};
|
|
1183
|
+
var findPrevSelectedOptionIndex = function findPrevSelectedOptionIndex(index) {
|
|
1184
|
+
var matchedOptionIndex = hasSelectedOption && index > 0 ? utils.ObjectUtils.findLastIndex(visibleOptions.slice(0, index), function (option) {
|
|
1185
|
+
return isValidSelectedOption(option);
|
|
1186
|
+
}) : -1;
|
|
1187
|
+
return matchedOptionIndex > -1 ? matchedOptionIndex : -1;
|
|
1188
|
+
};
|
|
1189
|
+
var findNearestSelectedOptionIndex = function findNearestSelectedOptionIndex(index) {
|
|
1190
|
+
var firstCheckUp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1191
|
+
var matchedOptionIndex = -1;
|
|
1192
|
+
if (hasSelectedOption) {
|
|
1193
|
+
if (firstCheckUp) {
|
|
1194
|
+
matchedOptionIndex = findPrevSelectedOptionIndex(index);
|
|
1195
|
+
matchedOptionIndex = matchedOptionIndex === -1 ? findNextSelectedOptionIndex(index) : matchedOptionIndex;
|
|
1196
|
+
} else {
|
|
1197
|
+
matchedOptionIndex = findNextSelectedOptionIndex(index);
|
|
1198
|
+
matchedOptionIndex = matchedOptionIndex === -1 ? findPrevSelectedOptionIndex(index) : matchedOptionIndex;
|
|
1199
|
+
}
|
|
1157
1200
|
}
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
var
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1201
|
+
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
|
1202
|
+
};
|
|
1203
|
+
var onOptionSelectRange = function onOptionSelectRange(event) {
|
|
1204
|
+
var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;
|
|
1205
|
+
var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
|
|
1206
|
+
start === -1 && (start = findNearestSelectedOptionIndex(end, true));
|
|
1207
|
+
end === -1 && (end = findNearestSelectedOptionIndex(start));
|
|
1208
|
+
if (start !== -1 && end !== -1) {
|
|
1209
|
+
var rangeStart = Math.min(start, end);
|
|
1210
|
+
var rangeEnd = Math.max(start, end);
|
|
1211
|
+
var value = visibleOptions.slice(rangeStart, rangeEnd + 1).filter(function (option) {
|
|
1212
|
+
return isValidOption(option);
|
|
1213
|
+
}).map(function (option) {
|
|
1214
|
+
return getOptionValue(option);
|
|
1215
|
+
});
|
|
1216
|
+
updateModel(event, value);
|
|
1168
1217
|
}
|
|
1169
1218
|
};
|
|
1170
|
-
var
|
|
1171
|
-
var
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
//down
|
|
1175
|
-
case 40:
|
|
1176
|
-
var nextItem = findNextItem(listItem);
|
|
1177
|
-
nextItem && nextItem.focus();
|
|
1178
|
-
originalEvent.preventDefault();
|
|
1179
|
-
break;
|
|
1180
|
-
|
|
1181
|
-
//up
|
|
1182
|
-
case 38:
|
|
1183
|
-
var prevItem = findPrevItem(listItem);
|
|
1184
|
-
prevItem && prevItem.focus();
|
|
1185
|
-
originalEvent.preventDefault();
|
|
1186
|
-
break;
|
|
1187
|
-
|
|
1188
|
-
//enter and space
|
|
1189
|
-
case 13:
|
|
1190
|
-
case 32:
|
|
1191
|
-
onOptionSelect(event);
|
|
1192
|
-
originalEvent.preventDefault();
|
|
1193
|
-
break;
|
|
1194
|
-
|
|
1195
|
-
//escape
|
|
1196
|
-
case 27:
|
|
1197
|
-
hide();
|
|
1198
|
-
utils.DomHandler.focus(inputRef.current);
|
|
1199
|
-
break;
|
|
1219
|
+
var onOptionSelect = function onOptionSelect(event, option) {
|
|
1220
|
+
var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
|
|
1221
|
+
if (props.disabled || isOptionDisabled(option)) {
|
|
1222
|
+
return;
|
|
1200
1223
|
}
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
return prevItem ? utils.DomHandler.getAttribute(prevItem, 'data-p-disabled') === true || utils.DomHandler.getAttribute(prevItem, 'data-pc-section') === 'itemgroup' ? findPrevItem(prevItem) : prevItem : null;
|
|
1224
|
+
var selected = isSelected(option);
|
|
1225
|
+
var value = null;
|
|
1226
|
+
if (selected) value = props.value.filter(function (val) {
|
|
1227
|
+
return !utils.ObjectUtils.equals(val, getOptionValue(option), equalityKey);
|
|
1228
|
+
});else value = [].concat(_toConsumableArray(props.value || []), [getOptionValue(option)]);
|
|
1229
|
+
updateModel(event, value);
|
|
1230
|
+
index !== -1 && setFocusedOptionIndex(index);
|
|
1209
1231
|
};
|
|
1210
1232
|
var onClick = function onClick(event) {
|
|
1211
1233
|
if (!props.inline && !props.disabled && !props.loading && !isPanelClicked(event) && utils.DomHandler.getAttribute(event.target, 'data-pc-section') !== 'removetokenicon' && !isClearClicked(event)) {
|
|
@@ -1213,42 +1235,170 @@ var MultiSelect = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
|
|
|
1213
1235
|
utils.DomHandler.focus(inputRef.current);
|
|
1214
1236
|
event.preventDefault();
|
|
1215
1237
|
}
|
|
1238
|
+
setClicked(true);
|
|
1239
|
+
};
|
|
1240
|
+
var onArrowDownKey = function onArrowDownKey(event) {
|
|
1241
|
+
if (!overlayVisibleState) {
|
|
1242
|
+
show();
|
|
1243
|
+
props.editable && changeFocusedOptionIndex(event, findSelectedOptionIndex());
|
|
1244
|
+
} else {
|
|
1245
|
+
var optionIndex = focusedOptionIndex !== -1 ? findNextOptionIndex(focusedOptionIndex) : clicked ? findFirstOptionIndex() : findFirstFocusedOptionIndex();
|
|
1246
|
+
if (event.shiftKey) {
|
|
1247
|
+
onOptionSelectRange(event, startRangeIndex, optionIndex);
|
|
1248
|
+
}
|
|
1249
|
+
changeFocusedOptionIndex(event, optionIndex);
|
|
1250
|
+
}
|
|
1251
|
+
event.preventDefault();
|
|
1252
|
+
};
|
|
1253
|
+
var onArrowUpKey = function onArrowUpKey(event) {
|
|
1254
|
+
var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1255
|
+
if (event.altKey && !pressedInInputText) {
|
|
1256
|
+
if (focusedOptionIndex !== -1) {
|
|
1257
|
+
onOptionSelect(event, visibleOptions[focusedOptionIndex]);
|
|
1258
|
+
}
|
|
1259
|
+
overlayVisibleState && hide();
|
|
1260
|
+
event.preventDefault();
|
|
1261
|
+
} else {
|
|
1262
|
+
var optionIndex = focusedOptionIndex !== -1 ? findPrevOptionIndex(focusedOptionIndex) : clicked ? findLastOptionIndex() : findLastFocusedOptionIndex();
|
|
1263
|
+
changeFocusedOptionIndex(event, optionIndex);
|
|
1264
|
+
!overlayVisibleState && show();
|
|
1265
|
+
event.preventDefault();
|
|
1266
|
+
}
|
|
1267
|
+
};
|
|
1268
|
+
var onEnterKey = function onEnterKey(event) {
|
|
1269
|
+
if (!overlayVisibleState) {
|
|
1270
|
+
setFocusedOptionIndex(-1);
|
|
1271
|
+
onArrowDownKey(event);
|
|
1272
|
+
} else {
|
|
1273
|
+
if (focusedOptionIndex !== -1) {
|
|
1274
|
+
if (event.shiftKey) onOptionSelectRange(event, focusedOptionIndex);else onOptionSelect(event, visibleOptions[focusedOptionIndex]);
|
|
1275
|
+
}
|
|
1276
|
+
hide();
|
|
1277
|
+
}
|
|
1278
|
+
event.preventDefault();
|
|
1279
|
+
};
|
|
1280
|
+
var onHomeKey = function onHomeKey(event) {
|
|
1281
|
+
var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1282
|
+
var currentTarget = event.currentTarget;
|
|
1283
|
+
if (pressedInInputText) {
|
|
1284
|
+
var len = currentTarget.value.length;
|
|
1285
|
+
currentTarget.setSelectionRange(0, event.shiftKey ? len : 0);
|
|
1286
|
+
setFocusedOptionIndex(-1);
|
|
1287
|
+
} else {
|
|
1288
|
+
var metaKey = event.metaKey || event.ctrlKey;
|
|
1289
|
+
var optionIndex = findFirstOptionIndex();
|
|
1290
|
+
if (event.shiftKey && metaKey) {
|
|
1291
|
+
onOptionSelectRange(event, optionIndex, startRangeIndex);
|
|
1292
|
+
}
|
|
1293
|
+
changeFocusedOptionIndex(event, optionIndex);
|
|
1294
|
+
!overlayVisibleState && show();
|
|
1295
|
+
}
|
|
1296
|
+
event.preventDefault();
|
|
1297
|
+
};
|
|
1298
|
+
var onEndKey = function onEndKey(event) {
|
|
1299
|
+
var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1300
|
+
var currentTarget = event.currentTarget;
|
|
1301
|
+
if (pressedInInputText) {
|
|
1302
|
+
var len = currentTarget.value.length;
|
|
1303
|
+
currentTarget.setSelectionRange(event.shiftKey ? 0 : len, len);
|
|
1304
|
+
_readOnlyError("focusedOptionIndex");
|
|
1305
|
+
} else {
|
|
1306
|
+
var metaKey = event.metaKey || event.ctrlKey;
|
|
1307
|
+
var optionIndex = findLastOptionIndex();
|
|
1308
|
+
if (event.shiftKey && metaKey) {
|
|
1309
|
+
onOptionSelectRange(event, startRangeIndex, optionIndex);
|
|
1310
|
+
}
|
|
1311
|
+
changeFocusedOptionIndex(event, optionIndex);
|
|
1312
|
+
!overlayVisibleState && show();
|
|
1313
|
+
}
|
|
1314
|
+
event.preventDefault();
|
|
1315
|
+
};
|
|
1316
|
+
var onPageUpKey = function onPageUpKey(event) {
|
|
1317
|
+
event.preventDefault();
|
|
1318
|
+
};
|
|
1319
|
+
var onPageDownKey = function onPageDownKey(event) {
|
|
1320
|
+
event.preventDefault();
|
|
1321
|
+
};
|
|
1322
|
+
var onTabKey = function onTabKey(event) {
|
|
1323
|
+
var pressedInInputText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1324
|
+
if (!pressedInInputText) {
|
|
1325
|
+
if (overlayVisibleState && hasFocusableElements()) {
|
|
1326
|
+
utils.DomHandler.focus(event.shiftKey ? lastHiddenFocusableElementOnOverlay.current : firstHiddenFocusableElementOnOverlay.current);
|
|
1327
|
+
event.preventDefault();
|
|
1328
|
+
} else {
|
|
1329
|
+
if (focusedOptionIndex !== -1) {
|
|
1330
|
+
onOptionSelect(event, visibleOptions[focusedOptionIndex]);
|
|
1331
|
+
}
|
|
1332
|
+
overlayVisibleState && hide(filter);
|
|
1333
|
+
}
|
|
1334
|
+
}
|
|
1335
|
+
};
|
|
1336
|
+
var onShiftKey = function onShiftKey() {
|
|
1337
|
+
setStartRangeIndex(focusedOptionIndex);
|
|
1216
1338
|
};
|
|
1217
1339
|
var onKeyDown = function onKeyDown(event) {
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
case
|
|
1340
|
+
var metaKey = event.metaKey || event.ctrlKey;
|
|
1341
|
+
switch (event.code) {
|
|
1342
|
+
case 'ArrowUp':
|
|
1221
1343
|
if (props.inline) break;
|
|
1222
|
-
|
|
1223
|
-
show();
|
|
1224
|
-
event.preventDefault();
|
|
1225
|
-
}
|
|
1344
|
+
onArrowUpKey(event);
|
|
1226
1345
|
break;
|
|
1227
|
-
|
|
1228
|
-
//space
|
|
1229
|
-
case 32:
|
|
1346
|
+
case 'ArrowDown':
|
|
1230
1347
|
if (props.inline) break;
|
|
1231
|
-
|
|
1348
|
+
onArrowDownKey(event);
|
|
1349
|
+
break;
|
|
1350
|
+
case 'Space':
|
|
1351
|
+
case 'NumpadEnter':
|
|
1352
|
+
case 'Enter':
|
|
1353
|
+
if (props.inline) break;
|
|
1354
|
+
onEnterKey(event);
|
|
1355
|
+
break;
|
|
1356
|
+
case 'Home':
|
|
1357
|
+
if (props.inline) break;
|
|
1358
|
+
onHomeKey(event);
|
|
1232
1359
|
event.preventDefault();
|
|
1233
1360
|
break;
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1361
|
+
case 'End':
|
|
1362
|
+
if (props.inline) break;
|
|
1363
|
+
onEndKey(event);
|
|
1364
|
+
event.preventDefault();
|
|
1365
|
+
break;
|
|
1366
|
+
case 'PageDown':
|
|
1367
|
+
onPageDownKey(event);
|
|
1368
|
+
break;
|
|
1369
|
+
case 'PageUp':
|
|
1370
|
+
onPageUpKey(event);
|
|
1371
|
+
break;
|
|
1372
|
+
case 'Escape':
|
|
1237
1373
|
if (props.inline) break;
|
|
1238
1374
|
hide();
|
|
1239
1375
|
break;
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1376
|
+
case 'Tab':
|
|
1377
|
+
onTabKey(event);
|
|
1378
|
+
break;
|
|
1379
|
+
case 'ShiftLeft':
|
|
1380
|
+
case 'ShiftRight':
|
|
1381
|
+
onShiftKey();
|
|
1382
|
+
break;
|
|
1383
|
+
default:
|
|
1384
|
+
if (event.code === 'KeyA' && metaKey) {
|
|
1385
|
+
var value = visibleOptions.filter(function (option) {
|
|
1386
|
+
return isValidOption(option);
|
|
1387
|
+
}).map(function (option) {
|
|
1388
|
+
return getOptionValue(option);
|
|
1389
|
+
});
|
|
1390
|
+
updateModel(event, value);
|
|
1391
|
+
event.preventDefault();
|
|
1392
|
+
break;
|
|
1393
|
+
}
|
|
1394
|
+
if (!metaKey && utils.ObjectUtils.isPrintableCharacter(event.key)) {
|
|
1395
|
+
!overlayVisibleState && show();
|
|
1396
|
+
searchOptions(event);
|
|
1397
|
+
event.preventDefault();
|
|
1249
1398
|
}
|
|
1250
1399
|
break;
|
|
1251
1400
|
}
|
|
1401
|
+
setClicked(false);
|
|
1252
1402
|
};
|
|
1253
1403
|
var onSelectAll = function onSelectAll(event) {
|
|
1254
1404
|
if (props.onSelectAll) {
|
|
@@ -1334,9 +1484,13 @@ var MultiSelect = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
|
|
|
1334
1484
|
};
|
|
1335
1485
|
var show = function show() {
|
|
1336
1486
|
setOverlayVisibleState(true);
|
|
1487
|
+
setFocusedOptionIndex(focusedOptionIndex !== -1 ? focusedOptionIndex : props.autoOptionFocus ? findFirstFocusedOptionIndex() : findSelectedOptionIndex());
|
|
1488
|
+
utils.DomHandler.focus(inputRef.current);
|
|
1337
1489
|
};
|
|
1338
1490
|
var hide = function hide() {
|
|
1491
|
+
setFocusedOptionIndex(-1);
|
|
1339
1492
|
setOverlayVisibleState(false);
|
|
1493
|
+
setClicked(false);
|
|
1340
1494
|
};
|
|
1341
1495
|
var onOverlayEnter = function onOverlayEnter(callback) {
|
|
1342
1496
|
utils.ZIndexUtils.set('overlay', overlayRef.current, context && context.autoZIndex || PrimeReact__default["default"].autoZIndex, context && context.zIndex['overlay'] || PrimeReact__default["default"].zIndex['overlay']);
|
|
@@ -1530,6 +1684,100 @@ var MultiSelect = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
|
|
|
1530
1684
|
var isOptionValueUsed = function isOptionValueUsed(option) {
|
|
1531
1685
|
return !props.useOptionAsValue && props.optionValue || option && option['value'] !== undefined;
|
|
1532
1686
|
};
|
|
1687
|
+
var isOptionGroup = function isOptionGroup(option) {
|
|
1688
|
+
return props.optionGroupLabel && option.optionGroup && option.group;
|
|
1689
|
+
};
|
|
1690
|
+
var hasSelectedOption = function hasSelectedOption() {
|
|
1691
|
+
return utils.ObjectUtils.isNotEmpty(props.value);
|
|
1692
|
+
};
|
|
1693
|
+
var hasFocusableElements = function hasFocusableElements() {
|
|
1694
|
+
return utils.DomHandler.getFocusableElements(overlayRef.current, ':not([data-p-hidden-focusable="true"])').length > 0;
|
|
1695
|
+
};
|
|
1696
|
+
var isOptionMatched = function isOptionMatched(option) {
|
|
1697
|
+
var _getOptionLabel;
|
|
1698
|
+
return isValidOption(option) && ((_getOptionLabel = getOptionLabel(option)) === null || _getOptionLabel === void 0 ? void 0 : _getOptionLabel.toLocaleLowerCase(props.filterLocale).startsWith(searchValue.current.toLocaleLowerCase(props.filterLocale)));
|
|
1699
|
+
};
|
|
1700
|
+
var isValidOption = function isValidOption(option) {
|
|
1701
|
+
return utils.ObjectUtils.isNotEmpty(option) && !(isOptionDisabled(option) || isOptionGroup(option));
|
|
1702
|
+
};
|
|
1703
|
+
var isValidSelectedOption = function isValidSelectedOption(option) {
|
|
1704
|
+
return isValidOption(option) && isSelected(option);
|
|
1705
|
+
};
|
|
1706
|
+
var findSelectedOptionIndex = function findSelectedOptionIndex() {
|
|
1707
|
+
return hasSelectedOption ? visibleOptions === null || visibleOptions === void 0 ? void 0 : visibleOptions.findIndex(function (option) {
|
|
1708
|
+
return isValidSelectedOption(option);
|
|
1709
|
+
}) : -1;
|
|
1710
|
+
};
|
|
1711
|
+
var findFirstFocusedOptionIndex = function findFirstFocusedOptionIndex() {
|
|
1712
|
+
var selectedIndex = findSelectedOptionIndex();
|
|
1713
|
+
return selectedIndex < 0 ? findFirstOptionIndex() : selectedIndex;
|
|
1714
|
+
};
|
|
1715
|
+
var findLastFocusedOptionIndex = function findLastFocusedOptionIndex() {
|
|
1716
|
+
var selectedIndex = findSelectedOptionIndex();
|
|
1717
|
+
return selectedIndex < 0 ? findLastOptionIndex() : selectedIndex;
|
|
1718
|
+
};
|
|
1719
|
+
var findFirstOptionIndex = function findFirstOptionIndex() {
|
|
1720
|
+
return visibleOptions.findIndex(function (option) {
|
|
1721
|
+
return isValidOption(option);
|
|
1722
|
+
});
|
|
1723
|
+
};
|
|
1724
|
+
var findLastOptionIndex = function findLastOptionIndex() {
|
|
1725
|
+
return utils.ObjectUtils.findLastIndex(visibleOptions, function (option) {
|
|
1726
|
+
return isValidOption(option);
|
|
1727
|
+
});
|
|
1728
|
+
};
|
|
1729
|
+
var findNextOptionIndex = function findNextOptionIndex(index) {
|
|
1730
|
+
var matchedOptionIndex = index < visibleOptions.length - 1 ? visibleOptions.slice(index + 1).findIndex(function (option) {
|
|
1731
|
+
return isValidOption(option);
|
|
1732
|
+
}) : -1;
|
|
1733
|
+
return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
|
|
1734
|
+
};
|
|
1735
|
+
var findPrevOptionIndex = function findPrevOptionIndex(index) {
|
|
1736
|
+
var matchedOptionIndex = index > 0 ? utils.ObjectUtils.findLastIndex(visibleOptions.slice(0, index), function (option) {
|
|
1737
|
+
return isValidOption(option);
|
|
1738
|
+
}) : -1;
|
|
1739
|
+
return matchedOptionIndex > -1 ? matchedOptionIndex : index;
|
|
1740
|
+
};
|
|
1741
|
+
var searchOptions = function searchOptions(event) {
|
|
1742
|
+
searchValue.current = (searchValue.current || '') + event.key;
|
|
1743
|
+
var optionIndex = -1;
|
|
1744
|
+
if (utils.ObjectUtils.isNotEmpty(searchValue.current)) {
|
|
1745
|
+
if (focusedOptionIndex !== -1) {
|
|
1746
|
+
optionIndex = visibleOptions.slice(focusedOptionIndex).findIndex(function (option) {
|
|
1747
|
+
return isOptionMatched(option);
|
|
1748
|
+
});
|
|
1749
|
+
optionIndex = optionIndex === -1 ? visibleOptions.slice(0, focusedOptionIndex).findIndex(function (option) {
|
|
1750
|
+
return isOptionMatched(option);
|
|
1751
|
+
}) : optionIndex + focusedOptionIndex;
|
|
1752
|
+
} else {
|
|
1753
|
+
optionIndex = visibleOptions.findIndex(function (option) {
|
|
1754
|
+
return isOptionMatched(option);
|
|
1755
|
+
});
|
|
1756
|
+
}
|
|
1757
|
+
if (optionIndex === -1 && focusedOptionIndex === -1) {
|
|
1758
|
+
optionIndex = findFirstFocusedOptionIndex();
|
|
1759
|
+
}
|
|
1760
|
+
if (optionIndex !== -1) {
|
|
1761
|
+
changeFocusedOptionIndex(event, optionIndex);
|
|
1762
|
+
}
|
|
1763
|
+
}
|
|
1764
|
+
if (searchTimeout.current) {
|
|
1765
|
+
clearTimeout(searchTimeout.current);
|
|
1766
|
+
}
|
|
1767
|
+
searchTimeout.current = setTimeout(function () {
|
|
1768
|
+
searchValue.current = '';
|
|
1769
|
+
searchTimeout.current = null;
|
|
1770
|
+
}, 500);
|
|
1771
|
+
};
|
|
1772
|
+
var changeFocusedOptionIndex = function changeFocusedOptionIndex(event, index) {
|
|
1773
|
+
if (focusedOptionIndex !== index) {
|
|
1774
|
+
setFocusedOptionIndex(index);
|
|
1775
|
+
scrollInView();
|
|
1776
|
+
if (props.selectOnFocus) {
|
|
1777
|
+
onOptionSelect(event, visibleOptions[index], false);
|
|
1778
|
+
}
|
|
1779
|
+
}
|
|
1780
|
+
};
|
|
1533
1781
|
var removeChip = function removeChip(event, item) {
|
|
1534
1782
|
var value = props.value.filter(function (val) {
|
|
1535
1783
|
return !utils.ObjectUtils.equals(val, item, equalityKey);
|
|
@@ -1670,6 +1918,7 @@ var MultiSelect = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
|
|
|
1670
1918
|
setTimeout(function () {
|
|
1671
1919
|
props.overlayVisible ? show() : hide();
|
|
1672
1920
|
}, 100);
|
|
1921
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1673
1922
|
}, [props.overlayVisible]);
|
|
1674
1923
|
hooks.useUpdateEffect(function () {
|
|
1675
1924
|
if (overlayVisibleState && filterState && hasFilter) {
|
|
@@ -1754,11 +2003,31 @@ var MultiSelect = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
|
|
|
1754
2003
|
role: 'listbox',
|
|
1755
2004
|
'aria-expanded': overlayVisibleState,
|
|
1756
2005
|
disabled: props.disabled,
|
|
1757
|
-
tabIndex: props.tabIndex
|
|
2006
|
+
tabIndex: !props.disabled ? props.tabIndex : -1
|
|
1758
2007
|
}, ariaProps), ptm('input'));
|
|
2008
|
+
var firstHiddenElementProps = mergeProps({
|
|
2009
|
+
ref: firstHiddenFocusableElementOnOverlay,
|
|
2010
|
+
role: 'presentation',
|
|
2011
|
+
'aria-hidden': true,
|
|
2012
|
+
className: 'p-hidden-accessible p-hidden-focusable',
|
|
2013
|
+
tabIndex: '0',
|
|
2014
|
+
onFocus: onFirstHiddenFocus,
|
|
2015
|
+
'data-p-hidden-accessible': true,
|
|
2016
|
+
'data-p-hidden-focusable': true
|
|
2017
|
+
}, ptm('hiddenFirstFocusableEl'));
|
|
2018
|
+
var lastHiddenElementProps = mergeProps({
|
|
2019
|
+
ref: lastHiddenFocusableElementOnOverlay,
|
|
2020
|
+
role: 'presentation',
|
|
2021
|
+
'aria-hidden': true,
|
|
2022
|
+
className: 'p-hidden-accessible p-hidden-focusable',
|
|
2023
|
+
tabIndex: '0',
|
|
2024
|
+
onFocus: onLastHiddenFocus,
|
|
2025
|
+
'data-p-hidden-accessible': true,
|
|
2026
|
+
'data-p-hidden-focusable': true
|
|
2027
|
+
}, ptm('hiddenLastFocusableEl'));
|
|
1759
2028
|
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("div", rootProps, /*#__PURE__*/React__namespace.createElement("div", hiddenInputWrapperProps, /*#__PURE__*/React__namespace.createElement("input", _extends({}, inputProps, {
|
|
1760
2029
|
readOnly: true
|
|
1761
|
-
}))), !props.inline && /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, label, clearIcon, triggerIcon), /*#__PURE__*/React__namespace.createElement(MultiSelectPanel, _extends({
|
|
2030
|
+
}))), !props.inline && /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, label, clearIcon, triggerIcon), /*#__PURE__*/React__namespace.createElement("span", firstHiddenElementProps), /*#__PURE__*/React__namespace.createElement(MultiSelectPanel, _extends({
|
|
1762
2031
|
hostName: "MultiSelect",
|
|
1763
2032
|
ref: overlayRef,
|
|
1764
2033
|
visibleOptions: visibleOptions
|
|
@@ -1766,6 +2035,8 @@ var MultiSelect = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
|
|
|
1766
2035
|
onClick: onPanelClick,
|
|
1767
2036
|
onOverlayHide: hide,
|
|
1768
2037
|
filterValue: filterState,
|
|
2038
|
+
focusedOptionIndex: focusedOptionIndex,
|
|
2039
|
+
setFocusedOptionIndex: setFocusedOptionIndex,
|
|
1769
2040
|
hasFilter: hasFilter,
|
|
1770
2041
|
onFilterInputChange: onFilterInputChange,
|
|
1771
2042
|
resetFilter: resetFilter,
|
|
@@ -1782,7 +2053,6 @@ var MultiSelect = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
|
|
|
1782
2053
|
isAllSelected: isAllSelected,
|
|
1783
2054
|
onOptionSelect: onOptionSelect,
|
|
1784
2055
|
allowOptionSelect: allowOptionSelect,
|
|
1785
|
-
onOptionKeyDown: onOptionKeyDown,
|
|
1786
2056
|
"in": overlayVisibleState,
|
|
1787
2057
|
onEnter: onOverlayEnter,
|
|
1788
2058
|
onEntered: onOverlayEntered,
|
|
@@ -1793,7 +2063,7 @@ var MultiSelect = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namesp
|
|
|
1793
2063
|
sx: sx,
|
|
1794
2064
|
isUnstyled: isUnstyled,
|
|
1795
2065
|
metaData: metaData
|
|
1796
|
-
}))), hasTooltip && /*#__PURE__*/React__namespace.createElement(tooltip.Tooltip, _extends({
|
|
2066
|
+
})), /*#__PURE__*/React__namespace.createElement("span", lastHiddenElementProps)), hasTooltip && /*#__PURE__*/React__namespace.createElement(tooltip.Tooltip, _extends({
|
|
1797
2067
|
target: elementRef,
|
|
1798
2068
|
content: props.tooltip
|
|
1799
2069
|
}, props.tooltipOptions, {
|