@infineon/infineon-design-system-stencil 39.4.4--canary.2134.cd83647d2771e1e22b8c6c80a0df75f24ca168b6.0 → 39.4.4--canary.2134.bb609f61311d4fde41e8336aa402a4fd507e0769.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/_commonjsHelpers-CFO10eej.js +10 -0
- package/dist/cjs/_commonjsHelpers-CFO10eej.js.map +1 -0
- package/dist/cjs/ifx-action-list-item.cjs.entry.js +2 -1
- package/dist/cjs/ifx-action-list-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ifx-action-list-item.entry.cjs.js.map +1 -1
- package/dist/cjs/ifx-basic-table.cjs.entry.js +2 -1
- package/dist/cjs/ifx-basic-table.cjs.entry.js.map +1 -1
- package/dist/cjs/ifx-basic-table.entry.cjs.js.map +1 -1
- package/dist/cjs/ifx-button.cjs.entry.js +146 -0
- package/dist/cjs/ifx-button.cjs.entry.js.map +1 -0
- package/dist/cjs/ifx-button.entry.cjs.js.map +1 -0
- package/dist/cjs/ifx-checkbox.cjs.entry.js +125 -0
- package/dist/cjs/ifx-checkbox.cjs.entry.js.map +1 -0
- package/dist/cjs/ifx-checkbox.entry.cjs.js.map +1 -0
- package/dist/cjs/ifx-chip.ifx-chip-item.ifx-pagination.entry.cjs.js.map +1 -0
- package/dist/cjs/ifx-chip_3.cjs.entry.js +615 -0
- package/dist/cjs/ifx-chip_3.cjs.entry.js.map +1 -0
- package/dist/cjs/ifx-icon-button.cjs.entry.js +76 -0
- package/dist/cjs/ifx-icon-button.cjs.entry.js.map +1 -0
- package/dist/cjs/ifx-icon-button.entry.cjs.js.map +1 -0
- package/dist/cjs/ifx-icon.cjs.entry.js +127 -0
- package/dist/cjs/ifx-icon.cjs.entry.js.map +1 -0
- package/dist/cjs/ifx-icon.entry.cjs.js.map +1 -0
- package/dist/cjs/ifx-indicator.cjs.entry.js +42 -0
- package/dist/cjs/ifx-indicator.cjs.entry.js.map +1 -0
- package/dist/cjs/ifx-indicator.entry.cjs.js.map +1 -0
- package/dist/cjs/ifx-link.cjs.entry.js +2 -1
- package/dist/cjs/ifx-link.cjs.entry.js.map +1 -1
- package/dist/cjs/ifx-link.entry.cjs.js.map +1 -1
- package/dist/cjs/ifx-search-field.cjs.entry.js +2 -1
- package/dist/cjs/ifx-search-field.cjs.entry.js.map +1 -1
- package/dist/cjs/ifx-search-field.entry.cjs.js.map +1 -1
- package/dist/cjs/ifx-select.cjs.entry.js +7323 -0
- package/dist/cjs/ifx-select.cjs.entry.js.map +1 -0
- package/dist/cjs/ifx-select.entry.cjs.js.map +1 -0
- package/dist/cjs/ifx-spinner.ifx-text-field.entry.cjs.js.map +1 -1
- package/dist/cjs/ifx-spinner_2.cjs.entry.js +2 -1
- package/dist/cjs/ifx-spinner_2.cjs.entry.js.map +1 -1
- package/dist/cjs/ifx-table.cjs.entry.js +1207 -0
- package/dist/cjs/ifx-table.cjs.entry.js.map +1 -0
- package/dist/cjs/ifx-table.entry.cjs.js.map +1 -0
- package/dist/cjs/{index-DihxupoM.js → index-CVw4GUo6.js} +4 -7
- package/dist/{esm/index-Beav1bNT.js.map → cjs/index-CVw4GUo6.js.map} +1 -1
- package/dist/cjs/index-Dc5gCGlQ.js +30 -2
- package/dist/cjs/infineon-design-system-stencil.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/table-advanced-version/table.js +66 -25
- package/dist/collection/components/table-advanced-version/table.js.map +1 -1
- package/dist/components/ifx-table.js +66 -25
- package/dist/components/ifx-table.js.map +1 -1
- package/dist/esm/_commonjsHelpers-B85MJLTf.js +8 -0
- package/dist/esm/_commonjsHelpers-B85MJLTf.js.map +1 -0
- package/dist/esm/ifx-action-list-item.entry.js +2 -1
- package/dist/esm/ifx-action-list-item.entry.js.map +1 -1
- package/dist/esm/ifx-basic-table.entry.js +2 -1
- package/dist/esm/ifx-basic-table.entry.js.map +1 -1
- package/dist/esm/ifx-button.entry.js +144 -0
- package/dist/esm/ifx-button.entry.js.map +1 -0
- package/dist/esm/ifx-checkbox.entry.js +123 -0
- package/dist/esm/ifx-checkbox.entry.js.map +1 -0
- package/dist/esm/ifx-chip.ifx-chip-item.ifx-pagination.entry.js.map +1 -0
- package/dist/esm/ifx-chip_3.entry.js +611 -0
- package/dist/esm/ifx-chip_3.entry.js.map +1 -0
- package/dist/esm/ifx-icon-button.entry.js +74 -0
- package/dist/esm/ifx-icon-button.entry.js.map +1 -0
- package/dist/esm/ifx-icon.entry.js +125 -0
- package/dist/esm/ifx-icon.entry.js.map +1 -0
- package/dist/esm/ifx-indicator.entry.js +40 -0
- package/dist/esm/ifx-indicator.entry.js.map +1 -0
- package/dist/esm/ifx-link.entry.js +2 -1
- package/dist/esm/ifx-link.entry.js.map +1 -1
- package/dist/esm/ifx-search-field.entry.js +2 -1
- package/dist/esm/ifx-search-field.entry.js.map +1 -1
- package/dist/esm/ifx-select.entry.js +7321 -0
- package/dist/esm/ifx-select.entry.js.map +1 -0
- package/dist/esm/ifx-spinner.ifx-text-field.entry.js.map +1 -1
- package/dist/esm/ifx-spinner_2.entry.js +2 -1
- package/dist/esm/ifx-spinner_2.entry.js.map +1 -1
- package/dist/esm/ifx-table.entry.js +1205 -0
- package/dist/esm/ifx-table.entry.js.map +1 -0
- package/dist/esm/{index-Beav1bNT.js → index-Bt32KzDW.js} +4 -6
- package/dist/{cjs/index-DihxupoM.js.map → esm/index-Bt32KzDW.js.map} +1 -1
- package/dist/esm/index-PqnYwNKt.js +30 -2
- package/dist/esm/infineon-design-system-stencil.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/infineon-design-system-stencil/ifx-action-list-item.entry.esm.js.map +1 -1
- package/dist/infineon-design-system-stencil/ifx-basic-table.entry.esm.js.map +1 -1
- package/dist/infineon-design-system-stencil/ifx-button.entry.esm.js.map +1 -0
- package/dist/infineon-design-system-stencil/ifx-checkbox.entry.esm.js.map +1 -0
- package/dist/infineon-design-system-stencil/ifx-chip.ifx-chip-item.ifx-pagination.entry.esm.js.map +1 -0
- package/dist/infineon-design-system-stencil/ifx-icon-button.entry.esm.js.map +1 -0
- package/dist/infineon-design-system-stencil/ifx-icon.entry.esm.js.map +1 -0
- package/dist/infineon-design-system-stencil/ifx-indicator.entry.esm.js.map +1 -0
- package/dist/infineon-design-system-stencil/ifx-link.entry.esm.js.map +1 -1
- package/dist/infineon-design-system-stencil/ifx-search-field.entry.esm.js.map +1 -1
- package/dist/infineon-design-system-stencil/ifx-select.entry.esm.js.map +1 -0
- package/dist/infineon-design-system-stencil/ifx-spinner.ifx-text-field.entry.esm.js.map +1 -1
- package/dist/infineon-design-system-stencil/ifx-table.entry.esm.js.map +1 -0
- package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js +1 -1
- package/dist/infineon-design-system-stencil/p-169f26ae.entry.js +2 -0
- package/dist/infineon-design-system-stencil/{p-6fd710a6.entry.js.map → p-169f26ae.entry.js.map} +1 -1
- package/dist/infineon-design-system-stencil/p-2d5290c7.entry.js +2 -0
- package/dist/infineon-design-system-stencil/p-2d5290c7.entry.js.map +1 -0
- package/dist/infineon-design-system-stencil/p-39561a49.entry.js +2 -0
- package/dist/infineon-design-system-stencil/p-39561a49.entry.js.map +1 -0
- package/dist/infineon-design-system-stencil/p-3d77ef02.entry.js +2 -0
- package/dist/infineon-design-system-stencil/{p-81f0d6ad.entry.js.map → p-3d77ef02.entry.js.map} +1 -1
- package/dist/infineon-design-system-stencil/p-4da5a2a5.entry.js +2 -0
- package/dist/infineon-design-system-stencil/p-4da5a2a5.entry.js.map +1 -0
- package/dist/infineon-design-system-stencil/p-4fba0543.entry.js +2 -0
- package/dist/infineon-design-system-stencil/{p-7b705420.entry.js.map → p-4fba0543.entry.js.map} +1 -1
- package/dist/infineon-design-system-stencil/p-5e3d0ff0.entry.js +2 -0
- package/dist/infineon-design-system-stencil/p-5e3d0ff0.entry.js.map +1 -0
- package/dist/infineon-design-system-stencil/p-5fb3eb8b.entry.js +2 -0
- package/dist/infineon-design-system-stencil/p-5fb3eb8b.entry.js.map +1 -0
- package/dist/infineon-design-system-stencil/p-6e115707.entry.js +2 -0
- package/dist/infineon-design-system-stencil/{p-1b5dce92.entry.js.map → p-6e115707.entry.js.map} +1 -1
- package/dist/infineon-design-system-stencil/p-8a58c2be.entry.js +2 -0
- package/dist/infineon-design-system-stencil/p-8a58c2be.entry.js.map +1 -0
- package/dist/infineon-design-system-stencil/p-B85MJLTf.js +2 -0
- package/dist/infineon-design-system-stencil/p-B85MJLTf.js.map +1 -0
- package/dist/infineon-design-system-stencil/{p-Beav1bNT.js → p-DMLRPGid.js} +3 -3
- package/dist/infineon-design-system-stencil/{p-Beav1bNT.js.map → p-DMLRPGid.js.map} +1 -1
- package/dist/infineon-design-system-stencil/p-a85754a5.entry.js +3 -0
- package/dist/infineon-design-system-stencil/p-a85754a5.entry.js.map +1 -0
- package/dist/infineon-design-system-stencil/p-fcae5dc1.entry.js +2 -0
- package/dist/infineon-design-system-stencil/{p-646620f9.entry.js.map → p-fcae5dc1.entry.js.map} +1 -1
- package/dist/infineon-design-system-stencil/p-ff4cc197.entry.js +2 -0
- package/dist/infineon-design-system-stencil/p-ff4cc197.entry.js.map +1 -0
- package/package.json +1 -1
- package/dist/cjs/ifx-button.ifx-checkbox.ifx-chip.ifx-chip-item.ifx-icon.ifx-icon-button.ifx-indicator.ifx-pagination.ifx-select.ifx-table.entry.cjs.js.map +0 -1
- package/dist/cjs/ifx-button_10.cjs.entry.js +0 -9551
- package/dist/cjs/ifx-button_10.cjs.entry.js.map +0 -1
- package/dist/esm/ifx-button.ifx-checkbox.ifx-chip.ifx-chip-item.ifx-icon.ifx-icon-button.ifx-indicator.ifx-pagination.ifx-select.ifx-table.entry.js.map +0 -1
- package/dist/esm/ifx-button_10.entry.js +0 -9540
- package/dist/esm/ifx-button_10.entry.js.map +0 -1
- package/dist/infineon-design-system-stencil/ifx-button.ifx-checkbox.ifx-chip.ifx-chip-item.ifx-icon.ifx-icon-button.ifx-indicator.ifx-pagination.ifx-select.ifx-table.entry.esm.js.map +0 -1
- package/dist/infineon-design-system-stencil/p-1b5dce92.entry.js +0 -2
- package/dist/infineon-design-system-stencil/p-3f6242bc.entry.js +0 -3
- package/dist/infineon-design-system-stencil/p-3f6242bc.entry.js.map +0 -1
- package/dist/infineon-design-system-stencil/p-646620f9.entry.js +0 -2
- package/dist/infineon-design-system-stencil/p-6fd710a6.entry.js +0 -2
- package/dist/infineon-design-system-stencil/p-7b705420.entry.js +0 -2
- package/dist/infineon-design-system-stencil/p-81f0d6ad.entry.js +0 -2
|
@@ -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","selectedRowsData","Map","showLoading","originalRowData","internalItemsPerPage","JSON","stringify","selected","handleSelectAll","newSelectedRows","newSelectedRowsData","forEach","row","rowId","__rowId","add","cleanRow","__rest","set","delete","clear","updateCheckboxStates","updateHeaderCheckboxState","emitSelectionChange","handleRowCheckboxClick","clickedRowData","has","length","rowsChanged","_newVal","parsed","parseArrayInput","rows","index","Date","now","Math","random","__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","Array","isArray","console","toggleSidebarFilters","col","setTimeout","headerCheckbox","container","querySelector","currentPageSelectedCount","filter","allOnPageSelected","someOnPageSelected","allSelected","someSelected","handleSidebarFilterChange","filterGroups","filterGroup","filterGroupName","selectedItems","item","handleTopbarFilterChange","filters","filterInfo","selectedValues","toLowerCase","textFilterMatched","property","hasOwnProperty","rowValue","some","filterValue","startsWith","includesUndefined","includes","serverPageChangeHandler","total","page","pageSize","sampleNumber","paginationElement","shadowRoot","startIndex","endIndex","visibleRowData","slice","clearAllFilters","onBtShowLoading","showLoadingOverlay","setPaginationItemsPerPage","newItemsPerPage","paginationItemsPerPage","itemsPerPageArray","selectedOption","find","option","componentWillLoad","uniqueKey","floor","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","dataToUpdate","refreshCells","force","selectedRowsArray","from","values","isSelectAll","selectedCount","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<string> = new Set();\n @State() selectAll: boolean = false;\n @State() selectedRowsData: Map<string, any> = new Map();\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 parsed.forEach((row, index) => {\n if (!row.__rowId) {\n row.__rowId = `row_${index}_${Date.now()}_${Math.random()}`;\n }\n });\n\n if (this.enableSelection) {\n parsed.forEach(row => {\n row.__checkbox = {\n disabled: false,\n checked: this.selectedRows?.has(row.__rowId) || false,\n size: 's',\n indeterminate: false,\n error: false,\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 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 if (this.serverSidePagination) {\n \n const currentPageSelectedCount = this.rowData.filter(row => this.selectedRows?.has(row.__rowId)).length;\n const allOnPageSelected = currentPageSelectedCount === this.rowData.length && this.rowData.length > 0;\n const someOnPageSelected = currentPageSelectedCount > 0 && currentPageSelectedCount < this.rowData.length;\n\n headerCheckbox.checked = allOnPageSelected;\n headerCheckbox.indeterminate = someOnPageSelected;\n } else {\n \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\n headerCheckbox.checked = allSelected;\n headerCheckbox.indeterminate = someSelected;\n }\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) {\n this.selectAll = false;\n }\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 rows.forEach((row, index) => {\n const rowId = row.sampleNumber || `row_${(this.currentPage - 1) * this.paginationPageSize + index}`;\n row.__rowId = rowId;\n row.__checkbox = {\n disabled: false,\n checked: this.selectedRows?.has(rowId) || false,\n size: 's',\n indeterminate: false,\n error: false,\n };\n });\n\n this.rowData = rows;\n this.matchingResultsCount = total;\n\n if (this.gridApi) {\n this.gridApi.setGridOption('rowData', rows);\n this.updateHeaderCheckboxState();\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\n if (this.enableSelection) {\n visibleRowData.forEach(row => {\n if (!row.__checkbox) {\n row.__checkbox = {\n disabled: false,\n checked: this.selectedRows?.has(row.__rowId) || false,\n size: 's',\n indeterminate: false,\n error: false,\n };\n } else {\n row.__checkbox.checked = this.selectedRows?.has(row.__rowId) || false;\n }\n });\n }\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 this.updateHeaderCheckboxState();\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 if (this.serverSidePagination) {\n this.selectAll = false;\n }\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 // Add checkbox properties to rows\n rows.forEach((row, index) => {\n const rowId = row.sampleNumber || `row_${(this.currentPage - 1) * this.paginationPageSize + index}`;\n row.__rowId = rowId;\n row.__checkbox = {\n disabled: false,\n checked: this.selectedRows?.has(rowId) || false,\n size: 's',\n indeterminate: false,\n error: false,\n };\n });\n\n this.rowData = rows;\n this.matchingResultsCount = total;\n\n if (this.gridApi) {\n this.gridApi.setGridOption('rowData', this.rowData);\n\n this.updateHeaderCheckboxState();\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\n if (this.enableSelection) {\n visibleRowData.forEach(row => {\n if (!row.__checkbox) {\n row.__checkbox = {\n disabled: false,\n checked: this.selectedRows?.has(row.__rowId) || false,\n size: 's',\n indeterminate: false,\n error: false,\n };\n } else {\n row.__checkbox.checked = this.selectedRows?.has(row.__rowId) || false;\n }\n });\n }\n\n this.rowData = visibleRowData;\n\n if (this.gridApi) {\n this.gridApi.setGridOption('rowData', visibleRowData);\n\n this.updateHeaderCheckboxState();\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\n const newSelectedRows = new Set(this.selectedRows);\n const newSelectedRowsData = new Map(this.selectedRowsData);\n\n if (checked) {\n if (this.serverSidePagination) {\n // Server-side: select only current page rows\n this.rowData.forEach(row => {\n const rowId = row.__rowId;\n newSelectedRows.add(rowId);\n const { __checkbox, __rowId, ...cleanRow } = row;\n newSelectedRowsData.set(rowId, cleanRow);\n });\n } else {\n // Client-side: select ALL rows across ALL pages\n this.allRowData.forEach(row => {\n const rowId = row.__rowId;\n newSelectedRows.add(rowId);\n const { __checkbox, __rowId, ...cleanRow } = row;\n newSelectedRowsData.set(rowId, cleanRow);\n });\n }\n } else {\n if (this.serverSidePagination) {\n // Server-side: remove only current page rows\n this.rowData.forEach(row => {\n const rowId = row.__rowId;\n newSelectedRows.delete(rowId);\n newSelectedRowsData.delete(rowId);\n });\n } else {\n // Client-side: remove ALL rows (clear entire selection)\n newSelectedRows.clear();\n newSelectedRowsData.clear();\n }\n }\n\n this.selectedRows = newSelectedRows;\n this.selectedRowsData = newSelectedRowsData;\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 rows.forEach((row, index) => {\n if (!row.__rowId) {\n row.__rowId = `row_${index}_${Date.now()}_${Math.random()}`;\n }\n });\n\n if (this.enableSelection) {\n rows.forEach(row => {\n row.__checkbox = {\n disabled: false,\n checked: this.selectedRows?.has(row.__rowId) || false,\n size: 's',\n indeterminate: false,\n error: false,\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 rowId = clickedRowData.__rowId;\n const newSelectedRows = new Set(this.selectedRows);\n const newSelectedRowsData = new Map(this.selectedRowsData);\n\n if (newSelectedRows.has(rowId)) {\n newSelectedRows.delete(rowId);\n newSelectedRowsData.delete(rowId);\n } else {\n newSelectedRows.add(rowId);\n const { __checkbox, __rowId, ...cleanRow } = clickedRowData;\n newSelectedRowsData.set(rowId, cleanRow);\n }\n\n this.selectedRows = newSelectedRows;\n this.selectedRowsData = newSelectedRowsData;\n this.selectAll = newSelectedRows.size === this.rowData.length && this.rowData.length > 0;\n\n this.updateCheckboxStates();\n this.updateHeaderCheckboxState();\n this.emitSelectionChange();\n };\n\n private updateCheckboxStates() {\n // Update checkboxes in the current view\n const dataToUpdate = this.rowData; \n\n dataToUpdate.forEach(row => {\n if (row.__checkbox) {\n row.__checkbox.checked = this.selectedRows.has(row.__rowId);\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 selectedRowsArray = Array.from(this.selectedRowsData.values());\n\n let isSelectAll;\n if (this.serverSidePagination) {\n // Server-side: select-all only applies to current page\n isSelectAll = this.selectedRows.size === this.rowData.length && this.rowData.length > 0;\n } else {\n // Client-side: select-all applies to ALL data across all pages\n isSelectAll = this.selectedRows.size === this.allRowData.length && this.allRowData.length > 0;\n }\n\n this.host.dispatchEvent(\n new CustomEvent('ifxSelectionChange', {\n detail: {\n selectedRows: selectedRowsArray,\n selectedCount: selectedRowsArray.length,\n isSelectAll: isSelectAll,\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,2 @@
|
|
|
1
|
+
import{r as i,h as n,a as e}from"./p-PqnYwNKt.js";import{d as t,t as r}from"./p-DcmcuUOA.js";import{i as a}from"./p-Bw2fh5LT.js";const o=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:inline-flex}.indicator__container .dot__wrapper{display:flex;width:8px;height:8px;justify-content:center;align-items:center;flex-shrink:0;border-radius:50%;background-color:#0A8276}.indicator__container .number__container{height:16px;display:inline-flex;padding:0;min-width:16px;justify-content:center;align-items:center;border-radius:100px;background-color:#0A8276}.indicator__container .number__container .number__wrapper{padding:0 4px;color:#FFFFFF;text-align:center;font-size:0.875rem;font-style:normal;font-weight:600;line-height:16px}.indicator__container .number__container.inverted{background-color:#FFFFFF}.indicator__container .number__container.inverted .number__wrapper{color:#0A8276}';const s=class{constructor(n){i(this,n);this.inverted=false;this.variant="number";this.number=0}handleNumber(){this.filteredNumber=!isNaN(this.number)&&this.number>99?"99+":this.number}componentWillLoad(){this.handleNumber()}async componentDidLoad(){if(!a(this.el)){const i=t();r("ifx-indicator",await i)}}componentWillUpdate(){this.handleNumber()}render(){return n("div",{key:"35211d70a31d9bf69b84614694d4669877c8a6d9","aria-label":this.ariaLabel,class:"indicator__container"},this.variant==="number"&&n("div",{key:"888f42cb6ad70bb973b62468734bae7abf73f3d9",class:`number__container ${this.inverted?"inverted":""}`},n("div",{key:"4578b32ca5e7b7747eb7ae729e9732d06da3fcbc",class:"number__wrapper"},this.filteredNumber)),this.variant==="dot"&&n("div",{key:"2b3cd2500d4d64bbb27131201ca2d56f720209a0",class:"dot__wrapper"}))}get el(){return e(this)}};s.style=o;export{s as ifx_indicator};
|
|
2
|
+
//# sourceMappingURL=p-39561a49.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["indicatorCss","Indicator","constructor","hostRef","this","inverted","variant","number","handleNumber","filteredNumber","isNaN","componentWillLoad","componentDidLoad","isNestedInIfxComponent","el","framework","detectFramework","trackComponent","componentWillUpdate","render","h","key","ariaLabel","class"],"sources":["src/components/indicator/indicator.scss?tag=ifx-indicator&encapsulation=shadow","src/components/indicator/indicator.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: inline-flex;\n}\n\n.indicator__container { \n & .dot__wrapper { \n display: flex;\n width: 8px;\n height: 8px;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n border-radius: 50%;\n background-color: tokens.$ifxColorOcean500;\n }\n\n & .number__container {\n height: 16px;\n display: inline-flex;\n padding: 0; \n min-width: 16px; \n justify-content: center;\n align-items: center;\n border-radius: 100px;\n background-color: tokens.$ifxColorOcean500;\n\n & .number__wrapper {\n padding: 0 4px;\n color: tokens.$ifxColorBaseWhite;\n text-align: center;\n font-size: tokens.$ifxFontSizeS;\n font-style: normal;\n font-weight: tokens.$ifxFontWeightSemibold;\n line-height: 16px;\n }\n\n &.inverted {\n background-color: tokens.$ifxColorBaseWhite;\n\n & .number__wrapper {\n color: tokens.$ifxColorOcean500;\n }\n }\n }\n}\n\n\n","import { Component, h, Prop, Element, State } 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-indicator',\n styleUrl: 'indicator.scss',\n shadow: true\n})\nexport class Indicator {\n @Element() el;\n @State() filteredNumber: string | number;\n @Prop() inverted: boolean = false;\n @Prop() ariaLabel: string | null;\n @Prop() variant: string = 'number'\n @Prop() number: number = 0;\n\n handleNumber() {\n this.filteredNumber = !isNaN(this.number) && this.number > 99 ? '99+' : this.number;\n }\n\n componentWillLoad() { \n this.handleNumber()\n }\n\n async componentDidLoad() { \n if(!isNestedInIfxComponent(this.el)) { \n const framework = detectFramework();\n trackComponent('ifx-indicator', await framework)\n }\n }\n\n componentWillUpdate() {\n this.handleNumber()\n }\n\n render() {\n return (\n <div aria-label={this.ariaLabel} class='indicator__container'>\n {this.variant === 'number' && \n <div class={`number__container ${this.inverted ? 'inverted' : \"\"}`}>\n <div class=\"number__wrapper\">\n {this.filteredNumber}\n </div> \n </div>}\n {this.variant === 'dot' && <div class=\"dot__wrapper\"></div>}\n </div>\n );\n }\n}"],"mappings":"iIAAA,MAAMA,EAAe,swB,MCURC,EAAS,MALtB,WAAAC,CAAAC,G,UAQUC,KAAQC,SAAY,MAEpBD,KAAOE,QAAW,SAClBF,KAAMG,OAAW,CAkC1B,CAhCC,YAAAC,GACEJ,KAAKK,gBAAkBC,MAAMN,KAAKG,SAAWH,KAAKG,OAAS,GAAK,MAAQH,KAAKG,M,CAG/E,iBAAAI,GACEP,KAAKI,c,CAGP,sBAAMI,GACJ,IAAIC,EAAuBT,KAAKU,IAAK,CACnC,MAAMC,EAAYC,IAClBC,EAAe,sBAAuBF,E,EAI1C,mBAAAG,GACEd,KAAKI,c,CAGP,MAAAW,GACE,OACEC,EAAA,OAAAC,IAAA,wDAAiBjB,KAAKkB,UAAWC,MAAM,wBACrCnB,KAAKE,UAAY,UAClBc,EAAA,OAAAC,IAAA,2CAAKE,MAAO,qBAAqBnB,KAAKC,SAAW,WAAa,MAC3De,EAAK,OAAAC,IAAA,2CAAAE,MAAM,mBACRnB,KAAKK,iBAGVL,KAAKE,UAAY,OAASc,EAAA,OAAAC,IAAA,2CAAKE,MAAM,iB","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,h as i,a as t}from"./p-PqnYwNKt.js";import{d as n,t as l}from"./p-DcmcuUOA.js";import{i as o}from"./p-Bw2fh5LT.js";import{c as r}from"./p-DMLRPGid.js";import"./p-B85MJLTf.js";const s=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:inline-flex}.link{display:inline-flex;align-items:center;font-weight:400;font-size:1rem;text-decoration:none;color:#0A8276;gap:8px;line-height:1.6;font-family:var(--ifx-font-family)}.link:hover{cursor:pointer}.link:focus{outline-width:2px;outline-style:solid;outline-color:#0A8276;outline-offset:4px;border-radius:3px}.link.bold{font-weight:600}.link.bold:hover{text-decoration:underline}.link.bold:active{color:#08665C;font-style:normal;font-weight:600;text-decoration:underline}.link.underlined{text-decoration:underline;text-decoration-color:#0A8276;color:#1D1D1D;text-underline-offset:8px}.link.underlined:hover{color:#0A8276}.link.underlined:active{color:#0A8276}.link.underlined:disabled,.link.underlined.disabled{text-decoration-color:#BFBBBB}.link.title{text-decoration:none;font-weight:600;color:#1D1D1D}.link.title:hover{color:#0A8276}.link.title:active{color:#08665C}.link.menu{font-weight:400;font-style:normal;line-height:26px;color:#1D1D1D}.link.menu:hover{color:#0A8276}.link.menu:active{color:#08665C}.link.small{font-size:0.875rem}.link.medium{font-size:1rem}.link.large{font-size:1.125rem}.link.extraLarge{font-size:1.25rem}.link.underline{text-decoration:underline}.link:disabled,.link.disabled{color:#BFBBBB;cursor:default;pointer-events:none}';const a=class{constructor(i){e(this,i);this.href=undefined;this.target="_self";this.variant="bold";this.disabled=false;this.internalHref="";this.internalTarget="";this.internalVariant=""}setInternalStates(){if(this.href){this.internalHref=this.href.trim()}else{this.internalHref=undefined}this.internalTarget=this.target.trim();this.internalVariant=this.variant.trim().toLowerCase()}componentWillRender(){this.setInternalStates()}handleKeyDown(e){if(this.disabled){e.preventDefault()}else if(e.key==="Enter"){e.preventDefault()}}async componentDidLoad(){if(!o(this.el)){const e=n();l("ifx-link",await e)}}render(){return i("a",{key:"8b3aaa77c9de243e5a6c8c25eb1173ddb4cb0aef",tabindex:"0",role:"link","aria-label":this.ariaLabel,"aria-disabled":this.disabled||!this.internalHref,href:this.disabled?undefined:this.internalHref,download:this.download,target:this.internalTarget,class:this.linkClassNames()},i("slot",{key:"5ed92a06a4564b6c94324117edc49420a2dd21be"}))}getSizeClass(){const e=this.size==="s"?"small":null;const i=this.size==="m"?"medium":null;const t=this.size==="l"?"large":null;const n=this.size==="xl"?"extraLarge":null;if(e){return e}else if(i){return i}else if(t){return t}else if(n&&this.internalVariant==="underlined"){return"large"}else if(n&&this.internalVariant!=="underlined"){return n}else return""}getVariantClass(){const e=this.internalVariant==="bold"?"bold":null;const i=this.internalVariant==="title"?"title":null;const t=this.internalVariant==="underlined"?"underlined":null;const n=this.internalVariant==="menu"?"menu":null;if(e){return e}else if(i){return i}else if(t){return t}else if(n){return n}else return e}linkClassNames(){return r("link","primary",this.getVariantClass(),this.getSizeClass(),this.disabled?"disabled":"")}get el(){return t(this)}};a.style=s;export{a as ifx_link};
|
|
2
|
+
//# sourceMappingURL=p-3d77ef02.entry.js.map
|
package/dist/infineon-design-system-stencil/{p-81f0d6ad.entry.js.map → p-3d77ef02.entry.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["linkCss","Link","constructor","hostRef","this","href","undefined","target","variant","disabled","internalHref","internalTarget","internalVariant","setInternalStates","trim","toLowerCase","componentWillRender","handleKeyDown","event","preventDefault","key","componentDidLoad","isNestedInIfxComponent","el","framework","detectFramework","trackComponent","render","h","tabindex","role","ariaLabel","download","class","linkClassNames","getSizeClass","small","size","medium","large","extraLarge","getVariantClass","bold","title","underlined","menu","classNames"],"sources":["src/components/link/link.scss?tag=ifx-link&encapsulation=shadow","src/components/link/link.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: inline-flex;\n}\n\n.link {\n display: inline-flex;\n align-items: center;\n font-weight: 400;\n font-size: tokens.$ifxFontSizeM;\n text-decoration: none;\n color: tokens.$ifxColorOcean500;\n gap: tokens.$ifxSpace100;\n line-height: 1.6;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n\n\n &:hover { \n cursor: pointer;\n }\n\n &:focus {\n outline-width: 2px;\n outline-style: solid;\n outline-color: #0A8276;\n outline-offset: 4px;\n border-radius: 3px;\n }\n\n &.bold {\n font-weight: tokens.$ifxFontWeightSemibold;\n\n &:hover {\n text-decoration: underline;\n }\n\n &:active {\n color: #08665C;\n font-style: normal;\n font-weight: 600;\n text-decoration: underline;\n }\n\n }\n\n &.underlined {\n text-decoration: underline;\n text-decoration-color: tokens.$ifxColorOcean500;\n color: #1D1D1D;\n text-underline-offset: 8px;\n \n &:hover {\n color: tokens.$ifxColorOcean500;;\n }\n \n &:active {\n color: #0A8276;\n }\n\n &:disabled,\n &.disabled {\n text-decoration-color: tokens.$ifxColorEngineering300;\n }\n }\n\n &.title {\n text-decoration: none;\n font-weight: tokens.$ifxFontWeightSemibold;\n color: #1D1D1D;\n\n &:hover {\n color: tokens.$ifxColorOcean500;\n }\n\n &:active {\n color: #08665C;\n }\n }\n\n &.menu {\n font-weight: 400;\n font-style: normal;\n line-height: 26px;\n color: #1D1D1D;\n\n &:hover {\n color: tokens.$ifxColorOcean500;\n }\n\n &:active {\n color: #08665C;\n }\n }\n\n &.small {\n font-size: tokens.$ifxFontSizeS;\n }\n\n &.medium {\n font-size: tokens.$ifxFontSizeM;\n }\n\n &.large {\n font-size: tokens.$ifxFontSizeL;\n }\n\n &.extraLarge {\n font-size: tokens.$ifxFontSizeXl;\n }\n\n &.underline {\n text-decoration: underline;\n }\n\n &:disabled,\n &.disabled {\n color: tokens.$ifxColorEngineering300;\n cursor: default;\n pointer-events: none;\n }\n\n}","import { Component, Prop, h, State, Element } from \"@stencil/core\";\nimport { trackComponent } from '../../global/utils/tracking';\nimport { isNestedInIfxComponent } from '../../global/utils/dom-utils';\nimport { detectFramework } from '../../global/utils/framework-detection';\nimport classNames from 'classnames';\n \n@Component({\n tag: 'ifx-link',\n styleUrl: 'link.scss',\n shadow: true\n})\n\nexport class Link {\n @Element() el;\n @Prop() href: string = undefined;\n @Prop() target: string = '_self';\n @Prop() variant: string = 'bold';\n @Prop() size: string;\n @Prop() disabled: boolean = false;\n @Prop() download: string;\n @Prop() ariaLabel: string | null;\n @State() internalHref: string ='';\n @State() internalTarget: string = '';\n @State() internalVariant: string = '';\n\n setInternalStates() {\n if(this.href){\n this.internalHref = this.href.trim();\n }else{\n this.internalHref = undefined;\n }\n this.internalTarget = this.target.trim();\n this.internalVariant = this.variant.trim().toLowerCase();\n }\n\n componentWillRender(){\n this.setInternalStates();\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled) {\n event.preventDefault();\n } else if (event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n async componentDidLoad() { \n if(!isNestedInIfxComponent(this.el)) { \n const framework = detectFramework();\n trackComponent('ifx-link', await framework)\n }\n }\n\n render() {\n return (\n <a\n tabindex=\"0\"\n role=\"link\"\n aria-label={this.ariaLabel}\n aria-disabled={this.disabled || !this.internalHref}\n href={this.disabled ? undefined : this.internalHref}\n download={this.download}\n target={this.internalTarget}\n class={this.linkClassNames()}>\n <slot></slot>\n </a>)\n }\n\n getSizeClass() {\n const small = this.size === 's' ? 'small' : null;\n const medium = this.size === 'm' ? 'medium' : null;\n const large = this.size === 'l' ? 'large' : null;\n const extraLarge = this.size === 'xl' ? 'extraLarge' : null;\n\n if (small) {\n return small;\n } else if (medium) {\n return medium;\n } else if (large) {\n return large;\n } else if (extraLarge && this.internalVariant === 'underlined') {\n return 'large';\n } else if (extraLarge && this.internalVariant !== 'underlined') {\n return extraLarge;\n } else return \"\";\n }\n\n getVariantClass() {\n const bold = this.internalVariant === 'bold' ? 'bold' : null;\n const title = this.internalVariant === 'title' ? 'title' : null;\n const underlined = this.internalVariant === 'underlined' ? 'underlined' : null;\n const menu = this.internalVariant === 'menu' ? 'menu' : null;\n\n if (bold) {\n return bold\n } else if (title) {\n return title;\n } else if (underlined) {\n return underlined;\n } else if (menu) {\n return menu;\n } else return bold;\n }\n\n linkClassNames() {\n return classNames(\n 'link',\n 'primary',\n this.getVariantClass(),\n this.getSizeClass(),\n this.disabled ? 'disabled' : '',\n );\n }\n}"],"mappings":"
|
|
1
|
+
{"version":3,"names":["linkCss","Link","constructor","hostRef","this","href","undefined","target","variant","disabled","internalHref","internalTarget","internalVariant","setInternalStates","trim","toLowerCase","componentWillRender","handleKeyDown","event","preventDefault","key","componentDidLoad","isNestedInIfxComponent","el","framework","detectFramework","trackComponent","render","h","tabindex","role","ariaLabel","download","class","linkClassNames","getSizeClass","small","size","medium","large","extraLarge","getVariantClass","bold","title","underlined","menu","classNames"],"sources":["src/components/link/link.scss?tag=ifx-link&encapsulation=shadow","src/components/link/link.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: inline-flex;\n}\n\n.link {\n display: inline-flex;\n align-items: center;\n font-weight: 400;\n font-size: tokens.$ifxFontSizeM;\n text-decoration: none;\n color: tokens.$ifxColorOcean500;\n gap: tokens.$ifxSpace100;\n line-height: 1.6;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n\n\n &:hover { \n cursor: pointer;\n }\n\n &:focus {\n outline-width: 2px;\n outline-style: solid;\n outline-color: #0A8276;\n outline-offset: 4px;\n border-radius: 3px;\n }\n\n &.bold {\n font-weight: tokens.$ifxFontWeightSemibold;\n\n &:hover {\n text-decoration: underline;\n }\n\n &:active {\n color: #08665C;\n font-style: normal;\n font-weight: 600;\n text-decoration: underline;\n }\n\n }\n\n &.underlined {\n text-decoration: underline;\n text-decoration-color: tokens.$ifxColorOcean500;\n color: #1D1D1D;\n text-underline-offset: 8px;\n \n &:hover {\n color: tokens.$ifxColorOcean500;;\n }\n \n &:active {\n color: #0A8276;\n }\n\n &:disabled,\n &.disabled {\n text-decoration-color: tokens.$ifxColorEngineering300;\n }\n }\n\n &.title {\n text-decoration: none;\n font-weight: tokens.$ifxFontWeightSemibold;\n color: #1D1D1D;\n\n &:hover {\n color: tokens.$ifxColorOcean500;\n }\n\n &:active {\n color: #08665C;\n }\n }\n\n &.menu {\n font-weight: 400;\n font-style: normal;\n line-height: 26px;\n color: #1D1D1D;\n\n &:hover {\n color: tokens.$ifxColorOcean500;\n }\n\n &:active {\n color: #08665C;\n }\n }\n\n &.small {\n font-size: tokens.$ifxFontSizeS;\n }\n\n &.medium {\n font-size: tokens.$ifxFontSizeM;\n }\n\n &.large {\n font-size: tokens.$ifxFontSizeL;\n }\n\n &.extraLarge {\n font-size: tokens.$ifxFontSizeXl;\n }\n\n &.underline {\n text-decoration: underline;\n }\n\n &:disabled,\n &.disabled {\n color: tokens.$ifxColorEngineering300;\n cursor: default;\n pointer-events: none;\n }\n\n}","import { Component, Prop, h, State, Element } from \"@stencil/core\";\nimport { trackComponent } from '../../global/utils/tracking';\nimport { isNestedInIfxComponent } from '../../global/utils/dom-utils';\nimport { detectFramework } from '../../global/utils/framework-detection';\nimport classNames from 'classnames';\n \n@Component({\n tag: 'ifx-link',\n styleUrl: 'link.scss',\n shadow: true\n})\n\nexport class Link {\n @Element() el;\n @Prop() href: string = undefined;\n @Prop() target: string = '_self';\n @Prop() variant: string = 'bold';\n @Prop() size: string;\n @Prop() disabled: boolean = false;\n @Prop() download: string;\n @Prop() ariaLabel: string | null;\n @State() internalHref: string ='';\n @State() internalTarget: string = '';\n @State() internalVariant: string = '';\n\n setInternalStates() {\n if(this.href){\n this.internalHref = this.href.trim();\n }else{\n this.internalHref = undefined;\n }\n this.internalTarget = this.target.trim();\n this.internalVariant = this.variant.trim().toLowerCase();\n }\n\n componentWillRender(){\n this.setInternalStates();\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled) {\n event.preventDefault();\n } else if (event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n async componentDidLoad() { \n if(!isNestedInIfxComponent(this.el)) { \n const framework = detectFramework();\n trackComponent('ifx-link', await framework)\n }\n }\n\n render() {\n return (\n <a\n tabindex=\"0\"\n role=\"link\"\n aria-label={this.ariaLabel}\n aria-disabled={this.disabled || !this.internalHref}\n href={this.disabled ? undefined : this.internalHref}\n download={this.download}\n target={this.internalTarget}\n class={this.linkClassNames()}>\n <slot></slot>\n </a>)\n }\n\n getSizeClass() {\n const small = this.size === 's' ? 'small' : null;\n const medium = this.size === 'm' ? 'medium' : null;\n const large = this.size === 'l' ? 'large' : null;\n const extraLarge = this.size === 'xl' ? 'extraLarge' : null;\n\n if (small) {\n return small;\n } else if (medium) {\n return medium;\n } else if (large) {\n return large;\n } else if (extraLarge && this.internalVariant === 'underlined') {\n return 'large';\n } else if (extraLarge && this.internalVariant !== 'underlined') {\n return extraLarge;\n } else return \"\";\n }\n\n getVariantClass() {\n const bold = this.internalVariant === 'bold' ? 'bold' : null;\n const title = this.internalVariant === 'title' ? 'title' : null;\n const underlined = this.internalVariant === 'underlined' ? 'underlined' : null;\n const menu = this.internalVariant === 'menu' ? 'menu' : null;\n\n if (bold) {\n return bold\n } else if (title) {\n return title;\n } else if (underlined) {\n return underlined;\n } else if (menu) {\n return menu;\n } else return bold;\n }\n\n linkClassNames() {\n return classNames(\n 'link',\n 'primary',\n this.getVariantClass(),\n this.getSizeClass(),\n this.disabled ? 'disabled' : '',\n );\n }\n}"],"mappings":"6LAAA,MAAMA,EAAU,6zC,MCYHC,EAAI,MANjB,WAAAC,CAAAC,G,UAQUC,KAAIC,KAAWC,UACfF,KAAMG,OAAW,QACjBH,KAAOI,QAAW,OAElBJ,KAAQK,SAAY,MAGnBL,KAAYM,aAAU,GACtBN,KAAcO,eAAW,GACzBP,KAAeQ,gBAAW,EA2FpC,CAzFC,iBAAAC,GACE,GAAGT,KAAKC,KAAK,CACXD,KAAKM,aAAeN,KAAKC,KAAKS,M,KAC3B,CACHV,KAAKM,aAAeJ,S,CAEtBF,KAAKO,eAAiBP,KAAKG,OAAOO,OAClCV,KAAKQ,gBAAkBR,KAAKI,QAAQM,OAAOC,a,CAG7C,mBAAAC,GACEZ,KAAKS,mB,CAGP,aAAAI,CAAcC,GACZ,GAAId,KAAKK,SAAU,CACjBS,EAAMC,gB,MACD,GAAID,EAAME,MAAQ,QAAS,CAChCF,EAAMC,gB,EAIV,sBAAME,GACJ,IAAIC,EAAuBlB,KAAKmB,IAAK,CACnC,MAAMC,EAAYC,IAClBC,EAAe,iBAAkBF,E,EAIrC,MAAAG,GACE,OACEC,EACA,KAAAR,IAAA,2CAAAS,SAAS,IACPC,KAAK,OACO,aAAA1B,KAAK2B,UAAS,gBACX3B,KAAKK,WAAaL,KAAKM,aACtCL,KAAMD,KAAKK,SAAWH,UAAYF,KAAKM,aACvCsB,SAAU5B,KAAK4B,SACfzB,OAAQH,KAAKO,eACbsB,MAAO7B,KAAK8B,kBACZN,EAAa,QAAAR,IAAA,6C,CAInB,YAAAe,GACE,MAAMC,EAAQhC,KAAKiC,OAAS,IAAM,QAAU,KAC5C,MAAMC,EAASlC,KAAKiC,OAAS,IAAM,SAAW,KAC9C,MAAME,EAAQnC,KAAKiC,OAAS,IAAM,QAAU,KAC5C,MAAMG,EAAapC,KAAKiC,OAAS,KAAO,aAAe,KAEvD,GAAID,EAAO,CACT,OAAOA,C,MACF,GAAIE,EAAQ,CACjB,OAAOA,C,MACF,GAAIC,EAAO,CAChB,OAAOA,C,MACF,GAAIC,GAAcpC,KAAKQ,kBAAoB,aAAc,CAC9D,MAAO,O,MACF,GAAI4B,GAAcpC,KAAKQ,kBAAoB,aAAc,CAC9D,OAAO4B,C,MACF,MAAO,E,CAGhB,eAAAC,GACE,MAAMC,EAAOtC,KAAKQ,kBAAoB,OAAS,OAAS,KACxD,MAAM+B,EAAQvC,KAAKQ,kBAAoB,QAAU,QAAU,KAC3D,MAAMgC,EAAaxC,KAAKQ,kBAAoB,aAAe,aAAe,KAC1E,MAAMiC,EAAOzC,KAAKQ,kBAAoB,OAAS,OAAS,KAExD,GAAI8B,EAAM,CACR,OAAOA,C,MACF,GAAIC,EAAO,CAChB,OAAOA,C,MACF,GAAIC,EAAY,CACrB,OAAOA,C,MACF,GAAIC,EAAM,CACf,OAAOA,C,MACF,OAAOH,C,CAGhB,cAAAR,GACE,OAAOY,EACL,OACA,UACA1C,KAAKqC,kBACLrC,KAAK+B,eACL/B,KAAKK,SAAW,WAAa,G","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,c as i,h as t,a}from"./p-PqnYwNKt.js";import{d as r,t as s}from"./p-DcmcuUOA.js";import{i as n}from"./p-Bw2fh5LT.js";const l=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:inline-block}.chip{position:relative}.chip__wrapper{display:inline-flex;align-items:center;justify-content:center;gap:8px;box-sizing:border-box;border-radius:9999px;background:#FFFFFF;cursor:pointer;transition:border 100ms ease;font:400 0.875rem/1.25rem "Source Sans 3"}.chip__wrapper .icon__wrapper{display:flex}.chip__wrapper.outlined,.chip__wrapper.filled-dark,.chip__wrapper.filled-light{outline:2px solid transparent}.chip__wrapper.outlined:focus-visible,.chip__wrapper.filled-dark:focus-visible,.chip__wrapper.filled-light:focus-visible{outline:2px solid #0A8276;outline-offset:2px}.chip__wrapper.outlined.chip__wrapper--opened .wrapper__open-button,.chip__wrapper.filled-dark.chip__wrapper--opened .wrapper__open-button,.chip__wrapper.filled-light.chip__wrapper--opened .wrapper__open-button{transform:rotate(-180deg)}.chip__wrapper.outlined.chip__wrapper--selected .wrapper__label .label__selected-options,.chip__wrapper.filled-dark.chip__wrapper--selected .wrapper__label .label__selected-options,.chip__wrapper.filled-light.chip__wrapper--selected .wrapper__label .label__selected-options{font:400 0.875rem/1.25rem "Source Sans 3"}.chip__wrapper.filled-dark.chip__wrapper--selected:not(.read-only),.chip__wrapper.filled-light.chip__wrapper--selected:not(.read-only){background-color:#0A8276;color:white}.chip__wrapper.filled-dark.chip__wrapper--selected:not(.read-only):hover,.chip__wrapper.filled-light.chip__wrapper--selected:not(.read-only):hover{background-color:#08665C}.chip__wrapper.filled-dark.chip__wrapper--selected:not(.read-only):hover.disabled,.chip__wrapper.filled-light.chip__wrapper--selected:not(.read-only):hover.disabled{background-color:#0A8276}.chip__wrapper.outlined{border:1px solid #8D8786}.chip__wrapper.outlined:hover:not(.read-only){border-color:#575352;background-color:#F7F7F7}.chip__wrapper.outlined:active:not(.read-only){border-color:#575352;background-color:#BFBBBB}.chip__wrapper.outlined.chip__wrapper--opened{border:1px solid #0A8276}.chip__wrapper.outlined.chip__wrapper--selected{outline:3px solid #0A8276;border:1px solid transparent;background-color:white}.chip__wrapper.outlined.chip__wrapper--selected:focus-visible{outline-offset:0px}.chip__wrapper.outlined.chip__wrapper--selected:hover:not(.read-only){outline-color:#08665C}.chip__wrapper.outlined.chip__wrapper--selected.read-only{outline:none;border:1px solid black}.chip__wrapper.outlined.disabled{outline:none;color:#BFBBBB;border:1px solid #BFBBBB}.chip__wrapper.outlined.disabled:hover{outline:none;border-color:#BFBBBB;background-color:white}.chip__wrapper.outlined.read-only{border:1px solid black}.chip__wrapper.outlined.read-only:focus-visible{outline:2px solid #0A8276;outline-offset:2px}.chip__wrapper.filled-dark{background-color:#3C3A39;color:white}.chip__wrapper.filled-dark:hover:not(.chip__wrapper--selected,.disabled,.read-only){background-color:#575352}.chip__wrapper.filled-dark:active:not(.chip__wrapper--selected,.disabled,.read-only){background-color:#8D8786;color:black}.chip__wrapper.filled-dark.disabled{outline:none;color:#BFBBBB}.chip__wrapper.filled-dark.disabled:hover:not(.chip__wrapper--selected){background-color:#3C3A39}.chip__wrapper.filled-dark.chip__wrapper--selected.read-only{border:1px solid #8D8786}.chip__wrapper.filled-dark.read-only{border:1px solid #8D8786}.chip__wrapper.filled-light{background-color:#EEEDED}.chip__wrapper.filled-light:hover:not(.read-only){background-color:#BFBBBB}.chip__wrapper.filled-light:active:not(.read-only){background-color:#8D8786}.chip__wrapper.filled-light.disabled{outline:none;color:#BFBBBB}.chip__wrapper.filled-light.disabled:hover:not(.chip__wrapper--selected){background-color:#EEEDED}.chip__wrapper.filled-light.chip__wrapper--selected.read-only{border:1px solid black}.chip__wrapper.filled-light.read-only{border:1px solid black}.chip__wrapper.chip__wrapper--small{padding:4px 8px;height:24px}.chip__wrapper.chip__wrapper--medium{padding:4px 12px;height:28px}.chip__wrapper.chip__wrapper--large{padding:8px 12px;height:36px}.wrapper__label{display:inline-flex;align-items:center;gap:4px}.wrapper__label .label__selected-options{font:600 0.875rem/1.25rem "Source Sans 3"}.wrapper__open-button{display:flex;align-items:center}.wrapper__unselect-button{display:flex;align-items:center}.chip__dropdown{position:absolute;z-index:1;box-shadow:0px 6px 9px 0px rgba(29, 29, 29, 0.1019607843);border:1px solid #EEEDED;border-radius:1px;padding:8px 0;min-width:222px;background-color:#FFFFFF}';const o=class{constructor(t){e(this,t);this.ifxChange=i(this,"ifxChange",7);this.placeholder="";this.size="medium";this.value=undefined;this.variant="single";this.theme="outlined";this.readOnly=false;this.disabled=false;this.icon="";this.opened=false;this.selectedOptions=[]}handleValueChange(e){this.syncSelectedOptionsWithProp(e)}handleReadOnlyChange(e){if(e){this.opened=false}}closeDropdownOnOutsideClick(e){const i=e.composedPath();const t=this.chip.shadowRoot.querySelector(".chip__wrapper");const a=this.chip.shadowRoot.querySelector(".chip__dropdown");if(!i.includes(a)&&!i.includes(t)&&this.opened){this.toggleDropdownMenu()}}handleKeyDown(e){if(e.code!=="Tab"){e.preventDefault()}if(e.target.tagName==="IFX-CHIP"){this.handleWrapperKeyDown(e)}else if(e.target.tagName==="IFX-CHIP-ITEM"){this.handleDropdownKeyDown(e)}}updateSelectedOptions(e){const i=e.detail;const t=[...this.selectedOptions];if(this.variant!=="multi"){if(i.selected){this.opened=false;const t=this.getChipItems();t.forEach((i=>{if(i.selected&&i!==e.target){i.chipState=Object.assign(Object.assign({},i.chipState),{emitIfxChipItemSelect:false});i.selected=false}}));this.selectedOptions=[i]}else{this.selectedOptions=[]}this.value=this.selectedOptions[0]?this.selectedOptions[0].value:undefined}else{if(i.selected){if(!this.selectedOptions.find((e=>e.value===i.value))){this.selectedOptions=[...this.selectedOptions,i]}}else{this.selectedOptions=this.selectedOptions.filter((e=>e.value!==i.value))}this.value=this.selectedOptions.map((e=>e.value))}if(i.emitIfxChange){this.ifxChange.emit({previousSelection:t,currentSelection:this.selectedOptions,name:this.placeholder})}}getChipItems(){return this.chip.querySelectorAll("ifx-chip-item")}getSelectedOptions(){if(this.variant!=="multi"){return this.selectedOptions.map((e=>e.label)).join("")}return this.selectedOptions.slice(0,2).map((e=>e.label)).join(", ")}toggleDropdownMenu(){if(this.readOnly)return;this.opened=!this.opened}focusChipItemAt(e=0){this.opened=true;const i=this.getChipItems();let t;if(e===-1){t=i.item(i.length-1)}else if(e>=0&&e<i.length){t=i.item(e)}else{console.error(`Invalid index: ${e}`);return}const a=t.shadowRoot.querySelector(".chip-item");if(a){setTimeout((()=>{a.focus()}),1)}}focusChip(){const e=this.chip.shadowRoot.querySelector(".chip__wrapper");e.focus()}handleUnselectButtonClick(e){e.stopPropagation();this.opened=false;let i=false;const t=this.getChipItems();t.forEach((e=>{if(e.selected){i=true;e.chipState=Object.assign(Object.assign({},e.chipState),{emitIfxChipItemSelect:false});e.selected=false}}));if(i){const e=this.selectedOptions;this.selectedOptions=[];this.value=[];this.ifxChange.emit({previousSelection:e,currentSelection:[],name:this.placeholder})}}handleWrapperClick(){if(!this.readOnly){this.toggleDropdownMenu()}}handleWrapperKeyDown(e){if(this.readOnly)return;if(!this.opened){switch(e.code){case"Space":case"Enter":case"ArrowDown":this.focusChipItemAt(0);break;case"ArrowUp":this.focusChipItemAt(-1);break}}else{switch(e.code){case"Escape":this.opened=false;this.focusChip();break}}}handleDropdownKeyDown(e){let i=this.getChipItems();let t=Array.from(i).indexOf(e.target);if(t===-1){console.error("Target not found in chip items");return}switch(e.code){case"ArrowDown":if(t===i.length-1)break;this.focusChipItemAt(t+1);break;case"ArrowUp":if(t===0)break;this.focusChipItemAt(t-1);break;case"Escape":this.opened=false;this.focusChip();break;case"Space":if(this.variant==="single"){this.opened=false;this.focusChip()}break;case"Enter":this.opened=false;this.focusChip();break}}syncChipState(){const e=this.getChipItems();let i=0;e.forEach((e=>{e.chipState={emitIfxChipItemSelect:true,size:this.size?this.size:"medium",variant:this.variant==="multi"?"multi":"single",key:i++}}))}syncSelectedOptionsWithProp(e){this.selectedOptions=[];const i=(()=>{let e=0;return()=>e++})();if(Array.isArray(e)){this.selectedOptions=e.map((e=>({value:e,label:e,selected:true,key:i(),emitIfxChange:true})))}else if(typeof e==="string"){this.selectedOptions=[{value:e,label:e,selected:true,key:i(),emitIfxChange:true}]}this.syncChipState()}componentWillLoad(){this.syncSelectedOptionsWithProp(this.value)}async componentDidLoad(){if(!n(this.chip)){const e=r();s("ifx-chip",await e)}}render(){return t("div",{key:"cd16644a94a1e31cea0b2cbbe39394d4a05a5a5b",class:"chip"},t("div",{key:"951decf38e88ff684f283a09f6bc513ca4a2c704",class:`chip__wrapper chip__wrapper--${this.size?this.size:"medium"}\n chip__wrapper--${this.variant==="multi"?"multi":"single"}\n ${this.opened&&!this.readOnly?"chip__wrapper--opened":""}\n ${this.selectedOptions.length?"chip__wrapper--selected":""}\n ${this.theme?this.theme:"outlined"}\n ${this.disabled?"disabled":""}\n ${this.readOnly?"read-only":""}`,tabIndex:0,onClick:!this.readOnly&&!this.disabled?()=>{this.handleWrapperClick()}:undefined,role:"combobox","aria-label":this.ariaLabel,"aria-value":this.getSelectedOptions(),"aria-haspopup":!this.readOnly?"listbox":undefined,"aria-expanded":!this.readOnly?this.opened.toString():undefined,"aria-controls":!this.readOnly?"dropdown":undefined,"aria-readonly":this.readOnly?"true":undefined,"aria-multiselectable":this.variant==="multi"?"true":undefined},this.icon&&t("div",{key:"cd8ab00ddfde3ba1dcdb7a82f963df1b81e4b5d5",class:"icon__wrapper"},t("ifx-icon",{key:"b14f92a609f24bc0b4617bb2b0d8262c52f11fab",icon:this.icon})),t("div",{key:"7ac3305d90985ddf45eb4df3cc22f9de89bf60de",class:"wrapper__label"},this.selectedOptions.length===0&&`${this.placeholder}`,this.selectedOptions.length!==0&&this.variant==="multi"&&this.placeholder!==""&&`${this.placeholder}:`,this.selectedOptions.length!==0&&t("div",{key:"e7c907adafd7e1601a4cbd05e1a7b415e1da05b6",class:"label__selected-options"},this.getSelectedOptions()),this.selectedOptions.length>2&&this.variant==="multi"&&t("ifx-indicator",{key:"4520777b0d729d95d57d87d5a32a95fcf44e0d84",variant:"number",inverted:this.theme==="outlined"?false:true,number:this.selectedOptions.length-2})),!this.readOnly&&(this.variant!=="multi"||this.variant==="multi"&&this.selectedOptions.length===0)&&t("div",{key:"ade24c6456b5443be577a4c0bd61d1b2dba68c91",class:"wrapper__open-button"},t("ifx-icon",{key:1,icon:`chevron-down-16`})),this.selectedOptions.length>=1&&this.variant==="multi"&&t("div",{key:"8b1937382b467ca305493896aaf065c10f7a01e8",class:"wrapper__unselect-button",onClick:!this.readOnly&&!this.disabled?e=>{this.handleUnselectButtonClick(e)}:undefined},t("ifx-icon",{key:2,icon:`cross16`}))),this.opened&&!this.readOnly&&t("div",{key:"073b6641d2320716a6d4b1149e72b61fa9b47dd8",id:"dropdown",role:"listbox",class:"chip__dropdown"},t("slot",{key:"55587cb1d438b11f0682c3b1d596a5dfb1d251d0"})))}get chip(){return a(this)}static get watchers(){return{value:["handleValueChange"],readOnly:["handleReadOnlyChange"]}}};o.style=l;const p=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}.chip-item{display:flex;align-items:center;gap:8px;padding:8px 16px;user-select:none;transition:all 100ms ease;transition-property:background, color}.chip-item:hover{cursor:pointer;background-color:#EEEDED}.chip-item:active{background-color:#BFBBBB}.chip-item:focus{outline:2px solid #0A8276}.chip-item.chip-item--large{font:400 1rem/1.5rem "Source Sans 3"}.chip-item.chip-item--small{font:400 0.875rem/1.25rem "Source Sans 3"}.chip-item.chip-item--selected{color:#0A8276}.chip-item.chip-item--selected .chip-item__selected-indicator{display:block}.chip-item__selected-indicator{display:none;margin-left:auto}';const c=class{constructor(t){e(this,t);this.ifxChipItemSelect=i(this,"ifxChipItemSelect",5);this.value=undefined;this.chipState={emitIfxChipItemSelect:true,variant:"multi",size:"large"};this.selected=false}updateItemSelection(e){if(this.chipState.variant==="single"){const i=e.target;if(this.chipItem!==i&&this.chipItem.parentElement===i.parentElement){this.selected=false}}}validateSelected(e,i){if(e!==i){if(this.chipState.emitIfxChipItemSelect){this.emitIfxChipItemSelectEvent()}else{this.chipState.emitIfxChipItemSelect=true}}}getItemLabel(){return this.chipItem.innerText}toggleItemSelection(){this.selected=!this.selected}emitIfxChipItemSelectEvent(e=true){this.ifxChipItemSelect.emit({emitIfxChange:e,key:this.chipState.key,label:this.getItemLabel(),selected:this.selected,value:this.value})}handleItemClick(){this.toggleItemSelection()}handleItemKeyDown(e){if(e.code==="Enter"||e.code==="Space"){this.toggleItemSelection()}}handleSelectedState(){if(this.selected){this.emitIfxChipItemSelectEvent(false)}}componentWillLoad(){this.handleSelectedState()}render(){return t("div",{key:"4d5ace01c02658ed46fbf42c36138a06c3d46049",class:`chip-item chip-item--${this.chipState.size} \n chip-item--${(this.selected&&this.chipState.variant)==="single"?"selected":""}`,tabIndex:0,onClick:()=>{this.handleItemClick()},onKeyDown:e=>{this.handleItemKeyDown(e)},role:"option","aria-selected":this.selected.toString()},this.chipState.variant==="multi"&&t("ifx-checkbox",{key:"bf1af2aaf0944351eb33ace8c704bbb4973951d6",checked:this.selected,tabIndex:-1,size:"s"}),t("div",{key:"50347975f1554b7a02ef2bde34750b361daad549",class:"chip-item__label"}," ",t("slot",{key:"9667dd32c70e5f4a7946499f828883efb10caff2"})," "),t("div",{key:"f2fcab283b717837bc8b6c09b6b3c6c72675e40c",class:"chip-item__selected-indicator"},t("ifx-icon",{key:"84e489e9a638f2165c436b10bea8d826ae6db11c",icon:"check-16"}," ")))}get chipItem(){return a(this)}static get watchers(){return{selected:["validateSelected"]}}};c.style=p;const h=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:inline-flex}.container{display:inline-flex;justify-content:center;align-items:center;gap:32px;font-family:var(--ifx-font-family);flex-wrap:wrap}.container .items__per-page-wrapper{display:flex;align-items:center;gap:16px}.container .items__per-page-wrapper .items__per-page-label{color:#1D1D1D;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.container .items__per-page-wrapper .items__per-page-field{display:flex;flex-direction:column;align-items:flex-start}.container .items__per-page-wrapper .items__per-page-field ifx-select{width:92px}.container .items__total-wrapper{display:flex;justify-content:center;align-items:center;gap:12px}.container .items__total-wrapper .items__total-button{display:flex;width:40px;height:40px;justify-content:center;align-items:center;border-radius:100px;border:1px solid #BFBBBB;background:#FFF}.container .items__total-wrapper .page__numbers-wrapper{display:flex;justify-content:center;align-items:center;gap:12px}.container .items__total-wrapper .page__numbers-wrapper .page__number-item{display:flex;padding:6px;flex-direction:column;justify-content:center;align-items:center;gap:10px;border-radius:100px}.container .items__total-wrapper .page__numbers-wrapper .page__number-item.active{background-color:#0A8276}.container .items__total-wrapper .page__numbers-wrapper .page__number-item.active span{color:#fff}.container .items__total-wrapper .page__numbers-wrapper .page__number-item:hover{cursor:pointer}.container .items__total-wrapper .page__numbers-wrapper .page__number-item:hover:not(.active){background-color:#ddd}.container .items__total-wrapper .page__numbers-wrapper .page__number-item:active:not(.active){background-color:#575352}.container .items__total-wrapper .page__numbers-wrapper .page__number-item span{display:flex;width:16px;height:16px;flex-direction:column;justify-content:center;color:#1D1D1D;text-align:center;font-size:13px;font-style:normal;font-weight:400;line-height:20px}.pagination{display:flex}.pagination ifx-icon-button:first-of-type{margin-right:12px}.pagination ifx-icon-button:last-of-type{margin-left:12px}.page__button{padding:8px;border-radius:100px}ol{list-style-type:none;padding:0;margin:0;display:inline-flex;align-items:center;gap:12px}li{display:flex;flex-direction:column;justify-content:center;align-items:center;border-radius:100px}li:hover:not(.active) page__button{background-color:#EEEDED}li:active:not(.active) .page__button{background-color:#575352;color:#fff}li.active{background-color:#0A8276}li.active .page__button{color:#fff}li:hover{cursor:pointer}li .page__button{text-decoration:none;display:flex;width:16px;height:16px;flex-direction:column;justify-content:center;color:#1D1D1D;text-align:center;font-size:13px;font-style:normal;font-weight:400;line-height:20px;align-items:center}.prev.disabled,.next.disabled{cursor:default}.prev.disabled:hover,.next.disabled:hover{cursor:default;text-decoration:none}.prev{margin-right:2.5px}.next{margin-left:2.5px}@media (max-width: 768px){.container{gap:16px;justify-content:left}.container .items__total-wrapper .pagination ol{gap:12px}}@media (max-width: 374px){.pagination .ellipsis+.active{margin-left:8px}.pagination .active+.ellipsis{margin-left:8px}}';const d=class{constructor(t){e(this,t);this.ifxPageChange=i(this,"ifxPageChange",7);this.ifxItemsPerPageChange=i(this,"ifxItemsPerPageChange",7);this.currentPage=1;this.showItemsPerPage=true;this.internalPage=1;this.internalItemsPerPage=10;this.numberOfPages=[];this.total=1;this.filteredItemsPerPage=[];this.visiblePages=[];this.CLASS_DISABLED="disabled";this.CLASS_ACTIVE="active";this.handlePageClick=e=>{const i=e.currentTarget;const t=parseInt(i.dataset.page);if(!isNaN(t))this.changePage(t)};this.handleResize=()=>{clearTimeout(this.resizeTimeout);this.resizeTimeout=setTimeout((()=>{this.updateVisiblePages()}),100)}}watchTotalHandler(){this.calculateNumberOfPages();this.updateVisiblePages()}currentPageWatcher(e){this.internalPage=Math.max(1,Math.min(e,this.numberOfPages.length));this.calculateNumberOfPages();this.updateVisiblePages()}setItemsPerPage(e){var i,t;const a=((i=e.detail)===null||i===void 0?void 0:i.value)||((t=e.detail)===null||t===void 0?void 0:t.label);const r=parseInt(a)||10;if(r===this.internalItemsPerPage){return}this.internalItemsPerPage=r;this.internalPage=1;this.calculateNumberOfPages();this.updateVisiblePages();this.handleEventEmission()}emitItemsPerPage(e){this.ifxItemsPerPageChange.emit(e.detail.label)}async componentDidLoad(){if(this.showItemsPerPage){const e=this.el.shadowRoot.querySelector("#itemsPerPageSelect");if(e){e.addEventListener("ifxSelect",(e=>this.emitItemsPerPage(e)))}}window.addEventListener("resize",this.handleResize);if(!n(this.el)){const e=r();s("ifx-pagination",await e)}this.initPagination()}disconnectedCallback(){if(this.showItemsPerPage){const e=this.el.shadowRoot.querySelector("#itemsPerPageSelect");if(e){e.removeEventListener("ifxSelect",(e=>this.emitItemsPerPage(e)))}}window.removeEventListener("resize",this.handleResize);if(this.resizeTimeout){clearTimeout(this.resizeTimeout)}}updateVisiblePages(){const e=window.innerWidth<375;const i=this.numberOfPages.length;const t=this.internalPage;let a=[];if(e){if(i<=5){a=[...this.numberOfPages]}else{a.push(1);if(t<=2){a.push(2,3,"...",i)}else if(t>=i-1){a.push("...",i-2,i-1,i)}else{a.push("...",t,"...",i)}}}else{const e=2;if(i<=7){a=[...this.numberOfPages]}else{a.push(1);let r=Math.max(2,t-e);let s=Math.min(i-1,t+e);if(t<=4){r=2;s=Math.min(i-1,5)}else if(t>=i-3){r=Math.max(2,i-4);s=i-1}else{r=t-1;s=t+1}if(r>2){a.push("...")}for(let e=r;e<=s;e++){a.push(e)}if(s<i-1){a.push("...")}a.push(i)}}this.visiblePages=a}calculateNumberOfPages(){const e=Math.ceil(this.total/this.internalItemsPerPage);this.numberOfPages=Array.from({length:e},((e,i)=>i+1));this.internalPage=Math.max(1,Math.min(this.currentPage,e))}filterOptionsArray(){const e=typeof this.itemsPerPage==="string"?JSON.parse(this.itemsPerPage):this.itemsPerPage;this.filteredItemsPerPage=e.map((e=>Object.assign(Object.assign({},e),{label:e.label||e.value})))}componentWillLoad(){this.filterOptionsArray();const e=this.filteredItemsPerPage.find((e=>e.selected));if(e){this.internalItemsPerPage=Number(e.value)}else if(this.filteredItemsPerPage.length>0){this.internalItemsPerPage=Number(this.filteredItemsPerPage[0].value)}this.calculateNumberOfPages();this.internalPage=Math.max(1,Math.min(this.currentPage,this.numberOfPages.length));this.updateVisiblePages()}componentWillUpdate(){if(this.prevInternalPage!==this.internalPage){this.updateVisiblePages();this.prevInternalPage=this.internalPage}}componentDidUpdate(){this.initPagination()}handleEventEmission(){this.ifxPageChange.emit({currentPage:this.internalPage,totalPages:this.numberOfPages.length,itemsPerPage:this.internalItemsPerPage})}initPagination(){const e=this.el.shadowRoot.querySelector(".pagination");if(!e)return;const i=()=>{const i=e.querySelector(".prev");const t=e.querySelector(".next");if(i){i.disabled=this.internalPage===1;i.classList.toggle(this.CLASS_DISABLED,this.internalPage===1)}if(t){t.disabled=this.internalPage===this.numberOfPages.length;t.classList.toggle(this.CLASS_DISABLED,this.internalPage===this.numberOfPages.length)}};e.querySelectorAll("li").forEach((e=>{e.removeEventListener("click",this.handlePageClick);e.addEventListener("click",this.handlePageClick)}));i()}changePage(e){e=Math.max(1,Math.min(e,this.numberOfPages.length));if(e===this.internalPage)return;this.internalPage=e;this.handleEventEmission();this.initPagination()}render(){return t("div",{key:"9a4b41bb714202dcc144f626b9a2096480852ad6",class:"container"},this.showItemsPerPage&&t("div",{key:"9e829381e98967180e89bf8f8988c67bbb998814",class:"items__per-page-wrapper"},t("div",{key:"be5d328337c18096cd1363f3c7c0c060693fe525",class:"items__per-page-label"},"Results per Page"),t("div",{key:"37f663194a695059779305e0723321c26f55d191",class:"items__per-page-field"},t("ifx-select",{key:"916cc188fd2f7d86243db5955f091e188defbacc",id:"itemsPerPageSelect",placeholder:"false","show-search":"false",value:undefined,disabled:false,error:false,size:"s",options:this.filteredItemsPerPage,"placeholder-value":"Select"}))),t("div",{key:"f6531ac8c0710f53ff375e8ee4fa19bb47be5cef",class:"items__total-wrapper"},t("div",{key:"4edaf3f1bc17c3423c2b39473a0f5ddc959278d6",class:"pagination"},t("ifx-icon-button",{key:"7341fced786739f5970cfc9940381b2b2901de63",class:"prev",icon:"arrow-left-16","aria-label":"Previous Page",onClick:()=>this.changePage(this.internalPage-1),variant:"secondary"}),t("ol",{key:"b7af29f3b08ee99b3c880c7af51b4d491630e55c"},this.visiblePages.map(((e,i)=>typeof e==="number"?t("li",{key:`page-${e}`,class:{[this.CLASS_ACTIVE]:e===this.internalPage},"data-page":e},t("span",{class:"page__button",role:"button",tabindex:"0","aria-current":e===this.internalPage?"page":undefined,"aria-label":`Page ${e}`,onClick:()=>this.changePage(e),onKeyDown:i=>(i.key==="Enter"||i.key===" ")&&this.changePage(e)},e)):t("li",{class:"ellipsis",key:`ellipsis-${i}`},t("span",{"aria-hidden":"true"},"..."))))),t("ifx-icon-button",{key:"5bdcefa2773fb49f8d7c4190a48fe5a98f6e0442",class:"next",icon:"arrow-right-16","aria-label":"Next Page",onClick:()=>this.changePage(this.internalPage+1),variant:"secondary"}))))}get el(){return a(this)}static get watchers(){return{total:["watchTotalHandler"],currentPage:["currentPageWatcher"]}}};d.style=h;export{o as ifx_chip,c as ifx_chip_item,d as ifx_pagination};
|
|
2
|
+
//# sourceMappingURL=p-4da5a2a5.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["chipCss","Chip","constructor","hostRef","this","placeholder","size","value","undefined","variant","theme","readOnly","disabled","icon","opened","selectedOptions","handleValueChange","newValue","syncSelectedOptionsWithProp","handleReadOnlyChange","closeDropdownOnOutsideClick","event","path","composedPath","chipWrapper","chip","shadowRoot","querySelector","chipDropdown","includes","toggleDropdownMenu","handleKeyDown","code","preventDefault","target","tagName","handleWrapperKeyDown","handleDropdownKeyDown","updateSelectedOptions","eventDetail","detail","previousSelection","selected","chipItems","getChipItems","forEach","chipItem","chipState","Object","assign","emitIfxChipItemSelect","find","option","filter","map","emitIfxChange","ifxChange","emit","currentSelection","name","querySelectorAll","getSelectedOptions","label","join","slice","focusChipItemAt","index","item","length","console","error","shadowItem","setTimeout","focus","focusChip","handleUnselectButtonClick","stopPropagation","itemGotUnselected","handleWrapperClick","chipitems","targetIndex","Array","from","indexOf","syncChipState","key","generateKey","count","isArray","componentWillLoad","componentDidLoad","isNestedInIfxComponent","framework","detectFramework","trackComponent","render","h","class","tabIndex","onClick","role","ariaLabel","toString","inverted","number","e","id","chipItemCss","ChipItem","updateItemSelection","parentElement","validateSelected","oldValue","emitIfxChipItemSelectEvent","getItemLabel","innerText","toggleItemSelection","ifxChipItemSelect","handleItemClick","handleItemKeyDown","handleSelectedState","onKeyDown","checked","paginationCss","Pagination","currentPage","showItemsPerPage","internalPage","internalItemsPerPage","numberOfPages","total","filteredItemsPerPage","visiblePages","CLASS_DISABLED","CLASS_ACTIVE","handlePageClick","li","currentTarget","page","parseInt","dataset","isNaN","changePage","handleResize","clearTimeout","resizeTimeout","updateVisiblePages","watchTotalHandler","calculateNumberOfPages","currentPageWatcher","newVal","Math","max","min","setItemsPerPage","selectedValue","_a","_b","newItemsPerPage","handleEventEmission","emitItemsPerPage","ifxItemsPerPageChange","select","el","addEventListener","window","initPagination","disconnectedCallback","removeEventListener","isMobile","innerWidth","totalPages","current","pages","push","buffer","start","end","i","ceil","_","filterOptionsArray","items","itemsPerPage","JSON","parse","selectedOption","Number","componentWillUpdate","prevInternalPage","componentDidUpdate","ifxPageChange","pagination","updateButtons","prev","next","classList","toggle","newPage","options","tabindex"],"sources":["src/components/chip/chip.scss?tag=ifx-chip&encapsulation=shadow","src/components/chip/chip.tsx","src/components/chip/chip-item/chip-item.scss?tag=ifx-chip-item&encapsulation=shadow","src/components/chip/chip-item/chip-item.tsx","src/components/pagination/pagination.scss?tag=ifx-pagination&encapsulation=shadow","src/components/pagination/pagination.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: inline-block;\n}\n\n.chip {\n position: relative;\n}\n\n.chip__wrapper {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: tokens.$ifxSpace100;\n box-sizing: border-box;\n border-radius: tokens.$ifxBorderRadiusRound;\n background: tokens.$ifxColorBaseWhite;\n cursor: pointer; \n transition: border 100ms ease;\n font: tokens.$ifxBodyBody04;\n\n & .icon__wrapper { \n display: flex;\n }\n\n &.outlined, &.filled-dark, &.filled-light { \n outline: 2px solid transparent;\n &:focus-visible {\n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n }\n \n &.chip__wrapper--opened {\n .wrapper__open-button {\n transform: rotate(-180deg);\n }\n }\n\n &.chip__wrapper--selected {\n .wrapper__label {\n .label__selected-options {\n font: tokens.$ifxBodyBody04;\n }\n }\n }\n }\n\n &.filled-dark, &.filled-light { \n &.chip__wrapper--selected:not(.read-only) {\n background-color: tokens.$ifxColorOcean500;\n color: white;\n &:hover { \n background-color: tokens.$ifxColorOcean600;\n }\n\n &:hover.disabled { \n background-color: tokens.$ifxColorOcean500;\n }\n }\n }\n \n &.outlined { \n border: 1px solid tokens.$ifxColorEngineering400;\n &:hover:not(.read-only) {\n border-color: tokens.$ifxColorEngineering500;\n background-color: tokens.$ifxColorEngineering100;\n }\n\n &:active:not(.read-only) { \n border-color: tokens.$ifxColorEngineering500;\n background-color: tokens.$ifxColorEngineering300;\n }\n\n &.chip__wrapper--opened {\n border: 1px solid tokens.$ifxColorOcean500;\n }\n\n &.chip__wrapper--selected {\n outline: 3px solid tokens.$ifxColorOcean500;\n border: 1px solid transparent;\n background-color: white;\n\n &:focus-visible {\n outline-offset: 0px;\n }\n &:hover:not(.read-only) { \n outline-color: tokens.$ifxColorOcean600;\n }\n\n &.read-only { \n outline: none;\n border: 1px solid black;\n }\n }\n\n &.disabled { \n outline: none;\n color: tokens.$ifxColorEngineering300;\n border: 1px solid tokens.$ifxColorEngineering300;\n &:hover { \n outline: none;\n border-color: tokens.$ifxColorEngineering300;\n background-color: white;\n }\n }\n\n &.read-only { \n border: 1px solid black;\n &:focus-visible { \n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n }\n }\n }\n\n &.filled-dark { \n background-color: tokens.$ifxColorEngineering600;\n color: white;\n\n &:hover:not(.chip__wrapper--selected, .disabled, .read-only) { \n background-color: tokens.$ifxColorEngineering500;\n }\n\n &:active:not(.chip__wrapper--selected, .disabled, .read-only) { \n background-color: tokens.$ifxColorEngineering400;\n color: black;\n }\n\n &.disabled { \n outline: none;\n color: tokens.$ifxColorEngineering300;\n &:hover:not(.chip__wrapper--selected) { \n background-color: tokens.$ifxColorEngineering600;\n }\n }\n\n &.chip__wrapper--selected { \n &.read-only { \n border: 1px solid tokens.$ifxColorEngineering400;\n }\n }\n\n &.read-only { \n border: 1px solid tokens.$ifxColorEngineering400;\n }\n }\n\n &.filled-light { \n background-color: tokens.$ifxColorEngineering200;\n\n &:hover:not(.read-only) { \n background-color: tokens.$ifxColorEngineering300;\n }\n\n &:active:not(.read-only) { \n background-color: tokens.$ifxColorEngineering400;\n }\n\n &.disabled { \n outline: none;\n color: tokens.$ifxColorEngineering300;\n &:hover:not(.chip__wrapper--selected) { \n background-color: tokens.$ifxColorEngineering200;\n }\n }\n\n &.chip__wrapper--selected { \n &.read-only { \n border: 1px solid black;\n }\n }\n\n &.read-only { \n border: 1px solid black;\n }\n }\n \n &.chip__wrapper--small {\n padding: tokens.$ifxSpace50 tokens.$ifxSpace100;\n height: tokens.$ifxSize300;\n }\n\n &.chip__wrapper--medium {\n padding: tokens.$ifxSpace50 tokens.$ifxSpace150;\n height: tokens.$ifxSize350;\n }\n \n &.chip__wrapper--large {\n padding: tokens.$ifxSpace100 tokens.$ifxSpace150;\n height: tokens.$ifxSize450;\n }\n}\n\n.wrapper__label {\n display: inline-flex;\n align-items: center;\n gap: tokens.$ifxSpace50;\n\n .label__selected-options {\n font: tokens.$ifxBodyBodySemibold04;\n }\n}\n\n.wrapper__open-button {\n display:flex;\n align-items: center;\n}\n\n.wrapper__unselect-button {\n display:flex;\n align-items: center;\n}\n\n.chip__dropdown {\n position: absolute;\n z-index: 1;\n box-shadow: 0px 6px 9px 0px #1D1D1D1A;\n border: 1px solid tokens.$ifxColorEngineering200;\n border-radius: tokens.$ifxBorderRadius12;\n padding: tokens.$ifxSpace100 0;\n min-width: 222px;\n background-color: tokens.$ifxColorBaseWhite;\n}\n","import { h, Component, Element, Event, EventEmitter, Listen, Prop, State, Watch } from '@stencil/core';\nimport { ChipItemSelectEvent } from './interfaces';\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-chip',\n styleUrl: 'chip.scss',\n shadow: true\n})\nexport class Chip {\n @Element() chip: HTMLIfxChipElement;\n\n @Event() ifxChange: EventEmitter<{ previousSelection: Array<ChipItemSelectEvent>, currentSelection: Array<ChipItemSelectEvent>, name: string }>;\n @Prop() placeholder: string = '';\n @Prop() size: 'small' | 'medium' | 'large' = 'medium';\n @Prop({ mutable: true }) value: Array<string> | string = undefined;\n @Prop() variant: 'single' | 'multi' = 'single';\n @Prop() theme: 'outlined' | 'filled-light' | 'filled-dark' = 'outlined';\n @Prop() readOnly: boolean = false;\n @Prop() ariaLabel: string | null;\n @Prop() disabled: boolean = false;\n @Prop() icon: string = \"\";\n\n @State() opened: boolean = false;\n @State() selectedOptions: Array<ChipItemSelectEvent> = [];\n\n @Watch('value')\n handleValueChange(newValue: Array<string> | string) {\n this.syncSelectedOptionsWithProp(newValue);\n }\n\n @Watch('readOnly')\n handleReadOnlyChange(newValue: boolean) {\n if (newValue) {\n this.opened = false;\n }\n }\n\n @Listen('mousedown', { target: 'document' })\n closeDropdownOnOutsideClick(event: MouseEvent) {\n const path = event.composedPath();\n const chipWrapper: HTMLElement = this.chip.shadowRoot.querySelector('.chip__wrapper');\n const chipDropdown: HTMLElement = this.chip.shadowRoot.querySelector('.chip__dropdown');\n if (!path.includes(chipDropdown) && !path.includes(chipWrapper) && this.opened) {\n this.toggleDropdownMenu();\n }\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n // override behavior of all keys except Tab. Users should be able to tab out of the component.\n if (event.code !== 'Tab') {\n event.preventDefault(); \n }\n\n if ((event.target as HTMLElement).tagName === 'IFX-CHIP') {\n this.handleWrapperKeyDown(event);\n } else if ((event.target as HTMLElement).tagName === 'IFX-CHIP-ITEM') {\n this.handleDropdownKeyDown(event);\n }\n }\n\n @Listen('ifxChipItemSelect')\n updateSelectedOptions(event: CustomEvent<ChipItemSelectEvent>) {\n const eventDetail: ChipItemSelectEvent = event.detail;\n const previousSelection: Array<ChipItemSelectEvent> = [...this.selectedOptions];\n\n if (this.variant !== 'multi') {\n if (eventDetail.selected) {\n this.opened = false;\n const chipItems: NodeList = this.getChipItems();\n chipItems.forEach((chipItem: HTMLIfxChipItemElement) => {\n if (chipItem.selected && chipItem !== event.target) {\n chipItem.chipState = {\n ...chipItem.chipState,\n emitIfxChipItemSelect: false,\n };\n chipItem.selected = false;\n }\n });\n this.selectedOptions = [eventDetail];\n } else {\n this.selectedOptions = [];\n }\n this.value = this.selectedOptions[0] ? this.selectedOptions[0].value : undefined;\n } else {\n if (eventDetail.selected) {\n // Prevent duplicate entries\n if (!this.selectedOptions.find(option => option.value === eventDetail.value)) {\n this.selectedOptions = [...this.selectedOptions, eventDetail];\n }\n } else {\n this.selectedOptions = this.selectedOptions.filter((option) => option.value !== eventDetail.value);\n }\n this.value = this.selectedOptions.map((option) => option.value);\n }\n\n if (eventDetail.emitIfxChange) {\n this.ifxChange.emit({\n previousSelection: previousSelection,\n currentSelection: this.selectedOptions,\n name: this.placeholder\n });\n }\n }\n\n getChipItems(): NodeList {\n return this.chip.querySelectorAll('ifx-chip-item');\n }\n\n getSelectedOptions(): string {\n if (this.variant !== 'multi') {\n return this.selectedOptions.map(option => option.label).join('');\n }\n return this.selectedOptions.slice(0, 2).map(option => option.label).join(', ');\n }\n\n toggleDropdownMenu() {\n if (this.readOnly) return;\n this.opened = !this.opened;\n }\n\n /**\n * Focuses the chip item at the specified index.\n * @param index the index of the chip item to focus. -1 will focus the last chip item.\n */\n focusChipItemAt(index: number = 0) {\n this.opened = true;\n const chipItems: NodeList = this.getChipItems();\n let item: HTMLIfxChipItemElement;\n \n if (index === -1) {\n item = chipItems.item(chipItems.length - 1) as HTMLIfxChipItemElement;\n } else if (index >= 0 && index < chipItems.length) {\n item = chipItems.item(index) as HTMLIfxChipItemElement;\n } else {\n console.error(`Invalid index: ${index}`);\n return;\n }\n\n const shadowItem = item.shadowRoot.querySelector('.chip-item') as HTMLDivElement;\n if (shadowItem) {\n // Delay needed for the shadow item to be rendered.\n setTimeout(() => {\n shadowItem.focus();\n }, 1);\n }\n }\n\n focusChip() {\n const chipWrapper: HTMLElement = this.chip.shadowRoot.querySelector('.chip__wrapper');\n chipWrapper.focus();\n }\n\n handleUnselectButtonClick(event: MouseEvent) {\n event.stopPropagation();\n this.opened = false;\n\n let itemGotUnselected = false;\n const chipItems: NodeList = this.getChipItems();\n chipItems.forEach((chipItem: HTMLIfxChipItemElement) => {\n if (chipItem.selected) {\n itemGotUnselected = true;\n chipItem.chipState = {\n ...chipItem.chipState,\n emitIfxChipItemSelect: false,\n }\n chipItem.selected = false;\n }\n });\n\n /* Emit event only if at least one item was unselected. */\n if (itemGotUnselected) {\n const previousSelection: Array<ChipItemSelectEvent> = this.selectedOptions;\n this.selectedOptions = [];\n this.value = [];\n this.ifxChange.emit({\n previousSelection: previousSelection,\n currentSelection: [],\n name: this.placeholder\n });\n }\n }\n\n handleWrapperClick() {\n if (!this.readOnly) {\n this.toggleDropdownMenu();\n }\n }\n\n handleWrapperKeyDown(event: KeyboardEvent) {\n // Keymap oriented at https://www.w3.org/WAI/ARIA/apg/patterns/combobox/#keyboard_interaction\n if (this.readOnly) return;\n\n if (!this.opened) {\n switch (event.code) {\n case 'Space':\n case 'Enter':\n case 'ArrowDown':\n this.focusChipItemAt(0);\n break;\n case 'ArrowUp':\n this.focusChipItemAt(-1);\n break;\n }\n } else {\n switch (event.code) {\n case 'Escape':\n this.opened = false;\n this.focusChip();\n break;\n }\n }\n }\n\n handleDropdownKeyDown(event: KeyboardEvent) {\n let chipitems = this.getChipItems();\n\n let targetIndex = Array.from(chipitems).indexOf(event.target as HTMLIfxChipItemElement);\n if (targetIndex === -1) {\n console.error('Target not found in chip items');\n return;\n }\n\n switch (event.code) {\n case 'ArrowDown':\n if (targetIndex === chipitems.length - 1) break;\n this.focusChipItemAt(targetIndex + 1);\n break;\n case 'ArrowUp':\n if (targetIndex === 0) break;\n this.focusChipItemAt( targetIndex - 1);\n break;\n case 'Escape':\n this.opened = false;\n this.focusChip();\n break;\n case 'Space':\n // selection is handled by the chip-item component\n if (this.variant === 'single') {\n // only close dropdown if single select\n this.opened = false;\n this.focusChip();\n }\n break;\n case 'Enter':\n // selection is handled by the chip-item component\n this.opened = false;\n this.focusChip();\n break;\n }\n }\n\n syncChipState() {\n const chipItems: NodeList = this.getChipItems();\n let key: number = 0;\n chipItems.forEach((chipItem: HTMLIfxChipItemElement) => {\n chipItem.chipState = {\n emitIfxChipItemSelect: true,\n size: this.size ? this.size : 'medium',\n variant: (this.variant === 'multi' ? 'multi' : 'single'),\n key: key++\n };\n });\n }\n\n syncSelectedOptionsWithProp(newValue: Array<string> | string) {\n // Clear old selected options\n this.selectedOptions = [];\n\n const generateKey = (() => {\n let count = 0;\n return () => count++;\n })();\n\n if (Array.isArray(newValue)) {\n this.selectedOptions = newValue.map(value => ({\n value,\n label: value,\n selected: true,\n key: generateKey(),\n emitIfxChange: true\n }));\n } else if (typeof newValue === 'string') {\n this.selectedOptions = [{\n value: newValue,\n label: newValue,\n selected: true,\n key: generateKey(),\n emitIfxChange: true\n }];\n }\n\n this.syncChipState();\n }\n\n componentWillLoad() {\n this.syncSelectedOptionsWithProp(this.value);\n }\n\n async componentDidLoad() { \n if(!isNestedInIfxComponent(this.chip)) { \n const framework = detectFramework();\n trackComponent('ifx-chip', await framework)\n }\n }\n\n render() {\n return (\n <div class='chip'>\n <div class={`chip__wrapper chip__wrapper--${this.size ? this.size : 'medium'}\n chip__wrapper--${this.variant === 'multi' ? 'multi' : 'single'}\n ${this.opened && !this.readOnly ? 'chip__wrapper--opened' : ''}\n ${this.selectedOptions.length ? 'chip__wrapper--selected' : ''}\n ${this.theme ? this.theme : 'outlined'}\n ${this.disabled ? 'disabled' : \"\"}\n ${this.readOnly ? 'read-only' : \"\"}`}\n tabIndex={0}\n onClick={!this.readOnly && !this.disabled ? () => { this.handleWrapperClick() } : undefined}\n role='combobox'\n aria-label={this.ariaLabel}\n aria-value={this.getSelectedOptions()}\n aria-haspopup={!this.readOnly ? 'listbox' : undefined}\n aria-expanded={!this.readOnly ? this.opened.toString() : undefined}\n aria-controls={!this.readOnly ? 'dropdown' : undefined}\n aria-readonly={this.readOnly ? 'true' : undefined}\n aria-multiselectable={this.variant === 'multi' ? 'true' : undefined}\n >\n \n {this.icon && \n <div class=\"icon__wrapper\">\n <ifx-icon icon={this.icon}></ifx-icon>\n </div>}\n\n <div class='wrapper__label'>\n {\n (this.selectedOptions.length === 0) && `${this.placeholder}`\n }\n\n {\n (this.selectedOptions.length !== 0 && (this.variant === 'multi') && this.placeholder !== '') &&\n `${this.placeholder}:`\n }\n\n {\n (this.selectedOptions.length !== 0) &&\n <div class='label__selected-options'>\n {this.getSelectedOptions()}\n </div>\n }\n\n {\n (this.selectedOptions.length > 2 && this.variant === 'multi') &&\n <ifx-indicator variant='number' inverted={this.theme === 'outlined' ? false : true} number={this.selectedOptions.length - 2}></ifx-indicator>\n }\n </div>\n\n {\n !this.readOnly && (this.variant !== 'multi' || (this.variant === 'multi' && this.selectedOptions.length === 0)) &&\n <div class='wrapper__open-button'>\n <ifx-icon key={1} icon={`chevron-down-16`} />\n </div>\n }\n\n {\n ((this.selectedOptions.length >= 1) && this.variant === 'multi') &&\n <div class='wrapper__unselect-button' onClick={!this.readOnly && !this.disabled ? (e) => { this.handleUnselectButtonClick(e) } : undefined}>\n <ifx-icon key={2} icon={`cross16`} />\n </div>\n }\n\n </div>\n\n {\n this.opened && !this.readOnly &&\n <div id='dropdown' role='listbox' class='chip__dropdown'>\n <slot />\n </div>\n }\n </div>\n );\n }\n}\n","@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../../global/font.scss\";\n\n.chip-item {\n display: flex;\n align-items: center;\n gap: tokens.$ifxSpace100;\n \n padding: tokens.$ifxSpace100 tokens.$ifxSpace200;\n \n user-select: none;\n \n transition: all 100ms ease;\n transition-property: background, color;\n \n &:hover {\n cursor: pointer;\n \n background-color: tokens.$ifxColorEngineering200;\n }\n \n &:active {\n background-color: tokens.$ifxColorEngineering300;\n }\n\n &:focus {\n outline: 2px solid tokens.$ifxColorOcean500;\n }\n \n &.chip-item--large {\n font: tokens.$ifxBodyBody03;\n }\n \n &.chip-item--small {\n font: tokens.$ifxBodyBody04;\n }\n\n &.chip-item--selected {\n color: tokens.$ifxColorOcean500;\n\n .chip-item__selected-indicator {\n display: block;\n }\n }\n}\n\n.chip-item__selected-indicator {\n display: none;\n \n margin-left: auto;\n}\n\n","import { h,\n Component,\n Element,\n Event,\n EventEmitter, \n Listen,\n Prop, \n Watch } from '@stencil/core';\nimport { ChipItemSelectEvent, ChipState } from '../interfaces';\n\n@Component({\ntag: 'ifx-chip-item',\nstyleUrl: 'chip-item.scss',\nshadow: true\n})\n\nexport class ChipItem {\n@Element() chipItem: HTMLIfxChipItemElement;\n\n@Event({ composed: false }) ifxChipItemSelect: EventEmitter<ChipItemSelectEvent>;\n\n@Prop() value: string = undefined;\n@Prop() chipState: ChipState = { emitIfxChipItemSelect: true, variant: 'multi', size: 'large' }; \n@Prop({ mutable: true, reflect: true }) selected: boolean = false;\n\n@Listen('ifxChipItemSelect', { target: 'body' })\nupdateItemSelection(event: CustomEvent<ChipItemSelectEvent>) {\n if (this.chipState.variant === 'single') {\n const target = event.target as HTMLIfxChipItemElement;\n /* Also making sure chip items are from the same group (parent) while unselecting. */\n if (this.chipItem !== target && this.chipItem.parentElement === target.parentElement) {\n this.selected = false;\n }\n }\n} \n\n@Watch('selected')\nvalidateSelected(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n /* Do not emit if ChipState does not allow. */\n if (this.chipState.emitIfxChipItemSelect){\n this.emitIfxChipItemSelectEvent();\n } else {\n this.chipState.emitIfxChipItemSelect = true;\n }\n }\n} \n\ngetItemLabel(): string {\n return this.chipItem.innerText as string;\n}\n\ntoggleItemSelection() {\n this.selected = !this.selected;\n}\n \n\nemitIfxChipItemSelectEvent(emitIfxChange: boolean = true) {\n this.ifxChipItemSelect.emit({ emitIfxChange: emitIfxChange,\n key: this.chipState.key,\n label: this.getItemLabel(), \n selected: this.selected, \n value: this.value });\n}\n\nhandleItemClick() {\n this.toggleItemSelection();\n}\n\nhandleItemKeyDown(event: KeyboardEvent) {\n if (event.code === 'Enter' || event.code === 'Space') {\n this.toggleItemSelection();\n }\n}\n\nhandleSelectedState() {\n if (this.selected) {\n this.emitIfxChipItemSelectEvent(false);\n }\n}\n\n\ncomponentWillLoad() {\n /* Propogating the selected state to the Chip (Parent) component if it is set. */\n this.handleSelectedState();\n}\n\nrender() {\n return (\n <div class={`chip-item chip-item--${this.chipState.size} \n chip-item--${(this.selected && this.chipState.variant) === 'single' ? 'selected' : ''}`} \n tabIndex={0}\n onClick={() => {this.handleItemClick()}}\n onKeyDown={(e) => {this.handleItemKeyDown(e)}}\n role=\"option\"\n aria-selected={this.selected.toString()}> \n {/* Checkbox; renders only in 'multi' variant. */}\n { \n this.chipState.variant === 'multi' &&\n <ifx-checkbox checked={this.selected}\n tabIndex={-1} \n size='s'>\n </ifx-checkbox>\n }\n\n <div class='chip-item__label'> <slot /> </div>\n\n {/* Selected indicator only visible in 'single' variant. */}\n <div class='chip-item__selected-indicator'> \n <ifx-icon icon='check-16'> </ifx-icon> \n </div>\n\n </div>\n );\n}\n}","@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: inline-flex;\n}\n\n.container {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n gap: 32px;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n flex-wrap: wrap;\n\n & .items__per-page-wrapper {\n display: flex;\n align-items: center;\n gap: 16px;\n\n & .items__per-page-label {\n color: #1D1D1D;\n font-size: 14px;\n font-style: normal;\n font-weight: 600;\n line-height: 20px;\n }\n\n & .items__per-page-field {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n\n & ifx-select {\n width: 92px;\n }\n }\n }\n\n & .items__total-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n\n & .items__total-button {\n display: flex;\n width: 40px;\n height: 40px;\n justify-content: center;\n align-items: center;\n border-radius: 100px;\n border: 1px solid #BFBBBB;\n background: #FFF;\n }\n\n & .page__numbers-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n\n & .page__number-item {\n display: flex;\n padding: 6px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 10px;\n border-radius: 100px;\n\n &.active {\n background-color: #0A8276;\n\n & span {\n color: #fff;\n }\n }\n\n &:hover {\n cursor: pointer;\n }\n\n &:hover:not(.active) {\n background-color: #ddd;\n\n }\n\n &:active:not(.active) {\n background-color: #575352;\n }\n\n & span {\n display: flex;\n width: 16px;\n height: 16px;\n flex-direction: column;\n justify-content: center;\n color: #1D1D1D;\n text-align: center;\n font-size: 13px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n }\n }\n }\n }\n}\n\n\n.pagination {\n display: flex;\n\n & ifx-icon-button:first-of-type {\n margin-right: 12px;\n }\n\n & ifx-icon-button:last-of-type {\n margin-left: 12px;\n }\n}\n\n.page__button {\n padding: 8px;\n border-radius: 100px;\n}\n\nol {\n list-style-type: none;\n padding: 0;\n margin: 0;\n display: inline-flex;\n align-items: center;\n gap: 12px;\n}\n\nli {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n border-radius: 100px;\n\n &:hover:not(.active) {\n & page__button {\n background-color: #EEEDED;\n }\n }\n\n &:active:not(.active) {\n & .page__button {\n background-color: #575352;\n color: #fff;\n }\n }\n\n &.active {\n background-color: #0A8276;\n\n & .page__button {\n color: #fff;\n }\n }\n\n &:hover {\n cursor: pointer;\n }\n\n & .page__button {\n text-decoration: none;\n display: flex;\n width: 16px;\n height: 16px;\n flex-direction: column;\n justify-content: center;\n color: #1D1D1D;\n text-align: center;\n font-size: 13px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n align-items: center;\n }\n}\n\n.prev,\n.next {\n &.disabled {\n cursor: default;\n\n &:hover {\n cursor: default;\n text-decoration: none;\n }\n }\n}\n\n.prev {\n margin-right: 2.5px;\n}\n\n.next {\n margin-left: 2.5px;\n}\n\n@media (max-width: tokens.$ifxBreakpointM) {\n .container {\n gap: tokens.$ifxSpace200;\n justify-content: left;\n\n .items__total-wrapper {\n .pagination {\n ol {\n gap: tokens.$ifxSpace150;\n }\n }\n }\n }\n}\n\n@media (max-width: 374px) {\n .pagination {\n .ellipsis + .active {\n margin-left: tokens.$ifxSpace100;\n }\n\n .active + .ellipsis {\n margin-left: tokens.$ifxSpace100;\n }\n }\n}\n","import { Component, h, Element, Event, EventEmitter, Prop, State, Listen, Watch } 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-pagination',\n styleUrl: 'pagination.scss',\n shadow: true\n})\nexport class Pagination {\n @Element() el: HTMLElement;\n @Event() ifxPageChange: EventEmitter;\n @Event() ifxItemsPerPageChange: EventEmitter;\n @Prop() currentPage: number = 1;\n @Prop() showItemsPerPage: boolean = true;\n @State() internalPage: number = 1;\n @State() internalItemsPerPage: number = 10;\n @State() numberOfPages: number[] = [];\n @Prop() total: number = 1;\n @Prop() itemsPerPage: any[] | string;\n @State() filteredItemsPerPage: any[] = [];\n @State() visiblePages: (number | string)[] = [];\n\n private CLASS_DISABLED = \"disabled\";\n private CLASS_ACTIVE = \"active\";\n private prevInternalPage: number;\n\n @Watch('total')\n watchTotalHandler() {\n this.calculateNumberOfPages();\n this.updateVisiblePages();\n }\n\n @Watch('currentPage')\n currentPageWatcher(newVal: number) {\n this.internalPage = Math.max(1, Math.min(newVal, this.numberOfPages.length));\n this.calculateNumberOfPages();\n this.updateVisiblePages();\n }\n\n @Listen('ifxSelect')\n setItemsPerPage(e: CustomEvent) {\n const selectedValue = e.detail?.value || e.detail?.label;\n const newItemsPerPage = parseInt(selectedValue) || 10;\n\n if (newItemsPerPage === this.internalItemsPerPage) {\n return;\n }\n\n this.internalItemsPerPage = newItemsPerPage;\n this.internalPage = 1;\n this.calculateNumberOfPages();\n this.updateVisiblePages();\n this.handleEventEmission();\n }\n\n emitItemsPerPage(e) {\n this.ifxItemsPerPageChange.emit((e as any).detail.label)\n }\n\n async componentDidLoad() {\n if (this.showItemsPerPage) {\n const select = this.el.shadowRoot.querySelector('#itemsPerPageSelect');\n if(select) {\n select.addEventListener('ifxSelect', (e) => this.emitItemsPerPage(e))\n }\n }\n\n // Add resize listener to update pagination on screen size changes\n window.addEventListener('resize', this.handleResize);\n\n if(!isNestedInIfxComponent(this.el)) {\n const framework = detectFramework();\n trackComponent('ifx-pagination', await framework)\n }\n this.initPagination();\n }\n\n disconnectedCallback() {\n if (this.showItemsPerPage) {\n const select = this.el.shadowRoot.querySelector('#itemsPerPageSelect');\n if (select) {\n select.removeEventListener('ifxSelect', (e) => this.emitItemsPerPage(e));\n }\n }\n\n // Remove resize listener\n window.removeEventListener('resize', this.handleResize);\n\n // Clear any pending resize timeout\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n }\n\n updateVisiblePages() {\n // Check if screen is mobile (< 375px)\n const isMobile = window.innerWidth < 375;\n const totalPages = this.numberOfPages.length;\n const current = this.internalPage;\n let pages: (number | string)[] = [];\n\n if (isMobile) {\n // Mobile logic: maximum 5 elements\n if (totalPages <= 5) {\n pages = [...this.numberOfPages];\n } else {\n // Always show first page\n pages.push(1);\n\n if (current <= 2) {\n // Show: 1 2 3 … 10 (for pages 1 and 2)\n pages.push(2, 3, '...', totalPages);\n } else if (current >= totalPages - 1) {\n // Show: 1 … 23 24 25 (for last 2 pages only)\n pages.push('...', totalPages - 2, totalPages - 1, totalPages);\n } else {\n // Show: 1 … 5 … 10 (for middle pages, including page 3 and third-to-last page)\n pages.push('...', current, '...', totalPages);\n }\n }\n } else {\n // Desktop logic: maximum 7 elements\n const buffer = 2;\n\n if (totalPages <= 7) {\n pages = [...this.numberOfPages];\n } else {\n // Always show first page\n pages.push(1);\n\n // Determine the range around current page\n let start = Math.max(2, current - buffer);\n let end = Math.min(totalPages - 1, current + buffer);\n\n // Adjust range to ensure we show enough pages\n // If we're close to the beginning, extend the end\n if (current <= 4) {\n start = 2;\n end = Math.min(totalPages - 1, 5);\n }\n // If we're close to the end, extend the start\n else if (current >= totalPages - 3) {\n start = Math.max(2, totalPages - 4);\n end = totalPages - 1;\n }\n // For middle pages, show current +/- 1\n else {\n start = current - 1;\n end = current + 1;\n }\n\n // Add ellipsis before the range if there's a gap\n if (start > 2) {\n pages.push('...');\n }\n\n // Add the range of pages\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // Add ellipsis after the range if there's a gap\n if (end < totalPages - 1) {\n pages.push('...');\n }\n\n // Always show last page\n pages.push(totalPages);\n }\n }\n\n this.visiblePages = pages;\n }\n\n calculateNumberOfPages() {\n const totalPages = Math.ceil(this.total / this.internalItemsPerPage);\n this.numberOfPages = Array.from({ length: totalPages }, (_, i) => i + 1);\n this.internalPage = Math.max(1, Math.min(this.currentPage, totalPages));\n }\n\n filterOptionsArray() {\n const items = typeof this.itemsPerPage === 'string' ?\n JSON.parse(this.itemsPerPage) : this.itemsPerPage;\n this.filteredItemsPerPage = items.map(item => ({\n ...item,\n label: item.label || item.value\n }));\n }\n\n componentWillLoad() {\n this.filterOptionsArray();\n\n const selectedOption = this.filteredItemsPerPage.find(option => option.selected);\n if (selectedOption) {\n this.internalItemsPerPage = Number(selectedOption.value);\n } else if (this.filteredItemsPerPage.length > 0) {\n this.internalItemsPerPage = Number(this.filteredItemsPerPage[0].value);\n }\n\n this.calculateNumberOfPages();\n this.internalPage = Math.max(1, Math.min(this.currentPage, this.numberOfPages.length));\n this.updateVisiblePages();\n }\n\n componentWillUpdate() {\n if (this.prevInternalPage !== this.internalPage) {\n this.updateVisiblePages();\n this.prevInternalPage = this.internalPage;\n }\n }\n\n componentDidUpdate() {\n this.initPagination();\n }\n\n handleEventEmission() {\n this.ifxPageChange.emit({\n currentPage: this.internalPage,\n totalPages: this.numberOfPages.length,\n itemsPerPage: this.internalItemsPerPage\n });\n }\n\n initPagination() {\n const pagination = this.el.shadowRoot.querySelector('.pagination');\n if (!pagination) return;\n\n const updateButtons = () => {\n const prev = pagination.querySelector<HTMLButtonElement>('.prev');\n const next = pagination.querySelector<HTMLButtonElement>('.next');\n if (prev) {\n prev.disabled = this.internalPage === 1;\n prev.classList.toggle(this.CLASS_DISABLED, this.internalPage === 1);\n }\n if (next) {\n next.disabled = this.internalPage === this.numberOfPages.length;\n next.classList.toggle(this.CLASS_DISABLED, this.internalPage === this.numberOfPages.length);\n }\n };\n\n pagination.querySelectorAll('li').forEach(li => {\n li.removeEventListener('click', this.handlePageClick);\n li.addEventListener('click', this.handlePageClick);\n });\n\n updateButtons();\n }\n\n private handlePageClick = (e: Event) => {\n const li = e.currentTarget as HTMLLIElement;\n const page = parseInt(li.dataset.page);\n if (!isNaN(page)) this.changePage(page);\n };\n\n private handleResize = () => {\n // Debounce resize events to prevent excessive calls\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.updateVisiblePages();\n }, 100);\n };\n\n private resizeTimeout: any;\n\n changePage(newPage: number) {\n newPage = Math.max(1, Math.min(newPage, this.numberOfPages.length));\n if (newPage === this.internalPage) return;\n\n this.internalPage = newPage;\n this.handleEventEmission();\n this.initPagination();\n }\n\n render() {\n return (\n <div class=\"container\">\n {this.showItemsPerPage && (\n <div class=\"items__per-page-wrapper\">\n <div class=\"items__per-page-label\">Results per Page</div>\n <div class=\"items__per-page-field\">\n <ifx-select\n id='itemsPerPageSelect'\n placeholder='false'\n show-search='false'\n value={undefined}\n disabled={false}\n error={false}\n size=\"s\"\n options={this.filteredItemsPerPage}\n placeholder-value=\"Select\"\n ></ifx-select>\n </div>\n </div>\n )}\n\n <div class=\"items__total-wrapper\">\n <div class=\"pagination\">\n <ifx-icon-button\n class=\"prev\"\n icon=\"arrow-left-16\"\n aria-label='Previous Page'\n onClick={() => this.changePage(this.internalPage - 1)}\n variant=\"secondary\"\n ></ifx-icon-button>\n\n <ol>\n {this.visiblePages.map((page, i) => typeof page === 'number' ? (\n <li\n key={`page-${page}`}\n class={{ [this.CLASS_ACTIVE]: page === this.internalPage }}\n data-page={page}\n >\n <span \n class='page__button'\n role=\"button\"\n tabindex=\"0\"\n aria-current={page === this.internalPage ? \"page\" : undefined}\n aria-label={`Page ${page}`}\n onClick={() => this.changePage(page)}\n onKeyDown={(e) => (e.key === 'Enter' || e.key === ' ') && this.changePage(page)}\n >\n {page}\n </span>\n </li>\n ) : (\n <li class=\"ellipsis\" key={`ellipsis-${i}`}>\n <span aria-hidden=\"true\">...</span>\n </li>\n ))}\n </ol>\n\n <ifx-icon-button\n class=\"next\"\n icon=\"arrow-right-16\"\n aria-label='Next Page'\n onClick={() => this.changePage(this.internalPage + 1)}\n variant=\"secondary\"\n ></ifx-icon-button>\n </div>\n </div>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as s,c as i,h as e,a as t}from"./p-PqnYwNKt.js";import{d as n,t as o}from"./p-DcmcuUOA.js";import{i as r}from"./p-Bw2fh5LT.js";import{c as h}from"./p-DMLRPGid.js";import"./p-B85MJLTf.js";const a=':root {\n --ifx-font-family: "Source Sans 3", "Arial, sans-serif";\n}\n\n:host {\n display: flex;\n}\n\n.search-field {\n box-sizing: border-box;\n background-color: #FFFFFF;\n width: 100%;\n font-family: var(--ifx-font-family);\n position: relative;\n}\n.search-field .search-field__wrapper {\n box-sizing: border-box;\n height: 40px;\n display: flex;\n align-items: center;\n border: 1px solid #8d8786;\n border-radius: 1px;\n padding: 8px 16px;\n gap: 12px;\n flex: none;\n order: 0;\n align-self: stretch;\n flex-grow: 0;\n position: relative;\n width: 100%;\n outline: none;\n}\n.search-field .search-field__wrapper:focus-visible:not(.disabled) {\n outline: 2px solid #0A8276;\n outline-offset: 2px;\n}\n.search-field .search-field__wrapper.search-field__wrapper-s {\n height: 36px;\n}\n.search-field .search-field__wrapper:hover:not(.focused, :focus) {\n border: 1px solid #3c3a39;\n}\n.search-field .search-field__wrapper .delete-icon {\n outline: 1px solid transparent;\n right: 12px;\n cursor: pointer;\n}\n.search-field .search-field__wrapper .delete-icon:focus-visible {\n outline: 2px solid #0A8276;\n outline-offset: 1px;\n}\n.search-field .search-field__wrapper input[type=text] {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n color: #8d8786;\n border: none;\n width: 100%;\n outline: none;\n height: 16px;\n}\n.search-field .search-field__wrapper input[type=text]:focus {\n outline: none;\n color: #1d1d1d;\n}\n.search-field .search-field__wrapper input[type=text]:disabled {\n background: #BFBBBB;\n color: #FFFFFF;\n}\n.search-field .search-field__wrapper input[type=text]:disabled::placeholder {\n color: #FFFFFF;\n}\n.search-field .search-field__wrapper.disabled {\n background: #BFBBBB;\n border: none;\n color: #FFFFFF;\n}\n.search-field .search-field__wrapper.disabled:hover {\n border: none;\n outline: none;\n}\n.search-field .search-field__wrapper.disabled .delete-icon {\n cursor: default;\n}\n.search-field .search-field__wrapper.disabled .delete-icon:focus-visible {\n outline: 1px solid transparent;\n}\n.search-field .suggestions-dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n background: #FFFFFF;\n margin-top: 4px;\n border: 1px solid #EEEDED;\n box-shadow: 0px 6px 9px 0px rgba(29, 29, 29, 0.1);\n z-index: 1000;\n max-height: 300px;\n overflow-y: auto;\n container-type: inline-size;\n}\n.search-field .suggestions-dropdown .suggestions-header {\n font-family: Source Sans 3;\n font-size: 0.8125rem;\n font-weight: 600;\n line-height: 1.25rem;\n letter-spacing: 0.25em;\n text-transform: uppercase;\n color: #575352;\n border-bottom: 1px solid #EEEDED;\n padding: 12px 16px;\n}\n.search-field .suggestions-dropdown .suggestion-item {\n padding: 12px 16px;\n cursor: pointer;\n transition: background-color 0.2s ease;\n}\n.search-field .suggestions-dropdown .suggestion-item:last-child {\n border-bottom: none;\n}\n.search-field .suggestions-dropdown .suggestion-item:hover, .search-field .suggestions-dropdown .suggestion-item--selected {\n background-color: #EEEDED;\n}\n.search-field .suggestions-dropdown .suggestion-item .suggestion-content {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.search-field .suggestions-dropdown .suggestion-item .suggestion-content .suggestion-icon {\n color: #575352;\n flex-shrink: 0;\n}\n.search-field .suggestions-dropdown .suggestion-item .suggestion-content .suggestion-icon--history {\n color: #575352;\n}\n.search-field .suggestions-dropdown .suggestion-item .suggestion-content .suggestion-text {\n flex: 1;\n display: flex;\n align-items: center;\n min-width: 0;\n}\n.search-field .suggestions-dropdown .suggestion-item .suggestion-content .suggestion-text .suggestion-main-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-shrink: 1;\n min-width: 0;\n}\n.search-field .suggestions-dropdown .suggestion-item .suggestion-content .suggestion-text .suggestion-scope {\n color: #8D8786;\n flex-shrink: 0;\n white-space: nowrap;\n margin-left: 2px;\n font-weight: 600;\n font-size: 0.75rem;\n}\n@container (max-width: 320px) {\n .search-field .suggestions-dropdown .suggestion-item .suggestion-content .suggestion-text {\n flex-direction: column;\n align-items: flex-start;\n }\n .search-field .suggestions-dropdown .suggestion-item .suggestion-content .suggestion-text .suggestion-main-text {\n width: 100%;\n max-width: 100%;\n }\n .search-field .suggestions-dropdown .suggestion-item .suggestion-content .suggestion-text .suggestion-scope {\n margin-left: 0;\n margin-top: 0;\n width: 100%;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n flex-shrink: 1;\n }\n}\n.search-field .suggestions-dropdown .suggestion-item .suggestion-content .suggestion-count {\n color: #8D8786;\n margin-left: auto;\n flex-shrink: 0;\n}\n.search-field .suggestions-dropdown .suggestion-item .suggestion-content .suggestion-delete-icon {\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.2s ease, visibility 0.2s ease;\n cursor: pointer;\n margin-left: auto;\n flex-shrink: 0;\n color: #575352;\n}\n.search-field .suggestions-dropdown .suggestion-item .suggestion-content .suggestion-delete-icon:hover {\n color: #3C3A39;\n}\n.search-field .suggestions-dropdown .suggestion-item:hover .suggestion-delete-icon {\n opacity: 1;\n visibility: visible;\n}\n.search-field .search-field__wrapper.dropdown-open {\n border-radius: 1px 1px 0 0;\n border-color: #0A8276;\n}';const l=class{constructor(e){s(this,e);this.ifxInput=i(this,"ifxInput",7);this.ifxSuggestionRequested=i(this,"ifxSuggestionRequested",7);this.ifxSuggestionSelected=i(this,"ifxSuggestionSelected",7);this.ifxFocus=i(this,"ifxFocus",7);this.ifxBlur=i(this,"ifxBlur",7);this.value="";this.suggestions=[];this.showSuggestions=false;this.maxSuggestions=10;this.maxHistoryItems=5;this.enableHistory=true;this.historyKey="ifx-search-history";this.historyHeaderText="Recent Searches";this.ariaLabel="Search Field";this.deleteIconAriaLabel="Clear search";this.historyDeleteAriaLabel="Remove from history";this.dropdownAriaLabel="Search suggestions and history";this.suggestionAriaLabel="Search suggestion";this.historyItemAriaLabel="Search history item";this.showDropdown=false;this.filteredSuggestions=[];this.selectedSuggestionIndex=-1;this.searchHistory=[];this.showDeleteIcon=false;this.showDeleteIconInternalState=false;this.disabled=false;this.size="l";this.isFocused=false;this.placeholder="Search...";this.autocomplete="off";this.maxlength=null;this.focusEmitted=false;this.handleInput=()=>{const s=this.inputElement.value;this.value=s;this.ifxInput.emit(this.value);if(this.showSuggestions){this.showDropdown=true;this.selectedSuggestionIndex=-1;this.requestSuggestions(s)}};this.handleDelete=()=>{if(!this.disabled){this.inputElement.value="";this.value="";this.ifxInput.emit(this.value);this.hideDropdown()}};this.handleSearch=()=>{if(this.value.trim()&&this.enableHistory){if(this.filteredSuggestions.length>0){this.addToHistory(this.value)}}this.hideDropdown()};this.handleHistoryDelete=(s,i)=>{s.stopPropagation();this.removeFromHistory(i)}}handleOutsideClick(s){const i=s.composedPath();if(!i.includes(this.inputElement)&&!i.includes(this.dropdownElement)){this.hideDropdown()}}handleKeyDown(s){if(!this.showDropdown)return;switch(s.key){case"ArrowDown":s.preventDefault();this.navigateSuggestions(1);break;case"ArrowUp":s.preventDefault();this.navigateSuggestions(-1);break;case"Enter":s.preventDefault();if(this.selectedSuggestionIndex>=0){this.selectSuggestion(this.filteredSuggestions[this.selectedSuggestionIndex])}else{this.handleSearch()}break;case"Escape":this.hideDropdown();break}}valueWatcher(s){if(this.inputElement&&s!==this.inputElement.value){this.inputElement.value=s}this.updateSuggestions()}suggestionsWatcher(){this.updateSuggestions()}focusInput(){if(!this.focusEmitted){this.focusEmitted=true;this.isFocused=true;this.ifxFocus.emit()}if(this.showSuggestions){if(this.value.length===0){this.showHistoryDropdown();this.showDropdown=this.enableHistory&&this.searchHistory.length>0}else{this.updateSuggestions();this.showDropdown=this.filteredSuggestions.length>0}}}blurInput(){setTimeout((()=>{this.isFocused=false;this.focusEmitted=false;this.ifxBlur.emit()}),150)}loadSearchHistory(){if(this.enableHistory&&typeof localStorage!=="undefined"){const s=localStorage.getItem(this.historyKey);this.searchHistory=s?JSON.parse(s):[];this.updateSuggestions();if(this.value.length===0&&this.searchHistory.length===0){this.showDropdown=false}}}clearSearchHistory(){if(this.enableHistory&&typeof localStorage!=="undefined"){localStorage.removeItem(this.historyKey);this.searchHistory=[];this.filteredSuggestions=[];this.selectedSuggestionIndex=-1;this.showDropdown=false;this.updateSuggestions()}}addToHistory(s){if(!this.enableHistory||!s.trim())return;const i=[...this.searchHistory];const e=i.indexOf(s);if(e>-1){i.splice(e,1)}i.unshift(s);this.searchHistory=i.slice(0,this.maxHistoryItems);if(typeof localStorage!=="undefined"){localStorage.setItem(this.historyKey,JSON.stringify(this.searchHistory))}}removeFromHistory(s){if(!this.enableHistory)return;const i=[...this.searchHistory];const e=i.indexOf(s);if(e>-1){i.splice(e,1);this.searchHistory=i;if(typeof localStorage!=="undefined"){localStorage.setItem(this.historyKey,JSON.stringify(this.searchHistory))}this.updateSuggestions();if(this.searchHistory.length===0&&this.value.length===0){this.showDropdown=false}}}requestSuggestions(s){this.ifxSuggestionRequested.emit(s);this.updateSuggestions()}updateSuggestions(){const s=this.value.toLowerCase();let i=[];if(s.length>0){if(this.suggestions&&this.suggestions.length>0){const e=this.suggestions.filter((i=>i.text.toLowerCase().includes(s)));i=[...i,...e]}if(this.enableHistory&&this.searchHistory.length>0){const e=this.searchHistory.filter((i=>i.toLowerCase().includes(s))).map(((s,i)=>({id:`history-${i}`,text:s,type:"history"})));i=[...i,...e]}i.sort(((i,e)=>{const t=i.text.toLowerCase();const n=e.text.toLowerCase();if(t===s&&n!==s)return-1;if(n===s&&t!==s)return 1;const o=t.startsWith(s);const r=n.startsWith(s);if(o&&!r)return-1;if(r&&!o)return 1;if(i.type==="suggestion"&&e.type==="history")return-1;if(i.type==="history"&&e.type==="suggestion")return 1;return t.localeCompare(n)}))}else{if(this.enableHistory&&this.searchHistory.length>0){const s=this.searchHistory.map(((s,i)=>({id:`history-${i}`,text:s,type:"history"})));i=s}}const e=i.reduce(((s,i)=>{const e=s.findIndex((s=>s.text.toLowerCase()===i.text.toLowerCase()&&s.scope===i.scope));if(e===-1){s.push(i)}else{if(i.type==="history"&&s[e].type!=="history"){s[e]=i}}return s}),[]);this.filteredSuggestions=e.slice(0,this.maxSuggestions);this.selectedSuggestionIndex=-1}navigateSuggestions(s){const i=this.filteredSuggestions.length-1;if(s>0){this.selectedSuggestionIndex=this.selectedSuggestionIndex<i?this.selectedSuggestionIndex+1:0}else{this.selectedSuggestionIndex=this.selectedSuggestionIndex>0?this.selectedSuggestionIndex-1:i}}selectSuggestion(s){this.value=s.text;this.inputElement.value=s.text;this.ifxSuggestionSelected.emit(s);this.ifxInput.emit(this.value);if(this.enableHistory){this.addToHistory(s.text)}this.hideDropdown()}hideDropdown(){this.showDropdown=false;this.selectedSuggestionIndex=-1;this.isFocused=false}showHistoryDropdown(){if(this.enableHistory&&this.searchHistory.length>0){const s=this.searchHistory.map(((s,i)=>({id:`history-${i}`,text:s,type:"history"})));this.filteredSuggestions=s.slice(0,this.maxSuggestions);this.selectedSuggestionIndex=-1}else{this.filteredSuggestions=[]}}isShowingOnlyHistory(){return this.value.length===0&&this.filteredSuggestions.length>0&&this.filteredSuggestions.every((s=>s.type==="history"))}renderHighlightedText(s,i){if(!i||i.length===0){return s}const t=s.toLowerCase();const n=i.toLowerCase();const o=t.indexOf(n);if(o===-1){return s}const r=s.substring(0,o);const h=s.substring(o,o+i.length);const a=s.substring(o+i.length);return[r,e("strong",null,h),a]}componentWillLoad(){this.loadSearchHistory()}async componentDidLoad(){if(!r(this.el)){const s=n();o("ifx-search-field",await s)}}componentWillUpdate(){if(this.value!==""){this.showDeleteIconInternalState=true}else this.showDeleteIconInternalState=false}render(){return e("div",{key:"d355ec7cdbe980ea99e4238cf02d907ddd76d59b","aria-disabled":this.disabled,"aria-value":this.value,class:"search-field"},e("div",{key:"2aa3d943caab35213ca10f071586c80358515f1c",class:this.getWrapperClassNames(),tabindex:1,onClick:()=>this.focusInput()},e("ifx-icon",{key:"eaa300dd0f8466a2396c55f3f2fffe9dcf5bbf44",icon:"search-16",class:"search-icon"}),e("input",{key:"cce86ee892ec624fe8671d7567434ae5433b8702",ref:s=>this.inputElement=s,type:"text",autocomplete:this.autocomplete,onInput:()=>this.handleInput(),onFocus:()=>this.focusInput(),onBlur:()=>this.blurInput(),placeholder:this.placeholder,disabled:this.disabled,maxlength:this.maxlength,value:this.value,role:"combobox","aria-controls":this.showDropdown?"suggestions-dropdown":undefined,"aria-expanded":this.showDropdown,"aria-autocomplete":"list","aria-haspopup":"listbox","aria-label":this.ariaLabel,"aria-labelledby":this.ariaLabelledBy,"aria-describedby":this.ariaDescribedBy,"aria-owns":this.showDropdown?"suggestions-dropdown":undefined,"aria-activedescendant":this.selectedSuggestionIndex>=0?`suggestion-${this.selectedSuggestionIndex}`:undefined}),this.showDeleteIcon&&this.showDeleteIconInternalState?e("ifx-icon",{icon:"cRemove16",class:"delete-icon",onClick:this.handleDelete,role:"button",tabindex:"0","aria-label":this.deleteIconAriaLabel,onKeyDown:s=>{if(s.key==="Enter"||s.key===" "){s.preventDefault();this.handleDelete()}}}):null),this.showDropdown&&this.filteredSuggestions.length>0&&e("div",{key:"d447e63087ac5b41d2109a16b8db37df4c9db860",ref:s=>this.dropdownElement=s,id:"suggestions-dropdown",class:"suggestions-dropdown",role:"listbox","aria-label":this.dropdownAriaLabel},this.isShowingOnlyHistory()&&e("div",{key:"6a4662d31fd8c755ec1ec9da4bb871750aa63a57",class:"suggestions-header"},this.historyHeaderText),this.filteredSuggestions.map(((s,i)=>e("div",{key:s.id,id:`suggestion-${i}`,class:this.getSuggestionClassNames(i),role:"option","aria-selected":i===this.selectedSuggestionIndex,"aria-label":`${s.type==="history"?this.historyItemAriaLabel:this.suggestionAriaLabel}: ${s.text}${s.scope?`, ${s.scope}`:""}${s.resultCount?`, ${s.resultCount} results`:""}`,onClick:()=>this.selectSuggestion(s),onMouseEnter:()=>this.selectedSuggestionIndex=i},e("div",{class:"suggestion-content"},s.type==="history"&&e("ifx-icon",{icon:"history-16",class:"suggestion-icon suggestion-icon--history"}),s.type==="suggestion"&&e("ifx-icon",{icon:"search-16",class:"suggestion-icon suggestion-icon--suggestion"}),e("span",{class:"suggestion-text"},e("span",{class:"suggestion-main-text"},this.renderHighlightedText(s.text,this.value)),s.scope&&e("span",{class:"suggestion-scope"},"– ",s.scope)),s.resultCount!==undefined&&s.scope&&e("span",{class:"suggestion-count"},s.resultCount),s.type==="history"&&e("ifx-icon",{icon:"cross16",class:"suggestion-delete-icon",role:"button",tabindex:"0","aria-label":`${this.historyDeleteAriaLabel}: ${s.text}`,onClick:i=>this.handleHistoryDelete(i,s.text),onKeyDown:i=>{if(i.key==="Enter"||i.key===" "){i.preventDefault();this.handleHistoryDelete(i,s.text)}}})))))))}getSizeClass(){return`${this.size}`==="s"?"search-field__wrapper-s":""}getWrapperClassNames(){return h(`search-field__wrapper`,`search-field__wrapper ${this.getSizeClass()}`,`${this.isFocused?"focused":""}`,`${this.showDropdown?"dropdown-open":""}`,`${this.disabled?"disabled":""}`)}getSuggestionClassNames(s){var i;return h("suggestion-item",{"suggestion-item--selected":s===this.selectedSuggestionIndex,"suggestion-item--history":((i=this.filteredSuggestions[s])===null||i===void 0?void 0:i.type)==="history"})}get el(){return t(this)}static get watchers(){return{value:["valueWatcher"],suggestions:["suggestionsWatcher"]}}};l.style=a;export{l as ifx_search_field};
|
|
2
|
+
//# sourceMappingURL=p-4fba0543.entry.js.map
|