@elliemae/ds-controlled-form 2.4.2-rc.3 → 2.4.3-rc.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/cjs/autocomplete/config/useAutocomplete.js +0 -1
- package/cjs/autocomplete/parts/A11yFocusedOption.js +46 -0
- package/cjs/autocomplete/parts/container/Container.js +36 -24
- package/cjs/autocomplete/parts/container/styled.js +2 -2
- package/cjs/autocomplete/parts/container/useKeyboardNavigation.js +2 -2
- package/cjs/autocomplete/parts/menu-list/MenuList.js +6 -6
- package/cjs/autocomplete/parts/menu-list/styled.js +2 -2
- package/cjs/autocomplete/parts/menu-list/useItemRenderer.js +1 -1
- package/cjs/autocomplete/parts/styled.js +2 -0
- package/cjs/autocomplete/utils/listHelper.js +1 -1
- package/cjs/checkbox/ControlledCheckbox.js +1 -1
- package/cjs/checkbox/config/useValidateProps.js +6 -3
- package/cjs/checkbox/react-desc-prop-types.js +2 -1
- package/cjs/checkbox/styles.js +73 -27
- package/cjs/checkbox/utils/styleHelpers.js +20 -2
- package/cjs/combobox/ComboBoxCTX.js +6 -3
- package/cjs/combobox/config/useComboBox.js +16 -6
- package/cjs/combobox/config/useCorrectOptions.js +1 -2
- package/cjs/combobox/parts/A11yFocusedOption.js +14 -6
- package/cjs/combobox/parts/A11ySelectedValues.js +2 -4
- package/cjs/combobox/parts/DropdownIndicator.js +15 -7
- package/cjs/combobox/parts/container/Container.js +11 -14
- package/cjs/combobox/parts/container/styled.js +11 -10
- package/cjs/combobox/parts/controls/Controls.js +19 -27
- package/cjs/combobox/parts/controls/styled.js +54 -22
- package/cjs/combobox/parts/controls/useOnPillsNavigation.js +7 -15
- package/cjs/combobox/parts/controls-input/ControlsInput.js +2 -2
- package/cjs/combobox/parts/controls-input/styled.js +41 -11
- package/cjs/combobox/parts/controls-input/useControlsInput.js +4 -7
- package/cjs/combobox/parts/controls-input/useKeyboardNavigation.js +19 -28
- package/cjs/combobox/parts/controls-input/useMaskedOnChange.js +7 -7
- package/cjs/combobox/parts/dropdown-indicator/DropdownIndicator.js +2 -2
- package/cjs/combobox/parts/header-list/HeaderList.js +1 -1
- package/cjs/combobox/parts/header-list/styled.js +39 -10
- package/cjs/combobox/parts/header-list/useHeaderListHandlers.js +7 -14
- package/cjs/combobox/parts/menu-list/MenuList.js +8 -6
- package/cjs/combobox/parts/menu-list/styled.js +38 -20
- package/cjs/combobox/parts/menu-list/useItemRenderer.js +18 -17
- package/cjs/combobox/parts/multi-selected-values-container/MultiSelectedValuesContainer.js +1 -1
- package/cjs/combobox/parts/multi-selected-values-container/RemovableSelectedValuePill.js +1 -3
- package/cjs/combobox/parts/multi-selected-values-container/useGroupPills.js +1 -2
- package/cjs/combobox/parts/styled.js +6 -7
- package/cjs/combobox/react-desc-prop-types.js +3 -2
- package/cjs/combobox/sharedTypes.js +2 -2
- package/cjs/combobox/utils/listHelper.js +14 -9
- package/cjs/date-range-picker/config/useRangePickerLogic.js +4 -8
- package/cjs/date-range-picker/parts/ControlledDateRangeCalendar.js +0 -2
- package/cjs/date-range-picker/parts/ControlledDateRangeFromDate.js +0 -2
- package/cjs/date-range-picker/parts/ControlledDateRangeToDate.js +0 -2
- package/cjs/date-time-picker/config/useChangeHandlers.js +3 -3
- package/cjs/date-time-picker/config/useControlledDateTimePicker.js +1 -1
- package/cjs/date-time-picker/config/useFocusTracker.js +1 -1
- package/cjs/date-time-picker/config/useGetDestructuredValues.js +6 -6
- package/cjs/date-time-picker/config/useGetPropsBasedOnType.js +1 -1
- package/cjs/date-time-picker/config/useGetReferences.js +1 -1
- package/cjs/date-time-picker/config/useRelevantValueFromProps.js +1 -1
- package/cjs/date-time-picker/config/useValidateProps.js +42 -11
- package/cjs/date-time-picker/parts/ClearButton/ClearButton.js +1 -3
- package/cjs/date-time-picker/parts/DateInputs/DDInput.js +3 -7
- package/cjs/date-time-picker/parts/DateInputs/MMInput.js +3 -7
- package/cjs/date-time-picker/parts/DateInputs/YYYYInput.js +3 -7
- package/cjs/date-time-picker/parts/DateInputs/useDateInputs.js +13 -23
- package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +4 -4
- package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +6 -14
- package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +1 -1
- package/cjs/date-time-picker/parts/Pickers/Calendar/Day.js +8 -10
- package/cjs/date-time-picker/parts/Pickers/Calendar/Styleds.js +44 -15
- package/cjs/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +1 -2
- package/cjs/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +2 -1
- package/cjs/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +0 -1
- package/cjs/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +3 -5
- package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +1 -1
- package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +3 -5
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +5 -7
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +6 -8
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +5 -7
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +2 -2
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/Styleds.js +47 -15
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +2 -5
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +1 -1
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +3 -3
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +2 -5
- package/cjs/date-time-picker/parts/Styleds.js +12 -6
- package/cjs/date-time-picker/parts/TimeInputs/HHInput.js +2 -4
- package/cjs/date-time-picker/parts/TimeInputs/MeridiemInput.js +3 -8
- package/cjs/date-time-picker/parts/TimeInputs/MinutesInput.js +3 -7
- package/cjs/date-time-picker/parts/TimeInputs/useTimeInputs.js +14 -26
- package/cjs/date-time-picker/utils/dateHelpers.js +17 -34
- package/cjs/date-time-picker/utils/hooks/useOnClickOutside.js +1 -3
- package/cjs/date-time-picker/utils/stringHelpers.js +5 -11
- package/cjs/input-group/InputGroup.js +8 -7
- 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/styled.js +90 -23
- package/cjs/large-text-input/DSControlledLargeTextInput.js +1 -1
- package/cjs/large-text-input/styles.js +27 -13
- package/cjs/mask-hook/hooks/useNumberMask.js +1 -5
- package/cjs/mask-hook/hooks/usePhoneMask.js +1 -4
- package/cjs/mask-hook/hooks/useRegExpMask.js +4 -7
- package/cjs/mask-hook/hooks/useSSNMask.js +1 -4
- package/cjs/mask-hook/hooks/useZipCodeMask.js +1 -4
- package/cjs/mask-hook/utils/addSpecialCharacters.js +0 -1
- package/cjs/mask-hook/utils/flatStringArray.js +0 -1
- package/cjs/text-input/config/useInputText.js +0 -1
- package/cjs/text-input/styled/borders.js +18 -11
- package/cjs/text-input/styled/components.js +49 -10
- package/cjs/toggle/ControlledToggle.js +2 -3
- package/cjs/toggle/styles.js +7 -5
- package/esm/autocomplete/config/useAutocomplete.js +2 -3
- package/esm/autocomplete/parts/A11yFocusedOption.js +36 -0
- package/esm/autocomplete/parts/container/Container.js +39 -27
- package/esm/autocomplete/parts/container/styled.js +2 -2
- package/esm/autocomplete/parts/container/useKeyboardNavigation.js +2 -2
- package/esm/autocomplete/parts/menu-list/MenuList.js +7 -7
- package/esm/autocomplete/parts/menu-list/styled.js +2 -2
- package/esm/autocomplete/parts/menu-list/useItemRenderer.js +1 -1
- package/esm/autocomplete/parts/styled.js +1 -0
- package/esm/autocomplete/utils/listHelper.js +1 -1
- package/esm/checkbox/ControlledCheckbox.js +2 -2
- package/esm/checkbox/config/useValidateProps.js +6 -3
- package/esm/checkbox/react-desc-prop-types.js +2 -1
- package/esm/checkbox/styles.js +73 -24
- package/esm/checkbox/utils/styleHelpers.js +20 -2
- package/esm/combobox/ComboBoxCTX.js +6 -3
- package/esm/combobox/config/useComboBox.js +17 -7
- package/esm/combobox/config/useCorrectOptions.js +1 -2
- package/esm/combobox/parts/A11yFocusedOption.js +15 -7
- package/esm/combobox/parts/A11ySelectedValues.js +2 -4
- package/esm/combobox/parts/DropdownIndicator.js +15 -6
- package/esm/combobox/parts/container/Container.js +11 -14
- package/esm/combobox/parts/container/styled.js +11 -6
- package/esm/combobox/parts/controls/Controls.js +19 -27
- package/esm/combobox/parts/controls/styled.js +54 -18
- package/esm/combobox/parts/controls/useOnPillsNavigation.js +7 -15
- package/esm/combobox/parts/controls-input/ControlsInput.js +2 -2
- package/esm/combobox/parts/controls-input/styled.js +41 -7
- package/esm/combobox/parts/controls-input/useControlsInput.js +4 -7
- package/esm/combobox/parts/controls-input/useKeyboardNavigation.js +20 -29
- package/esm/combobox/parts/controls-input/useMaskedOnChange.js +7 -7
- package/esm/combobox/parts/dropdown-indicator/DropdownIndicator.js +2 -2
- package/esm/combobox/parts/header-list/HeaderList.js +1 -1
- package/esm/combobox/parts/header-list/styled.js +40 -7
- package/esm/combobox/parts/header-list/useHeaderListHandlers.js +7 -14
- package/esm/combobox/parts/menu-list/MenuList.js +8 -6
- package/esm/combobox/parts/menu-list/styled.js +38 -17
- package/esm/combobox/parts/menu-list/useItemRenderer.js +20 -19
- package/esm/combobox/parts/multi-selected-values-container/MultiSelectedValuesContainer.js +1 -1
- package/esm/combobox/parts/multi-selected-values-container/RemovableSelectedValuePill.js +1 -3
- package/esm/combobox/parts/multi-selected-values-container/useGroupPills.js +1 -2
- package/esm/combobox/parts/styled.js +6 -3
- package/esm/combobox/react-desc-prop-types.js +3 -2
- package/esm/combobox/sharedTypes.js +2 -2
- package/esm/combobox/utils/listHelper.js +14 -10
- package/esm/date-range-picker/config/useRangePickerLogic.js +4 -8
- package/esm/date-range-picker/parts/ControlledDateRangeCalendar.js +0 -2
- package/esm/date-range-picker/parts/ControlledDateRangeFromDate.js +0 -2
- package/esm/date-range-picker/parts/ControlledDateRangeToDate.js +0 -2
- package/esm/date-time-picker/config/useChangeHandlers.js +3 -3
- package/esm/date-time-picker/config/useControlledDateTimePicker.js +1 -1
- package/esm/date-time-picker/config/useFocusTracker.js +1 -1
- package/esm/date-time-picker/config/useGetDestructuredValues.js +6 -6
- package/esm/date-time-picker/config/useGetPropsBasedOnType.js +1 -1
- package/esm/date-time-picker/config/useGetReferences.js +1 -1
- package/esm/date-time-picker/config/useRelevantValueFromProps.js +1 -1
- package/esm/date-time-picker/config/useValidateProps.js +42 -11
- package/esm/date-time-picker/parts/ClearButton/ClearButton.js +1 -3
- package/esm/date-time-picker/parts/DateInputs/DDInput.js +3 -7
- package/esm/date-time-picker/parts/DateInputs/MMInput.js +3 -7
- package/esm/date-time-picker/parts/DateInputs/YYYYInput.js +3 -7
- package/esm/date-time-picker/parts/DateInputs/useDateInputs.js +13 -23
- package/esm/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +4 -4
- package/esm/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +6 -14
- package/esm/date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +1 -1
- package/esm/date-time-picker/parts/Pickers/Calendar/Day.js +8 -10
- package/esm/date-time-picker/parts/Pickers/Calendar/Styleds.js +44 -14
- package/esm/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +1 -2
- package/esm/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +2 -1
- package/esm/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +0 -1
- package/esm/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +3 -5
- package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +1 -1
- package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +3 -5
- package/esm/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +5 -7
- package/esm/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +6 -8
- package/esm/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +5 -7
- package/esm/date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +2 -2
- package/esm/date-time-picker/parts/Pickers/TimeWheel/Styleds.js +47 -14
- package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +2 -5
- package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +1 -1
- package/esm/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +3 -3
- package/esm/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +2 -5
- package/esm/date-time-picker/parts/Styleds.js +12 -6
- package/esm/date-time-picker/parts/TimeInputs/HHInput.js +2 -4
- package/esm/date-time-picker/parts/TimeInputs/MeridiemInput.js +3 -8
- package/esm/date-time-picker/parts/TimeInputs/MinutesInput.js +3 -7
- package/esm/date-time-picker/parts/TimeInputs/useTimeInputs.js +14 -26
- package/esm/date-time-picker/utils/dateHelpers.js +17 -34
- package/esm/date-time-picker/utils/hooks/useOnClickOutside.js +1 -3
- package/esm/date-time-picker/utils/stringHelpers.js +5 -11
- package/esm/input-group/InputGroup.js +5 -4
- 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/styled.js +89 -18
- package/esm/large-text-input/DSControlledLargeTextInput.js +1 -1
- package/esm/large-text-input/styles.js +27 -9
- package/esm/mask-hook/hooks/useNumberMask.js +1 -5
- package/esm/mask-hook/hooks/usePhoneMask.js +1 -4
- package/esm/mask-hook/hooks/useRegExpMask.js +4 -7
- package/esm/mask-hook/hooks/useSSNMask.js +1 -4
- package/esm/mask-hook/hooks/useZipCodeMask.js +1 -4
- package/esm/mask-hook/utils/addSpecialCharacters.js +0 -1
- package/esm/mask-hook/utils/flatStringArray.js +0 -1
- package/esm/text-input/config/useInputText.js +0 -1
- package/esm/text-input/styled/borders.js +18 -7
- package/esm/text-input/styled/components.js +49 -6
- package/esm/toggle/ControlledToggle.js +2 -3
- package/esm/toggle/styles.js +7 -5
- package/package.json +35 -15
- 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/react-desc-prop-types.d.ts +1 -1
- package/types/checkbox/styles.d.ts +1 -0
- 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/utils/listHelper.d.ts +1 -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/styled.d.ts +4 -7
- package/types/text-input/config/useInputText.d.ts +4 -4
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
2
1
|
import React, { useCallback } from 'react';
|
|
3
2
|
import { Styled2DigitsInput } from '../Styleds.js';
|
|
4
3
|
import { ControlledDateTimePickerDatatestid } from '../../ControlledDateTimePickerDatatestid.js';
|
|
@@ -29,9 +28,7 @@ const MeridiemInput = /*#__PURE__*/React.memo(_ref => {
|
|
|
29
28
|
isFocused
|
|
30
29
|
} = _ref;
|
|
31
30
|
const validateOnChange = useCallback(e => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (isInvalidMeridiem(e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value)) {
|
|
31
|
+
if (isInvalidMeridiem(e?.target?.value)) {
|
|
35
32
|
e.preventDefault();
|
|
36
33
|
return;
|
|
37
34
|
}
|
|
@@ -45,13 +42,11 @@ const MeridiemInput = /*#__PURE__*/React.memo(_ref => {
|
|
|
45
42
|
onKeyDown: onKeyDown,
|
|
46
43
|
value: value,
|
|
47
44
|
ref: DomElem => {
|
|
48
|
-
var _DomElem$focus;
|
|
49
|
-
|
|
50
45
|
contextRef.current = DomElem;
|
|
51
|
-
if (isFocused) DomElem
|
|
46
|
+
if (isFocused) DomElem?.focus?.();
|
|
52
47
|
},
|
|
53
48
|
placeholder: placeholder,
|
|
54
|
-
"aria-label":
|
|
49
|
+
"aria-label": `meridiem input field ${ariaCurrentValueForInputs}`,
|
|
55
50
|
"data-testid": ControlledDateTimePickerDatatestid.TIME_INPUTS.MERIDIEM,
|
|
56
51
|
disabled: disabled,
|
|
57
52
|
"aria-disabled": disabled
|
|
@@ -25,9 +25,7 @@ const MinutesInput = /*#__PURE__*/React.memo(_ref => {
|
|
|
25
25
|
isFocused
|
|
26
26
|
} = _ref;
|
|
27
27
|
const validateOnChange = useCallback(e => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (isInvalidMinute(e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value)) {
|
|
28
|
+
if (isInvalidMinute(e?.target?.value)) {
|
|
31
29
|
e.preventDefault();
|
|
32
30
|
return;
|
|
33
31
|
}
|
|
@@ -41,13 +39,11 @@ const MinutesInput = /*#__PURE__*/React.memo(_ref => {
|
|
|
41
39
|
onKeyDown: onKeyDown,
|
|
42
40
|
value: value,
|
|
43
41
|
ref: DomElem => {
|
|
44
|
-
var _DomElem$focus;
|
|
45
|
-
|
|
46
42
|
contextRef.current = DomElem;
|
|
47
|
-
if (isFocused) DomElem
|
|
43
|
+
if (isFocused) DomElem?.focus?.();
|
|
48
44
|
},
|
|
49
45
|
placeholder: placeholder,
|
|
50
|
-
"aria-label":
|
|
46
|
+
"aria-label": `minutes input field ${ariaCurrentValueForInputs}`,
|
|
51
47
|
"data-testid": ControlledDateTimePickerDatatestid.TIME_INPUTS.MINUTE,
|
|
52
48
|
disabled: disabled,
|
|
53
49
|
"aria-disabled": disabled
|
|
@@ -39,9 +39,7 @@ const useTimeInputs = () => {
|
|
|
39
39
|
trackFocusHourInput();
|
|
40
40
|
}, [trackFocusHourInput]);
|
|
41
41
|
const onHoursChange = useCallback(e => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
let newHours = e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value; // converts hours 2~9 to 07~09
|
|
42
|
+
let newHours = e?.target?.value; // converts hours 2~9 to 07~09
|
|
45
43
|
|
|
46
44
|
if (Number.parseInt(newHours, 10) > 1) newHours = prependStringWithPlaceHolders(newHours, 2);
|
|
47
45
|
handleChangeHours(newHours, e); // auto-advance functionality:
|
|
@@ -64,12 +62,12 @@ const useTimeInputs = () => {
|
|
|
64
62
|
const hoursInteger = Number.isNaN(hoursStringConvertedToInteger) ? 0 : hoursStringConvertedToInteger;
|
|
65
63
|
let newHours;
|
|
66
64
|
if (key === 'ArrowUp') newHours = hoursInteger + 1 <= 12 ? hoursInteger + 1 : hoursInteger;else newHours = hoursInteger - 1 > 1 ? hoursInteger - 1 : 1;
|
|
67
|
-
newHours = prependStringWithPlaceHolders(
|
|
65
|
+
newHours = prependStringWithPlaceHolders(`${newHours}`, 2);
|
|
68
66
|
handleChangeHours(newHours, e);
|
|
69
67
|
}
|
|
70
68
|
|
|
71
69
|
if (!Number.isNaN(hoursStringConvertedToInteger) && key === ':') {
|
|
72
|
-
const newHours = prependStringWithPlaceHolders(
|
|
70
|
+
const newHours = prependStringWithPlaceHolders(`${hoursStringConvertedToInteger}`, 2);
|
|
73
71
|
handleChangeHours(newHours, e); // auto-advance functionality:
|
|
74
72
|
|
|
75
73
|
if (newHours.length === 2) trackFocusMinuteInput();
|
|
@@ -84,9 +82,7 @@ const useTimeInputs = () => {
|
|
|
84
82
|
if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();
|
|
85
83
|
}, [hours, isWithDateInputs, trackFocusYearInput, onHomeKeyDown, onEndKeyDown, trackFocusLastSegment, trackFocusMinuteInput, handleChangeHours]);
|
|
86
84
|
const onHoursBlur = useCallback(e => {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const newHours = e === null || e === void 0 ? void 0 : (_e$target2 = e.target) === null || _e$target2 === void 0 ? void 0 : _e$target2.value;
|
|
85
|
+
const newHours = e?.target?.value;
|
|
90
86
|
if (newHours === '0') handleChangeHours('01', e, {
|
|
91
87
|
isAutomaticFillTrigger: true
|
|
92
88
|
});else if (newHours.length > 0 && newHours.length < 2) handleChangeHours(prependStringWithPlaceHolders(newHours, 2), e, {
|
|
@@ -97,9 +93,7 @@ const useTimeInputs = () => {
|
|
|
97
93
|
trackFocusMinuteInput();
|
|
98
94
|
}, [trackFocusMinuteInput]);
|
|
99
95
|
const onMinutesChange = useCallback(e => {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
let newMinutes = e === null || e === void 0 ? void 0 : (_e$target3 = e.target) === null || _e$target3 === void 0 ? void 0 : _e$target3.value; // converts minutes 7~9 to 07~09
|
|
96
|
+
let newMinutes = e?.target?.value; // converts minutes 7~9 to 07~09
|
|
103
97
|
|
|
104
98
|
if (Number.parseInt(newMinutes, 10) > 6) newMinutes = prependStringWithPlaceHolders(newMinutes, 2);
|
|
105
99
|
handleChangeMinutes(newMinutes, e); // auto-advance functionality:
|
|
@@ -122,19 +116,19 @@ const useTimeInputs = () => {
|
|
|
122
116
|
const minutesInteger = Number.isNaN(minutesStringConvertedToInteger) ? 0 : minutesStringConvertedToInteger;
|
|
123
117
|
let newMinutes;
|
|
124
118
|
if (key === 'ArrowUp') newMinutes = minutesInteger + minutesInterval <= 59 ? minutesInteger + minutesInterval : minutesInteger;else newMinutes = minutesInteger - minutesInterval > 0 ? minutesInteger - minutesInterval : 0;
|
|
125
|
-
newMinutes = prependStringWithPlaceHolders(
|
|
119
|
+
newMinutes = prependStringWithPlaceHolders(`${newMinutes}`, 2);
|
|
126
120
|
handleChangeMinutes(newMinutes, e);
|
|
127
121
|
}
|
|
128
122
|
|
|
129
123
|
if (!Number.isNaN(minutesStringConvertedToInteger) && key === ' ') {
|
|
130
|
-
const newMinutes = prependStringWithPlaceHolders(
|
|
124
|
+
const newMinutes = prependStringWithPlaceHolders(`${minutesStringConvertedToInteger}`, 2);
|
|
131
125
|
handleChangeMinutes(newMinutes, e); // auto-advance functionality:
|
|
132
126
|
|
|
133
127
|
if (newMinutes.length === 2) trackFocusMeridiemInput();
|
|
134
128
|
} // regressive backspace functionality
|
|
135
129
|
|
|
136
130
|
|
|
137
|
-
if (key === 'Backspace' &&
|
|
131
|
+
if (key === 'Backspace' && minutes?.length === 0) {
|
|
138
132
|
trackFocusHourInput();
|
|
139
133
|
} // focus last fragment on fill with now
|
|
140
134
|
|
|
@@ -142,9 +136,7 @@ const useTimeInputs = () => {
|
|
|
142
136
|
if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();
|
|
143
137
|
}, [minutes, onHomeKeyDown, onEndKeyDown, trackFocusLastSegment, minutesInterval, handleChangeMinutes, trackFocusMeridiemInput, trackFocusHourInput]);
|
|
144
138
|
const onMinutesBlur = useCallback(e => {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
const newMinutes = e === null || e === void 0 ? void 0 : (_e$target4 = e.target) === null || _e$target4 === void 0 ? void 0 : _e$target4.value;
|
|
139
|
+
const newMinutes = e?.target?.value;
|
|
148
140
|
if (newMinutes.length > 0 && newMinutes.length < 2) handleChangeMinutes(prependStringWithPlaceHolders(newMinutes, 2), e, {
|
|
149
141
|
isAutomaticFillTrigger: true
|
|
150
142
|
});
|
|
@@ -153,13 +145,11 @@ const useTimeInputs = () => {
|
|
|
153
145
|
trackFocusMeridiemInput();
|
|
154
146
|
}, [trackFocusMeridiemInput]);
|
|
155
147
|
const onMeridiemChange = useCallback(e => {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
let newMeridiem = e === null || e === void 0 ? void 0 : (_e$target5 = e.target) === null || _e$target5 === void 0 ? void 0 : (_e$target5$value = _e$target5.value) === null || _e$target5$value === void 0 ? void 0 : (_e$target5$value$toUp = _e$target5$value.toUpperCase) === null || _e$target5$value$toUp === void 0 ? void 0 : _e$target5$value$toUp.call(_e$target5$value); // if new value is length 1,
|
|
148
|
+
let newMeridiem = e?.target?.value?.toUpperCase?.(); // if new value is length 1,
|
|
159
149
|
// if previous value was empty, auto-complete
|
|
160
150
|
// if previous value was not empty, set to empty (regressive backspace)
|
|
161
151
|
|
|
162
|
-
if (newMeridiem.length === 1) if (meridiem === '') newMeridiem =
|
|
152
|
+
if (newMeridiem.length === 1) if (meridiem === '') newMeridiem = `${newMeridiem}M`;else newMeridiem = '';
|
|
163
153
|
handleChangeMeridiem(newMeridiem, e); // auto-advance functionality:
|
|
164
154
|
|
|
165
155
|
if (newMeridiem.length === 2 && withAnyRightController) {
|
|
@@ -180,17 +170,15 @@ const useTimeInputs = () => {
|
|
|
180
170
|
if (key === 'ArrowDown' && meridiem !== 'PM') handleChangeMeridiem('PM', e); // regressive backspace functionality
|
|
181
171
|
|
|
182
172
|
if (key === 'Backspace') {
|
|
183
|
-
if (
|
|
173
|
+
if (meridiem?.length === 2) handleChangeMeridiem('', e);else trackFocusMinuteInput();
|
|
184
174
|
} // focus last fragment on fill with now
|
|
185
175
|
|
|
186
176
|
|
|
187
177
|
if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();
|
|
188
178
|
}, [onHomeKeyDown, onEndKeyDown, meridiem, handleChangeMeridiem, trackFocusLastSegment, trackFocusMinuteInput]);
|
|
189
179
|
const onMeridiemBlur = useCallback(e => {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
const newMeridiem = e === null || e === void 0 ? void 0 : (_e$target6 = e.target) === null || _e$target6 === void 0 ? void 0 : (_e$target6$value = _e$target6.value) === null || _e$target6$value === void 0 ? void 0 : (_e$target6$value$toUp = _e$target6$value.toUpperCase) === null || _e$target6$value$toUp === void 0 ? void 0 : _e$target6$value$toUp.call(_e$target6$value);
|
|
193
|
-
if (newMeridiem.length === 1) handleChangeMeridiem("".concat(newMeridiem, "M"), e, {
|
|
180
|
+
const newMeridiem = e?.target?.value?.toUpperCase?.();
|
|
181
|
+
if (newMeridiem.length === 1) handleChangeMeridiem(`${newMeridiem}M`, e, {
|
|
194
182
|
isAutomaticFillTrigger: true
|
|
195
183
|
});
|
|
196
184
|
}, [handleChangeMeridiem]);
|
|
@@ -1,42 +1,33 @@
|
|
|
1
1
|
import 'core-js/modules/esnext.async-iterator.map.js';
|
|
2
2
|
import 'core-js/modules/esnext.iterator.map.js';
|
|
3
|
-
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
4
3
|
import { createRef } from 'react';
|
|
5
4
|
import { monthNames } from './constants.js';
|
|
6
5
|
import { prependStringWithPlaceHolders, deconstructValuesFromDateString, isIncompleteString } from './stringHelpers.js';
|
|
7
6
|
import { convertToPositiveNumberIfPossible } from './numberHelpers.js';
|
|
8
7
|
|
|
9
|
-
const getDateValuesFromDate = day => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
day: day === null || day === void 0 ? void 0 : (_day$getDate = day.getDate) === null || _day$getDate === void 0 ? void 0 : _day$getDate.call(day),
|
|
15
|
-
year: day === null || day === void 0 ? void 0 : (_day$getFullYear = day.getFullYear) === null || _day$getFullYear === void 0 ? void 0 : _day$getFullYear.call(day)
|
|
16
|
-
};
|
|
17
|
-
};
|
|
8
|
+
const getDateValuesFromDate = day => ({
|
|
9
|
+
month: day?.getMonth?.(),
|
|
10
|
+
day: day?.getDate?.(),
|
|
11
|
+
year: day?.getFullYear?.()
|
|
12
|
+
});
|
|
18
13
|
const getDateStringFromDay = day => {
|
|
19
|
-
const monthFromDay = prependStringWithPlaceHolders(
|
|
14
|
+
const monthFromDay = prependStringWithPlaceHolders(`${day.getMonth() + 1}`, 2); // months from 1-12
|
|
20
15
|
|
|
21
|
-
const dayFromDay = prependStringWithPlaceHolders(
|
|
22
|
-
const yearFromDay = prependStringWithPlaceHolders(
|
|
23
|
-
return
|
|
16
|
+
const dayFromDay = prependStringWithPlaceHolders(`${day.getDate()}`, 2);
|
|
17
|
+
const yearFromDay = prependStringWithPlaceHolders(`${day.getFullYear()}`, 4);
|
|
18
|
+
return `${monthFromDay}/${dayFromDay}/${yearFromDay}`;
|
|
24
19
|
};
|
|
25
20
|
const getTimeStringFromDay = day => {
|
|
26
21
|
const hoursNum = day.getHours();
|
|
27
22
|
const meridiem = hoursNum > 12 ? 'PM' : 'AM';
|
|
28
23
|
const twelveHourFormat = hoursNum > 12 ? hoursNum - 12 : hoursNum;
|
|
29
24
|
const minutesNum = day.getMinutes();
|
|
30
|
-
const hoursFromDay = prependStringWithPlaceHolders(
|
|
31
|
-
const minutesFromDay = prependStringWithPlaceHolders(
|
|
32
|
-
return
|
|
25
|
+
const hoursFromDay = prependStringWithPlaceHolders(`${twelveHourFormat}`, 2);
|
|
26
|
+
const minutesFromDay = prependStringWithPlaceHolders(`${minutesNum}`, 2);
|
|
27
|
+
return `${hoursFromDay}:${minutesFromDay} ${meridiem}`;
|
|
33
28
|
};
|
|
34
29
|
const getMonthNameByMonthNumber = monthNumber => monthNames[monthNumber];
|
|
35
|
-
const isSameDateMoment = (dateA, dateB) =>
|
|
36
|
-
var _dateA$getTime, _dateB$getTime;
|
|
37
|
-
|
|
38
|
-
return (dateA === null || dateA === void 0 ? void 0 : (_dateA$getTime = dateA.getTime) === null || _dateA$getTime === void 0 ? void 0 : _dateA$getTime.call(dateA)) === (dateB === null || dateB === void 0 ? void 0 : (_dateB$getTime = dateB.getTime) === null || _dateB$getTime === void 0 ? void 0 : _dateB$getTime.call(dateB));
|
|
39
|
-
};
|
|
30
|
+
const isSameDateMoment = (dateA, dateB) => dateA?.getTime?.() === dateB?.getTime?.();
|
|
40
31
|
const compareTwoDatesDayEquality = (dayA, dayB) => {
|
|
41
32
|
const {
|
|
42
33
|
day: currD,
|
|
@@ -51,11 +42,7 @@ const compareTwoDatesDayEquality = (dayA, dayB) => {
|
|
|
51
42
|
return currD === focusD && currM === focusM && currY === focusY;
|
|
52
43
|
};
|
|
53
44
|
const getLastDayOfMonth = (month, year) => new Date(year, month + 1, 0);
|
|
54
|
-
const isValidDayForTheMonth = (month, year, day) =>
|
|
55
|
-
var _Date, _Date$getMonth;
|
|
56
|
-
|
|
57
|
-
return ((_Date = new Date(year, month, day)) === null || _Date === void 0 ? void 0 : (_Date$getMonth = _Date.getMonth) === null || _Date$getMonth === void 0 ? void 0 : _Date$getMonth.call(_Date)) === month;
|
|
58
|
-
};
|
|
45
|
+
const isValidDayForTheMonth = (month, year, day) => new Date(year, month, day)?.getMonth?.() === month;
|
|
59
46
|
const getDayFromDateString = dateString => {
|
|
60
47
|
const {
|
|
61
48
|
month,
|
|
@@ -69,8 +56,6 @@ const getDayFromDateString = dateString => {
|
|
|
69
56
|
return null;
|
|
70
57
|
};
|
|
71
58
|
const isValidDayForTheMonthDateString = dateString => {
|
|
72
|
-
var _getDayFromDateString, _getDayFromDateString2;
|
|
73
|
-
|
|
74
59
|
if (isIncompleteString(dateString)) return true;
|
|
75
60
|
const {
|
|
76
61
|
month
|
|
@@ -78,7 +63,7 @@ const isValidDayForTheMonthDateString = dateString => {
|
|
|
78
63
|
const monthInt = convertToPositiveNumberIfPossible(month);
|
|
79
64
|
if (monthInt === -1) return false;
|
|
80
65
|
const monthDateMonth = monthInt - 1;
|
|
81
|
-
return
|
|
66
|
+
return getDayFromDateString(dateString)?.getMonth?.() === monthDateMonth;
|
|
82
67
|
};
|
|
83
68
|
const getValidationDateStringMetaInfo = function (dateString) {
|
|
84
69
|
let getIsOutOfRangeDay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : day => false;
|
|
@@ -205,8 +190,6 @@ const getFirstXDaysFromNextMonth = (month, year, howMany) => {
|
|
|
205
190
|
return days;
|
|
206
191
|
};
|
|
207
192
|
const getFiveBySevenCurrentMonthDaysMatrix = (month, year) => {
|
|
208
|
-
var _currentMonthDays$, _currentMonthDays$$da, _currentMonthDays, _currentMonthDays$day;
|
|
209
|
-
|
|
210
193
|
const currentMonthDays = getDaysInMonth(month, year).map(day => ({
|
|
211
194
|
day,
|
|
212
195
|
dayAsString: getDateStringFromDay(day),
|
|
@@ -216,7 +199,7 @@ const getFiveBySevenCurrentMonthDaysMatrix = (month, year) => {
|
|
|
216
199
|
isHidden: false,
|
|
217
200
|
dayBtnRef: /*#__PURE__*/createRef()
|
|
218
201
|
}));
|
|
219
|
-
const firstDayOfTheMonthWeekDay = currentMonthDays
|
|
202
|
+
const firstDayOfTheMonthWeekDay = currentMonthDays?.[0]?.day?.getDay();
|
|
220
203
|
const previousMonthDaysToPrepend = getLastXDaysFromPreviousMonth(month, year, firstDayOfTheMonthWeekDay).map(day => ({
|
|
221
204
|
day,
|
|
222
205
|
dayAsString: getDateStringFromDay(day),
|
|
@@ -226,7 +209,7 @@ const getFiveBySevenCurrentMonthDaysMatrix = (month, year) => {
|
|
|
226
209
|
isHidden: false,
|
|
227
210
|
dayBtnRef: /*#__PURE__*/createRef()
|
|
228
211
|
}));
|
|
229
|
-
const lastDayOfTheMonthWeekDay = currentMonthDays
|
|
212
|
+
const lastDayOfTheMonthWeekDay = currentMonthDays?.[currentMonthDays.length - 1]?.day?.getDay();
|
|
230
213
|
const nextMonthDaysToAppend = getFirstXDaysFromNextMonth(month, year, 6 - lastDayOfTheMonthWeekDay).map(day => ({
|
|
231
214
|
day,
|
|
232
215
|
dayAsString: getDateStringFromDay(day),
|
|
@@ -3,10 +3,8 @@ import { useEffect } from 'react';
|
|
|
3
3
|
const useOnClickOutside = (ref, handler) => {
|
|
4
4
|
useEffect(() => {
|
|
5
5
|
const listener = event => {
|
|
6
|
-
var _ref$contains;
|
|
7
|
-
|
|
8
6
|
// Do nothing if clicking ref's element or descendent elements
|
|
9
|
-
if (event.target instanceof Element) if (!ref || ref
|
|
7
|
+
if (event.target instanceof Element) if (!ref || ref?.contains?.(event.target)) {
|
|
10
8
|
return;
|
|
11
9
|
}
|
|
12
10
|
handler(event);
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import 'core-js/modules/esnext.async-iterator.map.js';
|
|
2
2
|
import 'core-js/modules/esnext.iterator.map.js';
|
|
3
|
-
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
4
|
-
import 'core-js/modules/es.string.replace.js';
|
|
5
3
|
import { monthNames, announcableCardinalDays } from './constants.js';
|
|
6
4
|
import { convertToPositiveNumberIfPossible } from './numberHelpers.js';
|
|
7
5
|
|
|
@@ -27,13 +25,9 @@ const getFormattedDateString = _ref => {
|
|
|
27
25
|
const finalMonth = fillStringWithPlaceHolders(month, 2);
|
|
28
26
|
const finalDay = fillStringWithPlaceHolders(day, 2);
|
|
29
27
|
const finalYear = fillStringWithPlaceHolders(year, 4);
|
|
30
|
-
return
|
|
31
|
-
};
|
|
32
|
-
const dateTimeToDate = dateTime => {
|
|
33
|
-
var _dateTime$split, _dateTime$split$call;
|
|
34
|
-
|
|
35
|
-
return dateTime === null || dateTime === void 0 ? void 0 : (_dateTime$split = dateTime.split) === null || _dateTime$split === void 0 ? void 0 : (_dateTime$split$call = _dateTime$split.call(dateTime, ' ')) === null || _dateTime$split$call === void 0 ? void 0 : _dateTime$split$call[0];
|
|
28
|
+
return `${finalMonth}/${finalDay}/${finalYear}`;
|
|
36
29
|
};
|
|
30
|
+
const dateTimeToDate = dateTime => dateTime?.split?.(' ')?.[0];
|
|
37
31
|
const deconstructValuesFromDateString = dateString => {
|
|
38
32
|
const [dirtyMonth = '', dirtyDay = '', dirtyYear = ''] = dateString.split('/');
|
|
39
33
|
const replaceAllRegexp = /_/g;
|
|
@@ -79,13 +73,13 @@ const getFormattedTimeString = _ref2 => {
|
|
|
79
73
|
|
|
80
74
|
const finalMeridiem = fillStringWithPlaceHolders(meridiem, 2); // return `${finalHour}:${finalMinutes}:${finalSeconds} ${finalMeridiem}`;// <-- seconds format
|
|
81
75
|
|
|
82
|
-
return
|
|
76
|
+
return `${finalHour}:${finalMinutes} ${finalMeridiem}`;
|
|
83
77
|
};
|
|
84
78
|
const dateTimeToTime = dateTime => {
|
|
85
79
|
const [// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars
|
|
86
80
|
date, // timeNumbers = '__:__:__', // <-- seconds format
|
|
87
81
|
timeNumbers = '__:__', timeMeridiem = '__'] = dateTime.split(' ');
|
|
88
|
-
return
|
|
82
|
+
return `${timeNumbers} ${timeMeridiem}`;
|
|
89
83
|
};
|
|
90
84
|
const deconstructTimeValues = timeString => {
|
|
91
85
|
const [dirtyTimes = '', dirtyMeridiem] = timeString.split(' '); // <--['__:__','__']
|
|
@@ -131,7 +125,7 @@ const getAriaDayFromDateString = dateString => {
|
|
|
131
125
|
const dayNum = convertToPositiveNumberIfPossible(dayString);
|
|
132
126
|
const yearNum = convertToPositiveNumberIfPossible(yearString);
|
|
133
127
|
if (monthNum === -1 || dayNum === -1 || yearNum === -1) return '';
|
|
134
|
-
return
|
|
128
|
+
return `${monthNames[monthNum - 1]} ${announcableCardinalDays[dayNum]} ${yearNum}`;
|
|
135
129
|
};
|
|
136
130
|
|
|
137
131
|
export { dateTimeToDate, dateTimeToTime, deconstructTimeValues, deconstructValuesFromDateString, deconstructValuesFromTimeString, fillStringWithPlaceHolders, getAriaDayFromDateString, getFormattedDateString, getFormattedTimeString, isEmptyDateStringMask, isEmptyDateTimeStringMask, isEmptyTimeStringMask, isIncompleteString, isValidDateString, isValidTimeString, prependStringWithPlaceHolders };
|
|
@@ -6,10 +6,10 @@ import 'core-js/modules/esnext.iterator.for-each.js';
|
|
|
6
6
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
7
7
|
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
8
8
|
import { useMemo } from 'react';
|
|
9
|
-
import { describe, useValidateTypescriptPropTypes, useGetGlobalAttributes } from '@elliemae/ds-props-helpers';
|
|
9
|
+
import { describe, useValidateTypescriptPropTypes, useGetGlobalAttributes, useGetXstyledProps } from '@elliemae/ds-props-helpers';
|
|
10
10
|
import { StyledContainer, StyledLeftAddon, StyledInput, StyledRightAddon } from './styled.js';
|
|
11
11
|
import { propTypes } from './react-desc-prop-types.js';
|
|
12
|
-
import { InputGroupDataTestIds } from './
|
|
12
|
+
import { InputGroupDataTestIds } from './exported-related/data-test-ids.js';
|
|
13
13
|
import { jsxs } from 'react/jsx-runtime';
|
|
14
14
|
|
|
15
15
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -24,6 +24,7 @@ const DSInputGroup = props => {
|
|
|
24
24
|
rightAddon
|
|
25
25
|
} = props;
|
|
26
26
|
const globals = useGetGlobalAttributes(props);
|
|
27
|
+
const xstyledProps = useGetXstyledProps(props);
|
|
27
28
|
const cols = useMemo(() => {
|
|
28
29
|
if (leftAddon && rightAddon) {
|
|
29
30
|
return ['max-content', 'auto', 'max-content'];
|
|
@@ -39,10 +40,10 @@ const DSInputGroup = props => {
|
|
|
39
40
|
|
|
40
41
|
return ['auto'];
|
|
41
42
|
}, [leftAddon, rightAddon]);
|
|
42
|
-
return /*#__PURE__*/jsxs(StyledContainer, _objectSpread(_objectSpread({
|
|
43
|
+
return /*#__PURE__*/jsxs(StyledContainer, _objectSpread(_objectSpread(_objectSpread({
|
|
43
44
|
cols: cols,
|
|
44
45
|
"data-testid": InputGroupDataTestIds.CONTAINER
|
|
45
|
-
}, globals), {}, {
|
|
46
|
+
}, globals), xstyledProps), {}, {
|
|
46
47
|
children: [leftAddon && /*#__PURE__*/_jsx(StyledLeftAddon, {
|
|
47
48
|
"data-testid": InputGroupDataTestIds.LEFTADDON
|
|
48
49
|
}, void 0, leftAddon), /*#__PURE__*/_jsx(StyledInput, {
|
|
@@ -1,35 +1,106 @@
|
|
|
1
|
-
import styled from '
|
|
1
|
+
import { styled } from '@elliemae/ds-system';
|
|
2
2
|
import { Grid } from '@elliemae/ds-grid';
|
|
3
3
|
import '../text-input/DSInputText.js';
|
|
4
4
|
import { DSInputTextName, DSInputTextSlots } from '../text-input/exported-related/theming.js';
|
|
5
5
|
import '../combobox/ComboBox.js';
|
|
6
6
|
import { DSComboBoxName, DSComboboxSlots } from '../combobox/theming.js';
|
|
7
|
+
import { DSInputGroupName, DSInputGroupSlots } from './exported-related/theming.js';
|
|
7
8
|
|
|
8
9
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
9
|
-
const StyledContainer =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
const StyledContainer = styled(Grid, {
|
|
11
|
+
name: DSInputGroupName,
|
|
12
|
+
slot: DSInputGroupSlots.CONTAINER
|
|
13
|
+
})`
|
|
14
|
+
width: 100%;
|
|
15
|
+
height: 28px;
|
|
16
|
+
|
|
17
|
+
// input in left position with right addon
|
|
18
|
+
& > div:nth-child(1) {
|
|
19
|
+
.${DSInputTextName}-${DSInputTextSlots.INPUT_WRAPPER},
|
|
20
|
+
.${DSInputTextName}-${DSInputTextSlots.INPUT},
|
|
21
|
+
.${DSComboBoxName}-${DSComboboxSlots.INPUT_WRAPPER} {
|
|
22
|
+
border-top-right-radius: 0;
|
|
23
|
+
border-bottom-right-radius: 0;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// input in center position with left and right addon
|
|
28
|
+
& > div:nth-child(2):nth-last-child(2) {
|
|
29
|
+
.${DSInputTextName}-${DSInputTextSlots.INPUT_WRAPPER},
|
|
30
|
+
.${DSInputTextName}-${DSInputTextSlots.INPUT},
|
|
31
|
+
.${DSComboBoxName}-${DSComboboxSlots.INPUT_WRAPPER} {
|
|
32
|
+
border-radius: 0;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// input in right position with left addon
|
|
37
|
+
& > div:nth-child(2):nth-last-child(1) {
|
|
38
|
+
.${DSInputTextName}-${DSInputTextSlots.INPUT_WRAPPER},
|
|
39
|
+
.${DSInputTextName}-${DSInputTextSlots.INPUT},
|
|
40
|
+
.${DSComboBoxName}-${DSComboboxSlots.INPUT_WRAPPER} {
|
|
41
|
+
border-top-left-radius: 0;
|
|
42
|
+
border-bottom-left-radius: 0;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
`;
|
|
46
|
+
const StyledAddon = styled.div`
|
|
47
|
+
outline: 1px solid ${_ref => {
|
|
15
48
|
let {
|
|
16
49
|
theme
|
|
17
50
|
} = _ref;
|
|
18
51
|
return theme.colors.neutral['400'];
|
|
19
|
-
}
|
|
52
|
+
}};
|
|
53
|
+
outline-offset: -1px;
|
|
54
|
+
height: inherit;
|
|
55
|
+
display: flex;
|
|
56
|
+
button {
|
|
57
|
+
border-width: 1px;
|
|
58
|
+
}
|
|
59
|
+
&:hover {
|
|
60
|
+
z-index: 2;
|
|
61
|
+
button:not(:disabled) {
|
|
62
|
+
border: 1px solid ${_ref2 => {
|
|
20
63
|
let {
|
|
21
64
|
theme
|
|
22
65
|
} = _ref2;
|
|
23
66
|
return theme.colors.brand['700'];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
67
|
+
}};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
&:focus-within {
|
|
71
|
+
z-index: 2;
|
|
72
|
+
}
|
|
73
|
+
`;
|
|
74
|
+
const StyledLeftAddon = styled(StyledAddon, {
|
|
75
|
+
name: DSInputGroupName,
|
|
76
|
+
slot: DSInputGroupSlots.LEFT_ADDON
|
|
77
|
+
})`
|
|
78
|
+
border-top-left-radius: 2px;
|
|
79
|
+
border-bottom-left-radius: 2px;
|
|
80
|
+
margin-right: -1px;
|
|
81
|
+
&:hover {
|
|
82
|
+
button:not(:disabled) {
|
|
83
|
+
border-top-right-radius: 0px;
|
|
84
|
+
border-bottom-right-radius: 0px;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
`;
|
|
88
|
+
const StyledRightAddon = styled(StyledAddon, {
|
|
89
|
+
name: DSInputGroupName,
|
|
90
|
+
slot: DSInputGroupSlots.RIGHT_ADDON
|
|
91
|
+
})`
|
|
92
|
+
border-top-right-radius: 2px;
|
|
93
|
+
border-bottom-right-radius: 2px;
|
|
94
|
+
margin-left: -1px;
|
|
95
|
+
&:hover {
|
|
96
|
+
button:not(:disabled) {
|
|
97
|
+
border-top-left-radius: 0px;
|
|
98
|
+
border-bottom-left-radius: 0px;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
`;
|
|
102
|
+
const StyledInput = styled.div`
|
|
103
|
+
z-index: 1;
|
|
104
|
+
`;
|
|
34
105
|
|
|
35
106
|
export { StyledContainer, StyledInput, StyledLeftAddon, StyledRightAddon };
|
|
@@ -62,7 +62,7 @@ const DSControlledLargeTextInput = props => {
|
|
|
62
62
|
hasError: hasError
|
|
63
63
|
}, globalAttributes)), maxLength && !withoutCharacterCounter && /*#__PURE__*/_jsx(StyledCharCounter, {
|
|
64
64
|
"data-testid": DSControlledLargetTextInputDatatestids.CHAR_COUNTER
|
|
65
|
-
}, void 0,
|
|
65
|
+
}, void 0, `${value.length}/${maxLength}`)]
|
|
66
66
|
}));
|
|
67
67
|
};
|
|
68
68
|
|
|
@@ -1,30 +1,48 @@
|
|
|
1
|
-
import _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';
|
|
2
1
|
import { styled } from '@elliemae/ds-system';
|
|
3
2
|
import { layout, space, sizing } from '@xstyled/styled-components';
|
|
4
3
|
import { DSControlledLargeTextInputName, DSControlledLargeTextInputSlots } from './exported-related/theming.js';
|
|
5
4
|
|
|
6
|
-
var _templateObject, _templateObject2, _templateObject3;
|
|
7
5
|
const StyledContainer = styled('div', {
|
|
8
6
|
name: DSControlledLargeTextInputName,
|
|
9
7
|
slot: DSControlledLargeTextInputSlots.CONTAINER
|
|
10
|
-
})
|
|
8
|
+
})`
|
|
9
|
+
display: grid;
|
|
10
|
+
grid-gap: 4px;
|
|
11
|
+
grid-template-rows: auto auto;
|
|
12
|
+
grid-template-columns: fit-content;
|
|
13
|
+
${layout}
|
|
14
|
+
${space}
|
|
15
|
+
${sizing}
|
|
16
|
+
`;
|
|
11
17
|
const StyledCharCounter = styled('span', {
|
|
12
18
|
name: DSControlledLargeTextInputName,
|
|
13
19
|
slot: DSControlledLargeTextInputSlots.CHAR_COUNTER
|
|
14
|
-
})
|
|
20
|
+
})`
|
|
21
|
+
justify-self: flex-end;
|
|
22
|
+
`;
|
|
15
23
|
const StyledTextArea = styled('textarea', {
|
|
16
24
|
name: DSControlledLargeTextInputName,
|
|
17
25
|
slot: DSControlledLargeTextInputSlots.INPUT
|
|
18
|
-
})
|
|
26
|
+
})`
|
|
27
|
+
width: 100%;
|
|
28
|
+
${_ref => {
|
|
19
29
|
let {
|
|
20
30
|
resizable
|
|
21
31
|
} = _ref;
|
|
22
|
-
return resizable ?
|
|
23
|
-
}
|
|
32
|
+
return resizable ? `` : `resize: none;`;
|
|
33
|
+
}}
|
|
34
|
+
&:disabled {
|
|
35
|
+
&:hover {
|
|
36
|
+
cursor: not-allowed;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
${_ref2 => {
|
|
24
41
|
let {
|
|
25
42
|
hasError
|
|
26
43
|
} = _ref2;
|
|
27
|
-
return hasError ?
|
|
28
|
-
}
|
|
44
|
+
return hasError ? `border: 1px solid red;` : ``;
|
|
45
|
+
}}
|
|
46
|
+
`;
|
|
29
47
|
|
|
30
48
|
export { StyledCharCounter, StyledContainer, StyledTextArea };
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
2
|
-
import 'core-js/modules/es.string.replace.js';
|
|
3
2
|
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
4
3
|
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
5
4
|
import 'core-js/modules/esnext.iterator.filter.js';
|
|
6
|
-
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
7
5
|
import { useRef, useState, useCallback } from 'react';
|
|
8
6
|
import { describe, useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';
|
|
9
7
|
import { useCallbackAfterRender } from '@elliemae/ds-utilities';
|
|
@@ -141,9 +139,7 @@ const useNumberMask = props => {
|
|
|
141
139
|
if (userOnKeyDown) userOnKeyDown(e);
|
|
142
140
|
}, [userOnKeyDown]);
|
|
143
141
|
const onChange = useCallback(e => {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
const [mask, cursorPos] = conformValue(e.target.value, (_e$target$selectionEn = e.target.selectionEnd) !== null && _e$target$selectionEn !== void 0 ? _e$target$selectionEn : 0, lastKeyCode.current, opts);
|
|
142
|
+
const [mask, cursorPos] = conformValue(e.target.value, e.target.selectionEnd ?? 0, lastKeyCode.current, opts);
|
|
147
143
|
valueSetter(prevMask => {
|
|
148
144
|
// Here we need to update the key
|
|
149
145
|
if (mask === prevMask) setKey(key => key + 1);
|