@elliemae/ds-data-table 2.0.0-rc.1 → 2.0.0-rc.13

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 (138) hide show
  1. package/cjs/DataTableSchema.js +21 -12
  2. package/cjs/addons/Editables/TextEditableCell/TextEditableCell.js +16 -0
  3. package/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js +24 -2
  4. package/cjs/addons/Filters/Components/DateRangeFilter/index.js +4 -1
  5. package/cjs/addons/Filters/Components/NumberRangeFilter/index.js +25 -3
  6. package/cjs/addons/Filters/Components/SingleDateFilter/index.js +4 -1
  7. package/cjs/addons/Filters/Components/index.js +0 -2
  8. package/cjs/addons/Filters/index.js +0 -2
  9. package/cjs/configs/usePaginationConfig.js +1 -1
  10. package/cjs/configs/useRowFlattenization.js +3 -3
  11. package/cjs/exported-related/EditableCell.js +13 -7
  12. package/cjs/exported-related/FilterPopover.js +17 -3
  13. package/cjs/exported-related/FilterTypes.js +0 -1
  14. package/cjs/exported-related/Filters/applyOutOfTheBoxFilters.js +0 -2
  15. package/cjs/exported-related/Filters/index.js +0 -2
  16. package/cjs/exported-related/index.js +0 -2
  17. package/cjs/helpers/refs-helpers.js +2 -2
  18. package/cjs/index.js +0 -2
  19. package/cjs/parts/FilterBar/FiltersBar.js +0 -2
  20. package/cjs/parts/FilterBar/components/index.js +0 -2
  21. package/cjs/parts/Filters/index.js +10 -12
  22. package/cjs/parts/Headers/HeaderCellGroup.js +4 -3
  23. package/cjs/parts/Headers/index.js +1 -1
  24. package/cjs/parts/Headers/useHeaderCellHandlers.js +4 -2
  25. package/cjs/parts/HoC/withConditionalDnDColumnContext.js +37 -16
  26. package/cjs/parts/HoC/withConditionalDnDRowContext.js +11 -12
  27. package/cjs/parts/HoC/withConditionalDnDSortableContext.js +1 -1
  28. package/cjs/parts/HoC/withDnDSortableColumnContext.js +5 -19
  29. package/cjs/parts/HoC/withDnDSortableRowContext.js +3 -17
  30. package/cjs/parts/Row.js +10 -10
  31. package/cjs/parts/Rows.js +1 -1
  32. package/cjs/parts/index.js +1 -1
  33. package/cjs/styled.js +18 -13
  34. package/esm/DataTableSchema.js +21 -12
  35. package/esm/addons/Editables/TextEditableCell/TextEditableCell.js +16 -0
  36. package/esm/addons/Filters/Components/CurrencyRangeFilter/index.js +24 -2
  37. package/esm/addons/Filters/Components/DateRangeFilter/index.js +4 -1
  38. package/esm/addons/Filters/Components/NumberRangeFilter/index.js +25 -3
  39. package/esm/addons/Filters/Components/SingleDateFilter/index.js +4 -1
  40. package/esm/addons/Filters/Components/index.js +0 -1
  41. package/esm/addons/Filters/index.js +0 -1
  42. package/esm/configs/usePaginationConfig.js +1 -1
  43. package/esm/configs/useRowFlattenization.js +3 -3
  44. package/esm/exported-related/EditableCell.js +13 -7
  45. package/esm/exported-related/FilterPopover.js +17 -3
  46. package/esm/exported-related/FilterTypes.js +0 -1
  47. package/esm/exported-related/Filters/applyOutOfTheBoxFilters.js +0 -2
  48. package/esm/exported-related/Filters/index.js +0 -1
  49. package/esm/exported-related/index.js +0 -1
  50. package/esm/helpers/refs-helpers.js +2 -2
  51. package/esm/index.js +0 -1
  52. package/esm/parts/FilterBar/FiltersBar.js +0 -2
  53. package/esm/parts/FilterBar/components/index.js +0 -1
  54. package/esm/parts/Filters/index.js +0 -2
  55. package/esm/parts/Headers/HeaderCellGroup.js +4 -4
  56. package/esm/parts/Headers/index.js +2 -2
  57. package/esm/parts/Headers/useHeaderCellHandlers.js +4 -2
  58. package/esm/parts/HoC/withConditionalDnDColumnContext.js +38 -17
  59. package/esm/parts/HoC/withConditionalDnDRowContext.js +12 -13
  60. package/esm/parts/HoC/withConditionalDnDSortableContext.js +1 -1
  61. package/esm/parts/HoC/withDnDSortableColumnContext.js +6 -20
  62. package/esm/parts/HoC/withDnDSortableRowContext.js +4 -18
  63. package/esm/parts/Row.js +7 -10
  64. package/esm/styled.js +18 -13
  65. package/package.json +26 -103
  66. package/types/DataTable.d.ts +245 -43
  67. package/types/DataTableSchema.d.ts +245 -43
  68. package/types/addons/Filters/Components/SelectFilter/components.d.ts +6 -6
  69. package/types/addons/Filters/Components/index.d.ts +0 -1
  70. package/types/exported-related/FilterTypes.d.ts +0 -1
  71. package/types/exported-related/Filters/index.d.ts +0 -1
  72. package/types/helpers/refs-helpers.d.ts +1 -1
  73. package/types/parts/FilterBar/components/index.d.ts +0 -1
  74. package/types/parts/FilterBar/styled.d.ts +165 -30
  75. package/types/parts/Headers/HeaderCellGroup.d.ts +4 -3
  76. package/types/parts/Row.d.ts +2 -1
  77. package/types/styled.d.ts +21 -19
  78. package/types/types/props.d.ts +2 -2
  79. package/cjs/addons/Filters/Components/TextInputFilter/index.js +0 -92
  80. package/cjs/exported-related/Filters/textFilterFn.js +0 -14
  81. package/cjs/helpers/dndkit/hierarchy/customCollisionDetection.js +0 -76
  82. package/cjs/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.js +0 -141
  83. package/cjs/helpers/dndkit/hierarchy/types.js +0 -2
  84. package/cjs/helpers/dndkit/hierarchy/useHierarchyActionHandlers.js +0 -55
  85. package/cjs/helpers/dndkit/hierarchy/useHierarchyAnnouncements.js +0 -36
  86. package/cjs/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.js +0 -109
  87. package/cjs/helpers/dndkit/hierarchy/useHierarchyPreviewHandlers.js +0 -87
  88. package/cjs/helpers/dndkit/tree/customCollisionDetection.js +0 -98
  89. package/cjs/helpers/dndkit/tree/getTreeKeyboardCoordinates.js +0 -139
  90. package/cjs/helpers/dndkit/tree/types.js +0 -2
  91. package/cjs/helpers/dndkit/tree/useTreeActionHandlers.js +0 -75
  92. package/cjs/helpers/dndkit/tree/useTreeAnnouncements.js +0 -55
  93. package/cjs/helpers/dndkit/tree/useTreeDndkitConfig.js +0 -139
  94. package/cjs/helpers/dndkit/tree/useTreePreviewHandlers.js +0 -54
  95. package/cjs/helpers/dndkit/types.js +0 -2
  96. package/cjs/helpers/dndkit/utilities.js +0 -52
  97. package/cjs/parts/FilterBar/components/TextPill.js +0 -42
  98. package/cjs/parts/HoC/DragOverlayContext.js +0 -11
  99. package/esm/addons/Filters/Components/TextInputFilter/index.js +0 -84
  100. package/esm/exported-related/Filters/textFilterFn.js +0 -10
  101. package/esm/helpers/dndkit/hierarchy/customCollisionDetection.js +0 -72
  102. package/esm/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.js +0 -133
  103. package/esm/helpers/dndkit/hierarchy/types.js +0 -1
  104. package/esm/helpers/dndkit/hierarchy/useHierarchyActionHandlers.js +0 -51
  105. package/esm/helpers/dndkit/hierarchy/useHierarchyAnnouncements.js +0 -32
  106. package/esm/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.js +0 -103
  107. package/esm/helpers/dndkit/hierarchy/useHierarchyPreviewHandlers.js +0 -83
  108. package/esm/helpers/dndkit/tree/customCollisionDetection.js +0 -94
  109. package/esm/helpers/dndkit/tree/getTreeKeyboardCoordinates.js +0 -131
  110. package/esm/helpers/dndkit/tree/types.js +0 -1
  111. package/esm/helpers/dndkit/tree/useTreeActionHandlers.js +0 -71
  112. package/esm/helpers/dndkit/tree/useTreeAnnouncements.js +0 -51
  113. package/esm/helpers/dndkit/tree/useTreeDndkitConfig.js +0 -133
  114. package/esm/helpers/dndkit/tree/useTreePreviewHandlers.js +0 -50
  115. package/esm/helpers/dndkit/types.js +0 -1
  116. package/esm/helpers/dndkit/utilities.js +0 -47
  117. package/esm/parts/FilterBar/components/TextPill.js +0 -34
  118. package/esm/parts/HoC/DragOverlayContext.js +0 -7
  119. package/types/addons/Filters/Components/TextInputFilter/index.d.ts +0 -3
  120. package/types/exported-related/Filters/textFilterFn.d.ts +0 -2
  121. package/types/helpers/dndkit/hierarchy/customCollisionDetection.d.ts +0 -3
  122. package/types/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.d.ts +0 -3
  123. package/types/helpers/dndkit/hierarchy/types.d.ts +0 -66
  124. package/types/helpers/dndkit/hierarchy/useHierarchyActionHandlers.d.ts +0 -2
  125. package/types/helpers/dndkit/hierarchy/useHierarchyAnnouncements.d.ts +0 -3
  126. package/types/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.d.ts +0 -3
  127. package/types/helpers/dndkit/hierarchy/useHierarchyPreviewHandlers.d.ts +0 -2
  128. package/types/helpers/dndkit/tree/customCollisionDetection.d.ts +0 -4
  129. package/types/helpers/dndkit/tree/getTreeKeyboardCoordinates.d.ts +0 -3
  130. package/types/helpers/dndkit/tree/types.d.ts +0 -83
  131. package/types/helpers/dndkit/tree/useTreeActionHandlers.d.ts +0 -2
  132. package/types/helpers/dndkit/tree/useTreeAnnouncements.d.ts +0 -4
  133. package/types/helpers/dndkit/tree/useTreeDndkitConfig.d.ts +0 -3
  134. package/types/helpers/dndkit/tree/useTreePreviewHandlers.d.ts +0 -2
  135. package/types/helpers/dndkit/types.d.ts +0 -20
  136. package/types/helpers/dndkit/utilities.d.ts +0 -7
  137. package/types/parts/FilterBar/components/TextPill.d.ts +0 -2
  138. package/types/parts/HoC/DragOverlayContext.d.ts +0 -6
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var reactDesc = require('react-desc');
6
6
 
7
7
  /* eslint-disable max-lines */
8
- const outOfTheBoxFilterType = reactDesc.PropTypes.oneOf(['ds-filter-select', 'ds-filter-multi-select', 'ds-filter-text', 'ds-filter-single-date', 'ds-filter-date-range', 'ds-filter-number-range']);
8
+ const outOfTheBoxFilterType = reactDesc.PropTypes.oneOf(['ds-filter-select', 'ds-filter-multi-select', 'ds-filter-single-date', 'ds-filter-date-range', 'ds-filter-number-range']);
9
9
  const textWrappingType = reactDesc.PropTypes.oneOf(['wrap', 'wrap-all', 'truncate']);
10
10
  const rowVariantType = reactDesc.PropTypes.oneOf(['ds_header_group_row', 'ds_primary_row', 'ds_secondary_row']);
11
11
  const columnPropTypes = {
@@ -68,20 +68,29 @@ const DataTableSchema = {
68
68
  })).description('Any extra option you want in the dropdownmenu of the filter bar')
69
69
  }).description('Props for the filter bar'),
70
70
  onFiltersChange: reactDesc.PropTypes.func.description('Function invoked when filters change'),
71
- pagination: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.bool, reactDesc.PropTypes.shape({
72
- pageIndex: reactDesc.PropTypes.number.description('Index of the current page, starting from 1'),
73
- canPreviousPage: reactDesc.PropTypes.bool.description('Whether the previous button is disabled or not'),
74
- canNextPage: reactDesc.PropTypes.bool.description('Whether the next button is disabled or not'),
75
- pageSize: reactDesc.PropTypes.number.description('The current page size'),
76
- perPageOptions: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.number).description('The available options for page size'),
77
- onPageChange: reactDesc.PropTypes.func.description('Function invoked when the page is changed'),
78
- onPreviousPage: reactDesc.PropTypes.func.description('Function invoked when the previous button is pressed'),
79
- onNextPage: reactDesc.PropTypes.func.description('Function invoked when next button is pressed'),
80
- pageCount: reactDesc.PropTypes.number.description('How many pages are there. By default it will be calculated based on the ammount of rows you have'),
71
+ pagination: reactDesc.PropTypes.shape({
72
+ pageCount: reactDesc.PropTypes.number.description('How many pages are there'),
73
+ pageIndex: reactDesc.PropTypes.number.description('Index of the current page, starting from 1').defaultValue(1),
74
+ canPreviousPage: reactDesc.PropTypes.bool.description('Whether the previous button is disabled or not').defaultValue(true),
75
+ canNextPage: reactDesc.PropTypes.bool.description('Whether the next button is disabled or not').defaultValue(true),
76
+ pageSize: reactDesc.PropTypes.number.description('The current page size').defaultValue(10),
81
77
  showPerPageSelector: reactDesc.PropTypes.bool.description('Whether to show the page selector').defaultValue(true),
78
+ perPageOptions: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.number, reactDesc.PropTypes.shape({
79
+ dsId: reactDesc.PropTypes.string,
80
+ value: reactDesc.PropTypes.number,
81
+ label: reactDesc.PropTypes.string,
82
+ type: reactDesc.PropTypes.oneOf(['single'])
83
+ })])).description('The available options for page size').defaultValue([10]),
84
+ perPageStep: reactDesc.PropTypes.number.description('Step for the per page options').defaultValue(5),
85
+ minPerPage: reactDesc.PropTypes.number.description('Step for the per page options').defaultValue(0),
86
+ maxPerPage: reactDesc.PropTypes.number.description('Step for the per page options').defaultValue(100),
87
+ onPageSizeChange: reactDesc.PropTypes.func.description('Function invoked when the page size changes').defaultValue(() => null),
88
+ onPreviousPage: reactDesc.PropTypes.func.description('Function invoked when the previous button is pressed').defaultValue(() => null),
89
+ onPageChange: reactDesc.PropTypes.func.description('Function invoked when the page changes').defaultValue(() => null),
90
+ onNextPage: reactDesc.PropTypes.func.description('Function invoked when next button is pressed').defaultValue(() => null),
82
91
  pageDetails: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.string).description('Details to provide for each page').defaultValue([]),
83
92
  pageDetailsTitle: reactDesc.PropTypes.string.description('The title of the details (usually a column of your dataset)').defaultValue('')
84
- })]).description('Object containing the data for the pagination'),
93
+ }).description('Object containing the data for the pagination'),
85
94
  colsLayoutStyle: reactDesc.PropTypes.oneOf(['auto', 'fixed']).description('Whether the datatable fills its container or not'),
86
95
  hiddenColumns: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.string).description('IDs of columns not to render'),
87
96
  dragAndDropRows: reactDesc.PropTypes.bool.description('Whether to turn on the d&d feature for the rows').defaultValue(false),
@@ -79,15 +79,31 @@ const TextEditableCell = props => {
79
79
  rowIndex
80
80
  });
81
81
  }, [value, onCellValueChange, cell.column.id, cell.row.index]);
82
+ const handleOnKeyDown = React.useCallback(e => {
83
+ if (e.code === 'Enter') {
84
+ cell.ref.current.focus(); // will exec on blur callback from input and save new value
85
+ }
86
+
87
+ if (e.code === 'Escape') {
88
+ setValue(cell.value);
89
+ const auxRef = cell.ref.current; // this prevent the on blur
90
+
91
+ setTimeout(() => {
92
+ auxRef.focus();
93
+ });
94
+ }
95
+ }, [cell]);
82
96
  return /*#__PURE__*/_jsx__default["default"](EditableCell.EditableCell, {
83
97
  StandardRender: DefaultCellRender,
84
98
  EditableRenderer: /*#__PURE__*/_jsx__default["default"](StyledInput, {
85
99
  value: value,
100
+ onKeyDown: handleOnKeyDown,
86
101
  onChange: handleOnChange,
87
102
  onBlur: handleOnBlur,
88
103
  autoFocus: true
89
104
  }),
90
105
  cell: cell,
106
+ setValue: setValue,
91
107
  isRowSelected: isRowSelected
92
108
  });
93
109
  };
@@ -41,6 +41,8 @@ require('../../../../exported-related/Filters/applyOutOfTheBoxFilters.js');
41
41
  require('moment');
42
42
  require('core-js/modules/esnext.async-iterator.some.js');
43
43
  require('core-js/modules/esnext.iterator.some.js');
44
+ require('../../../../redux/reducers/headersReducers/headersReducers.js');
45
+ var useDispatchHeadersActions = require('../../../../redux/reducers/headersReducers/useDispatchHeadersActions.js');
44
46
 
45
47
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
46
48
 
@@ -92,6 +94,20 @@ const CurrencyRangeFilter = props => {
92
94
  onValueChange(FilterTypes.FILTER_TYPES.CURRENCY_RANGE, nextValue);
93
95
  };
94
96
 
97
+ const {
98
+ patchHeader
99
+ } = useDispatchHeadersActions.useDispatchHeadersActions(); // workaround to close menu with esc key since DSInputMask has stoppropagation on key down
100
+
101
+ const closePopover = e => {
102
+ if (e.code === 'Escape') {
103
+ patchHeader(column.id, {
104
+ hideFilterMenu: true,
105
+ hideFilterButton: false
106
+ });
107
+ innerRef.current.focus();
108
+ }
109
+ };
110
+
95
111
  const idPreffix = 'datatable-currency-range';
96
112
  return /*#__PURE__*/_jsx__default["default"](FilterPopover.FilterPopover, {
97
113
  reduxHeader: reduxHeader,
@@ -116,7 +132,10 @@ const CurrencyRangeFilter = props => {
116
132
  onChange: handleFromChange,
117
133
  placeholder: "0.00",
118
134
  mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number),
119
- autoFocus: true
135
+ autoFocus: true,
136
+ onKeyDown: e => {
137
+ closePopover(e);
138
+ }
120
139
  })), /*#__PURE__*/_jsx__default["default"](dsFormLayoutBlocks.DSFormLayoutBlockItem, {
121
140
  label: "Max",
122
141
  inputID: "".concat(idPreffix, "-max-").concat(column.id)
@@ -130,7 +149,10 @@ const CurrencyRangeFilter = props => {
130
149
  value: "".concat((_filterValue$to = filterValue === null || filterValue === void 0 ? void 0 : filterValue.to) !== null && _filterValue$to !== void 0 ? _filterValue$to : ''),
131
150
  onChange: handleToChange,
132
151
  placeholder: "0.00",
133
- mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number)
152
+ mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number),
153
+ onKeyDown: e => {
154
+ closePopover(e);
155
+ }
134
156
  }))),
135
157
  triggerIcon: _SearchXsmall || (_SearchXsmall = /*#__PURE__*/_jsx__default["default"](dsIcons.SearchXsmall, {})),
136
158
  customStyles: {
@@ -89,7 +89,10 @@ const DateRangeFilter = props => {
89
89
  width: "260px",
90
90
  "data-testid": constants.DATA_TESTID.DATA_TABLE_DATE_RANGE_CONTROLLER
91
91
  }, void 0, /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
92
- p: "xxs"
92
+ p: "xxs",
93
+ style: {
94
+ background: 'white'
95
+ }
93
96
  }, void 0, /*#__PURE__*/_jsx__default["default"](dsControlledForm.DSControlledDateRangePicker, {
94
97
  fromDate: startDate,
95
98
  onFromDateChange: setStartDate,
@@ -41,6 +41,8 @@ require('../../../../exported-related/Filters/applyOutOfTheBoxFilters.js');
41
41
  require('moment');
42
42
  require('core-js/modules/esnext.async-iterator.some.js');
43
43
  require('core-js/modules/esnext.iterator.some.js');
44
+ require('../../../../redux/reducers/headersReducers/headersReducers.js');
45
+ var useDispatchHeadersActions = require('../../../../redux/reducers/headersReducers/useDispatchHeadersActions.js');
44
46
 
45
47
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
46
48
 
@@ -95,13 +97,27 @@ const NumberRangeFilter = props => {
95
97
  onValueChange(FilterTypes.FILTER_TYPES.CURRENCY_RANGE, nextValue);
96
98
  };
97
99
 
100
+ const {
101
+ patchHeader
102
+ } = useDispatchHeadersActions.useDispatchHeadersActions(); // workaround to close menu with esc key since DSInputMask has stoppropagation on key down
103
+
104
+ const closePopover = e => {
105
+ if (e.code === 'Escape') {
106
+ patchHeader(column.id, {
107
+ hideFilterMenu: true,
108
+ hideFilterButton: false
109
+ });
110
+ innerRef.current.focus();
111
+ }
112
+ };
113
+
98
114
  const idPreffix = 'datatable-number-range';
99
115
  return /*#__PURE__*/_jsx__default["default"](FilterPopover.FilterPopover, {
100
116
  reduxHeader: reduxHeader,
101
117
  column: column,
102
118
  columnId: column.id,
103
119
  menuContent: /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
104
- "data-testid": constants.DATA_TESTID.DATA_TABLE_CURRENCY_RANGE_CONTROLLER,
120
+ "data-testid": constants.DATA_TESTID.DATA_TABLE_NUMBER_RANGE_CONTROLLER,
105
121
  gutter: "xxxs",
106
122
  padding: "xxs",
107
123
  cols: ['auto', 'auto']
@@ -119,7 +135,10 @@ const NumberRangeFilter = props => {
119
135
  onChange: handleFromChange,
120
136
  placeholder: "0",
121
137
  mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number),
122
- autoFocus: true
138
+ autoFocus: true,
139
+ onKeyDown: e => {
140
+ closePopover(e);
141
+ }
123
142
  })), /*#__PURE__*/_jsx__default["default"](dsFormLayoutBlocks.DSFormLayoutBlockItem, {
124
143
  label: "High",
125
144
  inputID: "".concat(idPreffix, "-high-").concat(column.id)
@@ -133,7 +152,10 @@ const NumberRangeFilter = props => {
133
152
  value: "".concat((_filterValue$to = filterValue === null || filterValue === void 0 ? void 0 : filterValue.to) !== null && _filterValue$to !== void 0 ? _filterValue$to : ''),
134
153
  onChange: handleToChange,
135
154
  placeholder: "0",
136
- mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number)
155
+ mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number),
156
+ onKeyDown: e => {
157
+ closePopover(e);
158
+ }
137
159
  }))),
138
160
  triggerIcon: _SearchXsmall || (_SearchXsmall = /*#__PURE__*/_jsx__default["default"](dsIcons.SearchXsmall, {})),
139
161
  customStyles: {
@@ -79,7 +79,10 @@ const SingleDateFilter = props => {
79
79
  "data-testid": constants.DATA_TESTID.DATA_TABLE_SINGLE_DATE_CONTROLLER,
80
80
  width: "260px"
81
81
  }, void 0, /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
82
- p: "xxs"
82
+ p: "xxs",
83
+ style: {
84
+ background: 'white'
85
+ }
83
86
  }, void 0, /*#__PURE__*/_jsx__default["default"](dsControlledForm.DSControlledDateTimePicker, {
84
87
  date: date,
85
88
  onDateChange: setDate,
@@ -9,7 +9,6 @@ var index$3 = require('./CurrencyRangeFilter/index.js');
9
9
  var SingleSelectFilter = require('./SelectFilter/SingleSelectFilter.js');
10
10
  var MultiSelectFilter = require('./SelectFilter/MultiSelectFilter.js');
11
11
  var index$4 = require('./SingleDateFilter/index.js');
12
- var index$5 = require('./TextInputFilter/index.js');
13
12
 
14
13
 
15
14
 
@@ -20,4 +19,3 @@ exports.CurrencyRangeFilter = index$3.CurrencyRangeFilter;
20
19
  exports.SingleSelectFilter = SingleSelectFilter.SingleSelectFilter;
21
20
  exports.MultiSelectFilter = MultiSelectFilter.MultiSelectFilter;
22
21
  exports.SingleDateFilter = index$4.SingleDateFilter;
23
- exports.TextInputFilter = index$5.TextInputFilter;
@@ -9,7 +9,6 @@ var index$3 = require('./Components/CurrencyRangeFilter/index.js');
9
9
  var SingleSelectFilter = require('./Components/SelectFilter/SingleSelectFilter.js');
10
10
  var MultiSelectFilter = require('./Components/SelectFilter/MultiSelectFilter.js');
11
11
  var index$4 = require('./Components/SingleDateFilter/index.js');
12
- var index$5 = require('./Components/TextInputFilter/index.js');
13
12
 
14
13
 
15
14
 
@@ -20,4 +19,3 @@ exports.CurrencyRangeFilter = index$3.CurrencyRangeFilter;
20
19
  exports.SingleSelectFilter = SingleSelectFilter.SingleSelectFilter;
21
20
  exports.MultiSelectFilter = MultiSelectFilter.MultiSelectFilter;
22
21
  exports.SingleDateFilter = index$4.SingleDateFilter;
23
- exports.TextInputFilter = index$5.TextInputFilter;
@@ -24,7 +24,7 @@ const usePaginationConfig = (props, flattenedData) => {
24
24
  onPreviousPage = emptyFunc,
25
25
  onNextPage = emptyFunc,
26
26
  onPageChange = emptyFunc,
27
- pageCount = Math.floor(flattenedData.length / pageSize),
27
+ pageCount = Math.ceil(flattenedData.length / pageSize),
28
28
  perPageStep = 5,
29
29
  minPerPage = 0,
30
30
  maxPerPage = 100,
@@ -25,7 +25,7 @@ const flatten = function (data, expandedRows, uniqueRowAccessor) {
25
25
  const id = (parentId ? "".concat(parentId, ".") : '') + index.toString();
26
26
  const uid = getIdFromUniqueRowAccessor.getIdFromUniqueRowAccessor(uniqueRowAccessor, {
27
27
  id,
28
- original: row
28
+ original: row !== null && row !== void 0 ? row : {}
29
29
  });
30
30
  const isExpanded = expandedRows[uid];
31
31
  const rowToPush = {
@@ -37,11 +37,11 @@ const flatten = function (data, expandedRows, uniqueRowAccessor) {
37
37
  parentIndex,
38
38
  depth,
39
39
  isExpanded,
40
- original: row
40
+ original: row !== null && row !== void 0 ? row : {}
41
41
  };
42
42
  result.push(rowToPush); // If we have subrows and we are expanded
43
43
 
44
- if (row.subRows && expandedRows[uid] && depth <= maxDepth) {
44
+ if (row !== null && row !== void 0 && row.subRows && expandedRows[uid] && depth <= maxDepth) {
45
45
  row.subRows.forEach((subRow, i) => doit(subRow, i, uid, rowToPush.realIndex, depth + 1));
46
46
  }
47
47
  };
@@ -19,7 +19,8 @@ const EditableCell = props => {
19
19
  StandardRender,
20
20
  EditableRenderer,
21
21
  cell,
22
- isRowSelected
22
+ isRowSelected,
23
+ setValue
23
24
  } = props;
24
25
  const {
25
26
  virtualListHelpers
@@ -41,20 +42,25 @@ const EditableCell = props => {
41
42
  }
42
43
  }, [isEditing]);
43
44
  const handleOnKeyDown = React.useCallback(e => {
44
- if (isEditing) e.stopPropagation();
45
+ if (isEditing) {
46
+ e.stopPropagation();
45
47
 
46
- if (['Enter', 'Space'].includes(e.code)) {
48
+ if (['Enter', 'Escape'].includes(e.code)) {
49
+ setIsEditing(false);
50
+ }
51
+ } else if (['Enter', 'Space'].includes(e.code)) {
47
52
  handleCellClick(e);
48
53
  }
49
- }, [isEditing, handleCellClick]);
54
+ }, [isEditing, handleCellClick, setIsEditing]);
50
55
  const handleOnBlur = React.useCallback(event => {
51
56
  if (isEditing && !event.currentTarget.contains(event.relatedTarget)) {
52
57
  // Not triggered when swapping focus between children
53
58
  setIsEditing(false);
54
59
  }
55
60
  }, [isEditing]);
61
+ const cols = !isEditing ? ['auto', 'min-content'] : ['auto'];
56
62
  return /*#__PURE__*/jsxRuntime.jsxs(styled.StyledEditableContainer, {
57
- cols: !isEditing ? ['auto', 'min-content'] : ['auto'],
63
+ cols: cols,
58
64
  tabIndex: isRowSelected && !isEditing ? 0 : -1,
59
65
  ref: cell.ref,
60
66
  onClick: handleCellClick,
@@ -62,14 +68,14 @@ const EditableCell = props => {
62
68
  onBlur: handleOnBlur,
63
69
  shouldDisplayEditIcon: cell.column.alwaysDisplayEditIcon,
64
70
  role: "cell",
65
- "aria-describedby": isEditing ? undefined : cell.id,
71
+ "aria-labelledby": isEditing ? undefined : cell.id,
66
72
  children: [!isEditing ? StandardRender : EditableRenderer, !isEditing && (_StyledPencilIcon || (_StyledPencilIcon = /*#__PURE__*/_jsx__default["default"](styled.StyledPencilIcon, {}))), /*#__PURE__*/_jsx__default["default"]("span", {
67
73
  id: cell.id,
68
74
  style: {
69
75
  display: 'none'
70
76
  },
71
77
  "aria-hidden": "true"
72
- }, void 0, "Editable cell. To edit the content's of this cell, press the Enter key")]
78
+ }, void 0, cell.value, ", editable cell. To edit the content's of this cell, press the Enter key")]
73
79
  });
74
80
  };
75
81
 
@@ -52,6 +52,9 @@ const FilterButton = /*#__PURE__*/styled__default["default"].span.withConfig({
52
52
  const Button = /*#__PURE__*/styled__default["default"](DSButton__default["default"]).withConfig({
53
53
  componentId: "sc-16i88ut-1"
54
54
  })(["position:relative;justify-self:flex-end;"]);
55
+ const PopperContent = /*#__PURE__*/styled__default["default"].div.withConfig({
56
+ componentId: "sc-16i88ut-2"
57
+ })(["background-color:'#fff';"]);
55
58
  const FilterPopover = _ref2 => {
56
59
  var _column$ref$current$o, _column$ref, _column$ref$current;
57
60
 
@@ -152,9 +155,20 @@ const FilterPopover = _ref2 => {
152
155
  minWidth: (_column$ref$current$o = (_column$ref = column.ref) === null || _column$ref === void 0 ? void 0 : (_column$ref$current = _column$ref.current) === null || _column$ref$current === void 0 ? void 0 : _column$ref$current.offsetWidth) !== null && _column$ref$current$o !== void 0 ? _column$ref$current$o : '0px'
153
156
  }),
154
157
  placementOrderPreference: ['bottom-end']
155
- }, void 0, /*#__PURE__*/jsxRuntime.jsx("div", {
156
- style: {
157
- backgroundColor: '#fff'
158
+ }, void 0, /*#__PURE__*/jsxRuntime.jsx(PopperContent, {
159
+ onKeyDown: e => {
160
+ if (e.code === 'Tab') {
161
+ setTimeout(() => {
162
+ var _popperRef$current;
163
+
164
+ if (!(popperRef !== null && popperRef !== void 0 && (_popperRef$current = popperRef.current) !== null && _popperRef$current !== void 0 && _popperRef$current.contains(document.activeElement))) {
165
+ patchHeader(columnId, {
166
+ hideFilterMenu: true,
167
+ hideFilterButton: false
168
+ });
169
+ }
170
+ });
171
+ }
158
172
  },
159
173
  ref: popperRef,
160
174
  children: menuContent
@@ -5,7 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const FILTER_TYPES = {
6
6
  SELECT: 'ds-filter-select',
7
7
  MULTI_SELECT: 'ds-filter-multi-select',
8
- TEXT: 'ds-filter-text',
9
8
  SINGLE_DATE: 'ds-filter-single-date',
10
9
  DATE_RANGE: 'ds-filter-date-range',
11
10
  DATE_SWITCHER: 'ds-filter-date-switcher',
@@ -7,7 +7,6 @@ require('core-js/modules/esnext.iterator.constructor.js');
7
7
  require('core-js/modules/esnext.iterator.for-each.js');
8
8
  var singleSelectFilterFn = require('./singleSelectFilterFn.js');
9
9
  var multiSelectFilterFn = require('./multiSelectFilterFn.js');
10
- var textFilterFn = require('./textFilterFn.js');
11
10
  var singleDateFilterFn = require('./singleDateFilterFn.js');
12
11
  var dateRangeFilterFn = require('./dateRangeFilterFn.js');
13
12
  var dateSwitcherFilterFn = require('./dateSwitcherFilterFn.js');
@@ -19,7 +18,6 @@ var FilterTypes = require('../FilterTypes.js');
19
18
  const filterMapper = {
20
19
  [FilterTypes.FILTER_TYPES.SELECT]: singleSelectFilterFn.singleSelectFilterFn,
21
20
  [FilterTypes.FILTER_TYPES.MULTI_SELECT]: multiSelectFilterFn.multiSelectFilterFn,
22
- [FilterTypes.FILTER_TYPES.TEXT]: textFilterFn.textFilterFn,
23
21
  [FilterTypes.FILTER_TYPES.SINGLE_DATE]: singleDateFilterFn.singleDateFilterFn,
24
22
  [FilterTypes.FILTER_TYPES.DATE_RANGE]: dateRangeFilterFn.dateRangeFilterFn,
25
23
  [FilterTypes.FILTER_TYPES.DATE_SWITCHER]: dateSwitcherFilterFn.dateSwitcherFilterFn,
@@ -3,7 +3,6 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var applyOutOfTheBoxFilters = require('./applyOutOfTheBoxFilters.js');
6
- var textFilterFn = require('./textFilterFn.js');
7
6
  var singleDateFilterFn = require('./singleDateFilterFn.js');
8
7
  var singleSelectFilterFn = require('./singleSelectFilterFn.js');
9
8
  var multiSelectFilterFn = require('./multiSelectFilterFn.js');
@@ -14,7 +13,6 @@ var dateRangeFilterFn = require('./dateRangeFilterFn.js');
14
13
 
15
14
 
16
15
  exports.applyOutOfTheBoxFilters = applyOutOfTheBoxFilters.applyOutOfTheBoxFilters;
17
- exports.textFilterFn = textFilterFn.textFilterFn;
18
16
  exports.singleDateFilterFn = singleDateFilterFn.singleDateFilterFn;
19
17
  exports.singleSelectFilterFn = singleSelectFilterFn.singleSelectFilterFn;
20
18
  exports.multiSelectFilterFn = multiSelectFilterFn.multiSelectFilterFn;
@@ -9,7 +9,6 @@ var groupBy = require('./groupBy.js');
9
9
  var FilterTypes = require('./FilterTypes.js');
10
10
  var RowVariants = require('./RowVariants.js');
11
11
  var applyOutOfTheBoxFilters = require('./Filters/applyOutOfTheBoxFilters.js');
12
- var textFilterFn = require('./Filters/textFilterFn.js');
13
12
  var singleDateFilterFn = require('./Filters/singleDateFilterFn.js');
14
13
  var singleSelectFilterFn = require('./Filters/singleSelectFilterFn.js');
15
14
  var multiSelectFilterFn = require('./Filters/multiSelectFilterFn.js');
@@ -28,7 +27,6 @@ exports.ROW_VARIANTS = RowVariants.ROW_VARIANTS;
28
27
  exports.ROW_VARIANT_COMPACT_KEY = RowVariants.ROW_VARIANT_COMPACT_KEY;
29
28
  exports.ROW_VARIANT_KEY = RowVariants.ROW_VARIANT_KEY;
30
29
  exports.applyOutOfTheBoxFilters = applyOutOfTheBoxFilters.applyOutOfTheBoxFilters;
31
- exports.textFilterFn = textFilterFn.textFilterFn;
32
30
  exports.singleDateFilterFn = singleDateFilterFn.singleDateFilterFn;
33
31
  exports.singleSelectFilterFn = singleSelectFilterFn.singleSelectFilterFn;
34
32
  exports.multiSelectFilterFn = multiSelectFilterFn.multiSelectFilterFn;
@@ -15,8 +15,8 @@ const setMultipleRefs = function () {
15
15
  }
16
16
 
17
17
  const filteredRefs = refs.filter(Boolean);
18
- if (!filteredRefs.length) return null;
19
- if (filteredRefs.length === 0) return filteredRefs[0];
18
+ if (!filteredRefs.length) return () => null;
19
+ if (filteredRefs.length === 0) return () => null;
20
20
  return newRef => {
21
21
  filteredRefs.forEach(refToBeUpdated => {
22
22
  if (typeof refToBeUpdated === 'function') {
package/cjs/index.js CHANGED
@@ -10,7 +10,6 @@ var groupBy = require('./exported-related/groupBy.js');
10
10
  var FilterTypes = require('./exported-related/FilterTypes.js');
11
11
  var RowVariants = require('./exported-related/RowVariants.js');
12
12
  var applyOutOfTheBoxFilters = require('./exported-related/Filters/applyOutOfTheBoxFilters.js');
13
- var textFilterFn = require('./exported-related/Filters/textFilterFn.js');
14
13
  var singleDateFilterFn = require('./exported-related/Filters/singleDateFilterFn.js');
15
14
  var singleSelectFilterFn = require('./exported-related/Filters/singleSelectFilterFn.js');
16
15
  var multiSelectFilterFn = require('./exported-related/Filters/multiSelectFilterFn.js');
@@ -31,7 +30,6 @@ exports.ROW_VARIANTS = RowVariants.ROW_VARIANTS;
31
30
  exports.ROW_VARIANT_COMPACT_KEY = RowVariants.ROW_VARIANT_COMPACT_KEY;
32
31
  exports.ROW_VARIANT_KEY = RowVariants.ROW_VARIANT_KEY;
33
32
  exports.applyOutOfTheBoxFilters = applyOutOfTheBoxFilters.applyOutOfTheBoxFilters;
34
- exports.textFilterFn = textFilterFn.textFilterFn;
35
33
  exports.singleDateFilterFn = singleDateFilterFn.singleDateFilterFn;
36
34
  exports.singleSelectFilterFn = singleSelectFilterFn.singleSelectFilterFn;
37
35
  exports.multiSelectFilterFn = multiSelectFilterFn.multiSelectFilterFn;
@@ -49,7 +49,6 @@ var MultiSelectPill = require('./components/MultiSelectPill.js');
49
49
  var NumberRangePill = require('./components/NumberRangePill.js');
50
50
  var SelectPill = require('./components/SelectPill.js');
51
51
  var SingleDatePill = require('./components/SingleDatePill.js');
52
- var TextPill = require('./components/TextPill.js');
53
52
  var styled = require('./styled.js');
54
53
 
55
54
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -62,7 +61,6 @@ var _MoreOptionsVert;
62
61
  const pillRenderMapper = {
63
62
  [FilterTypes.FILTER_TYPES.SELECT]: SelectPill.SelectPill,
64
63
  [FilterTypes.FILTER_TYPES.MULTI_SELECT]: MultiSelectPill.MultiSelectPill,
65
- [FilterTypes.FILTER_TYPES.TEXT]: TextPill.TextPill,
66
64
  [FilterTypes.FILTER_TYPES.SINGLE_DATE]: SingleDatePill.SingleDatePill,
67
65
  [FilterTypes.FILTER_TYPES.DATE_RANGE]: DateRangePill.DateRangePill,
68
66
  [FilterTypes.FILTER_TYPES.DATE_SWITCHER]: DateSwitcherPill.DateSwitcherPill,
@@ -8,7 +8,6 @@ var MultiSelectPill = require('./MultiSelectPill.js');
8
8
  var NumberRangePill = require('./NumberRangePill.js');
9
9
  var SelectPill = require('./SelectPill.js');
10
10
  var SingleDatePill = require('./SingleDatePill.js');
11
- var TextPill = require('./TextPill.js');
12
11
 
13
12
 
14
13
 
@@ -18,4 +17,3 @@ exports.MultiSelectPill = MultiSelectPill.MultiSelectPill;
18
17
  exports.NumberRangePill = NumberRangePill.NumberRangePill;
19
18
  exports.SelectPill = SelectPill.SelectPill;
20
19
  exports.SingleDatePill = SingleDatePill.SingleDatePill;
21
- exports.TextPill = TextPill.TextPill;
@@ -12,14 +12,13 @@ require('core-js/modules/web.dom-collections.iterator.js');
12
12
  require('core-js/modules/esnext.async-iterator.for-each.js');
13
13
  require('core-js/modules/esnext.iterator.for-each.js');
14
14
  var React = require('react');
15
- var index$2 = require('../../addons/Filters/Components/DateRangeFilter/index.js');
16
- var index$3 = require('../../addons/Filters/Components/DateSwitcherFilter/index.js');
17
- var index$4 = require('../../addons/Filters/Components/NumberRangeFilter/index.js');
18
- var index$5 = require('../../addons/Filters/Components/CurrencyRangeFilter/index.js');
15
+ var index$1 = require('../../addons/Filters/Components/DateRangeFilter/index.js');
16
+ var index$2 = require('../../addons/Filters/Components/DateSwitcherFilter/index.js');
17
+ var index$3 = require('../../addons/Filters/Components/NumberRangeFilter/index.js');
18
+ var index$4 = require('../../addons/Filters/Components/CurrencyRangeFilter/index.js');
19
19
  var SingleSelectFilter = require('../../addons/Filters/Components/SelectFilter/SingleSelectFilter.js');
20
20
  var MultiSelectFilter = require('../../addons/Filters/Components/SelectFilter/MultiSelectFilter.js');
21
- var index$1 = require('../../addons/Filters/Components/SingleDateFilter/index.js');
22
- var index = require('../../addons/Filters/Components/TextInputFilter/index.js');
21
+ var index = require('../../addons/Filters/Components/SingleDateFilter/index.js');
23
22
  require('@babel/runtime/helpers/jsx');
24
23
  require('@elliemae/ds-button');
25
24
  require('@elliemae/ds-popperjs');
@@ -63,12 +62,11 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
63
62
  const FilterMapper = {
64
63
  [FilterTypes.FILTER_TYPES.SELECT]: SingleSelectFilter.SingleSelectFilter,
65
64
  [FilterTypes.FILTER_TYPES.MULTI_SELECT]: MultiSelectFilter.MultiSelectFilter,
66
- [FilterTypes.FILTER_TYPES.TEXT]: index.TextInputFilter,
67
- [FilterTypes.FILTER_TYPES.SINGLE_DATE]: index$1.SingleDateFilter,
68
- [FilterTypes.FILTER_TYPES.DATE_RANGE]: index$2.DateRangeFilter,
69
- [FilterTypes.FILTER_TYPES.DATE_SWITCHER]: index$3.DateSwitcherFilter,
70
- [FilterTypes.FILTER_TYPES.NUMBER_RANGE]: index$4.NumberRangeFilter,
71
- [FilterTypes.FILTER_TYPES.CURRENCY_RANGE]: index$5.CurrencyRangeFilter
65
+ [FilterTypes.FILTER_TYPES.SINGLE_DATE]: index.SingleDateFilter,
66
+ [FilterTypes.FILTER_TYPES.DATE_RANGE]: index$1.DateRangeFilter,
67
+ [FilterTypes.FILTER_TYPES.DATE_SWITCHER]: index$2.DateSwitcherFilter,
68
+ [FilterTypes.FILTER_TYPES.NUMBER_RANGE]: index$3.NumberRangeFilter,
69
+ [FilterTypes.FILTER_TYPES.CURRENCY_RANGE]: index$4.CurrencyRangeFilter
72
70
  };
73
71
  const FilterMapItem = props => {
74
72
  const {
@@ -63,7 +63,7 @@ const HeaderCellGroupComp = _ref => {
63
63
  const children = header.columns;
64
64
  const isDragging = draggableProps && draggableProps.isDragging || isDraggingParent;
65
65
  const dropIndicatorPosition = draggableProps && draggableProps.shouldShowDropIndicatorPosition && draggableProps.dropIndicatorPosition;
66
- const ChildGroup = isDragOverlay ? NotSortableHeaderCellGroup : HeaderCellGroup;
66
+ const ChildGroup = isDragOverlay ? HeaderCellGroup : HeaderCellGroupSortable;
67
67
  const colSpan = (_children$length = children === null || children === void 0 ? void 0 : children.length) !== null && _children$length !== void 0 ? _children$length : 1;
68
68
  return /*#__PURE__*/jsxRuntime.jsxs(StyledWrapper, {
69
69
  ref: draggableProps ? draggableProps.setNodeRef : null,
@@ -93,7 +93,8 @@ const HeaderCellGroupComp = _ref => {
93
93
  };
94
94
 
95
95
  // We need to declare this because we MUST avoid the useSortable call in the recursive calls of the function
96
- const NotSortableHeaderCellGroup = HeaderCellGroupComp;
97
- const HeaderCellGroup = withDnDSortableColumnContext.withDnDSortableColumnContext(HeaderCellGroupComp);
96
+ const HeaderCellGroup = HeaderCellGroupComp;
97
+ const HeaderCellGroupSortable = withDnDSortableColumnContext.withDnDSortableColumnContext(HeaderCellGroupComp);
98
98
 
99
99
  exports.HeaderCellGroup = HeaderCellGroup;
100
+ exports["default"] = HeaderCellGroupSortable;
@@ -35,7 +35,7 @@ const HeadersComp = () => {
35
35
  cols: gridLayout,
36
36
  colsLayoutStyle: colsLayoutStyle,
37
37
  isExpandable: isExpandable
38
- }, void 0, visibleColumns.map((h, index) => /*#__PURE__*/_jsx__default["default"](HeaderCellGroup.HeaderCellGroup, {
38
+ }, void 0, visibleColumns.map((h, index) => /*#__PURE__*/_jsx__default["default"](HeaderCellGroup["default"], {
39
39
  header: h,
40
40
  isLast: index === visibleColumns.length - 1
41
41
  }, h.id)))), [isExpandable, visibleColumns, gridLayout, colsLayoutStyle]);
@@ -45,7 +45,9 @@ const useHeaderCellHandlers = _ref => {
45
45
  patchHeader(column.id, buildNextHeader(reduxHeader, true, hasFilter, hasDnD));
46
46
  }, [column.id, hasDnD, hasFilter, patchHeader, reduxHeader]);
47
47
  const onMouseLeave = React.useCallback(() => {
48
- if (!headerRef.current.contains(document.activeElement)) {
48
+ var _headerRef$current;
49
+
50
+ if (!(headerRef !== null && headerRef !== void 0 && (_headerRef$current = headerRef.current) !== null && _headerRef$current !== void 0 && _headerRef$current.contains(document.activeElement))) {
49
51
  patchHeader(column.id, buildNextHeader(reduxHeader, false, hasFilter, hasDnD));
50
52
  }
51
53
  }, [column.id, hasDnD, hasFilter, headerRef, patchHeader, reduxHeader]);
@@ -80,7 +82,7 @@ const useHeaderCellHandlers = _ref => {
80
82
  }, [column.canSort, column.id, onColumnSortChange, patchHeader, reduxHeader, hasFilter, hasDnD, dragHandleRef, filterIconRef]);
81
83
  const onFocus = React.useCallback(e => {
82
84
  // Don't do anything if focus wasn't placed in the element (bubling issues)
83
- if (e.target === headerRef.current) {
85
+ if (e.target === (headerRef === null || headerRef === void 0 ? void 0 : headerRef.current)) {
84
86
  patchHeader(column.id, buildNextHeader(reduxHeader, true, hasFilter, hasDnD));
85
87
  }
86
88
  }, [column.id, hasDnD, hasFilter, headerRef, patchHeader, reduxHeader]);