@economic/taco 2.23.0 → 2.24.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. package/dist/components/Card/Card.d.ts +1 -0
  2. package/dist/components/Checkbox/Checkbox.d.ts +2 -0
  3. package/dist/components/Provider/Localization.d.ts +4 -0
  4. package/dist/components/Report/components/Body/Body.d.ts +0 -1
  5. package/dist/components/Report/components/Footer/Summary.d.ts +0 -1
  6. package/dist/components/Report/components/Toolbar/components/Filters/components/Filter.d.ts +2 -2
  7. package/dist/components/Report/components/Toolbar/components/Filters/components/FilterColumn.d.ts +5 -2
  8. package/dist/components/Report/useReport.d.ts +0 -1
  9. package/dist/components/Select2/Select2.d.ts +4 -0
  10. package/dist/components/Select2/hooks/useChildren.d.ts +1 -0
  11. package/dist/components/Table3/components/toolbar/Filter/filters/components/Filter.d.ts +2 -2
  12. package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.d.ts +5 -2
  13. package/dist/esm/index.css +55 -46
  14. package/dist/esm/packages/taco/src/components/Button/util.js +8 -8
  15. package/dist/esm/packages/taco/src/components/Button/util.js.map +1 -1
  16. package/dist/esm/packages/taco/src/components/Card/Card.js +2 -1
  17. package/dist/esm/packages/taco/src/components/Card/Card.js.map +1 -1
  18. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js +11 -2
  19. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js.map +1 -1
  20. package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js +1 -1
  21. package/dist/esm/packages/taco/src/components/Provider/Localization.js +5 -1
  22. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  23. package/dist/esm/packages/taco/src/components/Report/Report.js +3 -8
  24. package/dist/esm/packages/taco/src/components/Report/Report.js.map +1 -1
  25. package/dist/esm/packages/taco/src/components/Report/components/Body/Body.js +1 -2
  26. package/dist/esm/packages/taco/src/components/Report/components/Body/Body.js.map +1 -1
  27. package/dist/esm/packages/taco/src/components/Report/components/Footer/Footer.js +14 -2
  28. package/dist/esm/packages/taco/src/components/Report/components/Footer/Footer.js.map +1 -1
  29. package/dist/esm/packages/taco/src/components/Report/components/Footer/Summary.js +2 -2
  30. package/dist/esm/packages/taco/src/components/Report/components/Footer/Summary.js.map +1 -1
  31. package/dist/esm/packages/taco/src/components/Report/components/Internal/Selection.js +47 -11
  32. package/dist/esm/packages/taco/src/components/Report/components/Internal/Selection.js.map +1 -1
  33. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/ManageFiltersPopover.js +28 -43
  34. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
  35. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Filter.js +14 -7
  36. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Filter.js.map +1 -1
  37. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterColumn.js +4 -3
  38. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterColumn.js.map +1 -1
  39. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/Print.js +10 -8
  40. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/Print.js.map +1 -1
  41. package/dist/esm/packages/taco/src/components/Report/listeners/useTableRowActiveListener.js +2 -2
  42. package/dist/esm/packages/taco/src/components/Report/listeners/useTableRowActiveListener.js.map +1 -1
  43. package/dist/esm/packages/taco/src/components/Report/styles/useCssGridStylesheet.js +7 -4
  44. package/dist/esm/packages/taco/src/components/Report/styles/useCssGridStylesheet.js.map +1 -1
  45. package/dist/esm/packages/taco/src/components/Report/util/useTableGlobalShortcuts.js +3 -10
  46. package/dist/esm/packages/taco/src/components/Report/util/useTableGlobalShortcuts.js.map +1 -1
  47. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +2 -1
  48. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
  49. package/dist/esm/packages/taco/src/components/Select2/Select2.js +43 -4
  50. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  51. package/dist/esm/packages/taco/src/components/Select2/hooks/useChildren.js +1 -1
  52. package/dist/esm/packages/taco/src/components/Select2/hooks/useChildren.js.map +1 -1
  53. package/dist/esm/packages/taco/src/components/Table3/Table3.js +4 -6
  54. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  55. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js +66 -14
  56. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js.map +1 -1
  57. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js +27 -44
  58. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js.map +1 -1
  59. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js +14 -7
  60. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js.map +1 -1
  61. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js +4 -3
  62. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js.map +1 -1
  63. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js +1 -1
  64. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js.map +1 -1
  65. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js +2 -0
  66. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js.map +1 -1
  67. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +1 -1
  68. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js +1 -1
  69. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js +3 -1
  70. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js.map +1 -1
  71. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js +10 -3
  72. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
  73. package/dist/esm/packages/taco/src/hooks/useLocalStorage.js.map +1 -1
  74. package/dist/esm/packages/taco/src/index.js +1 -1
  75. package/dist/esm/packages/taco/src/primitives/Button.js +1 -0
  76. package/dist/esm/packages/taco/src/primitives/Button.js.map +1 -1
  77. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  78. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTablePrinting.js +24 -4
  79. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTablePrinting.js.map +1 -1
  80. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSettings.js +1 -2
  81. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSettings.js.map +1 -1
  82. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSettingsListener.js +1 -1
  83. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSettingsListener.js.map +1 -1
  84. package/dist/esm/packages/taco/src/primitives/Table/useTable/useTable.js +7 -5
  85. package/dist/esm/packages/taco/src/primitives/Table/useTable/useTable.js.map +1 -1
  86. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/columns.js +33 -7
  87. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/columns.js.map +1 -1
  88. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/settings.js +0 -1
  89. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/settings.js.map +1 -1
  90. package/dist/esm/packages/taco/src/utils/dom.js +12 -3
  91. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  92. package/dist/esm/packages/taco/src/utils/keyboard.js +2 -2
  93. package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
  94. package/dist/hooks/useLocalStorage.d.ts +2 -1
  95. package/dist/index.css +55 -46
  96. package/dist/primitives/Table/types.d.ts +0 -2
  97. package/dist/primitives/Table/useTable/features/useTablePrinting.d.ts +10 -3
  98. package/dist/primitives/Table/useTable/useTable.d.ts +1 -1
  99. package/dist/primitives/Table/useTable/util/settings.d.ts +0 -1
  100. package/dist/taco.cjs.development.js +511 -387
  101. package/dist/taco.cjs.development.js.map +1 -1
  102. package/dist/taco.cjs.production.min.js +1 -1
  103. package/dist/taco.cjs.production.min.js.map +1 -1
  104. package/dist/utils/dom.d.ts +3 -1
  105. package/package.json +2 -2
  106. package/types.json +6781 -6993
  107. package/dist/components/Report/components/Toolbar/components/Filters/components/Placeholder.d.ts +0 -12
  108. package/dist/components/Table3/components/toolbar/Filter/filters/components/Placeholder.d.ts +0 -12
  109. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Placeholder.js +0 -41
  110. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Placeholder.js.map +0 -1
  111. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js +0 -41
  112. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js.map +0 -1
@@ -4061,8 +4061,17 @@ function isElementInsideOrTriggeredFromContainer(element, container) {
4061
4061
  }
4062
4062
  return !!(container !== null && container !== void 0 && container.contains(element));
4063
4063
  }
4064
- function isEventTriggeredOnInteractiveElement(eventTarget) {
4065
- const element = eventTarget;
4064
+ function isElementInsideOverlay(element) {
4065
+ return !!(element !== null && element !== void 0 && element.closest('[role=dialog],[role=menu]'));
4066
+ }
4067
+ function isSiblingElementInsideSameParentOverlay(element, sibling) {
4068
+ var _element$closest2;
4069
+ return !!(element !== null && element !== void 0 && (_element$closest2 = element.closest('[role=dialog],[role=menu]')) !== null && _element$closest2 !== void 0 && _element$closest2.contains(sibling));
4070
+ }
4071
+ function isElementInteractive(element) {
4072
+ if (!element) {
4073
+ return false;
4074
+ }
4066
4075
  return ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL', 'OPTION'].includes(element.tagName) && !element.hidden && !element.disabled && !element.readOnly;
4067
4076
  }
4068
4077
 
@@ -4085,7 +4094,7 @@ function shouldTriggerShortcut(event, key) {
4085
4094
  }
4086
4095
  function createShortcutKeyDownHandler(key, handler, stopPropagation = true) {
4087
4096
  return function (event) {
4088
- if (event.target !== event.currentTarget && isEventTriggeredOnInteractiveElement(event.target) && !isPressingMetaKey(event)) {
4097
+ if (event.target !== event.currentTarget && isElementInteractive(event.target) && !isPressingMetaKey(event)) {
4089
4098
  return;
4090
4099
  }
4091
4100
  const condition = shouldTriggerShortcut(event, key);
@@ -4142,6 +4151,7 @@ const Button = /*#__PURE__*/React.forwardRef(function Button(props, ref) {
4142
4151
  });
4143
4152
  const Tag = props.href ? 'a' : 'button';
4144
4153
  return /*#__PURE__*/React.createElement(Tag, Object.assign({}, otherProps, {
4154
+ href: disabled ? undefined : props.href,
4145
4155
  "aria-disabled": disabled ? 'true' : undefined,
4146
4156
  disabled: disabled,
4147
4157
  target: Tag === 'a' ? target : undefined,
@@ -4184,29 +4194,29 @@ const Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(props, ref) {
4184
4194
  });
4185
4195
 
4186
4196
  const getButtonClasses = () => {
4187
- return 'flex-shrink-0 min-h-[theme(spacing.8)] min-w-[theme(spacing.8)] gap-1 h-max leading-5 inline-flex items-center justify-center focus-visible:yt-focus disabled:cursor-not-allowed';
4197
+ return 'flex-shrink-0 min-h-[theme(spacing.8)] min-w-[theme(spacing.8)] gap-1 h-max leading-5 inline-flex items-center justify-center focus-visible:yt-focus aria-disabled:cursor-not-allowed';
4188
4198
  };
4189
4199
  const getAppearanceClasses = (value, icon = false) => {
4190
4200
  switch (value) {
4191
4201
  case 'primary':
4192
- return `wcag-blue-500 enabled:hover:wcag-blue-700 enabled:hover:active:wcag-blue-500 disabled:bg-blue-500/50`;
4202
+ return `wcag-blue-500 visited:wcag-blue-500 hover:wcag-blue-700 hover:active:wcag-blue-500 aria-disabled:bg-blue-500/50 aria-disabled:active:bg-blue-500/50`;
4193
4203
  case 'danger':
4194
- return `wcag-red-500 enabled:hover:wcag-red-700 enabled:hover:active:wcag-red-500 disabled:bg-red-500/50`;
4204
+ return `wcag-red-500 visited:wcag-red-500 hover:wcag-red-700 hover:active:wcag-red-500 aria-disabled:bg-red-500/50 aria-disabled:active:bg-red-500/50`;
4195
4205
  case 'ghost':
4196
- return `bg-white border border-blue-500 text-blue-500 enabled:hover:bg-blue-100 enabled:hover:text-blue-700 disabled:border-blue-500/50 disabled:text-blue-500/50`;
4206
+ return `bg-white border border-blue-500 text-blue-500 visited:text-blue-500 hover:bg-blue-100 hover:text-blue-700 aria-disabled:border-blue-500/50 aria-disabled:text-blue-500/50 aria-disabled:bg-white`;
4197
4207
  case 'discrete':
4198
4208
  {
4199
4209
  if (icon) {
4200
- return `bg-transparent text-black enabled:hover:bg-[#000]/[0.08] disabled:text-black/30`;
4210
+ return `bg-transparent text-black visited:text-black hover:bg-[#000]/[0.08] aria-disabled:text-black/30`;
4201
4211
  }
4202
- return `bg-transparent text-blue-500 enabled:hover:text-blue-700 disabled:text-blue-500/50`;
4212
+ return `bg-transparent text-blue-500 visited:text-blue-500 hover:text-blue-700 aria-disabled:text-blue-500/50`;
4203
4213
  }
4204
4214
  case 'transparent':
4205
4215
  {
4206
- return `bg-transparent text-black enabled:hover:text-black enabled:hover:bg-[#000]/[0.08] disabled:text-black/30`;
4216
+ return `bg-transparent text-black visited:text-black hover:text-black hover:bg-[#000]/[0.08] aria-disabled:text-black/30 aria-disabled:bg-transparent`;
4207
4217
  }
4208
4218
  default:
4209
- return `wcag-grey-200 enabled:hover:wcag-grey-300 disabled:bg-grey-200/50 disabled:text-black/30`;
4219
+ return `wcag-grey-200 visited:wcag-grey-200 hover:wcag-grey-300 aria-disabled:bg-grey-200/50 aria-disabled:text-black/30`;
4210
4220
  }
4211
4221
  };
4212
4222
  const createButtonWithTooltip = (props, className, ref) => {
@@ -4592,7 +4602,11 @@ const defaultLocalisationTexts = {
4592
4602
  delete: 'Delete',
4593
4603
  save: 'Save',
4594
4604
  search: 'Search...',
4595
- searchOrCreate: 'Search or create...'
4605
+ searchOrCreate: 'Search or create...',
4606
+ selectAll: 'Select all',
4607
+ selectAllResults: 'Select all results',
4608
+ deselectAll: 'Deselect all',
4609
+ deselectAllResults: 'Deselect all results'
4596
4610
  },
4597
4611
  toasts: {
4598
4612
  dismiss: 'Dismiss'
@@ -4872,6 +4886,7 @@ const Content$2 = /*#__PURE__*/React.forwardRef(function CardContent(externalPro
4872
4886
  }, props.className);
4873
4887
  return /*#__PURE__*/React.createElement("div", Object.assign({}, props, {
4874
4888
  className: className,
4889
+ "data-taco": "card-content",
4875
4890
  ref: ref
4876
4891
  }));
4877
4892
  });
@@ -4881,7 +4896,7 @@ const Card = /*#__PURE__*/React.forwardRef(function Card(props, ref) {
4881
4896
  menu,
4882
4897
  children
4883
4898
  } = props;
4884
- const className = cn('bg-white flex flex-col rounded-xl border border-solid border-radius-[12px] border-grey-300 hover:border-grey-500 [&_[data-taco="table2"]]:!border-0', props.className);
4899
+ const className = cn('bg-white flex flex-col rounded-xl border border-solid border-radius-[12px] border-grey-300 hover:border-grey-500', props.className);
4885
4900
  return /*#__PURE__*/React.createElement("div", {
4886
4901
  className: className,
4887
4902
  "data-taco": "card",
@@ -4906,12 +4921,52 @@ const useId = nativeId => {
4906
4921
  return React__default.useMemo(() => nativeId !== null && nativeId !== void 0 ? nativeId : uuid.v4(), []);
4907
4922
  };
4908
4923
 
4924
+ const Spinner = /*#__PURE__*/React__default.forwardRef(function Spinner(props, ref) {
4925
+ const {
4926
+ delay = 350,
4927
+ label,
4928
+ ...otherProps
4929
+ } = props;
4930
+ const [visible, setVisibility] = React__default.useState(!delay);
4931
+ React__default.useEffect(() => {
4932
+ let timeout;
4933
+ if (delay) {
4934
+ timeout = window.setTimeout(() => setVisibility(true), delay);
4935
+ }
4936
+ return () => {
4937
+ if (timeout) {
4938
+ clearTimeout(timeout);
4939
+ }
4940
+ };
4941
+ }, [delay]);
4942
+ if (!visible) {
4943
+ return null;
4944
+ }
4945
+ const className = cn('inline-flex flex-col relative items-center', otherProps.className);
4946
+ return /*#__PURE__*/React__default.createElement("div", Object.assign({}, otherProps, {
4947
+ className: className,
4948
+ "data-taco": "spinner",
4949
+ ref: ref
4950
+ }), /*#__PURE__*/React__default.createElement("svg", {
4951
+ className: "h-10 w-10 animate-[spinnerRotation_2s_linear_infinite]",
4952
+ viewBox: "0 0 100 100",
4953
+ xmlns: "http://www.w3.org/2000/svg"
4954
+ }, /*#__PURE__*/React__default.createElement("circle", {
4955
+ cx: "50",
4956
+ cy: "50",
4957
+ r: "45"
4958
+ })), label && /*#__PURE__*/React__default.createElement("span", {
4959
+ className: "mt-4"
4960
+ }, label));
4961
+ });
4962
+
4909
4963
  const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(props, ref) {
4910
4964
  const {
4911
4965
  checked,
4912
4966
  indeterminate,
4913
4967
  invalid,
4914
4968
  label,
4969
+ loading,
4915
4970
  onChange,
4916
4971
  ...otherProps
4917
4972
  } = props;
@@ -4942,6 +4997,11 @@ const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(props, ref) {
4942
4997
  event.currentTarget.click();
4943
4998
  }
4944
4999
  };
5000
+ const spinnerClassname = cn(
5001
+ //Spinner is slightly bigger then 'line' and 'tick' icons, so making it 2px smaller from each side
5002
+ "m-0.5 !h-[calc(100%-theme('spacing.1'))] !w-[calc(100%-theme('spacing.1'))]", {
5003
+ 'text-blue-500': !checked && !indeterminate
5004
+ });
4945
5005
  const element = /*#__PURE__*/React.createElement(CheckboxPrimitive.Root, Object.assign({}, otherProps, labelledByProps, {
4946
5006
  "aria-invalid": invalid ? 'true' : undefined,
4947
5007
  "data-taco": "checkbox",
@@ -4950,12 +5010,14 @@ const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(props, ref) {
4950
5010
  onCheckedChange: handleChange,
4951
5011
  onKeyDown: handleKeyDown,
4952
5012
  ref: ref
4953
- }), /*#__PURE__*/React.createElement(CheckboxPrimitive.Indicator, {
5013
+ }), loading ? ( /*#__PURE__*/React.createElement(Spinner, {
5014
+ className: spinnerClassname
5015
+ })) : ( /*#__PURE__*/React.createElement(CheckboxPrimitive.Indicator, {
4954
5016
  className: "flex h-full w-full"
4955
5017
  }, /*#__PURE__*/React.createElement(Icon, {
4956
5018
  name: indeterminate ? 'line' : 'tick',
4957
5019
  className: "!h-full !w-full"
4958
- })));
5020
+ }))));
4959
5021
  if (label) {
4960
5022
  const labelContainerClassName = cn('flex items-center cursor-pointer gap-2', {
4961
5023
  'cursor-not-allowed text-grey-300': props.disabled
@@ -5254,45 +5316,6 @@ const useListScrollTo = (internalRef, itemRefs) => {
5254
5316
  };
5255
5317
  };
5256
5318
 
5257
- const Spinner = /*#__PURE__*/React__default.forwardRef(function Spinner(props, ref) {
5258
- const {
5259
- delay = 350,
5260
- label,
5261
- ...otherProps
5262
- } = props;
5263
- const [visible, setVisibility] = React__default.useState(!delay);
5264
- React__default.useEffect(() => {
5265
- let timeout;
5266
- if (delay) {
5267
- timeout = window.setTimeout(() => setVisibility(true), delay);
5268
- }
5269
- return () => {
5270
- if (timeout) {
5271
- clearTimeout(timeout);
5272
- }
5273
- };
5274
- }, [delay]);
5275
- if (!visible) {
5276
- return null;
5277
- }
5278
- const className = cn('inline-flex flex-col relative items-center', otherProps.className);
5279
- return /*#__PURE__*/React__default.createElement("div", Object.assign({}, otherProps, {
5280
- className: className,
5281
- "data-taco": "spinner",
5282
- ref: ref
5283
- }), /*#__PURE__*/React__default.createElement("svg", {
5284
- className: "h-10 w-10 animate-[spinnerRotation_2s_linear_infinite]",
5285
- viewBox: "0 0 100 100",
5286
- xmlns: "http://www.w3.org/2000/svg"
5287
- }, /*#__PURE__*/React__default.createElement("circle", {
5288
- cx: "50",
5289
- cy: "50",
5290
- r: "45"
5291
- })), label && /*#__PURE__*/React__default.createElement("span", {
5292
- className: "mt-4"
5293
- }, label));
5294
- });
5295
-
5296
5319
  const getId = (id, value) => `${id}_${value}`;
5297
5320
  const getNextEnabledItem = (event, data, index) => {
5298
5321
  const nextIndex = getNextIndexFromKey(event.key, data.length, index);
@@ -9277,13 +9300,32 @@ function getCellValueAsString(value, dataType) {
9277
9300
  }
9278
9301
  return String(value);
9279
9302
  }
9303
+ function orderColumn(column, {
9304
+ orderingDisabled,
9305
+ orderingEnabled
9306
+ }) {
9307
+ const groupedColumn = column;
9308
+ if (Array.isArray(groupedColumn.columns) && groupedColumn.columns.length > 0) {
9309
+ groupedColumn.columns.forEach(subcolumn => orderColumn(subcolumn, {
9310
+ orderingDisabled,
9311
+ orderingEnabled
9312
+ }));
9313
+ } else {
9314
+ var _column$meta;
9315
+ if ((_column$meta = column.meta) !== null && _column$meta !== void 0 && _column$meta.enableOrdering) {
9316
+ orderingEnabled.push(column.id);
9317
+ } else {
9318
+ orderingDisabled.push(column.id);
9319
+ }
9320
+ }
9321
+ }
9280
9322
  // ordering
9281
9323
  function ensureOrdering(columns, settingsOrder, internalColumnsPinnedToTheRight = ['__actions']) {
9282
9324
  // internal columns come with a defined order
9283
9325
  const internalColumns = columns.filter(column => isInternalColumn(column.id) && !internalColumnsPinnedToTheRight.includes(String(column.id))).map(column => column.id);
9284
9326
  // columns with ordering disabled should be moved to the front
9285
9327
  const orderingDisabled = [];
9286
- const orderingEnabled = [];
9328
+ let orderingEnabled = [];
9287
9329
  let orderedColumns = columns;
9288
9330
  // if settings is defined, make sure the columns that are actual children are sorted by it
9289
9331
  if (Array.isArray(settingsOrder)) {
@@ -9292,16 +9334,23 @@ function ensureOrdering(columns, settingsOrder, internalColumnsPinnedToTheRight
9292
9334
  (a, b) => (settingsOrder.indexOf(a.id) >>> 0) - (settingsOrder.indexOf(b.id) >>> 0));
9293
9335
  }
9294
9336
  orderedColumns.forEach(column => {
9295
- var _column$meta;
9296
9337
  if (isInternalColumn(column.id)) {
9297
9338
  return;
9298
9339
  }
9299
- if ((_column$meta = column.meta) !== null && _column$meta !== void 0 && _column$meta.enableOrdering) {
9300
- orderingEnabled.push(column.id);
9301
- } else {
9302
- orderingDisabled.push(column.id);
9303
- }
9340
+ orderColumn(column, {
9341
+ orderingDisabled,
9342
+ orderingEnabled
9343
+ });
9304
9344
  });
9345
+ if (settingsOrder && settingsOrder.length > 0) {
9346
+ orderingEnabled = orderingEnabled.reduce((acc, column) => {
9347
+ const index = settingsOrder.indexOf(column);
9348
+ if (index > -1) {
9349
+ acc[index] = column;
9350
+ }
9351
+ return acc;
9352
+ }, []).filter(column => !!column);
9353
+ }
9305
9354
  const order = [...internalColumns, ...orderingDisabled, ...orderingEnabled];
9306
9355
  // actions should always be last, enforce that
9307
9356
  internalColumnsPinnedToTheRight.forEach(id => {
@@ -9896,17 +9945,79 @@ function useTableFontSize(isEnabled = false, defaultFontSize = 'medium') {
9896
9945
  };
9897
9946
  }
9898
9947
 
9899
- function useTablePrinting(isEnabled = false, defaultIsWarningVisible = true) {
9948
+ function useTacoSettings() {
9949
+ return React__default.useContext(TacoContext);
9950
+ }
9951
+
9952
+ const useLocalStorage = (key, initialValue) => {
9953
+ const [state, setState] = React__default.useState(() => {
9954
+ if (!key) {
9955
+ return initialValue;
9956
+ }
9957
+ try {
9958
+ const localStorageValue = localStorage.getItem(key);
9959
+ if (typeof localStorageValue !== 'string') {
9960
+ localStorage.setItem(key, JSON.stringify(initialValue));
9961
+ return initialValue;
9962
+ } else {
9963
+ return JSON.parse(localStorageValue || 'null');
9964
+ }
9965
+ } catch {
9966
+ // If user is in private mode or has storage restriction
9967
+ // localStorage can throw. JSON.parse and JSON.stringify
9968
+ // can throw, too.
9969
+ return initialValue;
9970
+ }
9971
+ });
9972
+ React__default.useEffect(() => {
9973
+ if (!key) {
9974
+ return;
9975
+ }
9976
+ try {
9977
+ const serializedState = JSON.stringify(state);
9978
+ localStorage.setItem(key, serializedState);
9979
+ } catch {
9980
+ // If user is in private mode or has storage restriction
9981
+ // localStorage can throw. Also JSON.stringify can throw.
9982
+ }
9983
+ }, [key, state]);
9984
+ const clear = () => {
9985
+ if (key) {
9986
+ localStorage.removeItem(key);
9987
+ }
9988
+ };
9989
+ return [state, setState, clear];
9990
+ };
9991
+
9992
+ function useTablePrinting(isEnabled = false, tableId) {
9900
9993
  const [isPrinting, setIsPrinting] = React__default.useState(false);
9901
- const [isWarningVisibleForLargeDatasets, setIsWarningVisibleForLargeDatasets] = React__default.useState(defaultIsWarningVisible);
9994
+ const [settings, setSetting] = useTablePrintingSettings(tableId);
9902
9995
  return {
9903
9996
  isEnabled,
9904
9997
  isPrinting,
9905
9998
  setIsPrinting,
9906
- isWarningVisibleForLargeDatasets,
9907
- setIsWarningVisibleForLargeDatasets: isEnabled ? setIsWarningVisibleForLargeDatasets : () => undefined
9999
+ settings,
10000
+ setSetting
9908
10001
  };
9909
10002
  }
10003
+ const DEFAULT_PRINT_SETTINGS = {
10004
+ size: 'A4',
10005
+ orientation: 'portrait',
10006
+ allRows: true,
10007
+ splitGroups: true
10008
+ };
10009
+ function useTablePrintingSettings(tableId) {
10010
+ const tacoSettings = useTacoSettings();
10011
+ const uniqueId = `taco.${tacoSettings.uniqueUserIdentifier}.table.${tableId}.print.settings`;
10012
+ const [persistedSettings, setPersistedSettings] = useLocalStorage(uniqueId, DEFAULT_PRINT_SETTINGS);
10013
+ function setSetting(key, value) {
10014
+ setPersistedSettings(currentSettings => ({
10015
+ ...currentSettings,
10016
+ [key]: value
10017
+ }));
10018
+ }
10019
+ return [persistedSettings, setSetting];
10020
+ }
9910
10021
 
9911
10022
  const DEFAULT_ROW_ACTIONS_LENGTH = 4;
9912
10023
  function useTableRowActions(isEnabled = false, rowActions, rowActionsLength = DEFAULT_ROW_ACTIONS_LENGTH) {
@@ -10336,50 +10447,6 @@ function useTableServerLoading(loadPage, loadAll, pageSize = DEFAULT_PAGE_SIZE)
10336
10447
  };
10337
10448
  }
10338
10449
 
10339
- const useLocalStorage = (key, initialValue) => {
10340
- const [state, setState] = React__default.useState(() => {
10341
- if (!key) {
10342
- return initialValue;
10343
- }
10344
- try {
10345
- const localStorageValue = localStorage.getItem(key);
10346
- if (typeof localStorageValue !== 'string') {
10347
- localStorage.setItem(key, JSON.stringify(initialValue));
10348
- return initialValue;
10349
- } else {
10350
- return JSON.parse(localStorageValue || 'null');
10351
- }
10352
- } catch {
10353
- // If user is in private mode or has storage restriction
10354
- // localStorage can throw. JSON.parse and JSON.stringify
10355
- // can throw, too.
10356
- return initialValue;
10357
- }
10358
- });
10359
- React__default.useEffect(() => {
10360
- if (!key) {
10361
- return;
10362
- }
10363
- try {
10364
- const serializedState = JSON.stringify(state);
10365
- localStorage.setItem(key, serializedState);
10366
- } catch {
10367
- // If user is in private mode or has storage restriction
10368
- // localStorage can throw. Also JSON.stringify can throw.
10369
- }
10370
- }, [key, state]);
10371
- const clear = () => {
10372
- if (key) {
10373
- localStorage.removeItem(key);
10374
- }
10375
- };
10376
- return [state, setState, clear];
10377
- };
10378
-
10379
- function useTacoSettings() {
10380
- return React__default.useContext(TacoContext);
10381
- }
10382
-
10383
10450
  const DEFAULT_ENABLED_OPTIONS = {
10384
10451
  columnOrder: true,
10385
10452
  columnPinning: true,
@@ -10389,7 +10456,6 @@ const DEFAULT_ENABLED_OPTIONS = {
10389
10456
  fontSize: true,
10390
10457
  grouping: true,
10391
10458
  rowHeight: true,
10392
- showWarningWhenPrintingLargeDataset: true,
10393
10459
  sorting: true
10394
10460
  };
10395
10461
  function useUniqueTableId(tableId) {
@@ -10618,7 +10684,6 @@ function getSettings(table) {
10618
10684
  fontSize: meta.fontSize.isEnabled ? meta.fontSize.size : undefined,
10619
10685
  grouping: table.options.enableGrouping ? state.grouping : undefined,
10620
10686
  rowHeight: meta.rowHeight.isEnabled ? meta.rowHeight.height : undefined,
10621
- showWarningWhenPrintingLargeDataset: meta.printing.isWarningVisibleForLargeDatasets,
10622
10687
  //searchQuery: table.options.enableGlobalFilter ? state.globalFilter : undefined,
10623
10688
  sorting: state.sorting
10624
10689
  };
@@ -10640,7 +10705,7 @@ function useTableSettingsListener(table, onChangeSettings) {
10640
10705
  //state.columnFilters,
10641
10706
  state.columnOrder, state.columnPinning, state.columnSizing, state.columnVisibility,
10642
10707
  // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
10643
- meta.search.excludeUnmatchedResults, meta.fontSize.size, state.grouping, meta.rowHeight.height, meta.printing.isWarningVisibleForLargeDatasets,
10708
+ meta.search.excludeUnmatchedResults, meta.fontSize.size, state.grouping, meta.rowHeight.height,
10644
10709
  //state.globalFilter,
10645
10710
  state.sorting]);
10646
10711
  }
@@ -10730,7 +10795,7 @@ function useTableRef(table, ref) {
10730
10795
  }
10731
10796
 
10732
10797
  function useTable(props, ref, meta, internalColumns) {
10733
- var _props$length, _instance$options$met;
10798
+ var _props$data, _props$length, _instance$options$met;
10734
10799
  // CSS.escape would be best here, but it doesn't seem to work very well
10735
10800
  const safeId = props.id.replace('.', '_');
10736
10801
  // configure table options, merging props with presets
@@ -10742,7 +10807,7 @@ function useTable(props, ref, meta, internalColumns) {
10742
10807
  const columnOrdering = useTableColumnOrdering(options.enableColumnOrdering);
10743
10808
  const fontSize = useTableFontSize(options.enableFontSize, settings.fontSize);
10744
10809
  const footer = useTableFooter(options.enableFooter);
10745
- const printing = useTablePrinting(options.enablePrinting, settings.showWarningWhenPrintingLargeDataset);
10810
+ const printing = useTablePrinting(options.enablePrinting, safeId);
10746
10811
  const rowActive = useTableRowActive(options.enableRowActive, props.defaultRowActiveIndex);
10747
10812
  const rowActions = useTableRowActions(options.enableRowActions, props.rowActions, props.rowActionsLength);
10748
10813
  const rowClick = useTableRowClick(options.enableRowClick, props.onRowClick);
@@ -10761,10 +10826,13 @@ function useTable(props, ref, meta, internalColumns) {
10761
10826
  } = mapTableChildrenToColumns(props, settings, options, internalColumns);
10762
10827
  // configure initial table state
10763
10828
  const initialState = useReactTableInitialState(props, columns, settings, defaultState);
10829
+ // ensure data is always valid
10830
+ const data = (_props$data = props.data) !== null && _props$data !== void 0 ? _props$data : [];
10831
+ const length = (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : data.length;
10764
10832
  // create a react-table instance
10765
10833
  // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
10766
10834
  const instance = reactTable.useReactTable({
10767
- data: props.data,
10835
+ data,
10768
10836
  columns,
10769
10837
  // configure initial table state
10770
10838
  initialState,
@@ -10780,7 +10848,7 @@ function useTable(props, ref, meta, internalColumns) {
10780
10848
  columnOrdering,
10781
10849
  fontSize,
10782
10850
  footer,
10783
- //getSettings
10851
+ length,
10784
10852
  printing,
10785
10853
  rowActions,
10786
10854
  rowActive,
@@ -10810,7 +10878,6 @@ function useTable(props, ref, meta, internalColumns) {
10810
10878
  return {
10811
10879
  id: safeId,
10812
10880
  instance,
10813
- length: (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : props.data.length,
10814
10881
  meta: (_instance$options$met = instance.options.meta) !== null && _instance$options$met !== void 0 ? _instance$options$met : {},
10815
10882
  state: instance.getState()
10816
10883
  };
@@ -10990,6 +11057,7 @@ function Header$3(context) {
10990
11057
  key: String(`${isAllRowsSelected}_${isSomeRowsSelected}`),
10991
11058
  checked: isAllRowsSelected,
10992
11059
  indeterminate: isSomeRowsSelected,
11060
+ loading: tableMeta.server.loadAllStatus === TableServerLoadAllState.Loading,
10993
11061
  onChange: handleChange
10994
11062
  }));
10995
11063
  }
@@ -11009,6 +11077,9 @@ function Cell$2(context) {
11009
11077
  row,
11010
11078
  table
11011
11079
  } = context;
11080
+ const {
11081
+ rowIndex
11082
+ } = React__default.useContext(RowContext);
11012
11083
  const tableMeta = table.options.meta;
11013
11084
  if (table.options.enableGrouping && (_table$getState$group = table.getState().grouping) !== null && _table$getState$group !== void 0 && _table$getState$group.length && !row.getIsGrouped()) {
11014
11085
  return null;
@@ -11016,18 +11087,48 @@ function Cell$2(context) {
11016
11087
  const isSelected = row.getIsGrouped() ? row.getIsAllSubRowsSelected() : row.getIsSelected();
11017
11088
  const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;
11018
11089
  if (table.options.enableMultiRowSelection) {
11019
- const handleClick = event => {
11020
- event.stopPropagation();
11021
- if (row.getIsGrouped()) {
11022
- row.subRows.forEach(row => row.toggleSelected());
11023
- } else if (event.shiftKey) {
11024
- var _tableMeta$rowSelecti;
11025
- const [fromIndex, toIndex] = toggleBetween((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, row.index);
11026
- table.getRowModel().rows.slice(fromIndex, toIndex + 1).forEach(row => row.toggleSelected(true));
11027
- } else {
11028
- row.toggleSelected();
11090
+ const handleClick = function (event) {
11091
+ try {
11092
+ function _temp7() {
11093
+ tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;
11094
+ }
11095
+ event.stopPropagation();
11096
+ const _temp6 = function () {
11097
+ if (row.getIsGrouped()) {
11098
+ row.subRows.forEach(row => row.toggleSelected());
11099
+ } else {
11100
+ const _temp5 = function () {
11101
+ if (event.shiftKey) {
11102
+ var _tableMeta$rowSelecti;
11103
+ function _temp4() {
11104
+ table.setRowSelection(currentRowSelection => ({
11105
+ ...currentRowSelection,
11106
+ ...selectedRows.reduce((state, row) => ({
11107
+ ...state,
11108
+ [row.id]: true
11109
+ }), {})
11110
+ }));
11111
+ }
11112
+ const [fromIndex, toIndex] = toggleBetween((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
11113
+ const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);
11114
+ const _temp3 = function () {
11115
+ if (tableMeta.server.loadAllIfNeeded && selectedRows.some(row => row.original === undefined)) {
11116
+ // don't pass the search query because we need all data - not filtered data
11117
+ return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters, undefined)).then(function () {});
11118
+ }
11119
+ }();
11120
+ return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
11121
+ } else {
11122
+ row.toggleSelected();
11123
+ }
11124
+ }();
11125
+ if (_temp5 && _temp5.then) return _temp5.then(function () {});
11126
+ }
11127
+ }();
11128
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));
11129
+ } catch (e) {
11130
+ return Promise.reject(e);
11029
11131
  }
11030
- tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;
11031
11132
  };
11032
11133
  return /*#__PURE__*/React__default.createElement(Tooltip, {
11033
11134
  title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, title, /*#__PURE__*/React__default.createElement(Shortcut, {
@@ -11070,7 +11171,7 @@ function useTableRowActiveListener(table, tableRef) {
11070
11171
  const activeRow = (_tableRef$current$que = (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.querySelector('tbody tr[data-row-active="true"]')) !== null && _tableRef$current$que !== void 0 ? _tableRef$current$que : null;
11071
11172
  // if the focused element, or it's parent if it's portalled, aren't in the row, then focus the row
11072
11173
  // this ensures the next tab press starts at the row
11073
- if (!isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) && !isEventTriggeredOnInteractiveElement(document.activeElement)) {
11174
+ if (!isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) && !isElementInteractive(document.activeElement)) {
11074
11175
  var _activeRow$focus;
11075
11176
  activeRow === null || activeRow === void 0 ? void 0 : (_activeRow$focus = activeRow.focus) === null || _activeRow$focus === void 0 ? void 0 : _activeRow$focus.call(activeRow, {
11076
11177
  preventScroll: true
@@ -11652,7 +11753,6 @@ function useAugmentedFocusManager() {
11652
11753
  function Body(props) {
11653
11754
  const {
11654
11755
  enableArrowKeyFocusing = false,
11655
- length,
11656
11756
  table,
11657
11757
  ...attributes
11658
11758
  } = props;
@@ -11667,7 +11767,7 @@ function Body(props) {
11667
11767
  }
11668
11768
  if (tableMeta.rowActive.rowActiveIndex !== undefined) {
11669
11769
  const isFirstRow = tableMeta.rowActive.rowActiveIndex === 0;
11670
- const isLastRow = tableMeta.rowActive.rowActiveIndex === length - 1;
11770
+ const isLastRow = tableMeta.rowActive.rowActiveIndex === tableMeta.length - 1;
11671
11771
  if (event.key === 'Tab' || enableArrowKeyFocusing && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {
11672
11772
  tableMeta.rowActive.setHoverStatePaused(true);
11673
11773
  const focusedElement = event.shiftKey || event.key === 'ArrowLeft' ? focusManager.focusPrevious() : focusManager.focusNext();
@@ -11705,45 +11805,16 @@ function Body(props) {
11705
11805
  }));
11706
11806
  }
11707
11807
 
11708
- function Footer$3(header) {
11709
- return /*#__PURE__*/React__default.createElement(MemoedFooter, {
11710
- key: header.id,
11711
- footer: header
11712
- });
11713
- }
11714
- const MemoedFooter = /*#__PURE__*/React__default.memo(function MemoedFooter(props) {
11715
- var _footer$subHeaders, _footer$subHeaders$fi;
11716
- const {
11717
- footer
11718
- } = props;
11719
- const columnMeta = footer.column.columnDef.meta;
11720
- // getIsPinned returns true for split header groups, even if the split group has no pinned sub headers
11721
- const isHeaderGroup = !!((_footer$subHeaders = footer.subHeaders) !== null && _footer$subHeaders !== void 0 && _footer$subHeaders.length);
11722
- const isPinned = isHeaderGroup ? (_footer$subHeaders$fi = footer.subHeaders.find(x => x.column.getIsPinned())) === null || _footer$subHeaders$fi === void 0 ? void 0 : _footer$subHeaders$fi.column.getIsPinned() : footer.column.getIsPinned();
11723
- const style = {};
11724
- if (isPinned) {
11725
- // pinned columns should be offset from either the left or right
11726
- style[isPinned] = `${footer.column.getStart(isPinned) - 1}px`;
11727
- }
11728
- return /*#__PURE__*/React__default.createElement("td", {
11729
- key: footer.id,
11730
- "data-cell-align": columnMeta.align,
11731
- "data-cell-id": footer.id,
11732
- "data-cell-pinned": isPinned ? isPinned : undefined,
11733
- style: style
11734
- }, footer.isPlaceholder ? null : reactTable.flexRender(footer.column.columnDef.footer, footer.getContext()));
11735
- });
11736
-
11737
11808
  function Summary(props) {
11738
11809
  var _table$getState$colum;
11739
11810
  const {
11740
- length,
11741
11811
  table
11742
11812
  } = props;
11743
11813
  const {
11744
11814
  locale,
11745
11815
  texts
11746
11816
  } = useLocalization();
11817
+ const length = table.options.meta.length;
11747
11818
  const currentLength = table.getRowModel().rows.length;
11748
11819
  let label;
11749
11820
  let count;
@@ -11763,11 +11834,51 @@ function Summary(props) {
11763
11834
  count = /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length));
11764
11835
  }
11765
11836
  return /*#__PURE__*/React__default.createElement("div", {
11766
- className: "border-grey-300 sticky z-20 -mt-[2.63rem] ml-px flex h-10 w-fit items-center whitespace-nowrap rounded-bl border-t-2 bg-white px-4 !pr-3",
11837
+ className: "sticky left-0 z-20 flex h-full w-fit items-center whitespace-nowrap bg-white pr-1 shadow-[12px_0px_6px_white]",
11767
11838
  "data-taco": "table2-footer-summary"
11768
11839
  }, label, "\u00A0", count);
11769
11840
  }
11770
11841
 
11842
+ function Footer$3(header) {
11843
+ return /*#__PURE__*/React__default.createElement(MemoedFooter, {
11844
+ key: header.id,
11845
+ footer: header
11846
+ });
11847
+ }
11848
+ const MemoedFooter = /*#__PURE__*/React__default.memo(function MemoedFooter(props) {
11849
+ var _footer$subHeaders, _footer$subHeaders$fi;
11850
+ const {
11851
+ footer
11852
+ } = props;
11853
+ const columnMeta = footer.column.columnDef.meta;
11854
+ // getIsPinned returns true for split header groups, even if the split group has no pinned sub headers
11855
+ const isHeaderGroup = !!((_footer$subHeaders = footer.subHeaders) !== null && _footer$subHeaders !== void 0 && _footer$subHeaders.length);
11856
+ const isPinned = isHeaderGroup ? (_footer$subHeaders$fi = footer.subHeaders.find(x => x.column.getIsPinned())) === null || _footer$subHeaders$fi === void 0 ? void 0 : _footer$subHeaders$fi.column.getIsPinned() : footer.column.getIsPinned();
11857
+ const style = {};
11858
+ if (isPinned) {
11859
+ // pinned columns should be offset from either the left or right
11860
+ style[isPinned] = `${footer.column.getStart(isPinned) - 1}px`;
11861
+ }
11862
+ let content;
11863
+ let align;
11864
+ if (footer.index === 0) {
11865
+ align = 'left';
11866
+ content = /*#__PURE__*/React__default.createElement(Summary, {
11867
+ table: footer.getContext().table
11868
+ });
11869
+ } else {
11870
+ align = columnMeta.align;
11871
+ content = footer.isPlaceholder ? null : reactTable.flexRender(footer.column.columnDef.footer, footer.getContext());
11872
+ }
11873
+ return /*#__PURE__*/React__default.createElement("td", {
11874
+ key: footer.id,
11875
+ "data-cell-align": align,
11876
+ "data-cell-id": footer.id,
11877
+ "data-cell-pinned": isPinned ? isPinned : undefined,
11878
+ style: style
11879
+ }, content);
11880
+ });
11881
+
11771
11882
  const SearchInput2 = /*#__PURE__*/React__default.forwardRef(function SearchInput2(props, ref) {
11772
11883
  var _attributes$ariaLabe, _attributes$placehold;
11773
11884
  const {
@@ -11838,6 +11949,7 @@ const SearchInput2 = /*#__PURE__*/React__default.forwardRef(function SearchInput
11838
11949
  }
11839
11950
  if (event.key === 'Escape') {
11840
11951
  handleClear();
11952
+ event.stopPropagation();
11841
11953
  return;
11842
11954
  }
11843
11955
  };
@@ -13731,7 +13843,39 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
13731
13843
  (_internalRef$current = internalRef.current) === null || _internalRef$current === void 0 ? void 0 : _internalRef$current.focus();
13732
13844
  }
13733
13845
  };
13734
- const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md outline-none', createCollectionClassName());
13846
+ const selectOptions = searchQuery === '' ? flattenedChildren.map(child => child.key) : filteredChildren.map(child => isGroup(child) ? Array.isArray(child.props.children) && child.props.children.map(subChild => subChild.key) : child.key).flatMap(c => c) || [];
13847
+ const areAllSelected = Array.isArray(value) && selectOptions.every(option => value.includes(option));
13848
+ const selectAllText = React__default.useMemo(() => {
13849
+ if (searchQuery === '') {
13850
+ if (areAllSelected) {
13851
+ return texts.select2.deselectAll;
13852
+ } else {
13853
+ return texts.select2.selectAll;
13854
+ }
13855
+ } else if (areAllSelected) {
13856
+ return texts.select2.deselectAllResults;
13857
+ } else {
13858
+ return texts.select2.selectAllResults;
13859
+ }
13860
+ }, [areAllSelected, searchQuery]);
13861
+ const selectAll = () => {
13862
+ if (!Array.isArray(value) || value.length === 0) {
13863
+ setValue(selectOptions);
13864
+ } else {
13865
+ selectOptions.forEach(child => {
13866
+ !value.includes(child) && setValue(child);
13867
+ });
13868
+ }
13869
+ };
13870
+ const deselectAll = () => {
13871
+ if (searchQuery === '') {
13872
+ setValue([]);
13873
+ } else {
13874
+ const nextValue = Array.isArray(value) && value.filter(subValue => !selectOptions.includes(subValue));
13875
+ setValue(nextValue);
13876
+ }
13877
+ };
13878
+ const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md outline-none"', createCollectionClassName());
13735
13879
  return /*#__PURE__*/React__default.createElement(Select2Context.Provider, {
13736
13880
  value: context
13737
13881
  }, /*#__PURE__*/React__default.createElement(PopoverPrimitive.Root, {
@@ -13771,11 +13915,17 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
13771
13915
  style: {
13772
13916
  minWidth: dimensions !== null && dimensions !== void 0 && dimensions.width ? `${dimensions.width}px` : undefined
13773
13917
  }
13774
- }, flattenedChildren.length > 0 || onCreate ? ( /*#__PURE__*/React__default.createElement(Search$2, {
13918
+ }, flattenedChildren.length > 0 || onCreate ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Search$2, {
13775
13919
  placeholder: onCreate ? texts.select2.searchOrCreate : texts.select2.search,
13776
13920
  ref: searchRef,
13777
13921
  onTabKeyPress: () => setTabTriggeredClose(true)
13778
- })) : null, flattenedChildren.length <= 0 ? ( /*#__PURE__*/React__default.createElement("div", {
13922
+ }), multiple && selectOptions.length > 1 && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Button$1, {
13923
+ className: "!justify-start",
13924
+ appearance: "discrete",
13925
+ onClick: areAllSelected ? deselectAll : selectAll
13926
+ }, selectAllText), /*#__PURE__*/React__default.createElement("div", {
13927
+ className: "border-grey-300 mx-3 rounded border-t"
13928
+ }))))) : null, flattenedChildren.length <= 0 ? ( /*#__PURE__*/React__default.createElement("div", {
13779
13929
  className: "text-grey-700 -mt-0.5 flex h-8 items-center px-2",
13780
13930
  role: "presentation"
13781
13931
  }, "No results found...")) : ( /*#__PURE__*/React__default.createElement(Root$1, {
@@ -13922,6 +14072,12 @@ function Print$1(props) {
13922
14072
  const lastScrollTopRef = React__default.useRef();
13923
14073
  const toast = useToast();
13924
14074
  const tableMeta = table.options.meta;
14075
+ const {
14076
+ allRows,
14077
+ orientation,
14078
+ size,
14079
+ splitGroups
14080
+ } = tableMeta.printing.settings;
13925
14081
  const togglePrinting = React__default.useCallback(enabled => {
13926
14082
  tableMeta.printing.setIsPrinting(enabled);
13927
14083
  if (tableRef.current) {
@@ -13979,10 +14135,6 @@ function Print$1(props) {
13979
14135
  return Promise.reject(e);
13980
14136
  }
13981
14137
  };
13982
- const [orientation, setOrientation] = React__default.useState('portrait');
13983
- const [size, setSize] = React__default.useState('A4');
13984
- const [allRows, setAllRows] = React__default.useState(true);
13985
- const [splitGroups, setSplitGroups] = React__default.useState(true);
13986
14138
  const printStyle = [`@page { size: ${size} ${orientation}; }`];
13987
14139
  if (!allRows) {
13988
14140
  printStyle.push(`table[data-taco='report']#${tableId} tr:not([data-row-selected="true"]) { display: none; }`);
@@ -14008,13 +14160,13 @@ function Print$1(props) {
14008
14160
  table: table,
14009
14161
  onAccept: print,
14010
14162
  orientation: orientation,
14011
- setOrientation: setOrientation,
14163
+ setOrientation: value => tableMeta.printing.setSetting('orientation', value),
14012
14164
  size: size,
14013
- setSize: setSize,
14165
+ setSize: value => tableMeta.printing.setSetting('size', value),
14014
14166
  allRows: allRows,
14015
- setAllRows: setAllRows,
14167
+ setAllRows: value => tableMeta.printing.setSetting('allRows', value),
14016
14168
  splitGroups: splitGroups,
14017
- setSplitGroups: setSplitGroups
14169
+ setSplitGroups: value => tableMeta.printing.setSetting('splitGroups', value)
14018
14170
  }))),
14019
14171
  ref: ref,
14020
14172
  shortcut: shortcut,
@@ -14043,7 +14195,7 @@ function sortByHeader(a, b) {
14043
14195
  return (_a$columnDef$meta = a.columnDef.meta) === null || _a$columnDef$meta === void 0 ? void 0 : (_a$columnDef$meta$hea = _a$columnDef$meta.header) === null || _a$columnDef$meta$hea === void 0 ? void 0 : (_a$columnDef$meta$hea2 = _a$columnDef$meta$hea.localeCompare) === null || _a$columnDef$meta$hea2 === void 0 ? void 0 : _a$columnDef$meta$hea2.call(_a$columnDef$meta$hea, (_b$columnDef$meta = b.columnDef.meta) === null || _b$columnDef$meta === void 0 ? void 0 : _b$columnDef$meta.header);
14044
14196
  }
14045
14197
 
14046
- function FilterColumn(props) {
14198
+ const FilterColumn = /*#__PURE__*/React__default.forwardRef((props, ref) => {
14047
14199
  const {
14048
14200
  allColumns,
14049
14201
  filters,
@@ -14063,7 +14215,8 @@ function FilterColumn(props) {
14063
14215
  warning: warning,
14064
14216
  className: "min-h-[theme(spacing.8)]"
14065
14217
  }, /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
14066
- className: "!w-32 flex-shrink-0",
14218
+ ref: ref,
14219
+ className: "focus:yt-focus !w-32 flex-shrink-0 ",
14067
14220
  emptyValue: null,
14068
14221
  onChange: handleChange,
14069
14222
  value: value
@@ -14081,7 +14234,7 @@ function FilterColumn(props) {
14081
14234
  disabled: column.id !== value && (!column.getCanFilter() || !!filters.find(f => f.id === column.id))
14082
14235
  }, ((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.header) + (column.parent ? ` (${(_column$parent = column.parent) === null || _column$parent === void 0 ? void 0 : (_column$parent$column = _column$parent.columnDef.meta) === null || _column$parent$column === void 0 ? void 0 : _column$parent$column.header})` : ''));
14083
14236
  }))));
14084
- }
14237
+ });
14085
14238
 
14086
14239
  function FilterComparator(props) {
14087
14240
  const {
@@ -14308,6 +14461,7 @@ function Filter$1(props) {
14308
14461
  texts
14309
14462
  } = useLocalization();
14310
14463
  const column = allColumns.find(c => c.id === filter.id);
14464
+ const ref = React__default.useRef(null);
14311
14465
  const {
14312
14466
  id,
14313
14467
  value: {
@@ -14326,7 +14480,7 @@ function Filter$1(props) {
14326
14480
  comparator: TableFilterComparator.Contains,
14327
14481
  value: undefined
14328
14482
  };
14329
- handleChange(id, {
14483
+ handleChange(position, {
14330
14484
  id: columnId,
14331
14485
  value
14332
14486
  });
@@ -14336,7 +14490,7 @@ function Filter$1(props) {
14336
14490
  if (comparator === TableFilterComparator.IsEmpty || comparator === TableFilterComparator.IsNotEmpty) {
14337
14491
  nextValue = undefined;
14338
14492
  }
14339
- handleChange(id, {
14493
+ handleChange(position, {
14340
14494
  id,
14341
14495
  value: {
14342
14496
  comparator,
@@ -14345,7 +14499,7 @@ function Filter$1(props) {
14345
14499
  });
14346
14500
  };
14347
14501
  const handleChangeValue = value => {
14348
- handleChange(id, {
14502
+ handleChange(position, {
14349
14503
  id,
14350
14504
  value: {
14351
14505
  ...filter.value,
@@ -14353,7 +14507,12 @@ function Filter$1(props) {
14353
14507
  }
14354
14508
  });
14355
14509
  };
14356
- const handleRemove = () => onRemove(id);
14510
+ const handleRemove = () => onRemove === null || onRemove === void 0 ? void 0 : onRemove(position);
14511
+ React__default.useEffect(() => {
14512
+ if (ref.current && !id) {
14513
+ ref.current.focus(); // after adding a new filter placeholder, we want to focus it right way.
14514
+ }
14515
+ }, [id]);
14357
14516
  return /*#__PURE__*/React__default.createElement("div", {
14358
14517
  className: "flex items-start gap-2"
14359
14518
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -14362,7 +14521,8 @@ function Filter$1(props) {
14362
14521
  allColumns: allColumns,
14363
14522
  filters: filters,
14364
14523
  onChange: handleChangeColumn,
14365
- value: id
14524
+ value: id,
14525
+ ref: ref
14366
14526
  }), /*#__PURE__*/React__default.createElement(FilterComparator, {
14367
14527
  column: column,
14368
14528
  onChange: handleChangeComparator,
@@ -14372,46 +14532,21 @@ function Filter$1(props) {
14372
14532
  comparator: comparator,
14373
14533
  onChange: handleChangeValue,
14374
14534
  value: value
14375
- }), /*#__PURE__*/React__default.createElement(IconButton, {
14535
+ }), onRemove ? /*#__PURE__*/React__default.createElement(IconButton, {
14376
14536
  appearance: "discrete",
14377
14537
  className: "ml-auto",
14378
14538
  icon: "close",
14379
14539
  onClick: handleRemove
14380
- }));
14381
- }
14382
-
14383
- function Placeholder(props) {
14384
- const {
14385
- allColumns,
14386
- filters,
14387
- onCreate: handleCreate,
14388
- onRemove: handleRemove,
14389
- position
14390
- } = props;
14391
- const {
14392
- texts
14393
- } = useLocalization();
14394
- return /*#__PURE__*/React__default.createElement("div", {
14395
- className: "flex items-start gap-2"
14396
- }, /*#__PURE__*/React__default.createElement("div", {
14397
- className: "flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
14398
- }, position > 0 ? texts.table3.filters.conditions.and : texts.table3.filters.conditions.where), /*#__PURE__*/React__default.createElement(FilterColumn, {
14399
- allColumns: allColumns,
14400
- filters: filters,
14401
- onChange: handleCreate,
14402
- value: null
14403
- }), /*#__PURE__*/React__default.createElement(FilterComparator, null), /*#__PURE__*/React__default.createElement(Input, {
14404
- "aria-label": texts.table3.filters.emptyFilter.value,
14405
- className: "flex-grow",
14406
- disabled: true,
14407
- value: texts.table3.filters.emptyFilter.value
14408
- }), handleRemove ? /*#__PURE__*/React__default.createElement(IconButton, {
14409
- appearance: "discrete",
14410
- icon: "close",
14411
- onClick: handleRemove
14412
14540
  }) : null);
14413
14541
  }
14414
14542
 
14543
+ const placeholderFilter = {
14544
+ id: '',
14545
+ value: {
14546
+ comparator: TableFilterComparator.Contains,
14547
+ value: undefined
14548
+ }
14549
+ };
14415
14550
  function ManageFiltersPopover(props) {
14416
14551
  const {
14417
14552
  length,
@@ -14425,52 +14560,40 @@ function ManageFiltersPopover(props) {
14425
14560
  const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id)).sort(sortByHeader);
14426
14561
  const appliedFilters = table.getState().columnFilters;
14427
14562
  // state, since we "apply" filters - our filter values have a special shape, so we force to our type
14428
- const [filters, setFilters] = React__default.useState(table.getState().columnFilters);
14429
- const [placeholderCount, setPlaceholderCount] = React__default.useState(1);
14563
+ const [filters, setFilters] = React__default.useState(appliedFilters.length ? appliedFilters : [placeholderFilter]);
14430
14564
  // filters might reset from the outside
14431
14565
  React__default.useEffect(() => {
14432
14566
  if (appliedFilters.length === 0) {
14433
- setFilters([]);
14434
- setPlaceholderCount(1);
14567
+ setFilters([placeholderFilter]);
14435
14568
  }
14436
14569
  }, [appliedFilters]);
14437
14570
  // filters
14438
- const handleChangeFilter = (currentId, filter) => {
14571
+ const handleChangeFilter = (position, filter) => {
14439
14572
  setFilters(currentFilters => {
14440
- const nextFilters = [...currentFilters];
14441
- nextFilters[nextFilters.findIndex(f => f.id === currentId)] = filter;
14442
- return nextFilters;
14573
+ return currentFilters.map((current, index) => {
14574
+ if (index === position) {
14575
+ return filter;
14576
+ }
14577
+ return current;
14578
+ });
14443
14579
  });
14444
14580
  };
14445
- const handleRemoveFilter = columnId => {
14446
- if (filters.length === 1 && placeholderCount === 0) {
14447
- setPlaceholderCount(count => count + 1);
14581
+ const handleRemoveFilter = position => {
14582
+ if (filters.length === 1) {
14583
+ setFilters([placeholderFilter]);
14584
+ return;
14448
14585
  }
14449
- setFilters(currentFilters => currentFilters.filter(f => f.id !== columnId));
14586
+ setFilters(currentFilters => currentFilters.filter((_, index) => index !== position));
14450
14587
  };
14451
- // placeholders
14452
- const handleCreateFilterFromPlaceholder = columnId => {
14453
- setFilters(currentFilters => [...currentFilters, {
14454
- id: columnId,
14455
- value: {
14456
- comparator: TableFilterComparator.Contains,
14457
- value: undefined
14458
- }
14459
- }]);
14460
- handleRemovePlaceholder();
14461
- };
14462
- const handleCreatePlaceholder = () => {
14463
- setPlaceholderCount(count => count + 1);
14464
- };
14465
- const handleRemovePlaceholder = () => {
14466
- setPlaceholderCount(count => count - 1);
14588
+ const handleCreate = () => {
14589
+ setFilters(filters.concat(placeholderFilter));
14467
14590
  };
14468
14591
  //
14469
14592
  const handleApply = () => {
14470
14593
  table.setColumnFilters(() => {
14471
14594
  const newFilters = filters.filter(f => {
14472
14595
  var _allColumns$find, _allColumns$find$colu;
14473
- if (f.id === null) {
14596
+ if (f.id === null || f.id === '') {
14474
14597
  return false;
14475
14598
  }
14476
14599
  const controlRenderer = (_allColumns$find = allColumns.find(c => c.id === f.id)) === null || _allColumns$find === void 0 ? void 0 : (_allColumns$find$colu = _allColumns$find.columnDef.meta) === null || _allColumns$find$colu === void 0 ? void 0 : _allColumns$find$colu.control;
@@ -14484,12 +14607,10 @@ function ManageFiltersPopover(props) {
14484
14607
  };
14485
14608
  const handleClear = () => {
14486
14609
  table.resetColumnFilters();
14487
- setFilters([]);
14488
- setPlaceholderCount(1);
14610
+ setFilters([placeholderFilter]);
14489
14611
  };
14490
14612
  const handleClose = () => {
14491
- setFilters(appliedFilters);
14492
- setPlaceholderCount(appliedFilters.length ? 0 : 1);
14613
+ setFilters(appliedFilters.length === 0 ? [placeholderFilter] : appliedFilters);
14493
14614
  };
14494
14615
  return /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps, {
14495
14616
  onChange: handleClose
@@ -14512,19 +14633,12 @@ function ManageFiltersPopover(props) {
14512
14633
  filters: filters,
14513
14634
  position: index,
14514
14635
  onChange: handleChangeFilter,
14515
- onRemove: handleRemoveFilter
14516
- }))), [...Array(placeholderCount)].map((_, index) => ( /*#__PURE__*/React__default.createElement(Placeholder, {
14517
- key: `placeholder_${index}`,
14518
- allColumns: allColumns,
14519
- filters: filters,
14520
- position: filters.length + index,
14521
- onCreate: handleCreateFilterFromPlaceholder,
14522
- onRemove: placeholderCount > 1 || filters.length > 0 ? handleRemovePlaceholder : undefined
14636
+ onRemove: filters.length > 0 && filters.some(f => f.id) || filters.length > 1 ? handleRemoveFilter : undefined
14523
14637
  }))), /*#__PURE__*/React__default.createElement("div", {
14524
14638
  className: "justify-start"
14525
14639
  }, /*#__PURE__*/React__default.createElement(Button$1, {
14526
14640
  appearance: "discrete",
14527
- onClick: handleCreatePlaceholder
14641
+ onClick: handleCreate
14528
14642
  }, "+ ", texts.table3.filters.buttons.addFilter))), /*#__PURE__*/React__default.createElement(Group, {
14529
14643
  className: "ml-auto"
14530
14644
  }, /*#__PURE__*/React__default.createElement(Popover.Close, null, /*#__PURE__*/React__default.createElement(Button$1, null, "Cancel")), /*#__PURE__*/React__default.createElement(Button$1, {
@@ -14652,12 +14766,15 @@ function useCssGridStylesheet(tableId, table, fontSize) {
14652
14766
  size = `minmax(${minWidth}px, auto)`;
14653
14767
  } else if (width !== undefined) {
14654
14768
  const isLastColumn = index === allVisibleColumns.length - 1;
14655
- if (isLastColumn) {
14656
- size = `minmax(${minSize}px, auto)`;
14657
- } else if (width === 'grow' || Number.isNaN(width)) {
14769
+ if (width === 'grow' || Number.isNaN(width) && !isLastColumn) {
14658
14770
  size = `minmax(${minSize}px, 1fr)`;
14659
14771
  } else {
14660
- size = `${width < minSize ? minSize : width}px`;
14772
+ const minWidth = width < minSize ? minSize : width;
14773
+ if (isLastColumn) {
14774
+ size = `minmax(${minWidth}px, auto)`;
14775
+ } else {
14776
+ size = `${minWidth}px`;
14777
+ }
14661
14778
  }
14662
14779
  } else {
14663
14780
  size = `minmax(${minSize}px, auto)`;
@@ -15284,16 +15401,8 @@ function useTableGlobalShortcuts(table, tableRef, scrollToIndex) {
15284
15401
  const rows = table.getRowModel().rows;
15285
15402
  React__default.useEffect(() => {
15286
15403
  const handleKeyDown = event => {
15287
- const target = event.target;
15288
- const dialog = target.closest('[role="dialog"]');
15289
- //const eventOriginatedFromCombobox = !!target.closest('[role="combobox"]');
15290
- // Don't trigger global shortcuts on the table if event originated from a combobox or if table is
15291
- // outside the dialog
15292
- if (
15293
- //eventOriginatedFromCombobox ||
15294
- dialog && !(dialog !== null && dialog !== void 0 && dialog.contains(tableRef.current))
15295
- // || tableMeta.shortcutsState.isPaused
15296
- ) {
15404
+ const trigger = event.target;
15405
+ if (isElementInsideOverlay(trigger) && !isSiblingElementInsideSameParentOverlay(trigger, tableRef.current) || isElementInteractive(trigger) && !isElementInsideOrTriggeredFromContainer(trigger, tableRef.current)) {
15297
15406
  return;
15298
15407
  }
15299
15408
  tableMeta.rowActive.handleKeyDown(event, rows.length, scrollToIndex, tableRef);
@@ -15342,12 +15451,12 @@ const Report$1 = /*#__PURE__*/fixedForwardRef(function Report(props, ref) {
15342
15451
  const stylesheet = useStylesheet(report.id, report.instance);
15343
15452
  useTableGlobalShortcuts(report.instance, tableRef, renderer.scrollToIndex);
15344
15453
  const handleFocus = report.meta.rowActive.rowActiveIndex === undefined ? event => {
15345
- report.meta.rowActive.handleFocus(event, report.length, renderer.scrollToIndex);
15454
+ report.meta.rowActive.handleFocus(event, report.meta.length, renderer.scrollToIndex);
15346
15455
  } : undefined;
15347
15456
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, stylesheet, /*#__PURE__*/React__default.createElement(Toolbar, {
15348
15457
  customSettings: props.customSettings,
15349
15458
  left: props.toolbarLeft,
15350
- length: report.length,
15459
+ length: report.meta.length,
15351
15460
  right: props.toolbarRight,
15352
15461
  scrollToIndex: renderer.scrollToIndex,
15353
15462
  table: report.instance,
@@ -15371,15 +15480,11 @@ const Report$1 = /*#__PURE__*/fixedForwardRef(function Report(props, ref) {
15371
15480
  }, /*#__PURE__*/React__default.createElement("thead", null, report.instance.getHeaderGroups().map(headerGroup => ( /*#__PURE__*/React__default.createElement("tr", {
15372
15481
  key: headerGroup.id
15373
15482
  }, headerGroup.headers.map(Header$4))))), (_renderer$rows = renderer.rows) !== null && _renderer$rows !== void 0 && _renderer$rows.length ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Body, {
15374
- length: report.length,
15375
15483
  table: report.instance,
15376
15484
  style: renderer.style
15377
15485
  }, renderer.rows), report.meta.footer.isEnabled ? ( /*#__PURE__*/React__default.createElement("tfoot", null, /*#__PURE__*/React__default.createElement("tr", null, report.instance.getFooterGroups()[0].headers.map(Footer$3)))) : null)) : ( /*#__PURE__*/React__default.createElement(EmptyStateBody, {
15378
15486
  emptyState: props.emptyState
15379
- }))), report.meta.footer.isEnabled ? /*#__PURE__*/React__default.createElement(Summary, {
15380
- length: report.length,
15381
- table: report.instance
15382
- }) : null));
15487
+ })))));
15383
15488
  });
15384
15489
  Report$1.Column = Column$1;
15385
15490
  Report$1.Group = Group$3;
@@ -17990,7 +18095,9 @@ function useSettingsStateListener(table, onChangeSettings) {
17990
18095
  // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
17991
18096
  meta.columnFreezing.frozenColumnIndex, state.columnOrder, state.columnSizing, state.columnVisibility,
17992
18097
  // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
17993
- meta.search.excludeUnmatchedResults, meta.fontSize.size, meta.rowHeight.height, meta.printing.isWarningVisibleForLargeDatasets, state.sorting]);
18098
+ meta.search.excludeUnmatchedResults, meta.fontSize.size, meta.rowHeight.height,
18099
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
18100
+ meta.printing.isWarningVisibleForLargeDatasets, state.sorting]);
17994
18101
  }
17995
18102
 
17996
18103
  var Table3FilterComparator;
@@ -19669,6 +19776,25 @@ function Header$6(context) {
19669
19776
  const isAllRowsSelected = context.table.getIsAllRowsSelected();
19670
19777
  const isSomeRowsSelected = context.table.getIsSomeRowsSelected();
19671
19778
  const title = isAllRowsSelected ? texts.table3.columns.select.deselectAll : texts.table3.columns.select.selectAll;
19779
+ const tableMeta = context.table.options.meta;
19780
+ const isServerloading = tableMeta.server.loadAllStatus === TableServerLoadAllState.Loading;
19781
+ const isLoadingAll = isAllRowsSelected && isServerloading;
19782
+ const isLoadingPreviousRows = tableMeta.rowSelection.lastSelectedRowIndex !== undefined && isServerloading;
19783
+ const toggleSelectAll = function () {
19784
+ try {
19785
+ const _temp = function () {
19786
+ if (!isServerloading) {
19787
+ var _tableMeta$server, _tableMeta$server$loa;
19788
+ return Promise.resolve((_tableMeta$server = tableMeta.server) === null || _tableMeta$server === void 0 ? void 0 : (_tableMeta$server$loa = _tableMeta$server.loadAllIfNeeded) === null || _tableMeta$server$loa === void 0 ? void 0 : _tableMeta$server$loa.call(_tableMeta$server, context.table.getState().sorting, context.table.getState().columnFilters, undefined)).then(function () {
19789
+ context.table.toggleAllRowsSelected(!isAllRowsSelected);
19790
+ });
19791
+ }
19792
+ }();
19793
+ return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
19794
+ } catch (e) {
19795
+ return Promise.reject(e);
19796
+ }
19797
+ };
19672
19798
  return /*#__PURE__*/React__default.createElement(Header$5, Object.assign({}, context), /*#__PURE__*/React__default.createElement(Tooltip, {
19673
19799
  title: title
19674
19800
  }, /*#__PURE__*/React__default.createElement(Checkbox, {
@@ -19677,8 +19803,9 @@ function Header$6(context) {
19677
19803
  key: String(`${isAllRowsSelected}_${isSomeRowsSelected}`),
19678
19804
  checked: isAllRowsSelected,
19679
19805
  indeterminate: isSomeRowsSelected,
19680
- onChange: context.table.toggleAllRowsSelected,
19681
- tabIndex: -1
19806
+ onChange: toggleSelectAll,
19807
+ tabIndex: -1,
19808
+ loading: isLoadingAll || isLoadingPreviousRows
19682
19809
  })));
19683
19810
  } else {
19684
19811
  return /*#__PURE__*/React__default.createElement(Header$5, Object.assign({}, context));
@@ -19700,18 +19827,49 @@ const Cell$7 = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
19700
19827
  const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;
19701
19828
  const isSelected = context.row.getIsSelected();
19702
19829
  const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;
19703
- if (context.table.options.enableMultiRowSelection) {
19704
- const handleClick = event => {
19705
- event.stopPropagation();
19706
- if (event.shiftKey) {
19707
- var _tableMeta$rowSelecti;
19708
- const [fromIndex, toIndex] = toggleBetween$2((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
19709
- context.table.getRowModel().rows.slice(fromIndex, toIndex + 1).forEach(row => row.toggleSelected(true));
19710
- } else {
19711
- context.row.toggleSelected();
19830
+ const handleCheckboxClick = function (event) {
19831
+ try {
19832
+ function _temp5() {
19833
+ tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;
19712
19834
  }
19713
- tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;
19714
- };
19835
+ event.stopPropagation();
19836
+ const _temp4 = function () {
19837
+ if (event.shiftKey) {
19838
+ var _tableMeta$rowSelecti;
19839
+ function _temp3() {
19840
+ const currentlySelected = context.table.getSelectedRowModel().rows;
19841
+ // concat currently selected with selection range and get rid of duplicates using "Set".
19842
+ // converting allSelected array into updater object: {[row.id]: true}
19843
+ const allSelected = [...new Set(currentlySelected.concat(selectionRangeRows))];
19844
+ const updater = allSelected.reduce((obj, row) => Object.assign(obj, {
19845
+ [row.id]: true
19846
+ }), {});
19847
+ context.table.setRowSelection(updater);
19848
+ }
19849
+ const [fromIndex, toIndex] = toggleBetween$2((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
19850
+ const selectionRangeRows = context.table.getRowModel().rows.slice(fromIndex, toIndex + 1);
19851
+ // Table data loader filling-in all the rest of unloaded items with the undefined values,
19852
+ // so we can easily check if at least one of the rows in the selection range is undefined,
19853
+ // then it means that we need to call load all.
19854
+ const hasUndefinedRows = selectionRangeRows.some(row => row.original === undefined);
19855
+ const _temp2 = function () {
19856
+ if (hasUndefinedRows) {
19857
+ var _tableMeta$server2, _tableMeta$server2$lo;
19858
+ // We don't need to await and freeze UI
19859
+ return Promise.resolve((_tableMeta$server2 = tableMeta.server) === null || _tableMeta$server2 === void 0 ? void 0 : (_tableMeta$server2$lo = _tableMeta$server2.loadAllIfNeeded) === null || _tableMeta$server2$lo === void 0 ? void 0 : _tableMeta$server2$lo.call(_tableMeta$server2, context.table.getState().sorting, context.table.getState().columnFilters, undefined)).then(function () {});
19860
+ }
19861
+ }();
19862
+ return _temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2);
19863
+ } else {
19864
+ context.row.toggleSelected();
19865
+ }
19866
+ }();
19867
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
19868
+ } catch (e) {
19869
+ return Promise.reject(e);
19870
+ }
19871
+ };
19872
+ if (context.table.options.enableMultiRowSelection) {
19715
19873
  return /*#__PURE__*/React__default.createElement(DisplayCell$1, Object.assign({}, context), /*#__PURE__*/React__default.createElement(Tooltip, {
19716
19874
  title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, title, /*#__PURE__*/React__default.createElement(Shortcut, {
19717
19875
  className: "ml-2",
@@ -19721,7 +19879,7 @@ const Cell$7 = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
19721
19879
  "aria-label": title,
19722
19880
  className: "!mt-0",
19723
19881
  checked: isSelected,
19724
- onClick: handleClick,
19882
+ onClick: handleCheckboxClick,
19725
19883
  // this is necessary to remove console spam from eslint
19726
19884
  onChange: () => false,
19727
19885
  tabIndex: isActiveRow ? 0 : -1
@@ -20413,7 +20571,7 @@ function usePauseShortcuts() {
20413
20571
  }
20414
20572
 
20415
20573
  function useTable$2(props, ref) {
20416
- var _settings$columnFreez, _props$length;
20574
+ var _settings$columnFreez, _props$data, _ref, _props$length, _props$data2;
20417
20575
  // load any persisted table settings and merge them with any defaults
20418
20576
  const [settings, setSettings] = useSettings(props.id, props.defaultSettings, props.onChangeSettings);
20419
20577
  // configure table3 options
@@ -20437,6 +20595,12 @@ function useTable$2(props, ref) {
20437
20595
  // haven't migrated load all/server loading yet
20438
20596
  const search = useSearch(options.enableSearch, settings.excludeUnmatchedRecordsInSearch);
20439
20597
  const shortcutsState = usePauseShortcuts();
20598
+ React__default.useEffect(() => {
20599
+ // Needed for DataDog
20600
+ if (!Array.isArray(props.data)) {
20601
+ console.error('Table3 data value is not an array');
20602
+ }
20603
+ }, []);
20440
20604
  // custom features - shared/migrated
20441
20605
  const columnOrdering = useTableColumnOrdering(options.enableColumnOrdering);
20442
20606
  const fontSize = useTableFontSize(options.enableFontSize, settings.fontSize);
@@ -20489,7 +20653,8 @@ function useTable$2(props, ref) {
20489
20653
  };
20490
20654
  };
20491
20655
  const table = reactTable.useReactTable({
20492
- data: props.data,
20656
+ // We need to fallback to an empty array, to avoid table crash in the client
20657
+ data: (_props$data = props.data) !== null && _props$data !== void 0 ? _props$data : [],
20493
20658
  columns,
20494
20659
  getCoreRowModel: reactTable.getCoreRowModel(),
20495
20660
  initialState,
@@ -20533,7 +20698,7 @@ function useTable$2(props, ref) {
20533
20698
  useTableSortingListener(table, props.onSort);
20534
20699
  return {
20535
20700
  table,
20536
- length: (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : props.data.length
20701
+ length: (_ref = (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : (_props$data2 = props.data) === null || _props$data2 === void 0 ? void 0 : _props$data2.length) !== null && _ref !== void 0 ? _ref : 0
20537
20702
  };
20538
20703
  }
20539
20704
  function configureReactTableOptions$1(props, options) {
@@ -21017,7 +21182,7 @@ function resetHighlightedColumnIndexes$1(enabled, value, table) {
21017
21182
  return firstRowIndex;
21018
21183
  }
21019
21184
 
21020
- function FilterColumn$1(props) {
21185
+ const FilterColumn$1 = /*#__PURE__*/React__default.forwardRef((props, ref) => {
21021
21186
  const {
21022
21187
  allColumns,
21023
21188
  filters,
@@ -21037,7 +21202,8 @@ function FilterColumn$1(props) {
21037
21202
  warning: warning,
21038
21203
  className: "min-h-[theme(spacing.8)]"
21039
21204
  }, /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
21040
- className: "!w-32 flex-shrink-0",
21205
+ ref: ref,
21206
+ className: "focus:yt-focus !w-32 flex-shrink-0",
21041
21207
  emptyValue: null,
21042
21208
  onChange: handleChange,
21043
21209
  value: value
@@ -21055,7 +21221,7 @@ function FilterColumn$1(props) {
21055
21221
  disabled: column.id !== value && (!column.getCanFilter() || !!filters.find(f => f.id === column.id))
21056
21222
  }, ((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.header) + (column.parent ? ` (${(_column$parent = column.parent) === null || _column$parent === void 0 ? void 0 : (_column$parent$column = _column$parent.columnDef.meta) === null || _column$parent$column === void 0 ? void 0 : _column$parent$column.header})` : ''));
21057
21223
  }))));
21058
- }
21224
+ });
21059
21225
 
21060
21226
  function FilterComparator$1(props) {
21061
21227
  const {
@@ -21074,7 +21240,7 @@ function FilterComparator$1(props) {
21074
21240
  }
21075
21241
  }, [validComparators]);
21076
21242
  return /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
21077
- className: "!w-32 flex-shrink-0",
21243
+ className: "focus:yt-focus !w-32 flex-shrink-0",
21078
21244
  disabled: !column,
21079
21245
  onChange: handleChange,
21080
21246
  value: value
@@ -21161,38 +21327,6 @@ function getComparatorText$1(comparator, texts, column) {
21161
21327
  }
21162
21328
  }
21163
21329
 
21164
- function Placeholder$1(props) {
21165
- const {
21166
- allColumns,
21167
- filters,
21168
- onCreate: handleCreate,
21169
- onRemove: handleRemove,
21170
- position
21171
- } = props;
21172
- const {
21173
- texts
21174
- } = useLocalization();
21175
- return /*#__PURE__*/React__default.createElement("div", {
21176
- className: "flex items-start gap-2"
21177
- }, /*#__PURE__*/React__default.createElement("div", {
21178
- className: "flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
21179
- }, position > 0 ? texts.table3.filters.conditions.and : texts.table3.filters.conditions.where), /*#__PURE__*/React__default.createElement(FilterColumn$1, {
21180
- allColumns: allColumns,
21181
- filters: filters,
21182
- onChange: handleCreate,
21183
- value: null
21184
- }), /*#__PURE__*/React__default.createElement(FilterComparator$1, null), /*#__PURE__*/React__default.createElement(Input, {
21185
- "aria-label": texts.table3.filters.emptyFilter.value,
21186
- className: "flex-grow",
21187
- disabled: true,
21188
- value: texts.table3.filters.emptyFilter.value
21189
- }), handleRemove ? /*#__PURE__*/React__default.createElement(IconButton, {
21190
- appearance: "discrete",
21191
- icon: "close",
21192
- onClick: handleRemove
21193
- }) : null);
21194
- }
21195
-
21196
21330
  function FilterValue$1(props) {
21197
21331
  const {
21198
21332
  column,
@@ -21313,6 +21447,7 @@ function Filter$2(props) {
21313
21447
  texts
21314
21448
  } = useLocalization();
21315
21449
  const column = allColumns.find(c => c.id === filter.id);
21450
+ const ref = React__default.useRef(null);
21316
21451
  const {
21317
21452
  id,
21318
21453
  value: {
@@ -21331,7 +21466,7 @@ function Filter$2(props) {
21331
21466
  comparator: null,
21332
21467
  value: null
21333
21468
  };
21334
- handleChange(id, {
21469
+ handleChange(position, {
21335
21470
  id: columnId,
21336
21471
  value
21337
21472
  });
@@ -21341,7 +21476,7 @@ function Filter$2(props) {
21341
21476
  if (comparator === Table3FilterComparator.IsEmpty || comparator === Table3FilterComparator.IsNotEmpty) {
21342
21477
  nextValue = undefined;
21343
21478
  }
21344
- handleChange(id, {
21479
+ handleChange(position, {
21345
21480
  id,
21346
21481
  value: {
21347
21482
  comparator,
@@ -21350,7 +21485,7 @@ function Filter$2(props) {
21350
21485
  });
21351
21486
  };
21352
21487
  const handleChangeValue = value => {
21353
- handleChange(id, {
21488
+ handleChange(position, {
21354
21489
  id,
21355
21490
  value: {
21356
21491
  ...filter.value,
@@ -21358,7 +21493,12 @@ function Filter$2(props) {
21358
21493
  }
21359
21494
  });
21360
21495
  };
21361
- const handleRemove = () => onRemove(id);
21496
+ const handleRemove = () => onRemove === null || onRemove === void 0 ? void 0 : onRemove(position);
21497
+ React__default.useEffect(() => {
21498
+ if (ref.current && !id) {
21499
+ ref.current.focus(); // after adding a new filter placeholder, we want to focus it right way.
21500
+ }
21501
+ }, [id]);
21362
21502
  return /*#__PURE__*/React__default.createElement("div", {
21363
21503
  className: "flex items-start gap-2"
21364
21504
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -21367,7 +21507,8 @@ function Filter$2(props) {
21367
21507
  allColumns: allColumns,
21368
21508
  filters: filters,
21369
21509
  onChange: handleChangeColumn,
21370
- value: id
21510
+ value: id,
21511
+ ref: ref
21371
21512
  }), /*#__PURE__*/React__default.createElement(FilterComparator$1, {
21372
21513
  column: column,
21373
21514
  onChange: handleChangeComparator,
@@ -21377,18 +21518,25 @@ function Filter$2(props) {
21377
21518
  comparator: comparator,
21378
21519
  onChange: handleChangeValue,
21379
21520
  value: value
21380
- }), /*#__PURE__*/React__default.createElement(IconButton, {
21521
+ }), onRemove ? /*#__PURE__*/React__default.createElement(IconButton, {
21381
21522
  appearance: "discrete",
21382
21523
  className: "ml-auto",
21383
21524
  icon: "close",
21384
21525
  onClick: handleRemove
21385
- }));
21526
+ }) : null);
21386
21527
  }
21387
21528
 
21388
21529
  function sortByHeader$1(a, b) {
21389
21530
  var _a$columnDef$meta, _a$columnDef$meta$hea, _a$columnDef$meta$hea2, _b$columnDef$meta;
21390
21531
  return (_a$columnDef$meta = a.columnDef.meta) === null || _a$columnDef$meta === void 0 ? void 0 : (_a$columnDef$meta$hea = _a$columnDef$meta.header) === null || _a$columnDef$meta$hea === void 0 ? void 0 : (_a$columnDef$meta$hea2 = _a$columnDef$meta$hea.localeCompare) === null || _a$columnDef$meta$hea2 === void 0 ? void 0 : _a$columnDef$meta$hea2.call(_a$columnDef$meta$hea, (_b$columnDef$meta = b.columnDef.meta) === null || _b$columnDef$meta === void 0 ? void 0 : _b$columnDef$meta.header);
21391
21532
  }
21533
+ const placeholderFilter$1 = {
21534
+ id: null,
21535
+ value: {
21536
+ comparator: Table3FilterComparator.Contains,
21537
+ value: undefined
21538
+ }
21539
+ };
21392
21540
  function FiltersButton(props) {
21393
21541
  const {
21394
21542
  total,
@@ -21408,41 +21556,28 @@ function FiltersButton(props) {
21408
21556
  shift: true
21409
21557
  };
21410
21558
  // state, since we "apply" filters
21411
- const [filters, setFilters] = React__default.useState(appliedFilters);
21412
- const [placeholderCount, setPlaceholderCount] = React__default.useState(1);
21559
+ const [filters, setFilters] = React__default.useState(appliedFilters.length ? appliedFilters : [placeholderFilter$1]);
21413
21560
  // filters
21414
- const handleChangeFilter = (currentId, filter) => {
21561
+ const handleChangeFilter = (position, filter) => {
21415
21562
  setFilters(currentFilters => {
21416
- const nextFilters = [...currentFilters];
21417
- const index = nextFilters.findIndex(f => f.id === currentId);
21418
- nextFilters[index] = filter;
21419
- return nextFilters;
21563
+ return currentFilters.map((current, index) => {
21564
+ if (index === position) {
21565
+ return filter;
21566
+ }
21567
+ return current;
21568
+ });
21420
21569
  });
21421
21570
  };
21422
- const handleRemoveFilter = columnId => {
21423
- if (filters.length === 1 && placeholderCount === 0) {
21424
- setPlaceholderCount(count => count + 1);
21571
+ const handleRemoveFilter = position => {
21572
+ if (filters.length === 1) {
21573
+ setFilters([placeholderFilter$1]);
21574
+ return;
21425
21575
  }
21426
- setFilters(currentFilters => currentFilters.filter(f => f.id !== columnId));
21427
- };
21428
- // placeholders
21429
- const handleCreateFilterFromPlaceholder = columnId => {
21430
- setFilters(currentFilters => [...currentFilters, {
21431
- id: columnId,
21432
- value: {
21433
- comparator: Table3FilterComparator.Contains,
21434
- value: undefined
21435
- }
21436
- }]);
21437
- handleRemovePlaceholder();
21438
- };
21439
- const handleCreatePlaceholder = () => {
21440
- setPlaceholderCount(count => count + 1);
21576
+ setFilters(currentFilters => currentFilters.filter((_, index) => index !== position));
21441
21577
  };
21442
- const handleRemovePlaceholder = () => {
21443
- setPlaceholderCount(count => count - 1);
21578
+ const handleCreateNew = () => {
21579
+ setFilters(filters.concat(placeholderFilter$1));
21444
21580
  };
21445
- //
21446
21581
  const handleApply = () => {
21447
21582
  table.setColumnFilters(() => {
21448
21583
  const newFilters = filters.filter(f => {
@@ -21462,20 +21597,17 @@ function FiltersButton(props) {
21462
21597
  };
21463
21598
  const handleClear = () => {
21464
21599
  table.resetColumnFilters();
21465
- setFilters([]);
21466
- setPlaceholderCount(1);
21600
+ setFilters([placeholderFilter$1]);
21467
21601
  };
21468
21602
  const handleClose = React__default.useCallback(open => {
21469
21603
  if (!open) {
21470
- setFilters(appliedFilters);
21471
- setPlaceholderCount(appliedFilters.length === 0 ? 1 : 0);
21604
+ setFilters(appliedFilters.length === 0 ? [placeholderFilter$1] : appliedFilters);
21472
21605
  }
21473
21606
  }, [appliedFilters]);
21474
21607
  // Because filters can be reset from outside
21475
21608
  React__default.useEffect(() => {
21476
21609
  if (appliedFilters.length === 0) {
21477
- setFilters([]);
21478
- setPlaceholderCount(1);
21610
+ setFilters([placeholderFilter$1]);
21479
21611
  }
21480
21612
  }, [appliedFilters]);
21481
21613
  const buttonProps = {
@@ -21505,19 +21637,12 @@ function FiltersButton(props) {
21505
21637
  filters: filters,
21506
21638
  position: index,
21507
21639
  onChange: handleChangeFilter,
21508
- onRemove: handleRemoveFilter
21509
- }))), [...Array(placeholderCount)].map((_, index) => ( /*#__PURE__*/React__default.createElement(Placeholder$1, {
21510
- key: `placeholder_${index}`,
21511
- allColumns: allColumns,
21512
- filters: filters,
21513
- position: filters.length + index,
21514
- onCreate: handleCreateFilterFromPlaceholder,
21515
- onRemove: placeholderCount > 1 || filters.length > 0 ? handleRemovePlaceholder : undefined
21640
+ onRemove: filters.length > 0 && filters.some(f => f.id) || filters.length > 1 ? handleRemoveFilter : undefined
21516
21641
  }))), /*#__PURE__*/React__default.createElement("div", {
21517
21642
  className: "justify-start"
21518
21643
  }, /*#__PURE__*/React__default.createElement(Button$1, {
21519
21644
  appearance: "discrete",
21520
- onClick: handleCreatePlaceholder
21645
+ onClick: handleCreateNew
21521
21646
  }, "+ ", texts.table3.filters.buttons.addFilter))), /*#__PURE__*/React__default.createElement(Group, {
21522
21647
  className: "ml-auto"
21523
21648
  }, /*#__PURE__*/React__default.createElement(Popover.Close, null, /*#__PURE__*/React__default.createElement(Button$1, null, "Cancel")), /*#__PURE__*/React__default.createElement(Button$1, {
@@ -21867,6 +21992,7 @@ function PrintButton(props) {
21867
21992
  const buttonRef = React__default.useRef(null);
21868
21993
  const tableMeta = table.options.meta;
21869
21994
  const state = table.getState();
21995
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
21870
21996
  const {
21871
21997
  isWarningVisibleForLargeDatasets
21872
21998
  } = tableMeta.printing;
@@ -22045,6 +22171,7 @@ function PrintButton(props) {
22045
22171
  onAccept: handleWarningDialogAccept,
22046
22172
  onClose: handleWarningDialogClose,
22047
22173
  onCancel: handleWarningDialogCancel,
22174
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
22048
22175
  onVisibilityChange: tableMeta.printing.setIsWarningVisibleForLargeDatasets
22049
22176
  }));
22050
22177
  }
@@ -22754,13 +22881,10 @@ const Table$1 = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
22754
22881
  }, []);
22755
22882
  React__default.useEffect(() => {
22756
22883
  const handleKeyDown = event => {
22757
- const target = event.target;
22758
- const dialog = target.closest('[role="dialog"]');
22884
+ const trigger = event.target;
22759
22885
  // Select2 also have combobox role to align with W3C guidelines
22760
- const eventOriginatedFromCombobox = !!target.closest('[role="combobox"]:not([data-taco="Select2"])');
22761
- // Don't trigger global shortcuts on the table if event originated from a combobox or if table is
22762
- // outside the dialog
22763
- if (eventOriginatedFromCombobox || dialog && !(dialog !== null && dialog !== void 0 && dialog.contains(internalRef.current)) || tableMeta.shortcutsState.isPaused) {
22886
+ const eventOriginatedFromCombobox = !!trigger.closest('[role="combobox"]:not([data-taco="Select2"])');
22887
+ if (tableMeta.shortcutsState.isPaused || isElementInsideOverlay(trigger) && !isSiblingElementInsideSameParentOverlay(trigger, internalRef.current) || isElementInteractive(trigger) && !isElementInsideOrTriggeredFromContainer(trigger, internalRef.current) || eventOriginatedFromCombobox) {
22764
22888
  return;
22765
22889
  }
22766
22890
  const rows = table.getRowModel().rows;