@orangelogic/design-system 2.172.0 → 2.173.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import { default as CxButton } from '../../../../../../atoms/src/components/button/button.ts';
2
2
  import { default as CxDropdown } from '../../../../../../atoms/src/components/dropdown/dropdown.ts';
3
+ import { default as CxIcon } from '../../../../../../atoms/src/components/icon/icon.ts';
3
4
  import { default as CxMenu } from '../../../../../../atoms/src/components/menu/menu.ts';
4
5
  import { default as CxMenuItem } from '../../../../../../atoms/src/components/menu-item/menu-item.ts';
5
6
  import { default as CortexElement } from '../../../../../../base/src/cortex-element.ts';
@@ -7,13 +8,20 @@ import { TableDropdownFilterData, TableDropdownFilterDataOption } from '../../..
7
8
  import { CSSResultGroup } from 'lit';
8
9
 
9
10
  /**
10
- * @summary CxTableDropdownFilter
11
+ * @summary Renders a single dropdown filter in the table toolbar: a trigger button plus a menu of mutually exclusive options.
12
+ * @description Configured entirely through the `data` property, which `cx-table-toolbar` supplies from each entry of its
13
+ * `dropdown-filters` array. Setting `data.icon` shows an icon in the trigger and turns the caret off, unless `data.caret`
14
+ * says otherwise. Setting `data.hideLabel` alongside an icon produces an icon-only trigger, where the label survives as
15
+ * the button's accessible name and native tooltip.
16
+ *
17
+ * @event {{ data: { id: string, option: TableDropdownFilterDataOption } }} cx-table-dropdown-filter-change - Emitted when an option is selected.
11
18
  */
12
19
  export default class CxTableDropdownFilter extends CortexElement {
13
20
  static readonly styles: CSSResultGroup;
14
21
  static readonly dependencies: {
15
22
  'cx-button': typeof CxButton;
16
23
  'cx-dropdown': typeof CxDropdown;
24
+ 'cx-icon': typeof CxIcon;
17
25
  'cx-menu': typeof CxMenu;
18
26
  'cx-menu-item': typeof CxMenuItem;
19
27
  };
@@ -21,12 +29,16 @@ export default class CxTableDropdownFilter extends CortexElement {
21
29
  activeOptionId: string;
22
30
  optionsMap: Record<string, TableDropdownFilterDataOption>;
23
31
  get activeOption(): TableDropdownFilterDataOption;
32
+ private get triggerText();
33
+ private get isIconOnly();
34
+ private get showCaret();
24
35
  createRenderRoot(): this;
25
36
  private createOptionsMap;
26
37
  private selectOptionWithId;
27
38
  handleDataChange(): void;
28
39
  private handleMenuSelect;
29
40
  private renderMenuItems;
41
+ private renderTriggerIcon;
30
42
  render(): import('lit').TemplateResult<1>;
31
43
  }
32
44
  declare global {
@@ -31,6 +31,9 @@ import { default as CxTableSavedSearchDropdown } from './table-saved-search-drop
31
31
  * @event cx-table-advanced-search-click - Emitted when the advanced search action is clicked.
32
32
  * @event cx-add - Emitted when the add action is clicked.
33
33
  * @event {{ type: 'csv' | 'xml' | 'custom' | 'report' }} cx-table-export - Emitted when an export action is selected.
34
+ *
35
+ * @cssproperty [--dropdown-filter-icon-color=currentColor] - Color of the icon in a dropdown filter trigger.
36
+ * @cssproperty [--dropdown-filter-icon-size=var(--cx-font-size-large)] - Size of the icon in a dropdown filter trigger. Matches the 20px icon in the design; without it the icon inherits 16px from cx-button.
34
37
  */
35
38
  export default class CxTableToolbar extends CortexElement {
36
39
  static readonly styles: CSSResultGroup;
@@ -215,15 +215,28 @@ export default class CxDynamicSelect extends CortexElement {
215
215
  * Has no effect when `multiple` is enabled.
216
216
  */
217
217
  autoFallbackFirstOption: boolean;
218
+ /**
219
+ * Reflects whether the select currently has any fetched options.
220
+ * Read-only from consumers; useful as a CSS hook (e.g. `cx-dynamic-select[has-options]`).
221
+ */
222
+ hasOptions: boolean;
218
223
  options: Option[];
219
224
  start: number;
220
225
  searchTerm: string;
221
226
  hasMore: boolean;
222
227
  loading: boolean;
228
+ /**
229
+ * Sequence number for in-flight `fetchOptions` calls. Incremented every time a fetch is
230
+ * (re)started so a late-arriving response from a superseded/cancelled request (e.g. the
231
+ * user cleared the input while a previous fetch was still pending) can be detected and
232
+ * discarded instead of overwriting newer state.
233
+ */
234
+ private fetchToken;
223
235
  createRenderRoot(): this;
224
236
  private fetchOptions;
225
237
  handleStartChange(): Promise<void>;
226
238
  handleSearchTermChange(): Promise<void>;
239
+ handleOptionsChange(): void;
227
240
  handleColumnsChange(): Promise<void>;
228
241
  private tableGetOptionValue;
229
242
  private tableSetOptionSelected;
@@ -236,6 +249,7 @@ export default class CxDynamicSelect extends CortexElement {
236
249
  private getColWidth;
237
250
  private getFallbackValue;
238
251
  private handleInputChange;
252
+ private handleClear;
239
253
  private handleLoadMore;
240
254
  private handleCustomChange;
241
255
  private renderTableOptions;
@@ -23,6 +23,7 @@ import { CSSResultGroup } from 'lit';
23
23
  * or via "Clear". Carries the removed tag's `key`.
24
24
  *
25
25
  * @cssproperty [--panel-max-height=600px] - The maximum height of the dropdown panel and its content.
26
+ * @cssproperty [--trigger-icon-size=var(--cx-font-size-large)] - Size of the filter icon in the trigger. Also insulates the icon from a `--font-size` inherited from an ancestor.
26
27
  */
27
28
  export default class CxFacetedFilter extends CortexElement {
28
29
  static readonly styles: CSSResultGroup;
@@ -97,7 +97,23 @@ export default class CxFolderSelectTree extends CortexElement {
97
97
  private fetchFolders;
98
98
  private handleChildrenLoaded;
99
99
  private removePreloadedFolders;
100
+ /**
101
+ * @returns Whether this call added any new key to `currentRootIDsSet`
102
+ * (and therefore already emitted `cx-folder-select-selection-seeded` via
103
+ * `seedSelectionFromValue`). Callers that suppressed an earlier seed's
104
+ * emit (e.g. `handleFetchFolders` seeding root folders first) use this to
105
+ * know whether they still need to emit themselves.
106
+ */
100
107
  private preloadSelectedFolders;
108
+ /**
109
+ * @param suppressEmit Skip the `cx-folder-select-selection-seeded` emit
110
+ * even if this call adds keys. Used when the caller is about to seed more
111
+ * (e.g. `handleFetchFolders` seeding root folders right before awaiting
112
+ * `preloadSelectedFolders`) so the host never re-syncs its `value` from a
113
+ * `currentRootIDsSet` that is still missing folders the caller already
114
+ * knows are coming — that partial snapshot would otherwise overwrite
115
+ * `cx-folder-select.value` and permanently drop the not-yet-seeded ids.
116
+ */
101
117
  private seedSelectionFromValue;
102
118
  private renderFolder;
103
119
  render(): TemplateResult;
@@ -21,6 +21,7 @@ export default class CxFolderSelect extends CortexElement {
21
21
  };
22
22
  private readonly localize;
23
23
  selectEl?: CxSelect;
24
+ treeEl?: CxFolderSelectTree;
24
25
  minQueryLength: number;
25
26
  selection: 'multiple' | 'single';
26
27
  variant: FolderSelectVariant;
@@ -74,6 +75,17 @@ export default class CxFolderSelect extends CortexElement {
74
75
  */
75
76
  private handleTreeChildrenLoaded;
76
77
  private handleSelectClear;
78
+ /**
79
+ * `cx-tree` only emits `cx-selection-change` from its own click-driven
80
+ * `selectItem()` — setting `option.selected` directly (as the tag's X
81
+ * button does in `selectGetTag`) bypasses that method entirely, so
82
+ * `cx-tree` never emits it for a tag removal. Consumers like
83
+ * `cx-folder-picker` listen for `cx-selection-change` (not our internal
84
+ * `cx-selected-change`/`value`) to know when to re-emit their own public
85
+ * change event, so removing a tag would otherwise never reach them.
86
+ * Emit it ourselves here, mirroring `cx-tree`'s own event shape.
87
+ */
88
+ private emitSelectionChangeFromTree;
77
89
  /**
78
90
  * cx-folder-select-tree owns `currentRootIDsSet` (the real source of
79
91
  * truth for multi-select) — a user toggling a tree-item, or removing a
@@ -99,8 +111,9 @@ export default class CxFolderSelect extends CortexElement {
99
111
  /**
100
112
  * cx-select's selectedOptions cache (which drives the tag UI in
101
113
  * `multiple` mode) is only recomputed during its own `selectionChanged`
102
- * flow — that flow doesn't run in our setup because we no-op
103
- * `selectSetOptionSelected` for multi-select (cx-tree owns selection).
114
+ * flow — that flow doesn't run for us because cx-select's default
115
+ * `setOptionSelected` only acts on `CxOption`, not our `CxTreeItem`
116
+ * options (cx-tree owns selection instead).
104
117
  * Re-read options here so the rendered tag list matches, in response to
105
118
  * either signal cx-folder-select-tree can emit:
106
119
  * - `cx-selected-change`, bubbled from a user toggling a tree-item.
@@ -119,11 +132,11 @@ export default class CxFolderSelect extends CortexElement {
119
132
  * default tag, but the X click goes through cx-tree's selection flow
120
133
  * (`option.selected = false` → `cx-selected-change` →
121
134
  * cx-folder-select-tree.handleSelectedChange) rather than
122
- * cx-select.toggleOptionSelection (which our `selectSetOptionSelected`
123
- * no-ops in multi mode, so the default X click would do nothing).
135
+ * cx-select.toggleOptionSelection (whose `setOptionSelected` only acts on
136
+ * `CxOption`, so the default X click would do nothing for our
137
+ * `CxTreeItem` options).
124
138
  */
125
139
  selectGetTag(option: HTMLElement): TemplateResult;
126
- selectSetOptionSelected(option: HTMLElement, selected: boolean): void;
127
140
  updateFunctionProps(): void;
128
141
  handleOpenChange(): void;
129
142
  handleVariantChange(): Promise<void>;
@@ -43,7 +43,8 @@
43
43
  export type CxTableDropdownItem = { label: string; name: string; prefixIcon: string; section: string; style: dictionary; };
44
44
  export type CxTablePartial = { hozAlign: 'right' | 'left' | 'center'; headerHozAlign: 'right' | 'left' | 'center'; vertAlign: 'top' | 'bottom' | 'middle'; minWidth: number; widthGrow: number; widthShrink: number; resizable: 'header' | 'cell' | any; frozen: boolean; responsive: number; tooltip: string | any; cssClass: string; rowHandle: boolean; hideInHtml: boolean; sorter: 'string' | 'number' | 'boolean' | 'time' | 'date' | 'alphanum' | 'exists' | 'datetime' | 'array'; sorterParams: { format: string; locale: string | any; alignEmptyValues: 'top' | 'bottom'; type: 'max' | 'min' | 'length' | 'sum' | 'avg'; }; variableHeight: boolean; editable: any; editor: 'number' | 'input' | 'textarea' | 'time' | 'date' | 'list' | 'range' | 'datetime' | 'tickCross' | 'star' | any; editorParams: { min: number; max: number; step: number; verticalNavigation: 'table' | 'editor'; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { tristate: boolean; indeterminateValue: string; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { values: string | any | any[] | string[] | dictionary | { label: string; value: string | number | any; }[]; valuesURL: string; valuesLookup: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display' | any; valuesLookupField: string; fallbackOption: { value: string | number | any; prefix: string; hideDivider: boolean; }; clearable: boolean; sort: 'asc' | 'desc' | 'none'; emptyValue: any; maxWidth: boolean; placeholderLoading: string; placeholderEmpty: string; autocomplete: boolean; filterRemote: boolean; filterDelay: number; allowEmpty: boolean; listOnEmpty: boolean; freetext: boolean; showListOnEmpty: boolean; verticalNavigation: 'table' | 'editor' | 'hybrid'; closedByDefault: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; defaultValue: string; sortValuesList: 'desc' | 'asc'; formatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; formatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; } | { search: boolean; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { verticalNavigation: 'table' | 'editor' | 'hybrid'; shiftEnterSubmit: boolean; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { min: string; max: string; format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; }; validator: string | 'string' | 'boolean' | 'date' | 'numeric' | 'required' | 'unique' | 'integer' | 'float' | 'alphanumeric' | 'in' | 'regex'[] | { type: 'string' | 'boolean' | 'date' | 'numeric' | 'required' | 'unique' | 'integer' | 'float' | 'alphanumeric' | 'in' | 'regex'; parameters: any; message: string; } | { type: 'string' | 'boolean' | 'date' | 'numeric' | 'required' | 'unique' | 'integer' | 'float' | 'alphanumeric' | 'in' | 'regex'; parameters: any; message: string; }[]; mutatorParams: dictionary; mutatorDataParams: dictionary; mutatorEditParams: dictionary; mutatorClipboardParams: dictionary; mutateOnValidate: boolean; accessor: 'rownum'; accessorParams: dictionary; accessorDownloadParams: dictionary; accessorClipboardParams: dictionary; download: any; titleDownload: string; topCalc: 'max' | 'min' | 'concat' | 'sum' | 'avg' | 'unique' | 'count'; topCalcParams: { precision: number; }; topCalcFormatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; topCalcFormatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; bottomCalc: 'max' | 'min' | 'concat' | 'sum' | 'avg' | 'unique' | 'count'; bottomCalcParams: { precision: number; }; bottomCalcFormatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; bottomCalcFormatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; headerSort: boolean; headerSortStartingDir: 'asc' | 'desc' | 'none'; headerSortTristate: boolean; headerTooltip: string | any; headerVertical: 'flip' | any; editableTitle: boolean; titleFormatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; titleFormatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; textFormatParams: CxTableTextFormatParams; cellClass: string; cellStyle: dictionary; headerFilter: 'number' | 'input' | 'textarea' | 'time' | 'date' | 'list' | 'range' | 'datetime' | 'tickCross' | 'star' | any; headerFilterParams: { min: number; max: number; step: number; verticalNavigation: 'table' | 'editor'; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { tristate: boolean; indeterminateValue: string; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { values: string | any | any[] | string[] | dictionary | { label: string; value: string | number | any; }[]; valuesURL: string; valuesLookup: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display' | any; valuesLookupField: string; fallbackOption: { value: string | number | any; prefix: string; hideDivider: boolean; }; clearable: boolean; sort: 'asc' | 'desc' | 'none'; emptyValue: any; maxWidth: boolean; placeholderLoading: string; placeholderEmpty: string; autocomplete: boolean; filterRemote: boolean; filterDelay: number; allowEmpty: boolean; listOnEmpty: boolean; freetext: boolean; showListOnEmpty: boolean; verticalNavigation: 'table' | 'editor' | 'hybrid'; closedByDefault: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; defaultValue: string; sortValuesList: 'desc' | 'asc'; formatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; formatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; } | { search: boolean; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { verticalNavigation: 'table' | 'editor' | 'hybrid'; shiftEnterSubmit: boolean; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { min: string; max: string; format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; }; headerFilterPlaceholder: string; headerFilterFunc: 'ends' | '=' | '>=' | '>' | 'in' | 'keywords' | '<=' | '<' | 'like' | '!=' | 'regex' | 'starts'; headerFilterFuncParams: any; headerFilterLiveFilter: boolean; htmlOutput: any; clipboard: any; print: any; columns: { hozAlign: 'right' | 'left' | 'center'; headerHozAlign: 'right' | 'left' | 'center'; vertAlign: 'top' | 'bottom' | 'middle'; minWidth: number; widthGrow: number; widthShrink: number; resizable: 'header' | 'cell' | any; frozen: boolean; responsive: number; tooltip: string | any; cssClass: string; rowHandle: boolean; hideInHtml: boolean; sorter: 'string' | 'number' | 'boolean' | 'time' | 'date' | 'alphanum' | 'exists' | 'datetime' | 'array'; sorterParams: { format: string; locale: string | any; alignEmptyValues: 'top' | 'bottom'; type: 'max' | 'min' | 'length' | 'sum' | 'avg'; }; variableHeight: boolean; editable: any; editor: 'number' | 'input' | 'textarea' | 'time' | 'date' | 'list' | 'range' | 'datetime' | 'tickCross' | 'star' | any; editorParams: { min: number; max: number; step: number; verticalNavigation: 'table' | 'editor'; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { tristate: boolean; indeterminateValue: string; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { values: string | any | any[] | string[] | dictionary | { label: string; value: string | number | any; }[]; valuesURL: string; valuesLookup: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display' | any; valuesLookupField: string; fallbackOption: { value: string | number | any; prefix: string; hideDivider: boolean; }; clearable: boolean; sort: 'asc' | 'desc' | 'none'; emptyValue: any; maxWidth: boolean; placeholderLoading: string; placeholderEmpty: string; autocomplete: boolean; filterRemote: boolean; filterDelay: number; allowEmpty: boolean; listOnEmpty: boolean; freetext: boolean; showListOnEmpty: boolean; verticalNavigation: 'table' | 'editor' | 'hybrid'; closedByDefault: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; defaultValue: string; sortValuesList: 'desc' | 'asc'; formatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; formatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; } | { search: boolean; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { verticalNavigation: 'table' | 'editor' | 'hybrid'; shiftEnterSubmit: boolean; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { min: string; max: string; format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; }; validator: string | 'string' | 'boolean' | 'date' | 'numeric' | 'required' | 'unique' | 'integer' | 'float' | 'alphanumeric' | 'in' | 'regex'[] | { type: 'string' | 'boolean' | 'date' | 'numeric' | 'required' | 'unique' | 'integer' | 'float' | 'alphanumeric' | 'in' | 'regex'; parameters: any; message: string; } | { type: 'string' | 'boolean' | 'date' | 'numeric' | 'required' | 'unique' | 'integer' | 'float' | 'alphanumeric' | 'in' | 'regex'; parameters: any; message: string; }[]; mutatorParams: dictionary; mutatorDataParams: dictionary; mutatorEditParams: dictionary; mutatorClipboardParams: dictionary; mutateOnValidate: boolean; accessor: 'rownum'; accessorParams: dictionary; accessorDownloadParams: dictionary; accessorClipboardParams: dictionary; download: any; titleDownload: string; topCalc: 'max' | 'min' | 'concat' | 'sum' | 'avg' | 'unique' | 'count'; topCalcParams: { precision: number; }; topCalcFormatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; topCalcFormatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; bottomCalc: 'max' | 'min' | 'concat' | 'sum' | 'avg' | 'unique' | 'count'; bottomCalcParams: { precision: number; }; bottomCalcFormatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; bottomCalcFormatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; headerSort: boolean; headerSortStartingDir: 'asc' | 'desc' | 'none'; headerSortTristate: boolean; headerTooltip: string | any; headerVertical: 'flip' | any; editableTitle: boolean; titleFormatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; titleFormatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; textFormatParams: CxTableTextFormatParams; cellClass: string; cellStyle: dictionary; headerFilter: 'number' | 'input' | 'textarea' | 'time' | 'date' | 'list' | 'range' | 'datetime' | 'tickCross' | 'star' | any; headerFilterParams: { min: number; max: number; step: number; verticalNavigation: 'table' | 'editor'; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { tristate: boolean; indeterminateValue: string; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { values: string | any | any[] | string[] | dictionary | { label: string; value: string | number | any; }[]; valuesURL: string; valuesLookup: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display' | any; valuesLookupField: string; fallbackOption: { value: string | number | any; prefix: string; hideDivider: boolean; }; clearable: boolean; sort: 'asc' | 'desc' | 'none'; emptyValue: any; maxWidth: boolean; placeholderLoading: string; placeholderEmpty: string; autocomplete: boolean; filterRemote: boolean; filterDelay: number; allowEmpty: boolean; listOnEmpty: boolean; freetext: boolean; showListOnEmpty: boolean; verticalNavigation: 'table' | 'editor' | 'hybrid'; closedByDefault: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; defaultValue: string; sortValuesList: 'desc' | 'asc'; formatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; formatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; } | { search: boolean; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { verticalNavigation: 'table' | 'editor' | 'hybrid'; shiftEnterSubmit: boolean; selectContents: boolean; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { min: string; max: string; format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; } | { format: string; verticalNavigation: 'table' | 'editor'; elementAttributes: dictionary; mask: string; maskAutoFill: boolean; maskLetterChar: string; maskNumberChar: string; maskWildcardChar: string; }; headerFilterPlaceholder: string; headerFilterFunc: 'ends' | '=' | '>=' | '>' | 'in' | 'keywords' | '<=' | '<' | 'like' | '!=' | 'regex' | 'starts'; headerFilterFuncParams: any; headerFilterLiveFilter: boolean; htmlOutput: any; clipboard: any; print: any; columns: any[]; headerMenu: { label: string; disabled: any; menu: any[]; } | { separator: boolean; }[]; headerMenuIcon: string; headerContextMenu: { label: string; disabled: any; menu: any[]; } | { separator: boolean; }[]; headerDblClickPopup: string; dblClickPopup: string; contextMenu: { separator: boolean; } | { label: string; disabled: any; menu: any[]; }[]; clickMenu: { separator: boolean; } | { label: string; disabled: any; menu: any[]; }[]; headerDblClickMenu: { separator: boolean; } | { label: string; disabled: any; menu: any[]; }[]; dblClickMenu: { separator: boolean; } | { label: string; disabled: any; menu: any[]; }[]; cellPopup: string; formatterClipboard: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff' | any; formatterClipboardParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; formatterPrint: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff' | any; formatterPrintParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; accessorPrintParams: dictionary; accessorHtmlOutputParams: dictionary; formatterHtmlOutput: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff' | any; formatterHtmlOutputParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; titleClipboard: string; titleHtmlOutput: string; titlePrint: string; maxWidth: number | any; headerWordWrap: boolean; editorEmptyValue: any; hoverMenu: CxTableHoverMenuOptions; clickable: boolean; clickableActionName: string; clickableEventName: string; title: string; field: string; hidden: boolean; width: string | number; formatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; formatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; }[]; headerMenu: { label: string; disabled: any; menu: any[]; } | { separator: boolean; }[]; headerMenuIcon: string; headerContextMenu: { label: string; disabled: any; menu: any[]; } | { separator: boolean; }[]; headerDblClickPopup: string; dblClickPopup: string; contextMenu: { separator: boolean; } | { label: string; disabled: any; menu: any[]; }[]; clickMenu: { separator: boolean; } | { label: string; disabled: any; menu: any[]; }[]; headerDblClickMenu: { separator: boolean; } | { label: string; disabled: any; menu: any[]; }[]; dblClickMenu: { separator: boolean; } | { label: string; disabled: any; menu: any[]; }[]; cellPopup: string; formatterClipboard: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff' | any; formatterClipboardParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; formatterPrint: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff' | any; formatterPrintParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; accessorPrintParams: dictionary; accessorHtmlOutputParams: dictionary; formatterHtmlOutput: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff' | any; formatterHtmlOutputParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; titleClipboard: string; titleHtmlOutput: string; titlePrint: string; maxWidth: number | any; headerWordWrap: boolean; editorEmptyValue: any; hoverMenu: CxTableHoverMenuOptions; clickable: boolean; clickableActionName: string; clickableEventName: string; title: string; field: string; hidden: boolean; width: string | number; formatter: 'html' | 'link' | 'progress' | 'textarea' | 'time' | 'color' | 'image' | 'switch' | 'plaintext' | 'toggle' | 'lookup' | 'datetime' | 'tickCross' | 'star' | 'money' | 'datetimediff' | 'traffic' | 'buttonTick' | 'buttonCross' | 'rownum' | 'handle' | 'rowSelection' | 'responsiveCollapse' | 'diff'; formatterParams: dictionary | { decimal: string; thousand: string; symbol: string; symbolAfter: boolean; precision: number | any; negativeSign: string | any; } | { height: string; width: string; urlPrefix: string; urlSuffix: string; } | { labelField: string; label: string; urlPrefix: string; urlField: string; url: string; target: string; download: boolean; } | { inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { date: any; humanize: boolean; unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'; suffix: boolean; inputFormat: string; outputFormat: string; invalidPlaceholder: string | number | any; timezone: string; } | { allowEmpty: boolean; allowTruthy: boolean; tickElement: string | any; crossElement: string | any; } | { min: number; max: number; color: string | any[]; } | { legend: string | any; legendColor: string | any[]; legendAlign: 'right' | 'left' | 'center' | 'justify'; min: number; max: number; color: string | any[]; } | { stars: number; } | { rowRange: 'all' | 'selected' | 'visible' | 'range' | 'active' | 'display'; } | { size: number; max: number; onValue: string | number; offValue: string | number; onTruthy: boolean; onColor: string; offColor: string; clickable: boolean; } | { size: 'small' | 'large' | 'medium'; onValue: string | number | any; offValue: string | number | any; } | CxTableTimeFormatterParams; };
45
45
  export type CxTableSavedSearchItem = { name: string; recordID: string; };
46
- export type CxTableTableDropdownFilterData = { defaultOption: string; field: string; id: string; label: string; options: CxTableTableDropdownFilterDataOption[]; };
46
+ export type CxTableTableDropdownFilterData = { caret: boolean; defaultOption: string; field: string; hideLabel: boolean; icon: CxTableTableDropdownFilterIcon; id: string; label: string; options: CxTableTableDropdownFilterDataOption[]; };
47
+ export type CxTableTableDropdownFilterIcon = { name: string; src: string; };
47
48
  export type CxTableTableDropdownFilterDataOption = { filter: CxTableFilter; id: string; label: string; };
48
49
  export type CxTableFilter = { field: string; type: 'ends' | '=' | '>=' | '>' | 'in' | 'keywords' | '<=' | '<' | 'like' | '!=' | 'regex' | 'starts'; value: any; params: { separator: string; matchAll: boolean; }; };
49
50
  export type CxTablePick = { value: any; field: string; };
@@ -5981,6 +5982,10 @@
5981
5982
  * When set to true, after options are fetched, the select falls back to the first option's value when the current `value` does not match any fetched option (including when no `value` was provided). Has no effect when `multiple` is enabled.
5982
5983
  */
5983
5984
  autoFallbackFirstOption?: boolean;
5985
+ /**
5986
+ * Reflects whether the select currently has any fetched options. Read-only from consumers; useful as a CSS hook (e.g. `cx-dynamic-select[has-options]`).
5987
+ */
5988
+ hasOptions?: boolean;
5984
5989
  /**
5985
5990
  * Make localization attributes reactive eslint-disable-next-line lit/no-native-attributes
5986
5991
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "2.172.0",
4
+ "version": "2.173.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {