@sme.up/ketchup 11.0.0-SNAPSHOT-20241118154002 → 11.0.0-SNAPSHOT-20241118161105
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/dist/cjs/kup-autocomplete_28.cjs.entry.js +14 -10
- package/dist/cjs/kup-autocomplete_28.cjs.entry.js.map +1 -1
- package/dist/collection/components/kup-data-table/kup-data-table.js +14 -10
- package/dist/collection/components/kup-data-table/kup-data-table.js.map +1 -1
- package/dist/components/kup-autocomplete2.js +14 -10
- package/dist/components/kup-autocomplete2.js.map +1 -1
- package/dist/esm/kup-autocomplete_28.entry.js +14 -10
- package/dist/esm/kup-autocomplete_28.entry.js.map +1 -1
- package/dist/ketchup/ketchup.esm.js +1 -1
- package/dist/ketchup/{p-1b23ecb9.entry.js → p-c8654f3e.entry.js} +2 -2
- package/dist/ketchup/{p-1b23ecb9.entry.js.map → p-c8654f3e.entry.js.map} +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kup-data-table.js","sourceRoot":"","sources":["../../../src/components/kup-data-table/kup-data-table.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n forceUpdate,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport type {\n DropEvent,\n InteractEvent,\n PointerEvent,\n} from '@interactjs/types/index';\nimport type { ResizeEvent } from '@interactjs/actions/resize/plugin';\nimport type { KupComboboxEventPayload } from '../kup-combobox/kup-combobox-declarations';\nimport {\n FixedCellsClasses,\n FixedCellsCSSVarsBase,\n GroupLabelDisplayMode,\n GroupObject,\n LoadMoreMode,\n PaginatorPos,\n ShowGrid,\n SortMode,\n SortObject,\n TotalsMap,\n TotalMode,\n TotalLabel,\n KupDatatableEventHandlerDetails,\n KupDataTableProps,\n fieldColumn,\n iconColumn,\n keyColumn,\n SelectionMode,\n KupDatatableRowSelectedEventPayload,\n KupDatatableClickEventPayload,\n KupDatatableColumnMenuEventPayload,\n KupDatatableLoadMoreClickEventPayload,\n KupDatatableColumnRemoveEventPayload,\n KupDatatableColumnMoveEventPayload,\n KupDataTableDataset,\n KupDataTableRow,\n KupDataTableRowCells,\n KupDataTableCell,\n KupDatatableDeleteRowEventPayload,\n KupDatatableInsertRowEventPayload,\n KupDataTableInsertMode,\n KupDatatableHistoryEventPayload,\n KupDatatableRowActionItemClickEventPayload,\n KupDatatableUpdatePayload,\n DataTableAreasEnum,\n} from './kup-data-table-declarations';\nimport { getColumnByName } from '../../utils/cell-utils';\nimport {\n calcTotals,\n normalizeRows,\n filterRows,\n groupRows,\n paginateRows,\n sortRows,\n getDiffData,\n decorateDataTable,\n} from './kup-data-table-helper';\nimport {\n GenericObject,\n KupComponent,\n KupComponentSizing,\n KupEventPayload,\n} from '../../types/GenericTypes';\nimport { identify, getProps, setProps } from '../../utils/utils';\nimport {\n KupListNode,\n ItemsDisplayMode,\n} from '../kup-list/kup-list-declarations';\nimport {\n KupManager,\n kupManagerInstance,\n} from '../../managers/kup-manager/kup-manager';\nimport { KupDataTableState } from './kup-data-table-state';\nimport { KupStore } from '../kup-state/kup-store';\nimport { FImage } from '../../f-components/f-image/f-image';\nimport { FTextField } from '../../f-components/f-text-field/f-text-field';\nimport { FChip } from '../../f-components/f-chip/f-chip';\nimport { FTextFieldMDC } from '../../f-components/f-text-field/f-text-field-mdc';\nimport {\n FChipsProps,\n FChipType,\n} from '../../f-components/f-chip/f-chip-declarations';\nimport { FCheckbox } from '../../f-components/f-checkbox/f-checkbox';\nimport { FCheckboxProps } from '../../f-components/f-checkbox/f-checkbox-declarations';\nimport {\n GenericFilter,\n ValueDisplayedValue,\n} from '../../utils/filters/filters-declarations';\nimport { KupColumnMenu } from '../../utils/kup-column-menu/kup-column-menu';\nimport { FiltersColumnMenu } from '../../utils/filters/filters-column-menu';\nimport { FiltersRows } from '../../utils/filters/filters-rows';\nimport {\n KupDynamicPositionAnchor,\n kupDynamicPositionAttribute,\n KupDynamicPositionElement,\n KupDynamicPositionPlacement,\n} from '../../managers/kup-dynamic-position/kup-dynamic-position-declarations';\nimport { KupScrollOnHoverElement } from '../../managers/kup-scroll-on-hover/kup-scroll-on-hover-declarations';\nimport {\n KupCardData,\n KupCardFamily,\n KupCardEventPayload,\n KupCardColumnDropMenuOptions,\n} from '../kup-card/kup-card-declarations';\nimport { KupDebugCategory } from '../../managers/kup-debug/kup-debug-declarations';\nimport {\n KupLanguageDensity,\n KupLanguageFontsize,\n KupLanguageGeneric,\n KupLanguageGrid,\n KupLanguageKey,\n KupLanguageRow,\n KupLanguageSearch,\n KupLanguageTotals,\n} from '../../managers/kup-language/kup-language-declarations';\nimport { FImageProps } from '../../f-components/f-image/f-image-declarations';\nimport { KupDynamicPositionCoordinates } from '../../managers/kup-dynamic-position/kup-dynamic-position-declarations';\nimport {\n KupThemeColorValues,\n KupThemeIconValues,\n} from '../../managers/kup-theme/kup-theme-declarations';\nimport { componentWrapperId } from '../../variables/GenericVariables';\nimport {\n kupDragActiveAttr,\n KupDragCallbacks,\n KupDragDataTransferCallback,\n KupDragEffect,\n kupDraggableCellAttr,\n kupDraggableColumnAttr,\n KupDraggableElement,\n KupDropCallbacks,\n KupDropDataTransferCallback,\n KupDropEventTypes,\n KupPointerEventTypes,\n KupResizeCallbacks,\n} from '../../managers/kup-interact/kup-interact-declarations';\nimport { KupManagerClickCb } from '../../managers/kup-manager/kup-manager-declarations';\nimport {\n FCellEventPayload,\n FCellPadding,\n FCellShapes,\n} from '../../f-components/f-cell/f-cell-declarations';\nimport { FCell } from '../../f-components/f-cell/f-cell';\nimport { FPaginator } from '../../f-components/f-paginator/f-paginator';\nimport {\n pageChange,\n rowsPerPageChange,\n} from '../../f-components/f-paginator/f-paginator-utils';\nimport {\n KupCommand,\n KupDataCell,\n KupDataColumn,\n KupDataCommand,\n KupDataDataset,\n KupDataNewColumnOptions,\n KupDataNewColumnTypes,\n KupDataRow,\n KupDataRowAction,\n KupDataRowCells,\n} from '../../managers/kup-data/kup-data-declarations';\nimport { FButton } from '../../f-components/f-button/f-button';\nimport { FButtonStyling } from '../../f-components/f-button/f-button-declarations';\nimport { KupFormRow } from '../kup-form/kup-form-declarations';\nimport { KupColumnMenuIds } from '../../utils/kup-column-menu/kup-column-menu-declarations';\nimport { KupList } from '../kup-list/kup-list';\nimport { KupDropdownButtonEventPayload } from '../kup-dropdown-button/kup-dropdown-button-declarations';\n@Component({\n tag: 'kup-data-table',\n styleUrl: 'kup-data-table.scss',\n shadow: true,\n})\nexport class KupDataTable {\n @Prop() stateId: string = '';\n @Prop() store: KupStore;\n\n state: KupDataTableState = new KupDataTableState();\n\n initWithPersistedState(): void {\n if (this.store && this.stateId) {\n const state = this.store.getState(this.stateId);\n if (state != null) {\n this.#kupManager.debug.logMessage(\n this,\n 'Initializing stateId ' + this.stateId\n );\n // *** PROPS ***\n this.filters = { ...state.filters };\n this.groups = [...state.groups];\n this.expandGroups = state.expandGroups;\n this.groupLabelDisplay = state.groupLabelDisplay;\n this.density = state.density;\n this.enableExtraColumns = state.enableExtraColumns;\n this.enableSortableColumns = state.enableSortableColumns;\n this.forceOneLine = state.forceOneLine;\n this.globalFilter = state.globalFilter;\n this.globalFilterValue = state.globalFilterValue;\n this.headerIsPersistent = state.headerIsPersistent;\n this.lazyLoadRows = state.lazyLoadRows;\n this.loadMoreLimit = state.loadMoreLimit;\n this.selection = state.selection;\n this.rowsPerPage = state.rowsPerPage;\n this.showFilters = state.showFilters;\n this.showGroups = state.showGroups;\n this.showHeader = state.showHeader;\n this.showLoadMore = state.showLoadMore;\n this.sortEnabled = state.sortEnabled;\n this.sort = [...state.sort];\n this.pageSelected = state.pageSelected;\n this.sortableColumnsMutateData =\n state.sortableColumnsMutateData;\n this.dragEnabled = state.dragEnabled;\n this.dropEnabled = state.dropEnabled;\n this.showFooter = state.showFooter;\n this.totals = { ...state.totals };\n }\n }\n }\n\n persistState(): void {\n if (this.store && this.stateId) {\n let somethingChanged = false;\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.filters,\n this.filters\n )\n ) {\n this.state.filters = { ...this.filters };\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.groups,\n this.groups\n )\n ) {\n this.state.groups = [...this.groups];\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(this.state.sort, this.sort)\n ) {\n this.state.sort = [...this.sort];\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.expandGroups,\n this.expandGroups\n )\n ) {\n this.state.expandGroups = this.expandGroups;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.groupLabelDisplay,\n this.groupLabelDisplay\n )\n ) {\n this.state.groupLabelDisplay = this.groupLabelDisplay;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.density,\n this.density\n )\n ) {\n this.state.density = this.density;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.enableExtraColumns,\n this.enableExtraColumns\n )\n ) {\n this.state.enableExtraColumns = this.enableExtraColumns;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.enableSortableColumns,\n this.enableSortableColumns\n )\n ) {\n this.state.enableSortableColumns = this.enableSortableColumns;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.forceOneLine,\n this.forceOneLine\n )\n ) {\n this.state.forceOneLine = this.forceOneLine;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.globalFilter,\n this.globalFilter\n )\n ) {\n this.state.globalFilter = this.globalFilter;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.globalFilterValue,\n this.globalFilterValue\n )\n ) {\n this.state.globalFilterValue = this.globalFilterValue;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.headerIsPersistent,\n this.headerIsPersistent\n )\n ) {\n this.state.headerIsPersistent = this.headerIsPersistent;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.lazyLoadRows,\n this.lazyLoadRows\n )\n ) {\n this.state.lazyLoadRows = this.lazyLoadRows;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.loadMoreLimit,\n this.loadMoreLimit\n )\n ) {\n this.state.loadMoreLimit = this.loadMoreLimit;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.selection,\n this.selection\n )\n ) {\n this.state.selection = this.selection;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.rowsPerPage,\n this.currentRowsPerPage\n )\n ) {\n this.state.rowsPerPage = this.currentRowsPerPage;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.showFilters,\n this.showFilters\n )\n ) {\n this.state.showFilters = this.showFilters;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.showGroups,\n this.showGroups\n )\n ) {\n this.state.showGroups = this.showGroups;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.showHeader,\n this.showHeader\n )\n ) {\n this.state.showHeader = this.showHeader;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.showLoadMore,\n this.showLoadMore\n )\n ) {\n this.state.showLoadMore = this.showLoadMore;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.sortEnabled,\n this.sortEnabled\n )\n ) {\n this.state.sortEnabled = this.sortEnabled;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.sortableColumnsMutateData,\n this.sortableColumnsMutateData\n )\n ) {\n this.state.sortableColumnsMutateData =\n this.sortableColumnsMutateData;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.pageSelected,\n this.currentPage\n )\n ) {\n this.state.pageSelected = this.currentPage;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.dragEnabled,\n this.dragEnabled\n )\n ) {\n this.state.dragEnabled = this.dragEnabled;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.dropEnabled,\n this.dropEnabled\n )\n ) {\n this.state.dropEnabled = this.dropEnabled;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.showFooter,\n this.showFooter\n )\n ) {\n this.state.showFooter = this.showFooter;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.totals,\n this.totals\n )\n ) {\n this.state.totals = { ...this.totals };\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.selectRowsById,\n this.selectedRows.reduce(\n (accumulator, row, currentIndex) => {\n const prefix = currentIndex > 0 ? ';' : '';\n return accumulator + prefix + row.id;\n },\n ''\n )\n )\n ) {\n this.state.selectRowsById = this.selectedRows.reduce(\n (accumulator, row, currentIndex) => {\n const prefix = currentIndex > 0 ? ';' : '';\n return accumulator + prefix + row.id;\n },\n ''\n );\n somethingChanged = true;\n }\n\n if (!this.state.load) {\n this.state.load = true;\n return;\n }\n\n if (somethingChanged) {\n this.#kupManager.debug.logMessage(\n this,\n 'Persisting stateId ' + this.stateId\n );\n this.store.persistState(this.stateId, this.state);\n }\n }\n }\n\n //////////////////////////////\n // End state stuff\n //////////////////////////////\n\n @Element() rootElement: HTMLElement;\n\n /**\n * When true and when a row is missing some columns, the missing cells will be autogenerated.\n * @default false\n */\n @Prop() autoFillMissingCells: boolean = false;\n /**\n * Custom style of the component. For more information: https://smeup.github.io/ketchup/#/customization\n */\n @Prop() customStyle: string = '';\n /**\n * The data of the table.\n */\n @Prop({ mutable: true }) data: KupDataTableDataset;\n /**\n * The density of the rows, defaults at 'medium' and can be also set to 'large' or 'small'.\n */\n @Prop() density: FCellPadding = FCellPadding.DENSE;\n /**\n * Enables drag.\n */\n @Prop({ mutable: true, reflect: true }) dragEnabled: boolean = false;\n /**\n * Enables drop.\n */\n @Prop({ reflect: true }) dropEnabled: boolean = false;\n /**\n * When set to true, editable cells will be rendered using input components.\n * @default false\n */\n @Prop({ mutable: true }) editableData: boolean = false;\n /**\n * Defines the label to show when the table is empty.\n */\n @Prop({ mutable: true }) emptyDataLabel: string = null;\n /**\n * Enables the choice to set formulas on columns by dragging them into different columns.\n * @default true\n */\n @Prop() enableColumnsFormula: boolean = true;\n /**\n * Enables the extracolumns add buttons.\n */\n @Prop() enableExtraColumns: boolean = true;\n /**\n * Enables the merging of columns by dragging them into different columns.\n * @default true\n */\n @Prop() enableMergeColumns: boolean = true;\n /**\n * Enables the sorting of columns by dragging them into different columns.\n */\n @Prop() enableSortableColumns: boolean = true;\n /**\n * Expands groups when set to true.\n */\n @Prop() expandGroups: boolean = false;\n /**\n * List of filters set by the user.\n */\n @Prop({ mutable: true }) filters: GenericFilter = {};\n /**\n * Fixes the given number of columns so that they stay visible when horizontally scrolling the data-table.\n * If grouping is active or the value of the prop is <= 0, this prop will have no effect.\n * Can be combined with fixedRows.\n * @see fixedRows\n */\n @Prop() fixedColumns: number = 0;\n /**\n * Fixes the given number of columns to the right so that they stay visible when horizontally scrolling the data-table.\n * If grouping is active or the value of the prop is <= 0, this prop will have no effect.\n * Can be combined with fixedRows.\n * @see fixedRows\n */\n @Prop() fixedColumnsR: number = 0;\n /**\n * Fixes the given number of rows so that they stay visible when vertically scrolling the data-table.\n * If grouping is active or the value of the prop is <= 0, this prop will have no effect.\n * Can be combined with fixedColumns.\n * @see fixedColumns\n */\n @Prop() fixedRows: number = 0;\n /**\n * Forces cells with long text and a fixed column size to have an ellipsis set on their text.\n * The reflect attribute is mandatory to allow styling.\n */\n @Prop({ reflect: true }) forceOneLine: boolean = false;\n /**\n * When set to true it activates the global filter.\n */\n @Prop() globalFilter: boolean = false;\n /**\n * The value of the global filter.\n */\n @Prop({ reflect: true, mutable: true }) globalFilterValue = '';\n /**\n * How the label of a group must be displayed.\n * For available values [see here]{@link GroupLabelDisplayMode}\n */\n @Prop() groupLabelDisplay: GroupLabelDisplayMode =\n GroupLabelDisplayMode.BOTH;\n /**\n * The list of groups.\n */\n @Prop({ mutable: true }) groups: Array<GroupObject> = [];\n /**\n * When set to true the header will stick on top of the table when scrolling.\n */\n @Prop() headerIsPersistent = true;\n /**\n * Enables insert mode.\n * @default '''\n */\n @Prop() insertMode: KupDataTableInsertMode = '';\n /**\n * When set to true, clicked-on rows will have a visual feedback.\n * @default false\n */\n @Prop() isFocusable: boolean = false;\n /**\n * When set to true, extra rows will be automatically loaded once the last row enters the viewport. When groups are present, the number of rows is referred to groups and not to their content. Paginator is disabled.\n */\n @Prop() lazyLoadRows: boolean = false;\n /**\n * Defines the placeholder character which will be replaced by a line break inside table header cells, normal or sticky.\n */\n @Prop() lineBreakCharacter: string = '\\n';\n /**\n * Sets a maximum limit of new records which can be required by the load more functionality.\n */\n @Prop() loadMoreLimit: number = 1000;\n /**\n * Establish the modality of how many new records will be downloaded.\n *\n * This property is regulated also by loadMoreStep.\n * @see loadMoreStep\n * @see loadMoreLimit\n */\n @Prop() loadMoreMode: LoadMoreMode = LoadMoreMode.PROGRESSIVE_THRESHOLD;\n /**\n * The number of records which will be requested to be downloaded when clicking on the load more button.\n *\n * This property is regulated also by loadMoreMode.\n * @see loadMoreMode\n * @see loadMoreLimit\n */\n @Prop() loadMoreStep: number = 60;\n /**\n * Current selected page set on component load\n */\n @Prop() pageSelected: number = -1;\n /**\n * Sets the position of the paginator. Available positions: top, bottom or both.\n */\n @Prop() paginatorPos: PaginatorPos = PaginatorPos.TOP;\n /**\n * When enabled, the extra whitespaces will be displayed and the font will be set to monospace by default.\n */\n @Prop({ reflect: true }) legacyLook = false;\n /**\n * Sets the possibility to remove the selected column.\n */\n @Prop() removableColumns: boolean = false;\n /**\n * Gives the possibility to resize columns by dragging on their right edge.\n */\n @Prop() resizableColumns: boolean = true;\n /**\n * Sets the actions of the rows.\n */\n @Prop() rowActions: Array<KupDataRowAction>;\n /**\n * Sets the commands for the rows\n */\n @Prop() commands: Array<KupCommand>;\n /**\n * Sets the number of rows per page to display.\n */\n @Prop() rowsPerPage = 10;\n /**\n * Activates the scroll on hover function.\n */\n @Prop() scrollOnHover: boolean = false;\n /**\n * Set the type of the rows selection.\n */\n @Prop() selection: SelectionMode = SelectionMode.SINGLE;\n /**\n * If set to true, displays the button to open the customization panel.\n */\n @Prop() showCustomization: boolean = true;\n /**\n * Enables the delete row button.\n */\n @Prop() showDeleteButton: boolean = false;\n /**\n * Enables the history button.\n */\n @Prop() showHistoryButton: boolean = false;\n /**\n * When set to true enables the column filters.\n */\n @Prop() showFilters: boolean = false;\n /**\n * When set to true shows the footer.\n */\n @Prop() showFooter: boolean = false;\n /**\n * Can be used to customize the grid view of the table.\n */\n @Prop() showGrid: ShowGrid = ShowGrid.ROW;\n /**\n * When set to true enables the column grouping.\n */\n @Prop() showGroups: boolean = false;\n /**\n * Enables rendering of the table header.\n * @namespace KupDataTable.showHeader\n */\n @Prop() showHeader: boolean = true;\n /**\n * If set to true, displays the button to load more records.\n */\n @Prop() showLoadMore: boolean = false;\n /**\n * Defines the current sorting options.\n */\n @Prop({ mutable: true }) sort: Array<SortObject> = [];\n /**\n * If set to true, when a column is dragged to be sorted, the component directly mutates the data.columns property\n * and then fires the event\n */\n @Prop() sortableColumnsMutateData: boolean = true;\n /**\n * When set to true enables the sorting of the columns by clicking on the column header.\n */\n @Prop() sortEnabled = true;\n /**\n * Sets the height of the table.\n */\n @Prop() tableHeight: string = undefined;\n /**\n * Sets the width of the table.\n */\n @Prop() tableWidth: string = undefined;\n /**\n * Defines the current totals options\n */\n @Prop({ mutable: true }) totals: TotalsMap;\n /**\n * Transposes the data of the data table\n */\n @Prop({ mutable: true }) transpose: boolean = false;\n\n /**\n * When set to true, editable cells will be rendered using input components,\n * and update button will appair below the matrix\n * @default false\n */\n @Prop({ mutable: true }) updatableData: boolean = false;\n\n //-------- State --------\n\n @State()\n private lazyLoadCells = false;\n\n @State()\n private currentPage = 1;\n\n @State()\n private currentRowsPerPage = 50;\n\n @State()\n private selectedRows: Array<KupDataTableRow> = [];\n\n @State()\n private selectedColumn: string;\n\n @State()\n private columnMenuAnchor: string = null;\n\n @State()\n private groupState: {\n [index: string]: {\n expanded: boolean;\n };\n } = {};\n\n /**\n * name of the column with the opened total menu\n */\n @State()\n private openedTotalMenu: string = null;\n\n @State()\n private openedCustomSettings: boolean = false;\n\n @State()\n private fontsize: string = 'medium';\n\n @Watch('rowsPerPage')\n rowsPerPageHandler(newValue: number) {\n this.currentRowsPerPage = newValue;\n }\n\n @Watch('expandGroups')\n expandGroupsHandler() {\n if (!this.#isRestoringState) {\n this.recalculateRows();\n // reset group state\n this.groupState = {};\n this.#forceGroupExpansion();\n }\n }\n\n @Watch('filters')\n @Watch('globalFilterValue')\n filtersChanged() {\n this.expandGroupsHandler();\n }\n\n @Watch('sort')\n @Watch('rowsPerPage')\n @Watch('totals')\n @Watch('currentPage')\n @Watch('currentRowsPerPage')\n recalculateRows() {\n if (!this.#isRestoringState) {\n this.#initRows();\n }\n }\n\n @Watch('data')\n identifyAndInitRows() {\n identify(this.getRows());\n this.expandGroupsHandler();\n this.#resetSelectedRows();\n }\n\n @Watch('data')\n decorateAndInitForUpdTable() {\n if (this.data['type'] === 'SmeupDataTable') {\n decorateDataTable(this.data);\n }\n if (this.updatableData) {\n this.#originalDataLoaded = JSON.parse(JSON.stringify(this.data));\n this.selection = this.data.setup?.operations?.delete\n ? SelectionMode.MULTIPLE_CHECKBOX\n : this.selection;\n\n this.#originalDataLoadedMaxId =\n this.#originalDataLoaded.rows?.length > 0\n ? Math.max(\n ...this.#originalDataLoaded.rows.map((r) =>\n parseInt(r.id)\n )\n )\n : -1;\n }\n }\n\n @Watch('groups')\n recalculateRowsAndUndoSelections() {\n if (!this.#isRestoringState) {\n this.recalculateRows();\n // reset group state\n this.groupState = {};\n this.#forceGroupExpansion();\n this.#resetSelectedRows();\n }\n }\n\n @Watch('fixedColumns')\n @Watch('fixedColumnsR')\n @Watch('fixedRows')\n controlFixedRowsColumns() {\n let warnMessage = '';\n\n if (isNaN(this.fixedColumns) || this.fixedColumns < 0) {\n warnMessage += `The value ${this.fixedColumns} set on fixedColumns property is not valid.`;\n }\n\n if (isNaN(this.fixedColumnsR) || this.fixedColumnsR < 0) {\n warnMessage += `The value ${this.fixedColumnsR} set on fixedColumnsR property is not valid.`;\n }\n\n if (isNaN(this.fixedRows) || this.fixedRows < 0) {\n warnMessage += `The value ${this.fixedRows} set on fixedRows property is not valid.`;\n }\n\n if (warnMessage && console) {\n console.warn(warnMessage + 'Any fixed rule will be ignored.');\n }\n }\n\n @Watch('transpose')\n recalculateData() {\n if (this.#initialized) {\n this.#calculateData();\n }\n }\n\n #initialized = false;\n #rows: Array<KupDataTableRow>;\n #rowsLength: number = 0;\n\n #paginatedRows: Array<KupDataTableRow>;\n #paginatedRowsLength: number = 0;\n\n #footer: { [index: string]: any }; // TODO change any\n /**\n * Instance of the KupManager class.\n */\n #kupManager: KupManager = kupManagerInstance();\n #renderedRows: Array<KupDataTableRow> = [];\n\n #loadMoreEventCounter: number = 0;\n\n #loadMoreEventPreviousQuantity: number = 0;\n\n /**\n * Reference for the thead element\n */\n #theadRef: any;\n #tableRef: HTMLTableElement;\n\n /**\n * contains the original data, used in transposed function\n */\n #originalData: KupDataTableDataset = undefined;\n\n /**\n * contains the original data when the component is\n * loaded the first time\n */\n #originalDataLoaded: KupDataDataset = undefined;\n\n /**\n * contains the id greater value in #originalDataLoaded\n */\n #originalDataLoadedMaxId: number;\n\n /**\n * Reference to the working area of the table. This is the below-wrapper reference.\n */\n #tableAreaRef: KupScrollOnHoverElement;\n #stickyTheadRef: any;\n #lastPointerDetails: KupDatatableEventHandlerDetails;\n #customizeTopButtonRef: any;\n #customizeTopPanelRef: HTMLKupCardElement;\n #sizedColumns: KupDataColumn[] = undefined;\n #intObserver: IntersectionObserver = undefined;\n #navBarHeight: number = 0;\n #theadIntersecting: boolean = false;\n #tableIntersecting: boolean = false;\n #isSafariBrowser: boolean = false;\n #isRestoringState: boolean = false;\n #globalFilterTimeout: number;\n #totalMenuCoords: KupDynamicPositionCoordinates = null;\n columnFilterTimeout: number;\n #clickTimeout: ReturnType<typeof setTimeout>[] = [];\n #thRefs: HTMLElement[] = [];\n #rowsRefs: HTMLElement[] = [];\n #oldWidth: number = null;\n #hold: boolean = false;\n #interactableDrag: HTMLElement[] = [];\n #interactableDrop: HTMLElement[] = [];\n #interactableResize: HTMLElement[] = [];\n #interactableTouch: HTMLElement[] = [];\n #dropareaRef: HTMLElement = null;\n #removeDropareaRef: HTMLElement = null;\n #groupsDropareaRef: HTMLElement = null;\n #clickCb: KupManagerClickCb = null;\n #clickCbCustomPanel: KupManagerClickCb = null;\n #clickCbDropCard: KupManagerClickCb = null;\n /**\n * Used to prevent too many resizes callbacks at once.\n */\n #resizeTimeout: number;\n #columnMenuInstance: KupColumnMenu;\n #filtersColumnMenuInstance: FiltersColumnMenu;\n #filtersRowsInstance: FiltersRows;\n #detailCard: HTMLKupCardElement = null;\n #insertCard: HTMLKupCardElement = null;\n #actionsCard: HTMLKupCardElement = null;\n #confirmDeleteCard: HTMLKupCardElement = null;\n #confirmDeleteDialog: HTMLKupDialogElement = null;\n #columnMenuCard: HTMLKupCardElement = null;\n #columnDropCard: HTMLKupCardElement = null;\n #columnDropCardAnchor: HTMLElement = null;\n #dropDownActionCardAnchor: HTMLElement = null;\n #insertCount = 0;\n\n #BUTTON_CANCEL_ID: string = 'cancel';\n #BUTTON_SUBMIT_ID: string = 'submit';\n #FIELDS_FORM_ID: string = 'fieldsForm';\n #MESSAGE_ID: string = 'message';\n #MESSAGE_WRAPPER_ID: string = 'messageWrapper';\n #INSERT_PREFIX = 'insert_';\n\n /**\n * When component unload is complete\n */\n @Event({\n eventName: 'kup-datatable-didunload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidUnload: EventEmitter<KupEventPayload>;\n\n /**\n * When component load is complete\n */\n @Event({\n eventName: 'kup-datatable-didload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidLoad: EventEmitter<KupEventPayload>;\n\n /**\n * When rows selections reset\n */\n @Event({\n eventName: 'kup-datatable-resetselectedrows',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupResetSelectedRows: EventEmitter<KupEventPayload>;\n\n /**\n * When a row is selected\n */\n @Event({\n eventName: 'kup-datatable-rowselected',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupRowSelected: EventEmitter<KupDatatableRowSelectedEventPayload>;\n /**\n * Generic click event on data table.\n */\n @Event({\n eventName: 'kup-datatable-click',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDataTableClick: EventEmitter<KupDatatableClickEventPayload>;\n /**\n * Generic right click event on data table.\n */\n @Event({\n eventName: 'kup-datatable-contextmenu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDataTableContextMenu: EventEmitter<KupDatatableClickEventPayload>;\n /**\n * Generic right click event on a cell in data table.\n */\n @Event({\n eventName: 'kup-datatable-cell-actions-menu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDataTableCellActionsMenu: EventEmitter<KupDatatableClickEventPayload>;\n /**\n * Generic double click event on data table.\n */\n @Event({\n eventName: 'kup-datatable-dblclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDataTableDblClick: EventEmitter<KupDatatableClickEventPayload>;\n /**\n * Emitted by the column menu card when opened/closed or when a kup-card-event is fired.\n */\n @Event({\n eventName: 'kup-datatable-columnmenu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDataTableColumnMenu: EventEmitter<KupDatatableColumnMenuEventPayload>;\n\n @Event({\n eventName: 'kup-datatable-loadmoreclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupLoadMoreClick: EventEmitter<KupDatatableLoadMoreClickEventPayload>;\n /**\n * Event fired when columns are moved (sorted).\n */\n @Event({\n eventName: 'kup-datatable-columnmove',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupColumnMove: EventEmitter<KupDatatableColumnMoveEventPayload>;\n /**\n * Event fired when columns are removed (set to hidden).\n */\n @Event({\n eventName: 'kup-datatable-columnremove',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupColumnRemove: EventEmitter<KupDatatableColumnRemoveEventPayload>;\n /**\n * Event fired when the delete row button is pressed.\n */\n @Event({\n eventName: 'kup-datatable-delete-row',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDeleteRow: EventEmitter<KupDatatableDeleteRowEventPayload>;\n /**\n * Event fired when the save button is pressed.\n */\n @Event({\n eventName: 'kup-datatable-save',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupSave: EventEmitter<KupDatatableInsertRowEventPayload>;\n /**\n * Event fired when the insert row confirm button is pressed.\n */\n @Event({\n eventName: 'kup-datatable-insert-row',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupInsertRow: EventEmitter<KupDatatableInsertRowEventPayload>;\n\n /**\n * Event fired when the history confirm button is pressed.\n */\n @Event({\n eventName: 'kup-datatable-history',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupHistory: EventEmitter<KupDatatableHistoryEventPayload>;\n\n /**\n * Event fired when the history confirm button is pressed.\n */\n @Event({\n eventName: 'kup-datatable-rowaction-item-click',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupRowActionItemClick: EventEmitter<KupDatatableRowActionItemClickEventPayload>;\n\n /**\n * Event fired when the cell action icon is pressed\n */\n @Event({\n eventName: 'kup-datatable-cell-action-icon-click',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupCellActionIconClick: EventEmitter<KupDatatableClickEventPayload>;\n\n /**\n * Event fired when the user click on update button or on one\n * of the command buttons.\n * Update button and commands are visible when the props updatableData is true\n */\n @Event({\n eventName: 'kup-datatable-update',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupUpdate: EventEmitter<KupDatatableUpdatePayload>;\n\n /**\n * Closes any opened column menu.\n */\n @Method()\n async closeColumnMenu(): Promise<void> {\n this.columnMenuAnchor = null;\n if (this.#columnMenuCard) {\n this.#columnMenuCard.data = null;\n }\n this.#columnMenuInstance.close(this.#columnMenuCard);\n this.kupDataTableColumnMenu.emit({\n comp: this,\n id: this.rootElement.id,\n card: this.#columnMenuCard,\n event: null,\n open: false,\n });\n }\n\n /**\n * Collapses all groups.\n */\n @Method()\n async collapseAll(): Promise<void> {\n this.expandGroups = false;\n }\n /**\n * This method will delete rows by id from the data table dataset.\n * @param {string[]} ids - Array of row ids to delete.\n * @returns {Promise<Array<KupDataTableRow>>} Deleted rows.\n */\n @Method()\n async deleteRows(ids: string[] = []): Promise<Array<KupDataTableRow>> {\n const deletedRows: KupDataTableRow[] = [];\n const newRows: KupDataTableRow[] = [];\n const currentRows = this.getRows();\n for (let index = 0; index < currentRows.length; index++) {\n const row = currentRows[index];\n if (ids.includes(row.id)) {\n const r = row.clonedFrom ? row.clonedFrom : row;\n deletedRows.push(r);\n if (this.selectedRows.includes(row)) {\n this.selectedRows.splice(this.selectedRows.indexOf(row), 1);\n }\n } else {\n newRows.push(row);\n }\n }\n if (deletedRows.length > 0) {\n this.data.rows = newRows;\n await this.refresh(true);\n }\n return deletedRows;\n }\n\n /**\n * Closes the insert new record card (called by backend, on success)\n */\n @Method()\n async closeInsertCard() {\n if (this.#insertCard) {\n this.#insertCard.remove();\n this.#insertCard = null;\n }\n }\n /**\n * Closes the delete confirm card (called by backend, on success)\n */\n @Method()\n async closeConfirmDeleteCard() {\n if (this.#confirmDeleteDialog) {\n this.#confirmDeleteDialog.close();\n this.#confirmDeleteCard = null;\n this.#confirmDeleteDialog = null;\n }\n }\n\n /**\n * Returns cards and sub components\n */\n @Method()\n async getCards(): Promise<any> {\n const obj = {};\n\n if (this.#insertCard) {\n obj['insertCard'] = {\n el: this.#insertCard,\n messageWrapper: this.#insertCard.querySelector(\n '#' + this.#MESSAGE_WRAPPER_ID\n ),\n message: this.#insertCard.querySelector('#' + this.#MESSAGE_ID),\n submitButton: this.#insertCard.querySelector(\n '#' + this.#BUTTON_SUBMIT_ID\n ),\n cancelButton: this.#insertCard.querySelector(\n '#' + this.#BUTTON_CANCEL_ID\n ),\n form: this.#insertCard.querySelector(\n '#' + this.#FIELDS_FORM_ID\n ),\n };\n }\n if (this.#confirmDeleteCard) {\n obj['confirmDeleteCard'] = {\n el: this.#confirmDeleteCard,\n messageWrapper: this.#insertCard.querySelector(\n '#' + this.#MESSAGE_WRAPPER_ID\n ),\n message: this.#confirmDeleteCard.querySelector(\n '#' + this.#MESSAGE_ID\n ),\n submitButton: this.#confirmDeleteCard.querySelector(\n '#' + this.#BUTTON_SUBMIT_ID\n ),\n cancelButton: this.#confirmDeleteCard.querySelector(\n '#' + this.#BUTTON_CANCEL_ID\n ),\n };\n }\n /*\n #detailCard: HTMLKupCardElement = null;\n #columnMenuCard: HTMLKupCardElement = null;\n #columnDropCard: HTMLKupCardElement = null;\n */\n return obj;\n }\n\n /**\n * Adds a new row to the list data\n * @param row new row\n */\n @Method()\n async insertNewRow(row: KupDataTableRow, unshift: boolean = false) {\n if (row) {\n if (unshift) {\n this.data.rows.unshift(row);\n } else {\n this.data.rows.push(row);\n }\n await this.refresh(true);\n }\n }\n\n /**\n * Expands all groups.\n */\n @Method()\n async expandAll(): Promise<void> {\n this.expandGroups = true;\n }\n /**\n * Used to retrieve component's props values.\n * @param {boolean} descriptions - When provided and true, the result will be the list of props with their description.\n * @returns {Promise<GenericObject>} List of props as object, each key will be a prop.\n */\n @Method()\n async getProps(descriptions?: boolean): Promise<GenericObject> {\n return getProps(this, KupDataTableProps, descriptions);\n }\n /**\n * This method will get the selected rows of the component.\n */\n @Method()\n async getSelectedRows(): Promise<Array<KupDataTableRow>> {\n const selRows: KupDataTableRow[] = [];\n this.selectedRows.forEach((row) => {\n if (row.clonedFrom) {\n selRows.push(row.clonedFrom);\n } else {\n selRows.push(row);\n }\n });\n return selRows;\n }\n /**\n * Hides the given column.\n * @param {KupDataColumn} column - Column to hide.\n */\n @Method()\n async hideColumn(column: KupDataColumn): Promise<void> {\n this.#kupManager.data.column.hide(this.data, [column.name]);\n this.kupColumnRemove.emit({\n comp: this,\n id: this.rootElement.id,\n column: column,\n });\n this.refresh();\n }\n /**\n * Adds/subtracts the input number from the first group's depth level.\n */\n\n @Method()\n async setGroupExpansionByDepth(modifier: number) {\n const toStream = () => {\n const streamlined: KupDataTableRow[] = [];\n for (let index = 0; index < this.#paginatedRows.length; index++) {\n const row = this.#paginatedRows[index];\n const group = row.group;\n if (group) {\n recursive(row);\n }\n\n function recursive(row: KupDataTableRow) {\n const group = row.group;\n streamlined.push(row);\n for (\n let index = 0;\n group?.children && index < group.children.length;\n index++\n ) {\n recursive(group.children[index]);\n }\n }\n }\n return streamlined;\n };\n const handleChildren = (\n row: KupDataTableRow,\n expand: boolean,\n maxDepth?: number,\n depth?: number\n ) => {\n const group = row.group;\n\n if (row.hasOwnProperty('group')) {\n const shouldExpand = depth < maxDepth;\n\n group.expanded = shouldExpand;\n this.groupState[group.id] = { expanded: shouldExpand };\n const paginated = paginatedStream?.find(\n (r) => r.group?.id === group.id\n )?.group;\n if (paginated) {\n paginated.expanded = shouldExpand;\n }\n if (group.children) {\n for (\n let index = 0;\n index < group.children.length;\n index++\n ) {\n const child = group.children[index];\n handleChildren(child, expand, maxDepth, depth + 1);\n }\n }\n }\n };\n const getGroupDepth = (): number => {\n const firstGroup = this.#rows[0];\n let maxDepth = 0;\n\n const traverseGroup = (\n row: KupDataTableRow,\n currentDepth: number\n ): void => {\n const group = row.group;\n if (row.hasOwnProperty('group')) {\n if (group.expanded) {\n maxDepth = Math.max(maxDepth, currentDepth);\n maxDepth += 1;\n }\n traverseGroup(group.children[0], currentDepth + 1);\n }\n };\n\n if (firstGroup) {\n traverseGroup(firstGroup, 0);\n }\n\n return maxDepth;\n };\n const paginatedStream = toStream();\n\n let maxDepth = getGroupDepth() + modifier;\n\n for (let index = 0; index < this.#rows.length; index++) {\n const row = this.#rows[index];\n const group = row.group;\n if (group) {\n handleChildren(row, false, maxDepth, 0);\n }\n }\n\n this.#adjustGroupState();\n this.refresh();\n }\n\n /**\n * Invokes the KupData API for column creation, then refreshes the component in case no errors were catched.\n * @param {KupDataNewColumnTypes} type - Type of the column creation.\n * @param {KupDataNewColumnOptions} options - Options of the creation.\n * @returns {string|KupDataColumn} Returns the new column created or a string containing the error message if something went wrong.\n */\n @Method()\n async newColumn(\n type: KupDataNewColumnTypes,\n options: KupDataNewColumnOptions\n ): Promise<string | KupDataColumn> {\n const result = this.#kupManager.data.column.new(\n this.data,\n type,\n options\n );\n this.refresh();\n\n return result;\n }\n /**\n * Opens the column menu of the given column.\n * @param {string} column - Name of the column.\n */\n @Method()\n async openColumnMenu(column: string): Promise<void> {\n this.columnMenuAnchor = column;\n if (!this.#columnMenuCard) {\n this.#columnMenuCard = document.createElement('kup-card');\n this.#columnMenuCard.isMenu = true;\n this.#columnMenuCard.layoutNumber = 12;\n this.#columnMenuCard.sizeX = 'auto';\n this.#columnMenuCard.sizeY = 'auto';\n this.#columnMenuCard.addEventListener(\n 'kup-card-click',\n (e: CustomEvent<KupEventPayload>) => {\n this.kupDataTableColumnMenu.emit({\n comp: this,\n id: this.rootElement.id,\n card: this.#columnMenuCard,\n event: e,\n open: this.#columnMenuCard.menuVisible,\n });\n }\n );\n this.#columnMenuCard.addEventListener(\n 'kup-card-event',\n (e: CustomEvent<KupCardEventPayload>) => {\n this.#columnMenuInstance.eventHandlers(e, this);\n this.kupDataTableColumnMenu.emit({\n comp: this,\n id: this.rootElement.id,\n card: this.#columnMenuCard,\n event: e,\n open: this.#columnMenuCard.menuVisible,\n });\n }\n );\n }\n this.#columnMenuCard.setAttribute('data-column', column);\n this.#columnMenuCard.data = this.#columnMenuInstance.prepData(\n this,\n getColumnByName(this.getVisibleColumns(), column)\n );\n this.#columnMenuInstance.open(this, column);\n this.#columnMenuInstance.reposition(this, this.#columnMenuCard);\n this.kupDataTableColumnMenu.emit({\n comp: this,\n id: this.rootElement.id,\n card: this.#columnMenuCard,\n event: null,\n open: true,\n });\n }\n /**\n * This method is used to trigger a new render of the component.\n */\n @Method()\n async refresh(recalcRows?: boolean): Promise<void> {\n if (recalcRows) {\n this.#initRows();\n }\n forceUpdate(this);\n }\n /**\n * This method is invoked by KupManager whenever the component changes size.\n */\n @Method()\n async resizeCallback(): Promise<void> {\n if (\n this.lazyLoadCells &&\n this.rootElement.clientWidth !== this.#oldWidth\n ) {\n window.clearTimeout(this.#resizeTimeout);\n this.#resizeTimeout = window.setTimeout(() => this.refresh(), 300);\n }\n }\n\n /**\n * Sets the cell value in a table cell.\n * @param {string} columnName - Name of the column.\n * @param {string} rowId - Id of the row.\n * @param {string} value - Value to set.\n */\n @Method()\n async setCellValue(\n columnName: string,\n rowId: string,\n value: string\n ): Promise<void> {\n const column = getColumnByName(this.data.columns, columnName);\n if (!column) {\n return;\n }\n const row = this.#getRow(rowId);\n if (!row) {\n return;\n }\n const cell = row.cells[columnName];\n if (!cell) {\n return;\n }\n cell.value = value;\n cell.displayedValue = null;\n if (cell.data) {\n cell.data.key = new Date().getTime() + column.name;\n cell.data.initialValue = value;\n }\n\n this.refresh();\n }\n\n /**\n * Sets the focus on an editable table cell.\n * @param {string} column - Name of the column.\n * @param {string} rowId - Id of the row.\n */\n @Method()\n async setFocus(column: string, rowId: string): Promise<void> {\n const cells = this.rootElement.shadowRoot.querySelectorAll(\n 'td[data-column=\"' + column + '\"]'\n );\n for (let index = 0; cells && index < cells.length; index++) {\n const cell = cells[index];\n if (cell['data-row'] && cell['data-row'].id == rowId) {\n const input = cell.querySelector('input');\n if (input) {\n input.focus();\n } else {\n const kupInput = cell.querySelector('.hydrated');\n if (kupInput) {\n try {\n (kupInput as any).setFocus();\n } catch (error) {}\n }\n }\n }\n }\n }\n /**\n * Sets the props to the component.\n * @param {GenericObject} props - Object containing props that will be set to the component.\n */\n @Method()\n async setProps(props: GenericObject): Promise<void> {\n setProps(this, KupDataTableProps, props);\n }\n\n /**\n * This method will set the selected rows of the component.\n * @param {string|number[]} rowsIdentifiers - Array of ids (dataset) or indexes (rendered rows).\n * @param {boolean} emitEvent - The event will always be emitted unless emitEvent is set to false.\n */\n @Method()\n async setSelectedRows(\n rowsIdentifiers: string[] | number[],\n emitEvent?: boolean\n ): Promise<void> {\n this.selectedRows = [];\n for (let index = 0; index < rowsIdentifiers.length; index++) {\n const id = rowsIdentifiers[index];\n const row = this.#getRow(id);\n if (row) {\n this.selectedRows.push(row);\n }\n }\n\n if (emitEvent !== false) {\n this.kupRowSelected.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n clickedColumn: null,\n clickedRow: null,\n });\n }\n }\n\n #closeDropCard() {\n this.#kupManager.dynamicPosition.stop(\n this.#columnDropCard as KupDynamicPositionElement\n );\n this.#kupManager.removeClickCallback(this.#clickCbDropCard);\n this.#columnDropCard.remove();\n this.#columnDropCard = null;\n }\n\n #createDropCard(starter: KupDataColumn, receiving: KupDataColumn) {\n if (this.#columnDropCard) {\n this.#closeDropCard();\n }\n this.#columnDropCard = document.createElement('kup-card');\n this.#columnDropCard.data = {\n options: {\n data: this.data,\n enableFormula: this.enableColumnsFormula,\n enableMerge: this.enableMergeColumns,\n enableMove: this.enableSortableColumns,\n receivingColumn: receiving,\n starterColumn: starter,\n formulaCb: () => {\n this.#closeDropCard();\n this.refresh();\n },\n mergeCb: () => {\n this.newColumn(KupDataNewColumnTypes.CONCATENATE, {\n columns: [receiving.name, starter.name],\n });\n this.#closeDropCard();\n },\n moveCb: () => {\n this.#handleColumnSort(receiving, starter);\n this.#closeDropCard();\n },\n } as KupCardColumnDropMenuOptions,\n };\n this.#columnDropCard.layoutFamily = KupCardFamily.BUILT_IN;\n this.#columnDropCard.layoutNumber = 3;\n this.#columnDropCard.isMenu = true;\n this.#columnDropCard.sizeX = '280px';\n this.#columnDropCard.sizeY = 'auto';\n this.#kupManager.dynamicPosition.register(\n this.#columnDropCard,\n this.#columnDropCardAnchor as KupDynamicPositionAnchor,\n 0,\n KupDynamicPositionPlacement.AUTO,\n true\n );\n this.#kupManager.dynamicPosition.start(\n this.#columnDropCard as unknown as KupDynamicPositionElement\n );\n this.#clickCbDropCard = {\n cb: () => {\n this.#closeDropCard();\n },\n el: this.#columnDropCard,\n };\n this.#kupManager.addClickCallback(this.#clickCbDropCard, true);\n this.#columnDropCard.menuVisible = true;\n }\n\n #calculateData() {\n if (!this.transpose) {\n // restore\n if (this.#originalData) {\n this.data = { ...this.#originalData };\n }\n } else {\n // transpose\n this.#setTransposedData();\n }\n }\n\n #getRow(id: string | number): KupDataRow {\n if (this.#isGrouping() && typeof id === 'string') {\n return this.#_getRow(id, this.#paginatedRows);\n } else {\n return this.#_getRow(id, this.#rows);\n }\n }\n\n #_getRow(id: string | number, rows: KupDataTableRow[]): KupDataTableRow {\n if (!rows || rows.length == 0) {\n return null;\n }\n if (typeof id === 'number') {\n return rows[id];\n } else {\n for (let i = 0; i < rows.length; i++) {\n let r = rows[i];\n if (r.id === id) {\n return r;\n }\n if (r.group) {\n r = this.#_getRow(id, r.group.children);\n if (r) {\n return r;\n }\n }\n }\n }\n return null;\n }\n\n #getTransposedData(column?: string): KupDataDataset {\n if (column) {\n this.filters = {};\n }\n return this.#kupManager.data.transpose(this.data, column);\n }\n\n #setTransposedData(): void {\n // transpose\n this.#originalData = { ...this.data };\n if (this.data.columns.length > 0) {\n this.data = this.#getTransposedData(this.data.columns[0].name);\n }\n }\n\n #switchToTotalsMatrix(): void {\n if (this.#rows.length === 0 || !this.#rows[0].group) return;\n // calc totals matrix data\n const totalsMatrixData: KupDataDataset = {};\n // calc columns id\n // note that the sorting of the columns depends on the totals selection\n // the first column is the one that is selected first in the totals, and so on...\n const ids: Array<string> = [];\n ids.push(this.#rows[0].group.column);\n Object.keys(this.#rows[0].group.totals).forEach((columnKey) => {\n if (this.#rows[0].group.column !== columnKey) ids.push(columnKey);\n });\n // calc columns\n const totalsMatrixColumns: Array<KupDataColumn> = [];\n ids.forEach((id) => {\n this.data.columns.forEach((column) => {\n if (column.name === id) {\n const currentColumn = { ...column };\n const totalMode = this.totals[currentColumn.name];\n if (totalMode) {\n if (totalMode.startsWith(TotalMode.MATH)) {\n currentColumn.title =\n TotalLabel[TotalMode.MATH] +\n ' ' +\n currentColumn.title;\n } else {\n const totalModeKey = Object.keys(TotalMode).find(\n (key) => TotalMode[key] === totalMode\n );\n if (totalModeKey) {\n currentColumn.title =\n TotalLabel[totalModeKey] +\n ' ' +\n currentColumn.title;\n } else {\n currentColumn.title =\n totalMode + ' ' + currentColumn.title;\n }\n }\n this.#setObjForTotalsMatrix(currentColumn, this.totals);\n }\n totalsMatrixColumns.push(currentColumn);\n }\n });\n });\n // set columns\n totalsMatrixData.columns = totalsMatrixColumns;\n // calc rows\n const totalsMatrixRows: Array<KupDataTableRow> = [];\n let index = 0;\n this.#rows.forEach((row) => {\n const cells: KupDataTableRowCells = {};\n ids.forEach((id) => {\n let totalValue = row.group.totals[id];\n if (!totalValue) {\n totalValue = row.group.id;\n }\n if (this.#kupManager.dates.isIsoDate(totalValue)) {\n totalValue = this.#kupManager.dates.format(totalValue);\n }\n cells[id] = {\n value: String(totalValue),\n };\n });\n totalsMatrixRows.push({\n id: String(index),\n cells,\n });\n index++;\n });\n // set rows\n totalsMatrixData.rows = totalsMatrixRows;\n // reset groups\n this.groups = [];\n // update data\n this.data = { ...totalsMatrixData };\n // calc totals\n // distinct becomes count\n // count becomes sum\n const updatedTotals: TotalsMap = {};\n Object.keys(this.totals).forEach((key) => {\n switch (this.totals[key]) {\n case TotalMode.DISTINCT:\n updatedTotals[key] = TotalMode.COUNT;\n break;\n case TotalMode.COUNT:\n updatedTotals[key] = TotalMode.SUM;\n break;\n default:\n updatedTotals[key] = this.totals[key];\n break;\n }\n });\n // update totals\n this.totals = { ...updatedTotals };\n }\n\n // TODO\n // this is momentary\n #setObjForTotalsMatrix(column: KupDataColumn, totals: TotalsMap): void {\n const obj = column.obj;\n const totalMode = totals[column.name];\n if (this.#kupManager.objects.isDate(obj)) {\n // check if min or max totals mode\n if (totalMode === TotalMode.MAX || totalMode === TotalMode.MIN) {\n return;\n }\n } else if (this.#kupManager.objects.isNumber(obj)) {\n // check if percentage\n if (obj.p && obj.p.toUpperCase() === 'P') {\n if (\n totalMode !== TotalMode.COUNT &&\n totalMode !== TotalMode.DISTINCT\n ) {\n return;\n }\n }\n }\n // force obj number\n column.obj = {\n t: 'NR',\n p: '',\n k: '',\n };\n if (column.icon) {\n delete column.icon;\n }\n }\n\n #stickyHeaderPosition = () => {\n if (this.#tableRef) {\n if (this.#tableIntersecting) {\n if (!this.#theadIntersecting) {\n this.#updateStickyHeaderSize();\n this.#stickyTheadRef.classList.add('activated');\n } else {\n this.#stickyTheadRef.classList.remove('activated');\n }\n } else {\n this.#stickyTheadRef.classList.remove('activated');\n }\n }\n };\n\n #updateStickyHeaderSize() {\n const navBar = document.querySelector('.header') as HTMLElement;\n const topBar = document.querySelector('.topbar') as HTMLElement;\n if (navBar) {\n this.#navBarHeight = navBar.clientHeight;\n } else {\n this.#navBarHeight = 0;\n }\n if (topBar) {\n this.#navBarHeight += topBar.clientHeight;\n }\n if (this.#stickyTheadRef) {\n this.#stickyTheadRef.style.top = this.#navBarHeight + 'px';\n const widthTable = this.#tableAreaRef.offsetWidth;\n this.#stickyTheadRef.style.maxWidth = widthTable + 'px';\n const thCollection: NodeListOf<HTMLElement> =\n this.#theadRef.querySelectorAll('th');\n const thStickyCollection: NodeListOf<HTMLElement> =\n this.#stickyTheadRef.querySelectorAll('th-sticky');\n for (let i = 0; i < thCollection.length; i++) {\n const widthTH = thCollection[i].offsetWidth;\n thStickyCollection[i].style.width = widthTH + 'px';\n }\n }\n }\n\n #setObserver() {\n const callback: IntersectionObserverCallback = (\n entries: IntersectionObserverEntry[]\n ) => {\n entries.forEach((entry) => {\n if (entry.target.tagName === 'TR') {\n if (entry.isIntersecting) {\n this.#kupManager.debug.logMessage(\n this,\n 'Last row entering the viewport, loading more elements.'\n );\n const delta =\n this.#rows.length - this.currentRowsPerPage;\n if (delta < this.loadMoreStep) {\n this.currentRowsPerPage += delta;\n } else {\n this.currentRowsPerPage += this.loadMoreStep;\n }\n entry.target.classList.remove('last-row');\n }\n }\n if (entry.target.tagName === 'THEAD') {\n if (entry.isIntersecting) {\n this.#theadIntersecting = true;\n } else if (\n entry.boundingClientRect.bottom > this.#navBarHeight\n ) {\n //If the thead is not intersecting but it still is inside the viewport, is to be considered intersected\n this.#theadIntersecting = true;\n } else {\n this.#theadIntersecting = false;\n }\n }\n if (entry.target.tagName === 'TABLE') {\n if (entry.isIntersecting) {\n this.#tableIntersecting = true;\n } else {\n this.#tableIntersecting = false;\n }\n }\n if (\n this.tableHeight === undefined &&\n this.tableWidth === undefined &&\n this.headerIsPersistent\n ) {\n this.#stickyHeaderPosition();\n }\n });\n };\n const options: IntersectionObserverInit = {\n threshold: 0,\n rootMargin: '-' + this.#navBarHeight + 'px 0px 0px 0px',\n };\n this.#intObserver = new IntersectionObserver(callback, options);\n }\n\n #didLoadInteractables() {\n this.#interactableTouch.push(this.#tableRef);\n const tapCb = (e: PointerEvent) => {\n if (this.#hold) {\n this.#hold = false;\n return;\n }\n switch (e.button) {\n // left click\n case 0:\n // Note: event must be cloned\n // otherwise inside setTimeout will be exiting the Shadow DOM scope(causing loss of information, including target).\n const clone: GenericObject = {};\n for (const key in e) {\n clone[key] = e[key];\n }\n\n // in case an icon is clicked\n if (\n (e.target as HTMLElement).classList.contains(\n 'f-image__icon'\n )\n ) {\n const details = this.#getEventDetails(\n this.#kupManager.getEventPath(\n e.target,\n this.rootElement\n ),\n e\n );\n\n // in case a cell action icon is clicked\n if (\n details?.cell?.obj?.t !== 'J4' &&\n details?.cell?.obj?.p !== 'ICO'\n ) {\n break;\n }\n }\n\n this.#clickTimeout.push(\n setTimeout(() => {\n this.kupDataTableClick.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.#clickHandler(\n clone as PointerEvent\n ),\n });\n }, 300)\n );\n break;\n // right click\n case 2:\n this.kupDataTableContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.#contextMenuHandler(e),\n });\n break;\n }\n };\n const doubletapCb = (e: PointerEvent) => {\n switch (e.button) {\n // left click\n case 0:\n for (\n let index = 0;\n index < this.#clickTimeout.length;\n index++\n ) {\n clearTimeout(this.#clickTimeout[index]);\n this.#kupManager.debug.logMessage(\n this,\n 'Cleared clickHandler timeout(' +\n this.#clickTimeout[index] +\n ').'\n );\n }\n this.#clickTimeout = [];\n this.kupDataTableDblClick.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.#dblClickHandler(e),\n });\n break;\n }\n };\n const holdCb = (e: PointerEvent) => {\n if (e.pointerType === 'pen' || e.pointerType === 'touch') {\n this.#hold = true;\n this.kupDataTableContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.#contextMenuHandler(e),\n });\n }\n };\n this.#kupManager.interact.on(\n this.#tableRef,\n KupPointerEventTypes.TAP,\n tapCb\n );\n this.#kupManager.interact.on(\n this.#tableRef,\n KupPointerEventTypes.DOUBLETAP,\n doubletapCb\n );\n this.#kupManager.interact.on(\n this.#tableRef,\n KupPointerEventTypes.HOLD,\n holdCb\n );\n }\n\n #didRenderInteractables() {\n if (this.showGroups) {\n if (!this.#interactableDrop.includes(this.#groupsDropareaRef)) {\n this.#interactableDrop.push(this.#groupsDropareaRef);\n this.#kupManager.interact.dropzone(\n this.#groupsDropareaRef,\n {\n accept: `[${kupDraggableColumnAttr}]`,\n },\n null,\n {\n drop: (e: DropEvent) => {\n const draggedTh = e.relatedTarget as HTMLElement;\n const grouped = getColumnByName(\n this.getColumns(),\n draggedTh.dataset.column\n );\n this.#handleColumnGroup(grouped);\n this.#tableRef.removeAttribute(kupDragActiveAttr);\n },\n }\n );\n }\n }\n if (this.removableColumns) {\n if (!this.#interactableDrop.includes(this.#removeDropareaRef)) {\n this.#interactableDrop.push(this.#removeDropareaRef);\n this.#kupManager.interact.dropzone(\n this.#removeDropareaRef,\n {\n accept: `[${kupDraggableColumnAttr}]`,\n },\n null,\n {\n drop: (e: DropEvent) => {\n const draggedTh = e.relatedTarget as HTMLElement;\n const deleted = getColumnByName(\n this.getColumns(),\n draggedTh.dataset.column\n );\n this.hideColumn(deleted);\n this.#tableRef.removeAttribute(kupDragActiveAttr);\n },\n }\n );\n }\n }\n if (\n this.enableSortableColumns ||\n this.enableMergeColumns ||\n this.enableColumnsFormula\n ) {\n const dataCb: KupDragDataTransferCallback = (e) => {\n const draggable = e.target as KupDraggableElement;\n return {\n cell: null,\n column: getColumnByName(\n this.getVisibleColumns(),\n draggable.dataset.column\n ),\n id: this.rootElement.id,\n multiple: !!(\n this.selection === SelectionMode.MULTIPLE ||\n this.selection === SelectionMode.MULTIPLE_CHECKBOX\n ),\n row: null,\n selectedRows: this.selectedRows,\n };\n };\n const dropCb = (e: DropEvent) => {\n const onlyMerge = !!(\n !this.enableSortableColumns &&\n !this.enableColumnsFormula &&\n this.enableMergeColumns\n );\n const onlySort = !!(\n this.enableSortableColumns &&\n !this.enableColumnsFormula &&\n !this.enableMergeColumns\n );\n const draggable = e.relatedTarget as KupDraggableElement;\n const isSameComponent = !!(\n this.rootElement.id === draggable.kupDragDrop.id\n );\n const starter = draggable.kupDragDrop.column;\n const receiving = getColumnByName(\n this.getColumns(),\n e.target.dataset.column\n );\n this.#columnDropCardAnchor = e.target as HTMLElement;\n if (isSameComponent && receiving && starter) {\n if (onlySort) {\n this.#handleColumnSort(receiving, starter);\n } else if (onlyMerge) {\n this.newColumn(KupDataNewColumnTypes.CONCATENATE, {\n columns: [receiving.name, starter.name],\n });\n } else {\n this.#createDropCard(starter, receiving);\n }\n }\n this.#tableRef.removeAttribute(kupDragActiveAttr);\n };\n const startCb = (e: InteractEvent) => {\n const draggable = e.target as KupDraggableElement;\n this.#hideShowColumnDropArea(true, draggable);\n };\n const endCb = () => {\n this.#hideShowColumnDropArea(false);\n };\n const dropCallbacks: KupDropCallbacks = {\n drop: dropCb,\n };\n const dragCallbacks: KupDragCallbacks = {\n start: startCb,\n end: endCb,\n };\n for (let index = 0; index < this.#thRefs.length; index++) {\n const th = this.#thRefs[index];\n if (th && !this.#interactableDrag.includes(th)) {\n this.#interactableDrag.push(th);\n this.#kupManager.interact.dropzone(\n th,\n {\n accept: `[${kupDraggableColumnAttr}]`,\n },\n null,\n dropCallbacks\n );\n this.#kupManager.interact.draggable(\n th,\n {\n cursorChecker() {\n return null;\n },\n ignoreFrom: '.header-cell__drag-handler',\n },\n {\n callback: dataCb,\n },\n KupDragEffect.CLONE,\n dragCallbacks\n );\n }\n }\n }\n if (this.resizableColumns) {\n const moveCb = (e: ResizeEvent) => {\n const column = getColumnByName(\n this.getVisibleColumns(),\n (e.target as HTMLElement).dataset.column\n );\n column.size = e.rect.width + 'px';\n this.refresh();\n };\n const callbacks: KupResizeCallbacks = {\n move: moveCb,\n };\n for (let index = 0; index < this.#thRefs.length; index++) {\n const th = this.#thRefs[index];\n if (th && !this.#interactableResize.includes(th)) {\n this.#interactableResize.push(th);\n this.#kupManager.interact.resizable(\n th,\n {\n allowFrom: '.header-cell__drag-handler',\n edges: {\n left: false,\n right: true,\n bottom: false,\n top: false,\n },\n ignoreFrom: '.header-cell__content',\n },\n callbacks\n );\n }\n }\n }\n if (this.dragEnabled) {\n for (let index = 0; index < this.#rowsRefs.length; index++) {\n const row = this.#rowsRefs[index];\n const dataCb: KupDragDataTransferCallback = () => {\n const cell = this.#lastPointerDetails?.cell;\n const column = this.#lastPointerDetails?.column;\n const row = this.#lastPointerDetails?.row;\n if (!cell) {\n this.#kupManager.debug.logMessage(\n this,\n \"Couldn't find cell to retrieve drag informations!\",\n KupDebugCategory.WARNING\n );\n return;\n }\n return {\n cell,\n column,\n id: this.rootElement.id,\n multiple: !!(\n this.selection === SelectionMode.MULTIPLE ||\n this.selection === SelectionMode.MULTIPLE_CHECKBOX\n ),\n row,\n selectedRows: this.selectedRows,\n };\n };\n if (row && !this.#interactableDrag.includes(row)) {\n this.#interactableDrag.push(row);\n this.#kupManager.interact.draggable(\n row,\n {\n allowFrom: 'td',\n cursorChecker() {\n return null;\n },\n },\n {\n callback: dataCb,\n },\n KupDragEffect.BADGE\n );\n }\n }\n }\n if (this.dropEnabled) {\n const dataCb: KupDropDataTransferCallback = () => {\n const cell = this.#lastPointerDetails?.cell;\n const column = this.#lastPointerDetails?.column;\n const row = this.#lastPointerDetails?.row;\n if (!cell) {\n this.#kupManager.debug.logMessage(\n this,\n \"Couldn't find cell to retrieve dropzone informations!\",\n KupDebugCategory.WARNING\n );\n return;\n }\n return {\n cell,\n column,\n id: this.rootElement.id,\n row,\n };\n };\n for (let index = 0; index < this.#rowsRefs.length; index++) {\n const row = this.#rowsRefs[index];\n if (row && !this.#interactableDrop.includes(row)) {\n this.#interactableDrop.push(row);\n this.#kupManager.interact.dropzone(\n row,\n {\n accept: `[${kupDraggableCellAttr}]`,\n },\n {\n callback: dataCb,\n dispatcher: this.rootElement,\n type: KupDropEventTypes.DATATABLE,\n }\n );\n }\n }\n }\n }\n\n #didLoadObservers() {\n if (\n this.headerIsPersistent &&\n this.tableHeight === undefined &&\n this.tableWidth === undefined\n ) {\n this.#intObserver.observe(this.#tableRef);\n this.#intObserver.observe(this.#theadRef);\n }\n }\n\n #didRenderObservers() {\n if (this.#paginatedRowsLength < this.#rowsLength && this.lazyLoadRows) {\n this.#intObserver.observe(\n this.#rowsRefs[this.#paginatedRowsLength - 1]\n );\n }\n }\n\n #didLoadEventHandling() {\n this.#tableAreaRef.addEventListener('scroll', () =>\n this.#scrollStickyHeader()\n );\n }\n\n #scrollStickyHeader() {\n if (!this.#stickyTheadRef) {\n return;\n }\n this.#stickyTheadRef.scrollLeft = this.#tableAreaRef.scrollLeft;\n }\n\n #checkScrollOnHover() {\n if (!this.#kupManager.scrollOnHover.isRegistered(this.#tableAreaRef)) {\n if (\n this.scrollOnHover &&\n this.tableHeight === undefined &&\n this.tableWidth === undefined\n ) {\n this.#kupManager.scrollOnHover.register(this.#tableAreaRef);\n }\n } else {\n if (\n !this.scrollOnHover &&\n (this.tableHeight !== undefined ||\n this.tableWidth !== undefined)\n ) {\n this.#kupManager.scrollOnHover.unregister(this.#tableAreaRef);\n }\n }\n }\n\n #customizePanelPosition() {\n if (\n this.#customizeTopButtonRef &&\n !this.#kupManager.dynamicPosition.isRegistered(\n this.#customizeTopPanelRef\n )\n ) {\n this.#kupManager.dynamicPosition.register(\n this.#customizeTopPanelRef,\n this.#customizeTopButtonRef,\n 0,\n KupDynamicPositionPlacement.BOTTOM,\n true\n );\n }\n }\n\n #rowsPointLength(): number {\n return this.#_rowsLength(this.#rows);\n }\n\n #paginatedRowsPointLength(): number {\n return this.#_rowsLength(this.#paginatedRows);\n }\n\n #_rowsLength(r: Array<KupDataTableRow>): number {\n if (r == null) {\n return 0;\n }\n let count = 0;\n for (let i: number = 0; i < r.length; i++) {\n const row = r[i];\n if (row == null) {\n continue;\n }\n count += 1;\n if (row.group != null) {\n count += this.#_rowsLength(row.group.children);\n }\n }\n return count;\n }\n\n //---- Lifecycle hooks ----\n\n componentWillLoad() {\n this.#kupManager.debug.logLoad(this, false);\n this.#kupManager.language.register(this);\n this.#kupManager.theme.register(this);\n this.#kupManager.toolbar.register(this.rootElement);\n if (!this.emptyDataLabel) {\n this.emptyDataLabel = this.#kupManager.language.translate(\n KupLanguageGeneric.EMPTY_DATA\n );\n }\n this.#columnMenuInstance = new KupColumnMenu();\n this.#filtersColumnMenuInstance = new FiltersColumnMenu();\n this.#filtersRowsInstance = new FiltersRows();\n\n this.#isRestoringState = true;\n // *** Store\n this.initWithPersistedState();\n // ***\n if (this.pageSelected > 0) {\n this.currentPage = this.pageSelected;\n }\n this.currentRowsPerPage = this.rowsPerPage;\n this.#isRestoringState = false;\n\n //this.identifyAndInitRows();\n identify(this.getRows());\n this.expandGroupsHandler();\n\n if (document.querySelector('.header')) {\n this.#navBarHeight = document.querySelector('.header').clientHeight;\n } else {\n this.#navBarHeight = 0;\n }\n if (document.querySelector('.topbar')) {\n this.#navBarHeight +=\n document.querySelector('.topbar').clientHeight;\n }\n this.#setObserver();\n\n //this.recalculateRows();\n\n // Detects is the browser is Safari. If needed, this function can be moved into an external file and then imported into components\n this.#isSafariBrowser =\n CSS.supports('position', '-webkit-sticky') ||\n !!(window && (window as Window & { safari?: object }).safari);\n\n this.#calculateData();\n this.#initialized = true;\n\n this.decorateAndInitForUpdTable();\n }\n\n componentWillRender() {\n this.#kupManager.debug.logRender(this, false);\n }\n\n componentDidRender() {\n const root: ShadowRoot = this.rootElement.shadowRoot;\n if (root) {\n const fs: NodeListOf<HTMLElement> =\n root.querySelectorAll('.f-text-field');\n for (let index = 0; index < fs.length; index++) {\n FTextFieldMDC(fs[index]);\n }\n }\n if (this.showCustomization) {\n this.#customizePanelPosition();\n }\n this.#totalMenuPosition();\n this.#checkScrollOnHover();\n this.#didRenderObservers();\n this.#didRenderInteractables();\n this.#hideShowColumnDropArea(false);\n\n if (\n this.headerIsPersistent &&\n this.tableHeight === undefined &&\n this.tableWidth === undefined\n ) {\n this.#updateStickyHeaderSize();\n }\n\n setTimeout(() => this.#updateFixedRowsAndColumnsCssVariables(), 50);\n // *** Store\n if (this.lazyLoadCells) {\n this.persistState();\n }\n // ***\n this.#oldWidth = this.rootElement.clientWidth;\n this.#kupManager.debug.logRender(this, true);\n }\n\n componentDidLoad() {\n this.#didLoadObservers();\n this.#didLoadEventHandling();\n this.#didLoadInteractables();\n this.lazyLoadCells = true;\n this.kupDidLoad.emit({ comp: this, id: this.rootElement.id });\n this.#kupManager.resize.observe(this.rootElement);\n this.#kupManager.debug.logLoad(this, true);\n }\n\n //======== Utility methods ========\n\n #resetSelectedRows() {\n if (this.getRows().length === 0) return;\n this.selectedRows = [];\n this.kupResetSelectedRows.emit({ comp: this, id: this.rootElement.id });\n }\n\n resetCurrentPage() {\n this.currentPage = 1;\n this.#resetSelectedRows();\n }\n\n getColumns(): Array<KupDataColumn> {\n return this.data && this.data.columns\n ? this.data.columns\n : [{ title: '', name: '' }];\n }\n\n #getSizedColumns() {\n const columns = this.getColumns();\n const sizedColumns = [];\n for (let j = 0; j < columns.length; j++) {\n if (\n columns[j].size !== null &&\n columns[j].size !== undefined &&\n columns[j].size !== ''\n ) {\n sizedColumns.push(columns[j]);\n }\n }\n if (sizedColumns.length > 0) {\n return sizedColumns;\n } else {\n return undefined;\n }\n }\n /**\n * Opens a card containing the detail of the given row.\n * @param {KupDataTableRow} row - Row for which the detail was requested.\n * @param {number} x - Initial x coordinates of the card.\n * @param {number} y - Initial y coordinates of the card.\n * @private\n * @memberof KupDataTable\n */\n #rowDetail(row: KupDataTableRow, x: number, y: number): void {\n const transposedData: KupDataDataset = this.#getTransposedData();\n const cardData: KupCardData = {\n button: [\n {\n disabled: parseInt(row.id) === 0 ? true : false,\n icon: 'chevron_left',\n },\n {\n disabled:\n parseInt(row.id) === this.getRows().length - 1\n ? true\n : false,\n icon: 'chevron_right',\n },\n ],\n datatable: [\n {\n customStyle:\n '#kup-component .below-wrapper{overflow: visible} #kup-component td[data-column=\"' +\n iconColumn.toUpperCase() +\n `\"]{background-color: rgba(var(${KupThemeColorValues.TEXT}-rgb), 0.15); width: 10px;}`,\n data: transposedData,\n density: 'medium',\n editableData: true,\n headerIsPersistent: false,\n id: this.rootElement.id ? this.rootElement.id : '',\n rowsPerPage: 1000,\n showGrid: ShowGrid.NONE,\n showHeader: false,\n },\n ],\n text: [this.#kupManager.language.translate(KupLanguageRow.DETAIL)],\n };\n const columns: KupDataColumn[] = cardData.datatable[0].data.columns;\n const rows: KupDataTableRow[] = cardData.datatable[0].data.rows;\n // Placing the key and icon columns before any other column\n columns.unshift(\n {\n name: iconColumn.toUpperCase(),\n title: iconColumn,\n },\n {\n name: keyColumn.toUpperCase(),\n title: keyColumn,\n }\n );\n // Setting all columns to not visible\n for (let index = 0; index < columns.length; index++) {\n columns[index].visible = false;\n }\n // Setting Field column and current record column to visible\n columns.find((x) => x.name === fieldColumn.toUpperCase()).visible =\n true;\n const currentColumn = columns.find((x) => x.name === row.id);\n if (currentColumn) {\n currentColumn.visible = true;\n } else {\n this.#kupManager.debug.logMessage(\n this,\n 'Invalid column name on row ID (' +\n row.id +\n \"), couldn't set current record!\",\n KupDebugCategory.WARNING\n );\n }\n // Setting up icons\n let keyCell: KupDataTableCell = null;\n for (let index = 0; index < rows.length; index++) {\n const column: KupDataColumn = this.data.columns.find(\n (x) => x.name === rows[index].transposedColumnName\n );\n if (!column) {\n this.#kupManager.debug.logMessage(\n this,\n 'Column not found on row name (' + column + ')!',\n KupDebugCategory.WARNING\n );\n return;\n }\n const editable: boolean = rows[index].cells[row.id].isEditable\n ? true\n : false;\n let iconCell: KupDataTableCell = null;\n if (column.isKey || editable) {\n columns.find(\n (x) => x.name === iconColumn.toUpperCase()\n ).visible = true;\n }\n if (column.isKey) {\n // Key should always be the first row\n keyCell = row.cells[column.name];\n iconCell = {\n obj: {\n t: 'J4',\n p: 'ICO',\n k: 'OG_OG_KF',\n },\n data: {\n color: `var(${KupThemeColorValues.TEXT})`,\n resource: editable ? 'edit-key' : 'key-variant',\n },\n title: editable\n ? this.#kupManager.language.translate(\n KupLanguageRow.EDITABLE_KEY\n )\n : this.#kupManager.language.translate(\n KupLanguageRow.KEY\n ),\n value: editable ? 'edit-key' : 'key-variant',\n };\n } else if (editable) {\n iconCell = {\n obj: {\n t: 'VO',\n p: 'COD_VER',\n k: '000051',\n },\n data: {\n color: `var(${KupThemeColorValues.TEXT})`,\n resource: 'pencil',\n },\n title: this.#kupManager.language.translate(\n KupLanguageGeneric.EDITABLE_FIELD\n ),\n value: 'pencil',\n };\n } else {\n iconCell = {\n obj: {\n t: '',\n p: '',\n k: '',\n },\n value: '',\n };\n }\n if (keyCell) {\n rows[index].cells[keyColumn.toUpperCase()] = keyCell;\n } else {\n rows[index].cells[keyColumn.toUpperCase()] = { value: null };\n }\n rows[index].cells[iconColumn.toUpperCase()] = iconCell;\n }\n if (!this.#detailCard) {\n this.#detailCard = document.createElement('kup-card');\n this.#detailCard.layoutFamily = KupCardFamily.DIALOG;\n this.#detailCard.layoutNumber = 4;\n this.#detailCard.sizeX = 'auto';\n this.#detailCard.sizeY = 'auto';\n } else {\n const children: HTMLCollection = Array.prototype.slice.call(\n this.#detailCard.children,\n 0\n );\n for (let index = 0; index < children.length; index++) {\n children[index].remove();\n }\n }\n this.#detailCard.data = cardData;\n this.#detailCard.style.position = 'fixed';\n this.#detailCard.style.left = '0';\n this.#detailCard.style.top = '0';\n this.#detailCard.setAttribute('data-x', x.toString());\n this.#detailCard.setAttribute('data-y', y.toString());\n this.#detailCard.style.transform = 'translate(' + x + 'px,' + y + 'px)';\n this.rootElement.shadowRoot.append(this.#detailCard);\n }\n /**\n * Opens a card containing the actions of the given row.\n * @param {KupDataRowAction[]} dropDownActions - Actions for the row.\n * @private\n * @memberof KupDataTable\n */\n #dropDownActions(\n dropDownActions: KupDataRowAction[],\n row: KupDataTableRow\n ) {\n this.#createDropDownActionsCard(dropDownActions, row);\n }\n\n #createDropDownActionsCard(\n dropDownActions: KupDataRowAction[],\n row: KupDataTableRow\n ) {\n if (this.#actionsCard) {\n this.#closeRowActionsCard();\n }\n this.#actionsCard = document.createElement('kup-card');\n this.#actionsCard.layoutFamily = KupCardFamily.STANDARD;\n this.#actionsCard.layoutNumber = 17;\n this.#actionsCard.menuVisible = true;\n this.#actionsCard.sizeX = 'auto';\n this.#actionsCard.sizeY = 'auto';\n this.#actionsCard.data =\n this.#prepareDataForActionsCard(dropDownActions);\n this.#clickCbDropCard = {\n cb: () => {\n this.#closeRowActionsCard();\n },\n el: this.#actionsCard,\n };\n this.#kupManager.addClickCallback(this.#clickCbDropCard, true);\n this.#actionsCard.style.position = 'absolute';\n this.#actionsCard.style.left = '0';\n this.#actionsCard.style.top = '0';\n this.#actionsCard.isMenu = true;\n this.rootElement.shadowRoot.append(this.#actionsCard);\n this.#kupManager.dynamicPosition.register(\n this.#actionsCard,\n this.#dropDownActionCardAnchor as KupDynamicPositionAnchor,\n 0,\n KupDynamicPositionPlacement.AUTO,\n true\n );\n this.#kupManager.dynamicPosition.start(\n this.#actionsCard as unknown as KupDynamicPositionElement\n );\n this.#actionsCard.addEventListener(\n 'kup-card-event',\n (e: CustomEvent<KupCardEventPayload>) => {\n switch (e.detail.event.type) {\n case 'kup-textfield-input':\n const input = e.detail.event.detail.value;\n\n this.#filterRowActionsCard(\n this.#actionsCard,\n dropDownActions,\n input\n );\n break;\n case 'kup-textfield-cleariconclick':\n this.#clearSearchActionsCard(\n this.#actionsCard,\n dropDownActions\n );\n break;\n case 'kup-list-click':\n const selectedObjectIndex = e.detail.event.detail.index;\n const selectedObject =\n dropDownActions[selectedObjectIndex];\n\n this.kupRowActionItemClick.emit({\n comp: this,\n id: this.rootElement.id,\n row: row,\n obj: selectedObject.obj,\n cell: selectedObject.cell,\n type: selectedObject.type,\n index: selectedObject.index,\n column: selectedObject.column,\n });\n setTimeout(() => {\n this.#closeRowActionsCard();\n }, 0);\n }\n }\n );\n }\n\n #clearSearchActionsCard(\n card: HTMLKupCardElement,\n dropDownActions: KupDataRowAction[]\n ) {\n const rowActionsList: Pick<KupList, 'showIcons' | 'data'> = {\n showIcons: true,\n data: dropDownActions.map((r) => ({\n value: r.text,\n ...r,\n })),\n };\n card.data.list[0].data = rowActionsList.data;\n card.refresh();\n }\n\n #filterRowActionsCard(\n card: HTMLKupCardElement,\n dropDownActions: KupDataRowAction[],\n input: string\n ) {\n const rowActionsList: Pick<KupList, 'showIcons' | 'data'> = {\n showIcons: true,\n data: dropDownActions.map((r) => ({\n value: r.text,\n ...r,\n })),\n };\n const filteredList: KupListNode[] = rowActionsList.data.filter(\n (action: KupListNode) =>\n action.value.toLowerCase().includes(input.toLowerCase())\n );\n card.data.list[0].data = filteredList;\n card.refresh();\n }\n\n #closeRowActionsCard() {\n this.#kupManager.dynamicPosition.stop(\n this.#actionsCard as KupDynamicPositionElement\n );\n this.#kupManager.removeClickCallback(this.#clickCbDropCard);\n this.#actionsCard.remove();\n this.#actionsCard = null;\n }\n\n #prepareDataForActionsCard(\n dropDownActions: KupDataRowAction[]\n ): KupCardData {\n const hasAlmostTenElements = dropDownActions.length >= 10;\n\n const textfield = hasAlmostTenElements\n ? [\n {\n fullWidth: true,\n icon: 'magnify',\n isClearable: true,\n label: 'Search...',\n key: KupColumnMenuIds.TEXTFIELD_FILTER,\n id: KupColumnMenuIds.TEXTFIELD_FILTER,\n },\n ]\n : [];\n\n const data: KupCardData = {\n list: [\n {\n showIcons: true,\n data: dropDownActions.map((r) => ({\n value: r.text,\n ...r,\n })),\n },\n ],\n textfield,\n };\n\n return data;\n }\n #rowInsertForm() {\n const CARD_WIDTH = 400;\n const CARD_HEIGHT = 400;\n this.#insertCard = document.createElement('kup-card');\n this.#insertCard.layoutFamily = KupCardFamily.FREE;\n this.#insertCard.layoutNumber = 1;\n this.#insertCard.sizeX = CARD_WIDTH + 'px';\n this.#insertCard.sizeY = CARD_HEIGHT + 'px';\n\n const style = document.createElement('style');\n style.innerText =\n 'kup-form { max-height: 40vh; overflow: auto; } .page-wrapper { display: grid; } ' +\n '.button-wrapper { padding-top: 20px; display: flex; justify-content: space-around; z-index: var(--kup-card-zindex); } ' +\n '.message-wrapper { display: none; justify-content: start; padding-top: 5px; padding-bottom: 5px; } ' +\n '.errorIcon { --kup-icon-color: var(--kup-danger-color-60); } ' +\n '.message { background-color: var(--kup-danger-color-60); color: white; padding: 3px; } ';\n this.#insertCard.append(style);\n\n const pageWrapper = document.createElement('div');\n pageWrapper.className = 'page-wrapper';\n\n const buttonWrapper = document.createElement('div');\n buttonWrapper.className = 'button-wrapper';\n const cancel = document.createElement('kup-button');\n const confirm = document.createElement('kup-button');\n cancel.id = this.#BUTTON_CANCEL_ID;\n cancel.icon = 'clear';\n cancel.label = this.#kupManager.language.translate(\n KupLanguageGeneric.ABORT\n );\n cancel.styling = FButtonStyling.FLAT;\n cancel.addEventListener('kup-button-click', () => {\n this.#insertCard.remove();\n this.#insertCard = null;\n });\n confirm.id = this.#BUTTON_SUBMIT_ID;\n confirm.icon = 'check';\n confirm.label = this.#kupManager.language.translate(\n KupLanguageGeneric.CONFIRM\n );\n let innerComp = document.createElement('kup-spinner');\n innerComp.slot = 'spinner';\n innerComp.dimensions = '0.6em';\n innerComp.active = true;\n confirm.appendChild(innerComp);\n confirm.addEventListener('kup-button-click', () => {\n messageWrapper.style.display = 'none';\n confirm.showSpinner = true;\n cancel.disabled = true;\n this.kupInsertRow.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: [row],\n });\n });\n buttonWrapper.append(cancel);\n buttonWrapper.append(confirm);\n\n const form = document.createElement('kup-form');\n form.id = this.#FIELDS_FORM_ID;\n const row: KupFormRow = {\n cells: {},\n id: '0',\n };\n this.data.columns.forEach((column) => {\n if (column.isEditable || column.isKey) {\n row.cells[column.name] = {\n isEditable: column.isEditable,\n shape: column.shape,\n value: '',\n };\n }\n });\n form.data = {\n columns: this.data.columns,\n rows: [row],\n };\n\n const messageWrapper = document.createElement('div');\n messageWrapper.className = 'message-wrapper';\n messageWrapper.id = this.#MESSAGE_WRAPPER_ID;\n const icon = document.createElement('kup-image');\n icon.className = 'errorIcon';\n icon.resource = 'cancel';\n icon.sizeX = '20px';\n icon.sizeY = '20px';\n messageWrapper.append(icon);\n\n const message = document.createElement('span');\n message.className = 'message';\n message.id = this.#MESSAGE_ID;\n let msg = '';\n message.innerText = msg;\n messageWrapper.append(message);\n\n pageWrapper.append(messageWrapper);\n pageWrapper.append(form);\n pageWrapper.append(buttonWrapper);\n\n this.#insertCard.append(pageWrapper);\n this.#insertCard.data = {};\n this.rootElement.shadowRoot.append(this.#insertCard);\n }\n\n #rowsDelete() {\n const createDeleteCard = () => {\n this.#confirmDeleteDialog = document.createElement('kup-dialog');\n this.#confirmDeleteCard = document.createElement('kup-card');\n this.#confirmDeleteCard.layoutFamily = KupCardFamily.FREE;\n this.#confirmDeleteCard.layoutNumber = 1;\n this.#confirmDeleteCard.sizeX = 'auto';\n this.#confirmDeleteCard.sizeY = 'auto';\n const style = document.createElement('style');\n style.innerText =\n '.button-wrapper, .message-wrapper { display: flex; justify-content: space-around; z-index: var(--kup-card-zindex); } .message-wrapper { padding-bottom: 20px; }';\n const messageWrapper = document.createElement('div');\n messageWrapper.className = 'message-wrapper';\n messageWrapper.id = this.#MESSAGE_WRAPPER_ID;\n const message = document.createElement('span');\n message.className = 'message';\n message.id = this.#MESSAGE_ID;\n let msg = this.#kupManager.language.translate(\n KupLanguageGeneric.CONFIRM_DELETE_X_ROWS\n );\n msg = msg.replace('{0}', this.selectedRows.length + '');\n message.innerText = msg;\n messageWrapper.append(message);\n const buttonWrapper = document.createElement('div');\n buttonWrapper.className = 'button-wrapper';\n const confirm = document.createElement('kup-button');\n confirm.id = this.#BUTTON_SUBMIT_ID;\n confirm.icon = 'check';\n confirm.label = this.#kupManager.language.translate(\n KupLanguageGeneric.CONFIRM\n );\n let innerComp = document.createElement('kup-spinner');\n innerComp.slot = 'spinner';\n innerComp.dimensions = '0.6em';\n innerComp.active = true;\n confirm.appendChild(innerComp);\n confirm.addEventListener('kup-button-click', () => {\n confirm.showSpinner = true;\n this.kupDeleteRow.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n });\n });\n buttonWrapper.append(confirm);\n this.#confirmDeleteCard.append(style);\n this.#confirmDeleteCard.append(messageWrapper);\n this.#confirmDeleteCard.append(buttonWrapper);\n this.#confirmDeleteCard.data = {};\n this.#confirmDeleteDialog.append(this.#confirmDeleteCard);\n document.querySelector('body').append(this.#confirmDeleteDialog);\n };\n\n const insertRowsIds: string[] = [];\n const startingRows: KupDataTableRow[] = [];\n this.selectedRows.forEach((row) => {\n if (row.id.indexOf(this.#INSERT_PREFIX) > -1) {\n insertRowsIds.push(row.id);\n } else {\n startingRows.push(row);\n }\n });\n this.deleteRows(insertRowsIds).then(() => {\n if (startingRows.length > 0) {\n this.selectedRows = startingRows;\n createDeleteCard();\n }\n });\n }\n\n #getEventDetails(\n path: HTMLElement[],\n e?: PointerEvent\n ): KupDatatableEventHandlerDetails {\n let isHeader: boolean,\n isBody: boolean,\n isFooter: boolean,\n td: HTMLElement,\n textfield: HTMLElement,\n th: HTMLElement,\n tr: HTMLElement,\n filterRemove: HTMLSpanElement;\n if (path) {\n for (let i = path.length - 1; i >= 0; i--) {\n let p = path[i];\n if (!p.tagName) {\n continue;\n }\n switch (p.tagName.toUpperCase()) {\n case 'THEAD': {\n isHeader = true;\n break;\n }\n case 'TBODY': {\n isBody = true;\n break;\n }\n case 'TFOOT': {\n isFooter = true;\n break;\n }\n case 'TD': {\n td = p;\n break;\n }\n case 'TH': {\n th = p;\n break;\n }\n case 'TR': {\n tr = p;\n break;\n }\n default: {\n if (p.classList.contains('f-text-field')) {\n textfield = p;\n } else if (\n p.classList.contains(\n KupThemeIconValues.FILTER_REMOVE.replace(\n '--',\n ''\n )\n )\n ) {\n filterRemove = p;\n }\n break;\n }\n }\n }\n }\n\n let cell: KupDataTableCell = null,\n column: KupDataColumn = null,\n isGroupRow: boolean = false,\n row: KupDataTableRow = null;\n if (isBody) {\n if (tr) {\n if (tr.classList.contains('group')) {\n isGroupRow = true;\n }\n row = tr['data-row'];\n }\n }\n if (isHeader || isBody) {\n if (td) {\n cell = td['data-cell'];\n }\n if (th) {\n cell = th['data-cell'];\n }\n }\n if (isHeader || isBody || isFooter) {\n const columnName = td\n ? td.dataset.column\n : th\n ? th.dataset.column\n : null;\n if (columnName) {\n column = getColumnByName(this.getColumns(), columnName);\n }\n }\n\n return {\n area: isHeader\n ? 'header'\n : isBody\n ? 'body'\n : isFooter\n ? 'footer'\n : null,\n cell: cell ? cell : null,\n column: column ? column : null,\n filterRemove: filterRemove ? filterRemove : null,\n isGroupRow: isGroupRow,\n originalEvent: e,\n row: row ? row : null,\n td: td ? td : null,\n textfield: textfield ? textfield : null,\n th: th ? th : null,\n tr: tr ? tr : null,\n };\n }\n\n #clickHandler(e: PointerEvent): KupDatatableEventHandlerDetails {\n const details: KupDatatableEventHandlerDetails = this.#getEventDetails(\n this.#kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n if (details.area === 'header') {\n if (details.th && details.column) {\n if (details.filterRemove) {\n this.#onRemoveFilter(details.column);\n return details;\n } else if (this.sortEnabled) {\n this.#onColumnSort(e, details.column.name);\n return details;\n }\n }\n } else if (details.area === 'body') {\n if (\n (this.isFocusable || e.ctrlKey || e.metaKey) &&\n details.tr &&\n !details.isGroupRow\n ) {\n const focusEl: HTMLElement =\n this.rootElement.shadowRoot.querySelector('tr.focus');\n if (focusEl) {\n focusEl.classList.remove('focus');\n }\n details.tr.classList.add('focus');\n if (e.ctrlKey || e.metaKey) {\n this.#rowDetail({ ...details.row }, e.clientX, e.clientY);\n return details;\n }\n }\n if (details.tr && details.row && details.isGroupRow) {\n this.#onRowExpand(details.row);\n return details;\n }\n if (details.td && details.row && !details.textfield) {\n this.#onRowClick(details.row, details.td, true);\n return details;\n }\n }\n return details;\n }\n\n #cellActionsMenuHandler(e: PointerEvent): KupDatatableEventHandlerDetails {\n e.stopPropagation();\n const details: KupDatatableEventHandlerDetails = this.#getEventDetails(\n this.#kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n if (details.cell) {\n const cellActions = this.#kupManager.data.cell.buildCellActions(\n details.row,\n details.column,\n this.commands ?? []\n );\n this.#onRowActionExpanderClick(e, details.row, cellActions);\n }\n return details;\n }\n\n #contextMenuHandler(e: PointerEvent): KupDatatableEventHandlerDetails {\n const details: KupDatatableEventHandlerDetails = this.#getEventDetails(\n this.#kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n if (details.area === DataTableAreasEnum.HEADER) {\n if (details.th && details.column) {\n this.openColumnMenu(details.column.name);\n return details;\n }\n } else if (details.area === DataTableAreasEnum.FOOTER) {\n if (details.td && details.column) {\n this.#totalMenuCoords = { x: e.clientX, y: e.clientY };\n this.#onTotalMenuOpen(details.column);\n return details;\n }\n }\n return details;\n }\n\n #dblClickHandler(e: PointerEvent): KupDatatableEventHandlerDetails {\n const details: KupDatatableEventHandlerDetails = this.#getEventDetails(\n this.#kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n if (details.area === 'body') {\n if (this.selection == SelectionMode.MULTIPLE) {\n this.#resetSelectedRows();\n }\n if (\n this.selection == SelectionMode.SINGLE ||\n this.selection == SelectionMode.MULTIPLE\n ) {\n this.#onRowClick(details.row, details.td, false);\n }\n }\n return details;\n }\n\n getVisibleColumns(): Array<KupDataColumn> {\n const visibleColumns = this.getColumns().filter(\n (col) =>\n !this.#kupManager.data.column.isCodVer(col) &&\n (!('visible' in col) || col.visible)\n );\n\n // check grouping\n if (this.#isGrouping()) {\n // filtering column based on group visibility\n return visibleColumns.filter((column) => {\n // check if in group\n let group = null;\n for (let currentGroup of this.groups) {\n if (currentGroup.column === column.name) {\n group = currentGroup;\n break;\n }\n }\n\n if (group) {\n // return true if\n // 1) group obj has not the 'visible' property or\n // 2) group has 'visible' property and it is true\n return !group.hasOwnProperty('visible') || group.visible;\n }\n\n // not in group -> visible\n return true;\n });\n }\n return visibleColumns;\n }\n\n getGroupByName(column: string): GroupObject {\n if (!this.#isGrouping()) {\n return null;\n }\n\n for (let group of this.groups) {\n if (group.column === column) {\n return group;\n }\n }\n\n return null;\n }\n\n getColumnValues(column: KupDataColumn): ValueDisplayedValue[] {\n return this.#filtersRowsInstance.getColumnValues(\n this,\n column,\n this.globalFilterValue,\n this.#filtersColumnMenuInstance\n );\n }\n\n getRows(): Array<KupDataTableRow> {\n return this.data && this.data.rows ? this.data.rows : [];\n }\n\n #initRows(): void {\n this.#filterRows();\n\n this.#footer = calcTotals(\n normalizeRows(this.getColumns(), this.#rows),\n this.totals\n );\n\n this.#groupRows();\n this.#sortRows();\n this.#adjustPaginator();\n\n this.#paginatedRows = paginateRows(\n this.#rows,\n this.currentPage,\n this.currentRowsPerPage,\n this.#isGrouping()\n );\n this.#paginatedRowsLength = this.#paginatedRowsPointLength();\n }\n\n #filterRows(): void {\n this.#rows = filterRows(\n this.getRows(),\n this.filters,\n this.globalFilterValue,\n this.getColumns()\n );\n this.#rowsLength = this.#rowsPointLength();\n }\n\n #isGrouping() {\n return this.groups && this.groups.length > 0;\n }\n\n #hasRowActions() {\n return this.rowActions !== undefined;\n }\n\n #removeGroup(index: number) {\n if (index >= 0) {\n // removing group from prop\n this.groups.splice(index, 1);\n this.groups = [...this.groups];\n }\n }\n\n #hasTotals() {\n return this.totals && Object.keys(this.totals).length > 0;\n }\n\n /**\n * Returns if the current data table must have the with set to auto to make table as large as the sum\n * of the table columns fixed width.\n * Table margin gets set to auto to center it.\n */\n #tableHasAutoWidth(): boolean {\n if (!this.#sizedColumns) {\n return;\n }\n const visibleCols = this.getVisibleColumns();\n // Before checking each column, controls that visible columns are as many as items with custom sizes.\n // If there are more visible columns, it means that the width of the table will be set to auto.\n if (visibleCols.length <= this.#sizedColumns.length) {\n let found = false;\n\n // Each visible column must have its own width for the table to have a auto width\n for (let i = 0; i < visibleCols.length; i++) {\n found = false;\n for (let j = 0; j < this.#sizedColumns.length; j++) {\n if (visibleCols[i].name === this.#sizedColumns[j].name) {\n found = true;\n break;\n }\n }\n if (!found) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n\n #forceGroupExpansion() {\n this.#rows.forEach((row) => this.#forceRowGroupExpansion(row));\n this.#paginatedRows.forEach((row) => this.#forceRowGroupExpansion(row));\n }\n\n #forceRowGroupExpansion(row: KupDataTableRow) {\n // check if row is group\n if (!row.group) {\n return;\n }\n\n // forcing row expanded\n row.group.expanded = this.expandGroups;\n\n // updating group state\n // check if already present\n let groupState = this.groupState[row.group.id];\n if (!groupState) {\n groupState = {\n expanded: this.expandGroups,\n };\n } else {\n groupState.expanded = this.expandGroups;\n }\n\n this.groupState[row.group.id] = groupState;\n\n if (row.group.children) {\n row.group.children.forEach((childRow) =>\n this.#forceRowGroupExpansion(childRow)\n );\n }\n }\n\n #adjustPaginator() {\n const numberOfRows = this.#rowsLength;\n // check if current page is valid\n const numberOfPages = Math.ceil(numberOfRows / this.currentRowsPerPage);\n if (this.currentPage > numberOfPages) {\n // reset page\n this.currentPage = 1;\n this.resetCurrentPage();\n }\n }\n\n //==== Fixed columns and rows methods ====\n #composeFixedCellStyleAndClass(\n columnCssIndex: number,\n columnCssIndexR: number,\n rowCssIndex: number,\n extraCellsCount: number = 0\n ):\n | undefined\n | {\n fixedCellClasses: GenericObject;\n fixedCellStyle: GenericObject;\n } {\n if (this.#isGrouping()) {\n return undefined;\n }\n\n //-- Controls if there are fixed rows or columns --\n const validFixedColumn: boolean =\n Number.isInteger(this.fixedColumns) &&\n columnCssIndex <= this.fixedColumns + extraCellsCount;\n const validFixedColumnR: boolean =\n this.fixedColumnsR &&\n Number.isInteger(this.fixedColumnsR) &&\n columnCssIndexR >\n this.getVisibleColumns().length - this.fixedColumnsR;\n const validFixedRowIndex =\n Number.isInteger(this.fixedRows) &&\n rowCssIndex > 0 &&\n rowCssIndex <= this.fixedRows;\n\n // When the cell is not valid to be either into a fixed column or into a fixed row, returns null.\n if (!validFixedRowIndex && !validFixedColumn && !validFixedColumnR) {\n return undefined;\n }\n\n const fixedCellClasses: GenericObject = {},\n fixedCellStyle: GenericObject = {};\n\n if (validFixedColumn) {\n fixedCellClasses[FixedCellsClasses.columns] = validFixedColumn;\n fixedCellClasses['show-column-separator'] =\n ShowGrid.COMPLETE === this.showGrid ||\n ShowGrid.COL === this.showGrid;\n fixedCellStyle['left'] =\n 'var(' + FixedCellsCSSVarsBase.columns + columnCssIndex + ')';\n }\n\n if (validFixedColumnR) {\n const prog =\n columnCssIndexR - (this.getVisibleColumns().length - 1);\n const progIdx = prog - this.fixedColumnsR;\n const absIdx = Math.abs(progIdx);\n fixedCellClasses[FixedCellsClasses.columnsR] = validFixedColumnR;\n fixedCellClasses['show-column-separator'] =\n ShowGrid.COMPLETE === this.showGrid ||\n ShowGrid.COL === this.showGrid;\n fixedCellStyle['right'] =\n 'var(' + (FixedCellsCSSVarsBase.columnsR + absIdx) + ')'; // right value assignment must be reversed\n }\n\n if (validFixedRowIndex) {\n fixedCellClasses[FixedCellsClasses.rows] = !!validFixedRowIndex;\n fixedCellClasses['show-row-separator'] =\n ShowGrid.COMPLETE === this.showGrid ||\n ShowGrid.ROW === this.showGrid;\n fixedCellStyle['top'] =\n 'var(' + FixedCellsCSSVarsBase.rows + rowCssIndex + ')';\n }\n\n return {\n fixedCellClasses,\n fixedCellStyle,\n };\n }\n\n #updateFixedRowsAndColumnsCssVariables(): boolean {\n // [ffbf] - Using getBoundingClientRect is mandatory since Firefox return a wrong value for ele.offsetHeight and witdh values\n\n // When grouping, the fixed rows and columns are not sticky\n if (this.#isGrouping() || !this.#tableRef) return false;\n let toRet: boolean = false;\n\n if (this.fixedRows >= 1) {\n let currentRow: HTMLTableRowElement = this.#tableRef.querySelector(\n 'tbody > tr:first-of-type'\n );\n // The height must start from the height of the header. BUT not on Safari.\n // Safari handles the sticky position on the tables in a different way, making it start from the tbody element\n // and not on the table with a specified position of sticky. There fore in that case we must set initial height to 0.\n let previousHeight: number = !this.#isSafariBrowser\n ? (\n this.#tableRef.querySelector(\n 'thead > tr:first-of-type > th:first-of-type'\n ) as HTMLTableCellElement\n ).getBoundingClientRect().height // [ffbf]\n : 0;\n\n // [CSSCount] - I must start from 1 since we are referencing html elements e not array (with CSS selectors starting from 1)\n for (let i = 1; i <= this.fixedRows && currentRow; i++) {\n this.#tableAreaRef.style.setProperty(\n FixedCellsCSSVarsBase.rows + i,\n previousHeight + 'px'\n );\n previousHeight += (\n currentRow.children[0] as HTMLTableCellElement\n ).getBoundingClientRect().height; // [ffbf]\n currentRow =\n currentRow.nextElementSibling as HTMLTableRowElement;\n }\n toRet = true;\n }\n\n if (this.fixedColumns >= 1) {\n let currentCell: HTMLTableCellElement =\n this.#tableRef.querySelector(\n 'tbody > tr:first-of-type > td:first-of-type'\n );\n let previousWidth: number = 0;\n const totalFixedColumns =\n this.fixedColumns +\n (this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(\n this.commands\n )\n ? 1\n : 0) +\n (this.selection === SelectionMode.MULTIPLE_CHECKBOX ? 1 : 0);\n\n // @See [CSSCount]\n for (let i = 1; i <= totalFixedColumns && currentCell; i++) {\n this.#tableAreaRef.style.setProperty(\n FixedCellsCSSVarsBase.columns + i,\n previousWidth + 'px'\n );\n previousWidth += currentCell.getBoundingClientRect().width; // [ffbf]\n currentCell =\n currentCell.nextElementSibling as HTMLTableCellElement;\n }\n toRet = true;\n }\n\n if (this.fixedColumnsR >= 1) {\n let currentCell: HTMLTableCellElement =\n this.#tableRef.querySelector(\n 'tbody > tr:first-of-type > td:last-of-type'\n );\n let previousWidth = 0;\n\n for (let i = 1; i <= this.fixedColumnsR && currentCell; i++) {\n this.#tableAreaRef.style.setProperty(\n FixedCellsCSSVarsBase.columnsR + i,\n previousWidth + 'px'\n );\n previousWidth += currentCell.getBoundingClientRect().width;\n currentCell =\n currentCell.previousElementSibling as HTMLTableCellElement;\n }\n toRet = true;\n }\n\n return toRet;\n }\n\n //======== Event Listeners ========\n #onColumnSort({ ctrlKey }: PointerEvent, columnName: string) {\n // check if columnName is already in sort array\n let i = 0;\n for (; i < this.sort.length; i++) {\n const sortObj = this.sort[i];\n if (sortObj.column === columnName) {\n break;\n }\n }\n\n if (i < this.sort.length) {\n // already in array... switching sort\n const sortObj = this.sort[i];\n\n const newSortObj: SortObject = {\n ...sortObj,\n sortMode:\n sortObj.sortMode === SortMode.A ? SortMode.D : SortMode.A,\n };\n\n if (ctrlKey) {\n const newSort = [...this.sort];\n newSort[i] = newSortObj;\n this.sort = newSort;\n } else {\n this.sort = [newSortObj];\n }\n } else {\n const sortObj: SortObject = {\n column: columnName,\n sortMode: SortMode.A,\n };\n\n // if CTRL is pressed, push to array\n // else, replace current array\n if (ctrlKey) {\n this.sort = [...this.sort, sortObj];\n } else {\n this.sort = [sortObj];\n }\n }\n }\n\n #onRemoveFilter(column: KupDataColumn) {\n // resetting current page\n this.resetCurrentPage();\n const newFilters: GenericFilter = { ...this.filters };\n this.#filtersColumnMenuInstance.removeFilter(newFilters, column.name);\n this.filters = newFilters;\n }\n\n #getFilterValueForTooltip(column: KupDataColumn): string {\n return this.#filtersColumnMenuInstance.getFilterValueForTooltip(\n this.filters,\n column\n );\n }\n\n #onGlobalFilterChange(inputEl: EventTarget) {\n this.resetCurrentPage();\n if (inputEl) {\n const el = inputEl as HTMLInputElement;\n this.globalFilterValue = el.value;\n } else {\n this.globalFilterValue = '';\n }\n }\n\n #handlePageChange(pageNumber: number) {\n const newPage = pageChange(\n pageNumber,\n this.#rowsLength,\n this.currentRowsPerPage\n );\n if (newPage) {\n this.currentPage = newPage;\n }\n }\n\n #handleRowsPerPageChange(rowsNumber: number) {\n const newRows = rowsPerPageChange(rowsNumber, this.#rowsLength);\n if (newRows) {\n this.currentRowsPerPage = newRows;\n this.#adjustPaginator();\n }\n }\n\n #onRowClick(row: KupDataTableRow, td: HTMLElement, emitEvent?: boolean) {\n // selecting row\n if (!row.unselectable) {\n switch (this.selection) {\n case SelectionMode.MULTIPLE:\n if (this.selectedRows.includes(row)) {\n const selectedRowsCopy = [...this.selectedRows];\n var index = selectedRowsCopy.indexOf(row);\n if (index !== -1) {\n selectedRowsCopy.splice(index, 1);\n }\n this.selectedRows = [...selectedRowsCopy];\n } else {\n this.selectedRows = [...this.selectedRows, row];\n }\n break;\n case SelectionMode.SINGLE:\n this.selectedRows = [row];\n break;\n default:\n break;\n }\n }\n\n // find clicked column\n const clickedColumn: string = td.dataset.column;\n\n // selecting clicked column\n if (\n !row.unselectable &&\n this.selection !== SelectionMode.NONE &&\n clickedColumn\n ) {\n this.#deselectColumn(this.selectedColumn);\n this.selectedColumn = clickedColumn;\n this.#selectColumn(this.selectedColumn);\n\n if (emitEvent !== false) {\n // emit event\n this.kupRowSelected.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n clickedRow: row,\n clickedColumn,\n });\n }\n }\n }\n\n #selectColumn(selectedColumn: string) {\n const columnCells = this.rootElement.shadowRoot.querySelectorAll(\n 'td[data-column=\"' + selectedColumn + '\"]'\n );\n for (let i = 0; i < columnCells.length; i++) {\n columnCells[i].classList.add('selected');\n }\n const column = this.rootElement.shadowRoot.querySelector(\n 'th[data-column=\"' + selectedColumn + '\"]'\n );\n if (column) {\n column.classList.add('selected');\n }\n }\n\n #deselectColumn(selectedColumn: string) {\n const columnCells = this.rootElement.shadowRoot.querySelectorAll(\n 'td[data-column=\"' + selectedColumn + '\"]'\n );\n for (let i = 0; i < columnCells.length; i++) {\n columnCells[i].classList.remove('selected');\n }\n const column = this.rootElement.shadowRoot.querySelector(\n 'th[data-column=\"' + selectedColumn + '\"]'\n );\n if (column) {\n column.classList.remove('selected');\n }\n }\n\n #onRowActionExpanderClick(\n e: MouseEvent | PointerEvent,\n row: KupDataTableRow,\n dropDownActions: KupDataRowAction[]\n ) {\n e.stopPropagation();\n this.#dropDownActionCardAnchor = e.target as HTMLElement;\n this.#dropDownActions(dropDownActions, row);\n }\n\n #handleRowSelect(row: KupDataTableRow) {\n const index = this.selectedRows.indexOf(row);\n\n if (index < 0) {\n // adding\n this.selectedRows = [...this.selectedRows, row];\n } else {\n // removing\n this.selectedRows.splice(index, 1);\n this.selectedRows = [...this.selectedRows];\n }\n\n this.kupRowSelected.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n clickedRow: null,\n clickedColumn: null,\n });\n }\n\n #onRowExpand(row: KupDataTableRow) {\n // row should be a 'group' row\n row.group.expanded = !row.group.expanded;\n\n // updating group map\n this.groupState[row.group.id].expanded = row.group.expanded;\n\n // changing group state to trigger rendering\n this.groupState = { ...this.groupState };\n }\n\n #onSelectAll({ target }) {\n if (target.checked) {\n // select all rows\n this.selectedRows = this.#renderedRows;\n // triggering event\n this.kupRowSelected.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n clickedColumn: null,\n clickedRow: null,\n });\n } else {\n // deselect all rows\n this.#resetSelectedRows();\n }\n }\n\n #openTotalMenu(column: KupDataColumn) {\n this.openedTotalMenu = column.name;\n }\n\n #closeTotalMenu() {\n this.openedTotalMenu = null;\n this.#kupManager.removeClickCallback(this.#clickCb);\n }\n\n #isOpenedTotalMenuForColumn(column: string): boolean {\n return this.openedTotalMenu === column;\n }\n\n // utility methods\n #groupRows(): void {\n if (!this.#isGrouping()) {\n return;\n }\n\n this.#rows = groupRows(\n this.getColumns(),\n this.#rows,\n this.groups,\n this.totals\n );\n\n this.#adjustGroupState();\n }\n\n @Method()\n async getInternalState() {\n // TODO - Just for test\n return {\n groups: this.groups,\n filters: this.filters,\n data: this.data,\n };\n }\n\n // Handler for loadMore button is clicked.\n #onLoadMoreClick() {\n let loadItems: number = 0;\n\n switch (this.loadMoreMode) {\n case LoadMoreMode.CONSTANT:\n loadItems = this.loadMoreStep;\n break;\n case LoadMoreMode.CONSTANT_INCREMENT:\n loadItems =\n this.loadMoreStep * (this.#loadMoreEventCounter + 1);\n break;\n case LoadMoreMode.PROGRESSIVE_THRESHOLD:\n loadItems =\n Math.max(\n this.#loadMoreEventPreviousQuantity,\n this.loadMoreStep\n ) * Math.min(this.#loadMoreEventCounter + 1, 2);\n break;\n }\n\n if (loadItems > this.loadMoreLimit) {\n loadItems = this.loadMoreLimit;\n }\n\n this.kupLoadMoreClick.emit({\n comp: this,\n id: this.rootElement.id,\n loadItems: loadItems,\n });\n\n this.#loadMoreEventPreviousQuantity = loadItems;\n this.#loadMoreEventCounter++;\n }\n\n #adjustGroupState(): void {\n if (\n !this.#rows ||\n this.#rowsLength === 0 ||\n !this.#rows[0].hasOwnProperty('group')\n ) {\n // no grouping\n return;\n }\n this.#rows.forEach((r) => this.#adjustGroupStateFromRow(r));\n }\n\n #adjustGroupStateFromRow(row: KupDataTableRow): void {\n if (!row || !row.hasOwnProperty('group')) {\n // not a groping row, nothing to do\n return;\n }\n\n const group = row.group;\n\n // check if already in group state\n const groupFromState = this.groupState[group.id];\n\n if (!groupFromState) {\n // add to state\n this.groupState[group.id] = group;\n } else {\n // update expanded\n group.expanded = groupFromState.expanded;\n }\n\n group.children.forEach((child) => this.#adjustGroupStateFromRow(child));\n }\n\n #sortRows(): void {\n this.#rows = sortRows(this.#rows, this.sort);\n }\n\n #getSortIcon(columnName: string): string {\n // check if column in sort array\n for (let sortObj of this.sort) {\n if (sortObj.column === columnName) {\n return 'A' === sortObj.sortMode\n ? `kup-icon ${KupThemeIconValues.DESCENDING.replace(\n '--',\n ''\n )}`\n : `kup-icon ${KupThemeIconValues.ASCENDING.replace(\n '--',\n ''\n )}`;\n }\n }\n\n // default\n return '';\n }\n\n #getSortDecode(columnName: string): string {\n // check if column in sort array\n for (let sortObj of this.sort) {\n if (sortObj.column === columnName) {\n return 'A' === sortObj.sortMode ? 'Ascending' : 'Descending';\n }\n }\n\n // default\n return 'Sort column';\n }\n\n #calculateColspan() {\n let colSpan = this.getVisibleColumns().length;\n\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n colSpan += 1;\n }\n\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(this.commands)\n ) {\n colSpan += 1;\n }\n\n return colSpan;\n }\n\n #isGroupExpanded({ group }: KupDataTableRow): boolean {\n if (!group) {\n return false;\n }\n\n // check if in group state\n if (this.groupState[group.id]) {\n return this.groupState[group.id].expanded;\n } else {\n return false;\n }\n }\n\n //==== Column sort order methods ====\n #handleColumnSort(\n receivingColumn: KupDataColumn,\n sortedColumn: KupDataColumn\n ) {\n // Get receiving column position\n const receivingColIndex = this.data.columns.findIndex(\n (col) =>\n col.name === receivingColumn.name &&\n col.title === receivingColumn.title\n );\n // Get sorted column current position\n const sortedColIndex = this.data.columns.findIndex(\n (col) =>\n col.name === sortedColumn.name &&\n col.title === sortedColumn.title\n );\n\n // Moves the sortedColumn into the correct position\n if (this.sortableColumnsMutateData) {\n this.kupColumnMove.emit({\n comp: this,\n id: this.rootElement.id,\n sourceColumn: this.data.columns[sortedColIndex],\n targetColumn: this.data.columns[receivingColIndex],\n });\n this.#moveSortedColumns(\n this.data.columns,\n receivingColIndex,\n sortedColIndex\n );\n }\n }\n\n /**\n * After a drop of a column header, if the table can update its own data, does so and triggers rerender.\n * @param columns - The columns to sort\n * @param receivingColumnIndex - The index where the column will be inserted\n * @param sortedColumnIndex - The index where the column will be removed\n */\n #moveSortedColumns(\n columns: KupDataColumn[],\n receivingColumnIndex: number,\n sortedColumnIndex: number\n ) {\n const remove = columns.splice(sortedColumnIndex, 1);\n columns.splice(receivingColumnIndex, 0, remove[0]);\n this.refresh();\n }\n\n #handleUpdateClick = (command?: KupDataCell) => {\n this.kupUpdate.emit({\n comp: this,\n id: this.rootElement.id,\n originalData: this.#originalDataLoaded,\n updatedData: getDiffData(this.#originalDataLoaded, this.data, true),\n command: command,\n });\n };\n\n @Method() async defaultSortingFunction(\n columns: KupDataColumn[],\n receivingColumnIndex: number,\n sortedColumnIndex: number,\n useNewObject: boolean = false\n ) {\n const toSort = !useNewObject ? columns : [...columns];\n\n this.#moveSortedColumns(\n toSort,\n receivingColumnIndex,\n sortedColumnIndex\n );\n\n return toSort;\n }\n\n #applyLineBreaks(content: string) {\n // We add a break line before every chunk\n return content\n .split(this.lineBreakCharacter)\n .map((chunk, index) => (index !== 0 ? [<br />, chunk] : chunk));\n }\n\n //======== render methods ========\n /**\n * Given the parameters return the classes and style for each table header cell\n * @param columnName - The name of the columns currently being examinated\n * @param columnIndex - The index of the current column\n * @param extraCells - the extra cells rendered into the table\n */\n #composeHeaderCellClassAndStyle(\n columnIndex: number,\n extraCells: number = 0,\n column: KupDataColumn\n ): {\n columnClass: GenericObject;\n thStyle: GenericObject;\n } {\n let columnClass: GenericObject = { ['header-cell']: true },\n thStyle: GenericObject = column.style ? { ...column.style } : {};\n\n if (\n this.#kupManager.objects.isBar(column.obj) ||\n this.#kupManager.objects.isButton(column.obj) ||\n this.#kupManager.objects.isChart(column.obj) ||\n this.#kupManager.objects.isCheckbox(column.obj) ||\n this.#kupManager.objects.isImage(column.obj) ||\n this.#kupManager.objects.isIcon(column.obj) ||\n this.#kupManager.objects.isProgressBar(column.obj) ||\n this.#kupManager.objects.isRadio(column.obj) ||\n this.#kupManager.objects.isVoCodver(column.obj)\n ) {\n columnClass['header-cell--centered'] = true;\n }\n\n if (this.#kupManager.objects.isNumber(column.obj)) {\n columnClass['header-cell--is-number'] = true;\n }\n\n if (this.#kupManager.objects.isIcon(column.obj)) {\n columnClass['header-cell--is-icon'] = true;\n }\n // For fixed cells styles and classes\n const fixedCellStyle = this.#composeFixedCellStyleAndClass(\n columnIndex + 1 + extraCells,\n columnIndex + 1,\n 0,\n extraCells\n );\n if (fixedCellStyle) {\n columnClass = {\n ...columnClass,\n ...fixedCellStyle.fixedCellClasses,\n };\n thStyle = {\n ...thStyle,\n ...fixedCellStyle.fixedCellStyle,\n };\n }\n\n return {\n columnClass,\n thStyle,\n };\n }\n\n #renderHeader() {\n let specialExtraCellsCount: number = 0;\n\n // Renders multiple selection column\n let multiSelectColumn = null;\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n specialExtraCellsCount++;\n const selectionStyleAndClass = this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n 0,\n 0,\n specialExtraCellsCount - 1\n );\n\n const style = {\n width: '30px',\n margin: '0 auto',\n ...(selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : {}),\n };\n\n multiSelectColumn = (\n <th\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : {}\n }\n style={style}\n >\n <kup-checkbox\n onkup-checkbox-change={(e) => this.#onSelectAll(e)}\n title={\n this.#kupManager.language.translate(\n KupLanguageRow.SELECTED\n ) +\n `: ${this.selectedRows.length},` +\n this.#kupManager.language.translate(\n KupLanguageRow.RENDERED\n ) +\n `: ${this.#renderedRows.length}`\n }\n checked={\n this.selectedRows.length > 0 &&\n this.selectedRows.length ===\n this.#renderedRows.length\n }\n />\n </th>\n );\n }\n\n // Renders action column\n let actionsColumn = null;\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(this.commands)\n ) {\n specialExtraCellsCount++;\n const selectionStyleAndClass = this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n 0,\n 0,\n specialExtraCellsCount - 1\n );\n\n actionsColumn = (\n <th\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : {}\n }\n style={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : {}\n }\n />\n );\n }\n\n // Renders normal cells\n const dataColumns = this.getVisibleColumns().map(\n (column, columnIndex) => {\n const { columnClass, thStyle } =\n this.#composeHeaderCellClassAndStyle(\n columnIndex,\n specialExtraCellsCount,\n column\n );\n\n let filter = null;\n\n if (\n this.#filtersColumnMenuInstance.hasFiltersForColumn(\n this.filters,\n column\n )\n ) {\n const svgLabel =\n this.#kupManager.language.translate(\n KupLanguageGeneric.REMOVE_FILTERS\n ) + `: '${this.#getFilterValueForTooltip(column)}'`;\n filter = (\n <span\n title={svgLabel}\n class={`kup-icon ${KupThemeIconValues.FILTER_REMOVE.replace(\n '--',\n ''\n )}`}\n ></span>\n );\n }\n\n let sortIcon = null;\n\n let iconClass = this.#getSortIcon(column.name);\n if (iconClass !== '') {\n sortIcon = (\n <span\n class={iconClass}\n title={this.#getSortDecode(column.name)}\n ></span>\n );\n }\n columnClass['header-cell--sortable'] = true;\n\n let keyIcon: HTMLSpanElement = null;\n if (column.isKey) {\n keyIcon = (\n <span\n class={`kup-icon ${KupThemeIconValues.KEY.replace(\n '--',\n ''\n )}`}\n title={this.#kupManager.language.translate(\n KupLanguageRow.KEY\n )}\n ></span>\n );\n }\n\n // Sets custom columns width\n if (this.#sizedColumns) {\n for (let i = 0; i < this.#sizedColumns.length; i++) {\n const currentCol = this.#sizedColumns[i];\n\n if (currentCol.name === column.name) {\n const width = currentCol.size + '';\n if (width.indexOf('ch') < 1) {\n thStyle.width = width;\n thStyle.minWidth = width;\n thStyle.maxWidth = width;\n }\n thStyle.overflow = 'hidden';\n break;\n }\n }\n }\n\n return (\n <th\n ref={(el: HTMLElement) => this.#thRefs.push(el)}\n data-cell={column}\n data-column={column.name}\n class={columnClass}\n style={thStyle}\n title={column.name}\n >\n <div class=\"header-cell__content\">\n <span class=\"header-cell__title\">\n {this.#applyLineBreaks(column.title)}\n </span>\n <span class=\"header-cell__icons\">\n {keyIcon}\n {sortIcon}\n {filter}\n </span>\n </div>\n {this.resizableColumns ? (\n <span class=\"header-cell__drag-handler\"></span>\n ) : null}\n </th>\n );\n }\n );\n\n return [multiSelectColumn, actionsColumn, ...dataColumns];\n // return [multiSelectColumn, groupColumn, actionsColumn, ...dataColumns];\n }\n\n #renderStickyHeader() {\n let specialExtraCellsCount: number = 0;\n\n let multiSelectColumn = null;\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n specialExtraCellsCount++;\n const selectionStyleAndClass = this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n 0,\n 0,\n specialExtraCellsCount - 1\n );\n\n const style = {\n width: '30px',\n margin: '0 auto',\n ...(selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : {}),\n };\n multiSelectColumn = (\n <th-sticky\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : null\n }\n style={style}\n >\n <kup-checkbox\n onkup-checkbox-change={(e) => this.#onSelectAll(e)}\n title={\n this.#kupManager.language.translate(\n KupLanguageRow.SELECTED\n ) +\n `: ${this.selectedRows.length},` +\n this.#kupManager.language.translate(\n KupLanguageRow.RENDERED\n ) +\n `: ${this.#renderedRows.length}`\n }\n checked={\n this.selectedRows.length > 0 &&\n this.selectedRows.length ===\n this.#renderedRows.length\n }\n />\n </th-sticky>\n );\n }\n\n // Empty cell for the actions\n let actionsColumn = null;\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(this.commands)\n ) {\n specialExtraCellsCount++;\n const selectionStyleAndClass = this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n 0,\n 0,\n specialExtraCellsCount - 1\n );\n\n actionsColumn = (\n <th-sticky\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : null\n }\n style={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : null\n }\n />\n );\n }\n\n // Composes normal header cells\n const dataColumns = this.getVisibleColumns().map(\n (column, columnIndex) => {\n const { columnClass, thStyle } =\n this.#composeHeaderCellClassAndStyle(\n columnIndex,\n specialExtraCellsCount,\n column\n );\n\n return (\n <th-sticky class={columnClass} style={thStyle}>\n <div class=\"header-cell__content\">\n <span class=\"header-cell__title\">\n {this.#applyLineBreaks(column.title)}\n </span>\n </div>\n </th-sticky>\n );\n }\n );\n\n return [multiSelectColumn, actionsColumn, ...dataColumns];\n }\n\n areTotalsSelected(column: KupDataColumn): boolean {\n return this.totals && this.totals[column.name] ? true : false;\n }\n\n onTotalsChange(event, column) {\n // close menu\n this.#closeTotalMenu();\n if (column) {\n // must do this\n // otherwise does not fire the watcher\n const totalsCopy = { ...this.totals };\n const value = event.detail.selected.id;\n if (value === TotalLabel.CANC) {\n if (this.totals && this.totals[column.name]) {\n delete totalsCopy[column.name];\n }\n } else {\n totalsCopy[column.name] = value;\n }\n this.totals = totalsCopy;\n }\n }\n\n #totalMenuPosition() {\n if (this.rootElement.shadowRoot) {\n const menu: HTMLKupListElement =\n this.rootElement.shadowRoot.querySelector('#totals-menu');\n if (menu) {\n this.#kupManager.dynamicPosition.register(\n menu as unknown as KupDynamicPositionElement,\n this.#totalMenuCoords,\n 0,\n undefined,\n true\n );\n this.#clickCb = {\n cb: () => {\n this.#closeTotalMenu();\n },\n el: menu,\n };\n this.#kupManager.addClickCallback(this.#clickCb, true);\n this.#kupManager.dynamicPosition.start(\n menu as unknown as KupDynamicPositionElement\n );\n menu.menuVisible = true;\n }\n }\n }\n\n #onTotalMenuOpen(column: KupDataColumn) {\n this.#closeTotalMenu();\n this.#openTotalMenu(column);\n }\n\n renderFooter() {\n let extraCells = 0;\n\n // Composes initial cells if necessary\n let selectRowCell = null;\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n extraCells++;\n const fixedCellStyle = this.#composeFixedCellStyleAndClass(\n extraCells,\n 0,\n 0,\n extraCells\n );\n\n selectRowCell = (\n <td\n class={\n fixedCellStyle ? fixedCellStyle.fixedCellClasses : null\n }\n style={\n fixedCellStyle ? fixedCellStyle.fixedCellStyle : null\n }\n />\n );\n }\n\n // Action cell\n let actionsCell = null;\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(this.commands)\n ) {\n extraCells++;\n const selectionStyleAndClass = this.#composeFixedCellStyleAndClass(\n extraCells,\n 0,\n 0,\n extraCells\n );\n actionsCell = (\n <td\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : {}\n }\n style={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : {}\n }\n />\n );\n }\n\n const footerCells = this.getVisibleColumns().map(\n (column: KupDataColumn, columnIndex) => {\n const fixedCellStyle = this.#composeFixedCellStyleAndClass(\n columnIndex + 1 + extraCells,\n columnIndex + 1,\n 0,\n extraCells\n );\n\n let totalMenu = undefined;\n let menuLabel = TotalLabel.CALC;\n const translation = {\n [TotalLabel.AVERAGE]: this.#kupManager.language.translate(\n KupLanguageTotals.AVERAGE\n ),\n [TotalLabel.CALC]: this.#kupManager.language.translate(\n KupLanguageTotals.CALCULATE\n ),\n [TotalLabel.CANC]: this.#kupManager.language.translate(\n KupLanguageTotals.CANCEL\n ),\n [TotalLabel.COUNT]: this.#kupManager.language.translate(\n KupLanguageTotals.COUNT\n ),\n [TotalLabel.DISTINCT]: this.#kupManager.language.translate(\n KupLanguageTotals.DISTINCT\n ),\n [TotalLabel.MATH]: this.#kupManager.language.translate(\n KupLanguageTotals.FORMULA\n ),\n [TotalLabel.MAX]: this.#kupManager.language.translate(\n KupLanguageTotals.MAXIMUM\n ),\n [TotalLabel.MIN]: this.#kupManager.language.translate(\n KupLanguageTotals.MINIMUM\n ),\n [TotalLabel.SUM]: this.#kupManager.language.translate(\n KupLanguageTotals.SUM\n ),\n };\n if (this.totals) {\n const totalValue = this.totals[column.name];\n if (totalValue) {\n if (totalValue.startsWith(TotalMode.MATH)) {\n menuLabel = TotalLabel.MATH;\n } else {\n switch (totalValue) {\n case TotalMode.COUNT:\n menuLabel = TotalLabel.COUNT;\n break;\n case TotalMode.DISTINCT:\n menuLabel = TotalLabel.DISTINCT;\n break;\n case TotalMode.SUM:\n menuLabel = TotalLabel.SUM;\n break;\n case TotalMode.AVERAGE:\n menuLabel = TotalLabel.AVERAGE;\n break;\n case TotalMode.MIN:\n menuLabel = TotalLabel.MIN;\n break;\n case TotalMode.MAX:\n menuLabel = TotalLabel.MAX;\n break;\n default:\n break;\n }\n }\n }\n }\n\n if (this.#isOpenedTotalMenuForColumn(column.name)) {\n const listData: KupListNode[] = [\n {\n id: TotalMode.COUNT,\n value: translation[TotalLabel.COUNT],\n },\n {\n id: TotalMode.DISTINCT,\n value: translation[TotalLabel.DISTINCT],\n },\n ];\n if (this.#kupManager.objects.isNumber(column.obj)) {\n // TODO Move these objects in declarations\n listData.push(\n {\n id: TotalMode.SUM,\n separator: true,\n value: translation[TotalLabel.SUM],\n },\n {\n id: TotalMode.AVERAGE,\n value: translation[TotalLabel.AVERAGE],\n },\n {\n id: TotalMode.MIN,\n value: translation[TotalLabel.MIN],\n },\n {\n id: TotalMode.MAX,\n value: translation[TotalLabel.MAX],\n }\n );\n } else if (this.#kupManager.objects.isDate(column.obj)) {\n listData.push(\n {\n id: TotalMode.MIN,\n separator: true,\n value: translation[TotalLabel.MIN],\n },\n {\n id: TotalMode.MAX,\n value: translation[TotalLabel.MAX],\n }\n );\n }\n if (this.totals) {\n const selectedItem: KupListNode = listData.find(\n (item) => item.id === this.totals[column.name]\n );\n if (selectedItem) {\n selectedItem.selected = true;\n listData.push({\n id: TotalLabel.CANC,\n separator: true,\n value: translation[TotalLabel.CANC],\n });\n }\n }\n\n totalMenu = (\n <kup-list\n class={`total-menu`}\n data={listData}\n id=\"totals-menu\"\n is-menu\n keyboardNavigation={true}\n menu-visible\n onkup-list-click={(event) =>\n this.onTotalsChange(event, column)\n }\n tabindex={0}\n ></kup-list>\n );\n }\n\n // TODO please use getValueForDisplay\n let value;\n const footerValue = this.#footer[column.name];\n if (\n menuLabel === TotalLabel.COUNT ||\n menuLabel === TotalLabel.DISTINCT\n ) {\n value = footerValue;\n } else if (\n (menuLabel === TotalLabel.MAX ||\n menuLabel === TotalLabel.MIN) &&\n this.#kupManager.objects.isDate(column.obj)\n ) {\n if (footerValue) {\n value = footerValue;\n }\n } else {\n value = this.#kupManager.math.numberToFormattedString(\n footerValue,\n column.decimals,\n column.obj ? column.obj.p : ''\n );\n }\n\n return (\n <td\n data-column={column.name}\n class={\n fixedCellStyle && fixedCellStyle.fixedCellClasses\n ? fixedCellStyle.fixedCellClasses\n : ''\n }\n style={\n fixedCellStyle\n ? fixedCellStyle.fixedCellStyle\n : null\n }\n >\n {totalMenu}\n <span\n class=\"totals-value\"\n title={translation[menuLabel]}\n >\n {value}\n </span>\n </td>\n );\n }\n );\n\n const footer = (\n <tfoot>\n <tr>\n {selectRowCell}\n {actionsCell}\n {footerCells}\n </tr>\n </tfoot>\n );\n\n return footer;\n }\n\n #renderRow(\n row: KupDataTableRow,\n level = 0,\n rowCssIndex: number = 0,\n previousRow?: KupDataTableRow\n ) {\n const visibleColumns = this.getVisibleColumns();\n let rowActionsCount: number = 0;\n\n if (row.group) {\n // Composes the label the group must display\n let composedGroupLabel: string;\n switch (this.groupLabelDisplay) {\n case GroupLabelDisplayMode.LABEL:\n composedGroupLabel = row.group.columnLabel;\n break;\n case GroupLabelDisplayMode.VALUE:\n composedGroupLabel = row.group.label;\n break;\n case GroupLabelDisplayMode.BOTH:\n default:\n composedGroupLabel =\n row.group.columnLabel + ' = ' + row.group.label;\n break;\n }\n\n if (row.group.children.length === 0) {\n // empty group\n return null;\n }\n\n const iconClass = row.group.expanded\n ? `kup-icon ${KupThemeIconValues.EXPANDED.replace('--', '')}`\n : `kup-icon ${KupThemeIconValues.COLLAPSED.replace('--', '')}`;\n\n const jsxRows = [];\n\n const indent = [];\n for (let i = 0; i < level; i++) {\n indent.push(<span class=\"indent\" />);\n }\n\n if (this.#hasTotals()) {\n //const colSpan = this.multiSelection ? 2 : 1;\n const cells = [];\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(\n this.commands\n )\n ) {\n cells.push(<td></td>);\n }\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n cells.push(<td></td>);\n }\n // adding 'grouping' cell\n const grouplabelcell = (\n <td colSpan={this.#calculateColspan()}>\n <span class=\"group-cell-content\">\n {indent}\n <span class={iconClass}></span>\n <span class=\"text\">{composedGroupLabel}</span>\n </span>\n </td>\n );\n\n // adding 'totals grouping' cells\n for (let column of visibleColumns) {\n let totalClass = 'total';\n if (row.group.totals[column.name] < 0) {\n totalClass += ' negative-number';\n }\n // TODO please use getValueForDisplay\n let value;\n const totalValue = row.group.totals[column.name];\n if (\n this.totals[column.name] === TotalMode.COUNT ||\n this.totals[column.name] === TotalMode.DISTINCT\n ) {\n value = totalValue;\n } else {\n if (this.#kupManager.objects.isDate(column.obj)) {\n if (totalValue) {\n if (\n this.#kupManager.dates.isIsoDate(totalValue)\n ) {\n value =\n this.#kupManager.dates.format(\n totalValue\n );\n } else {\n console.warn(`invalid date: ${totalValue}`);\n }\n }\n } else {\n value =\n this.#kupManager.math.numberToFormattedString(\n totalValue,\n column.decimals,\n column.obj ? column.obj.p : ''\n );\n }\n }\n cells.push(<td class={totalClass}>{value}</td>);\n }\n\n jsxRows.push(\n <tr\n ref={(el: HTMLElement) => this.#rowsRefs.push(el)}\n data-row={row}\n class=\"group group-label\"\n >\n {grouplabelcell}\n </tr>\n );\n\n // if group is expanded, add children\n\n if (this.#isGroupExpanded(row)) {\n row.group.children\n // We must pass the previous element of the array to check if we must hide or display the value of the cell\n // When the column has specified the parameter hideValuesRepetitions\n .map((row, groupRowIndex, currentArray) =>\n this.#renderRow(\n row,\n level + 1,\n groupRowIndex,\n groupRowIndex > 0\n ? currentArray[groupRowIndex - 1]\n : undefined\n )\n )\n .forEach((jsxRow) => {\n if (Array.isArray(jsxRow)) {\n jsxRow.forEach((jr) => jsxRows.push(jr));\n } else {\n jsxRows.push(jsxRow);\n }\n });\n }\n\n jsxRows.push(\n <tr\n ref={(el: HTMLElement) => this.#rowsRefs.push(el)}\n data-row={row}\n class=\"group group-total\"\n >\n {cells}\n </tr>\n );\n } else {\n jsxRows.push(\n <tr\n ref={(el: HTMLElement) => this.#rowsRefs.push(el)}\n data-row={row}\n class=\"group\"\n >\n <td colSpan={this.#calculateColspan()}>\n <span class=\"group-cell-content\">\n {indent}\n <span class={iconClass}></span>\n <span class=\"text\">{composedGroupLabel}</span>\n </span>\n </td>\n </tr>\n );\n if (this.#isGroupExpanded(row)) {\n row.group.children\n // We must pass the previous element of the array to check if we must hide or display the value of the cell\n // When the column has specified the parameter hideValuesRepetitions\n .map((row, groupRowIndex, currentArray) =>\n this.#renderRow(\n row,\n level + 1,\n groupRowIndex,\n groupRowIndex > 0\n ? currentArray[groupRowIndex - 1]\n : undefined\n )\n )\n .forEach((jsxRow) => {\n if (Array.isArray(jsxRow)) {\n jsxRow.forEach((jr) => jsxRows.push(jr));\n } else {\n jsxRows.push(jsxRow);\n }\n });\n }\n }\n\n // grouping row\n return jsxRows;\n } else {\n //-- The row is normal --\n /**\n * How many control cells there are before the effective cells\n */\n let specialExtraCellsCount: number = 0;\n\n // Renders selection cell\n // IF active, this must be the first cell\n // This is a special cell\n let selectRowCell = null;\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n specialExtraCellsCount++;\n const selectionStyleAndClass =\n this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n rowCssIndex,\n specialExtraCellsCount - 1\n );\n const props: FCheckboxProps = {\n checked: this.selectedRows.includes(row),\n onChange: () => {\n this.#handleRowSelect(row);\n },\n };\n\n selectRowCell = (\n <td\n row-select-cell\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : null\n }\n style={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : null\n }\n >\n <FCheckbox {...props} />\n </td>\n );\n }\n\n // Renders action cell\n // If active, this can be either the first or second cell\n let rowActionsCell = null;\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(\n this.commands\n )\n ) {\n // Increments\n specialExtraCellsCount++;\n const actionsStyleAndClass =\n this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n rowCssIndex,\n specialExtraCellsCount - 1\n );\n\n rowActionsCount += this.rowActions?.length || 0;\n\n const actionsOnRow: FImageProps[] = [];\n if (row.actions) {\n rowActionsCount += row.actions.length;\n } else {\n const rowActions =\n this.#kupManager.data.row.buildRowActions(\n row,\n this.data.columns,\n this.rowActions,\n this.commands ?? []\n );\n\n if (\n this.#kupManager.data.action.checkEveryActionHasOnlyIcon(\n rowActions\n ) ||\n (rowActions.length === 1 && rowActions[0].icon)\n ) {\n rowActions.forEach((action, index) => {\n const imageProp: FImageProps =\n this.#kupManager.data.action.buildImageProp(\n action.icon,\n action.text || action.column?.title || '',\n 'action',\n () => {\n this.kupRowActionItemClick.emit({\n comp: this,\n id: this.rootElement.id,\n row: row,\n obj: action.obj,\n cell: action.cell,\n type: action.type,\n index: index,\n column: action.column,\n });\n }\n );\n actionsOnRow.push(imageProp);\n });\n } else {\n const textPopulatedRowActions =\n this.#kupManager.data.action.createActionsWithText(\n rowActions\n );\n\n const imageProp: FImageProps =\n this.#kupManager.data.action.buildImageProp(\n 'chevron-down',\n this.#kupManager.language.translate(\n KupLanguageGeneric.EXPAND\n ),\n 'expander',\n (e) => {\n this.#onRowActionExpanderClick(\n e,\n row,\n textPopulatedRowActions\n );\n }\n );\n\n actionsOnRow.push(imageProp);\n }\n rowActionsCount++;\n }\n\n rowActionsCell = (\n <td\n row-action-cell\n class={\n actionsStyleAndClass\n ? actionsStyleAndClass.fixedCellClasses\n : null\n }\n style={\n actionsStyleAndClass\n ? actionsStyleAndClass.fixedCellStyle\n : null\n }\n >\n {actionsOnRow.map((action) => (\n <FImage\n {...action}\n color=\"var(--kup-text-secondary)\"\n ></FImage>\n ))}\n </td>\n );\n }\n\n // Renders plain rows cells\n const cells = visibleColumns.map((currentColumn, cellIndex) => {\n const { name, hideValuesRepetitions } = currentColumn;\n const indend = [];\n if (cellIndex === 0) {\n for (let i = 0; i < level; i++) {\n indend.push(<span class=\"indent\" />);\n }\n }\n\n const cell = row.cells[name] ? row.cells[name] : null;\n if (!cell) {\n if (this.autoFillMissingCells) {\n return <td data-column={name} data-row={row}></td>;\n } else {\n return null;\n }\n }\n const fcell = {\n ...this.#kupManager.data.cell.buildFCell(\n cell,\n currentColumn,\n row\n ),\n component: this,\n density: this.density,\n editable: this.editableData || this.updatableData,\n indents: indend,\n previousValue:\n hideValuesRepetitions && previousRow\n ? previousRow.cells[name].value\n : undefined,\n renderKup: this.lazyLoadCells,\n cellActionIcon: this.#kupManager.data.cell.hasActionCell(\n cell,\n this.commands ?? []\n )\n ? {\n onClick: (e: PointerEvent) => {\n this.kupCellActionIconClick.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.#cellActionsMenuHandler(e),\n });\n },\n }\n : null,\n };\n\n const jsxCell = <FCell {...fcell}></FCell>;\n\n // Classes which will be set onto the single data-table cell;\n\n let cellClass: GenericObject = null;\n let cellStyle: GenericObject = { ...cell.style };\n\n //-- For fixed cells --\n const fixedStyles = this.#composeFixedCellStyleAndClass(\n cellIndex + 1 + specialExtraCellsCount,\n cellIndex + 1,\n rowCssIndex,\n specialExtraCellsCount\n );\n if (fixedStyles) {\n cellStyle = Object.assign(\n cellStyle ? cellStyle : {},\n fixedStyles.fixedCellStyle\n );\n cellClass = {\n ...cellClass,\n ...fixedStyles.fixedCellClasses,\n };\n }\n\n // Controls if there are columns with a specified width\n if (this.#sizedColumns) {\n let colWidth: string = '';\n\n // Search if this column has a specified width\n for (let j = 0; j < this.#sizedColumns.length; j++) {\n if (name === this.#sizedColumns[j].name) {\n colWidth = this.#sizedColumns[j].size;\n break;\n }\n }\n\n // Specific width has been found\n if (colWidth) {\n if (!cellStyle) {\n cellStyle = {};\n }\n\n // Sets the width.\n // Search for \"auto-width\" class inside the scss file of this component for more details about this\n cellStyle['max-width'] = colWidth;\n cellStyle['min-width'] = colWidth;\n cellStyle['width'] = colWidth;\n }\n }\n let eventHandlers = undefined;\n let title: string = undefined;\n\n cellClass = {\n ...cellClass,\n };\n\n return (\n <td\n title={title}\n colSpan={\n cell.span && cell.span.col ? cell.span.col : null\n }\n rowSpan={\n cell.span && cell.span.row ? cell.span.row : null\n }\n data-cell={cell}\n data-column={name}\n data-row={row}\n style={cellStyle}\n class={cellClass}\n {...eventHandlers}\n >\n {jsxCell}\n </td>\n );\n });\n // adding row to rendered rows\n this.#renderedRows.push(row);\n\n const rowClass = {\n selected: this.selectedRows.includes(row),\n };\n\n if (row.cssClass) {\n rowClass[row.cssClass] = true;\n }\n\n return (\n <tr\n ref={(el: HTMLElement) => this.#rowsRefs.push(el)}\n data-row={row}\n class={rowClass}\n >\n {selectRowCell}\n {rowActionsCell}\n {cells}\n </tr>\n );\n }\n }\n\n #onCustomSettingsClick() {\n if (!this.openedCustomSettings) {\n this.#openCustomSettings();\n } else {\n this.#closeCustomSettings();\n }\n }\n\n #openCustomSettings() {\n this.#customizeTopPanelRef.menuVisible = true;\n this.#customizeTopButtonRef.classList.add('toggled');\n this.#kupManager.dynamicPosition.start(\n this.#customizeTopPanelRef as KupDynamicPositionElement\n );\n this.openedCustomSettings = true;\n if (!this.#clickCbCustomPanel) {\n this.#clickCbCustomPanel = {\n cb: () => {\n this.#closeCustomSettings();\n },\n el: this.#customizeTopPanelRef,\n };\n }\n this.#kupManager.addClickCallback(this.#clickCbCustomPanel, true);\n }\n\n #closeCustomSettings() {\n this.#customizeTopButtonRef.classList.remove('toggled');\n if (this.#customizeTopPanelRef == null) {\n return;\n }\n this.#customizeTopPanelRef.menuVisible = false;\n this.openedCustomSettings = false;\n this.#kupManager.removeClickCallback(this.#clickCbCustomPanel);\n }\n\n #renderPaginator(top: boolean) {\n return (\n <div class=\"paginator-wrapper\">\n <div class=\"paginator-tabs\">\n {this.showLoadMore ||\n (!this.lazyLoadRows &&\n this.#rowsLength > this.rowsPerPage) ? (\n <FPaginator\n id={top ? 'top-paginator' : 'bottom-paginator'}\n currentPage={this.currentPage}\n max={this.#rowsLength}\n perPage={\n this.currentRowsPerPage\n ? this.currentRowsPerPage\n : this.rowsPerPage\n }\n onLoadMore={\n this.showLoadMore\n ? () => {\n this.#onLoadMoreClick();\n }\n : null\n }\n onNextPage={() =>\n this.#handlePageChange(this.currentPage + 1)\n }\n onPrevPage={() =>\n this.#handlePageChange(this.currentPage - 1)\n }\n onPageChange={(\n e: CustomEvent<KupComboboxEventPayload>\n ) => this.#handlePageChange(e.detail.value)}\n onRowsChange={(\n e: CustomEvent<KupComboboxEventPayload>\n ) => this.#handleRowsPerPageChange(e.detail.value)}\n />\n ) : null}\n </div>\n </div>\n );\n }\n\n renderCustomizePanel() {\n let density: HTMLElement = undefined;\n let fontsize: HTMLElement = undefined;\n let grid: HTMLElement = undefined;\n let transpose: HTMLElement = undefined;\n let totalsMatrix: HTMLElement = undefined;\n if (this.openedCustomSettings) {\n density = this.#renderDensityPanel();\n fontsize = this.#renderFontSizePanel();\n grid = this.#renderGridPanel();\n transpose = this.#renderTransposeSwitch();\n if (this.totals && this.groups.length > 0) {\n totalsMatrix = this.#renderTotalsMatrix();\n }\n }\n\n return (\n <kup-card\n customStyle=\"::slotted(kup-switch) { width: max-content !important; } ::slotted(*) { margin: auto !important; } ::slotted(.customize-element) { margin: auto !important; padding: 0 1em 1em 1em !important; width: max-content !important; } ::slotted(.customize-element):nth-child(1) { padding-top: 1em !important; }\"\n isMenu={true}\n layoutFamily={KupCardFamily.FREE}\n ref={(el) => {\n this.#customizeTopPanelRef = el;\n }}\n sizeX=\"360px\"\n sizeY=\"300px\"\n >\n {density}\n {grid}\n {fontsize}\n {transpose}\n <kup-switch\n class=\"customize-element\"\n checked={this.dragEnabled}\n label={this.#kupManager.language.translate(\n KupLanguageGeneric.DRAG_AND_DROP\n )}\n leadingLabel={true}\n onkup-switch-change={() =>\n (this.dragEnabled = !this.dragEnabled)\n }\n ></kup-switch>\n <kup-switch\n class=\"customize-element\"\n checked={this.editableData}\n label={this.#kupManager.language.translate(\n KupLanguageGeneric.EDITABLE\n )}\n leadingLabel={true}\n onkup-switch-change={() =>\n (this.editableData = !this.editableData)\n }\n ></kup-switch>\n <div\n style={{\n display: 'grid',\n 'grid-template-columns': 'repeat(2, auto)',\n width: 'max-content',\n }}\n >\n <kup-button\n title={\n this.#kupManager.language.translate(\n KupLanguageGeneric.TOGGLE\n ) +\n ' Magic Box ' +\n '(' +\n this.#kupManager.language.translate(\n KupLanguageGeneric.EXPERIMENTAL_FEAT\n ) +\n ')'\n }\n icon=\"auto-fix\"\n onkup-button-click={() =>\n this.#kupManager.toggleMagicBox()\n }\n />\n {this.#kupManager.enableExperimentalFeatures &&\n this.#kupManager.openAI &&\n this.#kupManager.openAI.url ? (\n <kup-button\n title={\n this.#kupManager.language.translate(\n KupLanguageGeneric.TOGGLE\n ) +\n ' ' +\n this.#kupManager.language.translate(\n KupLanguageGeneric.AI_ASSISTANT\n ) +\n ' (' +\n this.#kupManager.language.translate(\n KupLanguageGeneric.EXPERIMENTAL_FEAT\n ) +\n ')'\n }\n icon=\"smeup-ai\"\n onkup-button-click={() => {\n this.#kupManager.openAI.show({\n context: this.rootElement.tagName,\n dataset: this.data,\n });\n this.#closeCustomSettings();\n }}\n />\n ) : null}\n </div>\n {totalsMatrix}\n </kup-card>\n );\n }\n\n #columnRemoveArea(): HTMLDivElement {\n return (\n <div\n class=\"droparea__remove\"\n ref={(el) => (this.#removeDropareaRef = el)}\n >\n <FImage\n resource=\"delete\"\n color={`var(${KupThemeColorValues.DANGER})`}\n sizeX=\"30px\"\n sizeY=\"50px\"\n />\n <FImage\n resource=\"delete-empty\"\n color={`var(${KupThemeColorValues.DANGER})`}\n sizeX=\"30px\"\n sizeY=\"50px\"\n />\n </div>\n );\n }\n\n #columnGroupArea(): HTMLDivElement {\n return (\n <div\n class=\"droparea__groups\"\n ref={(el) => (this.#groupsDropareaRef = el)}\n >\n <FImage\n resource=\"bookmark\"\n color={`var(${KupThemeColorValues.TEXT})`}\n sizeX=\"30px\"\n sizeY=\"50px\"\n />\n <FImage\n resource=\"book\"\n color={`var(${KupThemeColorValues.TEXT})`}\n sizeX=\"30px\"\n sizeY=\"50px\"\n />\n </div>\n );\n }\n\n #hideShowColumnDropArea(show: boolean, th?: HTMLElement) {\n if (show && th && (this.removableColumns || this.showGroups)) {\n this.#dropareaRef.classList.add('droparea--visible');\n this.#kupManager.dynamicPosition.register(\n this.#dropareaRef as KupDynamicPositionElement,\n th,\n 10,\n KupDynamicPositionPlacement.TOP\n );\n this.#kupManager.dynamicPosition.start(\n this.#dropareaRef as KupDynamicPositionElement\n );\n this.#dropareaRef.style.marginLeft =\n th.clientWidth / 2 - this.#dropareaRef.clientWidth / 2 + 'px';\n } else {\n this.#dropareaRef.classList.remove('droparea--visible');\n +this.#kupManager.dynamicPosition.stop(\n this.#dropareaRef as KupDynamicPositionElement\n );\n }\n }\n\n #handleColumnGroup(column2group: KupDataColumn) {\n // Get sorted column current position\n this.getVisibleColumns();\n const columnX = this.getVisibleColumns().find(\n (col) =>\n col.name === column2group.name &&\n col.title === column2group.title\n );\n if (columnX) {\n let found: boolean = false;\n for (let i = 0; i < this.groups.length; i++) {\n if (this.groups[i].column == columnX.name) {\n found = true;\n break;\n }\n }\n if (!found) {\n this.groups.push({ column: columnX.name, visible: true });\n this.groups = [...this.groups];\n this.refresh();\n }\n }\n }\n\n #transcodeItem(\n item: string | ShowGrid,\n searchIn: Array<string>,\n returnFrom: Array<string>\n ): string {\n for (let i = 0; i < searchIn.length; i++) {\n const tmpCode = searchIn[i];\n if (tmpCode == item && i < returnFrom.length) {\n return returnFrom[i];\n }\n }\n return item;\n }\n\n #createListData(\n codes: Array<string>,\n icons: Array<string>,\n selectedCode: string\n ): KupListNode[] {\n const listItems: KupListNode[] = [];\n for (let i = 0; i < codes.length; i++) {\n let value: KupLanguageKey = null;\n switch (codes[i]) {\n //This whole customization panel thingy must be purged, for now -- it's ugly\n case 'big':\n value = KupLanguageFontsize.BIG;\n break;\n case 'Col':\n value = KupLanguageGrid.COLUMN;\n break;\n case 'Complete':\n value = KupLanguageGrid.COMPLETE;\n break;\n case 'dense':\n value = KupLanguageDensity.DENSE;\n break;\n case 'medium':\n value = KupLanguageDensity.MEDIUM;\n break;\n case 'None':\n value = KupLanguageGrid.NONE;\n break;\n case 'small':\n value = KupLanguageFontsize.SMALL;\n break;\n case 'Row':\n value = KupLanguageGrid.ROW;\n break;\n case 'wide':\n value = KupLanguageDensity.WIDE;\n break;\n }\n if (value) {\n listItems[i] = {\n icon: icons[i],\n id: codes[i],\n selected: selectedCode == codes[i],\n value: this.#kupManager.language.translate(value),\n };\n }\n }\n return listItems;\n }\n\n #FONTSIZE_CODES: Array<string> = ['small', 'medium', 'big'];\n #FONTSIZE_DECODES: Array<string> = ['Small', 'Medium', 'Big'];\n #FONTSIZE_ICONS: Array<string> = [\n 'format-font-size-decrease',\n 'format-color-text',\n 'format-font-size-increase',\n ];\n\n #getFontSizeCodeFromDecode(decode: string): string {\n return this.#transcodeItem(\n decode,\n this.#FONTSIZE_DECODES,\n this.#FONTSIZE_CODES\n );\n }\n\n #renderFontSizePanel() {\n const listItems: KupListNode[] = this.#createListData(\n this.#FONTSIZE_CODES,\n this.#FONTSIZE_ICONS,\n this.fontsize\n );\n\n const listData = { data: listItems, showIcons: true };\n\n const textfieldData = {\n trailingIcon: true,\n label: this.#kupManager.language.translate(\n KupLanguageFontsize.LABEL\n ),\n icon: 'arrow_drop_down',\n };\n const data = { 'kup-text-field': textfieldData, 'kup-list': listData };\n let text: KupLanguageFontsize = null;\n switch (this.fontsize) {\n //This whole customization panel thingy must be purged, for now -- it's ugly\n case 'big':\n text = KupLanguageFontsize.BIG;\n break;\n case 'medium':\n text = KupLanguageFontsize.MEDIUM;\n break;\n case 'small':\n text = KupLanguageFontsize.SMALL;\n break;\n }\n return (\n <div class=\"customize-element fontsize-panel\">\n <kup-combobox\n isSelect={true}\n data={data}\n initialValue={this.#kupManager.language.translate(text)}\n onkup-combobox-itemclick={(\n e: CustomEvent<KupComboboxEventPayload>\n ) => {\n e.stopPropagation();\n this.fontsize = this.#getFontSizeCodeFromDecode(\n e.detail.node.id\n );\n }}\n />\n </div>\n );\n }\n\n #DENSITY_DECODES: Array<string> = ['Dense', 'Medium', 'Wide'];\n #DENSITY_ICONS: Array<string> = [\n 'format-align-justify',\n 'reorder-horizontal',\n 'view-sequential',\n ];\n\n #getDensityCodeFromDecode(decode: string): string {\n return this.#transcodeItem(decode, this.#DENSITY_DECODES, [\n 'dense',\n 'medium',\n 'wide',\n ]);\n }\n\n #renderDensityPanel() {\n const listItems: KupListNode[] = this.#createListData(\n ['dense', 'medium', 'wide'],\n this.#DENSITY_ICONS,\n this.density\n );\n\n const listData = { data: listItems, showIcons: true };\n\n const textfieldData = {\n trailingIcon: true,\n label: this.#kupManager.language.translate(\n KupLanguageDensity.LABEL\n ),\n icon: 'arrow_drop_down',\n };\n const data = { 'kup-text-field': textfieldData, 'kup-list': listData };\n let text: KupLanguageDensity = null;\n switch (this.density) {\n //This whole customization panel thingy must be purged, for now -- it's ugly\n case 'dense':\n text = KupLanguageDensity.DENSE;\n break;\n case 'medium':\n text = KupLanguageDensity.MEDIUM;\n break;\n case 'wide':\n text = KupLanguageDensity.WIDE;\n break;\n }\n return (\n <div class=\"customize-element density-panel\">\n <kup-combobox\n isSelect={true}\n initialValue={this.#kupManager.language.translate(text)}\n selectMode={ItemsDisplayMode.DESCRIPTION}\n data={data}\n onkup-combobox-itemclick={(\n e: CustomEvent<KupComboboxEventPayload>\n ) => {\n e.stopPropagation();\n this.density = this.#getDensityCodeFromDecode(\n e.detail.node.id\n ) as FCellPadding;\n }}\n />\n </div>\n );\n }\n\n #GRID_CODES: Array<string> = ['Complete', 'Col', 'Row', 'None'];\n #GRID_DECODES: Array<string> = ['Complete', 'Columns', 'Rows', 'None'];\n #GRID_ICONS: Array<string> = [\n 'grid_on',\n 'view_column',\n 'view_headline',\n 'grid_off',\n ];\n\n #getGridCodeFromDecode(decode: string): string {\n return this.#transcodeItem(\n decode,\n this.#GRID_DECODES,\n this.#GRID_CODES\n );\n }\n\n #renderTransposeSwitch() {\n return (\n <div class=\"customize-element grid-panel\">\n <kup-switch\n checked={this.transpose}\n label={this.#kupManager.language.translate(\n KupLanguageGeneric.TRANSPOSE_DATA\n )}\n leadingLabel={true}\n onkup-switch-change={(e: CustomEvent) => {\n e.stopPropagation();\n if (e.detail.value === 'on') {\n this.transpose = true;\n } else {\n this.transpose = false;\n }\n }}\n />\n </div>\n );\n }\n\n #renderTotalsMatrix() {\n return (\n <div class=\"customize-element grid-panel\">\n <kup-button\n title={\n this.#kupManager.language.translate(\n KupLanguageGeneric.TOTALS_TABLE\n ) +\n ' (' +\n this.#kupManager.language.translate(\n KupLanguageGeneric.EXPERIMENTAL_FEAT\n ) +\n ')'\n }\n label={this.#kupManager.language.translate(\n KupLanguageGeneric.TOTALS_TABLE\n )}\n icon=\"exposure\"\n onkup-button-click={() => this.#switchToTotalsMatrix()}\n />\n </div>\n );\n }\n\n #renderGridPanel() {\n const listItems: KupListNode[] = this.#createListData(\n this.#GRID_CODES,\n this.#GRID_ICONS,\n this.showGrid\n );\n\n const listData = { data: listItems, showIcons: true };\n\n const textfieldData = {\n trailingIcon: true,\n label: this.#kupManager.language.translate(KupLanguageGrid.LABEL),\n icon: 'arrow_drop_down',\n };\n const data = { 'kup-text-field': textfieldData, 'kup-list': listData };\n let text: KupLanguageGrid = null;\n switch (this.showGrid) {\n //This whole customization panel thingy must be purged, for now -- it's ugly\n case ShowGrid.COL:\n text = KupLanguageGrid.COLUMN;\n break;\n case ShowGrid.COMPLETE:\n text = KupLanguageGrid.COMPLETE;\n break;\n case ShowGrid.NONE:\n text = KupLanguageGrid.NONE;\n break;\n case ShowGrid.ROW:\n text = KupLanguageGrid.ROW;\n break;\n }\n return (\n <div class=\"customize-element grid-panel\">\n <kup-combobox\n isSelect={true}\n initialValue={this.#kupManager.language.translate(text)}\n data={data}\n onkup-combobox-itemclick={(e: CustomEvent) => {\n e.stopPropagation();\n const grid: any = this.#getGridCodeFromDecode(\n e.detail.value\n );\n this.showGrid = grid;\n }}\n />\n </div>\n );\n }\n\n #renderCommandButton(commandObj: KupDataCommand, styling: FButtonStyling) {\n return (\n <kup-button\n styling={styling}\n onKup-button-click={() => this.#handleUpdateClick(commandObj)}\n keyShortcut={commandObj.data?.keyShortcut}\n icon={commandObj.icon}\n label={commandObj.value}\n />\n );\n }\n\n #renderCommandDropDownButton(\n commandObj: KupDataCommand,\n styling: FButtonStyling\n ) {\n const data = {\n 'kup-list': {\n showIcons: true,\n data: commandObj.children.map((c) => {\n return {\n ...c,\n data: {\n label: c.value,\n ...c.data,\n },\n id: c.obj.k,\n };\n }),\n },\n };\n return (\n <kup-dropdown-button\n {...commandObj.data}\n styling={styling}\n sizing={KupComponentSizing.MEDIUM}\n label={commandObj.value}\n data={data}\n onkup-dropdownbutton-itemclick={(\n e: CustomEvent<KupDropdownButtonEventPayload>\n ) => {\n this.#handleUpdateClick(e.detail.node);\n }}\n ></kup-dropdown-button>\n );\n }\n\n #renderUpdateButtons() {\n const styling: FButtonStyling = FButtonStyling.FLAT;\n\n const createRowWithInputFields = (): KupDataRow => {\n let row: KupDataRow = { cells: {} };\n this.#originalDataLoaded?.columns.forEach((c) => {\n (row.cells[c.name] as Omit<KupDataCell, 'value'>) = {\n shape: FCellShapes.INPUT_FIELD,\n obj: { ...c.obj },\n isEditable: true,\n };\n });\n return row;\n };\n\n const addRowHandler = async () => {\n let newRow: KupDataRow;\n const selectedRows = await this.getSelectedRows();\n if (selectedRows.length > 0) {\n newRow = JSON.parse(JSON.stringify(selectedRows[0]));\n } else if (this.#originalDataLoaded?.rows?.length > 0) {\n newRow = JSON.parse(\n JSON.stringify(this.#originalDataLoaded.rows[0])\n );\n } else {\n newRow = createRowWithInputFields();\n }\n Object.values(newRow.cells).forEach((cell) => {\n if (selectedRows.length == 0) {\n cell.value = '';\n }\n });\n newRow.id = (\n this.#originalDataLoadedMaxId + ++this.#insertCount\n ).toString();\n this.insertNewRow(newRow, true);\n };\n\n const deleteRowHandler = async () => {\n const ids: string[] = (await this.getSelectedRows()).map(\n (row) => row.id\n );\n this.deleteRows(ids);\n };\n\n const addConfirmButton = () => {\n commandButtons.push(\n <kup-button\n styling={styling}\n icon=\"check\"\n onKup-button-click={() => this.#handleUpdateClick()}\n label={this.#kupManager.language.translate(\n KupLanguageGeneric.CONFIRM\n )}\n />\n );\n };\n\n const addCommands = () => {\n this.data?.setup?.commands?.forEach((commandObj) => {\n commandButtons.push(\n commandObj?.children && commandObj?.children.length > 0\n ? this.#renderCommandDropDownButton(commandObj, styling)\n : this.#renderCommandButton(commandObj, styling)\n );\n });\n };\n\n const addOperations = () => {\n const operationList = this.data?.setup?.operations;\n const operations = {\n insert: {\n enabled: operationList?.insert,\n icon: 'add',\n title: this.#kupManager.language.translate(\n KupLanguageGeneric.ROW_ADD\n ),\n onClickHandler: () => addRowHandler(),\n },\n delete: {\n enabled: operationList?.delete,\n icon: 'minus',\n title: this.#kupManager.language.translate(\n KupLanguageGeneric.ROW_DELETE\n ),\n onClickHandler: () => deleteRowHandler(),\n },\n };\n\n Object.values(operations)\n .filter((op) => op.enabled)\n .forEach((op) => {\n commandButtons.push(\n <kup-button\n styling={styling}\n icon={op.icon}\n title={op.title}\n onKup-button-click={op.onClickHandler}\n />\n );\n });\n };\n\n let commandButtons = [];\n\n addConfirmButton();\n addCommands();\n addOperations();\n\n return <div class=\"commands\">{commandButtons}</div>;\n }\n\n render() {\n this.#thRefs = [];\n this.#rowsRefs = [];\n this.#renderedRows = [];\n let elStyle = undefined;\n let actionWrapperWidth = undefined;\n this.#sizedColumns = this.#getSizedColumns();\n\n let rows = null;\n if (this.#paginatedRowsLength === 0) {\n rows = (\n <tr ref={(el: HTMLElement) => this.#rowsRefs.push(el)}>\n <td colSpan={this.#calculateColspan()}>\n {this.emptyDataLabel}\n </td>\n </tr>\n );\n } else {\n rows = [];\n this.#paginatedRows\n // We must pass the previous element of the array to check if we must hide or display the value of the cell\n // When the column has specified the parameter hideValuesRepetitions\n .map((row, rowIndex, currentArray) =>\n this.#renderRow(\n row,\n 0,\n rowIndex + 1,\n rowIndex > 0 ? currentArray[rowIndex - 1] : null\n )\n )\n .forEach((jsxRow) => {\n if (Array.isArray(jsxRow)) {\n jsxRow.forEach((jr) => rows.push(jr));\n } else {\n rows.push(jsxRow);\n }\n });\n }\n\n // header\n // for multi selection purposes, this should be called before this.renderedRows has been evaluated\n const header = this.#renderHeader();\n const stickyHeader = this.#renderStickyHeader();\n\n let paginatorTop = undefined;\n let paginatorBottom = undefined;\n if (\n (!this.lazyLoadRows && this.#rowsLength > this.rowsPerPage) ||\n this.showCustomization ||\n this.showLoadMore\n ) {\n if (\n PaginatorPos.TOP === this.paginatorPos ||\n PaginatorPos.BOTH === this.paginatorPos\n ) {\n paginatorTop = this.#renderPaginator(true);\n }\n\n if (\n PaginatorPos.BOTTOM === this.paginatorPos ||\n PaginatorPos.BOTH === this.paginatorPos\n ) {\n paginatorBottom = this.#renderPaginator(false);\n }\n }\n\n let groupChips = null;\n if (this.#isGrouping()) {\n const chipsData = [];\n for (let index = 0; index < this.groups.length; index++) {\n const group = this.groups[index];\n const column = getColumnByName(this.getColumns(), group.column);\n if (column) {\n chipsData.push({\n value: column.title,\n id: column.name,\n checked: true,\n });\n } else {\n this.#kupManager.debug.logMessage(\n this,\n 'Grouped for a non-existent column! (' +\n group.column +\n ')',\n KupDebugCategory.WARNING\n );\n }\n }\n if (chipsData.length > 0) {\n const props: FChipsProps = {\n data: chipsData,\n id: 'group-chips',\n type: FChipType.INPUT,\n onIconClick: [],\n };\n for (let i = 0; i < chipsData.length; i++) {\n props.onIconClick.push(() => this.#removeGroup(i));\n }\n groupChips = <FChip {...props}></FChip>;\n }\n }\n\n const tableClass = {\n // Class to specify whether the table should have width: auto or not.\n // Mandatory to check with custom column size.\n 'auto-width': this.#tableHasAutoWidth(),\n 'column-separation':\n ShowGrid.COMPLETE === this.showGrid ||\n ShowGrid.COL === this.showGrid,\n // When there are columns with a specified width, we must add table-layout: fixed to force the table to respect them\n 'row-separation':\n ShowGrid.COMPLETE === this.showGrid ||\n ShowGrid.ROW === this.showGrid,\n\n 'persistent-header':\n this.headerIsPersistent &&\n this.tableHeight === undefined &&\n this.tableWidth === undefined,\n\n 'custom-size': !!this.tableHeight || !!this.tableWidth,\n\n 'border-top': !this.showHeader,\n };\n\n const wrapClass = tableClass['auto-width'] ? 'auto-width' : '';\n\n tableClass[`density-${this.density}`] = true;\n tableClass[`fontsize-${this.fontsize}`] = true;\n\n if (this.tableHeight && this.tableHeight !== '100%') {\n elStyle = {\n ...elStyle,\n height: this.tableHeight,\n overflow: 'auto',\n };\n }\n\n if (this.tableWidth && this.tableHeight !== '100%') {\n elStyle = {\n ...elStyle,\n width: this.tableWidth,\n overflow: 'auto',\n };\n actionWrapperWidth = {\n ...actionWrapperWidth,\n width: this.tableWidth,\n overflow: 'auto',\n };\n }\n\n let stickyEl = undefined;\n if (\n this.headerIsPersistent &&\n this.tableHeight === undefined &&\n this.tableWidth === undefined\n ) {\n stickyEl = (\n <sticky-header\n class=\"hover-scrolling-child\"\n hidden={!this.showHeader}\n ref={(el: HTMLTableSectionElement) =>\n (this.#stickyTheadRef = el as any)\n }\n >\n <thead-sticky>\n <tr-sticky>{stickyHeader}</tr-sticky>\n </thead-sticky>\n </sticky-header>\n );\n }\n\n let belowClass = 'below-wrapper';\n if (!!this.tableHeight || !!this.tableWidth) {\n belowClass += ' custom-size';\n }\n\n const autoselectOnAction = (e: CustomEvent<FCellEventPayload>) => {\n if (!this.updatableData) {\n if (e && e.detail && e.detail.row) {\n const row = e.detail.row;\n if (!this.selectedRows.includes(row)) {\n if (\n this.selection ===\n SelectionMode.MULTIPLE_CHECKBOX ||\n this.selection === SelectionMode.MULTIPLE\n ) {\n this.selectedRows.push(row);\n } else {\n this.selectedRows = [row];\n }\n }\n if (e.type === 'kup-cell-input') {\n this.refresh();\n }\n }\n }\n };\n\n const compCreated = (\n <Host\n onKup-cell-input={autoselectOnAction}\n onKup-cell-update={autoselectOnAction}\n >\n <style>\n {this.#kupManager.theme.setKupStyle(\n this.rootElement as KupComponent\n )}\n </style>\n {this.updatableData ? this.#renderUpdateButtons() : null}\n <div id={componentWrapperId} class={wrapClass}>\n <div class=\"group-wrapper\">{groupChips}</div>\n <div class=\"actions-wrapper\" style={actionWrapperWidth}>\n {this.globalFilter ? (\n <div id=\"global-filter\">\n <FTextField\n fullWidth={true}\n icon={KupThemeIconValues.SEARCH}\n label={this.#kupManager.language.translate(\n KupLanguageSearch.SEARCH\n )}\n value={this.globalFilterValue}\n onInput={(event) => {\n const t: EventTarget = event.target;\n window.clearTimeout(\n this.#globalFilterTimeout\n );\n this.#globalFilterTimeout =\n window.setTimeout(\n () =>\n this.#onGlobalFilterChange(\n t\n ),\n 600,\n t\n );\n }}\n />\n </div>\n ) : null}\n <div class=\"above-wrapper paginator-top\">\n {paginatorTop}\n </div>\n {this.insertMode !== '' &&\n this.selectedRows.length > 0 ? (\n <FButton\n icon=\"save\"\n onClick={() => {\n this.kupSave.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n });\n }}\n styling={FButtonStyling.FLAT}\n sizing={KupComponentSizing.MEDIUM}\n title=\"Save\"\n wrapperClass=\"save-button\"\n ></FButton>\n ) : null}\n {this.showDeleteButton &&\n this.selectedRows.length > 0 ? (\n <FButton\n icon=\"delete\"\n onClick={() => {\n this.#rowsDelete();\n }}\n styling={FButtonStyling.FLAT}\n sizing={KupComponentSizing.MEDIUM}\n title=\"Delete selected rows\"\n wrapperClass=\"delete-button\"\n ></FButton>\n ) : null}\n {this.showHistoryButton ? (\n <FButton\n icon=\"history\"\n onClick={() => {\n this.kupHistory.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n });\n }}\n styling={FButtonStyling.FLAT}\n sizing={KupComponentSizing.MEDIUM}\n title=\"History\"\n wrapperClass=\"history-button\"\n ></FButton>\n ) : null}\n {this.insertMode !== '' ? (\n <FButton\n label=\"Crea nuovo\"\n // icon=\"plus\"\n onClick={async () => {\n if (this.insertMode === 'form') {\n this.#rowInsertForm();\n } else {\n this.#insertCount++;\n const cells: KupDataRowCells = {};\n for (\n let index = 0;\n index < this.data.columns.length;\n index++\n ) {\n const column =\n this.data.columns[index];\n cells[column.name] = {\n data: column.cellData\n ? JSON.parse(\n JSON.stringify(\n column.cellData\n )\n )\n : undefined,\n slotData: column.cellSlotData\n ? JSON.parse(\n JSON.stringify(\n column.cellSlotData\n )\n )\n : undefined,\n isEditable:\n column.isKey ||\n column.isEditable,\n obj: { ...column.obj },\n shape: column.shape,\n value: '',\n };\n }\n const row = {\n cells,\n id:\n this.#INSERT_PREFIX +\n this.#insertCount,\n };\n this.data.rows.unshift(row);\n await this.refresh(true);\n }\n }}\n sizing={KupComponentSizing.MEDIUM}\n styling={FButtonStyling.RAISED}\n title=\"Insert row\"\n wrapperClass=\"insert-button\"\n ></FButton>\n ) : null}\n </div>\n <div\n class=\"droparea\"\n ref={(el) => (this.#dropareaRef = el)}\n >\n {this.showGroups ? this.#columnGroupArea() : null}\n {this.removableColumns\n ? this.#columnRemoveArea()\n : null}\n </div>\n <div\n style={elStyle}\n class={belowClass}\n ref={(el: HTMLElement) =>\n (this.#tableAreaRef = el as KupScrollOnHoverElement)\n }\n >\n {this.showCustomization\n ? [\n <div\n class=\"settings-trigger\"\n onClick={() => {\n this.#onCustomSettingsClick();\n }}\n ref={(el) => {\n this.#customizeTopButtonRef =\n el as any;\n }}\n >\n <FImage\n color={`var(${KupThemeColorValues.TITLE})`}\n resource=\"settings\"\n sizeX=\"10px\"\n />\n </div>,\n this.renderCustomizePanel(),\n ]\n : null}\n <table\n class={tableClass}\n ref={(el: HTMLTableElement) =>\n (this.#tableRef = el)\n }\n onMouseLeave={(ev) => {\n ev.stopPropagation();\n }}\n onPointerDown={(e) => {\n this.#lastPointerDetails =\n this.#getEventDetails(\n this.#kupManager.getEventPath(\n e.target,\n this.rootElement\n ),\n e as unknown as Interact.PointerEvent\n );\n }}\n onPointerUp={(e) => {\n this.#lastPointerDetails =\n this.#getEventDetails(\n this.#kupManager.getEventPath(\n e.target,\n this.rootElement\n ),\n e as unknown as Interact.PointerEvent\n );\n }}\n onContextMenu={(e: MouseEvent) => {\n e.preventDefault();\n }}\n >\n <thead\n hidden={!this.showHeader}\n ref={(el) => (this.#theadRef = el as any)}\n >\n <tr>{header}</tr>\n </thead>\n <tbody>{rows}</tbody>\n {this.showFooter || this.#hasTotals()\n ? this.renderFooter()\n : null}\n </table>\n {stickyEl}\n </div>\n {paginatorBottom}\n </div>\n </Host>\n );\n return compCreated;\n }\n\n disconnectedCallback() {\n this.#kupManager.interact.unregister(\n this.#interactableDrag.concat(\n this.#interactableDrop,\n this.#interactableResize,\n this.#interactableTouch\n )\n );\n this.#kupManager.language.unregister(this);\n this.#kupManager.theme.unregister(this);\n const dynamicPositionElements: NodeListOf<KupDynamicPositionElement> =\n this.rootElement.shadowRoot.querySelectorAll(\n '[' + kupDynamicPositionAttribute + ']'\n );\n if (dynamicPositionElements.length > 0) {\n this.#kupManager.dynamicPosition.unregister(\n Array.prototype.slice.call(dynamicPositionElements)\n );\n }\n if (this.#customizeTopPanelRef) {\n this.#customizeTopPanelRef.remove();\n }\n if (this.#columnMenuCard) {\n this.#columnMenuCard.remove();\n }\n if (this.scrollOnHover) {\n this.#kupManager.scrollOnHover.unregister(this.#tableAreaRef);\n }\n this.#kupManager.resize.unobserve(this.rootElement);\n this.kupDidUnload.emit({ comp: this, id: this.rootElement.id });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"kup-data-table.js","sourceRoot":"","sources":["../../../src/components/kup-data-table/kup-data-table.tsx"],"names":[],"mappings":"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AE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACJ;;IAz0JO,uBAAA,IAAI,gCAAY,CAAC,eAAe,CAAC,IAAI,CACjC,uBAAA,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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n forceUpdate,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport type {\n DropEvent,\n InteractEvent,\n PointerEvent,\n} from '@interactjs/types/index';\nimport type { ResizeEvent } from '@interactjs/actions/resize/plugin';\nimport type { KupComboboxEventPayload } from '../kup-combobox/kup-combobox-declarations';\nimport {\n FixedCellsClasses,\n FixedCellsCSSVarsBase,\n GroupLabelDisplayMode,\n GroupObject,\n LoadMoreMode,\n PaginatorPos,\n ShowGrid,\n SortMode,\n SortObject,\n TotalsMap,\n TotalMode,\n TotalLabel,\n KupDatatableEventHandlerDetails,\n KupDataTableProps,\n fieldColumn,\n iconColumn,\n keyColumn,\n SelectionMode,\n KupDatatableRowSelectedEventPayload,\n KupDatatableClickEventPayload,\n KupDatatableColumnMenuEventPayload,\n KupDatatableLoadMoreClickEventPayload,\n KupDatatableColumnRemoveEventPayload,\n KupDatatableColumnMoveEventPayload,\n KupDataTableDataset,\n KupDataTableRow,\n KupDataTableRowCells,\n KupDataTableCell,\n KupDatatableDeleteRowEventPayload,\n KupDatatableInsertRowEventPayload,\n KupDataTableInsertMode,\n KupDatatableHistoryEventPayload,\n KupDatatableRowActionItemClickEventPayload,\n KupDatatableUpdatePayload,\n DataTableAreasEnum,\n} from './kup-data-table-declarations';\nimport { getColumnByName } from '../../utils/cell-utils';\nimport {\n calcTotals,\n normalizeRows,\n filterRows,\n groupRows,\n paginateRows,\n sortRows,\n getDiffData,\n decorateDataTable,\n} from './kup-data-table-helper';\nimport {\n GenericObject,\n KupComponent,\n KupComponentSizing,\n KupEventPayload,\n} from '../../types/GenericTypes';\nimport { identify, getProps, setProps } from '../../utils/utils';\nimport {\n KupListNode,\n ItemsDisplayMode,\n} from '../kup-list/kup-list-declarations';\nimport {\n KupManager,\n kupManagerInstance,\n} from '../../managers/kup-manager/kup-manager';\nimport { KupDataTableState } from './kup-data-table-state';\nimport { KupStore } from '../kup-state/kup-store';\nimport { FImage } from '../../f-components/f-image/f-image';\nimport { FTextField } from '../../f-components/f-text-field/f-text-field';\nimport { FChip } from '../../f-components/f-chip/f-chip';\nimport { FTextFieldMDC } from '../../f-components/f-text-field/f-text-field-mdc';\nimport {\n FChipsProps,\n FChipType,\n} from '../../f-components/f-chip/f-chip-declarations';\nimport { FCheckbox } from '../../f-components/f-checkbox/f-checkbox';\nimport { FCheckboxProps } from '../../f-components/f-checkbox/f-checkbox-declarations';\nimport {\n GenericFilter,\n ValueDisplayedValue,\n} from '../../utils/filters/filters-declarations';\nimport { KupColumnMenu } from '../../utils/kup-column-menu/kup-column-menu';\nimport { FiltersColumnMenu } from '../../utils/filters/filters-column-menu';\nimport { FiltersRows } from '../../utils/filters/filters-rows';\nimport {\n KupDynamicPositionAnchor,\n kupDynamicPositionAttribute,\n KupDynamicPositionElement,\n KupDynamicPositionPlacement,\n} from '../../managers/kup-dynamic-position/kup-dynamic-position-declarations';\nimport { KupScrollOnHoverElement } from '../../managers/kup-scroll-on-hover/kup-scroll-on-hover-declarations';\nimport {\n KupCardData,\n KupCardFamily,\n KupCardEventPayload,\n KupCardColumnDropMenuOptions,\n} from '../kup-card/kup-card-declarations';\nimport { KupDebugCategory } from '../../managers/kup-debug/kup-debug-declarations';\nimport {\n KupLanguageDensity,\n KupLanguageFontsize,\n KupLanguageGeneric,\n KupLanguageGrid,\n KupLanguageKey,\n KupLanguageRow,\n KupLanguageSearch,\n KupLanguageTotals,\n} from '../../managers/kup-language/kup-language-declarations';\nimport { FImageProps } from '../../f-components/f-image/f-image-declarations';\nimport { KupDynamicPositionCoordinates } from '../../managers/kup-dynamic-position/kup-dynamic-position-declarations';\nimport {\n KupThemeColorValues,\n KupThemeIconValues,\n} from '../../managers/kup-theme/kup-theme-declarations';\nimport { componentWrapperId } from '../../variables/GenericVariables';\nimport {\n kupDragActiveAttr,\n KupDragCallbacks,\n KupDragDataTransferCallback,\n KupDragEffect,\n kupDraggableCellAttr,\n kupDraggableColumnAttr,\n KupDraggableElement,\n KupDropCallbacks,\n KupDropDataTransferCallback,\n KupDropEventTypes,\n KupPointerEventTypes,\n KupResizeCallbacks,\n} from '../../managers/kup-interact/kup-interact-declarations';\nimport { KupManagerClickCb } from '../../managers/kup-manager/kup-manager-declarations';\nimport {\n FCellEventPayload,\n FCellPadding,\n FCellShapes,\n} from '../../f-components/f-cell/f-cell-declarations';\nimport { FCell } from '../../f-components/f-cell/f-cell';\nimport { FPaginator } from '../../f-components/f-paginator/f-paginator';\nimport {\n pageChange,\n rowsPerPageChange,\n} from '../../f-components/f-paginator/f-paginator-utils';\nimport {\n KupCommand,\n KupDataCell,\n KupDataColumn,\n KupDataCommand,\n KupDataDataset,\n KupDataNewColumnOptions,\n KupDataNewColumnTypes,\n KupDataRow,\n KupDataRowAction,\n KupDataRowCells,\n} from '../../managers/kup-data/kup-data-declarations';\nimport { FButton } from '../../f-components/f-button/f-button';\nimport { FButtonStyling } from '../../f-components/f-button/f-button-declarations';\nimport { KupFormRow } from '../kup-form/kup-form-declarations';\nimport { KupColumnMenuIds } from '../../utils/kup-column-menu/kup-column-menu-declarations';\nimport { KupList } from '../kup-list/kup-list';\nimport { KupDropdownButtonEventPayload } from '../kup-dropdown-button/kup-dropdown-button-declarations';\n@Component({\n tag: 'kup-data-table',\n styleUrl: 'kup-data-table.scss',\n shadow: true,\n})\nexport class KupDataTable {\n @Prop() stateId: string = '';\n @Prop() store: KupStore;\n\n state: KupDataTableState = new KupDataTableState();\n\n initWithPersistedState(): void {\n if (this.store && this.stateId) {\n const state = this.store.getState(this.stateId);\n if (state != null) {\n this.#kupManager.debug.logMessage(\n this,\n 'Initializing stateId ' + this.stateId\n );\n // *** PROPS ***\n this.filters = { ...state.filters };\n this.groups = [...state.groups];\n this.expandGroups = state.expandGroups;\n this.groupLabelDisplay = state.groupLabelDisplay;\n this.density = state.density;\n this.enableExtraColumns = state.enableExtraColumns;\n this.enableSortableColumns = state.enableSortableColumns;\n this.forceOneLine = state.forceOneLine;\n this.globalFilter = state.globalFilter;\n this.globalFilterValue = state.globalFilterValue;\n this.headerIsPersistent = state.headerIsPersistent;\n this.lazyLoadRows = state.lazyLoadRows;\n this.loadMoreLimit = state.loadMoreLimit;\n this.selection = state.selection;\n this.rowsPerPage = state.rowsPerPage;\n this.showFilters = state.showFilters;\n this.showGroups = state.showGroups;\n this.showHeader = state.showHeader;\n this.showLoadMore = state.showLoadMore;\n this.sortEnabled = state.sortEnabled;\n this.sort = [...state.sort];\n this.pageSelected = state.pageSelected;\n this.sortableColumnsMutateData =\n state.sortableColumnsMutateData;\n this.dragEnabled = state.dragEnabled;\n this.dropEnabled = state.dropEnabled;\n this.showFooter = state.showFooter;\n this.totals = { ...state.totals };\n }\n }\n }\n\n persistState(): void {\n if (this.store && this.stateId) {\n let somethingChanged = false;\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.filters,\n this.filters\n )\n ) {\n this.state.filters = { ...this.filters };\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.groups,\n this.groups\n )\n ) {\n this.state.groups = [...this.groups];\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(this.state.sort, this.sort)\n ) {\n this.state.sort = [...this.sort];\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.expandGroups,\n this.expandGroups\n )\n ) {\n this.state.expandGroups = this.expandGroups;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.groupLabelDisplay,\n this.groupLabelDisplay\n )\n ) {\n this.state.groupLabelDisplay = this.groupLabelDisplay;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.density,\n this.density\n )\n ) {\n this.state.density = this.density;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.enableExtraColumns,\n this.enableExtraColumns\n )\n ) {\n this.state.enableExtraColumns = this.enableExtraColumns;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.enableSortableColumns,\n this.enableSortableColumns\n )\n ) {\n this.state.enableSortableColumns = this.enableSortableColumns;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.forceOneLine,\n this.forceOneLine\n )\n ) {\n this.state.forceOneLine = this.forceOneLine;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.globalFilter,\n this.globalFilter\n )\n ) {\n this.state.globalFilter = this.globalFilter;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.globalFilterValue,\n this.globalFilterValue\n )\n ) {\n this.state.globalFilterValue = this.globalFilterValue;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.headerIsPersistent,\n this.headerIsPersistent\n )\n ) {\n this.state.headerIsPersistent = this.headerIsPersistent;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.lazyLoadRows,\n this.lazyLoadRows\n )\n ) {\n this.state.lazyLoadRows = this.lazyLoadRows;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.loadMoreLimit,\n this.loadMoreLimit\n )\n ) {\n this.state.loadMoreLimit = this.loadMoreLimit;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.selection,\n this.selection\n )\n ) {\n this.state.selection = this.selection;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.rowsPerPage,\n this.currentRowsPerPage\n )\n ) {\n this.state.rowsPerPage = this.currentRowsPerPage;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.showFilters,\n this.showFilters\n )\n ) {\n this.state.showFilters = this.showFilters;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.showGroups,\n this.showGroups\n )\n ) {\n this.state.showGroups = this.showGroups;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.showHeader,\n this.showHeader\n )\n ) {\n this.state.showHeader = this.showHeader;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.showLoadMore,\n this.showLoadMore\n )\n ) {\n this.state.showLoadMore = this.showLoadMore;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.sortEnabled,\n this.sortEnabled\n )\n ) {\n this.state.sortEnabled = this.sortEnabled;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.sortableColumnsMutateData,\n this.sortableColumnsMutateData\n )\n ) {\n this.state.sortableColumnsMutateData =\n this.sortableColumnsMutateData;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.pageSelected,\n this.currentPage\n )\n ) {\n this.state.pageSelected = this.currentPage;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.dragEnabled,\n this.dragEnabled\n )\n ) {\n this.state.dragEnabled = this.dragEnabled;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.dropEnabled,\n this.dropEnabled\n )\n ) {\n this.state.dropEnabled = this.dropEnabled;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.showFooter,\n this.showFooter\n )\n ) {\n this.state.showFooter = this.showFooter;\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.totals,\n this.totals\n )\n ) {\n this.state.totals = { ...this.totals };\n somethingChanged = true;\n }\n if (\n !this.#kupManager.objects.deepEqual(\n this.state.selectRowsById,\n this.selectedRows.reduce(\n (accumulator, row, currentIndex) => {\n const prefix = currentIndex > 0 ? ';' : '';\n return accumulator + prefix + row.id;\n },\n ''\n )\n )\n ) {\n this.state.selectRowsById = this.selectedRows.reduce(\n (accumulator, row, currentIndex) => {\n const prefix = currentIndex > 0 ? ';' : '';\n return accumulator + prefix + row.id;\n },\n ''\n );\n somethingChanged = true;\n }\n\n if (!this.state.load) {\n this.state.load = true;\n return;\n }\n\n if (somethingChanged) {\n this.#kupManager.debug.logMessage(\n this,\n 'Persisting stateId ' + this.stateId\n );\n this.store.persistState(this.stateId, this.state);\n }\n }\n }\n\n //////////////////////////////\n // End state stuff\n //////////////////////////////\n\n @Element() rootElement: HTMLElement;\n\n /**\n * When true and when a row is missing some columns, the missing cells will be autogenerated.\n * @default false\n */\n @Prop() autoFillMissingCells: boolean = false;\n /**\n * Custom style of the component. For more information: https://smeup.github.io/ketchup/#/customization\n */\n @Prop() customStyle: string = '';\n /**\n * The data of the table.\n */\n @Prop({ mutable: true }) data: KupDataTableDataset;\n /**\n * The density of the rows, defaults at 'medium' and can be also set to 'large' or 'small'.\n */\n @Prop() density: FCellPadding = FCellPadding.DENSE;\n /**\n * Enables drag.\n */\n @Prop({ mutable: true, reflect: true }) dragEnabled: boolean = false;\n /**\n * Enables drop.\n */\n @Prop({ reflect: true }) dropEnabled: boolean = false;\n /**\n * When set to true, editable cells will be rendered using input components.\n * @default false\n */\n @Prop({ mutable: true }) editableData: boolean = false;\n /**\n * Defines the label to show when the table is empty.\n */\n @Prop({ mutable: true }) emptyDataLabel: string = null;\n /**\n * Enables the choice to set formulas on columns by dragging them into different columns.\n * @default true\n */\n @Prop() enableColumnsFormula: boolean = true;\n /**\n * Enables the extracolumns add buttons.\n */\n @Prop() enableExtraColumns: boolean = true;\n /**\n * Enables the merging of columns by dragging them into different columns.\n * @default true\n */\n @Prop() enableMergeColumns: boolean = true;\n /**\n * Enables the sorting of columns by dragging them into different columns.\n */\n @Prop() enableSortableColumns: boolean = true;\n /**\n * Expands groups when set to true.\n */\n @Prop() expandGroups: boolean = false;\n /**\n * List of filters set by the user.\n */\n @Prop({ mutable: true }) filters: GenericFilter = {};\n /**\n * Fixes the given number of columns so that they stay visible when horizontally scrolling the data-table.\n * If grouping is active or the value of the prop is <= 0, this prop will have no effect.\n * Can be combined with fixedRows.\n * @see fixedRows\n */\n @Prop() fixedColumns: number = 0;\n /**\n * Fixes the given number of columns to the right so that they stay visible when horizontally scrolling the data-table.\n * If grouping is active or the value of the prop is <= 0, this prop will have no effect.\n * Can be combined with fixedRows.\n * @see fixedRows\n */\n @Prop() fixedColumnsR: number = 0;\n /**\n * Fixes the given number of rows so that they stay visible when vertically scrolling the data-table.\n * If grouping is active or the value of the prop is <= 0, this prop will have no effect.\n * Can be combined with fixedColumns.\n * @see fixedColumns\n */\n @Prop() fixedRows: number = 0;\n /**\n * Forces cells with long text and a fixed column size to have an ellipsis set on their text.\n * The reflect attribute is mandatory to allow styling.\n */\n @Prop({ reflect: true }) forceOneLine: boolean = false;\n /**\n * When set to true it activates the global filter.\n */\n @Prop() globalFilter: boolean = false;\n /**\n * The value of the global filter.\n */\n @Prop({ reflect: true, mutable: true }) globalFilterValue = '';\n /**\n * How the label of a group must be displayed.\n * For available values [see here]{@link GroupLabelDisplayMode}\n */\n @Prop() groupLabelDisplay: GroupLabelDisplayMode =\n GroupLabelDisplayMode.BOTH;\n /**\n * The list of groups.\n */\n @Prop({ mutable: true }) groups: Array<GroupObject> = [];\n /**\n * When set to true the header will stick on top of the table when scrolling.\n */\n @Prop() headerIsPersistent = true;\n /**\n * Enables insert mode.\n * @default '''\n */\n @Prop() insertMode: KupDataTableInsertMode = '';\n /**\n * When set to true, clicked-on rows will have a visual feedback.\n * @default false\n */\n @Prop() isFocusable: boolean = false;\n /**\n * When set to true, extra rows will be automatically loaded once the last row enters the viewport. When groups are present, the number of rows is referred to groups and not to their content. Paginator is disabled.\n */\n @Prop() lazyLoadRows: boolean = false;\n /**\n * Defines the placeholder character which will be replaced by a line break inside table header cells, normal or sticky.\n */\n @Prop() lineBreakCharacter: string = '\\n';\n /**\n * Sets a maximum limit of new records which can be required by the load more functionality.\n */\n @Prop() loadMoreLimit: number = 1000;\n /**\n * Establish the modality of how many new records will be downloaded.\n *\n * This property is regulated also by loadMoreStep.\n * @see loadMoreStep\n * @see loadMoreLimit\n */\n @Prop() loadMoreMode: LoadMoreMode = LoadMoreMode.PROGRESSIVE_THRESHOLD;\n /**\n * The number of records which will be requested to be downloaded when clicking on the load more button.\n *\n * This property is regulated also by loadMoreMode.\n * @see loadMoreMode\n * @see loadMoreLimit\n */\n @Prop() loadMoreStep: number = 60;\n /**\n * Current selected page set on component load\n */\n @Prop() pageSelected: number = -1;\n /**\n * Sets the position of the paginator. Available positions: top, bottom or both.\n */\n @Prop() paginatorPos: PaginatorPos = PaginatorPos.TOP;\n /**\n * When enabled, the extra whitespaces will be displayed and the font will be set to monospace by default.\n */\n @Prop({ reflect: true }) legacyLook = false;\n /**\n * Sets the possibility to remove the selected column.\n */\n @Prop() removableColumns: boolean = false;\n /**\n * Gives the possibility to resize columns by dragging on their right edge.\n */\n @Prop() resizableColumns: boolean = true;\n /**\n * Sets the actions of the rows.\n */\n @Prop() rowActions: Array<KupDataRowAction>;\n /**\n * Sets the commands for the rows\n */\n @Prop() commands: Array<KupCommand>;\n /**\n * Sets the number of rows per page to display.\n */\n @Prop() rowsPerPage = 10;\n /**\n * Activates the scroll on hover function.\n */\n @Prop() scrollOnHover: boolean = false;\n /**\n * Set the type of the rows selection.\n */\n @Prop() selection: SelectionMode = SelectionMode.SINGLE;\n /**\n * If set to true, displays the button to open the customization panel.\n */\n @Prop() showCustomization: boolean = true;\n /**\n * Enables the delete row button.\n */\n @Prop() showDeleteButton: boolean = false;\n /**\n * Enables the history button.\n */\n @Prop() showHistoryButton: boolean = false;\n /**\n * When set to true enables the column filters.\n */\n @Prop() showFilters: boolean = false;\n /**\n * When set to true shows the footer.\n */\n @Prop() showFooter: boolean = false;\n /**\n * Can be used to customize the grid view of the table.\n */\n @Prop() showGrid: ShowGrid = ShowGrid.ROW;\n /**\n * When set to true enables the column grouping.\n */\n @Prop() showGroups: boolean = false;\n /**\n * Enables rendering of the table header.\n * @namespace KupDataTable.showHeader\n */\n @Prop() showHeader: boolean = true;\n /**\n * If set to true, displays the button to load more records.\n */\n @Prop() showLoadMore: boolean = false;\n /**\n * Defines the current sorting options.\n */\n @Prop({ mutable: true }) sort: Array<SortObject> = [];\n /**\n * If set to true, when a column is dragged to be sorted, the component directly mutates the data.columns property\n * and then fires the event\n */\n @Prop() sortableColumnsMutateData: boolean = true;\n /**\n * When set to true enables the sorting of the columns by clicking on the column header.\n */\n @Prop() sortEnabled = true;\n /**\n * Sets the height of the table.\n */\n @Prop() tableHeight: string = undefined;\n /**\n * Sets the width of the table.\n */\n @Prop() tableWidth: string = undefined;\n /**\n * Defines the current totals options\n */\n @Prop({ mutable: true }) totals: TotalsMap;\n /**\n * Transposes the data of the data table\n */\n @Prop({ mutable: true }) transpose: boolean = false;\n\n /**\n * When set to true, editable cells will be rendered using input components,\n * and update button will appair below the matrix\n * @default false\n */\n @Prop({ mutable: true }) updatableData: boolean = false;\n\n //-------- State --------\n\n @State()\n private lazyLoadCells = false;\n\n @State()\n private currentPage = 1;\n\n @State()\n private currentRowsPerPage = 50;\n\n @State()\n private selectedRows: Array<KupDataTableRow> = [];\n\n @State()\n private selectedColumn: string;\n\n @State()\n private columnMenuAnchor: string = null;\n\n @State()\n private groupState: {\n [index: string]: {\n expanded: boolean;\n };\n } = {};\n\n /**\n * name of the column with the opened total menu\n */\n @State()\n private openedTotalMenu: string = null;\n\n @State()\n private openedCustomSettings: boolean = false;\n\n @State()\n private fontsize: string = 'medium';\n\n @Watch('rowsPerPage')\n rowsPerPageHandler(newValue: number) {\n this.currentRowsPerPage = newValue;\n }\n\n @Watch('expandGroups')\n expandGroupsHandler() {\n if (!this.#isRestoringState) {\n this.recalculateRows();\n // reset group state\n this.groupState = {};\n this.#forceGroupExpansion();\n }\n }\n\n @Watch('filters')\n @Watch('globalFilterValue')\n filtersChanged() {\n this.expandGroupsHandler();\n }\n\n @Watch('sort')\n @Watch('rowsPerPage')\n @Watch('totals')\n @Watch('currentPage')\n @Watch('currentRowsPerPage')\n recalculateRows() {\n if (!this.#isRestoringState) {\n this.#initRows();\n }\n }\n\n @Watch('data')\n identifyAndInitRows() {\n identify(this.getRows());\n this.expandGroupsHandler();\n this.#resetSelectedRows();\n }\n\n @Watch('data')\n decorateAndInitForUpdTable() {\n if (this.data['type'] === 'SmeupDataTable') {\n decorateDataTable(this.data);\n }\n if (this.updatableData) {\n this.#originalDataLoaded = JSON.parse(JSON.stringify(this.data));\n this.selection = this.data.setup?.operations?.delete\n ? SelectionMode.MULTIPLE_CHECKBOX\n : this.selection;\n\n this.#originalDataLoadedMaxId =\n this.#originalDataLoaded.rows?.length > 0\n ? Math.max(\n ...this.#originalDataLoaded.rows.map((r) =>\n parseInt(r.id)\n )\n )\n : -1;\n }\n }\n\n @Watch('groups')\n recalculateRowsAndUndoSelections() {\n if (!this.#isRestoringState) {\n this.recalculateRows();\n // reset group state\n this.groupState = {};\n this.#forceGroupExpansion();\n this.#resetSelectedRows();\n }\n }\n\n @Watch('fixedColumns')\n @Watch('fixedColumnsR')\n @Watch('fixedRows')\n controlFixedRowsColumns() {\n let warnMessage = '';\n\n if (isNaN(this.fixedColumns) || this.fixedColumns < 0) {\n warnMessage += `The value ${this.fixedColumns} set on fixedColumns property is not valid.`;\n }\n\n if (isNaN(this.fixedColumnsR) || this.fixedColumnsR < 0) {\n warnMessage += `The value ${this.fixedColumnsR} set on fixedColumnsR property is not valid.`;\n }\n\n if (isNaN(this.fixedRows) || this.fixedRows < 0) {\n warnMessage += `The value ${this.fixedRows} set on fixedRows property is not valid.`;\n }\n\n if (warnMessage && console) {\n console.warn(warnMessage + 'Any fixed rule will be ignored.');\n }\n }\n\n @Watch('transpose')\n recalculateData() {\n if (this.#initialized) {\n this.#calculateData();\n }\n }\n\n #initialized = false;\n #rows: Array<KupDataTableRow>;\n #rowsLength: number = 0;\n\n #paginatedRows: Array<KupDataTableRow>;\n #paginatedRowsLength: number = 0;\n\n #footer: { [index: string]: any }; // TODO change any\n /**\n * Instance of the KupManager class.\n */\n #kupManager: KupManager = kupManagerInstance();\n #renderedRows: Array<KupDataTableRow> = [];\n\n #loadMoreEventCounter: number = 0;\n\n #loadMoreEventPreviousQuantity: number = 0;\n\n /**\n * Reference for the thead element\n */\n #theadRef: any;\n #tableRef: HTMLTableElement;\n\n /**\n * contains the original data, used in transposed function\n */\n #originalData: KupDataTableDataset = undefined;\n\n /**\n * contains the original data when the component is\n * loaded the first time\n */\n #originalDataLoaded: KupDataDataset = undefined;\n\n /**\n * contains the id greater value in #originalDataLoaded\n */\n #originalDataLoadedMaxId: number;\n\n /**\n * Reference to the working area of the table. This is the below-wrapper reference.\n */\n #tableAreaRef: KupScrollOnHoverElement;\n #stickyTheadRef: any;\n #lastPointerDetails: KupDatatableEventHandlerDetails;\n #customizeTopButtonRef: any;\n #customizeTopPanelRef: HTMLKupCardElement;\n #sizedColumns: KupDataColumn[] = undefined;\n #intObserver: IntersectionObserver = undefined;\n #navBarHeight: number = 0;\n #theadIntersecting: boolean = false;\n #tableIntersecting: boolean = false;\n #isSafariBrowser: boolean = false;\n #isRestoringState: boolean = false;\n #globalFilterTimeout: number;\n #totalMenuCoords: KupDynamicPositionCoordinates = null;\n columnFilterTimeout: number;\n #clickTimeout: ReturnType<typeof setTimeout>[] = [];\n #thRefs: HTMLElement[] = [];\n #rowsRefs: HTMLElement[] = [];\n #oldWidth: number = null;\n #hold: boolean = false;\n #interactableDrag: HTMLElement[] = [];\n #interactableDrop: HTMLElement[] = [];\n #interactableResize: HTMLElement[] = [];\n #interactableTouch: HTMLElement[] = [];\n #dropareaRef: HTMLElement = null;\n #removeDropareaRef: HTMLElement = null;\n #groupsDropareaRef: HTMLElement = null;\n #clickCb: KupManagerClickCb = null;\n #clickCbCustomPanel: KupManagerClickCb = null;\n #clickCbDropCard: KupManagerClickCb = null;\n /**\n * Used to prevent too many resizes callbacks at once.\n */\n #resizeTimeout: number;\n #columnMenuInstance: KupColumnMenu;\n #filtersColumnMenuInstance: FiltersColumnMenu;\n #filtersRowsInstance: FiltersRows;\n #detailCard: HTMLKupCardElement = null;\n #insertCard: HTMLKupCardElement = null;\n #actionsCard: HTMLKupCardElement = null;\n #confirmDeleteCard: HTMLKupCardElement = null;\n #confirmDeleteDialog: HTMLKupDialogElement = null;\n #columnMenuCard: HTMLKupCardElement = null;\n #columnDropCard: HTMLKupCardElement = null;\n #columnDropCardAnchor: HTMLElement = null;\n #dropDownActionCardAnchor: HTMLElement = null;\n #insertCount = 0;\n\n #BUTTON_CANCEL_ID: string = 'cancel';\n #BUTTON_SUBMIT_ID: string = 'submit';\n #FIELDS_FORM_ID: string = 'fieldsForm';\n #MESSAGE_ID: string = 'message';\n #MESSAGE_WRAPPER_ID: string = 'messageWrapper';\n #INSERT_PREFIX = 'insert_';\n\n /**\n * When component unload is complete\n */\n @Event({\n eventName: 'kup-datatable-didunload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidUnload: EventEmitter<KupEventPayload>;\n\n /**\n * When component load is complete\n */\n @Event({\n eventName: 'kup-datatable-didload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidLoad: EventEmitter<KupEventPayload>;\n\n /**\n * When rows selections reset\n */\n @Event({\n eventName: 'kup-datatable-resetselectedrows',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupResetSelectedRows: EventEmitter<KupEventPayload>;\n\n /**\n * When a row is selected\n */\n @Event({\n eventName: 'kup-datatable-rowselected',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupRowSelected: EventEmitter<KupDatatableRowSelectedEventPayload>;\n /**\n * Generic click event on data table.\n */\n @Event({\n eventName: 'kup-datatable-click',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDataTableClick: EventEmitter<KupDatatableClickEventPayload>;\n /**\n * Generic right click event on data table.\n */\n @Event({\n eventName: 'kup-datatable-contextmenu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDataTableContextMenu: EventEmitter<KupDatatableClickEventPayload>;\n /**\n * Generic right click event on a cell in data table.\n */\n @Event({\n eventName: 'kup-datatable-cell-actions-menu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDataTableCellActionsMenu: EventEmitter<KupDatatableClickEventPayload>;\n /**\n * Generic double click event on data table.\n */\n @Event({\n eventName: 'kup-datatable-dblclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDataTableDblClick: EventEmitter<KupDatatableClickEventPayload>;\n /**\n * Emitted by the column menu card when opened/closed or when a kup-card-event is fired.\n */\n @Event({\n eventName: 'kup-datatable-columnmenu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDataTableColumnMenu: EventEmitter<KupDatatableColumnMenuEventPayload>;\n\n @Event({\n eventName: 'kup-datatable-loadmoreclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupLoadMoreClick: EventEmitter<KupDatatableLoadMoreClickEventPayload>;\n /**\n * Event fired when columns are moved (sorted).\n */\n @Event({\n eventName: 'kup-datatable-columnmove',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupColumnMove: EventEmitter<KupDatatableColumnMoveEventPayload>;\n /**\n * Event fired when columns are removed (set to hidden).\n */\n @Event({\n eventName: 'kup-datatable-columnremove',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupColumnRemove: EventEmitter<KupDatatableColumnRemoveEventPayload>;\n /**\n * Event fired when the delete row button is pressed.\n */\n @Event({\n eventName: 'kup-datatable-delete-row',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDeleteRow: EventEmitter<KupDatatableDeleteRowEventPayload>;\n /**\n * Event fired when the save button is pressed.\n */\n @Event({\n eventName: 'kup-datatable-save',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupSave: EventEmitter<KupDatatableInsertRowEventPayload>;\n /**\n * Event fired when the insert row confirm button is pressed.\n */\n @Event({\n eventName: 'kup-datatable-insert-row',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupInsertRow: EventEmitter<KupDatatableInsertRowEventPayload>;\n\n /**\n * Event fired when the history confirm button is pressed.\n */\n @Event({\n eventName: 'kup-datatable-history',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupHistory: EventEmitter<KupDatatableHistoryEventPayload>;\n\n /**\n * Event fired when the history confirm button is pressed.\n */\n @Event({\n eventName: 'kup-datatable-rowaction-item-click',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupRowActionItemClick: EventEmitter<KupDatatableRowActionItemClickEventPayload>;\n\n /**\n * Event fired when the cell action icon is pressed\n */\n @Event({\n eventName: 'kup-datatable-cell-action-icon-click',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupCellActionIconClick: EventEmitter<KupDatatableClickEventPayload>;\n\n /**\n * Event fired when the user click on update button or on one\n * of the command buttons.\n * Update button and commands are visible when the props updatableData is true\n */\n @Event({\n eventName: 'kup-datatable-update',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupUpdate: EventEmitter<KupDatatableUpdatePayload>;\n\n /**\n * Closes any opened column menu.\n */\n @Method()\n async closeColumnMenu(): Promise<void> {\n this.columnMenuAnchor = null;\n if (this.#columnMenuCard) {\n this.#columnMenuCard.data = null;\n }\n this.#columnMenuInstance.close(this.#columnMenuCard);\n this.kupDataTableColumnMenu.emit({\n comp: this,\n id: this.rootElement.id,\n card: this.#columnMenuCard,\n event: null,\n open: false,\n });\n }\n\n /**\n * Collapses all groups.\n */\n @Method()\n async collapseAll(): Promise<void> {\n this.expandGroups = false;\n }\n /**\n * This method will delete rows by id from the data table dataset.\n * @param {string[]} ids - Array of row ids to delete.\n * @returns {Promise<Array<KupDataTableRow>>} Deleted rows.\n */\n @Method()\n async deleteRows(ids: string[] = []): Promise<Array<KupDataTableRow>> {\n const deletedRows: KupDataTableRow[] = [];\n const newRows: KupDataTableRow[] = [];\n const currentRows = this.getRows();\n for (let index = 0; index < currentRows.length; index++) {\n const row = currentRows[index];\n if (ids.includes(row.id)) {\n const r = row.clonedFrom ? row.clonedFrom : row;\n deletedRows.push(r);\n if (this.selectedRows.includes(row)) {\n this.selectedRows.splice(this.selectedRows.indexOf(row), 1);\n }\n } else {\n newRows.push(row);\n }\n }\n if (deletedRows.length > 0) {\n this.data.rows = newRows;\n await this.refresh(true);\n }\n return deletedRows;\n }\n\n /**\n * Closes the insert new record card (called by backend, on success)\n */\n @Method()\n async closeInsertCard() {\n if (this.#insertCard) {\n this.#insertCard.remove();\n this.#insertCard = null;\n }\n }\n /**\n * Closes the delete confirm card (called by backend, on success)\n */\n @Method()\n async closeConfirmDeleteCard() {\n if (this.#confirmDeleteDialog) {\n this.#confirmDeleteDialog.close();\n this.#confirmDeleteCard = null;\n this.#confirmDeleteDialog = null;\n }\n }\n\n /**\n * Returns cards and sub components\n */\n @Method()\n async getCards(): Promise<any> {\n const obj = {};\n\n if (this.#insertCard) {\n obj['insertCard'] = {\n el: this.#insertCard,\n messageWrapper: this.#insertCard.querySelector(\n '#' + this.#MESSAGE_WRAPPER_ID\n ),\n message: this.#insertCard.querySelector('#' + this.#MESSAGE_ID),\n submitButton: this.#insertCard.querySelector(\n '#' + this.#BUTTON_SUBMIT_ID\n ),\n cancelButton: this.#insertCard.querySelector(\n '#' + this.#BUTTON_CANCEL_ID\n ),\n form: this.#insertCard.querySelector(\n '#' + this.#FIELDS_FORM_ID\n ),\n };\n }\n if (this.#confirmDeleteCard) {\n obj['confirmDeleteCard'] = {\n el: this.#confirmDeleteCard,\n messageWrapper: this.#insertCard.querySelector(\n '#' + this.#MESSAGE_WRAPPER_ID\n ),\n message: this.#confirmDeleteCard.querySelector(\n '#' + this.#MESSAGE_ID\n ),\n submitButton: this.#confirmDeleteCard.querySelector(\n '#' + this.#BUTTON_SUBMIT_ID\n ),\n cancelButton: this.#confirmDeleteCard.querySelector(\n '#' + this.#BUTTON_CANCEL_ID\n ),\n };\n }\n /*\n #detailCard: HTMLKupCardElement = null;\n #columnMenuCard: HTMLKupCardElement = null;\n #columnDropCard: HTMLKupCardElement = null;\n */\n return obj;\n }\n\n /**\n * Adds a new row to the list data\n * @param row new row\n */\n @Method()\n async insertNewRow(row: KupDataTableRow, unshift: boolean = false) {\n if (row) {\n if (unshift) {\n this.data.rows.unshift(row);\n } else {\n this.data.rows.push(row);\n }\n await this.refresh(true);\n }\n }\n\n /**\n * Expands all groups.\n */\n @Method()\n async expandAll(): Promise<void> {\n this.expandGroups = true;\n }\n /**\n * Used to retrieve component's props values.\n * @param {boolean} descriptions - When provided and true, the result will be the list of props with their description.\n * @returns {Promise<GenericObject>} List of props as object, each key will be a prop.\n */\n @Method()\n async getProps(descriptions?: boolean): Promise<GenericObject> {\n return getProps(this, KupDataTableProps, descriptions);\n }\n /**\n * This method will get the selected rows of the component.\n */\n @Method()\n async getSelectedRows(): Promise<Array<KupDataTableRow>> {\n const selRows: KupDataTableRow[] = [];\n this.selectedRows.forEach((row) => {\n if (row.clonedFrom) {\n selRows.push(row.clonedFrom);\n } else {\n selRows.push(row);\n }\n });\n return selRows;\n }\n /**\n * Hides the given column.\n * @param {KupDataColumn} column - Column to hide.\n */\n @Method()\n async hideColumn(column: KupDataColumn): Promise<void> {\n this.#kupManager.data.column.hide(this.data, [column.name]);\n this.kupColumnRemove.emit({\n comp: this,\n id: this.rootElement.id,\n column: column,\n });\n this.refresh();\n }\n /**\n * Adds/subtracts the input number from the first group's depth level.\n */\n\n @Method()\n async setGroupExpansionByDepth(modifier: number) {\n const toStream = () => {\n const streamlined: KupDataTableRow[] = [];\n for (let index = 0; index < this.#paginatedRows.length; index++) {\n const row = this.#paginatedRows[index];\n const group = row.group;\n if (group) {\n recursive(row);\n }\n\n function recursive(row: KupDataTableRow) {\n const group = row.group;\n streamlined.push(row);\n for (\n let index = 0;\n group?.children && index < group.children.length;\n index++\n ) {\n recursive(group.children[index]);\n }\n }\n }\n return streamlined;\n };\n const handleChildren = (\n row: KupDataTableRow,\n expand: boolean,\n maxDepth?: number,\n depth?: number\n ) => {\n const group = row.group;\n\n if (row.hasOwnProperty('group')) {\n const shouldExpand = depth < maxDepth;\n\n group.expanded = shouldExpand;\n this.groupState[group.id] = { expanded: shouldExpand };\n const paginated = paginatedStream?.find(\n (r) => r.group?.id === group.id\n )?.group;\n if (paginated) {\n paginated.expanded = shouldExpand;\n }\n if (group.children) {\n for (\n let index = 0;\n index < group.children.length;\n index++\n ) {\n const child = group.children[index];\n handleChildren(child, expand, maxDepth, depth + 1);\n }\n }\n }\n };\n const getGroupDepth = (): number => {\n const firstGroup = this.#rows[0];\n let maxDepth = 0;\n\n const traverseGroup = (\n row: KupDataTableRow,\n currentDepth: number\n ): void => {\n const group = row.group;\n if (row.hasOwnProperty('group')) {\n if (group.expanded) {\n maxDepth = Math.max(maxDepth, currentDepth);\n maxDepth += 1;\n }\n traverseGroup(group.children[0], currentDepth + 1);\n }\n };\n\n if (firstGroup) {\n traverseGroup(firstGroup, 0);\n }\n\n return maxDepth;\n };\n const paginatedStream = toStream();\n\n let maxDepth = getGroupDepth() + modifier;\n\n for (let index = 0; index < this.#rows.length; index++) {\n const row = this.#rows[index];\n const group = row.group;\n if (group) {\n handleChildren(row, false, maxDepth, 0);\n }\n }\n\n this.#adjustGroupState();\n this.refresh();\n }\n\n /**\n * Invokes the KupData API for column creation, then refreshes the component in case no errors were catched.\n * @param {KupDataNewColumnTypes} type - Type of the column creation.\n * @param {KupDataNewColumnOptions} options - Options of the creation.\n * @returns {string|KupDataColumn} Returns the new column created or a string containing the error message if something went wrong.\n */\n @Method()\n async newColumn(\n type: KupDataNewColumnTypes,\n options: KupDataNewColumnOptions\n ): Promise<string | KupDataColumn> {\n const result = this.#kupManager.data.column.new(\n this.data,\n type,\n options\n );\n this.refresh();\n\n return result;\n }\n /**\n * Opens the column menu of the given column.\n * @param {string} column - Name of the column.\n */\n @Method()\n async openColumnMenu(column: string): Promise<void> {\n this.columnMenuAnchor = column;\n if (!this.#columnMenuCard) {\n this.#columnMenuCard = document.createElement('kup-card');\n this.#columnMenuCard.isMenu = true;\n this.#columnMenuCard.layoutNumber = 12;\n this.#columnMenuCard.sizeX = 'auto';\n this.#columnMenuCard.sizeY = 'auto';\n this.#columnMenuCard.addEventListener(\n 'kup-card-click',\n (e: CustomEvent<KupEventPayload>) => {\n this.kupDataTableColumnMenu.emit({\n comp: this,\n id: this.rootElement.id,\n card: this.#columnMenuCard,\n event: e,\n open: this.#columnMenuCard.menuVisible,\n });\n }\n );\n this.#columnMenuCard.addEventListener(\n 'kup-card-event',\n (e: CustomEvent<KupCardEventPayload>) => {\n this.#columnMenuInstance.eventHandlers(e, this);\n this.kupDataTableColumnMenu.emit({\n comp: this,\n id: this.rootElement.id,\n card: this.#columnMenuCard,\n event: e,\n open: this.#columnMenuCard.menuVisible,\n });\n }\n );\n }\n this.#columnMenuCard.setAttribute('data-column', column);\n this.#columnMenuCard.data = this.#columnMenuInstance.prepData(\n this,\n getColumnByName(this.getVisibleColumns(), column)\n );\n this.#columnMenuInstance.open(this, column);\n this.#columnMenuInstance.reposition(this, this.#columnMenuCard);\n this.kupDataTableColumnMenu.emit({\n comp: this,\n id: this.rootElement.id,\n card: this.#columnMenuCard,\n event: null,\n open: true,\n });\n }\n /**\n * This method is used to trigger a new render of the component.\n */\n @Method()\n async refresh(recalcRows?: boolean): Promise<void> {\n if (recalcRows) {\n this.#initRows();\n }\n forceUpdate(this);\n }\n /**\n * This method is invoked by KupManager whenever the component changes size.\n */\n @Method()\n async resizeCallback(): Promise<void> {\n if (\n this.lazyLoadCells &&\n this.rootElement.clientWidth !== this.#oldWidth\n ) {\n window.clearTimeout(this.#resizeTimeout);\n this.#resizeTimeout = window.setTimeout(() => this.refresh(), 300);\n }\n }\n\n /**\n * Sets the cell value in a table cell.\n * @param {string} columnName - Name of the column.\n * @param {string} rowId - Id of the row.\n * @param {string} value - Value to set.\n */\n @Method()\n async setCellValue(\n columnName: string,\n rowId: string,\n value: string\n ): Promise<void> {\n const column = getColumnByName(this.data.columns, columnName);\n if (!column) {\n return;\n }\n const row = this.#getRow(rowId);\n if (!row) {\n return;\n }\n const cell = row.cells[columnName];\n if (!cell) {\n return;\n }\n cell.value = value;\n cell.displayedValue = null;\n if (cell.data) {\n cell.data.key = new Date().getTime() + column.name;\n cell.data.initialValue = value;\n }\n\n this.refresh();\n }\n\n /**\n * Sets the focus on an editable table cell.\n * @param {string} column - Name of the column.\n * @param {string} rowId - Id of the row.\n */\n @Method()\n async setFocus(column: string, rowId: string): Promise<void> {\n const cells = this.rootElement.shadowRoot.querySelectorAll(\n 'td[data-column=\"' + column + '\"]'\n );\n for (let index = 0; cells && index < cells.length; index++) {\n const cell = cells[index];\n if (cell['data-row'] && cell['data-row'].id == rowId) {\n const input = cell.querySelector('input');\n if (input) {\n input.focus();\n } else {\n const kupInput = cell.querySelector('.hydrated');\n if (kupInput) {\n try {\n (kupInput as any).setFocus();\n } catch (error) {}\n }\n }\n }\n }\n }\n /**\n * Sets the props to the component.\n * @param {GenericObject} props - Object containing props that will be set to the component.\n */\n @Method()\n async setProps(props: GenericObject): Promise<void> {\n setProps(this, KupDataTableProps, props);\n }\n\n /**\n * This method will set the selected rows of the component.\n * @param {string|number[]} rowsIdentifiers - Array of ids (dataset) or indexes (rendered rows).\n * @param {boolean} emitEvent - The event will always be emitted unless emitEvent is set to false.\n */\n @Method()\n async setSelectedRows(\n rowsIdentifiers: string[] | number[],\n emitEvent?: boolean\n ): Promise<void> {\n this.selectedRows = [];\n for (let index = 0; index < rowsIdentifiers.length; index++) {\n const id = rowsIdentifiers[index];\n const row = this.#getRow(id);\n if (row) {\n this.selectedRows.push(row);\n }\n }\n\n if (emitEvent !== false) {\n this.kupRowSelected.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n clickedColumn: null,\n clickedRow: null,\n });\n }\n }\n\n #closeDropCard() {\n this.#kupManager.dynamicPosition.stop(\n this.#columnDropCard as KupDynamicPositionElement\n );\n this.#kupManager.removeClickCallback(this.#clickCbDropCard);\n this.#columnDropCard.remove();\n this.#columnDropCard = null;\n }\n\n #createDropCard(starter: KupDataColumn, receiving: KupDataColumn) {\n if (this.#columnDropCard) {\n this.#closeDropCard();\n }\n this.#columnDropCard = document.createElement('kup-card');\n this.#columnDropCard.data = {\n options: {\n data: this.data,\n enableFormula: this.enableColumnsFormula,\n enableMerge: this.enableMergeColumns,\n enableMove: this.enableSortableColumns,\n receivingColumn: receiving,\n starterColumn: starter,\n formulaCb: () => {\n this.#closeDropCard();\n this.refresh();\n },\n mergeCb: () => {\n this.newColumn(KupDataNewColumnTypes.CONCATENATE, {\n columns: [receiving.name, starter.name],\n });\n this.#closeDropCard();\n },\n moveCb: () => {\n this.#handleColumnSort(receiving, starter);\n this.#closeDropCard();\n },\n } as KupCardColumnDropMenuOptions,\n };\n this.#columnDropCard.layoutFamily = KupCardFamily.BUILT_IN;\n this.#columnDropCard.layoutNumber = 3;\n this.#columnDropCard.isMenu = true;\n this.#columnDropCard.sizeX = '280px';\n this.#columnDropCard.sizeY = 'auto';\n this.#kupManager.dynamicPosition.register(\n this.#columnDropCard,\n this.#columnDropCardAnchor as KupDynamicPositionAnchor,\n 0,\n KupDynamicPositionPlacement.AUTO,\n true\n );\n this.#kupManager.dynamicPosition.start(\n this.#columnDropCard as unknown as KupDynamicPositionElement\n );\n this.#clickCbDropCard = {\n cb: () => {\n this.#closeDropCard();\n },\n el: this.#columnDropCard,\n };\n this.#kupManager.addClickCallback(this.#clickCbDropCard, true);\n this.#columnDropCard.menuVisible = true;\n }\n\n #calculateData() {\n if (!this.transpose) {\n // restore\n if (this.#originalData) {\n this.data = { ...this.#originalData };\n }\n } else {\n // transpose\n this.#setTransposedData();\n }\n }\n\n #getRow(id: string | number): KupDataRow {\n if (this.#isGrouping() && typeof id === 'string') {\n return this.#_getRow(id, this.#paginatedRows);\n } else {\n return this.#_getRow(id, this.#rows);\n }\n }\n\n #_getRow(id: string | number, rows: KupDataTableRow[]): KupDataTableRow {\n if (!rows || rows.length == 0) {\n return null;\n }\n if (typeof id === 'number') {\n return rows[id];\n } else {\n for (let i = 0; i < rows.length; i++) {\n let r = rows[i];\n if (r.id === id) {\n return r;\n }\n if (r.group) {\n r = this.#_getRow(id, r.group.children);\n if (r) {\n return r;\n }\n }\n }\n }\n return null;\n }\n\n #getTransposedData(column?: string): KupDataDataset {\n if (column) {\n this.filters = {};\n }\n return this.#kupManager.data.transpose(this.data, column);\n }\n\n #setTransposedData(): void {\n // transpose\n this.#originalData = { ...this.data };\n if (this.data.columns.length > 0) {\n this.data = this.#getTransposedData(this.data.columns[0].name);\n }\n }\n\n #switchToTotalsMatrix(): void {\n if (this.#rows.length === 0 || !this.#rows[0].group) return;\n // calc totals matrix data\n const totalsMatrixData: KupDataDataset = {};\n // calc columns id\n // note that the sorting of the columns depends on the totals selection\n // the first column is the one that is selected first in the totals, and so on...\n const ids: Array<string> = [];\n ids.push(this.#rows[0].group.column);\n Object.keys(this.#rows[0].group.totals).forEach((columnKey) => {\n if (this.#rows[0].group.column !== columnKey) ids.push(columnKey);\n });\n // calc columns\n const totalsMatrixColumns: Array<KupDataColumn> = [];\n ids.forEach((id) => {\n this.data.columns.forEach((column) => {\n if (column.name === id) {\n const currentColumn = { ...column };\n const totalMode = this.totals[currentColumn.name];\n if (totalMode) {\n if (totalMode.startsWith(TotalMode.MATH)) {\n currentColumn.title =\n TotalLabel[TotalMode.MATH] +\n ' ' +\n currentColumn.title;\n } else {\n const totalModeKey = Object.keys(TotalMode).find(\n (key) => TotalMode[key] === totalMode\n );\n if (totalModeKey) {\n currentColumn.title =\n TotalLabel[totalModeKey] +\n ' ' +\n currentColumn.title;\n } else {\n currentColumn.title =\n totalMode + ' ' + currentColumn.title;\n }\n }\n this.#setObjForTotalsMatrix(currentColumn, this.totals);\n }\n totalsMatrixColumns.push(currentColumn);\n }\n });\n });\n // set columns\n totalsMatrixData.columns = totalsMatrixColumns;\n // calc rows\n const totalsMatrixRows: Array<KupDataTableRow> = [];\n let index = 0;\n this.#rows.forEach((row) => {\n const cells: KupDataTableRowCells = {};\n ids.forEach((id) => {\n let totalValue = row.group.totals[id];\n if (!totalValue) {\n totalValue = row.group.id;\n }\n if (this.#kupManager.dates.isIsoDate(totalValue)) {\n totalValue = this.#kupManager.dates.format(totalValue);\n }\n cells[id] = {\n value: String(totalValue),\n };\n });\n totalsMatrixRows.push({\n id: String(index),\n cells,\n });\n index++;\n });\n // set rows\n totalsMatrixData.rows = totalsMatrixRows;\n // reset groups\n this.groups = [];\n // update data\n this.data = { ...totalsMatrixData };\n // calc totals\n // distinct becomes count\n // count becomes sum\n const updatedTotals: TotalsMap = {};\n Object.keys(this.totals).forEach((key) => {\n switch (this.totals[key]) {\n case TotalMode.DISTINCT:\n updatedTotals[key] = TotalMode.COUNT;\n break;\n case TotalMode.COUNT:\n updatedTotals[key] = TotalMode.SUM;\n break;\n default:\n updatedTotals[key] = this.totals[key];\n break;\n }\n });\n // update totals\n this.totals = { ...updatedTotals };\n }\n\n // TODO\n // this is momentary\n #setObjForTotalsMatrix(column: KupDataColumn, totals: TotalsMap): void {\n const obj = column.obj;\n const totalMode = totals[column.name];\n if (this.#kupManager.objects.isDate(obj)) {\n // check if min or max totals mode\n if (totalMode === TotalMode.MAX || totalMode === TotalMode.MIN) {\n return;\n }\n } else if (this.#kupManager.objects.isNumber(obj)) {\n // check if percentage\n if (obj.p && obj.p.toUpperCase() === 'P') {\n if (\n totalMode !== TotalMode.COUNT &&\n totalMode !== TotalMode.DISTINCT\n ) {\n return;\n }\n }\n }\n // force obj number\n column.obj = {\n t: 'NR',\n p: '',\n k: '',\n };\n if (column.icon) {\n delete column.icon;\n }\n }\n\n #stickyHeaderPosition = () => {\n if (this.#tableRef) {\n if (this.#tableIntersecting) {\n if (!this.#theadIntersecting) {\n this.#updateStickyHeaderSize();\n this.#stickyTheadRef.classList.add('activated');\n } else {\n this.#stickyTheadRef.classList.remove('activated');\n }\n } else {\n this.#stickyTheadRef.classList.remove('activated');\n }\n }\n };\n\n #updateStickyHeaderSize() {\n const navBar = document.querySelector('.header') as HTMLElement;\n const topBar = document.querySelector('.topbar') as HTMLElement;\n if (navBar) {\n this.#navBarHeight = navBar.clientHeight;\n } else {\n this.#navBarHeight = 0;\n }\n if (topBar) {\n this.#navBarHeight += topBar.clientHeight;\n }\n if (this.#stickyTheadRef) {\n this.#stickyTheadRef.style.top = this.#navBarHeight + 'px';\n const widthTable = this.#tableAreaRef.offsetWidth;\n this.#stickyTheadRef.style.maxWidth = widthTable + 'px';\n const thCollection: NodeListOf<HTMLElement> =\n this.#theadRef.querySelectorAll('th');\n const thStickyCollection: NodeListOf<HTMLElement> =\n this.#stickyTheadRef.querySelectorAll('th-sticky');\n for (let i = 0; i < thCollection.length; i++) {\n const widthTH = thCollection[i].offsetWidth;\n thStickyCollection[i].style.width = widthTH + 'px';\n }\n }\n }\n\n #setObserver() {\n const callback: IntersectionObserverCallback = (\n entries: IntersectionObserverEntry[]\n ) => {\n entries.forEach((entry) => {\n if (entry.target.tagName === 'TR') {\n if (entry.isIntersecting) {\n this.#kupManager.debug.logMessage(\n this,\n 'Last row entering the viewport, loading more elements.'\n );\n const delta =\n this.#rows.length - this.currentRowsPerPage;\n if (delta < this.loadMoreStep) {\n this.currentRowsPerPage += delta;\n } else {\n this.currentRowsPerPage += this.loadMoreStep;\n }\n entry.target.classList.remove('last-row');\n }\n }\n if (entry.target.tagName === 'THEAD') {\n if (entry.isIntersecting) {\n this.#theadIntersecting = true;\n } else if (\n entry.boundingClientRect.bottom > this.#navBarHeight\n ) {\n //If the thead is not intersecting but it still is inside the viewport, is to be considered intersected\n this.#theadIntersecting = true;\n } else {\n this.#theadIntersecting = false;\n }\n }\n if (entry.target.tagName === 'TABLE') {\n if (entry.isIntersecting) {\n this.#tableIntersecting = true;\n } else {\n this.#tableIntersecting = false;\n }\n }\n if (\n this.tableHeight === undefined &&\n this.tableWidth === undefined &&\n this.headerIsPersistent\n ) {\n this.#stickyHeaderPosition();\n }\n });\n };\n const options: IntersectionObserverInit = {\n threshold: 0,\n rootMargin: '-' + this.#navBarHeight + 'px 0px 0px 0px',\n };\n this.#intObserver = new IntersectionObserver(callback, options);\n }\n\n #didLoadInteractables() {\n this.#interactableTouch.push(this.#tableRef);\n const tapCb = (e: PointerEvent) => {\n if (this.#hold) {\n this.#hold = false;\n return;\n }\n switch (e.button) {\n // left click\n case 0:\n // Note: event must be cloned\n // otherwise inside setTimeout will be exiting the Shadow DOM scope(causing loss of information, including target).\n const clone: GenericObject = {};\n for (const key in e) {\n clone[key] = e[key];\n }\n\n // in case an icon is clicked\n if (\n (e.target as HTMLElement).classList.contains(\n 'f-image__icon'\n )\n ) {\n const details = this.#getEventDetails(\n this.#kupManager.getEventPath(\n e.target,\n this.rootElement\n ),\n e\n );\n\n // in case a cell action icon is clicked\n if (\n details?.cell?.obj?.t !== 'J4' &&\n details?.cell?.obj?.p !== 'ICO'\n ) {\n break;\n }\n }\n\n this.#clickTimeout.push(\n setTimeout(() => {\n this.kupDataTableClick.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.#clickHandler(\n clone as PointerEvent\n ),\n });\n }, 300)\n );\n break;\n // right click\n case 2:\n this.kupDataTableContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.#contextMenuHandler(e),\n });\n break;\n }\n };\n const doubletapCb = (e: PointerEvent) => {\n switch (e.button) {\n // left click\n case 0:\n for (\n let index = 0;\n index < this.#clickTimeout.length;\n index++\n ) {\n clearTimeout(this.#clickTimeout[index]);\n this.#kupManager.debug.logMessage(\n this,\n 'Cleared clickHandler timeout(' +\n this.#clickTimeout[index] +\n ').'\n );\n }\n this.#clickTimeout = [];\n this.kupDataTableDblClick.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.#dblClickHandler(e),\n });\n break;\n }\n };\n const holdCb = (e: PointerEvent) => {\n if (e.pointerType === 'pen' || e.pointerType === 'touch') {\n this.#hold = true;\n this.kupDataTableContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.#contextMenuHandler(e),\n });\n }\n };\n this.#kupManager.interact.on(\n this.#tableRef,\n KupPointerEventTypes.TAP,\n tapCb\n );\n this.#kupManager.interact.on(\n this.#tableRef,\n KupPointerEventTypes.DOUBLETAP,\n doubletapCb\n );\n this.#kupManager.interact.on(\n this.#tableRef,\n KupPointerEventTypes.HOLD,\n holdCb\n );\n }\n\n #didRenderInteractables() {\n if (this.showGroups) {\n if (!this.#interactableDrop.includes(this.#groupsDropareaRef)) {\n this.#interactableDrop.push(this.#groupsDropareaRef);\n this.#kupManager.interact.dropzone(\n this.#groupsDropareaRef,\n {\n accept: `[${kupDraggableColumnAttr}]`,\n },\n null,\n {\n drop: (e: DropEvent) => {\n const draggedTh = e.relatedTarget as HTMLElement;\n const grouped = getColumnByName(\n this.getColumns(),\n draggedTh.dataset.column\n );\n this.#handleColumnGroup(grouped);\n this.#tableRef.removeAttribute(kupDragActiveAttr);\n },\n }\n );\n }\n }\n if (this.removableColumns) {\n if (!this.#interactableDrop.includes(this.#removeDropareaRef)) {\n this.#interactableDrop.push(this.#removeDropareaRef);\n this.#kupManager.interact.dropzone(\n this.#removeDropareaRef,\n {\n accept: `[${kupDraggableColumnAttr}]`,\n },\n null,\n {\n drop: (e: DropEvent) => {\n const draggedTh = e.relatedTarget as HTMLElement;\n const deleted = getColumnByName(\n this.getColumns(),\n draggedTh.dataset.column\n );\n this.hideColumn(deleted);\n this.#tableRef.removeAttribute(kupDragActiveAttr);\n },\n }\n );\n }\n }\n if (\n this.enableSortableColumns ||\n this.enableMergeColumns ||\n this.enableColumnsFormula\n ) {\n const dataCb: KupDragDataTransferCallback = (e) => {\n const draggable = e.target as KupDraggableElement;\n return {\n cell: null,\n column: getColumnByName(\n this.getVisibleColumns(),\n draggable.dataset.column\n ),\n id: this.rootElement.id,\n multiple: !!(\n this.selection === SelectionMode.MULTIPLE ||\n this.selection === SelectionMode.MULTIPLE_CHECKBOX\n ),\n row: null,\n selectedRows: this.selectedRows,\n };\n };\n const dropCb = (e: DropEvent) => {\n const onlyMerge = !!(\n !this.enableSortableColumns &&\n !this.enableColumnsFormula &&\n this.enableMergeColumns\n );\n const onlySort = !!(\n this.enableSortableColumns &&\n !this.enableColumnsFormula &&\n !this.enableMergeColumns\n );\n const draggable = e.relatedTarget as KupDraggableElement;\n const isSameComponent = !!(\n this.rootElement.id === draggable.kupDragDrop.id\n );\n const starter = draggable.kupDragDrop.column;\n const receiving = getColumnByName(\n this.getColumns(),\n e.target.dataset.column\n );\n this.#columnDropCardAnchor = e.target as HTMLElement;\n if (isSameComponent && receiving && starter) {\n if (onlySort) {\n this.#handleColumnSort(receiving, starter);\n } else if (onlyMerge) {\n this.newColumn(KupDataNewColumnTypes.CONCATENATE, {\n columns: [receiving.name, starter.name],\n });\n } else {\n this.#createDropCard(starter, receiving);\n }\n }\n this.#tableRef.removeAttribute(kupDragActiveAttr);\n };\n const startCb = (e: InteractEvent) => {\n const draggable = e.target as KupDraggableElement;\n this.#hideShowColumnDropArea(true, draggable);\n };\n const endCb = () => {\n this.#hideShowColumnDropArea(false);\n };\n const dropCallbacks: KupDropCallbacks = {\n drop: dropCb,\n };\n const dragCallbacks: KupDragCallbacks = {\n start: startCb,\n end: endCb,\n };\n for (let index = 0; index < this.#thRefs.length; index++) {\n const th = this.#thRefs[index];\n if (th && !this.#interactableDrag.includes(th)) {\n this.#interactableDrag.push(th);\n this.#kupManager.interact.dropzone(\n th,\n {\n accept: `[${kupDraggableColumnAttr}]`,\n },\n null,\n dropCallbacks\n );\n this.#kupManager.interact.draggable(\n th,\n {\n cursorChecker() {\n return null;\n },\n ignoreFrom: '.header-cell__drag-handler',\n },\n {\n callback: dataCb,\n },\n KupDragEffect.CLONE,\n dragCallbacks\n );\n }\n }\n }\n if (this.resizableColumns) {\n const moveCb = (e: ResizeEvent) => {\n const column = getColumnByName(\n this.getVisibleColumns(),\n (e.target as HTMLElement).dataset.column\n );\n column.size = e.rect.width + 'px';\n this.refresh();\n };\n const callbacks: KupResizeCallbacks = {\n move: moveCb,\n };\n for (let index = 0; index < this.#thRefs.length; index++) {\n const th = this.#thRefs[index];\n if (th && !this.#interactableResize.includes(th)) {\n this.#interactableResize.push(th);\n this.#kupManager.interact.resizable(\n th,\n {\n allowFrom: '.header-cell__drag-handler',\n edges: {\n left: false,\n right: true,\n bottom: false,\n top: false,\n },\n ignoreFrom: '.header-cell__content',\n },\n callbacks\n );\n }\n }\n }\n if (this.dragEnabled) {\n for (let index = 0; index < this.#rowsRefs.length; index++) {\n const row = this.#rowsRefs[index];\n const dataCb: KupDragDataTransferCallback = () => {\n const cell = this.#lastPointerDetails?.cell;\n const column = this.#lastPointerDetails?.column;\n const row = this.#lastPointerDetails?.row;\n if (!cell) {\n this.#kupManager.debug.logMessage(\n this,\n \"Couldn't find cell to retrieve drag informations!\",\n KupDebugCategory.WARNING\n );\n return;\n }\n return {\n cell,\n column,\n id: this.rootElement.id,\n multiple: !!(\n this.selection === SelectionMode.MULTIPLE ||\n this.selection === SelectionMode.MULTIPLE_CHECKBOX\n ),\n row,\n selectedRows: this.selectedRows,\n };\n };\n if (row && !this.#interactableDrag.includes(row)) {\n this.#interactableDrag.push(row);\n this.#kupManager.interact.draggable(\n row,\n {\n allowFrom: 'td',\n cursorChecker() {\n return null;\n },\n },\n {\n callback: dataCb,\n },\n KupDragEffect.BADGE\n );\n }\n }\n }\n if (this.dropEnabled) {\n const dataCb: KupDropDataTransferCallback = () => {\n const cell = this.#lastPointerDetails?.cell;\n const column = this.#lastPointerDetails?.column;\n const row = this.#lastPointerDetails?.row;\n if (!cell) {\n this.#kupManager.debug.logMessage(\n this,\n \"Couldn't find cell to retrieve dropzone informations!\",\n KupDebugCategory.WARNING\n );\n return;\n }\n return {\n cell,\n column,\n id: this.rootElement.id,\n row,\n };\n };\n for (let index = 0; index < this.#rowsRefs.length; index++) {\n const row = this.#rowsRefs[index];\n if (row && !this.#interactableDrop.includes(row)) {\n this.#interactableDrop.push(row);\n this.#kupManager.interact.dropzone(\n row,\n {\n accept: `[${kupDraggableCellAttr}]`,\n },\n {\n callback: dataCb,\n dispatcher: this.rootElement,\n type: KupDropEventTypes.DATATABLE,\n }\n );\n }\n }\n }\n }\n\n #didLoadObservers() {\n if (\n this.headerIsPersistent &&\n this.tableHeight === undefined &&\n this.tableWidth === undefined\n ) {\n this.#intObserver.observe(this.#tableRef);\n this.#intObserver.observe(this.#theadRef);\n }\n }\n\n #didRenderObservers() {\n if (this.#paginatedRowsLength < this.#rowsLength && this.lazyLoadRows) {\n this.#intObserver.observe(\n this.#rowsRefs[this.#paginatedRowsLength - 1]\n );\n }\n }\n\n #didLoadEventHandling() {\n this.#tableAreaRef.addEventListener('scroll', () =>\n this.#scrollStickyHeader()\n );\n }\n\n #scrollStickyHeader() {\n if (!this.#stickyTheadRef) {\n return;\n }\n this.#stickyTheadRef.scrollLeft = this.#tableAreaRef.scrollLeft;\n }\n\n #checkScrollOnHover() {\n if (!this.#kupManager.scrollOnHover.isRegistered(this.#tableAreaRef)) {\n if (\n this.scrollOnHover &&\n this.tableHeight === undefined &&\n this.tableWidth === undefined\n ) {\n this.#kupManager.scrollOnHover.register(this.#tableAreaRef);\n }\n } else {\n if (\n !this.scrollOnHover &&\n (this.tableHeight !== undefined ||\n this.tableWidth !== undefined)\n ) {\n this.#kupManager.scrollOnHover.unregister(this.#tableAreaRef);\n }\n }\n }\n\n #customizePanelPosition() {\n if (\n this.#customizeTopButtonRef &&\n !this.#kupManager.dynamicPosition.isRegistered(\n this.#customizeTopPanelRef\n )\n ) {\n this.#kupManager.dynamicPosition.register(\n this.#customizeTopPanelRef,\n this.#customizeTopButtonRef,\n 0,\n KupDynamicPositionPlacement.BOTTOM,\n true\n );\n }\n }\n\n #rowsPointLength(): number {\n return this.#_rowsLength(this.#rows);\n }\n\n #paginatedRowsPointLength(): number {\n return this.#_rowsLength(this.#paginatedRows);\n }\n\n #_rowsLength(r: Array<KupDataTableRow>): number {\n if (r == null) {\n return 0;\n }\n let count = 0;\n for (let i: number = 0; i < r.length; i++) {\n const row = r[i];\n if (row == null) {\n continue;\n }\n count += 1;\n if (row.group != null) {\n count += this.#_rowsLength(row.group.children);\n }\n }\n return count;\n }\n\n //---- Lifecycle hooks ----\n\n componentWillLoad() {\n this.#kupManager.debug.logLoad(this, false);\n this.#kupManager.language.register(this);\n this.#kupManager.theme.register(this);\n this.#kupManager.toolbar.register(this.rootElement);\n if (!this.emptyDataLabel) {\n this.emptyDataLabel = this.#kupManager.language.translate(\n KupLanguageGeneric.EMPTY_DATA\n );\n }\n this.#columnMenuInstance = new KupColumnMenu();\n this.#filtersColumnMenuInstance = new FiltersColumnMenu();\n this.#filtersRowsInstance = new FiltersRows();\n\n this.#isRestoringState = true;\n // *** Store\n this.initWithPersistedState();\n // ***\n if (this.pageSelected > 0) {\n this.currentPage = this.pageSelected;\n }\n this.currentRowsPerPage = this.rowsPerPage;\n this.#isRestoringState = false;\n\n //this.identifyAndInitRows();\n identify(this.getRows());\n this.expandGroupsHandler();\n\n if (document.querySelector('.header')) {\n this.#navBarHeight = document.querySelector('.header').clientHeight;\n } else {\n this.#navBarHeight = 0;\n }\n if (document.querySelector('.topbar')) {\n this.#navBarHeight +=\n document.querySelector('.topbar').clientHeight;\n }\n this.#setObserver();\n\n //this.recalculateRows();\n\n // Detects is the browser is Safari. If needed, this function can be moved into an external file and then imported into components\n this.#isSafariBrowser =\n CSS.supports('position', '-webkit-sticky') ||\n !!(window && (window as Window & { safari?: object }).safari);\n\n this.#calculateData();\n this.#initialized = true;\n\n this.decorateAndInitForUpdTable();\n }\n\n componentWillRender() {\n this.#kupManager.debug.logRender(this, false);\n }\n\n componentDidRender() {\n const root: ShadowRoot = this.rootElement.shadowRoot;\n if (root) {\n const fs: NodeListOf<HTMLElement> =\n root.querySelectorAll('.f-text-field');\n for (let index = 0; index < fs.length; index++) {\n FTextFieldMDC(fs[index]);\n }\n }\n if (this.showCustomization) {\n this.#customizePanelPosition();\n }\n this.#totalMenuPosition();\n this.#checkScrollOnHover();\n this.#didRenderObservers();\n this.#didRenderInteractables();\n this.#hideShowColumnDropArea(false);\n\n if (\n this.headerIsPersistent &&\n this.tableHeight === undefined &&\n this.tableWidth === undefined\n ) {\n this.#updateStickyHeaderSize();\n }\n\n setTimeout(() => this.#updateFixedRowsAndColumnsCssVariables(), 50);\n // *** Store\n if (this.lazyLoadCells) {\n this.persistState();\n }\n // ***\n this.#oldWidth = this.rootElement.clientWidth;\n this.#kupManager.debug.logRender(this, true);\n }\n\n componentDidLoad() {\n this.#didLoadObservers();\n this.#didLoadEventHandling();\n this.#didLoadInteractables();\n this.lazyLoadCells = true;\n this.kupDidLoad.emit({ comp: this, id: this.rootElement.id });\n this.#kupManager.resize.observe(this.rootElement);\n this.#kupManager.debug.logLoad(this, true);\n }\n\n //======== Utility methods ========\n\n #resetSelectedRows() {\n if (this.getRows().length === 0) return;\n this.selectedRows = [];\n this.kupResetSelectedRows.emit({ comp: this, id: this.rootElement.id });\n }\n\n resetCurrentPage() {\n this.currentPage = 1;\n this.#resetSelectedRows();\n }\n\n getColumns(): Array<KupDataColumn> {\n return this.data && this.data.columns\n ? this.data.columns\n : [{ title: '', name: '' }];\n }\n\n #getSizedColumns() {\n const columns = this.getColumns();\n const sizedColumns = [];\n for (let j = 0; j < columns.length; j++) {\n if (\n columns[j].size !== null &&\n columns[j].size !== undefined &&\n columns[j].size !== ''\n ) {\n sizedColumns.push(columns[j]);\n }\n }\n if (sizedColumns.length > 0) {\n return sizedColumns;\n } else {\n return undefined;\n }\n }\n /**\n * Opens a card containing the detail of the given row.\n * @param {KupDataTableRow} row - Row for which the detail was requested.\n * @param {number} x - Initial x coordinates of the card.\n * @param {number} y - Initial y coordinates of the card.\n * @private\n * @memberof KupDataTable\n */\n #rowDetail(row: KupDataTableRow, x: number, y: number): void {\n const transposedData: KupDataDataset = this.#getTransposedData();\n const cardData: KupCardData = {\n button: [\n {\n disabled: parseInt(row.id) === 0 ? true : false,\n icon: 'chevron_left',\n },\n {\n disabled:\n parseInt(row.id) === this.getRows().length - 1\n ? true\n : false,\n icon: 'chevron_right',\n },\n ],\n datatable: [\n {\n customStyle:\n '#kup-component .below-wrapper{overflow: visible} #kup-component td[data-column=\"' +\n iconColumn.toUpperCase() +\n `\"]{background-color: rgba(var(${KupThemeColorValues.TEXT}-rgb), 0.15); width: 10px;}`,\n data: transposedData,\n density: 'medium',\n editableData: true,\n headerIsPersistent: false,\n id: this.rootElement.id ? this.rootElement.id : '',\n rowsPerPage: 1000,\n showGrid: ShowGrid.NONE,\n showHeader: false,\n },\n ],\n text: [this.#kupManager.language.translate(KupLanguageRow.DETAIL)],\n };\n const columns: KupDataColumn[] = cardData.datatable[0].data.columns;\n const rows: KupDataTableRow[] = cardData.datatable[0].data.rows;\n // Placing the key and icon columns before any other column\n columns.unshift(\n {\n name: iconColumn.toUpperCase(),\n title: iconColumn,\n },\n {\n name: keyColumn.toUpperCase(),\n title: keyColumn,\n }\n );\n // Setting all columns to not visible\n for (let index = 0; index < columns.length; index++) {\n columns[index].visible = false;\n }\n // Setting Field column and current record column to visible\n columns.find((x) => x.name === fieldColumn.toUpperCase()).visible =\n true;\n const currentColumn = columns.find((x) => x.name === row.id);\n if (currentColumn) {\n currentColumn.visible = true;\n } else {\n this.#kupManager.debug.logMessage(\n this,\n 'Invalid column name on row ID (' +\n row.id +\n \"), couldn't set current record!\",\n KupDebugCategory.WARNING\n );\n }\n // Setting up icons\n let keyCell: KupDataTableCell = null;\n for (let index = 0; index < rows.length; index++) {\n const column: KupDataColumn = this.data.columns.find(\n (x) => x.name === rows[index].transposedColumnName\n );\n if (!column) {\n this.#kupManager.debug.logMessage(\n this,\n 'Column not found on row name (' + column + ')!',\n KupDebugCategory.WARNING\n );\n return;\n }\n const editable: boolean = rows[index].cells[row.id].isEditable\n ? true\n : false;\n let iconCell: KupDataTableCell = null;\n if (column.isKey || editable) {\n columns.find(\n (x) => x.name === iconColumn.toUpperCase()\n ).visible = true;\n }\n if (column.isKey) {\n // Key should always be the first row\n keyCell = row.cells[column.name];\n iconCell = {\n obj: {\n t: 'J4',\n p: 'ICO',\n k: 'OG_OG_KF',\n },\n data: {\n color: `var(${KupThemeColorValues.TEXT})`,\n resource: editable ? 'edit-key' : 'key-variant',\n },\n title: editable\n ? this.#kupManager.language.translate(\n KupLanguageRow.EDITABLE_KEY\n )\n : this.#kupManager.language.translate(\n KupLanguageRow.KEY\n ),\n value: editable ? 'edit-key' : 'key-variant',\n };\n } else if (editable) {\n iconCell = {\n obj: {\n t: 'VO',\n p: 'COD_VER',\n k: '000051',\n },\n data: {\n color: `var(${KupThemeColorValues.TEXT})`,\n resource: 'pencil',\n },\n title: this.#kupManager.language.translate(\n KupLanguageGeneric.EDITABLE_FIELD\n ),\n value: 'pencil',\n };\n } else {\n iconCell = {\n obj: {\n t: '',\n p: '',\n k: '',\n },\n value: '',\n };\n }\n if (keyCell) {\n rows[index].cells[keyColumn.toUpperCase()] = keyCell;\n } else {\n rows[index].cells[keyColumn.toUpperCase()] = { value: null };\n }\n rows[index].cells[iconColumn.toUpperCase()] = iconCell;\n }\n if (!this.#detailCard) {\n this.#detailCard = document.createElement('kup-card');\n this.#detailCard.layoutFamily = KupCardFamily.DIALOG;\n this.#detailCard.layoutNumber = 4;\n this.#detailCard.sizeX = 'auto';\n this.#detailCard.sizeY = 'auto';\n } else {\n const children: HTMLCollection = Array.prototype.slice.call(\n this.#detailCard.children,\n 0\n );\n for (let index = 0; index < children.length; index++) {\n children[index].remove();\n }\n }\n this.#detailCard.data = cardData;\n this.#detailCard.style.position = 'fixed';\n this.#detailCard.style.left = '0';\n this.#detailCard.style.top = '0';\n this.#detailCard.setAttribute('data-x', x.toString());\n this.#detailCard.setAttribute('data-y', y.toString());\n this.#detailCard.style.transform = 'translate(' + x + 'px,' + y + 'px)';\n this.rootElement.shadowRoot.append(this.#detailCard);\n }\n /**\n * Opens a card containing the actions of the given row.\n * @param {KupDataRowAction[]} dropDownActions - Actions for the row.\n * @private\n * @memberof KupDataTable\n */\n #dropDownActions(\n dropDownActions: KupDataRowAction[],\n row: KupDataTableRow\n ) {\n this.#createDropDownActionsCard(dropDownActions, row);\n }\n\n #createDropDownActionsCard(\n dropDownActions: KupDataRowAction[],\n row: KupDataTableRow\n ) {\n if (this.#actionsCard) {\n this.#closeRowActionsCard();\n }\n this.#actionsCard = document.createElement('kup-card');\n this.#actionsCard.layoutFamily = KupCardFamily.STANDARD;\n this.#actionsCard.layoutNumber = 17;\n this.#actionsCard.menuVisible = true;\n this.#actionsCard.sizeX = 'auto';\n this.#actionsCard.sizeY = 'auto';\n this.#actionsCard.data =\n this.#prepareDataForActionsCard(dropDownActions);\n this.#clickCbDropCard = {\n cb: () => {\n this.#closeRowActionsCard();\n },\n el: this.#actionsCard,\n };\n this.#kupManager.addClickCallback(this.#clickCbDropCard, true);\n this.#actionsCard.style.position = 'absolute';\n this.#actionsCard.style.left = '0';\n this.#actionsCard.style.top = '0';\n this.#actionsCard.isMenu = true;\n this.rootElement.shadowRoot.append(this.#actionsCard);\n this.#kupManager.dynamicPosition.register(\n this.#actionsCard,\n this.#dropDownActionCardAnchor as KupDynamicPositionAnchor,\n 0,\n KupDynamicPositionPlacement.AUTO,\n true\n );\n this.#kupManager.dynamicPosition.start(\n this.#actionsCard as unknown as KupDynamicPositionElement\n );\n this.#actionsCard.addEventListener(\n 'kup-card-event',\n (e: CustomEvent<KupCardEventPayload>) => {\n switch (e.detail.event.type) {\n case 'kup-textfield-input':\n const input = e.detail.event.detail.value;\n\n this.#filterRowActionsCard(\n this.#actionsCard,\n dropDownActions,\n input\n );\n break;\n case 'kup-textfield-cleariconclick':\n this.#clearSearchActionsCard(\n this.#actionsCard,\n dropDownActions\n );\n break;\n case 'kup-list-click':\n const selectedObjectIndex = e.detail.event.detail.index;\n const selectedObject =\n dropDownActions[selectedObjectIndex];\n\n this.kupRowActionItemClick.emit({\n comp: this,\n id: this.rootElement.id,\n row: row,\n obj: selectedObject.obj,\n cell: selectedObject.cell,\n type: selectedObject.type,\n index: selectedObject.index,\n column: selectedObject.column,\n });\n setTimeout(() => {\n this.#closeRowActionsCard();\n }, 0);\n }\n }\n );\n }\n\n #clearSearchActionsCard(\n card: HTMLKupCardElement,\n dropDownActions: KupDataRowAction[]\n ) {\n const rowActionsList: Pick<KupList, 'showIcons' | 'data'> = {\n showIcons: true,\n data: dropDownActions.map((r) => ({\n value: r.text,\n ...r,\n })),\n };\n card.data.list[0].data = rowActionsList.data;\n card.refresh();\n }\n\n #filterRowActionsCard(\n card: HTMLKupCardElement,\n dropDownActions: KupDataRowAction[],\n input: string\n ) {\n const rowActionsList: Pick<KupList, 'showIcons' | 'data'> = {\n showIcons: true,\n data: dropDownActions.map((r) => ({\n value: r.text,\n ...r,\n })),\n };\n const filteredList: KupListNode[] = rowActionsList.data.filter(\n (action: KupListNode) =>\n action.value.toLowerCase().includes(input.toLowerCase())\n );\n card.data.list[0].data = filteredList;\n card.refresh();\n }\n\n #closeRowActionsCard() {\n this.#kupManager.dynamicPosition.stop(\n this.#actionsCard as KupDynamicPositionElement\n );\n this.#kupManager.removeClickCallback(this.#clickCbDropCard);\n this.#actionsCard.remove();\n this.#actionsCard = null;\n }\n\n #prepareDataForActionsCard(\n dropDownActions: KupDataRowAction[]\n ): KupCardData {\n const hasAlmostTenElements = dropDownActions.length >= 10;\n\n const textfield = hasAlmostTenElements\n ? [\n {\n fullWidth: true,\n icon: 'magnify',\n isClearable: true,\n label: 'Search...',\n key: KupColumnMenuIds.TEXTFIELD_FILTER,\n id: KupColumnMenuIds.TEXTFIELD_FILTER,\n },\n ]\n : [];\n\n const data: KupCardData = {\n list: [\n {\n showIcons: true,\n data: dropDownActions.map((r) => ({\n value: r.text,\n ...r,\n })),\n },\n ],\n textfield,\n };\n\n return data;\n }\n #rowInsertForm() {\n const CARD_WIDTH = 400;\n const CARD_HEIGHT = 400;\n this.#insertCard = document.createElement('kup-card');\n this.#insertCard.layoutFamily = KupCardFamily.FREE;\n this.#insertCard.layoutNumber = 1;\n this.#insertCard.sizeX = CARD_WIDTH + 'px';\n this.#insertCard.sizeY = CARD_HEIGHT + 'px';\n\n const style = document.createElement('style');\n style.innerText =\n 'kup-form { max-height: 40vh; overflow: auto; } .page-wrapper { display: grid; } ' +\n '.button-wrapper { padding-top: 20px; display: flex; justify-content: space-around; z-index: var(--kup-card-zindex); } ' +\n '.message-wrapper { display: none; justify-content: start; padding-top: 5px; padding-bottom: 5px; } ' +\n '.errorIcon { --kup-icon-color: var(--kup-danger-color-60); } ' +\n '.message { background-color: var(--kup-danger-color-60); color: white; padding: 3px; } ';\n this.#insertCard.append(style);\n\n const pageWrapper = document.createElement('div');\n pageWrapper.className = 'page-wrapper';\n\n const buttonWrapper = document.createElement('div');\n buttonWrapper.className = 'button-wrapper';\n const cancel = document.createElement('kup-button');\n const confirm = document.createElement('kup-button');\n cancel.id = this.#BUTTON_CANCEL_ID;\n cancel.icon = 'clear';\n cancel.label = this.#kupManager.language.translate(\n KupLanguageGeneric.ABORT\n );\n cancel.styling = FButtonStyling.FLAT;\n cancel.addEventListener('kup-button-click', () => {\n this.#insertCard.remove();\n this.#insertCard = null;\n });\n confirm.id = this.#BUTTON_SUBMIT_ID;\n confirm.icon = 'check';\n confirm.label = this.#kupManager.language.translate(\n KupLanguageGeneric.CONFIRM\n );\n let innerComp = document.createElement('kup-spinner');\n innerComp.slot = 'spinner';\n innerComp.dimensions = '0.6em';\n innerComp.active = true;\n confirm.appendChild(innerComp);\n confirm.addEventListener('kup-button-click', () => {\n messageWrapper.style.display = 'none';\n confirm.showSpinner = true;\n cancel.disabled = true;\n this.kupInsertRow.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: [row],\n });\n });\n buttonWrapper.append(cancel);\n buttonWrapper.append(confirm);\n\n const form = document.createElement('kup-form');\n form.id = this.#FIELDS_FORM_ID;\n const row: KupFormRow = {\n cells: {},\n id: '0',\n };\n this.data.columns.forEach((column) => {\n if (column.isEditable || column.isKey) {\n row.cells[column.name] = {\n isEditable: column.isEditable,\n shape: column.shape,\n value: '',\n };\n }\n });\n form.data = {\n columns: this.data.columns,\n rows: [row],\n };\n\n const messageWrapper = document.createElement('div');\n messageWrapper.className = 'message-wrapper';\n messageWrapper.id = this.#MESSAGE_WRAPPER_ID;\n const icon = document.createElement('kup-image');\n icon.className = 'errorIcon';\n icon.resource = 'cancel';\n icon.sizeX = '20px';\n icon.sizeY = '20px';\n messageWrapper.append(icon);\n\n const message = document.createElement('span');\n message.className = 'message';\n message.id = this.#MESSAGE_ID;\n let msg = '';\n message.innerText = msg;\n messageWrapper.append(message);\n\n pageWrapper.append(messageWrapper);\n pageWrapper.append(form);\n pageWrapper.append(buttonWrapper);\n\n this.#insertCard.append(pageWrapper);\n this.#insertCard.data = {};\n this.rootElement.shadowRoot.append(this.#insertCard);\n }\n\n #rowsDelete() {\n const createDeleteCard = () => {\n this.#confirmDeleteDialog = document.createElement('kup-dialog');\n this.#confirmDeleteCard = document.createElement('kup-card');\n this.#confirmDeleteCard.layoutFamily = KupCardFamily.FREE;\n this.#confirmDeleteCard.layoutNumber = 1;\n this.#confirmDeleteCard.sizeX = 'auto';\n this.#confirmDeleteCard.sizeY = 'auto';\n const style = document.createElement('style');\n style.innerText =\n '.button-wrapper, .message-wrapper { display: flex; justify-content: space-around; z-index: var(--kup-card-zindex); } .message-wrapper { padding-bottom: 20px; }';\n const messageWrapper = document.createElement('div');\n messageWrapper.className = 'message-wrapper';\n messageWrapper.id = this.#MESSAGE_WRAPPER_ID;\n const message = document.createElement('span');\n message.className = 'message';\n message.id = this.#MESSAGE_ID;\n let msg = this.#kupManager.language.translate(\n KupLanguageGeneric.CONFIRM_DELETE_X_ROWS\n );\n msg = msg.replace('{0}', this.selectedRows.length + '');\n message.innerText = msg;\n messageWrapper.append(message);\n const buttonWrapper = document.createElement('div');\n buttonWrapper.className = 'button-wrapper';\n const confirm = document.createElement('kup-button');\n confirm.id = this.#BUTTON_SUBMIT_ID;\n confirm.icon = 'check';\n confirm.label = this.#kupManager.language.translate(\n KupLanguageGeneric.CONFIRM\n );\n let innerComp = document.createElement('kup-spinner');\n innerComp.slot = 'spinner';\n innerComp.dimensions = '0.6em';\n innerComp.active = true;\n confirm.appendChild(innerComp);\n confirm.addEventListener('kup-button-click', () => {\n confirm.showSpinner = true;\n this.kupDeleteRow.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n });\n });\n buttonWrapper.append(confirm);\n this.#confirmDeleteCard.append(style);\n this.#confirmDeleteCard.append(messageWrapper);\n this.#confirmDeleteCard.append(buttonWrapper);\n this.#confirmDeleteCard.data = {};\n this.#confirmDeleteDialog.append(this.#confirmDeleteCard);\n document.querySelector('body').append(this.#confirmDeleteDialog);\n };\n\n const insertRowsIds: string[] = [];\n const startingRows: KupDataTableRow[] = [];\n this.selectedRows.forEach((row) => {\n if (row.id.indexOf(this.#INSERT_PREFIX) > -1) {\n insertRowsIds.push(row.id);\n } else {\n startingRows.push(row);\n }\n });\n this.deleteRows(insertRowsIds).then(() => {\n if (startingRows.length > 0) {\n this.selectedRows = startingRows;\n createDeleteCard();\n }\n });\n }\n\n #getEventDetails(\n path: HTMLElement[],\n e?: PointerEvent\n ): KupDatatableEventHandlerDetails {\n let isHeader: boolean,\n isBody: boolean,\n isFooter: boolean,\n td: HTMLElement,\n textfield: HTMLElement,\n th: HTMLElement,\n tr: HTMLElement,\n filterRemove: HTMLSpanElement;\n if (path) {\n for (let i = path.length - 1; i >= 0; i--) {\n let p = path[i];\n if (!p.tagName) {\n continue;\n }\n switch (p.tagName.toUpperCase()) {\n case 'THEAD': {\n isHeader = true;\n break;\n }\n case 'TBODY': {\n isBody = true;\n break;\n }\n case 'TFOOT': {\n isFooter = true;\n break;\n }\n case 'TD': {\n td = p;\n break;\n }\n case 'TH': {\n th = p;\n break;\n }\n case 'TR': {\n tr = p;\n break;\n }\n default: {\n if (p.classList.contains('f-text-field')) {\n textfield = p;\n } else if (\n p.classList.contains(\n KupThemeIconValues.FILTER_REMOVE.replace(\n '--',\n ''\n )\n )\n ) {\n filterRemove = p;\n }\n break;\n }\n }\n }\n }\n\n let cell: KupDataTableCell = null,\n column: KupDataColumn = null,\n isGroupRow: boolean = false,\n row: KupDataTableRow = null;\n if (isBody) {\n if (tr) {\n if (tr.classList.contains('group')) {\n isGroupRow = true;\n }\n row = tr['data-row'];\n }\n }\n if (isHeader || isBody) {\n if (td) {\n cell = td['data-cell'];\n }\n if (th) {\n cell = th['data-cell'];\n }\n }\n if (isHeader || isBody || isFooter) {\n const columnName = td\n ? td.dataset.column\n : th\n ? th.dataset.column\n : null;\n if (columnName) {\n column = getColumnByName(this.getColumns(), columnName);\n }\n }\n\n return {\n area: isHeader\n ? 'header'\n : isBody\n ? 'body'\n : isFooter\n ? 'footer'\n : null,\n cell: cell ? cell : null,\n column: column ? column : null,\n filterRemove: filterRemove ? filterRemove : null,\n isGroupRow: isGroupRow,\n originalEvent: e,\n row: row ? row : null,\n td: td ? td : null,\n textfield: textfield ? textfield : null,\n th: th ? th : null,\n tr: tr ? tr : null,\n };\n }\n\n #clickHandler(e: PointerEvent): KupDatatableEventHandlerDetails {\n const details: KupDatatableEventHandlerDetails = this.#getEventDetails(\n this.#kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n if (details.area === 'header') {\n if (details.th && details.column) {\n if (details.filterRemove) {\n this.#onRemoveFilter(details.column);\n return details;\n } else if (this.sortEnabled) {\n this.#onColumnSort(e, details.column.name);\n return details;\n }\n }\n } else if (details.area === 'body') {\n if (\n (this.isFocusable || e.ctrlKey || e.metaKey) &&\n details.tr &&\n !details.isGroupRow\n ) {\n const focusEl: HTMLElement =\n this.rootElement.shadowRoot.querySelector('tr.focus');\n if (focusEl) {\n focusEl.classList.remove('focus');\n }\n details.tr.classList.add('focus');\n if (e.ctrlKey || e.metaKey) {\n this.#rowDetail({ ...details.row }, e.clientX, e.clientY);\n return details;\n }\n }\n if (details.tr && details.row && details.isGroupRow) {\n this.#onRowExpand(details.row);\n return details;\n }\n if (details.td && details.row && !details.textfield) {\n this.#onRowClick(details.row, details.td, true);\n return details;\n }\n }\n return details;\n }\n\n #cellActionsMenuHandler(e: PointerEvent): KupDatatableEventHandlerDetails {\n e.stopPropagation();\n const details: KupDatatableEventHandlerDetails = this.#getEventDetails(\n this.#kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n if (details.cell) {\n const cellActions = this.#kupManager.data.cell.buildCellActions(\n details.row,\n details.column,\n this.commands ?? []\n );\n this.#onRowActionExpanderClick(e, details.row, cellActions);\n }\n return details;\n }\n\n #contextMenuHandler(e: PointerEvent): KupDatatableEventHandlerDetails {\n const details: KupDatatableEventHandlerDetails = this.#getEventDetails(\n this.#kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n if (details.area === DataTableAreasEnum.HEADER) {\n if (details.th && details.column) {\n this.openColumnMenu(details.column.name);\n return details;\n }\n } else if (details.area === DataTableAreasEnum.FOOTER) {\n if (details.td && details.column) {\n this.#totalMenuCoords = { x: e.clientX, y: e.clientY };\n this.#onTotalMenuOpen(details.column);\n return details;\n }\n }\n return details;\n }\n\n #dblClickHandler(e: PointerEvent): KupDatatableEventHandlerDetails {\n const details: KupDatatableEventHandlerDetails = this.#getEventDetails(\n this.#kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n if (details.area === 'body') {\n if (this.selection == SelectionMode.MULTIPLE) {\n this.#resetSelectedRows();\n }\n if (\n this.selection == SelectionMode.SINGLE ||\n this.selection == SelectionMode.MULTIPLE\n ) {\n this.#onRowClick(details.row, details.td, false);\n }\n }\n return details;\n }\n\n getVisibleColumns(): Array<KupDataColumn> {\n const visibleColumns = this.getColumns().filter(\n (col) =>\n !this.#kupManager.data.column.isCodVer(col) &&\n (!('visible' in col) || col.visible)\n );\n\n // check grouping\n if (this.#isGrouping()) {\n // filtering column based on group visibility\n return visibleColumns.filter((column) => {\n // check if in group\n let group = null;\n for (let currentGroup of this.groups) {\n if (currentGroup.column === column.name) {\n group = currentGroup;\n break;\n }\n }\n\n if (group) {\n // return true if\n // 1) group obj has not the 'visible' property or\n // 2) group has 'visible' property and it is true\n return !group.hasOwnProperty('visible') || group.visible;\n }\n\n // not in group -> visible\n return true;\n });\n }\n return visibleColumns;\n }\n\n getGroupByName(column: string): GroupObject {\n if (!this.#isGrouping()) {\n return null;\n }\n\n for (let group of this.groups) {\n if (group.column === column) {\n return group;\n }\n }\n\n return null;\n }\n\n getColumnValues(column: KupDataColumn): ValueDisplayedValue[] {\n return this.#filtersRowsInstance.getColumnValues(\n this,\n column,\n this.globalFilterValue,\n this.#filtersColumnMenuInstance\n );\n }\n\n getRows(): Array<KupDataTableRow> {\n return this.data && this.data.rows ? this.data.rows : [];\n }\n\n #initRows(): void {\n this.#filterRows();\n\n this.#footer = calcTotals(\n normalizeRows(this.getColumns(), this.#rows),\n this.totals\n );\n\n this.#groupRows();\n this.#sortRows();\n this.#adjustPaginator();\n\n this.#paginatedRows = paginateRows(\n this.#rows,\n this.currentPage,\n this.currentRowsPerPage,\n this.#isGrouping()\n );\n this.#paginatedRowsLength = this.#paginatedRowsPointLength();\n }\n\n #filterRows(): void {\n this.#rows = filterRows(\n this.getRows(),\n this.filters,\n this.globalFilterValue,\n this.getColumns()\n );\n this.#rowsLength = this.#rowsPointLength();\n }\n\n #isGrouping() {\n return this.groups && this.groups.length > 0;\n }\n\n #hasRowActions() {\n return this.rowActions !== undefined;\n }\n\n #removeGroup(index: number) {\n if (index >= 0) {\n // removing group from prop\n this.groups.splice(index, 1);\n this.groups = [...this.groups];\n }\n }\n\n #hasTotals() {\n return this.totals && Object.keys(this.totals).length > 0;\n }\n\n /**\n * Returns if the current data table must have the with set to auto to make table as large as the sum\n * of the table columns fixed width.\n * Table margin gets set to auto to center it.\n */\n #tableHasAutoWidth(): boolean {\n if (!this.#sizedColumns) {\n return;\n }\n const visibleCols = this.getVisibleColumns();\n // Before checking each column, controls that visible columns are as many as items with custom sizes.\n // If there are more visible columns, it means that the width of the table will be set to auto.\n if (visibleCols.length <= this.#sizedColumns.length) {\n let found = false;\n\n // Each visible column must have its own width for the table to have a auto width\n for (let i = 0; i < visibleCols.length; i++) {\n found = false;\n for (let j = 0; j < this.#sizedColumns.length; j++) {\n if (visibleCols[i].name === this.#sizedColumns[j].name) {\n found = true;\n break;\n }\n }\n if (!found) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n\n #forceGroupExpansion() {\n this.#rows.forEach((row) => this.#forceRowGroupExpansion(row));\n this.#paginatedRows.forEach((row) => this.#forceRowGroupExpansion(row));\n }\n\n #forceRowGroupExpansion(row: KupDataTableRow) {\n // check if row is group\n if (!row.group) {\n return;\n }\n\n // forcing row expanded\n row.group.expanded = this.expandGroups;\n\n // updating group state\n // check if already present\n let groupState = this.groupState[row.group.id];\n if (!groupState) {\n groupState = {\n expanded: this.expandGroups,\n };\n } else {\n groupState.expanded = this.expandGroups;\n }\n\n this.groupState[row.group.id] = groupState;\n\n if (row.group.children) {\n row.group.children.forEach((childRow) =>\n this.#forceRowGroupExpansion(childRow)\n );\n }\n }\n\n #adjustPaginator() {\n const numberOfRows = this.#rowsLength;\n // check if current page is valid\n const numberOfPages = Math.ceil(numberOfRows / this.currentRowsPerPage);\n if (this.currentPage > numberOfPages) {\n // reset page\n this.currentPage = 1;\n this.resetCurrentPage();\n }\n }\n\n //==== Fixed columns and rows methods ====\n #composeFixedCellStyleAndClass(\n columnCssIndex: number,\n columnCssIndexR: number,\n rowCssIndex: number,\n extraCellsCount: number = 0\n ):\n | undefined\n | {\n fixedCellClasses: GenericObject;\n fixedCellStyle: GenericObject;\n } {\n if (this.#isGrouping()) {\n return undefined;\n }\n\n //-- Controls if there are fixed rows or columns --\n const validFixedColumn: boolean =\n Number.isInteger(this.fixedColumns) &&\n columnCssIndex <= this.fixedColumns + extraCellsCount;\n const validFixedColumnR: boolean =\n this.fixedColumnsR &&\n Number.isInteger(this.fixedColumnsR) &&\n columnCssIndexR >\n this.getVisibleColumns().length - this.fixedColumnsR;\n const validFixedRowIndex =\n Number.isInteger(this.fixedRows) &&\n rowCssIndex > 0 &&\n rowCssIndex <= this.fixedRows;\n\n // When the cell is not valid to be either into a fixed column or into a fixed row, returns null.\n if (!validFixedRowIndex && !validFixedColumn && !validFixedColumnR) {\n return undefined;\n }\n\n const fixedCellClasses: GenericObject = {},\n fixedCellStyle: GenericObject = {};\n\n if (validFixedColumn) {\n fixedCellClasses[FixedCellsClasses.columns] = validFixedColumn;\n fixedCellClasses['show-column-separator'] =\n ShowGrid.COMPLETE === this.showGrid ||\n ShowGrid.COL === this.showGrid;\n fixedCellStyle['left'] =\n 'var(' + FixedCellsCSSVarsBase.columns + columnCssIndex + ')';\n }\n\n if (validFixedColumnR) {\n const prog =\n columnCssIndexR - (this.getVisibleColumns().length - 1);\n const progIdx = prog - this.fixedColumnsR;\n const absIdx = Math.abs(progIdx);\n fixedCellClasses[FixedCellsClasses.columnsR] = validFixedColumnR;\n fixedCellClasses['show-column-separator'] =\n ShowGrid.COMPLETE === this.showGrid ||\n ShowGrid.COL === this.showGrid;\n fixedCellStyle['right'] =\n 'var(' + (FixedCellsCSSVarsBase.columnsR + absIdx) + ')'; // right value assignment must be reversed\n }\n\n if (validFixedRowIndex) {\n fixedCellClasses[FixedCellsClasses.rows] = !!validFixedRowIndex;\n fixedCellClasses['show-row-separator'] =\n ShowGrid.COMPLETE === this.showGrid ||\n ShowGrid.ROW === this.showGrid;\n fixedCellStyle['top'] =\n 'var(' + FixedCellsCSSVarsBase.rows + rowCssIndex + ')';\n }\n\n return {\n fixedCellClasses,\n fixedCellStyle,\n };\n }\n\n #updateFixedRowsAndColumnsCssVariables(): boolean {\n // [ffbf] - Using getBoundingClientRect is mandatory since Firefox return a wrong value for ele.offsetHeight and witdh values\n\n // When grouping, the fixed rows and columns are not sticky\n if (this.#isGrouping() || !this.#tableRef) return false;\n let toRet: boolean = false;\n\n if (this.fixedRows >= 1) {\n let currentRow: HTMLTableRowElement = this.#tableRef.querySelector(\n 'tbody > tr:first-of-type'\n );\n // The height must start from the height of the header. BUT not on Safari.\n // Safari handles the sticky position on the tables in a different way, making it start from the tbody element\n // and not on the table with a specified position of sticky. There fore in that case we must set initial height to 0.\n let previousHeight: number = !this.#isSafariBrowser\n ? (\n this.#tableRef.querySelector(\n 'thead > tr:first-of-type > th:first-of-type'\n ) as HTMLTableCellElement\n ).getBoundingClientRect().height // [ffbf]\n : 0;\n\n // [CSSCount] - I must start from 1 since we are referencing html elements e not array (with CSS selectors starting from 1)\n for (let i = 1; i <= this.fixedRows && currentRow; i++) {\n this.#tableAreaRef.style.setProperty(\n FixedCellsCSSVarsBase.rows + i,\n previousHeight + 'px'\n );\n previousHeight += (\n currentRow.children[0] as HTMLTableCellElement\n ).getBoundingClientRect().height; // [ffbf]\n currentRow =\n currentRow.nextElementSibling as HTMLTableRowElement;\n }\n toRet = true;\n }\n\n if (this.fixedColumns >= 1) {\n let currentCell: HTMLTableCellElement =\n this.#tableRef.querySelector(\n 'tbody > tr:first-of-type > td:first-of-type'\n );\n let previousWidth: number = 0;\n const totalFixedColumns =\n this.fixedColumns +\n (this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(\n this.commands\n )\n ? 1\n : 0) +\n (this.selection === SelectionMode.MULTIPLE_CHECKBOX ? 1 : 0);\n\n // @See [CSSCount]\n for (let i = 1; i <= totalFixedColumns && currentCell; i++) {\n this.#tableAreaRef.style.setProperty(\n FixedCellsCSSVarsBase.columns + i,\n previousWidth + 'px'\n );\n previousWidth += currentCell.getBoundingClientRect().width; // [ffbf]\n currentCell =\n currentCell.nextElementSibling as HTMLTableCellElement;\n }\n toRet = true;\n }\n\n if (this.fixedColumnsR >= 1) {\n let currentCell: HTMLTableCellElement =\n this.#tableRef.querySelector(\n 'tbody > tr:first-of-type > td:last-of-type'\n );\n let previousWidth = 0;\n\n for (let i = 1; i <= this.fixedColumnsR && currentCell; i++) {\n this.#tableAreaRef.style.setProperty(\n FixedCellsCSSVarsBase.columnsR + i,\n previousWidth + 'px'\n );\n previousWidth += currentCell.getBoundingClientRect().width;\n currentCell =\n currentCell.previousElementSibling as HTMLTableCellElement;\n }\n toRet = true;\n }\n\n return toRet;\n }\n\n //======== Event Listeners ========\n #onColumnSort({ ctrlKey }: PointerEvent, columnName: string) {\n // check if columnName is already in sort array\n let i = 0;\n for (; i < this.sort.length; i++) {\n const sortObj = this.sort[i];\n if (sortObj.column === columnName) {\n break;\n }\n }\n\n if (i < this.sort.length) {\n // already in array... switching sort\n const sortObj = this.sort[i];\n\n const newSortObj: SortObject = {\n ...sortObj,\n sortMode:\n sortObj.sortMode === SortMode.A ? SortMode.D : SortMode.A,\n };\n\n if (ctrlKey) {\n const newSort = [...this.sort];\n newSort[i] = newSortObj;\n this.sort = newSort;\n } else {\n this.sort = [newSortObj];\n }\n } else {\n const sortObj: SortObject = {\n column: columnName,\n sortMode: SortMode.A,\n };\n\n // if CTRL is pressed, push to array\n // else, replace current array\n if (ctrlKey) {\n this.sort = [...this.sort, sortObj];\n } else {\n this.sort = [sortObj];\n }\n }\n }\n\n #onRemoveFilter(column: KupDataColumn) {\n // resetting current page\n this.resetCurrentPage();\n const newFilters: GenericFilter = { ...this.filters };\n this.#filtersColumnMenuInstance.removeFilter(newFilters, column.name);\n this.filters = newFilters;\n }\n\n #getFilterValueForTooltip(column: KupDataColumn): string {\n return this.#filtersColumnMenuInstance.getFilterValueForTooltip(\n this.filters,\n column\n );\n }\n\n #onGlobalFilterChange(inputEl: EventTarget) {\n this.resetCurrentPage();\n if (inputEl) {\n const el = inputEl as HTMLInputElement;\n this.globalFilterValue = el.value;\n } else {\n this.globalFilterValue = '';\n }\n }\n\n #handlePageChange(pageNumber: number) {\n const newPage = pageChange(\n pageNumber,\n this.#rowsLength,\n this.currentRowsPerPage\n );\n if (newPage) {\n this.currentPage = newPage;\n }\n }\n\n #handleRowsPerPageChange(rowsNumber: number) {\n const newRows = rowsPerPageChange(rowsNumber, this.#rowsLength);\n if (newRows) {\n this.currentRowsPerPage = newRows;\n this.#adjustPaginator();\n }\n }\n\n #onRowClick(row: KupDataTableRow, td: HTMLElement, emitEvent?: boolean) {\n // selecting row\n if (!row.unselectable) {\n switch (this.selection) {\n case SelectionMode.MULTIPLE:\n if (this.selectedRows.includes(row)) {\n const selectedRowsCopy = [...this.selectedRows];\n var index = selectedRowsCopy.indexOf(row);\n if (index !== -1) {\n selectedRowsCopy.splice(index, 1);\n }\n this.selectedRows = [...selectedRowsCopy];\n } else {\n this.selectedRows = [...this.selectedRows, row];\n }\n break;\n case SelectionMode.SINGLE:\n this.selectedRows = [row];\n break;\n default:\n break;\n }\n }\n\n // find clicked column\n const clickedColumn: string = td.dataset.column;\n\n // selecting clicked column\n if (\n !row.unselectable &&\n this.selection !== SelectionMode.NONE &&\n clickedColumn\n ) {\n this.#deselectColumn(this.selectedColumn);\n this.selectedColumn = clickedColumn;\n this.#selectColumn(this.selectedColumn);\n\n if (emitEvent !== false) {\n // emit event\n this.kupRowSelected.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n clickedRow: row,\n clickedColumn,\n });\n }\n }\n }\n\n #selectColumn(selectedColumn: string) {\n const columnCells = this.rootElement.shadowRoot.querySelectorAll(\n 'td[data-column=\"' + selectedColumn + '\"]'\n );\n for (let i = 0; i < columnCells.length; i++) {\n columnCells[i].classList.add('selected');\n }\n const column = this.rootElement.shadowRoot.querySelector(\n 'th[data-column=\"' + selectedColumn + '\"]'\n );\n if (column) {\n column.classList.add('selected');\n }\n }\n\n #deselectColumn(selectedColumn: string) {\n const columnCells = this.rootElement.shadowRoot.querySelectorAll(\n 'td[data-column=\"' + selectedColumn + '\"]'\n );\n for (let i = 0; i < columnCells.length; i++) {\n columnCells[i].classList.remove('selected');\n }\n const column = this.rootElement.shadowRoot.querySelector(\n 'th[data-column=\"' + selectedColumn + '\"]'\n );\n if (column) {\n column.classList.remove('selected');\n }\n }\n\n #onRowActionExpanderClick(\n e: MouseEvent | PointerEvent,\n row: KupDataTableRow,\n dropDownActions: KupDataRowAction[]\n ) {\n e.stopPropagation();\n this.#dropDownActionCardAnchor = e.target as HTMLElement;\n this.#dropDownActions(dropDownActions, row);\n }\n\n #handleRowSelect(row: KupDataTableRow) {\n const index = this.selectedRows.indexOf(row);\n\n if (index < 0) {\n // adding\n this.selectedRows = [...this.selectedRows, row];\n } else {\n // removing\n this.selectedRows.splice(index, 1);\n this.selectedRows = [...this.selectedRows];\n }\n\n this.kupRowSelected.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n clickedRow: null,\n clickedColumn: null,\n });\n }\n\n #onRowExpand(row: KupDataTableRow) {\n // row should be a 'group' row\n row.group.expanded = !row.group.expanded;\n\n // updating group map\n this.groupState[row.group.id].expanded = row.group.expanded;\n\n // changing group state to trigger rendering\n this.groupState = { ...this.groupState };\n }\n\n #onSelectAll({ target }) {\n if (target.checked) {\n // select all rows\n this.selectedRows = this.#renderedRows;\n // triggering event\n this.kupRowSelected.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n clickedColumn: null,\n clickedRow: null,\n });\n } else {\n // deselect all rows\n this.#resetSelectedRows();\n }\n }\n\n #openTotalMenu(column: KupDataColumn) {\n this.openedTotalMenu = column.name;\n }\n\n #closeTotalMenu() {\n this.openedTotalMenu = null;\n this.#kupManager.removeClickCallback(this.#clickCb);\n }\n\n #isOpenedTotalMenuForColumn(column: string): boolean {\n return this.openedTotalMenu === column;\n }\n\n // utility methods\n #groupRows(): void {\n if (!this.#isGrouping()) {\n return;\n }\n\n this.#rows = groupRows(\n this.getColumns(),\n this.#rows,\n this.groups,\n this.totals\n );\n\n this.#adjustGroupState();\n }\n\n @Method()\n async getInternalState() {\n // TODO - Just for test\n return {\n groups: this.groups,\n filters: this.filters,\n data: this.data,\n };\n }\n\n // Handler for loadMore button is clicked.\n #onLoadMoreClick() {\n let loadItems: number = 0;\n\n switch (this.loadMoreMode) {\n case LoadMoreMode.CONSTANT:\n loadItems = this.loadMoreStep;\n break;\n case LoadMoreMode.CONSTANT_INCREMENT:\n loadItems =\n this.loadMoreStep * (this.#loadMoreEventCounter + 1);\n break;\n case LoadMoreMode.PROGRESSIVE_THRESHOLD:\n loadItems =\n Math.max(\n this.#loadMoreEventPreviousQuantity,\n this.loadMoreStep\n ) * Math.min(this.#loadMoreEventCounter + 1, 2);\n break;\n }\n\n if (loadItems > this.loadMoreLimit) {\n loadItems = this.loadMoreLimit;\n }\n\n this.kupLoadMoreClick.emit({\n comp: this,\n id: this.rootElement.id,\n loadItems: loadItems,\n });\n\n this.#loadMoreEventPreviousQuantity = loadItems;\n this.#loadMoreEventCounter++;\n }\n\n #adjustGroupState(): void {\n if (\n !this.#rows ||\n this.#rowsLength === 0 ||\n !this.#rows[0].hasOwnProperty('group')\n ) {\n // no grouping\n return;\n }\n this.#rows.forEach((r) => this.#adjustGroupStateFromRow(r));\n }\n\n #adjustGroupStateFromRow(row: KupDataTableRow): void {\n if (!row || !row.hasOwnProperty('group')) {\n // not a groping row, nothing to do\n return;\n }\n\n const group = row.group;\n\n // check if already in group state\n const groupFromState = this.groupState[group.id];\n\n if (!groupFromState) {\n // add to state\n this.groupState[group.id] = group;\n } else {\n // update expanded\n group.expanded = groupFromState.expanded;\n }\n\n group.children.forEach((child) => this.#adjustGroupStateFromRow(child));\n }\n\n #sortRows(): void {\n this.#rows = sortRows(this.#rows, this.sort);\n }\n\n #getSortIcon(columnName: string): string {\n // check if column in sort array\n for (let sortObj of this.sort) {\n if (sortObj.column === columnName) {\n return 'A' === sortObj.sortMode\n ? `kup-icon ${KupThemeIconValues.DESCENDING.replace(\n '--',\n ''\n )}`\n : `kup-icon ${KupThemeIconValues.ASCENDING.replace(\n '--',\n ''\n )}`;\n }\n }\n\n // default\n return '';\n }\n\n #getSortDecode(columnName: string): string {\n // check if column in sort array\n for (let sortObj of this.sort) {\n if (sortObj.column === columnName) {\n return 'A' === sortObj.sortMode ? 'Ascending' : 'Descending';\n }\n }\n\n // default\n return 'Sort column';\n }\n\n #calculateColspan() {\n let colSpan = this.getVisibleColumns().length;\n\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n colSpan += 1;\n }\n\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(this.commands)\n ) {\n colSpan += 1;\n }\n\n return colSpan;\n }\n\n #isGroupExpanded({ group }: KupDataTableRow): boolean {\n if (!group) {\n return false;\n }\n\n // check if in group state\n if (this.groupState[group.id]) {\n return this.groupState[group.id].expanded;\n } else {\n return false;\n }\n }\n\n //==== Column sort order methods ====\n #handleColumnSort(\n receivingColumn: KupDataColumn,\n sortedColumn: KupDataColumn\n ) {\n // Get receiving column position\n const receivingColIndex = this.data.columns.findIndex(\n (col) =>\n col.name === receivingColumn.name &&\n col.title === receivingColumn.title\n );\n // Get sorted column current position\n const sortedColIndex = this.data.columns.findIndex(\n (col) =>\n col.name === sortedColumn.name &&\n col.title === sortedColumn.title\n );\n\n // Moves the sortedColumn into the correct position\n if (this.sortableColumnsMutateData) {\n this.kupColumnMove.emit({\n comp: this,\n id: this.rootElement.id,\n sourceColumn: this.data.columns[sortedColIndex],\n targetColumn: this.data.columns[receivingColIndex],\n });\n this.#moveSortedColumns(\n this.data.columns,\n receivingColIndex,\n sortedColIndex\n );\n }\n }\n\n /**\n * After a drop of a column header, if the table can update its own data, does so and triggers rerender.\n * @param columns - The columns to sort\n * @param receivingColumnIndex - The index where the column will be inserted\n * @param sortedColumnIndex - The index where the column will be removed\n */\n #moveSortedColumns(\n columns: KupDataColumn[],\n receivingColumnIndex: number,\n sortedColumnIndex: number\n ) {\n const remove = columns.splice(sortedColumnIndex, 1);\n columns.splice(receivingColumnIndex, 0, remove[0]);\n this.refresh();\n }\n\n #handleUpdateClick = (command?: KupDataCell) => {\n this.kupUpdate.emit({\n comp: this,\n id: this.rootElement.id,\n originalData: this.#originalDataLoaded,\n updatedData: getDiffData(this.#originalDataLoaded, this.data, true),\n command: command,\n });\n };\n\n @Method() async defaultSortingFunction(\n columns: KupDataColumn[],\n receivingColumnIndex: number,\n sortedColumnIndex: number,\n useNewObject: boolean = false\n ) {\n const toSort = !useNewObject ? columns : [...columns];\n\n this.#moveSortedColumns(\n toSort,\n receivingColumnIndex,\n sortedColumnIndex\n );\n\n return toSort;\n }\n\n #applyLineBreaks(content: string) {\n // We add a break line before every chunk\n return content\n .split(this.lineBreakCharacter)\n .map((chunk, index) => (index !== 0 ? [<br />, chunk] : chunk));\n }\n\n //======== render methods ========\n /**\n * Given the parameters return the classes and style for each table header cell\n * @param columnName - The name of the columns currently being examinated\n * @param columnIndex - The index of the current column\n * @param extraCells - the extra cells rendered into the table\n */\n #composeHeaderCellClassAndStyle(\n columnIndex: number,\n extraCells: number = 0,\n column: KupDataColumn\n ): {\n columnClass: GenericObject;\n thStyle: GenericObject;\n } {\n let columnClass: GenericObject = { ['header-cell']: true },\n thStyle: GenericObject = column.style ? { ...column.style } : {};\n\n if (\n this.#kupManager.objects.isBar(column.obj) ||\n this.#kupManager.objects.isButton(column.obj) ||\n this.#kupManager.objects.isChart(column.obj) ||\n this.#kupManager.objects.isCheckbox(column.obj) ||\n this.#kupManager.objects.isImage(column.obj) ||\n this.#kupManager.objects.isIcon(column.obj) ||\n this.#kupManager.objects.isProgressBar(column.obj) ||\n this.#kupManager.objects.isRadio(column.obj) ||\n this.#kupManager.objects.isVoCodver(column.obj)\n ) {\n columnClass['header-cell--centered'] = true;\n }\n\n if (this.#kupManager.objects.isNumber(column.obj)) {\n columnClass['header-cell--is-number'] = true;\n }\n\n if (this.#kupManager.objects.isIcon(column.obj)) {\n columnClass['header-cell--is-icon'] = true;\n }\n // For fixed cells styles and classes\n const fixedCellStyle = this.#composeFixedCellStyleAndClass(\n columnIndex + 1 + extraCells,\n columnIndex + 1,\n 0,\n extraCells\n );\n if (fixedCellStyle) {\n columnClass = {\n ...columnClass,\n ...fixedCellStyle.fixedCellClasses,\n };\n thStyle = {\n ...thStyle,\n ...fixedCellStyle.fixedCellStyle,\n };\n }\n\n return {\n columnClass,\n thStyle,\n };\n }\n\n #renderHeader() {\n let specialExtraCellsCount: number = 0;\n\n // Renders multiple selection column\n let multiSelectColumn = null;\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n specialExtraCellsCount++;\n const selectionStyleAndClass = this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n 0,\n 0,\n specialExtraCellsCount - 1\n );\n\n const style = {\n width: '30px',\n margin: '0 auto',\n ...(selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : {}),\n };\n\n multiSelectColumn = (\n <th\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : {}\n }\n style={style}\n >\n <kup-checkbox\n onkup-checkbox-change={(e) => this.#onSelectAll(e)}\n title={\n this.#kupManager.language.translate(\n KupLanguageRow.SELECTED\n ) +\n `: ${this.selectedRows.length},` +\n this.#kupManager.language.translate(\n KupLanguageRow.RENDERED\n ) +\n `: ${this.#renderedRows.length}`\n }\n checked={\n this.selectedRows.length > 0 &&\n this.selectedRows.length ===\n this.#renderedRows.length\n }\n />\n </th>\n );\n }\n\n // Renders action column\n let actionsColumn = null;\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(this.commands)\n ) {\n specialExtraCellsCount++;\n const selectionStyleAndClass = this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n 0,\n 0,\n specialExtraCellsCount - 1\n );\n\n actionsColumn = (\n <th\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : {}\n }\n style={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : {}\n }\n />\n );\n }\n\n // Renders normal cells\n const dataColumns = this.getVisibleColumns().map(\n (column, columnIndex) => {\n const { columnClass, thStyle } =\n this.#composeHeaderCellClassAndStyle(\n columnIndex,\n specialExtraCellsCount,\n column\n );\n\n let filter = null;\n\n if (\n this.#filtersColumnMenuInstance.hasFiltersForColumn(\n this.filters,\n column\n )\n ) {\n const svgLabel =\n this.#kupManager.language.translate(\n KupLanguageGeneric.REMOVE_FILTERS\n ) + `: '${this.#getFilterValueForTooltip(column)}'`;\n filter = (\n <span\n title={svgLabel}\n class={`kup-icon ${KupThemeIconValues.FILTER_REMOVE.replace(\n '--',\n ''\n )}`}\n ></span>\n );\n }\n\n let sortIcon = null;\n\n let iconClass = this.#getSortIcon(column.name);\n if (iconClass !== '') {\n sortIcon = (\n <span\n class={iconClass}\n title={this.#getSortDecode(column.name)}\n ></span>\n );\n }\n columnClass['header-cell--sortable'] = true;\n\n let keyIcon: HTMLSpanElement = null;\n if (column.isKey) {\n keyIcon = (\n <span\n class={`kup-icon ${KupThemeIconValues.KEY.replace(\n '--',\n ''\n )}`}\n title={this.#kupManager.language.translate(\n KupLanguageRow.KEY\n )}\n ></span>\n );\n }\n\n // Sets custom columns width\n if (this.#sizedColumns) {\n for (let i = 0; i < this.#sizedColumns.length; i++) {\n const currentCol = this.#sizedColumns[i];\n\n if (currentCol.name === column.name) {\n const width = currentCol.size + '';\n if (width.indexOf('ch') < 1) {\n thStyle.width = width;\n thStyle.minWidth = width;\n thStyle.maxWidth = width;\n }\n thStyle.overflow = 'hidden';\n break;\n }\n }\n }\n\n return (\n <th\n ref={(el: HTMLElement) => this.#thRefs.push(el)}\n data-cell={column}\n data-column={column.name}\n class={columnClass}\n style={thStyle}\n title={column.name}\n >\n <div class=\"header-cell__content\">\n <span class=\"header-cell__title\">\n {this.#applyLineBreaks(column.title)}\n </span>\n <span class=\"header-cell__icons\">\n {keyIcon}\n {sortIcon}\n {filter}\n </span>\n </div>\n {this.resizableColumns ? (\n <span class=\"header-cell__drag-handler\"></span>\n ) : null}\n </th>\n );\n }\n );\n\n return [multiSelectColumn, actionsColumn, ...dataColumns];\n // return [multiSelectColumn, groupColumn, actionsColumn, ...dataColumns];\n }\n\n #renderStickyHeader() {\n let specialExtraCellsCount: number = 0;\n\n let multiSelectColumn = null;\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n specialExtraCellsCount++;\n const selectionStyleAndClass = this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n 0,\n 0,\n specialExtraCellsCount - 1\n );\n\n const style = {\n width: '30px',\n margin: '0 auto',\n ...(selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : {}),\n };\n multiSelectColumn = (\n <th-sticky\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : null\n }\n style={style}\n >\n <kup-checkbox\n onkup-checkbox-change={(e) => this.#onSelectAll(e)}\n title={\n this.#kupManager.language.translate(\n KupLanguageRow.SELECTED\n ) +\n `: ${this.selectedRows.length},` +\n this.#kupManager.language.translate(\n KupLanguageRow.RENDERED\n ) +\n `: ${this.#renderedRows.length}`\n }\n checked={\n this.selectedRows.length > 0 &&\n this.selectedRows.length ===\n this.#renderedRows.length\n }\n />\n </th-sticky>\n );\n }\n\n // Empty cell for the actions\n let actionsColumn = null;\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(this.commands)\n ) {\n specialExtraCellsCount++;\n const selectionStyleAndClass = this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n 0,\n 0,\n specialExtraCellsCount - 1\n );\n\n actionsColumn = (\n <th-sticky\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : null\n }\n style={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : null\n }\n />\n );\n }\n\n // Composes normal header cells\n const dataColumns = this.getVisibleColumns().map(\n (column, columnIndex) => {\n const { columnClass, thStyle } =\n this.#composeHeaderCellClassAndStyle(\n columnIndex,\n specialExtraCellsCount,\n column\n );\n\n return (\n <th-sticky class={columnClass} style={thStyle}>\n <div class=\"header-cell__content\">\n <span class=\"header-cell__title\">\n {this.#applyLineBreaks(column.title)}\n </span>\n </div>\n </th-sticky>\n );\n }\n );\n\n return [multiSelectColumn, actionsColumn, ...dataColumns];\n }\n\n areTotalsSelected(column: KupDataColumn): boolean {\n return this.totals && this.totals[column.name] ? true : false;\n }\n\n onTotalsChange(event, column) {\n // close menu\n this.#closeTotalMenu();\n if (column) {\n // must do this\n // otherwise does not fire the watcher\n const totalsCopy = { ...this.totals };\n const value = event.detail.selected.id;\n if (value === TotalLabel.CANC) {\n if (this.totals && this.totals[column.name]) {\n delete totalsCopy[column.name];\n }\n } else {\n totalsCopy[column.name] = value;\n }\n this.totals = totalsCopy;\n }\n }\n\n #totalMenuPosition() {\n if (this.rootElement.shadowRoot) {\n const menu: HTMLKupListElement =\n this.rootElement.shadowRoot.querySelector('#totals-menu');\n if (menu) {\n this.#kupManager.dynamicPosition.register(\n menu as unknown as KupDynamicPositionElement,\n this.#totalMenuCoords,\n 0,\n undefined,\n true\n );\n this.#clickCb = {\n cb: () => {\n this.#closeTotalMenu();\n },\n el: menu,\n };\n this.#kupManager.addClickCallback(this.#clickCb, true);\n this.#kupManager.dynamicPosition.start(\n menu as unknown as KupDynamicPositionElement\n );\n menu.menuVisible = true;\n }\n }\n }\n\n #onTotalMenuOpen(column: KupDataColumn) {\n this.#closeTotalMenu();\n this.#openTotalMenu(column);\n }\n\n renderFooter() {\n let extraCells = 0;\n\n // Composes initial cells if necessary\n let selectRowCell = null;\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n extraCells++;\n const fixedCellStyle = this.#composeFixedCellStyleAndClass(\n extraCells,\n 0,\n 0,\n extraCells\n );\n\n selectRowCell = (\n <td\n class={\n fixedCellStyle ? fixedCellStyle.fixedCellClasses : null\n }\n style={\n fixedCellStyle ? fixedCellStyle.fixedCellStyle : null\n }\n />\n );\n }\n\n // Action cell\n let actionsCell = null;\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(this.commands)\n ) {\n extraCells++;\n const selectionStyleAndClass = this.#composeFixedCellStyleAndClass(\n extraCells,\n 0,\n 0,\n extraCells\n );\n actionsCell = (\n <td\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : {}\n }\n style={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : {}\n }\n />\n );\n }\n\n const footerCells = this.getVisibleColumns().map(\n (column: KupDataColumn, columnIndex) => {\n const fixedCellStyle = this.#composeFixedCellStyleAndClass(\n columnIndex + 1 + extraCells,\n columnIndex + 1,\n 0,\n extraCells\n );\n\n let totalMenu = undefined;\n let menuLabel = TotalLabel.CALC;\n const translation = {\n [TotalLabel.AVERAGE]: this.#kupManager.language.translate(\n KupLanguageTotals.AVERAGE\n ),\n [TotalLabel.CALC]: this.#kupManager.language.translate(\n KupLanguageTotals.CALCULATE\n ),\n [TotalLabel.CANC]: this.#kupManager.language.translate(\n KupLanguageTotals.CANCEL\n ),\n [TotalLabel.COUNT]: this.#kupManager.language.translate(\n KupLanguageTotals.COUNT\n ),\n [TotalLabel.DISTINCT]: this.#kupManager.language.translate(\n KupLanguageTotals.DISTINCT\n ),\n [TotalLabel.MATH]: this.#kupManager.language.translate(\n KupLanguageTotals.FORMULA\n ),\n [TotalLabel.MAX]: this.#kupManager.language.translate(\n KupLanguageTotals.MAXIMUM\n ),\n [TotalLabel.MIN]: this.#kupManager.language.translate(\n KupLanguageTotals.MINIMUM\n ),\n [TotalLabel.SUM]: this.#kupManager.language.translate(\n KupLanguageTotals.SUM\n ),\n };\n if (this.totals) {\n const totalValue = this.totals[column.name];\n if (totalValue) {\n if (totalValue.startsWith(TotalMode.MATH)) {\n menuLabel = TotalLabel.MATH;\n } else {\n switch (totalValue) {\n case TotalMode.COUNT:\n menuLabel = TotalLabel.COUNT;\n break;\n case TotalMode.DISTINCT:\n menuLabel = TotalLabel.DISTINCT;\n break;\n case TotalMode.SUM:\n menuLabel = TotalLabel.SUM;\n break;\n case TotalMode.AVERAGE:\n menuLabel = TotalLabel.AVERAGE;\n break;\n case TotalMode.MIN:\n menuLabel = TotalLabel.MIN;\n break;\n case TotalMode.MAX:\n menuLabel = TotalLabel.MAX;\n break;\n default:\n break;\n }\n }\n }\n }\n\n if (this.#isOpenedTotalMenuForColumn(column.name)) {\n const listData: KupListNode[] = [\n {\n id: TotalMode.COUNT,\n value: translation[TotalLabel.COUNT],\n },\n {\n id: TotalMode.DISTINCT,\n value: translation[TotalLabel.DISTINCT],\n },\n ];\n if (this.#kupManager.objects.isNumber(column.obj)) {\n // TODO Move these objects in declarations\n listData.push(\n {\n id: TotalMode.SUM,\n separator: true,\n value: translation[TotalLabel.SUM],\n },\n {\n id: TotalMode.AVERAGE,\n value: translation[TotalLabel.AVERAGE],\n },\n {\n id: TotalMode.MIN,\n value: translation[TotalLabel.MIN],\n },\n {\n id: TotalMode.MAX,\n value: translation[TotalLabel.MAX],\n }\n );\n } else if (this.#kupManager.objects.isDate(column.obj)) {\n listData.push(\n {\n id: TotalMode.MIN,\n separator: true,\n value: translation[TotalLabel.MIN],\n },\n {\n id: TotalMode.MAX,\n value: translation[TotalLabel.MAX],\n }\n );\n }\n if (this.totals) {\n const selectedItem: KupListNode = listData.find(\n (item) => item.id === this.totals[column.name]\n );\n if (selectedItem) {\n selectedItem.selected = true;\n listData.push({\n id: TotalLabel.CANC,\n separator: true,\n value: translation[TotalLabel.CANC],\n });\n }\n }\n\n totalMenu = (\n <kup-list\n class={`total-menu`}\n data={listData}\n id=\"totals-menu\"\n is-menu\n keyboardNavigation={true}\n menu-visible\n onkup-list-click={(event) =>\n this.onTotalsChange(event, column)\n }\n tabindex={0}\n ></kup-list>\n );\n }\n\n // TODO please use getValueForDisplay\n let value;\n const footerValue = this.#footer[column.name];\n if (\n menuLabel === TotalLabel.COUNT ||\n menuLabel === TotalLabel.DISTINCT\n ) {\n value = footerValue;\n } else if (\n (menuLabel === TotalLabel.MAX ||\n menuLabel === TotalLabel.MIN) &&\n this.#kupManager.objects.isDate(column.obj)\n ) {\n if (footerValue) {\n value = footerValue;\n }\n } else {\n value = this.#kupManager.math.numberToFormattedString(\n footerValue,\n column.decimals,\n column.obj ? column.obj.p : ''\n );\n }\n\n return (\n <td\n data-column={column.name}\n class={\n fixedCellStyle && fixedCellStyle.fixedCellClasses\n ? fixedCellStyle.fixedCellClasses\n : ''\n }\n style={\n fixedCellStyle\n ? fixedCellStyle.fixedCellStyle\n : null\n }\n >\n {totalMenu}\n <span\n class=\"totals-value\"\n title={translation[menuLabel]}\n >\n {value}\n </span>\n </td>\n );\n }\n );\n\n const footer = (\n <tfoot>\n <tr>\n {selectRowCell}\n {actionsCell}\n {footerCells}\n </tr>\n </tfoot>\n );\n\n return footer;\n }\n\n #renderRow(\n row: KupDataTableRow,\n level = 0,\n rowCssIndex: number = 0,\n previousRow?: KupDataTableRow\n ) {\n const visibleColumns = this.getVisibleColumns();\n let rowActionsCount: number = 0;\n\n if (row.group) {\n // Composes the label the group must display\n let composedGroupLabel: string;\n switch (this.groupLabelDisplay) {\n case GroupLabelDisplayMode.LABEL:\n composedGroupLabel = row.group.columnLabel;\n break;\n case GroupLabelDisplayMode.VALUE:\n composedGroupLabel = row.group.label;\n break;\n case GroupLabelDisplayMode.BOTH:\n default:\n composedGroupLabel =\n row.group.columnLabel + ' = ' + row.group.label;\n break;\n }\n\n if (row.group.children.length === 0) {\n // empty group\n return null;\n }\n\n const iconClass = row.group.expanded\n ? `kup-icon ${KupThemeIconValues.EXPANDED.replace('--', '')}`\n : `kup-icon ${KupThemeIconValues.COLLAPSED.replace('--', '')}`;\n\n const jsxRows = [];\n\n const indent = [];\n for (let i = 0; i < level; i++) {\n indent.push(<span class=\"indent\" />);\n }\n\n if (this.#hasTotals()) {\n //const colSpan = this.multiSelection ? 2 : 1;\n const cells = [];\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(\n this.commands\n )\n ) {\n cells.push(<td></td>);\n }\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n cells.push(<td></td>);\n }\n // adding 'grouping' cell\n const grouplabelcell = (\n <td colSpan={this.#calculateColspan()}>\n <span class=\"group-cell-content\">\n {indent}\n <span class={iconClass}></span>\n <span class=\"text\">{composedGroupLabel}</span>\n </span>\n </td>\n );\n\n // adding 'totals grouping' cells\n for (let column of visibleColumns) {\n let totalClass = 'total';\n if (row.group.totals[column.name] < 0) {\n totalClass += ' negative-number';\n }\n // TODO please use getValueForDisplay\n let value;\n const totalValue = row.group.totals[column.name];\n if (\n this.totals[column.name] === TotalMode.COUNT ||\n this.totals[column.name] === TotalMode.DISTINCT\n ) {\n value = totalValue;\n } else {\n if (this.#kupManager.objects.isDate(column.obj)) {\n if (totalValue) {\n if (\n this.#kupManager.dates.isIsoDate(totalValue)\n ) {\n value =\n this.#kupManager.dates.format(\n totalValue\n );\n } else {\n console.warn(`invalid date: ${totalValue}`);\n }\n }\n } else {\n value =\n this.#kupManager.math.numberToFormattedString(\n totalValue,\n column.decimals,\n column.obj ? column.obj.p : ''\n );\n }\n }\n cells.push(<td class={totalClass}>{value}</td>);\n }\n\n jsxRows.push(\n <tr\n ref={(el: HTMLElement) => this.#rowsRefs.push(el)}\n data-row={row}\n class=\"group group-label\"\n >\n {grouplabelcell}\n </tr>\n );\n\n // if group is expanded, add children\n\n if (this.#isGroupExpanded(row)) {\n row.group.children\n // We must pass the previous element of the array to check if we must hide or display the value of the cell\n // When the column has specified the parameter hideValuesRepetitions\n .map((row, groupRowIndex, currentArray) =>\n this.#renderRow(\n row,\n level + 1,\n groupRowIndex,\n groupRowIndex > 0\n ? currentArray[groupRowIndex - 1]\n : undefined\n )\n )\n .forEach((jsxRow) => {\n if (Array.isArray(jsxRow)) {\n jsxRow.forEach((jr) => jsxRows.push(jr));\n } else {\n jsxRows.push(jsxRow);\n }\n });\n }\n\n jsxRows.push(\n <tr\n ref={(el: HTMLElement) => this.#rowsRefs.push(el)}\n data-row={row}\n class=\"group group-total\"\n >\n {cells}\n </tr>\n );\n } else {\n jsxRows.push(\n <tr\n ref={(el: HTMLElement) => this.#rowsRefs.push(el)}\n data-row={row}\n class=\"group\"\n >\n <td colSpan={this.#calculateColspan()}>\n <span class=\"group-cell-content\">\n {indent}\n <span class={iconClass}></span>\n <span class=\"text\">{composedGroupLabel}</span>\n </span>\n </td>\n </tr>\n );\n if (this.#isGroupExpanded(row)) {\n row.group.children\n // We must pass the previous element of the array to check if we must hide or display the value of the cell\n // When the column has specified the parameter hideValuesRepetitions\n .map((row, groupRowIndex, currentArray) =>\n this.#renderRow(\n row,\n level + 1,\n groupRowIndex,\n groupRowIndex > 0\n ? currentArray[groupRowIndex - 1]\n : undefined\n )\n )\n .forEach((jsxRow) => {\n if (Array.isArray(jsxRow)) {\n jsxRow.forEach((jr) => jsxRows.push(jr));\n } else {\n jsxRows.push(jsxRow);\n }\n });\n }\n }\n\n // grouping row\n return jsxRows;\n } else {\n //-- The row is normal --\n /**\n * How many control cells there are before the effective cells\n */\n let specialExtraCellsCount: number = 0;\n\n // Renders selection cell\n // IF active, this must be the first cell\n // This is a special cell\n let selectRowCell = null;\n if (this.selection === SelectionMode.MULTIPLE_CHECKBOX) {\n specialExtraCellsCount++;\n const selectionStyleAndClass =\n this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n rowCssIndex,\n specialExtraCellsCount - 1\n );\n const props: FCheckboxProps = {\n checked: this.selectedRows.includes(row),\n onChange: () => {\n this.#handleRowSelect(row);\n },\n };\n\n selectRowCell = (\n <td\n row-select-cell\n class={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellClasses\n : null\n }\n style={\n selectionStyleAndClass\n ? selectionStyleAndClass.fixedCellStyle\n : null\n }\n >\n <FCheckbox {...props} />\n </td>\n );\n }\n\n // Renders action cell\n // If active, this can be either the first or second cell\n let rowActionsCell = null;\n if (\n this.#hasRowActions() ||\n this.#kupManager.data.column.hasCodVer(this.data.columns) ||\n this.#kupManager.data.action.hasCommandsWithBlankObj(\n this.commands\n )\n ) {\n // Increments\n specialExtraCellsCount++;\n const actionsStyleAndClass =\n this.#composeFixedCellStyleAndClass(\n specialExtraCellsCount,\n rowCssIndex,\n specialExtraCellsCount - 1\n );\n\n rowActionsCount += this.rowActions?.length || 0;\n\n const actionsOnRow: FImageProps[] = [];\n if (row.actions) {\n rowActionsCount += row.actions.length;\n } else {\n const rowActions =\n this.#kupManager.data.row.buildRowActions(\n row,\n this.data.columns,\n this.rowActions,\n this.commands ?? []\n );\n\n if (\n this.#kupManager.data.action.checkEveryActionHasOnlyIcon(\n rowActions\n ) ||\n (rowActions.length === 1 && rowActions[0].icon)\n ) {\n rowActions.forEach((action, index) => {\n const imageProp: FImageProps =\n this.#kupManager.data.action.buildImageProp(\n action.icon,\n action.text || action.column?.title || '',\n 'action',\n () => {\n this.kupRowActionItemClick.emit({\n comp: this,\n id: this.rootElement.id,\n row: row,\n obj: action.obj,\n cell: action.cell,\n type: action.type,\n index: index,\n column: action.column,\n });\n }\n );\n actionsOnRow.push(imageProp);\n });\n } else {\n const textPopulatedRowActions =\n this.#kupManager.data.action.createActionsWithText(\n rowActions\n );\n\n const imageProp: FImageProps =\n this.#kupManager.data.action.buildImageProp(\n 'chevron-down',\n this.#kupManager.language.translate(\n KupLanguageGeneric.EXPAND\n ),\n 'expander',\n (e) => {\n this.#onRowActionExpanderClick(\n e,\n row,\n textPopulatedRowActions\n );\n }\n );\n\n actionsOnRow.push(imageProp);\n }\n rowActionsCount++;\n }\n\n rowActionsCell = (\n <td\n row-action-cell\n class={\n actionsStyleAndClass\n ? actionsStyleAndClass.fixedCellClasses\n : null\n }\n style={\n actionsStyleAndClass\n ? actionsStyleAndClass.fixedCellStyle\n : null\n }\n >\n {actionsOnRow.map((action) => (\n <FImage\n {...action}\n color=\"var(--kup-text-secondary)\"\n ></FImage>\n ))}\n </td>\n );\n }\n\n // Renders plain rows cells\n const cells = visibleColumns.map((currentColumn, cellIndex) => {\n const { name, hideValuesRepetitions } = currentColumn;\n const indend = [];\n if (cellIndex === 0) {\n for (let i = 0; i < level; i++) {\n indend.push(<span class=\"indent\" />);\n }\n }\n\n const cell = row.cells[name] ? row.cells[name] : null;\n if (!cell) {\n if (this.autoFillMissingCells) {\n return <td data-column={name} data-row={row}></td>;\n } else {\n return null;\n }\n }\n const fcell = {\n ...this.#kupManager.data.cell.buildFCell(\n cell,\n currentColumn,\n row\n ),\n component: this,\n density: this.density,\n editable: this.editableData || this.updatableData,\n indents: indend,\n previousValue:\n hideValuesRepetitions && previousRow\n ? previousRow.cells[name].value\n : undefined,\n renderKup: this.lazyLoadCells,\n cellActionIcon: this.#kupManager.data.cell.hasActionCell(\n cell,\n this.commands ?? []\n )\n ? {\n onClick: (e: PointerEvent) => {\n this.kupCellActionIconClick.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.#cellActionsMenuHandler(e),\n });\n },\n }\n : null,\n };\n\n const jsxCell = <FCell {...fcell}></FCell>;\n\n // Classes which will be set onto the single data-table cell;\n\n let cellClass: GenericObject = null;\n let cellStyle: GenericObject = { ...cell.style };\n\n //-- For fixed cells --\n const fixedStyles = this.#composeFixedCellStyleAndClass(\n cellIndex + 1 + specialExtraCellsCount,\n cellIndex + 1,\n rowCssIndex,\n specialExtraCellsCount\n );\n if (fixedStyles) {\n cellStyle = Object.assign(\n cellStyle ? cellStyle : {},\n fixedStyles.fixedCellStyle\n );\n cellClass = {\n ...cellClass,\n ...fixedStyles.fixedCellClasses,\n };\n }\n\n // Controls if there are columns with a specified width\n if (this.#sizedColumns) {\n let colWidth: string = '';\n\n // Search if this column has a specified width\n for (let j = 0; j < this.#sizedColumns.length; j++) {\n if (name === this.#sizedColumns[j].name) {\n colWidth = this.#sizedColumns[j].size;\n break;\n }\n }\n\n // Specific width has been found\n if (colWidth) {\n if (!cellStyle) {\n cellStyle = {};\n }\n\n // Sets the width.\n // Search for \"auto-width\" class inside the scss file of this component for more details about this\n cellStyle['max-width'] = colWidth;\n cellStyle['min-width'] = colWidth;\n cellStyle['width'] = colWidth;\n }\n }\n let eventHandlers = undefined;\n let title: string = undefined;\n\n cellClass = {\n ...cellClass,\n };\n\n return (\n <td\n title={title}\n colSpan={\n cell.span && cell.span.col ? cell.span.col : null\n }\n rowSpan={\n cell.span && cell.span.row ? cell.span.row : null\n }\n data-cell={cell}\n data-column={name}\n data-row={row}\n style={cellStyle}\n class={cellClass}\n {...eventHandlers}\n >\n {jsxCell}\n </td>\n );\n });\n // adding row to rendered rows\n this.#renderedRows.push(row);\n\n const rowClass = {\n selected: this.selectedRows.includes(row),\n };\n\n if (row.cssClass) {\n rowClass[row.cssClass] = true;\n }\n\n return (\n <tr\n ref={(el: HTMLElement) => this.#rowsRefs.push(el)}\n data-row={row}\n class={rowClass}\n >\n {selectRowCell}\n {rowActionsCell}\n {cells}\n </tr>\n );\n }\n }\n\n #onCustomSettingsClick() {\n if (!this.openedCustomSettings) {\n this.#openCustomSettings();\n } else {\n this.#closeCustomSettings();\n }\n }\n\n #openCustomSettings() {\n this.#customizeTopPanelRef.menuVisible = true;\n this.#customizeTopButtonRef.classList.add('toggled');\n this.#kupManager.dynamicPosition.start(\n this.#customizeTopPanelRef as KupDynamicPositionElement\n );\n this.openedCustomSettings = true;\n if (!this.#clickCbCustomPanel) {\n this.#clickCbCustomPanel = {\n cb: () => {\n this.#closeCustomSettings();\n },\n el: this.#customizeTopPanelRef,\n };\n }\n this.#kupManager.addClickCallback(this.#clickCbCustomPanel, true);\n }\n\n #closeCustomSettings() {\n this.#customizeTopButtonRef.classList.remove('toggled');\n if (this.#customizeTopPanelRef == null) {\n return;\n }\n this.#customizeTopPanelRef.menuVisible = false;\n this.openedCustomSettings = false;\n this.#kupManager.removeClickCallback(this.#clickCbCustomPanel);\n }\n\n #renderPaginator(top: boolean) {\n return (\n <div class=\"paginator-wrapper\">\n <div class=\"paginator-tabs\">\n {this.showLoadMore ||\n (!this.lazyLoadRows &&\n this.#rowsLength > this.rowsPerPage) ? (\n <FPaginator\n id={top ? 'top-paginator' : 'bottom-paginator'}\n currentPage={this.currentPage}\n max={this.#rowsLength}\n perPage={\n this.currentRowsPerPage\n ? this.currentRowsPerPage\n : this.rowsPerPage\n }\n onLoadMore={\n this.showLoadMore\n ? () => {\n this.#onLoadMoreClick();\n }\n : null\n }\n onNextPage={() =>\n this.#handlePageChange(this.currentPage + 1)\n }\n onPrevPage={() =>\n this.#handlePageChange(this.currentPage - 1)\n }\n onPageChange={(\n e: CustomEvent<KupComboboxEventPayload>\n ) => this.#handlePageChange(e.detail.value)}\n onRowsChange={(\n e: CustomEvent<KupComboboxEventPayload>\n ) => this.#handleRowsPerPageChange(e.detail.value)}\n />\n ) : null}\n </div>\n </div>\n );\n }\n\n renderCustomizePanel() {\n let density: HTMLElement = undefined;\n let fontsize: HTMLElement = undefined;\n let grid: HTMLElement = undefined;\n let transpose: HTMLElement = undefined;\n let totalsMatrix: HTMLElement = undefined;\n if (this.openedCustomSettings) {\n density = this.#renderDensityPanel();\n fontsize = this.#renderFontSizePanel();\n grid = this.#renderGridPanel();\n transpose = this.#renderTransposeSwitch();\n if (this.totals && this.groups.length > 0) {\n totalsMatrix = this.#renderTotalsMatrix();\n }\n }\n\n return (\n <kup-card\n customStyle=\"::slotted(kup-switch) { width: max-content !important; } ::slotted(*) { margin: auto !important; } ::slotted(.customize-element) { margin: auto !important; padding: 0 1em 1em 1em !important; width: max-content !important; } ::slotted(.customize-element):nth-child(1) { padding-top: 1em !important; }\"\n isMenu={true}\n layoutFamily={KupCardFamily.FREE}\n ref={(el) => {\n this.#customizeTopPanelRef = el;\n }}\n sizeX=\"360px\"\n sizeY=\"300px\"\n >\n {density}\n {grid}\n {fontsize}\n {transpose}\n <kup-switch\n class=\"customize-element\"\n checked={this.dragEnabled}\n label={this.#kupManager.language.translate(\n KupLanguageGeneric.DRAG_AND_DROP\n )}\n leadingLabel={true}\n onkup-switch-change={() =>\n (this.dragEnabled = !this.dragEnabled)\n }\n ></kup-switch>\n <kup-switch\n class=\"customize-element\"\n checked={this.editableData}\n label={this.#kupManager.language.translate(\n KupLanguageGeneric.EDITABLE\n )}\n leadingLabel={true}\n onkup-switch-change={() =>\n (this.editableData = !this.editableData)\n }\n ></kup-switch>\n <div\n style={{\n display: 'grid',\n 'grid-template-columns': 'repeat(2, auto)',\n width: 'max-content',\n }}\n >\n <kup-button\n title={\n this.#kupManager.language.translate(\n KupLanguageGeneric.TOGGLE\n ) +\n ' Magic Box ' +\n '(' +\n this.#kupManager.language.translate(\n KupLanguageGeneric.EXPERIMENTAL_FEAT\n ) +\n ')'\n }\n icon=\"auto-fix\"\n onkup-button-click={() =>\n this.#kupManager.toggleMagicBox()\n }\n />\n {this.#kupManager.enableExperimentalFeatures &&\n this.#kupManager.openAI &&\n this.#kupManager.openAI.url ? (\n <kup-button\n title={\n this.#kupManager.language.translate(\n KupLanguageGeneric.TOGGLE\n ) +\n ' ' +\n this.#kupManager.language.translate(\n KupLanguageGeneric.AI_ASSISTANT\n ) +\n ' (' +\n this.#kupManager.language.translate(\n KupLanguageGeneric.EXPERIMENTAL_FEAT\n ) +\n ')'\n }\n icon=\"smeup-ai\"\n onkup-button-click={() => {\n this.#kupManager.openAI.show({\n context: this.rootElement.tagName,\n dataset: this.data,\n });\n this.#closeCustomSettings();\n }}\n />\n ) : null}\n </div>\n {totalsMatrix}\n </kup-card>\n );\n }\n\n #columnRemoveArea(): HTMLDivElement {\n return (\n <div\n class=\"droparea__remove\"\n ref={(el) => (this.#removeDropareaRef = el)}\n >\n <FImage\n resource=\"delete\"\n color={`var(${KupThemeColorValues.DANGER})`}\n sizeX=\"30px\"\n sizeY=\"50px\"\n />\n <FImage\n resource=\"delete-empty\"\n color={`var(${KupThemeColorValues.DANGER})`}\n sizeX=\"30px\"\n sizeY=\"50px\"\n />\n </div>\n );\n }\n\n #columnGroupArea(): HTMLDivElement {\n return (\n <div\n class=\"droparea__groups\"\n ref={(el) => (this.#groupsDropareaRef = el)}\n >\n <FImage\n resource=\"bookmark\"\n color={`var(${KupThemeColorValues.TEXT})`}\n sizeX=\"30px\"\n sizeY=\"50px\"\n />\n <FImage\n resource=\"book\"\n color={`var(${KupThemeColorValues.TEXT})`}\n sizeX=\"30px\"\n sizeY=\"50px\"\n />\n </div>\n );\n }\n\n #hideShowColumnDropArea(show: boolean, th?: HTMLElement) {\n if (show && th && (this.removableColumns || this.showGroups)) {\n this.#dropareaRef.classList.add('droparea--visible');\n this.#kupManager.dynamicPosition.register(\n this.#dropareaRef as KupDynamicPositionElement,\n th,\n 10,\n KupDynamicPositionPlacement.TOP\n );\n this.#kupManager.dynamicPosition.start(\n this.#dropareaRef as KupDynamicPositionElement\n );\n this.#dropareaRef.style.marginLeft =\n th.clientWidth / 2 - this.#dropareaRef.clientWidth / 2 + 'px';\n } else {\n this.#dropareaRef.classList.remove('droparea--visible');\n +this.#kupManager.dynamicPosition.stop(\n this.#dropareaRef as KupDynamicPositionElement\n );\n }\n }\n\n #handleColumnGroup(column2group: KupDataColumn) {\n // Get sorted column current position\n this.getVisibleColumns();\n const columnX = this.getVisibleColumns().find(\n (col) =>\n col.name === column2group.name &&\n col.title === column2group.title\n );\n if (columnX) {\n let found: boolean = false;\n for (let i = 0; i < this.groups.length; i++) {\n if (this.groups[i].column == columnX.name) {\n found = true;\n break;\n }\n }\n if (!found) {\n this.groups.push({ column: columnX.name, visible: true });\n this.groups = [...this.groups];\n this.refresh();\n }\n }\n }\n\n #transcodeItem(\n item: string | ShowGrid,\n searchIn: Array<string>,\n returnFrom: Array<string>\n ): string {\n for (let i = 0; i < searchIn.length; i++) {\n const tmpCode = searchIn[i];\n if (tmpCode == item && i < returnFrom.length) {\n return returnFrom[i];\n }\n }\n return item;\n }\n\n #createListData(\n codes: Array<string>,\n icons: Array<string>,\n selectedCode: string\n ): KupListNode[] {\n const listItems: KupListNode[] = [];\n for (let i = 0; i < codes.length; i++) {\n let value: KupLanguageKey = null;\n switch (codes[i]) {\n //This whole customization panel thingy must be purged, for now -- it's ugly\n case 'big':\n value = KupLanguageFontsize.BIG;\n break;\n case 'Col':\n value = KupLanguageGrid.COLUMN;\n break;\n case 'Complete':\n value = KupLanguageGrid.COMPLETE;\n break;\n case 'dense':\n value = KupLanguageDensity.DENSE;\n break;\n case 'medium':\n value = KupLanguageDensity.MEDIUM;\n break;\n case 'None':\n value = KupLanguageGrid.NONE;\n break;\n case 'small':\n value = KupLanguageFontsize.SMALL;\n break;\n case 'Row':\n value = KupLanguageGrid.ROW;\n break;\n case 'wide':\n value = KupLanguageDensity.WIDE;\n break;\n }\n if (value) {\n listItems[i] = {\n icon: icons[i],\n id: codes[i],\n selected: selectedCode == codes[i],\n value: this.#kupManager.language.translate(value),\n };\n }\n }\n return listItems;\n }\n\n #FONTSIZE_CODES: Array<string> = ['small', 'medium', 'big'];\n #FONTSIZE_DECODES: Array<string> = ['Small', 'Medium', 'Big'];\n #FONTSIZE_ICONS: Array<string> = [\n 'format-font-size-decrease',\n 'format-color-text',\n 'format-font-size-increase',\n ];\n\n #getFontSizeCodeFromDecode(decode: string): string {\n return this.#transcodeItem(\n decode,\n this.#FONTSIZE_DECODES,\n this.#FONTSIZE_CODES\n );\n }\n\n #renderFontSizePanel() {\n const listItems: KupListNode[] = this.#createListData(\n this.#FONTSIZE_CODES,\n this.#FONTSIZE_ICONS,\n this.fontsize\n );\n\n const listData = { data: listItems, showIcons: true };\n\n const textfieldData = {\n trailingIcon: true,\n label: this.#kupManager.language.translate(\n KupLanguageFontsize.LABEL\n ),\n icon: 'arrow_drop_down',\n };\n const data = { 'kup-text-field': textfieldData, 'kup-list': listData };\n let text: KupLanguageFontsize = null;\n switch (this.fontsize) {\n //This whole customization panel thingy must be purged, for now -- it's ugly\n case 'big':\n text = KupLanguageFontsize.BIG;\n break;\n case 'medium':\n text = KupLanguageFontsize.MEDIUM;\n break;\n case 'small':\n text = KupLanguageFontsize.SMALL;\n break;\n }\n return (\n <div class=\"customize-element fontsize-panel\">\n <kup-combobox\n isSelect={true}\n data={data}\n initialValue={this.#kupManager.language.translate(text)}\n onkup-combobox-itemclick={(\n e: CustomEvent<KupComboboxEventPayload>\n ) => {\n e.stopPropagation();\n this.fontsize = this.#getFontSizeCodeFromDecode(\n e.detail.node.id\n );\n }}\n />\n </div>\n );\n }\n\n #DENSITY_DECODES: Array<string> = ['Dense', 'Medium', 'Wide'];\n #DENSITY_ICONS: Array<string> = [\n 'format-align-justify',\n 'reorder-horizontal',\n 'view-sequential',\n ];\n\n #getDensityCodeFromDecode(decode: string): string {\n return this.#transcodeItem(decode, this.#DENSITY_DECODES, [\n 'dense',\n 'medium',\n 'wide',\n ]);\n }\n\n #renderDensityPanel() {\n const listItems: KupListNode[] = this.#createListData(\n ['dense', 'medium', 'wide'],\n this.#DENSITY_ICONS,\n this.density\n );\n\n const listData = { data: listItems, showIcons: true };\n\n const textfieldData = {\n trailingIcon: true,\n label: this.#kupManager.language.translate(\n KupLanguageDensity.LABEL\n ),\n icon: 'arrow_drop_down',\n };\n const data = { 'kup-text-field': textfieldData, 'kup-list': listData };\n let text: KupLanguageDensity = null;\n switch (this.density) {\n //This whole customization panel thingy must be purged, for now -- it's ugly\n case 'dense':\n text = KupLanguageDensity.DENSE;\n break;\n case 'medium':\n text = KupLanguageDensity.MEDIUM;\n break;\n case 'wide':\n text = KupLanguageDensity.WIDE;\n break;\n }\n return (\n <div class=\"customize-element density-panel\">\n <kup-combobox\n isSelect={true}\n initialValue={this.#kupManager.language.translate(text)}\n selectMode={ItemsDisplayMode.DESCRIPTION}\n data={data}\n onkup-combobox-itemclick={(\n e: CustomEvent<KupComboboxEventPayload>\n ) => {\n e.stopPropagation();\n this.density = this.#getDensityCodeFromDecode(\n e.detail.node.id\n ) as FCellPadding;\n }}\n />\n </div>\n );\n }\n\n #GRID_CODES: Array<string> = ['Complete', 'Col', 'Row', 'None'];\n #GRID_DECODES: Array<string> = ['Complete', 'Columns', 'Rows', 'None'];\n #GRID_ICONS: Array<string> = [\n 'grid_on',\n 'view_column',\n 'view_headline',\n 'grid_off',\n ];\n\n #getGridCodeFromDecode(decode: string): string {\n return this.#transcodeItem(\n decode,\n this.#GRID_DECODES,\n this.#GRID_CODES\n );\n }\n\n #renderTransposeSwitch() {\n return (\n <div class=\"customize-element grid-panel\">\n <kup-switch\n checked={this.transpose}\n label={this.#kupManager.language.translate(\n KupLanguageGeneric.TRANSPOSE_DATA\n )}\n leadingLabel={true}\n onkup-switch-change={(e: CustomEvent) => {\n e.stopPropagation();\n if (e.detail.value === 'on') {\n this.transpose = true;\n } else {\n this.transpose = false;\n }\n }}\n />\n </div>\n );\n }\n\n #renderTotalsMatrix() {\n return (\n <div class=\"customize-element grid-panel\">\n <kup-button\n title={\n this.#kupManager.language.translate(\n KupLanguageGeneric.TOTALS_TABLE\n ) +\n ' (' +\n this.#kupManager.language.translate(\n KupLanguageGeneric.EXPERIMENTAL_FEAT\n ) +\n ')'\n }\n label={this.#kupManager.language.translate(\n KupLanguageGeneric.TOTALS_TABLE\n )}\n icon=\"exposure\"\n onkup-button-click={() => this.#switchToTotalsMatrix()}\n />\n </div>\n );\n }\n\n #renderGridPanel() {\n const listItems: KupListNode[] = this.#createListData(\n this.#GRID_CODES,\n this.#GRID_ICONS,\n this.showGrid\n );\n\n const listData = { data: listItems, showIcons: true };\n\n const textfieldData = {\n trailingIcon: true,\n label: this.#kupManager.language.translate(KupLanguageGrid.LABEL),\n icon: 'arrow_drop_down',\n };\n const data = { 'kup-text-field': textfieldData, 'kup-list': listData };\n let text: KupLanguageGrid = null;\n switch (this.showGrid) {\n //This whole customization panel thingy must be purged, for now -- it's ugly\n case ShowGrid.COL:\n text = KupLanguageGrid.COLUMN;\n break;\n case ShowGrid.COMPLETE:\n text = KupLanguageGrid.COMPLETE;\n break;\n case ShowGrid.NONE:\n text = KupLanguageGrid.NONE;\n break;\n case ShowGrid.ROW:\n text = KupLanguageGrid.ROW;\n break;\n }\n return (\n <div class=\"customize-element grid-panel\">\n <kup-combobox\n isSelect={true}\n initialValue={this.#kupManager.language.translate(text)}\n data={data}\n onkup-combobox-itemclick={(e: CustomEvent) => {\n e.stopPropagation();\n const grid: any = this.#getGridCodeFromDecode(\n e.detail.value\n );\n this.showGrid = grid;\n }}\n />\n </div>\n );\n }\n\n #renderCommandButton(commandObj: KupDataCommand, styling: FButtonStyling) {\n return (\n <kup-button\n styling={styling}\n onKup-button-click={() => this.#handleUpdateClick(commandObj)}\n keyShortcut={commandObj.data?.keyShortcut}\n icon={commandObj.icon}\n label={commandObj.value}\n />\n );\n }\n\n #renderCommandDropDownButton(\n commandObj: KupDataCommand,\n styling: FButtonStyling\n ) {\n const data = {\n 'kup-list': {\n showIcons: true,\n data: commandObj.children.map((c) => {\n return {\n ...c,\n data: {\n label: c.value,\n ...c.data,\n },\n id: c.obj.k,\n };\n }),\n },\n };\n return (\n <kup-dropdown-button\n {...commandObj.data}\n styling={styling}\n sizing={KupComponentSizing.MEDIUM}\n label={commandObj.value}\n data={data}\n onkup-dropdownbutton-itemclick={(\n e: CustomEvent<KupDropdownButtonEventPayload>\n ) => {\n this.#handleUpdateClick(e.detail.node);\n }}\n ></kup-dropdown-button>\n );\n }\n\n #renderUpdateButtons() {\n const styling: FButtonStyling = FButtonStyling.FLAT;\n\n const createRowWithInputFields = (): KupDataRow => {\n let row: KupDataRow = { cells: {} };\n this.#originalDataLoaded?.columns.forEach((c) => {\n (row.cells[c.name] as Omit<KupDataCell, 'value'>) = {\n shape: FCellShapes.INPUT_FIELD,\n obj: { ...c.obj },\n isEditable: true,\n };\n });\n return row;\n };\n\n const addRowHandler = async () => {\n let newRow: KupDataRow;\n const selectedRows = await this.getSelectedRows();\n if (selectedRows.length > 0) {\n newRow = JSON.parse(JSON.stringify(selectedRows[0]));\n } else if (this.#originalDataLoaded?.rows?.length > 0) {\n newRow = JSON.parse(\n JSON.stringify(this.#originalDataLoaded.rows[0])\n );\n } else {\n newRow = createRowWithInputFields();\n }\n Object.values(newRow.cells).forEach((cell) => {\n if (selectedRows.length == 0) {\n cell.value = '';\n }\n });\n newRow.id = (\n this.#originalDataLoadedMaxId + ++this.#insertCount\n ).toString();\n this.insertNewRow(newRow, true);\n };\n\n const deleteRowHandler = async () => {\n const ids: string[] = (await this.getSelectedRows()).map(\n (row) => row.id\n );\n this.deleteRows(ids);\n };\n\n const addConfirmButton = () => {\n this.#kupManager.keysBinding.register('enter', () =>\n this.#handleUpdateClick()\n );\n commandButtons.push(\n <kup-button\n styling={styling}\n icon=\"check\"\n onKup-button-click={() => {\n this.#handleUpdateClick();\n }}\n label={this.#kupManager.language.translate(\n KupLanguageGeneric.CONFIRM\n )}\n />\n );\n };\n\n const addCommands = () => {\n this.data?.setup?.commands?.forEach((commandObj) => {\n commandButtons.push(\n commandObj?.children && commandObj?.children.length > 0\n ? this.#renderCommandDropDownButton(commandObj, styling)\n : this.#renderCommandButton(commandObj, styling)\n );\n });\n };\n\n const addOperations = () => {\n const operationList = this.data?.setup?.operations;\n const operations = {\n insert: {\n enabled: operationList?.insert,\n icon: 'add',\n title: this.#kupManager.language.translate(\n KupLanguageGeneric.ROW_ADD\n ),\n onClickHandler: () => addRowHandler(),\n },\n delete: {\n enabled: operationList?.delete,\n icon: 'minus',\n title: this.#kupManager.language.translate(\n KupLanguageGeneric.ROW_DELETE\n ),\n onClickHandler: () => deleteRowHandler(),\n },\n };\n\n Object.values(operations)\n .filter((op) => op.enabled)\n .forEach((op) => {\n commandButtons.push(\n <kup-button\n styling={styling}\n icon={op.icon}\n title={op.title}\n onKup-button-click={op.onClickHandler}\n />\n );\n });\n };\n\n let commandButtons = [];\n\n addConfirmButton();\n addCommands();\n addOperations();\n\n return <div class=\"commands\">{commandButtons}</div>;\n }\n\n render() {\n this.#thRefs = [];\n this.#rowsRefs = [];\n this.#renderedRows = [];\n let elStyle = undefined;\n let actionWrapperWidth = undefined;\n this.#sizedColumns = this.#getSizedColumns();\n\n this.#kupManager.keysBinding.unregister('enter');\n\n let rows = null;\n if (this.#paginatedRowsLength === 0) {\n rows = (\n <tr ref={(el: HTMLElement) => this.#rowsRefs.push(el)}>\n <td colSpan={this.#calculateColspan()}>\n {this.emptyDataLabel}\n </td>\n </tr>\n );\n } else {\n rows = [];\n this.#paginatedRows\n // We must pass the previous element of the array to check if we must hide or display the value of the cell\n // When the column has specified the parameter hideValuesRepetitions\n .map((row, rowIndex, currentArray) =>\n this.#renderRow(\n row,\n 0,\n rowIndex + 1,\n rowIndex > 0 ? currentArray[rowIndex - 1] : null\n )\n )\n .forEach((jsxRow) => {\n if (Array.isArray(jsxRow)) {\n jsxRow.forEach((jr) => rows.push(jr));\n } else {\n rows.push(jsxRow);\n }\n });\n }\n\n // header\n // for multi selection purposes, this should be called before this.renderedRows has been evaluated\n const header = this.#renderHeader();\n const stickyHeader = this.#renderStickyHeader();\n\n let paginatorTop = undefined;\n let paginatorBottom = undefined;\n if (\n (!this.lazyLoadRows && this.#rowsLength > this.rowsPerPage) ||\n this.showCustomization ||\n this.showLoadMore\n ) {\n if (\n PaginatorPos.TOP === this.paginatorPos ||\n PaginatorPos.BOTH === this.paginatorPos\n ) {\n paginatorTop = this.#renderPaginator(true);\n }\n\n if (\n PaginatorPos.BOTTOM === this.paginatorPos ||\n PaginatorPos.BOTH === this.paginatorPos\n ) {\n paginatorBottom = this.#renderPaginator(false);\n }\n }\n\n let groupChips = null;\n if (this.#isGrouping()) {\n const chipsData = [];\n for (let index = 0; index < this.groups.length; index++) {\n const group = this.groups[index];\n const column = getColumnByName(this.getColumns(), group.column);\n if (column) {\n chipsData.push({\n value: column.title,\n id: column.name,\n checked: true,\n });\n } else {\n this.#kupManager.debug.logMessage(\n this,\n 'Grouped for a non-existent column! (' +\n group.column +\n ')',\n KupDebugCategory.WARNING\n );\n }\n }\n if (chipsData.length > 0) {\n const props: FChipsProps = {\n data: chipsData,\n id: 'group-chips',\n type: FChipType.INPUT,\n onIconClick: [],\n };\n for (let i = 0; i < chipsData.length; i++) {\n props.onIconClick.push(() => this.#removeGroup(i));\n }\n groupChips = <FChip {...props}></FChip>;\n }\n }\n\n const tableClass = {\n // Class to specify whether the table should have width: auto or not.\n // Mandatory to check with custom column size.\n 'auto-width': this.#tableHasAutoWidth(),\n 'column-separation':\n ShowGrid.COMPLETE === this.showGrid ||\n ShowGrid.COL === this.showGrid,\n // When there are columns with a specified width, we must add table-layout: fixed to force the table to respect them\n 'row-separation':\n ShowGrid.COMPLETE === this.showGrid ||\n ShowGrid.ROW === this.showGrid,\n\n 'persistent-header':\n this.headerIsPersistent &&\n this.tableHeight === undefined &&\n this.tableWidth === undefined,\n\n 'custom-size': !!this.tableHeight || !!this.tableWidth,\n\n 'border-top': !this.showHeader,\n };\n\n const wrapClass = tableClass['auto-width'] ? 'auto-width' : '';\n\n tableClass[`density-${this.density}`] = true;\n tableClass[`fontsize-${this.fontsize}`] = true;\n\n if (this.tableHeight && this.tableHeight !== '100%') {\n elStyle = {\n ...elStyle,\n height: this.tableHeight,\n overflow: 'auto',\n };\n }\n\n if (this.tableWidth && this.tableHeight !== '100%') {\n elStyle = {\n ...elStyle,\n width: this.tableWidth,\n overflow: 'auto',\n };\n actionWrapperWidth = {\n ...actionWrapperWidth,\n width: this.tableWidth,\n overflow: 'auto',\n };\n }\n\n let stickyEl = undefined;\n if (\n this.headerIsPersistent &&\n this.tableHeight === undefined &&\n this.tableWidth === undefined\n ) {\n stickyEl = (\n <sticky-header\n class=\"hover-scrolling-child\"\n hidden={!this.showHeader}\n ref={(el: HTMLTableSectionElement) =>\n (this.#stickyTheadRef = el as any)\n }\n >\n <thead-sticky>\n <tr-sticky>{stickyHeader}</tr-sticky>\n </thead-sticky>\n </sticky-header>\n );\n }\n\n let belowClass = 'below-wrapper';\n if (!!this.tableHeight || !!this.tableWidth) {\n belowClass += ' custom-size';\n }\n\n const autoselectOnAction = (e: CustomEvent<FCellEventPayload>) => {\n if (!this.updatableData) {\n if (e && e.detail && e.detail.row) {\n const row = e.detail.row;\n if (!this.selectedRows.includes(row)) {\n if (\n this.selection ===\n SelectionMode.MULTIPLE_CHECKBOX ||\n this.selection === SelectionMode.MULTIPLE\n ) {\n this.selectedRows.push(row);\n } else {\n this.selectedRows = [row];\n }\n }\n if (e.type === 'kup-cell-input') {\n this.refresh();\n }\n }\n }\n };\n\n const compCreated = (\n <Host\n onKup-cell-input={autoselectOnAction}\n onKup-cell-update={autoselectOnAction}\n >\n <style>\n {this.#kupManager.theme.setKupStyle(\n this.rootElement as KupComponent\n )}\n </style>\n {this.updatableData ? this.#renderUpdateButtons() : null}\n <div id={componentWrapperId} class={wrapClass}>\n <div class=\"group-wrapper\">{groupChips}</div>\n <div class=\"actions-wrapper\" style={actionWrapperWidth}>\n {this.globalFilter ? (\n <div id=\"global-filter\">\n <FTextField\n fullWidth={true}\n icon={KupThemeIconValues.SEARCH}\n label={this.#kupManager.language.translate(\n KupLanguageSearch.SEARCH\n )}\n value={this.globalFilterValue}\n onInput={(event) => {\n const t: EventTarget = event.target;\n window.clearTimeout(\n this.#globalFilterTimeout\n );\n this.#globalFilterTimeout =\n window.setTimeout(\n () =>\n this.#onGlobalFilterChange(\n t\n ),\n 600,\n t\n );\n }}\n />\n </div>\n ) : null}\n <div class=\"above-wrapper paginator-top\">\n {paginatorTop}\n </div>\n {this.insertMode !== '' &&\n this.selectedRows.length > 0 ? (\n <FButton\n icon=\"save\"\n onClick={() => {\n this.kupSave.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n });\n }}\n styling={FButtonStyling.FLAT}\n sizing={KupComponentSizing.MEDIUM}\n title=\"Save\"\n wrapperClass=\"save-button\"\n ></FButton>\n ) : null}\n {this.showDeleteButton &&\n this.selectedRows.length > 0 ? (\n <FButton\n icon=\"delete\"\n onClick={() => {\n this.#rowsDelete();\n }}\n styling={FButtonStyling.FLAT}\n sizing={KupComponentSizing.MEDIUM}\n title=\"Delete selected rows\"\n wrapperClass=\"delete-button\"\n ></FButton>\n ) : null}\n {this.showHistoryButton ? (\n <FButton\n icon=\"history\"\n onClick={() => {\n this.kupHistory.emit({\n comp: this,\n id: this.rootElement.id,\n selectedRows: this.selectedRows,\n });\n }}\n styling={FButtonStyling.FLAT}\n sizing={KupComponentSizing.MEDIUM}\n title=\"History\"\n wrapperClass=\"history-button\"\n ></FButton>\n ) : null}\n {this.insertMode !== '' ? (\n <FButton\n label=\"Crea nuovo\"\n // icon=\"plus\"\n onClick={async () => {\n if (this.insertMode === 'form') {\n this.#rowInsertForm();\n } else {\n this.#insertCount++;\n const cells: KupDataRowCells = {};\n for (\n let index = 0;\n index < this.data.columns.length;\n index++\n ) {\n const column =\n this.data.columns[index];\n cells[column.name] = {\n data: column.cellData\n ? JSON.parse(\n JSON.stringify(\n column.cellData\n )\n )\n : undefined,\n slotData: column.cellSlotData\n ? JSON.parse(\n JSON.stringify(\n column.cellSlotData\n )\n )\n : undefined,\n isEditable:\n column.isKey ||\n column.isEditable,\n obj: { ...column.obj },\n shape: column.shape,\n value: '',\n };\n }\n const row = {\n cells,\n id:\n this.#INSERT_PREFIX +\n this.#insertCount,\n };\n this.data.rows.unshift(row);\n await this.refresh(true);\n }\n }}\n sizing={KupComponentSizing.MEDIUM}\n styling={FButtonStyling.RAISED}\n title=\"Insert row\"\n wrapperClass=\"insert-button\"\n ></FButton>\n ) : null}\n </div>\n <div\n class=\"droparea\"\n ref={(el) => (this.#dropareaRef = el)}\n >\n {this.showGroups ? this.#columnGroupArea() : null}\n {this.removableColumns\n ? this.#columnRemoveArea()\n : null}\n </div>\n <div\n style={elStyle}\n class={belowClass}\n ref={(el: HTMLElement) =>\n (this.#tableAreaRef = el as KupScrollOnHoverElement)\n }\n >\n {this.showCustomization\n ? [\n <div\n class=\"settings-trigger\"\n onClick={() => {\n this.#onCustomSettingsClick();\n }}\n ref={(el) => {\n this.#customizeTopButtonRef =\n el as any;\n }}\n >\n <FImage\n color={`var(${KupThemeColorValues.TITLE})`}\n resource=\"settings\"\n sizeX=\"10px\"\n />\n </div>,\n this.renderCustomizePanel(),\n ]\n : null}\n <table\n class={tableClass}\n ref={(el: HTMLTableElement) =>\n (this.#tableRef = el)\n }\n onMouseLeave={(ev) => {\n ev.stopPropagation();\n }}\n onPointerDown={(e) => {\n this.#lastPointerDetails =\n this.#getEventDetails(\n this.#kupManager.getEventPath(\n e.target,\n this.rootElement\n ),\n e as unknown as Interact.PointerEvent\n );\n }}\n onPointerUp={(e) => {\n this.#lastPointerDetails =\n this.#getEventDetails(\n this.#kupManager.getEventPath(\n e.target,\n this.rootElement\n ),\n e as unknown as Interact.PointerEvent\n );\n }}\n onContextMenu={(e: MouseEvent) => {\n e.preventDefault();\n }}\n >\n <thead\n hidden={!this.showHeader}\n ref={(el) => (this.#theadRef = el as any)}\n >\n <tr>{header}</tr>\n </thead>\n <tbody>{rows}</tbody>\n {this.showFooter || this.#hasTotals()\n ? this.renderFooter()\n : null}\n </table>\n {stickyEl}\n </div>\n {paginatorBottom}\n </div>\n </Host>\n );\n return compCreated;\n }\n\n disconnectedCallback() {\n this.#kupManager.interact.unregister(\n this.#interactableDrag.concat(\n this.#interactableDrop,\n this.#interactableResize,\n this.#interactableTouch\n )\n );\n this.#kupManager.language.unregister(this);\n this.#kupManager.theme.unregister(this);\n const dynamicPositionElements: NodeListOf<KupDynamicPositionElement> =\n this.rootElement.shadowRoot.querySelectorAll(\n '[' + kupDynamicPositionAttribute + ']'\n );\n if (dynamicPositionElements.length > 0) {\n this.#kupManager.dynamicPosition.unregister(\n Array.prototype.slice.call(dynamicPositionElements)\n );\n }\n if (this.#customizeTopPanelRef) {\n this.#customizeTopPanelRef.remove();\n }\n if (this.#columnMenuCard) {\n this.#columnMenuCard.remove();\n }\n if (this.scrollOnHover) {\n this.#kupManager.scrollOnHover.unregister(this.#tableAreaRef);\n }\n this.#kupManager.resize.unobserve(this.rootElement);\n this.kupDidUnload.emit({ comp: this, id: this.rootElement.id });\n }\n}\n"]}
|