@orangelogic/design-system 2.57.0 → 2.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/library/chunks/{button.2-Io1Wm4.js → button.kTTrlOjj.js} +2 -2
  2. package/library/chunks/{color-swatch-group.VXPK-2tU.js → color-swatch-group.ClKQ2WzZ.js} +4 -4
  3. package/library/chunks/{color-swatch.8OhqVqb6.js → color-swatch.BdV7Nsvx.js} +2 -2
  4. package/library/chunks/{confirm-popover.DGvyB12c.js → confirm-popover.CMeOJWvb.js} +3 -3
  5. package/library/chunks/{dialog.CIeu0rVD.js → dialog.B_63yVcD.js} +2 -2
  6. package/library/chunks/{dom.CaZCTJCL.js → dom.Dc-BF08t.js} +28 -22
  7. package/library/chunks/{dot-pagination.CyCA3kSP.js → dot-pagination.C8zQgnjD.js} +1 -1
  8. package/library/chunks/{file-on-demand.aux9gsvH.js → file-on-demand.CAxlBbwj.js} +10 -10
  9. package/library/chunks/{folder-select.B7u40ijN.js → folder-select.DMyWzPjA.js} +5 -5
  10. package/library/chunks/{form.DycFDdkp.js → form.D1R9s3Mf.js} +1 -1
  11. package/library/chunks/{format-time.C56HetWv.js → format-time.CxG-siAa.js} +1 -1
  12. package/library/chunks/{header.RvymymCe.js → header.NqYF4Nlq.js} +1 -1
  13. package/library/chunks/{i18n.dCiJrmqj.js → i18n.DwnDne7p.js} +10 -8
  14. package/library/chunks/{iframe.Cwqniwf2.js → iframe.qomerN2u.js} +1 -1
  15. package/library/chunks/{image.gpleN29o.js → image.2h_mxSth.js} +3 -3
  16. package/library/chunks/{list-editor.BToq5cqp.js → list-editor.Cofa7Vyh.js} +7 -7
  17. package/library/chunks/{option.CJ1p2V0m.js → option.B4tI5rHw.js} +1 -1
  18. package/library/chunks/pagination.Bp5dTjrN.js +339 -0
  19. package/library/chunks/{popup.BE5MfEQJ.js → popup.CQSGj4zE.js} +1 -1
  20. package/library/chunks/{select.xBh4yerC.js → select.D_Ee1gDW.js} +5 -6
  21. package/library/chunks/{string.DPf4puTr.js → string.BF2AikHa.js} +13 -9
  22. package/library/chunks/{tab-group.CjvHb3OJ.js → tab-group.CT6rt4_n.js} +3 -3
  23. package/library/chunks/{table.CrX_NJiY.js → table.keGRLyqZ.js} +3165 -2612
  24. package/library/chunks/{timecode.XXmVg6tU.js → timecode.DE8W5tFV.js} +1 -1
  25. package/library/chunks/{tree.CDaFhGjU.js → tree.CBc6xKk4.js} +1 -1
  26. package/library/components/alert.js +1 -1
  27. package/library/components/asset-link-format.js +4 -4
  28. package/library/components/atoms.js +15 -15
  29. package/library/components/border-input-group.js +1 -1
  30. package/library/components/breadcrumb.js +1 -1
  31. package/library/components/button.js +3 -3
  32. package/library/components/checkbox.js +1 -1
  33. package/library/components/color-picker.js +4 -4
  34. package/library/components/color-swatch-group.js +5 -5
  35. package/library/components/color-swatch.js +3 -3
  36. package/library/components/confirm-popover.js +4 -4
  37. package/library/components/copy-button.js +1 -1
  38. package/library/components/corner-position-input-group.js +3 -3
  39. package/library/components/details.js +1 -1
  40. package/library/components/dialog.js +3 -3
  41. package/library/components/dot-pagination.js +2 -2
  42. package/library/components/drawer.js +1 -1
  43. package/library/components/dropdown.js +2 -2
  44. package/library/components/dynamic-select.js +5 -5
  45. package/library/components/element-clamp.js +2 -2
  46. package/library/components/file-on-demand.js +11 -11
  47. package/library/components/folder-select.js +4 -4
  48. package/library/components/format-bytes.js +1 -1
  49. package/library/components/format-date.js +1 -1
  50. package/library/components/format-number.js +1 -1
  51. package/library/components/format-time.js +2 -2
  52. package/library/components/header.js +2 -2
  53. package/library/components/icon-button.js +1 -1
  54. package/library/components/iframe.js +2 -2
  55. package/library/components/image-comparer.js +1 -1
  56. package/library/components/image.js +3 -3
  57. package/library/components/input.js +2 -2
  58. package/library/components/line-clamp.js +2 -2
  59. package/library/components/list-editor.js +6 -6
  60. package/library/components/masonry.js +1 -1
  61. package/library/components/menu-item.js +2 -2
  62. package/library/components/menu.js +1 -1
  63. package/library/components/molecules.js +4 -4
  64. package/library/components/option.js +2 -2
  65. package/library/components/organisms.js +2 -2
  66. package/library/components/pagination.js +16 -336
  67. package/library/components/popup.js +2 -2
  68. package/library/components/position-picker.js +1 -1
  69. package/library/components/progress-bar.js +1 -1
  70. package/library/components/progress-ring.js +1 -1
  71. package/library/components/radio-group.js +1 -1
  72. package/library/components/range.js +3 -3
  73. package/library/components/rating.js +1 -1
  74. package/library/components/relative-time.js +1 -1
  75. package/library/components/select.js +5 -5
  76. package/library/components/share-option-list.js +2 -2
  77. package/library/components/size-input-group.js +2 -2
  78. package/library/components/spinner.js +1 -1
  79. package/library/components/split-panel.js +1 -1
  80. package/library/components/switch.js +1 -1
  81. package/library/components/tab-group.js +4 -4
  82. package/library/components/tab.js +1 -1
  83. package/library/components/table.js +65 -57
  84. package/library/components/tag.js +1 -1
  85. package/library/components/textarea.js +51 -51
  86. package/library/components/timecode.js +2 -2
  87. package/library/components/tooltip.js +2 -2
  88. package/library/components/tree-item.js +2 -2
  89. package/library/components/tree.js +2 -2
  90. package/library/components/typeface.js +1 -1
  91. package/library/components/types.js +30 -30
  92. package/library/components/video.js +2 -2
  93. package/library/css/ol-base.css +4 -4
  94. package/library/package.json +1 -1
  95. package/library/packages/atoms/src/components/space/space.d.ts +1 -2
  96. package/library/packages/atoms/src/components/table/components/table-row-actions/table-row-actions-dropdown.d.ts +2 -1
  97. package/library/packages/atoms/src/components/table/components/table-row-actions/table-row-actions.d.ts +4 -4
  98. package/library/packages/atoms/src/components/table/components/table-toolbar/table-dropdown-filter.d.ts +36 -0
  99. package/library/packages/atoms/src/components/table/components/table-toolbar/table-toolbar.d.ts +10 -1
  100. package/library/packages/atoms/src/components/table/filter-controller.d.ts +84 -0
  101. package/library/packages/atoms/src/components/table/modules/HoverMenu.d.ts +9 -1
  102. package/library/packages/atoms/src/components/table/table.d.ts +41 -4
  103. package/library/packages/atoms/src/components/table/tabulator-tables/core/ColumnManager.d.ts +1 -0
  104. package/library/packages/atoms/src/components/table/tabulator-tables/core/RowManager.d.ts +3 -0
  105. package/library/packages/atoms/src/components/table/tabulator-tables/core/TabulatorFull.d.ts +1 -0
  106. package/library/packages/atoms/src/components/table/tabulator-tables/core/cell/Cell.d.ts +1 -0
  107. package/library/packages/atoms/src/components/table/tabulator-tables/core/cell/CellComponent.d.ts +1 -1
  108. package/library/packages/atoms/src/components/table/tabulator-tables/index.d.ts +1 -0
  109. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Edit/List.d.ts +49 -58
  110. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Edit/defaults/editors/list.d.ts +3 -2
  111. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Filter/Filter.d.ts +15 -8
  112. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Format/Format.d.ts +1 -3
  113. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Format/defaults/formatters/composite.d.ts +5 -0
  114. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Format/defaults/formatters/icon.d.ts +13 -0
  115. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Format/defaults/formatters/image.d.ts +4 -1
  116. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Format/defaults/formatters/number.d.ts +13 -0
  117. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Format/defaults/formatters/plaintext.d.ts +6 -1
  118. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Format/defaults/formatters/textarea.d.ts +4 -1
  119. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Format/defaults/formatters/time.d.ts +9 -0
  120. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Format/defaults/formatters/traffic.d.ts +3 -7
  121. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Format/defaults/formatters/typography.d.ts +13 -0
  122. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Format/defaults/formatters.d.ts +10 -0
  123. package/library/packages/events/src/cx-table-dropdown-filter-change.d.ts +13 -0
  124. package/library/packages/events/src/cx-table-row-action-click.d.ts +2 -1
  125. package/library/packages/events/src/events.d.ts +1 -0
  126. package/library/packages/types/src/table.d.ts +195 -22
  127. package/library/packages/utils/src/custom-element/i18n.d.ts +2 -0
  128. package/library/packages/utils/src/dom/dom.d.ts +2 -1
  129. package/library/packages/utils/src/string/string.d.ts +1 -0
  130. package/library/react-web-component.d.ts +18 -6
  131. package/package.json +1 -1
  132. package/library/chunks/pagination.y5oqoPVr.js +0 -4
@@ -1,4 +1,4 @@
1
- import { Filter as FilterType, FilterFunction, FilterParams, FilterType as FilterTypeName, IColumn, IFilter } from '../../../../../../../types/src/table';
1
+ import { Filter as FilterType, FilterParams, FilterType as FilterTypeName, IColumn, IFilter } from '../../../../../../../types/src/table';
2
2
  import { default as Column } from '../../core/column/Column';
3
3
  import { default as Module } from '../../core/Module';
4
4
  import { default as Row } from '../../core/row/Row';
@@ -35,17 +35,17 @@ export default class Filter extends Module implements IFilter {
35
35
  */
36
36
  remoteFilterParams(data: any, config: any, silent: any, params: any): any;
37
37
  generatePlaceholder(_text: string): string | undefined;
38
- userSetFilter(field: string | FilterType[], type?: FilterTypeName, value?: any, params?: FilterParams): void;
38
+ userSetFilter(filter: FilterType | FilterType[]): void;
39
39
  userRefreshFilter(): void;
40
- userAddFilter(field: string | FilterType[], type?: FilterTypeName, value?: any, params?: FilterParams): void;
40
+ userAddFilter(filter: FilterType | FilterType[]): void;
41
41
  userSetHeaderFilterFocus(field: string): void;
42
42
  userGetHeaderFilterValue(field: string): any;
43
43
  userSetHeaderFilterValue(field: string, value: any): void;
44
44
  userRemoveFilter(field: string | FilterType[], type?: FilterTypeName, value?: any): void;
45
45
  userClearFilter(all?: boolean): void;
46
46
  userClearHeaderFilter(): void;
47
- searchRows(field: string | FilterType[], type?: FilterTypeName, value?: any): any[];
48
- searchData(field: string | FilterType[], type?: FilterTypeName, value?: any): any[];
47
+ searchRows(filter: FilterType | FilterType[]): any[];
48
+ searchData(filter: FilterType | FilterType[]): any[];
49
49
  initializeColumnHeaderFilter(column: Column): void;
50
50
  initializeColumn(column: Column, _initialValue?: any): void;
51
51
  generateHeaderFilterElement(column: IColumn, initialValue?: any, reinitialize?: boolean): void;
@@ -58,6 +58,13 @@ export default class Filter extends Module implements IFilter {
58
58
  refreshFilter(): void;
59
59
  trackChanges(): void;
60
60
  hasChanged(): boolean;
61
+ /**
62
+ * Normally, filter operates on a single field. To create a filter that operates on multiple or all fields,
63
+ * first pass the field names (or none to match all) to this method, then use this method as the filter's field.
64
+ * @param fields - The fields to match against. If not provided, all fields will be matched.
65
+ * @returns A function that can be used to match against the data.
66
+ */
67
+ createFilterFieldFunction(fields?: string[]): (data: any, filter: FilterType) => boolean;
61
68
  /**
62
69
  * This function is used to set a new filter on the table data.
63
70
  * By default, there are 12 built-in filter operations (see FilterTypeName enum).
@@ -68,8 +75,8 @@ export default class Filter extends Module implements IFilter {
68
75
  * @param value - The value to set the filter for.
69
76
  * @param params - The parameters to configure the filter.
70
77
  */
71
- setFilter(field: string | string[] | FilterType[] | FilterFunction, type?: FilterTypeName, value?: any, params?: FilterParams): void;
72
- addFilter(field: string | FilterType[], type?: FilterTypeName, value?: any, params?: FilterParams): void;
78
+ setFilter(filterParams: FilterType | FilterType[]): void;
79
+ addFilter(filter: FilterType | FilterType[]): void;
73
80
  findFilter(filter: FilterType | FilterType[]): FilterItem | false;
74
81
  findSubFilters(filters: FilterType[]): FilterItem[] | false;
75
82
  getFilters(all?: boolean, ajax?: boolean): FilterType[];
@@ -78,7 +85,7 @@ export default class Filter extends Module implements IFilter {
78
85
  removeFilter(field: string | FilterType[], type?: FilterTypeName, value?: any): void;
79
86
  clearFilter(all?: boolean): void;
80
87
  clearHeaderFilter(): void;
81
- search(searchType: 'rows' | 'data', field: string | FilterType[], type?: FilterTypeName, value?: any): any[];
88
+ search(searchType: 'rows' | 'data', filters: FilterType | FilterType[]): any[];
82
89
  filter(rowList: Row[], _filters?: any): Row[];
83
90
  filterRow(row: Row, _filters?: any): boolean;
84
91
  filterRecurse(filter: FilterItem | FilterItem[], data: any): boolean;
@@ -26,7 +26,7 @@ export default class Format extends Module {
26
26
  */
27
27
  initializeColumn(column: Column): void;
28
28
  lookupTypeFormatter(column: Column, type: string): FormatterConfig;
29
- lookupFormatter(formatter: string | ((cell: any, params: any, onRendered: (callback: () => void) => void) => any) | undefined): (cell: any, params: any, onRendered: (callback: () => void) => void) => any;
29
+ static lookupFormatter(formatter: string | ((cell: any, params: any, onRendered: (callback: () => void) => void) => any) | undefined): (cell: any, params: any, onRendered: (callback: () => void) => void) => any;
30
30
  cellRendered(cell: Cell): void;
31
31
  /**
32
32
  * Format the header of a column
@@ -38,7 +38,5 @@ export default class Format extends Module {
38
38
  formatHeader(column: Column, title: string, el: HTMLElement): any;
39
39
  formatValue(cell: Cell): any;
40
40
  formatExportValue(cell: Cell, type: 'print' | 'clipboard' | 'htmlOutput'): any;
41
- sanitizeHTML(value: any): string;
42
- emptyToSpace(value: any): string;
43
41
  }
44
42
  export {};
@@ -0,0 +1,5 @@
1
+ import { CompositeFormatterParams } from '../../../../../../../../../types/src/table';
2
+ import { default as CellComponent } from '../../../../core/cell/CellComponent';
3
+ import { default as Format } from '../../Format';
4
+
5
+ export default function composite(this: Format, cell: CellComponent, formatterParams: CompositeFormatterParams, onRendered?: (callback: () => void) => void): HTMLElement | undefined;
@@ -0,0 +1,13 @@
1
+ import { IconFormatterParams } from '../../../../../../../../../types/src/table';
2
+ import { default as CellComponent } from '../../../../core/cell/CellComponent';
3
+ import { default as Format } from '../../Format';
4
+
5
+ /**
6
+ * Formats the value of a cell as an icon.
7
+ * @param this - The Format instance.
8
+ * @param cell - The Cell instance.
9
+ * @param {IconFormatterParams} formatterParams - The formatter parameters.
10
+ * @param _onRendered - The onRendered callback.
11
+ * @returns The icon element, or undefined if no icon name could be resolved.
12
+ */
13
+ export default function icon(this: Format, cell: CellComponent, formatterParams: IconFormatterParams): HTMLElement | undefined;
@@ -1 +1,4 @@
1
- export default function (this: any, cell: any, formatterParams: any, _onRendered: (callback: () => void) => void): HTMLDivElement | null;
1
+ import { default as CellComponent } from '../../../../core/cell/CellComponent';
2
+ import { default as Format } from '../../Format';
3
+
4
+ export default function image(this: Format, cell: CellComponent, formatterParams: any): HTMLDivElement | null;
@@ -0,0 +1,13 @@
1
+ import { NumberFormatterParams } from '../../../../../../../../../types/src/table';
2
+ import { default as CellComponent } from '../../../../core/cell/CellComponent';
3
+ import { default as Format } from '../../Format';
4
+
5
+ /**
6
+ * Formats the value of a cell as a number using cx-format-number.
7
+ * @param this - The Format instance.
8
+ * @param cell - The Cell instance.
9
+ * @param {NumberFormatterParams} formatterParams - The formatter parameters
10
+ * @param _onRendered - The onRendered callback.
11
+ * @returns The format-number element, or undefined if the cell value cannot be converted to a number.
12
+ */
13
+ export default function number(this: Format, cell: CellComponent, formatterParams: NumberFormatterParams): HTMLElement | undefined;
@@ -1 +1,6 @@
1
- export default function (this: any, cell: any, _formatterParams: any, _onRendered: (callback: () => void) => void): string;
1
+ import { default as CxLineClamp } from '../../../../../../line-clamp/line-clamp.ts';
2
+ import { PlaintextFormatterParams } from '../../../../../../../../../types/src/table';
3
+ import { default as CellComponent } from '../../../../core/cell/CellComponent';
4
+ import { default as Format } from '../../Format';
5
+
6
+ export default function plainText(this: Format, cell: CellComponent, formatterParams?: PlaintextFormatterParams): CxLineClamp;
@@ -1 +1,4 @@
1
- export default function textarea(this: any, cell: any): string;
1
+ import { default as CellComponent } from '../../../../core/cell/CellComponent';
2
+ import { default as Format } from '../../Format';
3
+
4
+ export default function textarea(this: Format, cell: CellComponent): string;
@@ -0,0 +1,9 @@
1
+ import { TimeFormatterParams } from '../../../../../../../../../types/src/table';
2
+ import { default as CellComponent } from '../../../../core/cell/CellComponent';
3
+ import { default as Format } from '../../Format';
4
+
5
+ /**
6
+ * Formats the value of a cell as a duration using cx-format-time.
7
+ * The cell value is the single source of truth for the duration.
8
+ */
9
+ export default function time(this: Format, cell: CellComponent, formatterParams: TimeFormatterParams): HTMLElement;
@@ -1,9 +1,5 @@
1
- import { TextFormatParams } from '../../../../../../../../../types/src/table';
2
- import { default as Cell } from '../../../../core/cell/Cell';
1
+ import { TextFormatParams, TrafficFormatterParams } from '../../../../../../../../../types/src/table';
2
+ import { default as CellComponent } from '../../../../core/cell/CellComponent';
3
3
  import { default as Format } from '../../Format';
4
4
 
5
- export default function traffic(this: Format, cell: Cell, formatterParams: {
6
- colorMap?: Record<any, string>;
7
- getColor?: (value: any) => string;
8
- textStyle?: Record<string, string>;
9
- }, _onRendered?: (callback: () => void) => void, textFormatParams?: TextFormatParams): HTMLElement | undefined;
5
+ export default function traffic(this: Format, cell: CellComponent, formatterParams: TrafficFormatterParams, _onRendered?: (callback: () => void) => void, textFormatParams?: TextFormatParams): HTMLElement | undefined;
@@ -0,0 +1,13 @@
1
+ import { TypographyFormatterParams } from '../../../../../../../../../types/src/table';
2
+ import { default as CellComponent } from '../../../../core/cell/CellComponent';
3
+ import { default as Format } from '../../Format';
4
+
5
+ /**
6
+ * Formats the value of a cell as typography.
7
+ * @param this - The Format instance.
8
+ * @param cell - The Cell instance.
9
+ * @param {TypographyFormatterParams} formatterParams - The formatter parameters
10
+ * @param _onRendered - The onRendered callback.
11
+ * @returns The typography element, or undefined if the cell value is empty.
12
+ */
13
+ export default function typography(this: Format, cell: CellComponent, formatterParams: TypographyFormatterParams): HTMLElement | undefined;
@@ -3,15 +3,18 @@ import { default as array } from './formatters/array';
3
3
  import { default as buttonCross } from './formatters/buttonCross';
4
4
  import { default as buttonTick } from './formatters/buttonTick';
5
5
  import { default as color } from './formatters/color';
6
+ import { default as composite } from './formatters/composite';
6
7
  import { default as datetime } from './formatters/datetime';
7
8
  import { default as datetimediff } from './formatters/datetimediff';
8
9
  import { default as handle } from './formatters/handle';
9
10
  import { default as html } from './formatters/html';
11
+ import { default as icon } from './formatters/icon';
10
12
  import { default as image } from './formatters/image';
11
13
  import { default as json } from './formatters/json';
12
14
  import { default as link } from './formatters/link';
13
15
  import { default as lookup } from './formatters/lookup';
14
16
  import { default as money } from './formatters/money';
17
+ import { default as number } from './formatters/number';
15
18
  import { default as plaintext } from './formatters/plaintext';
16
19
  import { default as progress } from './formatters/progress';
17
20
  import { default as rownum } from './formatters/rownum';
@@ -19,8 +22,10 @@ import { default as star } from './formatters/star';
19
22
  import { default as tag } from './formatters/tag';
20
23
  import { default as textarea } from './formatters/textarea';
21
24
  import { default as tickCross } from './formatters/tickCross';
25
+ import { default as time } from './formatters/time';
22
26
  import { default as toggle } from './formatters/toggle';
23
27
  import { default as traffic } from './formatters/traffic';
28
+ import { default as typography } from './formatters/typography';
24
29
 
25
30
  declare const _default: {
26
31
  adaptable: typeof adaptable;
@@ -28,15 +33,18 @@ declare const _default: {
28
33
  buttonCross: typeof buttonCross;
29
34
  buttonTick: typeof buttonTick;
30
35
  color: typeof color;
36
+ composite: typeof composite;
31
37
  datetime: typeof datetime;
32
38
  datetimediff: typeof datetimediff;
33
39
  handle: typeof handle;
34
40
  html: typeof html;
41
+ icon: typeof icon;
35
42
  image: typeof image;
36
43
  json: typeof json;
37
44
  link: typeof link;
38
45
  lookup: typeof lookup;
39
46
  money: typeof money;
47
+ number: typeof number;
40
48
  plaintext: typeof plaintext;
41
49
  progress: typeof progress;
42
50
  rownum: typeof rownum;
@@ -44,7 +52,9 @@ declare const _default: {
44
52
  tag: typeof tag;
45
53
  textarea: typeof textarea;
46
54
  tickCross: typeof tickCross;
55
+ time: typeof time;
47
56
  toggle: typeof toggle;
48
57
  traffic: typeof traffic;
58
+ typography: typeof typography;
49
59
  };
50
60
  export default _default;
@@ -0,0 +1,13 @@
1
+ import { TableDropdownFilterDataOption } from '../../types/src/table';
2
+
3
+ export type CxTableDropdownFilterChangeEvent = CustomEvent<{
4
+ data: {
5
+ id: string;
6
+ option: TableDropdownFilterDataOption;
7
+ };
8
+ }>;
9
+ declare global {
10
+ interface GlobalEventHandlersEventMap {
11
+ 'cx-table-dropdown-filter-change': CxTableDropdownFilterChangeEvent;
12
+ }
13
+ }
@@ -1,6 +1,7 @@
1
- import { IRowComponent } from '../../types/src/table';
1
+ import { ICellComponent, IRowComponent } from '../../types/src/table';
2
2
 
3
3
  export type CxTableRowActionClickEvent = CustomEvent<{
4
+ cell?: ICellComponent;
4
5
  name: string;
5
6
  row: IRowComponent | {
6
7
  [key: string]: unknown;
@@ -51,6 +51,7 @@ export * from './cx-download-format-picker-select';
51
51
  export * from './cx-download-format-request-status';
52
52
  export * from './cx-drag-end';
53
53
  export * from './cx-drag-start';
54
+ export * from './cx-table-dropdown-filter-change';
54
55
  export * from './cx-enter';
55
56
  export * from './cx-error';
56
57
  export * from './cx-expand';
@@ -1,5 +1,8 @@
1
1
  import { ButtonVariant } from './button';
2
+ import { FormatNumberCurrencyDisplay, FormatNumberType } from './format-number';
2
3
  import { PaginationCounter } from './pagination';
4
+ import { SpacingProp } from './space';
5
+ import { TypographyVariant } from './typography';
3
6
 
4
7
  export type CxTableEventName = `cx-table.${string}`;
5
8
  export type DropdownSection = Record<string, string>;
@@ -151,6 +154,7 @@ export interface ICell extends ICoreFeature {
151
154
  component: ICellComponent | null;
152
155
  loaded: boolean;
153
156
  calcs?: Record<string, any>;
157
+ hoverMenuElement: HTMLElement | null;
154
158
  build(): void;
155
159
  generateElement(): void;
156
160
  _configureCell(): void;
@@ -841,6 +845,7 @@ export interface IColumnManager extends ICoreFeature {
841
845
  addColumn(definition: ColumnDefinition, before?: boolean, nextToColumn?: IColumn | false): Promise<IColumn>;
842
846
  deregisterColumn(column: IColumn): void;
843
847
  rerenderColumns(update?: boolean | null, blockRedraw?: boolean): void;
848
+ refreshVisibilityLayout(): void;
844
849
  blockRedraw(): void;
845
850
  restoreRedraw(): void;
846
851
  redraw(force?: boolean): void;
@@ -893,6 +898,7 @@ export interface ITabulatorFull extends ITabulator {
893
898
  getSheetData: (key?: SheetLookup) => unknown[][];
894
899
  getPage: () => IPage;
895
900
  setFilter: IFilter['setFilter'];
901
+ createFilterFieldFunction: IFilter['createFilterFieldFunction'];
896
902
  clearFilter: IFilter['clearFilter'];
897
903
  setSort: (sortList: string | Sorter[], dir?: SortDirection) => void;
898
904
  }
@@ -922,7 +928,8 @@ export declare enum HoverMenuPlacement {
922
928
  export type HoverMenuOptions = {
923
929
  data: RowAction[];
924
930
  options: {
925
- placement: HoverMenuPlacement;
931
+ placement?: HoverMenuPlacement;
932
+ style?: Record<string, string>;
926
933
  };
927
934
  };
928
935
  export interface ISheetComponent {
@@ -1269,17 +1276,18 @@ export interface OptionsRowGrouping {
1269
1276
  groupClosedShowCalcs?: boolean;
1270
1277
  groupUpdateOnCellEdit?: boolean;
1271
1278
  }
1272
- export interface Filter {
1273
- field: string | FilterFunction;
1274
- type: FilterType;
1279
+ export type FilterPredicate = (filterVal: any, rowVal: any, rowData: any, filterParams: FilterParams) => boolean;
1280
+ export type Filter = {
1281
+ field: string | FilterFieldFunction;
1282
+ type: FilterType | FilterPredicate;
1275
1283
  value: any;
1276
1284
  params?: FilterParams;
1277
- }
1285
+ };
1278
1286
  export interface FilterParams {
1279
1287
  separator?: string;
1280
1288
  matchAll?: boolean;
1281
1289
  }
1282
- export type FilterFunction = (data: any, filter: Filter) => boolean;
1290
+ export type FilterFieldFunction = (data: any, filter: Filter) => boolean;
1283
1291
  export interface OptionsFiltering {
1284
1292
  /** Array of filters to be applied on load. */
1285
1293
  initialFilter?: Filter[];
@@ -1661,6 +1669,8 @@ export interface OptionsGeneral {
1661
1669
  renderVerticalBuffer?: boolean | number;
1662
1670
  /** placeholder element to display on empty table. */
1663
1671
  placeholder?: string | HTMLElement | ((this: ITabulator | ITabulatorFull) => string);
1672
+ /** placeholder text to display when all columns are hidden. */
1673
+ noColumnPlaceholderText?: string | HTMLElement | ((this: ITabulator | ITabulatorFull) => string);
1664
1674
  placeholderHeaderFilter?: string | HTMLElement | ((this: ITabulator | ITabulatorFull) => string);
1665
1675
  /** Footer element to display for the table. */
1666
1676
  footerElement?: string | HTMLElement;
@@ -1911,7 +1921,13 @@ export interface ColumnLayout {
1911
1921
  width?: number | string;
1912
1922
  }
1913
1923
  export type ColumnResizable = true | false | 'header' | 'cell';
1914
- export interface ColumnDefinition extends ColumnLayout, CellCallbacks {
1924
+ export interface FormatterDefinition {
1925
+ /** Set how you would like the data to be formatted. */
1926
+ formatter?: Formatter;
1927
+ /** You can pass an optional additional parameter with the formatter, formatterParams that should contain an object with additional information for configuring the formatter. */
1928
+ formatterParams?: FormatterParams;
1929
+ }
1930
+ export interface ColumnDefinition extends ColumnLayout, CellCallbacks, FormatterDefinition {
1915
1931
  /** If you want to set the horizontal alignment on a column by column basis, */
1916
1932
  hozAlign?: ColumnDefinitionAlign;
1917
1933
  headerHozAlign?: ColumnDefinitionAlign;
@@ -1952,10 +1968,6 @@ export interface ColumnDefinition extends ColumnLayout, CellCallbacks {
1952
1968
  sorter?: 'string' | 'number' | 'alphanum' | 'boolean' | 'exists' | 'date' | 'time' | 'datetime' | 'array' | ((a: any, b: any, aRow: IRowComponent, bRow: IRowComponent, column: IColumnComponent, dir: SortDirection, sorterParams: Record<string, unknown>) => number);
1953
1969
  /** If you want to dynamically generate the sorterParams at the time the sort is called you can pass a function into the property that should return the params object. */
1954
1970
  sorterParams?: ColumnDefinitionSorterParams | ColumnSorterParamLookupFunction;
1955
- /** Set how you would like the data to be formatted. */
1956
- formatter?: Formatter;
1957
- /** You can pass an optional additional parameter with the formatter, formatterParams that should contain an object with additional information for configuring the formatter. */
1958
- formatterParams?: FormatterParams;
1959
1971
  /** alter the row height to fit the contents of the cell instead of hiding overflow */
1960
1972
  variableHeight?: boolean;
1961
1973
  /** There are some circumstances where you may want to block edit-ability of a cell for one reason or another. To meet this need you can use the editable option. This lets you set a callback that is executed before the editor is built, if this callback returns true the editor is added, if it returns false the edit is aborted and the cell remains a non editable cell. The function is passed one parameter, the CellComponent of the cell about to be edited. You can also pass a boolean value instead of a function to this property. */
@@ -2152,6 +2164,11 @@ export interface ColumnDefinition extends ColumnLayout, CellCallbacks {
2152
2164
  * The function to determine if the value is empty.
2153
2165
  */
2154
2166
  editorEmptyValueFunc?: (value: unknown) => boolean;
2167
+ /**
2168
+ * Hover menu configuration for this column. When specified, a hover menu will be displayed
2169
+ * inside each cell of this column when the user hovers over the cell.
2170
+ */
2171
+ hoverMenu?: HoverMenuOptions;
2155
2172
  }
2156
2173
  export interface CellCallbacks {
2157
2174
  /** callback for when user clicks on a cell in this column. */
@@ -2202,8 +2219,8 @@ export type ColumnCalc = 'avg' | 'max' | 'min' | 'sum' | 'concat' | 'count' | 'u
2202
2219
  export type ColumnCalcParams = {
2203
2220
  precision: number;
2204
2221
  } | ((values: any, data: any) => any);
2205
- export type Formatter = 'plaintext' | 'textarea' | 'html' | 'money' | 'image' | 'datetime' | 'datetimediff' | 'link' | 'tickCross' | 'color' | 'star' | 'traffic' | 'progress' | 'lookup' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'toggle' | ((cell: ICellComponent, formatterParams: Record<string, unknown>, onRendered: EmptyCallback) => string | HTMLElement);
2206
- export type FormatterParams = MoneyParams | ImageParams | LinkParams | DateTimeParams | DateTimeDifferenceParams | TickCrossParams | TrafficParams | ProgressBarParams | StarRatingParams | RowSelectionParams | JSONRecord | ToggleSwitchParams | ((cell: ICellComponent) => Record<string, unknown>);
2222
+ export type Formatter = 'plaintext' | 'textarea' | 'html' | 'money' | 'image' | 'datetime' | 'datetimediff' | 'link' | 'tickCross' | 'color' | 'star' | 'traffic' | 'progress' | 'lookup' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'toggle' | 'time' | ((cell: ICellComponent, formatterParams: Record<string, unknown>, onRendered: EmptyCallback) => string | HTMLElement);
2223
+ export type FormatterParams = MoneyParams | ImageParams | LinkParams | DateTimeParams | DateTimeDifferenceParams | TickCrossParams | TrafficParams | ProgressBarParams | StarRatingParams | RowSelectionParams | JSONRecord | ToggleSwitchParams | TimeFormatterParams | ((cell: ICellComponent) => Record<string, unknown>);
2207
2224
  export type TextFormatParams = {
2208
2225
  getColor?: (cell: any) => string;
2209
2226
  colorMap?: Record<any, string>;
@@ -2354,28 +2371,38 @@ export interface LabelValue {
2354
2371
  label: string;
2355
2372
  value: string | number | boolean;
2356
2373
  }
2357
- export interface ListEditorParams extends SharedEditorParams, SharedSelectAutoCompleteEditorParams {
2374
+ type ListEditorItem = {
2375
+ label: string;
2376
+ value: string;
2377
+ };
2378
+ type ListEditorValuesLookupFunction = (cell: ICellComponent, filteredTerm: string) => ListEditorItem[];
2379
+ type ListEditorValuesLookup = true | RowRangeLookup | ListEditorValuesLookupFunction;
2380
+ /**
2381
+ * List editor parameters
2382
+ * @see https://tabulator.info/docs/6.3/edit#editor-list
2383
+ */
2384
+ export interface ListEditorParams extends SharedEditorParams, SharedSelectAutoCompleteEditorParams, FormatterDefinition {
2358
2385
  values?: true | string[] | JSONRecord | string | any[] | LabelValue[];
2359
2386
  valuesURL?: string;
2360
- valuesLookup?: RowRangeLookup;
2387
+ valuesLookup?: ListEditorValuesLookup;
2361
2388
  valuesLookupField?: string;
2362
2389
  clearable?: boolean;
2363
- itemFormatter?: (label: string, value: string, item: any, element: HTMLElement) => string;
2390
+ getItemLabel?: (label: string, value: string, item: any, element: HTMLElement) => string;
2364
2391
  sort?: SortDirection;
2365
2392
  emptyValue?: any;
2366
2393
  maxWidth?: boolean;
2367
2394
  placeholderLoading?: string;
2368
2395
  placeholderEmpty?: string;
2369
- multiselect?: boolean;
2370
2396
  autocomplete?: boolean;
2371
- filterFunc?: (term: string, label: string, value: string | number | boolean, item: any) => any;
2372
2397
  filterRemote?: boolean;
2373
2398
  filterDelay?: number;
2374
2399
  allowEmpty?: boolean;
2375
2400
  listOnEmpty?: boolean;
2376
2401
  freetext?: boolean;
2377
2402
  showListOnEmpty?: boolean;
2403
+ ajaxResponse?: (url: string, params: Record<string, unknown>, data: any) => any;
2378
2404
  verticalNavigation?: 'editor' | 'table' | 'hybrid';
2405
+ closedByDefault?: boolean;
2379
2406
  }
2380
2407
  export type ValueStringCallback = (value: any) => string;
2381
2408
  export type ValueBooleanCallback = (value: any) => boolean;
@@ -2908,16 +2935,17 @@ export interface IFilter extends IModule {
2908
2935
  headerFilterColumns: IColumn[];
2909
2936
  changed: boolean;
2910
2937
  tableInitialized: boolean;
2911
- setFilter(field: string | string[] | Filter[] | FilterFunction, type?: FilterType, value?: any, params?: FilterParams): void;
2912
- addFilter(field: string | Filter[], type?: FilterType, value?: any, params?: FilterParams): void;
2938
+ setFilter(filter: Filter | Filter[]): void;
2939
+ createFilterFieldFunction(fields?: string[]): FilterFieldFunction;
2940
+ addFilter(filter: Filter | Filter[]): void;
2913
2941
  removeFilter(field: string | Filter[], type?: FilterType, value?: any): void;
2914
2942
  getFilters(all?: boolean, ajax?: boolean): Filter[];
2915
2943
  getHeaderFilters(): Filter[];
2916
2944
  clearFilter(all?: boolean): void;
2917
2945
  clearHeaderFilter(): void;
2918
2946
  refreshFilter(): void;
2919
- searchRows(field: string | Filter[], type?: FilterType, value?: any): any[];
2920
- searchData(field: string | Filter[], type?: FilterType, value?: any): any[];
2947
+ searchRows(filter: Filter | Filter[]): any[];
2948
+ searchData(filter: Filter | Filter[]): any[];
2921
2949
  setHeaderFilterFocus(column: IColumn): void;
2922
2950
  getHeaderFilterValue(column: IColumn): any;
2923
2951
  setHeaderFilterValue(column: IColumn, value: any): void;
@@ -2928,6 +2956,151 @@ export interface HeaderFilterFunc {
2928
2956
  }
2929
2957
  export type LangObject = Record<string, any>;
2930
2958
  export type TableSelector = string | HTMLElement | ITabulator | TableSelector[];
2959
+ /**
2960
+ * @typedef {Object} TrafficFormatterParams
2961
+ * @property {Record<any, string>} [colorMap] - Record mapping cell values to colors. Used when the cell value should be mapped to a specific color.
2962
+ * @property {(value: any) => string} [getColor] - Function to dynamically determine the color based on the cell value. Takes precedence over other color resolution methods.
2963
+ * @property {Record<string, string>} [textStyle] - Object with CSS style properties to apply inline to the text element.
2964
+ */
2965
+ export type TrafficFormatterParams = {
2966
+ colorMap?: Record<any, string>;
2967
+ getColor?: (value: any) => string;
2968
+ textStyle?: Record<string, string>;
2969
+ };
2970
+ /**
2971
+ * @typedef {Object} IconFormatterParams
2972
+ * @property {string} [class] - CSS class name(s) to apply to the icon element.
2973
+ * @property {(value: any) => string} [getIcon] - Function to dynamically determine the icon name based on the cell value. Takes precedence over other icon resolution methods.
2974
+ * @property {string | ((value: any) => string)} [icon] - Static icon name string or function that returns an icon name based on the cell value.
2975
+ * @property {Record<any, string>} [iconMap] - Record mapping cell values to icon names. Used when the cell value should be mapped to a specific icon.
2976
+ * @property {number | string} [size] - Size of the icon. Can be a number (in pixels) or a string (e.g., "24px", "1.5rem").
2977
+ * @property {Record<string, string>} [style] - Object with CSS style properties to apply inline to the icon element.
2978
+ */
2979
+ export type IconFormatterParams = {
2980
+ class?: string;
2981
+ getIcon?: (value: any) => string;
2982
+ icon?: string | ((value: any) => string);
2983
+ iconMap?: Record<any, string>;
2984
+ size?: number | string;
2985
+ style?: Record<string, string>;
2986
+ };
2987
+ /**
2988
+ * @typedef {Object} TimeFormatterParams
2989
+ * @property {string} [color] - Sets --cx-format-time-color on the host.
2990
+ * @property {string} [displayStyle] - long | short | narrow | digital (cx-format-time display-style).
2991
+ * @property {string} [fontSize] - Sets --cx-format-time-font-size on the host.
2992
+ * @property {string} [fontWeight] - Sets --cx-format-time-font-weight on the host.
2993
+ * @property {string} [inputUnit] - ms | s (cx-format-time input-unit).
2994
+ * @property {string} [locale] - BCP 47 locale for Intl output.
2995
+ * @property {string} [placeholder] - Shown when duration is empty.
2996
+ * @property {Record<string, string>} [style] - Inline styles applied via Object.assign on the host style.
2997
+ * @property {string} [unitsFormat] - d, d-h, d-h-m, d-h-m-s, h, h-m, h-m-s, m, m-s, s (cx-format-time units-format).
2998
+ */
2999
+ export type TimeFormatterParams = {
3000
+ color?: string;
3001
+ fontSize?: string;
3002
+ fontWeight?: string;
3003
+ inputUnit?: string;
3004
+ locale?: string;
3005
+ placeholder?: string;
3006
+ style?: Record<string, string>;
3007
+ unitsFormat?: string;
3008
+ displayStyle?: string;
3009
+ paramsMapField?: string;
3010
+ paramsMap?: Record<any, TimeFormatterParams>;
3011
+ getParams?: (value: unknown, cell: ICellComponent) => TimeFormatterParams;
3012
+ };
3013
+ /**
3014
+ * @typedef {Object} TypographyFormatterParams
3015
+ * @property {(value: any) => TypographyVariant} [getVariant] - Function to dynamically determine the typography variant based on the cell value. Takes precedence over other variant resolution methods.
3016
+ * @property {string} [prefix] - String to prepend to the cell value.
3017
+ * @property {string} [suffix] - String to append to the cell value.
3018
+ * @property {TypographyVariant} [variant] - Static typography variant to use for all cells.
3019
+ * @property {Record<any, TypographyVariant>} [variantMap] - Record mapping cell values to typography variants. Used when the cell value should be mapped to a specific variant.
3020
+ */
3021
+ export type TypographyFormatterParams = {
3022
+ getVariant?: (value: any) => TypographyVariant;
3023
+ prefix?: string;
3024
+ suffix?: string;
3025
+ variant?: TypographyVariant;
3026
+ variantMap?: Record<any, TypographyVariant>;
3027
+ style?: Record<string, string>;
3028
+ };
3029
+ /**
3030
+ * @typedef {Object} PlaintextFormatterParams
3031
+ * @property {string} [prefix] - String to prepend to the cell value.
3032
+ * @property {string} [suffix] - String to append to the cell value.
3033
+ */
3034
+ export type PlaintextFormatterParams = {
3035
+ prefix?: string;
3036
+ suffix?: string;
3037
+ style?: Record<string, string>;
3038
+ };
3039
+ /**
3040
+ * @typedef {Object} NumberFormatterParams
3041
+ * @property {string} [currency] - The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code to use when formatting (e.g., `'USD'`, `'EUR'`, `'GBP'`). Defaults to `'USD'`.
3042
+ * @property {FormatNumberCurrencyDisplay} [currencyDisplay] - How to display the currency. Can be `'symbol'` (default), `'code'`, `'name'`, or `'narrowSymbol'`.
3043
+ * @property {number} [maximumFractionDigits] - The maximum number of fraction digits to use. Possible values are 0-20.
3044
+ * @property {number} [maximumSignificantDigits] - The maximum number of significant digits to use. Possible values are 1-21.
3045
+ * @property {number} [minimumFractionDigits] - The minimum number of fraction digits to use. Possible values are 0-20.
3046
+ * @property {number} [minimumIntegerDigits] - The minimum number of integer digits to use. Possible values are 1-21.
3047
+ * @property {number} [minimumSignificantDigits] - The minimum number of significant digits to use. Possible values are 1-21.
3048
+ */
3049
+ export type NumberFormatterParams = {
3050
+ currency?: string;
3051
+ currencyDisplay?: FormatNumberCurrencyDisplay;
3052
+ maximumFractionDigits?: number;
3053
+ maximumSignificantDigits?: number;
3054
+ minimumFractionDigits?: number;
3055
+ minimumIntegerDigits?: number;
3056
+ minimumSignificantDigits?: number;
3057
+ noGrouping?: boolean;
3058
+ type?: FormatNumberType;
3059
+ };
3060
+ export type CompositeElement = {
3061
+ field?: string;
3062
+ valueMap?: Record<string, string>;
3063
+ formatter?: string | ((cell: any, params: any, onRendered: any) => any);
3064
+ formatterParams?: any;
3065
+ getValue?: (cell: any, rowData: any) => any;
3066
+ hideValues?: any;
3067
+ separator?: string | HTMLElement;
3068
+ shouldHide?: (value: any, rowData: any) => boolean;
3069
+ shouldShow?: (value: any, rowData: any) => boolean;
3070
+ showValues?: any;
3071
+ spacing?: string;
3072
+ style?: Record<string, string>;
3073
+ value?: any;
3074
+ };
3075
+ /**
3076
+ * @typedef {Object} CompositeFormatterParams
3077
+ * @property {('center' | 'end' | 'start' | 'stretch')} [align] - Alignment of elements. Can be `'start'`, `'center'` (default), `'end'`, or `'stretch'`.
3078
+ * @property {Record<string, string>} [containerStyle] - Object with CSS style properties to apply inline to the container.
3079
+ * @property {('column' | 'row')} [direction] - Flex direction for the container. Can be `'column'` or `'row'` (default).
3080
+ * @property {CompositeElement[]} elements - Array of element configurations to render.
3081
+ * @property {string} [gap] - CSS gap property for spacing between elements (e.g., `'8px'`, `'0.5rem'`).
3082
+ */
3083
+ export type CompositeFormatterParams = {
3084
+ align?: 'normal' | 'center' | 'start' | 'end' | 'baseline' | 'stretch' | 'flex-start' | 'flex-end';
3085
+ containerStyle?: Record<string, string>;
3086
+ direction?: 'vertical' | 'horizontal';
3087
+ elements: CompositeElement[];
3088
+ gap?: SpacingProp;
3089
+ placeholder?: string;
3090
+ placeholderStyle?: Record<string, string>;
3091
+ };
3092
+ export type TableDropdownFilterDataOption = {
3093
+ filter?: Filter;
3094
+ id: string;
3095
+ label: string;
3096
+ };
3097
+ export type TableDropdownFilterData = {
3098
+ field: string;
3099
+ id: string;
3100
+ label: string;
3101
+ defaultOption?: string;
3102
+ options: TableDropdownFilterDataOption[];
3103
+ };
2931
3104
  export type SavedSearchItem = {
2932
3105
  recordID: string;
2933
3106
  name: string;
@@ -437,6 +437,8 @@ export interface Translation extends DefaultTranslation {
437
437
  next: string;
438
438
  nextSlide: string;
439
439
  noCardsAddedYet: string;
440
+ noColumnsVisible: string;
441
+ noData: string;
440
442
  noDataAvailable: string;
441
443
  noDownloads: string;
442
444
  noDownloadsMessage: string;
@@ -27,5 +27,6 @@ export declare function getNeededPaddingForBoxShadow(boxShadow: string, appendPx
27
27
  export declare function sortByTopPosition<T extends Element>(elements: T[]): T[];
28
28
  export declare function getCurrentZIndex(): any;
29
29
  export declare function getCortexPopupLayer(): HTMLElement;
30
- export declare function getElementFromTemplate(template: TemplateResult): HTMLElement;
30
+ export declare function getElementFromTemplate<T extends HTMLElement>(template: TemplateResult): T;
31
+ export declare function getElementFromHTMLString<T extends HTMLElement>(htmlString: string): T | null;
31
32
  export declare function isElementInHorizontalView(container: HTMLElement, el: HTMLElement, offset?: number): boolean;
@@ -116,4 +116,5 @@ export declare function padPath(path: string): string;
116
116
  export declare function formatTimeToSeconds(timeString: string, options?: TimeFormatOptions): number;
117
117
  export declare function extractExtension(filename: string): string | null;
118
118
  export declare function sanitizeHTML(html: string): string;
119
+ export declare function emptyToSpace(value: any): string;
119
120
  export declare function isGalleryItemCardType(value: unknown): value is GalleryItemCardType;