@elliemae/ds-controlled-form 2.3.0-next.8 → 2.3.0-rc.3

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.
Files changed (79) hide show
  1. package/cjs/controlled-autocomplete/parts/controls/styled.js +2 -2
  2. package/cjs/controlled-autocomplete/parts/menu-list/MenuList.js +2 -2
  3. package/cjs/controlled-checkbox/ControlledCheckbox.js +54 -40
  4. package/cjs/controlled-checkbox/config/useValidateProps.js +2 -2
  5. package/cjs/controlled-checkbox/react-desc-prop-types.js +32 -0
  6. package/cjs/controlled-checkbox/utils/styleHelpers.js +4 -4
  7. package/cjs/controlled-combobox/ComboBoxCTX.js +1 -4
  8. package/cjs/controlled-combobox/config/useComboBox.js +6 -5
  9. package/cjs/controlled-combobox/parts/a11y-messages/SelectedValuesAllyMsg.js +7 -2
  10. package/cjs/controlled-combobox/parts/container/Container.js +2 -16
  11. package/cjs/controlled-combobox/parts/controls/Controls.js +1 -0
  12. package/cjs/controlled-combobox/parts/controls/styled.js +3 -3
  13. package/cjs/controlled-combobox/parts/controls-input/ControlsInput.js +5 -3
  14. package/cjs/controlled-combobox/parts/controls-input/useControlsInput.js +3 -1
  15. package/cjs/controlled-combobox/parts/header-list/HeaderList.js +4 -9
  16. package/cjs/controlled-combobox/parts/header-list/useHeaderListHandlers.js +8 -1
  17. package/cjs/controlled-combobox/parts/menu-list/MenuList.js +10 -13
  18. package/cjs/controlled-combobox/parts/menu-list/styled.js +4 -0
  19. package/cjs/controlled-combobox/parts/menu-list/useItemRenderer.js +4 -7
  20. package/cjs/controlled-combobox/parts/multi-selected-values-container/MultiSelectedValuesContainer.js +18 -8
  21. package/cjs/controlled-combobox/react-desc-prop-types.js +1 -1
  22. package/cjs/controlled-combobox/utils/hooks/useKeyboardNavigation.js +2 -5
  23. package/cjs/controlled-date-time-picker/parts/ControlledDateTimePickerContent.js +2 -2
  24. package/cjs/controlled-date-time-picker/parts/DateInputs/DateInputs.js +2 -2
  25. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +2 -2
  26. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +2 -2
  27. package/cjs/controlled-date-time-picker/parts/Styleds.js +6 -6
  28. package/cjs/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +2 -2
  29. package/esm/controlled-checkbox/ControlledCheckbox.js +49 -37
  30. package/esm/controlled-checkbox/config/useValidateProps.js +2 -2
  31. package/esm/controlled-checkbox/react-desc-prop-types.js +23 -0
  32. package/esm/controlled-checkbox/utils/styleHelpers.js +4 -4
  33. package/esm/controlled-combobox/ComboBoxCTX.js +2 -5
  34. package/esm/controlled-combobox/config/useComboBox.js +7 -6
  35. package/esm/controlled-combobox/parts/a11y-messages/SelectedValuesAllyMsg.js +7 -2
  36. package/esm/controlled-combobox/parts/container/Container.js +2 -16
  37. package/esm/controlled-combobox/parts/controls/Controls.js +1 -0
  38. package/esm/controlled-combobox/parts/controls-input/ControlsInput.js +5 -3
  39. package/esm/controlled-combobox/parts/controls-input/useControlsInput.js +3 -1
  40. package/esm/controlled-combobox/parts/header-list/HeaderList.js +4 -9
  41. package/esm/controlled-combobox/parts/header-list/useHeaderListHandlers.js +8 -1
  42. package/esm/controlled-combobox/parts/menu-list/MenuList.js +12 -15
  43. package/esm/controlled-combobox/parts/menu-list/styled.js +4 -1
  44. package/esm/controlled-combobox/parts/menu-list/useItemRenderer.js +2 -5
  45. package/esm/controlled-combobox/parts/multi-selected-values-container/MultiSelectedValuesContainer.js +19 -8
  46. package/esm/controlled-combobox/react-desc-prop-types.js +1 -1
  47. package/esm/controlled-combobox/utils/hooks/useKeyboardNavigation.js +2 -5
  48. package/package.json +13 -29
  49. package/types/controlled-checkbox/ControlledCheckbox.d.ts +4 -70
  50. package/types/controlled-checkbox/config/useValidateProps.d.ts +2 -2
  51. package/types/controlled-checkbox/react-desc-prop-types.d.ts +32 -0
  52. package/types/controlled-checkbox/styles.d.ts +3 -3
  53. package/types/controlled-checkbox/utils/setMultipleRefs.d.ts +1 -1
  54. package/types/controlled-checkbox/utils/styleHelpers.d.ts +3 -3
  55. package/types/controlled-combobox/config/useComboBox.d.ts +1 -1
  56. package/types/controlled-combobox/parts/controls/useOnPillsNavigation.d.ts +2 -2
  57. package/types/controlled-combobox/parts/header-list/useHeaderListHandlers.d.ts +2 -1
  58. package/types/controlled-combobox/parts/menu-list/styled.d.ts +1 -0
  59. package/types/controlled-combobox/parts/menu-list/useItemRenderer.d.ts +2 -2
  60. package/types/controlled-combobox/react-desc-prop-types.d.ts +9 -5
  61. package/types/controlled-combobox/sharedTypes.d.ts +0 -2
  62. package/cjs/controlled-checkbox/index.d.js +0 -2
  63. package/cjs/controlled-checkbox/propTypes.js +0 -22
  64. package/cjs/controlled-combobox/parts/dropdown-indicator/index.js +0 -2
  65. package/cjs/controlled-combobox/parts/empty-state/index.js +0 -23
  66. package/cjs/controlled-combobox/parts/empty-state/styled.js +0 -19
  67. package/cjs/controlled-combobox/parts/multi-selected-values-container/styled.js +0 -23
  68. package/esm/controlled-checkbox/index.d.js +0 -1
  69. package/esm/controlled-checkbox/propTypes.js +0 -18
  70. package/esm/controlled-combobox/parts/dropdown-indicator/index.js +0 -1
  71. package/esm/controlled-combobox/parts/empty-state/index.js +0 -15
  72. package/esm/controlled-combobox/parts/empty-state/styled.js +0 -10
  73. package/esm/controlled-combobox/parts/multi-selected-values-container/styled.js +0 -13
  74. package/types/controlled-checkbox/index.d.d.ts +0 -29
  75. package/types/controlled-checkbox/propTypes.d.ts +0 -60
  76. package/types/controlled-combobox/parts/dropdown-indicator/index.d.ts +0 -0
  77. package/types/controlled-combobox/parts/empty-state/index.d.ts +0 -3
  78. package/types/controlled-combobox/parts/empty-state/styled.d.ts +0 -2
  79. package/types/controlled-combobox/parts/multi-selected-values-container/styled.d.ts +0 -3
@@ -27,45 +27,31 @@ const Container = () => {
27
27
  const {
28
28
  props,
29
29
  showPopover,
30
- innerRef,
31
30
  setReferenceElement,
32
- setShowPopover,
33
31
  referenceElement
34
32
  } = useContext(ComboBoxContext);
35
33
  const {
36
34
  inline,
37
- disabled,
38
35
  startPlacementPreference,
39
36
  placementOrderPreference,
40
37
  withoutPortal,
41
38
  zIndex
42
39
  } = props;
43
- const handleCloseMenu = useCallback(() => {
44
- setShowPopover(false);
45
- if (innerRef.current) innerRef.current.blur();
46
- }, [innerRef, setShowPopover]);
47
40
  const handleMouseDown = useCallback(e => {
48
41
  e.preventDefault();
49
42
  }, []);
50
- const handleOnClickContainer = useCallback(() => {
51
- if (!disabled) setShowPopover(!showPopover);
52
- }, [setShowPopover, disabled, showPopover]);
53
43
  const StyledContainer = inline ? StyledContainerInline : StyledContainerWithPopper;
54
- const globalAttributes = useGetGlobalAttributes(props, {
55
- onClick: handleOnClickContainer
56
- }); // Removing possible collisionable props
44
+ const globalAttributes = useGetGlobalAttributes(props); // Removing possible collisionable props
57
45
 
58
46
  const rest = _objectWithoutProperties(globalAttributes, _excluded);
59
47
 
60
48
  return /*#__PURE__*/jsxs(Fragment, {
61
49
  children: [/*#__PURE__*/jsxs(StyledContainer, _objectSpread(_objectSpread({
62
- ref: setReferenceElement,
63
- onClick: handleOnClickContainer
50
+ ref: setReferenceElement
64
51
  }, rest), {}, {
65
52
  children: [_Controls || (_Controls = /*#__PURE__*/_jsx(Controls, {})), inline ? _MenuList || (_MenuList = /*#__PURE__*/_jsx(MenuList, {})) : null]
66
53
  })), !inline ? /*#__PURE__*/_jsx(DSPopperJS, {
67
54
  customOffset: [0, 5],
68
- closeContextMenu: handleCloseMenu,
69
55
  referenceElement: referenceElement,
70
56
  showPopover: showPopover,
71
57
  startPlacementPreference: startPlacementPreference,
@@ -41,6 +41,7 @@ const Controls = () => {
41
41
  var _innerRef$current2;
42
42
 
43
43
  (_innerRef$current2 = innerRef.current) === null || _innerRef$current2 === void 0 ? void 0 : _innerRef$current2.focus();
44
+ setShowPopover(true);
44
45
  }
45
46
  }, [hasFocus, setShowPopover, showPopover, innerRef, inline]);
46
47
 
@@ -15,7 +15,8 @@ const ControlsInput = () => {
15
15
  disabled,
16
16
  innerRef
17
17
  },
18
- focusOptionIdx
18
+ focusOptionIdx,
19
+ showPopover
19
20
  } = useContext(ComboBoxContext);
20
21
  const {
21
22
  onInputKeyDown
@@ -38,10 +39,11 @@ const ControlsInput = () => {
38
39
  "data-testid": ComboboxDataTestid.INPUT,
39
40
  autoFocus: autoFocus,
40
41
  id: "combo-input",
41
- "aria-owns": "combo-listbox",
42
+ "aria-controls": "combo-listbox",
42
43
  "aria-activedescendant": focusOptionIdx,
43
- "aria-expanded": "false",
44
+ "aria-expanded": showPopover,
44
45
  "aria-haspopup": "true",
46
+ "aria-describedby": "combobox-selected-items",
45
47
  role: "combobox",
46
48
  disabled: disabled,
47
49
  style: {
@@ -17,6 +17,7 @@ const useControlsInput = () => {
17
17
  },
18
18
  setShowPopover,
19
19
  setCurrentOption,
20
+ showSelectedOptions,
20
21
  wrapperListRef,
21
22
  setHasFocus,
22
23
  setShowSelectedOptions
@@ -48,12 +49,13 @@ const useControlsInput = () => {
48
49
 
49
50
  if (!(wrapperListRef !== null && wrapperListRef !== void 0 && (_wrapperListRef$curre = wrapperListRef.current) !== null && _wrapperListRef$curre !== void 0 && _wrapperListRef$curre.contains(document.activeElement))) {
50
51
  setShowPopover(false);
52
+ if (showSelectedOptions) setShowSelectedOptions(false);
51
53
  }
52
54
 
53
55
  setCurrentOption('');
54
56
  onFilter('');
55
57
  });
56
- }, [setHasFocus, setCurrentOption, wrapperListRef, onFilter, innerRef, setShowPopover]);
58
+ }, [setHasFocus, showSelectedOptions, setShowSelectedOptions, setCurrentOption, wrapperListRef, onFilter, innerRef, setShowPopover]);
57
59
  const handleOnFocus = useCallback(() => {
58
60
  setHasFocus(true);
59
61
  }, [setHasFocus]);
@@ -29,6 +29,7 @@ const HeaderList = () => {
29
29
  const {
30
30
  handleKeyDown,
31
31
  handleOnMouseDown,
32
+ handleFilterSelectionBtnOnBlur,
32
33
  handleToggle,
33
34
  checkboxStatus,
34
35
  handleSelectAllCheckboxChange
@@ -38,9 +39,9 @@ const HeaderList = () => {
38
39
  onMouseDown: handleOnMouseDown
39
40
  }, void 0, /*#__PURE__*/_jsx(StyledSelectAllCheckbox, {}, void 0, isSelectAllSupplied && isClearAllSupplied && /*#__PURE__*/_jsx(DSControlledCheckbox, {
40
41
  checked: checkboxStatus,
41
- ariaControls: checkboxStatus === 'mixed' ? multiSelectedValues.map(item => item.dsId).join(' ') : '',
42
+ "aria-controls": checkboxStatus === 'mixed' ? multiSelectedValues.map(item => item.dsId).join(' ') : '',
42
43
  name: "select-all-checkbox",
43
- ariaLabel: "Select/Unselect All Items",
44
+ "aria-label": "Select/Unselect All Items",
44
45
  id: "select-all-checkbox",
45
46
  onChange: handleSelectAllCheckboxChange,
46
47
  "data-testid": ComboboxDataTestid.SELECT_ALL_CHECKBOX,
@@ -55,13 +56,7 @@ const HeaderList = () => {
55
56
  },
56
57
  innerRef: selectAllCheckboxRef
57
58
  })), /*#__PURE__*/_jsx(StyledSelectedItems, {}, void 0, multiSelectedValues.length > 0 ? /*#__PURE__*/_jsx(StyledButtonSelection, {
58
- onBlur: () => {
59
- setTimeout(() => {
60
- var _innerRef$current2;
61
-
62
- return (_innerRef$current2 = innerRef.current) === null || _innerRef$current2 === void 0 ? void 0 : _innerRef$current2.focus();
63
- });
64
- },
59
+ onBlur: handleFilterSelectionBtnOnBlur,
65
60
  buttonType: "text",
66
61
  onClick: handleToggle,
67
62
  labelText: !showSelectedOptions ? "SHOW SELECTED [".concat(multiSelectedValues.length, "]") : 'SHOW ALL',
@@ -49,6 +49,12 @@ const useHeaderListHandlers = () => {
49
49
  setShowPopover(false);
50
50
  }
51
51
  }, [setShowPopover]);
52
+ const handleFilterSelectionBtnOnBlur = useCallback(() => {
53
+ var _innerRef$current;
54
+
55
+ if (showSelectedOptions) setShowSelectedOptions(false);
56
+ (_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.focus();
57
+ }, [setShowSelectedOptions, showSelectedOptions, innerRef]);
52
58
  useEffect(() => {
53
59
  if (multiSelectedValues.length === 0) {
54
60
  setShowSelectedOptions(false);
@@ -57,10 +63,11 @@ const useHeaderListHandlers = () => {
57
63
  return useMemo(() => ({
58
64
  handleKeyDown,
59
65
  handleToggle,
66
+ handleFilterSelectionBtnOnBlur,
60
67
  handleOnMouseDown,
61
68
  handleSelectAllCheckboxChange,
62
69
  checkboxStatus
63
- }), [handleKeyDown, handleToggle, handleOnMouseDown, checkboxStatus, handleSelectAllCheckboxChange]);
70
+ }), [handleKeyDown, handleFilterSelectionBtnOnBlur, handleToggle, handleOnMouseDown, checkboxStatus, handleSelectAllCheckboxChange]);
64
71
  };
65
72
 
66
73
  export { useHeaderListHandlers };
@@ -1,17 +1,16 @@
1
1
  import _jsx from '@babel/runtime/helpers/esm/jsx';
2
2
  import { useContext, useMemo } from 'react';
3
3
  import { noop } from 'lodash';
4
- import { StyledListWrapper, StyledVirtualListWrapper, StyledList } from './styled.js';
4
+ import { StyledListWrapper, StyledVirtualListWrapper, StyledList, StyledNoResultsWrapper } from './styled.js';
5
5
  import { ComboboxDataTestid } from '../../ComboboxDataTestids.js';
6
6
  import { ComboBoxContext } from '../../ComboBoxCTX.js';
7
7
  import { HeaderList } from '../header-list/HeaderList.js';
8
8
  import { useOnElementResize } from '../../utils/hooks/useOnElementResize.js';
9
- import { EmptyState } from '../empty-state/index.js';
10
9
  import { useItemRenderer } from './useItemRenderer.js';
11
10
  import { useMenuList } from './useMenuList.js';
12
- import { jsxs, jsx } from 'react/jsx-runtime';
11
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
13
12
 
14
- var _HeaderList, _EmptyState;
13
+ var _HeaderList, _StyledNoResultsWrapp;
15
14
 
16
15
  const MenuList = () => {
17
16
  var _innerRef$current;
@@ -32,9 +31,6 @@ const MenuList = () => {
32
31
  controlsWrapperRef,
33
32
  virtualListHelpers
34
33
  } = useContext(ComboBoxContext);
35
- const {
36
- totalSize
37
- } = virtualListHelpers;
38
34
  const isOnCreatedSupplied = onCreate !== noop;
39
35
  const multiple = Array.isArray(selectedValues);
40
36
  const withHeader = !inline && multiple && options.length > 0 && ((_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.value) === '';
@@ -44,12 +40,8 @@ const MenuList = () => {
44
40
  width
45
41
  } = useOnElementResize(controlsWrapperRef);
46
42
  const listWidth = useMemo(() => menuMinWidth || "".concat(referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth), // eslint-disable-next-line react-hooks/exhaustive-deps
47
- [menuMinWidth, referenceElement, width]); // validate funcionality with ux
48
- // const handleOnFocus = useCallback(() => {
49
- // // innerRef.current?.focus();
50
- // }, [innerRef]);
51
-
52
- return /*#__PURE__*/jsxs(StyledListWrapper, {
43
+ [menuMinWidth, referenceElement, width]);
44
+ const list = useMemo(() => /*#__PURE__*/jsxs(StyledListWrapper, {
53
45
  ref: wrapperListRef,
54
46
  inline: inline,
55
47
  onMouseDown: e => e.preventDefault(),
@@ -64,11 +56,16 @@ const MenuList = () => {
64
56
  role: "listbox",
65
57
  "data-testid": ComboboxDataTestid.LIST,
66
58
  style: {
67
- height: totalSize,
59
+ height: virtualListHelpers === null || virtualListHelpers === void 0 ? void 0 : virtualListHelpers.totalSize,
68
60
  margin: inline ? '0px' : '8px 0px'
69
61
  }
70
62
  }, void 0, ItemRenderer)
71
- }) : _EmptyState || (_EmptyState = /*#__PURE__*/_jsx(EmptyState, {}))]
63
+ }) : _StyledNoResultsWrapp || (_StyledNoResultsWrapp = /*#__PURE__*/_jsx(StyledNoResultsWrapper, {
64
+ id: "id-no-results"
65
+ }, void 0, "No matches found"))]
66
+ }), [ItemRenderer, inline, isOnCreatedSupplied, listRef, listWidth, menuMaxHeight, options.length, virtualListHelpers === null || virtualListHelpers === void 0 ? void 0 : virtualListHelpers.totalSize, withHeader, wrapperListRef]);
67
+ return /*#__PURE__*/jsx(Fragment, {
68
+ children: list
72
69
  });
73
70
  };
74
71
 
@@ -22,5 +22,8 @@ const StyledVirtualListWrapper = /*#__PURE__*/styled.div.withConfig({
22
22
  const StyledCreatableLabel = /*#__PURE__*/styled.span.withConfig({
23
23
  componentId: "sc-g2fmft-3"
24
24
  })(["font-weight:bold;font-style:italic;"]);
25
+ const StyledNoResultsWrapper = /*#__PURE__*/styled.div.withConfig({
26
+ componentId: "sc-g2fmft-4"
27
+ })(["padding:16px;"]);
25
28
 
26
- export { StyledCreatableLabel, StyledList, StyledListWrapper, StyledVirtualListWrapper };
29
+ export { StyledCreatableLabel, StyledList, StyledListWrapper, StyledNoResultsWrapper, StyledVirtualListWrapper };
@@ -36,9 +36,6 @@ const useItemRenderer = () => {
36
36
  focusOptionIdx,
37
37
  virtualListHelpers
38
38
  } = useContext(ComboBoxContext);
39
- const {
40
- virtualItems
41
- } = virtualListHelpers;
42
39
  const multiple = Array.isArray(selectedValues);
43
40
  const CBItem = multiple ? MultiMenuItem : SingleMenuItem;
44
41
  const handleClick = useCallback((option, e) => {
@@ -66,7 +63,7 @@ const useItemRenderer = () => {
66
63
  const handleOnMouseDown = useCallback(e => {
67
64
  e.preventDefault();
68
65
  }, []);
69
- const ItemRenderer = useMemo(() => virtualItems.map(vItem => {
66
+ const ItemRenderer = useMemo(() => virtualListHelpers === null || virtualListHelpers === void 0 ? void 0 : virtualListHelpers.virtualItems.map(vItem => {
70
67
  const option = options[vItem.index];
71
68
  const generalProps = {
72
69
  wrapperStyles: {
@@ -125,7 +122,7 @@ const useItemRenderer = () => {
125
122
  }
126
123
 
127
124
  return /*#__PURE__*/jsx(Fragment, {});
128
- }), [options, focusOptionIdx, selectedValues, innerRef, virtualItems]);
125
+ }), [options, focusOptionIdx, selectedValues, innerRef, virtualListHelpers === null || virtualListHelpers === void 0 ? void 0 : virtualListHelpers.virtualItems]);
129
126
  return ItemRenderer;
130
127
  };
131
128
 
@@ -1,8 +1,7 @@
1
1
  import _jsx from '@babel/runtime/helpers/esm/jsx';
2
2
  import 'core-js/modules/esnext.async-iterator.map.js';
3
3
  import 'core-js/modules/esnext.iterator.map.js';
4
- import { useContext, useMemo } from 'react';
5
- import Grid from '@elliemae/ds-grid';
4
+ import { useContext, useCallback, useMemo } from 'react';
6
5
  import { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills';
7
6
  import { ComboBoxContext } from '../../ComboBoxCTX.js';
8
7
  import { useGroupPills } from './useGroupPills.js';
@@ -16,17 +15,29 @@ const MultiSelectedValuesContainer = () => {
16
15
  onChange,
17
16
  innerRef
18
17
  },
19
- pillGroupRef
18
+ pillGroupRef,
19
+ showPopover,
20
+ setShowPopover
20
21
  } = useContext(ComboBoxContext);
21
22
  const multiSelectedValue = selectedValues;
22
23
  const correctPillsToShow = useGroupPills() || 1;
23
- const pills = useMemo(() => /*#__PURE__*/_jsx(Grid, {
24
+ const handleClickOnPills = useCallback(e => {
25
+ if (!showPopover) {
26
+ var _innerRef$current;
27
+
28
+ setShowPopover(true);
29
+ (_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.focus();
30
+ }
31
+
32
+ e.stopPropagation();
33
+ }, [setShowPopover, innerRef, showPopover]);
34
+ const pills = useMemo(() => /*#__PURE__*/_jsx("div", {
24
35
  style: {
25
36
  width: 'max-content'
26
37
  },
27
- onClick: e => e.stopPropagation(),
28
38
  "data-testid": ComboboxDataTestid.SELECTED_VALUES
29
39
  }, void 0, /*#__PURE__*/_jsx(DSPillGroupV2, {
40
+ onClick: handleClickOnPills,
30
41
  innerRef: pillGroupRef
31
42
  }, void 0, multiSelectedValue.length > 0 && multiSelectedValue.slice(0, correctPillsToShow).map(option => /*#__PURE__*/_jsx(DSPillV2, {
32
43
  size: "s",
@@ -34,17 +45,17 @@ const MultiSelectedValuesContainer = () => {
34
45
  type: "removable",
35
46
  tabIndex: -1,
36
47
  onRemove: () => {
37
- var _innerRef$current;
48
+ var _innerRef$current2;
38
49
 
39
50
  onChange(option);
40
- (_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.focus();
51
+ (_innerRef$current2 = innerRef.current) === null || _innerRef$current2 === void 0 ? void 0 : _innerRef$current2.focus();
41
52
  }
42
53
  }, option.value)), multiSelectedValue.length > 0 && correctPillsToShow !== multiSelectedValue.length && /*#__PURE__*/_jsx(DSPillV2, {
43
54
  size: "s",
44
55
  labelTruncated: false,
45
56
  label: "+".concat(multiSelectedValue.length - correctPillsToShow),
46
57
  type: "value"
47
- }, "grouped"))), [pillGroupRef, innerRef, onChange, multiSelectedValue, correctPillsToShow]);
58
+ }, "grouped"))), [pillGroupRef, innerRef, onChange, handleClickOnPills, multiSelectedValue, correctPillsToShow]);
48
59
  return /*#__PURE__*/jsx(Fragment, {
49
60
  children: pills
50
61
  });
@@ -11,7 +11,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
11
11
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
12
12
  const ComboboxPropTypes = _objectSpread(_objectSpread({}, globalAttributesPropTypes), {}, {
13
13
  placeholder: PropTypes.string.description('input s placeholder value').defaultValue(''),
14
- options: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).description('List of options').defaultValue([]),
14
+ options: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired.description('List of options').defaultValue([]),
15
15
  selectedValues: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]).description('Array of option or single option selected'),
16
16
  disabled: PropTypes.bool.description('wheter or not the input is disabled').defaultValue('false'),
17
17
  autoFocus: PropTypes.bool.description('Whether the combo box uses auto focus or not').defaultValue('false'),
@@ -24,7 +24,6 @@ const useKeyboardNavigation = () => {
24
24
  },
25
25
  setShowPopover,
26
26
  showPopover,
27
- setShowSelectedValue,
28
27
  focusOptionIdx,
29
28
  setCurrentOption,
30
29
  scrollOptionIntoView,
@@ -40,13 +39,12 @@ const useKeyboardNavigation = () => {
40
39
  } else {
41
40
  onFilter('');
42
41
  if (innerRef.current) innerRef.current.value = '';
43
- setShowSelectedValue(true);
44
42
  }
45
43
 
46
44
  const selectedOption = options.find(item => item.dsId === focusOptionIdx);
47
45
  onChange(selectedOption);
48
46
  if (!selectedOption.disabled && !multiple) setShowPopover(false);
49
- }, [multiple, options, focusOptionIdx, setShowPopover, onFilter, innerRef, setShowSelectedValue, onChange]);
47
+ }, [multiple, options, focusOptionIdx, setShowPopover, onFilter, innerRef, onChange]);
50
48
  const onInputKeyDown = useCallback(e => {
51
49
  const targetElement = e.target; // =============================================================================
52
50
  // CUSTOM KEYS
@@ -146,7 +144,6 @@ const useKeyboardNavigation = () => {
146
144
  }
147
145
 
148
146
  onFilter('');
149
- setShowSelectedValue(true);
150
147
  }
151
148
 
152
149
  if (e.key === 'Tab' && !inline && !withoutPortal) {
@@ -161,7 +158,7 @@ const useKeyboardNavigation = () => {
161
158
  } // if (e.key === 'Tab' && multiple) {
162
159
  // }
163
160
 
164
- }, [currentItemIndex, options, currentItem, innerRef, multiple, showPopover, selectedValues, inline, scrollOptionIntoView, onKeyDown, onSelectAll, onChange, onCreate, onFilter, setCurrentOption, setShowPopover, setShowSelectedValue, selectOption, onCancel, selectAllCheckboxRef, toggleSelectionButtonRef, withoutPortal]);
161
+ }, [currentItemIndex, options, currentItem, innerRef, multiple, showPopover, selectedValues, inline, scrollOptionIntoView, onKeyDown, onSelectAll, onChange, onCreate, onFilter, setCurrentOption, setShowPopover, selectOption, onCancel, selectAllCheckboxRef, toggleSelectionButtonRef, withoutPortal]);
165
162
  return {
166
163
  onInputKeyDown
167
164
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-controlled-form",
3
- "version": "2.3.0-next.8",
3
+ "version": "2.3.0-rc.3",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Controlled Form Controllers",
6
6
  "module": "./esm/index.js",
@@ -431,10 +431,6 @@
431
431
  "import": "./esm/controlled-combobox/parts/multi-selected-values-container/useGroupPills.js",
432
432
  "require": "./cjs/controlled-combobox/parts/multi-selected-values-container/useGroupPills.js"
433
433
  },
434
- "./controlled-combobox/parts/multi-selected-values-container/styled": {
435
- "import": "./esm/controlled-combobox/parts/multi-selected-values-container/styled.js",
436
- "require": "./cjs/controlled-combobox/parts/multi-selected-values-container/styled.js"
437
- },
438
434
  "./controlled-combobox/parts/multi-selected-values-container/MultiSelectedValuesContainer": {
439
435
  "import": "./esm/controlled-combobox/parts/multi-selected-values-container/MultiSelectedValuesContainer.js",
440
436
  "require": "./cjs/controlled-combobox/parts/multi-selected-values-container/MultiSelectedValuesContainer.js"
@@ -479,22 +475,10 @@
479
475
  "import": "./esm/controlled-combobox/parts/header-list/HeaderList.js",
480
476
  "require": "./cjs/controlled-combobox/parts/header-list/HeaderList.js"
481
477
  },
482
- "./controlled-combobox/parts/empty-state/styled": {
483
- "import": "./esm/controlled-combobox/parts/empty-state/styled.js",
484
- "require": "./cjs/controlled-combobox/parts/empty-state/styled.js"
485
- },
486
- "./controlled-combobox/parts/empty-state": {
487
- "import": "./esm/controlled-combobox/parts/empty-state/index.js",
488
- "require": "./cjs/controlled-combobox/parts/empty-state/index.js"
489
- },
490
478
  "./controlled-combobox/parts/dropdown-indicator/styled": {
491
479
  "import": "./esm/controlled-combobox/parts/dropdown-indicator/styled.js",
492
480
  "require": "./cjs/controlled-combobox/parts/dropdown-indicator/styled.js"
493
481
  },
494
- "./controlled-combobox/parts/dropdown-indicator": {
495
- "import": "./esm/controlled-combobox/parts/dropdown-indicator/index.js",
496
- "require": "./cjs/controlled-combobox/parts/dropdown-indicator/index.js"
497
- },
498
482
  "./controlled-combobox/parts/dropdown-indicator/DropdownIndicator": {
499
483
  "import": "./esm/controlled-combobox/parts/dropdown-indicator/DropdownIndicator.js",
500
484
  "require": "./cjs/controlled-combobox/parts/dropdown-indicator/DropdownIndicator.js"
@@ -591,9 +575,9 @@
591
575
  "import": "./esm/controlled-checkbox/styles.js",
592
576
  "require": "./cjs/controlled-checkbox/styles.js"
593
577
  },
594
- "./controlled-checkbox/propTypes": {
595
- "import": "./esm/controlled-checkbox/propTypes.js",
596
- "require": "./cjs/controlled-checkbox/propTypes.js"
578
+ "./controlled-checkbox/react-desc-prop-types": {
579
+ "import": "./esm/controlled-checkbox/react-desc-prop-types.js",
580
+ "require": "./cjs/controlled-checkbox/react-desc-prop-types.js"
597
581
  },
598
582
  "./controlled-checkbox": {
599
583
  "import": "./esm/controlled-checkbox/index.js",
@@ -736,15 +720,15 @@
736
720
  "build": "node ../../scripts/build/build.js"
737
721
  },
738
722
  "dependencies": {
739
- "@elliemae/ds-button": "2.3.0-next.8",
740
- "@elliemae/ds-form-layout-blocks": "2.3.0-next.8",
741
- "@elliemae/ds-grid": "2.3.0-next.8",
742
- "@elliemae/ds-icon": "2.3.0-next.8",
743
- "@elliemae/ds-icons": "2.3.0-next.8",
744
- "@elliemae/ds-props-helpers": "2.3.0-next.8",
745
- "@elliemae/ds-system": "2.3.0-next.8",
746
- "@elliemae/ds-tooltip": "2.3.0-next.8",
747
- "@elliemae/ds-truncated-tooltip-text": "2.3.0-next.8",
723
+ "@elliemae/ds-button": "2.3.0-rc.3",
724
+ "@elliemae/ds-form-layout-blocks": "2.3.0-rc.3",
725
+ "@elliemae/ds-grid": "2.3.0-rc.3",
726
+ "@elliemae/ds-icon": "2.3.0-rc.3",
727
+ "@elliemae/ds-icons": "2.3.0-rc.3",
728
+ "@elliemae/ds-props-helpers": "2.3.0-rc.3",
729
+ "@elliemae/ds-system": "2.3.0-rc.3",
730
+ "@elliemae/ds-tooltip": "2.3.0-rc.3",
731
+ "@elliemae/ds-truncated-tooltip-text": "2.3.0-rc.3",
748
732
  "prop-types": "~15.7.2",
749
733
  "react-desc": "~4.1.3",
750
734
  "react-popper": "~2.2.5",
@@ -1,71 +1,5 @@
1
- /// <reference path="../../../../../shared/typings/react-desc.d.ts" />
2
- /// <reference types="react" />
3
- import type { DSControlledCheckboxPropsT } from './index.d';
4
- declare const DSControlledCheckbox: {
5
- (props: DSControlledCheckboxPropsT): JSX.Element;
6
- propTypes: {
7
- checked: any;
8
- value: {
9
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
10
- deprecated: import("react-desc").PropTypesDescValidator;
11
- };
12
- isRequired: import("react-desc").PropTypesDescValue;
13
- };
14
- name: any;
15
- label: {
16
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
17
- deprecated: import("react-desc").PropTypesDescValidator;
18
- };
19
- isRequired: import("react-desc").PropTypesDescValue;
20
- };
21
- id: any;
22
- readOnly: {
23
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
24
- deprecated: import("react-desc").PropTypesDescValidator;
25
- };
26
- isRequired: import("react-desc").PropTypesDescValue;
27
- };
28
- hasError: {
29
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
30
- deprecated: import("react-desc").PropTypesDescValidator;
31
- };
32
- isRequired: import("react-desc").PropTypesDescValue;
33
- };
34
- disabled: {
35
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
36
- deprecated: import("react-desc").PropTypesDescValidator;
37
- };
38
- isRequired: import("react-desc").PropTypesDescValue;
39
- };
40
- ariaControls: {
41
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
42
- deprecated: import("react-desc").PropTypesDescValidator;
43
- };
44
- isRequired: import("react-desc").PropTypesDescValue;
45
- };
46
- ariaLabel: {
47
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
48
- deprecated: import("react-desc").PropTypesDescValidator;
49
- };
50
- isRequired: import("react-desc").PropTypesDescValue;
51
- };
52
- innerRef: {
53
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
54
- deprecated: import("react-desc").PropTypesDescValidator;
55
- };
56
- isRequired: import("react-desc").PropTypesDescValue;
57
- };
58
- autoFocus: {
59
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
60
- deprecated: import("react-desc").PropTypesDescValidator;
61
- };
62
- isRequired: import("react-desc").PropTypesDescValue;
63
- };
64
- };
65
- };
66
- declare const DSControlledCheckboxWithSchema: {
67
- (props?: unknown): JSX.Element;
68
- propTypes: unknown;
69
- toTypescript: () => import("react-desc").TypescriptSchema;
70
- };
1
+ import React from 'react';
2
+ import { DSControlledCheckboxT } from './react-desc-prop-types';
3
+ declare const DSControlledCheckbox: React.ComponentType<DSControlledCheckboxT.Props>;
4
+ declare const DSControlledCheckboxWithSchema: any;
71
5
  export { DSControlledCheckbox, DSControlledCheckboxWithSchema };
@@ -1,2 +1,2 @@
1
- import { DSControlledCheckboxPropsT } from '../index.d';
2
- export declare const useValidateProps: (props: DSControlledCheckboxPropsT, propTypes: unknown) => void;
1
+ import { DSControlledCheckboxT } from '../react-desc-prop-types';
2
+ export declare const useValidateProps: (props: DSControlledCheckboxT.Props, propTypes: unknown) => void;
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { GlobalAttributesT } from '@elliemae/ds-props-helpers';
3
+ export declare namespace DSControlledCheckboxT {
4
+ interface DefaultProps {
5
+ checked: boolean | 'mixed';
6
+ tabIndex?: number;
7
+ hasError?: boolean;
8
+ 'data-testid'?: string;
9
+ }
10
+ interface OptionalProps {
11
+ innerRef: React.RefObject<HTMLInputElement> | React.LegacyRef<HTMLInputElement>;
12
+ }
13
+ interface LegacyAriaProps {
14
+ ariaControls: string;
15
+ ariaLabel: string;
16
+ }
17
+ interface Props extends DefaultProps, OptionalProps, Omit<GlobalAttributesT, 'checked'>, LegacyAriaProps {
18
+ }
19
+ interface StyledCheckBoxT {
20
+ checked: boolean | 'mixed';
21
+ readOnly?: boolean;
22
+ hasError?: boolean;
23
+ disabled?: boolean;
24
+ }
25
+ interface StyledLabelT {
26
+ disabled?: boolean;
27
+ readOnly?: boolean;
28
+ checked: boolean | 'mixed';
29
+ }
30
+ }
31
+ export declare const defaultProps: Partial<DSControlledCheckboxT.Props>;
32
+ export declare const propTypes: any;
@@ -1,5 +1,5 @@
1
- import { StyledCheckBoxT, StyledLabelT } from './index.d';
1
+ import { DSControlledCheckboxT } from './react-desc-prop-types';
2
2
  export declare const StyledContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
3
- export declare const StyledCheckBox: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, StyledCheckBoxT, never>;
3
+ export declare const StyledCheckBox: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, DSControlledCheckboxT.StyledCheckBoxT, never>;
4
4
  export declare const StyledInput: import("styled-components").StyledComponent<"input", import("styled-components").DefaultTheme, {}, never>;
5
- export declare const StyledLabel: import("styled-components").StyledComponent<"label", import("styled-components").DefaultTheme, StyledLabelT, never>;
5
+ export declare const StyledLabel: import("styled-components").StyledComponent<"label", import("styled-components").DefaultTheme, DSControlledCheckboxT.StyledLabelT, never>;
@@ -1,2 +1,2 @@
1
1
  /// <reference types="react" />
2
- export declare function setMultipleRefs<T = unknown>(refs: Array<React.MutableRefObject<T> | React.LegacyRef<T>>): React.RefCallback<T>;
2
+ export declare function setMultipleRefs<T = unknown>(refs: Array<React.RefObject<T> | React.LegacyRef<T>>): React.RefCallback<T>;
@@ -1,4 +1,4 @@
1
1
  import type { Theme } from '@elliemae/pui-theme';
2
- export declare const handleCheckMarkColor: ({ colors }: Theme, disabled: boolean, readOnly: boolean, hasError: boolean, checked: boolean | 'mixed', isHovering: boolean) => string;
3
- export declare const handleCheckmark: (theme: Theme, checked: boolean | 'mixed', disabled: boolean, readOnly: boolean, hasError: boolean, isHovering?: boolean) => string;
4
- export declare const handleBackgroundColor: ({ colors }: Theme, disabled: boolean) => string;
2
+ export declare const handleCheckMarkColor: ({ colors }: Theme, checked: boolean | 'mixed', isHovering: boolean, disabled?: boolean | undefined, readOnly?: boolean | undefined, hasError?: boolean | undefined) => string;
3
+ export declare const handleCheckmark: (theme: Theme, checked: boolean | 'mixed', disabled?: boolean | undefined, readOnly?: boolean | undefined, hasError?: boolean | undefined, isHovering?: boolean) => string;
4
+ export declare const handleBackgroundColor: ({ colors }: Theme, disabled?: boolean | undefined) => string;
@@ -1,3 +1,3 @@
1
1
  import { DSComboboxT } from '../react-desc-prop-types';
2
2
  import { DSComboboxInternalsT } from '../sharedTypes';
3
- export declare const useComboBox: (props: Partial<DSComboboxT.Props>) => DSComboboxInternalsT.ComboBoxContextT;
3
+ export declare const useComboBox: (props: DSComboboxT.Props) => DSComboboxInternalsT.ComboBoxContextT;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  export declare const useOnPillsNavigation: () => {
3
- onKeyDownPills: import("react").KeyboardEventHandler<Element>;
3
+ onKeyDownPills: React.KeyboardEventHandler<HTMLInputElement>;
4
4
  };
@@ -3,7 +3,8 @@ interface UseHeaderListHandlersT {
3
3
  handleKeyDown: (e: React.KeyboardEvent) => void;
4
4
  handleToggle: () => void;
5
5
  handleOnMouseDown: (e: React.MouseEvent) => void;
6
- handleSelectAllCheckboxChange: () => void;
6
+ handleSelectAllCheckboxChange: React.ChangeEventHandler<HTMLInputElement>;
7
+ handleFilterSelectionBtnOnBlur: React.FocusEventHandler<HTMLButtonElement>;
7
8
  checkboxStatus: boolean | 'mixed';
8
9
  }
9
10
  declare const useHeaderListHandlers: () => UseHeaderListHandlersT;
@@ -9,3 +9,4 @@ export declare const StyledVirtualListWrapper: import("styled-components").Style
9
9
  withHeader: boolean;
10
10
  }, never>;
11
11
  export declare const StyledCreatableLabel: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {}, never>;
12
+ export declare const StyledNoResultsWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;