ids-enterprise-wc 1.15.9-patch.6 → 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-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-YAFKETSU-full.js → ids-chunk-HZO4QUAW-full.js} +354 -35
- 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-accordion/ids-accordion.css +141 -77
- package/components/ids-button/ids-button.css +392 -43
- package/components/ids-calendar/ids-calendar.css +265 -190
- 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-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 +5 -4
- package/components/ids-hyperlink/ids-hyperlink.css +188 -15
- 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-list-view/ids-list-view.css +112 -15
- package/components/ids-menu/ids-menu.css +335 -11
- package/components/ids-module-nav/ids-module-nav.css +24 -2284
- package/components/ids-swappable/ids-swappable.css +84 -19
- package/components/ids-tabs/ids-tabs.css +470 -264
- package/components/ids-tag/ids-tag.css +8 -152
- package/components/ids-time-picker/ids-time-picker.css +49 -67
- package/custom-elements.json +614 -422
- package/enterprise-wc.all.iife.js +365 -40
- package/enterprise-wc.all.iife.js.map +3 -3
- package/enterprise-wc.js +5 -4
- package/package.json +1 -1
- package/vscode.html-custom-data.json +1 -1
- package/chunks/ids-chunk-FW4DOBQU-full.js.map +0 -7
- package/chunks/ids-chunk-YAFKETSU-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
|
+
}
|
|
@@ -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
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/ids-data-grid/ids-data-grid-cell.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 { IdsDirection } from '../../core/ids-attributes';\nimport type IdsDataGrid from './ids-data-grid';\nimport type IdsDropdown from '../ids-dropdown/ids-dropdown';\nimport type IdsInput from '../ids-input/ids-input';\nimport type IdsLookup from '../ids-lookup/ids-lookup';\nimport type IdsTriggerField from '../ids-trigger-field/ids-trigger-field';\nimport type { IdsDataGridColumn } from './ids-data-grid-column';\nimport type IdsDataGridRow from './ids-data-grid-row';\nimport { IdsDataGridEditor } from './ids-data-grid-editors';\n\nexport type IdsDataGridActivationReason = 'keyboard' | 'method' | 'internal' | 'redraw' | 'mouse' | 'click';\n\n@customElement('ids-data-grid-cell')\nexport default class IdsDataGridCell extends IdsEventsMixin(IdsElement) {\n rootNode?: any;\n\n isInValid = false;\n\n /** The editor element */\n editor?: IdsDataGridEditor;\n\n constructor() {\n super({ noShadowRoot: true });\n }\n\n connectedCallback(): void {\n // NOTE: bypassing super.connectedCallback() for performance reasons\n this.renderCell();\n this.tabIndex = this.rowIndex === 0 && this.columnIndex === 0 ? 0 : -1;\n this.setAttribute('tabindex', String(this.tabIndex));\n\n this.addEventListener('focus', this.onFocus);\n\n if (this.isDraggable) {\n this.parentRow?.setAttribute('draggable', 'true');\n }\n }\n\n get parentRow(): IdsDataGridRow | null {\n return this.parentElement as IdsDataGridRow;\n }\n\n onFocus() {\n this.dataGrid.lastActiveCell = this.activate(false, 'keyboard');\n this.dataGrid.offEvent('blur.ids-data-grid-cell', this);\n this.dataGrid.onEvent('blur.ids-data-grid-cell', this, this.onBlur);\n }\n\n onBlur() {\n this.dataGrid.offEvent('focus.ids-data-grid-cell', this);\n this.dataGrid.offEvent('blur.ids-data-grid-cell', this);\n }\n\n disconnectedCallback() {\n // NOTE: bypassing super.disconnectedCallback() for performance reasons\n this.offEvent('focusin.ids-cell', this);\n this.offEvent('focusout.ids-cell', this);\n }\n\n get isDraggable(): boolean {\n return this.formatter?.name === 'rowReorder';\n }\n\n get isEditable(): boolean {\n if (this.classList.contains('is-readonly') || this.classList.contains('is-disabled')) return false;\n\n const column = this.column;\n if (column.formatter?.name === 'selectionCheckbox') return true;\n\n if (!column.editor) return false;\n const columnEditor = this.dataGrid.editors.find((editor) => editor.type === column?.editor?.type);\n return !!columnEditor?.editor;\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 /**\n * Gets data grid row below this cell\n * @returns {IdsDataGridRow} row below\n */\n get rowBelow(): IdsDataGridRow | null {\n if (this.dataGrid.treeGrid) {\n let nextRow = this.parentElement?.nextElementSibling as IdsDataGridRow;\n\n // traverse nextElementSiblings until visible row is found\n while (nextRow?.hasAttribute('hidden')) {\n nextRow = nextRow?.nextElementSibling as IdsDataGridRow;\n }\n\n return nextRow ?? null;\n }\n\n return this.dataGrid.rowByIndex(this.rowIndex + 1) ?? null;\n }\n\n /**\n * Gets data grid row above this cell\n * @returns {IdsDataGridRow} row above\n */\n get rowAbove(): IdsDataGridRow | null {\n if (this.dataGrid.treeGrid) {\n let prevRow = this.parentElement?.previousElementSibling as IdsDataGridRow;\n\n // traverse previousElementSiblings until visible row is found\n while (prevRow?.hasAttribute('hidden')) {\n prevRow = prevRow?.previousElementSibling as IdsDataGridRow;\n }\n\n return prevRow ?? null;\n }\n\n return this.dataGrid.rowByIndex(this.rowIndex - 1) ?? null;\n }\n\n /**\n * Get the cell above this cell\n * @returns {IdsDataGridCell | null} the cell above this cell\n */\n get cellAbove(): IdsDataGridCell | null {\n return this.dataGrid?.findNextNavigableCell(this, IdsDirection.Up) ?? null;\n }\n\n /**\n * Get the cell below this cell\n * @returns {IdsDataGridCell | null} the cell below this cell\n */\n get cellBelow(): IdsDataGridCell | null {\n return this.dataGrid?.findNextNavigableCell(this, IdsDirection.Down) ?? null;\n }\n\n /**\n * Get the cell to the left of this cell\n * @returns {IdsDataGridCell | null} the cell to the left of this cell\n */\n get cellLeft(): IdsDataGridCell | null {\n return this.dataGrid?.findNextNavigableCell(this, IdsDirection.Left) ?? null;\n }\n\n /**\n * Get the cell to the right of this cell\n * @returns {IdsDataGridCell | null} the cell to the right of this cell\n */\n get cellRight(): IdsDataGridCell | null {\n return this.dataGrid?.findNextNavigableCell(this, IdsDirection.Right) ?? null;\n }\n\n /**\n * Get the next editable cell to the left of this cell\n * @returns {IdsDataGridCell | null} the next editabled cell to the left of this cell\n */\n get cellLeftEditable(): IdsDataGridCell | null {\n if (!this.dataGrid?.isEditable) return null;\n if (this?.columnIndex === 0 && this?.rowIndex === 0) return null;\n\n let nextCell = this.cellLeft;\n const maxColumns = this.dataGrid?.visibleColumns?.length || 0;\n let attempts = 0;\n\n while (nextCell && !nextCell.isEditable && attempts < maxColumns) {\n nextCell = nextCell.cellLeft;\n attempts++;\n }\n\n // If we've tried all columns and found no editable cell, return null\n if (attempts >= maxColumns || !nextCell?.isEditable) {\n return null;\n }\n\n return nextCell;\n }\n\n /**\n * Get the next editable cell to the right of this cell\n * @returns {IdsDataGridCell | null} the next editabled cell to the right of this cell\n */\n get cellRightEditable(): IdsDataGridCell | null {\n if (!this.dataGrid?.isEditable) return null;\n\n let nextCell = this.cellRight;\n const maxColumns = this.dataGrid?.visibleColumns?.length || 0;\n let attempts = 0;\n\n while (nextCell && !nextCell.isEditable && attempts < maxColumns) {\n nextCell = nextCell.cellRight;\n attempts++;\n }\n\n // If we've tried all columns and found no editable cell, return null\n if (attempts >= maxColumns || !nextCell?.isEditable) {\n return null;\n }\n\n return nextCell;\n }\n\n /**\n * Update this cell's dataset and refresh\n * @param {string} value the new data for the cell\n * @param {boolean} refresh if true, rerender the cell\n */\n updateData(value: string, refresh = true) {\n const rowIndex = this.rowIndex;\n const record = this.dataGrid?.data[rowIndex];\n const columnIndex = this.columnIndex;\n\n // a cell exists in a row of a visible-columns\n const visibleColumns = this.dataGrid?.visibleColumns;\n\n const column = visibleColumns[columnIndex];\n if (!column?.field) return;\n\n const updatedRecord = {\n ...record,\n [column.field]: value,\n };\n\n this.editor?.change?.(value);\n\n if (refresh) {\n this.dataGrid?.updateDatasetAndRefresh?.(this.rowIndex, updatedRecord, false);\n } else {\n this.dataGrid?.updateDataset?.(this.rowIndex, updatedRecord, false);\n }\n }\n\n // Add memoization for frequently accessed properties\n #memoizedColumn?: IdsDataGridColumn;\n\n // Add memoization for frequently accessed properties\n #memoizedColumnIndex?: number;\n\n /**\n * Get the column definition\n * @returns {IdsDataGridColumn} the current cells column\n */\n get column() {\n if (!this.#memoizedColumn || this.columnIndex !== this.#memoizedColumnIndex) {\n this.#memoizedColumn = this.dataGrid?.visibleColumns[this.columnIndex];\n this.#memoizedColumnIndex = this.columnIndex;\n }\n return this.#memoizedColumn;\n }\n\n /**\n * Get the column header cell element\n * @returns {IdsDataGridColumn} the current cells column\n */\n get columnHeader() {\n return this.dataGrid?.header?.columns[this.columnIndex];\n }\n\n /**\n * Gets the column # in which this cell exists\n * @returns {number} the column-index\n */\n get columnIndex(): number {\n return Number(this.getAttribute?.('aria-colindex') ?? 1) - 1;\n }\n\n /**\n * Gets the row-index # in which this cell exists\n * @returns {number} the row-index\n */\n get rowIndex(): number {\n return Number(this.parentElement?.getAttribute?.('row-index') ?? -1);\n }\n\n get formatter(): IdsDataGridColumn['formatter'] {\n return this.column?.formatter;\n }\n\n /**\n * Get row of table cell\n * @returns {number} table row index\n */\n get row(): number {\n return this.rowIndex;\n }\n\n /**\n * Get data value of this cell\n * @returns {any} the data value of this cell\n */\n get value(): any {\n // NOTE: the editor is a singleton, so we must ensure the input is still in this cell's DOM.\n if (this.editor && this.contains(this.editor?.input ?? null)) {\n return this.editor?.value?.();\n }\n\n const column = this.dataGrid?.visibleColumns?.[this.columnIndex];\n const record = this.dataGrid?.data?.[this.rowIndex];\n\n return record?.[(column?.field ?? -1)] ?? this.textContent ?? '';\n }\n\n /**\n * Get the default/original value of this cell\n * @returns {any} the default value of this cell\n */\n get defaultValue(): any {\n const column = this.dataGrid?.visibleColumns?.[this.columnIndex];\n const record = this.dataGrid?.data?.[this.rowIndex];\n const dirtyCells = record?.dirtyCells ?? [];\n return dirtyCells.find((row: Record<string, any>) => row?.columnId === column?.id)?.originalValue ?? this.value;\n }\n\n /**\n * Rerender a cell - may be used later\n */\n renderCell() {\n const dataGrid = this.dataGrid;\n\n const rowIndex = this.rowIndex;\n const rowData: Record<string, any> | undefined = dataGrid?.data[rowIndex];\n\n if (rowData?.isGroupRow) return;\n\n if (dataGrid.virtualScroll) {\n const tooManyColumns = dataGrid.columns.length > dataGrid.TOO_MANY_COLUMNS;\n\n const columnsStale = dataGrid.hasAttribute('columns-stale');\n const columnsFresh = !columnsStale;\n\n const columnHeaders = this.columnHeader;\n const columnOffScreen = columnHeaders?.hasAttribute('column-offscreen');\n\n if (tooManyColumns && columnsFresh && columnOffScreen) {\n // NOTE: skip renderCell if cell is NOT on-screen\n return;\n }\n\n const columnOnScreen = columnHeaders?.hasAttribute('column-onscreen');\n const columnOffScreenLeft = columnHeaders?.hasAttribute('column-offscreen-left');\n const columnOffScreenRight = columnHeaders?.hasAttribute('column-offscreen-right');\n this.toggleAttribute('column-onscreen', columnOnScreen);\n this.toggleAttribute('column-offscreen', columnOffScreen);\n this.toggleAttribute('column-offscreen-left', columnOffScreenLeft);\n this.toggleAttribute('column-offscreen-right', columnOffScreenRight);\n }\n\n const column = this.column;\n const columnIndex = this.columnIndex;\n\n const template = IdsDataGridCell.template(rowData, column, rowIndex, dataGrid);\n if (this.innerHTML !== template) {\n try {\n this.innerHTML = template;\n } catch (e) {\n requestAnimationFrame(() => {\n this.innerHTML = template;\n });\n }\n }\n const cssClasses = this?.cellCssClasses(column, columnIndex, template) ?? '';\n\n if (cssClasses) {\n this.classList.remove(...this.classList);\n this.classList.add(...cssClasses.split(' '));\n }\n\n const cssPart = this?.cellCssPart(column, columnIndex) ?? '';\n if (cssPart) this.setAttribute('part', cssPart);\n\n if (dataGrid.lastActiveCell?.cell === columnIndex && dataGrid.lastActiveCell?.row === rowIndex) {\n this.onFocus();\n }\n }\n\n /**\n * Return the cells' css part\n * @param {IdsDataGridColumn} column - the column definition\n * @param {number} columnIndex - the column index\n * @returns {string} The css part string for the cell\n */\n cellCssPart(column: IdsDataGridColumn, columnIndex: number): string {\n const dataGrid = this.dataGrid;\n const rowIndex = this.rowIndex;\n const rowData = dataGrid.data[rowIndex];\n\n const cacheKey = IdsDataGridCell.cacheKey(rowIndex, rowData, column, dataGrid);\n const cellCacheKey = `${cacheKey}:${dataGrid.cacheCellPart}`;\n\n if (IdsDataGridCell.cellCache[cellCacheKey]) {\n return IdsDataGridCell.cellCache[cellCacheKey];\n }\n\n let part = column.cssPart || 'cell';\n const rowSelection = dataGrid?.rowSelection;\n const isSelectable = rowSelection === 'mixed' || rowSelection === 'single' || rowSelection === 'multiple';\n if (isSelectable && rowData.rowSelected) {\n if (column.cellSelectedCssPart) part = column.cellSelectedCssPart;\n else part = 'cell-selected';\n }\n\n if (typeof part === 'function') {\n part = part({\n rowIndex,\n columnIndex,\n recordIndex: this.parentRow?.recordIndex ?? null,\n rowData\n });\n }\n\n IdsDataGridCell.cellCache[cellCacheKey] = part;\n\n return part;\n }\n\n /**\n * Return the cells' css classes\n * @param {IdsDataGridColumn} column - the column definition\n * @param {number} columnIndex - the column index\n * @param {string} content - the cells html or text content\n * @returns {string} The classList string for the cell\n */\n cellCssClasses(column: IdsDataGridColumn, columnIndex: number, content: string): string {\n const dataGrid = this.dataGrid;\n const rowIndex = this.rowIndex;\n const rowData = dataGrid.data[rowIndex];\n\n const cacheKey = IdsDataGridCell.cacheKey(rowIndex, rowData, column, dataGrid);\n const cellCacheKey = `${cacheKey}:${dataGrid.cacheCellClass}`;\n\n if (IdsDataGridCell.cellCache[cellCacheKey]) {\n return IdsDataGridCell.cellCache[cellCacheKey];\n }\n\n const isDirtyCell = (currentRow: Record<string, unknown>): boolean => {\n if (!currentRow.dirtyCells) return false;\n return (currentRow.dirtyCells as any).findIndex((item: any) => item.cell === columnIndex) !== -1;\n };\n\n const isInvalidCell = (currentRow: Record<string, unknown>): boolean => {\n if (!currentRow.invalidCells) return false;\n return (currentRow.invalidCells as any).findIndex((item: any) => item.cell === columnIndex) !== -1;\n };\n\n const isReadonly = (): boolean => {\n if (column.readonly && column?.readonly === true) return true;\n if (typeof column?.readonly === 'function') return column?.readonly(rowIndex, content, column, rowData);\n return false;\n };\n\n const isColumnDisabled = (): boolean => {\n if (!column?.disabled) return false;\n if (typeof column?.disabled === 'function') return column?.disabled(rowIndex, content, column, rowData);\n if (typeof column?.disabled === 'boolean') return column?.disabled;\n return false;\n };\n\n const isUppercase = (): boolean => {\n if (typeof column?.uppercase === 'function') return column.uppercase('body-cell', column, rowIndex, content, rowData);\n return (column?.uppercase === 'true' || column?.uppercase === true);\n };\n\n const frozenLast = dataGrid?.leftFrozenColumns.length;\n\n const hasReadonlyClass = isReadonly();\n const hasDisabledClass = this.parentRow?.disabled || isColumnDisabled();\n const hasUppercaseClass = isUppercase();\n const hasInlineClass = column?.editor && column?.editor?.inline;\n const hoverable = ['textmask'].includes(column?.formatter?.name || '');\n const editorType = column.editor?.type;\n const formatterName = column.formatter?.name === 'rowReorder' ? 'row-reorder' : column.formatter?.name;\n\n let cssClasses = 'ids-data-grid-cell';\n cssClasses += editorType ? ` is-${editorType}` : '';\n cssClasses += column.excludeReadonlyStyling ? ' exclude-readonly-style' : '';\n cssClasses += hasReadonlyClass ? ' is-readonly' : '';\n cssClasses += hasDisabledClass ? ' is-disabled' : '';\n cssClasses += hasUppercaseClass ? ' is-uppercase' : '';\n cssClasses += isDirtyCell(rowData) ? ' is-dirty' : '';\n cssClasses += isInvalidCell(rowData) ? ' is-invalid' : '';\n cssClasses += column?.align ? ` align-${column?.align}` : '';\n cssClasses += column?.formatter?.name ? ` formatter-${formatterName}` : '';\n cssClasses += column?.frozen ? ` frozen frozen-${column?.frozen}${columnIndex + 1 === frozenLast ? ' frozen-last' : ''}` : '';\n cssClasses += column?.editor ? ` is-editable` : '';\n cssClasses += hoverable ? ` is-hoverable` : '';\n cssClasses += hasInlineClass && (!hasReadonlyClass || (hasReadonlyClass && !column.excludeReadonlyStyling)) ? ` is-inline` : '';\n cssClasses += column?.formatter?.name === 'selectionCheckbox' ? ' is-editable' : '';\n\n IdsDataGridCell.cellCache[cellCacheKey] = cssClasses;\n\n return cssClasses;\n }\n\n /**\n * Set the active cell for focus\n * @param {boolean} nofocus If true, do not focus the cell\n * @param {string} reason Reason the method was called (e.g. 'keyboard', 'mouse', 'redraw', 'internal', 'click')\n * @returns {object} the current active cell\n */\n activate(nofocus: boolean = false, reason?: IdsDataGridActivationReason): IdsDataGridCell {\n const previousActiveCell = this.dataGrid.activeCell.node;\n this.dataGrid.activeCell.node = this;\n\n if (!nofocus) {\n this.dataGrid.shadowRoot?.querySelector('ids-data-grid-cell[tabindex=\"0\"]')?.setAttribute('tabindex', '-1');\n this.tabIndex = 0;\n this.focus();\n }\n\n if (previousActiveCell === undefined || (previousActiveCell !== this && document.hasFocus())) {\n this.dataGrid.triggerEvent('activecellchanged', this.dataGrid, {\n detail: {\n elem: this, activeCell: this.dataGrid.activeCell, previousActiveCell, reason\n }\n });\n }\n return this;\n }\n\n /** Previous Value before Editing */\n originalValue: unknown;\n\n /** Previous Invalid state before reseting */\n previousInvalidState = '';\n\n /** If currently in edit mode */\n isEditing?:boolean;\n\n /**\n * Validate cell\n */\n validateCell() {\n const column = this.column;\n if (!column.editor) return;\n\n const columnEditor = this.dataGrid.editors.find((obj) => obj.type === column?.editor?.type);\n if (!columnEditor || !columnEditor.editor) return;\n\n this.originalValue = this.value;\n\n this.editor = columnEditor.editor;\n this.editor.init(this);\n\n const input = this.editor?.input as any;\n\n if (!input) return;\n\n const editorType = (this.editor?.type as string);\n input?.offEvent('focusout', input);\n input?.offEvent('close', input);\n\n if (['input', 'tree'].includes(editorType) && input?.setDirtyTracker) {\n input?.setDirtyTracker(input?.value as any);\n }\n\n if (['input', 'tree'].includes(editorType) && input?.checkValidation) {\n (<IdsInput>input)?.checkValidation();\n }\n\n if (editorType === 'dropdown') {\n (<IdsDropdown>input)?.input?.checkValidation();\n }\n\n if (editorType === 'timepicker' || editorType === 'datepicker') {\n (<IdsTriggerField>input)?.checkValidation();\n }\n\n const isValid = input?.isValid;\n const newValue = this.editor?.save(this);\n this.#saveCellValue(newValue?.value);\n\n if (!isValid) this.#saveValidState(input?.validationMessages);\n if (this.isInValid && isValid) this.#resetValidState();\n this.isInValid = !isValid;\n\n this.editor?.destroy(this);\n this.renderCell();\n }\n\n /**\n * Start Edit Mode\n * @param {MouseEvent} clickEvent event passed if activated by click (vs keyboard)\n * @param {boolean} trigger whether to trigger the beforecelledit event\n */\n startCellEdit(clickEvent?: MouseEvent, trigger: boolean = true) {\n // end previous cell edit\n if (this.dataGrid.activeCellEditor instanceof IdsDataGridCell && this.dataGrid.activeCellEditor !== this) {\n this.dataGrid.activeCellEditor.endCellEdit();\n }\n\n const column = this.column;\n if (!column.editor) return;\n const columnEditor = this.dataGrid.editors.find((obj) => obj.type === column?.editor?.type);\n if (!columnEditor || !columnEditor.editor || this.isEditing) return;\n\n // Init Editor\n let canEdit: any = !(this.classList.contains('is-readonly') || this.classList.contains('is-disabled'));\n if (!canEdit) {\n return;\n }\n\n if (trigger) {\n this.dataGrid.triggerEvent('beforecelledit', this.dataGrid, {\n detail: {\n elem: this,\n editor: this.editor,\n column,\n data: this.dataGrid.data[this.dataGrid.activeCell.row],\n response: (veto: boolean | Promise<void | boolean>) => {\n canEdit = veto;\n }\n }\n });\n }\n\n if (trigger && (canEdit instanceof Promise || canEdit?.constructor?.name === 'AsyncFunction')) {\n (canEdit instanceof Promise ? canEdit : canEdit())\n .then((veto?: boolean) => { if (veto !== false) this.#startCellEdit(column, columnEditor, clickEvent, trigger); })\n .catch(() => { /** ignore if promise rejected */ });\n } else if (!trigger || canEdit !== false) {\n this.#startCellEdit(column, columnEditor, clickEvent, trigger);\n }\n }\n\n /* Start Cell Edit */\n #startCellEdit(\n column: IdsDataGridColumn,\n columnEditor: { type: string, editor?: IdsDataGridEditor },\n clickEvent?: MouseEvent,\n trigger: boolean = true\n ) {\n if (!columnEditor || !columnEditor.editor || this.isEditing) return;\n\n this.detachTooltipEvents();\n this.originalValue = this.value;\n this.editor = columnEditor.editor;\n this.editor.clickEvent = clickEvent;\n\n const editorType = this.editor.type;\n // Override original value if dropdown\n if (editorType === 'dropdown') {\n this.originalValue = this.querySelector('[data-value]')?.getAttribute('data-value');\n }\n\n this.classList.add('is-editing');\n this.editor.init(this);\n\n const expandButton = this.querySelector('.expand-button');\n if (expandButton) {\n expandButton.removeAttribute('disabled');\n this.offEvent('mousedown', expandButton);\n this.onEvent('mousedown', expandButton, (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n this.endCellEdit();\n const row = this.parentElement as IdsDataGridRow;\n row?.toggleExpandCollapse();\n });\n }\n\n // Set states\n if (this.classList.contains('is-invalid')) {\n this.classList.remove('is-invalid');\n this.isInValid = true;\n }\n if (column.editor?.inline) this.classList.add('is-inline');\n this.isEditing = true;\n\n // Pass column text alignment rules into the cell editor\n if (column.align) {\n let columnAlign = column.align;\n if (columnAlign === 'left') columnAlign = 'start';\n if (columnAlign === 'right') columnAlign = 'end';\n this.editor?.input?.setAttribute('text-align', `${columnAlign}`);\n }\n\n // Save on Click Out Event\n if (['datepicker', 'timepicker', 'lookup'].includes(editorType)) {\n // When the popup is closed, end the edit\n this.editor.input?.onEvent('focusout', this.editor.input, () => {\n requestAnimationFrame(() => {\n if (this.editor?.popup?.visible || this.contains(this.dataGrid!.shadowRoot!.activeElement)) return;\n this.tabIndex = -1;\n });\n });\n\n // When the popup is closed, end the edit\n this.onEvent('hide.popup', this.editor?.popup, () => {\n this.offEvent('hide.popup');\n this.endCellEdit();\n this.focus();\n });\n } else if (editorType === 'dropdown') {\n this.editor.input?.onEvent('close', this.editor.input, () => {\n this.endCellEdit();\n this.focus();\n });\n } else if (editorType === 'password') {\n const maskIcon = this.querySelector('ids-icon');\n\n // stop events when clicking the maskIcon to prevent deselecting the input when editing\n this.offEvent('mousedown', maskIcon);\n this.onEvent('mousedown', maskIcon, (e) => {\n e.stopPropagation();\n e.preventDefault();\n });\n\n this.editor.input?.onEvent('focusout', this.editor.input, () => {\n this.dataGrid.clearActiveCellCache(true);\n this.endCellEdit();\n });\n } else {\n this.editor.input?.onEvent('focusout', this.editor.input, () => {\n this.dataGrid.clearActiveCellCache(true);\n this.endCellEdit();\n });\n }\n\n this.onEvent('keyup', this.editor?.input, () => {\n this.dataGrid.updateActiveCellCache(this.row, this.columnIndex, this.editor?.input?.value || '', true);\n });\n\n this.onEvent('keydown', this.editor?.input, (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n this.dataGrid.clearActiveCellCache();\n }\n });\n\n this.onEvent('focusout.endcelledit', this.dataGrid, () => {\n if (!this.dataGrid.contains(document.activeElement)) {\n this.endCellEdit();\n }\n });\n\n if (trigger) {\n this.dataGrid?.triggerEvent('celledit', this.dataGrid, {\n detail: {\n elem: this, editor: this.editor, column, data: this.dataGrid.data[this.row]\n }\n });\n }\n\n // Add a small delay before starting new edit to ensure cleanup\n this.dataGrid.activeCellEditor = this;\n }\n\n /* End Cell Edit */\n endCellEdit() {\n const column = this.column;\n const input = this.editor?.input as any;\n\n if (!input) return;\n\n this.offEvent('focusout.endcelledit', this.dataGrid);\n this.offEvent('keydown', this.editor?.input);\n this.offEvent('keyup', this.editor?.input);\n\n const editorType = (this.editor?.type as string);\n input?.offEvent('focusout', input);\n input?.offEvent('close', input);\n\n if (['input', 'tree'].includes(editorType) && input?.setDirtyTracker) {\n input?.setDirtyTracker(input?.value as any);\n }\n\n if (['input', 'tree'].includes(editorType) && input?.checkValidation) {\n (<IdsInput>input)?.checkValidation();\n }\n\n if (editorType === 'dropdown') {\n (<IdsDropdown>input)?.input?.checkValidation();\n }\n\n if (editorType === 'lookup') {\n (<IdsLookup>input)?.input?.checkValidation();\n }\n\n if (editorType === 'timepicker' || editorType === 'datepicker') {\n (<IdsTriggerField>input)?.checkValidation();\n }\n\n const isDirty = column.editor?.editorSettings?.dirtyTracker && (input?.isDirty || input?.input.isDirty);\n const isDirtyCheckbox = column.editor?.editorSettings?.dirtyTracker && editorType === 'checkbox' && input?.isDirty;\n\n // combobox accepts anything\n const isComboBox = column.editor?.editorSettings?.comboBox ?? false;\n\n const isValid = input?.isValid;\n const newValue = this.editor?.save(this);\n this.#saveCellValue(newValue?.value);\n\n // Save dirty and valid state on the row\n if ((isDirty || isDirtyCheckbox) && !isComboBox) this.#saveDirtyState(newValue?.dirtyCheckValue ?? newValue?.value);\n if (!isValid && !isComboBox) this.#saveValidState(input?.validationMessages);\n if (this.isInValid && isValid && !isComboBox) this.#resetValidState();\n this.isInValid = !isComboBox ? !isValid : false;\n this.editor?.destroy(this);\n this.renderCell();\n this.isEditing = false;\n this.classList.remove('is-editing');\n\n // Reset focus and tabindex\n this.tabIndex = -1;\n this.blur();\n\n this.dataGrid?.triggerEvent('endcelledit', this.dataGrid, {\n detail: {\n elem: this, editor: this.editor, column, data: this.dataGrid.data[this.row]\n }\n });\n this.detachTooltipEvents();\n this.dataGrid.activeCellEditor = undefined;\n this.dataGrid.openMenu = null;\n }\n\n /* Cancel Cell Edit */\n cancelCellEdit() {\n const column = this.column;\n const input = this.editor?.input as any;\n input?.offEvent('focusout', input);\n input?.setDirtyTracker(input?.value as any);\n\n this.dataGrid?.updateDataset(this.row, { [String(column?.field)]: this.originalValue });\n this.editor?.destroy(this);\n this.renderCell();\n this.isEditing = false;\n this.classList.remove('is-editing');\n\n this.dataGrid?.triggerEvent('cancelcelledit', this.dataGrid, {\n detail: {\n elem: this,\n editor: this.editor,\n column,\n data: this.dataGrid.data[this.row],\n oldValue: this.originalValue\n }\n });\n this.dataGrid.activeCellEditor = undefined;\n this.dataGrid.openMenu = null;\n }\n\n /**\n * Save cell Edit Back into data set\n * @param {any} newValue the value to coerce and save\n */\n #saveCellValue(newValue: any) {\n const column = this.column;\n this.dataGrid.resetCache(this.dataGrid?.activeCell.row);\n if (column.editor?.editorSettings?.mask === 'date') {\n newValue = this.dataGrid.localeAPI.parseDate(newValue, column.formatOptions);\n }\n this.dataGrid?.updateDataset(this.row, {\n [String(column?.field)]: newValue,\n });\n }\n\n /**\n * Save the dirty state info on the row\n * @param {boolean} newValue the current value\n * @param {boolean} programmaticUpdate if true, the value was changed by a progammaticUpdate update\n */\n #saveDirtyState(newValue: any, programmaticUpdate = false) {\n let rowDirtyCells = this.dataGrid.data[this.row].dirtyCells;\n if (rowDirtyCells === undefined) rowDirtyCells = [];\n const cell = Number(this.getAttribute('aria-colindex')) - 1;\n const previousCellInfo = rowDirtyCells.filter((item: any) => item.cell === cell);\n\n if (previousCellInfo[0] && newValue === previousCellInfo[0].originalValue) {\n const oldIndex = rowDirtyCells.findIndex((item: any) => item.cell === cell);\n rowDirtyCells.splice(oldIndex, 1);\n // Value was reset\n this?.classList.remove('is-dirty');\n this.dataGrid?.updateDataset(this.row, {\n dirtyCells: rowDirtyCells\n });\n return;\n }\n\n this?.classList.add('is-dirty');\n\n if (previousCellInfo.length === 0) {\n const originalValue = this?.editor?.type === 'checkbox' || programmaticUpdate ? this.originalValue : (this?.editor?.input as any)?.dirty?.original;\n\n rowDirtyCells.push({\n cell: Number(this?.getAttribute('aria-colindex')) - 1,\n columnId: this.column.id,\n originalValue,\n });\n this.dataGrid?.updateDataset(this.row, {\n dirtyCells: rowDirtyCells\n });\n }\n }\n\n /**\n * Track value changes for dirty tracking\n * @param {any} newValue the new value\n * @param {boolean} programmaticUpdate if true, the value was changed by a programmatic update\n */\n trackValueChange(newValue: any, programmaticUpdate = false) {\n this.#saveDirtyState(newValue, programmaticUpdate);\n }\n\n /**\n * Save the validation state info on the row\n * @param {any} validationMessages the current value\n */\n #saveValidState(validationMessages: any) {\n let rowInvalidCells = this.dataGrid.data[this.row].invalidCells;\n if (!rowInvalidCells) rowInvalidCells = [];\n const cell = Number(this.getAttribute('aria-colindex')) - 1;\n const previousCellInfo = rowInvalidCells.filter((item: any) => item.cell === cell);\n\n this?.classList.add('is-invalid');\n\n if (previousCellInfo.length === 0) {\n this.previousInvalidState = validationMessages.id;\n rowInvalidCells.push({\n cell: Number(this?.getAttribute('aria-colindex')) - 1,\n columnId: this.column.id,\n validationMessages\n });\n this.dataGrid?.updateDataset(this.row, {\n invalidCells: rowInvalidCells\n });\n }\n }\n\n /**\n * Set back the valid state\n */\n #resetValidState() {\n this?.classList.remove('is-invalid');\n this.dataGrid?.updateDataset(this.row, {\n invalidCells: undefined\n });\n this.isInValid = false;\n }\n\n // NOTE: check memory footprint of this caching strategy\n static cellCache: { [key: string]: string } = {};\n\n /**\n * Return the Template for the cell contents\n * @param {object} rowData The data item for the row\n * @param {object} column The column data for the row\n * @param {object} rowIndex The running row-index\n * @param {IdsDataGrid} dataGrid The dataGrid instance\n * @returns {string} The template to display\n */\n static template(\n rowData: Record<string, unknown>,\n column: IdsDataGridColumn,\n rowIndex: number,\n dataGrid: IdsDataGrid\n ): string {\n const cacheKey = IdsDataGridCell.cacheKey(rowIndex, rowData, column, dataGrid);\n // combobox accepts anything\n const isComboBox = column.editor?.editorSettings?.comboBox ?? false;\n\n // NOTE: This is how we could disable cache until a proper cache-busting strategy is in place\n // delete IdsDataGridCell.cellCache[cacheKey];\n\n // NOTE: this type of param-based caching is good for upscroll when revisiting rows that have been seen already.\n // NOTE: we also need a content-cache that caches based on the actual data that's being rendered\n // NOTE: content-cache should probably be done in the IdsDataGridFormatters class\n if (!IdsDataGridCell.cellCache[cacheKey]) {\n const dataGridFormatters = (dataGrid.formatters as any);\n let template = '';\n\n if (!dataGridFormatters[column?.formatter?.name || 'text'] && column?.formatter) template = column?.formatter(rowData, column, rowIndex, dataGrid);\n else template = dataGridFormatters[column?.formatter?.name || 'text'](rowData, column, rowIndex, dataGrid);\n\n if (rowData.invalidCells && !isComboBox) {\n const message = (rowData.invalidCells as any).find((info: any) => info.cell === dataGrid.columnIdxById(column.id));\n if (message) template += `<ids-alert icon=\"error\" tooltip=\"${message?.validationMessages[0]?.message}\"></ids-alert>`;\n }\n IdsDataGridCell.cellCache[cacheKey] = template;\n }\n\n return IdsDataGridCell.cellCache[cacheKey];\n }\n\n /**\n * Return cache key of current cell\n * @param {number} rowIndex number\n * @param {object} rowData The data item for the row\n * @param {object} column The column data for the row\n * @param {IdsDataGrid} dataGrid The dataGrid instance\n * @returns {string} Cache key\n */\n static cacheKey(\n rowIndex: number,\n rowData: Record<string, unknown>,\n column: IdsDataGridColumn,\n dataGrid: IdsDataGrid\n ): string {\n const cacheHash = dataGrid.cacheHash;\n const selected = rowData.rowSelected ? dataGrid.cacheSelected : dataGrid.cacheDeselected;\n const expanded = rowData.rowExpanded ? dataGrid.cacheExpanded : dataGrid.cacheCollapsed;\n return `${cacheHash}:${column.id}:${rowIndex}:${selected}:${expanded}`;\n }\n\n /**\n * Clears cell cache\n */\n clearCache() {\n const dataGrid = this.dataGrid;\n const rowIndex = Number(this.parentElement?.getAttribute('row-index'));\n const row = dataGrid.data[rowIndex] as any;\n const cacheKey = IdsDataGridCell.cacheKey(rowIndex, row, this.column, dataGrid);\n\n delete IdsDataGridCell.cellCache[cacheKey];\n }\n\n /**\n * Refreshes the cell\n */\n refreshCell() {\n this.clearCache();\n this.renderCell();\n }\n\n /**\n * Checks on the cell editor to see if its current state allows it to be closed.\n * @returns {boolean} true if the cell editor is able to \"close\"\n */\n canClose(): boolean {\n if (this.isEditing) return false;\n if (this.editor?.popup?.visible) return false;\n if (this.column?.editor?.inline) return false;\n\n return true;\n }\n\n /**\n * Removes all tooltip-related event listeners from the data grid cell\n * @private\n * @description Detaches hover, click, popup, longpress, and focus events\n * associated with the tooltip functionality\n */\n detachTooltipEvents() {\n this.dataGrid.tooltip?.offEvent('hoverend.tooltip', this);\n this.dataGrid.tooltip?.offEvent('click.tooltip', this);\n this.dataGrid.tooltip?.offEvent('click.popup', this.dataGrid.tooltip?.popup);\n this.dataGrid.tooltip?.offEvent('longpress.tooltip', this);\n this.dataGrid.tooltip?.offEvent('focusin.tooltip', this);\n this.dataGrid.tooltip?.offEvent('focus.keyboardfocus', this);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|