@elliemae/ds-controlled-form 2.4.1 → 2.4.2-rc.11
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/cjs/autocomplete/config/useAutocomplete.js +1 -3
- package/cjs/autocomplete/parts/A11yFocusedOption.js +43 -0
- package/cjs/autocomplete/parts/container/Container.js +36 -24
- package/cjs/autocomplete/parts/container/styled.js +2 -2
- package/cjs/autocomplete/parts/menu-list/MenuList.js +4 -2
- package/cjs/autocomplete/parts/styled.js +2 -0
- package/cjs/autocomplete/utils/listHelper.js +1 -1
- package/cjs/checkbox/ControlledCheckbox.js +49 -33
- package/cjs/checkbox/exported-related/data-test-ids.js +10 -0
- package/cjs/checkbox/exported-related/index.js +12 -0
- package/cjs/checkbox/exported-related/theming.js +13 -0
- package/cjs/checkbox/react-desc-prop-types.js +2 -2
- package/cjs/checkbox/styles.js +28 -15
- package/cjs/combobox/ComboBoxCTX.js +7 -4
- package/cjs/combobox/ComboboxDataTestids.js +1 -1
- package/cjs/combobox/config/useComboBox.js +21 -8
- package/cjs/combobox/index.js +5 -0
- package/cjs/combobox/parts/A11yFocusedOption.js +14 -6
- package/cjs/combobox/parts/A11ySelectedValues.js +0 -2
- package/cjs/combobox/parts/DropdownIndicator.js +4 -4
- package/cjs/combobox/parts/container/Container.js +14 -17
- package/cjs/combobox/parts/container/styled.js +13 -7
- package/cjs/combobox/parts/controls/Controls.js +22 -14
- package/cjs/combobox/parts/controls/styled.js +22 -13
- package/cjs/combobox/parts/controls/useOnPillsNavigation.js +3 -3
- package/cjs/combobox/parts/controls-input/ControlsInput.js +3 -3
- package/cjs/combobox/parts/controls-input/styled.js +7 -3
- package/cjs/combobox/parts/controls-input/useControlsInput.js +5 -5
- package/cjs/combobox/parts/controls-input/useKeyboardNavigation.js +37 -29
- package/cjs/combobox/parts/controls-input/useMaskedOnChange.js +6 -6
- package/cjs/combobox/parts/dropdown-indicator/DropdownIndicator.js +2 -2
- package/cjs/combobox/parts/header-list/HeaderList.js +4 -3
- package/cjs/combobox/parts/header-list/useHeaderListHandlers.js +11 -7
- package/cjs/combobox/parts/menu-list/MenuList.js +10 -5
- package/cjs/combobox/parts/menu-list/styled.js +16 -9
- package/cjs/combobox/parts/menu-list/useItemRenderer.js +17 -15
- package/cjs/combobox/parts/multi-selected-values-container/MultiSelectedValuesContainer.js +1 -1
- package/cjs/combobox/parts/multi-selected-values-container/RemovableSelectedValuePill.js +2 -0
- package/cjs/combobox/parts/multi-selected-values-container/useGroupPills.js +13 -10
- package/cjs/combobox/react-desc-prop-types.js +3 -2
- package/cjs/combobox/theming.js +13 -0
- package/cjs/combobox/utils/listHelper.js +12 -1
- package/cjs/date-time-picker/config/useChangeHandlers.js +8 -12
- package/cjs/date-time-picker/config/useControlledDateTimePicker.js +13 -9
- package/cjs/date-time-picker/config/useFocusTracker.js +136 -0
- package/cjs/date-time-picker/config/useGetReferences.js +40 -19
- package/cjs/date-time-picker/config/useGlobalKeyHandlers.js +8 -12
- package/cjs/date-time-picker/parts/ClearButton/ClearButton.js +12 -2
- package/cjs/date-time-picker/parts/ClearButton/useClearButton.js +12 -25
- package/cjs/date-time-picker/parts/ControlledDateTimePickerContent.js +4 -7
- package/cjs/date-time-picker/parts/DateInputs/DDInput.js +8 -2
- package/cjs/date-time-picker/parts/DateInputs/DateInputs.js +9 -4
- package/cjs/date-time-picker/parts/DateInputs/MMInput.js +8 -2
- package/cjs/date-time-picker/parts/DateInputs/YYYYInput.js +8 -2
- package/cjs/date-time-picker/parts/DateInputs/useDateInputs.js +76 -95
- package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +31 -5
- package/cjs/date-time-picker/parts/Pickers/Calendar/Day.js +16 -10
- package/cjs/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +12 -12
- package/cjs/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +2 -38
- package/cjs/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +40 -73
- package/cjs/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +18 -27
- package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +1 -0
- package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +17 -23
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +13 -7
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +14 -8
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +13 -7
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +36 -230
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +11 -13
- package/cjs/date-time-picker/parts/TimeInputs/HHInput.js +8 -2
- package/cjs/date-time-picker/parts/TimeInputs/MeridiemInput.js +8 -2
- package/cjs/date-time-picker/parts/TimeInputs/MinutesInput.js +8 -2
- package/cjs/date-time-picker/parts/TimeInputs/TimeInputs.js +11 -6
- package/cjs/date-time-picker/parts/TimeInputs/useTimeInputs.js +44 -74
- package/cjs/date-time-picker/utils/constants.js +0 -12
- package/cjs/date-time-picker/utils/hooks/useGetStartingFocusedDay.js +38 -36
- package/cjs/index.js +16 -7
- package/cjs/input-group/InputGroup.js +70 -0
- package/cjs/input-group/InputGroupDataTestIds.js +12 -0
- package/cjs/input-group/exported-related/data-test-ids.js +12 -0
- package/cjs/input-group/exported-related/index.js +12 -0
- package/cjs/input-group/exported-related/theming.js +13 -0
- package/cjs/input-group/index.js +12 -0
- package/cjs/input-group/react-desc-prop-types.js +14 -0
- package/cjs/input-group/styled.js +47 -0
- package/cjs/mask-hook/hooks/index.js +0 -1
- package/cjs/mask-hook/hooks/usePhoneMask.js +2 -2
- package/cjs/mask-hook/hooks/useRegExpMask.js +0 -1
- package/cjs/mask-hook/index.js +0 -1
- package/cjs/text-input/styled/borders.js +1 -1
- package/esm/autocomplete/config/useAutocomplete.js +1 -3
- package/esm/autocomplete/parts/A11yFocusedOption.js +32 -0
- package/esm/autocomplete/parts/container/Container.js +39 -27
- package/esm/autocomplete/parts/container/styled.js +2 -2
- package/esm/autocomplete/parts/menu-list/MenuList.js +5 -3
- package/esm/autocomplete/parts/styled.js +1 -0
- package/esm/autocomplete/utils/listHelper.js +1 -1
- package/esm/checkbox/ControlledCheckbox.js +52 -36
- package/esm/checkbox/exported-related/data-test-ids.js +6 -0
- package/esm/checkbox/exported-related/index.js +2 -0
- package/esm/checkbox/exported-related/theming.js +8 -0
- package/esm/checkbox/react-desc-prop-types.js +2 -2
- package/esm/checkbox/styles.js +26 -15
- package/esm/combobox/ComboBoxCTX.js +7 -4
- package/esm/combobox/ComboboxDataTestids.js +1 -1
- package/esm/combobox/config/useComboBox.js +22 -9
- package/esm/combobox/index.js +2 -0
- package/esm/combobox/parts/A11yFocusedOption.js +15 -7
- package/esm/combobox/parts/A11ySelectedValues.js +0 -2
- package/esm/combobox/parts/DropdownIndicator.js +4 -4
- package/esm/combobox/parts/container/Container.js +16 -19
- package/esm/combobox/parts/container/styled.js +13 -6
- package/esm/combobox/parts/controls/Controls.js +22 -14
- package/esm/combobox/parts/controls/styled.js +22 -13
- package/esm/combobox/parts/controls/useOnPillsNavigation.js +3 -3
- package/esm/combobox/parts/controls-input/ControlsInput.js +3 -3
- package/esm/combobox/parts/controls-input/styled.js +7 -3
- package/esm/combobox/parts/controls-input/useControlsInput.js +5 -5
- package/esm/combobox/parts/controls-input/useKeyboardNavigation.js +38 -30
- package/esm/combobox/parts/controls-input/useMaskedOnChange.js +6 -6
- package/esm/combobox/parts/dropdown-indicator/DropdownIndicator.js +2 -2
- package/esm/combobox/parts/header-list/HeaderList.js +4 -3
- package/esm/combobox/parts/header-list/useHeaderListHandlers.js +11 -7
- package/esm/combobox/parts/menu-list/MenuList.js +10 -5
- package/esm/combobox/parts/menu-list/styled.js +16 -10
- package/esm/combobox/parts/menu-list/useItemRenderer.js +19 -17
- package/esm/combobox/parts/multi-selected-values-container/MultiSelectedValuesContainer.js +1 -1
- package/esm/combobox/parts/multi-selected-values-container/RemovableSelectedValuePill.js +2 -0
- package/esm/combobox/parts/multi-selected-values-container/useGroupPills.js +13 -10
- package/esm/combobox/react-desc-prop-types.js +3 -2
- package/esm/combobox/theming.js +8 -0
- package/esm/combobox/utils/listHelper.js +12 -2
- package/esm/date-time-picker/config/useChangeHandlers.js +8 -12
- package/esm/date-time-picker/config/useControlledDateTimePicker.js +13 -9
- package/esm/date-time-picker/config/useFocusTracker.js +132 -0
- package/esm/date-time-picker/config/useGetReferences.js +41 -20
- package/esm/date-time-picker/config/useGlobalKeyHandlers.js +8 -12
- package/esm/date-time-picker/parts/ClearButton/ClearButton.js +12 -2
- package/esm/date-time-picker/parts/ClearButton/useClearButton.js +12 -25
- package/esm/date-time-picker/parts/ControlledDateTimePickerContent.js +4 -7
- package/esm/date-time-picker/parts/DateInputs/DDInput.js +8 -2
- package/esm/date-time-picker/parts/DateInputs/DateInputs.js +9 -4
- package/esm/date-time-picker/parts/DateInputs/MMInput.js +8 -2
- package/esm/date-time-picker/parts/DateInputs/YYYYInput.js +8 -2
- package/esm/date-time-picker/parts/DateInputs/useDateInputs.js +77 -96
- package/esm/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +32 -6
- package/esm/date-time-picker/parts/Pickers/Calendar/Day.js +16 -10
- package/esm/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +12 -12
- package/esm/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +3 -39
- package/esm/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +40 -73
- package/esm/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +18 -27
- package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +1 -0
- package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +17 -23
- package/esm/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +14 -8
- package/esm/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +15 -9
- package/esm/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +14 -8
- package/esm/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +36 -230
- package/esm/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +11 -13
- package/esm/date-time-picker/parts/TimeInputs/HHInput.js +8 -2
- package/esm/date-time-picker/parts/TimeInputs/MeridiemInput.js +8 -2
- package/esm/date-time-picker/parts/TimeInputs/MinutesInput.js +8 -2
- package/esm/date-time-picker/parts/TimeInputs/TimeInputs.js +11 -6
- package/esm/date-time-picker/parts/TimeInputs/useTimeInputs.js +44 -74
- package/esm/date-time-picker/utils/constants.js +1 -7
- package/esm/date-time-picker/utils/hooks/useGetStartingFocusedDay.js +38 -36
- package/esm/index.js +5 -1
- package/esm/input-group/InputGroup.js +60 -0
- package/esm/input-group/InputGroupDataTestIds.js +8 -0
- package/esm/input-group/exported-related/data-test-ids.js +8 -0
- package/esm/input-group/exported-related/index.js +2 -0
- package/esm/input-group/exported-related/theming.js +8 -0
- package/esm/input-group/index.js +2 -0
- package/esm/input-group/react-desc-prop-types.js +10 -0
- package/esm/input-group/styled.js +36 -0
- package/esm/mask-hook/hooks/index.js +1 -1
- package/esm/mask-hook/hooks/usePhoneMask.js +2 -2
- package/esm/mask-hook/hooks/useRegExpMask.js +1 -1
- package/esm/mask-hook/index.js +1 -1
- package/esm/text-input/styled/borders.js +1 -1
- package/package.json +75 -19
- package/types/autocomplete/parts/A11yFocusedOption.d.ts +5 -0
- package/types/autocomplete/parts/container/styled.d.ts +1 -1
- package/types/autocomplete/parts/styled.d.ts +0 -0
- package/types/autocomplete/utils/listHelper.d.ts +5 -5
- package/types/checkbox/exported-related/data-test-ids.d.ts +4 -0
- package/types/checkbox/exported-related/index.d.ts +2 -0
- package/types/checkbox/exported-related/theming.d.ts +6 -0
- package/types/checkbox/react-desc-prop-types.d.ts +4 -4
- package/types/checkbox/styles.d.ts +6 -5
- package/types/combobox/ComboboxDataTestids.d.ts +1 -1
- package/types/combobox/index.d.ts +2 -0
- package/types/combobox/parts/container/styled.d.ts +1 -2
- package/types/combobox/parts/menu-list/styled.d.ts +1 -0
- package/types/combobox/react-desc-prop-types.d.ts +8 -6
- package/types/combobox/sharedTypes.d.ts +3 -2
- package/types/combobox/theming.d.ts +6 -0
- package/types/combobox/utils/listHelper.d.ts +1 -0
- package/types/date-time-picker/config/useChangeHandlers.d.ts +3 -1
- package/types/date-time-picker/config/useControlledDateTimePicker.d.ts +2 -5
- package/types/date-time-picker/config/useFocusTracker.d.ts +38 -0
- package/types/date-time-picker/config/useGetPropsBasedOnType.d.ts +6 -6
- package/types/date-time-picker/config/useGetReferences.d.ts +30 -36
- package/types/date-time-picker/config/useGlobalKeyHandlers.d.ts +3 -1
- package/types/date-time-picker/parts/DateInputs/DDInput.d.ts +2 -1
- package/types/date-time-picker/parts/DateInputs/MMInput.d.ts +2 -1
- package/types/date-time-picker/parts/DateInputs/YYYYInput.d.ts +2 -1
- package/types/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.d.ts +14 -0
- package/types/date-time-picker/parts/Pickers/Calendar/useFocusLogic.d.ts +1 -2
- package/types/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.d.ts +19 -0
- package/types/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.d.ts +0 -6
- package/types/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.d.ts +14 -0
- package/types/date-time-picker/parts/TimeInputs/HHInput.d.ts +2 -1
- package/types/date-time-picker/parts/TimeInputs/MeridiemInput.d.ts +2 -1
- package/types/date-time-picker/parts/TimeInputs/MinutesInput.d.ts +2 -1
- package/types/date-time-picker/propTypes.d.ts +117 -0
- package/types/date-time-picker/sharedTypes.d.ts +1 -1
- package/types/date-time-picker/utils/constants.d.ts +0 -6
- package/types/index.d.ts +1 -0
- package/types/input-group/InputGroup.d.ts +5 -0
- package/types/input-group/InputGroupDataTestIds.d.ts +6 -0
- package/types/input-group/exported-related/data-test-ids.d.ts +6 -0
- package/types/input-group/exported-related/index.d.ts +2 -0
- package/types/input-group/exported-related/theming.d.ts +6 -0
- package/types/input-group/index.d.ts +2 -0
- package/types/input-group/react-desc-prop-types.d.ts +19 -0
- package/types/input-group/styled.d.ts +4 -0
- package/types/input-group/tests/DSInputGroup.test.d.ts +1 -0
- package/types/mask-hook/hooks/useRegExpMask.d.ts +0 -1
- package/types/text-input/config/useInputText.d.ts +6 -6
- package/cjs/combobox/parts/menu-list/useMenuListSetFocusOption.js +0 -51
- package/esm/combobox/parts/menu-list/useMenuListSetFocusOption.js +0 -47
- package/types/combobox/parts/menu-list/useMenuListSetFocusOption.d.ts +0 -1
|
@@ -22,6 +22,7 @@ const HeaderList = () => {
|
|
|
22
22
|
const {
|
|
23
23
|
props: {
|
|
24
24
|
selectedValues,
|
|
25
|
+
filteredOptions,
|
|
25
26
|
onSelectAll
|
|
26
27
|
},
|
|
27
28
|
showSelectedOptions,
|
|
@@ -40,15 +41,15 @@ const HeaderList = () => {
|
|
|
40
41
|
} = useHeaderListHandlers.useHeaderListHandlers();
|
|
41
42
|
return /*#__PURE__*/_jsx__default["default"](styled.StyledHeaderListWrapper, {
|
|
42
43
|
onKeyDown: handleKeyDown,
|
|
43
|
-
onMouseDown: handleOnMouseDown
|
|
44
|
+
onMouseDown: handleOnMouseDown,
|
|
45
|
+
"data-testid": ComboboxDataTestids.ComboboxDataTestid.MULTISELECT.HEADER_LIST
|
|
44
46
|
}, void 0, /*#__PURE__*/_jsx__default["default"](styled.StyledSelectAllCheckbox, {}, void 0, onSelectAll && /*#__PURE__*/_jsx__default["default"](ControlledCheckbox.DSControlledCheckbox, {
|
|
45
47
|
checked: checkboxStatus,
|
|
46
|
-
"aria-controls":
|
|
48
|
+
"aria-controls": filteredOptions.map(item => item.dsId).join(' '),
|
|
47
49
|
name: "select-all-checkbox",
|
|
48
50
|
"aria-label": "Select/Unselect All Items",
|
|
49
51
|
id: "select-all-checkbox",
|
|
50
52
|
onChange: handleSelectAllCheckboxChange,
|
|
51
|
-
"data-testid": ComboboxDataTestids.ComboboxDataTestid.MULTISELECT.SELECT_ALL_CHECKBOX,
|
|
52
53
|
onKeyDown: handleCheckAllOnTab,
|
|
53
54
|
innerRef: selectAllCheckboxRef
|
|
54
55
|
})), /*#__PURE__*/_jsx__default["default"](styled.StyledSelectedItems, {}, void 0, multiSelectedValues.length > 0 ? /*#__PURE__*/_jsx__default["default"](styled.StyledButtonSelection, {
|
|
@@ -20,7 +20,7 @@ const useHeaderListHandlers = () => {
|
|
|
20
20
|
},
|
|
21
21
|
showSelectedOptions,
|
|
22
22
|
setShowSelectedOptions,
|
|
23
|
-
|
|
23
|
+
setMenuState
|
|
24
24
|
} = React.useContext(ComboBoxCTX.ComboBoxContext);
|
|
25
25
|
const multiSelectedValues = selectedValues;
|
|
26
26
|
const selectableOptions = listHelper.getSelectableOptions(filteredOptions);
|
|
@@ -55,27 +55,31 @@ const useHeaderListHandlers = () => {
|
|
|
55
55
|
e.preventDefault();
|
|
56
56
|
setShowSelectedOptions(!showSelectedOptions);
|
|
57
57
|
}, [setShowSelectedOptions, showSelectedOptions]); // when pressing escape on each header list button we close the menu
|
|
58
|
+
// and set focus on input
|
|
58
59
|
|
|
59
60
|
const handleKeyDown = React.useCallback(e => {
|
|
60
61
|
if (e.key === 'Escape') {
|
|
61
|
-
|
|
62
|
+
var _innerRef$current;
|
|
63
|
+
|
|
64
|
+
setMenuState(false, 'close', e);
|
|
65
|
+
(_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.focus();
|
|
62
66
|
}
|
|
63
|
-
}, [
|
|
67
|
+
}, [setMenuState, innerRef]); // when hitting tab on selected values button filter we target the input again
|
|
64
68
|
|
|
65
69
|
const handleFilterSelectionBtnOnTab = React.useCallback(e => {
|
|
66
70
|
if (e.key === 'Tab' && !e.shiftKey) {
|
|
67
|
-
var _innerRef$
|
|
71
|
+
var _innerRef$current2;
|
|
68
72
|
|
|
69
73
|
e.preventDefault();
|
|
70
|
-
(_innerRef$
|
|
74
|
+
(_innerRef$current2 = innerRef.current) === null || _innerRef$current2 === void 0 ? void 0 : _innerRef$current2.focus();
|
|
71
75
|
}
|
|
72
76
|
}, [innerRef]);
|
|
73
77
|
const handleCheckAllOnTab = React.useCallback(e => {
|
|
74
78
|
if (e.key === 'Tab' && !e.shiftKey && multiSelectedValues.length === 0) {
|
|
75
|
-
var _innerRef$
|
|
79
|
+
var _innerRef$current3;
|
|
76
80
|
|
|
77
81
|
e.preventDefault();
|
|
78
|
-
(_innerRef$
|
|
82
|
+
(_innerRef$current3 = innerRef.current) === null || _innerRef$current3 === void 0 ? void 0 : _innerRef$current3.focus();
|
|
79
83
|
}
|
|
80
84
|
}, [innerRef, multiSelectedValues]);
|
|
81
85
|
React.useEffect(() => {
|
|
@@ -16,11 +16,14 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
16
16
|
|
|
17
17
|
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
18
18
|
|
|
19
|
-
var _HeaderList
|
|
19
|
+
var _HeaderList;
|
|
20
20
|
const MenuList = () => {
|
|
21
|
+
var _StyledNoResultsWrapp;
|
|
22
|
+
|
|
21
23
|
const {
|
|
22
24
|
props: {
|
|
23
25
|
menuMinWidth,
|
|
26
|
+
noOptionsMessage,
|
|
24
27
|
menuMaxHeight,
|
|
25
28
|
onCreate,
|
|
26
29
|
inline,
|
|
@@ -48,7 +51,9 @@ const MenuList = () => {
|
|
|
48
51
|
inline: inline,
|
|
49
52
|
onMouseDown: preventLoseInputFocus,
|
|
50
53
|
width: width,
|
|
51
|
-
minWidth: menuMinWidth
|
|
54
|
+
minWidth: menuMinWidth // we use width as key to force react virtual re-render on window resize
|
|
55
|
+
// and update the item height accordly
|
|
56
|
+
,
|
|
52
57
|
children: [withHeader && (_HeaderList || (_HeaderList = /*#__PURE__*/_jsx__default["default"](HeaderList.HeaderList, {}))), filteredOptions.length > 0 || onCreate ? /*#__PURE__*/jsxRuntime.jsx(styled.StyledVirtualListWrapper, {
|
|
53
58
|
inline: inline,
|
|
54
59
|
maxHeight: menuMaxHeight,
|
|
@@ -64,9 +69,9 @@ const MenuList = () => {
|
|
|
64
69
|
}
|
|
65
70
|
}, void 0, ItemRenderer)
|
|
66
71
|
}) : _StyledNoResultsWrapp || (_StyledNoResultsWrapp = /*#__PURE__*/_jsx__default["default"](styled.StyledNoResultsWrapper, {
|
|
67
|
-
|
|
68
|
-
}, void 0,
|
|
69
|
-
}), [wrapperListRef, inline, preventLoseInputFocus, width, menuMinWidth, withHeader, filteredOptions.length, onCreate, menuMaxHeight, listRef, virtualListHelpers === null || virtualListHelpers === void 0 ? void 0 : virtualListHelpers.totalSize, ItemRenderer]);
|
|
72
|
+
role: "alert"
|
|
73
|
+
}, void 0, noOptionsMessage))]
|
|
74
|
+
}, width), [wrapperListRef, inline, preventLoseInputFocus, width, menuMinWidth, withHeader, filteredOptions.length, onCreate, menuMaxHeight, listRef, virtualListHelpers === null || virtualListHelpers === void 0 ? void 0 : virtualListHelpers.totalSize, ItemRenderer, noOptionsMessage]);
|
|
70
75
|
};
|
|
71
76
|
|
|
72
77
|
exports.MenuList = MenuList;
|
|
@@ -9,8 +9,8 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
9
9
|
|
|
10
10
|
var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
|
|
11
11
|
|
|
12
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
13
|
-
const StyledListWrapper = dsSystem.styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n min-width: ", ";\n width: ", ";\n background-color: #ffffff;\n"])), _ref => {
|
|
12
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
13
|
+
const StyledListWrapper = dsSystem.styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n min-width: ", ";\n width: ", ";\n background-color: #ffffff;\n max-height: ", ";\n z-index: 100;\n"])), _ref => {
|
|
14
14
|
let {
|
|
15
15
|
inline,
|
|
16
16
|
minWidth
|
|
@@ -21,23 +21,30 @@ const StyledListWrapper = dsSystem.styled.div(_templateObject || (_templateObjec
|
|
|
21
21
|
width
|
|
22
22
|
} = _ref2;
|
|
23
23
|
return "".concat(width, "px");
|
|
24
|
+
}, _ref3 => {
|
|
25
|
+
let {
|
|
26
|
+
maxHeight
|
|
27
|
+
} = _ref3;
|
|
28
|
+
return "".concat(maxHeight, "px");
|
|
24
29
|
});
|
|
25
|
-
const StyledList = dsSystem.styled.ul(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default["default"](["\n position: relative;\n padding: 0;\n"])));
|
|
26
|
-
const StyledVirtualListWrapper = dsSystem.styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral__default["default"](["\n overflow-y: auto;\n margin-top: ", ";\n
|
|
30
|
+
const StyledList = dsSystem.styled.ul(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default["default"](["\n position: relative;\n padding: 0;\n background-color: #ffffff;\n overflow-x: hidden;\n"])));
|
|
31
|
+
const StyledVirtualListWrapper = dsSystem.styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral__default["default"](["\n overflow-y: auto;\n margin-top: ", ";\n max-height: ", ";\n"])), _ref4 => {
|
|
27
32
|
let {
|
|
28
33
|
withHeader
|
|
29
|
-
} =
|
|
34
|
+
} = _ref4;
|
|
30
35
|
return withHeader ? '28px' : '';
|
|
31
|
-
},
|
|
36
|
+
}, _ref5 => {
|
|
32
37
|
let {
|
|
33
38
|
maxHeight
|
|
34
|
-
} =
|
|
35
|
-
return
|
|
39
|
+
} = _ref5;
|
|
40
|
+
return maxHeight ? "".concat(maxHeight, "px") : '300px';
|
|
36
41
|
});
|
|
37
42
|
const StyledCreatableLabel = dsSystem.styled.span(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral__default["default"](["\n font-weight: bold;\n font-style: italic;\n"])));
|
|
38
|
-
const
|
|
43
|
+
const StyledCreatableValue = dsSystem.styled.span(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral__default["default"](["\n word-break: break-all;\n"])));
|
|
44
|
+
const StyledNoResultsWrapper = dsSystem.styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral__default["default"](["\n padding: 16px;\n"])));
|
|
39
45
|
|
|
40
46
|
exports.StyledCreatableLabel = StyledCreatableLabel;
|
|
47
|
+
exports.StyledCreatableValue = StyledCreatableValue;
|
|
41
48
|
exports.StyledList = StyledList;
|
|
42
49
|
exports.StyledListWrapper = StyledListWrapper;
|
|
43
50
|
exports.StyledNoResultsWrapper = StyledNoResultsWrapper;
|
|
@@ -41,7 +41,7 @@ const useItemRenderer = () => {
|
|
|
41
41
|
onFilter,
|
|
42
42
|
allOptions
|
|
43
43
|
},
|
|
44
|
-
|
|
44
|
+
setMenuState,
|
|
45
45
|
inputValue,
|
|
46
46
|
focusOptionIdx,
|
|
47
47
|
setInputValue,
|
|
@@ -49,20 +49,21 @@ const useItemRenderer = () => {
|
|
|
49
49
|
} = React.useContext(ComboBoxCTX.ComboBoxContext);
|
|
50
50
|
const multiple = Array.isArray(selectedValues);
|
|
51
51
|
const CBItem = multiple ? dsForm.MultiMenuItem : dsForm.SingleMenuItem;
|
|
52
|
+
const handleOnCreateClick = React.useCallback(() => {
|
|
53
|
+
if (inputValue && onCreate) {
|
|
54
|
+
onCreate(inputValue);
|
|
55
|
+
setInputValue('');
|
|
56
|
+
if (onFilter) onFilter(allOptions, inputValue);
|
|
57
|
+
}
|
|
58
|
+
}, [onFilter, onCreate, inputValue, allOptions, setInputValue]);
|
|
52
59
|
const handleClick = React.useCallback((option, e) => {
|
|
53
|
-
if (option.type === constants.
|
|
54
|
-
if (inputValue) {
|
|
55
|
-
onCreate(inputValue);
|
|
56
|
-
setInputValue('');
|
|
57
|
-
onFilter(allOptions, inputValue);
|
|
58
|
-
}
|
|
59
|
-
} else if (option.type === constants.MENU_OPTION_TYPES.OPTION) {
|
|
60
|
+
if (option.type === constants.MENU_OPTION_TYPES.OPTION) {
|
|
60
61
|
if (!option.disabled) {
|
|
61
62
|
if (onFilter) onFilter(allOptions, inputValue);
|
|
62
63
|
setInputValue('');
|
|
63
64
|
|
|
64
65
|
if (!multiple) {
|
|
65
|
-
|
|
66
|
+
setMenuState(false, 'selectOption', e);
|
|
66
67
|
}
|
|
67
68
|
|
|
68
69
|
onChange(listHelper.getSuggestedValueOnChange(option, selectedValues), option, e);
|
|
@@ -72,7 +73,7 @@ const useItemRenderer = () => {
|
|
|
72
73
|
|
|
73
74
|
e.stopPropagation();
|
|
74
75
|
e.preventDefault();
|
|
75
|
-
}, [onFilter, selectedValues, onChange,
|
|
76
|
+
}, [onFilter, selectedValues, allOptions, onChange, setMenuState, multiple]); // prevent blur from controls input
|
|
76
77
|
|
|
77
78
|
const handleOnMouseDown = React.useCallback(e => {
|
|
78
79
|
e.preventDefault();
|
|
@@ -87,9 +88,10 @@ const useItemRenderer = () => {
|
|
|
87
88
|
const generalProps = {
|
|
88
89
|
wrapperStyles: {
|
|
89
90
|
position: 'absolute',
|
|
90
|
-
top:
|
|
91
|
+
top: 0,
|
|
91
92
|
left: 0,
|
|
92
|
-
width: '100%'
|
|
93
|
+
width: '100%',
|
|
94
|
+
transform: "translateY(".concat(vItem.start, "px)")
|
|
93
95
|
},
|
|
94
96
|
key: "".concat(option.dsId),
|
|
95
97
|
innerRef: vItem.measureRef
|
|
@@ -129,14 +131,14 @@ const useItemRenderer = () => {
|
|
|
129
131
|
label
|
|
130
132
|
} = _ref;
|
|
131
133
|
return /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
|
|
134
|
+
p: "8px",
|
|
132
135
|
cols: ['min-content', 'auto'],
|
|
133
|
-
height: "16px",
|
|
134
136
|
gutter: "xxs",
|
|
135
137
|
alignItems: "center"
|
|
136
|
-
}, void 0, _StyledCreatableLabel || (_StyledCreatableLabel = /*#__PURE__*/_jsx__default["default"](styled.StyledCreatableLabel, {}, void 0, "Add:")), /*#__PURE__*/_jsx__default["default"](
|
|
138
|
+
}, void 0, _StyledCreatableLabel || (_StyledCreatableLabel = /*#__PURE__*/_jsx__default["default"](styled.StyledCreatableLabel, {}, void 0, "Add:")), /*#__PURE__*/_jsx__default["default"](styled.StyledCreatableValue, {}, void 0, "\"".concat(label, "\"")));
|
|
137
139
|
},
|
|
138
140
|
label: option.label,
|
|
139
|
-
onClick:
|
|
141
|
+
onClick: handleOnCreateClick
|
|
140
142
|
}));
|
|
141
143
|
}
|
|
142
144
|
|
|
@@ -29,7 +29,7 @@ const MultiSelectedValuesContainer = () => {
|
|
|
29
29
|
const correctPillsToShow = useGroupPills.useGroupPills();
|
|
30
30
|
return React.useMemo(() => /*#__PURE__*/_jsx__default["default"]("div", {
|
|
31
31
|
style: {
|
|
32
|
-
width: 'max-content'
|
|
32
|
+
width: multiSelectedValue.length > 0 ? 'max-content' : '0px'
|
|
33
33
|
},
|
|
34
34
|
"data-testid": ComboboxDataTestids.ComboboxDataTestid.SELECTED_VALUES
|
|
35
35
|
}, void 0, /*#__PURE__*/_jsx__default["default"](dsPills.DSPillGroupV2, {
|
|
@@ -33,6 +33,8 @@ const RemovableSelectedValuePill = props => {
|
|
|
33
33
|
onRemove: e => {
|
|
34
34
|
var _innerRef$current;
|
|
35
35
|
|
|
36
|
+
// preventing the menu to be opened
|
|
37
|
+
e.stopPropagation();
|
|
36
38
|
onChange(listHelper.getSuggestedValueOnChange(pill, selectedValues), pill, e);
|
|
37
39
|
(_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.focus();
|
|
38
40
|
}
|
|
@@ -29,8 +29,11 @@ const useGroupPills = () => {
|
|
|
29
29
|
controlsWrapperRef,
|
|
30
30
|
pillGroupRef
|
|
31
31
|
} = React.useContext(ComboBoxCTX.ComboBoxContext);
|
|
32
|
-
const multiSelectedValues = selectedValues;
|
|
33
|
-
|
|
32
|
+
const multiSelectedValues = selectedValues; // 30 represent 30 pills maximum to calculate the grouped pill. this fix the load time issue
|
|
33
|
+
// when combobox is receiving a huge amount of options.
|
|
34
|
+
|
|
35
|
+
const selectedValuesLength = Math.min(30, multiSelectedValues.length);
|
|
36
|
+
const [pillsToShow, setPillsToShow] = React.useState(selectedValuesLength);
|
|
34
37
|
const {
|
|
35
38
|
width
|
|
36
39
|
} = dsUtilities.useOnElementResize(controlsWrapperRef);
|
|
@@ -38,28 +41,28 @@ const useGroupPills = () => {
|
|
|
38
41
|
width: widthInput
|
|
39
42
|
} = dsUtilities.useOnElementResize(innerRef || null);
|
|
40
43
|
React.useEffect(() => {
|
|
41
|
-
if (
|
|
42
|
-
setPillsToShow(
|
|
44
|
+
if (selectedValuesLength !== pillsToShow) {
|
|
45
|
+
setPillsToShow(selectedValuesLength);
|
|
43
46
|
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
47
|
|
|
45
|
-
}, [
|
|
48
|
+
}, [selectedValuesLength, width, widthInput]);
|
|
46
49
|
React.useLayoutEffect(() => {
|
|
47
|
-
if (selectedOptionsRef.current) {
|
|
50
|
+
if (selectedOptionsRef.current && pillGroupRef.current) {
|
|
48
51
|
if (pillGroupRef.current) pillGroupRef.current.style.width = 'max-content';
|
|
49
52
|
let lastPillFit = -1;
|
|
50
53
|
let currentWidth = 0;
|
|
51
54
|
const referenceWidth = selectedOptionsRef.current.offsetWidth;
|
|
52
|
-
const pills = [...
|
|
55
|
+
const pills = [...pillGroupRef.current.querySelectorAll(disabled ? '.ds-pill-wrapper-value' : '.ds-pill-wrapper-removable')];
|
|
53
56
|
const pillsWidth = pills.map(pill => pill === null || pill === void 0 ? void 0 : pill.offsetWidth);
|
|
54
57
|
pillsWidth.forEach((pillWidth, idx) => {
|
|
55
58
|
currentWidth += pillWidth;
|
|
56
59
|
|
|
57
|
-
if (currentWidth + getGroupedPillWidth(
|
|
60
|
+
if (currentWidth + getGroupedPillWidth(selectedValuesLength - idx - 1) <= referenceWidth) {
|
|
58
61
|
lastPillFit = idx;
|
|
59
62
|
}
|
|
60
63
|
});
|
|
61
64
|
|
|
62
|
-
if (!(
|
|
65
|
+
if (!(selectedValuesLength > 0 && pillsToShow !== selectedValuesLength)) {
|
|
63
66
|
const nextPillsToShow = lastPillFit + 1;
|
|
64
67
|
|
|
65
68
|
if (nextPillsToShow !== pillsToShow) {
|
|
@@ -69,7 +72,7 @@ const useGroupPills = () => {
|
|
|
69
72
|
|
|
70
73
|
if (pillGroupRef.current) pillGroupRef.current.style.width = 'fit-content';
|
|
71
74
|
}
|
|
72
|
-
}, [selectedOptionsRef, innerRef, multiSelectedValues, pillsToShow, pillGroupRef, width, widthInput, disabled]);
|
|
75
|
+
}, [selectedOptionsRef, innerRef, multiSelectedValues, pillsToShow, pillGroupRef, width, widthInput, disabled, selectedValuesLength]);
|
|
73
76
|
return pillsToShow || 1;
|
|
74
77
|
};
|
|
75
78
|
|
|
@@ -26,12 +26,13 @@ const ComboboxPropTypes = _objectSpread(_objectSpread({}, dsPropsHelpers.globalA
|
|
|
26
26
|
disabled: dsPropsHelpers.PropTypes.bool.description('wheter or not the input is disabled').defaultValue('false'),
|
|
27
27
|
autoFocus: dsPropsHelpers.PropTypes.bool.description('Whether the combo box uses auto focus or not').defaultValue('false'),
|
|
28
28
|
hasError: dsPropsHelpers.PropTypes.bool.description('Whether the combo box has error or not').defaultValue('false'),
|
|
29
|
+
noOptionsMessage: dsPropsHelpers.PropTypes.string.description('Custome message to be display when no matches found after filtering').defaultValue('No Matches Found'),
|
|
30
|
+
closeMenuOnScroll: dsPropsHelpers.PropTypes.oneOfType([dsPropsHelpers.PropTypes.func, dsPropsHelpers.PropTypes.bool]).description('If true, close the select menu when the user scrolls the document/body.').defaultValue(false),
|
|
29
31
|
onChange: dsPropsHelpers.PropTypes.func.isRequired.description('function triggered when an option is selected it will send the options selected').defaultValue('() => {}'),
|
|
30
32
|
onFilter: dsPropsHelpers.PropTypes.func.description('function triggered when user type in the combobox input').defaultValue(''),
|
|
31
33
|
onCreate: dsPropsHelpers.PropTypes.func.description('function triggered when user select "create" a new item whenever is not a match in the all option list').defaultValue(''),
|
|
32
34
|
onCancel: dsPropsHelpers.PropTypes.func.description('function triggered when user press ESC key').defaultValue('() => {}'),
|
|
33
|
-
|
|
34
|
-
onMenuClose: dsPropsHelpers.PropTypes.func.description('function triggered when user close the menu list').defaultValue('() => {}'),
|
|
35
|
+
onMenuChange: dsPropsHelpers.PropTypes.func.description('function triggered when user open or close the menu list').defaultValue('() => {}'),
|
|
35
36
|
inputMinWidth: dsPropsHelpers.PropTypes.any.description('Minimum width for the combo box input controller').defaultValue(undefined),
|
|
36
37
|
menuMinWidth: dsPropsHelpers.PropTypes.any.description('Minimum width for the dropdown menu').defaultValue(undefined),
|
|
37
38
|
menuMaxHeight: dsPropsHelpers.PropTypes.any.description('Maximum height for the dropdown menu').defaultValue(undefined),
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const DSComboBoxName = 'ds-combobox';
|
|
6
|
+
const DSComboboxSlots = {
|
|
7
|
+
CONTAINER: 'root',
|
|
8
|
+
INPUT_WRAPPER: 'input-wrapper',
|
|
9
|
+
INPUT: 'input'
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
exports.DSComboBoxName = DSComboBoxName;
|
|
13
|
+
exports.DSComboboxSlots = DSComboboxSlots;
|
|
@@ -51,7 +51,8 @@ const getFirstOption = (options, selectedValues, inputValue) => {
|
|
|
51
51
|
|
|
52
52
|
for (let i = 0; i < options.length; i += 1) if (!['section', 'separator'].includes(options[i].type) && !options[i].disabled) {
|
|
53
53
|
return options[i].dsId;
|
|
54
|
-
}
|
|
54
|
+
} // list of disabled item results return ''
|
|
55
|
+
|
|
55
56
|
|
|
56
57
|
return '';
|
|
57
58
|
};
|
|
@@ -101,6 +102,15 @@ const selectedValuesWithSections = (optionsToParse, multiSelectedValue) => {
|
|
|
101
102
|
return items;
|
|
102
103
|
};
|
|
103
104
|
const getFilteredOptionsSelected = (filteredOption, selectedValues) => filteredOption.filter(option => option.type === constants.MENU_OPTION_TYPES.OPTION && isSelected(selectedValues, option));
|
|
105
|
+
const scrollIfNeeded = function (elem) {
|
|
106
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
107
|
+
behavior: 'smooth',
|
|
108
|
+
block: 'end',
|
|
109
|
+
inline: 'nearest'
|
|
110
|
+
};
|
|
111
|
+
const bounding = elem.getBoundingClientRect();
|
|
112
|
+
if (!(bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth))) elem.scrollIntoView(options);
|
|
113
|
+
};
|
|
104
114
|
|
|
105
115
|
exports.filterOptions = filterOptions;
|
|
106
116
|
exports.findInCircularList = findInCircularList;
|
|
@@ -113,4 +123,5 @@ exports.getSuggestedValueOnChange = getSuggestedValueOnChange;
|
|
|
113
123
|
exports.isSelected = isSelected;
|
|
114
124
|
exports.isSelectedValueEmpty = isSelectedValueEmpty;
|
|
115
125
|
exports.isSelectedValueMultiple = isSelectedValueMultiple;
|
|
126
|
+
exports.scrollIfNeeded = scrollIfNeeded;
|
|
116
127
|
exports.selectedValuesWithSections = selectedValuesWithSections;
|
|
@@ -26,7 +26,7 @@ const useChangeHandlers = _ref => {
|
|
|
26
26
|
relevantValues,
|
|
27
27
|
destructuredValues,
|
|
28
28
|
propsBasedOnType,
|
|
29
|
-
|
|
29
|
+
focusTrackers
|
|
30
30
|
} = _ref;
|
|
31
31
|
const {
|
|
32
32
|
tempDateString,
|
|
@@ -60,8 +60,8 @@ const useChangeHandlers = _ref => {
|
|
|
60
60
|
meridiem
|
|
61
61
|
} = destructuredValues;
|
|
62
62
|
const {
|
|
63
|
-
|
|
64
|
-
} =
|
|
63
|
+
trackFocusFirstSegment
|
|
64
|
+
} = focusTrackers;
|
|
65
65
|
const getDateMetaInfo = React.useCallback(function () {
|
|
66
66
|
let newDateString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
67
67
|
let metaInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
@@ -91,7 +91,7 @@ const useChangeHandlers = _ref => {
|
|
|
91
91
|
setTimeString(newTimeString);
|
|
92
92
|
const newDateTimeString = "".concat(newDateString, " ").concat(newTimeString);
|
|
93
93
|
|
|
94
|
-
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
|
|
94
|
+
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, metaInfo), getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
|
|
95
95
|
newDateString,
|
|
96
96
|
newTimeString,
|
|
97
97
|
newDateTimeString
|
|
@@ -108,7 +108,7 @@ const useChangeHandlers = _ref => {
|
|
|
108
108
|
setTempDateString(newDateString);
|
|
109
109
|
const newDateTimeString = "".concat(newDateString, " ").concat(tempTimeString);
|
|
110
110
|
|
|
111
|
-
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(tempTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
|
|
111
|
+
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, metaInfo), getTimeMetaInfo(tempTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
|
|
112
112
|
newDateString,
|
|
113
113
|
newTimeString: tempTimeString,
|
|
114
114
|
newDateTimeString
|
|
@@ -124,7 +124,7 @@ const useChangeHandlers = _ref => {
|
|
|
124
124
|
setTimeString(newTimeString);
|
|
125
125
|
const newDateTimeString = "".concat(tempDateString, " ").concat(newTimeString);
|
|
126
126
|
|
|
127
|
-
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(tempDateString, metaInfo)), {}, {
|
|
127
|
+
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, metaInfo), getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(tempDateString, metaInfo)), {}, {
|
|
128
128
|
newDateTimeString,
|
|
129
129
|
newDateString: tempDateString,
|
|
130
130
|
newTimeString
|
|
@@ -241,12 +241,8 @@ const useChangeHandlers = _ref => {
|
|
|
241
241
|
if (isDateTime) handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);
|
|
242
242
|
if (isDate) handleChangeComposedDateString('__/__/____', metaInfo);
|
|
243
243
|
if (isTime) handleChangeComposedTimeString('__:__ __', metaInfo);
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
(_firstSegmentRef$curr = firstSegmentRef.current) === null || _firstSegmentRef$curr === void 0 ? void 0 : _firstSegmentRef$curr.focus();
|
|
248
|
-
});
|
|
249
|
-
}, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, firstSegmentRef, handleChangeComposedDateString, handleChangeComposedDateTimeString, handleChangeComposedTimeString, isDate, isDateTime, isTime]);
|
|
244
|
+
trackFocusFirstSegment();
|
|
245
|
+
}, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, handleChangeComposedDateString, handleChangeComposedDateTimeString, handleChangeComposedTimeString, isDate, isDateTime, isTime, trackFocusFirstSegment]);
|
|
250
246
|
return React.useMemo(() => ({
|
|
251
247
|
handleChangeComposedDateTimeString,
|
|
252
248
|
handleChangeComposedDateString,
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
5
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
8
6
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
9
7
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
10
8
|
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
11
9
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
10
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
12
11
|
var React = require('react');
|
|
13
12
|
var dsPropsHelpers = require('@elliemae/ds-props-helpers');
|
|
14
13
|
var useGetPropsWithDefault = require('./useGetPropsWithDefault.js');
|
|
14
|
+
var useFocusTracker = require('./useFocusTracker.js');
|
|
15
15
|
var useGetFlags = require('./useGetFlags.js');
|
|
16
16
|
var useGetReferences = require('./useGetReferences.js');
|
|
17
17
|
var useRelevantValueFromProps = require('./useRelevantValueFromProps.js');
|
|
@@ -36,6 +36,10 @@ const useControlledDateTimePicker = props => {
|
|
|
36
36
|
const flags = useGetFlags.useGetFlags(propsWithDefaults);
|
|
37
37
|
const DOMRefs = useGetReferences.useGetReferences(flags); // refs are used for "auto-advance" feature
|
|
38
38
|
|
|
39
|
+
const focusTrackers = useFocusTracker.useFocusTracker({
|
|
40
|
+
DOMRefs,
|
|
41
|
+
flags
|
|
42
|
+
});
|
|
39
43
|
const relevantValues = useRelevantValueFromProps.useRelevantValueFromProps(propsWithDefaults);
|
|
40
44
|
const propsBasedOnType = useGetPropsBasedOnType.useGetPropsBasedOnType(propsWithDefaults);
|
|
41
45
|
const destructuredValues = useGetDestructuredValues.useGetDestructuredValues(_objectSpread(_objectSpread({}, propsBasedOnType), flags));
|
|
@@ -43,17 +47,18 @@ const useControlledDateTimePicker = props => {
|
|
|
43
47
|
relevantValues,
|
|
44
48
|
destructuredValues,
|
|
45
49
|
propsBasedOnType,
|
|
46
|
-
DOMRefs
|
|
50
|
+
DOMRefs,
|
|
51
|
+
focusTrackers
|
|
47
52
|
});
|
|
48
53
|
const globalKeyHandlers = useGlobalKeyHandlers.useGlobalKeyHandlers({
|
|
49
54
|
changeHandlers,
|
|
50
55
|
propsBasedOnType,
|
|
51
56
|
DOMRefs,
|
|
52
|
-
flags
|
|
57
|
+
flags,
|
|
58
|
+
focusTrackers
|
|
53
59
|
}); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
|
|
54
60
|
|
|
55
61
|
const dataAttrs = dsPropsHelpers.getDataProps(propsWithDefaults);
|
|
56
|
-
const [latestInteractionRegion, setLatestInteractionRegion] = React.useState('');
|
|
57
62
|
const {
|
|
58
63
|
announcedDateValues,
|
|
59
64
|
announcedTimeValues
|
|
@@ -64,13 +69,12 @@ const useControlledDateTimePicker = props => {
|
|
|
64
69
|
isWithTimeInputs
|
|
65
70
|
} = flags;
|
|
66
71
|
const ariaCurrentValueForInputs = "current values: ".concat(isWithDateInputs ? "".concat(announcedDateValues) : '').concat(isDateTimeSelector ? ', ' : '').concat(isWithTimeInputs ? "".concat(announcedTimeValues) : '');
|
|
67
|
-
const ctx = React__default["default"].useMemo(() => _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
72
|
+
const ctx = React__default["default"].useMemo(() => _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
68
73
|
props: propsWithDefaults,
|
|
69
|
-
latestInteractionRegion,
|
|
70
|
-
setLatestInteractionRegion,
|
|
71
74
|
ariaCurrentValueForInputs,
|
|
75
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
72
76
|
dataAttrs
|
|
73
|
-
}, flags), DOMRefs), relevantValues), propsBasedOnType), destructuredValues), changeHandlers), globalKeyHandlers), [propsWithDefaults,
|
|
77
|
+
}, focusTrackers), flags), DOMRefs), relevantValues), propsBasedOnType), destructuredValues), changeHandlers), globalKeyHandlers), [propsWithDefaults, ariaCurrentValueForInputs, dataAttrs, focusTrackers, flags, DOMRefs, relevantValues, propsBasedOnType, destructuredValues, changeHandlers, globalKeyHandlers]);
|
|
74
78
|
return ctx;
|
|
75
79
|
};
|
|
76
80
|
|