ids-enterprise-wc 1.15.9-patch.5 → 1.15.9-patch.7
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.
- package/chunks/ids-chunk-4MSGTAOV-full.js +12 -0
- package/chunks/ids-chunk-4MSGTAOV-full.js.map +7 -0
- package/chunks/{ids-chunk-7URDZKCS-full.js → ids-chunk-7IP7SLQZ-full.js} +28 -2
- package/chunks/ids-chunk-7IP7SLQZ-full.js.map +7 -0
- package/chunks/{ids-chunk-LZU34NYE-full.js → ids-chunk-CSOF2USI-full.js} +12 -2
- package/chunks/{ids-chunk-LZU34NYE-full.js.map → ids-chunk-CSOF2USI-full.js.map} +2 -2
- package/chunks/{ids-chunk-FW4DOBQU-full.js → ids-chunk-FPEINRXY-full.js} +6 -10
- package/chunks/ids-chunk-FPEINRXY-full.js.map +7 -0
- package/chunks/{ids-chunk-UEVOEMEM-full.js → ids-chunk-HZO4QUAW-full.js} +358 -34
- package/chunks/ids-chunk-HZO4QUAW-full.js.map +7 -0
- package/chunks/{ids-chunk-HGKIZXDQ-full.js → ids-chunk-RLOOHWYV-full.js} +2 -2
- package/components/ids-button/ids-button.css +392 -43
- package/components/ids-checkbox/ids-checkbox.css +7 -580
- package/components/ids-data-grid/ids-data-grid-cell.js +1 -1
- package/components/ids-data-grid/ids-data-grid-column.d.ts +1 -0
- package/components/ids-data-grid/ids-data-grid-column.js +7 -0
- package/components/ids-data-grid/ids-data-grid-filters.js +2 -2
- package/components/ids-data-grid/ids-data-grid-header.d.ts +6 -2
- package/components/ids-data-grid/ids-data-grid-header.js +1 -1
- package/components/ids-data-grid/ids-data-grid-row.d.ts +6 -0
- package/components/ids-data-grid/ids-data-grid-row.js +2 -2
- package/components/ids-data-grid/ids-data-grid.d.ts +18 -1
- package/components/ids-data-grid/ids-data-grid.js +6 -5
- package/components/ids-date-picker/ids-date-picker.css +31 -389
- package/components/ids-layout-grid/ids-layout-grid.css +10 -21300
- package/components/ids-list-box/ids-list-box.css +66 -98
- package/components/ids-menu/ids-menu.css +335 -11
- package/components/ids-module-nav/ids-module-nav.css +24 -2465
- package/components/ids-tag/ids-tag.css +8 -152
- package/components/ids-toolbar/ids-toolbar.css +12 -122
- package/components/ids-trigger-field/ids-trigger-field.css +1681 -1165
- package/custom-elements.json +2090 -1869
- package/enterprise-wc.all.iife.js +395 -39
- package/enterprise-wc.all.iife.js.map +3 -3
- package/enterprise-wc.js +6 -5
- package/package.json +1 -1
- package/vscode.html-custom-data.json +1 -1
- package/chunks/ids-chunk-7URDZKCS-full.js.map +0 -7
- package/chunks/ids-chunk-FW4DOBQU-full.js.map +0 -7
- package/chunks/ids-chunk-UEVOEMEM-full.js.map +0 -7
- /package/chunks/{ids-chunk-HGKIZXDQ-full.js.map → ids-chunk-RLOOHWYV-full.js.map} +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Enterprise Web Components v1.15.9 (chunk/code split version all components)
|
|
3
|
+
* Copyright (c) 2026 Infor
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// src/components/ids-data-grid/ids-data-grid-column.ts
|
|
7
|
+
var DEFAULT_COLUMN_MIN_WIDTH = 12;
|
|
8
|
+
|
|
9
|
+
export {
|
|
10
|
+
DEFAULT_COLUMN_MIN_WIDTH
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=ids-chunk-4MSGTAOV-full.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/ids-data-grid/ids-data-grid-column.ts"],
|
|
4
|
+
"sourcesContent": ["import { type IdsColorValue } from '../../utils/ids-color-utils/ids-color-utils';\nimport type IdsDataGrid from './ids-data-grid';\nimport { IdsDataGridEditor } from './ids-data-grid-editors';\n\ntype IdsDateNumberOptions = Omit<Intl.DateTimeFormatOptions, 'localeMatcher'> & Omit<Intl.NumberFormatOptions, 'localeMatcher'> & {\n localeMatcher?: 'best fit' | 'lookup';\n};\n\nexport interface IdsDataGridColumnFormatOptions extends IdsDateNumberOptions {\n /* Set the style of the number */\n style?: 'decimal' | 'currency' | 'percent' | 'unit' | any;\n /* Sets the incoming locale */\n locale?: string;\n /** Sets the group (thousands) seperator (to something outside the current locale) */\n group?: string;\n /** Sets Intl.NumberFormat option to use grouping */\n useGrouping?: boolean;\n /** Sets the decimal seperator (to something outside the current locale) */\n decimal?: string;\n /** Date format to use for parsing ect */\n dateFormat?: string;\n /** Date format to use for parsing ect (more generic) */\n format?: string;\n /** legacy pattern for date formats */\n pattern?: string;\n /** Tag for the picker that it shows time */\n showTime?: boolean;\n}\n\nexport interface IdsDataGridColumnGroup {\n /* Set the id for the column group object */\n id?: string;\n /* Set the title/name for the column group */\n name?: string;\n /* Set the number of columns to span */\n colspan: number,\n /** Align the column text to either `left`, `center` or `right` */\n align?: string;\n /** Name of the header icon to use for formatters that support it */\n headerIcon?: string;\n /** Sets the header icon tooltip content */\n headerIconTooltip?: string;\n}\n\nexport interface IdsDataGridTooltipCallback {\n /* Column id */\n columnId?: string;\n /* Column data */\n columnData?: any;\n /* Column index */\n columnIndex?: number;\n /* Column group id */\n columnGroupId?: string;\n /* Column group data */\n columnGroupData?: any;\n /* Column group index */\n columnGroupIndex?: number;\n /* Field data */\n fieldData?: any;\n /* The grid api object */\n grid?: any;\n /* Is header group */\n isHeaderGroup?: boolean;\n /* Row data */\n rowData?: any;\n /* Row index */\n rowIndex?: number,\n /* The current text content */\n text?: string;\n /* Type of tooltip as unique identifier */\n type?: string;\n}\n\nexport interface IdsDataGridDatePickerOptions {\n /** Option to show today or not (for date type filters) */\n showToday?: boolean;\n /** Option to show apply button or not (for date type filters) */\n showApply?: boolean;\n /** Option to show cancel button or not (for date type filters) */\n showCancel?: boolean;\n /** Option to show clear button or not (for date type filters) */\n showClear?: boolean;\n /** First day of the week (for date type filters) */\n firstDayOfWeek?: number;\n /** Whether or not to show week numbers in the picklist (for date type filters) */\n showPicklistWeek?: boolean;\n /** Whether or not to show a list of months in the picklist (for date type filters) */\n showPicklistMonth?: boolean;\n /** Whether or not to show a list of years in the picklist (for date type filters) */\n showPicklistYear?: boolean;\n /** Show week numbers in front of each week of date picker (for date type filters) */\n showWeekNumbers?: boolean;\n /** Set whether or not to show current time in the time picker dropdowns */\n useCurrentTime?: boolean;\n /** Whether or not the component should be a range picker */\n useRange?: boolean;\n}\n\nexport interface IdsDataGridTooltipOptions {\n /* The tooltip placement */\n placement?: 'top' | 'right' | 'bottom' | 'left'\n /* Sets tooltip edge horizontal space */\n x?: number;\n /* Sets tooltip edge vertical space */\n y?: number;\n /* The header tooltip placement */\n headerPlacement?: 'top' | 'right' | 'bottom' | 'left';\n /* Sets tooltip edge horizontal space */\n headerX?: number;\n /* Sets tooltip edge vertical space */\n headerY?: number;\n /* The header icon tooltip placement */\n headerIconPlacement?: 'top' | 'right' | 'bottom' | 'left';\n /* Sets tooltip edge horizontal space */\n headerIconX?: number;\n /* Sets tooltip edge vertical space */\n headerIconY?: number;\n /* The filter button tooltip placement */\n filterButtonPlacement?: 'top' | 'right' | 'bottom' | 'left';\n /* Sets tooltip edge horizontal space */\n filterButtonX?: number;\n /* Sets tooltip edge vertical space */\n filterButtonY?: number;\n}\n\nexport interface IdsDataGridEditorValidation {\n /* Custom validation function */\n check: (input: any) => boolean;\n /* Validation error message */\n message: string;\n /** Validation Message Translation key */\n messageId?: string;\n /* Validation rul id */\n id: string;\n}\n\nexport interface IdsDataGridHeaderTextName {\n /** The header text for one line */\n text: string;\n /** The font style to use */\n emphasis?: 'normal' | 'subtle';\n}\n\nexport interface IdsDataGridColumn {\n /** The columns unique id */\n id: string;\n /** The columns name */\n name?: string | Array<IdsDataGridHeaderTextName>;\n /** The columns field in the array to use */\n field?: string;\n /** The subsitute text to use (for hyperlink and some formatters) */\n text?: string | ((row: number, value: any, column: IdsDataGridColumn, index: Record<string, any>) => string | undefined);\n /** Max value of a range */\n max?: number;\n /** Mininum value of a range */\n min?: number;\n /** Adds expand/collapse icon to a column */\n showHeaderExpander?: boolean;\n /** Allow column sorting */\n sortable?: boolean;\n /** Allow column hide/show */\n hideable?: boolean;\n /** Allow column resizing */\n resizable?: boolean;\n /** Adds a drag indicator and allows the columns to be moved by dragging */\n reorderable?: boolean;\n /** Set a column width in pixel or percent */\n width?: number | string;\n /** When width is 'max-content', controls text measurement: true uses raw values, false (default) uses formatted values */\n useValueForSizing?: boolean;\n /** Set a min column width for resizing */\n minWidth?: number | string;\n /** Set a max column width for resizing */\n maxWidth?: number | string;\n /** Hide a column to be shown later */\n hidden?: boolean;\n /** Column Formatter Function */\n formatter?: (\n rowData: Record<string, unknown>, columnData: IdsDataGridColumn, index: number, parentDataGrid: IdsDataGrid\n ) => string;\n /** Set the column to checked or unchecked (filtering) */\n isChecked?: (value: boolean) => boolean;\n /** If column is selected */\n isSelected?: boolean;\n /** Enable Href / Link Columns */\n href?: string | ((rowData: Record<string, unknown>, columnData: IdsDataGridColumn) => string);\n /** Fires for clickable formatters (like button) */\n click?: (rowData: Record<string, unknown>, columnData: IdsDataGridColumn, event: MouseEvent) => void;\n /** Fires for menuId formatters (like button) */\n selected?: (rowData: Record<string, unknown>, columnData: IdsDataGridColumn, event: CustomEvent) => void;\n /** Selector for menu id */\n menuId?: string;\n /** Get the color dynamically from a function or as text */\n // eslint-disable-next-line max-len\n color?: IdsColorValue | ((row: number, value: any, column: IdsDataGridColumn, index: Record<string, any>) => string | undefined);\n /** Suppress the ids-color tooltip */\n suppressColorTooltip?: boolean;\n /** Get the size dynamically from a function or as text */\n size?: string | ((row: number, value: any, column: IdsDataGridColumn, index: Record<string, any>) => string | undefined);\n /** Options to pass to the formatter */\n formatOptions?: IdsDataGridColumnFormatOptions;\n /** Column Filter to use */\n filterType?: string | any;\n /** Column Filter options to show */\n filterConditions?: any[];\n /** Options to pass to the filter */\n filterOptions?: {\n /** The columns unique id */\n columnId?: string;\n /** Define a custom id for the inputs */\n customId?: string | ((columnData: IdsDataGridColumn) => string);\n /** The label in the filter */\n label?: string;\n /** The size of the input field */\n size?: string;\n /** The filter type */\n type?: string;\n /** Disable the filter */\n disabled?: boolean;\n /** Make the filter readonly */\n readonly?: boolean;\n /** Date formation to show (for date type filters) */\n format?: string;\n /** Placeholder to show for empty inputs */\n placeholder?: string;\n /** The interval between minutes (for time type filters) */\n minuteInterval?: number;\n /** The interval between seconds (for time type filters) */\n secondInterval?: number;\n /** Sets the auto select attribute (for time type filters) */\n autoselect?: boolean;\n /** Sets the auto update attribute (for time type filters) */\n autoupdate?: boolean;\n /** If the filter type is \"contents\" lets you set a blank string to a text value (matched by ID) */\n notFilteredItem?: { value: string, label: string }\n /** For filter type input, sets the text to all upper case when typed */\n uppercase?: boolean;\n /** For filter type input, sets the text max lenght when typed */\n maxlength?: number;\n /** Adds the autocomplete attribute to the input element allowing for browser autocomplete */\n browserAutocomplete?: string\n } & IdsDataGridDatePickerOptions;\n /** Lets you make a dynamic filter function */\n filterFunction?: any;\n /** True if the row is selected */\n rowSelected?: boolean;\n /** True if the row is activated */\n rowActivated?: boolean;\n /** Sets a custom css-part for styling the cell */\n cssPart?: string | ((args: object) => string);\n /** Sets a custom css-part for styling cell when it's selected */\n cellSelectedCssPart?: string | ((args: object) => string);\n /** Pass the type option to formatters that support it */\n type?: string;\n /** Disable the column with a boolean or a dynamic function */\n disabled?: boolean | ((row: number, value: any, col: IdsDataGridColumn, item: Record<string, any>) => boolean);\n /** Make the column readonly with a boolean or a dynamic function */\n readonly?: boolean | ((row: number, value: any, col: IdsDataGridColumn, item: Record<string, any>) => boolean);\n /** Column will not be styled as readonly when the readonly property is true */\n excludeReadonlyStyling?: boolean;\n /** Name of the icon too use for formatters that support it */\n icon?: string | ((row: number, value: any, column: IdsDataGridColumn, index: Record<string, any>) => string | undefined);\n /** Name of the header icon */\n headerIcon?: string;\n /** Align the column to either `left`, `center` or `right` */\n align?: string;\n /** Separately align the filter row contents to either `left`, `center`, or `right` */\n filterAlign?: string;\n /** Seperately align the header to either `left`, `center` or `right` */\n headerAlign?: string;\n /** Freeze the columns to either the `left` or `right` sides */\n frozen?: string;\n /** If a tree or expandable row will set the state of the row */\n rowExpanded?: boolean;\n /** Sets the tooltip options */\n tooltipOptions?: IdsDataGridTooltipOptions | ((options: IdsDataGridTooltipCallback) => IdsDataGridTooltipOptions);\n /** Sets the tooltip content */\n tooltip?: string | ((options: IdsDataGridTooltipCallback) => string | Promise<string>);\n /** Sets the header tooltip content */\n headerTooltip?: string;\n /** Sets the header icon tooltip content */\n headerIconTooltip?: string;\n /** Sets the header filter button tooltip content */\n filterButtonTooltip?: string;\n /** Sets the tooltip css part */\n tooltipCssPart?: string | ((options: IdsDataGridTooltipCallback) => string);\n /** Sets the header tooltip css part */\n headerTooltipCssPart?: string;\n /** Sets the header icon tooltip css part */\n headerIconTooltipCssPart?: string;\n /** Sets the header filter button tooltip css part */\n filterButtonTooltipCssPart?: string;\n /** Sets the hyperlink behavior. options: 'default' | 'no-select' | 'de-select' | 'none' */\n hyperlinkBehavior?: string;\n /** Sets the character count to reveal when cell value is masked */\n textMaskCharacter?: number;\n /** Setup an editor */\n editor?: {\n type: 'input' | 'date' | 'time' | 'checkbox' | 'dropdown' | 'datepicker' | 'timepicker' | 'tree' | 'lookup' | 'password',\n inline?: boolean,\n /** If true, the editor icon will always be visible */\n showEditorIcons?: boolean;\n editor?: IdsDataGridEditor,\n editorSettings?: Record<string, unknown>,\n editorValidation?: IdsDataGridEditorValidation,\n },\n /** If a true will set the text to uppercase */\n uppercase?: boolean | 'true' | ((type: 'body-cell' | 'header-cell', col: IdsDataGridColumn, index?: number, value?: any, item?: Record<string, any>) => boolean);\n /** If set to false the column will not be exported in exportToExcel functionality */\n exportable?: boolean\n /** Function to transform values during export */\n exportFormatter?: (value: unknown, rowData?: Record<any, unknown>) => unknown;\n /** If true, shows a red asterisk (*) next to the column header text to indicate a required field */\n required?: boolean;\n}\n\nexport const DEFAULT_COLUMN_MIN_WIDTH = 12;\n"],
|
|
5
|
+
"mappings": ";;;;;;AA4TO,IAAM,2BAA2B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
} from "./ids-chunk-U4UNMGHM-full.js";
|
|
28
28
|
|
|
29
29
|
// src/components/ids-data-grid/ids-data-grid-header.ts
|
|
30
|
-
var _columns, _IdsDataGridHeader_instances, attachEventHandlers_fn, attachSortHandler_fn, attachSelectionHandler_fn, attachResizeHandlers_fn, attachReorderHandlers_fn, attachFilterBtnHandler_fn;
|
|
30
|
+
var _activeColumn, _columns, _IdsDataGridHeader_instances, attachEventHandlers_fn, attachSortHandler_fn, attachSelectionHandler_fn, attachResizeHandlers_fn, attachReorderHandlers_fn, attachFilterBtnHandler_fn, attachFocusHandlers_fn;
|
|
31
31
|
var IdsDataGridHeader = class extends ids_events_mixin_default(IdsElement) {
|
|
32
32
|
constructor() {
|
|
33
33
|
super({ noShadowRoot: true });
|
|
@@ -39,6 +39,7 @@ var IdsDataGridHeader = class extends ids_events_mixin_default(IdsElement) {
|
|
|
39
39
|
* Tracks the state of the header expander
|
|
40
40
|
*/
|
|
41
41
|
__publicField(this, "isHeaderExpanderCollapsed", false);
|
|
42
|
+
__privateAdd(this, _activeColumn, -1);
|
|
42
43
|
/** @see IdsDataGridHeader.columns */
|
|
43
44
|
__privateAdd(this, _columns);
|
|
44
45
|
this.state = {
|
|
@@ -61,6 +62,13 @@ var IdsDataGridHeader = class extends ids_events_mixin_default(IdsElement) {
|
|
|
61
62
|
get expanderIcons() {
|
|
62
63
|
return [...this.querySelectorAll("ids-icon.header-expander")];
|
|
63
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Get the index of the active column.
|
|
67
|
+
* @returns {number} the index of the active column. Returns -1 if there are none.
|
|
68
|
+
*/
|
|
69
|
+
get activeColumn() {
|
|
70
|
+
return __privateGet(this, _activeColumn);
|
|
71
|
+
}
|
|
64
72
|
/* Returns all the columns in the header */
|
|
65
73
|
get columns() {
|
|
66
74
|
if (!__privateGet(this, _columns)?.length) {
|
|
@@ -362,6 +370,7 @@ var IdsDataGridHeader = class extends ids_events_mixin_default(IdsElement) {
|
|
|
362
370
|
return columnGroupHtml;
|
|
363
371
|
}
|
|
364
372
|
};
|
|
373
|
+
_activeColumn = new WeakMap();
|
|
365
374
|
_columns = new WeakMap();
|
|
366
375
|
_IdsDataGridHeader_instances = new WeakSet();
|
|
367
376
|
/**
|
|
@@ -374,6 +383,7 @@ attachEventHandlers_fn = function() {
|
|
|
374
383
|
__privateMethod(this, _IdsDataGridHeader_instances, attachResizeHandlers_fn).call(this);
|
|
375
384
|
__privateMethod(this, _IdsDataGridHeader_instances, attachReorderHandlers_fn).call(this);
|
|
376
385
|
__privateMethod(this, _IdsDataGridHeader_instances, attachFilterBtnHandler_fn).call(this);
|
|
386
|
+
__privateMethod(this, _IdsDataGridHeader_instances, attachFocusHandlers_fn).call(this);
|
|
377
387
|
};
|
|
378
388
|
/**
|
|
379
389
|
* Attach handlers to sort via clicking the headers
|
|
@@ -639,6 +649,22 @@ attachFilterBtnHandler_fn = function() {
|
|
|
639
649
|
}
|
|
640
650
|
});
|
|
641
651
|
};
|
|
652
|
+
/**
|
|
653
|
+
* Attach focus handlers to manage keyboard-only focus outlines
|
|
654
|
+
* @private
|
|
655
|
+
*/
|
|
656
|
+
attachFocusHandlers_fn = function() {
|
|
657
|
+
this.offEvent("focusout", this);
|
|
658
|
+
this.onEvent("focusout", this, (e) => {
|
|
659
|
+
const relatedTarget = e.relatedTarget;
|
|
660
|
+
if (!relatedTarget || relatedTarget?.nodeName === "IDS-DATA-GRID-CELL") __privateSet(this, _activeColumn, -1);
|
|
661
|
+
});
|
|
662
|
+
this.offEvent("mousedown.focusin", this);
|
|
663
|
+
this.onEvent("mousedown.focusin", this, (e) => {
|
|
664
|
+
const headerCell = e.target.closest(".ids-data-grid-header-cell");
|
|
665
|
+
__privateSet(this, _activeColumn, parseFloat(headerCell?.getAttribute("aria-colindex") || ""));
|
|
666
|
+
});
|
|
667
|
+
};
|
|
642
668
|
IdsDataGridHeader = __decorateClass([
|
|
643
669
|
customElement("ids-data-grid-header")
|
|
644
670
|
], IdsDataGridHeader);
|
|
@@ -646,4 +672,4 @@ IdsDataGridHeader = __decorateClass([
|
|
|
646
672
|
export {
|
|
647
673
|
IdsDataGridHeader
|
|
648
674
|
};
|
|
649
|
-
//# sourceMappingURL=ids-chunk-
|
|
675
|
+
//# sourceMappingURL=ids-chunk-7IP7SLQZ-full.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/ids-data-grid/ids-data-grid-header.ts"],
|
|
4
|
+
"sourcesContent": ["import { customElement } from '../../core/ids-decorators';\nimport IdsElement from '../../core/ids-element';\nimport IdsEventsMixin from '../../mixins/ids-events-mixin/ids-events-mixin';\nimport { escapeHTML } from '../../utils/ids-xss-utils/ids-xss-utils';\n\nimport type IdsDataGrid from './ids-data-grid';\nimport type IdsIcon from '../ids-icon/ids-icon';\nimport { IdsDataGridColumn, IdsDataGridColumnGroup } from './ids-data-grid-column';\nimport IdsMenuButton from '../ids-menu-button/ids-menu-button';\n\n@customElement('ids-data-grid-header')\nexport default class IdsDataGridHeader extends IdsEventsMixin(IdsElement) {\n rootNode?: any;\n\n headerCheckbox?: HTMLElement;\n\n columnCheckbox?: NodeListOf<HTMLInputElement>;\n\n /**\n * Tracks the state of the header expander\n */\n isHeaderExpanderCollapsed = false;\n\n #activeColumn: number = -1;\n\n constructor() {\n super({ noShadowRoot: true });\n this.state = {\n headerMenuData: null\n };\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.#attachEventHandlers();\n }\n\n /**\n * Reference to the data grid parent\n * @returns {IdsDataGrid} the data grid parent\n */\n get dataGrid() {\n if (!this.rootNode) this.rootNode = (this.getRootNode() as any).host;\n return (this.rootNode) as IdsDataGrid;\n }\n\n /* Returns all the ids-icon.header-expander elements in an array */\n get expanderIcons(): IdsIcon[] {\n return [...this.querySelectorAll<IdsIcon>('ids-icon.header-expander')];\n }\n\n /**\n * Get the index of the active column.\n * @returns {number} the index of the active column. Returns -1 if there are none.\n */\n get activeColumn(): number {\n return this.#activeColumn;\n }\n\n /** @see IdsDataGridHeader.columns */\n #columns?: HTMLElement[];\n\n /* Returns all the columns in the header */\n get columns(): HTMLElement[] {\n if (!this.#columns?.length) {\n this.#columns = [...this.querySelectorAll<HTMLElement>('.ids-data-grid-header-cell')];\n }\n return this.#columns;\n }\n\n /**\n * Returns all the columns in the header\n * @see IdsDataGridCell.isOnScreen()\n * @returns {HTMLElement[]} array of onscreen header columns\n */\n get columnsOnscreen(): HTMLElement[] {\n return [...this.querySelectorAll<HTMLElement>('.ids-data-grid-header-cell[column-onscreen]')];\n }\n\n /**\n * Handle all header related events\n * @private\n */\n #attachEventHandlers() {\n this.#attachSelectionHandler();\n this.#attachSortHandler();\n this.#attachResizeHandlers();\n this.#attachReorderHandlers();\n this.#attachFilterBtnHandler();\n this.#attachFocusHandlers();\n }\n\n /**\n * Attach handlers to sort via clicking the headers\n * @private\n */\n #attachSortHandler() {\n this.offEvent('click.sort', this);\n this.onEvent('click.sort', this, (e: any) => {\n // Dont sort on resize\n if (this.dataGrid?.isResizing) {\n this.dataGrid.isResizing = false;\n return;\n }\n\n if (this.dataGrid?.isSelecting) {\n this.dataGrid.isSelecting = false;\n return;\n }\n\n // Expander collapse/expand all expandable or tree rows\n if (e.target?.classList?.contains('header-expander')) {\n const isColumnHeaderExpander = e.target?.closest('.column-header-expander');\n if (!isColumnHeaderExpander && !this.dataGrid?.showHeaderExpander) return;\n\n const wasHeaderExpanderCollapsed = this.isHeaderExpanderCollapsed;\n this.isHeaderExpanderCollapsed = !wasHeaderExpanderCollapsed;\n\n if (wasHeaderExpanderCollapsed) {\n this.dataGrid.expandAll();\n } else {\n this.dataGrid.collapseAll();\n }\n return;\n }\n\n const sortableHeaderCell = e.target.closest('.is-sortable')?.closest('.ids-data-grid-header-cell');\n if (!sortableHeaderCell) return;\n const id = sortableHeaderCell.getAttribute('column-id');\n const state = sortableHeaderCell.getAttribute('aria-sort') !== 'ascending';\n\n if (!this.dataGrid.disableClientSort) {\n this.dataGrid?.setSortColumn(id, state);\n } else {\n this.dataGrid?.setSortState(id, state, true);\n }\n\n this.dataGrid?.updateSelectionBorder(true);\n this.dataGrid?.updateSelectedCells();\n });\n }\n\n /**\n * Attach handlers to sort via clicking the headers\n * @private\n */\n #attachSelectionHandler() {\n // Select all/deselect all\n this.headerCheckbox = <HTMLElement> this.querySelector('ids-data-grid-header .ids-data-grid-checkbox-container .ids-data-grid-checkbox');\n this.offEvent('click.select', this.headerCheckbox);\n this.onEvent('click.select', this.headerCheckbox, (e: any) => {\n if (e.target.classList.contains('checked') || e.target.classList.contains('indeterminate')) {\n this.dataGrid?.deSelectAllRows();\n } else {\n this.dataGrid?.selectAllRows();\n }\n });\n\n // Select column\n this.columnCheckbox = this.querySelectorAll<HTMLInputElement>('ids-data-grid-header .ids-data-grid-header-text .ids-checkbox input');\n for (let i = 0; i < this.columnCheckbox.length; i++) {\n this.offEvent('click', this.columnCheckbox[i]);\n this.onEvent('click', this.columnCheckbox[i], () => {\n const isSelect = this.columnCheckbox![i].checked;\n this.dataGrid.isSelecting = true;\n\n if (isSelect) {\n this.dataGrid?.selectColumn(i);\n } else {\n this.dataGrid?.deSelectColumn(i);\n }\n });\n }\n }\n\n /**\n * Establish Drag handlers for resize\n * Based on https://htmldom.dev/resize-columns-of-a-table/\n * @private\n */\n #attachResizeHandlers() {\n // Track the current position of mouse\n let x = 0;\n let w = 0;\n let columnId = '';\n let columnElem: HTMLElement;\n\n const mouseMoveHandler = (e: MouseEvent) => {\n e.preventDefault();\n // Determine how far the mouse has been moved\n const dx = e.clientX - x;\n\n // Check if this is the last column\n const isLastColumn = this.dataGrid?.columns[this.dataGrid.columns.length - 1]?.id === columnId;\n\n if (isLastColumn) {\n const headerElement = this.closest('.ids-data-grid-header');\n const parentElement = headerElement?.parentElement;\n\n if (headerElement && parentElement) {\n const newWidth = w + (!this.dataGrid?.localeAPI.isRTL() ? dx : -dx);\n\n // Only allow resize if the total width won't become smaller than the col general min width\n if (newWidth >= 92) {\n this.dataGrid?.setColumnWidth(columnId, newWidth);\n }\n }\n } else {\n // Not the last column, proceed with normal resize\n this.dataGrid?.setColumnWidth(columnId, w + (!this.dataGrid?.localeAPI.isRTL() ? dx : -dx));\n }\n\n this.dataGrid?.updateSelectionBorder();\n };\n\n // When user releases the mouse, remove the existing event listeners\n const mouseUpHandler = () => {\n document.removeEventListener('mousemove', mouseMoveHandler);\n document.removeEventListener('mouseup', mouseUpHandler);\n\n this?.style.setProperty('cursor', '');\n requestAnimationFrame(() => {\n this.dataGrid.isResizing = false;\n columnElem?.parentElement?.querySelectorAll('[draggable]').forEach((el: Element) => el.setAttribute('draggable', 'true'));\n });\n };\n\n // Add a resize Handler\n this.offEvent('mousedown.resize', this);\n this.onEvent('mousedown.resize', this, (e: MouseEvent) => {\n const target = (e.target as any);\n if (!target.classList.contains('resizer')) {\n return;\n }\n\n // Get the current mouse position\n x = e.clientX;\n\n // Calculate the current width of column\n columnElem = target.closest('.ids-data-grid-header-cell') as HTMLElement;\n columnElem.parentElement?.querySelectorAll('[draggable]').forEach((el) => el.setAttribute('draggable', 'false'));\n\n const colStyles = window.getComputedStyle(columnElem);\n columnId = columnElem.getAttribute('column-id') || '';\n w = parseInt(colStyles.width, 10);\n\n // Attach listeners for document's events\n document.addEventListener('mousemove', mouseMoveHandler);\n document.addEventListener('mouseup', mouseUpHandler);\n\n // Import the cursor behavior\n this?.style.setProperty('cursor', 'col-resize');\n\n // Prevent a click causing a sort\n this.dataGrid.isResizing = true;\n });\n }\n\n /**\n * Establish Reorder handlers for moving columns\n * @private\n */\n #attachReorderHandlers() {\n const dragArrows = this.dataGrid?.wrapper?.querySelector<HTMLElement>('.ids-data-grid-sort-arrows');\n let dragger: HTMLElement;\n let startIndex = 0;\n let dragInitiated = false;\n let dragParent: HTMLElement | null;\n\n this.offEvent('mousedown.reorder', this);\n this.onEvent('mousedown.reorder', this, (e: MouseEvent) => {\n const nodeName = (e.target as HTMLElement).nodeName;\n\n if (nodeName === 'IDS-INPUT') {\n dragParent = (e.target as HTMLElement).closest('.ids-data-grid-header-cell');\n dragParent?.setAttribute('draggable', 'false');\n }\n });\n\n this.offEvent('mouseup.reorder', this);\n this.onEvent('mouseup.reorder', this, () => {\n dragParent?.setAttribute('draggable', 'true');\n });\n\n // Style the Dragger\n this.offEvent('dragstart.reorder', this);\n this.onEvent('dragstart.reorder', this, (e: DragEvent) => {\n // Check if user is selecting text\n const selection = window.getSelection();\n if (selection && selection.toString().length > 0) {\n return;\n }\n const target = (e.target as any);\n const nodeName = (e.target as HTMLElement).nodeName;\n if (this.dataGrid.isResizing || !target || nodeName === 'IDS-INPUT') return;\n dragInitiated = true;\n target.classList.add('active-drag-column');\n dragger = target.cloneNode(true);\n dragger.classList.add('dragging');\n\n if (this.dataGrid?.localeAPI.isRTL()) {\n dragger.style.insetInlineStart = `${this.offsetLeft}px`;\n dragger.style.zIndex = '-5';\n }\n\n this?.appendChild(dragger);\n // Based on width of 110\n e?.dataTransfer?.setDragImage(dragger, this.dataGrid?.localeAPI.isRTL() ? 100 : 10, 18);\n startIndex = target.getAttribute('aria-colindex');\n });\n\n // Show the arrows\n this.offEvent('dragenter.reorder', this);\n this.onEvent('dragenter.reorder', this, (e: DragEvent) => {\n if (!dragInitiated) {\n // Accept Dropped Text\n if ((e.target as HTMLElement)?.getAttribute('color-variant') === 'alternate-formatter') {\n (e.target as any).style.backgroundColor = 'var(--ids-data-grid-filter-input-drop-background-color)';\n }\n return;\n }\n const cell = (e.target as any).closest('.ids-data-grid-header-cell');\n if (!cell) return;\n if (cell.classList.contains('active-drag-column')) {\n dragArrows?.style.setProperty('display', 'none');\n return;\n }\n\n const rect = cell.getBoundingClientRect();\n const curIndex = parseInt(cell.getAttribute('aria-colindex') || '0', 10);\n const startIdx = parseInt(startIndex.toString() ?? '0', 10);\n\n let cellLeft = rect.left + (startIdx < curIndex ? rect.width + 1 : 1);\n const cellRight = rect.left + (startIdx < curIndex ? 1 : rect.width + 1);\n let offsetLeft = 0;\n if (this.offsetParent) {\n offsetLeft = this.offsetParent.getBoundingClientRect().left\n - (this.offsetParent as HTMLElement).offsetLeft;\n }\n cellLeft = cellLeft < 3 ? 0 : cellLeft;\n dragArrows?.style.setProperty('display', '');\n dragArrows?.style.setProperty('inset-inline-start', `${this.dataGrid?.localeAPI.isRTL() ? offsetLeft - cellRight : cellLeft - offsetLeft}px`);\n dragArrows?.style.setProperty('height', `${rect.height - 2}px`);\n dragArrows?.style.setProperty('display', 'block');\n\n e.preventDefault();\n });\n\n // Use a normal cursor (not drag and drop)\n this.offEvent('dragover.reorder', this);\n this.onEvent('dragover.reorder', this, (e: DragEvent) => {\n if (!dragInitiated) return;\n e.dataTransfer!.dropEffect = 'move';\n e.preventDefault();\n });\n\n this.offEvent('dragleave.reorder', this);\n this.onEvent('dragleave.reorder', this, (e: DragEvent) => {\n if (!dragInitiated && (e.target as HTMLElement)?.getAttribute('color-variant') === 'alternate-formatter') {\n (e.target as any).style.backgroundColor = '';\n }\n });\n\n const removeDragger = (e: DragEvent) => {\n this.querySelector('.active-drag-column')?.classList.remove('active-drag-column');\n dragger?.remove();\n dragArrows?.style.setProperty('display', 'none');\n e.preventDefault();\n };\n\n // Set everything temp element back to normal\n this.offEvent('dragend.reorder', this);\n this.onEvent('dragend.reorder', this, (e: DragEvent) => {\n if (!dragInitiated) {\n if ((e.target as HTMLElement)?.getAttribute('color-variant') === 'alternate-formatter') {\n (e.target as any).style.backgroundColor = '';\n }\n return;\n }\n dragInitiated = false;\n removeDragger(e);\n });\n\n this.offEvent('drop.reorder', this);\n this.onEvent('drop.reorder', this, (e: DragEvent) => {\n if (!dragInitiated) {\n if ((e.target as HTMLElement)?.getAttribute('color-variant') === 'alternate-formatter') {\n (e.target as any).style.backgroundColor = '';\n }\n return;\n }\n dragInitiated = false;\n const cell = (e.target as any).closest('.ids-data-grid-header-cell');\n if (!cell) return;\n this.dataGrid?.moveColumn(startIndex - 1, cell.getAttribute('aria-colindex') - 1);\n removeDragger(e);\n });\n }\n\n /**\n * Attaches the event handler for the filter button click event.\n */\n #attachFilterBtnHandler() {\n this.offEvent('click.filterbtn', this);\n this.onEvent('click.filterbtn', this, (evt: CustomEvent) => {\n const menuButton = evt.target;\n if (menuButton instanceof IdsMenuButton && menuButton.nextElementSibling?.nodeName !== 'IDS-POPUP-MENU') {\n const columnId = menuButton.getAttribute('column-id');\n const column = this.dataGrid.columns.find((col) => col.id === columnId);\n const btnId = menuButton.getAttribute('ref-id') ?? '';\n\n if (column?.filterType) {\n const popupTemplate = this.dataGrid.filters.filterButtonPopupTemplate(btnId, column.filterType.name, column);\n const gridWrapper = this.closest('.ids-data-grid-wrapper');\n if (gridWrapper) {\n const menuExists = gridWrapper.querySelector(`[target='#btn-${btnId}']`);\n if (!menuExists) gridWrapper.insertAdjacentHTML('beforeend', popupTemplate);\n }\n\n menuButton.configureMenu();\n menuButton.menuEl?.show();\n }\n }\n });\n }\n\n /**\n * Attach focus handlers to manage keyboard-only focus outlines\n * @private\n */\n #attachFocusHandlers() {\n this.offEvent('focusout', this);\n this.onEvent('focusout', this, (e: FocusEvent) => {\n const relatedTarget = (e.relatedTarget as HTMLElement);\n if (!relatedTarget || relatedTarget?.nodeName === 'IDS-DATA-GRID-CELL') this.#activeColumn = -1;\n });\n\n this.offEvent('mousedown.focusin', this);\n this.onEvent('mousedown.focusin', this, (e: MouseEvent) => {\n const headerCell = (e.target as HTMLElement).closest('.ids-data-grid-header-cell');\n this.#activeColumn = parseFloat(headerCell?.getAttribute('aria-colindex') || '');\n });\n }\n\n /**\n * Set header expander state\n */\n setIsHeaderExpanderCollapsed() {\n const all = this.dataGrid?.rows?.filter((r: any) => r?.hasAttribute('aria-expanded')) || [];\n const collapsedRows = all.filter((r: any) => r?.getAttribute('aria-expanded') === 'false');\n if (all.length && all.length === collapsedRows.length) this.isHeaderExpanderCollapsed = true;\n }\n\n /**\n * Sets the state of the ids-icon.header-expander elements to open/expanded.\n */\n openExpanderIcons() {\n this.isHeaderExpanderCollapsed = false;\n this.expanderIcons?.forEach((iconElement: IdsIcon) => {\n iconElement.icon = `plusminus-folder-open`;\n });\n }\n\n /**\n * Sets the state of the ids-icon.header-expander elements to closed/collapsed.\n */\n closeExpanderIcons() {\n this.isHeaderExpanderCollapsed = true;\n this.expanderIcons?.forEach((iconElement: IdsIcon) => {\n iconElement.icon = `plusminus-folder-closed`;\n });\n }\n\n /**\n * Set the header checkbox state\n * @private\n */\n setHeaderCheckbox() {\n if (!this.dataGrid?.rowSelection || this.dataGrid?.rowSelection === 'single' || !this.headerCheckbox) {\n return;\n }\n\n const selectedCount = this.dataGrid?.selectedRows.length;\n const dataCount = this.dataGrid?.data.length;\n\n if (selectedCount === 0) {\n this.headerCheckbox.classList.remove('indeterminate');\n this.headerCheckbox.classList.remove('checked');\n this.headerCheckbox.setAttribute('aria-checked', 'false');\n return;\n }\n\n if (selectedCount === dataCount) {\n this.headerCheckbox.classList.remove('indeterminate');\n this.headerCheckbox.classList.add('checked');\n this.headerCheckbox.setAttribute('aria-checked', 'true');\n return;\n }\n\n if (selectedCount !== dataCount) {\n this.headerCheckbox.classList.add('indeterminate');\n this.headerCheckbox.setAttribute('aria-checked', 'mixed');\n }\n }\n\n /**\n * Set the checked status on the column header checkbox\n * @param {number} index Column index\n * @param {boolean} value True for checked, false for unchecked\n */\n setColumnCheckbox(index: number, value: boolean) {\n if (this.columnCheckbox && this.columnCheckbox[index]) {\n const checkbox = this.columnCheckbox[index] as HTMLInputElement;\n checkbox.checked = value;\n }\n }\n\n /**\n * Sets the disabled attribute of header checkbox\n * @param {boolean} value attribute value to set\n */\n disableHeaderCheckbox(value: boolean) {\n if (!this.headerCheckbox) {\n return;\n }\n\n this.headerCheckbox.setAttribute('disabled', String(value));\n this.headerCheckbox.parentElement?.setAttribute('disabled', String(value));\n }\n\n /**\n * Sets the disabled attribute of header checkbox\n * @param {boolean} value attribute value to set\n */\n hideHeaderCheckbox(value: boolean) {\n if (!this.headerCheckbox) {\n return;\n }\n\n if (value) {\n this.headerCheckbox.setAttribute('hidden', String(value));\n } else {\n this.headerCheckbox.removeAttribute('hidden');\n }\n }\n\n /**\n * Set the sort column and sort direction on the UI only\n * @param {string} id The column id (or field) to set\n * @param {boolean} ascending Sort ascending (lowest first) or descending (lowest last)\n */\n setSortState(id: string, ascending: boolean) {\n const sortedHeaders = [...this!.querySelectorAll('.is-sortable')]\n .map((sorted) => sorted.closest('.ids-data-grid-header-cell'));\n sortedHeaders.forEach((header) => header?.removeAttribute('aria-sort'));\n\n const header = this.querySelector(`[column-id=\"${id}\"]`);\n if (header && sortedHeaders.includes(header)) {\n header.setAttribute('aria-sort', ascending ? 'ascending' : 'descending');\n }\n }\n\n /**\n * Resets sort header sort states\n */\n resetSortStates() {\n this.querySelectorAll('.ids-data-grid-header-cell').forEach((elem) => elem.removeAttribute('aria-sort'));\n }\n\n /**\n * Set filter row to be shown or hidden\n * @private\n * @returns {object} This API object for chaining\n */\n setFilterRow() {\n const nodes = this?.querySelectorAll('.ids-data-grid-header-cell-filter-wrapper');\n nodes?.forEach((n) => n?.classList?.[this.dataGrid?.filterable ? 'remove' : 'add']('hidden'));\n this.dataGrid?.triggerEvent(this.dataGrid?.filterable ? 'filterrowopened' : 'filterrowclosed', this.dataGrid, {\n detail: { elem: this, filterable: this.dataGrid?.filterable }\n });\n return this;\n }\n\n /**\n * Return the Template for the header contents\n * @param {IdsDataGrid} datagrid visible columns in the data grid\n * @returns {string} The template\n */\n static template(datagrid: IdsDataGrid): string {\n const html = `<ids-data-grid-header class=\"ids-data-grid-header${datagrid.hasFrozenColumns ? ' is-frozen' : ''}\" role=\"rowgroup\" part=\"header\">\n <ids-data-grid-row class=\"ids-data-grid-row${datagrid.colSelection ? ' has-col-selection' : ''}\" role=\"row\">\n ${datagrid.visibleColumns.map((columnData: any, index: number) => `${this.headerCellTemplate(datagrid, columnData, index)}`).join('')}\n </ids-data-grid-row>\n </ids-data-grid-header>`;\n return this.columnGroupsTemplate(datagrid) + html;\n }\n\n /**\n * Returns the markup for a header cell.\n * @param {IdsDataGrid} dataGrid visible columns in the data grid\n * @param {IdsDataGridColumn} column The column info\n * @param {number} index The column index\n * @returns {string} The resuling header cell template\n */\n static headerCellTemplate(dataGrid: IdsDataGrid, column: IdsDataGridColumn, index: number) {\n const selectionCheckBoxTemplate = `\n <span class=\"ids-data-grid-checkbox-container\" disabled=\"${dataGrid.disableHeaderCheckbox}\">\n <span\n role=\"checkbox\"\n ${dataGrid.hideHeaderCheckbox ? 'hidden' : ''}\n disabled=\"${dataGrid.disableHeaderCheckbox}\"\n aria-checked=\"false\"\n aria-label=\"${column.name}\"\n class=\"ids-data-grid-checkbox\"\n >\n </span>\n </span>\n `;\n\n const sortIconSize = dataGrid.rowHeight === 'xxs' ? 'size=\"small\"' : '';\n const sortIndicatorTemplate = `\n <span class=\"sort-indicator\">\n <ids-icon icon=\"dropdown\" ${sortIconSize}></ids-icon>\n <ids-icon icon=\"dropdown\" ${sortIconSize}></ids-icon>\n </span>\n `;\n\n const expanderTemplate = `<ids-icon class=\"header-expander\" icon=\"plusminus-folder-closed\"></ids-icon>`;\n const resizerTemplate = `<span class=\"resizer\"></span>`;\n const reorderTemplate = `<div class=\"reorderer\"><ids-icon icon=\"drag\" size=\"medium\"></ids-icon></div>`;\n const showFormatterExpander = ['expander', 'tree'].includes(column.formatter?.name ?? '');\n const showHeaderExpander = column?.showHeaderExpander || showFormatterExpander;\n const expander = showHeaderExpander ? expanderTemplate : '';\n\n const selectionCheckbox = column.id !== 'selectionRadio' && column.id === 'selectionCheckbox';\n let colName = '';\n if (Array.isArray(column.name)) {\n colName = `\n ${escapeHTML(column.name[0].text)}\n <br>\n ${column.name[1].emphasis === 'subtle' ? '<small>' : ''}\n ${escapeHTML(column.name[1].text)}\n ${column.name[1].emphasis === 'subtle' ? '</small>' : ''}\n `;\n } else { colName = escapeHTML(column.name); }\n\n const headerName = column.id !== 'selectionRadio' && column.id !== 'selectionCheckbox' && colName ? colName : '';\n const headerLabel = `${dataGrid?.colSelection && column.id !== 'selectionRadio' && column.id !== 'selectionCheckbox'\n ? `<div class=\"ids-checkbox\">\n <label>\n <input type=\"checkbox\"/>\n <span class=\"checkmark\"></span>\n <span class=\"ids-text label-text header-text-content\">${headerName}</span>\n </label>\n </div>` : `<span class=\"header-text-content\">${headerName}</span>`}`;\n\n const headerContentTemplate = `\n ${selectionCheckbox ? selectionCheckBoxTemplate : ''}\n ${headerLabel}\n `.trim();\n\n let cssClasses = 'ids-data-grid-header-cell-content';\n cssClasses += column.sortable ? ' is-sortable' : '';\n cssClasses += selectionCheckbox ? ' has-selectioncheckbox vertical-align-center' : '';\n cssClasses += column.headerIcon ? ' has-headericon' : '';\n cssClasses += column.reorderable ? ' is-reorderable' : '';\n cssClasses += column?.showHeaderExpander ? ' column-header-expander' : '';\n\n // Content row cell template\n const headerContentWrapperTemplate = `<span class=\"${cssClasses}\">\n ${expander}\n ${column.sortable && (column.headerAlign === 'right' || (!column.headerAlign && column.align === 'right')) ? sortIndicatorTemplate : ''}\n <span class=\"ids-data-grid-header-text\">\n ${headerContentTemplate}\n </span>\n ${this.headerIconTemplate(column)}\n ${column.sortable && (column.headerAlign !== 'right' && (!column.headerAlign ? column.align !== 'right' : true)) ? sortIndicatorTemplate : ''}\n </span>${column.resizable ? resizerTemplate : ''}${column.reorderable ? reorderTemplate : ''}`;\n\n // Filter row cell template\n const headerFilterWrapperTemplate = dataGrid?.filters?.filterTemplate(column) || '';\n let align = column.align ? ` align-${column.align}` : '';\n if (column.headerAlign) {\n align = ` align-${column.headerAlign}`;\n }\n\n // Frozen Classes\n const lastFrozen = dataGrid?.leftFrozenColumns.length;\n let frozen = column?.frozen ? ` frozen frozen-${column?.frozen}${index + 1 === lastFrozen ? ' frozen-last' : ''}` : '';\n\n // Check for far left frozen cells just in case\n const lastFrozenData = dataGrid.visibleColumns.filter((obj) => obj.frozen === 'left').at(-1);\n const lastFrozenIndex = dataGrid.visibleColumns.findIndex((obj) => obj.id === lastFrozenData?.id);\n if (frozen === '' && index < lastFrozenIndex) {\n frozen = ` frozen frozen-${lastFrozenData?.frozen}`;\n column.frozen = lastFrozenData?.frozen;\n }\n\n if (index === lastFrozenIndex && frozen !== '' && frozen.indexOf('last') < 0) frozen += ` frozen-last`;\n\n const isUppercase = (): boolean => {\n if (typeof column?.uppercase === 'function') return column.uppercase('header-cell', column, index);\n return (column?.uppercase === 'true' || column?.uppercase === true);\n };\n\n let headerCssClasses = isUppercase() ? ' is-uppercase' : '';\n headerCssClasses += (column?.showHeaderExpander || column.sortable || column.reorderable) ? ' is-actionable' : '';\n headerCssClasses += column.required ? ' is-required' : '';\n\n // Header cell template\n const html = `\n <span\n class=\"ids-data-grid-header-cell${headerCssClasses}${align}${frozen}\"\n ${column.reorderable ? 'draggable=\"true\"' : ''}\n part=\"header-cell\"\n aria-colindex=\"${index + 1}\"\n column-id=\"${column.id}\"\n role=\"columnheader\">\n ${headerContentWrapperTemplate}\n ${headerFilterWrapperTemplate}\n </span>\n `;\n\n return html;\n }\n\n /**\n * Returns the markup for a header icon.\n * @param {IdsDataGridColumn | IdsDataGridColumnGroup} column The column info\n * @returns {string} The resuling header icon template\n */\n static headerIconTemplate(column: IdsDataGridColumn | IdsDataGridColumnGroup): string {\n const headerIcon = typeof column?.headerIcon === 'string' ? column.headerIcon : '';\n if (headerIcon === '') return '';\n\n const headerIconTooltip = column.headerIconTooltip || headerIcon;\n return `\n <span class=\"ids-data-grid-header-icon\" data-headericontooltip=\"${headerIconTooltip}\">\n <ids-icon icon=\"${headerIcon}\" size=\"medium\"></ids-icon>\n </span>`;\n }\n\n /**\n * Returns the markup for the grouped header cells.\n * @param {IdsDataGrid} dataGrid The datagrid reference\n * @returns {string} The resuling header cell template\n */\n static columnGroupsTemplate(dataGrid: IdsDataGrid) : string {\n if (!dataGrid?.columnGroups) {\n return '';\n }\n let columnGroupHtml = `<ids-data-grid-header class=\"ids-data-grid-header column-groups\" part=\"header\" role=\"rowgroup\">\n <div role=\"row\" class=\"ids-data-grid-row ids-data-grid-column-groups\">`;\n\n dataGrid?.columnGroups.forEach((columnGroup: IdsDataGridColumnGroup) => {\n const align = columnGroup.align ? ` align-${columnGroup.align}` : '';\n\n // Header cell template\n let cssClasses = 'ids-data-grid-header-cell-content';\n cssClasses += columnGroup.headerIcon ? ' has-headericon' : '';\n\n const html = `<span class=\"ids-data-grid-header-cell${align}\" part=\"header-cell\" column-group-id=\"${columnGroup.id || 'id'}\" role=\"columnheader\">\n <span class=\"${cssClasses}\">\n <span class=\"ids-data-grid-header-text\">\n ${columnGroup.name || ''}\n </span>\n ${this.headerIconTemplate(columnGroup)}\n </span>\n </span>`;\n columnGroupHtml += html;\n });\n\n columnGroupHtml += '</div></ids-data-grid-header>';\n\n return columnGroupHtml;\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAWA,IAAqB,oBAArB,cAA+C,yBAAe,UAAU,EAAE;AAAA,EAcxE,cAAc;AACZ,UAAM,EAAE,cAAc,KAAK,CAAC;AAfhC;AACE;AAEA;AAEA;AAKA;AAAA;AAAA;AAAA,qDAA4B;AAE5B,sCAAwB;AAqCxB;AAAA;AAjCE,SAAK,QAAQ;AAAA,MACX,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,oBAA0B;AACxB,UAAM,kBAAkB;AACxB,0BAAK,sDAAL;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAW;AACb,QAAI,CAAC,KAAK,SAAU,MAAK,WAAY,KAAK,YAAY,EAAU;AAChE,WAAQ,KAAK;AAAA,EACf;AAAA;AAAA,EAGA,IAAI,gBAA2B;AAC7B,WAAO,CAAC,GAAG,KAAK,iBAA0B,0BAA0B,CAAC;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,eAAuB;AACzB,WAAO,mBAAK;AAAA,EACd;AAAA;AAAA,EAMA,IAAI,UAAyB;AAC3B,QAAI,CAAC,mBAAK,WAAU,QAAQ;AAC1B,yBAAK,UAAW,CAAC,GAAG,KAAK,iBAA8B,4BAA4B,CAAC;AAAA,IACtF;AACA,WAAO,mBAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,kBAAiC;AACnC,WAAO,CAAC,GAAG,KAAK,iBAA8B,6CAA6C,CAAC;AAAA,EAC9F;AAAA;AAAA;AAAA;AAAA,EAkXA,+BAA+B;AAC7B,UAAM,MAAM,KAAK,UAAU,MAAM,OAAO,CAAC,MAAW,GAAG,aAAa,eAAe,CAAC,KAAK,CAAC;AAC1F,UAAM,gBAAgB,IAAI,OAAO,CAAC,MAAW,GAAG,aAAa,eAAe,MAAM,OAAO;AACzF,QAAI,IAAI,UAAU,IAAI,WAAW,cAAc,OAAQ,MAAK,4BAA4B;AAAA,EAC1F;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB;AAClB,SAAK,4BAA4B;AACjC,SAAK,eAAe,QAAQ,CAAC,gBAAyB;AACpD,kBAAY,OAAO;AAAA,IACrB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB;AACnB,SAAK,4BAA4B;AACjC,SAAK,eAAe,QAAQ,CAAC,gBAAyB;AACpD,kBAAY,OAAO;AAAA,IACrB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB;AAClB,QAAI,CAAC,KAAK,UAAU,gBAAgB,KAAK,UAAU,iBAAiB,YAAY,CAAC,KAAK,gBAAgB;AACpG;AAAA,IACF;AAEA,UAAM,gBAAgB,KAAK,UAAU,aAAa;AAClD,UAAM,YAAY,KAAK,UAAU,KAAK;AAEtC,QAAI,kBAAkB,GAAG;AACvB,WAAK,eAAe,UAAU,OAAO,eAAe;AACpD,WAAK,eAAe,UAAU,OAAO,SAAS;AAC9C,WAAK,eAAe,aAAa,gBAAgB,OAAO;AACxD;AAAA,IACF;AAEA,QAAI,kBAAkB,WAAW;AAC/B,WAAK,eAAe,UAAU,OAAO,eAAe;AACpD,WAAK,eAAe,UAAU,IAAI,SAAS;AAC3C,WAAK,eAAe,aAAa,gBAAgB,MAAM;AACvD;AAAA,IACF;AAEA,QAAI,kBAAkB,WAAW;AAC/B,WAAK,eAAe,UAAU,IAAI,eAAe;AACjD,WAAK,eAAe,aAAa,gBAAgB,OAAO;AAAA,IAC1D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,kBAAkB,OAAe,OAAgB;AAC/C,QAAI,KAAK,kBAAkB,KAAK,eAAe,KAAK,GAAG;AACrD,YAAM,WAAW,KAAK,eAAe,KAAK;AAC1C,eAAS,UAAU;AAAA,IACrB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,sBAAsB,OAAgB;AACpC,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACF;AAEA,SAAK,eAAe,aAAa,YAAY,OAAO,KAAK,CAAC;AAC1D,SAAK,eAAe,eAAe,aAAa,YAAY,OAAO,KAAK,CAAC;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAAmB,OAAgB;AACjC,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACF;AAEA,QAAI,OAAO;AACT,WAAK,eAAe,aAAa,UAAU,OAAO,KAAK,CAAC;AAAA,IAC1D,OAAO;AACL,WAAK,eAAe,gBAAgB,QAAQ;AAAA,IAC9C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,IAAY,WAAoB;AAC3C,UAAM,gBAAgB,CAAC,GAAG,KAAM,iBAAiB,cAAc,CAAC,EAC7D,IAAI,CAAC,WAAW,OAAO,QAAQ,4BAA4B,CAAC;AAC/D,kBAAc,QAAQ,CAACA,YAAWA,SAAQ,gBAAgB,WAAW,CAAC;AAEtE,UAAM,SAAS,KAAK,cAAc,eAAe,EAAE,IAAI;AACvD,QAAI,UAAU,cAAc,SAAS,MAAM,GAAG;AAC5C,aAAO,aAAa,aAAa,YAAY,cAAc,YAAY;AAAA,IACzE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB;AAChB,SAAK,iBAAiB,4BAA4B,EAAE,QAAQ,CAAC,SAAS,KAAK,gBAAgB,WAAW,CAAC;AAAA,EACzG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,eAAe;AACb,UAAM,QAAQ,MAAM,iBAAiB,2CAA2C;AAChF,WAAO,QAAQ,CAAC,MAAM,GAAG,YAAY,KAAK,UAAU,aAAa,WAAW,KAAK,EAAE,QAAQ,CAAC;AAC5F,SAAK,UAAU,aAAa,KAAK,UAAU,aAAa,oBAAoB,mBAAmB,KAAK,UAAU;AAAA,MAC5G,QAAQ,EAAE,MAAM,MAAM,YAAY,KAAK,UAAU,WAAW;AAAA,IAC9D,CAAC;AACD,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,SAAS,UAA+B;AAC7C,UAAM,OAAO,oDAAoD,SAAS,mBAAmB,eAAe,EAAE;AAAA,mDAC/D,SAAS,eAAe,uBAAuB,EAAE;AAAA,UAC1F,SAAS,eAAe,IAAI,CAAC,YAAiB,UAAkB,GAAG,KAAK,mBAAmB,UAAU,YAAY,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA;AAGzI,WAAO,KAAK,qBAAqB,QAAQ,IAAI;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,mBAAmB,UAAuB,QAA2B,OAAe;AACzF,UAAM,4BAA4B;AAAA,iEAC2B,SAAS,qBAAqB;AAAA;AAAA;AAAA,YAGnF,SAAS,qBAAqB,WAAW,EAAE;AAAA,sBACjC,SAAS,qBAAqB;AAAA;AAAA,wBAE5B,OAAO,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAO/B,UAAM,eAAe,SAAS,cAAc,QAAQ,iBAAiB;AACrE,UAAM,wBAAwB;AAAA;AAAA,oCAEE,YAAY;AAAA,oCACZ,YAAY;AAAA;AAAA;AAI5C,UAAM,mBAAmB;AACzB,UAAM,kBAAkB;AACxB,UAAM,kBAAkB;AACxB,UAAM,wBAAwB,CAAC,YAAY,MAAM,EAAE,SAAS,OAAO,WAAW,QAAQ,EAAE;AACxF,UAAM,qBAAqB,QAAQ,sBAAsB;AACzD,UAAM,WAAW,qBAAqB,mBAAmB;AAEzD,UAAM,oBAAoB,OAAO,OAAO,oBAAoB,OAAO,OAAO;AAC1E,QAAI,UAAU;AACd,QAAI,MAAM,QAAQ,OAAO,IAAI,GAAG;AAC9B,gBAAU;AAAA,UACN,WAAW,OAAO,KAAK,CAAC,EAAE,IAAI,CAAC;AAAA;AAAA,UAE/B,OAAO,KAAK,CAAC,EAAE,aAAa,WAAW,YAAY,EAAE;AAAA,UACrD,WAAW,OAAO,KAAK,CAAC,EAAE,IAAI,CAAC;AAAA,UAC/B,OAAO,KAAK,CAAC,EAAE,aAAa,WAAW,aAAa,EAAE;AAAA;AAAA,IAE5D,OAAO;AAAE,gBAAU,WAAW,OAAO,IAAI;AAAA,IAAG;AAE5C,UAAM,aAAa,OAAO,OAAO,oBAAoB,OAAO,OAAO,uBAAuB,UAAU,UAAU;AAC9G,UAAM,cAAc,GAAG,UAAU,gBAAgB,OAAO,OAAO,oBAAoB,OAAO,OAAO,sBAC7F;AAAA;AAAA;AAAA;AAAA,kEAI0D,UAAU;AAAA;AAAA,gBAE5D,qCAAqC,UAAU,SAAS;AAEpE,UAAM,wBAAwB;AAAA,QAC1B,oBAAoB,4BAA4B,EAAE;AAAA,QAClD,WAAW;AAAA,MACb,KAAK;AAEP,QAAI,aAAa;AACjB,kBAAc,OAAO,WAAW,iBAAiB;AACjD,kBAAc,oBAAoB,iDAAiD;AACnF,kBAAc,OAAO,aAAa,oBAAoB;AACtD,kBAAc,OAAO,cAAc,oBAAoB;AACvD,kBAAc,QAAQ,qBAAqB,4BAA4B;AAGvE,UAAM,+BAA+B,gBAAgB,UAAU;AAAA,UACzD,QAAQ;AAAA,UACR,OAAO,aAAa,OAAO,gBAAgB,WAAY,CAAC,OAAO,eAAe,OAAO,UAAU,WAAY,wBAAwB,EAAE;AAAA;AAAA,YAEnI,qBAAqB;AAAA;AAAA,UAEvB,KAAK,mBAAmB,MAAM,CAAC;AAAA,UAC/B,OAAO,aAAa,OAAO,gBAAgB,YAAY,CAAC,OAAO,cAAc,OAAO,UAAU,UAAU,SAAS,wBAAwB,EAAE;AAAA,eACtI,OAAO,YAAY,kBAAkB,EAAE,GAAG,OAAO,cAAc,kBAAkB,EAAE;AAG9F,UAAM,8BAA8B,UAAU,SAAS,eAAe,MAAM,KAAK;AACjF,QAAI,QAAQ,OAAO,QAAQ,UAAU,OAAO,KAAK,KAAK;AACtD,QAAI,OAAO,aAAa;AACtB,cAAQ,UAAU,OAAO,WAAW;AAAA,IACtC;AAGA,UAAM,aAAa,UAAU,kBAAkB;AAC/C,QAAI,SAAS,QAAQ,SAAS,kBAAkB,QAAQ,MAAM,GAAG,QAAQ,MAAM,aAAa,iBAAiB,EAAE,KAAK;AAGpH,UAAM,iBAAiB,SAAS,eAAe,OAAO,CAAC,QAAQ,IAAI,WAAW,MAAM,EAAE,GAAG,EAAE;AAC3F,UAAM,kBAAkB,SAAS,eAAe,UAAU,CAAC,QAAQ,IAAI,OAAO,gBAAgB,EAAE;AAChG,QAAI,WAAW,MAAM,QAAQ,iBAAiB;AAC5C,eAAS,kBAAkB,gBAAgB,MAAM;AACjD,aAAO,SAAS,gBAAgB;AAAA,IAClC;AAEA,QAAI,UAAU,mBAAmB,WAAW,MAAM,OAAO,QAAQ,MAAM,IAAI,EAAG,WAAU;AAExF,UAAM,cAAc,MAAe;AACjC,UAAI,OAAO,QAAQ,cAAc,WAAY,QAAO,OAAO,UAAU,eAAe,QAAQ,KAAK;AACjG,aAAQ,QAAQ,cAAc,UAAU,QAAQ,cAAc;AAAA,IAChE;AAEA,QAAI,mBAAmB,YAAY,IAAI,kBAAkB;AACzD,wBAAqB,QAAQ,sBAAsB,OAAO,YAAY,OAAO,cAAe,mBAAmB;AAC/G,wBAAoB,OAAO,WAAW,iBAAiB;AAGvD,UAAM,OAAO;AAAA;AAAA,0CAEyB,gBAAgB,GAAG,KAAK,GAAG,MAAM;AAAA,UACjE,OAAO,cAAc,qBAAqB,EAAE;AAAA;AAAA,yBAE7B,QAAQ,CAAC;AAAA,qBACb,OAAO,EAAE;AAAA;AAAA,UAEpB,4BAA4B;AAAA,UAC5B,2BAA2B;AAAA;AAAA;AAIjC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,mBAAmB,QAA4D;AACpF,UAAM,aAAa,OAAO,QAAQ,eAAe,WAAW,OAAO,aAAa;AAChF,QAAI,eAAe,GAAI,QAAO;AAE9B,UAAM,oBAAoB,OAAO,qBAAqB;AACtD,WAAO;AAAA,wEAC6D,iBAAiB;AAAA,0BAC/D,UAAU;AAAA;AAAA,EAElC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,qBAAqB,UAAgC;AAC1D,QAAI,CAAC,UAAU,cAAc;AAC3B,aAAO;AAAA,IACT;AACA,QAAI,kBAAkB;AAAA;AAGtB,cAAU,aAAa,QAAQ,CAAC,gBAAwC;AACtE,YAAM,QAAQ,YAAY,QAAQ,UAAU,YAAY,KAAK,KAAK;AAGlE,UAAI,aAAa;AACjB,oBAAc,YAAY,aAAa,oBAAoB;AAE3D,YAAM,OAAO,yCAAyC,KAAK,yCAAyC,YAAY,MAAM,IAAI;AAAA,uBACzG,UAAU;AAAA;AAAA,cAEnB,YAAY,QAAQ,EAAE;AAAA;AAAA,YAExB,KAAK,mBAAmB,WAAW,CAAC;AAAA;AAAA;AAG1C,yBAAmB;AAAA,IACrB,CAAC;AAED,uBAAmB;AAEnB,WAAO;AAAA,EACT;AACF;AAjvBE;AAqCA;AAjDF;AAAA;AAAA;AAAA;AAAA;AAwEE,yBAAoB,WAAG;AACrB,wBAAK,yDAAL;AACA,wBAAK,oDAAL;AACA,wBAAK,uDAAL;AACA,wBAAK,wDAAL;AACA,wBAAK,yDAAL;AACA,wBAAK,sDAAL;AACF;AAAA;AAAA;AAAA;AAAA;AAMA,uBAAkB,WAAG;AACnB,OAAK,SAAS,cAAc,IAAI;AAChC,OAAK,QAAQ,cAAc,MAAM,CAAC,MAAW;AAE3C,QAAI,KAAK,UAAU,YAAY;AAC7B,WAAK,SAAS,aAAa;AAC3B;AAAA,IACF;AAEA,QAAI,KAAK,UAAU,aAAa;AAC9B,WAAK,SAAS,cAAc;AAC5B;AAAA,IACF;AAGA,QAAI,EAAE,QAAQ,WAAW,SAAS,iBAAiB,GAAG;AACpD,YAAM,yBAAyB,EAAE,QAAQ,QAAQ,yBAAyB;AAC1E,UAAI,CAAC,0BAA0B,CAAC,KAAK,UAAU,mBAAoB;AAEnE,YAAM,6BAA6B,KAAK;AACxC,WAAK,4BAA4B,CAAC;AAElC,UAAI,4BAA4B;AAC9B,aAAK,SAAS,UAAU;AAAA,MAC1B,OAAO;AACL,aAAK,SAAS,YAAY;AAAA,MAC5B;AACA;AAAA,IACF;AAEA,UAAM,qBAAqB,EAAE,OAAO,QAAQ,cAAc,GAAG,QAAQ,4BAA4B;AACjG,QAAI,CAAC,mBAAoB;AACzB,UAAM,KAAK,mBAAmB,aAAa,WAAW;AACtD,UAAM,QAAQ,mBAAmB,aAAa,WAAW,MAAM;AAE/D,QAAI,CAAC,KAAK,SAAS,mBAAmB;AACpC,WAAK,UAAU,cAAc,IAAI,KAAK;AAAA,IACxC,OAAO;AACL,WAAK,UAAU,aAAa,IAAI,OAAO,IAAI;AAAA,IAC7C;AAEA,SAAK,UAAU,sBAAsB,IAAI;AACzC,SAAK,UAAU,oBAAoB;AAAA,EACrC,CAAC;AACH;AAAA;AAAA;AAAA;AAAA;AAMA,4BAAuB,WAAG;AAExB,OAAK,iBAA+B,KAAK,cAAc,gFAAgF;AACvI,OAAK,SAAS,gBAAgB,KAAK,cAAc;AACjD,OAAK,QAAQ,gBAAgB,KAAK,gBAAgB,CAAC,MAAW;AAC5D,QAAI,EAAE,OAAO,UAAU,SAAS,SAAS,KAAK,EAAE,OAAO,UAAU,SAAS,eAAe,GAAG;AAC1F,WAAK,UAAU,gBAAgB;AAAA,IACjC,OAAO;AACL,WAAK,UAAU,cAAc;AAAA,IAC/B;AAAA,EACF,CAAC;AAGD,OAAK,iBAAiB,KAAK,iBAAmC,qEAAqE;AACnI,WAAS,IAAI,GAAG,IAAI,KAAK,eAAe,QAAQ,KAAK;AACnD,SAAK,SAAS,SAAS,KAAK,eAAe,CAAC,CAAC;AAC7C,SAAK,QAAQ,SAAS,KAAK,eAAe,CAAC,GAAG,MAAM;AAClD,YAAM,WAAW,KAAK,eAAgB,CAAC,EAAE;AACzC,WAAK,SAAS,cAAc;AAE5B,UAAI,UAAU;AACZ,aAAK,UAAU,aAAa,CAAC;AAAA,MAC/B,OAAO;AACL,aAAK,UAAU,eAAe,CAAC;AAAA,MACjC;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,0BAAqB,WAAG;AAEtB,MAAI,IAAI;AACR,MAAI,IAAI;AACR,MAAI,WAAW;AACf,MAAI;AAEJ,QAAM,mBAAmB,CAAC,MAAkB;AAC1C,MAAE,eAAe;AAEjB,UAAM,KAAK,EAAE,UAAU;AAGvB,UAAM,eAAe,KAAK,UAAU,QAAQ,KAAK,SAAS,QAAQ,SAAS,CAAC,GAAG,OAAO;AAEtF,QAAI,cAAc;AAChB,YAAM,gBAAgB,KAAK,QAAQ,uBAAuB;AAC1D,YAAM,gBAAgB,eAAe;AAErC,UAAI,iBAAiB,eAAe;AAClC,cAAM,WAAW,KAAK,CAAC,KAAK,UAAU,UAAU,MAAM,IAAI,KAAK,CAAC;AAGhE,YAAI,YAAY,IAAI;AAClB,eAAK,UAAU,eAAe,UAAU,QAAQ;AAAA,QAClD;AAAA,MACF;AAAA,IACF,OAAO;AAEL,WAAK,UAAU,eAAe,UAAU,KAAK,CAAC,KAAK,UAAU,UAAU,MAAM,IAAI,KAAK,CAAC,GAAG;AAAA,IAC5F;AAEA,SAAK,UAAU,sBAAsB;AAAA,EACvC;AAGA,QAAM,iBAAiB,MAAM;AAC3B,aAAS,oBAAoB,aAAa,gBAAgB;AAC1D,aAAS,oBAAoB,WAAW,cAAc;AAEtD,UAAM,MAAM,YAAY,UAAU,EAAE;AACpC,0BAAsB,MAAM;AAC1B,WAAK,SAAS,aAAa;AAC3B,kBAAY,eAAe,iBAAiB,aAAa,EAAE,QAAQ,CAAC,OAAgB,GAAG,aAAa,aAAa,MAAM,CAAC;AAAA,IAC1H,CAAC;AAAA,EACH;AAGA,OAAK,SAAS,oBAAoB,IAAI;AACtC,OAAK,QAAQ,oBAAoB,MAAM,CAAC,MAAkB;AACxD,UAAM,SAAU,EAAE;AAClB,QAAI,CAAC,OAAO,UAAU,SAAS,SAAS,GAAG;AACzC;AAAA,IACF;AAGA,QAAI,EAAE;AAGN,iBAAa,OAAO,QAAQ,4BAA4B;AACxD,eAAW,eAAe,iBAAiB,aAAa,EAAE,QAAQ,CAAC,OAAO,GAAG,aAAa,aAAa,OAAO,CAAC;AAE/G,UAAM,YAAY,OAAO,iBAAiB,UAAU;AACpD,eAAW,WAAW,aAAa,WAAW,KAAK;AACnD,QAAI,SAAS,UAAU,OAAO,EAAE;AAGhC,aAAS,iBAAiB,aAAa,gBAAgB;AACvD,aAAS,iBAAiB,WAAW,cAAc;AAGnD,UAAM,MAAM,YAAY,UAAU,YAAY;AAG9C,SAAK,SAAS,aAAa;AAAA,EAC7B,CAAC;AACH;AAAA;AAAA;AAAA;AAAA;AAMA,2BAAsB,WAAG;AACvB,QAAM,aAAa,KAAK,UAAU,SAAS,cAA2B,4BAA4B;AAClG,MAAI;AACJ,MAAI,aAAa;AACjB,MAAI,gBAAgB;AACpB,MAAI;AAEJ,OAAK,SAAS,qBAAqB,IAAI;AACvC,OAAK,QAAQ,qBAAqB,MAAM,CAAC,MAAkB;AACzD,UAAM,WAAY,EAAE,OAAuB;AAE3C,QAAI,aAAa,aAAa;AAC5B,mBAAc,EAAE,OAAuB,QAAQ,4BAA4B;AAC3E,kBAAY,aAAa,aAAa,OAAO;AAAA,IAC/C;AAAA,EACF,CAAC;AAED,OAAK,SAAS,mBAAmB,IAAI;AACrC,OAAK,QAAQ,mBAAmB,MAAM,MAAM;AAC1C,gBAAY,aAAa,aAAa,MAAM;AAAA,EAC9C,CAAC;AAGD,OAAK,SAAS,qBAAqB,IAAI;AACvC,OAAK,QAAQ,qBAAqB,MAAM,CAAC,MAAiB;AAExD,UAAM,YAAY,OAAO,aAAa;AACtC,QAAI,aAAa,UAAU,SAAS,EAAE,SAAS,GAAG;AAChD;AAAA,IACF;AACA,UAAM,SAAU,EAAE;AAClB,UAAM,WAAY,EAAE,OAAuB;AAC3C,QAAI,KAAK,SAAS,cAAc,CAAC,UAAU,aAAa,YAAa;AACrE,oBAAgB;AAChB,WAAO,UAAU,IAAI,oBAAoB;AACzC,cAAU,OAAO,UAAU,IAAI;AAC/B,YAAQ,UAAU,IAAI,UAAU;AAEhC,QAAI,KAAK,UAAU,UAAU,MAAM,GAAG;AACpC,cAAQ,MAAM,mBAAmB,GAAG,KAAK,UAAU;AACnD,cAAQ,MAAM,SAAS;AAAA,IACzB;AAEA,UAAM,YAAY,OAAO;AAEzB,OAAG,cAAc,aAAa,SAAS,KAAK,UAAU,UAAU,MAAM,IAAI,MAAM,IAAI,EAAE;AACtF,iBAAa,OAAO,aAAa,eAAe;AAAA,EAClD,CAAC;AAGD,OAAK,SAAS,qBAAqB,IAAI;AACvC,OAAK,QAAQ,qBAAqB,MAAM,CAAC,MAAiB;AACxD,QAAI,CAAC,eAAe;AAElB,UAAK,EAAE,QAAwB,aAAa,eAAe,MAAM,uBAAuB;AACtF,QAAC,EAAE,OAAe,MAAM,kBAAkB;AAAA,MAC5C;AACA;AAAA,IACF;AACA,UAAM,OAAQ,EAAE,OAAe,QAAQ,4BAA4B;AACnE,QAAI,CAAC,KAAM;AACX,QAAI,KAAK,UAAU,SAAS,oBAAoB,GAAG;AACjD,kBAAY,MAAM,YAAY,WAAW,MAAM;AAC/C;AAAA,IACF;AAEA,UAAM,OAAO,KAAK,sBAAsB;AACxC,UAAM,WAAW,SAAS,KAAK,aAAa,eAAe,KAAK,KAAK,EAAE;AACvE,UAAM,WAAW,SAAS,WAAW,SAAS,KAAK,KAAK,EAAE;AAE1D,QAAI,WAAW,KAAK,QAAQ,WAAW,WAAW,KAAK,QAAQ,IAAI;AACnE,UAAM,YAAY,KAAK,QAAQ,WAAW,WAAW,IAAI,KAAK,QAAQ;AACtE,QAAI,aAAa;AACjB,QAAI,KAAK,cAAc;AACrB,mBAAa,KAAK,aAAa,sBAAsB,EAAE,OAClD,KAAK,aAA6B;AAAA,IACzC;AACA,eAAW,WAAW,IAAI,IAAI;AAC9B,gBAAY,MAAM,YAAY,WAAW,EAAE;AAC3C,gBAAY,MAAM,YAAY,sBAAsB,GAAG,KAAK,UAAU,UAAU,MAAM,IAAI,aAAa,YAAY,WAAW,UAAU,IAAI;AAC5I,gBAAY,MAAM,YAAY,UAAU,GAAG,KAAK,SAAS,CAAC,IAAI;AAC9D,gBAAY,MAAM,YAAY,WAAW,OAAO;AAEhD,MAAE,eAAe;AAAA,EACnB,CAAC;AAGD,OAAK,SAAS,oBAAoB,IAAI;AACtC,OAAK,QAAQ,oBAAoB,MAAM,CAAC,MAAiB;AACvD,QAAI,CAAC,cAAe;AACpB,MAAE,aAAc,aAAa;AAC7B,MAAE,eAAe;AAAA,EACnB,CAAC;AAED,OAAK,SAAS,qBAAqB,IAAI;AACvC,OAAK,QAAQ,qBAAqB,MAAM,CAAC,MAAiB;AACxD,QAAI,CAAC,iBAAkB,EAAE,QAAwB,aAAa,eAAe,MAAM,uBAAuB;AACxG,MAAC,EAAE,OAAe,MAAM,kBAAkB;AAAA,IAC5C;AAAA,EACF,CAAC;AAED,QAAM,gBAAgB,CAAC,MAAiB;AACtC,SAAK,cAAc,qBAAqB,GAAG,UAAU,OAAO,oBAAoB;AAChF,aAAS,OAAO;AAChB,gBAAY,MAAM,YAAY,WAAW,MAAM;AAC/C,MAAE,eAAe;AAAA,EACnB;AAGA,OAAK,SAAS,mBAAmB,IAAI;AACrC,OAAK,QAAQ,mBAAmB,MAAM,CAAC,MAAiB;AACtD,QAAI,CAAC,eAAe;AAClB,UAAK,EAAE,QAAwB,aAAa,eAAe,MAAM,uBAAuB;AACtF,QAAC,EAAE,OAAe,MAAM,kBAAkB;AAAA,MAC5C;AACA;AAAA,IACF;AACA,oBAAgB;AAChB,kBAAc,CAAC;AAAA,EACjB,CAAC;AAED,OAAK,SAAS,gBAAgB,IAAI;AAClC,OAAK,QAAQ,gBAAgB,MAAM,CAAC,MAAiB;AACnD,QAAI,CAAC,eAAe;AAClB,UAAK,EAAE,QAAwB,aAAa,eAAe,MAAM,uBAAuB;AACtF,QAAC,EAAE,OAAe,MAAM,kBAAkB;AAAA,MAC5C;AACA;AAAA,IACF;AACA,oBAAgB;AAChB,UAAM,OAAQ,EAAE,OAAe,QAAQ,4BAA4B;AACnE,QAAI,CAAC,KAAM;AACX,SAAK,UAAU,WAAW,aAAa,GAAG,KAAK,aAAa,eAAe,IAAI,CAAC;AAChF,kBAAc,CAAC;AAAA,EACjB,CAAC;AACH;AAAA;AAAA;AAAA;AAKA,4BAAuB,WAAG;AACxB,OAAK,SAAS,mBAAmB,IAAI;AACrC,OAAK,QAAQ,mBAAmB,MAAM,CAAC,QAAqB;AAC1D,UAAM,aAAa,IAAI;AACvB,QAAI,sBAAsB,iBAAiB,WAAW,oBAAoB,aAAa,kBAAkB;AACvG,YAAM,WAAW,WAAW,aAAa,WAAW;AACpD,YAAM,SAAS,KAAK,SAAS,QAAQ,KAAK,CAAC,QAAQ,IAAI,OAAO,QAAQ;AACtE,YAAM,QAAQ,WAAW,aAAa,QAAQ,KAAK;AAEnD,UAAI,QAAQ,YAAY;AACtB,cAAM,gBAAgB,KAAK,SAAS,QAAQ,0BAA0B,OAAO,OAAO,WAAW,MAAM,MAAM;AAC3G,cAAM,cAAc,KAAK,QAAQ,wBAAwB;AACzD,YAAI,aAAa;AACf,gBAAM,aAAa,YAAY,cAAc,iBAAiB,KAAK,IAAI;AACvE,cAAI,CAAC,WAAY,aAAY,mBAAmB,aAAa,aAAa;AAAA,QAC5E;AAEA,mBAAW,cAAc;AACzB,mBAAW,QAAQ,KAAK;AAAA,MAC1B;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAAA;AAAA;AAAA;AAAA;AAMA,yBAAoB,WAAG;AACrB,OAAK,SAAS,YAAY,IAAI;AAC9B,OAAK,QAAQ,YAAY,MAAM,CAAC,MAAkB;AAChD,UAAM,gBAAiB,EAAE;AACzB,QAAI,CAAC,iBAAiB,eAAe,aAAa,qBAAsB,oBAAK,eAAgB;AAAA,EAC/F,CAAC;AAED,OAAK,SAAS,qBAAqB,IAAI;AACvC,OAAK,QAAQ,qBAAqB,MAAM,CAAC,MAAkB;AACzD,UAAM,aAAc,EAAE,OAAuB,QAAQ,4BAA4B;AACjF,uBAAK,eAAgB,WAAW,YAAY,aAAa,eAAe,KAAK,EAAE;AAAA,EACjF,CAAC;AACH;AA/amB,oBAArB;AAAA,EADC,cAAc,sBAAsB;AAAA,GAChB;",
|
|
6
|
+
"names": ["header"]
|
|
7
|
+
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import {
|
|
6
6
|
IdsDataGridCell
|
|
7
|
-
} from "./ids-chunk-
|
|
7
|
+
} from "./ids-chunk-FPEINRXY-full.js";
|
|
8
8
|
import {
|
|
9
9
|
customElement
|
|
10
10
|
} from "./ids-chunk-KHLMW76I-full.js";
|
|
@@ -436,6 +436,16 @@ var IdsDataGridRow = class extends IdsElement {
|
|
|
436
436
|
columnIndex = Math.min(columnIndex, maxColumnIndex);
|
|
437
437
|
return cells[columnIndex] ?? null;
|
|
438
438
|
}
|
|
439
|
+
/**
|
|
440
|
+
* Get the cell HTMLElement by logical column index (accounting for rowspan)
|
|
441
|
+
* @param {number} logicalColumnIndex the zero-based logical column index
|
|
442
|
+
* @returns {IdsDataGridCell} html element for cell
|
|
443
|
+
*/
|
|
444
|
+
cellByLogicalIndex(logicalColumnIndex) {
|
|
445
|
+
const columnId = this.dataGrid.visibleColumns[logicalColumnIndex]?.id;
|
|
446
|
+
if (!columnId) return null;
|
|
447
|
+
return this.querySelector(`ids-data-grid-cell[aria-colindex="${logicalColumnIndex + 1}"]`) ?? null;
|
|
448
|
+
}
|
|
439
449
|
/**
|
|
440
450
|
* Is this row currently expanded
|
|
441
451
|
* @returns {boolean} true if expanded
|
|
@@ -616,4 +626,4 @@ IdsDataGridRow = __decorateClass([
|
|
|
616
626
|
export {
|
|
617
627
|
IdsDataGridRow
|
|
618
628
|
};
|
|
619
|
-
//# sourceMappingURL=ids-chunk-
|
|
629
|
+
//# sourceMappingURL=ids-chunk-CSOF2USI-full.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/ids-data-grid/ids-data-grid-row.ts"],
|
|
4
|
-
"sourcesContent": ["import { customElement } from '../../core/ids-decorators';\nimport { attributes } from '../../core/ids-attributes';\nimport { nextUntil } from '../../utils/ids-dom-utils/ids-dom-utils';\nimport { injectTemplate, stringToBool } from '../../utils/ids-string-utils/ids-string-utils';\nimport IdsElement from '../../core/ids-element';\nimport type IdsDataGrid from './ids-data-grid';\nimport type { IdsDataGridColumn } from './ids-data-grid-column';\nimport IdsDataGridCell from './ids-data-grid-cell';\n\n@customElement('ids-data-grid-row')\nexport default class IdsDataGridRow extends IdsElement {\n rootNode?: any;\n\n constructor() {\n super({ noShadowRoot: true });\n }\n\n /**\n * Return the attributes we handle as getters/setters\n * @returns {Array} The attributes in an array\n */\n static get attributes() {\n return [\n ...super.attributes,\n attributes.DRAGGABLE,\n attributes.DISABLED,\n attributes.ROW_INDEX,\n attributes.DATA_INDEX\n ];\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n if (oldValue === newValue) return;\n\n if (name === attributes.ROW_INDEX) {\n this.renderRow(Number(newValue));\n }\n }\n\n connectedCallback(): void {\n // NOTE: bypassing super.connectedCallback() for performance reasons\n this.#attachDragHandlers();\n }\n\n #attachDragHandlers(): void {\n if (!this.hasAttribute(attributes.DRAGGABLE)) return;\n\n const self = this;\n\n /**\n * Handle the drag start event for dragging rows\n * @param {DragEvent} evt The drag event\n * @returns {void}\n */\n function handleDragStart(evt: DragEvent): void {\n if (evt.dataTransfer) {\n const draggedRow = evt.currentTarget as IdsDataGridRow;\n const { left = 0, top = 0 } = draggedRow.getBoundingClientRect();\n evt.dataTransfer.setData('text/plain', String(self.rowIndex));\n evt.dataTransfer.setDragImage(self, (evt.clientX - left), (evt.clientY - top));\n evt.dataTransfer.dropEffect = 'move';\n\n draggedRow.classList.add('is-dragging');\n }\n }\n\n /**\n * Handle the drop event for dragging rows\n * @param {DragEvent} evt The drag event\n * @returns {void}\n */\n function handleDragDrop(evt: DragEvent): void {\n evt.preventDefault();\n\n const draggedRowIndex = Number(evt.dataTransfer?.getData('text'));\n if (Number.isNaN(draggedRowIndex) || draggedRowIndex < 0) return;\n\n const draggedRow = self.dataGrid.rowByIndex(draggedRowIndex);\n const targetRow = evt.currentTarget as IdsDataGridRow;\n if (draggedRow && targetRow && draggedRow !== targetRow) {\n const targetRowIndex = targetRow.rowIndex;\n\n // Reorder the datasource to reflect the new row order\n if (self.dataGrid?.datasource) {\n const data = [...self.dataGrid.datasource.currentData];\n\n // Use recordIndex to get the correct datasource record\n const draggedRecordIndex = draggedRow.recordIndex;\n const targetRecordIndex = targetRow.recordIndex;\n\n if (draggedRecordIndex !== null && targetRecordIndex !== null) {\n // Find the actual data records by their recordIndex\n const draggedRowData = data[draggedRecordIndex];\n if (draggedRowData) {\n // Remove the dragged row from its current position\n data.splice(draggedRecordIndex, 1);\n\n // Calculate the correct insertion index\n let insertIndex = targetRecordIndex;\n if (draggedRecordIndex < targetRecordIndex) {\n insertIndex = targetRecordIndex - 1;\n }\n\n // Insert the dragged row at the new position\n data.splice(insertIndex, 0, draggedRowData);\n self.dataGrid.datasource.data = data;\n }\n }\n }\n\n targetRow.insertAdjacentElement('beforebegin', draggedRow);\n draggedRow.classList.remove('is-dragging');\n\n // Trigger a rowreorder event\n self.dataGrid?.triggerEvent('rowreorder', self.dataGrid, {\n detail: {\n elem: self.dataGrid,\n row: self,\n data: self.rowData,\n draggedRowIndex,\n targetRowIndex,\n draggedRecordIndex: draggedRow.recordIndex,\n targetRecordIndex: targetRow.recordIndex\n }\n });\n }\n }\n\n self.addEventListener('dragstart', handleDragStart);\n self.addEventListener('drop', handleDragDrop);\n self.addEventListener('dragenter', (evt) => evt.preventDefault());\n self.addEventListener('dragover', (evt) => evt.preventDefault());\n self.addEventListener('dragleave', (evt) => evt.preventDefault());\n }\n\n /**\n * Reference to the data grid parent\n * @returns {IdsDataGrid} the data grid parent\n */\n get dataGrid() {\n if (!this.rootNode) this.rootNode = (this.getRootNode() as any).host;\n return (this.rootNode) as IdsDataGrid;\n }\n\n get data(): Record<string, any>[] {\n return this.dataGrid?.data || [];\n }\n\n get rowData(): Record<string, any> {\n return this.data[this.rowIndex] ?? {};\n }\n\n get columns(): IdsDataGridColumn[] {\n return this.dataGrid?.columns || [];\n }\n\n get visibleColumns(): IdsDataGridColumn[] {\n return this.dataGrid?.visibleColumns || [];\n }\n\n /* Returns all the editable cell elements in an array */\n get cellsEditable(): IdsDataGridCell[] {\n // NOTE: Array.from() seems slower than dotdotdot array-destructuring.\n return [\n ...this.querySelectorAll<IdsDataGridCell>('ids-data-grid-cell.is-editable:not(.is-readonly,.is-disabled)')\n ];\n }\n\n get isRowDisabled(): ((rowIndex: number, rowData: Record<string, any>) => boolean) | undefined {\n return this.dataGrid?.isRowDisabled;\n }\n\n get dimensions() {\n return this.getBoundingClientRect();\n }\n\n get expandIcon() {\n return this.querySelectorAll('.ids-data-grid-tree-container ids-button ids-icon');\n }\n\n /**\n * Set the row disabled state.\n * @param {number} value the value\n */\n set disabled(value: boolean) {\n if (stringToBool(value)) {\n this.setAttribute(attributes.DISABLED, '');\n this.setAttribute('aria-disabled', 'true');\n this.rowData.disabled = true;\n } else {\n this.removeAttribute(attributes.DISABLED);\n this.removeAttribute('aria-disabled');\n this.rowData.disabled = false;\n }\n }\n\n get disabled(): boolean { return this.hasAttribute(attributes.DISABLED); }\n\n /**\n * Set the row index. This index will be used to populate data from ids-data-grid.\n * @param {number} value the index\n */\n set rowIndex(value: number) {\n if (value !== null && value >= 0) {\n this.setAttribute(attributes.ROW_INDEX, String(value));\n } else {\n this.removeAttribute(attributes.ROW_INDEX);\n }\n }\n\n /**\n * Gets the row index # of this row.\n * @returns {number} the row-index\n */\n get rowIndex(): number { return Number(this.getAttribute(attributes.ROW_INDEX) ?? -1); }\n\n /** Implements row cache */\n static rowCache: { [key: string]: string } = {};\n\n /**\n * Return the row from the cache or template.\n * @param {number} row the row index\n * @returns {string} the row's html\n */\n cacheRow(row: number) {\n const dataGrid = this.dataGrid;\n const cacheHash = dataGrid.cacheHash;\n const rowIndex = Number(row);\n const selectState = dataGrid.data[row].rowSelected ? dataGrid.cacheSelected : dataGrid.cacheDeselected;\n const cacheKey = `${cacheHash}:${rowIndex}:${selectState}`;\n\n // This is current cache strategy via memoization.\n IdsDataGridRow.rowCache[cacheKey] = IdsDataGridRow.rowCache[cacheKey] ?? this.cellsHTML();\n return IdsDataGridRow.rowCache[cacheKey];\n }\n\n /**\n * Render the row again from the cache or template.\n * @param {number} row the row index\n */\n renderRow(row: number) {\n const cells = [...this.children] as IdsDataGridCell[];\n\n if (this.isRowDisabled && (this.rowData.disabled === undefined || this.rowData.disabled === null)) {\n this.disabled = this.isRowDisabled(row, this.rowData);\n }\n\n // Re-render datagrid cells instead datagrid rows for performance\n if (cells.length === this.visibleColumns.length) {\n [...cells].forEach((cell) => cell?.renderCell?.());\n } else {\n this.innerHTML = this.cacheRow(row);\n }\n\n this.#setAttributes();\n }\n\n /**\n * Refreshes the row's cells\n */\n refreshRow(): void {\n this.querySelectorAll<IdsDataGridCell>(':scope > ids-data-grid-cell').forEach((cell) => cell.refreshCell());\n this.#setAttributes();\n }\n\n /**\n * Validate all cells in this row\n */\n validateCells(): void {\n this.querySelectorAll<IdsDataGridCell>(':scope > ids-data-grid-cell').forEach((cell) => cell.validateCell());\n }\n\n /** Set row attributes and classes */\n #setAttributes() {\n const rowIndex = this.rowIndex;\n const rowData = this.rowData;\n const rowExpanded = this.isExpanded();\n let iconType = rowExpanded ? `plusminus-folder-open` : `plusminus-folder-closed`;\n if (this.dataGrid?.expandableRow) {\n iconType = rowExpanded ? `caret-up` : `caret-down`;\n }\n this.setAttribute('data-index', String(rowIndex));\n this.setAttribute('aria-rowindex', String(rowIndex + 1));\n\n if (rowData?.rowHidden) {\n this.hidden = true;\n this.classList.add('hidden');\n this.setAttribute('hidden', '');\n } else {\n this.hidden = false;\n this.classList.remove('hidden');\n this.removeAttribute('hidden');\n }\n\n if (rowData?.rowSelected) {\n this.selected = rowData.rowSelected;\n }\n if (!rowData?.rowSelected && this.classList.contains('selected')) {\n this.selected = rowData.rowSelected;\n }\n\n if (this.dataGrid?.expandableRow) {\n this.setAttribute('aria-expanded', String(!!rowExpanded));\n this.expandIcon?.forEach((icon) => icon.setAttribute('icon', iconType));\n\n const childRow = this.querySelector<HTMLElement>('.ids-data-grid-expandable-row');\n if (rowExpanded) {\n childRow?.removeAttribute('hidden');\n } else {\n childRow?.setAttribute('hidden', '');\n }\n }\n\n if (this.dataGrid?.groupable && rowData?.isGroupRow) {\n this.classList.add('is-group-row');\n this.setAttribute('aria-expanded', String(!!rowExpanded));\n if (rowData?.groupCollapsed) {\n this.querySelectorAll('.expand-button ids-icon').forEach((icon) => {\n icon?.setAttribute('icon', 'plusminus-folder-closed');\n });\n }\n }\n\n if (this.dataGrid?.treeGrid) {\n this.setAttribute('aria-setsize', rowData?.ariaSetSize);\n this.setAttribute('aria-level', rowData?.ariaLevel);\n this.setAttribute('aria-posinset', rowData?.ariaPosinset);\n\n if (rowData?.children?.length) {\n this.setAttribute('aria-expanded', String(!!rowExpanded));\n } else {\n // End nodes, nodes with no descendant nodes, should not have the aria-expanded attribute because,\n // if they were to have it, they would be incorrectly described to assistive technologies as parent nodes.\n // @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-expanded#treeitems\n this.removeAttribute('aria-expanded');\n }\n\n if ((rowData?.children as any)?.length) {\n this.expandIcon?.forEach((icon) => icon.setAttribute('icon', iconType));\n }\n }\n }\n\n /**\n * Toggle Selection on the row element (via click/keyboard in the main dataGrid)\n */\n toggleSelection() {\n this.dataGrid?.resetCache();\n const isSelected = this.classList.contains('selected');\n const index = Number(this.getAttribute('data-index'));\n\n if (isSelected && !this.dataGrid?.suppressRowDeselection) this.dataGrid?.deSelectRow(index);\n else this.dataGrid?.selectRow(index);\n\n this.dataGrid?.triggerEvent('selectionchanged', this.dataGrid, {\n detail: {\n elem: this,\n selectedRows: this.dataGrid?.selectedRows\n }\n });\n }\n\n /**\n * Toggle Expand/Collpase on the row element\n * @param {boolean} triggerEvent If true, will trigger event\n */\n toggleExpandCollapse(triggerEvent = true) {\n const isExpanded = this.isExpanded();\n const shouldCollapse = isExpanded === true;\n const shouldExpand = !shouldCollapse;\n\n if (shouldExpand) {\n this.doExpand();\n }\n if (shouldCollapse) {\n this.doCollapse();\n }\n\n if (triggerEvent) {\n const eventName = shouldExpand ? 'rowexpanded' : 'rowcollapsed';\n this.dataGrid?.triggerEvent(eventName, this.dataGrid, {\n bubbles: true,\n detail: {\n elem: this,\n row: this.rowIndex,\n data: this.rowData,\n }\n });\n }\n }\n\n /**\n * Toggle activation on the row element\n */\n toggleRowActivation() {\n const isActivated = this.classList.contains('activated');\n const currentRow = Number(this.getAttribute('aria-rowindex')) - 1;\n\n if (isActivated && !this.dataGrid?.suppressRowDeactivation) {\n this.dataGrid?.deactivateRow(currentRow);\n } else {\n if (this.dataGrid?.activatedRow.index) this.dataGrid?.deactivateRow(this.dataGrid?.activatedRow.index);\n this.dataGrid?.activateRow(currentRow);\n }\n\n this.dataGrid?.triggerEvent('activationchanged', this.dataGrid, {\n detail: {\n elem: this,\n data: this.dataGrid?.activatedRow,\n row: Number(this.getAttribute('data-index'))\n }\n });\n }\n\n /**\n * Select/Deselect all child rows\n * @param {boolean} isSelect true or false to select or deselect\n * @private\n */\n toggleChildRowSelection(isSelect: boolean) {\n const level = this?.getAttribute('aria-level');\n\n nextUntil(this, `[aria-level=\"${level}\"]`).forEach((childRow) => {\n const nodeLevel = Number(childRow.getAttribute('aria-level'));\n if (nodeLevel > Number(level) && this.dataGrid) {\n this.dataGrid.groupSelectsChildren = false;\n if (isSelect) this.dataGrid?.selectRow(Number(childRow.getAttribute('data-index')));\n else this.dataGrid?.deSelectRow(Number(childRow.getAttribute('data-index')));\n this.dataGrid.groupSelectsChildren = true;\n }\n });\n }\n\n /**\n * Hide/Show all child rows for groupable rows and fire events\n */\n toggleGroupChildRows() {\n const rowData = this.data[Number(this.dataset.index)];\n rowData.groupCollapsed = rowData.groupCollapsed || false;\n\n const noChildren = rowData.groupChildCount;\n let childRow = this as IdsDataGridRow;\n for (let i = 0; i < noChildren; i++) {\n childRow = childRow.nextElementSibling as any;\n if (!childRow) break;\n\n childRow.hidden = !rowData.groupCollapsed;\n this.data[Number(childRow.dataset.index)].rowHidden = !rowData.groupCollapsed;\n }\n\n this.querySelector('.expand-button')?.classList.toggle('expanded');\n rowData.groupCollapsed = !rowData.groupCollapsed;\n\n this.querySelectorAll('.expand-button ids-icon')?.forEach((icon) => {\n icon?.setAttribute('icon', `plusminus-folder-${rowData.groupCollapsed ? 'closed' : 'open'}`);\n });\n }\n\n /**\n * Select this row node\n */\n set selected(select: boolean) {\n if (select) {\n this.classList.add('selected');\n this.setAttribute('aria-selected', 'true');\n\n if (this.dataGrid?.rowSelection === 'mixed') {\n this?.classList.add('mixed');\n }\n } else {\n this.classList.remove('selected');\n this.removeAttribute('aria-selected');\n }\n }\n\n get selected(): boolean {\n return this.classList.contains('selected');\n }\n\n get recordIndex(): number | null {\n const rowData = this.rowData;\n\n let recordIndex = null;\n if (rowData !== undefined) {\n const keyValue = rowData[this.dataGrid.datasource.primaryKey];\n if (keyValue !== undefined) {\n const keyPair = this.dataGrid.datasource.primaryKey;\n recordIndex = this.dataGrid.datasource.getRecordIndex(keyPair, keyValue);\n }\n }\n return recordIndex;\n }\n\n /**\n * Updates some attributes/classes on a single row's cells\n * @private\n * @param {number} index the row index\n */\n updateCells(index: number) {\n const row = this;\n const cells = row.children;\n const rowData = this.rowData;\n\n if (cells?.length) {\n [...cells].forEach((cell: Element, columnIndex: number) => {\n const columnData = this.dataGrid?.columns[columnIndex];\n let cssPart = columnData?.cssPart || 'cell';\n\n // Updates selected rows to display the correct CSS part (also activated rows in mixed-selection mode)\n if (\n (this.dataGrid?.rowSelection === 'mixed' && row.classList.contains('activated'))\n || ((this.dataGrid?.rowSelection === 'single' || this.dataGrid?.rowSelection === 'multiple') && row.classList.contains('selected'))\n ) {\n if (columnData?.cellSelectedCssPart) cssPart = columnData?.cellSelectedCssPart;\n else cssPart = 'cell-selected';\n }\n\n if (typeof cssPart === 'function') {\n cssPart = cssPart({\n index,\n columnIndex,\n recordIndex: this.recordIndex,\n rowData\n });\n }\n cell.setAttribute('part', cssPart);\n });\n }\n }\n\n /**\n * Return the row's markup\n * @param {Record<string, unknown>} row The row data object\n * @param {number} index The data row index\n * @param {number} ariaRowIndex The indexes for aria-rowindex\n * @param {IdsDataGrid} dataGrid The dataGrid instance\n * @returns {string} The html string for the row\n */\n static template(row: Record<string, unknown>, index: number, ariaRowIndex: number, dataGrid: IdsDataGrid): string {\n let rowClasses = `${row?.rowSelected ? ' selected' : ''}`;\n rowClasses += `${row?.rowSelected && dataGrid?.rowSelection === 'mixed' ? ' mixed' : ''}`;\n rowClasses += `${row?.rowActivated ? ' activated' : ''}`;\n\n let treeAttrs = '';\n if (dataGrid?.treeGrid) {\n treeAttrs += ` aria-setsize=\"${row.ariaSetSize}\" aria-level=\"${row.ariaLevel}\" aria-posinset=\"${row.ariaPosinset}\"`;\n if ((row.children as any)?.length) {\n treeAttrs += (row.rowExpanded === false) ? ` aria-expanded=\"false\"` : ` aria-expanded=\"true\"`;\n }\n }\n\n if (dataGrid?.pagination === 'client-side' && dataGrid?.pageNumber > 1) {\n ariaRowIndex += (Number(dataGrid?.pageNumber) - 1) * Number(dataGrid?.pageSize);\n }\n\n const isHidden = row?.rowHidden ? ' hidden' : '';\n\n // Set disabled state thru key found in the dataset\n const isRowDisabled = (): boolean => {\n const isTrue = (v: any) => (typeof v !== 'undefined' && v !== null && ((typeof v === 'boolean' && v === true) || (typeof v === 'string' && v.toLowerCase() === 'true')));\n const disabled = row.disabled;\n return isTrue(typeof disabled === 'function' ? disabled(index, row) : disabled);\n };\n const canRowDisabled = isRowDisabled();\n const disabled = canRowDisabled ? ' disabled aria-disabled=\"true\"' : '';\n\n // Add and remove after to cache a temp disabled key,\n // so no need to run multiple times when rendering columns to check row disabled state\n if (row && canRowDisabled) row.idstempcanrowdisabled = canRowDisabled;\n\n return `\n <ids-data-grid-row\n row-index=\"${index}\"\n role=\"row\"\n part=\"row\"\n aria-rowindex=\"${ariaRowIndex}\"\n data-index=\"${index}\"\n ${isHidden}\n class=\"ids-data-grid-row${rowClasses}\"\n ${treeAttrs}\n ${disabled}\n >\n </ids-data-grid-row>\n `;\n }\n\n /**\n * Return the cells' markup\n * @returns {string} The html string for the row\n */\n cellsHTML(): string {\n const rowIndex = this.rowIndex;\n const ariaRowIndex = rowIndex;\n const rowData = this.data[rowIndex];\n const dataGrid = this.dataGrid;\n\n if (rowData.isGroupRow) {\n const expandButton = `\n <ids-button tabindex=\"-1\" class=\"expand-button\">\n <ids-icon icon=\"plusminus-folder-open\"></ids-icon>\n </ids-button>\n `;\n\n return `\n <ids-data-grid-cell\n role=\"gridcell\"\n part=\"cell\"\n class=\"ids-data-grid-cell is-group-cell\"\n aria-colindex=\"1\"\n >\n ${expandButton} ${rowData?.groupLabel}\n </ids-data-grid-cell>\n `;\n }\n\n let expandableRowHtml = '';\n if (dataGrid?.expandableRow) {\n const template = injectTemplate(dataGrid?.querySelector(`#${dataGrid?.expandableRowTemplate}`)?.innerHTML || '', rowData);\n expandableRowHtml = `<div class=\"ids-data-grid-expandable-row\"${this.isExpanded() ? '' : ` hidden`}>${template}</div>`;\n }\n\n const cellsHtml = dataGrid?.visibleColumns.map((column: IdsDataGridColumn, columnIndex: number) => {\n const content = IdsDataGridCell.template(rowData, column, ariaRowIndex, dataGrid);\n\n return `\n <ids-data-grid-cell\n role=\"gridcell\"\n aria-colindex=\"${columnIndex + 1}\"\n >\n ${content}\n </ids-data-grid-cell>\n `;\n }).join('');\n\n // Remove temp disabled key\n if (rowData?.idstempcanrowdisabled) delete rowData.idstempcanrowdisabled;\n\n return `${cellsHtml}${expandableRowHtml}`;\n }\n\n /**\n * Get the cell HTMLElement\n * @param {number} columnIndex the zero-based column index\n * @returns {IdsDataGridCell} html element for cell\n */\n cellByIndex(columnIndex: number): IdsDataGridCell | null {\n columnIndex = Math.max(columnIndex, 0);\n if (columnIndex === 0) {\n return this.querySelector<IdsDataGridCell>('ids-data-grid-cell') ?? null;\n }\n\n const cells = this.querySelectorAll<IdsDataGridCell>('ids-data-grid-cell');\n const maxColumnIndex = cells.length - 1;\n columnIndex = Math.min(columnIndex, maxColumnIndex);\n\n return cells[columnIndex] ?? null;\n }\n\n /**\n * Is this row currently expanded\n * @returns {boolean} true if expanded\n */\n isExpanded(): boolean {\n const rowData = this.dataGrid?.data[this.rowIndex];\n\n if (this.dataGrid?.expandableRow) {\n // expandableRows are collapsed by default, so only expand if rowExpanded is explicity \"true\"\n return rowData?.rowExpanded === true;\n }\n\n // all rows are expanded by default (i.e. tree-grid), unless rowExpanded is explicitly \"false\"\n return rowData?.rowExpanded !== false;\n }\n\n /**\n * Expand the row element\n */\n doExpand() {\n this.dataGrid?.updateDataset(this.rowIndex, { rowExpanded: true, rowHidden: false });\n\n // this.#setAttributes() will do this.setAttribute('aria-expanded', 'true');\n this.#setAttributes();\n\n if (this.dataGrid?.treeGrid) {\n const level = Number(this.getAttribute('aria-level')) || 1;\n const nextLevel = level + 1;\n let parentExpanded = this.isExpanded();\n\n nextUntil(this, `[aria-level=\"${level}\"]`).forEach((childRow) => {\n const childAriaLevel = Number(childRow.getAttribute('aria-level')) || 1;\n const shouldExpand = (childAriaLevel === nextLevel) || parentExpanded;\n if (shouldExpand) {\n const childRowIndex = Number(childRow.getAttribute('row-index'));\n this.dataGrid?.updateDataset(childRowIndex, { rowHidden: false });\n childRow.removeAttribute('hidden');\n parentExpanded = (childRow as IdsDataGridRow).isExpanded?.();\n }\n });\n }\n }\n\n /**\n * Collapse the row element\n */\n doCollapse() {\n this.dataGrid?.updateDataset(this.rowIndex, { rowExpanded: false });\n\n // this.#setAttributes() will do this.setAttribute('aria-expanded', 'false');\n this.#setAttributes();\n\n if (this.dataGrid?.treeGrid) {\n const level = Number(this.getAttribute('aria-level')) || 1;\n\n nextUntil(this, `[aria-level=\"${level}\"]`).forEach((childRow) => {\n const childAriaLevel = Number(childRow.getAttribute('aria-level')) || 1;\n if (childAriaLevel > level) {\n const childRowIndex = Number(childRow.getAttribute('row-index'));\n this.dataGrid?.updateDataset(childRowIndex, { rowHidden: true });\n childRow?.setAttribute('hidden', '');\n }\n });\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { customElement } from '../../core/ids-decorators';\nimport { attributes } from '../../core/ids-attributes';\nimport { nextUntil } from '../../utils/ids-dom-utils/ids-dom-utils';\nimport { injectTemplate, stringToBool } from '../../utils/ids-string-utils/ids-string-utils';\nimport IdsElement from '../../core/ids-element';\nimport type IdsDataGrid from './ids-data-grid';\nimport type { IdsDataGridColumn } from './ids-data-grid-column';\nimport IdsDataGridCell from './ids-data-grid-cell';\n\n@customElement('ids-data-grid-row')\nexport default class IdsDataGridRow extends IdsElement {\n rootNode?: any;\n\n constructor() {\n super({ noShadowRoot: true });\n }\n\n /**\n * Return the attributes we handle as getters/setters\n * @returns {Array} The attributes in an array\n */\n static get attributes() {\n return [\n ...super.attributes,\n attributes.DRAGGABLE,\n attributes.DISABLED,\n attributes.ROW_INDEX,\n attributes.DATA_INDEX\n ];\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n if (oldValue === newValue) return;\n\n if (name === attributes.ROW_INDEX) {\n this.renderRow(Number(newValue));\n }\n }\n\n connectedCallback(): void {\n // NOTE: bypassing super.connectedCallback() for performance reasons\n this.#attachDragHandlers();\n }\n\n #attachDragHandlers(): void {\n if (!this.hasAttribute(attributes.DRAGGABLE)) return;\n\n const self = this;\n\n /**\n * Handle the drag start event for dragging rows\n * @param {DragEvent} evt The drag event\n * @returns {void}\n */\n function handleDragStart(evt: DragEvent): void {\n if (evt.dataTransfer) {\n const draggedRow = evt.currentTarget as IdsDataGridRow;\n const { left = 0, top = 0 } = draggedRow.getBoundingClientRect();\n evt.dataTransfer.setData('text/plain', String(self.rowIndex));\n evt.dataTransfer.setDragImage(self, (evt.clientX - left), (evt.clientY - top));\n evt.dataTransfer.dropEffect = 'move';\n\n draggedRow.classList.add('is-dragging');\n }\n }\n\n /**\n * Handle the drop event for dragging rows\n * @param {DragEvent} evt The drag event\n * @returns {void}\n */\n function handleDragDrop(evt: DragEvent): void {\n evt.preventDefault();\n\n const draggedRowIndex = Number(evt.dataTransfer?.getData('text'));\n if (Number.isNaN(draggedRowIndex) || draggedRowIndex < 0) return;\n\n const draggedRow = self.dataGrid.rowByIndex(draggedRowIndex);\n const targetRow = evt.currentTarget as IdsDataGridRow;\n if (draggedRow && targetRow && draggedRow !== targetRow) {\n const targetRowIndex = targetRow.rowIndex;\n\n // Reorder the datasource to reflect the new row order\n if (self.dataGrid?.datasource) {\n const data = [...self.dataGrid.datasource.currentData];\n\n // Use recordIndex to get the correct datasource record\n const draggedRecordIndex = draggedRow.recordIndex;\n const targetRecordIndex = targetRow.recordIndex;\n\n if (draggedRecordIndex !== null && targetRecordIndex !== null) {\n // Find the actual data records by their recordIndex\n const draggedRowData = data[draggedRecordIndex];\n if (draggedRowData) {\n // Remove the dragged row from its current position\n data.splice(draggedRecordIndex, 1);\n\n // Calculate the correct insertion index\n let insertIndex = targetRecordIndex;\n if (draggedRecordIndex < targetRecordIndex) {\n insertIndex = targetRecordIndex - 1;\n }\n\n // Insert the dragged row at the new position\n data.splice(insertIndex, 0, draggedRowData);\n self.dataGrid.datasource.data = data;\n }\n }\n }\n\n targetRow.insertAdjacentElement('beforebegin', draggedRow);\n draggedRow.classList.remove('is-dragging');\n\n // Trigger a rowreorder event\n self.dataGrid?.triggerEvent('rowreorder', self.dataGrid, {\n detail: {\n elem: self.dataGrid,\n row: self,\n data: self.rowData,\n draggedRowIndex,\n targetRowIndex,\n draggedRecordIndex: draggedRow.recordIndex,\n targetRecordIndex: targetRow.recordIndex\n }\n });\n }\n }\n\n self.addEventListener('dragstart', handleDragStart);\n self.addEventListener('drop', handleDragDrop);\n self.addEventListener('dragenter', (evt) => evt.preventDefault());\n self.addEventListener('dragover', (evt) => evt.preventDefault());\n self.addEventListener('dragleave', (evt) => evt.preventDefault());\n }\n\n /**\n * Reference to the data grid parent\n * @returns {IdsDataGrid} the data grid parent\n */\n get dataGrid() {\n if (!this.rootNode) this.rootNode = (this.getRootNode() as any).host;\n return (this.rootNode) as IdsDataGrid;\n }\n\n get data(): Record<string, any>[] {\n return this.dataGrid?.data || [];\n }\n\n get rowData(): Record<string, any> {\n return this.data[this.rowIndex] ?? {};\n }\n\n get columns(): IdsDataGridColumn[] {\n return this.dataGrid?.columns || [];\n }\n\n get visibleColumns(): IdsDataGridColumn[] {\n return this.dataGrid?.visibleColumns || [];\n }\n\n /* Returns all the editable cell elements in an array */\n get cellsEditable(): IdsDataGridCell[] {\n // NOTE: Array.from() seems slower than dotdotdot array-destructuring.\n return [\n ...this.querySelectorAll<IdsDataGridCell>('ids-data-grid-cell.is-editable:not(.is-readonly,.is-disabled)')\n ];\n }\n\n get isRowDisabled(): ((rowIndex: number, rowData: Record<string, any>) => boolean) | undefined {\n return this.dataGrid?.isRowDisabled;\n }\n\n get dimensions() {\n return this.getBoundingClientRect();\n }\n\n get expandIcon() {\n return this.querySelectorAll('.ids-data-grid-tree-container ids-button ids-icon');\n }\n\n /**\n * Set the row disabled state.\n * @param {number} value the value\n */\n set disabled(value: boolean) {\n if (stringToBool(value)) {\n this.setAttribute(attributes.DISABLED, '');\n this.setAttribute('aria-disabled', 'true');\n this.rowData.disabled = true;\n } else {\n this.removeAttribute(attributes.DISABLED);\n this.removeAttribute('aria-disabled');\n this.rowData.disabled = false;\n }\n }\n\n get disabled(): boolean { return this.hasAttribute(attributes.DISABLED); }\n\n /**\n * Set the row index. This index will be used to populate data from ids-data-grid.\n * @param {number} value the index\n */\n set rowIndex(value: number) {\n if (value !== null && value >= 0) {\n this.setAttribute(attributes.ROW_INDEX, String(value));\n } else {\n this.removeAttribute(attributes.ROW_INDEX);\n }\n }\n\n /**\n * Gets the row index # of this row.\n * @returns {number} the row-index\n */\n get rowIndex(): number { return Number(this.getAttribute(attributes.ROW_INDEX) ?? -1); }\n\n /** Implements row cache */\n static rowCache: { [key: string]: string } = {};\n\n /**\n * Return the row from the cache or template.\n * @param {number} row the row index\n * @returns {string} the row's html\n */\n cacheRow(row: number) {\n const dataGrid = this.dataGrid;\n const cacheHash = dataGrid.cacheHash;\n const rowIndex = Number(row);\n const selectState = dataGrid.data[row].rowSelected ? dataGrid.cacheSelected : dataGrid.cacheDeselected;\n const cacheKey = `${cacheHash}:${rowIndex}:${selectState}`;\n\n // This is current cache strategy via memoization.\n IdsDataGridRow.rowCache[cacheKey] = IdsDataGridRow.rowCache[cacheKey] ?? this.cellsHTML();\n return IdsDataGridRow.rowCache[cacheKey];\n }\n\n /**\n * Render the row again from the cache or template.\n * @param {number} row the row index\n */\n renderRow(row: number) {\n const cells = [...this.children] as IdsDataGridCell[];\n\n if (this.isRowDisabled && (this.rowData.disabled === undefined || this.rowData.disabled === null)) {\n this.disabled = this.isRowDisabled(row, this.rowData);\n }\n\n // Re-render datagrid cells instead datagrid rows for performance\n if (cells.length === this.visibleColumns.length) {\n [...cells].forEach((cell) => cell?.renderCell?.());\n } else {\n this.innerHTML = this.cacheRow(row);\n }\n\n this.#setAttributes();\n }\n\n /**\n * Refreshes the row's cells\n */\n refreshRow(): void {\n this.querySelectorAll<IdsDataGridCell>(':scope > ids-data-grid-cell').forEach((cell) => cell.refreshCell());\n this.#setAttributes();\n }\n\n /**\n * Validate all cells in this row\n */\n validateCells(): void {\n this.querySelectorAll<IdsDataGridCell>(':scope > ids-data-grid-cell').forEach((cell) => cell.validateCell());\n }\n\n /** Set row attributes and classes */\n #setAttributes() {\n const rowIndex = this.rowIndex;\n const rowData = this.rowData;\n const rowExpanded = this.isExpanded();\n let iconType = rowExpanded ? `plusminus-folder-open` : `plusminus-folder-closed`;\n if (this.dataGrid?.expandableRow) {\n iconType = rowExpanded ? `caret-up` : `caret-down`;\n }\n this.setAttribute('data-index', String(rowIndex));\n this.setAttribute('aria-rowindex', String(rowIndex + 1));\n\n if (rowData?.rowHidden) {\n this.hidden = true;\n this.classList.add('hidden');\n this.setAttribute('hidden', '');\n } else {\n this.hidden = false;\n this.classList.remove('hidden');\n this.removeAttribute('hidden');\n }\n\n if (rowData?.rowSelected) {\n this.selected = rowData.rowSelected;\n }\n if (!rowData?.rowSelected && this.classList.contains('selected')) {\n this.selected = rowData.rowSelected;\n }\n\n if (this.dataGrid?.expandableRow) {\n this.setAttribute('aria-expanded', String(!!rowExpanded));\n this.expandIcon?.forEach((icon) => icon.setAttribute('icon', iconType));\n\n const childRow = this.querySelector<HTMLElement>('.ids-data-grid-expandable-row');\n if (rowExpanded) {\n childRow?.removeAttribute('hidden');\n } else {\n childRow?.setAttribute('hidden', '');\n }\n }\n\n if (this.dataGrid?.groupable && rowData?.isGroupRow) {\n this.classList.add('is-group-row');\n this.setAttribute('aria-expanded', String(!!rowExpanded));\n if (rowData?.groupCollapsed) {\n this.querySelectorAll('.expand-button ids-icon').forEach((icon) => {\n icon?.setAttribute('icon', 'plusminus-folder-closed');\n });\n }\n }\n\n if (this.dataGrid?.treeGrid) {\n this.setAttribute('aria-setsize', rowData?.ariaSetSize);\n this.setAttribute('aria-level', rowData?.ariaLevel);\n this.setAttribute('aria-posinset', rowData?.ariaPosinset);\n\n if (rowData?.children?.length) {\n this.setAttribute('aria-expanded', String(!!rowExpanded));\n } else {\n // End nodes, nodes with no descendant nodes, should not have the aria-expanded attribute because,\n // if they were to have it, they would be incorrectly described to assistive technologies as parent nodes.\n // @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-expanded#treeitems\n this.removeAttribute('aria-expanded');\n }\n\n if ((rowData?.children as any)?.length) {\n this.expandIcon?.forEach((icon) => icon.setAttribute('icon', iconType));\n }\n }\n }\n\n /**\n * Toggle Selection on the row element (via click/keyboard in the main dataGrid)\n */\n toggleSelection() {\n this.dataGrid?.resetCache();\n const isSelected = this.classList.contains('selected');\n const index = Number(this.getAttribute('data-index'));\n\n if (isSelected && !this.dataGrid?.suppressRowDeselection) this.dataGrid?.deSelectRow(index);\n else this.dataGrid?.selectRow(index);\n\n this.dataGrid?.triggerEvent('selectionchanged', this.dataGrid, {\n detail: {\n elem: this,\n selectedRows: this.dataGrid?.selectedRows\n }\n });\n }\n\n /**\n * Toggle Expand/Collpase on the row element\n * @param {boolean} triggerEvent If true, will trigger event\n */\n toggleExpandCollapse(triggerEvent = true) {\n const isExpanded = this.isExpanded();\n const shouldCollapse = isExpanded === true;\n const shouldExpand = !shouldCollapse;\n\n if (shouldExpand) {\n this.doExpand();\n }\n if (shouldCollapse) {\n this.doCollapse();\n }\n\n if (triggerEvent) {\n const eventName = shouldExpand ? 'rowexpanded' : 'rowcollapsed';\n this.dataGrid?.triggerEvent(eventName, this.dataGrid, {\n bubbles: true,\n detail: {\n elem: this,\n row: this.rowIndex,\n data: this.rowData,\n }\n });\n }\n }\n\n /**\n * Toggle activation on the row element\n */\n toggleRowActivation() {\n const isActivated = this.classList.contains('activated');\n const currentRow = Number(this.getAttribute('aria-rowindex')) - 1;\n\n if (isActivated && !this.dataGrid?.suppressRowDeactivation) {\n this.dataGrid?.deactivateRow(currentRow);\n } else {\n if (this.dataGrid?.activatedRow.index) this.dataGrid?.deactivateRow(this.dataGrid?.activatedRow.index);\n this.dataGrid?.activateRow(currentRow);\n }\n\n this.dataGrid?.triggerEvent('activationchanged', this.dataGrid, {\n detail: {\n elem: this,\n data: this.dataGrid?.activatedRow,\n row: Number(this.getAttribute('data-index'))\n }\n });\n }\n\n /**\n * Select/Deselect all child rows\n * @param {boolean} isSelect true or false to select or deselect\n * @private\n */\n toggleChildRowSelection(isSelect: boolean) {\n const level = this?.getAttribute('aria-level');\n\n nextUntil(this, `[aria-level=\"${level}\"]`).forEach((childRow) => {\n const nodeLevel = Number(childRow.getAttribute('aria-level'));\n if (nodeLevel > Number(level) && this.dataGrid) {\n this.dataGrid.groupSelectsChildren = false;\n if (isSelect) this.dataGrid?.selectRow(Number(childRow.getAttribute('data-index')));\n else this.dataGrid?.deSelectRow(Number(childRow.getAttribute('data-index')));\n this.dataGrid.groupSelectsChildren = true;\n }\n });\n }\n\n /**\n * Hide/Show all child rows for groupable rows and fire events\n */\n toggleGroupChildRows() {\n const rowData = this.data[Number(this.dataset.index)];\n rowData.groupCollapsed = rowData.groupCollapsed || false;\n\n const noChildren = rowData.groupChildCount;\n let childRow = this as IdsDataGridRow;\n for (let i = 0; i < noChildren; i++) {\n childRow = childRow.nextElementSibling as any;\n if (!childRow) break;\n\n childRow.hidden = !rowData.groupCollapsed;\n this.data[Number(childRow.dataset.index)].rowHidden = !rowData.groupCollapsed;\n }\n\n this.querySelector('.expand-button')?.classList.toggle('expanded');\n rowData.groupCollapsed = !rowData.groupCollapsed;\n\n this.querySelectorAll('.expand-button ids-icon')?.forEach((icon) => {\n icon?.setAttribute('icon', `plusminus-folder-${rowData.groupCollapsed ? 'closed' : 'open'}`);\n });\n }\n\n /**\n * Select this row node\n */\n set selected(select: boolean) {\n if (select) {\n this.classList.add('selected');\n this.setAttribute('aria-selected', 'true');\n\n if (this.dataGrid?.rowSelection === 'mixed') {\n this?.classList.add('mixed');\n }\n } else {\n this.classList.remove('selected');\n this.removeAttribute('aria-selected');\n }\n }\n\n get selected(): boolean {\n return this.classList.contains('selected');\n }\n\n get recordIndex(): number | null {\n const rowData = this.rowData;\n\n let recordIndex = null;\n if (rowData !== undefined) {\n const keyValue = rowData[this.dataGrid.datasource.primaryKey];\n if (keyValue !== undefined) {\n const keyPair = this.dataGrid.datasource.primaryKey;\n recordIndex = this.dataGrid.datasource.getRecordIndex(keyPair, keyValue);\n }\n }\n return recordIndex;\n }\n\n /**\n * Updates some attributes/classes on a single row's cells\n * @private\n * @param {number} index the row index\n */\n updateCells(index: number) {\n const row = this;\n const cells = row.children;\n const rowData = this.rowData;\n\n if (cells?.length) {\n [...cells].forEach((cell: Element, columnIndex: number) => {\n const columnData = this.dataGrid?.columns[columnIndex];\n let cssPart = columnData?.cssPart || 'cell';\n\n // Updates selected rows to display the correct CSS part (also activated rows in mixed-selection mode)\n if (\n (this.dataGrid?.rowSelection === 'mixed' && row.classList.contains('activated'))\n || ((this.dataGrid?.rowSelection === 'single' || this.dataGrid?.rowSelection === 'multiple') && row.classList.contains('selected'))\n ) {\n if (columnData?.cellSelectedCssPart) cssPart = columnData?.cellSelectedCssPart;\n else cssPart = 'cell-selected';\n }\n\n if (typeof cssPart === 'function') {\n cssPart = cssPart({\n index,\n columnIndex,\n recordIndex: this.recordIndex,\n rowData\n });\n }\n cell.setAttribute('part', cssPart);\n });\n }\n }\n\n /**\n * Return the row's markup\n * @param {Record<string, unknown>} row The row data object\n * @param {number} index The data row index\n * @param {number} ariaRowIndex The indexes for aria-rowindex\n * @param {IdsDataGrid} dataGrid The dataGrid instance\n * @returns {string} The html string for the row\n */\n static template(row: Record<string, unknown>, index: number, ariaRowIndex: number, dataGrid: IdsDataGrid): string {\n let rowClasses = `${row?.rowSelected ? ' selected' : ''}`;\n rowClasses += `${row?.rowSelected && dataGrid?.rowSelection === 'mixed' ? ' mixed' : ''}`;\n rowClasses += `${row?.rowActivated ? ' activated' : ''}`;\n\n let treeAttrs = '';\n if (dataGrid?.treeGrid) {\n treeAttrs += ` aria-setsize=\"${row.ariaSetSize}\" aria-level=\"${row.ariaLevel}\" aria-posinset=\"${row.ariaPosinset}\"`;\n if ((row.children as any)?.length) {\n treeAttrs += (row.rowExpanded === false) ? ` aria-expanded=\"false\"` : ` aria-expanded=\"true\"`;\n }\n }\n\n if (dataGrid?.pagination === 'client-side' && dataGrid?.pageNumber > 1) {\n ariaRowIndex += (Number(dataGrid?.pageNumber) - 1) * Number(dataGrid?.pageSize);\n }\n\n const isHidden = row?.rowHidden ? ' hidden' : '';\n\n // Set disabled state thru key found in the dataset\n const isRowDisabled = (): boolean => {\n const isTrue = (v: any) => (typeof v !== 'undefined' && v !== null && ((typeof v === 'boolean' && v === true) || (typeof v === 'string' && v.toLowerCase() === 'true')));\n const disabled = row.disabled;\n return isTrue(typeof disabled === 'function' ? disabled(index, row) : disabled);\n };\n const canRowDisabled = isRowDisabled();\n const disabled = canRowDisabled ? ' disabled aria-disabled=\"true\"' : '';\n\n // Add and remove after to cache a temp disabled key,\n // so no need to run multiple times when rendering columns to check row disabled state\n if (row && canRowDisabled) row.idstempcanrowdisabled = canRowDisabled;\n\n return `\n <ids-data-grid-row\n row-index=\"${index}\"\n role=\"row\"\n part=\"row\"\n aria-rowindex=\"${ariaRowIndex}\"\n data-index=\"${index}\"\n ${isHidden}\n class=\"ids-data-grid-row${rowClasses}\"\n ${treeAttrs}\n ${disabled}\n >\n </ids-data-grid-row>\n `;\n }\n\n /**\n * Return the cells' markup\n * @returns {string} The html string for the row\n */\n cellsHTML(): string {\n const rowIndex = this.rowIndex;\n const ariaRowIndex = rowIndex;\n const rowData = this.data[rowIndex];\n const dataGrid = this.dataGrid;\n\n if (rowData.isGroupRow) {\n const expandButton = `\n <ids-button tabindex=\"-1\" class=\"expand-button\">\n <ids-icon icon=\"plusminus-folder-open\"></ids-icon>\n </ids-button>\n `;\n\n return `\n <ids-data-grid-cell\n role=\"gridcell\"\n part=\"cell\"\n class=\"ids-data-grid-cell is-group-cell\"\n aria-colindex=\"1\"\n >\n ${expandButton} ${rowData?.groupLabel}\n </ids-data-grid-cell>\n `;\n }\n\n let expandableRowHtml = '';\n if (dataGrid?.expandableRow) {\n const template = injectTemplate(dataGrid?.querySelector(`#${dataGrid?.expandableRowTemplate}`)?.innerHTML || '', rowData);\n expandableRowHtml = `<div class=\"ids-data-grid-expandable-row\"${this.isExpanded() ? '' : ` hidden`}>${template}</div>`;\n }\n\n const cellsHtml = dataGrid?.visibleColumns.map((column: IdsDataGridColumn, columnIndex: number) => {\n const content = IdsDataGridCell.template(rowData, column, ariaRowIndex, dataGrid);\n\n return `\n <ids-data-grid-cell\n role=\"gridcell\"\n aria-colindex=\"${columnIndex + 1}\"\n >\n ${content}\n </ids-data-grid-cell>\n `;\n }).join('');\n\n // Remove temp disabled key\n if (rowData?.idstempcanrowdisabled) delete rowData.idstempcanrowdisabled;\n\n return `${cellsHtml}${expandableRowHtml}`;\n }\n\n /**\n * Get the cell HTMLElement\n * @param {number} columnIndex the zero-based column index\n * @returns {IdsDataGridCell} html element for cell\n */\n cellByIndex(columnIndex: number): IdsDataGridCell | null {\n columnIndex = Math.max(columnIndex, 0);\n if (columnIndex === 0) {\n return this.querySelector<IdsDataGridCell>('ids-data-grid-cell') ?? null;\n }\n\n const cells = this.querySelectorAll<IdsDataGridCell>('ids-data-grid-cell');\n const maxColumnIndex = cells.length - 1;\n columnIndex = Math.min(columnIndex, maxColumnIndex);\n\n return cells[columnIndex] ?? null;\n }\n\n /**\n * Get the cell HTMLElement by logical column index (accounting for rowspan)\n * @param {number} logicalColumnIndex the zero-based logical column index\n * @returns {IdsDataGridCell} html element for cell\n */\n cellByLogicalIndex(logicalColumnIndex: number): IdsDataGridCell | null {\n const columnId = this.dataGrid.visibleColumns[logicalColumnIndex]?.id;\n if (!columnId) return null;\n\n // Find the actual cell by aria-colindex\n return this.querySelector<IdsDataGridCell>(`ids-data-grid-cell[aria-colindex=\"${logicalColumnIndex + 1}\"]`) ?? null;\n }\n\n /**\n * Is this row currently expanded\n * @returns {boolean} true if expanded\n */\n isExpanded(): boolean {\n const rowData = this.dataGrid?.data[this.rowIndex];\n\n if (this.dataGrid?.expandableRow) {\n // expandableRows are collapsed by default, so only expand if rowExpanded is explicity \"true\"\n return rowData?.rowExpanded === true;\n }\n\n // all rows are expanded by default (i.e. tree-grid), unless rowExpanded is explicitly \"false\"\n return rowData?.rowExpanded !== false;\n }\n\n /**\n * Expand the row element\n */\n doExpand() {\n this.dataGrid?.updateDataset(this.rowIndex, { rowExpanded: true, rowHidden: false });\n\n // this.#setAttributes() will do this.setAttribute('aria-expanded', 'true');\n this.#setAttributes();\n\n if (this.dataGrid?.treeGrid) {\n const level = Number(this.getAttribute('aria-level')) || 1;\n const nextLevel = level + 1;\n let parentExpanded = this.isExpanded();\n\n nextUntil(this, `[aria-level=\"${level}\"]`).forEach((childRow) => {\n const childAriaLevel = Number(childRow.getAttribute('aria-level')) || 1;\n const shouldExpand = (childAriaLevel === nextLevel) || parentExpanded;\n if (shouldExpand) {\n const childRowIndex = Number(childRow.getAttribute('row-index'));\n this.dataGrid?.updateDataset(childRowIndex, { rowHidden: false });\n childRow.removeAttribute('hidden');\n parentExpanded = (childRow as IdsDataGridRow).isExpanded?.();\n }\n });\n }\n }\n\n /**\n * Collapse the row element\n */\n doCollapse() {\n this.dataGrid?.updateDataset(this.rowIndex, { rowExpanded: false });\n\n // this.#setAttributes() will do this.setAttribute('aria-expanded', 'false');\n this.#setAttributes();\n\n if (this.dataGrid?.treeGrid) {\n const level = Number(this.getAttribute('aria-level')) || 1;\n\n nextUntil(this, `[aria-level=\"${level}\"]`).forEach((childRow) => {\n const childAriaLevel = Number(childRow.getAttribute('aria-level')) || 1;\n if (childAriaLevel > level) {\n const childRowIndex = Number(childRow.getAttribute('row-index'));\n this.dataGrid?.updateDataset(childRowIndex, { rowHidden: true });\n childRow?.setAttribute('hidden', '');\n }\n });\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["disabled"]
|
|
7
7
|
}
|
|
@@ -118,32 +118,28 @@ var IdsDataGridCell = class extends ids_events_mixin_default(IdsElement) {
|
|
|
118
118
|
* @returns {IdsDataGridCell | null} the cell above this cell
|
|
119
119
|
*/
|
|
120
120
|
get cellAbove() {
|
|
121
|
-
return this.
|
|
121
|
+
return this.dataGrid?.findNextNavigableCell(this, "up" /* Up */) ?? null;
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
124
|
* Get the cell below this cell
|
|
125
125
|
* @returns {IdsDataGridCell | null} the cell below this cell
|
|
126
126
|
*/
|
|
127
127
|
get cellBelow() {
|
|
128
|
-
return this.
|
|
128
|
+
return this.dataGrid?.findNextNavigableCell(this, "down" /* Down */) ?? null;
|
|
129
129
|
}
|
|
130
130
|
/**
|
|
131
131
|
* Get the cell to the left of this cell
|
|
132
132
|
* @returns {IdsDataGridCell | null} the cell to the left of this cell
|
|
133
133
|
*/
|
|
134
134
|
get cellLeft() {
|
|
135
|
-
|
|
136
|
-
if (cellLeft && cellLeft !== this) return cellLeft;
|
|
137
|
-
return this.rowAbove?.cellByIndex(this.dataGrid?.columns.length ?? 0) ?? null;
|
|
135
|
+
return this.dataGrid?.findNextNavigableCell(this, "left" /* Left */) ?? null;
|
|
138
136
|
}
|
|
139
137
|
/**
|
|
140
138
|
* Get the cell to the right of this cell
|
|
141
139
|
* @returns {IdsDataGridCell | null} the cell to the right of this cell
|
|
142
140
|
*/
|
|
143
141
|
get cellRight() {
|
|
144
|
-
|
|
145
|
-
if (cellRight && cellRight !== this) return cellRight;
|
|
146
|
-
return this.rowBelow?.cellByIndex(0) ?? null;
|
|
142
|
+
return this.dataGrid?.findNextNavigableCell(this, "right" /* Right */) ?? null;
|
|
147
143
|
}
|
|
148
144
|
/**
|
|
149
145
|
* Get the next editable cell to the left of this cell
|
|
@@ -757,7 +753,7 @@ startCellEdit_fn = function(column, columnEditor, clickEvent, trigger = true) {
|
|
|
757
753
|
});
|
|
758
754
|
}
|
|
759
755
|
this.onEvent("keyup", this.editor?.input, () => {
|
|
760
|
-
this.dataGrid.updateActiveCellCache(this.row, this.columnIndex, this.editor?.input?.value || "");
|
|
756
|
+
this.dataGrid.updateActiveCellCache(this.row, this.columnIndex, this.editor?.input?.value || "", true);
|
|
761
757
|
});
|
|
762
758
|
this.onEvent("keydown", this.editor?.input, (e) => {
|
|
763
759
|
if (e.key === "Enter") {
|
|
@@ -868,4 +864,4 @@ IdsDataGridCell = __decorateClass([
|
|
|
868
864
|
export {
|
|
869
865
|
IdsDataGridCell
|
|
870
866
|
};
|
|
871
|
-
//# sourceMappingURL=ids-chunk-
|
|
867
|
+
//# sourceMappingURL=ids-chunk-FPEINRXY-full.js.map
|