@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
|
@@ -0,0 +1 @@
|
|
|
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","CheckboxCellRenderer","createCheckbox","updateCheckbox","style","display","alignItems","justifyContent","eCheckbox","setCheckboxAttributes","error","checked","indeterminate","onCheckboxClick","CheckboxHeaderRenderer","createHeader","Object","assign","detail","onSelectAll","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","enableSelection","selectedRows","Set","selectAll","showLoading","originalRowData","internalItemsPerPage","JSON","stringify","selected","handleSelectAll","Array","from","length","_","i","updateCheckboxStates","updateHeaderCheckboxState","emitSelectionChange","handleRowCheckboxClick","clickedRowData","actualIndex","findIndex","row","make","model","price","newSelectedRows","has","delete","add","rowsChanged","_newVal","parsed","parseArrayInput","rows","forEach","index","__checkbox","updateTableView","updateFilterOptions","colsChanged","getColData","gridApi","setGridOption","sizeColumnsToFit","defaultMinWidth","handleResultsPerPageChange","e","Number","handleChipChange","name","currentSelection","previousSelection","updatedFilters","customEvent","CustomEvent","filterName","bubbles","composed","host","dispatchEvent","filterValues","map","selection","applyAllFilters","onButtonRendererOptionsChanged","setColumnDefs","onIconButtonRendererOptionsChanged","onCheckboxRendererOptionsChanged","input","parse","isArray","console","toggleSidebarFilters","col","setTimeout","headerCheckbox","container","querySelector","allSelected","someSelected","handleSidebarFilterChange","filterGroups","filterGroup","filterGroupName","selectedItems","item","handleTopbarFilterChange","filters","filter","filterInfo","selectedValues","toLowerCase","textFilterMatched","property","hasOwnProperty","rowValue","some","filterValue","startsWith","includesUndefined","includes","serverPageChangeHandler","total","page","pageSize","globalIndex","paginationElement","shadowRoot","startIndex","endIndex","visibleRowData","slice","clearAllFilters","onBtShowLoading","showLoadingOverlay","setPaginationItemsPerPage","newItemsPerPage","paginationItemsPerPage","itemsPerPageArray","selectedOption","find","option","componentWillLoad","uniqueKey","Math","floor","random","getRowData","gridOptions","suppressCellFocus","headerHeight","components","checkboxCellRenderer","checkboxHeaderRenderer","customLoadingOverlay","customNoRowsOverlay","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","focusableChild","focus","componentDidLoad","isNestedInIfxComponent","framework","detectFramework","trackComponent","createGrid","handlePageChange","sidebarFilterElements","querySelectorAll","sidebarFilterElement","topbarFilterElements","topbarFilterElement","componentWillUnmount","sidebarFilters","sidebarFilter","topbarFilters","topbarFilter","isJSONParseable","str","undefined","refreshCells","force","selectedRowsData","__rest","selectedCount","isSelectAll","cols","checkboxColumn","headerName","width","pinned","cellRenderer","headerComponent","headerComponentParams","sortable","valueFormatter","cellDataType","unshift","buttonRendererOptions","checkboxRendererOptions","_d","iconButtonRendererOptions","handleResetButtonClick","resetEvent","window","disconnectedCallback","resetButton","getTableClassNames","classNames","height","filterClass","h","Host","key","class","onClick","keys","isMultiSelect","placeholder","readOnly","id","ref","hasButtonCol","onDragOver","dragSupported","dataTransfer","dropEffect","preventDefault","onDrop","jsonData","getData","eJsonRow","classList","innerText","eJsonDisplay"],"sources":["src/components/table-advanced-version/buttonCellRenderer.ts","src/components/table-advanced-version/checkboxCellRenderer.ts","src/components/table-advanced-version/checkboxHeaderRenderer.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 { CheckboxInterface } from './interfaces';\n\nexport class CheckboxCellRenderer implements ICellRendererComp {\n eGui!: HTMLDivElement;\n eCheckbox!: HTMLElement;\n eventListener!: (event: Event) => void;\n\n init(params: ICellRendererParams) {\n this.createCheckbox(params);\n }\n\n getGui() {\n return this.eGui;\n }\n\n refresh(params: ICellRendererParams) {\n this.updateCheckbox(params);\n return true;\n }\n\n private createCheckbox(params: ICellRendererParams) {\n const config = params.data[params.colDef.field];\n const options = params.colDef.cellRendererParams || {};\n this.eGui = document.createElement('div');\n this.eGui.style.display = 'flex';\n this.eGui.style.alignItems = 'center';\n this.eGui.style.justifyContent = 'center';\n this.eCheckbox = document.createElement('ifx-checkbox') as HTMLElement;\n\n if (this.hasRequiredKeys(config)) {\n this.setCheckboxAttributes(config);\n this.eGui.appendChild(this.eCheckbox);\n this.attachEventListener(options, params);\n } else {\n this.eGui.textContent = config ? String(config) : 'No checkbox data';\n }\n }\n\n private updateCheckbox(params: ICellRendererParams) {\n const config = params.data[params.colDef.field];\n const options = params.colDef.cellRendererParams || {};\n\n if (this.hasRequiredKeys(config)) {\n this.setCheckboxAttributes(config);\n this.detachEventListener();\n this.attachEventListener(options, params);\n } else {\n this.eGui.textContent = config ? String(config) : '';\n }\n }\n\n private setCheckboxAttributes(config: CheckboxInterface) {\n this.eCheckbox.setAttribute('disabled', config.disabled.toString());\n this.eCheckbox.setAttribute('error', config.error.toString());\n this.eCheckbox.setAttribute('size', config.size);\n this.eCheckbox.setAttribute('checked', config.checked.toString());\n this.eCheckbox.setAttribute('indeterminate', config.indeterminate.toString());\n }\n\n private attachEventListener(options: any, params: ICellRendererParams) {\n this.eventListener = (event: Event) => {\n if (options.onCheckboxClick) {\n options.onCheckboxClick(params, event);\n }\n };\n this.eCheckbox.addEventListener('click', this.eventListener);\n }\n\n private detachEventListener() {\n if (this.eventListener) {\n this.eCheckbox.removeEventListener('click', this.eventListener);\n }\n }\n\n private hasRequiredKeys(config: CheckboxInterface): boolean {\n return config && config.size !== '';\n }\n}\n","import { IHeaderComp, IHeaderParams } from 'ag-grid-community';\n\nexport class CheckboxHeaderRenderer implements IHeaderComp {\n eGui!: HTMLDivElement;\n eCheckbox!: HTMLElement;\n params!: IHeaderParams & { onSelectAll?: (checked: boolean) => void };\n\n init(params: IHeaderParams & { onSelectAll?: (checked: boolean) => void }) {\n this.params = params;\n this.createHeader();\n }\n\n getGui() {\n return this.eGui;\n }\n\n refresh(params: IHeaderParams): boolean {\n this.params = { ...this.params, ...params };\n return true;\n }\n\n private createHeader() {\n this.eGui = document.createElement('div');\n this.eGui.style.display = 'flex';\n this.eGui.style.alignItems = 'center';\n this.eGui.style.justifyContent = 'center';\n\n this.eCheckbox = document.createElement('ifx-checkbox');\n this.eCheckbox.setAttribute('size', 's');\n this.eCheckbox.setAttribute('checked', 'false');\n\n this.eCheckbox.addEventListener('ifxChange', (event: any) => {\n const checked = event.detail;\n if (this.params.onSelectAll) {\n this.params.onSelectAll(checked);\n }\n });\n\n this.eGui.appendChild(this.eCheckbox);\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.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;\n width: 100%;\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;\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.ag-horizontal-left-spacer {\n display: none;\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 {\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.ifx-ag-grid {\n display: grid;\n height: 100%;\n width: 100%;\n min-width: 100px;\n overflow-x: auto;\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.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.ag-pinned-left-header {\n background-color: tokens.$ifxColorEngineering200;\n min-width: 50px !important;\n max-width: 50px !important;\n width: 50px !important;\n &::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-header-row {\n width: 50px !important;\n}\n\n.ag-pinned-left-cols-container {\n width: 50px !important;\n max-width: 50px !important;\n min-width: 50px !important;\n}\n\n.ag-overlay-loading-center {\n border: none;\n background: none;\n border-radius: none;\n box-shadow: none;\n}\n\n.ag-root-wrapper {\n border: 1px solid tokens.$ifxColorEngineering200;\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.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);\n}\n\n.ag-row-focus {\n background-color: inherit !important;\n}\n\n.ag-row-hover {\n background-color: tokens.$ifxColorBaseWhite !important;\n}\n\n.ag-cell-focus {\n border: none !important;\n outline: none !important;\n background-color: inherit !important;\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;\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.filters-title {\n font-size: 24px;\n font-weight: 600;\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.ag-body-horizontal-scroll {\n display: none;\n}\n\n@media (max-width: tokens.$ifxBreakpointM) {\n .table-wrapper,\n #table-wrapper {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n .ag-root-wrapper {\n min-width: 100%;\n }\n\n .ag-body-horizontal-scroll {\n display: block;\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 { CheckboxCellRenderer } from './checkboxCellRenderer';\nimport { CheckboxHeaderRenderer } from './checkboxHeaderRenderer';\nimport { IconButtonCellRenderer } from './iconButtonCellRenderer';\nimport { LinkCellRenderer } from './linkCellRenderer';\nimport { StatusCellRenderer } from './statusCellRenderer';\nimport { CustomNoRowsOverlay } from './customNoRowsOverlay';\nimport { CustomLoadingOverlay } from './customLoadingOverlay';\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 @Prop() checkboxRendererOptions?: { onCheckboxClick?: (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 @Prop() enableSelection: boolean = false;\n @State() selectedRows: Set<number> = new Set();\n @State() selectAll: boolean = false;\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 if (this.enableSelection) {\n parsed.forEach((row, index) => {\n row.__checkbox = {\n disabled: false,\n checked: this.selectedRows?.has(index) || false,\n size: 's',\n indeterminate: false,\n error: false,\n };\n });\n }\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 // 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 @Watch('checkboxRendererOptions')\n onCheckboxRendererOptionsChanged() {\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 private updateHeaderCheckboxState() {\n if (this.gridApi && this.enableSelection) {\n setTimeout(() => {\n const headerCheckbox = this.container?.querySelector('.ag-header-cell[col-id=\"__checkbox\"] ifx-checkbox') as any;\n if (headerCheckbox) {\n const allSelected = this.selectedRows.size === this.allRowData.length && this.allRowData.length > 0;\n const someSelected = this.selectedRows.size > 0 && this.selectedRows.size < this.allRowData.length;\n headerCheckbox.checked = allSelected;\n headerCheckbox.indeterminate = someSelected;\n }\n }, 0);\n }\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 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 // 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 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\n async 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 if (this.enableSelection) {\n rows.forEach((row, index) => {\n const globalIndex = (this.currentPage - 1) * this.paginationPageSize + index;\n row.__checkbox = {\n disabled: false,\n checked: this.selectedRows?.has(globalIndex) || false,\n size: 's',\n indeterminate: false,\n error: false,\n };\n });\n }\n\n this.rowData = rows;\n this.matchingResultsCount = total;\n if (this.gridApi) {\n this.gridApi.setGridOption('rowData', rows);\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\n if (this.enableSelection) {\n visibleRowData.forEach((row, index) => {\n const globalIndex = startIndex + index;\n if (!row.__checkbox) {\n row.__checkbox = {\n disabled: false,\n checked: this.selectedRows?.has(globalIndex) || false,\n size: 's',\n indeterminate: false,\n error: false,\n };\n } else {\n row.__checkbox.checked = this.selectedRows?.has(globalIndex) || false;\n }\n });\n }\n\n this.rowData = visibleRowData;\n this.matchingResultsCount = this.allRowData.length;\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 suppressCellFocus: true,\n rowHeight: this.rowHeight === 'default' ? 40 : 32,\n headerHeight: 40,\n components: {\n checkboxCellRenderer: CheckboxCellRenderer,\n checkboxHeaderRenderer: CheckboxHeaderRenderer,\n customLoadingOverlay: CustomLoadingOverlay,\n customNoRowsOverlay: CustomNoRowsOverlay,\n },\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: () => '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 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 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 handleSelectAll = (checked: boolean) => {\n this.selectAll = checked;\n if (checked) {\n this.selectedRows = new Set(Array.from({ length: this.allRowData.length }, (_, i) => i));\n } else {\n this.selectedRows = new Set();\n }\n this.updateCheckboxStates();\n this.updateHeaderCheckboxState();\n this.emitSelectionChange();\n };\n\n getRowData() {\n let rows: any[] = [];\n if (this.rows === undefined || this.rows === null) {\n return rows;\n }\n if (this.isJSONParseable(this.rows)) {\n rows = [...JSON.parse(this.rows)];\n } else if (Array.isArray(this.rows) || typeof this.rows === 'object') {\n rows = [...this.rows];\n } else {\n console.error('Unexpected value for rows: ', this.rows);\n }\n\n if (this.enableSelection) {\n rows.forEach((row, index) => {\n row.__checkbox = {\n disabled: false,\n checked: this.selectedRows?.has(index) || false,\n size: 's',\n indeterminate: false,\n error: false,\n };\n });\n }\n\n this.allRowData = rows;\n this.originalRowData = [...rows];\n this.matchingResultsCount = this.allRowData.length;\n return rows.slice(0, this.paginationPageSize);\n }\n\n handleRowCheckboxClick = (params: any) => {\n const clickedRowData = params.data;\n const actualIndex = this.allRowData.findIndex(row => row.make === clickedRowData.make && row.model === clickedRowData.model && row.price === clickedRowData.price);\n\n const newSelectedRows = new Set(this.selectedRows);\n if (newSelectedRows.has(actualIndex)) {\n newSelectedRows.delete(actualIndex);\n } else {\n newSelectedRows.add(actualIndex);\n }\n\n this.selectedRows = newSelectedRows;\n this.selectAll = newSelectedRows.size === this.allRowData.length;\n\n this.updateCheckboxStates();\n this.updateHeaderCheckboxState();\n this.emitSelectionChange();\n };\n\n private updateCheckboxStates() {\n this.allRowData.forEach((row, index) => {\n if (row.__checkbox) {\n row.__checkbox.checked = this.selectedRows.has(index);\n }\n });\n\n if (this.gridApi) {\n this.gridApi.refreshCells({\n columns: ['__checkbox'],\n force: true,\n });\n }\n }\n\n private emitSelectionChange() {\n const selectedRowsData = Array.from(this.selectedRows).map(index => {\n const { __checkbox, ...rowData } = this.allRowData[index];\n return rowData;\n });\n\n this.host.dispatchEvent(\n new CustomEvent('ifxSelectionChange', {\n detail: {\n selectedRows: selectedRowsData,\n selectedCount: selectedRowsData.length,\n isSelectAll: this.selectedRows.size === this.allRowData.length && this.allRowData.length > 0,\n },\n bubbles: true,\n }),\n );\n }\n\n getColData() {\n let cols: any[] = [];\n if (this.cols === undefined || this.cols === null) return cols;\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 if (this.enableSelection) {\n const checkboxColumn = {\n headerName: '',\n field: '__checkbox',\n width: 50,\n pinned: 'left',\n cellRenderer: 'checkboxCellRenderer',\n cellRendererParams: {\n onCheckboxClick: this.handleRowCheckboxClick?.bind(this),\n },\n headerComponent: 'checkboxHeaderRenderer',\n headerComponentParams: {\n onSelectAll: this.handleSelectAll?.bind(this),\n },\n sortable: false,\n filter: false,\n resizable: false,\n valueFormatter: undefined,\n cellDataType: false,\n };\n cols.unshift(checkboxColumn);\n }\n\n cols.forEach(column => {\n const field = column.field?.toLowerCase() || '';\n // --- Button columns ---\n if (field.startsWith('button')) {\n column.cellRenderer = ButtonCellRenderer;\n column.valueFormatter = undefined;\n column.cellDataType = false;\n if (this.buttonRendererOptions?.onButtonClick) {\n column.cellRendererParams = {\n onButtonClick: this.buttonRendererOptions.onButtonClick,\n };\n }\n }\n // --- Checkbox columns ---\n else if (field.startsWith('checkbox')) {\n column.cellRenderer = CheckboxCellRenderer;\n column.valueFormatter = undefined;\n column.cellDataType = false;\n if (this.checkboxRendererOptions?.onCheckboxClick) {\n column.cellRendererParams = {\n onCheckboxClick: this.checkboxRendererOptions.onCheckboxClick,\n };\n }\n }\n // --- Icon Button columns ---\n else if (field.startsWith('iconbutton') || field === 'iconButton') {\n column.cellRenderer = IconButtonCellRenderer;\n column.valueFormatter = undefined;\n column.cellDataType = false;\n if (this.iconButtonRendererOptions?.onIconButtonClick) {\n column.cellRendererParams = {\n onIconButtonClick: this.iconButtonRendererOptions.onIconButtonClick,\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 // --- Link columns ---\n else if (field.startsWith('link')) {\n column.cellRenderer = LinkCellRenderer;\n column.valueFormatter = undefined;\n column.cellDataType = false;\n }\n });\n return cols;\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); \n\n this.clearAllFilters();\n this.updateTableView(); \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 getTableClassNames() {\n return classNames(this.tableHeight === 'auto' && 'table-wrapper ag-root-wrapper-body', 'table-wrapper');\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' : this.filterOrientation === 'none' ? '' : '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>\n {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\">{(this.filterOrientation !== 'sidebar' || this.showSidebarFilters) && <slot name=\"sidebar-filter\"></slot>}</div>\n </div>\n )}\n\n {this.filterOrientation !== 'none' && this.filterOrientation !== 'sidebar' && (\n <div class=\"set-filter-wrapper-topbar\">{(this.filterOrientation !== 'sidebar' || this.showSidebarFilters) && <slot name=\"topbar-filter\"></slot>}</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 placeholder={name} size=\"large\" variant={isMultiSelect ? 'multi' : 'single'} readOnly={true} value={filterValues} key={name}>\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\">({this.matchingResultsCount})</span>\n <span class=\"matching-results-text\">{this.headline}</span>\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)}></div>\n </div>\n <div class=\"pagination-wrapper\">\n {this.pagination ? (\n <ifx-pagination\n total={this.serverSidePagination ? this.matchingResultsCount : this.allRowData.length}\n current-page={this.currentPage}\n items-per-page={this.internalItemsPerPage}\n ></ifx-pagination>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n </Host>\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"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ICellRendererComp, ICellRendererParams } from 'ag-grid-community';
|
|
2
|
+
export declare class CheckboxCellRenderer implements ICellRendererComp {
|
|
3
|
+
eGui: HTMLDivElement;
|
|
4
|
+
eCheckbox: HTMLElement;
|
|
5
|
+
eventListener: (event: Event) => void;
|
|
6
|
+
init(params: ICellRendererParams): void;
|
|
7
|
+
getGui(): HTMLDivElement;
|
|
8
|
+
refresh(params: ICellRendererParams): boolean;
|
|
9
|
+
private createCheckbox;
|
|
10
|
+
private updateCheckbox;
|
|
11
|
+
private setCheckboxAttributes;
|
|
12
|
+
private attachEventListener;
|
|
13
|
+
private detachEventListener;
|
|
14
|
+
private hasRequiredKeys;
|
|
15
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IHeaderComp, IHeaderParams } from 'ag-grid-community';
|
|
2
|
+
export declare class CheckboxHeaderRenderer implements IHeaderComp {
|
|
3
|
+
eGui: HTMLDivElement;
|
|
4
|
+
eCheckbox: HTMLElement;
|
|
5
|
+
params: IHeaderParams & {
|
|
6
|
+
onSelectAll?: (checked: boolean) => void;
|
|
7
|
+
};
|
|
8
|
+
init(params: IHeaderParams & {
|
|
9
|
+
onSelectAll?: (checked: boolean) => void;
|
|
10
|
+
}): void;
|
|
11
|
+
getGui(): HTMLDivElement;
|
|
12
|
+
refresh(params: IHeaderParams): boolean;
|
|
13
|
+
private createHeader;
|
|
14
|
+
}
|
|
@@ -20,6 +20,13 @@ export interface IconButtonInterface {
|
|
|
20
20
|
shape?: string;
|
|
21
21
|
icon?: string;
|
|
22
22
|
}
|
|
23
|
+
export interface CheckboxInterface {
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
error?: boolean;
|
|
26
|
+
size?: string;
|
|
27
|
+
checked?: boolean;
|
|
28
|
+
indeterminate?: boolean;
|
|
29
|
+
}
|
|
23
30
|
export interface LinkInterface {
|
|
24
31
|
disabled?: boolean;
|
|
25
32
|
variant?: string;
|
|
@@ -37,3 +44,4 @@ export interface StatusInterface {
|
|
|
37
44
|
export declare const ButtonKeys: Array<keyof ButtonInterface>;
|
|
38
45
|
export declare const IconButtonKeys: Array<keyof IconButtonInterface>;
|
|
39
46
|
export declare const StatusKeys: Array<keyof StatusInterface>;
|
|
47
|
+
export declare const CheckboxKeys: Array<keyof CheckboxInterface>;
|
|
@@ -11,6 +11,9 @@ export declare class Table {
|
|
|
11
11
|
iconButtonRendererOptions?: {
|
|
12
12
|
onIconButtonClick?: (params: any, event: Event) => void;
|
|
13
13
|
};
|
|
14
|
+
checkboxRendererOptions?: {
|
|
15
|
+
onCheckboxClick?: (params: any, event: Event) => void;
|
|
16
|
+
};
|
|
14
17
|
rowData: any[];
|
|
15
18
|
colData: any[];
|
|
16
19
|
filterOptions: {
|
|
@@ -37,6 +40,9 @@ export declare class Table {
|
|
|
37
40
|
rows: any[];
|
|
38
41
|
total: number;
|
|
39
42
|
}>;
|
|
43
|
+
enableSelection: boolean;
|
|
44
|
+
selectedRows: Set<number>;
|
|
45
|
+
selectAll: boolean;
|
|
40
46
|
showLoading: boolean;
|
|
41
47
|
private container;
|
|
42
48
|
host: HTMLElement;
|
|
@@ -52,9 +58,11 @@ export declare class Table {
|
|
|
52
58
|
}>): void;
|
|
53
59
|
onButtonRendererOptionsChanged(): void;
|
|
54
60
|
onIconButtonRendererOptionsChanged(): void;
|
|
61
|
+
onCheckboxRendererOptionsChanged(): void;
|
|
55
62
|
private parseArrayInput;
|
|
56
63
|
toggleSidebarFilters(): void;
|
|
57
64
|
updateFilterOptions(): void;
|
|
65
|
+
private updateHeaderCheckboxState;
|
|
58
66
|
handleSidebarFilterChange(event: CustomEvent): void;
|
|
59
67
|
handleTopbarFilterChange(event: CustomEvent): void;
|
|
60
68
|
applyAllFilters(data: any, filters: any): any;
|
|
@@ -64,12 +72,15 @@ export declare class Table {
|
|
|
64
72
|
setPaginationItemsPerPage(): void;
|
|
65
73
|
componentWillLoad(): void;
|
|
66
74
|
focusCellIfContainingButton<T>(api: GridApi<T>, cellPosition: CellPosition): CellPosition | null;
|
|
67
|
-
componentDidRender(): void;
|
|
68
75
|
componentDidLoad(): Promise<void>;
|
|
69
76
|
componentWillUnmount(): void;
|
|
70
77
|
handlePageChange(event: any): Promise<void>;
|
|
71
78
|
isJSONParseable(str: any): boolean;
|
|
79
|
+
handleSelectAll: (checked: boolean) => void;
|
|
72
80
|
getRowData(): any[];
|
|
81
|
+
handleRowCheckboxClick: (params: any) => void;
|
|
82
|
+
private updateCheckboxStates;
|
|
83
|
+
private emitSelectionChange;
|
|
73
84
|
getColData(): any[];
|
|
74
85
|
onFirstDataRendered(params: FirstDataRenderedEvent): void;
|
|
75
86
|
handleResetButtonClick(): void;
|
|
@@ -1451,17 +1451,22 @@ export namespace Components {
|
|
|
1451
1451
|
"iconPosition": 'left' | 'right';
|
|
1452
1452
|
}
|
|
1453
1453
|
interface IfxTable {
|
|
1454
|
-
"buttonRendererOptions"?: { onButtonClick?: (params: any, event: Event) => void
|
|
1454
|
+
"buttonRendererOptions"?: { onButtonClick?: (params: any, event: Event) => void };
|
|
1455
|
+
"checkboxRendererOptions"?: { onCheckboxClick?: (params: any, event: Event) => void };
|
|
1455
1456
|
"cols": any;
|
|
1457
|
+
/**
|
|
1458
|
+
* @default false
|
|
1459
|
+
*/
|
|
1460
|
+
"enableSelection": boolean;
|
|
1456
1461
|
/**
|
|
1457
1462
|
* @default 'sidebar'
|
|
1458
1463
|
*/
|
|
1459
1464
|
"filterOrientation": string;
|
|
1460
1465
|
/**
|
|
1461
|
-
* @default
|
|
1466
|
+
* @default ''
|
|
1462
1467
|
*/
|
|
1463
1468
|
"headline": string;
|
|
1464
|
-
"iconButtonRendererOptions"?: { onIconButtonClick?: (params: any, event: Event) => void
|
|
1469
|
+
"iconButtonRendererOptions"?: { onIconButtonClick?: (params: any, event: Event) => void };
|
|
1465
1470
|
"onBtShowLoading": () => Promise<void>;
|
|
1466
1471
|
/**
|
|
1467
1472
|
* @default true
|
|
@@ -1473,7 +1478,7 @@ export namespace Components {
|
|
|
1473
1478
|
*/
|
|
1474
1479
|
"rowHeight": string;
|
|
1475
1480
|
"rows": any;
|
|
1476
|
-
"serverPageChangeHandler"?: (params: { page: number
|
|
1481
|
+
"serverPageChangeHandler"?: (params: { page: number; pageSize: number }) => Promise<{ rows: any[]; total: number }>;
|
|
1477
1482
|
/**
|
|
1478
1483
|
* @default false
|
|
1479
1484
|
*/
|
|
@@ -4407,17 +4412,22 @@ declare namespace LocalJSX {
|
|
|
4407
4412
|
"onTabHeaderChange"?: (event: IfxTabCustomEvent<any>) => void;
|
|
4408
4413
|
}
|
|
4409
4414
|
interface IfxTable {
|
|
4410
|
-
"buttonRendererOptions"?: { onButtonClick?: (params: any, event: Event) => void
|
|
4415
|
+
"buttonRendererOptions"?: { onButtonClick?: (params: any, event: Event) => void };
|
|
4416
|
+
"checkboxRendererOptions"?: { onCheckboxClick?: (params: any, event: Event) => void };
|
|
4411
4417
|
"cols"?: any;
|
|
4418
|
+
/**
|
|
4419
|
+
* @default false
|
|
4420
|
+
*/
|
|
4421
|
+
"enableSelection"?: boolean;
|
|
4412
4422
|
/**
|
|
4413
4423
|
* @default 'sidebar'
|
|
4414
4424
|
*/
|
|
4415
4425
|
"filterOrientation"?: string;
|
|
4416
4426
|
/**
|
|
4417
|
-
* @default
|
|
4427
|
+
* @default ''
|
|
4418
4428
|
*/
|
|
4419
4429
|
"headline"?: string;
|
|
4420
|
-
"iconButtonRendererOptions"?: { onIconButtonClick?: (params: any, event: Event) => void
|
|
4430
|
+
"iconButtonRendererOptions"?: { onIconButtonClick?: (params: any, event: Event) => void };
|
|
4421
4431
|
/**
|
|
4422
4432
|
* @default true
|
|
4423
4433
|
*/
|
|
@@ -4428,7 +4438,7 @@ declare namespace LocalJSX {
|
|
|
4428
4438
|
*/
|
|
4429
4439
|
"rowHeight"?: string;
|
|
4430
4440
|
"rows"?: any;
|
|
4431
|
-
"serverPageChangeHandler"?: (params: { page: number
|
|
4441
|
+
"serverPageChangeHandler"?: (params: { page: number; pageSize: number }) => Promise<{ rows: any[]; total: number }>;
|
|
4432
4442
|
/**
|
|
4433
4443
|
* @default false
|
|
4434
4444
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@infineon/infineon-design-system-stencil",
|
|
3
|
-
"version": "39.3.1--canary.
|
|
3
|
+
"version": "39.3.1--canary.2118.a60360f4f6d6f0d6b993cc68d1be10f2536c481f.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Infineon design system Stencil web components",
|
|
6
6
|
"homepage": "https://infineon.github.io/infineon-design-system-stencil",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"p-HW5T-MOX.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/accordion/accordionItem.scss?tag=ifx-accordion-item&encapsulation=shadow","src/components/accordion/accordionItem.tsx"],"sourcesContent":["// ifxAccordionItem.scss\n@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n\n.accordion-item {\n border-radius: 3px;\n transition: all 0.3s;\n font-family: var(--ifx-font-family) // tokens.$ifxFontFamilyBody;\n\n}\n\n.accordion-title:focus {\n outline: none;\n}\n\n// workaround to add corner radius to outline\n.accordion-title:focus::after {\n content: '';\n display: block;\n position: absolute;\n top: -4px;\n bottom: -4px;\n left: -4px;\n right: -4px;\n border-radius: 5px;\n border: 2px solid tokens.$ifxColorOcean500;\n box-sizing: border-box;\n}\n\n.accordion-title:hover {\n border: 1px solid tokens.$ifxColorEngineering200;\n color: tokens.$ifxColorOcean600;\n}\n\n.accordion-title {\n display: flex;\n align-items: center;\n position: relative;\n padding: tokens.$ifxSpace150 tokens.$ifxSpace200;\n gap: tokens.$ifxSpace150;\n color: tokens.$ifxColorOcean500;\n background-color: tokens.$ifxColorBaseWhite;\n border: 1px solid tokens.$ifxColorEngineering200;\n cursor: pointer;\n margin: 4px 4px 0px;\n}\n\n.accordion-caption {\n font-weight: tokens.$ifxFontWeightSemibold;\n font-size: tokens.$ifxFontSizeL;\n}\n\n.accordion-content {\n gap: tokens.$ifxSpace100;\n height:0;\n overflow: hidden;\n transition: height 0.3s ease-in-out;\n line-height: 24px;\n font-size: tokens.$ifxFontSizeM;\n font-weight: 400;\n}\n\n.inner-content {\n background-color: tokens.$ifxColorBaseWhite;\n padding: tokens.$ifxSpace200;\n // white-space: pre-wrap;\n /* wraps text at spaces and within words */\n word-wrap: break-word;\n /* breaks text within a word if necessary */\n overflow-wrap: anywhere;\n align-self: stretch;\n\n /* breaks text at arbitrary points when needed */\n margin: 0 4px 4px;\n border: 1px solid transparent\n}\n\n.accordion-icon {\n font-weight: bold;\n display: flex;\n transition: transform 0.3s;\n\n &:hover {\n color: tokens.$ifxColorOcean600;\n\n }\n}\n\n.accordion-item.open .accordion-icon {\n transform: rotate(-180deg);\n}\n\n.accordion-item.open .inner-content {\n border-color: tokens.$ifxColorEngineering200;\n border-top: none;\n}\n\n.inner-content {\n &.no-content { \n border: none;\n padding: 0;\n margin: 0;\n }\n}","//ifxAccordionItem\nimport { Component, Prop, h, State, Event, EventEmitter, Watch, Listen, Element } from '@stencil/core';\n\n@Component({\n tag: 'ifx-accordion-item',\n styleUrl: 'accordionItem.scss',\n shadow: true,\n})\nexport class AccordionItem {\n @Element() el;\n @Prop() caption: string;\n @Prop({\n mutable: true,\n })\n open: boolean = false;\n @Prop() AriaLevel = 3;\n @State() internalOpen: boolean = false;\n @Event() ifxOpen: EventEmitter;\n @Event() ifxClose: EventEmitter;\n private contentEl!: HTMLElement;\n private titleEl!: HTMLElement;\n private resizeObserver!: ResizeObserver;\n\n componentWillLoad() {\n this.internalOpen = this.open;\n }\n\n componentDidLoad() {\n this.checkSlotContent()\n this.openAccordionItem();\n this.contentEl = this.el.shadowRoot.querySelector('#accordion-content');\n if (this.contentEl) {\n this.attachResizeObserver();\n }\n }\n\n componentDidUpdate() {\n this.checkSlotContent()\n this.openAccordionItem();\n }\n\n @Watch('open')\n openChanged(newValue: boolean) {\n this.internalOpen = newValue;\n }\n\n toggleOpen() {\n this.internalOpen = !this.internalOpen;\n this.open = this.internalOpen;\n\n if (this.internalOpen) {\n this.ifxOpen.emit({ isOpen: this.internalOpen });\n } else {\n this.ifxClose.emit({ isClosed: !this.internalOpen });\n }\n }\n\n openAccordionItem() {\n if (this.internalOpen) {\n this.contentEl.style.height = `${this.contentEl.scrollHeight}px`;\n this.contentEl.style.overflow = 'hidden';\n } else {\n this.contentEl.style.height = '0';\n this.contentEl.style.overflow = 'hidden';\n }\n }\n\n getInnerContentWrapper() {\n const innerContentEl = this.el.shadowRoot.querySelector('.inner-content');\n return innerContentEl;\n }\n\n attachResizeObserver() {\n const innerContentEl = this.getInnerContentWrapper();\n\n if (innerContentEl) {\n this.resizeObserver = new ResizeObserver(() => {\n if (this.internalOpen) {\n this.openAccordionItem();\n }\n });\n\n this.resizeObserver.observe(innerContentEl);\n }\n }\n\n @Listen('keydown')\n handleKeydown(ev: KeyboardEvent) {\n const path = ev.composedPath();\n\n if (!path.includes(this.titleEl)) {\n return;\n }\n\n switch (ev.key) {\n case 'Enter': // fallthrough\n case ' ': // space\n ev.preventDefault();\n this.toggleOpen();\n break;\n }\n }\n\n checkSlotContent() {\n const slot = this.el.shadowRoot.querySelector('slot') as HTMLSlotElement;\n const hasContent = slot.assignedNodes().length > 0;\n const innerContent = this.getInnerContentWrapper();\n if (!hasContent) {\n innerContent.classList.add('no-content');\n } else if (innerContent.classList.contains('no-content')) {\n innerContent.classList.remove('no-content');\n }\n }\n\n render() {\n return (\n <div class={`accordion-item ${this.internalOpen ? 'open' : ''}`}>\n <div\n role=\"button\"\n aria-expanded={this.internalOpen}\n aria-controls=\"accordion-content\"\n class=\"accordion-title\"\n onClick={() => this.toggleOpen()}\n tabindex=\"0\"\n ref={el => (this.titleEl = el as HTMLElement)}\n >\n <span aria-hidden=\"true\" role=\"heading\" aria-level={String(this.AriaLevel) as string} class=\"accordion-icon\">\n <ifx-icon icon=\"chevron-down-16\" />\n </span>\n <span id=\"accordion-caption\" class=\"accordion-caption\">\n {this.caption}\n </span>\n </div>\n <div id=\"accordion-content\" class=\"accordion-content\" ref={el => (this.contentEl = el as HTMLElement)} role=\"region\" aria-labelledby=\"accordion-caption\">\n <div class=\"inner-content\">\n <slot />\n </div>\n </div>\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as o,h as i,a as t,c as e}from"./p-PqnYwNKt.js";import{d as n,t as a}from"./p-DcmcuUOA.js";import{i as c}from"./p-Bw2fh5LT.js";const s=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:block}.accordion-wrapper{display:flex;flex-direction:column;gap:8px;font-family:var(--ifx-font-family)}';const r=class{constructor(i){o(this,i);this.autoCollapse=false}async componentDidLoad(){if(!c(this.el)){const o=n();a("ifx-accordion",await o)}}async onItemOpen(o){if(this.autoCollapse){const i=Array.from(this.el.querySelectorAll("ifx-accordion-item"));for(const t of i){const i=t;if(i!==o.target&&await i.open){i.open=false}}}}render(){return i("div",{key:"903cc44b4886b77e59e66ab2a5cdf681dafeb9bc",class:"accordion-wrapper"},i("slot",{key:"e0abec42188606e8c80fc3db44fba19a7aa69ed8"}))}static get delegatesFocus(){return true}get el(){return t(this)}};r.style=s;const d=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}.accordion-item{border-radius:3px;transition:all 0.3s;font-family:var(--ifx-font-family)}.accordion-title:focus{outline:none}.accordion-title:focus::after{content:"";display:block;position:absolute;top:-4px;bottom:-4px;left:-4px;right:-4px;border-radius:5px;border:2px solid #0A8276;box-sizing:border-box}.accordion-title:hover{border:1px solid #EEEDED;color:#08665C}.accordion-title{display:flex;align-items:center;position:relative;padding:12px 16px;gap:12px;color:#0A8276;background-color:#FFFFFF;border:1px solid #EEEDED;cursor:pointer;margin:4px 4px 0px}.accordion-caption{font-weight:600;font-size:1.125rem}.accordion-content{gap:8px;height:0;overflow:hidden;transition:height 0.3s ease-in-out;line-height:24px;font-size:1rem;font-weight:400}.inner-content{background-color:#FFFFFF;padding:16px;word-wrap:break-word;overflow-wrap:anywhere;align-self:stretch;margin:0 4px 4px;border:1px solid transparent}.accordion-icon{font-weight:bold;display:flex;transition:transform 0.3s}.accordion-icon:hover{color:#08665C}.accordion-item.open .accordion-icon{transform:rotate(-180deg)}.accordion-item.open .inner-content{border-color:#EEEDED;border-top:none}.inner-content.no-content{border:none;padding:0;margin:0}';const f=class{constructor(i){o(this,i);this.ifxOpen=e(this,"ifxOpen",7);this.ifxClose=e(this,"ifxClose",7);this.open=false;this.AriaLevel=3;this.internalOpen=false}componentWillLoad(){this.internalOpen=this.open}componentDidLoad(){this.checkSlotContent();this.openAccordionItem();this.contentEl=this.el.shadowRoot.querySelector("#accordion-content");if(this.contentEl){this.attachResizeObserver()}}componentDidUpdate(){this.checkSlotContent();this.openAccordionItem()}openChanged(o){this.internalOpen=o}toggleOpen(){this.internalOpen=!this.internalOpen;this.open=this.internalOpen;if(this.internalOpen){this.ifxOpen.emit({isOpen:this.internalOpen})}else{this.ifxClose.emit({isClosed:!this.internalOpen})}}openAccordionItem(){if(this.internalOpen){this.contentEl.style.height=`${this.contentEl.scrollHeight}px`;this.contentEl.style.overflow="hidden"}else{this.contentEl.style.height="0";this.contentEl.style.overflow="hidden"}}getInnerContentWrapper(){const o=this.el.shadowRoot.querySelector(".inner-content");return o}attachResizeObserver(){const o=this.getInnerContentWrapper();if(o){this.resizeObserver=new ResizeObserver((()=>{if(this.internalOpen){this.openAccordionItem()}}));this.resizeObserver.observe(o)}}handleKeydown(o){const i=o.composedPath();if(!i.includes(this.titleEl)){return}switch(o.key){case"Enter":case" ":o.preventDefault();this.toggleOpen();break}}checkSlotContent(){const o=this.el.shadowRoot.querySelector("slot");const i=o.assignedNodes().length>0;const t=this.getInnerContentWrapper();if(!i){t.classList.add("no-content")}else if(t.classList.contains("no-content")){t.classList.remove("no-content")}}render(){return i("div",{key:"1317347110a9c74932695b8ffff8ca31d3c8e6c3",class:`accordion-item ${this.internalOpen?"open":""}`},i("div",{key:"ad5d46e476f76ac121239c15904a4884a6ba4cc5",role:"button","aria-expanded":this.internalOpen,"aria-controls":"accordion-content",class:"accordion-title",onClick:()=>this.toggleOpen(),tabindex:"0",ref:o=>this.titleEl=o},i("span",{key:"924e061fd270701a7c78433a56fcd70a40dfe7f5","aria-hidden":"true",role:"heading","aria-level":String(this.AriaLevel),class:"accordion-icon"},i("ifx-icon",{key:"40cee40a058eb576d0ef5482f6f7f0adb47a5f4e",icon:"chevron-down-16"})),i("span",{key:"37715ae9f3621954f081bec3d4e861d1dd60847b",id:"accordion-caption",class:"accordion-caption"},this.caption)),i("div",{key:"32c1186d1f4dd1a5a09842224cbfe3d648cc7fac",id:"accordion-content",class:"accordion-content",ref:o=>this.contentEl=o,role:"region","aria-labelledby":"accordion-caption"},i("div",{key:"35618fea4d36844fbad5aed1c07dc2e7378a1d4e",class:"inner-content"},i("slot",{key:"eaa5cdaffd9381f8b05b202f6213d8304fbf7cbb"}))))}get el(){return t(this)}static get watchers(){return{open:["openChanged"]}}};f.style=d;export{r as ifx_accordion,f as ifx_accordion_item};
|
|
2
|
-
//# sourceMappingURL=p-1dfc25b4.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["accordionCss","Accordion","constructor","hostRef","this","autoCollapse","componentDidLoad","isNestedInIfxComponent","el","framework","detectFramework","trackComponent","onItemOpen","event","items","Array","from","querySelectorAll","item","itemElement","target","open","render","h","key","class","accordionItemCss","AccordionItem","AriaLevel","internalOpen","componentWillLoad","checkSlotContent","openAccordionItem","contentEl","shadowRoot","querySelector","attachResizeObserver","componentDidUpdate","openChanged","newValue","toggleOpen","ifxOpen","emit","isOpen","ifxClose","isClosed","style","height","scrollHeight","overflow","getInnerContentWrapper","innerContentEl","resizeObserver","ResizeObserver","observe","handleKeydown","ev","path","composedPath","includes","titleEl","preventDefault","slot","hasContent","assignedNodes","length","innerContent","classList","add","contains","remove","role","onClick","tabindex","ref","String","icon","id","caption"],"sources":["src/components/accordion/accordion.scss?tag=ifx-accordion&encapsulation=shadow","src/components/accordion/accordion.tsx","src/components/accordion/accordionItem.scss?tag=ifx-accordion-item&encapsulation=shadow","src/components/accordion/accordionItem.tsx"],"sourcesContent":["// ifxAccordion.scss\n@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: block;\n}\n\n.accordion-wrapper {\n display: flex;\n flex-direction: column;\n gap: tokens.$ifxSpace100;\n font-family: var(--ifx-font-family) // tokens.$ifxFontFamilyBody;\n}","import { Component, h, Listen, Element, Prop } from '@stencil/core';\nimport { trackComponent } from '../../global/utils/tracking';\nimport { isNestedInIfxComponent } from '../../global/utils/dom-utils';\nimport { detectFramework } from '../../global/utils/framework-detection';\n\n@Component({\n tag: 'ifx-accordion',\n styleUrl: 'accordion.scss',\n shadow: { delegatesFocus: true },\n})\nexport class Accordion {\n @Element() el: HTMLElement;\n @Prop() autoCollapse: boolean = false;\n\n async componentDidLoad() { \n if(!isNestedInIfxComponent(this.el)) { \n const framework = detectFramework();\n trackComponent('ifx-accordion', await framework)\n }\n }\n\n @Listen('ifxOpen')\n async onItemOpen(event: CustomEvent) {\n if (this.autoCollapse) {\n const items = Array.from(this.el.querySelectorAll('ifx-accordion-item'));\n for (const item of items) {\n const itemElement = item as HTMLIfxAccordionItemElement;\n if (itemElement !== event.target && (await itemElement.open)) {\n itemElement.open = false;\n }\n }\n }\n }\n\n render() {\n return (\n <div class=\"accordion-wrapper\">\n <slot />\n </div>\n );\n }\n}\n","// ifxAccordionItem.scss\n@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n\n.accordion-item {\n border-radius: 3px;\n transition: all 0.3s;\n font-family: var(--ifx-font-family) // tokens.$ifxFontFamilyBody;\n\n}\n\n.accordion-title:focus {\n outline: none;\n}\n\n// workaround to add corner radius to outline\n.accordion-title:focus::after {\n content: '';\n display: block;\n position: absolute;\n top: -4px;\n bottom: -4px;\n left: -4px;\n right: -4px;\n border-radius: 5px;\n border: 2px solid tokens.$ifxColorOcean500;\n box-sizing: border-box;\n}\n\n.accordion-title:hover {\n border: 1px solid tokens.$ifxColorEngineering200;\n color: tokens.$ifxColorOcean600;\n}\n\n.accordion-title {\n display: flex;\n align-items: center;\n position: relative;\n padding: tokens.$ifxSpace150 tokens.$ifxSpace200;\n gap: tokens.$ifxSpace150;\n color: tokens.$ifxColorOcean500;\n background-color: tokens.$ifxColorBaseWhite;\n border: 1px solid tokens.$ifxColorEngineering200;\n cursor: pointer;\n margin: 4px 4px 0px;\n}\n\n.accordion-caption {\n font-weight: tokens.$ifxFontWeightSemibold;\n font-size: tokens.$ifxFontSizeL;\n}\n\n.accordion-content {\n gap: tokens.$ifxSpace100;\n height:0;\n overflow: hidden;\n transition: height 0.3s ease-in-out;\n line-height: 24px;\n font-size: tokens.$ifxFontSizeM;\n font-weight: 400;\n}\n\n.inner-content {\n background-color: tokens.$ifxColorBaseWhite;\n padding: tokens.$ifxSpace200;\n // white-space: pre-wrap;\n /* wraps text at spaces and within words */\n word-wrap: break-word;\n /* breaks text within a word if necessary */\n overflow-wrap: anywhere;\n align-self: stretch;\n\n /* breaks text at arbitrary points when needed */\n margin: 0 4px 4px;\n border: 1px solid transparent\n}\n\n.accordion-icon {\n font-weight: bold;\n display: flex;\n transition: transform 0.3s;\n\n &:hover {\n color: tokens.$ifxColorOcean600;\n\n }\n}\n\n.accordion-item.open .accordion-icon {\n transform: rotate(-180deg);\n}\n\n.accordion-item.open .inner-content {\n border-color: tokens.$ifxColorEngineering200;\n border-top: none;\n}\n\n.inner-content {\n &.no-content { \n border: none;\n padding: 0;\n margin: 0;\n }\n}","//ifxAccordionItem\nimport { Component, Prop, h, State, Event, EventEmitter, Watch, Listen, Element } from '@stencil/core';\n\n@Component({\n tag: 'ifx-accordion-item',\n styleUrl: 'accordionItem.scss',\n shadow: true,\n})\nexport class AccordionItem {\n @Element() el;\n @Prop() caption: string;\n @Prop({\n mutable: true,\n })\n open: boolean = false;\n @Prop() AriaLevel = 3;\n @State() internalOpen: boolean = false;\n @Event() ifxOpen: EventEmitter;\n @Event() ifxClose: EventEmitter;\n private contentEl!: HTMLElement;\n private titleEl!: HTMLElement;\n private resizeObserver!: ResizeObserver;\n\n componentWillLoad() {\n this.internalOpen = this.open;\n }\n\n componentDidLoad() {\n this.checkSlotContent()\n this.openAccordionItem();\n this.contentEl = this.el.shadowRoot.querySelector('#accordion-content');\n if (this.contentEl) {\n this.attachResizeObserver();\n }\n }\n\n componentDidUpdate() {\n this.checkSlotContent()\n this.openAccordionItem();\n }\n\n @Watch('open')\n openChanged(newValue: boolean) {\n this.internalOpen = newValue;\n }\n\n toggleOpen() {\n this.internalOpen = !this.internalOpen;\n this.open = this.internalOpen;\n\n if (this.internalOpen) {\n this.ifxOpen.emit({ isOpen: this.internalOpen });\n } else {\n this.ifxClose.emit({ isClosed: !this.internalOpen });\n }\n }\n\n openAccordionItem() {\n if (this.internalOpen) {\n this.contentEl.style.height = `${this.contentEl.scrollHeight}px`;\n this.contentEl.style.overflow = 'hidden';\n } else {\n this.contentEl.style.height = '0';\n this.contentEl.style.overflow = 'hidden';\n }\n }\n\n getInnerContentWrapper() {\n const innerContentEl = this.el.shadowRoot.querySelector('.inner-content');\n return innerContentEl;\n }\n\n attachResizeObserver() {\n const innerContentEl = this.getInnerContentWrapper();\n\n if (innerContentEl) {\n this.resizeObserver = new ResizeObserver(() => {\n if (this.internalOpen) {\n this.openAccordionItem();\n }\n });\n\n this.resizeObserver.observe(innerContentEl);\n }\n }\n\n @Listen('keydown')\n handleKeydown(ev: KeyboardEvent) {\n const path = ev.composedPath();\n\n if (!path.includes(this.titleEl)) {\n return;\n }\n\n switch (ev.key) {\n case 'Enter': // fallthrough\n case ' ': // space\n ev.preventDefault();\n this.toggleOpen();\n break;\n }\n }\n\n checkSlotContent() {\n const slot = this.el.shadowRoot.querySelector('slot') as HTMLSlotElement;\n const hasContent = slot.assignedNodes().length > 0;\n const innerContent = this.getInnerContentWrapper();\n if (!hasContent) {\n innerContent.classList.add('no-content');\n } else if (innerContent.classList.contains('no-content')) {\n innerContent.classList.remove('no-content');\n }\n }\n\n render() {\n return (\n <div class={`accordion-item ${this.internalOpen ? 'open' : ''}`}>\n <div\n role=\"button\"\n aria-expanded={this.internalOpen}\n aria-controls=\"accordion-content\"\n class=\"accordion-title\"\n onClick={() => this.toggleOpen()}\n tabindex=\"0\"\n ref={el => (this.titleEl = el as HTMLElement)}\n >\n <span aria-hidden=\"true\" role=\"heading\" aria-level={String(this.AriaLevel) as string} class=\"accordion-icon\">\n <ifx-icon icon=\"chevron-down-16\" />\n </span>\n <span id=\"accordion-caption\" class=\"accordion-caption\">\n {this.caption}\n </span>\n </div>\n <div id=\"accordion-content\" class=\"accordion-content\" ref={el => (this.contentEl = el as HTMLElement)} role=\"region\" aria-labelledby=\"accordion-caption\">\n <div class=\"inner-content\">\n <slot />\n </div>\n </div>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|