@economic/taco 2.2.5 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. package/dist/components/Header/components/Agreement/types.d.ts +1 -1
  2. package/dist/components/Icon/components/PaymentPaid.d.ts +3 -0
  3. package/dist/components/Icon/components/PaymentUnpaid.d.ts +3 -0
  4. package/dist/components/Menu/Context.d.ts +2 -0
  5. package/dist/components/Menu/components/Item.d.ts +3 -2
  6. package/dist/components/Provider/Localization.d.ts +12 -0
  7. package/dist/components/Provider/Provider.d.ts +6 -1
  8. package/dist/components/Table2/types.d.ts +1 -1
  9. package/dist/components/Table3/Table3.d.ts +1 -1
  10. package/dist/components/Table3/components/toolbar/Filter/filters/components/Filter.d.ts +1 -2
  11. package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.d.ts +4 -4
  12. package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterValue.d.ts +1 -1
  13. package/dist/components/Table3/hooks/features/useColumnFreezing.d.ts +2 -1
  14. package/dist/components/Table3/hooks/features/useSettings.d.ts +2 -0
  15. package/dist/components/Table3/hooks/listeners/useSettingsStateListener.d.ts +2 -2
  16. package/dist/components/Table3/hooks/useTable.d.ts +2 -1
  17. package/dist/components/Table3/types.d.ts +24 -12
  18. package/dist/esm/packages/taco/src/components/Menu/Context.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/Menu/Menu.js +1 -0
  20. package/dist/esm/packages/taco/src/components/Menu/Menu.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Menu/components/Content.js +32 -2
  22. package/dist/esm/packages/taco/src/components/Menu/components/Content.js.map +1 -1
  23. package/dist/esm/packages/taco/src/components/Menu/components/Item.js.map +1 -1
  24. package/dist/esm/packages/taco/src/components/Provider/Localization.js +13 -1
  25. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/Provider/Provider.js +11 -4
  27. package/dist/esm/packages/taco/src/components/Provider/Provider.js.map +1 -1
  28. package/dist/esm/packages/taco/src/components/Select2/Select2.js +1 -1
  29. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +13 -4
  31. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js.map +1 -1
  32. package/dist/esm/packages/taco/src/components/Select2/components/Search.js +7 -1
  33. package/dist/esm/packages/taco/src/components/Select2/components/Search.js.map +1 -1
  34. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +1 -1
  35. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
  36. package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
  37. package/dist/esm/packages/taco/src/components/Table3/Table3.js +2 -1
  38. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  39. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js +2 -2
  40. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js.map +1 -1
  41. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js +4 -19
  42. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js.map +1 -1
  43. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js +8 -2
  44. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js.map +1 -1
  45. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js +4 -2
  46. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js.map +1 -1
  47. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js +2 -24
  48. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js.map +1 -1
  49. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js +68 -17
  50. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js.map +1 -1
  51. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js +31 -2
  52. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js.map +1 -1
  53. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js +1 -5
  54. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js.map +1 -1
  55. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +18 -25
  56. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -1
  57. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js +5 -0
  58. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js.map +1 -1
  59. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js +3 -3
  60. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js.map +1 -1
  61. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js +6 -2
  62. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js.map +1 -1
  63. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js +20 -16
  64. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js.map +1 -1
  65. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js +18 -0
  66. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js.map +1 -0
  67. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js.map +1 -1
  68. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js +2 -4
  69. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js.map +1 -1
  70. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js +18 -12
  71. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
  72. package/dist/esm/packages/taco/src/components/Table3/types.js +7 -5
  73. package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
  74. package/dist/esm/packages/taco/src/components/Table3/util/filtering.js +24 -6
  75. package/dist/esm/packages/taco/src/components/Table3/util/filtering.js.map +1 -1
  76. package/dist/esm/packages/taco/src/hooks/useLocalStorage.js +34 -0
  77. package/dist/esm/packages/taco/src/hooks/useLocalStorage.js.map +1 -0
  78. package/dist/esm/packages/taco/src/hooks/useTacoSettings.js +9 -0
  79. package/dist/esm/packages/taco/src/hooks/useTacoSettings.js.map +1 -0
  80. package/dist/esm/packages/taco/src/index.js +1 -1
  81. package/dist/hooks/useLocalStorage.d.ts +1 -0
  82. package/dist/hooks/useTacoSettings.d.ts +1 -0
  83. package/dist/taco.cjs.development.js +367 -183
  84. package/dist/taco.cjs.development.js.map +1 -1
  85. package/dist/taco.cjs.production.min.js +1 -1
  86. package/dist/taco.cjs.production.min.js.map +1 -1
  87. package/package.json +2 -2
  88. package/types.json +11451 -10602
  89. package/dist/components/Table3/components/toolbar/Filter/filters/components/Comparator.d.ts +0 -11
@@ -5,29 +5,74 @@ import { Table3FilterComparator } from '../../../../../types.js';
5
5
 
6
6
  function FilterComparator(props) {
7
7
  const {
8
+ column,
8
9
  onChange: handleChange,
9
10
  value,
10
- validComparators,
11
11
  ...attributes
12
12
  } = props;
13
13
  const {
14
14
  texts
15
15
  } = useLocalization();
16
+ const validComparators = guessComparatorsBasedOnControl(column);
16
17
  React__default.useEffect(() => {
17
- if (value === undefined) {
18
+ if (value === undefined || !validComparators.includes(value)) {
18
19
  handleChange === null || handleChange === void 0 ? void 0 : handleChange(validComparators[0]);
19
20
  }
20
- }, []);
21
+ }, [validComparators]);
21
22
  return /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
22
23
  className: "!w-32 flex-shrink-0",
24
+ disabled: !column,
23
25
  onChange: handleChange,
24
26
  value: value
25
- }), validComparators.map(comp => /*#__PURE__*/React__default.createElement(Select2.Option, {
26
- key: comp,
27
- value: comp
28
- }, getComparatorText(comp, texts))));
27
+ }), validComparators.map(comparator => /*#__PURE__*/React__default.createElement(Select2.Option, {
28
+ key: comparator,
29
+ value: comparator
30
+ }, getComparatorText(comparator, texts, column))));
29
31
  }
30
- const getComparatorText = (comparator, texts) => {
32
+ function guessComparatorsBasedOnControl(column) {
33
+ var _column$columnDef$met;
34
+ const columnMeta = (_column$columnDef$met = column === null || column === void 0 ? void 0 : column.columnDef.meta) !== null && _column$columnDef$met !== void 0 ? _column$columnDef$met : {};
35
+ if (Array.isArray(columnMeta.filters)) {
36
+ return columnMeta.filters;
37
+ }
38
+ if (typeof columnMeta.control === 'function') {
39
+ const renderedControl = columnMeta.control({
40
+ onBlur: () => undefined,
41
+ onFocus: () => undefined,
42
+ setValue: () => undefined,
43
+ value: undefined,
44
+ disabled: false,
45
+ readOnly: false,
46
+ ref: undefined
47
+ });
48
+ if ( /*#__PURE__*/React__default.isValidElement(renderedControl)) {
49
+ const {
50
+ props,
51
+ type
52
+ } = renderedControl;
53
+ if (type.displayName === 'Select2') {
54
+ if (props.multiple) {
55
+ return [Table3FilterComparator.HasAnyOf, Table3FilterComparator.HasAllOf, Table3FilterComparator.IsEqualTo, Table3FilterComparator.HasNoneOf, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
56
+ }
57
+ return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
58
+ }
59
+ }
60
+ }
61
+ // @ts-expect-error -- we ignore it because it conflicts with Table2 also overridding ColumnMeta
62
+ if (columnMeta.dataType === 'number') {
63
+ return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsGreaterThan, Table3FilterComparator.IsLessThan, Table3FilterComparator.IsBetween, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
64
+ }
65
+ if (columnMeta.control === 'datepicker' || columnMeta.dataType === 'datetime') {
66
+ return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsBetween, Table3FilterComparator.IsLessThan, Table3FilterComparator.IsGreaterThan, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty, Table3FilterComparator.IsLessThanOrEqualTo, Table3FilterComparator.IsGreaterThanOrEqualTo];
67
+ }
68
+ if (columnMeta.control === 'switch') {
69
+ return [Table3FilterComparator.IsEqualTo];
70
+ }
71
+ return [Table3FilterComparator.Contains, Table3FilterComparator.DoesNotContain, Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
72
+ }
73
+ function getComparatorText(comparator, texts, column) {
74
+ var _column$columnDef, _column$columnDef$met2;
75
+ const isDate = (column === null || column === void 0 ? void 0 : (_column$columnDef = column.columnDef) === null || _column$columnDef === void 0 ? void 0 : (_column$columnDef$met2 = _column$columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.control) === 'datepicker';
31
76
  switch (comparator) {
32
77
  case Table3FilterComparator.Contains:
33
78
  return texts.table3.filters.comparators.contains;
@@ -38,23 +83,29 @@ const getComparatorText = (comparator, texts) => {
38
83
  case Table3FilterComparator.IsNotEqualTo:
39
84
  return texts.table3.filters.comparators.isNotEqualTo;
40
85
  case Table3FilterComparator.IsGreaterThan:
41
- return texts.table3.filters.comparators.isGreaterThan;
86
+ return isDate ? texts.table3.filters.comparators.isAfter : texts.table3.filters.comparators.isGreaterThan;
42
87
  case Table3FilterComparator.IsLessThan:
43
- return texts.table3.filters.comparators.isLessThan;
88
+ return isDate ? texts.table3.filters.comparators.isBefore : texts.table3.filters.comparators.isLessThan;
44
89
  case Table3FilterComparator.IsBetween:
45
90
  return texts.table3.filters.comparators.isBetween;
46
- case Table3FilterComparator.IsOneOf:
47
- return texts.table3.filters.comparators.isOneOf;
48
- case Table3FilterComparator.IsNoneOf:
49
- return texts.table3.filters.comparators.isNoneOf;
50
- case Table3FilterComparator.IsAllOf:
51
- return texts.table3.filters.comparators.isAllOf;
52
91
  case Table3FilterComparator.IsEmpty:
53
92
  return texts.table3.filters.comparators.isEmpty;
54
93
  case Table3FilterComparator.IsNotEmpty:
55
94
  return texts.table3.filters.comparators.isNotEmpty;
95
+ case Table3FilterComparator.IsLessThanOrEqualTo:
96
+ return isDate ? texts.table3.filters.comparators.isOnOrBefore : texts.table3.filters.comparators.isLessThanOrEqualTo;
97
+ case Table3FilterComparator.IsGreaterThanOrEqualTo:
98
+ return isDate ? texts.table3.filters.comparators.isOnOrAfter : texts.table3.filters.comparators.isGreaterThanOrEqualTo;
99
+ case Table3FilterComparator.HasAnyOf:
100
+ return texts.table3.filters.comparators.hasAnyOf;
101
+ case Table3FilterComparator.HasAllOf:
102
+ return texts.table3.filters.comparators.hasAllOf;
103
+ case Table3FilterComparator.HasNoneOf:
104
+ return texts.table3.filters.comparators.hasNoneOf;
105
+ default:
106
+ return '';
56
107
  }
57
- };
108
+ }
58
109
 
59
110
  export { FilterComparator };
60
111
  //# sourceMappingURL=FilterComparator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterComparator.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.tsx"],"sourcesContent":["import React from 'react';\nimport { Select2, Select2Props } from '../../../../../../Select2/Select2';\nimport { Table3FilterComparator } from '../../../../../types';\nimport { LocalizationTexts, useLocalization } from '../../../../../../Provider/Localization';\n\nexport type FilterComparatorProps = Omit<Select2Props, 'children'> & {\n validComparators: Table3FilterComparator[];\n};\n\nexport function FilterComparator(props: FilterComparatorProps) {\n const { onChange: handleChange, value, validComparators, ...attributes } = props;\n const { texts } = useLocalization();\n\n React.useEffect(() => {\n if (value === undefined) {\n handleChange?.(validComparators[0]);\n }\n }, []);\n\n return (\n <Select2 {...attributes} className=\"!w-32 flex-shrink-0\" onChange={handleChange} value={value}>\n {validComparators.map(comp => (\n <Select2.Option key={comp} value={comp}>\n {getComparatorText(comp, texts)}\n </Select2.Option>\n ))}\n </Select2>\n );\n}\n\nconst getComparatorText = (comparator: Table3FilterComparator, texts: LocalizationTexts) => {\n switch (comparator) {\n case Table3FilterComparator.Contains:\n return texts.table3.filters.comparators.contains;\n\n case Table3FilterComparator.DoesNotContain:\n return texts.table3.filters.comparators.doesNotContain;\n\n case Table3FilterComparator.IsEqualTo:\n return texts.table3.filters.comparators.isEqualTo;\n\n case Table3FilterComparator.IsNotEqualTo:\n return texts.table3.filters.comparators.isNotEqualTo;\n\n case Table3FilterComparator.IsGreaterThan:\n return texts.table3.filters.comparators.isGreaterThan;\n\n case Table3FilterComparator.IsLessThan:\n return texts.table3.filters.comparators.isLessThan;\n\n case Table3FilterComparator.IsBetween:\n return texts.table3.filters.comparators.isBetween;\n\n case Table3FilterComparator.IsOneOf:\n return texts.table3.filters.comparators.isOneOf;\n\n case Table3FilterComparator.IsNoneOf:\n return texts.table3.filters.comparators.isNoneOf;\n\n case Table3FilterComparator.IsAllOf:\n return texts.table3.filters.comparators.isAllOf;\n\n case Table3FilterComparator.IsEmpty:\n return texts.table3.filters.comparators.isEmpty;\n\n case Table3FilterComparator.IsNotEmpty:\n return texts.table3.filters.comparators.isNotEmpty;\n }\n};\n"],"names":["FilterComparator","props","onChange","handleChange","value","validComparators","attributes","texts","useLocalization","React","useEffect","undefined","Select2","className","map","comp","Option","key","getComparatorText","comparator","Table3FilterComparator","Contains","table3","filters","comparators","contains","DoesNotContain","doesNotContain","IsEqualTo","isEqualTo","IsNotEqualTo","isNotEqualTo","IsGreaterThan","isGreaterThan","IsLessThan","isLessThan","IsBetween","isBetween","IsOneOf","isOneOf","IsNoneOf","isNoneOf","IsAllOf","isAllOf","IsEmpty","isEmpty","IsNotEmpty","isNotEmpty"],"mappings":";;;;;SASgBA,gBAAgB,CAACC,KAA4B;EACzD,MAAM;IAAEC,QAAQ,EAAEC,YAAY;IAAEC,KAAK;IAAEC,gBAAgB;IAAE,GAAGC;GAAY,GAAGL,KAAK;EAChF,MAAM;IAAEM;GAAO,GAAGC,eAAe,EAAE;EAEnCC,cAAK,CAACC,SAAS,CAAC;IACZ,IAAIN,KAAK,KAAKO,SAAS,EAAE;MACrBR,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGE,gBAAgB,CAAC,CAAC,CAAC,CAAC;;GAE1C,EAAE,EAAE,CAAC;EAEN,oBACII,6BAACG,OAAO,oBAAKN,UAAU;IAAEO,SAAS,EAAC,qBAAqB;IAACX,QAAQ,EAAEC,YAAY;IAAEC,KAAK,EAAEA;MACnFC,gBAAgB,CAACS,GAAG,CAACC,IAAI,iBACtBN,6BAACG,OAAO,CAACI,MAAM;IAACC,GAAG,EAAEF,IAAI;IAAEX,KAAK,EAAEW;KAC7BG,iBAAiB,CAACH,IAAI,EAAER,KAAK,CAAC,CAEtC,CAAC,CACI;AAElB;AAEA,MAAMW,iBAAiB,GAAG,CAACC,UAAkC,EAAEZ,KAAwB;EACnF,QAAQY,UAAU;IACd,KAAKC,sBAAsB,CAACC,QAAQ;MAChC,OAAOd,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACC,QAAQ;IAEpD,KAAKL,sBAAsB,CAACM,cAAc;MACtC,OAAOnB,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACG,cAAc;IAE1D,KAAKP,sBAAsB,CAACQ,SAAS;MACjC,OAAOrB,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACK,SAAS;IAErD,KAAKT,sBAAsB,CAACU,YAAY;MACpC,OAAOvB,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACO,YAAY;IAExD,KAAKX,sBAAsB,CAACY,aAAa;MACrC,OAAOzB,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACS,aAAa;IAEzD,KAAKb,sBAAsB,CAACc,UAAU;MAClC,OAAO3B,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACW,UAAU;IAEtD,KAAKf,sBAAsB,CAACgB,SAAS;MACjC,OAAO7B,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACa,SAAS;IAErD,KAAKjB,sBAAsB,CAACkB,OAAO;MAC/B,OAAO/B,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACe,OAAO;IAEnD,KAAKnB,sBAAsB,CAACoB,QAAQ;MAChC,OAAOjC,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACiB,QAAQ;IAEpD,KAAKrB,sBAAsB,CAACsB,OAAO;MAC/B,OAAOnC,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACmB,OAAO;IAEnD,KAAKvB,sBAAsB,CAACwB,OAAO;MAC/B,OAAOrC,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACqB,OAAO;IAEnD,KAAKzB,sBAAsB,CAAC0B,UAAU;MAClC,OAAOvC,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACuB,UAAU;;AAE9D,CAAC;;;;"}
1
+ {"version":3,"file":"FilterComparator.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, ColumnMeta } from '@tanstack/react-table';\nimport { Select2, Select2Props } from '../../../../../../Select2/Select2';\nimport { Table3FilterComparator } from '../../../../../types';\nimport { LocalizationTexts, useLocalization } from '../../../../../../Provider/Localization';\n\nexport type FilterComparatorProps<TType = unknown> = Omit<Select2Props, 'children'> & {\n column?: RTColumn<TType, unknown>;\n};\n\nexport function FilterComparator<TType = unknown>(props: FilterComparatorProps<TType>) {\n const { column, onChange: handleChange, value, ...attributes } = props;\n const { texts } = useLocalization();\n\n const validComparators = guessComparatorsBasedOnControl(column);\n\n React.useEffect(() => {\n if (value === undefined || !validComparators.includes(value as number)) {\n handleChange?.(validComparators[0]);\n }\n }, [validComparators]);\n\n return (\n <Select2 {...attributes} className=\"!w-32 flex-shrink-0\" disabled={!column} onChange={handleChange} value={value}>\n {validComparators.map(comparator => (\n <Select2.Option key={comparator} value={comparator}>\n {getComparatorText(comparator, texts, column)}\n </Select2.Option>\n ))}\n </Select2>\n );\n}\n\nfunction guessComparatorsBasedOnControl<TType = unknown>(column?: RTColumn<TType, unknown>) {\n const columnMeta = (column?.columnDef.meta ?? {}) as ColumnMeta<TType, unknown>;\n\n if (Array.isArray(columnMeta.filters)) {\n return columnMeta.filters;\n }\n\n if (typeof columnMeta.control === 'function') {\n const renderedControl = columnMeta.control({\n onBlur: () => undefined,\n onFocus: () => undefined,\n setValue: () => undefined,\n value: undefined,\n disabled: false,\n readOnly: false,\n ref: undefined as any,\n });\n\n if (React.isValidElement(renderedControl)) {\n const { props, type } = renderedControl as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [\n Table3FilterComparator.HasAnyOf,\n Table3FilterComparator.HasAllOf,\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.HasNoneOf,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n }\n }\n\n // @ts-expect-error -- we ignore it because it conflicts with Table2 also overridding ColumnMeta\n if (columnMeta.dataType === 'number') {\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsGreaterThan,\n Table3FilterComparator.IsLessThan,\n Table3FilterComparator.IsBetween,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n\n if (columnMeta.control === 'datepicker' || columnMeta.dataType === 'datetime') {\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsBetween,\n Table3FilterComparator.IsLessThan,\n Table3FilterComparator.IsGreaterThan,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n Table3FilterComparator.IsLessThanOrEqualTo,\n Table3FilterComparator.IsGreaterThanOrEqualTo,\n ];\n }\n\n if (columnMeta.control === 'switch') {\n return [Table3FilterComparator.IsEqualTo];\n }\n\n return [\n Table3FilterComparator.Contains,\n Table3FilterComparator.DoesNotContain,\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n}\n\nfunction getComparatorText<TType = unknown>(\n comparator: Table3FilterComparator,\n texts: LocalizationTexts,\n column?: RTColumn<TType, unknown>\n) {\n const isDate = column?.columnDef?.meta?.control === 'datepicker';\n\n switch (comparator) {\n case Table3FilterComparator.Contains:\n return texts.table3.filters.comparators.contains;\n\n case Table3FilterComparator.DoesNotContain:\n return texts.table3.filters.comparators.doesNotContain;\n\n case Table3FilterComparator.IsEqualTo:\n return texts.table3.filters.comparators.isEqualTo;\n\n case Table3FilterComparator.IsNotEqualTo:\n return texts.table3.filters.comparators.isNotEqualTo;\n\n case Table3FilterComparator.IsGreaterThan:\n return isDate ? texts.table3.filters.comparators.isAfter : texts.table3.filters.comparators.isGreaterThan;\n\n case Table3FilterComparator.IsLessThan:\n return isDate ? texts.table3.filters.comparators.isBefore : texts.table3.filters.comparators.isLessThan;\n\n case Table3FilterComparator.IsBetween:\n return texts.table3.filters.comparators.isBetween;\n\n case Table3FilterComparator.IsEmpty:\n return texts.table3.filters.comparators.isEmpty;\n\n case Table3FilterComparator.IsNotEmpty:\n return texts.table3.filters.comparators.isNotEmpty;\n\n case Table3FilterComparator.IsLessThanOrEqualTo:\n return isDate ? texts.table3.filters.comparators.isOnOrBefore : texts.table3.filters.comparators.isLessThanOrEqualTo;\n\n case Table3FilterComparator.IsGreaterThanOrEqualTo:\n return isDate\n ? texts.table3.filters.comparators.isOnOrAfter\n : texts.table3.filters.comparators.isGreaterThanOrEqualTo;\n\n case Table3FilterComparator.HasAnyOf:\n return texts.table3.filters.comparators.hasAnyOf;\n\n case Table3FilterComparator.HasAllOf:\n return texts.table3.filters.comparators.hasAllOf;\n\n case Table3FilterComparator.HasNoneOf:\n return texts.table3.filters.comparators.hasNoneOf;\n\n default:\n return '';\n }\n}\n"],"names":["FilterComparator","props","column","onChange","handleChange","value","attributes","texts","useLocalization","validComparators","guessComparatorsBasedOnControl","React","useEffect","undefined","includes","Select2","className","disabled","map","comparator","Option","key","getComparatorText","columnMeta","columnDef","meta","Array","isArray","filters","control","renderedControl","onBlur","onFocus","setValue","readOnly","ref","isValidElement","type","displayName","multiple","Table3FilterComparator","HasAnyOf","HasAllOf","IsEqualTo","HasNoneOf","IsEmpty","IsNotEmpty","IsNotEqualTo","dataType","IsGreaterThan","IsLessThan","IsBetween","IsLessThanOrEqualTo","IsGreaterThanOrEqualTo","Contains","DoesNotContain","isDate","table3","comparators","contains","doesNotContain","isEqualTo","isNotEqualTo","isAfter","isGreaterThan","isBefore","isLessThan","isBetween","isEmpty","isNotEmpty","isOnOrBefore","isLessThanOrEqualTo","isOnOrAfter","isGreaterThanOrEqualTo","hasAnyOf","hasAllOf","hasNoneOf"],"mappings":"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"}
@@ -1,7 +1,10 @@
1
- import React__default from 'react';
1
+ import React__default, { useEffect } from 'react';
2
+ import cn from 'classnames';
3
+ import { useLocalization } from '../../../../../../Provider/Localization.js';
2
4
  import { Input } from '../../../../../../Input/Input.js';
3
5
  import { Datepicker } from '../../../../../../Datepicker/Datepicker.js';
4
6
  import { Switch } from '../../../../../../Switch/Switch.js';
7
+ import { getInputAppearanceClassnames } from '../../../../columns/styles.js';
5
8
  import { Table3FilterComparator } from '../../../../../types.js';
6
9
 
7
10
  function FilterValue(props) {
@@ -11,6 +14,9 @@ function FilterValue(props) {
11
14
  onChange: handleChange,
12
15
  value
13
16
  } = props;
17
+ const {
18
+ texts
19
+ } = useLocalization();
14
20
  if (comparator === Table3FilterComparator.IsEmpty || comparator === Table3FilterComparator.IsNotEmpty) {
15
21
  return null;
16
22
  }
@@ -18,6 +24,14 @@ function FilterValue(props) {
18
24
  var _column$columnDef$met;
19
25
  const fromValue = Array.isArray(value) ? value[0] : undefined;
20
26
  const toValue = Array.isArray(value) ? value[1] : undefined;
27
+ if (column === undefined) {
28
+ return /*#__PURE__*/React__default.createElement(Input, {
29
+ "aria-label": texts.table3.filters.emptyFilter.value,
30
+ className: "flex-grow",
31
+ disabled: true,
32
+ value: texts.table3.filters.emptyFilter.value
33
+ });
34
+ }
21
35
  if (((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType) === 'datetime') {
22
36
  return /*#__PURE__*/React__default.createElement("div", {
23
37
  className: "flex flex-grow items-center gap-2"
@@ -46,6 +60,7 @@ function FilterValue(props) {
46
60
  }));
47
61
  }
48
62
  return /*#__PURE__*/React__default.createElement(Control, {
63
+ comparator: comparator,
49
64
  column: column,
50
65
  onChange: handleChange,
51
66
  value: value
@@ -55,12 +70,18 @@ function Control(props) {
55
70
  var _column$columnDef$met2, _column$columnDef$met3;
56
71
  const {
57
72
  column,
73
+ comparator,
58
74
  onChange,
59
75
  value,
60
76
  ...attributes
61
77
  } = props;
62
78
  const controlRenderer = (_column$columnDef$met2 = column.columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.control;
63
79
  const dataType = (_column$columnDef$met3 = column.columnDef.meta) === null || _column$columnDef$met3 === void 0 ? void 0 : _column$columnDef$met3.dataType;
80
+ useEffect(() => {
81
+ if (controlRenderer === 'switch') {
82
+ onChange(false);
83
+ }
84
+ }, []);
64
85
  if (typeof controlRenderer === 'function') {
65
86
  return controlRenderer({
66
87
  ...attributes,
@@ -72,11 +93,19 @@ function Control(props) {
72
93
  onChange: event => onChange(event.detail),
73
94
  value: value
74
95
  }));
75
- } else if (controlRenderer === 'switch' || dataType === 'boolean') {
96
+ } else if (controlRenderer === 'switch') {
76
97
  return /*#__PURE__*/React__default.createElement(Switch, Object.assign({}, attributes, {
98
+ className: "m-1.5",
77
99
  checked: Boolean(value),
78
100
  onChange: onChange
79
101
  }));
102
+ } else if ((controlRenderer === 'input' || controlRenderer === undefined) && dataType === 'number') {
103
+ return /*#__PURE__*/React__default.createElement(Input, Object.assign({}, attributes, {
104
+ className: cn(getInputAppearanceClassnames(), 'flex-grow'),
105
+ type: "number",
106
+ onChange: event => onChange(event.target.valueAsNumber),
107
+ value: String(value !== null && value !== void 0 ? value : '')
108
+ }));
80
109
  }
81
110
  return /*#__PURE__*/React__default.createElement(Input, Object.assign({}, attributes, {
82
111
  className: "flex-grow",
@@ -1 +1 @@
1
- {"version":3,"file":"FilterValue.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn } from '@tanstack/react-table';\nimport { Input } from '../../../../../../Input/Input';\nimport { Table3FilterComparator } from '../../../../../types';\nimport { Datepicker } from '../../../../../../Datepicker/Datepicker';\nimport { Switch } from '../../../../../../Switch/Switch';\n\nexport type FilterValueProps<TType = unknown> = {\n column: RTColumn<TType, unknown>;\n comparator: Table3FilterComparator;\n onChange: (value: any) => void;\n value: any;\n};\n\nexport function FilterValue<TType = unknown>(props: FilterValueProps<TType>) {\n const { column, comparator, onChange: handleChange, value } = props;\n\n if (comparator === Table3FilterComparator.IsEmpty || comparator === Table3FilterComparator.IsNotEmpty) {\n return null;\n }\n\n if (comparator === Table3FilterComparator.IsBetween) {\n const fromValue = Array.isArray(value) ? value[0] : undefined;\n const toValue = Array.isArray(value) ? value[1] : undefined;\n\n if (column.columnDef.meta?.dataType === 'datetime') {\n return (\n <div className=\"flex flex-grow items-center gap-2\">\n <Control column={column} onChange={value => handleChange([value, toValue])} value={fromValue} />\n <Control column={column} onChange={value => handleChange([fromValue, value])} value={toValue} />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-grow items-center gap-2\">\n <Control\n column={column}\n onChange={value => handleChange([isNaN(value) ? undefined : value, toValue])}\n placeholder=\"from\"\n value={fromValue ?? ''}\n />\n <Control\n column={column}\n onChange={value => handleChange([fromValue, isNaN(value) ? undefined : value])}\n placeholder=\"to\"\n value={toValue ?? ''}\n />\n </div>\n );\n }\n\n return <Control column={column} onChange={handleChange} value={value} />;\n}\n\nfunction Control(props) {\n const { column, onChange, value, ...attributes } = props;\n\n const controlRenderer = column.columnDef.meta?.control;\n const dataType = column.columnDef.meta?.dataType;\n\n if (typeof controlRenderer === 'function') {\n return controlRenderer({\n ...attributes,\n setValue: value => onChange(value),\n value,\n });\n } else if (controlRenderer === 'datepicker' || dataType === 'datetime') {\n return <Datepicker {...attributes} onChange={event => onChange((event as any).detail)} value={value as Date} />;\n } else if (controlRenderer === 'switch' || dataType === 'boolean') {\n return <Switch {...attributes} checked={Boolean(value)} onChange={onChange} />;\n }\n\n return (\n <Input\n {...attributes}\n className=\"flex-grow\"\n onChange={event => onChange(event.target.value)}\n value={String(value ?? '')}\n />\n );\n}\n"],"names":["FilterValue","props","column","comparator","onChange","handleChange","value","Table3FilterComparator","IsEmpty","IsNotEmpty","IsBetween","fromValue","Array","isArray","undefined","toValue","columnDef","meta","dataType","React","className","Control","isNaN","placeholder","attributes","controlRenderer","control","setValue","Datepicker","event","detail","Switch","checked","Boolean","Input","target","String"],"mappings":"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"}
1
+ {"version":3,"file":"FilterValue.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { Column as RTColumn } from '@tanstack/react-table';\nimport { Input } from '../../../../../../Input/Input';\nimport { Table3FilterComparator } from '../../../../../types';\nimport { Datepicker } from '../../../../../../Datepicker/Datepicker';\nimport { Switch } from '../../../../../../Switch/Switch';\nimport { getInputAppearanceClassnames } from '../../../../columns/styles';\nimport cn from 'classnames';\nimport { useLocalization } from '../../../../../../Provider/Localization';\n\nexport type FilterValueProps<TType = unknown> = {\n column?: RTColumn<TType, unknown>;\n comparator: Table3FilterComparator;\n onChange: (value: any) => void;\n value: any;\n};\n\nexport function FilterValue<TType = unknown>(props: FilterValueProps<TType>) {\n const { column, comparator, onChange: handleChange, value } = props;\n const { texts } = useLocalization();\n if (comparator === Table3FilterComparator.IsEmpty || comparator === Table3FilterComparator.IsNotEmpty) {\n return null;\n }\n\n if (comparator === Table3FilterComparator.IsBetween) {\n const fromValue = Array.isArray(value) ? value[0] : undefined;\n const toValue = Array.isArray(value) ? value[1] : undefined;\n\n if (column === undefined) {\n return (\n <Input\n aria-label={texts.table3.filters.emptyFilter.value}\n className=\"flex-grow\"\n disabled\n value={texts.table3.filters.emptyFilter.value}\n />\n );\n }\n\n if (column.columnDef.meta?.dataType === 'datetime') {\n return (\n <div className=\"flex flex-grow items-center gap-2\">\n <Control column={column} onChange={value => handleChange([value, toValue])} value={fromValue} />\n <Control column={column} onChange={value => handleChange([fromValue, value])} value={toValue} />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-grow items-center gap-2\">\n <Control\n column={column}\n onChange={value => handleChange([isNaN(value) ? undefined : value, toValue])}\n placeholder=\"from\"\n value={fromValue ?? ''}\n />\n <Control\n column={column}\n onChange={value => handleChange([fromValue, isNaN(value) ? undefined : value])}\n placeholder=\"to\"\n value={toValue ?? ''}\n />\n </div>\n );\n }\n return <Control comparator={comparator} column={column} onChange={handleChange} value={value} />;\n}\n\nfunction Control(props) {\n const { column, comparator, onChange, value, ...attributes } = props;\n const controlRenderer = column.columnDef.meta?.control;\n const dataType = column.columnDef.meta?.dataType;\n\n useEffect(() => {\n if (controlRenderer === 'switch') {\n onChange(false);\n }\n }, []);\n\n if (typeof controlRenderer === 'function') {\n return controlRenderer({\n ...attributes,\n setValue: value => onChange(value),\n value,\n });\n } else if (controlRenderer === 'datepicker' || dataType === 'datetime') {\n return <Datepicker {...attributes} onChange={event => onChange((event as any).detail)} value={value as Date} />;\n } else if (controlRenderer === 'switch') {\n return <Switch {...attributes} className=\"m-1.5\" checked={Boolean(value)} onChange={onChange} />;\n } else if ((controlRenderer === 'input' || controlRenderer === undefined) && dataType === 'number') {\n return (\n <Input\n {...attributes}\n className={cn(getInputAppearanceClassnames(), 'flex-grow')}\n type=\"number\"\n onChange={event => onChange(event.target.valueAsNumber)}\n value={String(value ?? '')}\n />\n );\n }\n\n return (\n <Input\n {...attributes}\n className=\"flex-grow\"\n onChange={event => onChange(event.target.value)}\n value={String(value ?? '')}\n />\n );\n}\n"],"names":["FilterValue","props","column","comparator","onChange","handleChange","value","texts","useLocalization","Table3FilterComparator","IsEmpty","IsNotEmpty","IsBetween","fromValue","Array","isArray","undefined","toValue","React","Input","table3","filters","emptyFilter","className","disabled","columnDef","meta","dataType","Control","isNaN","placeholder","attributes","controlRenderer","control","useEffect","setValue","Datepicker","event","detail","Switch","checked","Boolean","cn","getInputAppearanceClassnames","type","target","valueAsNumber","String"],"mappings":"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"}
@@ -4,7 +4,6 @@ import { useLocalization } from '../../../../../../Provider/Localization.js';
4
4
  import { Input } from '../../../../../../Input/Input.js';
5
5
  import { FilterColumn } from './FilterColumn.js';
6
6
  import { FilterComparator } from './FilterComparator.js';
7
- import { guessComparatorsBasedOnControl } from './Filter.js';
8
7
 
9
8
  function Placeholder(props) {
10
9
  const {
@@ -26,10 +25,7 @@ function Placeholder(props) {
26
25
  filters: filters,
27
26
  onChange: handleCreate,
28
27
  value: null
29
- }), /*#__PURE__*/React__default.createElement(FilterComparator, {
30
- disabled: true,
31
- validComparators: guessComparatorsBasedOnControl()
32
- }), /*#__PURE__*/React__default.createElement(Input, {
28
+ }), /*#__PURE__*/React__default.createElement(FilterComparator, null), /*#__PURE__*/React__default.createElement(Input, {
33
29
  "aria-label": texts.table3.filters.emptyFilter.value,
34
30
  className: "flex-grow",
35
31
  disabled: true,
@@ -1 +1 @@
1
- {"version":3,"file":"Placeholder.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, ColumnFiltersState } from '@tanstack/react-table';\nimport { Select2Value } from '../../../../../../Select2/Select2';\nimport { useLocalization } from '../../../../../../Provider/Localization';\nimport { Input } from '../../../../../../Input/Input';\nimport { IconButton } from '../../../../../../IconButton/IconButton';\nimport { FilterColumn } from './FilterColumn';\nimport { FilterComparator } from './FilterComparator';\nimport { guessComparatorsBasedOnControl } from './Filter';\n\nexport type PlaceholderFilterProps<TType = unknown> = {\n allColumns: RTColumn<TType, unknown>[];\n filters: ColumnFiltersState;\n position: number;\n onCreate?: (value: Select2Value) => void;\n onRemove?: () => void;\n};\n\nexport function Placeholder<TType = unknown>(props: PlaceholderFilterProps<TType>) {\n const { allColumns, filters, onCreate: handleCreate, onRemove: handleRemove, position } = props;\n const { texts } = useLocalization();\n\n return (\n <div className=\"flex gap-2\">\n <div className=\"flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {position > 0 ? texts.table3.filters.conditions.and : texts.table3.filters.conditions.where}\n </div>\n <FilterColumn allColumns={allColumns} filters={filters} onChange={handleCreate} value={null} />\n <FilterComparator disabled validComparators={guessComparatorsBasedOnControl()} />\n <Input\n aria-label={texts.table3.filters.emptyFilter.value}\n className=\"flex-grow\"\n disabled\n value={texts.table3.filters.emptyFilter.value}\n />\n {handleRemove ? <IconButton appearance=\"discrete\" icon=\"close\" onClick={handleRemove} /> : null}\n </div>\n );\n}\n"],"names":["Placeholder","props","allColumns","filters","onCreate","handleCreate","onRemove","handleRemove","position","texts","useLocalization","React","className","table3","conditions","and","where","FilterColumn","onChange","value","FilterComparator","disabled","validComparators","guessComparatorsBasedOnControl","Input","emptyFilter","IconButton","appearance","icon","onClick"],"mappings":";;;;;;;;SAkBgBA,WAAW,CAAkBC,KAAoC;EAC7E,MAAM;IAAEC,UAAU;IAAEC,OAAO;IAAEC,QAAQ,EAAEC,YAAY;IAAEC,QAAQ,EAAEC,YAAY;IAAEC;GAAU,GAAGP,KAAK;EAC/F,MAAM;IAAEQ;GAAO,GAAGC,eAAe,EAAE;EAEnC,oBACIC;IAAKC,SAAS,EAAC;kBACXD;IAAKC,SAAS,EAAC;KACVJ,QAAQ,GAAG,CAAC,GAAGC,KAAK,CAACI,MAAM,CAACV,OAAO,CAACW,UAAU,CAACC,GAAG,GAAGN,KAAK,CAACI,MAAM,CAACV,OAAO,CAACW,UAAU,CAACE,KAAK,CACzF,eACNL,6BAACM,YAAY;IAACf,UAAU,EAAEA,UAAU;IAAEC,OAAO,EAAEA,OAAO;IAAEe,QAAQ,EAAEb,YAAY;IAAEc,KAAK,EAAE;IAAQ,eAC/FR,6BAACS,gBAAgB;IAACC,QAAQ;IAACC,gBAAgB,EAAEC,8BAA8B;IAAM,eACjFZ,6BAACa,KAAK;kBACUf,KAAK,CAACI,MAAM,CAACV,OAAO,CAACsB,WAAW,CAACN,KAAK;IAClDP,SAAS,EAAC,WAAW;IACrBS,QAAQ;IACRF,KAAK,EAAEV,KAAK,CAACI,MAAM,CAACV,OAAO,CAACsB,WAAW,CAACN;IAC1C,EACDZ,YAAY,gBAAGI,6BAACe,UAAU;IAACC,UAAU,EAAC,UAAU;IAACC,IAAI,EAAC,OAAO;IAACC,OAAO,EAAEtB;IAAgB,GAAG,IAAI,CAC7F;AAEd;;;;"}
1
+ {"version":3,"file":"Placeholder.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, ColumnFiltersState } from '@tanstack/react-table';\nimport { Select2Value } from '../../../../../../Select2/Select2';\nimport { useLocalization } from '../../../../../../Provider/Localization';\nimport { Input } from '../../../../../../Input/Input';\nimport { IconButton } from '../../../../../../IconButton/IconButton';\nimport { FilterColumn } from './FilterColumn';\nimport { FilterComparator } from './FilterComparator';\n\nexport type PlaceholderFilterProps<TType = unknown> = {\n allColumns: RTColumn<TType, unknown>[];\n filters: ColumnFiltersState;\n position: number;\n onCreate?: (value: Select2Value) => void;\n onRemove?: () => void;\n};\n\nexport function Placeholder<TType = unknown>(props: PlaceholderFilterProps<TType>) {\n const { allColumns, filters, onCreate: handleCreate, onRemove: handleRemove, position } = props;\n const { texts } = useLocalization();\n\n return (\n <div className=\"flex gap-2\">\n <div className=\"flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {position > 0 ? texts.table3.filters.conditions.and : texts.table3.filters.conditions.where}\n </div>\n <FilterColumn allColumns={allColumns} filters={filters} onChange={handleCreate} value={null} />\n <FilterComparator />\n <Input\n aria-label={texts.table3.filters.emptyFilter.value}\n className=\"flex-grow\"\n disabled\n value={texts.table3.filters.emptyFilter.value}\n />\n {handleRemove ? <IconButton appearance=\"discrete\" icon=\"close\" onClick={handleRemove} /> : null}\n </div>\n );\n}\n"],"names":["Placeholder","props","allColumns","filters","onCreate","handleCreate","onRemove","handleRemove","position","texts","useLocalization","React","className","table3","conditions","and","where","FilterColumn","onChange","value","FilterComparator","Input","emptyFilter","disabled","IconButton","appearance","icon","onClick"],"mappings":";;;;;;;SAiBgBA,WAAW,CAAkBC,KAAoC;EAC7E,MAAM;IAAEC,UAAU;IAAEC,OAAO;IAAEC,QAAQ,EAAEC,YAAY;IAAEC,QAAQ,EAAEC,YAAY;IAAEC;GAAU,GAAGP,KAAK;EAC/F,MAAM;IAAEQ;GAAO,GAAGC,eAAe,EAAE;EAEnC,oBACIC;IAAKC,SAAS,EAAC;kBACXD;IAAKC,SAAS,EAAC;KACVJ,QAAQ,GAAG,CAAC,GAAGC,KAAK,CAACI,MAAM,CAACV,OAAO,CAACW,UAAU,CAACC,GAAG,GAAGN,KAAK,CAACI,MAAM,CAACV,OAAO,CAACW,UAAU,CAACE,KAAK,CACzF,eACNL,6BAACM,YAAY;IAACf,UAAU,EAAEA,UAAU;IAAEC,OAAO,EAAEA,OAAO;IAAEe,QAAQ,EAAEb,YAAY;IAAEc,KAAK,EAAE;IAAQ,eAC/FR,6BAACS,gBAAgB,OAAG,eACpBT,6BAACU,KAAK;kBACUZ,KAAK,CAACI,MAAM,CAACV,OAAO,CAACmB,WAAW,CAACH,KAAK;IAClDP,SAAS,EAAC,WAAW;IACrBW,QAAQ;IACRJ,KAAK,EAAEV,KAAK,CAACI,MAAM,CAACV,OAAO,CAACmB,WAAW,CAACH;IAC1C,EACDZ,YAAY,gBAAGI,6BAACa,UAAU;IAACC,UAAU,EAAC,UAAU;IAACC,IAAI,EAAC,OAAO;IAACC,OAAO,EAAEpB;IAAgB,GAAG,IAAI,CAC7F;AAEd;;;;"}
@@ -86,30 +86,9 @@ function PrintIFrame({
86
86
  }) {
87
87
  const [contentRef, setContentRef] = React__default.useState(null);
88
88
  const [mountNode, setMountNode] = React__default.useState(null);
89
+ const isFirefoxBrowser = React__default.useMemo(() => navigator.userAgent.toLowerCase().includes('firefox'), []);
89
90
  const iframeWindow = contentRef === null || contentRef === void 0 ? void 0 : contentRef.contentWindow;
90
91
  const stylesReady = useParentStylesheets(iframeWindow);
91
- // Adds print events to the iframe window.
92
- React__default.useEffect(() => {
93
- if (iframeWindow === null || iframeWindow === undefined) {
94
- return;
95
- }
96
- // Add print events to the window
97
- if (onAfterPrint) {
98
- iframeWindow.addEventListener('afterprint', onAfterPrint);
99
- }
100
- if (onBeforePrint) {
101
- iframeWindow.addEventListener('beforeprint', onBeforePrint);
102
- }
103
- return () => {
104
- // Remove print events from the window
105
- if (onAfterPrint) {
106
- iframeWindow.removeEventListener('afterprint', onAfterPrint);
107
- }
108
- if (onBeforePrint) {
109
- iframeWindow.removeEventListener('beforeprint', onBeforePrint);
110
- }
111
- };
112
- }, [iframeWindow]);
113
92
  // Calls print method when table has loaded in the iframe.
114
93
  React__default.useEffect(() => {
115
94
  let intervalId;
@@ -120,7 +99,8 @@ function PrintIFrame({
120
99
  intervalId = setInterval(function () {
121
100
  try {
122
101
  const tableWrapper = mountNode;
123
- const hasTableRendered = !!tableWrapper.querySelector('[role="table"]');
102
+ const table = tableWrapper.querySelector('[role="table"]');
103
+ const hasTableRendered = !!table;
124
104
  if (hasTableRendered && intervalId) {
125
105
  var _contentRef$contentWi;
126
106
  clearInterval(intervalId);
@@ -129,6 +109,12 @@ function PrintIFrame({
129
109
  // Bug - Even though onBeforePrint is called before printing, the execution doesn't finish before
130
110
  // the print dialog shows up, which results into having a visible loading toast.
131
111
  onBeforePrint === null || onBeforePrint === void 0 ? void 0 : onBeforePrint();
112
+ // By adding height to the tableWrapper, we make sure the content below absolutely positioned table
113
+ // doesn't hide
114
+ if (isFirefoxBrowser) {
115
+ const tableHeight = `${table.offsetHeight}px`;
116
+ tableWrapper.style.height = tableHeight;
117
+ }
132
118
  contentRef === null || contentRef === void 0 ? void 0 : (_contentRef$contentWi = contentRef.contentWindow) === null || _contentRef$contentWi === void 0 ? void 0 : _contentRef$contentWi.print();
133
119
  // Calling the onAfterPrint method here as a fallback to do the cleanup, as certain browsers,
134
120
  // like Safari, do not trigger the beforeprint or afterprint events when a confirmation dialog
@@ -167,6 +153,11 @@ function PrintIFrame({
167
153
  tableWrapper.setAttribute('data-role', 'table-wrapper');
168
154
  // Adding h-fit class makes sure that table is rendered with the whole content.
169
155
  tableWrapper.classList.add('h-fit');
156
+ tableWrapper.classList.add('[&>[role="table"]]:!h-fit');
157
+ if (isFirefoxBrowser) {
158
+ // Fix for firefox bug which adds page-long whitespace between page's top content and table
159
+ tableWrapper.classList.add('[&>[role="table"]]:!absolute');
160
+ }
170
161
  // Safari print preview assigns no width to the table when w-screen class is used.
171
162
  // By assigning table a big static width and hiding the horizontal scrollbar, the table on chrome
172
163
  // and safari will always take full page width.
@@ -213,10 +204,12 @@ function PrintIFrame({
213
204
  };
214
205
  // -top-60 -left-60 styles make sure that iframe is added outside of the viewport
215
206
  return /*#__PURE__*/React__default.createElement("iframe", {
216
- ref: setContentRef,
217
207
  className: "fixed -left-60 -top-60 !h-0 !w-0",
218
208
  frameBorder: "0",
219
- scrolling: "no"
209
+ ref: setContentRef,
210
+ scrolling: "no",
211
+ // Temporary fix to support printing in firefox: Find another solution while upgrading React
212
+ src: "javascript:void(0);"
220
213
  }, mountNode && stylesReady ? /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React__default.createElement(Table3, Object.assign({}, printTableProps)), mountNode) : null);
221
214
  }
222
215
 
@@ -1 +1 @@
1
- {"version":3,"file":"PrintIFrame.js","sources":["../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/PrintIFrame.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Table3 } from '../../../../..';\nimport { Table3Props } from '../../../types';\nimport { useParentStylesheets } from './hooks/useParentStylesheets';\n\nexport type PrintIFrameProps<TType = unknown> = {\n onAfterPrint?: () => void;\n onBeforePrint?: () => void;\n tableProps: Table3Props<TType>;\n};\n\nexport function PrintIFrame<TType = unknown>({ onAfterPrint, onBeforePrint, tableProps }: PrintIFrameProps<TType>) {\n const [contentRef, setContentRef] = React.useState<HTMLIFrameElement | null>(null);\n const [mountNode, setMountNode] = React.useState<HTMLElement | null>(null);\n\n const iframeWindow = contentRef?.contentWindow;\n\n const stylesReady = useParentStylesheets(iframeWindow);\n\n // Adds print events to the iframe window.\n React.useEffect(() => {\n if (iframeWindow === null || iframeWindow === undefined) {\n return;\n }\n\n // Add print events to the window\n if (onAfterPrint) {\n iframeWindow.addEventListener('afterprint', onAfterPrint);\n }\n\n if (onBeforePrint) {\n iframeWindow.addEventListener('beforeprint', onBeforePrint);\n }\n\n return () => {\n // Remove print events from the window\n if (onAfterPrint) {\n iframeWindow.removeEventListener('afterprint', onAfterPrint);\n }\n\n if (onBeforePrint) {\n iframeWindow.removeEventListener('beforeprint', onBeforePrint);\n }\n };\n }, [iframeWindow]);\n\n // Calls print method when table has loaded in the iframe.\n React.useEffect(() => {\n let intervalId: NodeJS.Timer;\n let timeoutId: NodeJS.Timer;\n\n // Invoke the print functionality on the window once the table has finished rendering and all print styles are\n // added.\n if (mountNode && stylesReady) {\n intervalId = setInterval(async () => {\n const tableWrapper = mountNode;\n const hasTableRendered = !!tableWrapper.querySelector('[role=\"table\"]');\n\n if (hasTableRendered && intervalId) {\n clearInterval(intervalId);\n\n // Calling the onBeforePrint method here as a fallback because certain browsers, like Safari,\n // do not call the beforeprint event.\n // Bug - Even though onBeforePrint is called before printing, the execution doesn't finish before\n // the print dialog shows up, which results into having a visible loading toast.\n onBeforePrint?.();\n\n contentRef?.contentWindow?.print();\n\n // Calling the onAfterPrint method here as a fallback to do the cleanup, as certain browsers,\n // like Safari, do not trigger the beforeprint or afterprint events when a confirmation dialog\n // asking if the user wants to print the document, is cancelled.\n\n // Added a setTimeout to prevent calling onAfterPrint immediately after the print function\n // to ensure that the print dialog doesn't close abruptly. Although this behavior is uncommon,\n // there are cases where the print function may not run synchronously, causing onAfterPrint to be\n // invoked right after it.\n timeoutId = setTimeout(() => {\n onAfterPrint?.();\n }, 0);\n }\n }, 1000);\n }\n\n return () => {\n clearInterval(intervalId);\n clearTimeout(timeoutId);\n };\n }, [mountNode, stylesReady]);\n\n React.useEffect(() => {\n if (!iframeWindow || !stylesReady) {\n return;\n }\n\n const iframeDocument = iframeWindow.document;\n // Only the content inside the main element will get printed along with the table.\n const parentDocumentContent =\n iframeWindow.parent.document.querySelector('main')?.innerHTML || iframeWindow.parent.document.body?.innerHTML || '';\n\n iframeDocument.body.innerHTML = parentDocumentContent;\n\n const tableElement = iframeDocument.querySelector('[role=\"table\"]');\n const tableColumnFreezingStyles = iframeDocument.querySelector('[data-taco=\"table3-column-freezing-styles\"]');\n const tableWrapper = iframeDocument.createElement('div');\n\n tableWrapper.setAttribute('data-role', 'table-wrapper');\n // Adding h-fit class makes sure that table is rendered with the whole content.\n tableWrapper.classList.add('h-fit');\n // Safari print preview assigns no width to the table when w-screen class is used.\n // By assigning table a big static width and hiding the horizontal scrollbar, the table on chrome\n // and safari will always take full page width.\n tableWrapper.classList.add('w-[10000px]');\n\n if (tableElement) {\n tableElement.parentNode?.insertBefore(tableWrapper, tableElement);\n tableElement.remove();\n } else {\n iframeDocument.body.append(tableWrapper);\n }\n\n // Remove the already existing column freezing styles.\n if (tableColumnFreezingStyles) {\n tableColumnFreezingStyles.remove();\n }\n\n let currentNode = tableWrapper.parentNode as HTMLElement | null;\n\n while (currentNode !== null && currentNode !== iframeDocument.body) {\n // Add the 'h-fit' class to the 'table-wrapper' element's parent chain.\n // This ensures that the table is not cropped and fits within its container.\n currentNode?.classList.add('!h-fit');\n currentNode = currentNode.parentNode as HTMLElement | null;\n }\n\n setMountNode(tableWrapper);\n }, [iframeWindow, stylesReady]);\n\n const printTableProps: Table3Props<TType> = {\n ...tableProps,\n actionsForRow: undefined,\n // Not the best way to remove the active/current row styles, but a temporary solution for now\n defaultCurrentRowIndex: -1,\n defaultSettings: {\n ...tableProps?.defaultSettings,\n rowHeight: 'short',\n },\n enableColumnFreezing: false,\n enableRowHeight: true,\n enableRowSelection: false,\n enableEditing: false,\n enablePrinting: false,\n enableRowDrag: false,\n enableRowDrop: false,\n enableRowSelectionSingle: false,\n preset: undefined,\n };\n\n // -top-60 -left-60 styles make sure that iframe is added outside of the viewport\n return (\n <iframe ref={setContentRef} className=\"fixed -left-60 -top-60 !h-0 !w-0\" frameBorder=\"0\" scrolling=\"no\">\n {mountNode && stylesReady ? ReactDOM.createPortal(<Table3 {...printTableProps} />, mountNode) : null}\n </iframe>\n );\n}\n"],"names":["PrintIFrame","onAfterPrint","onBeforePrint","tableProps","contentRef","setContentRef","React","useState","mountNode","setMountNode","iframeWindow","contentWindow","stylesReady","useParentStylesheets","useEffect","undefined","addEventListener","removeEventListener","intervalId","timeoutId","setInterval","tableWrapper","hasTableRendered","querySelector","clearInterval","print","setTimeout","clearTimeout","iframeDocument","document","parentDocumentContent","parent","innerHTML","body","tableElement","tableColumnFreezingStyles","createElement","setAttribute","classList","add","parentNode","insertBefore","remove","append","currentNode","printTableProps","actionsForRow","defaultCurrentRowIndex","defaultSettings","rowHeight","enableColumnFreezing","enableRowHeight","enableRowSelection","enableEditing","enablePrinting","enableRowDrag","enableRowDrop","enableRowSelectionSingle","preset","ref","className","frameBorder","scrolling","ReactDOM","createPortal","Table3"],"mappings":"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"}
1
+ {"version":3,"file":"PrintIFrame.js","sources":["../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/PrintIFrame.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Table3 } from '../../../../..';\nimport { Table3Props } from '../../../types';\nimport { useParentStylesheets } from './hooks/useParentStylesheets';\n\nexport type PrintIFrameProps<TType = unknown> = {\n onAfterPrint?: () => void;\n onBeforePrint?: () => void;\n tableProps: Table3Props<TType>;\n};\n\nexport function PrintIFrame<TType = unknown>({ onAfterPrint, onBeforePrint, tableProps }: PrintIFrameProps<TType>) {\n const [contentRef, setContentRef] = React.useState<HTMLIFrameElement | null>(null);\n const [mountNode, setMountNode] = React.useState<HTMLElement | null>(null);\n\n const isFirefoxBrowser = React.useMemo(() => navigator.userAgent.toLowerCase().includes('firefox'), []);\n\n const iframeWindow = contentRef?.contentWindow;\n\n const stylesReady = useParentStylesheets(iframeWindow);\n\n // Calls print method when table has loaded in the iframe.\n React.useEffect(() => {\n let intervalId: NodeJS.Timer;\n let timeoutId: NodeJS.Timer;\n\n // Invoke the print functionality on the window once the table has finished rendering and all print styles are\n // added.\n if (mountNode && stylesReady) {\n intervalId = setInterval(async () => {\n const tableWrapper = mountNode;\n const table = tableWrapper.querySelector('[role=\"table\"]') as HTMLElement;\n const hasTableRendered = !!table;\n\n if (hasTableRendered && intervalId) {\n clearInterval(intervalId);\n\n // Calling the onBeforePrint method here as a fallback because certain browsers, like Safari,\n // do not call the beforeprint event.\n // Bug - Even though onBeforePrint is called before printing, the execution doesn't finish before\n // the print dialog shows up, which results into having a visible loading toast.\n onBeforePrint?.();\n\n // By adding height to the tableWrapper, we make sure the content below absolutely positioned table\n // doesn't hide\n if (isFirefoxBrowser) {\n const tableHeight = `${table.offsetHeight}px`;\n tableWrapper.style.height = tableHeight;\n }\n\n contentRef?.contentWindow?.print();\n\n // Calling the onAfterPrint method here as a fallback to do the cleanup, as certain browsers,\n // like Safari, do not trigger the beforeprint or afterprint events when a confirmation dialog\n // asking if the user wants to print the document, is cancelled.\n\n // Added a setTimeout to prevent calling onAfterPrint immediately after the print function\n // to ensure that the print dialog doesn't close abruptly. Although this behavior is uncommon,\n // there are cases where the print function may not run synchronously, causing onAfterPrint to be\n // invoked right after it.\n timeoutId = setTimeout(() => {\n onAfterPrint?.();\n }, 0);\n }\n }, 1000);\n }\n\n return () => {\n clearInterval(intervalId);\n clearTimeout(timeoutId);\n };\n }, [mountNode, stylesReady]);\n\n React.useEffect(() => {\n if (!iframeWindow || !stylesReady) {\n return;\n }\n\n const iframeDocument = iframeWindow.document;\n // Only the content inside the main element will get printed along with the table.\n const parentDocumentContent =\n iframeWindow.parent.document.querySelector('main')?.innerHTML || iframeWindow.parent.document.body?.innerHTML || '';\n\n iframeDocument.body.innerHTML = parentDocumentContent;\n\n const tableElement = iframeDocument.querySelector('[role=\"table\"]');\n const tableColumnFreezingStyles = iframeDocument.querySelector('[data-taco=\"table3-column-freezing-styles\"]');\n const tableWrapper = iframeDocument.createElement('div');\n\n tableWrapper.setAttribute('data-role', 'table-wrapper');\n // Adding h-fit class makes sure that table is rendered with the whole content.\n tableWrapper.classList.add('h-fit');\n tableWrapper.classList.add('[&>[role=\"table\"]]:!h-fit');\n\n if (isFirefoxBrowser) {\n // Fix for firefox bug which adds page-long whitespace between page's top content and table\n tableWrapper.classList.add('[&>[role=\"table\"]]:!absolute');\n }\n\n // Safari print preview assigns no width to the table when w-screen class is used.\n // By assigning table a big static width and hiding the horizontal scrollbar, the table on chrome\n // and safari will always take full page width.\n tableWrapper.classList.add('w-[10000px]');\n\n if (tableElement) {\n tableElement.parentNode?.insertBefore(tableWrapper, tableElement);\n tableElement.remove();\n } else {\n iframeDocument.body.append(tableWrapper);\n }\n\n // Remove the already existing column freezing styles.\n if (tableColumnFreezingStyles) {\n tableColumnFreezingStyles.remove();\n }\n\n let currentNode = tableWrapper.parentNode as HTMLElement | null;\n\n while (currentNode !== null && currentNode !== iframeDocument.body) {\n // Add the 'h-fit' class to the 'table-wrapper' element's parent chain.\n // This ensures that the table is not cropped and fits within its container.\n currentNode?.classList.add('!h-fit');\n currentNode = currentNode.parentNode as HTMLElement | null;\n }\n\n setMountNode(tableWrapper);\n }, [iframeWindow, stylesReady]);\n\n const printTableProps: Table3Props<TType> = {\n ...tableProps,\n actionsForRow: undefined,\n // Not the best way to remove the active/current row styles, but a temporary solution for now\n defaultCurrentRowIndex: -1,\n defaultSettings: {\n ...tableProps?.defaultSettings,\n rowHeight: 'short',\n },\n enableColumnFreezing: false,\n enableRowHeight: true,\n enableRowSelection: false,\n enableEditing: false,\n enablePrinting: false,\n enableRowDrag: false,\n enableRowDrop: false,\n enableRowSelectionSingle: false,\n preset: undefined,\n };\n\n // -top-60 -left-60 styles make sure that iframe is added outside of the viewport\n return (\n <iframe\n className=\"fixed -left-60 -top-60 !h-0 !w-0\"\n frameBorder=\"0\"\n ref={setContentRef}\n scrolling=\"no\"\n // Temporary fix to support printing in firefox: Find another solution while upgrading React\n src=\"javascript:void(0);\">\n {mountNode && stylesReady ? ReactDOM.createPortal(<Table3 {...printTableProps} />, mountNode) : null}\n </iframe>\n );\n}\n"],"names":["PrintIFrame","onAfterPrint","onBeforePrint","tableProps","contentRef","setContentRef","React","useState","mountNode","setMountNode","isFirefoxBrowser","useMemo","navigator","userAgent","toLowerCase","includes","iframeWindow","contentWindow","stylesReady","useParentStylesheets","useEffect","intervalId","timeoutId","setInterval","tableWrapper","table","querySelector","hasTableRendered","clearInterval","tableHeight","offsetHeight","style","height","print","setTimeout","clearTimeout","iframeDocument","document","parentDocumentContent","parent","innerHTML","body","tableElement","tableColumnFreezingStyles","createElement","setAttribute","classList","add","parentNode","insertBefore","remove","append","currentNode","printTableProps","actionsForRow","undefined","defaultCurrentRowIndex","defaultSettings","rowHeight","enableColumnFreezing","enableRowHeight","enableRowSelection","enableEditing","enablePrinting","enableRowDrag","enableRowDrop","enableRowSelectionSingle","preset","className","frameBorder","ref","scrolling","src","ReactDOM","createPortal","Table3"],"mappings":"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"}
@@ -12,6 +12,11 @@ const PRINT_STYLES = `
12
12
  width: auto !important;
13
13
  }
14
14
 
15
+ #root {
16
+ /* chrome sometimes crops the bottom content of page and this padding will make sure that we see the whole content*/
17
+ padding-bottom: 20px;
18
+ }
19
+
15
20
  [role="table"] {
16
21
  border-width: 0 !important;
17
22
  overflow-y: hidden !important;
@@ -1 +1 @@
1
- {"version":3,"file":"useParentStylesheets.js","sources":["../../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.ts"],"sourcesContent":["import React from 'react';\n\nconst PRINT_STYLES = `\n@page {\n margin: 16px;\n}\n\n@media print {\n html, body, #root {\n overflow: auto !important;\n height: auto !important;\n width: auto !important;\n }\n\n [role=\"table\"] {\n border-width: 0 !important;\n overflow-y: hidden !important;\n }\n\n [role=\"table\"] [role=\"columnheader\"] {\n border-bottom-width: 1px !important;\n }\n\n /*\n * Summary row cells\n */\n [role=\"table\"] [role=\"rowgroup\"]:last-child [role=\"cell\"] {\n border-width: 0 !important;\n }\n\n [role=\"table\"] a {\n color: rgb(28 28 28);\n }\n\n [data-taco=\"alert\"],\n [data-taco=\"banner\"],\n [data-taco=\"hanger\"],\n [data-taco=\"toast\"],\n [data-taco=\"table3-toolbar\"],\n [data-taco=\"tooltip\"],\n /*\n * Tour components\n */\n [id^=\"react-joyride\"]\n {\n display: none !important;\n }\n}\n`;\n\nexport function useParentStylesheets(iframeWindow: Window | null | undefined) {\n const [ready, setReady] = React.useState(false);\n\n React.useEffect(() => {\n if (!iframeWindow) {\n return;\n }\n\n const parentDocument = iframeWindow.parent.document;\n const iframeDocument = iframeWindow.document;\n\n // add our custom print styles\n const customPrintStyles = iframeDocument.createElement('style');\n\n if (customPrintStyles) {\n customPrintStyles.innerHTML = PRINT_STYLES;\n iframeDocument.head.appendChild(customPrintStyles);\n }\n\n // Get style tags from the parent\n const parentStylesheets = Array.from(\n parentDocument.querySelectorAll('style:not([data-taco=\"table3-column-freezing-styles\"])')\n );\n // Get linked stylesheets from the parent\n const linkStylesheets = Array.from(parentDocument.querySelectorAll('[rel=\"stylesheet\"]'));\n\n // We want to add tailwind styles specifically but there is no guarenteed way to know which style tag has\n // tailwind styles, so we add all the styles present in the parent frame\n parentStylesheets.forEach(parentStyle => {\n const styleTag = iframeDocument.createElement('style');\n\n styleTag.innerHTML = parentStyle.innerHTML;\n iframeDocument.head.appendChild(styleTag);\n });\n\n // Add all link tags that are stylesheets, to the iframe head, so that we include the taco and client styles\n linkStylesheets.forEach(linkStylesheet => {\n const linkTag = iframeDocument.createElement('link');\n\n linkTag.setAttribute('rel', 'stylesheet');\n linkTag.setAttribute('href', linkStylesheet.getAttribute('href') ?? '');\n\n iframeDocument.head.appendChild(linkTag);\n });\n\n setReady(true);\n }, [iframeWindow]);\n\n return ready;\n}\n"],"names":["PRINT_STYLES","useParentStylesheets","iframeWindow","ready","setReady","React","useState","useEffect","parentDocument","parent","document","iframeDocument","customPrintStyles","createElement","innerHTML","head","appendChild","parentStylesheets","Array","from","querySelectorAll","linkStylesheets","forEach","parentStyle","styleTag","linkStylesheet","linkTag","setAttribute","getAttribute"],"mappings":";;AAEA,MAAMA,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CjB;SAEeC,oBAAoB,CAACC,YAAuC;EACxE,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAC,KAAK,CAAC;EAE/CD,cAAK,CAACE,SAAS,CAAC;IACZ,IAAI,CAACL,YAAY,EAAE;MACf;;IAGJ,MAAMM,cAAc,GAAGN,YAAY,CAACO,MAAM,CAACC,QAAQ;IACnD,MAAMC,cAAc,GAAGT,YAAY,CAACQ,QAAQ;;IAG5C,MAAME,iBAAiB,GAAGD,cAAc,CAACE,aAAa,CAAC,OAAO,CAAC;IAE/D,IAAID,iBAAiB,EAAE;MACnBA,iBAAiB,CAACE,SAAS,GAAGd,YAAY;MAC1CW,cAAc,CAACI,IAAI,CAACC,WAAW,CAACJ,iBAAiB,CAAC;;;IAItD,MAAMK,iBAAiB,GAAGC,KAAK,CAACC,IAAI,CAChCX,cAAc,CAACY,gBAAgB,CAAC,wDAAwD,CAAC,CAC5F;;IAED,MAAMC,eAAe,GAAGH,KAAK,CAACC,IAAI,CAACX,cAAc,CAACY,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;;;IAIzFH,iBAAiB,CAACK,OAAO,CAACC,WAAW;MACjC,MAAMC,QAAQ,GAAGb,cAAc,CAACE,aAAa,CAAC,OAAO,CAAC;MAEtDW,QAAQ,CAACV,SAAS,GAAGS,WAAW,CAACT,SAAS;MAC1CH,cAAc,CAACI,IAAI,CAACC,WAAW,CAACQ,QAAQ,CAAC;KAC5C,CAAC;;IAGFH,eAAe,CAACC,OAAO,CAACG,cAAc;;MAClC,MAAMC,OAAO,GAAGf,cAAc,CAACE,aAAa,CAAC,MAAM,CAAC;MAEpDa,OAAO,CAACC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC;MACzCD,OAAO,CAACC,YAAY,CAAC,MAAM,2BAAEF,cAAc,CAACG,YAAY,CAAC,MAAM,CAAC,yEAAI,EAAE,CAAC;MAEvEjB,cAAc,CAACI,IAAI,CAACC,WAAW,CAACU,OAAO,CAAC;KAC3C,CAAC;IAEFtB,QAAQ,CAAC,IAAI,CAAC;GACjB,EAAE,CAACF,YAAY,CAAC,CAAC;EAElB,OAAOC,KAAK;AAChB;;;;"}
1
+ {"version":3,"file":"useParentStylesheets.js","sources":["../../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.ts"],"sourcesContent":["import React from 'react';\n\nconst PRINT_STYLES = `\n@page {\n margin: 16px;\n}\n\n@media print {\n html, body, #root {\n overflow: auto !important;\n height: auto !important;\n width: auto !important;\n }\n\n #root {\n /* chrome sometimes crops the bottom content of page and this padding will make sure that we see the whole content*/\n padding-bottom: 20px;\n }\n\n [role=\"table\"] {\n border-width: 0 !important;\n overflow-y: hidden !important;\n }\n\n [role=\"table\"] [role=\"columnheader\"] {\n border-bottom-width: 1px !important;\n }\n\n /*\n * Summary row cells\n */\n [role=\"table\"] [role=\"rowgroup\"]:last-child [role=\"cell\"] {\n border-width: 0 !important;\n }\n\n [role=\"table\"] a {\n color: rgb(28 28 28);\n }\n\n [data-taco=\"alert\"],\n [data-taco=\"banner\"],\n [data-taco=\"hanger\"],\n [data-taco=\"toast\"],\n [data-taco=\"table3-toolbar\"],\n [data-taco=\"tooltip\"],\n /*\n * Tour components\n */\n [id^=\"react-joyride\"]\n {\n display: none !important;\n }\n}\n`;\n\nexport function useParentStylesheets(iframeWindow: Window | null | undefined) {\n const [ready, setReady] = React.useState(false);\n\n React.useEffect(() => {\n if (!iframeWindow) {\n return;\n }\n\n const parentDocument = iframeWindow.parent.document;\n const iframeDocument = iframeWindow.document;\n\n // add our custom print styles\n const customPrintStyles = iframeDocument.createElement('style');\n\n if (customPrintStyles) {\n customPrintStyles.innerHTML = PRINT_STYLES;\n iframeDocument.head.appendChild(customPrintStyles);\n }\n\n // Get style tags from the parent\n const parentStylesheets = Array.from(\n parentDocument.querySelectorAll('style:not([data-taco=\"table3-column-freezing-styles\"])')\n );\n // Get linked stylesheets from the parent\n const linkStylesheets = Array.from(parentDocument.querySelectorAll('[rel=\"stylesheet\"]'));\n\n // We want to add tailwind styles specifically but there is no guarenteed way to know which style tag has\n // tailwind styles, so we add all the styles present in the parent frame\n parentStylesheets.forEach(parentStyle => {\n const styleTag = iframeDocument.createElement('style');\n\n styleTag.innerHTML = parentStyle.innerHTML;\n iframeDocument.head.appendChild(styleTag);\n });\n\n // Add all link tags that are stylesheets, to the iframe head, so that we include the taco and client styles\n linkStylesheets.forEach(linkStylesheet => {\n const linkTag = iframeDocument.createElement('link');\n\n linkTag.setAttribute('rel', 'stylesheet');\n linkTag.setAttribute('href', linkStylesheet.getAttribute('href') ?? '');\n\n iframeDocument.head.appendChild(linkTag);\n });\n\n setReady(true);\n }, [iframeWindow]);\n\n return ready;\n}\n"],"names":["PRINT_STYLES","useParentStylesheets","iframeWindow","ready","setReady","React","useState","useEffect","parentDocument","parent","document","iframeDocument","customPrintStyles","createElement","innerHTML","head","appendChild","parentStylesheets","Array","from","querySelectorAll","linkStylesheets","forEach","parentStyle","styleTag","linkStylesheet","linkTag","setAttribute","getAttribute"],"mappings":";;AAEA,MAAMA,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDjB;SAEeC,oBAAoB,CAACC,YAAuC;EACxE,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAC,KAAK,CAAC;EAE/CD,cAAK,CAACE,SAAS,CAAC;IACZ,IAAI,CAACL,YAAY,EAAE;MACf;;IAGJ,MAAMM,cAAc,GAAGN,YAAY,CAACO,MAAM,CAACC,QAAQ;IACnD,MAAMC,cAAc,GAAGT,YAAY,CAACQ,QAAQ;;IAG5C,MAAME,iBAAiB,GAAGD,cAAc,CAACE,aAAa,CAAC,OAAO,CAAC;IAE/D,IAAID,iBAAiB,EAAE;MACnBA,iBAAiB,CAACE,SAAS,GAAGd,YAAY;MAC1CW,cAAc,CAACI,IAAI,CAACC,WAAW,CAACJ,iBAAiB,CAAC;;;IAItD,MAAMK,iBAAiB,GAAGC,KAAK,CAACC,IAAI,CAChCX,cAAc,CAACY,gBAAgB,CAAC,wDAAwD,CAAC,CAC5F;;IAED,MAAMC,eAAe,GAAGH,KAAK,CAACC,IAAI,CAACX,cAAc,CAACY,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;;;IAIzFH,iBAAiB,CAACK,OAAO,CAACC,WAAW;MACjC,MAAMC,QAAQ,GAAGb,cAAc,CAACE,aAAa,CAAC,OAAO,CAAC;MAEtDW,QAAQ,CAACV,SAAS,GAAGS,WAAW,CAACT,SAAS;MAC1CH,cAAc,CAACI,IAAI,CAACC,WAAW,CAACQ,QAAQ,CAAC;KAC5C,CAAC;;IAGFH,eAAe,CAACC,OAAO,CAACG,cAAc;;MAClC,MAAMC,OAAO,GAAGf,cAAc,CAACE,aAAa,CAAC,MAAM,CAAC;MAEpDa,OAAO,CAACC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC;MACzCD,OAAO,CAACC,YAAY,CAAC,MAAM,2BAAEF,cAAc,CAACG,YAAY,CAAC,MAAM,CAAC,yEAAI,EAAE,CAAC;MAEvEjB,cAAc,CAACI,IAAI,CAACC,WAAW,CAACU,OAAO,CAAC;KAC3C,CAAC;IAEFtB,QAAQ,CAAC,IAAI,CAAC;GACjB,EAAE,CAACF,YAAY,CAAC,CAAC;EAElB,OAAOC,KAAK;AAChB;;;;"}
@@ -119,12 +119,12 @@ function resetHighlightedColumnIndexes(enabled, value, table) {
119
119
  table.getRowModel().rows.forEach((row, rowIndex) => {
120
120
  columns.forEach((column, columnIndex) => {
121
121
  try {
122
- var _column$columnDef$met, _format, _format2;
123
- if ((_column$columnDef$met = column.columnDef.meta) !== null && _column$columnDef$met !== void 0 && _column$columnDef$met.enableSearch && row.original && globalFilterFn(
122
+ var _format, _column$columnDef$met, _format2;
123
+ if (row.original && globalFilterFn(
124
124
  // if it's a date, format it first
125
125
  isDate(row.original[column.id]) ? (_format = format(row.original[column.id])) !== null && _format !== void 0 ? _format : '' :
126
126
  // if its marked as a date but isn't a date, try to format it
127
- column.columnDef.meta.dataType === 'datetime' ? (_format2 = format(parseFromISOString(row.original[column.id]))) !== null && _format2 !== void 0 ? _format2 : '' :
127
+ ((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType) === 'datetime' ? (_format2 = format(parseFromISOString(row.original[column.id]))) !== null && _format2 !== void 0 ? _format2 : '' :
128
128
  // otherwise just string compare
129
129
  String(row.original[column.id]), value)) {
130
130
  indexes.push([rowIndex, columnIndex]);