@orangelogic/design-system 2.171.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.
Files changed (23) hide show
  1. package/library/chunks/{asset-link-format.BATKDRgD.js → asset-link-format.COCtAbj0.js} +7 -5
  2. package/library/chunks/{color-swatch-group.CQlgq_I5.js → color-swatch-group.DCw6mJkM.js} +526 -508
  3. package/library/chunks/{folder-select.C6Sv4jtu.js → folder-select.BgWvY0t0.js} +346 -320
  4. package/library/components/asset-link-format.js +1 -1
  5. package/library/components/color-swatch-group.js +1 -1
  6. package/library/components/dynamic-select.js +143 -127
  7. package/library/components/folder-select.js +1 -1
  8. package/library/components/molecules.js +1 -1
  9. package/library/components/organisms.js +2 -2
  10. package/library/components/types.js +22249 -22084
  11. package/library/package.json +1 -1
  12. package/library/packages/hybrid/table-core/src/table/components/table-toolbar/table-dropdown-filter.d.ts +13 -1
  13. package/library/packages/hybrid/table-core/src/table/components/table-toolbar/table-toolbar.d.ts +3 -0
  14. package/library/packages/molecules/src/dynamic-select/dynamic-select.d.ts +14 -0
  15. package/library/packages/molecules/src/faceted-filter/faceted-filter.d.ts +1 -0
  16. package/library/packages/molecules/src/folder-select/components/folder-select-tree/folder-select-tree.d.ts +16 -0
  17. package/library/packages/molecules/src/folder-select/folder-select.d.ts +18 -5
  18. package/library/packages/organisms/src/content-builder/content-builder.d.ts +23 -0
  19. package/library/packages/organisms/src/content-builder/content-builder.telemetry.d.ts +67 -0
  20. package/library/packages/organisms/src/content-builder/plugins/index.d.ts +1 -0
  21. package/library/packages/organisms/src/content-builder/plugins/telemetry.d.ts +15 -0
  22. package/library/react-web-component.d.ts +10 -1
  23. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "2.171.0",
4
+ "version": "2.173.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {
@@ -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>;
@@ -111,6 +111,15 @@ export default class CxContentBuilder extends CortexElement {
111
111
  * @default false
112
112
  */
113
113
  enableAssetFormatControls: boolean;
114
+ /**
115
+ * Whether the content builder emits `ol:ui-metric` events timing each user action,
116
+ * for collection as browser OpenTelemetry histograms.
117
+ *
118
+ * Off by default: when false no timers are armed and no events are dispatched, so an
119
+ * unmonitored site pays nothing for this being here.
120
+ * @default false
121
+ */
122
+ enableMetrics: boolean;
114
123
  /**
115
124
  * Default asset format applied to image blocks.
116
125
  * Used as the initial format when a block is added, whether or not
@@ -221,6 +230,20 @@ export default class CxContentBuilder extends CortexElement {
221
230
  private readonly initializeCustomFrame;
222
231
  private containerDropdownObservers;
223
232
  private nextMapHoveredBadgeState;
233
+ /**
234
+ * Host callbacks handed to GrapesJS blocks and config UI, each timed via
235
+ * `measurePromise` so the promise's own settling is the completion signal.
236
+ *
237
+ * Getters, not fields set once in the constructor: a host can override
238
+ * `onRequestAsset` (etc.) on the element instance after construction but before
239
+ * these are read (e.g. `el.onRequestAsset = customFn`), and a constructor-time
240
+ * `.bind()` would have captured the original method forever, silently ignoring
241
+ * that override.
242
+ */
243
+ private get measuredOnRequestAsset();
244
+ private get measuredOnRequestDownloadFormat();
245
+ private get measuredOnConfigureWorkflow();
246
+ private get measuredOnRequestAssetFormat();
224
247
  get isDesigner(): boolean;
225
248
  get isTemplateEditable(): boolean;
226
249
  get isMultiLanguage(): boolean;
@@ -0,0 +1,67 @@
1
+ import { Component } from 'grapesjs';
2
+
3
+ export declare const UiAction: {
4
+ readonly AddBlock: "add_block";
5
+ readonly ConfigureWorkflow: "configure_workflow";
6
+ readonly DeviceSwitch: "device_switch";
7
+ readonly DuplicateBlock: "duplicate_block";
8
+ readonly EditorBoot: "editor_boot";
9
+ readonly MoveBlock: "move_block";
10
+ readonly OpenConfig: "open_config";
11
+ readonly PickAsset: "pick_asset";
12
+ readonly PickAssetFormat: "pick_asset_format";
13
+ readonly PickDownloadFormat: "pick_download_format";
14
+ readonly Redo: "redo";
15
+ readonly RemoveBlock: "remove_block";
16
+ readonly RichTextEdit: "rich_text_edit";
17
+ readonly SaveConfig: "save_config";
18
+ readonly SelectBlock: "select_block";
19
+ readonly Undo: "undo";
20
+ };
21
+ export type UiActionName = (typeof UiAction)[keyof typeof UiAction];
22
+ /** Mirrors the CMS5_BO.Data.MetricsIsEnabled parameter, passed in by the host VForm. */
23
+ export declare function setEditorMetricsEnabled(enabled: boolean): void;
24
+ /** Whether metrics are currently armed - the same flag `measureSync` and friends check. */
25
+ export declare function isEditorMetricsEnabled(): boolean;
26
+ export declare function dispatch(action: string, durationMs: number, component: string, blockType?: string): void;
27
+ /**
28
+ * Derive the block-type label from a GrapesJS component.
29
+ *
30
+ * Returns undefined for anything that is not a CMS5 block - a raw text node, a wrapper,
31
+ * an element the builder does not own - so those actions are recorded without a block
32
+ * dimension rather than under a misleading one.
33
+ */
34
+ export declare function blockTypeOf(component?: Component): string | undefined;
35
+ /**
36
+ * Time a synchronous action through to the paint that shows its result.
37
+ *
38
+ * Two nested frames, not one: the first callback still runs before the browser
39
+ * paints, so ending there would time the JavaScript and miss the layout and paint
40
+ * the user is actually waiting on.
41
+ */
42
+ export declare function measureSync(action: UiActionName, blockType?: string): void;
43
+ /**
44
+ * Time a synchronous action that started earlier, through to the paint that shows it.
45
+ *
46
+ * Needed for the editor commands: the only place that knows which block was
47
+ * involved is *after* the command has run, but the clock has to start before it.
48
+ * The caller keeps the start time and supplies the block type at the end, so the
49
+ * sample covers the whole action rather than only its trailing paint.
50
+ */
51
+ export declare function measureSyncFrom(startedAt: number, action: UiActionName, blockType?: string): void;
52
+ /**
53
+ * Start timing an action that finishes on its own schedule, and return the ender.
54
+ *
55
+ * Used where a paint is not the completion signal - opening the asset picker, saving
56
+ * a config, booting the editor. The returned function is safe to call more than once;
57
+ * only the first call records.
58
+ */
59
+ export declare function measureAsync(action: UiActionName, blockType?: string): () => void;
60
+ /**
61
+ * Wrap a promise-returning host callback so it reports how long it took.
62
+ *
63
+ * The picker is host code we hand control to, so the promise settling is the only
64
+ * reliable completion signal. Rejections are timed too and then rethrown untouched:
65
+ * a picker that fails slowly is exactly the case worth seeing.
66
+ */
67
+ export declare function measurePromise<TArgs extends unknown[], TResult>(action: UiActionName, fn: (...args: TArgs) => Promise<TResult>, blockType?: string): (...args: TArgs) => Promise<TResult>;
@@ -19,6 +19,7 @@ export { default as RichTextEditorPlugin } from './rich-text-editor';
19
19
  export * from './rich-text-editor/components';
20
20
  export { default as SearchBoxPlugin } from './search-box';
21
21
  export { default as TabsPlugin } from './tab-group';
22
+ export { default as TelemetryPlugin } from './telemetry';
22
23
  export { default as TextPlugin } from './text';
23
24
  export { default as TimelinePlugin } from './timeline';
24
25
  export { default as VideoPlugin } from './video';
@@ -0,0 +1,15 @@
1
+ import { Editor } from 'grapesjs';
2
+
3
+ export type TelemetryPluginOptions = {
4
+ bootStartedAt: number;
5
+ };
6
+ /**
7
+ * Subscribe to the editor's own event bus for edit-mode timing.
8
+ *
9
+ * A GrapesJS plugin rather than a function called after `grapesjs.init()`: all
10
+ * edit-mode instrumentation then lives alongside the other editor plugins and is
11
+ * wired the same way (`plugins: [...]`), instead of being a one-off call the reader
12
+ * has to notice separately.
13
+ */
14
+ declare const TelemetryPlugin: (editor: Editor, options: TelemetryPluginOptions) => void;
15
+ export default TelemetryPlugin;
@@ -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
  */
@@ -9769,6 +9774,10 @@
9769
9774
  * Whether to expose the asset format / transformation / download-format / asset-format-picker controls in the per-block config sidebar for image, video, gallery, carousel, and timeline blocks. <br/>@default false
9770
9775
  */
9771
9776
  enableAssetFormatControls?: boolean;
9777
+ /**
9778
+ * Whether the content builder emits `ol:ui-metric` events timing each user action, for collection as browser OpenTelemetry histograms. <br/> Off by default: when false no timers are armed and no events are dispatched, so an unmonitored site pays nothing for this being here. <br/>@default false
9779
+ */
9780
+ enableMetrics?: boolean;
9772
9781
  /**
9773
9782
  * Default asset format applied to image blocks. Used as the initial format when a block is added, whether or not `enable-asset-format-controls` is on. <br/>@default 'TR1'
9774
9783
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "2.171.0",
4
+ "version": "2.173.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {