@procore/data-table 14.16.0 → 14.18.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.
@@ -1,6 +1,6 @@
1
1
  import React76, { useState, forwardRef, useContext, useRef, useImperativeHandle, useLayoutEffect, useCallback, useMemo, memo, useEffect, Component as Component$1, createElement } from 'react';
2
2
  import { uniqBy, prop, startsWith, mergeDeepRight, equals, omit, intersection, isNil, mergeDeepLeft, isEmpty, groupBy } from 'ramda';
3
- import { useI18nContext, Select, Input, UNSAFE_useOverlayTriggerContext, Card, Flex, Box, SegmentedController, Calendar, useDateTime, OverlayTrigger, isEventSource, DateInput, UNSAFE_isValidYearRange, DateSelect, PillSelect, TextArea, UNSAFE_useMenuImperativeControlNavigation, UNSAFE_Menu, UNSAFE_menuItemsWrapperAttribute, Spinner as Spinner$1, FlexList, Typography, Tooltip, Button, Required, MultiSelect, colors, Form, spacing, Switch, Panel, UNSAFE_StyledFilterTokenLabel, typographyWeights, SelectButton, StyledSelectButton, StyledSelectButtonLabel, StyledButton, StyledSelectArrow, Popover, UNSAFE_StyledSuperSelectTrigger, UNSAFE_StyledSuperSelectLabel, UNSAFE_StyledSuperSelectArrow, DateTimeProvider, useField, Label, UNSAFE_mergeRefs, ContactItem as ContactItem$1, ToggleButton, Link, AvatarStack, Pill, Typeahead, Pagination, UNSAFE_FilterToken, UNSAFE_SuperSelect, Avatar, H3, Checkbox, useI18n, I18nContext, UNSAFE_useSuperSelectContext, DropdownFlyout, useVisibility, StyledDropdownFlyoutLabel, StyledDropdownFlyoutExpandIcon, EmptyState as EmptyState$1 } from '@procore/core-react';
3
+ import { useI18nContext, Select, Input, UNSAFE_useOverlayTriggerContext, Card, Flex, Box, SegmentedController, Calendar, useDateTime, OverlayTrigger, isEventSource, DateInput, UNSAFE_isValidYearRange, DateSelect, PillSelect, TextArea, UNSAFE_useMenuImperativeControlNavigation, UNSAFE_Menu, UNSAFE_menuItemsWrapperAttribute, Spinner as Spinner$1, FlexList, Typography, Tooltip, Button, Required, MultiSelect, colors, Form, spacing, Switch, Panel, SelectButton, StyledSelectButton, typographyWeights, StyledSelectButtonLabel, StyledButton, StyledSelectArrow, Popover, UNSAFE_StyledSuperSelectTrigger, UNSAFE_StyledSuperSelectLabel, UNSAFE_StyledSuperSelectArrow, UNSAFE_StyledFilterTokenLabel, DateTimeProvider, useField, Label, UNSAFE_mergeRefs, ContactItem as ContactItem$1, ToggleButton, Link, AvatarStack, Pill, Typeahead, Pagination, UNSAFE_SuperSelect, UNSAFE_FilterToken, Avatar, H3, Checkbox, useI18n, I18nContext, UNSAFE_useSuperSelectContext, DropdownFlyout, useVisibility, StyledDropdownFlyoutLabel, StyledDropdownFlyoutExpandIcon, EmptyState as EmptyState$1 } from '@procore/core-react';
4
4
  import classnames from 'classnames/bind';
5
5
  import debounce5 from 'lodash.debounce';
6
6
  import { Error as Error$1, Grip, ExternalLink, Pencil, Building, Clear, Calendar as Calendar$1, ArrowDown, ArrowUp, CaretDown, CaretRight, CaretsInVertical, CaretsOutVerticalWithLine, CaretsOutVertical, CaretsIn, CaretsOut } from '@procore/core-icons';
@@ -17,9 +17,9 @@ import _isEqual from 'lodash.isequal';
17
17
  import ReactResizeDetector from 'react-resize-detector';
18
18
  import { DateTimeSelectField } from '@procore/labs-datetime-select';
19
19
  import Decimal from 'decimal.js';
20
- import styled4, { css as css$1 } from 'styled-components';
21
- import { GroupBySelect } from '@procore/labs-group-by-select';
20
+ import styled3, { css as css$1 } from 'styled-components';
22
21
  import { getDatePlaceholder } from '@procore/globalization-toolkit';
22
+ import { GroupBySelect } from '@procore/labs-group-by-select';
23
23
 
24
24
  var __create = Object.create;
25
25
  var __defProp = Object.defineProperty;
@@ -1410,7 +1410,7 @@ ag-grid, ag-grid-angular, ag-grid-ng2, ag-grid-polymer, ag-grid-aurelia {
1410
1410
  animation-iteration-count: infinite;
1411
1411
  animation-name: ag-shake-left-to-right;
1412
1412
  }
1413
- @keyframes _ag-shake-left-to-right_1t4e8_369 {
1413
+ @keyframes _ag-shake-left-to-right_18odb_369 {
1414
1414
  from {
1415
1415
  padding-left: 6px;
1416
1416
  padding-right: 2px;
@@ -5411,7 +5411,7 @@ input[class^=ag-][type=button]:focus, button[class^=ag-]:focus {
5411
5411
  animation-iteration-count: infinite;
5412
5412
  animation-timing-function: linear;
5413
5413
  }
5414
- @keyframes _spin_1t4e8_1 {
5414
+ @keyframes _spin_18odb_1 {
5415
5415
  from {
5416
5416
  transform: rotate(0deg);
5417
5417
  }
@@ -7717,7 +7717,7 @@ input[class^=ag-][type=range]:disabled {
7717
7717
  .ag-theme-alpine.ag-theme-alpine .ag-details-row-auto-height .ag-center-cols-viewport, .ag-theme-alpine.ag-theme-alpine .ag-layout-auto-height .ag-center-cols-viewport {
7718
7718
  min-height: 0px;
7719
7719
  }
7720
- .ag-theme-alpine.ag-theme-alpine .ag-overlay button {
7720
+ .ag-theme-alpine.ag-theme-alpine .ag-overlay .ag-react-container {
7721
7721
  pointer-events: initial;
7722
7722
  }
7723
7723
  .ag-theme-alpine.ag-theme-alpine .ag-menu, .ag-theme-alpine.ag-theme-alpine .ag-menu-header {
@@ -7916,7 +7916,7 @@ input[class^=ag-][type=range]:disabled {
7916
7916
  padding-left: 16px;
7917
7917
  }
7918
7918
 
7919
- div._contextPanel_1t4e8_7153 {
7919
+ div._contextPanel_18odb_7153 {
7920
7920
  width: 400px;
7921
7921
  transition: all ease 500ms;
7922
7922
  flex: 0 0 auto;
@@ -7925,7 +7925,7 @@ div._contextPanel_1t4e8_7153 {
7925
7925
  border: 1px solid #d6dadc;
7926
7926
  display: flex;
7927
7927
  }
7928
- div._contextPanel--hidden_1t4e8_7162 {
7928
+ div._contextPanel--hidden_18odb_7162 {
7929
7929
  border: none;
7930
7930
  overflow: hidden;
7931
7931
  padding: 0px;
@@ -7933,50 +7933,50 @@ div._contextPanel--hidden_1t4e8_7162 {
7933
7933
  width: 0px;
7934
7934
  }
7935
7935
 
7936
- ._contextPanelWrapper_1t4e8_7170 {
7936
+ ._contextPanelWrapper_18odb_7170 {
7937
7937
  position: relative;
7938
7938
  flex-grow: 1;
7939
7939
  }
7940
7940
 
7941
- ._contextPanelBody_1t4e8_7175 {
7941
+ ._contextPanelBody_18odb_7175 {
7942
7942
  width: clamp(380px, 400px, 100%);
7943
7943
  }
7944
7944
 
7945
- ._contextPanel-stickyHeader_1t4e8_7179 {
7945
+ ._contextPanel-stickyHeader_18odb_7179 {
7946
7946
  background-color: #ffffff;
7947
7947
  position: sticky;
7948
7948
  top: 0;
7949
7949
  z-index: 5;
7950
7950
  }
7951
7951
 
7952
- ._filters-list_1t4e8_7186 {
7952
+ ._filters-list_18odb_7186 {
7953
7953
  padding: 0;
7954
7954
  margin: 0;
7955
7955
  }
7956
- ._filters-list_1t4e8_7186 ol {
7956
+ ._filters-list_18odb_7186 ol {
7957
7957
  padding: 0;
7958
7958
  margin: 0;
7959
7959
  }
7960
7960
 
7961
- ._col-drag-column-icon_1t4e8_7195 {
7961
+ ._col-drag-column-icon_18odb_7195 {
7962
7962
  color: #6a767c;
7963
7963
  }
7964
7964
 
7965
- ._tabular-nums_1t4e8_7199 {
7965
+ ._tabular-nums_18odb_7199 {
7966
7966
  font-variant-numeric: tabular-nums;
7967
7967
  }`;
7968
7968
  document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css));
7969
7969
  var styles_default = {
7970
- "contextPanel": "_contextPanel_1t4e8_7153",
7971
- "contextPanel--hidden": "_contextPanel--hidden_1t4e8_7162",
7972
- "contextPanelWrapper": "_contextPanelWrapper_1t4e8_7170",
7973
- "contextPanelBody": "_contextPanelBody_1t4e8_7175",
7974
- "contextPanel-stickyHeader": "_contextPanel-stickyHeader_1t4e8_7179",
7975
- "filters-list": "_filters-list_1t4e8_7186",
7976
- "col-drag-column-icon": "_col-drag-column-icon_1t4e8_7195",
7977
- "tabular-nums": "_tabular-nums_1t4e8_7199",
7978
- "ag-shake-left-to-right": "_ag-shake-left-to-right_1t4e8_369",
7979
- "spin": "_spin_1t4e8_1"
7970
+ "contextPanel": "_contextPanel_18odb_7153",
7971
+ "contextPanel--hidden": "_contextPanel--hidden_18odb_7162",
7972
+ "contextPanelWrapper": "_contextPanelWrapper_18odb_7170",
7973
+ "contextPanelBody": "_contextPanelBody_18odb_7175",
7974
+ "contextPanel-stickyHeader": "_contextPanel-stickyHeader_18odb_7179",
7975
+ "filters-list": "_filters-list_18odb_7186",
7976
+ "col-drag-column-icon": "_col-drag-column-icon_18odb_7195",
7977
+ "tabular-nums": "_tabular-nums_18odb_7199",
7978
+ "ag-shake-left-to-right": "_ag-shake-left-to-right_18odb_369",
7979
+ "spin": "_spin_18odb_1"
7980
7980
  };
7981
7981
 
7982
7982
  // src/utils/getCellValueTypographyProps.ts
@@ -8064,7 +8064,7 @@ var Renderer = ({
8064
8064
  var ButtonsCellRenderer = withDataTableRenderer(Renderer, "select");
8065
8065
 
8066
8066
  // src/utils/truncation.scss
8067
- var css2 = `._truncatingText_114ye_1 {
8067
+ var css2 = `._truncatingText_c077g_1 {
8068
8068
  white-space: normal;
8069
8069
  overflow: hidden;
8070
8070
  word-wrap: break-word;
@@ -8073,17 +8073,43 @@ var css2 = `._truncatingText_114ye_1 {
8073
8073
  -webkit-box-orient: vertical;
8074
8074
  -webkit-line-clamp: 1;
8075
8075
  }
8076
- ._truncatingText--md_114ye_10 {
8076
+ ._truncatingText--md_c077g_10 {
8077
8077
  -webkit-line-clamp: 2;
8078
8078
  }
8079
- ._truncatingText--lg_114ye_13 {
8079
+ ._truncatingText--lg_c077g_13 {
8080
8080
  -webkit-line-clamp: 3;
8081
+ }
8082
+ ._truncatingText--overflowVisible_c077g_16 {
8083
+ overflow: visible;
8084
+ }
8085
+
8086
+ ._extendClickableArea_c077g_20 {
8087
+ display: inline-block;
8088
+ position: relative;
8089
+ width: 100%;
8090
+ }
8091
+ ._extendClickableArea_c077g_20::before {
8092
+ content: "";
8093
+ position: absolute;
8094
+ top: 50%;
8095
+ left: 50%;
8096
+ width: 48px;
8097
+ height: 48px;
8098
+ transform: translate(-50%, -50%);
8099
+ pointer-events: auto;
8100
+ background: transparent;
8101
+ }
8102
+ ._extendClickableArea--rowHeightSm_c077g_36::before {
8103
+ height: 32px;
8081
8104
  }`;
8082
8105
  document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css2));
8083
8106
  var truncation_default = {
8084
- "truncatingText": "_truncatingText_114ye_1",
8085
- "truncatingText--md": "_truncatingText--md_114ye_10",
8086
- "truncatingText--lg": "_truncatingText--lg_114ye_13"
8107
+ "truncatingText": "_truncatingText_c077g_1",
8108
+ "truncatingText--md": "_truncatingText--md_c077g_10",
8109
+ "truncatingText--lg": "_truncatingText--lg_c077g_13",
8110
+ "truncatingText--overflowVisible": "_truncatingText--overflowVisible_c077g_16",
8111
+ "extendClickableArea": "_extendClickableArea_c077g_20",
8112
+ "extendClickableArea--rowHeightSm": "_extendClickableArea--rowHeightSm_c077g_36"
8087
8113
  };
8088
8114
 
8089
8115
  // src/utils/ContactItem.tsx
@@ -52958,8 +52984,11 @@ globalObj.MouseEvent = typeof MouseEvent === "undefined" ? {} : MouseEvent;
52958
52984
  // src/CellRenderers/GroupCell.tsx
52959
52985
  var GroupCellRenderer2 = GroupCellRenderer;
52960
52986
  var cx6 = classnames.bind(truncation_default);
52987
+ var MIN_LINK_WIDTH = 48;
52961
52988
  var InternalLinkCellRenderer = ({ columnDefinition, isGroup, data, rowHeight, value }) => {
52962
52989
  var _a, _b, _c, _d;
52990
+ const [isLinkWidthBelowMin, setIsLinkWidthBelowMin] = useState(false);
52991
+ const linkRef = useRef(null);
52963
52992
  const internalValue = value ? (_a = columnDefinition.getStringFormattedValue) == null ? void 0 : _a.call(columnDefinition, value) : "";
52964
52993
  const typographyProps = getCellValueTypographyProps(
52965
52994
  (_b = columnDefinition.cellRendererParams) == null ? void 0 : _b.typographyProps
@@ -52970,14 +52999,24 @@ var InternalLinkCellRenderer = ({ columnDefinition, isGroup, data, rowHeight, va
52970
52999
  "truncatingText",
52971
53000
  {
52972
53001
  "truncatingText--md": rowHeight === rowSize.md,
52973
- "truncatingText--lg": rowHeight === rowSize.lg
53002
+ "truncatingText--lg": rowHeight === rowSize.lg,
53003
+ "truncatingText--overflowVisible": isLinkWidthBelowMin
52974
53004
  }
52975
53005
  );
52976
53006
  if (isGroup) {
52977
53007
  return /* @__PURE__ */ React76.createElement(Typography, { ...typographyProps, className, weight: "semibold" }, value);
52978
53008
  }
53009
+ useEffect(() => {
53010
+ if (linkRef.current) {
53011
+ const { width } = linkRef.current.getBoundingClientRect();
53012
+ setIsLinkWidthBelowMin(width < MIN_LINK_WIDTH);
53013
+ }
53014
+ }, [internalValue]);
52979
53015
  const isExternalLink = columnDefinition.cellRendererParams.isExternalLink ?? false;
52980
53016
  const URL = columnDefinition.cellRendererParams.getURL(value, data);
53017
+ const extendClickableAreaClassNames = isLinkWidthBelowMin ? cx6("extendClickableArea", {
53018
+ "extendClickableArea--rowHeightSm": rowHeight === rowSize.sm
53019
+ }) : "";
52981
53020
  if (isExternalLink && value && URL) {
52982
53021
  return /* @__PURE__ */ React76.createElement(
52983
53022
  Typography,
@@ -52997,7 +53036,7 @@ var InternalLinkCellRenderer = ({ columnDefinition, isGroup, data, rowHeight, va
52997
53036
  )
52998
53037
  );
52999
53038
  }
53000
- return URL ? /* @__PURE__ */ React76.createElement(Typography, { ...typographyProps, className }, /* @__PURE__ */ React76.createElement(Link, { href: URL }, internalValue)) : /* @__PURE__ */ React76.createElement(Typography, { ...typographyProps }, internalValue);
53039
+ return URL ? /* @__PURE__ */ React76.createElement(Typography, { ...typographyProps, className }, /* @__PURE__ */ React76.createElement(Link, { href: URL, className: extendClickableAreaClassNames, ref: linkRef }, internalValue)) : /* @__PURE__ */ React76.createElement(Typography, { ...typographyProps }, internalValue);
53001
53040
  };
53002
53041
  var LinkCellRenderer = withDataTableRenderer(
53003
53042
  InternalLinkCellRenderer,
@@ -53078,7 +53117,7 @@ var NumberCellEditor2 = withDataTableEditor(
53078
53117
  );
53079
53118
 
53080
53119
  // src/CellRenderers/peopleCellStyles.scss
53081
- var css3 = `._truncatingText_3wkw2_1 {
53120
+ var css3 = `._truncatingText_14qzu_1 {
53082
53121
  white-space: normal;
53083
53122
  overflow: hidden;
53084
53123
  word-wrap: break-word;
@@ -53087,33 +53126,59 @@ var css3 = `._truncatingText_3wkw2_1 {
53087
53126
  -webkit-box-orient: vertical;
53088
53127
  -webkit-line-clamp: 1;
53089
53128
  }
53090
- ._truncatingText--md_3wkw2_10 {
53129
+ ._truncatingText--md_14qzu_10 {
53091
53130
  -webkit-line-clamp: 2;
53092
53131
  }
53093
- ._truncatingText--lg_3wkw2_13 {
53132
+ ._truncatingText--lg_14qzu_13 {
53094
53133
  -webkit-line-clamp: 3;
53095
53134
  }
53135
+ ._truncatingText--overflowVisible_14qzu_16 {
53136
+ overflow: visible;
53137
+ }
53138
+
53139
+ ._extendClickableArea_14qzu_20 {
53140
+ display: inline-block;
53141
+ position: relative;
53142
+ width: 100%;
53143
+ }
53144
+ ._extendClickableArea_14qzu_20::before {
53145
+ content: "";
53146
+ position: absolute;
53147
+ top: 50%;
53148
+ left: 50%;
53149
+ width: 48px;
53150
+ height: 48px;
53151
+ transform: translate(-50%, -50%);
53152
+ pointer-events: auto;
53153
+ background: transparent;
53154
+ }
53155
+ ._extendClickableArea--rowHeightSm_14qzu_36::before {
53156
+ height: 32px;
53157
+ }
53096
53158
 
53097
- ._inlineListItems_3wkw2_17 {
53159
+ ._inlineListItems_14qzu_40 {
53098
53160
  list-style: none;
53099
53161
  margin: 0;
53100
53162
  padding: 0;
53101
53163
  }
53102
- ._inlineListItems_3wkw2_17 > li {
53164
+ ._inlineListItems_14qzu_40 > li {
53103
53165
  display: inline;
53104
53166
  }
53105
53167
 
53106
- ._dynamicRowHeightSpacing_3wkw2_26 {
53168
+ ._dynamicRowHeightSpacing_14qzu_49 {
53107
53169
  margin-top: 8px;
53108
53170
  margin-bottom: 8px;
53109
53171
  }`;
53110
53172
  document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css3));
53111
53173
  var peopleCellStyles_default = {
53112
- "truncatingText": "_truncatingText_3wkw2_1",
53113
- "truncatingText--md": "_truncatingText--md_3wkw2_10",
53114
- "truncatingText--lg": "_truncatingText--lg_3wkw2_13",
53115
- "inlineListItems": "_inlineListItems_3wkw2_17",
53116
- "dynamicRowHeightSpacing": "_dynamicRowHeightSpacing_3wkw2_26"
53174
+ "truncatingText": "_truncatingText_14qzu_1",
53175
+ "truncatingText--md": "_truncatingText--md_14qzu_10",
53176
+ "truncatingText--lg": "_truncatingText--lg_14qzu_13",
53177
+ "truncatingText--overflowVisible": "_truncatingText--overflowVisible_14qzu_16",
53178
+ "extendClickableArea": "_extendClickableArea_14qzu_20",
53179
+ "extendClickableArea--rowHeightSm": "_extendClickableArea--rowHeightSm_14qzu_36",
53180
+ "inlineListItems": "_inlineListItems_14qzu_40",
53181
+ "dynamicRowHeightSpacing": "_dynamicRowHeightSpacing_14qzu_49"
53117
53182
  };
53118
53183
 
53119
53184
  // src/CellRenderers/PeopleCell.tsx
@@ -54187,6 +54252,38 @@ function sortColumnDefinitionsByFilterIndex(colDef1, colDef2) {
54187
54252
  }
54188
54253
  return filterIndex1 > filterIndex2 ? 1 : -1;
54189
54254
  }
54255
+ function assignAlphabeticalFilterIndices(columnDefinitions) {
54256
+ const newColumns = columnDefinitions.map((col) => ({
54257
+ ...col,
54258
+ filterProps: col.filterProps ? { ...col.filterProps } : void 0
54259
+ }));
54260
+ const filterColumns = newColumns.filter(
54261
+ (col) => col.filterRenderer || col.filterProps
54262
+ );
54263
+ const groups = {};
54264
+ filterColumns.forEach((col) => {
54265
+ var _a;
54266
+ const groupName = ((_a = col.filterProps) == null ? void 0 : _a.groupName) || "default";
54267
+ if (!groups[groupName]) {
54268
+ groups[groupName] = [];
54269
+ }
54270
+ groups[groupName].push(col);
54271
+ });
54272
+ Object.values(groups).forEach((groupCols) => {
54273
+ groupCols.sort((a, b) => {
54274
+ const headerA = a.headerName || "";
54275
+ const headerB = b.headerName || "";
54276
+ return headerA.localeCompare(headerB);
54277
+ });
54278
+ groupCols.forEach((col, idx) => {
54279
+ if (!col.filterProps) {
54280
+ col.filterProps = {};
54281
+ }
54282
+ col.filterProps.index = idx;
54283
+ });
54284
+ });
54285
+ return newColumns;
54286
+ }
54190
54287
 
54191
54288
  // src/state/useFilterState.ts
54192
54289
  function isNumberFilterModel(value) {
@@ -55962,7 +56059,10 @@ var DataTableCellRenderer = ({
55962
56059
  value
55963
56060
  };
55964
56061
  const hasValue = value !== void 0 && value !== null && value !== "";
55965
- const isSelectCellComponent = ((_c = (_b = columnDefinition.cellEditor) == null ? void 0 : _b.render) == null ? void 0 : _c.displayName) === "SelectCellEditor";
56062
+ const isSelectCellComponent = ((_c = (_b = columnDefinition.cellRendererSelector) == null ? void 0 : _b.call(columnDefinition, {
56063
+ ...columnDefinition.cellRendererParams,
56064
+ node
56065
+ }).component) == null ? void 0 : _c.displayName) === "SelectCellRenderer";
55966
56066
  const URL = isSelectCellComponent && ((_d = columnDefinition == null ? void 0 : columnDefinition.cellRendererParams) == null ? void 0 : _d.getURL) ? columnDefinition.cellRendererParams.getURL(value) : null;
55967
56067
  const startEditing = useCallback(
55968
56068
  () => api.startEditingCell({
@@ -78226,12 +78326,16 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
78226
78326
  };
78227
78327
 
78228
78328
  // src/utils/expandRows.ts
78329
+ function getStringifiedRoute(node) {
78330
+ var _a;
78331
+ return (_a = node.getRoute()) == null ? void 0 : _a.map((r) => typeof r === "object" ? JSON.stringify(r) : r);
78332
+ }
78229
78333
  var getGroupRowState = (gridApi, groupDefaultExpanded = 0) => {
78230
78334
  const expandedRoutes = [];
78231
78335
  const collapsedRoutes = [];
78232
78336
  if (gridApi) {
78233
78337
  gridApi.forEachNode((node) => {
78234
- const route = node.getRoute();
78338
+ const route = getStringifiedRoute(node);
78235
78339
  if (route) {
78236
78340
  const routePath = route.join(",");
78237
78341
  const defaultExpandLevel = groupDefaultExpanded === -1 ? Infinity : groupDefaultExpanded;
@@ -78252,7 +78356,7 @@ var setExpandCollapseRow = (gridApi, tableConfig, groupDefaultExpanded = 0) => {
78252
78356
  const expandedRoutes = ((_a = tableConfig.groupRowState) == null ? void 0 : _a.expandedRoutes) ?? [];
78253
78357
  const collapsedRoutes = ((_b = tableConfig.groupRowState) == null ? void 0 : _b.collapsedRoutes) ?? [];
78254
78358
  gridApi.forEachNode((node) => {
78255
- const route = node.getRoute();
78359
+ const route = getStringifiedRoute(node);
78256
78360
  if (route) {
78257
78361
  const routePath = route.join(",");
78258
78362
  const defaultExpandLevel = groupDefaultExpanded === -1 ? Infinity : groupDefaultExpanded;
@@ -78270,7 +78374,7 @@ var isRowOpenedByDefault = (node, tableConfig, groupDefaultExpanded = 0) => {
78270
78374
  var _a, _b;
78271
78375
  const expandedRoutes = ((_a = tableConfig == null ? void 0 : tableConfig.groupRowState) == null ? void 0 : _a.expandedRoutes) ?? [];
78272
78376
  const collapsedRoutes = ((_b = tableConfig == null ? void 0 : tableConfig.groupRowState) == null ? void 0 : _b.collapsedRoutes) ?? [];
78273
- const route = node.getRoute();
78377
+ const route = getStringifiedRoute(node);
78274
78378
  if (!route) {
78275
78379
  return false;
78276
78380
  }
@@ -82892,7 +82996,7 @@ var FILTERS_GROUP_EXPANDABLE_AREA_VERTICAL_MARGIN = spacing.md;
82892
82996
  var FILTERS_GROUP_ITEM_HEIGHT = 60;
82893
82997
  var ITEMS_IN_FILTERS_GROUP = 5;
82894
82998
  var FILTERS_GROUP_EXPANDABLE_AREA_HEIGHT = (FILTERS_GROUP_ITEM_HEIGHT + spacing.xl) * ITEMS_IN_FILTERS_GROUP + BORDER_WIDTH;
82895
- var StyledPanelSection = styled4(Panel.Section)`
82999
+ var StyledPanelSection = styled3(Panel.Section)`
82896
83000
  // Filters Group container styles
82897
83001
  &.filters-list-group-section {
82898
83002
  padding-bottom: ${FILTERS_GROUP_VERTICAL_MARGIN}px;
@@ -83183,905 +83287,307 @@ var ConfigPanelButton = () => {
83183
83287
  )
83184
83288
  );
83185
83289
  };
83186
- function getFilterTokenText(columnDefinition, filterValue) {
83187
- var _a, _b, _c, _d;
83188
- if ((_a = columnDefinition == null ? void 0 : columnDefinition.filterProps) == null ? void 0 : _a.getFilterTokenText) {
83189
- return (_c = (_b = columnDefinition == null ? void 0 : columnDefinition.filterProps) == null ? void 0 : _b.getFilterTokenText) == null ? void 0 : _c.call(_b, {
83190
- headerName: (columnDefinition == null ? void 0 : columnDefinition.headerName) || "",
83191
- value: filterValue
83192
- });
83290
+ var QuickFilterLabel = React76.forwardRef(({ enabled, ...props }, ref) => {
83291
+ return /* @__PURE__ */ React76.createElement(StyledQuickFilterLabel, { $enabled: enabled }, /* @__PURE__ */ React76.createElement(SelectButton, { ref, ...props }));
83292
+ });
83293
+ var StyledQuickFilterLabel = styled3.div`
83294
+ ${StyledSelectButton} {
83295
+ width: auto;
83296
+ max-width: 380px;
83297
+ ${({ $enabled }) => $enabled && css$1`
83298
+ background: ${colors.blue96};
83299
+ border-color: ${colors.blue96};
83300
+ font-weight: ${typographyWeights.semibold};
83301
+ &:hover {
83302
+ background: ${colors.blue90};
83303
+ border-color: ${colors.blue90};
83304
+ }
83305
+ ${StyledSelectButtonLabel} {
83306
+ color: ${colors.blue45};
83307
+ }
83308
+ ${StyledButton} {
83309
+ color: ${colors.blue45};
83310
+ &:hover {
83311
+ background: white;
83312
+ }
83313
+ }
83314
+ ${StyledSelectArrow} {
83315
+ svg {
83316
+ fill: ${colors.blue45};
83317
+ }
83318
+ }
83319
+ `}
83193
83320
  }
83194
- if (columnDefinition.filterRenderer === DateFilterRenderer_default) {
83321
+ `;
83322
+
83323
+ // src/QuickFilterRenderers/DateQuickFilterRenderer.tsx
83324
+ function getPlacement2(currentSelectionType, position) {
83325
+ if (currentSelectionType === "single") {
83326
+ return "bottom-left";
83327
+ }
83328
+ if (position === "start") {
83329
+ return "bottom-left";
83330
+ }
83331
+ return "bottom-right";
83332
+ }
83333
+ var OptionalDateTimeProvider2 = ({ timeZone, children }) => {
83334
+ return timeZone ? /* @__PURE__ */ React76.createElement(DateTimeProvider, { timeZone }, children) : /* @__PURE__ */ React76.createElement(React76.Fragment, null, children);
83335
+ };
83336
+ var DateFilterSelect2 = React76.forwardRef(
83337
+ ({
83338
+ afterHide,
83339
+ selectionType = "either",
83340
+ headerName,
83341
+ disabled,
83342
+ onChange,
83343
+ position,
83344
+ selectedValue,
83345
+ setSelectionType = () => {
83346
+ }
83347
+ }, ref) => {
83348
+ const dateTime = useDateTime();
83349
+ const { start, end } = selectedValue;
83350
+ const selectedDate = (position === "start" ? start : end) ?? void 0;
83351
+ const [displayed, setDisplayed2] = React76.useState(
83352
+ // @ts-ignore
83353
+ selectedDate || dateTime.newDate()
83354
+ );
83355
+ React76.useEffect(() => {
83356
+ if (isDate(start) && !isDate(end) && position === "end") {
83357
+ setDisplayed2(start);
83358
+ }
83359
+ if (!isDate(start) && isDate(end) && position === "start") {
83360
+ setDisplayed2(end);
83361
+ }
83362
+ }, [position, selectedValue]);
83363
+ function onClear() {
83364
+ onChange(null, position);
83365
+ }
83366
+ const clearRef = React76.useRef(null);
83367
+ const monthRef = React76.useRef(null);
83368
+ const yearRef = React76.useRef(null);
83369
+ const overlay = /* @__PURE__ */ React76.createElement(
83370
+ DateFilterOverlay,
83371
+ {
83372
+ displayDate: displayed,
83373
+ selectionType,
83374
+ monthRef,
83375
+ onSelect: (date) => {
83376
+ onChange(date, position);
83377
+ },
83378
+ position,
83379
+ selectedValue,
83380
+ setDisplayDate: setDisplayed2,
83381
+ setSelectionType,
83382
+ yearRef
83383
+ }
83384
+ );
83195
83385
  return /* @__PURE__ */ React76.createElement(
83196
- OptionalDateTimeProvider,
83386
+ OverlayTrigger,
83197
83387
  {
83198
- timeZone: columnDefinition.timeZone
83388
+ afterHide,
83389
+ autoFocus: true,
83390
+ beforeShow: (e) => {
83391
+ if (isEventSource(clearRef, e)) {
83392
+ return false;
83393
+ }
83394
+ return true;
83395
+ },
83396
+ clickOutsideIgnoreRefs: [monthRef, yearRef],
83397
+ overlay,
83398
+ placement: getPlacement2(selectionType, position),
83399
+ ref,
83400
+ restoreFocusOnHide: true,
83401
+ role: "dialog"
83199
83402
  },
83200
83403
  /* @__PURE__ */ React76.createElement(
83201
- DateFilterTokenText,
83404
+ DateQuickFilterLabel,
83202
83405
  {
83203
- headerName: columnDefinition.headerName,
83204
- value: filterValue
83406
+ headerName,
83407
+ onClear,
83408
+ value: selectedDate,
83409
+ disabled
83205
83410
  }
83206
83411
  )
83207
83412
  );
83208
83413
  }
83209
- if (columnDefinition.filterRenderer === NumberFilterRenderer) {
83210
- return columnDefinition == null ? void 0 : columnDefinition.headerName;
83211
- }
83212
- if (Array.isArray(filterValue)) {
83213
- if (filterValue.length === 0) {
83214
- return columnDefinition == null ? void 0 : columnDefinition.headerName;
83215
- }
83216
- if (filterValue.length === 1) {
83217
- return `${columnDefinition == null ? void 0 : columnDefinition.headerName}: ${getLabel(
83218
- (_d = columnDefinition.filterProps) == null ? void 0 : _d.getLabel,
83219
- filterValue[0]
83220
- )}`;
83414
+ );
83415
+ function DateFilter3({
83416
+ // TODO: talk to design about potential loading UX for this.
83417
+ // core DateSelect doesn't have it
83418
+ // loading,
83419
+ headerName,
83420
+ onChange,
83421
+ selectionType = "either",
83422
+ value,
83423
+ disabled,
83424
+ ...props
83425
+ }) {
83426
+ const [selectedValue, setSelectedValue] = React76.useState({
83427
+ type: selectionType === "either" ? "range" : selectionType
83428
+ });
83429
+ React76.useEffect(() => {
83430
+ const parsedValue = value.map((date) => {
83431
+ if (isDate(date)) {
83432
+ return date;
83433
+ }
83434
+ return parseISO(String(date));
83435
+ });
83436
+ const type = isSameDay(parsedValue[0], parsedValue[1]) ? "single" : "range";
83437
+ setSelectedValue({ type, start: parsedValue[0], end: parsedValue[1] });
83438
+ }, [value]);
83439
+ const dateRangeEndDateRef = React76.useRef(null);
83440
+ function dateFilterOnChange(date, position) {
83441
+ const newValue = getValueFromSelection(selectedValue, date, position);
83442
+ setSelectedValue(newValue);
83443
+ if (isValidDateSelection(newValue)) {
83444
+ onChange(
83445
+ newValue.start || newValue.end ? [
83446
+ newValue.start,
83447
+ newValue.type === "single" ? newValue.start : newValue.end
83448
+ ] : []
83449
+ );
83221
83450
  }
83222
- return `${columnDefinition == null ? void 0 : columnDefinition.headerName}: (${filterValue.length})`;
83223
- }
83224
- return columnDefinition == null ? void 0 : columnDefinition.headerName;
83225
- }
83226
- var ensureArray = (input) => {
83227
- if (input === null) {
83228
- return [];
83229
- }
83230
- return Array.isArray(input) ? input : [input];
83231
- };
83232
- var FiltersPanelToggleButton = ({ hasSelectedFilters, hasDefinedFilters }) => {
83233
- const I18n = useI18nContext();
83234
- const { contextPanel } = useInternalTableContext();
83235
- const hasNoContent = useTableHasNoContent();
83236
- if (!hasDefinedFilters) {
83237
- return null;
83238
83451
  }
83239
- return /* @__PURE__ */ React76.createElement(
83240
- EmptyResultsControlTooltip,
83241
- {
83242
- featureI18nKey: "featureFilter",
83243
- enabled: hasNoContent
83452
+ const onSelectionTypeChange = React76.useCallback(
83453
+ (newSelectionType) => {
83454
+ setSelectedValue({ type: newSelectionType });
83244
83455
  },
83245
- /* @__PURE__ */ React76.createElement(
83246
- ToggleButton,
83247
- {
83248
- "data-qa": "data-table-show-filters-button",
83249
- disabled: hasNoContent,
83250
- icon: /* @__PURE__ */ React76.createElement(FilterIcon, null),
83251
- onClick: () => {
83252
- if (contextPanel.content === "filters") {
83253
- contextPanel.hide();
83254
- } else {
83255
- contextPanel.show("filters");
83256
- }
83257
- },
83258
- selected: contextPanel.content === "filters"
83259
- },
83260
- hasSelectedFilters ? I18n.t("dataTable.filters.moreFilters") : I18n.t("dataTable.filters.filters")
83261
- )
83456
+ [setSelectedValue]
83262
83457
  );
83263
- };
83264
- var ServerSideFiltersPanelToggleButton = () => {
83265
- const {
83266
- filterStorage: { hasDefinedFilters, hasSelectedFilters }
83267
- } = useInternalTableContext();
83268
- return /* @__PURE__ */ React76.createElement(
83269
- FiltersPanelToggleButton,
83458
+ function dateRangeAfterHide() {
83459
+ var _a;
83460
+ if (selectedValue.type === "range" && isDate(selectedValue.start) && !isDate(selectedValue.end)) {
83461
+ (_a = dateRangeEndDateRef.current) == null ? void 0 : _a.click();
83462
+ }
83463
+ return true;
83464
+ }
83465
+ return /* @__PURE__ */ React76.createElement(FlexList, { space: "xs", "data-qa": props["data-qa"] }, /* @__PURE__ */ React76.createElement(
83466
+ DateFilterSelect2,
83270
83467
  {
83271
- hasDefinedFilters,
83272
- hasSelectedFilters
83468
+ afterHide: dateRangeAfterHide,
83469
+ headerName,
83470
+ onChange: dateFilterOnChange,
83471
+ position: "start",
83472
+ selectedValue,
83473
+ selectionType,
83474
+ setSelectionType: onSelectionTypeChange,
83475
+ disabled
83273
83476
  }
83274
- );
83275
- };
83276
- var ClientSideFiltersPanelToggleButton = () => {
83277
- const { filterState } = useInternalTableContext();
83278
- const activeFilters = React76.useMemo(() => {
83279
- return filterState.allAvailableFilters.filter(({ instance }) => {
83280
- return instance.isFilterActive();
83281
- });
83282
- }, [filterState.allAvailableFilters]);
83283
- return /* @__PURE__ */ React76.createElement(
83284
- FiltersPanelToggleButton,
83477
+ ), selectedValue.type === "range" && /* @__PURE__ */ React76.createElement(
83478
+ DateFilterSelect2,
83285
83479
  {
83286
- hasDefinedFilters: filterState.allAvailableFilters.length > 0,
83287
- hasSelectedFilters: activeFilters.length > 0
83480
+ headerName,
83481
+ onChange: dateFilterOnChange,
83482
+ position: "end",
83483
+ ref: dateRangeEndDateRef,
83484
+ selectedValue,
83485
+ selectionType,
83486
+ setSelectionType: onSelectionTypeChange,
83487
+ disabled
83288
83488
  }
83289
- );
83290
- };
83291
-
83292
- // src/QuickControls/QuickFilters.tsx
83293
- var FilterIcon = () => {
83294
- return /* @__PURE__ */ React76.createElement(
83295
- "svg",
83489
+ ));
83490
+ }
83491
+ function ServerSideQuickDateFilterRenderer({
83492
+ columnDefinition,
83493
+ disabled
83494
+ }) {
83495
+ var _a;
83496
+ const { onChange, value = [] } = useServerSideFilter({
83497
+ columnDefinition
83498
+ });
83499
+ const colDef = columnDefinition;
83500
+ return /* @__PURE__ */ React76.createElement(OptionalDateTimeProvider2, { timeZone: colDef.timeZone }, /* @__PURE__ */ React76.createElement(
83501
+ DateFilter3,
83296
83502
  {
83297
- focusable: false,
83298
- width: "16",
83299
- height: "16",
83300
- viewBox: "0 0 20 20",
83301
- fill: "none",
83302
- xmlns: "http://www.w3.org/2000/svg"
83303
- },
83304
- /* @__PURE__ */ React76.createElement(
83305
- "path",
83306
- {
83307
- fillRule: "evenodd",
83308
- clipRule: "evenodd",
83309
- d: "M3 5V7H17V5H3ZM8 15H12V13H8V15ZM15 11H5V9H15V11Z",
83310
- fill: "currentColor"
83311
- }
83312
- )
83503
+ selectionType: ((_a = colDef.filterProps) == null ? void 0 : _a.selectionType) ?? "either",
83504
+ headerName: colDef.headerName,
83505
+ disabled,
83506
+ onChange: (selected) => {
83507
+ onChange(
83508
+ selected.map((date) => {
83509
+ return date ? {
83510
+ // future extensions can go here (month, day, year keys etc)
83511
+ date
83512
+ } : (
83513
+ // TODO: refactor out date-specific getId stuff from useServerSideFilterStorage
83514
+ date
83515
+ );
83516
+ })
83517
+ );
83518
+ },
83519
+ value: value.map((option) => option ? option.date : option)
83520
+ }
83521
+ ));
83522
+ }
83523
+ var QuickDateFilterRenderer = (props) => {
83524
+ const { onServerSideDataRequest } = useInternalTableContext();
83525
+ if (onServerSideDataRequest) {
83526
+ return /* @__PURE__ */ React76.createElement(ServerSideQuickDateFilterRenderer, { ...props });
83527
+ }
83528
+ logger.error(
83529
+ "Warning: Date Filters are currently only implemented for the serverside row model"
83313
83530
  );
83531
+ return null;
83314
83532
  };
83315
- var StyledFilterTokenWrapper = styled4.div`
83316
- ${UNSAFE_StyledFilterTokenLabel} {
83317
- font-weight: ${typographyWeights.semibold};
83533
+ var dateInputLocales = {
83534
+ "fr-CA": {
83535
+ placeholders: { day: "jj", month: "mm", year: "aaaa" }
83536
+ },
83537
+ "fr-FR": {
83538
+ placeholders: { day: "jj", month: "mm", year: "aaaa" }
83539
+ },
83540
+ es: {
83541
+ placeholders: { day: "dd", month: "mm", year: "aaaa" }
83542
+ },
83543
+ "es-ES": {
83544
+ placeholders: { day: "dd", month: "mm", year: "aaaa" }
83545
+ },
83546
+ pt: {
83547
+ placeholders: { day: "dd", month: "mm", year: "aaaa" }
83548
+ },
83549
+ "is-IS": {
83550
+ placeholders: { day: "dd", month: "mm", year: "\xE1\xE1\xE1\xE1" }
83551
+ },
83552
+ "de-DE": {
83553
+ placeholders: { day: "tt", month: "MM", year: "jjjj" }
83318
83554
  }
83319
- `;
83320
- var ClientSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
83321
- const { tableRef, filterState, getColumnDefinition } = useInternalTableContext();
83322
- const hasNoContent = useTableHasNoContent();
83323
- const { quickFilters, tokens } = React76.useMemo(() => {
83324
- return filterState.allAvailableFilters.reduce(
83325
- (acc, filter) => {
83326
- const colDef = getColumnDefinition(filter.field);
83327
- if (!colDef) {
83328
- return acc;
83329
- }
83330
- if (colDef == null ? void 0 : colDef.quickFilterRenderer) {
83331
- return { ...acc, quickFilters: [...acc.quickFilters, filter] };
83332
- } else if (filter.instance.isFilterActive()) {
83333
- return { ...acc, tokens: [...acc.tokens, filter] };
83334
- }
83335
- return acc;
83336
- },
83555
+ };
83556
+ var DateQuickFilterLabel = React76.forwardRef(({ headerName, onClear, value, disabled }, ref) => {
83557
+ var _a;
83558
+ const dateTime = useDateTime();
83559
+ const i18n = useI18nContext();
83560
+ const placeholders = ((_a = dateInputLocales[i18n.locale]) == null ? void 0 : _a.placeholders) || {
83561
+ day: "dd",
83562
+ month: "mm",
83563
+ year: "yyyy"
83564
+ };
83565
+ if (value !== void 0 && isDate(value)) {
83566
+ return /* @__PURE__ */ React76.createElement(
83567
+ QuickFilterLabel,
83337
83568
  {
83338
- quickFilters: [],
83339
- tokens: []
83569
+ enabled: true,
83570
+ disabled,
83571
+ label: `${headerName}: ${dateTime.format(value, "numeric-date")}`,
83572
+ onClear,
83573
+ ref
83340
83574
  }
83341
83575
  );
83342
- }, [filterState.allAvailableFilters, getColumnDefinition]);
83343
- const isEmpty2 = quickFilters.length === 0 && tokens.length === 0;
83344
- return isEmpty2 ? null : /* @__PURE__ */ React76.createElement(
83345
- FlexList,
83576
+ }
83577
+ return /* @__PURE__ */ React76.createElement(
83578
+ QuickFilterLabel,
83346
83579
  {
83347
- padding: "xs none",
83348
- size: "none",
83349
- alignItems: "center",
83350
- wrap: "wrap",
83351
- gap: "sm"
83352
- },
83353
- quickFilters.map((filter) => {
83354
- const colDef = getColumnDefinition(filter.field);
83355
- const QuickFilter = colDef == null ? void 0 : colDef.quickFilterRenderer;
83356
- if (!colDef || !QuickFilter) {
83357
- return null;
83358
- }
83359
- return /* @__PURE__ */ React76.createElement(
83360
- EmptyResultsControlTooltip,
83361
- {
83362
- featureI18nKey: "featureQuickFilter",
83363
- enabled: hasNoContent
83364
- },
83365
- /* @__PURE__ */ React76.createElement(
83366
- QuickFilter,
83367
- {
83368
- key: filter.field,
83369
- filter,
83370
- columnDefinition: colDef,
83371
- disabled: hasNoContent,
83372
- onChange: (value) => {
83373
- var _a;
83374
- return (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.applyListFilter(filter.field, value);
83375
- },
83376
- onRemove: () => {
83377
- var _a;
83378
- return (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.removeFilter(filter.field);
83379
- },
83380
- overlayMatchesTriggerWidth
83381
- }
83382
- )
83383
- );
83384
- }),
83385
- tokens.map((filter) => {
83386
- const colDef = getColumnDefinition(filter.field);
83387
- if (!colDef) {
83388
- return null;
83389
- }
83390
- return /* @__PURE__ */ React76.createElement(StyledFilterTokenWrapper, { key: filter.field }, /* @__PURE__ */ React76.createElement(UNSAFE_FilterToken, null, /* @__PURE__ */ React76.createElement(UNSAFE_FilterToken.Label, null, getFilterTokenText(colDef, filter.filterValues)), /* @__PURE__ */ React76.createElement(
83391
- UNSAFE_FilterToken.Remove,
83392
- {
83393
- onClick: () => {
83394
- var _a;
83395
- return (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.removeFilter(filter.field);
83396
- }
83397
- }
83398
- )));
83399
- })
83580
+ enabled: false,
83581
+ disabled,
83582
+ label: `${headerName}: ${getDatePlaceholder(i18n.locale, placeholders)}`,
83583
+ ref
83584
+ }
83400
83585
  );
83401
- };
83402
- var ServerSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
83403
- const {
83404
- filterStorage: {
83405
- hasDefinedFilters,
83406
- onClearFilter,
83407
- possibleFilters,
83408
- selectedFilters,
83409
- getListFilter
83410
- },
83411
- getColumnDefinition
83412
- } = useInternalTableContext();
83413
- const hasNoContent = useTableHasNoContent();
83414
- const { quickFilterNames, tokenNames } = React76.useMemo(() => {
83415
- const appliedFilterNames = Object.keys(selectedFilters);
83416
- const isActiveFilter = (filterName) => appliedFilterNames.includes(filterName);
83417
- return possibleFilters.reduce(
83418
- (acc, filterName) => {
83419
- const colDef = getColumnDefinition(filterName);
83420
- if (!colDef) {
83421
- return acc;
83422
- }
83423
- if (colDef == null ? void 0 : colDef.quickFilterRenderer) {
83424
- return {
83425
- ...acc,
83426
- quickFilterNames: [...acc.quickFilterNames, filterName]
83427
- };
83428
- } else if (isActiveFilter(filterName)) {
83429
- return { ...acc, tokenNames: [...acc.tokenNames, filterName] };
83430
- }
83431
- return acc;
83432
- },
83433
- {
83434
- quickFilterNames: [],
83435
- tokenNames: []
83436
- }
83437
- );
83438
- }, [possibleFilters, selectedFilters, getColumnDefinition]);
83439
- if (!hasDefinedFilters) {
83440
- return null;
83441
- }
83442
- const isEmpty2 = quickFilterNames.length === 0 && tokenNames.length === 0;
83443
- return isEmpty2 ? null : /* @__PURE__ */ React76.createElement(
83444
- FlexList,
83445
- {
83446
- padding: "xs none",
83447
- size: "none",
83448
- alignItems: "center",
83449
- wrap: "wrap",
83450
- gap: "sm",
83451
- "data-qa": "data-table-quick-filters"
83452
- },
83453
- quickFilterNames.map((fieldName) => {
83454
- const colDef = getColumnDefinition(fieldName);
83455
- const QuickFilter = colDef == null ? void 0 : colDef.quickFilterRenderer;
83456
- if (!colDef || !QuickFilter) {
83457
- return null;
83458
- }
83459
- return /* @__PURE__ */ React76.createElement(
83460
- EmptyResultsControlTooltip,
83461
- {
83462
- featureI18nKey: "featureQuickFilter",
83463
- enabled: hasNoContent
83464
- },
83465
- /* @__PURE__ */ React76.createElement(
83466
- QuickFilter,
83467
- {
83468
- key: fieldName,
83469
- columnDefinition: colDef,
83470
- disabled: hasNoContent,
83471
- overlayMatchesTriggerWidth
83472
- }
83473
- )
83474
- );
83475
- }),
83476
- tokenNames.map((fieldName) => {
83477
- const colDef = getColumnDefinition(fieldName);
83478
- if (!colDef) {
83479
- return null;
83480
- }
83481
- const filter = getListFilter(fieldName);
83482
- return /* @__PURE__ */ React76.createElement(StyledFilterTokenWrapper, { key: fieldName }, /* @__PURE__ */ React76.createElement(UNSAFE_FilterToken, null, /* @__PURE__ */ React76.createElement(UNSAFE_FilterToken.Label, null, getFilterTokenText(
83483
- colDef,
83484
- colDef.filterRenderer === DateFilterRenderer_default ? filter.value : filter.selected
83485
- )), /* @__PURE__ */ React76.createElement(
83486
- UNSAFE_FilterToken.Remove,
83487
- {
83488
- "data-qa": "data-table-quick-filter-remove-token",
83489
- onClick: () => onClearFilter(fieldName)
83490
- }
83491
- )));
83492
- })
83493
- );
83494
- };
83495
- var QuickFilters = ({ overlayMatchesTriggerWidth }) => {
83496
- const { onServerSideDataRequest } = useInternalTableContext();
83497
- if (onServerSideDataRequest) {
83498
- return /* @__PURE__ */ React76.createElement(
83499
- ServerSideQuickFilters,
83500
- {
83501
- overlayMatchesTriggerWidth
83502
- }
83503
- );
83504
- }
83505
- return /* @__PURE__ */ React76.createElement(
83506
- ClientSideQuickFilters,
83507
- {
83508
- overlayMatchesTriggerWidth
83509
- }
83510
- );
83511
- };
83512
- var FiltersPanelButton = () => {
83513
- const { onServerSideDataRequest } = useInternalTableContext();
83514
- if (onServerSideDataRequest) {
83515
- return /* @__PURE__ */ React76.createElement(ServerSideFiltersPanelToggleButton, null);
83516
- }
83517
- return /* @__PURE__ */ React76.createElement(ClientSideFiltersPanelToggleButton, null);
83518
- };
83519
- var RowGroupSelector = ({ localeText }) => {
83520
- const {
83521
- columnDefinitions: _columnDefinitions,
83522
- columnApi,
83523
- gridApi,
83524
- tableRef
83525
- } = useInternalTableContext();
83526
- const hasNoContent = useTableHasNoContent();
83527
- const [columnDefinitions, setColumnDefinitions] = React76.useState(_columnDefinitions);
83528
- const groupableColumns = React76.useMemo(
83529
- () => mapColumnsToOptions(
83530
- columnDefinitions.filter((column2) => column2.enableRowGroup)
83531
- ),
83532
- [columnDefinitions]
83533
- );
83534
- const groupedColumns = React76.useMemo(() => {
83535
- const rowGrouping = (columnApi == null ? void 0 : columnApi.getRowGroupColumns()) ?? [];
83536
- return rowGrouping.map((column2) => {
83537
- const colDef = column2.getColDef();
83538
- return transformToColumnDefinition(colDef);
83539
- });
83540
- }, [columnDefinitions]);
83541
- const selectedColumns = React76.useMemo(
83542
- () => mapColumnsToOptions(groupedColumns),
83543
- [groupedColumns]
83544
- );
83545
- const onGroupedClear = React76.useCallback(() => {
83546
- var _a;
83547
- (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.setRowGrouping([]);
83548
- }, [tableRef]);
83549
- const onGroupedRowChange = React76.useCallback(
83550
- (newValue) => {
83551
- var _a;
83552
- const fields = newValue.map((val) => {
83553
- return val.id;
83554
- });
83555
- if (!equals(selectedColumns, newValue)) {
83556
- (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.setRowGrouping(fields);
83557
- }
83558
- },
83559
- [selectedColumns]
83560
- );
83561
- React76.useEffect(() => {
83562
- function onDisplayedColumnsChanged(event) {
83563
- const agColumnDefs = event.api.getColumnDefs();
83564
- if (agColumnDefs == null ? void 0 : agColumnDefs.length) {
83565
- const flattenedAgColDefs = flattenColDefs(event.api.getColumnDefs());
83566
- const dataTableColumnDefinitions = flattenedAgColDefs.map(
83567
- transformToColumnDefinition
83568
- );
83569
- setColumnDefinitions(dataTableColumnDefinitions);
83570
- }
83571
- }
83572
- gridApi == null ? void 0 : gridApi.addEventListener(
83573
- "displayedColumnsChanged",
83574
- onDisplayedColumnsChanged
83575
- );
83576
- return () => {
83577
- removeEventListenerFromGrid(
83578
- "displayedColumnsChanged",
83579
- onDisplayedColumnsChanged,
83580
- gridApi
83581
- );
83582
- };
83583
- }, [gridApi]);
83584
- if (groupableColumns.length === 0) {
83585
- return null;
83586
- }
83587
- return /* @__PURE__ */ React76.createElement(
83588
- EmptyResultsControlTooltip,
83589
- {
83590
- featureI18nKey: "featureGroupBy",
83591
- enabled: hasNoContent
83592
- },
83593
- /* @__PURE__ */ React76.createElement(
83594
- GroupBySelect,
83595
- {
83596
- isDisabled: hasNoContent,
83597
- localeText,
83598
- onBlur: onGroupedRowChange,
83599
- onClear: onGroupedClear,
83600
- options: groupableColumns,
83601
- selected: selectedColumns
83602
- }
83603
- )
83604
- );
83605
- };
83606
- function mapColumnsToOptions(columnDefinitions) {
83607
- return columnDefinitions.map((col) => {
83608
- return {
83609
- label: col.headerName,
83610
- id: col.field,
83611
- key: col.field,
83612
- group: col.columnGroupName
83613
- };
83614
- });
83615
- }
83616
- var cx21 = classnames.bind(quickControlsStyles_default);
83617
- var ClientSideSearch = ({
83618
- onSearch,
83619
- placeholder
83620
- }) => {
83621
- var _a;
83622
- const [internalValue, setInternalValue] = React76.useState("");
83623
- const { tableRef } = useInternalTableContext();
83624
- const hasNoContent = useTableHasNoContent();
83625
- const I18n = useI18nContext();
83626
- const debouncedSetSearchValue = React76.useCallback(
83627
- debounce5((value) => {
83628
- var _a2;
83629
- (_a2 = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a2.setSearchValue(value);
83630
- }, 250),
83631
- [(_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.setSearchValue]
83632
- );
83633
- const onChange = React76.useCallback(
83634
- (value, event) => {
83635
- setInternalValue(value);
83636
- if (onSearch) {
83637
- onSearch(event);
83638
- } else {
83639
- debouncedSetSearchValue(value);
83640
- }
83641
- },
83642
- [debouncedSetSearchValue, onSearch]
83643
- );
83644
- return /* @__PURE__ */ React76.createElement(EmptyResultsControlTooltip, { hasSearch: true, enabled: hasNoContent }, /* @__PURE__ */ React76.createElement(
83645
- Typeahead,
83646
- {
83647
- disabled: hasNoContent,
83648
- "data-qa": "data-table-search",
83649
- value: internalValue,
83650
- className: cx21("search", {
83651
- "search--empty": !internalValue.length
83652
- }),
83653
- onChange,
83654
- placeholder: placeholder || I18n.t("dataTable.search")
83655
- }
83656
- ));
83657
- };
83658
- var Search = (props) => {
83659
- const { onServerSideDataRequest } = useInternalTableContext();
83660
- if (onServerSideDataRequest) {
83661
- return /* @__PURE__ */ React76.createElement(ServerSideSearch, { ...props });
83662
- }
83663
- return /* @__PURE__ */ React76.createElement(ClientSideSearch, { ...props });
83664
- };
83665
-
83666
- // src/QuickControls/QuickControls.tsx
83667
- var QuickControls = (props) => {
83668
- const I18n = useI18nContext();
83669
- if (props.children) {
83670
- return /* @__PURE__ */ React76.createElement(
83671
- Box,
83672
- {
83673
- "data-qa": "data-table-quick-controls",
83674
- padding: "xs none",
83675
- style: props.style
83676
- },
83677
- props.children
83678
- );
83679
- }
83680
- return /* @__PURE__ */ React76.createElement(Box, { padding: "xs none", style: props.style }, /* @__PURE__ */ React76.createElement(Box, { padding: "xs none", display: "flex-row", justifyContent: "space-between" }, /* @__PURE__ */ React76.createElement(FlexList, { size: "xs", alignItems: "center", marginRight: "sm" }, /* @__PURE__ */ React76.createElement(
83681
- Search,
83682
- {
83683
- onSearch: props.onSearch,
83684
- placeholder: props.placeholder,
83685
- disabled: props.disabledSearch
83686
- }
83687
- ), /* @__PURE__ */ React76.createElement(FiltersPanelButton, null)), /* @__PURE__ */ React76.createElement(FlexList, { size: "xs", alignItems: "center" }, /* @__PURE__ */ React76.createElement(
83688
- RowGroupSelector,
83689
- {
83690
- localeText: {
83691
- reset: I18n.t("dataTable.tableSettings.reset"),
83692
- placeholder: I18n.t("dataTable.tableSettings.selectColumnGroup"),
83693
- selectedItemsPrefix: I18n.t("dataTable.tableSettings.groupBy")
83694
- }
83695
- }
83696
- ), /* @__PURE__ */ React76.createElement(ConfigPanelButton, null))), /* @__PURE__ */ React76.createElement(
83697
- QuickFilters,
83698
- {
83699
- overlayMatchesTriggerWidth: props.filterOverlayMatchesTriggerWidth
83700
- }
83701
- ));
83702
- };
83703
-
83704
- // src/utils/addSubcomponents.ts
83705
- var addSubcomponents = (subs, parent) => {
83706
- const assigned = parent;
83707
- Object.keys(subs).forEach((key) => {
83708
- assigned[key] = subs[key];
83709
- });
83710
- return assigned;
83711
- };
83712
-
83713
- // src/ClientSideDataTable.tsx
83714
- var ClientSideDataTable = ({
83715
- analytics,
83716
- children,
83717
- columnDefinitions: _columnDefinitions,
83718
- customBulkEditorFields,
83719
- enableDynamicRowHeight,
83720
- enableGroupEditAndValidation,
83721
- filterGroups,
83722
- getRowId,
83723
- initialTableConfig: _initialTableConfig,
83724
- onBulkEditUpdate,
83725
- onTableConfigChange,
83726
- translations: translations2 = {},
83727
- enableCellTextSelection,
83728
- localStoragePersistenceKey
83729
- }) => {
83730
- return /* @__PURE__ */ React76.createElement(
83731
- DataTable,
83732
- {
83733
- analytics,
83734
- columnDefinitions: _columnDefinitions,
83735
- enableGroupEditAndValidation,
83736
- enableDynamicRowHeight,
83737
- filterGroups,
83738
- getRowId,
83739
- initialTableConfig: _initialTableConfig,
83740
- onTableConfigChange,
83741
- onBulkEditUpdate,
83742
- showExpandCollapseAllToggle: true,
83743
- translations: translations2,
83744
- localStoragePersistenceKey,
83745
- customBulkEditorFields,
83746
- enableCellTextSelection
83747
- },
83748
- children
83749
- );
83750
- };
83751
- var Table2 = (props) => {
83752
- const internalTableContext = useInternalTableContext();
83753
- React76.useEffect(() => {
83754
- var _a;
83755
- internalTableContext.setTotalRowCount(((_a = props.rows) == null ? void 0 : _a.length) ?? 0);
83756
- }, [props.rows]);
83757
- return /* @__PURE__ */ React76.createElement(Table, { ...props, modules: [ClientSideRowModelModule] });
83758
- };
83759
- BulkActions.displayName = "ClientSideDataTable.BulkActions";
83760
- ConfigPanelButton.displayName = "ClientSideDataTable.ConfigPanelButton";
83761
- ContextPanel.displayName = "ClientSideDataTable.ContextPanel";
83762
- QuickControls.displayName = "ClientSideDataTable.QuickControls";
83763
- QuickFilters.displayName = "ClientSideDataTable.QuickFilters";
83764
- RowGroupSelector.displayName = "ClientSideDataTable.RowGroupSelector";
83765
- Search.displayName = "ClientSideDataTable.Search";
83766
- Table2.displayName = "ClientSideDataTable.Table";
83767
- FiltersPanel.displayName = "ClientSideDataTable.FiltersPanel";
83768
- var ClientSideDataTable_default = addSubcomponents(
83769
- {
83770
- BulkActions,
83771
- BulkEditActionButton,
83772
- ConfigPanelButton,
83773
- ContextPanel,
83774
- QuickControls,
83775
- QuickFilters,
83776
- RowGroupSelector,
83777
- Search,
83778
- Table: Table2,
83779
- FiltersPanel,
83780
- FiltersPanelButton
83781
- },
83782
- ClientSideDataTable
83783
- );
83784
- var QuickFilterLabel = React76.forwardRef(({ enabled, ...props }, ref) => {
83785
- return /* @__PURE__ */ React76.createElement(StyledQuickFilterLabel, { $enabled: enabled }, /* @__PURE__ */ React76.createElement(SelectButton, { ref, ...props }));
83786
- });
83787
- var StyledQuickFilterLabel = styled4.div`
83788
- ${StyledSelectButton} {
83789
- width: auto;
83790
- max-width: 380px;
83791
- ${({ $enabled }) => $enabled && css$1`
83792
- background: ${colors.blue96};
83793
- border-color: ${colors.blue96};
83794
- font-weight: ${typographyWeights.semibold};
83795
- &:hover {
83796
- background: ${colors.blue90};
83797
- border-color: ${colors.blue90};
83798
- }
83799
- ${StyledSelectButtonLabel} {
83800
- color: ${colors.blue45};
83801
- }
83802
- ${StyledButton} {
83803
- color: ${colors.blue45};
83804
- &:hover {
83805
- background: white;
83806
- }
83807
- }
83808
- ${StyledSelectArrow} {
83809
- svg {
83810
- fill: ${colors.blue45};
83811
- }
83812
- }
83813
- `}
83814
- }
83815
- `;
83816
-
83817
- // src/QuickFilterRenderers/DateQuickFilterRenderer.tsx
83818
- function getPlacement2(currentSelectionType, position) {
83819
- if (currentSelectionType === "single") {
83820
- return "bottom-left";
83821
- }
83822
- if (position === "start") {
83823
- return "bottom-left";
83824
- }
83825
- return "bottom-right";
83826
- }
83827
- var OptionalDateTimeProvider2 = ({ timeZone, children }) => {
83828
- return timeZone ? /* @__PURE__ */ React76.createElement(DateTimeProvider, { timeZone }, children) : /* @__PURE__ */ React76.createElement(React76.Fragment, null, children);
83829
- };
83830
- var DateFilterSelect2 = React76.forwardRef(
83831
- ({
83832
- afterHide,
83833
- selectionType = "either",
83834
- headerName,
83835
- disabled,
83836
- onChange,
83837
- position,
83838
- selectedValue,
83839
- setSelectionType = () => {
83840
- }
83841
- }, ref) => {
83842
- const dateTime = useDateTime();
83843
- const { start, end } = selectedValue;
83844
- const selectedDate = (position === "start" ? start : end) ?? void 0;
83845
- const [displayed, setDisplayed2] = React76.useState(
83846
- // @ts-ignore
83847
- selectedDate || dateTime.newDate()
83848
- );
83849
- React76.useEffect(() => {
83850
- if (isDate(start) && !isDate(end) && position === "end") {
83851
- setDisplayed2(start);
83852
- }
83853
- if (!isDate(start) && isDate(end) && position === "start") {
83854
- setDisplayed2(end);
83855
- }
83856
- }, [position, selectedValue]);
83857
- function onClear() {
83858
- onChange(null, position);
83859
- }
83860
- const clearRef = React76.useRef(null);
83861
- const monthRef = React76.useRef(null);
83862
- const yearRef = React76.useRef(null);
83863
- const overlay = /* @__PURE__ */ React76.createElement(
83864
- DateFilterOverlay,
83865
- {
83866
- displayDate: displayed,
83867
- selectionType,
83868
- monthRef,
83869
- onSelect: (date) => {
83870
- onChange(date, position);
83871
- },
83872
- position,
83873
- selectedValue,
83874
- setDisplayDate: setDisplayed2,
83875
- setSelectionType,
83876
- yearRef
83877
- }
83878
- );
83879
- return /* @__PURE__ */ React76.createElement(
83880
- OverlayTrigger,
83881
- {
83882
- afterHide,
83883
- autoFocus: true,
83884
- beforeShow: (e) => {
83885
- if (isEventSource(clearRef, e)) {
83886
- return false;
83887
- }
83888
- return true;
83889
- },
83890
- clickOutsideIgnoreRefs: [monthRef, yearRef],
83891
- overlay,
83892
- placement: getPlacement2(selectionType, position),
83893
- ref,
83894
- restoreFocusOnHide: true,
83895
- role: "dialog"
83896
- },
83897
- /* @__PURE__ */ React76.createElement(
83898
- DateQuickFilterLabel,
83899
- {
83900
- headerName,
83901
- onClear,
83902
- value: selectedDate,
83903
- disabled
83904
- }
83905
- )
83906
- );
83907
- }
83908
- );
83909
- function DateFilter3({
83910
- // TODO: talk to design about potential loading UX for this.
83911
- // core DateSelect doesn't have it
83912
- // loading,
83913
- headerName,
83914
- onChange,
83915
- selectionType = "either",
83916
- value,
83917
- disabled,
83918
- ...props
83919
- }) {
83920
- const [selectedValue, setSelectedValue] = React76.useState({
83921
- type: selectionType === "either" ? "range" : selectionType
83922
- });
83923
- React76.useEffect(() => {
83924
- const parsedValue = value.map((date) => {
83925
- if (isDate(date)) {
83926
- return date;
83927
- }
83928
- return parseISO(String(date));
83929
- });
83930
- const type = isSameDay(parsedValue[0], parsedValue[1]) ? "single" : "range";
83931
- setSelectedValue({ type, start: parsedValue[0], end: parsedValue[1] });
83932
- }, [value]);
83933
- const dateRangeEndDateRef = React76.useRef(null);
83934
- function dateFilterOnChange(date, position) {
83935
- const newValue = getValueFromSelection(selectedValue, date, position);
83936
- setSelectedValue(newValue);
83937
- if (isValidDateSelection(newValue)) {
83938
- onChange(
83939
- newValue.start || newValue.end ? [
83940
- newValue.start,
83941
- newValue.type === "single" ? newValue.start : newValue.end
83942
- ] : []
83943
- );
83944
- }
83945
- }
83946
- const onSelectionTypeChange = React76.useCallback(
83947
- (newSelectionType) => {
83948
- setSelectedValue({ type: newSelectionType });
83949
- },
83950
- [setSelectedValue]
83951
- );
83952
- function dateRangeAfterHide() {
83953
- var _a;
83954
- if (selectedValue.type === "range" && isDate(selectedValue.start) && !isDate(selectedValue.end)) {
83955
- (_a = dateRangeEndDateRef.current) == null ? void 0 : _a.click();
83956
- }
83957
- return true;
83958
- }
83959
- return /* @__PURE__ */ React76.createElement(FlexList, { space: "xs", "data-qa": props["data-qa"] }, /* @__PURE__ */ React76.createElement(
83960
- DateFilterSelect2,
83961
- {
83962
- afterHide: dateRangeAfterHide,
83963
- headerName,
83964
- onChange: dateFilterOnChange,
83965
- position: "start",
83966
- selectedValue,
83967
- selectionType,
83968
- setSelectionType: onSelectionTypeChange,
83969
- disabled
83970
- }
83971
- ), selectedValue.type === "range" && /* @__PURE__ */ React76.createElement(
83972
- DateFilterSelect2,
83973
- {
83974
- headerName,
83975
- onChange: dateFilterOnChange,
83976
- position: "end",
83977
- ref: dateRangeEndDateRef,
83978
- selectedValue,
83979
- selectionType,
83980
- setSelectionType: onSelectionTypeChange,
83981
- disabled
83982
- }
83983
- ));
83984
- }
83985
- function ServerSideQuickDateFilterRenderer({
83986
- columnDefinition,
83987
- disabled
83988
- }) {
83989
- var _a;
83990
- const { onChange, value = [] } = useServerSideFilter({
83991
- columnDefinition
83992
- });
83993
- const colDef = columnDefinition;
83994
- return /* @__PURE__ */ React76.createElement(OptionalDateTimeProvider2, { timeZone: colDef.timeZone }, /* @__PURE__ */ React76.createElement(
83995
- DateFilter3,
83996
- {
83997
- selectionType: ((_a = colDef.filterProps) == null ? void 0 : _a.selectionType) ?? "either",
83998
- headerName: colDef.headerName,
83999
- disabled,
84000
- onChange: (selected) => {
84001
- onChange(
84002
- selected.map((date) => {
84003
- return date ? {
84004
- // future extensions can go here (month, day, year keys etc)
84005
- date
84006
- } : (
84007
- // TODO: refactor out date-specific getId stuff from useServerSideFilterStorage
84008
- date
84009
- );
84010
- })
84011
- );
84012
- },
84013
- value: value.map((option) => option ? option.date : option)
84014
- }
84015
- ));
84016
- }
84017
- var QuickDateFilterRenderer = (props) => {
84018
- const { onServerSideDataRequest } = useInternalTableContext();
84019
- if (onServerSideDataRequest) {
84020
- return /* @__PURE__ */ React76.createElement(ServerSideQuickDateFilterRenderer, { ...props });
84021
- }
84022
- logger.error(
84023
- "Warning: Date Filters are currently only implemented for the serverside row model"
84024
- );
84025
- return null;
84026
- };
84027
- var dateInputLocales = {
84028
- "fr-CA": {
84029
- placeholders: { day: "jj", month: "mm", year: "aaaa" }
84030
- },
84031
- "fr-FR": {
84032
- placeholders: { day: "jj", month: "mm", year: "aaaa" }
84033
- },
84034
- es: {
84035
- placeholders: { day: "dd", month: "mm", year: "aaaa" }
84036
- },
84037
- "es-ES": {
84038
- placeholders: { day: "dd", month: "mm", year: "aaaa" }
84039
- },
84040
- pt: {
84041
- placeholders: { day: "dd", month: "mm", year: "aaaa" }
84042
- },
84043
- "is-IS": {
84044
- placeholders: { day: "dd", month: "mm", year: "\xE1\xE1\xE1\xE1" }
84045
- },
84046
- "de-DE": {
84047
- placeholders: { day: "tt", month: "MM", year: "jjjj" }
84048
- }
84049
- };
84050
- var DateQuickFilterLabel = React76.forwardRef(({ headerName, onClear, value, disabled }, ref) => {
84051
- var _a;
84052
- const dateTime = useDateTime();
84053
- const i18n = useI18nContext();
84054
- const placeholders = ((_a = dateInputLocales[i18n.locale]) == null ? void 0 : _a.placeholders) || {
84055
- day: "dd",
84056
- month: "mm",
84057
- year: "yyyy"
84058
- };
84059
- if (value !== void 0 && isDate(value)) {
84060
- return /* @__PURE__ */ React76.createElement(
84061
- QuickFilterLabel,
84062
- {
84063
- enabled: true,
84064
- disabled,
84065
- label: `${headerName}: ${dateTime.format(value, "numeric-date")}`,
84066
- onClear,
84067
- ref
84068
- }
84069
- );
84070
- }
84071
- return /* @__PURE__ */ React76.createElement(
84072
- QuickFilterLabel,
84073
- {
84074
- enabled: false,
84075
- disabled,
84076
- label: `${headerName}: ${getDatePlaceholder(i18n.locale, placeholders)}`,
84077
- ref
84078
- }
84079
- );
84080
- });
84081
- var DateQuickFilterRenderer_default = QuickDateFilterRenderer;
84082
- var defaultGetId2 = (option) => option == null ? void 0 : option.id;
84083
- var defaultGetLabel2 = (option) => {
84084
- return (option == null ? void 0 : option.label) ?? (option == null ? void 0 : option.name) ?? option;
83586
+ });
83587
+ var DateQuickFilterRenderer_default = QuickDateFilterRenderer;
83588
+ var defaultGetId2 = (option) => option == null ? void 0 : option.id;
83589
+ var defaultGetLabel2 = (option) => {
83590
+ return (option == null ? void 0 : option.label) ?? (option == null ? void 0 : option.name) ?? option;
84085
83591
  };
84086
83592
  var useSuperSelectOptionAsValueWorkaround = ({
84087
83593
  originValue,
@@ -84414,7 +83920,7 @@ var LocationQuickFilterRenderer = ({
84414
83920
  );
84415
83921
  };
84416
83922
  var LocationQuickFilterRenderer_default = LocationQuickFilterRenderer;
84417
- var StyledFilterPresetPopoverContent = styled4(Popover.Content)`
83923
+ var StyledFilterPresetPopoverContent = styled3(Popover.Content)`
84418
83924
  padding: ${spacing.sm}px ${spacing.lg}px;
84419
83925
  `;
84420
83926
  var getValueLabel = (isValueEmpty, value, placeholder, filterName) => {
@@ -84498,7 +84004,7 @@ var getSuperSelectFilterPreset = (columnDefinition) => {
84498
84004
  selectionStyle: "highlight"
84499
84005
  };
84500
84006
  };
84501
- var StyledSuperSelectWrapper = styled4.div`
84007
+ var StyledSuperSelectWrapper = styled3.div`
84502
84008
  ${UNSAFE_StyledSuperSelectTrigger} {
84503
84009
  width: auto;
84504
84010
  }
@@ -84573,236 +84079,875 @@ var ClientSideMultiSelectQuickFilter = ({
84573
84079
  onRemove == null ? void 0 : onRemove();
84574
84080
  return;
84575
84081
  }
84576
- onChange == null ? void 0 : onChange(values2);
84577
- },
84578
- ...getSuperSelectFilterPreset(columnDefinition)
84579
- }
84580
- ));
84082
+ onChange == null ? void 0 : onChange(values2);
84083
+ },
84084
+ ...getSuperSelectFilterPreset(columnDefinition)
84085
+ }
84086
+ ));
84087
+ };
84088
+ var useSuperSelectOptionAsValueWorkaround2 = ({
84089
+ originValue,
84090
+ originOptions,
84091
+ getId: getId3,
84092
+ loading
84093
+ }) => {
84094
+ const isValueFromOptions = React76.useRef(false);
84095
+ const getValueFromOptions = () => {
84096
+ const valueIds = originValue.map((option) => getId(getId3, option));
84097
+ isValueFromOptions.current = true;
84098
+ return originOptions.filter(
84099
+ (option) => valueIds.includes(getId(getId3, option))
84100
+ );
84101
+ };
84102
+ const hasOptions = originOptions.length > 0 && !loading;
84103
+ const hasValue = (originValue == null ? void 0 : originValue.length) > 0;
84104
+ const options = !hasOptions && hasValue ? originValue : originOptions;
84105
+ const value = !hasOptions ? originValue : isValueFromOptions.current ? originValue : getValueFromOptions();
84106
+ return {
84107
+ options,
84108
+ value,
84109
+ getOptionValue: (option) => option
84110
+ };
84111
+ };
84112
+ var ServerSideMultiSelectQuickFilter = ({ columnDefinition, overlayMatchesTriggerWidth, disabled }) => {
84113
+ var _a;
84114
+ const {
84115
+ options: originOptions,
84116
+ onClearFilter,
84117
+ fieldName,
84118
+ value: originValue = [],
84119
+ onChange,
84120
+ getOptions,
84121
+ loading
84122
+ } = useServerSideFilter({ columnDefinition });
84123
+ const { options, value, getOptionValue } = useSuperSelectOptionAsValueWorkaround2({
84124
+ originOptions,
84125
+ originValue,
84126
+ loading,
84127
+ getId: (_a = columnDefinition.filterProps) == null ? void 0 : _a.getId
84128
+ });
84129
+ return /* @__PURE__ */ React76.createElement(StyledSuperSelectWrapper, { $enabled: Boolean(value == null ? void 0 : value.length) }, /* @__PURE__ */ React76.createElement(
84130
+ UNSAFE_SuperSelect,
84131
+ {
84132
+ overlayMatchesTriggerWidth,
84133
+ loading,
84134
+ value: value === null ? [] : value,
84135
+ search: false,
84136
+ getOptionLabel: (option) => {
84137
+ var _a2;
84138
+ return getLabel((_a2 = columnDefinition.filterProps) == null ? void 0 : _a2.getLabel, option);
84139
+ },
84140
+ getOptionValue,
84141
+ multiple: true,
84142
+ options,
84143
+ disabled,
84144
+ onChange: (values2) => {
84145
+ if (Array.isArray(values2) && !values2.length) {
84146
+ onClearFilter == null ? void 0 : onClearFilter(fieldName);
84147
+ getOptions();
84148
+ return;
84149
+ }
84150
+ onChange(values2);
84151
+ },
84152
+ onOpenChange: (open) => {
84153
+ if (open && !originOptions.length) {
84154
+ getOptions();
84155
+ }
84156
+ },
84157
+ ...getSuperSelectFilterPreset(columnDefinition)
84158
+ }
84159
+ ));
84160
+ };
84161
+ var MultiSelectQuickFilterRenderer = (props) => {
84162
+ const { onServerSideDataRequest } = useInternalTableContext();
84163
+ if (!isClientSideFilterProps(props, !!onServerSideDataRequest)) {
84164
+ return /* @__PURE__ */ React76.createElement(ServerSideMultiSelectQuickFilter, { ...props });
84165
+ }
84166
+ return /* @__PURE__ */ React76.createElement(ClientSideMultiSelectQuickFilter, { ...props });
84167
+ };
84168
+ var MultiSelectQuickFilterRenderer_default = MultiSelectQuickFilterRenderer;
84169
+ function getFilterTokenText(columnDefinition, filterValue) {
84170
+ var _a, _b, _c, _d;
84171
+ if ((_a = columnDefinition == null ? void 0 : columnDefinition.filterProps) == null ? void 0 : _a.getFilterTokenText) {
84172
+ return (_c = (_b = columnDefinition == null ? void 0 : columnDefinition.filterProps) == null ? void 0 : _b.getFilterTokenText) == null ? void 0 : _c.call(_b, {
84173
+ headerName: (columnDefinition == null ? void 0 : columnDefinition.headerName) || "",
84174
+ value: filterValue
84175
+ });
84176
+ }
84177
+ if (columnDefinition.filterRenderer === DateFilterRenderer_default) {
84178
+ return /* @__PURE__ */ React76.createElement(
84179
+ OptionalDateTimeProvider,
84180
+ {
84181
+ timeZone: columnDefinition.timeZone
84182
+ },
84183
+ /* @__PURE__ */ React76.createElement(
84184
+ DateFilterTokenText,
84185
+ {
84186
+ headerName: columnDefinition.headerName,
84187
+ value: filterValue
84188
+ }
84189
+ )
84190
+ );
84191
+ }
84192
+ if (columnDefinition.filterRenderer === NumberFilterRenderer) {
84193
+ return columnDefinition == null ? void 0 : columnDefinition.headerName;
84194
+ }
84195
+ if (Array.isArray(filterValue)) {
84196
+ if (filterValue.length === 0) {
84197
+ return columnDefinition == null ? void 0 : columnDefinition.headerName;
84198
+ }
84199
+ if (filterValue.length === 1) {
84200
+ return `${columnDefinition == null ? void 0 : columnDefinition.headerName}: ${getLabel(
84201
+ (_d = columnDefinition.filterProps) == null ? void 0 : _d.getLabel,
84202
+ filterValue[0]
84203
+ )}`;
84204
+ }
84205
+ return `${columnDefinition == null ? void 0 : columnDefinition.headerName}: (${filterValue.length})`;
84206
+ }
84207
+ return columnDefinition == null ? void 0 : columnDefinition.headerName;
84208
+ }
84209
+ var ensureArray = (input) => {
84210
+ if (input === null) {
84211
+ return [];
84212
+ }
84213
+ return Array.isArray(input) ? input : [input];
84214
+ };
84215
+
84216
+ // src/QuickFilterRenderers/SingleSelectQuickFilterRenderer.tsx
84217
+ var ClientSideSingleSelectQuickFilter = ({
84218
+ filter,
84219
+ columnDefinition,
84220
+ onChange,
84221
+ onRemove,
84222
+ overlayMatchesTriggerWidth,
84223
+ disabled
84224
+ }) => {
84225
+ var _a;
84226
+ return /* @__PURE__ */ React76.createElement(
84227
+ StyledSuperSelectWrapper,
84228
+ {
84229
+ $enabled: Boolean((_a = filter.filterValues) == null ? void 0 : _a.length),
84230
+ "data-test-id": "client-side-single-select-quick-filter"
84231
+ },
84232
+ /* @__PURE__ */ React76.createElement(
84233
+ UNSAFE_SuperSelect,
84234
+ {
84235
+ overlayMatchesTriggerWidth,
84236
+ value: filter.filterValues ?? [],
84237
+ search: false,
84238
+ multiple: false,
84239
+ options: filter.options,
84240
+ disabled,
84241
+ getOptionValue: (option) => {
84242
+ var _a2;
84243
+ return getId((_a2 = columnDefinition.filterProps) == null ? void 0 : _a2.getId, option);
84244
+ },
84245
+ getOptionLabel: (option) => {
84246
+ var _a2;
84247
+ return getLabel((_a2 = columnDefinition.filterProps) == null ? void 0 : _a2.getLabel, option);
84248
+ },
84249
+ onChange: (values2) => {
84250
+ const valuesArray = ensureArray(values2);
84251
+ if (!valuesArray.length) {
84252
+ onRemove == null ? void 0 : onRemove();
84253
+ return;
84254
+ }
84255
+ onChange == null ? void 0 : onChange(valuesArray);
84256
+ },
84257
+ ...getSuperSelectFilterPreset(columnDefinition)
84258
+ }
84259
+ )
84260
+ );
84261
+ };
84262
+ var useSuperSelectOptionAsValueWorkaround3 = ({
84263
+ originValue,
84264
+ originOptions,
84265
+ getId: getId3,
84266
+ loading
84267
+ }) => {
84268
+ const isValueFromOptions = React76.useRef(false);
84269
+ const getValueFromOptions = () => {
84270
+ const valueIds = originValue.map((option) => getId(getId3, option));
84271
+ isValueFromOptions.current = true;
84272
+ return originOptions.filter(
84273
+ (option) => valueIds.includes(getId(getId3, option))
84274
+ );
84275
+ };
84276
+ const hasOptions = originOptions.length > 0 && !loading;
84277
+ const hasValue = (originValue == null ? void 0 : originValue.length) > 0;
84278
+ const options = !hasOptions && hasValue ? originValue : originOptions;
84279
+ const value = !hasOptions ? originValue : isValueFromOptions.current ? originValue : getValueFromOptions();
84280
+ return {
84281
+ options,
84282
+ value,
84283
+ getOptionValue: (option) => option
84284
+ };
84285
+ };
84286
+ var ServerSideSingleSelectQuickFilter = ({ columnDefinition, overlayMatchesTriggerWidth, disabled }) => {
84287
+ var _a;
84288
+ const {
84289
+ options: originOptions,
84290
+ onClearFilter,
84291
+ fieldName,
84292
+ value: originValue = [],
84293
+ onChange,
84294
+ getOptions,
84295
+ loading
84296
+ } = useServerSideFilter({ columnDefinition });
84297
+ const { options, value, getOptionValue } = useSuperSelectOptionAsValueWorkaround3({
84298
+ originOptions,
84299
+ originValue,
84300
+ loading,
84301
+ getId: (_a = columnDefinition.filterProps) == null ? void 0 : _a.getId
84302
+ });
84303
+ const hasFetchedOptions = React76.useRef(false);
84304
+ React76.useEffect(() => {
84305
+ if (!hasFetchedOptions.current && !originOptions.length) {
84306
+ getOptions();
84307
+ hasFetchedOptions.current = true;
84308
+ }
84309
+ }, [getOptions, originOptions.length]);
84310
+ const handleOnChange = (values2) => {
84311
+ const selectedValues = ensureArray(values2);
84312
+ if (!selectedValues.length) {
84313
+ onClearFilter == null ? void 0 : onClearFilter(fieldName);
84314
+ getOptions();
84315
+ return;
84316
+ }
84317
+ onChange(selectedValues);
84318
+ };
84319
+ const handleOnOpenChange = (open) => {
84320
+ if (open && !originOptions.length) {
84321
+ getOptions();
84322
+ }
84323
+ };
84324
+ return /* @__PURE__ */ React76.createElement(
84325
+ StyledSuperSelectWrapper,
84326
+ {
84327
+ $enabled: Boolean(value == null ? void 0 : value.length),
84328
+ "data-test-id": "server-side-single-select-quick-filter"
84329
+ },
84330
+ /* @__PURE__ */ React76.createElement(
84331
+ UNSAFE_SuperSelect,
84332
+ {
84333
+ overlayMatchesTriggerWidth,
84334
+ loading,
84335
+ value: value ?? [],
84336
+ search: false,
84337
+ disabled,
84338
+ getOptionLabel: (option) => {
84339
+ var _a2;
84340
+ return getLabel((_a2 = columnDefinition.filterProps) == null ? void 0 : _a2.getLabel, option);
84341
+ },
84342
+ getOptionValue,
84343
+ multiple: false,
84344
+ options,
84345
+ onChange: handleOnChange,
84346
+ onOpenChange: handleOnOpenChange,
84347
+ ...getSuperSelectFilterPreset(columnDefinition)
84348
+ }
84349
+ )
84350
+ );
84351
+ };
84352
+ var SingleSelectQuickFilterRenderer = (props) => {
84353
+ const { onServerSideDataRequest } = useInternalTableContext();
84354
+ if (!isClientSideFilterProps(props, !!onServerSideDataRequest)) {
84355
+ return /* @__PURE__ */ React76.createElement(ServerSideSingleSelectQuickFilter, { ...props });
84356
+ }
84357
+ return /* @__PURE__ */ React76.createElement(ClientSideSingleSelectQuickFilter, { ...props });
84358
+ };
84359
+ var SingleSelectQuickFilterRenderer_default = SingleSelectQuickFilterRenderer;
84360
+ var FiltersPanelToggleButton = ({ hasSelectedFilters, hasDefinedFilters }) => {
84361
+ const I18n = useI18nContext();
84362
+ const { contextPanel } = useInternalTableContext();
84363
+ const hasNoContent = useTableHasNoContent();
84364
+ if (!hasDefinedFilters) {
84365
+ return null;
84366
+ }
84367
+ return /* @__PURE__ */ React76.createElement(
84368
+ EmptyResultsControlTooltip,
84369
+ {
84370
+ featureI18nKey: "featureFilter",
84371
+ enabled: hasNoContent
84372
+ },
84373
+ /* @__PURE__ */ React76.createElement(
84374
+ ToggleButton,
84375
+ {
84376
+ "data-qa": "data-table-show-filters-button",
84377
+ disabled: hasNoContent,
84378
+ icon: /* @__PURE__ */ React76.createElement(FilterIcon, null),
84379
+ onClick: () => {
84380
+ if (contextPanel.content === "filters") {
84381
+ contextPanel.hide();
84382
+ } else {
84383
+ contextPanel.show("filters");
84384
+ }
84385
+ },
84386
+ selected: contextPanel.content === "filters"
84387
+ },
84388
+ hasSelectedFilters ? I18n.t("dataTable.filters.moreFilters") : I18n.t("dataTable.filters.filters")
84389
+ )
84390
+ );
84391
+ };
84392
+ var ServerSideFiltersPanelToggleButton = () => {
84393
+ const {
84394
+ filterStorage: { hasDefinedFilters, hasSelectedFilters }
84395
+ } = useInternalTableContext();
84396
+ return /* @__PURE__ */ React76.createElement(
84397
+ FiltersPanelToggleButton,
84398
+ {
84399
+ hasDefinedFilters,
84400
+ hasSelectedFilters
84401
+ }
84402
+ );
84403
+ };
84404
+ var ClientSideFiltersPanelToggleButton = () => {
84405
+ const { filterState } = useInternalTableContext();
84406
+ const activeFilters = React76.useMemo(() => {
84407
+ return filterState.allAvailableFilters.filter(({ instance }) => {
84408
+ return instance.isFilterActive();
84409
+ });
84410
+ }, [filterState.allAvailableFilters]);
84411
+ return /* @__PURE__ */ React76.createElement(
84412
+ FiltersPanelToggleButton,
84413
+ {
84414
+ hasDefinedFilters: filterState.allAvailableFilters.length > 0,
84415
+ hasSelectedFilters: activeFilters.length > 0
84416
+ }
84417
+ );
84418
+ };
84419
+
84420
+ // src/QuickControls/QuickFilters.tsx
84421
+ var defaultQuickFilterRenderers = {
84422
+ MultiSelectFilterRenderer: MultiSelectQuickFilterRenderer_default,
84423
+ DateFilterRenderer: DateQuickFilterRenderer_default,
84424
+ LocationFilterRenderer: LocationQuickFilterRenderer_default,
84425
+ SingleSelectFilterRenderer: SingleSelectQuickFilterRenderer_default
84426
+ };
84427
+ function getQuickFilterRenderer(colDef) {
84428
+ var _a;
84429
+ if (!colDef)
84430
+ return null;
84431
+ if (colDef.quickFilterRenderer) {
84432
+ return colDef.quickFilterRenderer;
84433
+ }
84434
+ const filterRendererName = (_a = colDef.filterRenderer) == null ? void 0 : _a.displayName;
84435
+ if (filterRendererName) {
84436
+ return defaultQuickFilterRenderers[filterRendererName] || null;
84437
+ }
84438
+ return null;
84439
+ }
84440
+ var FilterIcon = () => {
84441
+ return /* @__PURE__ */ React76.createElement(
84442
+ "svg",
84443
+ {
84444
+ focusable: false,
84445
+ width: "16",
84446
+ height: "16",
84447
+ viewBox: "0 0 20 20",
84448
+ fill: "none",
84449
+ xmlns: "http://www.w3.org/2000/svg"
84450
+ },
84451
+ /* @__PURE__ */ React76.createElement(
84452
+ "path",
84453
+ {
84454
+ fillRule: "evenodd",
84455
+ clipRule: "evenodd",
84456
+ d: "M3 5V7H17V5H3ZM8 15H12V13H8V15ZM15 11H5V9H15V11Z",
84457
+ fill: "currentColor"
84458
+ }
84459
+ )
84460
+ );
84461
+ };
84462
+ var StyledFilterTokenWrapper = styled3.div`
84463
+ ${UNSAFE_StyledFilterTokenLabel} {
84464
+ font-weight: ${typographyWeights.semibold};
84465
+ }
84466
+ `;
84467
+ var ClientSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
84468
+ const { tableRef, filterState, getColumnDefinition } = useInternalTableContext();
84469
+ const hasNoContent = useTableHasNoContent();
84470
+ const { quickFilters, tokens } = React76.useMemo(() => {
84471
+ return filterState.allAvailableFilters.reduce(
84472
+ (acc, filter) => {
84473
+ var _a;
84474
+ const colDef = getColumnDefinition(filter.field);
84475
+ if (!colDef) {
84476
+ return acc;
84477
+ }
84478
+ const isInteractive = ((_a = colDef == null ? void 0 : colDef.filterProps) == null ? void 0 : _a.isInteractiveFilterToken) === true;
84479
+ const hasQuickFilterRenderer = !!(colDef == null ? void 0 : colDef.quickFilterRenderer);
84480
+ const filterIsActive = filter.instance.isFilterActive();
84481
+ if (hasQuickFilterRenderer || filterIsActive && isInteractive && getQuickFilterRenderer(colDef) !== null) {
84482
+ return { ...acc, quickFilters: [...acc.quickFilters, filter] };
84483
+ } else if (filterIsActive) {
84484
+ return { ...acc, tokens: [...acc.tokens, filter] };
84485
+ }
84486
+ return acc;
84487
+ },
84488
+ {
84489
+ quickFilters: [],
84490
+ tokens: []
84491
+ }
84492
+ );
84493
+ }, [filterState.allAvailableFilters, getColumnDefinition]);
84494
+ const isEmpty2 = quickFilters.length === 0 && tokens.length === 0;
84495
+ return isEmpty2 ? null : /* @__PURE__ */ React76.createElement(
84496
+ FlexList,
84497
+ {
84498
+ padding: "xs none",
84499
+ size: "none",
84500
+ alignItems: "center",
84501
+ wrap: "wrap",
84502
+ gap: "sm"
84503
+ },
84504
+ quickFilters.map((filter) => {
84505
+ const colDef = getColumnDefinition(filter.field);
84506
+ const QuickFilter = getQuickFilterRenderer(colDef);
84507
+ if (!colDef || !QuickFilter) {
84508
+ return null;
84509
+ }
84510
+ return /* @__PURE__ */ React76.createElement(
84511
+ EmptyResultsControlTooltip,
84512
+ {
84513
+ featureI18nKey: "featureQuickFilter",
84514
+ enabled: hasNoContent
84515
+ },
84516
+ /* @__PURE__ */ React76.createElement(
84517
+ QuickFilter,
84518
+ {
84519
+ key: filter.field,
84520
+ filter,
84521
+ columnDefinition: colDef,
84522
+ disabled: hasNoContent,
84523
+ onChange: (value) => {
84524
+ var _a;
84525
+ return (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.applyListFilter(filter.field, value);
84526
+ },
84527
+ onRemove: () => {
84528
+ var _a;
84529
+ return (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.removeFilter(filter.field);
84530
+ },
84531
+ overlayMatchesTriggerWidth
84532
+ }
84533
+ )
84534
+ );
84535
+ }),
84536
+ tokens.map((filter) => {
84537
+ const colDef = getColumnDefinition(filter.field);
84538
+ if (!colDef) {
84539
+ return null;
84540
+ }
84541
+ return /* @__PURE__ */ React76.createElement(StyledFilterTokenWrapper, { key: filter.field }, /* @__PURE__ */ React76.createElement(UNSAFE_FilterToken, null, /* @__PURE__ */ React76.createElement(UNSAFE_FilterToken.Label, null, getFilterTokenText(colDef, filter.filterValues)), /* @__PURE__ */ React76.createElement(
84542
+ UNSAFE_FilterToken.Remove,
84543
+ {
84544
+ onClick: () => {
84545
+ var _a;
84546
+ return (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.removeFilter(filter.field);
84547
+ }
84548
+ }
84549
+ )));
84550
+ })
84551
+ );
84552
+ };
84553
+ var ServerSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
84554
+ const {
84555
+ filterStorage: {
84556
+ hasDefinedFilters,
84557
+ onClearFilter,
84558
+ possibleFilters,
84559
+ selectedFilters,
84560
+ getListFilter
84561
+ },
84562
+ getColumnDefinition
84563
+ } = useInternalTableContext();
84564
+ const hasNoContent = useTableHasNoContent();
84565
+ const { quickFilterNames, tokenNames } = React76.useMemo(() => {
84566
+ const appliedFilterNames = Object.keys(selectedFilters);
84567
+ const isActiveFilter = (filterName) => appliedFilterNames.includes(filterName);
84568
+ return possibleFilters.reduce(
84569
+ (acc, filterName) => {
84570
+ var _a;
84571
+ const colDef = getColumnDefinition(filterName);
84572
+ if (!colDef) {
84573
+ return acc;
84574
+ }
84575
+ const isInteractive = ((_a = colDef == null ? void 0 : colDef.filterProps) == null ? void 0 : _a.isInteractiveFilterToken) === true;
84576
+ const hasQuickFilterRenderer = !!(colDef == null ? void 0 : colDef.quickFilterRenderer);
84577
+ const filterIsActive = isActiveFilter(filterName);
84578
+ if (hasQuickFilterRenderer || filterIsActive && isInteractive && getQuickFilterRenderer(colDef) !== null) {
84579
+ return {
84580
+ ...acc,
84581
+ quickFilterNames: [...acc.quickFilterNames, filterName]
84582
+ };
84583
+ } else if (filterIsActive) {
84584
+ return {
84585
+ ...acc,
84586
+ tokenNames: [...acc.tokenNames, filterName]
84587
+ };
84588
+ }
84589
+ return acc;
84590
+ },
84591
+ {
84592
+ quickFilterNames: [],
84593
+ tokenNames: []
84594
+ }
84595
+ );
84596
+ }, [possibleFilters, selectedFilters, getColumnDefinition]);
84597
+ if (!hasDefinedFilters) {
84598
+ return null;
84599
+ }
84600
+ const isEmpty2 = quickFilterNames.length === 0 && tokenNames.length === 0;
84601
+ return isEmpty2 ? null : /* @__PURE__ */ React76.createElement(
84602
+ FlexList,
84603
+ {
84604
+ padding: "xs none",
84605
+ size: "none",
84606
+ alignItems: "center",
84607
+ wrap: "wrap",
84608
+ gap: "sm",
84609
+ "data-qa": "data-table-quick-filters"
84610
+ },
84611
+ quickFilterNames.map((fieldName) => {
84612
+ const colDef = getColumnDefinition(fieldName);
84613
+ const QuickFilter = getQuickFilterRenderer(colDef);
84614
+ if (!colDef || !QuickFilter) {
84615
+ return null;
84616
+ }
84617
+ return /* @__PURE__ */ React76.createElement(
84618
+ EmptyResultsControlTooltip,
84619
+ {
84620
+ featureI18nKey: "featureQuickFilter",
84621
+ enabled: hasNoContent
84622
+ },
84623
+ /* @__PURE__ */ React76.createElement(
84624
+ QuickFilter,
84625
+ {
84626
+ key: fieldName,
84627
+ columnDefinition: colDef,
84628
+ disabled: hasNoContent,
84629
+ overlayMatchesTriggerWidth
84630
+ }
84631
+ )
84632
+ );
84633
+ }),
84634
+ tokenNames.map((fieldName) => {
84635
+ const colDef = getColumnDefinition(fieldName);
84636
+ if (!colDef) {
84637
+ return null;
84638
+ }
84639
+ const filter = getListFilter(fieldName);
84640
+ return /* @__PURE__ */ React76.createElement(StyledFilterTokenWrapper, { key: fieldName }, /* @__PURE__ */ React76.createElement(UNSAFE_FilterToken, null, /* @__PURE__ */ React76.createElement(UNSAFE_FilterToken.Label, null, getFilterTokenText(
84641
+ colDef,
84642
+ colDef.filterRenderer === DateFilterRenderer_default ? filter.value : filter.selected
84643
+ )), /* @__PURE__ */ React76.createElement(
84644
+ UNSAFE_FilterToken.Remove,
84645
+ {
84646
+ "data-qa": "data-table-quick-filter-remove-token",
84647
+ onClick: () => onClearFilter(fieldName)
84648
+ }
84649
+ )));
84650
+ })
84651
+ );
84581
84652
  };
84582
- var useSuperSelectOptionAsValueWorkaround2 = ({
84583
- originValue,
84584
- originOptions,
84585
- getId: getId3,
84586
- loading
84587
- }) => {
84588
- const isValueFromOptions = React76.useRef(false);
84589
- const getValueFromOptions = () => {
84590
- const valueIds = originValue.map((option) => getId(getId3, option));
84591
- isValueFromOptions.current = true;
84592
- return originOptions.filter(
84593
- (option) => valueIds.includes(getId(getId3, option))
84653
+ var QuickFilters = ({ overlayMatchesTriggerWidth }) => {
84654
+ const { onServerSideDataRequest } = useInternalTableContext();
84655
+ if (onServerSideDataRequest) {
84656
+ return /* @__PURE__ */ React76.createElement(
84657
+ ServerSideQuickFilters,
84658
+ {
84659
+ overlayMatchesTriggerWidth
84660
+ }
84594
84661
  );
84595
- };
84596
- const hasOptions = originOptions.length > 0 && !loading;
84597
- const hasValue = (originValue == null ? void 0 : originValue.length) > 0;
84598
- const options = !hasOptions && hasValue ? originValue : originOptions;
84599
- const value = !hasOptions ? originValue : isValueFromOptions.current ? originValue : getValueFromOptions();
84600
- return {
84601
- options,
84602
- value,
84603
- getOptionValue: (option) => option
84604
- };
84605
- };
84606
- var ServerSideMultiSelectQuickFilter = ({ columnDefinition, overlayMatchesTriggerWidth, disabled }) => {
84607
- var _a;
84608
- const {
84609
- options: originOptions,
84610
- onClearFilter,
84611
- fieldName,
84612
- value: originValue = [],
84613
- onChange,
84614
- getOptions,
84615
- loading
84616
- } = useServerSideFilter({ columnDefinition });
84617
- const { options, value, getOptionValue } = useSuperSelectOptionAsValueWorkaround2({
84618
- originOptions,
84619
- originValue,
84620
- loading,
84621
- getId: (_a = columnDefinition.filterProps) == null ? void 0 : _a.getId
84622
- });
84623
- return /* @__PURE__ */ React76.createElement(StyledSuperSelectWrapper, { $enabled: Boolean(value == null ? void 0 : value.length) }, /* @__PURE__ */ React76.createElement(
84624
- UNSAFE_SuperSelect,
84662
+ }
84663
+ return /* @__PURE__ */ React76.createElement(
84664
+ ClientSideQuickFilters,
84625
84665
  {
84626
- overlayMatchesTriggerWidth,
84627
- loading,
84628
- value: value === null ? [] : value,
84629
- search: false,
84630
- getOptionLabel: (option) => {
84631
- var _a2;
84632
- return getLabel((_a2 = columnDefinition.filterProps) == null ? void 0 : _a2.getLabel, option);
84633
- },
84634
- getOptionValue,
84635
- multiple: true,
84636
- options,
84637
- disabled,
84638
- onChange: (values2) => {
84639
- if (Array.isArray(values2) && !values2.length) {
84640
- onClearFilter == null ? void 0 : onClearFilter(fieldName);
84641
- getOptions();
84642
- return;
84643
- }
84644
- onChange(values2);
84645
- },
84646
- onOpenChange: (open) => {
84647
- if (open && !originOptions.length) {
84648
- getOptions();
84649
- }
84650
- },
84651
- ...getSuperSelectFilterPreset(columnDefinition)
84666
+ overlayMatchesTriggerWidth
84652
84667
  }
84653
- ));
84668
+ );
84654
84669
  };
84655
- var MultiSelectQuickFilterRenderer = (props) => {
84670
+ var FiltersPanelButton = () => {
84656
84671
  const { onServerSideDataRequest } = useInternalTableContext();
84657
- if (!isClientSideFilterProps(props, !!onServerSideDataRequest)) {
84658
- return /* @__PURE__ */ React76.createElement(ServerSideMultiSelectQuickFilter, { ...props });
84672
+ if (onServerSideDataRequest) {
84673
+ return /* @__PURE__ */ React76.createElement(ServerSideFiltersPanelToggleButton, null);
84659
84674
  }
84660
- return /* @__PURE__ */ React76.createElement(ClientSideMultiSelectQuickFilter, { ...props });
84675
+ return /* @__PURE__ */ React76.createElement(ClientSideFiltersPanelToggleButton, null);
84661
84676
  };
84662
- var MultiSelectQuickFilterRenderer_default = MultiSelectQuickFilterRenderer;
84663
- var ClientSideSingleSelectQuickFilter = ({
84664
- filter,
84665
- columnDefinition,
84666
- onChange,
84667
- onRemove,
84668
- overlayMatchesTriggerWidth,
84669
- disabled
84670
- }) => {
84671
- var _a;
84677
+ var RowGroupSelector = ({ localeText }) => {
84678
+ const {
84679
+ columnDefinitions: _columnDefinitions,
84680
+ columnApi,
84681
+ gridApi,
84682
+ tableRef
84683
+ } = useInternalTableContext();
84684
+ const hasNoContent = useTableHasNoContent();
84685
+ const [columnDefinitions, setColumnDefinitions] = React76.useState(_columnDefinitions);
84686
+ const groupableColumns = React76.useMemo(
84687
+ () => mapColumnsToOptions(
84688
+ columnDefinitions.filter((column2) => column2.enableRowGroup)
84689
+ ),
84690
+ [columnDefinitions]
84691
+ );
84692
+ const groupedColumns = React76.useMemo(() => {
84693
+ const rowGrouping = (columnApi == null ? void 0 : columnApi.getRowGroupColumns()) ?? [];
84694
+ return rowGrouping.map((column2) => {
84695
+ const colDef = column2.getColDef();
84696
+ return transformToColumnDefinition(colDef);
84697
+ });
84698
+ }, [columnDefinitions]);
84699
+ const selectedColumns = React76.useMemo(
84700
+ () => mapColumnsToOptions(groupedColumns),
84701
+ [groupedColumns]
84702
+ );
84703
+ const onGroupedClear = React76.useCallback(() => {
84704
+ var _a;
84705
+ (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.setRowGrouping([]);
84706
+ }, [tableRef]);
84707
+ const onGroupedRowChange = React76.useCallback(
84708
+ (newValue) => {
84709
+ var _a;
84710
+ const fields = newValue.map((val) => {
84711
+ return val.id;
84712
+ });
84713
+ if (!equals(selectedColumns, newValue)) {
84714
+ (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.setRowGrouping(fields);
84715
+ }
84716
+ },
84717
+ [selectedColumns]
84718
+ );
84719
+ React76.useEffect(() => {
84720
+ function onDisplayedColumnsChanged(event) {
84721
+ const agColumnDefs = event.api.getColumnDefs();
84722
+ if (agColumnDefs == null ? void 0 : agColumnDefs.length) {
84723
+ const flattenedAgColDefs = flattenColDefs(event.api.getColumnDefs());
84724
+ const dataTableColumnDefinitions = flattenedAgColDefs.map(
84725
+ transformToColumnDefinition
84726
+ );
84727
+ setColumnDefinitions(dataTableColumnDefinitions);
84728
+ }
84729
+ }
84730
+ gridApi == null ? void 0 : gridApi.addEventListener(
84731
+ "displayedColumnsChanged",
84732
+ onDisplayedColumnsChanged
84733
+ );
84734
+ return () => {
84735
+ removeEventListenerFromGrid(
84736
+ "displayedColumnsChanged",
84737
+ onDisplayedColumnsChanged,
84738
+ gridApi
84739
+ );
84740
+ };
84741
+ }, [gridApi]);
84742
+ if (groupableColumns.length === 0) {
84743
+ return null;
84744
+ }
84672
84745
  return /* @__PURE__ */ React76.createElement(
84673
- StyledSuperSelectWrapper,
84746
+ EmptyResultsControlTooltip,
84674
84747
  {
84675
- $enabled: Boolean((_a = filter.filterValues) == null ? void 0 : _a.length),
84676
- "data-test-id": "client-side-single-select-quick-filter"
84748
+ featureI18nKey: "featureGroupBy",
84749
+ enabled: hasNoContent
84677
84750
  },
84678
84751
  /* @__PURE__ */ React76.createElement(
84679
- UNSAFE_SuperSelect,
84752
+ Tooltip,
84680
84753
  {
84681
- overlayMatchesTriggerWidth,
84682
- value: filter.filterValues ?? [],
84683
- search: false,
84684
- multiple: false,
84685
- options: filter.options,
84686
- disabled,
84687
- getOptionValue: (option) => {
84688
- var _a2;
84689
- return getId((_a2 = columnDefinition.filterProps) == null ? void 0 : _a2.getId, option);
84690
- },
84691
- getOptionLabel: (option) => {
84692
- var _a2;
84693
- return getLabel((_a2 = columnDefinition.filterProps) == null ? void 0 : _a2.getLabel, option);
84694
- },
84695
- onChange: (values2) => {
84696
- const valuesArray = ensureArray(values2);
84697
- if (!valuesArray.length) {
84698
- onRemove == null ? void 0 : onRemove();
84699
- return;
84700
- }
84701
- onChange == null ? void 0 : onChange(valuesArray);
84702
- },
84703
- ...getSuperSelectFilterPreset(columnDefinition)
84704
- }
84754
+ overlay: localeText.placeholder,
84755
+ trigger: "hover",
84756
+ placement: "top",
84757
+ showDelay: 400
84758
+ },
84759
+ /* @__PURE__ */ React76.createElement(Box, { style: { width: "100%" } }, /* @__PURE__ */ React76.createElement(
84760
+ GroupBySelect,
84761
+ {
84762
+ isDisabled: hasNoContent,
84763
+ localeText,
84764
+ onBlur: onGroupedRowChange,
84765
+ onClear: onGroupedClear,
84766
+ options: groupableColumns,
84767
+ selected: selectedColumns
84768
+ }
84769
+ ))
84705
84770
  )
84706
84771
  );
84707
84772
  };
84708
- var useSuperSelectOptionAsValueWorkaround3 = ({
84709
- originValue,
84710
- originOptions,
84711
- getId: getId3,
84712
- loading
84773
+ function mapColumnsToOptions(columnDefinitions) {
84774
+ return columnDefinitions.map((col) => {
84775
+ return {
84776
+ label: col.headerName,
84777
+ id: col.field,
84778
+ key: col.field,
84779
+ group: col.columnGroupName
84780
+ };
84781
+ });
84782
+ }
84783
+ var cx21 = classnames.bind(quickControlsStyles_default);
84784
+ var ClientSideSearch = ({
84785
+ onSearch,
84786
+ placeholder
84713
84787
  }) => {
84714
- const isValueFromOptions = React76.useRef(false);
84715
- const getValueFromOptions = () => {
84716
- const valueIds = originValue.map((option) => getId(getId3, option));
84717
- isValueFromOptions.current = true;
84718
- return originOptions.filter(
84719
- (option) => valueIds.includes(getId(getId3, option))
84720
- );
84721
- };
84722
- const hasOptions = originOptions.length > 0 && !loading;
84723
- const hasValue = (originValue == null ? void 0 : originValue.length) > 0;
84724
- const options = !hasOptions && hasValue ? originValue : originOptions;
84725
- const value = !hasOptions ? originValue : isValueFromOptions.current ? originValue : getValueFromOptions();
84726
- return {
84727
- options,
84728
- value,
84729
- getOptionValue: (option) => option
84730
- };
84731
- };
84732
- var ServerSideSingleSelectQuickFilter = ({ columnDefinition, overlayMatchesTriggerWidth, disabled }) => {
84733
84788
  var _a;
84734
- const {
84735
- options: originOptions,
84736
- onClearFilter,
84737
- fieldName,
84738
- value: originValue = [],
84739
- onChange,
84740
- getOptions,
84741
- loading
84742
- } = useServerSideFilter({ columnDefinition });
84743
- const { options, value, getOptionValue } = useSuperSelectOptionAsValueWorkaround3({
84744
- originOptions,
84745
- originValue,
84746
- loading,
84747
- getId: (_a = columnDefinition.filterProps) == null ? void 0 : _a.getId
84748
- });
84749
- const hasFetchedOptions = React76.useRef(false);
84750
- React76.useEffect(() => {
84751
- if (!hasFetchedOptions.current && !originOptions.length) {
84752
- getOptions();
84753
- hasFetchedOptions.current = true;
84789
+ const [internalValue, setInternalValue] = React76.useState("");
84790
+ const { tableRef } = useInternalTableContext();
84791
+ const hasNoContent = useTableHasNoContent();
84792
+ const I18n = useI18nContext();
84793
+ const debouncedSetSearchValue = React76.useCallback(
84794
+ debounce5((value) => {
84795
+ var _a2;
84796
+ (_a2 = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a2.setSearchValue(value);
84797
+ }, 250),
84798
+ [(_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.setSearchValue]
84799
+ );
84800
+ const onChange = React76.useCallback(
84801
+ (value, event) => {
84802
+ setInternalValue(value);
84803
+ if (onSearch) {
84804
+ onSearch(event);
84805
+ } else {
84806
+ debouncedSetSearchValue(value);
84807
+ }
84808
+ },
84809
+ [debouncedSetSearchValue, onSearch]
84810
+ );
84811
+ return /* @__PURE__ */ React76.createElement(EmptyResultsControlTooltip, { hasSearch: true, enabled: hasNoContent }, /* @__PURE__ */ React76.createElement(
84812
+ Typeahead,
84813
+ {
84814
+ disabled: hasNoContent,
84815
+ "data-qa": "data-table-search",
84816
+ value: internalValue,
84817
+ className: cx21("search", {
84818
+ "search--empty": !internalValue.length
84819
+ }),
84820
+ onChange,
84821
+ placeholder: placeholder || I18n.t("dataTable.search")
84754
84822
  }
84755
- }, [getOptions, originOptions.length]);
84756
- const handleOnChange = (values2) => {
84757
- const selectedValues = ensureArray(values2);
84758
- if (!selectedValues.length) {
84759
- onClearFilter == null ? void 0 : onClearFilter(fieldName);
84760
- getOptions();
84761
- return;
84823
+ ));
84824
+ };
84825
+ var Search = (props) => {
84826
+ const { onServerSideDataRequest } = useInternalTableContext();
84827
+ if (onServerSideDataRequest) {
84828
+ return /* @__PURE__ */ React76.createElement(ServerSideSearch, { ...props });
84829
+ }
84830
+ return /* @__PURE__ */ React76.createElement(ClientSideSearch, { ...props });
84831
+ };
84832
+
84833
+ // src/QuickControls/QuickControls.tsx
84834
+ var QuickControls = (props) => {
84835
+ const I18n = useI18nContext();
84836
+ if (props.children) {
84837
+ return /* @__PURE__ */ React76.createElement(
84838
+ Box,
84839
+ {
84840
+ "data-qa": "data-table-quick-controls",
84841
+ padding: "xs none",
84842
+ style: props.style
84843
+ },
84844
+ props.children
84845
+ );
84846
+ }
84847
+ return /* @__PURE__ */ React76.createElement(Box, { padding: "xs none", style: props.style }, /* @__PURE__ */ React76.createElement(Box, { padding: "xs none", display: "flex-row", justifyContent: "space-between" }, /* @__PURE__ */ React76.createElement(FlexList, { size: "xs", alignItems: "center", marginRight: "sm" }, /* @__PURE__ */ React76.createElement(
84848
+ Search,
84849
+ {
84850
+ onSearch: props.onSearch,
84851
+ placeholder: props.placeholder,
84852
+ disabled: props.disabledSearch
84762
84853
  }
84763
- onChange(selectedValues);
84764
- };
84765
- const handleOnOpenChange = (open) => {
84766
- if (open && !originOptions.length) {
84767
- getOptions();
84854
+ ), /* @__PURE__ */ React76.createElement(FiltersPanelButton, null)), /* @__PURE__ */ React76.createElement(FlexList, { size: "xs", alignItems: "center" }, /* @__PURE__ */ React76.createElement(
84855
+ RowGroupSelector,
84856
+ {
84857
+ localeText: {
84858
+ reset: I18n.t("dataTable.tableSettings.reset"),
84859
+ placeholder: I18n.t("dataTable.tableSettings.selectColumnGroup"),
84860
+ selectedItemsPrefix: I18n.t("dataTable.tableSettings.groupBy")
84861
+ }
84768
84862
  }
84769
- };
84863
+ ), /* @__PURE__ */ React76.createElement(ConfigPanelButton, null))), /* @__PURE__ */ React76.createElement(
84864
+ QuickFilters,
84865
+ {
84866
+ overlayMatchesTriggerWidth: props.filterOverlayMatchesTriggerWidth
84867
+ }
84868
+ ));
84869
+ };
84870
+
84871
+ // src/utils/addSubcomponents.ts
84872
+ var addSubcomponents = (subs, parent) => {
84873
+ const assigned = parent;
84874
+ Object.keys(subs).forEach((key) => {
84875
+ assigned[key] = subs[key];
84876
+ });
84877
+ return assigned;
84878
+ };
84879
+
84880
+ // src/ClientSideDataTable.tsx
84881
+ var ClientSideDataTable = ({
84882
+ analytics,
84883
+ children,
84884
+ columnDefinitions: _columnDefinitions,
84885
+ customBulkEditorFields,
84886
+ enableDynamicRowHeight,
84887
+ enableGroupEditAndValidation,
84888
+ filterGroups,
84889
+ getRowId,
84890
+ initialTableConfig: _initialTableConfig,
84891
+ onBulkEditUpdate,
84892
+ onTableConfigChange,
84893
+ translations: translations2 = {},
84894
+ enableCellTextSelection,
84895
+ localStoragePersistenceKey
84896
+ }) => {
84770
84897
  return /* @__PURE__ */ React76.createElement(
84771
- StyledSuperSelectWrapper,
84898
+ DataTable,
84772
84899
  {
84773
- $enabled: Boolean(value == null ? void 0 : value.length),
84774
- "data-test-id": "server-side-single-select-quick-filter"
84900
+ analytics,
84901
+ columnDefinitions: _columnDefinitions,
84902
+ enableGroupEditAndValidation,
84903
+ enableDynamicRowHeight,
84904
+ filterGroups,
84905
+ getRowId,
84906
+ initialTableConfig: _initialTableConfig,
84907
+ onTableConfigChange,
84908
+ onBulkEditUpdate,
84909
+ showExpandCollapseAllToggle: true,
84910
+ translations: translations2,
84911
+ localStoragePersistenceKey,
84912
+ customBulkEditorFields,
84913
+ enableCellTextSelection
84775
84914
  },
84776
- /* @__PURE__ */ React76.createElement(
84777
- UNSAFE_SuperSelect,
84778
- {
84779
- overlayMatchesTriggerWidth,
84780
- loading,
84781
- value: value ?? [],
84782
- search: false,
84783
- disabled,
84784
- getOptionLabel: (option) => {
84785
- var _a2;
84786
- return getLabel((_a2 = columnDefinition.filterProps) == null ? void 0 : _a2.getLabel, option);
84787
- },
84788
- getOptionValue,
84789
- multiple: false,
84790
- options,
84791
- onChange: handleOnChange,
84792
- onOpenChange: handleOnOpenChange,
84793
- ...getSuperSelectFilterPreset(columnDefinition)
84794
- }
84795
- )
84915
+ children
84796
84916
  );
84797
84917
  };
84798
- var SingleSelectQuickFilterRenderer = (props) => {
84799
- const { onServerSideDataRequest } = useInternalTableContext();
84800
- if (!isClientSideFilterProps(props, !!onServerSideDataRequest)) {
84801
- return /* @__PURE__ */ React76.createElement(ServerSideSingleSelectQuickFilter, { ...props });
84802
- }
84803
- return /* @__PURE__ */ React76.createElement(ClientSideSingleSelectQuickFilter, { ...props });
84918
+ var Table2 = (props) => {
84919
+ const internalTableContext = useInternalTableContext();
84920
+ React76.useEffect(() => {
84921
+ var _a;
84922
+ internalTableContext.setTotalRowCount(((_a = props.rows) == null ? void 0 : _a.length) ?? 0);
84923
+ }, [props.rows]);
84924
+ return /* @__PURE__ */ React76.createElement(Table, { ...props, modules: [ClientSideRowModelModule] });
84804
84925
  };
84805
- var SingleSelectQuickFilterRenderer_default = SingleSelectQuickFilterRenderer;
84926
+ BulkActions.displayName = "ClientSideDataTable.BulkActions";
84927
+ ConfigPanelButton.displayName = "ClientSideDataTable.ConfigPanelButton";
84928
+ ContextPanel.displayName = "ClientSideDataTable.ContextPanel";
84929
+ QuickControls.displayName = "ClientSideDataTable.QuickControls";
84930
+ QuickFilters.displayName = "ClientSideDataTable.QuickFilters";
84931
+ RowGroupSelector.displayName = "ClientSideDataTable.RowGroupSelector";
84932
+ Search.displayName = "ClientSideDataTable.Search";
84933
+ Table2.displayName = "ClientSideDataTable.Table";
84934
+ FiltersPanel.displayName = "ClientSideDataTable.FiltersPanel";
84935
+ var ClientSideDataTable_default = addSubcomponents(
84936
+ {
84937
+ BulkActions,
84938
+ BulkEditActionButton,
84939
+ ConfigPanelButton,
84940
+ ContextPanel,
84941
+ QuickControls,
84942
+ QuickFilters,
84943
+ RowGroupSelector,
84944
+ Search,
84945
+ Table: Table2,
84946
+ FiltersPanel,
84947
+ FiltersPanelButton
84948
+ },
84949
+ ClientSideDataTable
84950
+ );
84806
84951
 
84807
84952
  // ../../node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es6/serverSideRowModel/stores/fullStore.mjs
84808
84953
  var __decorate212 = function(decorators, target, key, desc) {
@@ -89343,4 +89488,4 @@ object-assign/index.js:
89343
89488
  *)
89344
89489
  */
89345
89490
 
89346
- export { Analytics_default as Analytics, AnalyticsBulkClient, BooleanCellEditor, BooleanCellRenderer, ButtonsCellRenderer, ClientSideDataTable_default as ClientSideDataTable, CompanyCellRenderer, CurrencyCellEditor, CurrencyCellRenderer, DateCellEditor, DateCellRenderer, DateFilterRenderer_default as DateFilterRenderer, DateQuickFilterRenderer_default as DateQuickFilterRenderer, DateTimeCellEditor, DateTimeCellRenderer, GrandTotalsLabelRenderer, GroupCellRenderer2 as GroupCellRenderer, LinkCellRenderer, LocationFilterRenderer, LocationQuickFilterRenderer_default as LocationQuickFilterRenderer, MultiSelectCellEditor, MultiSelectCellRenderer, MultiSelectFilterRenderer_default as MultiSelectFilterRenderer, MultiSelectQuickFilterRenderer_default as MultiSelectQuickFilterRenderer, NumberCellEditor2 as NumberCellEditor, NumberCellRenderer, NumberFilterRenderer, PeopleCellRenderer, PercentCellEditor, PercentCellRenderer, PersonCellRenderer, PillCellRenderer, PillSelectCellEditor, SelectAllState, SelectCellEditor2 as SelectCellEditor, SelectCellRenderer, ServerSideDataTable_default as ServerSideDataTable, SingleSelectQuickFilterRenderer_default as SingleSelectQuickFilterRenderer, TextCellEditor2 as TextCellEditor, TextCellRenderer, UNSAFE_useTableContext, rowSize, useAnalyticsContext, useRowSelectionState, waitForAsyncCondition, withDataTableEditor, withDataTableRenderer };
89491
+ export { Analytics_default as Analytics, AnalyticsBulkClient, BooleanCellEditor, BooleanCellRenderer, ButtonsCellRenderer, ClientSideDataTable_default as ClientSideDataTable, CompanyCellRenderer, CurrencyCellEditor, CurrencyCellRenderer, DateCellEditor, DateCellRenderer, DateFilterRenderer_default as DateFilterRenderer, DateQuickFilterRenderer_default as DateQuickFilterRenderer, DateTimeCellEditor, DateTimeCellRenderer, GrandTotalsLabelRenderer, GroupCellRenderer2 as GroupCellRenderer, LinkCellRenderer, LocationFilterRenderer, LocationQuickFilterRenderer_default as LocationQuickFilterRenderer, MultiSelectCellEditor, MultiSelectCellRenderer, MultiSelectFilterRenderer_default as MultiSelectFilterRenderer, MultiSelectQuickFilterRenderer_default as MultiSelectQuickFilterRenderer, NumberCellEditor2 as NumberCellEditor, NumberCellRenderer, NumberFilterRenderer, PeopleCellRenderer, PercentCellEditor, PercentCellRenderer, PersonCellRenderer, PillCellRenderer, PillSelectCellEditor, SelectAllState, SelectCellEditor2 as SelectCellEditor, SelectCellRenderer, ServerSideDataTable_default as ServerSideDataTable, SingleSelectQuickFilterRenderer_default as SingleSelectQuickFilterRenderer, TextCellEditor2 as TextCellEditor, TextCellRenderer, UNSAFE_useTableContext, assignAlphabeticalFilterIndices, rowSize, useAnalyticsContext, useRowSelectionState, waitForAsyncCondition, withDataTableEditor, withDataTableRenderer };