@sme.up/ketchup 11.0.0-SNAPSHOT-20241017130107 → 11.0.0-SNAPSHOT-20241018090121
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-activity-timeline.cjs.entry.js +1 -1
- package/dist/cjs/kup-autocomplete_27.cjs.entry.js +6 -6
- package/dist/cjs/kup-autocomplete_27.cjs.entry.js.map +1 -1
- package/dist/cjs/kup-box.cjs.entry.js +1 -1
- package/dist/cjs/{kup-data-table-helper-cf31cb4e.js → kup-data-table-helper-52444d44.js} +2 -2
- package/dist/cjs/{kup-data-table-helper-cf31cb4e.js.map → kup-data-table-helper-52444d44.js.map} +1 -1
- package/dist/collection/components/kup-tree/kup-tree-declarations.js +1 -1
- package/dist/collection/components/kup-tree/kup-tree-declarations.js.map +1 -1
- package/dist/collection/components/kup-tree/kup-tree.js +5 -5
- package/dist/collection/components/kup-tree/kup-tree.js.map +1 -1
- package/dist/components/kup-autocomplete2.js +6 -6
- package/dist/components/kup-autocomplete2.js.map +1 -1
- package/dist/esm/kup-activity-timeline.entry.js +1 -1
- package/dist/esm/kup-autocomplete_27.entry.js +6 -6
- package/dist/esm/kup-autocomplete_27.entry.js.map +1 -1
- package/dist/esm/kup-box.entry.js +1 -1
- package/dist/esm/{kup-data-table-helper-6b828446.js → kup-data-table-helper-74b29c0e.js} +2 -2
- package/dist/esm/{kup-data-table-helper-6b828446.js.map → kup-data-table-helper-74b29c0e.js.map} +1 -1
- package/dist/ketchup/ketchup.esm.js +1 -1
- package/dist/ketchup/{p-556618b0.entry.js → p-1b4dda8d.entry.js} +2 -2
- package/dist/ketchup/{p-f57c4edf.entry.js → p-40b3c165.entry.js} +3 -3
- package/dist/ketchup/{p-f57c4edf.entry.js.map → p-40b3c165.entry.js.map} +1 -1
- package/dist/ketchup/{p-35802f68.entry.js → p-6f138b8c.entry.js} +2 -2
- package/dist/ketchup/{p-454b6065.js → p-e9aaa7d5.js} +2 -2
- package/dist/ketchup/p-e9aaa7d5.js.map +1 -0
- package/dist/types/components/kup-tree/kup-tree-declarations.d.ts +3 -3
- package/package.json +1 -1
- package/dist/ketchup/p-454b6065.js.map +0 -1
- /package/dist/ketchup/{p-556618b0.entry.js.map → p-1b4dda8d.entry.js.map} +0 -0
- /package/dist/ketchup/{p-35802f68.entry.js.map → p-6f138b8c.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kup-tree.js","sourceRoot":"","sources":["../../../src/components/kup-tree/kup-tree.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACJ","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n forceUpdate,\n getAssetPath,\n h,\n Host,\n JSX,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport type { PointerEvent } from '@interactjs/types/index';\nimport {\n TotalLabel,\n TotalMode,\n TotalsMap,\n} from './../kup-data-table/kup-data-table-declarations';\nimport {\n KupTreeProps,\n TreeNodePath,\n treeMainColumnName,\n KupTreeEventHandlerDetails,\n KupTreeNodeCollapseEventPayload,\n KupTreeNodeExpandEventPayload,\n KupTreeNodeSelectedEventPayload,\n KupTreeNodeButtonClickEventPayload,\n KupTreeContextMenuEventPayload,\n KupTreeColumnMenuEventPayload,\n KupTreeDynamicMassExpansionEventPayload,\n KupTreeExpansionMode,\n KupTreeColumnRemoveEventPayload,\n KupTreeNode,\n} from './kup-tree-declarations';\nimport { MDCRipple } from '@material/ripple';\nimport {\n KupManager,\n kupManagerInstance,\n} from '../../managers/kup-manager/kup-manager';\nimport {\n calcTotals,\n normalizeRows,\n} from '../kup-data-table/kup-data-table-helper';\nimport { KupTreeState } from './kup-tree-state';\nimport { KupStore } from '../kup-state/kup-store';\nimport { getColumnByName } from '../../utils/cell-utils';\nimport { getProps, setProps } from '../../utils/utils';\nimport { KupColumnMenu } from '../../utils/kup-column-menu/kup-column-menu';\nimport { FiltersColumnMenu } from '../../utils/filters/filters-column-menu';\nimport {\n GenericFilter,\n KupGlobalFilterMode,\n ValueDisplayedValue,\n} from '../../utils/filters/filters-declarations';\nimport { FiltersTreeItems } from '../../utils/filters/filters-tree-items';\nimport { KupListNode } from '../kup-list/kup-list-declarations';\nimport {\n GenericObject,\n KupComponent,\n KupEventPayload,\n} from '../../types/GenericTypes';\nimport {\n kupDynamicPositionAttribute,\n KupDynamicPositionCoordinates,\n KupDynamicPositionElement,\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 KupLanguageGeneric,\n KupLanguageSearch,\n KupLanguageTotals,\n} from '../../managers/kup-language/kup-language-declarations';\nimport { KupCardEventPayload } from '../kup-card/kup-card-declarations';\nimport { componentWrapperId } from '../../variables/GenericVariables';\nimport { KupThemeIconValues } from '../../managers/kup-theme/kup-theme-declarations';\nimport { KupPointerEventTypes } from '../../managers/kup-interact/kup-interact-declarations';\nimport { KupManagerClickCb } from '../../managers/kup-manager/kup-manager-declarations';\nimport {\n FCellPadding,\n FCellProps,\n} from '../../f-components/f-cell/f-cell-declarations';\nimport { FCell } from '../../f-components/f-cell/f-cell';\nimport {\n KupDataCell,\n KupDataColumn,\n KupDataDataset,\n KupDataRow,\n} from '../../managers/kup-data/kup-data-declarations';\nimport { KupDebugCategory } from '../../managers/kup-debug/kup-debug-declarations';\nimport { FTextFieldMDC } from '../../f-components/f-text-field/f-text-field-mdc';\nimport { FImage } from '../../f-components/f-image/f-image';\nimport { isExpandable } from './kup-tree-helper';\n@Component({\n tag: 'kup-tree',\n styleUrl: 'kup-tree.scss',\n shadow: true,\n})\nexport class KupTree {\n /**\n * References the root HTML element of the component (<kup-tree>).\n */\n @Element() rootElement: HTMLElement;\n\n /*-------------------------------------------------*/\n /* S t a t e s */\n /*-------------------------------------------------*/\n\n state: KupTreeState = new KupTreeState();\n\n @State() private treeColumnVisible = true;\n /**\n * name of the column with the opened total menu\n */\n @State() private openedTotalMenu: string = null;\n @State() private columnMenuAnchor: string = null;\n @State() stateSwitcher: boolean = false;\n /**\n * An array of integers containing the path to a selected child.\\\n * Groups up the properties SelFirst, SelItem, SelName.\n */\n @State()\n private selectedNode: TreeNodePath = [];\n\n initWithPersistedState(): void {\n if (this.store && this.stateId) {\n const state = this.store.getState(this.stateId);\n if (state != null) {\n this.density = state.density;\n this.showFilters = state.showFilters;\n this.showFooter = state.showFooter;\n this.globalFilter = state.globalFilter;\n this.globalFilterValue = state.globalFilterValue;\n this.filters = { ...state.filters };\n this.totals = { ...state.totals };\n }\n }\n }\n\n persistState(): void {\n if (this.store && this.stateId) {\n let somethingChanged = false;\n\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.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.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.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.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 (!this.state.load) {\n this.state.load = true;\n return;\n }\n if (somethingChanged) {\n this.store.persistState(this.stateId, this.state);\n }\n }\n }\n\n /*-------------------------------------------------*/\n /* P r o p s */\n /*-------------------------------------------------*/\n\n /**\n * When enabled, the first level of depth will give an accordion look to nodes.\n * @default false\n */\n @Prop({ reflect: true }) asAccordion: boolean = false;\n /**\n * The columns of the tree when tree visualization is active.\n */\n @Prop({ mutable: true }) columns?: KupDataColumn[];\n /**\n * Custom style of the component.\n * @default \"\"\n * @see https://smeup.github.io/ketchup/#/customization\n */\n @Prop() customStyle: string = '';\n /**\n * The json data used to populate the tree view: the basic, always visible tree nodes.\n */\n @Prop({ mutable: true }) data: KupTreeNode[] = [];\n /**\n * The density of the rows, defaults at 'medium' and can also be set to 'dense' or 'wide'.\n */\n @Prop() density: FCellPadding = FCellPadding.MEDIUM;\n /**\n * Function that gets invoked when a new set of nodes must be loaded as children of a node.\n *\n * When useDynamicExpansion is set, the tree component will have two different behaviors depending on the value of this prop.\n * 1 - If this prop is set to null, no callback to download data is available:\n * the component will emit an event requiring the parent to load the children of the given node.\n * 2 - If this prop is set to have a callback, then the component will automatically make requests to load children of\n * a given node. After the load has been completed, a different event will be fired to alert the parent of the change.\n *\n * @see useDynamicExpansion\n */\n @Prop() dynamicExpansionCallback: (\n treeNodeToExpand: KupTreeNode,\n treeNodePath: TreeNodePath\n ) => Promise<KupTreeNode[]> | undefined = undefined;\n /**\n * When set to true, editable cells will be rendered using input components.\n * @default false\n */\n @Prop() editableData: boolean = false;\n /**\n * Enables the extracolumns add buttons.\n */\n @Prop() enableExtraColumns: boolean = true;\n /**\n * Flag: the nodes of the whole tree must be already expanded upon loading. Disabled nodes do NOT get expanded.\n */\n @Prop() expanded: boolean = false;\n /**\n * Behavior of nodes' expansion: it can be chosen between expanding a node by clicking on the dropdown icon, or by clicking on the whole node.\n * @default KupTreeExpansionMode.DROPDOWN\n */\n @Prop() expansionMode: KupTreeExpansionMode = KupTreeExpansionMode.DROPDOWN;\n /**\n * List of filters set by the user.\n */\n @Prop({ mutable: true }) filters: GenericFilter = {};\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 /**\n * The mode of the global filter (default SIMPLE)\n */\n @Prop() globalFilterMode: KupGlobalFilterMode = KupGlobalFilterMode.SIMPLE;\n /**\n * Experimental feature: when active, the tree will try to prevent horizontal overflowing elements by setting a width on the content of the table cells.\n * It works only on cells of the main column.\n * @default false;\n */\n @Prop({ reflect: true }) preventXScroll: boolean = false;\n /**\n * Sets the possibility to remove the selected column.\n */\n @Prop() removableColumns: boolean = true;\n /**\n * When enabled displays Material's ripple effect on nodes (only when no columns are displayed).\n * @default true\n */\n @Prop() ripple: boolean = true;\n /**\n * Activates the scroll on hover function.\n */\n @Prop() scrollOnHover: boolean = false;\n /**\n * Shows the tree data as a table.\n */\n @Prop({ mutable: true }) showColumns: boolean = false;\n /**\n * When set to true enables the column filters.\n */\n @Prop() showFilters: boolean = true;\n /**\n * When set to true shows the footer.\n */\n @Prop() showFooter: boolean = false;\n /**\n * Flag: shows the header of the tree when the tree is displayed as a table.\n * @see showColumns\n */\n @Prop({ mutable: true }) showHeader: boolean = false;\n /**\n * Shows the icons of the nodes.\n */\n @Prop() showIcons: boolean = true;\n @Prop() stateId: string = '';\n @Prop() store: KupStore;\n /**\n * When the component must use the dynamic expansion feature to open its nodes, it means that not all the nodes of the\n * tree have been passed inside the data property.\n *\n * Therefore, when expanding a node, the tree must emit an event (or run a given callback)\n * and wait for the child nodes to be downloaded from the server.\n *\n * For more information:\n * @see dynamicExpansionCallback\n */\n @Prop() useDynamicExpansion: boolean = false;\n /**\n * Defines the current totals options.\n */\n @Prop({ mutable: true }) totals: TotalsMap;\n\n /*-------------------------------------------------*/\n /* I n t e r n a l V a r i a b l e s */\n /*-------------------------------------------------*/\n\n /**\n * Instance of the KupManager class.\n */\n #kupManager: KupManager = kupManagerInstance();\n /**\n * Reference to the column menu card.\n */\n private columnMenuCard: HTMLKupCardElement = null;\n private treeWrapperRef: KupScrollOnHoverElement;\n private clickTimeout: any[] = [];\n private globalFilterTimeout: number;\n private footer: { [index: string]: number };\n private sizedColumns: KupDataColumn[] = undefined;\n columnFilterTimeout: number;\n private columnMenuInstance: KupColumnMenu;\n private filtersColumnMenuInstance: FiltersColumnMenu =\n new FiltersColumnMenu();\n private filtersTreeItemsInstance: FiltersTreeItems = new FiltersTreeItems();\n private totalMenuCoords: KupDynamicPositionCoordinates = null;\n private visibleNodes: number;\n private contentRefs: HTMLElement[] = [];\n private oldWidth: number = null;\n private hold: boolean = false;\n private interactableTouch: HTMLElement[] = [];\n private clickCb: KupManagerClickCb = null;\n /**\n * Used to prevent too many resizes callbacks at once.\n */\n private resizeTimeout: number;\n\n /*-------------------------------------------------*/\n /* E v e n t s */\n /*-------------------------------------------------*/\n\n /**\n * Fired when a KupTreeNode gets collapsed (closed).\n */\n @Event({\n eventName: 'kup-tree-nodecollapse',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeNodeCollapse: EventEmitter<KupTreeNodeCollapseEventPayload>;\n\n /**\n * Fired when a node expansion ion has been triggered.\n * Contains additional data when the tree is using the dynamicExpansion feature.\n * @event kup-tree-nodeexpand\n * @type {object}\n * @property {TreeNodePath} treeNodePath - The array of indexes to retrieve the current treeNode inside the data prop.\n * @property {KupTreeNode} treeNode - Reference to the KupTreeNode data object which is being expanded (passed through the data prop).\n * @property {boolean} usesDynamicExpansion - Flag to notify that the component is running in dynamicExpansion mode.\n * @property {boolean} dynamicExpansionRequireChildren - Flag to notify that the current dynamicExpansion event\n * requires the parent component to add KupTreeNode children to the given KupTreeNode.\n * @see useDynamicExpansion\n * @see dynamicExpansionCallback\n * @since 1.0.0\n */\n @Event({\n eventName: 'kup-tree-nodeexpand',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeNodeExpand: EventEmitter<KupTreeNodeExpandEventPayload>;\n\n /**\n * Fired when a node of the tree has been selected\n */\n @Event({\n eventName: 'kup-tree-nodeselected',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeNodeSelected: EventEmitter<KupTreeNodeSelectedEventPayload>;\n\n @Event({\n eventName: 'kup-tree-buttonclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeNodeButtonClick: EventEmitter<KupTreeNodeButtonClickEventPayload>;\n\n /**\n * Generic right click event on tree.\n */\n @Event({\n eventName: 'kup-tree-contextmenu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeContextMenu: EventEmitter<KupTreeContextMenuEventPayload>;\n /**\n * When the column menu is being opened/closed.\n */\n @Event({\n eventName: 'kup-tree-columnmenu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeColumnMenu: EventEmitter<KupTreeColumnMenuEventPayload>;\n\n @Event({\n eventName: 'kup-tree-didload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidLoad: EventEmitter<KupEventPayload>;\n\n /**\n * Triggered when stop propagation event\n */\n\n @Event({\n eventName: 'kup-tree-didunload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidUnload: EventEmitter<KupEventPayload>;\n\n @Event({\n eventName: 'kup-tree-nodedblclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeNodeDblClick: EventEmitter<KupTreeNodeCollapseEventPayload>;\n\n @Event({\n eventName: 'kup-tree-dynamicmassexpansion',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeDynamicMassExpansion: EventEmitter<KupTreeDynamicMassExpansionEventPayload>;\n /**\n * Event fired when columns are removed (set to hidden).\n */\n @Event({\n eventName: 'kup-tree-columnremove',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupColumnRemove: EventEmitter<KupTreeColumnRemoveEventPayload>;\n\n /**\n * This method will get the selected nodes of the component.\n */\n @Method()\n async getSelectedNode(): Promise<TreeNodePath> {\n return this.selectedNode;\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 setSelectedNode(\n treeNodePath: string,\n emitEvent?: boolean\n ): Promise<void> {\n this.selectedNode = treeNodePath\n .split(',')\n .map((treeNodeIndex) => parseInt(treeNodeIndex));\n if (emitEvent !== false) {\n this.kupTreeNodeSelected.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: this.selectedNode,\n treeNode: this.getTreeNode(this.selectedNode),\n columnName: null,\n });\n }\n }\n /*-------------------------------------------------*/\n /* W a t c h e r s */\n /*-------------------------------------------------*/\n\n @Watch('data')\n enrichDataWhenChanged(\n newData: KupTreeNode[] | KupDataDataset,\n oldData: KupTreeNode[]\n ) {\n if (!newData) {\n newData = [];\n }\n if (newData !== oldData) {\n this.refreshStructureState();\n }\n }\n\n @Watch('expanded')\n enrichStructureStateWhenChanged(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.refreshStructureState();\n }\n }\n\n /*-------------------------------------------------*/\n /* P u b l i c M e t h o d s */\n /*-------------------------------------------------*/\n\n /**\n * True if there aren't visible nodes\n */\n @Method()\n async isEmpty(): Promise<boolean> {\n return this.visibleNodes == 0;\n }\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.kupTreeColumnMenu.emit({\n comp: this,\n id: this.rootElement.id,\n card: this.columnMenuCard,\n event: null,\n open: false,\n });\n }\n /**\n * Collapses all nodes.\n */\n @Method()\n async collapseAll() {\n if (!this.useDynamicExpansion) {\n for (let index = 0; index < this.data.length; index++) {\n this.data[index].isExpanded = false;\n this.handleChildren(this.data[index], false);\n }\n } else {\n this.kupTreeDynamicMassExpansion.emit({\n comp: this,\n id: this.rootElement.id,\n expandAll: false,\n });\n }\n this.refresh();\n }\n /**\n * Expands all nodes.\n */\n @Method()\n async expandAll() {\n if (!this.useDynamicExpansion) {\n for (let index = 0; index < this.data.length; index++) {\n this.data[index].isExpanded = true;\n this.handleChildren(this.data[index], true);\n }\n } else {\n this.kupTreeDynamicMassExpansion.emit({\n comp: this,\n id: this.rootElement.id,\n expandAll: true,\n });\n }\n this.refresh();\n }\n /**\n * Adds/subtracts the input number from the first node's depth level.\n */\n @Method()\n async setExpansionByDepth(modifier: number) {\n const handleChildren = (\n node: KupTreeNode,\n expand: boolean,\n maxDepth?: number,\n depth?: number\n ) => {\n const shouldExpand = depth < maxDepth;\n node.isExpanded = shouldExpand;\n for (\n let index = 0;\n node.children && index < node.children.length;\n index++\n ) {\n const child = node.children[index];\n handleChildren(child, expand, maxDepth, depth + 1);\n }\n };\n const getNodeDepth = (): number => {\n let maxDepth = 0;\n\n const traverseNode = (\n node: KupTreeNode,\n currentDepth: number\n ): void => {\n if (node.children?.length) {\n if (node.isExpanded) {\n maxDepth = Math.max(maxDepth, currentDepth + 1);\n }\n for (let index = 0; index < node.children.length; index++) {\n const child = node.children[index];\n traverseNode(child, currentDepth + 1);\n }\n }\n };\n\n for (let index = 0; index < this.data.length; index++) {\n const node = this.data[index];\n traverseNode(node, 0);\n }\n return maxDepth;\n };\n\n let maxDepth = getNodeDepth() + modifier;\n\n if (!this.useDynamicExpansion) {\n for (let index = 0; index < this.data.length; index++) {\n const node = this.data[index];\n handleChildren(node, false, maxDepth, 0);\n }\n } else {\n this.kupTreeDynamicMassExpansion.emit({\n comp: this,\n id: this.rootElement.id,\n expandAll: false,\n });\n }\n this.refresh();\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, KupTreeProps, descriptions);\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.columns, [column.name]);\n this.kupColumnRemove.emit({\n comp: this,\n id: this.rootElement.id,\n column: column,\n });\n this.refresh();\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.kupTreeColumnMenu.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.kupTreeColumnMenu.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.kupTreeColumnMenu.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(): Promise<void> {\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 (this.rootElement.clientWidth !== this.oldWidth) {\n window.clearTimeout(this.resizeTimeout);\n this.resizeTimeout = window.setTimeout(() => this.refresh(), 300);\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, KupTreeProps, props);\n }\n\n /*-------------------------------------------------*/\n /* P r i v a t e M e t h o d s */\n /*-------------------------------------------------*/\n\n setTreeColumnVisibility(value: boolean) {\n this.treeColumnVisible = value;\n }\n\n isTreeColumnVisible(): boolean {\n return this.treeColumnVisible;\n }\n\n private checkScrollOnHover() {\n if (!this.#kupManager.scrollOnHover.isRegistered(this.treeWrapperRef)) {\n if (this.scrollOnHover) {\n this.#kupManager.scrollOnHover.register(this.treeWrapperRef);\n }\n } else {\n if (!this.scrollOnHover) {\n this.#kupManager.scrollOnHover.unregister(this.treeWrapperRef);\n }\n }\n }\n\n onKupTreeNodeDblClick(treeNodeData: KupTreeNode, treeNodePath: string) {\n for (let index = 0; index < this.clickTimeout.length; index++) {\n clearTimeout(this.clickTimeout[index]);\n this.#kupManager.debug.logMessage(\n this,\n 'Cleared hdlTreeNodeClick timeout(' +\n this.clickTimeout[index] +\n ').'\n );\n }\n this.clickTimeout = [];\n this.kupTreeNodeDblClick.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: treeNodePath\n .split(',')\n .map((treeNodeIndex) => parseInt(treeNodeIndex)),\n treeNode: treeNodeData,\n });\n }\n\n nodesToRows(): KupDataRow[] {\n function children(TreeNode: KupTreeNode) {\n for (let index = 0; index < TreeNode.children.length; index++) {\n const node: KupTreeNode = TreeNode.children[index];\n rows.push({\n cells: TreeNode.children[index].cells,\n });\n if (node.children) {\n children(node);\n }\n }\n }\n let rows: KupDataRow[] = [];\n for (let index = 0; index < this.data.length; index++) {\n const node: KupTreeNode = this.data[index];\n rows.push({\n cells: this.data[index].cells,\n });\n if (node.children) {\n children(this.data[index]);\n }\n }\n return rows;\n }\n\n private setDynPosElements() {\n // Column menu\n if (this.columnMenuCard && this.columnMenuCard.data) {\n this.columnMenuCard.data = this.columnMenuInstance.prepData(\n this,\n getColumnByName(\n this.getVisibleColumns(),\n this.columnMenuAnchor\n ),\n this.columnMenuCard.data\n );\n }\n }\n\n expandCollapseNode(treeNode: KupTreeNode, expandNode: boolean = false) {\n this.filtersTreeItemsInstance.expandCollapseNode(treeNode, expandNode);\n }\n\n expandCollapseAllNodes(treeNode: KupTreeNode, expandNode: boolean = false) {\n this.filtersTreeItemsInstance.expandCollapseAllNodes(\n treeNode,\n expandNode\n );\n }\n\n getColumns(): Array<KupDataColumn> {\n return this.columns ? this.columns : [{ title: '', name: '' }];\n }\n\n private getSizedColumns() {\n let columns = this.getColumns();\n let 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 getVisibleColumns(): Array<KupDataColumn> {\n return this.getColumns().filter((column) =>\n column.hasOwnProperty('visible') ? column.visible : true\n );\n }\n\n getHeadingColumns(): Array<KupDataColumn> {\n const firstColum: KupDataColumn = {\n name: treeMainColumnName,\n title: '',\n };\n const visibleColumns = this.getVisibleColumns();\n return [firstColum, ...visibleColumns];\n }\n\n /*\n *For launch the event when selected node\n */\n launchNodeEvent(treeNodePath: TreeNodePath, treeNode: KupTreeNode) {\n if (treeNodePath && treeNodePath.length > 0) {\n if (treeNodePath[0] != -1) {\n var tn = treeNode.children[treeNodePath[0]];\n if (!tn) {\n tn = treeNode;\n }\n if (treeNodePath.length > 1) {\n treeNodePath = treeNodePath.slice(1);\n this.launchNodeEvent(treeNodePath, tn);\n } else {\n this.hdlTreeNodeClick(\n null,\n tn,\n this.selectedNodeToString(this.selectedNode)\n );\n }\n }\n }\n }\n\n private openTotalMenu(column: KupDataColumn) {\n this.openedTotalMenu = column.name;\n }\n\n private onTotalMenuOpen(column: KupDataColumn) {\n this.closeTotalMenu();\n this.openTotalMenu(column);\n }\n\n private getEventDetails(\n path: HTMLElement[],\n e?: PointerEvent\n ): KupTreeEventHandlerDetails {\n let isHeader: boolean,\n isBody: boolean,\n isFooter: boolean,\n td: 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 (\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 let cell: KupDataCell = null,\n column: KupDataColumn = null,\n row: KupDataRow = null;\n if (isBody) {\n if (td) {\n cell = td['data-cell'];\n }\n if (tr) {\n row = tr['data-row'];\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 originalEvent: e,\n row: row ? row : null,\n td: td ? td : null,\n th: th ? th : null,\n tr: tr ? tr : null,\n };\n }\n\n private contextMenuHandler(e: PointerEvent): KupTreeEventHandlerDetails {\n e.preventDefault();\n const details = 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 this.openColumnMenu(details.column.name);\n return details;\n }\n } else if (details.area === '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 // When a TreeNode can be selected\n hdlTreeNodeClick(\n e: MouseEvent,\n treeNodeData: KupTreeNode,\n treeNodePath: string\n ) {\n if (\n this.expansionMode.toLowerCase() ===\n KupTreeExpansionMode.DROPDOWN ||\n (this.expansionMode.toLowerCase() === KupTreeExpansionMode.NODE &&\n !isExpandable(treeNodeData))\n ) {\n const td = e\n ? this.#kupManager\n .getEventPath(e.target, this.rootElement)\n .find((el) => {\n if (el.tagName === 'TD') return el;\n })\n : null;\n // If this TreeNode is not disabled, then it can be selected and an event is emitted\n if (treeNodeData && !treeNodeData.disabled) {\n this.selectedNode = treeNodePath\n .split(',')\n .map((treeNodeIndex) => parseInt(treeNodeIndex));\n\n this.kupTreeNodeSelected.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: this.selectedNode,\n treeNode: treeNodeData,\n columnName: td ? td.dataset.column : null,\n });\n }\n }\n\n // If KupTreeExpansionMode.NODE then click is a collapse/expand click\n if (this.expansionMode.toLowerCase() === KupTreeExpansionMode.NODE) {\n this.hdlTreeNodeExpanderClick(\n treeNodeData,\n treeNodePath,\n e ? e.ctrlKey : false\n );\n }\n }\n\n // When a TreeNode must be expanded or closed.\n hdlTreeNodeExpanderClick(\n treeNodeData: KupTreeNode,\n treeNodePath: string,\n ctrlKey: boolean\n ) {\n // If the node is expandable\n if (isExpandable(treeNodeData)) {\n // Always composes the tree node path as an array\n const arrayTreeNodePath: TreeNodePath = treeNodePath\n .split(',')\n .map((index) => parseInt(index));\n\n // There are already children set in this TreeNode -> expand or collapse node and emit appropriate event\n if (treeNodeData.children && treeNodeData.children.length) {\n // Updates expanded state and force rerender\n treeNodeData.isExpanded = !treeNodeData.isExpanded;\n if (ctrlKey) {\n this.handleChildren(treeNodeData, treeNodeData.isExpanded);\n }\n this.refresh();\n if (treeNodeData.isExpanded) {\n // TreeNode is now expanded -> Fires expanded event\n this.kupTreeNodeExpand.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: arrayTreeNodePath,\n treeNode: treeNodeData,\n usesDynamicExpansion: this.useDynamicExpansion,\n });\n } else {\n // TreeNode is now collapsed -> Fires collapsed event\n this.kupTreeNodeCollapse.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: arrayTreeNodePath,\n treeNode: treeNodeData,\n });\n }\n } else if (this.useDynamicExpansion) {\n if (ctrlKey) {\n this.kupTreeDynamicMassExpansion.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: arrayTreeNodePath,\n treeNode: treeNodeData,\n });\n }\n // When the component must use the dynamic expansion feature\n // Currently it does not support the expanded prop\n\n // Checks if we have a dynamicExpansionCallback or not\n if (this.dynamicExpansionCallback) {\n // We have a callback: invokes it and after the result is returned updates the tree\n this.dynamicExpansionCallback(\n treeNodeData,\n arrayTreeNodePath\n )\n .then((childrenTreeNodes) => {\n // Children returned successfully\n treeNodeData.children = childrenTreeNodes;\n treeNodeData.isExpanded = !treeNodeData.isExpanded;\n this.refresh();\n\n // TreeNode is now expanded -> Fires expanded event\n this.kupTreeNodeExpand.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: arrayTreeNodePath,\n treeNode: treeNodeData,\n usesDynamicExpansion: true,\n });\n })\n .catch((err) => {\n console.error(\n 'KupTree: An error occurred when trying to fetch dynamicExpansion nodes data',\n err,\n treeNodeData\n );\n });\n } else {\n // we do NOT have a callback set.\n // Fires the expand request for the given TreeNode and set the appropriate flag\n this.kupTreeNodeExpand.emit({\n comp: this,\n id: this.rootElement.id,\n treeNode: treeNodeData,\n treeNodePath: arrayTreeNodePath,\n usesDynamicExpansion: true,\n dynamicExpansionRequireChildren: true,\n });\n\n treeNodeData.isExpanded = !treeNodeData.isExpanded;\n }\n }\n }\n }\n\n private hasTotals() {\n return this.totals && Object.keys(this.totals).length > 0;\n }\n\n private handleChildren(treeNode: KupTreeNode, expand: boolean) {\n for (let index = 0; index < treeNode.children.length; index++) {\n let node = treeNode.children[index];\n if (!node.disabled) {\n node.isExpanded = expand;\n if (node.children) {\n this.handleChildren(node, expand);\n }\n }\n }\n }\n\n /**\n * Given a nodePath, transform that array into\n * @param nodePath\n */\n selectedNodeToString(nodePath: TreeNodePath) {\n let strToRet = '';\n if (nodePath && nodePath.length) {\n strToRet = nodePath[0].toString();\n for (let i = 1; i < nodePath.length; i++) {\n strToRet += `,${nodePath[i]}`;\n }\n }\n return strToRet;\n }\n\n private getFilterValueForTooltip(column: KupDataColumn): string {\n return this.filtersColumnMenuInstance.getFilterValueForTooltip(\n this.filters,\n column\n );\n }\n\n private getTreeNode(nodePath: TreeNodePath): KupTreeNode {\n if (!nodePath || nodePath.length == 0) {\n return null;\n }\n let father = this.data;\n let node: KupTreeNode = null;\n for (let index = 0; index < nodePath.length; index++) {\n if (node) {\n father = node.children;\n }\n const nodeIndex = nodePath[index];\n node = father[nodeIndex];\n }\n return node;\n }\n\n private onRemoveFilter(column: KupDataColumn) {\n const newFilters: GenericFilter = { ...this.filters };\n this.filtersColumnMenuInstance.removeFilter(newFilters, column.name);\n this.filters = newFilters;\n }\n\n onGlobalFilterChange({ detail }) {\n let value = '';\n if (detail && detail.value) {\n value = detail.value;\n }\n this.globalFilterValue = value;\n }\n\n getColumnValues(column: KupDataColumn): ValueDisplayedValue[] {\n return this.filtersTreeItemsInstance.getColumnValues(\n this,\n column,\n this.globalFilterValue,\n this.filtersColumnMenuInstance\n );\n }\n\n getRows(): Array<KupTreeNode> {\n return this.data ? this.data : [];\n }\n\n private filterNodes() {\n let items: KupTreeNode[] = this.filtersTreeItemsInstance.filterRows(\n this.getRows(),\n this.filters,\n this.globalFilterValue,\n this.getColumns(),\n this.filtersColumnMenuInstance\n );\n\n this.visibleNodes = this.calculateVisibleNodes(items);\n }\n\n private calculateVisibleNodes(items: KupTreeNode[]): number {\n let count = 0;\n if (items) {\n items.forEach((element) => {\n if (element.visible) {\n count++;\n }\n count += this.calculateVisibleNodes(element.children);\n });\n }\n return count;\n }\n\n private refreshStructureState() {\n if (this.data) {\n if ((this.data as KupDataDataset).columns) {\n this.#kupManager.debug.logMessage(\n this,\n 'Detected KupDataDataset: setting up tree as grid.',\n KupDebugCategory.WARNING\n );\n const data = this.data as KupDataDataset;\n this.columns = data.columns;\n this.data = this.#kupManager.data.row.toNode(data);\n this.showColumns = true;\n this.showHeader = true;\n }\n // When the nodes must be expanded upon loading and the tree is not using a dynamicExpansion (and the current TreeNode is not disabled)\n // the default value of the treeExpandedPropName is set to true\n this.data.forEach((rootNode) => {\n this.expandCollapseAllNodes(\n rootNode,\n this.expanded && !this.useDynamicExpansion\n );\n });\n this.selectedNode = [];\n }\n }\n\n private getCellStyle(colName: string, cellStyle: any): any {\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 (colName === 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 cellStyle['max-width'] = colWidth;\n cellStyle['min-width'] = colWidth;\n cellStyle['width'] = colWidth;\n cellStyle['overflow'] = 'hidden';\n }\n }\n return cellStyle;\n }\n\n /**\n * Renders the header of the tree when it must be displayed as a table.\n * @returns An array of table header cells.\n */\n renderHeader(): JSX.Element[] {\n return this.getHeadingColumns().map((column) => {\n if (\n !this.isTreeColumnVisible() &&\n column.name === treeMainColumnName\n )\n return;\n\n //---- Filter ----\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 /**\n * When column has a filter but filters must not be displayed, shows an icon to remove the filter.\n * Upon click, the filter gets removed.\n */\n filter = (\n <span\n title={svgLabel}\n class={`kup-icon ${KupThemeIconValues.FILTER_REMOVE.replace(\n '--',\n ''\n )}`}\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n this.onRemoveFilter(column);\n }}\n ></span>\n );\n }\n\n return (\n <th\n data-column={column.name}\n style={this.getCellStyle(column.name, null)}\n >\n <span class=\"column-title\">{column.title}</span>\n {filter}\n </th>\n );\n });\n }\n\n /**\n * Renders a content with a part highlighted.\n * NOTE: same in kup-accordion and in kup-tree\n */\n private renderHighlightedContent(\n content: string,\n highlight: string,\n styleClass: string\n ) {\n let contentSlices = [];\n if (highlight && content) {\n let contentPart = content;\n let end = contentPart\n .toLowerCase()\n .indexOf(highlight.toLowerCase());\n while (end > -1) {\n contentSlices.push(contentPart.substring(0, end));\n contentSlices.push(\n <span class={styleClass + '--highlighted'}>\n {contentPart.substring(end, end + highlight.length)}\n </span>\n );\n contentPart = contentPart.substring(\n end + highlight.length,\n contentPart.length\n );\n end = contentPart\n .toLowerCase()\n .indexOf(highlight.toLowerCase());\n }\n if (end < contentPart.length) {\n contentSlices.push(\n contentPart.substring(end, contentPart.length)\n );\n }\n } else {\n contentSlices.push(content);\n }\n return (\n <span\n class={styleClass}\n ref={(el: HTMLElement) => this.contentRefs.push(el)}\n title={this.preventXScroll ? content : null}\n >\n {contentSlices}\n </span>\n );\n }\n\n /**\n * Given a KupTreeNode, reads through its data then composes and returns its JSX object.\n * @param treeNodeData - The KupTreeNode object to parse.\n * @param treeNodePath - A string containing the comma(,) separated indexes of the KupTreeNodes to use,\n * sorted from left to right, to access the current KupTreeNode starting from the data prop children object.\n * @param treeNodeDepth - An integer to keep track of the depth level of the current KupTreeNode. Used for indentation.\n * @returns The the JSX created from the current tree node.\n */\n renderTreeNode(\n treeNodeData: KupTreeNode,\n treeNodePath: string,\n treeNodeDepth: number = 0\n ): JSX.Element {\n // Creates the indentation of the current element. Use a css variable to specify padding.\n let indent = treeNodeDepth ? (\n <span\n class=\"kup-tree__indent\"\n style={{\n ['--kup_tree_node_depth']: this.asAccordion\n ? (treeNodeDepth - 1).toString()\n : treeNodeDepth.toString(),\n }}\n />\n ) : null;\n\n // If the tree node is expandable, adds the icon to show the expansion.\n // If expandable, also add the callback on the click action.\n // If it is not expandable, we simply add a placeholder with no icons.\n const hasExpandIcon: boolean = !!(\n isExpandable(treeNodeData) &&\n ((treeNodeData.children && treeNodeData.children.length) ||\n this.useDynamicExpansion)\n );\n let expandClass = 'expand-icon kup-tree__icon kup-tree__node__expander';\n if (hasExpandIcon) {\n expandClass += ' kup-icon';\n if (this.asAccordion && treeNodeDepth === 0) {\n expandClass += ` ${KupThemeIconValues.DROPDOWN.replace(\n '--',\n ''\n )}`;\n } else if (treeNodeData.isExpanded) {\n expandClass += ` ${KupThemeIconValues.EXPANDED.replace(\n '--',\n ''\n )}`;\n } else {\n expandClass += ` ${KupThemeIconValues.COLLAPSED.replace(\n '--',\n ''\n )}`;\n }\n }\n let treeExpandIcon = (\n <span\n title={\n this.#kupManager.language.translate(\n KupLanguageGeneric.EXPAND\n ) +\n '/' +\n this.#kupManager.language.translate(\n KupLanguageGeneric.COLLAPSE\n ) +\n ' (CTRL + Click)'\n }\n class={expandClass}\n onClick={\n this.expansionMode.toLowerCase() ===\n KupTreeExpansionMode.DROPDOWN && !treeNodeData.disabled\n ? (event: MouseEvent) => {\n event.stopPropagation();\n this.hdlTreeNodeExpanderClick(\n treeNodeData,\n treeNodePath,\n event.ctrlKey\n );\n }\n : null\n }\n ></span>\n );\n\n // When TreeNode icons are visible, creates the icon if one is specified\n let treeNodeIcon: any = null;\n if (this.showIcons) {\n if (treeNodeData.icon) {\n if (treeNodeData.icon === '') {\n treeNodeIcon = <span class=\"kup-tree__icon\" />;\n } else {\n treeNodeIcon = (\n <FImage\n color={treeNodeData.iconColor}\n placeholderResource={treeNodeData.placeholderIcon}\n resource={treeNodeData.icon}\n wrapperClass={'kup-tree__icon'}\n ></FImage>\n );\n }\n } else {\n treeNodeIcon = null;\n }\n }\n\n // Composes additional options for the tree node element\n let treeNodeOptions = {};\n if (\n treeNodeData.hasOwnProperty('isExpanded') &&\n treeNodeData.isExpanded &&\n hasExpandIcon\n ) {\n // If the node is expanded it has this attribute set to if this node is expanded or not.\n treeNodeOptions['data-is-expanded'] = treeNodeData.isExpanded;\n }\n\n // When can be expanded OR selected\n if (!treeNodeData.disabled) {\n treeNodeOptions['onClick'] = (e: MouseEvent) => {\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 this.clickTimeout.push(\n setTimeout(\n () =>\n this.hdlTreeNodeClick(\n clone as MouseEvent,\n treeNodeData,\n treeNodePath\n ),\n 300\n )\n );\n };\n }\n\n // When a tree node is displayed as a table\n let treeNodeCells: JSX.Element[] | null = null;\n let visibleCols = this.getVisibleColumns();\n if (this.showColumns && visibleCols && visibleCols.length) {\n treeNodeCells = [];\n // Renders all the cells\n for (let j = 0; j < visibleCols.length; j++) {\n const column = visibleCols[j];\n if (treeNodeData.cells && treeNodeData.cells[column.name]) {\n const cell = treeNodeData.cells[column.name]\n ? treeNodeData.cells[column.name]\n : null;\n const cellProps: FCellProps = {\n cell: cell,\n column: column,\n component: this,\n density: this.density,\n editable: this.editableData,\n renderKup: true,\n row: treeNodeData,\n setSizes: true,\n };\n treeNodeCells.push(\n <td\n class={`grid-cell`}\n data-cell={cell}\n data-column={column.name}\n >\n <FCell {...cellProps}></FCell>\n </td>\n );\n } else {\n treeNodeCells.push(<td class={`grid-cell`}></td>);\n }\n }\n }\n let title: string = undefined;\n if (\n !this.#kupManager.objects.isEmptyKupObj(treeNodeData.obj) &&\n this.#kupManager.debug.isDebug()\n ) {\n title =\n treeNodeData.obj.t +\n '; ' +\n treeNodeData.obj.p +\n '; ' +\n treeNodeData.obj.k +\n ';';\n }\n\n let treeNodeCell = null;\n if (this.isTreeColumnVisible()) {\n let content = '';\n if (KupGlobalFilterMode.HIGHLIGHT === this.globalFilterMode) {\n content = this.renderHighlightedContent(\n treeNodeData.value,\n this.globalFilterValue,\n 'cell-content'\n );\n } else {\n content = (\n <span\n ref={(el: HTMLElement) => this.contentRefs.push(el)}\n class=\"cell-content\"\n title={this.preventXScroll ? treeNodeData.value : null}\n >\n {treeNodeData.value}\n </span>\n );\n }\n\n treeNodeCell = (\n <td\n class={{\n 'first-node': treeNodeDepth === 0 ? true : false,\n 'mdc-ripple-surface':\n this.ripple &&\n !this.showColumns &&\n !treeNodeData.disabled,\n 'is-obj': !this.#kupManager.objects.isEmptyKupObj(\n treeNodeData.obj\n ),\n }}\n style={treeNodeData.style || null}\n title={title}\n onDblClick={() => {\n this.onKupTreeNodeDblClick(treeNodeData, treeNodePath);\n }}\n >\n {this.asAccordion && !treeNodeDepth\n ? [\n treeNodeIcon,\n content,\n hasExpandIcon ? treeExpandIcon : null,\n ]\n : [indent, treeExpandIcon, treeNodeIcon, content]}\n </td>\n );\n }\n\n return (\n <tr\n class={{\n 'kup-tree__node': true,\n 'with-dyn': !treeNodeData.disabled,\n 'kup-tree__node--disabled': treeNodeData.disabled,\n 'kup-tree__node--first': treeNodeDepth ? false : true,\n 'kup-tree__node--selected':\n !treeNodeData.disabled &&\n treeNodePath ===\n this.selectedNodeToString(this.selectedNode),\n }}\n data-row={treeNodeData}\n data-tree-path={treeNodePath}\n {...treeNodeOptions}\n >\n {treeNodeCell}\n {treeNodeCells}\n </tr>\n );\n }\n\n private closeTotalMenu() {\n this.openedTotalMenu = null;\n this.#kupManager.removeClickCallback(this.clickCb);\n }\n\n private isOpenedTotalMenuForColumn(column: string): boolean {\n return this.openedTotalMenu === column;\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 renderFooter() {\n const nodesCell: HTMLElement = <td></td>;\n const footerCells = this.getVisibleColumns().map(\n (column: KupDataColumn) => {\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 let 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 listData.push(\n {\n id: TotalMode.SUM,\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 }\n let selectedItem = listData.find(\n (item) => item.value === menuLabel\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 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 ></kup-list>\n );\n }\n\n let value;\n if (\n menuLabel === TotalLabel.COUNT ||\n menuLabel === TotalLabel.DISTINCT\n ) {\n value = this.footer[column.name];\n } else {\n value = this.#kupManager.math.numberToFormattedString(\n this.footer[column.name],\n column.decimals,\n column.obj ? column.obj.p : ''\n );\n }\n\n return (\n <td data-column={column.name}>\n {totalMenu}\n <span\n class=\"totals-value\"\n title={translation[menuLabel]}\n >\n {value}\n </span>\n </td>\n );\n }\n );\n\n return (\n <tfoot>\n <tr>\n {nodesCell}\n {footerCells}\n </tr>\n </tfoot>\n );\n }\n\n didLoadInteractables() {\n this.interactableTouch.push(this.treeWrapperRef);\n const tapCb = (e: PointerEvent) => {\n if (this.hold) {\n this.hold = false;\n return;\n }\n switch (e.button) {\n // right click\n case 2:\n this.kupTreeContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.contextMenuHandler(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.kupTreeContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.contextMenuHandler(e),\n });\n }\n };\n this.#kupManager.interact.on(\n this.treeWrapperRef,\n KupPointerEventTypes.TAP,\n tapCb\n );\n this.#kupManager.interact.on(\n this.treeWrapperRef,\n KupPointerEventTypes.HOLD,\n holdCb\n );\n }\n\n private 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 );\n if (!this.clickCb) {\n this.clickCb = {\n cb: () => {\n this.closeTotalMenu();\n this.#kupManager.dynamicPosition.stop(\n menu as unknown as KupDynamicPositionElement\n );\n },\n el: menu,\n };\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 /**\n * Given a KupTreeNode, reads through its data to compose and return the KupTreeNodes of the root of this KupTreeNode\n * and its children nodes, composing an array of JSX KupTreeNodes.\n * @param treeNodeData - The KupTreeNode object to parse.\n * @param treeNodePath - A string containing the comma(,) separated indexes of the KupTreeNodes to use,\n * sorted from left to right, to access the current KupTreeNode starting from the data prop children object.\n * @param treeNodeDepth - An integer to keep track of the depth level of the current KupTreeNode. Used for indentation.\n * @returns An array of JSX KupTreeNodes created from the given treeNodeData.\n */\n renderTree(\n treeNodeData: KupTreeNode,\n treeNodePath: string,\n treeNodeDepth: number = 0\n ): JSX.Element[] {\n let treeNodes = [];\n\n if (treeNodeData && treeNodeData.visible == true) {\n // Creates and adds the root of the current tree\n treeNodes.push(\n this.renderTreeNode(treeNodeData, treeNodePath, treeNodeDepth)\n );\n\n // Checks if the current node can be expanded, has children object, has children and is expanded\n if (isExpandable(treeNodeData) && treeNodeData.isExpanded) {\n for (let i = 0; i < treeNodeData.children.length; i++) {\n treeNodes = treeNodes.concat(\n this.renderTree(\n treeNodeData.children[i],\n treeNodePath + ',' + i,\n treeNodeDepth + 1\n )\n );\n }\n }\n }\n\n return treeNodes;\n }\n\n private setEllipsis(): void {\n const treeRect: DOMRect = this.rootElement.getBoundingClientRect();\n for (let index = 0; index < this.contentRefs.length; index++) {\n const content: HTMLElement = this.contentRefs[index];\n if (content) {\n const cell = content.parentNode as HTMLElement;\n if (this.asAccordion && cell.classList.contains('first-node')) {\n cell.style.width = treeRect.width + 'px';\n } else {\n content.classList.remove('cell-content--ellipsis');\n content.style.setProperty('--kup_tree_content_width', ``);\n const rect: DOMRect = content.getBoundingClientRect();\n if (rect.right > treeRect.right) {\n const failsafeOffset: number = 5;\n const delta: number = rect.right - treeRect.right;\n content.classList.add('cell-content--ellipsis');\n content.style.setProperty(\n '--kup_tree_content_width',\n `${rect.width - delta - failsafeOffset}px`\n );\n }\n }\n }\n }\n }\n\n /*-------------------------------------------------*/\n /* L i f e c y c l e H o o k s */\n /*-------------------------------------------------*/\n\n componentWillLoad() {\n this.#kupManager.debug.logLoad(this, false);\n this.#kupManager.language.register(this);\n this.#kupManager.theme.register(this);\n this.columnMenuInstance = new KupColumnMenu();\n this.refreshStructureState();\n }\n\n componentDidLoad() {\n this.didLoadInteractables();\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 componentWillRender() {\n this.#kupManager.debug.logRender(this, false);\n if (this.showFooter && this.columns) {\n this.footer = calcTotals(\n normalizeRows(this.getColumns(), this.nodesToRows()),\n this.totals\n );\n }\n this.filterNodes();\n }\n\n componentDidRender() {\n const root = this.rootElement.shadowRoot;\n if (root && this.ripple) {\n const rippleCells = root.querySelectorAll(\n '.mdc-ripple-surface:not(.mdc-ripple-upgraded)'\n );\n if (rippleCells) {\n for (let i = 0; i < rippleCells.length; i++) {\n MDCRipple.attachTo(rippleCells[i]);\n }\n }\n }\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.preventXScroll) {\n this.setEllipsis();\n }\n this.totalMenuPosition();\n this.checkScrollOnHover();\n this.setDynPosElements();\n\n // *** Store\n this.persistState();\n // ***\n this.oldWidth = this.rootElement.clientWidth;\n this.#kupManager.debug.logRender(this, true);\n }\n\n render() {\n this.contentRefs = [];\n\n this.sizedColumns = this.getSizedColumns();\n let wrapperClass: string = 'density-medium';\n switch (this.density) {\n case FCellPadding.DENSE:\n wrapperClass = 'density-dense';\n break;\n case FCellPadding.WIDE:\n wrapperClass = 'density-wide';\n break;\n }\n\n // Composes TreeNodes\n let treeNodes: JSX.Element[] = [];\n if (this.data && this.data.length) {\n this.data.forEach((zeroDepthNode, index) => {\n treeNodes = treeNodes.concat(\n this.renderTree(zeroDepthNode, index.toString())\n );\n });\n } else {\n // There are no TreeNodes, so we print a single cell with a caption\n treeNodes.push(\n <tr>\n <td>\n {this.#kupManager.language.translate(\n KupLanguageGeneric.EMPTY_DATA\n )}\n </td>\n </tr>\n );\n }\n\n // Calculates if header must be shown or not\n const visibleHeader = this.showHeader && this.showColumns;\n\n let filterField = null;\n if (\n this.globalFilter &&\n this.data &&\n this.data.length &&\n this.data.length > 0\n ) {\n filterField = (\n <div id=\"global-filter\">\n <kup-text-field\n fullWidth={true}\n label={this.#kupManager.language.translate(\n KupLanguageSearch.SEARCH\n )}\n icon={KupThemeIconValues.SEARCH}\n initialValue={this.globalFilterValue}\n onkup-textfield-input={(event) => {\n window.clearTimeout(this.globalFilterTimeout);\n this.globalFilterTimeout = window.setTimeout(\n () => this.onGlobalFilterChange(event),\n 600\n );\n }}\n ></kup-text-field>\n </div>\n );\n }\n\n return (\n <Host>\n <style>\n {this.#kupManager.theme.setKupStyle(\n this.rootElement as KupComponent\n )}\n </style>\n <div id={componentWrapperId} class={wrapperClass}>\n {filterField}\n <div\n class=\"wrapper\"\n ref={(el: HTMLElement) =>\n (this.treeWrapperRef =\n el as KupScrollOnHoverElement)\n }\n >\n <table\n class=\"kup-tree\"\n data-show-columns={this.showColumns}\n onContextMenu={(e: MouseEvent) => {\n e.preventDefault();\n }}\n >\n <thead\n class={{\n 'header--is-visible': visibleHeader,\n }}\n >\n <tr>\n {visibleHeader ? this.renderHeader() : null}\n </tr>\n </thead>\n <tbody>{treeNodes}</tbody>\n {(this.showFooter || this.hasTotals()) &&\n this.columns\n ? this.renderFooter()\n : null}\n </table>\n </div>\n </div>\n </Host>\n );\n }\n\n disconnectedCallback() {\n this.#kupManager.language.register(this);\n this.#kupManager.resize.unobserve(this.rootElement);\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.columnMenuCard) {\n this.columnMenuCard.remove();\n }\n if (this.scrollOnHover) {\n this.#kupManager.scrollOnHover.unregister(this.treeWrapperRef);\n }\n this.kupDidUnload.emit({ comp: this, id: this.rootElement.id });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"kup-tree.js","sourceRoot":"","sources":["../../../src/components/kup-tree/kup-tree.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACJ","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n forceUpdate,\n h,\n Host,\n JSX,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport type { PointerEvent } from '@interactjs/types/index';\nimport {\n TotalLabel,\n TotalMode,\n TotalsMap,\n} from './../kup-data-table/kup-data-table-declarations';\nimport {\n KupTreeProps,\n TreeNodePath,\n treeMainColumnName,\n KupTreeEventHandlerDetails,\n KupTreeNodeCollapseEventPayload,\n KupTreeNodeExpandEventPayload,\n KupTreeNodeSelectedEventPayload,\n KupTreeNodeButtonClickEventPayload,\n KupTreeContextMenuEventPayload,\n KupTreeColumnMenuEventPayload,\n KupTreeDynamicMassExpansionEventPayload,\n KupTreeExpansionMode,\n KupTreeColumnRemoveEventPayload,\n KupTreeNode,\n} from './kup-tree-declarations';\nimport { MDCRipple } from '@material/ripple';\nimport {\n KupManager,\n kupManagerInstance,\n} from '../../managers/kup-manager/kup-manager';\nimport {\n calcTotals,\n normalizeRows,\n} from '../kup-data-table/kup-data-table-helper';\nimport { KupTreeState } from './kup-tree-state';\nimport { KupStore } from '../kup-state/kup-store';\nimport { getColumnByName } from '../../utils/cell-utils';\nimport { getProps, setProps } from '../../utils/utils';\nimport { KupColumnMenu } from '../../utils/kup-column-menu/kup-column-menu';\nimport { FiltersColumnMenu } from '../../utils/filters/filters-column-menu';\nimport {\n GenericFilter,\n KupGlobalFilterMode,\n ValueDisplayedValue,\n} from '../../utils/filters/filters-declarations';\nimport { FiltersTreeItems } from '../../utils/filters/filters-tree-items';\nimport { KupListNode } from '../kup-list/kup-list-declarations';\nimport {\n GenericObject,\n KupComponent,\n KupEventPayload,\n} from '../../types/GenericTypes';\nimport {\n kupDynamicPositionAttribute,\n KupDynamicPositionCoordinates,\n KupDynamicPositionElement,\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 KupLanguageGeneric,\n KupLanguageSearch,\n KupLanguageTotals,\n} from '../../managers/kup-language/kup-language-declarations';\nimport { KupCardEventPayload } from '../kup-card/kup-card-declarations';\nimport { componentWrapperId } from '../../variables/GenericVariables';\nimport { KupThemeIconValues } from '../../managers/kup-theme/kup-theme-declarations';\nimport { KupPointerEventTypes } from '../../managers/kup-interact/kup-interact-declarations';\nimport { KupManagerClickCb } from '../../managers/kup-manager/kup-manager-declarations';\nimport {\n FCellPadding,\n FCellProps,\n} from '../../f-components/f-cell/f-cell-declarations';\nimport { FCell } from '../../f-components/f-cell/f-cell';\nimport {\n KupDataCell,\n KupDataColumn,\n KupDataDataset,\n KupDataRow,\n} from '../../managers/kup-data/kup-data-declarations';\nimport { KupDebugCategory } from '../../managers/kup-debug/kup-debug-declarations';\nimport { FTextFieldMDC } from '../../f-components/f-text-field/f-text-field-mdc';\nimport { FImage } from '../../f-components/f-image/f-image';\nimport { isExpandable } from './kup-tree-helper';\n@Component({\n tag: 'kup-tree',\n styleUrl: 'kup-tree.scss',\n shadow: true,\n})\nexport class KupTree {\n /**\n * References the root HTML element of the component (<kup-tree>).\n */\n @Element() rootElement: HTMLElement;\n\n /*-------------------------------------------------*/\n /* S t a t e s */\n /*-------------------------------------------------*/\n\n state: KupTreeState = new KupTreeState();\n\n @State() private treeColumnVisible = true;\n /**\n * name of the column with the opened total menu\n */\n @State() private openedTotalMenu: string = null;\n @State() private columnMenuAnchor: string = null;\n @State() stateSwitcher: boolean = false;\n /**\n * An array of integers containing the path to a selected child.\\\n * Groups up the properties SelFirst, SelItem, SelName.\n */\n @State()\n private selectedNode: TreeNodePath = [];\n\n initWithPersistedState(): void {\n if (this.store && this.stateId) {\n const state = this.store.getState(this.stateId);\n if (state != null) {\n this.density = state.density;\n this.showFilters = state.showFilters;\n this.showFooter = state.showFooter;\n this.globalFilter = state.globalFilter;\n this.globalFilterValue = state.globalFilterValue;\n this.filters = { ...state.filters };\n this.totals = { ...state.totals };\n }\n }\n }\n\n persistState(): void {\n if (this.store && this.stateId) {\n let somethingChanged = false;\n\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.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.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.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.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 (!this.state.load) {\n this.state.load = true;\n return;\n }\n if (somethingChanged) {\n this.store.persistState(this.stateId, this.state);\n }\n }\n }\n\n /*-------------------------------------------------*/\n /* P r o p s */\n /*-------------------------------------------------*/\n\n /**\n * When enabled, the first level of depth will give an accordion look to nodes.\n * @default false\n */\n @Prop({ reflect: true }) asAccordion: boolean = false;\n /**\n * The columns of the tree when tree visualization is active.\n */\n @Prop({ mutable: true }) columns?: KupDataColumn[];\n /**\n * Custom style of the component.\n * @default \"\"\n * @see https://smeup.github.io/ketchup/#/customization\n */\n @Prop() customStyle: string = '';\n /**\n * The json data used to populate the tree view: the basic, always visible tree nodes.\n */\n @Prop({ mutable: true }) data: KupTreeNode[] = [];\n /**\n * The density of the rows, defaults at 'medium' and can also be set to 'dense' or 'wide'.\n */\n @Prop() density: FCellPadding = FCellPadding.MEDIUM;\n /**\n * Function that gets invoked when a new set of nodes must be loaded as children of a node.\n *\n * When useDynamicExpansion is set, the tree component will have two different behaviors depending on the value of this prop.\n * 1 - If this prop is set to null, no callback to download data is available:\n * the component will emit an event requiring the parent to load the children of the given node.\n * 2 - If this prop is set to have a callback, then the component will automatically make requests to load children of\n * a given node. After the load has been completed, a different event will be fired to alert the parent of the change.\n *\n * @see useDynamicExpansion\n */\n @Prop() dynamicExpansionCallback: (\n treeNodeToExpand: KupTreeNode,\n treeNodePath: TreeNodePath\n ) => Promise<KupTreeNode[]> | undefined = undefined;\n /**\n * When set to true, editable cells will be rendered using input components.\n * @default false\n */\n @Prop() editableData: boolean = false;\n /**\n * Enables the extracolumns add buttons.\n */\n @Prop() enableExtraColumns: boolean = true;\n /**\n * Flag: the nodes of the whole tree must be already expanded upon loading. Disabled nodes do NOT get expanded.\n */\n @Prop() expanded: boolean = false;\n /**\n * Behavior of nodes' expansion: it can be chosen between expanding a node by clicking on the dropdown icon, or by clicking on the whole node.\n * @default KupTreeExpansionMode.DROPDOWN\n */\n @Prop() expansionMode: KupTreeExpansionMode = KupTreeExpansionMode.DROPDOWN;\n /**\n * List of filters set by the user.\n */\n @Prop({ mutable: true }) filters: GenericFilter = {};\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 /**\n * The mode of the global filter (default SIMPLE)\n */\n @Prop() globalFilterMode: KupGlobalFilterMode = KupGlobalFilterMode.SIMPLE;\n /**\n * Experimental feature: when active, the tree will try to prevent horizontal overflowing elements by setting a width on the content of the table cells.\n * It works only on cells of the main column.\n * @default false;\n */\n @Prop({ reflect: true }) preventXScroll: boolean = false;\n /**\n * Sets the possibility to remove the selected column.\n */\n @Prop() removableColumns: boolean = true;\n /**\n * When enabled displays Material's ripple effect on nodes (only when no columns are displayed).\n * @default true\n */\n @Prop() ripple: boolean = true;\n /**\n * Activates the scroll on hover function.\n */\n @Prop() scrollOnHover: boolean = false;\n /**\n * Shows the tree data as a table.\n */\n @Prop({ mutable: true }) showColumns: boolean = false;\n /**\n * When set to true enables the column filters.\n */\n @Prop() showFilters: boolean = true;\n /**\n * When set to true shows the footer.\n */\n @Prop() showFooter: boolean = false;\n /**\n * Flag: shows the header of the tree when the tree is displayed as a table.\n * @see showColumns\n */\n @Prop({ mutable: true }) showHeader: boolean = false;\n /**\n * Shows the icons of the nodes.\n */\n @Prop() showIcons: boolean = true;\n @Prop() stateId: string = '';\n @Prop() store: KupStore;\n /**\n * When the component must use the dynamic expansion feature to open its nodes, it means that not all the nodes of the\n * tree have been passed inside the data property.\n *\n * Therefore, when expanding a node, the tree must emit an event (or run a given callback)\n * and wait for the child nodes to be downloaded from the server.\n *\n * For more information:\n * @see dynamicExpansionCallback\n */\n @Prop() useDynamicExpansion: boolean = false;\n /**\n * Defines the current totals options.\n */\n @Prop({ mutable: true }) totals: TotalsMap;\n\n /*-------------------------------------------------*/\n /* I n t e r n a l V a r i a b l e s */\n /*-------------------------------------------------*/\n\n /**\n * Instance of the KupManager class.\n */\n #kupManager: KupManager = kupManagerInstance();\n /**\n * Reference to the column menu card.\n */\n private columnMenuCard: HTMLKupCardElement = null;\n private treeWrapperRef: KupScrollOnHoverElement;\n private clickTimeout: any[] = [];\n private globalFilterTimeout: number;\n private footer: { [index: string]: number };\n private sizedColumns: KupDataColumn[] = undefined;\n columnFilterTimeout: number;\n private columnMenuInstance: KupColumnMenu;\n private filtersColumnMenuInstance: FiltersColumnMenu =\n new FiltersColumnMenu();\n private filtersTreeItemsInstance: FiltersTreeItems = new FiltersTreeItems();\n private totalMenuCoords: KupDynamicPositionCoordinates = null;\n private visibleNodes: number;\n private contentRefs: HTMLElement[] = [];\n private oldWidth: number = null;\n private hold: boolean = false;\n private interactableTouch: HTMLElement[] = [];\n private clickCb: KupManagerClickCb = null;\n /**\n * Used to prevent too many resizes callbacks at once.\n */\n private resizeTimeout: number;\n\n /*-------------------------------------------------*/\n /* E v e n t s */\n /*-------------------------------------------------*/\n\n /**\n * Fired when a KupTreeNode gets collapsed (closed).\n */\n @Event({\n eventName: 'kup-tree-nodecollapse',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeNodeCollapse: EventEmitter<KupTreeNodeCollapseEventPayload>;\n\n /**\n * Fired when a node expansion ion has been triggered.\n * Contains additional data when the tree is using the dynamicExpansion feature.\n * @event kup-tree-nodeexpand\n * @type {object}\n * @property {TreeNodePath} treeNodePath - The array of indexes to retrieve the current treeNode inside the data prop.\n * @property {KupTreeNode} treeNode - Reference to the KupTreeNode data object which is being expanded (passed through the data prop).\n * @property {boolean} usesDynamicExpansion - Flag to notify that the component is running in dynamicExpansion mode.\n * @property {boolean} dynamicExpansionRequireChildren - Flag to notify that the current dynamicExpansion event\n * requires the parent component to add KupTreeNode children to the given KupTreeNode.\n * @see useDynamicExpansion\n * @see dynamicExpansionCallback\n * @since 1.0.0\n */\n @Event({\n eventName: 'kup-tree-nodeexpand',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeNodeExpand: EventEmitter<KupTreeNodeExpandEventPayload>;\n\n /**\n * Fired when a node of the tree has been selected\n */\n @Event({\n eventName: 'kup-tree-nodeselected',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeNodeSelected: EventEmitter<KupTreeNodeSelectedEventPayload>;\n\n @Event({\n eventName: 'kup-tree-buttonclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeNodeButtonClick: EventEmitter<KupTreeNodeButtonClickEventPayload>;\n\n /**\n * Generic right click event on tree.\n */\n @Event({\n eventName: 'kup-tree-contextmenu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeContextMenu: EventEmitter<KupTreeContextMenuEventPayload>;\n /**\n * When the column menu is being opened/closed.\n */\n @Event({\n eventName: 'kup-tree-columnmenu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeColumnMenu: EventEmitter<KupTreeColumnMenuEventPayload>;\n\n @Event({\n eventName: 'kup-tree-didload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidLoad: EventEmitter<KupEventPayload>;\n\n /**\n * Triggered when stop propagation event\n */\n\n @Event({\n eventName: 'kup-tree-didunload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidUnload: EventEmitter<KupEventPayload>;\n\n @Event({\n eventName: 'kup-tree-nodedblclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeNodeDblClick: EventEmitter<KupTreeNodeCollapseEventPayload>;\n\n @Event({\n eventName: 'kup-tree-dynamicmassexpansion',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupTreeDynamicMassExpansion: EventEmitter<KupTreeDynamicMassExpansionEventPayload>;\n /**\n * Event fired when columns are removed (set to hidden).\n */\n @Event({\n eventName: 'kup-tree-columnremove',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupColumnRemove: EventEmitter<KupTreeColumnRemoveEventPayload>;\n\n /**\n * This method will get the selected nodes of the component.\n */\n @Method()\n async getSelectedNode(): Promise<TreeNodePath> {\n return this.selectedNode;\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 setSelectedNode(\n treeNodePath: string,\n emitEvent?: boolean\n ): Promise<void> {\n this.selectedNode = treeNodePath\n .split(',')\n .map((treeNodeIndex) => parseInt(treeNodeIndex));\n if (emitEvent !== false) {\n this.kupTreeNodeSelected.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: this.selectedNode,\n treeNode: this.getTreeNode(this.selectedNode),\n columnName: null,\n });\n }\n }\n /*-------------------------------------------------*/\n /* W a t c h e r s */\n /*-------------------------------------------------*/\n\n @Watch('data')\n enrichDataWhenChanged(\n newData: KupTreeNode[] | KupDataDataset,\n oldData: KupTreeNode[]\n ) {\n if (!newData) {\n newData = [];\n }\n if (newData !== oldData) {\n this.refreshStructureState();\n }\n }\n\n @Watch('expanded')\n enrichStructureStateWhenChanged(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.refreshStructureState();\n }\n }\n\n /*-------------------------------------------------*/\n /* P u b l i c M e t h o d s */\n /*-------------------------------------------------*/\n\n /**\n * True if there aren't visible nodes\n */\n @Method()\n async isEmpty(): Promise<boolean> {\n return this.visibleNodes == 0;\n }\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.kupTreeColumnMenu.emit({\n comp: this,\n id: this.rootElement.id,\n card: this.columnMenuCard,\n event: null,\n open: false,\n });\n }\n /**\n * Collapses all nodes.\n */\n @Method()\n async collapseAll() {\n if (!this.useDynamicExpansion) {\n for (let index = 0; index < this.data.length; index++) {\n this.data[index].isExpanded = false;\n this.handleChildren(this.data[index], false);\n }\n } else {\n this.kupTreeDynamicMassExpansion.emit({\n comp: this,\n id: this.rootElement.id,\n expandAll: false,\n });\n }\n this.refresh();\n }\n /**\n * Expands all nodes.\n */\n @Method()\n async expandAll() {\n if (!this.useDynamicExpansion) {\n for (let index = 0; index < this.data.length; index++) {\n this.data[index].isExpanded = true;\n this.handleChildren(this.data[index], true);\n }\n } else {\n this.kupTreeDynamicMassExpansion.emit({\n comp: this,\n id: this.rootElement.id,\n expandAll: true,\n });\n }\n this.refresh();\n }\n /**\n * Adds/subtracts the input number from the first node's depth level.\n */\n @Method()\n async setExpansionByDepth(modifier: number) {\n const handleChildren = (\n node: KupTreeNode,\n expand: boolean,\n maxDepth?: number,\n depth?: number\n ) => {\n const shouldExpand = depth < maxDepth;\n node.isExpanded = shouldExpand;\n for (\n let index = 0;\n node.children && index < node.children.length;\n index++\n ) {\n const child = node.children[index];\n handleChildren(child, expand, maxDepth, depth + 1);\n }\n };\n const getNodeDepth = (): number => {\n let maxDepth = 0;\n\n const traverseNode = (\n node: KupTreeNode,\n currentDepth: number\n ): void => {\n if (node.children?.length) {\n if (node.isExpanded) {\n maxDepth = Math.max(maxDepth, currentDepth + 1);\n }\n for (let index = 0; index < node.children.length; index++) {\n const child = node.children[index];\n traverseNode(child, currentDepth + 1);\n }\n }\n };\n\n for (let index = 0; index < this.data.length; index++) {\n const node = this.data[index];\n traverseNode(node, 0);\n }\n return maxDepth;\n };\n\n let maxDepth = getNodeDepth() + modifier;\n\n if (!this.useDynamicExpansion) {\n for (let index = 0; index < this.data.length; index++) {\n const node = this.data[index];\n handleChildren(node, false, maxDepth, 0);\n }\n } else {\n this.kupTreeDynamicMassExpansion.emit({\n comp: this,\n id: this.rootElement.id,\n expandAll: false,\n });\n }\n this.refresh();\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, KupTreeProps, descriptions);\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.columns, [column.name]);\n this.kupColumnRemove.emit({\n comp: this,\n id: this.rootElement.id,\n column: column,\n });\n this.refresh();\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.kupTreeColumnMenu.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.kupTreeColumnMenu.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.kupTreeColumnMenu.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(): Promise<void> {\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 (this.rootElement.clientWidth !== this.oldWidth) {\n window.clearTimeout(this.resizeTimeout);\n this.resizeTimeout = window.setTimeout(() => this.refresh(), 300);\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, KupTreeProps, props);\n }\n\n /*-------------------------------------------------*/\n /* P r i v a t e M e t h o d s */\n /*-------------------------------------------------*/\n\n setTreeColumnVisibility(value: boolean) {\n this.treeColumnVisible = value;\n }\n\n isTreeColumnVisible(): boolean {\n return this.treeColumnVisible;\n }\n\n private checkScrollOnHover() {\n if (!this.#kupManager.scrollOnHover.isRegistered(this.treeWrapperRef)) {\n if (this.scrollOnHover) {\n this.#kupManager.scrollOnHover.register(this.treeWrapperRef);\n }\n } else {\n if (!this.scrollOnHover) {\n this.#kupManager.scrollOnHover.unregister(this.treeWrapperRef);\n }\n }\n }\n\n onKupTreeNodeDblClick(treeNodeData: KupTreeNode, treeNodePath: string) {\n for (let index = 0; index < this.clickTimeout.length; index++) {\n clearTimeout(this.clickTimeout[index]);\n this.#kupManager.debug.logMessage(\n this,\n 'Cleared hdlTreeNodeClick timeout(' +\n this.clickTimeout[index] +\n ').'\n );\n }\n this.clickTimeout = [];\n this.kupTreeNodeDblClick.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: treeNodePath\n .split(',')\n .map((treeNodeIndex) => parseInt(treeNodeIndex)),\n treeNode: treeNodeData,\n });\n }\n\n nodesToRows(): KupDataRow[] {\n function children(TreeNode: KupTreeNode) {\n for (let index = 0; index < TreeNode.children.length; index++) {\n const node: KupTreeNode = TreeNode.children[index];\n rows.push({\n cells: TreeNode.children[index].cells,\n });\n if (node.children) {\n children(node);\n }\n }\n }\n let rows: KupDataRow[] = [];\n for (let index = 0; index < this.data.length; index++) {\n const node: KupTreeNode = this.data[index];\n rows.push({\n cells: this.data[index].cells,\n });\n if (node.children) {\n children(this.data[index]);\n }\n }\n return rows;\n }\n\n private setDynPosElements() {\n // Column menu\n if (this.columnMenuCard && this.columnMenuCard.data) {\n this.columnMenuCard.data = this.columnMenuInstance.prepData(\n this,\n getColumnByName(\n this.getVisibleColumns(),\n this.columnMenuAnchor\n ),\n this.columnMenuCard.data\n );\n }\n }\n\n expandCollapseNode(treeNode: KupTreeNode, expandNode: boolean = false) {\n this.filtersTreeItemsInstance.expandCollapseNode(treeNode, expandNode);\n }\n\n expandCollapseAllNodes(treeNode: KupTreeNode, expandNode: boolean = false) {\n this.filtersTreeItemsInstance.expandCollapseAllNodes(\n treeNode,\n expandNode\n );\n }\n\n getColumns(): Array<KupDataColumn> {\n return this.columns ? this.columns : [{ title: '', name: '' }];\n }\n\n private getSizedColumns() {\n let columns = this.getColumns();\n let 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 getVisibleColumns(): Array<KupDataColumn> {\n return this.getColumns().filter((column) =>\n column.hasOwnProperty('visible') ? column.visible : true\n );\n }\n\n getHeadingColumns(): Array<KupDataColumn> {\n const firstColum: KupDataColumn = {\n name: treeMainColumnName,\n title: '',\n };\n const visibleColumns = this.getVisibleColumns();\n return [firstColum, ...visibleColumns];\n }\n\n /*\n *For launch the event when selected node\n */\n launchNodeEvent(treeNodePath: TreeNodePath, treeNode: KupTreeNode) {\n if (treeNodePath && treeNodePath.length > 0) {\n if (treeNodePath[0] != -1) {\n var tn = treeNode.children[treeNodePath[0]];\n if (!tn) {\n tn = treeNode;\n }\n if (treeNodePath.length > 1) {\n treeNodePath = treeNodePath.slice(1);\n this.launchNodeEvent(treeNodePath, tn);\n } else {\n this.hdlTreeNodeClick(\n null,\n tn,\n this.selectedNodeToString(this.selectedNode)\n );\n }\n }\n }\n }\n\n private openTotalMenu(column: KupDataColumn) {\n this.openedTotalMenu = column.name;\n }\n\n private onTotalMenuOpen(column: KupDataColumn) {\n this.closeTotalMenu();\n this.openTotalMenu(column);\n }\n\n private getEventDetails(\n path: HTMLElement[],\n e?: PointerEvent\n ): KupTreeEventHandlerDetails {\n let isHeader: boolean,\n isBody: boolean,\n isFooter: boolean,\n td: 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 (\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 let cell: KupDataCell = null,\n column: KupDataColumn = null,\n row: KupTreeNode = null;\n if (isBody) {\n if (td) {\n cell = td['data-cell'];\n }\n if (tr) {\n row = tr['data-row'];\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 originalEvent: e,\n row: row ? row : null,\n td: td ? td : null,\n th: th ? th : null,\n tr: tr ? tr : null,\n };\n }\n\n private contextMenuHandler(e: PointerEvent): KupTreeEventHandlerDetails {\n e.preventDefault();\n const details = 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 this.openColumnMenu(details.column.name);\n return details;\n }\n } else if (details.area === '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 // When a TreeNode can be selected\n hdlTreeNodeClick(\n e: MouseEvent,\n treeNodeData: KupTreeNode,\n treeNodePath: string\n ) {\n if (\n this.expansionMode.toLowerCase() ===\n KupTreeExpansionMode.DROPDOWN ||\n (this.expansionMode.toLowerCase() === KupTreeExpansionMode.NODE &&\n !isExpandable(treeNodeData))\n ) {\n const td = e\n ? this.#kupManager\n .getEventPath(e.target, this.rootElement)\n .find((el) => {\n if (el.tagName === 'TD') return el;\n })\n : null;\n // If this TreeNode is not disabled, then it can be selected and an event is emitted\n if (treeNodeData && !treeNodeData.disabled) {\n this.selectedNode = treeNodePath\n .split(',')\n .map((treeNodeIndex) => parseInt(treeNodeIndex));\n\n this.kupTreeNodeSelected.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: this.selectedNode,\n treeNode: treeNodeData,\n columnName: td ? td.dataset.column : null,\n });\n }\n }\n\n // If KupTreeExpansionMode.NODE then click is a collapse/expand click\n if (this.expansionMode.toLowerCase() === KupTreeExpansionMode.NODE) {\n this.hdlTreeNodeExpanderClick(\n treeNodeData,\n treeNodePath,\n e ? e.ctrlKey : false\n );\n }\n }\n\n // When a TreeNode must be expanded or closed.\n hdlTreeNodeExpanderClick(\n treeNodeData: KupTreeNode,\n treeNodePath: string,\n ctrlKey: boolean\n ) {\n // If the node is expandable\n if (isExpandable(treeNodeData)) {\n // Always composes the tree node path as an array\n const arrayTreeNodePath: TreeNodePath = treeNodePath\n .split(',')\n .map((index) => parseInt(index));\n\n // There are already children set in this TreeNode -> expand or collapse node and emit appropriate event\n if (treeNodeData.children && treeNodeData.children.length) {\n // Updates expanded state and force rerender\n treeNodeData.isExpanded = !treeNodeData.isExpanded;\n if (ctrlKey) {\n this.handleChildren(treeNodeData, treeNodeData.isExpanded);\n }\n this.refresh();\n if (treeNodeData.isExpanded) {\n // TreeNode is now expanded -> Fires expanded event\n this.kupTreeNodeExpand.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: arrayTreeNodePath,\n treeNode: treeNodeData,\n usesDynamicExpansion: this.useDynamicExpansion,\n });\n } else {\n // TreeNode is now collapsed -> Fires collapsed event\n this.kupTreeNodeCollapse.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: arrayTreeNodePath,\n treeNode: treeNodeData,\n });\n }\n } else if (this.useDynamicExpansion) {\n if (ctrlKey) {\n this.kupTreeDynamicMassExpansion.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: arrayTreeNodePath,\n treeNode: treeNodeData,\n });\n }\n // When the component must use the dynamic expansion feature\n // Currently it does not support the expanded prop\n\n // Checks if we have a dynamicExpansionCallback or not\n if (this.dynamicExpansionCallback) {\n // We have a callback: invokes it and after the result is returned updates the tree\n this.dynamicExpansionCallback(\n treeNodeData,\n arrayTreeNodePath\n )\n .then((childrenTreeNodes) => {\n // Children returned successfully\n treeNodeData.children = childrenTreeNodes;\n treeNodeData.isExpanded = !treeNodeData.isExpanded;\n this.refresh();\n\n // TreeNode is now expanded -> Fires expanded event\n this.kupTreeNodeExpand.emit({\n comp: this,\n id: this.rootElement.id,\n treeNodePath: arrayTreeNodePath,\n treeNode: treeNodeData,\n usesDynamicExpansion: true,\n });\n })\n .catch((err) => {\n console.error(\n 'KupTree: An error occurred when trying to fetch dynamicExpansion nodes data',\n err,\n treeNodeData\n );\n });\n } else {\n // we do NOT have a callback set.\n // Fires the expand request for the given TreeNode and set the appropriate flag\n this.kupTreeNodeExpand.emit({\n comp: this,\n id: this.rootElement.id,\n treeNode: treeNodeData,\n treeNodePath: arrayTreeNodePath,\n usesDynamicExpansion: true,\n dynamicExpansionRequireChildren: true,\n });\n\n treeNodeData.isExpanded = !treeNodeData.isExpanded;\n }\n }\n }\n }\n\n private hasTotals() {\n return this.totals && Object.keys(this.totals).length > 0;\n }\n\n private handleChildren(treeNode: KupTreeNode, expand: boolean) {\n for (let index = 0; index < treeNode.children.length; index++) {\n let node = treeNode.children[index];\n if (!node.disabled) {\n node.isExpanded = expand;\n if (node.children) {\n this.handleChildren(node, expand);\n }\n }\n }\n }\n\n /**\n * Given a nodePath, transform that array into\n * @param nodePath\n */\n selectedNodeToString(nodePath: TreeNodePath) {\n let strToRet = '';\n if (nodePath && nodePath.length) {\n strToRet = nodePath[0].toString();\n for (let i = 1; i < nodePath.length; i++) {\n strToRet += `,${nodePath[i]}`;\n }\n }\n return strToRet;\n }\n\n private getFilterValueForTooltip(column: KupDataColumn): string {\n return this.filtersColumnMenuInstance.getFilterValueForTooltip(\n this.filters,\n column\n );\n }\n\n private getTreeNode(nodePath: TreeNodePath): KupTreeNode {\n if (!nodePath || nodePath.length == 0) {\n return null;\n }\n let father = this.data;\n let node: KupTreeNode = null;\n for (let index = 0; index < nodePath.length; index++) {\n if (node) {\n father = node.children;\n }\n const nodeIndex = nodePath[index];\n node = father[nodeIndex];\n }\n return node;\n }\n\n private onRemoveFilter(column: KupDataColumn) {\n const newFilters: GenericFilter = { ...this.filters };\n this.filtersColumnMenuInstance.removeFilter(newFilters, column.name);\n this.filters = newFilters;\n }\n\n onGlobalFilterChange({ detail }) {\n let value = '';\n if (detail && detail.value) {\n value = detail.value;\n }\n this.globalFilterValue = value;\n }\n\n getColumnValues(column: KupDataColumn): ValueDisplayedValue[] {\n return this.filtersTreeItemsInstance.getColumnValues(\n this,\n column,\n this.globalFilterValue,\n this.filtersColumnMenuInstance\n );\n }\n\n getRows(): Array<KupTreeNode> {\n return this.data ? this.data : [];\n }\n\n private filterNodes() {\n let items: KupTreeNode[] = this.filtersTreeItemsInstance.filterRows(\n this.getRows(),\n this.filters,\n this.globalFilterValue,\n this.getColumns(),\n this.filtersColumnMenuInstance\n );\n\n this.visibleNodes = this.calculateVisibleNodes(items);\n }\n\n private calculateVisibleNodes(items: KupTreeNode[]): number {\n let count = 0;\n if (items) {\n items.forEach((element) => {\n if (element.visible) {\n count++;\n }\n count += this.calculateVisibleNodes(element.children);\n });\n }\n return count;\n }\n\n private refreshStructureState() {\n if (this.data) {\n if ((this.data as KupDataDataset).columns) {\n this.#kupManager.debug.logMessage(\n this,\n 'Detected KupDataDataset: setting up tree as grid.',\n KupDebugCategory.WARNING\n );\n const data = this.data as KupDataDataset;\n this.columns = data.columns;\n this.data = this.#kupManager.data.row.toNode(data);\n this.showColumns = true;\n this.showHeader = true;\n }\n // When the nodes must be expanded upon loading and the tree is not using a dynamicExpansion (and the current TreeNode is not disabled)\n // the default value of the treeExpandedPropName is set to true\n this.data.forEach((rootNode) => {\n this.expandCollapseAllNodes(\n rootNode,\n this.expanded && !this.useDynamicExpansion\n );\n });\n this.selectedNode = [];\n }\n }\n\n private getCellStyle(colName: string, cellStyle: any): any {\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 (colName === 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 cellStyle['max-width'] = colWidth;\n cellStyle['min-width'] = colWidth;\n cellStyle['width'] = colWidth;\n cellStyle['overflow'] = 'hidden';\n }\n }\n return cellStyle;\n }\n\n /**\n * Renders the header of the tree when it must be displayed as a table.\n * @returns An array of table header cells.\n */\n renderHeader(): JSX.Element[] {\n return this.getHeadingColumns().map((column) => {\n if (\n !this.isTreeColumnVisible() &&\n column.name === treeMainColumnName\n )\n return;\n\n //---- Filter ----\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 /**\n * When column has a filter but filters must not be displayed, shows an icon to remove the filter.\n * Upon click, the filter gets removed.\n */\n filter = (\n <span\n title={svgLabel}\n class={`kup-icon ${KupThemeIconValues.FILTER_REMOVE.replace(\n '--',\n ''\n )}`}\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n this.onRemoveFilter(column);\n }}\n ></span>\n );\n }\n\n return (\n <th\n data-column={column.name}\n style={this.getCellStyle(column.name, null)}\n >\n <span class=\"column-title\">{column.title}</span>\n {filter}\n </th>\n );\n });\n }\n\n /**\n * Renders a content with a part highlighted.\n * NOTE: same in kup-accordion and in kup-tree\n */\n private renderHighlightedContent(\n content: string,\n highlight: string,\n styleClass: string\n ) {\n let contentSlices = [];\n if (highlight && content) {\n let contentPart = content;\n let end = contentPart\n .toLowerCase()\n .indexOf(highlight.toLowerCase());\n while (end > -1) {\n contentSlices.push(contentPart.substring(0, end));\n contentSlices.push(\n <span class={styleClass + '--highlighted'}>\n {contentPart.substring(end, end + highlight.length)}\n </span>\n );\n contentPart = contentPart.substring(\n end + highlight.length,\n contentPart.length\n );\n end = contentPart\n .toLowerCase()\n .indexOf(highlight.toLowerCase());\n }\n if (end < contentPart.length) {\n contentSlices.push(\n contentPart.substring(end, contentPart.length)\n );\n }\n } else {\n contentSlices.push(content);\n }\n return (\n <span\n class={styleClass}\n ref={(el: HTMLElement) => this.contentRefs.push(el)}\n title={this.preventXScroll ? content : null}\n >\n {contentSlices}\n </span>\n );\n }\n\n /**\n * Given a KupTreeNode, reads through its data then composes and returns its JSX object.\n * @param treeNodeData - The KupTreeNode object to parse.\n * @param treeNodePath - A string containing the comma(,) separated indexes of the KupTreeNodes to use,\n * sorted from left to right, to access the current KupTreeNode starting from the data prop children object.\n * @param treeNodeDepth - An integer to keep track of the depth level of the current KupTreeNode. Used for indentation.\n * @returns The the JSX created from the current tree node.\n */\n renderTreeNode(\n treeNodeData: KupTreeNode,\n treeNodePath: string,\n treeNodeDepth: number = 0\n ): JSX.Element {\n // Creates the indentation of the current element. Use a css variable to specify padding.\n let indent = treeNodeDepth ? (\n <span\n class=\"kup-tree__indent\"\n style={{\n ['--kup_tree_node_depth']: this.asAccordion\n ? (treeNodeDepth - 1).toString()\n : treeNodeDepth.toString(),\n }}\n />\n ) : null;\n\n // If the tree node is expandable, adds the icon to show the expansion.\n // If expandable, also add the callback on the click action.\n // If it is not expandable, we simply add a placeholder with no icons.\n const hasExpandIcon: boolean = !!(\n isExpandable(treeNodeData) &&\n ((treeNodeData.children && treeNodeData.children.length) ||\n this.useDynamicExpansion)\n );\n let expandClass = 'expand-icon kup-tree__icon kup-tree__node__expander';\n if (hasExpandIcon) {\n expandClass += ' kup-icon';\n if (this.asAccordion && treeNodeDepth === 0) {\n expandClass += ` ${KupThemeIconValues.DROPDOWN.replace(\n '--',\n ''\n )}`;\n } else if (treeNodeData.isExpanded) {\n expandClass += ` ${KupThemeIconValues.EXPANDED.replace(\n '--',\n ''\n )}`;\n } else {\n expandClass += ` ${KupThemeIconValues.COLLAPSED.replace(\n '--',\n ''\n )}`;\n }\n }\n let treeExpandIcon = (\n <span\n title={\n this.#kupManager.language.translate(\n KupLanguageGeneric.EXPAND\n ) +\n '/' +\n this.#kupManager.language.translate(\n KupLanguageGeneric.COLLAPSE\n ) +\n ' (CTRL + Click)'\n }\n class={expandClass}\n onClick={\n this.expansionMode.toLowerCase() ===\n KupTreeExpansionMode.DROPDOWN && !treeNodeData.disabled\n ? (event: MouseEvent) => {\n event.stopPropagation();\n this.hdlTreeNodeExpanderClick(\n treeNodeData,\n treeNodePath,\n event.ctrlKey\n );\n }\n : null\n }\n ></span>\n );\n\n // When TreeNode icons are visible, creates the icon if one is specified\n let treeNodeIcon: any = null;\n if (this.showIcons) {\n if (treeNodeData.icon) {\n if (treeNodeData.icon === '') {\n treeNodeIcon = <span class=\"kup-tree__icon\" />;\n } else {\n treeNodeIcon = (\n <FImage\n color={treeNodeData.iconColor}\n placeholderResource={treeNodeData.placeholderIcon}\n resource={treeNodeData.icon}\n wrapperClass={'kup-tree__icon'}\n ></FImage>\n );\n }\n } else {\n treeNodeIcon = null;\n }\n }\n\n // Composes additional options for the tree node element\n let treeNodeOptions = {};\n if (\n treeNodeData.hasOwnProperty('isExpanded') &&\n treeNodeData.isExpanded &&\n hasExpandIcon\n ) {\n // If the node is expanded it has this attribute set to if this node is expanded or not.\n treeNodeOptions['data-is-expanded'] = treeNodeData.isExpanded;\n }\n\n // When can be expanded OR selected\n if (!treeNodeData.disabled) {\n treeNodeOptions['onClick'] = (e: MouseEvent) => {\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 this.clickTimeout.push(\n setTimeout(\n () =>\n this.hdlTreeNodeClick(\n clone as MouseEvent,\n treeNodeData,\n treeNodePath\n ),\n 300\n )\n );\n };\n }\n\n // When a tree node is displayed as a table\n let treeNodeCells: JSX.Element[] | null = null;\n let visibleCols = this.getVisibleColumns();\n if (this.showColumns && visibleCols && visibleCols.length) {\n treeNodeCells = [];\n // Renders all the cells\n for (let j = 0; j < visibleCols.length; j++) {\n const column = visibleCols[j];\n if (treeNodeData.cells && treeNodeData.cells[column.name]) {\n const cell = treeNodeData.cells[column.name]\n ? treeNodeData.cells[column.name]\n : null;\n const cellProps: FCellProps = {\n cell: cell,\n column: column,\n component: this,\n density: this.density,\n editable: this.editableData,\n renderKup: true,\n row: treeNodeData,\n setSizes: true,\n };\n treeNodeCells.push(\n <td\n class={`grid-cell`}\n data-cell={cell}\n data-column={column.name}\n >\n <FCell {...cellProps}></FCell>\n </td>\n );\n } else {\n treeNodeCells.push(<td class={`grid-cell`}></td>);\n }\n }\n }\n let title: string = undefined;\n if (\n !this.#kupManager.objects.isEmptyKupObj(treeNodeData.obj) &&\n this.#kupManager.debug.isDebug()\n ) {\n title =\n treeNodeData.obj.t +\n '; ' +\n treeNodeData.obj.p +\n '; ' +\n treeNodeData.obj.k +\n ';';\n }\n\n let treeNodeCell = null;\n if (this.isTreeColumnVisible()) {\n let content = '';\n if (KupGlobalFilterMode.HIGHLIGHT === this.globalFilterMode) {\n content = this.renderHighlightedContent(\n treeNodeData.value,\n this.globalFilterValue,\n 'cell-content'\n );\n } else {\n content = (\n <span\n ref={(el: HTMLElement) => this.contentRefs.push(el)}\n class=\"cell-content\"\n title={this.preventXScroll ? treeNodeData.value : null}\n >\n {treeNodeData.value}\n </span>\n );\n }\n\n treeNodeCell = (\n <td\n class={{\n 'first-node': treeNodeDepth === 0 ? true : false,\n 'mdc-ripple-surface':\n this.ripple &&\n !this.showColumns &&\n !treeNodeData.disabled,\n 'is-obj': !this.#kupManager.objects.isEmptyKupObj(\n treeNodeData.obj\n ),\n }}\n style={treeNodeData.style || null}\n title={title}\n onDblClick={() => {\n this.onKupTreeNodeDblClick(treeNodeData, treeNodePath);\n }}\n >\n {this.asAccordion && !treeNodeDepth\n ? [\n treeNodeIcon,\n content,\n hasExpandIcon ? treeExpandIcon : null,\n ]\n : [indent, treeExpandIcon, treeNodeIcon, content]}\n </td>\n );\n }\n\n return (\n <tr\n class={{\n 'kup-tree__node': true,\n 'with-dyn': !treeNodeData.disabled,\n 'kup-tree__node--disabled': treeNodeData.disabled,\n 'kup-tree__node--first': treeNodeDepth ? false : true,\n 'kup-tree__node--selected':\n !treeNodeData.disabled &&\n treeNodePath ===\n this.selectedNodeToString(this.selectedNode),\n }}\n data-row={treeNodeData}\n data-tree-path={treeNodePath}\n {...treeNodeOptions}\n >\n {treeNodeCell}\n {treeNodeCells}\n </tr>\n );\n }\n\n private closeTotalMenu() {\n this.openedTotalMenu = null;\n this.#kupManager.removeClickCallback(this.clickCb);\n }\n\n private isOpenedTotalMenuForColumn(column: string): boolean {\n return this.openedTotalMenu === column;\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 renderFooter() {\n const nodesCell: HTMLElement = <td></td>;\n const footerCells = this.getVisibleColumns().map(\n (column: KupDataColumn) => {\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 let 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 listData.push(\n {\n id: TotalMode.SUM,\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 }\n let selectedItem = listData.find(\n (item) => item.value === menuLabel\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 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 ></kup-list>\n );\n }\n\n let value;\n if (\n menuLabel === TotalLabel.COUNT ||\n menuLabel === TotalLabel.DISTINCT\n ) {\n value = this.footer[column.name];\n } else {\n value = this.#kupManager.math.numberToFormattedString(\n this.footer[column.name],\n column.decimals,\n column.obj ? column.obj.p : ''\n );\n }\n\n return (\n <td data-column={column.name}>\n {totalMenu}\n <span\n class=\"totals-value\"\n title={translation[menuLabel]}\n >\n {value}\n </span>\n </td>\n );\n }\n );\n\n return (\n <tfoot>\n <tr>\n {nodesCell}\n {footerCells}\n </tr>\n </tfoot>\n );\n }\n\n didLoadInteractables() {\n this.interactableTouch.push(this.treeWrapperRef);\n const tapCb = (e: PointerEvent) => {\n if (this.hold) {\n this.hold = false;\n return;\n }\n switch (e.button) {\n // right click\n case 2:\n this.kupTreeContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.contextMenuHandler(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.kupTreeContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.contextMenuHandler(e),\n });\n }\n };\n this.#kupManager.interact.on(\n this.treeWrapperRef,\n KupPointerEventTypes.TAP,\n tapCb\n );\n this.#kupManager.interact.on(\n this.treeWrapperRef,\n KupPointerEventTypes.HOLD,\n holdCb\n );\n }\n\n private 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 );\n if (!this.clickCb) {\n this.clickCb = {\n cb: () => {\n this.closeTotalMenu();\n this.#kupManager.dynamicPosition.stop(\n menu as unknown as KupDynamicPositionElement\n );\n },\n el: menu,\n };\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 /**\n * Given a KupTreeNode, reads through its data to compose and return the KupTreeNodes of the root of this KupTreeNode\n * and its children nodes, composing an array of JSX KupTreeNodes.\n * @param treeNodeData - The KupTreeNode object to parse.\n * @param treeNodePath - A string containing the comma(,) separated indexes of the KupTreeNodes to use,\n * sorted from left to right, to access the current KupTreeNode starting from the data prop children object.\n * @param treeNodeDepth - An integer to keep track of the depth level of the current KupTreeNode. Used for indentation.\n * @returns An array of JSX KupTreeNodes created from the given treeNodeData.\n */\n renderTree(\n treeNodeData: KupTreeNode,\n treeNodePath: string,\n treeNodeDepth: number = 0\n ): JSX.Element[] {\n let treeNodes = [];\n\n if (treeNodeData && treeNodeData.visible == true) {\n // Creates and adds the root of the current tree\n treeNodes.push(\n this.renderTreeNode(treeNodeData, treeNodePath, treeNodeDepth)\n );\n\n // Checks if the current node can be expanded, has children object, has children and is expanded\n if (isExpandable(treeNodeData) && treeNodeData.isExpanded) {\n for (let i = 0; i < treeNodeData.children.length; i++) {\n treeNodes = treeNodes.concat(\n this.renderTree(\n treeNodeData.children[i],\n treeNodePath + ',' + i,\n treeNodeDepth + 1\n )\n );\n }\n }\n }\n\n return treeNodes;\n }\n\n private setEllipsis(): void {\n const treeRect: DOMRect = this.rootElement.getBoundingClientRect();\n for (let index = 0; index < this.contentRefs.length; index++) {\n const content: HTMLElement = this.contentRefs[index];\n if (content) {\n const cell = content.parentNode as HTMLElement;\n if (this.asAccordion && cell.classList.contains('first-node')) {\n cell.style.width = treeRect.width + 'px';\n } else {\n content.classList.remove('cell-content--ellipsis');\n content.style.setProperty('--kup_tree_content_width', ``);\n const rect: DOMRect = content.getBoundingClientRect();\n if (rect.right > treeRect.right) {\n const failsafeOffset: number = 5;\n const delta: number = rect.right - treeRect.right;\n content.classList.add('cell-content--ellipsis');\n content.style.setProperty(\n '--kup_tree_content_width',\n `${rect.width - delta - failsafeOffset}px`\n );\n }\n }\n }\n }\n }\n\n /*-------------------------------------------------*/\n /* L i f e c y c l e H o o k s */\n /*-------------------------------------------------*/\n\n componentWillLoad() {\n this.#kupManager.debug.logLoad(this, false);\n this.#kupManager.language.register(this);\n this.#kupManager.theme.register(this);\n this.columnMenuInstance = new KupColumnMenu();\n this.refreshStructureState();\n }\n\n componentDidLoad() {\n this.didLoadInteractables();\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 componentWillRender() {\n this.#kupManager.debug.logRender(this, false);\n if (this.showFooter && this.columns) {\n this.footer = calcTotals(\n normalizeRows(this.getColumns(), this.nodesToRows()),\n this.totals\n );\n }\n this.filterNodes();\n }\n\n componentDidRender() {\n const root = this.rootElement.shadowRoot;\n if (root && this.ripple) {\n const rippleCells = root.querySelectorAll(\n '.mdc-ripple-surface:not(.mdc-ripple-upgraded)'\n );\n if (rippleCells) {\n for (let i = 0; i < rippleCells.length; i++) {\n MDCRipple.attachTo(rippleCells[i]);\n }\n }\n }\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.preventXScroll) {\n this.setEllipsis();\n }\n this.totalMenuPosition();\n this.checkScrollOnHover();\n this.setDynPosElements();\n\n // *** Store\n this.persistState();\n // ***\n this.oldWidth = this.rootElement.clientWidth;\n this.#kupManager.debug.logRender(this, true);\n }\n\n render() {\n this.contentRefs = [];\n\n this.sizedColumns = this.getSizedColumns();\n let wrapperClass: string = 'density-medium';\n switch (this.density) {\n case FCellPadding.DENSE:\n wrapperClass = 'density-dense';\n break;\n case FCellPadding.WIDE:\n wrapperClass = 'density-wide';\n break;\n }\n\n // Composes TreeNodes\n let treeNodes: JSX.Element[] = [];\n if (this.data && this.data.length) {\n this.data.forEach((zeroDepthNode, index) => {\n treeNodes = treeNodes.concat(\n this.renderTree(zeroDepthNode, index.toString())\n );\n });\n } else {\n // There are no TreeNodes, so we print a single cell with a caption\n treeNodes.push(\n <tr>\n <td>\n {this.#kupManager.language.translate(\n KupLanguageGeneric.EMPTY_DATA\n )}\n </td>\n </tr>\n );\n }\n\n // Calculates if header must be shown or not\n const visibleHeader = this.showHeader && this.showColumns;\n\n let filterField = null;\n if (\n this.globalFilter &&\n this.data &&\n this.data.length &&\n this.data.length > 0\n ) {\n filterField = (\n <div id=\"global-filter\">\n <kup-text-field\n fullWidth={true}\n label={this.#kupManager.language.translate(\n KupLanguageSearch.SEARCH\n )}\n icon={KupThemeIconValues.SEARCH}\n initialValue={this.globalFilterValue}\n onkup-textfield-input={(event) => {\n window.clearTimeout(this.globalFilterTimeout);\n this.globalFilterTimeout = window.setTimeout(\n () => this.onGlobalFilterChange(event),\n 600\n );\n }}\n ></kup-text-field>\n </div>\n );\n }\n\n return (\n <Host>\n <style>\n {this.#kupManager.theme.setKupStyle(\n this.rootElement as KupComponent\n )}\n </style>\n <div id={componentWrapperId} class={wrapperClass}>\n {filterField}\n <div\n class=\"wrapper\"\n ref={(el: HTMLElement) =>\n (this.treeWrapperRef =\n el as KupScrollOnHoverElement)\n }\n >\n <table\n class=\"kup-tree\"\n data-show-columns={this.showColumns}\n onContextMenu={(e: MouseEvent) => {\n e.preventDefault();\n }}\n >\n <thead\n class={{\n 'header--is-visible': visibleHeader,\n }}\n >\n <tr>\n {visibleHeader ? this.renderHeader() : null}\n </tr>\n </thead>\n <tbody>{treeNodes}</tbody>\n {(this.showFooter || this.hasTotals()) &&\n this.columns\n ? this.renderFooter()\n : null}\n </table>\n </div>\n </div>\n </Host>\n );\n }\n\n disconnectedCallback() {\n this.#kupManager.language.register(this);\n this.#kupManager.resize.unobserve(this.rootElement);\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.columnMenuCard) {\n this.columnMenuCard.remove();\n }\n if (this.scrollOnHover) {\n this.#kupManager.scrollOnHover.unregister(this.treeWrapperRef);\n }\n this.kupDidUnload.emit({ comp: this, id: this.rootElement.id });\n }\n}\n"]}
|