@infineon/infineon-design-system-stencil 39.3.1--canary.2120.1c467763c53a3cb468accc942e4e88953b0b9626.0 → 39.3.1--canary.2118.a60360f4f6d6f0d6b993cc68d1be10f2536c481f.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ifx-accordion.ifx-accordion-item.entry.cjs.js.map +1 -1
- package/dist/cjs/ifx-accordion_2.cjs.entry.js +13 -9
- package/dist/cjs/ifx-accordion_2.cjs.entry.js.map +1 -1
- package/dist/cjs/ifx-table.cjs.entry.js +309 -35
- package/dist/cjs/ifx-table.cjs.entry.js.map +1 -1
- package/dist/cjs/ifx-table.entry.cjs.js.map +1 -1
- package/dist/cjs/infineon-design-system-stencil.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/accordion/accordionItem.css +2 -7
- package/dist/collection/components/accordion/accordionItem.js +12 -8
- package/dist/collection/components/accordion/accordionItem.js.map +1 -1
- package/dist/collection/components/table-advanced-version/checkboxCellRenderer.js +65 -0
- package/dist/collection/components/table-advanced-version/checkboxCellRenderer.js.map +1 -0
- package/dist/collection/components/table-advanced-version/checkboxHeaderRenderer.js +30 -0
- package/dist/collection/components/table-advanced-version/checkboxHeaderRenderer.js.map +1 -0
- package/dist/collection/components/table-advanced-version/interfaces.js +1 -0
- package/dist/collection/components/table-advanced-version/interfaces.js.map +1 -1
- package/dist/collection/components/table-advanced-version/table.css +38 -6
- package/dist/collection/components/table-advanced-version/table.js +266 -38
- package/dist/collection/components/table-advanced-version/table.js.map +1 -1
- package/dist/components/ifx-accordion-item.js +1 -1
- package/dist/components/ifx-faq.js +1 -1
- package/dist/components/ifx-table.js +315 -36
- package/dist/components/ifx-table.js.map +1 -1
- package/dist/components/{p-HW5T-MOX.js → p-D-Sn4Uj1.js} +15 -11
- package/dist/components/p-D-Sn4Uj1.js.map +1 -0
- package/dist/esm/ifx-accordion.ifx-accordion-item.entry.js.map +1 -1
- package/dist/esm/ifx-accordion_2.entry.js +13 -9
- package/dist/esm/ifx-accordion_2.entry.js.map +1 -1
- package/dist/esm/ifx-table.entry.js +309 -35
- package/dist/esm/ifx-table.entry.js.map +1 -1
- package/dist/esm/infineon-design-system-stencil.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/infineon-design-system-stencil/ifx-accordion.ifx-accordion-item.entry.esm.js.map +1 -1
- package/dist/infineon-design-system-stencil/ifx-table.entry.esm.js.map +1 -1
- package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js +1 -1
- package/dist/infineon-design-system-stencil/p-3244fc8c.entry.js +2 -0
- package/dist/infineon-design-system-stencil/p-3244fc8c.entry.js.map +1 -0
- package/dist/infineon-design-system-stencil/p-b7a8d6bb.entry.js +2 -0
- package/dist/infineon-design-system-stencil/p-b7a8d6bb.entry.js.map +1 -0
- package/dist/types/components/table-advanced-version/checkboxCellRenderer.d.ts +15 -0
- package/dist/types/components/table-advanced-version/checkboxHeaderRenderer.d.ts +14 -0
- package/dist/types/components/table-advanced-version/interfaces.d.ts +8 -0
- package/dist/types/components/table-advanced-version/table.d.ts +12 -1
- package/dist/types/components.d.ts +18 -8
- package/package.json +1 -1
- package/dist/components/p-HW5T-MOX.js.map +0 -1
- package/dist/infineon-design-system-stencil/p-1dfc25b4.entry.js +0 -2
- package/dist/infineon-design-system-stencil/p-1dfc25b4.entry.js.map +0 -1
- package/dist/infineon-design-system-stencil/p-e6eda861.entry.js +0 -2
- package/dist/infineon-design-system-stencil/p-e6eda861.entry.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ButtonCellRenderer","init","params","this","createButton","getGui","eGui","refresh","updateButton","config","data","colDef","field","options","cellRendererParams","document","createElement","eButton","hasRequiredKeys","setButtonAttributes","appendChild","attachEventListener","textContent","String","detachEventListener","setAttribute","disabled","toString","variant","theme","type","size","fullWidth","target","href","text","eventListener","event","onButtonClick","addEventListener","removeEventListener","IconButtonCellRenderer","createIconButton","updateIconButton","eIconButton","setIconButtonAttributes","shape","icon","onIconButtonClick","LinkCellRenderer","createLink","updateLink","_a","_b","value","_c","eLink","setLinkAttributes","download","StatusCellRenderer","render","cfg","el","label","color","border","CustomNoRowsOverlay","innerHTML","noRowsMessageFunc","_params","CustomLoadingOverlay","tableCss","Table","constructor","hostRef","currentPage","rowData","colData","filterOptions","currentFilters","allRowData","rowHeight","tableHeight","pagination","paginationPageSize","filterOrientation","headline","showSidebarFilters","matchingResultsCount","serverSidePagination","showLoading","originalRowData","internalItemsPerPage","JSON","stringify","selected","rowsChanged","_newVal","parsed","parseArrayInput","rows","length","updateTableView","updateFilterOptions","colsChanged","getColData","gridApi","setGridOption","sizeColumnsToFit","defaultMinWidth","handleResultsPerPageChange","e","Number","detail","handleChipChange","name","currentSelection","previousSelection","updatedFilters","Object","assign","customEvent","CustomEvent","filterName","bubbles","composed","host","dispatchEvent","filterValues","map","selection","applyAllFilters","onButtonRendererOptionsChanged","setColumnDefs","onIconButtonRendererOptionsChanged","input","parse","Array","isArray","console","error","toggleSidebarFilters","col","Set","row","handleSidebarFilterChange","filterGroups","forEach","filterGroup","filterGroupName","selectedItems","item","handleTopbarFilterChange","filters","filter","filterInfo","selectedValues","toLowerCase","textFilterMatched","property","hasOwnProperty","rowValue","some","filterValue","startsWith","includesUndefined","includes","serverPageChangeHandler","total","page","pageSize","paginationElement","shadowRoot","querySelector","startIndex","endIndex","visibleRowData","slice","clearAllFilters","onBtShowLoading","showLoadingOverlay","setPaginationItemsPerPage","newItemsPerPage","paginationItemsPerPage","itemsPerPageArray","selectedOption","find","option","componentWillLoad","uniqueKey","Math","floor","random","getRowData","gridOptions","headerHeight","defaultColDef","resizable","autoHeight","suppressDragLeaveHidesColumns","enableCellTextSelection","onFirstDataRendered","bind","columnDefs","loadingOverlayComponent","noRowsOverlayComponent","noRowsOverlayComponentParams","icons","sortAscending","sortDescending","sortUnSort","rowDragManaged","dndSource","animateRows","navigateToNextCell","focusCellIfContainingButton","api","nextCellPosition","tabToNextCell","cellPosition","column","getColDef","rowNode","getDisplayedRowAtIndex","rowIndex","cellRenderers","getCellRendererInstances","rowNodes","columns","renderedContent","button","setTimeout","focusableChild","focus","componentDidRender","componentDidLoad","container","isNestedInIfxComponent","framework","detectFramework","trackComponent","createGrid","handlePageChange","sidebarFilterElements","querySelectorAll","sidebarFilterElement","topbarFilterElements","topbarFilterElement","componentWillUnmount","sidebarFilters","sidebarFilter","topbarFilters","topbarFilter","isJSONParseable","str","undefined","cols","cellRenderer","valueFormatter","cellDataType","buttonRendererOptions","iconButtonRendererOptions","handleResetButtonClick","resetEvent","window","disconnectedCallback","resetButton","getTableClassNames","classNames","style","height","filterClass","h","Host","key","class","onClick","keys","isMultiSelect","placeholder","readOnly","id","ref","hasButtonCol","onDragOver","dragSupported","dataTransfer","dropEffect","preventDefault","onDrop","jsonData","getData","eJsonRow","classList","add","innerText","eJsonDisplay"],"sources":["src/components/table-advanced-version/buttonCellRenderer.ts","src/components/table-advanced-version/iconButtonCellRenderer.ts","src/components/table-advanced-version/linkCellRenderer.ts","src/components/table-advanced-version/statusCellRenderer.ts","src/components/table-advanced-version/customNoRowsOverlay.ts","src/components/table-advanced-version/customLoadingOverlay.ts","src/components/table-advanced-version/table.scss?tag=ifx-table&encapsulation=shadow","src/components/table-advanced-version/table.tsx"],"sourcesContent":["import { ICellRendererComp, ICellRendererParams } from 'ag-grid-community';\nimport { ButtonInterface } from './interfaces';\n\nexport class ButtonCellRenderer implements ICellRendererComp {\n eGui!: HTMLDivElement;\n eButton!: HTMLElement; // Change to a generic HTMLElement to accommodate custom elements\n eventListener!: (event: Event) => void;\n\n init(params: ICellRendererParams) {\n this.createButton(params);\n }\n\n getGui() {\n return this.eGui;\n }\n\n refresh(params: ICellRendererParams) {\n this.updateButton(params);\n return true;\n }\n\n private createButton(params: ICellRendererParams) {\n const config = params.data[params.colDef.field];\n const options = params.colDef.cellRendererParams || {};\n \n this.eGui = document.createElement('div');\n this.eButton = document.createElement('ifx-button') as HTMLElement;\n \n if (this.hasRequiredKeys(config)) {\n this.setButtonAttributes(config);\n this.eGui.appendChild(this.eButton);\n this.attachEventListener(options, params);\n } else {\n this.eGui.textContent = config ? String(config) : '';\n }\n }\n\n private updateButton(params: ICellRendererParams) {\n const config = params.data[params.colDef.field];\n const options = params.colDef.cellRendererParams || {};\n \n if (this.hasRequiredKeys(config)) {\n this.setButtonAttributes(config);\n this.detachEventListener();\n this.attachEventListener(options, params);\n } else {\n this.eGui.textContent = config ? String(config) : '';\n }\n }\n\n private setButtonAttributes(config: ButtonInterface) {\n this.eButton.setAttribute('disabled', config.disabled.toString());\n this.eButton.setAttribute('variant', config.variant);\n this.eButton.setAttribute('theme', config.theme);\n this.eButton.setAttribute('type', config.type);\n this.eButton.setAttribute('size', config.size);\n this.eButton.setAttribute('full-width', config.fullWidth.toString());\n this.eButton.setAttribute('target', config.target);\n this.eButton.setAttribute('href', config.href);\n this.eButton.textContent = config.text;\n }\n\n private attachEventListener(options: any, params: ICellRendererParams) {\n this.eventListener = (event: Event) => {\n if (options.onButtonClick) {\n options.onButtonClick(params, event);\n }\n };\n this.eButton.addEventListener('click', this.eventListener);\n }\n\n private detachEventListener() {\n if (this.eventListener) {\n this.eButton.removeEventListener('click', this.eventListener);\n }\n }\n\n private hasRequiredKeys(config: ButtonInterface): boolean {\n return config && config.text !== '' && config.variant !== '' && config.size !== '' && config.type !== '';\n }\n}\n","import { ICellRendererComp, ICellRendererParams } from 'ag-grid-community';\nimport { IconButtonInterface } from './interfaces';\n\nexport class IconButtonCellRenderer implements ICellRendererComp {\n eGui!: HTMLDivElement;\n eIconButton!: HTMLElement; \n eventListener!: (event: Event) => void;\n\n init(params: ICellRendererParams) {\n this.createIconButton(params);\n }\n\n getGui() {\n return this.eGui;\n }\n\n refresh(params: ICellRendererParams) {\n this.updateIconButton(params);\n return true;\n }\n\n private createIconButton(params: ICellRendererParams) {\n const config = params.data[params.colDef.field];\n const options = params.colDef.cellRendererParams || {};\n \n this.eGui = document.createElement('div');\n this.eIconButton = document.createElement('ifx-icon-button') as HTMLElement;\n \n if (this.hasRequiredKeys(config)) {\n this.setIconButtonAttributes(config);\n this.eGui.appendChild(this.eIconButton);\n this.attachEventListener(options, params);\n } else {\n this.eGui.textContent = config ? String(config) : '';\n }\n }\n\n private updateIconButton(params: ICellRendererParams) {\n const config = params.data[params.colDef.field];\n const options = params.colDef.cellRendererParams || {};\n \n if (this.hasRequiredKeys(config)) {\n this.setIconButtonAttributes(config);\n this.detachEventListener();\n this.attachEventListener(options, params);\n } else {\n this.eGui.textContent = config ? String(config) : '';\n }\n }\n\n private setIconButtonAttributes(config: IconButtonInterface) {\n this.eIconButton.setAttribute('disabled', config.disabled.toString());\n this.eIconButton.setAttribute('variant', config.variant);\n this.eIconButton.setAttribute('shape', config.shape);\n this.eIconButton.setAttribute('size', config.size);\n this.eIconButton.setAttribute('target', config.target);\n this.eIconButton.setAttribute('href', config.href);\n this.eIconButton.setAttribute('icon', config.icon);\n }\n\n private attachEventListener(options: any, params: ICellRendererParams) {\n this.eventListener = (event: Event) => {\n if (options.onIconButtonClick) {\n options.onIconButtonClick(params, event);\n }\n };\n this.eIconButton.addEventListener('click', this.eventListener);\n }\n\n private detachEventListener() {\n if (this.eventListener) {\n this.eIconButton.removeEventListener('click', this.eventListener);\n }\n }\n\n private hasRequiredKeys(config: IconButtonInterface): boolean {\n return config && config.variant !== '' && config.size !== '' && config.shape !== '';\n }\n}\n","import { ICellRendererComp, ICellRendererParams } from 'ag-grid-community';\nimport { LinkInterface } from './interfaces';\n\nexport class LinkCellRenderer implements ICellRendererComp {\n eGui!: HTMLDivElement;\n eLink!: HTMLElement;\n\n init(params: ICellRendererParams) {\n this.createLink(params);\n }\n\n getGui() {\n return this.eGui;\n }\n\n refresh(params: ICellRendererParams) {\n this.updateLink(params);\n return true;\n }\n\n private createLink(params: ICellRendererParams) {\n const field = params.colDef?.field as string | undefined;\n const config = (params.value ?? params.data?.[field]) as any;\n\n this.eGui = document.createElement('div');\n this.eLink = document.createElement('ifx-link') as HTMLElement;\n\n if (this.hasRequiredKeys(config)) {\n this.setLinkAttributes(config);\n this.eGui.appendChild(this.eLink);\n } else {\n this.eGui.textContent = config ? String(config) : '';\n }\n }\n\n private updateLink(params: ICellRendererParams) {\n const field = params.colDef?.field as string | undefined;\n const config = (params.value ?? params.data?.[field]) as any;\n\n if (this.hasRequiredKeys(config)) {\n this.setLinkAttributes(config);\n } else {\n this.eGui.textContent = config ? String(config) : '';\n }\n }\n\n private setLinkAttributes(config: LinkInterface) {\n this.eLink.setAttribute('disabled', config.disabled?.toString());\n this.eLink.setAttribute('variant', config.variant);\n this.eLink.setAttribute('size', config.size);\n this.eLink.setAttribute('target', config.target);\n this.eLink.setAttribute('href', config.href);\n if (config.download) this.eLink.setAttribute('download', config.download);\n this.eLink.textContent = config.text || '';\n }\n\n private hasRequiredKeys(config: LinkInterface): boolean {\n return !!(\n config &&\n config.text &&\n config.variant &&\n config.size\n );\n }\n}\n","// statusCellRenderer.ts\nimport { ICellRendererComp, ICellRendererParams } from 'ag-grid-community';\n\ntype StatusConfig = {\n label: string;\n color?: string;\n border?: boolean;\n};\n\nexport class StatusCellRenderer implements ICellRendererComp {\n private eGui!: HTMLDivElement;\n\n init(params: ICellRendererParams) {\n this.eGui = document.createElement('div');\n this.render(params);\n }\n\n getGui() {\n return this.eGui;\n }\n\n refresh(params: ICellRendererParams) {\n this.render(params);\n return true;\n }\n\nprivate render(params: ICellRendererParams) {\n const field = params.colDef?.field as string | undefined;\n const cfg = (params.value ?? params.data?.[field]) as StatusConfig | string | undefined;\n\n this.eGui.textContent = '';\n\n if (cfg && typeof cfg === 'object' && 'label' in cfg) {\n const el = document.createElement('ifx-status') as any;\n el.label = cfg.label;\n if (cfg.color != null) el.color = cfg.color;\n el.border = !!(cfg as StatusConfig).border;\n this.eGui.appendChild(el);\n } else if (cfg != null) {\n this.eGui.textContent = String(cfg);\n }\n}\n}\n","import { ICellRendererComp, ICellRendererParams } from 'ag-grid-community';\n\nexport class CustomNoRowsOverlay implements ICellRendererComp {\n eGui!: HTMLElement;\n\n init(params: ICellRendererParams & { noRowsMessageFunc: () => string }) {\n this.eGui = document.createElement('div');\n this.eGui.innerHTML = `\n <div role=\"presentation\" class=\"ag-overlay-loading-center\" >\n ${params.noRowsMessageFunc()}\n </div>\n `;\n }\n\n getGui() {\n return this.eGui;\n }\n\n refresh(_params: ICellRendererParams): boolean {\n return false;\n }\n}","import { ICellRendererComp, ICellRendererParams } from 'ag-grid-community';\n\nexport class CustomLoadingOverlay implements ICellRendererComp {\n eGui!: HTMLElement;\n\n init(_params: ICellRendererParams & { loadingMessage: string }) {\n this.eGui = document.createElement('div');\n this.eGui.innerHTML = `<div class=\"ag-overlay-loading-center\" role=\"presentation\">\n<ifx-spinner></ifx-spinner>\n </div>`;\n }\n\n getGui() {\n return this.eGui;\n }\n\n refresh(_params: ICellRendererParams): boolean {\n return false;\n }\n}","@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n@import \"~ag-grid-community/styles/ag-grid.css\";\n\n.zebra {\n & .ag-row-odd {\n background-color: tokens.$ifxColorEngineering100!important;\n }\n\n & .ag-row {\n border-bottom: none!important;\n }\n}\n\n.ag-header-viewport {\n background-color: tokens.$ifxColorEngineering200!important;\n}\n\n\n.table-container {\n display: block;\n}\n\n.sidebar-btn {\n margin-bottom: 24px;\n}\n\n.sidebar-container {\n margin-right: 24px;\n}\n\n.sidebar-layout {\n display: flex;\n flex-direction: row;\n}\n\n.topbar-layout {\n display: flex;\n flex-direction: column;\n}\n\n.table-pagination-wrapper {\n display: flex;\n flex-direction: column;\n align-items: stretch; // stretches items to fill the container horizontally\n width: 100%; // ensures the wrapper takes up the full width of its parent\n\n & .pagination-wrapper { \n display: flex;\n align-items: center;\n justify-content: flex-end;\n }\n}\n\n#table-wrapper {\n flex: 1; // allows the table to take up the remaining space\n padding-bottom: tokens.$ifxSpace100;\n overflow-x: auto;\n width: 100%;\n}\n\n.table-wrapper {\n overflow-x: auto;\n width: 100%;\n}\n\n.table-wrapper .ag-root-wrapper-body {\n height: auto !important;\n min-height: 100px !important;\n min-width: 100px;\n}\n\n.filter-chips {\n display:flex;\n flex-wrap: wrap;\n gap:tokens.$ifxSpace100;\n margin-bottom: 12px;\n}\n\n.filter-chips > ifx-button { // ifx-button with icon and text has a paddingof 16 px. This is to remove the padding to align with the filter-chips container definition\n margin-left: -8px;\n}\n\n.set-filter-wrapper-sidebar {\n display: flex;\n flex-direction: column;\n margin-bottom: tokens.$ifxSpace100;\n}\n\n.set-filter-wrapper-topbar {\n display: flex;\n flex-wrap: wrap;\n flex-direction: row;\n margin-bottom: tokens.$ifxSpace100;\n background: tokens.$ifxColorEngineering100;\n padding-top: 32px;\n padding-bottom: 32px;\n gap: 24px;\n }\n\n .headline-wrapper { \n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 15px 0px;\n }\n\n .inner-buttons-wrapper { \n flex: 1;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 5px;\n }\n\n\n.ifx-ag-grid {\n display: grid;\n height: 100%;\n width: 100%;\n min-width: 100px;\n overflow-x: auto;\n //padding-bottom: tokens.$ifxSpace100;\n}\n\n\n.ifx-ag-grid .ag-header-cell::after {\n outline: none !important;\n border: none !important;\n box-shadow: none !important;\n}\n\n.ifx-ag-grid .ag-header-cell:focus {\n outline: none !important;\n}\n\n.ifx-ag-grid *:not(.ag-header-cell):focus {\n outline: none;\n}\n\n\n.ifx-ag-grid .ag-header-cell:not(:last-child)::before {\n content: '';\n position: absolute;\n right: 0;\n top: calc(50% - 12px);\n height: 24px;\n width: 1px;\n background-color: tokens.$ifxColorEngineering300;\n}\n\n\n.ag-overlay-loading-center {\n border: none;\n background: none;\n border-radius: none;\n box-shadow: none;\n}\n\n\n.ag-root-wrapper {\n border: 1px solid tokens.$ifxColorEngineering200;\n}\n\n\n\n.ag-header {\n background-color: tokens.$ifxColorEngineering100;\n border-bottom: none;\n\n &.ag-header-active {\n outline: none !important;\n border-color: #0A8276 !important;\n }\n}\n\n.ag-header-cell {\n padding-left: 16px;\n padding-right: 16px;\n gap: 4px;\n}\n\n\n.ag-header-cell-focus {\n border: none !important;\n outline: none !important;\n}\n\n.ag-header-cell-text {\n font-size: 13px;\n font-style: normal;\n font-weight: 600;\n line-height: 20px;\n color: tokens.$ifxColorBaseBlack;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n\n\n}\n\n.ag-row-focus {\n background-color: inherit !important;\n /* Reset the hover color to the row's original color */\n}\n\n.ag-row-hover {\n background-color: tokens.$ifxColorBaseWhite !important; //inherit !important;\n /* Reset the hover color to the row's original color */\n}\n\n\n.ag-cell-focus {\n border: none !important;\n outline: none !important;\n background-color: inherit !important;\n}\n\n\n\n.ag-row {\n background-color: tokens.$ifxColorBaseWhite;\n border-bottom: 1px solid tokens.$ifxColorEngineering200;\n font-size: 13px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n z-index: 1; //ensure the stacking order when used inside js frameworks\n}\n\n.ag-row-odd {\n background-color: tokens.$ifxColorBaseWhite;\n}\n\n.ag-cell {\n display: flex;\n padding-left: 16px;\n padding-right: 16px;\n white-space: pre-line;\n min-height: 40px; \n height: auto;\n}\n\n.ag-ltr .ag-sort-indicator-icon {\n padding-left: 0px;\n vertical-align: bottom;\n line-height: 12px;\n}\n\n.ag-sort-indicator-container .ag-sort-order {\n display: none;\n}\n\n.unsort-icon-custom-color {\n color: tokens.$ifxColorEngineering400;\n}\n\n\n// Table with set filters in sidebar orientation\n\n\n.filters-title {\n font-size: 24px;\n font-weight: 600;\n}\n\n\n.matching-results-container {\n flex: 1;\n font-family: 'Source Sans 3';\n display: flex;\n gap: 4px;\n font-size: 24px;\n font-weight: 600;\n line-height: 32px;\n letter-spacing: -1px;\n padding-right: 56px;\n}\n\n.matching-results-count {\n font-weight: 600;\n}\n\n.matching-results-text {\n font-weight: 400;\n}\n\n// Mobile optimization for horizontal scrolling\n@media (max-width: tokens.$ifxBreakpointM) {\n .table-wrapper,\n #table-wrapper {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n .ifx-ag-grid {\n min-width: 600px;\n }\n\n .ag-root-wrapper {\n min-width: 100%;\n }\n\n .ag-header-cell,\n .ag-cell {\n min-width: 100px;\n white-space: nowrap;\n }\n\n .sidebar-layout {\n flex-direction: column;\n }\n\n .sidebar-container {\n margin-right: 0;\n margin-bottom: 24px;\n }\n\n .set-filter-wrapper-topbar {\n padding-left: 16px;\n padding-right: 16px;\n }\n\n .table-pagination-wrapper {\n gap: tokens.$ifxSpace200;\n }\n}\n","import { Component, h, Host, Method, Element, Prop, State, Listen, Watch } from '@stencil/core';\nimport classNames from 'classnames';\nimport { trackComponent } from '../../global/utils/tracking'; \nimport { isNestedInIfxComponent } from '../../global/utils/dom-utils';\nimport { detectFramework } from '../../global/utils/framework-detection';\nimport { CellPosition, createGrid, FirstDataRenderedEvent, GridApi, GridOptions } from 'ag-grid-community';\nimport { ButtonCellRenderer } from './buttonCellRenderer';\nimport { IconButtonCellRenderer } from './iconButtonCellRenderer';\nimport { LinkCellRenderer } from './linkCellRenderer';\nimport { StatusCellRenderer } from './statusCellRenderer';\nimport { CustomNoRowsOverlay } from './customNoRowsOverlay';\nimport { CustomLoadingOverlay } from './customLoadingOverlay';\n\n\n@Component({\n tag: 'ifx-table',\n styleUrl: 'table.scss',\n shadow: true\n})\nexport class Table {\n gridOptions: GridOptions;\n gridApi: GridApi;\n @State() currentPage: number = 1;\n @Prop() cols: any;\n @Prop() rows: any;\n @Prop() buttonRendererOptions?: { onButtonClick?: (params: any, event: Event) => void;}; \n @Prop() iconButtonRendererOptions?: { onIconButtonClick?: (params: any, event: Event) => void;}; \n @State() rowData: any[] = [];\n @State() colData: any[] = [];\n @State() filterOptions: { [key: string]: string[] } = {};\n @State() currentFilters = {};\n @State() uniqueKey: string;\n allRowData: any[] = [];\n @Prop() rowHeight: string = 'default';\n @Prop() tableHeight: string = 'auto';\n @Prop() pagination: boolean = true;\n @Prop() paginationItemsPerPage: string;\n @State() paginationPageSize: number = 10;\n @Prop() filterOrientation: string = 'sidebar';\n @Prop() headline: string = \"\";\n @State() showSidebarFilters: boolean = true;\n @State() matchingResultsCount: number = 0;\n @Prop() variant: string = 'default'\n @Prop() serverSidePagination: boolean = false;\n @Prop() serverPageChangeHandler?: (params: { page: number, pageSize: number }) => Promise<{ rows: any[], total: number }>;\n\n @Prop() showLoading: boolean = false;\n private container: HTMLDivElement;\n @Element() host: HTMLElement;\n originalRowData: any[] = [];\n\n private internalItemsPerPage = JSON.stringify([\n { value: 10, label: '10', selected: true },\n { value: 20, label: '20', selected: false },\n { value: 30, label: '30', selected: false }\n ]); \n \n @Watch('rows')\n rowsChanged(_newVal: any) {\n const parsed = this.parseArrayInput<any>(this.rows);\n\n this.currentFilters = {};\n this.currentPage = 1;\n this.originalRowData = [...parsed];\n this.allRowData = [...parsed];\n this.matchingResultsCount = this.allRowData.length;\n\n this.updateTableView();\n this.updateFilterOptions(); \n }\n\n @Watch('cols')\n colsChanged(_newVal: any) {\n this.colData = this.getColData();\n\n if (this.gridApi) {\n this.gridApi.setGridOption('columnDefs', this.colData);\n this.gridApi.sizeColumnsToFit({\n defaultMinWidth: 100,\n });\n }\n\n this.updateFilterOptions();\n }\n\n @Listen('ifxItemsPerPageChange')\n handleResultsPerPageChange(e: CustomEvent<string>) { \n this.paginationPageSize = Number(e.detail);\n this.currentPage = 1;\n this.updateTableView();\n }\n\n @Listen('ifxChange')\n handleChipChange(event: CustomEvent<{ previousSelection: Array<any>, currentSelection: Array<any>, name: string }>) {\n const { name, currentSelection, previousSelection } = event.detail;\n if(currentSelection && previousSelection) { \n // Clone the current filters state\n const updatedFilters = { ...this.currentFilters };\n \n if (currentSelection.length === 0) {\n // If there are no selections for this filter, delete the filter\n delete updatedFilters[name];\n \n // Emit event with specific filter name\n const customEvent = new CustomEvent('ifxUpdateSidebarFilter', { detail: { filterName: name }, bubbles: true, composed: true });\n this.host.dispatchEvent(customEvent);\n } else {\n // Otherwise, update the filter values with the current selection\n updatedFilters[name].filterValues = currentSelection.map(selection => selection.value);\n }\n \n // Update the component's filters\n this.currentFilters = updatedFilters;\n \n // Ensure table data is updated\n this.allRowData = this.applyAllFilters(this.originalRowData, this.currentFilters);\n this.updateTableView();\n }\n }\n\n @Watch('buttonRendererOptions')\n onButtonRendererOptionsChanged() {\n this.colData = this.getColData(); \n if (this.gridApi) {\n this.gridApi.setColumnDefs(this.colData); \n }\n }\n\n @Watch('iconButtonRendererOptions')\n onIconButtonRendererOptionsChanged() {\n this.colData = this.getColData(); \n if (this.gridApi) {\n this.gridApi.setColumnDefs(this.colData);\n }\n }\n\n private parseArrayInput<T>(input: any): T[] {\n if (typeof input === 'string') {\n try {\n const parsed = JSON.parse(input);\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n console.error('Failed to parse input:', input);\n return [];\n }\n }\n if (Array.isArray(input)) return input;\n if (typeof input === 'object' && input !== null) return [input as T];\n return [];\n }\n\n toggleSidebarFilters() {\n this.showSidebarFilters = !this.showSidebarFilters;\n }\n\n updateFilterOptions() {\n const options = {};\n for (let col of this.colData) {\n options[col.field] = [...new Set(this.rowData.map(row => row[col.field]))];\n }\n this.filterOptions = options;\n }\n\n handleSidebarFilterChange(event: CustomEvent) {\n const filterGroups = event.detail;\n const updatedFilters = {};\n\n filterGroups.forEach(filterGroup => {\n const filterName = filterGroup.filterGroupName;\n let filterValues;\n let type;\n\n if (filterGroup.selectedItems && filterGroup.selectedItems.length > 0) {\n filterValues = filterGroup.selectedItems.map(item => item.label);\n type = 'multi-select';\n } else if (filterGroup.value) {\n filterValues = [filterGroup.value];\n type = 'text';\n } else {\n filterValues = [];\n }\n\n if (!(filterValues.length === 0 || (filterValues.length === 1 && type === 'text' && filterValues[0] === ''))) {\n updatedFilters[filterName] = { filterValues, type };\n }\n });\n\n this.allRowData = this.applyAllFilters(this.originalRowData, updatedFilters);\n this.updateTableView();\n this.currentFilters = updatedFilters;\n }\n\n\n handleTopbarFilterChange(event: CustomEvent) {\n const filters = event.detail;\n\n // Start by resetting the filter conditions to a blank object\n this.currentFilters = {};\n\n // Loop through each filter group provided in the event detail\n filters.forEach(filter => {\n const filterName = filter.filterName;\n let filterValues;\n\n let type = filter.type;\n\n if (type === 'text') {\n // Search/Text filter\n filterValues = filter.filterValues\n } else {\n // Multi-select/Single-Select\n filterValues = filter.filterValues.map(item => item.label);\n }\n\n // If there are no filter values, or the filter is a text filter with an empty value, remove the filter\n if (!(filterValues.length === 0 || (filterValues.length === 1 && type === 'text' && filterValues[0] === ''))) {\n // Add or update the filter in the currentFilters object\n this.currentFilters[filterName] = { filterValues, type };\n }\n });\n\n\n // Now that the currentFilters object has been updated, apply all filters to the data\n this.allRowData = this.applyAllFilters(this.originalRowData, this.currentFilters);\n\n // After filtering, update the table view with the new filtered data\n this.updateTableView();\n }\n\n\n applyAllFilters(data, filters) {\n return data.filter(row => {\n for (const filterName in filters) {\n const filterInfo = filters[filterName];\n let selectedValues = (filterInfo.filterValues || []).map(value => {\n if (typeof value === 'string') {\n return value.toLowerCase();\n } else if (typeof value === 'number' || typeof value === 'boolean') {\n return value.toString();\n }\n return '';\n });\n\n // For text filters, check if row values start with any of the selectedValues\n if (filterInfo.type === 'text') {\n let textFilterMatched = false;\n for (let property in row) {\n if (row.hasOwnProperty(property)) {\n let rowValue = row[property] != null ? String(row[property]).toLowerCase() : '';\n if (selectedValues.some(filterValue => rowValue.startsWith(filterValue))) {\n textFilterMatched = true;\n break;\n }\n }\n }\n if (!textFilterMatched) return false;\n }\n // For multi-select filters, this remains unchanged\n else if (filterInfo.type === 'multi-select') {\n let rowValue = row[filterName] != null ? String(row[filterName]).toLowerCase() : '';\n // Check if 'undefined' is a selected value and include rows with empty values in that case\n let includesUndefined = selectedValues.includes('undefined');\n if (!selectedValues.includes(rowValue) && !(includesUndefined && rowValue === '')) {\n return false;\n }\n }\n }\n return true;\n });\n }\n\nasync updateTableView() {\n if (this.serverSidePagination && this.serverPageChangeHandler) {\n const { rows, total } = await this.serverPageChangeHandler({\n page: this.currentPage,\n pageSize: this.paginationPageSize\n });\n\n this.rowData = rows;\n this.matchingResultsCount = total;\n\n if (this.gridApi) {\n this.gridApi.setGridOption('rowData', rows);\n }\n\n // 👇 FIX: update pagination total\n const paginationElement = this.host.shadowRoot.querySelector('ifx-pagination');\n if (paginationElement) {\n paginationElement.setAttribute('total', total.toString());\n }\n } else {\n const startIndex = (this.currentPage - 1) * this.paginationPageSize;\n const endIndex = startIndex + this.paginationPageSize;\n const visibleRowData = this.allRowData.slice(startIndex, endIndex);\n\n this.rowData = visibleRowData;\n this.matchingResultsCount = this.allRowData.length;\n\n if (this.gridApi) {\n this.gridApi.setGridOption('rowData', this.rowData);\n }\n }\n}\n\n clearAllFilters() {\n this.currentFilters = {};\n this.allRowData = [...this.originalRowData];\n }\n\n @Method()\n async onBtShowLoading() {\n this.gridApi.showLoadingOverlay();\n }\n\n setPaginationItemsPerPage() { \n const newItemsPerPage = this.paginationItemsPerPage;\n if (newItemsPerPage) {\n this.internalItemsPerPage = this.paginationItemsPerPage;\n const itemsPerPageArray = JSON.parse(this.internalItemsPerPage);\n \n const selectedOption = itemsPerPageArray.find(option => option.selected);\n if (selectedOption) {\n this.paginationPageSize = Number(selectedOption.value);\n } else if (itemsPerPageArray.length > 0) {\n this.paginationPageSize = Number(itemsPerPageArray[0].value);\n }\n }\n }\n\n componentWillLoad() {\n this.setPaginationItemsPerPage();\n\n this.uniqueKey = `unique-${Math.floor(Math.random() * 1000000)}`;\n this.rowData = this.getRowData();\n this.colData = this.getColData();\n this.updateFilterOptions();\n\n this.gridOptions = {\n\n rowHeight: this.rowHeight === 'default' ? 40 : 32,\n headerHeight: 40,\n defaultColDef: {\n resizable: true,\n autoHeight: true,\n },\n suppressDragLeaveHidesColumns: true,\n enableCellTextSelection: true,\n onFirstDataRendered: this.onFirstDataRendered.bind(this),\n columnDefs: this.colData,\n rowData: this.rowData,\n loadingOverlayComponent: CustomLoadingOverlay,\n noRowsOverlayComponent: CustomNoRowsOverlay,\n noRowsOverlayComponentParams: {\n noRowsMessageFunc: () =>\n 'No rows found' //at: ' + new Date().toLocaleTimeString(),\n },\n icons: {\n sortAscending: '<ifx-icon icon=\"arrow-triangle-up-16\"></ifx-icon>',\n sortDescending: '<ifx-icon icon=\"arrow-triangle-down-16\"></ifx-icon>',\n sortUnSort: '<a class=\"unsort-icon-custom-color\"><ifx-icon icon=\"arrow-triangle-vertikal-16\"></ifx-icon></a>'\n },\n rowDragManaged: this.colData.some(col => col.dndSource === true) ? true : false,\n animateRows: this.colData.some(col => col.dndSource === true) ? true : false,\n navigateToNextCell: (params) => {\n return this.focusCellIfContainingButton(params.api, params.nextCellPosition);\n },\n tabToNextCell: (params) => {\n // Returning null is deprecated so we return false if the result is null (browser handles tab behavior).\n return this.focusCellIfContainingButton(params.api, params.nextCellPosition) ?? false;\n }\n };\n }\n\n focusCellIfContainingButton<T>(api: GridApi<T>, cellPosition: CellPosition) : CellPosition | null {\n if (!cellPosition) {\n return null;\n }\n\n if (cellPosition.column.getColDef().field === 'button') {\n const rowNode = api.getDisplayedRowAtIndex(cellPosition.rowIndex);\n\n if (!rowNode) {\n // Row not yet rendered due to virtualization.\n return null;\n }\n\n const cellRenderers = api.getCellRendererInstances({\n rowNodes: [rowNode],\n columns: [cellPosition.column]\n });\n\n if (cellRenderers.length > 0) {\n const renderedContent = (cellRenderers[0] as ButtonCellRenderer)?.getGui();\n\n if (renderedContent) {\n const button = renderedContent.querySelector('ifx-button');\n\n if (button) {\n setTimeout(() => {\n // Just calling button.focus() will not work because the focus of <ifx-button> will not be \n // forwared to its child <a>-element (containing the tabindex attribute) due to shadow root. \n // We must therefore grab the <a>-element manually first and then call focus() on it.\n const focusableChild = button.shadowRoot?.querySelector<HTMLElement>('a[tabindex]');\n focusableChild?.focus();\n }, 0);\n }\n }\n }\n }\n\n return cellPosition;\n }\n\n componentDidRender() {\n if (this.gridApi) {\n this.gridApi.setGridOption('columnDefs', this.colData);\n }\n }\n\n async componentDidLoad() {\n if (this.container) {\n if(!isNestedInIfxComponent(this.host)) { \n const framework = detectFramework();\n trackComponent('ifx-table', await framework)\n }\n this.gridApi = createGrid(this.container, this.gridOptions);\n if (this.gridApi) {\n this.gridApi.sizeColumnsToFit({\n defaultMinWidth: 100,\n });\n this.gridApi.setGridOption('columnDefs', this.colData);\n this.gridApi.setGridOption('rowData', this.rowData);\n\n if (this.pagination) {\n const paginationElement = this.host.shadowRoot.querySelector('ifx-pagination');\n if (paginationElement) {\n paginationElement.addEventListener('ifxPageChange', this.handlePageChange.bind(this));\n }\n }\n const sidebarFilterElements = this.host.querySelectorAll('ifx-filter-type-group');\n // Add an event listener to each SetFilter component\n sidebarFilterElements.forEach(sidebarFilterElement => {\n sidebarFilterElement.addEventListener('ifxSidebarFilterChange', this.handleSidebarFilterChange.bind(this));\n });\n const topbarFilterElements = this.host.querySelectorAll('ifx-filter-bar');\n // Add an event listener to each SetFilter component\n topbarFilterElements.forEach(topbarFilterElement => {\n topbarFilterElement.addEventListener('ifxTopbarFilterChange', this.handleTopbarFilterChange.bind(this));\n });\n }\n }\n\n this.updateTableView();\n }\n\n componentWillUnmount() {\n if (this.pagination) {\n const paginationElement = this.host.shadowRoot.querySelector('ifx-pagination');\n if (paginationElement) {\n paginationElement.removeEventListener('ifxPageChange', this.handlePageChange.bind(this));\n }\n }\n const sidebarFilters = this.host.shadowRoot.querySelectorAll('ifx-filter-type-group');\n // Remove the event listener from each SetFilter component\n sidebarFilters.forEach(sidebarFilter => {\n sidebarFilter.removeEventListener('ifxSidebarFilterChange', this.handleSidebarFilterChange.bind(this));\n });\n const topbarFilters = this.host.shadowRoot.querySelectorAll('ifx-filter-type-group');\n // Remove the event listener from each SetFilter component\n topbarFilters.forEach(topbarFilter => {\n topbarFilter.removeEventListener('ifxTopbarFilterChange', this.handleTopbarFilterChange.bind(this));\n });\n }\n\n async handlePageChange(event) {\n this.currentPage = event.detail.currentPage;\n\n if (this.serverSidePagination && this.serverPageChangeHandler) {\n const { rows, total } = await this.serverPageChangeHandler({\n page: this.currentPage,\n pageSize: this.paginationPageSize\n });\n\n this.rowData = rows;\n this.matchingResultsCount = total;\n\n if (this.gridApi) {\n this.gridApi.setGridOption('rowData', this.rowData);\n }\n\n const paginationElement = this.host.shadowRoot.querySelector('ifx-pagination');\n if (paginationElement) {\n paginationElement.setAttribute('total', total.toString());\n }\n } else {\n const startIndex = (this.currentPage - 1) * this.paginationPageSize;\n const endIndex = startIndex + this.paginationPageSize;\n const visibleRowData = this.allRowData.slice(startIndex, endIndex);\n if (this.gridApi) {\n this.gridApi.setGridOption('rowData', visibleRowData);\n }\n }\n}\n\n isJSONParseable(str) {\n try {\n JSON.parse(str);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n\n getRowData() {\n let rows: any[] = [];\n if (this.rows === undefined || this.rows === null) {\n return rows;\n }\n \n if (this.isJSONParseable(this.rows)) {\n rows = [...JSON.parse(this.rows)];\n }\n else if (Array.isArray(this.rows) || typeof this.rows === 'object') {\n rows = [...this.rows];\n }\n else {\n console.error('Unexpected value for rows: ', this.rows);\n }\n\n this.allRowData = rows;\n this.originalRowData = [...rows]; // Deep copy the original data\n this.matchingResultsCount = this.allRowData.length;\n\n return rows.slice(0, this.paginationPageSize);\n }\n\n\ngetColData() {\n let cols: any[] = [];\n if (this.cols === undefined || this.cols === null) return cols;\n\n if (this.isJSONParseable(this.cols)) {\n cols = [...JSON.parse(this.cols)];\n } else if (Array.isArray(this.cols) || typeof this.cols === 'object') {\n cols = [...this.cols];\n } else {\n console.error('Unexpected value for cols: ', this.cols);\n }\n\n cols.forEach(column => {\n const field = column.field?.toLowerCase() || '';\n\n // --- Button columns ---\n if (field.startsWith('button')) {\n column.cellRenderer = ButtonCellRenderer;\n column.valueFormatter = undefined;\n column.cellDataType = false;\n\n if (this.buttonRendererOptions?.onButtonClick) {\n column.cellRendererParams = {\n onButtonClick: this.buttonRendererOptions.onButtonClick\n };\n }\n }\n\n // --- Icon Button columns ---\n if (field.startsWith('iconbutton') || field === 'iconButton') {\n column.cellRenderer = IconButtonCellRenderer;\n column.valueFormatter = undefined;\n column.cellDataType = false;\n\n if (this.iconButtonRendererOptions?.onIconButtonClick) {\n column.cellRendererParams = {\n onIconButtonClick: this.iconButtonRendererOptions.onIconButtonClick\n };\n }\n }\n\n // --- Status columns ---\n else if (field.startsWith('status')) {\n column.cellRenderer = StatusCellRenderer;\n column.valueFormatter = undefined;\n column.cellDataType = false;\n }\n\n // --- Link columns ---\n else if (field.startsWith('link')) {\n column.cellRenderer = LinkCellRenderer;\n column.valueFormatter = undefined;\n column.cellDataType = false;\n }\n });\n\n return cols;\n}\n \n\n onFirstDataRendered(params: FirstDataRenderedEvent) {\n params.api.sizeColumnsToFit();\n }\n\n handleResetButtonClick() {\n const resetEvent = new CustomEvent('ifxResetFiltersEvent', { bubbles: true, composed: true });\n window.dispatchEvent(resetEvent); // Dispatch from the window object\n\n this.clearAllFilters();\n this.updateTableView(); // Update table view with the original data\n }\n\n\n disconnectedCallback() {\n if (this.pagination) {\n const paginationElement = this.host.shadowRoot.querySelector('ifx-pagination');\n if (paginationElement) {\n paginationElement.removeEventListener('ifxPageChange', this.handlePageChange);\n }\n }\n\n const resetButton = this.host.shadowRoot.querySelector('#reset-filters-button');\n if (resetButton) {\n resetButton.removeEventListener('click', this.handleResetButtonClick.bind(this));\n }\n }\n\n\n\n getTableClassNames() {\n return classNames(\n this.tableHeight === 'auto' && 'table-wrapper ag-root-wrapper-body',\n 'table-wrapper',\n );\n }\n\n\n render() {\n let style = {};\n if (this.tableHeight !== 'auto') {\n style = {\n 'height': this.tableHeight\n };\n }\n \n const filterClass = this.filterOrientation === 'topbar' ? 'topbar-layout' \n : this.filterOrientation === 'none' ? '' \n : 'sidebar-layout';\n \n return (\n <Host>\n <div class=\"table-container\">\n {this.filterOrientation === 'sidebar' && (\n <div class=\"sidebar-btn\">\n <ifx-button\n type=\"button\"\n disabled={false}\n variant=\"secondary\"\n size=\"m\"\n target=\"_blank\"\n theme=\"default\"\n full-width=\"false\"\n onClick={() => this.toggleSidebarFilters()}\n >\n <ifx-icon icon=\"cross-16\"></ifx-icon>{this.showSidebarFilters ? 'Hide Filters' : 'Show Filters'}\n </ifx-button>\n </div>\n )}\n\n <div class={filterClass}>\n {this.filterOrientation === 'sidebar' && this.showSidebarFilters && (\n <div class=\"sidebar-container\">\n <div class=\"filters-title-container\">\n <span class=\"filters-title\">Filters</span>\n </div>\n <div class=\"set-filter-wrapper-sidebar\">\n {(this.filterOrientation !== 'sidebar' || this.showSidebarFilters) && (\n <slot name=\"sidebar-filter\"></slot>\n )}\n </div>\n </div>\n )}\n\n {this.filterOrientation !== 'none' && this.filterOrientation !== 'sidebar' && (\n <div class=\"set-filter-wrapper-topbar\">\n {(this.filterOrientation !== 'sidebar' || this.showSidebarFilters) && (\n <slot name=\"topbar-filter\"></slot>\n )}\n </div>\n )}\n\n <div class=\"table-pagination-wrapper\">\n {this.filterOrientation !== 'none' && this.filterOrientation !== 'topbar' && this.showSidebarFilters && (\n <div class=\"filter-chips\">\n {Object.keys(this.currentFilters).map(name => {\n const filter = this.currentFilters[name];\n const filterValues = filter.filterValues;\n const isMultiSelect = filter.type !== 'text';\n\n return filterValues.length > 0 ? (\n <ifx-chip\n placeholder={name}\n size=\"large\"\n variant={isMultiSelect ? \"multi\" : \"single\"}\n readOnly={true}\n value={filterValues}\n key={name}\n >\n {filterValues.map(filterValue => (\n <ifx-chip-item value={filterValue} selected={true} key={filterValue}>\n {filterValue}\n </ifx-chip-item>\n ))}\n </ifx-chip>\n ) : null;\n })}\n </div>\n )}\n\n <div class=\"headline-wrapper\">\n {this.filterOrientation !== 'none' && this.headline && (\n <div class=\"matching-results-container\">\n <span class=\"matching-results-count\">\n ({this.matchingResultsCount})\n </span>\n <span class=\"matching-results-text\">\n {this.headline}\n </span>\n\n </div>\n )}\n\n <div class=\"inner-buttons-wrapper\">\n <slot name='inner-button' />\n </div>\n </div>\n\n <div id=\"table-wrapper\" class={this.getTableClassNames()}>\n <div id={`ifxTable-${this.uniqueKey}`} class={`ifx-ag-grid ${this.variant === 'zebra' ? 'zebra' : \"\"}`} style={style} ref={(el) => this.container = el}>\n </div>\n </div>\n <div class=\"pagination-wrapper\">\n {this.pagination ? <ifx-pagination total={this.serverSidePagination ? this.matchingResultsCount : this.allRowData.length} current-page={this.currentPage} items-per-page={this.internalItemsPerPage}></ifx-pagination> : null}\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n\n hasButtonCol(): boolean {\n return this.getColData().some(column => column.field === 'button');\n }\n\n onDragOver(event) {\n var dragSupported = event.dataTransfer.length;\n\n if (dragSupported) {\n event.dataTransfer.dropEffect = 'move';\n }\n\n event.preventDefault();\n }\n\n onDrop(event) {\n var jsonData = event.dataTransfer.getData('application/json');\n\n var eJsonRow = document.createElement('div');\n eJsonRow.classList.add('json-row');\n eJsonRow.innerText = jsonData;\n\n var eJsonDisplay = document.querySelector('#eJsonDisplay');\n\n eJsonDisplay.appendChild(eJsonRow);\n event.preventDefault();\n }\n\n}\n"],"mappings":"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","ignoreList":[]}
|