@ukic/canary-web-components 2.0.0-canary.28 → 2.0.0-canary.29
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/cjs/core.cjs.js +1 -1
- package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-data-table.cjs.entry.js +62 -8
- package/dist/cjs/ic-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-date-input.cjs.entry.js +3 -2
- package/dist/cjs/ic-date-input.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +3 -2
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-menu-item.cjs.entry.js +10 -6
- package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-menu.cjs.entry.js +3 -2
- package/dist/cjs/ic-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-group.cjs.entry.js +3 -2
- package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-item.cjs.entry.js +28 -1
- package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-popover-menu.cjs.entry.js +3 -3
- package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-side-navigation.cjs.entry.js +2 -1
- package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-tab-context.cjs.entry.js +2 -1
- package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-tree-item.cjs.entry.js +3 -1
- package/dist/cjs/ic-tree-item.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/ic-data-table/ic-data-table.css +20 -0
- package/dist/collection/components/ic-data-table/ic-data-table.js +82 -8
- package/dist/collection/components/ic-data-table/ic-data-table.js.map +1 -1
- package/dist/collection/components/ic-data-table/story-data.js +7 -0
- package/dist/collection/components/ic-data-table/story-data.js.map +1 -1
- package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js +17 -0
- package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js.map +1 -1
- package/dist/collection/components/ic-date-input/ic-date-input.css +4 -0
- package/dist/collection/components/ic-date-input/ic-date-input.js +2 -1
- package/dist/collection/components/ic-date-input/ic-date-input.js.map +1 -1
- package/dist/collection/components/ic-tree-item/ic-tree-item.js +3 -1
- package/dist/collection/components/ic-tree-item/ic-tree-item.js.map +1 -1
- package/dist/components/helpers2.js +1 -1
- package/dist/components/ic-checkbox.js.map +1 -1
- package/dist/components/ic-data-table.js +65 -9
- package/dist/components/ic-data-table.js.map +1 -1
- package/dist/components/ic-date-input2.js +3 -2
- package/dist/components/ic-date-input2.js.map +1 -1
- package/dist/components/ic-horizontal-scroll2.js +3 -2
- package/dist/components/ic-horizontal-scroll2.js.map +1 -1
- package/dist/components/ic-menu-group.js +1 -1
- package/dist/components/ic-menu-group.js.map +1 -1
- package/dist/components/ic-menu-item2.js +12 -8
- package/dist/components/ic-menu-item2.js.map +1 -1
- package/dist/components/ic-menu2.js +3 -2
- package/dist/components/ic-menu2.js.map +1 -1
- package/dist/components/ic-navigation-group.js +3 -2
- package/dist/components/ic-navigation-group.js.map +1 -1
- package/dist/components/ic-navigation-item.js +30 -2
- package/dist/components/ic-navigation-item.js.map +1 -1
- package/dist/components/ic-pagination-bar2.js +1 -1
- package/dist/components/ic-popover-menu.js +3 -3
- package/dist/components/ic-popover-menu.js.map +1 -1
- package/dist/components/ic-select2.js.map +1 -1
- package/dist/components/ic-side-navigation.js +2 -1
- package/dist/components/ic-side-navigation.js.map +1 -1
- package/dist/components/ic-tab-context.js +2 -1
- package/dist/components/ic-tab-context.js.map +1 -1
- package/dist/components/ic-text-field2.js.map +1 -1
- package/dist/components/ic-toggle-button-group.js +1 -1
- package/dist/components/ic-toggle-button-group.js.map +1 -1
- package/dist/components/ic-tree-item.js +3 -1
- package/dist/components/ic-tree-item.js.map +1 -1
- package/dist/core/core.esm.js +1 -1
- package/dist/core/core.esm.js.map +1 -1
- package/dist/core/p-09746a07.entry.js +2 -0
- package/dist/core/p-09746a07.entry.js.map +1 -0
- package/dist/core/p-097bfd3f.entry.js +2 -0
- package/dist/core/{p-fc76d510.entry.js.map → p-097bfd3f.entry.js.map} +1 -1
- package/dist/core/{p-d02a4d1b.entry.js → p-0cba186f.entry.js} +2 -2
- package/dist/core/{p-d02a4d1b.entry.js.map → p-0cba186f.entry.js.map} +1 -1
- package/dist/core/{p-5741a8bf.entry.js → p-1a317582.entry.js} +2 -2
- package/dist/core/p-1f262ffe.entry.js +2 -0
- package/dist/core/p-1f262ffe.entry.js.map +1 -0
- package/dist/core/p-2ecedbe5.entry.js.map +1 -1
- package/dist/core/p-3848f199.entry.js +2 -0
- package/dist/core/p-3848f199.entry.js.map +1 -0
- package/dist/core/{p-7435de65.js → p-40510c97.js} +2 -2
- package/dist/core/{p-a7794aa9.entry.js → p-4352b9c5.entry.js} +2 -2
- package/dist/core/p-4352b9c5.entry.js.map +1 -0
- package/dist/core/{p-6358925c.entry.js → p-43a2cad3.entry.js} +2 -2
- package/dist/core/{p-6358925c.entry.js.map → p-43a2cad3.entry.js.map} +1 -1
- package/dist/core/{p-07e4b89b.entry.js → p-4fd35690.entry.js} +2 -2
- package/dist/core/{p-7ee62798.entry.js → p-810561ab.entry.js} +2 -2
- package/dist/core/{p-d8322108.entry.js → p-9b70d4f8.entry.js} +2 -2
- package/dist/core/p-9b70d4f8.entry.js.map +1 -0
- package/dist/core/{p-3ce541df.entry.js → p-cf4572c9.entry.js} +2 -2
- package/dist/core/{p-6ca98c5d.entry.js → p-d56248df.entry.js} +2 -2
- package/dist/core/p-d56248df.entry.js.map +1 -0
- package/dist/core/{p-6b01e096.entry.js → p-d56593cc.entry.js} +2 -2
- package/dist/core/p-d56593cc.entry.js.map +1 -0
- package/dist/core/{p-d10e81f3.entry.js → p-dcb7d549.entry.js} +2 -2
- package/dist/core/p-dcb7d549.entry.js.map +1 -0
- package/dist/core/{p-d86cdbc8.entry.js → p-de630a67.entry.js} +2 -2
- package/dist/core/p-de630a67.entry.js.map +1 -0
- package/dist/core/p-e210f51a.entry.js.map +1 -1
- package/dist/core/{p-b03d14fc.entry.js → p-e35d6d78.entry.js} +2 -2
- package/dist/core/{p-89c7ea3e.entry.js → p-f39cf43c.entry.js} +2 -2
- package/dist/core/p-f39cf43c.entry.js.map +1 -0
- package/dist/core/{p-3ef5017d.entry.js → p-f4e57aaf.entry.js} +2 -2
- package/dist/core/p-f4e57aaf.entry.js.map +1 -0
- package/dist/core/{p-ac591209.entry.js → p-f6a93c4d.entry.js} +2 -2
- package/dist/esm/core.js +1 -1
- package/dist/esm/{helpers-c24d4455.js → helpers-e0c3e667.js} +2 -2
- package/dist/esm/{helpers-c24d4455.js.map → helpers-e0c3e667.js.map} +1 -1
- package/dist/esm/ic-card-horizontal.entry.js +1 -1
- package/dist/esm/ic-checkbox.entry.js.map +1 -1
- package/dist/esm/ic-data-table-title-bar.entry.js +1 -1
- package/dist/esm/ic-data-table.entry.js +63 -9
- package/dist/esm/ic-data-table.entry.js.map +1 -1
- package/dist/esm/ic-date-input.entry.js +4 -3
- package/dist/esm/ic-date-input.entry.js.map +1 -1
- package/dist/esm/ic-date-picker.entry.js +1 -1
- package/dist/esm/ic-empty-state_2.entry.js +1 -1
- package/dist/esm/ic-horizontal-scroll.entry.js +3 -2
- package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
- package/dist/esm/ic-menu-group.entry.js +1 -1
- package/dist/esm/ic-menu-group.entry.js.map +1 -1
- package/dist/esm/ic-menu-item.entry.js +10 -6
- package/dist/esm/ic-menu-item.entry.js.map +1 -1
- package/dist/esm/ic-menu-with-multi.entry.js +1 -1
- package/dist/esm/ic-menu.entry.js +3 -2
- package/dist/esm/ic-menu.entry.js.map +1 -1
- package/dist/esm/ic-navigation-group.entry.js +3 -2
- package/dist/esm/ic-navigation-group.entry.js.map +1 -1
- package/dist/esm/ic-navigation-item.entry.js +29 -2
- package/dist/esm/ic-navigation-item.entry.js.map +1 -1
- package/dist/esm/ic-pagination_4.entry.js.map +1 -1
- package/dist/esm/ic-popover-menu.entry.js +3 -3
- package/dist/esm/ic-popover-menu.entry.js.map +1 -1
- package/dist/esm/ic-select-with-multi.entry.js +1 -1
- package/dist/esm/ic-side-navigation.entry.js +2 -1
- package/dist/esm/ic-side-navigation.entry.js.map +1 -1
- package/dist/esm/ic-tab-context.entry.js +2 -1
- package/dist/esm/ic-tab-context.entry.js.map +1 -1
- package/dist/esm/ic-toggle-button-group.entry.js +1 -1
- package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
- package/dist/esm/ic-tree-item.entry.js +4 -2
- package/dist/esm/ic-tree-item.entry.js.map +1 -1
- package/dist/esm/ic-tree-view.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/ic-data-table/ic-data-table.d.ts +11 -0
- package/dist/types/components/ic-data-table/story-data.d.ts +1 -0
- package/dist/types/components.d.ts +8 -0
- package/hydrate/index.js +124 -34
- package/package.json +3 -3
- package/dist/core/p-3ef5017d.entry.js.map +0 -1
- package/dist/core/p-6b01e096.entry.js.map +0 -1
- package/dist/core/p-6ca98c5d.entry.js.map +0 -1
- package/dist/core/p-89c7ea3e.entry.js.map +0 -1
- package/dist/core/p-8f0660ec.entry.js +0 -2
- package/dist/core/p-8f0660ec.entry.js.map +0 -1
- package/dist/core/p-a7794aa9.entry.js.map +0 -1
- package/dist/core/p-bdb5addb.entry.js +0 -2
- package/dist/core/p-bdb5addb.entry.js.map +0 -1
- package/dist/core/p-d10e81f3.entry.js.map +0 -1
- package/dist/core/p-d8322108.entry.js.map +0 -1
- package/dist/core/p-d86cdbc8.entry.js.map +0 -1
- package/dist/core/p-f09b2041.entry.js +0 -2
- package/dist/core/p-f09b2041.entry.js.map +0 -1
- package/dist/core/p-fc76d510.entry.js +0 -2
- /package/dist/core/{p-5741a8bf.entry.js.map → p-1a317582.entry.js.map} +0 -0
- /package/dist/core/{p-7435de65.js.map → p-40510c97.js.map} +0 -0
- /package/dist/core/{p-07e4b89b.entry.js.map → p-4fd35690.entry.js.map} +0 -0
- /package/dist/core/{p-7ee62798.entry.js.map → p-810561ab.entry.js.map} +0 -0
- /package/dist/core/{p-3ce541df.entry.js.map → p-cf4572c9.entry.js.map} +0 -0
- /package/dist/core/{p-b03d14fc.entry.js.map → p-e35d6d78.entry.js.map} +0 -0
- /package/dist/core/{p-ac591209.entry.js.map → p-f6a93c4d.entry.js.map} +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icDataTableCss","DataTable","this","DENSITY_HEIGHT_MULTIPLIER","dense","default","spacious","DENSITY_PADDING_HEIGHT_DIFF","SORT_ICONS","unsorted","unsortedIcon","ascending","ascendingIcon","descending","descendingIcon","hasLoadedForOneSecond","resizeObserver","SHOW_HIDE_STRING","SHOW_HIDE_CSS_CLASS","TOOLTIP_STRING","TOOLTIP","TEXT_WRAP_STRING","TEXT_WRAP_CLASS","dataUpdated","rowHeightSet","initialLoad","icPageChangeEvent","itemsPerPageChange","DATA_ROW_HEIGHT_STRING","ROW_HEIGHT_CSS_VARIABLE","DEFAULT_LINE_HEIGHT","densityUpdate","truncationPatternUpdated","isNewDebounceDelaySet","updateSetRowHeight","typographyEl","fontSize","parseInt","getComputedStyle","document","documentElement","cellContainer","getCellContainer","rowHeight","parseFloat","getAttribute","scrollHeight","style","removeProperty","getTypographyElements","forEach","debounceDataTruncation","classList","contains","ResizeObserver","dynamicDebounce","dataTruncation","setNewDebounceDelay","debounceDelay","observe","delay","getLines","height","Math","floor","truncate","tooltip","clientHeight","closest","truncationPattern","addTooltipTruncation","addShowHideTruncation","setAttribute","appendChild","remove","isEmptyString","resetShowHideTruncation","getTooltip","shadowRoot","querySelector","showHideBtn","truncWrapper","getTruncWrapper","removeTooltip","removeTextWrap","tableCell","deleteTextWrapDataKey","array","Array","isArray","val","textWrap","startLoadingTimer","timerStarted","Date","now","setTimeout","minimumLoadingDisplayDuration","isObject","value","notDefaultDensity","density","getCellContent","cell","dataType","undefined","toLocaleDateString","getCellAlignment","alignment","Object","keys","includes","getObjectValue","getCellOptions","key","createUpdatingIndicator","appearance","description","max","min","progress","updatingOptions","h","colSpan","columns","length","class","fullWidth","type","size","setRowHeight","pxToRem","setTruncationClass","getColumnWidth","columnWidth","columnWidthStyling","assign","minWidth","maxWidth","getRowHeight","currentRowHeight","columnProps","rowTextWrap","createCells","row","rowIndex","rowValues","values","rowKeys","rowOptions","getRowOptions","rowAlignment","rowEmphasis","headerIndex","indexOf","variableRowHeightVal","_a","variableRowHeight","call","index","globalRowHeight","map","cellSlotName","hasIcon","cellValue","scope","stickyRowHeaders","innerHTML","isSlotUsed","el","columnAlignment","vertical","_b","_c","_d","_e","horizontal","_f","_g","_h","_j","icon","name","Fragment","_k","onAllCells","_l","_m","variant","emphasis","href","createColumnHeaders","cellAlignment","colspan","title","updating","loading","hideOnHeader","sortable","id","getSortButtonLabel","onClick","sortRows","sortedColumn","sortedColumnOrder","onRowClick","selectedRow","createRows","data","showPagination","slice","fromRow","toRow","organisedData","slottedColumns","filter","col","addDataToPosition","sort","getSortFunction","label","getNextSortOption","option","sortOrders","sortOptions","sortOption","getComparison","targetRow","comparisonRow","targetRowValue","comparisonRowValue","find","valueOf","String","localeCompare","numeric","sensitivity","a","b","column","sortButton","previousSortedButton","nextSortOrderIndex","tableSorted","icSortChange","emit","columnName","sorted","from","querySelectorAll","updateTruncationTooltip","removeTooltipOnly","regenerateTooltip","updateScrollOffset","scrollOffset","scrollTop","setTableDimensions","tableHostDimensions","width","fixCellTooltips","elements","element","slotElements","getSlotElements","slottedEl","tooltipEl","tagName","setExternalPopperProps","strategy","itemsPerPageOptions","rangeLabelType","showItemsPerPageControl","showGoToPageControl","itemLabel","pageLabel","hideRangeLabel","hideAllFromItemsPerPage","defaultColumn","disconnectedCallback","disconnect","componentWillLoad","rowsPerPage","Number","paginationBarOptions","previousRowsPerPage","loadingOptions","showBackground","previousItemsPerPage","componentDidLoad","tableElement","tableContainer","clientWidth","scrollable","showLoadingIndicator","componentDidUpdate","truncateUpdatedData","componentDidRender","createShowHideTruncation","resetTruncation","then","removeAttribute","hasAutoRowHeight","setProperty","allRows","newRows","checkMaxLines","setShowHideExpanded","addLineClampCSS","createTruncationTooltip","add","handleTypographyTruncationExpandToggle","detail","expanded","getPropertyValue","handlePageChange","target","parentElement","tableRowsContainer","previousPaginationPage","handleItemsPerPageChange","handleDensityChange","ev","clickListener","loadingHandler","newValue","truncationPatternHandler","dataHandler","newData","densityHandler","rowHeightChangeHandler","oldValue","icRowHeightChange","resetRowHeights","loadingIndicator","rowOptionsIndex","textContent","cssText","createElement","render","caption","hideColumnHeaders","stickyColumnHeaders","Host","tabIndex","onScroll","tableLayout","aligned","heading","labelDuration","ref","totalItems"],"sources":["src/components/ic-data-table/ic-data-table.css?tag=ic-data-table&encapsulation=shadow","src/components/ic-data-table/ic-data-table.tsx"],"sourcesContent":[":host {\n position: relative;\n display: inline-flex;\n max-height: 100%;\n width: var(--table-width, 100%);\n height: 100%;\n min-width: var(--table-min-width);\n max-width: var(--table-max-width);\n}\n\ntbody {\n vertical-align: top;\n}\n\n.table-container {\n position: relative;\n height: calc(100% - var(--ic-space-xxxs));\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.cell-container {\n display: flex;\n min-height: 1.5rem;\n overflow-y: hidden;\n height: var(--row-height);\n}\n\n.truncation-show-hide {\n overflow: visible;\n display: block;\n}\n\n.cell-icon.truncation-show-hide {\n display: flex;\n}\n\n.cell-container:not(.data-type-element, .truncation-show-hide) {\n overflow-x: hidden;\n}\n\nic-loading-indicator {\n position: sticky;\n top: 20px;\n}\n\n.table-row-container {\n position: relative;\n height: 100%;\n overflow: auto;\n transition: var(--ic-easing-transition-fast);\n overflow-anchor: none;\n}\n\n:host([show-pagination=\"true\"]) .table-row-container {\n height: calc(100% - 3.5625rem);\n}\n\ntable {\n table-layout: var(--table-layout, \"fixed\");\n border-spacing: 0;\n width: 100%;\n height: var(--table-height, auto);\n}\n\n.table-row-container:focus {\n outline: none;\n box-shadow: var(--ic-border-focus);\n border-radius: var(--ic-border-radius);\n transition: var(--ic-easing-transition-fast);\n z-index: 1;\n}\n\n:host([embedded=\"true\"]) .table-row-container {\n border: var(--ic-border-light);\n}\n\n.column-header-inner-container {\n padding: var(--ic-space-xs);\n box-sizing: border-box;\n}\n\n.column-header-sticky {\n position: sticky;\n top: 0;\n z-index: 1;\n}\n\n.column-header-overlay {\n position: sticky;\n top: 0;\n z-index: 1;\n box-shadow: 0 0.375rem var(--ic-space-xs) calc(var(--ic-space-xxs * -1))\n rgb(0 0 0 / 20%);\n}\n\n.row-header-sticky {\n position: sticky;\n left: 0;\n}\n\n.column-header,\n.table-row {\n box-sizing: border-box;\n}\n\n.table-row-selected {\n background-color: var(--ic-table-row-selected) !important;\n}\n\n.sort-button {\n margin-left: auto;\n}\n\n.sort-button:hover {\n background-color: var(--ic-action-dark-bg-hover);\n}\n\n.sort-button:active {\n background-color: var(--ic-action-dark-bg-active);\n}\n\n.sort-button svg {\n color: var(--ic-architectural-black);\n}\n\n.sort-button-unsorted svg {\n color: var(--ic-color-tertiary-text);\n}\n\n.table-density-dense .column-header-inner-container,\ntd.table-density-dense {\n padding: var(--ic-space-xxs) var(--ic-space-xs) !important;\n}\n\n.text-dense {\n font-size: var(--ic-font-size-label);\n}\n\n.table-density-spacious .column-header-inner-container,\ntd.table-density-spacious {\n padding: 0.625rem var(--ic-space-xs) !important;\n}\n\n.text-spacious {\n font-size: 1.125rem;\n}\n\n.column-header-text {\n font-weight: var(--ic-font-weight-bold);\n}\n\n.row-header,\n.column-header {\n text-align: left;\n padding: var(--ic-space-xs);\n background-color: var(--ic-architectural-40);\n border-right: var(--ic-border-light);\n border-bottom: var(--ic-border-light);\n}\n\n.column-header {\n padding: 0;\n width: var(--column-width);\n min-width: var(--column-min-width, 4rem);\n max-width: var(--column-max-width);\n}\n\n.column-header:last-child {\n border-right: none;\n}\n\n.scrollable .column-header:last-child {\n border-right: var(--ic-border-light) !important;\n}\n\n:host([embedded=\"true\"]) tr:last-child .table-cell,\n:host([embedded=\"true\"]) tr:last-child .row-header {\n border-bottom: none;\n}\n\n.column-header-alignment-left,\n.row-header-alignment-left,\n.cell-alignment-left {\n text-align: left !important;\n justify-content: start !important;\n}\n\n.column-header-alignment-right,\n.row-header-alignment-right,\n.cell-alignment-right {\n text-align: right !important;\n justify-content: end !important;\n}\n\n.cell-alignment-right.truncation-tooltip ic-tooltip ic-typography {\n padding-right: calc(var(--ic-space-xxs) + var(--ic-space-xs));\n}\n\n.cell-alignment-right.truncation-show-hide ic-typography {\n --ellipsis-padding-right: calc(var(--ic-space-xxs) + var(--ic-space-xs));\n}\n\n.column-header-alignment-center,\n.row-header-alignment-center,\n.cell-alignment-center {\n text-align: center !important;\n justify-content: center !important;\n}\n\n.table-row:nth-child(even) {\n background-color: var(--ic-architectural-20);\n}\n\n.table-cell {\n padding: var(--ic-space-xs);\n border-bottom: solid var(--ic-architectural-100) var(--ic-space-1px);\n overflow: hidden;\n box-sizing: border-box;\n max-width: var(--column-max-width);\n min-width: var(--column-min-width);\n}\n\n.table-cell.with-overflow {\n overflow: visible;\n}\n\n.data-type-string,\n.data-type-address {\n text-align: left;\n vertical-align: top;\n}\n\n.data-type-number,\n.data-type-date {\n text-align: right;\n justify-content: end;\n vertical-align: top;\n}\n\n.cell-alignment-top {\n vertical-align: top;\n align-items: flex-start;\n}\n\n.cell-alignment-middle {\n vertical-align: middle;\n align-items: center;\n}\n\n.cell-alignment-bottom {\n vertical-align: bottom;\n align-items: flex-end;\n}\n\n.cell-emphasis-low {\n color: var(--ic-color-secondary-text);\n}\n\n.cell-emphasis-high {\n font-weight: var(--ic-font-weight-bold);\n}\n\n.pagination-container {\n background-color: var(--ic-architectural-40);\n border-top: var(--ic-border-light);\n}\n\n.screen-reader-sort-text,\n.table-caption {\n position: absolute;\n left: -100rem;\n}\n\n.table-cell,\n.column-header,\n.row-header {\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n\n.loading-empty {\n padding: var(--ic-space-xl) var(--ic-space-xxl);\n margin-top: var(--ic-space-xl);\n}\n\n.updating-state {\n padding: 0;\n border-bottom: var(--ic-border-light);\n}\n\n.updating-state-headers {\n border-bottom: none;\n}\n\n.loading {\n position: absolute;\n left: calc(50% - 5.9741rem);\n opacity: 0;\n transition: opacity var(--ic-transition-duration-slow);\n}\n\n.loading.show-background {\n background-color: var(--ic-architectural-white);\n border: var(--ic-border-light);\n}\n\n.loading.show {\n opacity: 1;\n}\n\n.icon,\n::slotted(svg) {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n margin-right: var(--ic-space-xxs);\n}\n\n.column-header-alignment-right > .icon,\n.row-header-alignment-right > .icon,\n.cell-alignment-right > .icon,\n.column-header-alignment-right > ::slotted(svg),\n.row-header-alignment-right > ::slotted(svg),\n.cell-alignment-right > ::slotted(svg) {\n margin-right: auto;\n}\n\n.column-header-alignment-center > ic-typography,\n.row-header-alignment-right > ic-typography,\n.cell-alignment-center > ic-typography {\n flex: 1;\n}\n\n.icon > svg {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n display: inline-block;\n}\n\n.truncation-tooltip ic-typography {\n display: -webkit-box;\n -webkit-line-clamp: var(--ic-line-clamp, 0);\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.truncation-tooltip ic-typography,\n.truncation-show-hide ic-typography {\n white-space: normal;\n}\n\n.ic-tooltip-overflow {\n overflow: hidden;\n width: 100%;\n}\n\n@media screen and (min-width: 577px) {\n .column-header-inner-container {\n display: flex;\n align-items: center;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Component,\n Element,\n h,\n Prop,\n State,\n Listen,\n Watch,\n Fragment,\n Method,\n Event,\n EventEmitter,\n Host,\n} from \"@stencil/core\";\nimport unsortedIcon from \"./assets/unsorted-icon.svg\";\nimport ascendingIcon from \"./assets/ascending-icon.svg\";\nimport descendingIcon from \"./assets/descending-icon.svg\";\nimport {\n IcDataTableDataType,\n IcDataTableColumnDataTypes,\n IcDataTableColumnObject,\n IcDataTableColumnWidthTypes,\n IcDataTableDensityOptions,\n IcDataTableRowHeights,\n IcDataTableSortOrderOptions,\n IcDataTableTruncationTypes,\n IcDensityUpdateEventDetail,\n IcSortEventDetail,\n} from \"./ic-data-table.types\";\nimport { IcThemeForegroundNoDefault } from \"@ukic/web-components/dist/types/utils/types\";\nimport { IcPaginationBarOptions } from \"../../utils/types\";\n// Unable to import helper functions via @ukic/web-components\nimport {\n isEmptyString,\n isSlotUsed,\n pxToRem,\n addDataToPosition,\n dynamicDebounce,\n getSlotElements,\n} from \"../../utils/helpers\";\n\n/**\n * @slot empty-state - Content is slotted below the table header when there is no data and the table is not loading.\n * @slot {COLUMN_KEY}-{ROW_INDEX}[-icon] - Each cell should have its own slot, named using the column tag and the row index, allowing for custom elements to be displayed. Include `-icon` at the end for that cell's icon slot.\n * @slot {COLUMN_KEY}-column-icon - The icon slot for a column header.\n * @slot title-bar - A custom ic-data-table-title-bar can be slotted above the column headers to display additional information about the table.\n * @slot pagination-bar - A custom ic-pagination-bar can be slotted below the data to provide enhanced control over how the data is interacted with when being fetched externally.\n */\n@Component({\n tag: \"ic-data-table\",\n styleUrl: \"ic-data-table.css\",\n shadow: true,\n})\nexport class DataTable {\n private DENSITY_HEIGHT_MULTIPLIER = {\n dense: 0.8,\n default: 1,\n spacious: 1.2,\n };\n\n private DENSITY_PADDING_HEIGHT_DIFF = {\n dense: 8,\n default: 16,\n spacious: 20,\n };\n\n private SORT_ICONS = {\n unsorted: unsortedIcon,\n ascending: ascendingIcon,\n descending: descendingIcon,\n };\n\n private hasLoadedForOneSecond = true;\n private loadingIndicator: HTMLIcLoadingIndicatorElement;\n private timerStarted: number;\n private resizeObserver: ResizeObserver = null;\n private SHOW_HIDE_STRING = \"show-hide\";\n private SHOW_HIDE_CSS_CLASS = `${this.SHOW_HIDE_STRING}-wrap`;\n private TOOLTIP_STRING = \"tooltip\";\n private TOOLTIP = `ic-${this.TOOLTIP_STRING}`;\n private TEXT_WRAP_STRING = \"text-wrap\";\n private TEXT_WRAP_CLASS = `.${this.TEXT_WRAP_STRING}`;\n private dataUpdated = false;\n private tableSorted: boolean;\n private rowHeightSet = false;\n private initialLoad = false;\n private icPageChangeEvent = false;\n private itemsPerPageChange = false;\n private DATA_ROW_HEIGHT_STRING = \"data-row-height\";\n private ROW_HEIGHT_CSS_VARIABLE = \"--row-height\";\n private previousItemsPerPage: number;\n private DEFAULT_LINE_HEIGHT = 24;\n private densityUpdate = false;\n private previousPaginationPage: number;\n private truncationPatternUpdated: boolean = false;\n private isNewDebounceDelaySet = false;\n\n @Element() el: HTMLIcDataTableElement;\n\n @State() fromRow: number = 0;\n\n @State() previousRowsPerPage: number;\n\n @State() rowsPerPage: number;\n\n @State() scrollable: boolean = false;\n\n @State() scrollOffset: number = 0;\n\n @State() selectedRow: object;\n\n @State() sortedColumn: string;\n\n @State() sortedColumnOrder: IcDataTableSortOrderOptions;\n\n @State() toRow: number;\n\n @State() currentRowHeight: number;\n\n @State() debounceDelay = 0;\n\n /**\n * The title for the table only visible to screen readers.\n */\n @Prop() caption!: string;\n\n /**\n * The column headers for the table.\n */\n @Prop() columns!: IcDataTableColumnObject[];\n\n /**\n * The row content for the table.\n */\n @Prop() data: IcDataTableDataType[];\n\n /**\n * Set the density of the table including font and padding.\n */\n @Prop({ mutable: true }) density?: IcDataTableDensityOptions = \"default\";\n\n /**\n * Applies a border to the table container.\n */\n @Prop() embedded?: boolean = false;\n\n /**\n * Sets the row height on all rows in the table that aren't set using the `variableRowHeight` method.\n */\n @Prop({ mutable: true }) globalRowHeight?: IcDataTableRowHeights = \"auto\";\n\n /**\n * Sets the table height. Can be set to `auto` or a specific value in `px`, `rem`, or `%`.\n */\n @Prop() height?: string;\n\n /**\n * If `true`, column headers will not be visible.\n */\n @Prop() hideColumnHeaders?: boolean = false;\n\n /**\n * When set to `true`, the full table will show a loading state, featuring a radial indicator.\n */\n @Prop({ mutable: true }) loading?: boolean = false;\n\n /**\n * Sets the props for the circular loading indicator used in the loading state.\n */\n @Prop() loadingOptions?: {\n appearance?: IcThemeForegroundNoDefault;\n description?: string;\n label?: string;\n labelDuration?: number;\n max?: number;\n min?: number;\n progress?: number;\n showBackground?: boolean;\n };\n\n /**\n * Sets the maximum width of the data table. Can be set in `px`, `rem`, or `%`.\n */\n @Prop() maxWidth?: string;\n\n /**\n * Sets the minimum width of the data table. Can be set in `px`, `rem`, or `%`.\n */\n @Prop() minWidth?: string;\n\n /**\n * The minimum amount of time the `loading` state displays for before showing the data. Used to prevent flashing in the component.\n */\n @Prop() minimumLoadingDisplayDuration?: number = 1000;\n\n /**\n * Sets the props for the built-in pagination bar. If the `pagination-bar` slot is used then this prop is ignored.\n */\n @Prop() paginationBarOptions?: IcPaginationBarOptions = {\n itemsPerPageOptions: [\n { label: \"10\", value: \"10\" },\n { label: \"25\", value: \"25\" },\n { label: \"50\", value: \"50\" },\n ],\n rangeLabelType: \"page\",\n type: \"simple\",\n showItemsPerPageControl: true,\n showGoToPageControl: true,\n alignment: \"right\",\n appearance: \"default\",\n itemLabel: \"Item\",\n pageLabel: \"Page\",\n hideRangeLabel: false,\n hideAllFromItemsPerPage: false,\n };\n\n /**\n * If `true`, adds a pagination bar to the bottom of the table.\n */\n @Prop() showPagination?: boolean = false;\n\n /**\n * If `true`, allows table columns to be sorted using applied sort buttons.\n */\n @Prop() sortable?: boolean = false;\n\n /**\n * Sets the order columns will be sorted in and allows for 'default' sorts to be added.\n */\n @Prop() sortOptions?: {\n sortOrders: IcDataTableSortOrderOptions[];\n defaultColumn?: string;\n } = {\n sortOrders: [\"unsorted\", \"ascending\", \"descending\"],\n defaultColumn: \"\",\n };\n\n /**\n * If `true`, column headers will remain at the top of the table when scrolling vertically.\n */\n @Prop() stickyColumnHeaders?: boolean = false;\n\n /**\n * If `true`, row headers will remain to the left when scrolling horizontally.\n */\n @Prop() stickyRowHeaders?: boolean = false;\n /**\n * Sets the layout of the table\n */\n @Prop() tableLayout?: \"fixed\" | \"auto\" = \"fixed\";\n\n /**\n * Sets the method used to truncate long text in cells where textWrap is `false`. The `tooltip` truncation pattern allows the overflowing text to be seen in a tooltip. The `show-hide` truncation pattern allows the overflowing text to be shown and hidden using the ic-typography \"See more\"/\"See less\" buttons.\n */\n @Prop() truncationPattern?: IcDataTableTruncationTypes;\n\n /**\n * If `true`, the table displays a linear loading indicator below the header row to indicate an updating state.\n */\n @Prop() updating?: boolean = false;\n\n /**\n * Sets the props for the linear loading indicator used in the updating state.\n */\n @Prop() updatingOptions?: {\n appearance?: IcThemeForegroundNoDefault;\n description?: string;\n max?: number;\n min?: number;\n progress?: number;\n };\n\n /**\n * Allows for custom setting of row heights on individual rows based on an individual value from the `data` prop and the row index.\n * If the function returns `null`, that row's height will be set to the `globalRowHeight` property.\n */\n @Prop({ mutable: true }) variableRowHeight?: (params: {\n [key: string]: any;\n index: number;\n }) => IcDataTableRowHeights | null;\n\n /**\n * Sets the table width. Can be set to `auto` or a specific value in `px`, `rem`, or `%`.\n */\n @Prop() width?: string;\n\n /**\n * Emitted when the `globalRowHeight` or `variableRowHeight` properties change in the data table.\n */\n @Event() icRowHeightChange: EventEmitter<void>;\n\n /**\n * Emitted when a column sort button is clicked.\n */\n @Event() icSortChange: EventEmitter<IcSortEventDetail>;\n\n disconnectedCallback(): void {\n this.resizeObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n this.rowsPerPage = Number(\n this.paginationBarOptions.itemsPerPageOptions[0].value\n );\n this.previousRowsPerPage = this.rowsPerPage;\n this.toRow = this.rowsPerPage;\n this.sortedColumn = this.sortOptions.defaultColumn;\n this.sortedColumnOrder = this.sortOptions.sortOrders[0];\n this.loadingOptions = {\n ...this.loadingOptions,\n showBackground: this.data?.length > 0,\n };\n this.initialLoad = true;\n this.previousItemsPerPage = this.rowsPerPage;\n }\n\n componentDidLoad(): void {\n const tableElement = this.el.shadowRoot.querySelector(\"table\");\n const tableContainer = this.el.shadowRoot.querySelector(\".table-container\");\n\n if (this.dataUpdated) {\n this.dataUpdated = false;\n }\n\n if (\n tableElement?.clientHeight > tableContainer?.clientHeight ||\n tableElement?.clientWidth > tableContainer?.clientWidth\n ) {\n this.scrollable = true;\n }\n if (this.loading) {\n this.startLoadingTimer();\n this.showLoadingIndicator();\n }\n\n if (this.truncationPattern) {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n if (!cellContainer.classList.contains(this.TEXT_WRAP_STRING)) {\n this.dataTruncation(typographyEl);\n }\n }\n );\n\n this.debounceDataTruncation();\n }\n\n if (this.globalRowHeight !== \"auto\") {\n this.updateSetRowHeight();\n }\n }\n\n componentDidUpdate(): void {\n // truncation updates invoked here once new/updated data has\n // rendered to take into account updated .cell-container/ic-typography box model updates.\n if (\n this.truncationPattern === this.SHOW_HIDE_STRING ||\n this.truncationPattern === this.TOOLTIP_STRING\n ) {\n this.truncateUpdatedData();\n }\n }\n\n componentDidRender(): void {\n this.fixCellTooltips();\n }\n\n private truncateUpdatedData() {\n if (this.dataUpdated) {\n if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (\n cellContainer?.clientHeight - this.DEFAULT_LINE_HEIGHT >=\n truncWrapper?.scrollHeight\n ) {\n this.resetShowHideTruncation(typographyEl);\n return;\n }\n\n setTimeout(() => {\n // slight delay due to data rendering\n if (typographyEl?.scrollHeight > cellContainer?.clientHeight) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n }\n }, 150);\n }\n );\n }\n\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.updateTruncationTooltip();\n }\n\n this.dataUpdated = false;\n }\n\n if (this.tableSorted) {\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.updateTruncationTooltip();\n }\n\n if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (!cellContainer.classList.contains(this.TEXT_WRAP_STRING)) {\n this.createShowHideTruncation(typographyEl, cellContainer);\n } else {\n typographyEl.resetTruncation().then(() => {\n cellContainer.removeAttribute(\"style\");\n });\n }\n }\n );\n }\n\n this.tableSorted = false;\n }\n\n // This function recalculates the tooltip truncation when the rowHeight has been set.\n // This is in componentDidUpdate so a setTimeout is not used to wait for the render to be complete\n if (this.rowHeightSet) {\n const fontSize = parseInt(\n getComputedStyle(document.documentElement).fontSize\n );\n const hasAutoRowHeight = this.globalRowHeight === \"auto\";\n\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const tooltipEl = this.getTooltip(typographyEl);\n\n if (hasAutoRowHeight) {\n cellContainer.style.height = null;\n\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.removeTooltip(cellContainer, typographyEl, tooltipEl);\n typographyEl.setAttribute(\"style\", `--ic-line-clamp: 0`);\n } else if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.resetShowHideTruncation(typographyEl);\n }\n\n return;\n }\n\n const rowHeight =\n fontSize *\n parseFloat(cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING));\n\n // If the set row height is bigger than the cell container even\n // with textWrap, set the row height\n if (\n !cellContainer?.style?.height &&\n rowHeight > cellContainer.clientHeight &&\n !cellContainer.classList.contains(this.TEXT_WRAP_STRING)\n ) {\n cellContainer.style.setProperty(\n this.ROW_HEIGHT_CSS_VARIABLE,\n cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING)\n );\n }\n\n if (this.truncationPattern) {\n // If the set row height is bigger than the typography truncation wrapper\n // scroll height, remove see more / see less button\n if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n const showHideBtn =\n typographyEl.shadowRoot.querySelector(\"button\");\n\n if (\n showHideBtn &&\n truncWrapper?.scrollHeight <= cellContainer.clientHeight\n ) {\n this.resetShowHideTruncation(typographyEl);\n return;\n }\n }\n\n this.truncate(typographyEl, cellContainer, tooltipEl);\n } else {\n this.updateSetRowHeight(typographyEl);\n }\n }\n );\n\n this.rowHeightSet = false;\n }\n\n // Only run truncation on the new rows\n // when the number of items per page has increased\n if (this.itemsPerPageChange) {\n const allRows = this.el.shadowRoot.querySelectorAll(\".table-row\");\n\n if (this.rowsPerPage > this.previousItemsPerPage) {\n const newRows = Array.from(allRows).slice(this.previousItemsPerPage);\n\n newRows.forEach((row) => {\n row\n .querySelectorAll(\"ic-typography\")\n .forEach((typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const tooltipEl = this.getTooltip(typographyEl);\n\n this.truncate(typographyEl, cellContainer, tooltipEl);\n });\n });\n }\n\n this.previousItemsPerPage = this.rowsPerPage;\n this.itemsPerPageChange = false;\n }\n\n if (!this.initialLoad && this.icPageChangeEvent) {\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.updateTruncationTooltip();\n }\n\n // set truncation to see more if opened and next/previous page is pressed\n if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.getTypographyElements().forEach((typographyEl) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const showHideBtn = typographyEl.shadowRoot.querySelector(\"button\");\n\n if (\n typographyEl?.scrollHeight > cellContainer.clientHeight &&\n !showHideBtn\n ) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n }\n });\n }\n\n this.icPageChangeEvent = false;\n }\n\n if (this.densityUpdate) {\n this.getTypographyElements().forEach((typographyEl) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const tooltipEl = this.getTooltip(typographyEl);\n\n this.truncate(typographyEl, cellContainer, tooltipEl);\n });\n\n this.densityUpdate = false;\n }\n\n if (this.truncationPatternUpdated) {\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.getTypographyElements().forEach((typographyEl) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const tooltipEl = this.getTooltip(typographyEl);\n\n if (typographyEl.scrollHeight > cellContainer.clientHeight) {\n this.addTooltipTruncation(typographyEl, cellContainer, tooltipEl);\n }\n });\n } else if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (\n cellContainer?.clientHeight - this.DEFAULT_LINE_HEIGHT >\n truncWrapper?.scrollHeight\n ) {\n this.resetShowHideTruncation(typographyEl);\n return;\n }\n\n if (typographyEl?.scrollHeight > cellContainer?.clientHeight) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n }\n }\n );\n }\n }\n }\n\n private updateSetRowHeight = (typographyEl?: HTMLIcTypographyElement) => {\n const fontSize = parseInt(\n getComputedStyle(document.documentElement).fontSize\n );\n\n if (typographyEl) {\n const cellContainer = this.getCellContainer(typographyEl);\n\n const rowHeight =\n fontSize *\n parseFloat(cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING));\n\n if (typographyEl.scrollHeight > rowHeight) {\n cellContainer.style.removeProperty(this.ROW_HEIGHT_CSS_VARIABLE);\n }\n } else {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n\n const rowHeight =\n fontSize *\n parseFloat(cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING));\n\n if (typographyEl.scrollHeight > rowHeight) {\n cellContainer.style.removeProperty(this.ROW_HEIGHT_CSS_VARIABLE);\n }\n }\n );\n }\n };\n\n private createShowHideTruncation(\n typographyEl: HTMLIcTypographyElement,\n cellContainer: HTMLElement\n ) {\n typographyEl.checkMaxLines(typographyEl.scrollHeight);\n typographyEl.setAttribute(\n \"max-lines\",\n `${Math.floor(cellContainer?.clientHeight / this.DEFAULT_LINE_HEIGHT)}`\n );\n typographyEl.setShowHideExpanded(false);\n\n cellContainer.style.setProperty(this.ROW_HEIGHT_CSS_VARIABLE, null);\n }\n\n private debounceDataTruncation = () => {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n if (!cellContainer.classList.contains(this.TEXT_WRAP_STRING)) {\n this.resizeObserver = new ResizeObserver(\n // This gets triggered twice due to updated data and see more/see less button\n dynamicDebounce(\n () => {\n this.dataTruncation(typographyEl);\n\n if (!this.isNewDebounceDelaySet) {\n this.setNewDebounceDelay(200);\n }\n },\n () => this.debounceDelay\n ) as ResizeObserverCallback\n );\n\n this.resizeObserver.observe(typographyEl);\n }\n }\n );\n };\n\n private setNewDebounceDelay = (delay: number) => {\n this.debounceDelay = delay;\n\n this.isNewDebounceDelaySet = true;\n };\n\n private getLines = (height: number): number =>\n Math.floor(height / this.DEFAULT_LINE_HEIGHT);\n\n private truncate = (\n typographyEl: HTMLIcTypographyElement,\n cellContainer: HTMLElement,\n tooltip: HTMLIcTooltipElement\n ) => {\n if (typographyEl?.scrollHeight > cellContainer?.clientHeight) {\n //24 is the height of a single line\n if (!typographyEl.closest(this.TEXT_WRAP_CLASS)) {\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.addTooltipTruncation(typographyEl, cellContainer, tooltip);\n }\n if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n }\n }\n } else {\n if (this.truncationPattern === this.TOOLTIP_STRING && tooltip) {\n typographyEl.setAttribute(\"style\", `--ic-line-clamp: 0`);\n\n cellContainer.appendChild(typographyEl);\n tooltip.remove();\n }\n\n if (\n this.truncationPattern === this.SHOW_HIDE_STRING &&\n !isEmptyString(typographyEl.getAttribute(\"max-lines\"))\n ) {\n this.resetShowHideTruncation(typographyEl);\n }\n }\n };\n\n private addTooltipTruncation(\n typographyEl: HTMLIcTypographyElement,\n cellContainer: HTMLElement,\n tooltip: HTMLIcTooltipElement\n ) {\n this.addLineClampCSS(typographyEl, cellContainer);\n\n if (!tooltip) {\n this.createTruncationTooltip(typographyEl, cellContainer);\n }\n }\n\n private addShowHideTruncation(\n cellContainer: HTMLElement,\n typographyEl: HTMLIcTypographyElement\n ) {\n cellContainer.classList.add(this.SHOW_HIDE_CSS_CLASS);\n this.createShowHideTruncation(typographyEl, cellContainer);\n }\n\n private dataTruncation = (typographyEl: HTMLIcTypographyElement) => {\n // Tooltip truncation mentioned in AC. Will need revisiting\n const tooltip: HTMLIcTooltipElement = this.getTooltip(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n if (\n cellContainer?.classList.contains(\"data-type-element\") ||\n this.dataUpdated\n ) {\n return;\n }\n\n if (\n this.truncationPattern === this.SHOW_HIDE_STRING &&\n typographyEl.shadowRoot.querySelector(\"button\")\n ) {\n const showHideBtn = typographyEl.shadowRoot.querySelector(\"button\");\n // If the see more/see less is present and the max lines is equal to the cell container\n // remove the see more/see less button\n if (showHideBtn) {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n\n if (\n this.getLines(truncWrapper.scrollHeight) ===\n +typographyEl.getAttribute(\"max-lines\")\n ) {\n this.resetShowHideTruncation(typographyEl);\n }\n }\n }\n\n // Deals with setting and resetting row height and re-truncating data\n if (this.rowHeightSet && this.truncationPattern === this.SHOW_HIDE_STRING) {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n // cellContainer.clientHeight - 24 removes the extra line by see more/see less\n if (\n truncWrapper &&\n cellContainer.clientHeight - this.DEFAULT_LINE_HEIGHT >\n truncWrapper.scrollHeight\n ) {\n this.resetShowHideTruncation(typographyEl);\n return;\n }\n\n if (typographyEl.scrollHeight > cellContainer.clientHeight) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n return;\n }\n }\n\n if (\n typographyEl?.scrollHeight > 0 &&\n cellContainer?.clientHeight > 0 &&\n typographyEl?.scrollHeight === cellContainer?.clientHeight\n ) {\n if (tooltip) {\n this.removeTooltip(cellContainer, typographyEl, tooltip);\n }\n return;\n }\n\n this.truncate(typographyEl, cellContainer, tooltip);\n };\n\n private getTruncWrapper(typographyEl: HTMLIcTypographyElement) {\n return typographyEl.shadowRoot.querySelector(\".trunc-wrapper\");\n }\n\n // Set the height to initial if row height is set and the show / hide truncation\n // is clicked\n @Listen(\"typographyTruncationExpandToggle\")\n handleTypographyTruncationExpandToggle({\n detail,\n }: CustomEvent<{\n expanded: boolean;\n typographyEl: HTMLIcTypographyElement;\n }>): void {\n const { expanded, typographyEl } = detail;\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (\n cellContainer.style.getPropertyValue(this.ROW_HEIGHT_CSS_VARIABLE) &&\n expanded\n ) {\n cellContainer.style.setProperty(this.ROW_HEIGHT_CSS_VARIABLE, \"inherit\");\n }\n }\n\n @Listen(\"icPageChange\")\n handlePageChange({ detail, target }: CustomEvent<{ value: number }>): void {\n if ((target as HTMLIcPaginationBarElement).parentElement !== this.el) {\n this.fromRow = (detail.value - 1) * this.rowsPerPage;\n this.toRow = this.fromRow + this.rowsPerPage;\n const tableRowsContainer = this.el.shadowRoot.querySelector(\n \".table-row-container\"\n );\n if (this.previousRowsPerPage === this.rowsPerPage) {\n tableRowsContainer.scrollTop = 0;\n } else if (this.previousRowsPerPage < this.rowsPerPage) {\n tableRowsContainer.scrollTop = this.scrollOffset;\n this.previousRowsPerPage = this.rowsPerPage;\n } else {\n this.previousRowsPerPage = this.rowsPerPage;\n }\n }\n\n if (!this.initialLoad && this.previousPaginationPage !== detail.value) {\n // This is to prevent icPageChange from triggering truncation on first load\n this.icPageChangeEvent = true;\n }\n\n this.previousPaginationPage = detail.value;\n this.initialLoad = false;\n }\n\n @Listen(\"icItemsPerPageChange\")\n handleItemsPerPageChange({\n detail,\n target,\n }: CustomEvent<{ value: number }>): void {\n if ((target as HTMLIcPaginationBarElement).parentElement !== this.el) {\n this.previousRowsPerPage = this.rowsPerPage;\n this.rowsPerPage = detail.value;\n }\n\n this.itemsPerPageChange = true;\n }\n\n @Listen(\"icTableDensityUpdate\")\n handleDensityChange(ev: CustomEvent<IcDensityUpdateEventDetail>): void {\n this.density = ev.detail.value;\n }\n\n @Listen(\"click\", { target: \"window\" })\n clickListener(ev: MouseEvent): void {\n if (ev.target !== this.el) this.selectedRow = undefined;\n }\n\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n if (newValue) this.startLoadingTimer();\n\n if (this.loading) {\n setTimeout(() => {\n this.showLoadingIndicator();\n }, 500);\n }\n }\n\n @Watch(\"truncationPattern\")\n truncationPatternHandler(newValue: IcDataTableTruncationTypes): void {\n if (newValue === this.TOOLTIP_STRING) {\n this.resetShowHideTruncation();\n this.updateTruncationTooltip(true);\n\n // Not using debounceDataTruncation here due to resizeObserver not being triggered\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const tooltip: HTMLIcTooltipElement = this.getTooltip(typographyEl);\n\n this.truncate(typographyEl, cellContainer, tooltip);\n }\n );\n }\n\n if (newValue === this.SHOW_HIDE_STRING) {\n // ResizeObserver is trigger here due to the see more/see less links being removed.\n // The resizeObserver will also apply the tooltip where relevant\n this.updateTruncationTooltip(true);\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (\n cellContainer?.clientHeight - this.DEFAULT_LINE_HEIGHT >\n truncWrapper?.scrollHeight\n ) {\n this.resetShowHideTruncation(typographyEl);\n return;\n }\n\n setTimeout(() => {\n // slight delay due to data rendering\n if (typographyEl?.scrollHeight > cellContainer?.clientHeight) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n }\n }, 150);\n }\n );\n }\n\n this.truncationPatternUpdated = true;\n }\n\n @Watch(\"data\")\n async dataHandler(newData: IcDataTableDataType[]): Promise<void> {\n this.loadingOptions = {\n ...this.loadingOptions,\n showBackground: newData?.length > 0,\n };\n if (this.loading) {\n !this.hasLoadedForOneSecond\n ? setTimeout(\n () => (this.loading = false),\n this.minimumLoadingDisplayDuration -\n (Date.now() - this.timerStarted)\n )\n : (this.loading = false);\n }\n if (this.updating) this.updating = false;\n\n this.dataUpdated = true;\n }\n\n @Watch(\"density\")\n async densityHandler(): Promise<void> {\n this.densityUpdate = true;\n }\n\n private removeTextWrap = (): void => {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const tableCell = typographyEl.closest(\"td\");\n if (tableCell.classList.contains(this.TEXT_WRAP_STRING)) {\n tableCell.classList.remove(this.TEXT_WRAP_STRING);\n }\n }\n );\n };\n\n private getCellContainer = (\n typographyEl: HTMLIcTypographyElement\n ): HTMLElement => {\n return typographyEl.closest(\".cell-container\");\n };\n\n private deleteTextWrapDataKey = (\n array: IcDataTableColumnObject[] | object[]\n ) =>\n Array.isArray(array) &&\n array.forEach((val) => val.textWrap && delete val.textWrap);\n\n private resetShowHideTruncation(typographyEl?: HTMLIcTypographyElement) {\n if (typographyEl) {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (\n truncWrapper?.scrollHeight > cellContainer?.clientHeight &&\n !isEmptyString(typographyEl.getAttribute(\"max-lines\")) &&\n Math.floor(cellContainer?.clientHeight / this.DEFAULT_LINE_HEIGHT) !==\n +typographyEl.getAttribute(\"max-lines\")\n ) {\n typographyEl.checkMaxLines(truncWrapper.scrollHeight);\n typographyEl.setAttribute(\n \"max-lines\",\n `${Math.floor(\n cellContainer?.clientHeight / this.DEFAULT_LINE_HEIGHT\n )}`\n );\n typographyEl.setShowHideExpanded(false);\n\n cellContainer.style.setProperty(this.ROW_HEIGHT_CSS_VARIABLE, null);\n } else {\n typographyEl.resetTruncation().then(() => {\n if (!typographyEl.closest(this.TEXT_WRAP_CLASS)) {\n cellContainer.style.setProperty(\n this.ROW_HEIGHT_CSS_VARIABLE,\n cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING)\n );\n }\n });\n }\n } else {\n this.getTypographyElements().forEach((typographyEl) => {\n const cellContainer = this.getCellContainer(typographyEl);\n\n typographyEl.resetTruncation().then(() => {\n if (!typographyEl.closest(this.TEXT_WRAP_CLASS)) {\n cellContainer.style.setProperty(\n this.ROW_HEIGHT_CSS_VARIABLE,\n cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING)\n );\n }\n });\n });\n }\n }\n\n @Watch(\"globalRowHeight\")\n @Watch(\"variableRowHeight\")\n rowHeightChangeHandler(newValue: number, oldValue: number): void {\n if (+newValue !== +oldValue) {\n this.deleteTextWrapDataKey(this.data);\n this.deleteTextWrapDataKey(this.columns);\n this.removeTextWrap();\n\n this.icRowHeightChange.emit();\n\n this.rowHeightSet = true;\n }\n }\n\n /**\n * Resets the `globalRowHeight` prop to number or auto and sets the `variableRowHeight` prop to `null`.\n */\n @Method()\n async resetRowHeights(rowHeight?: number | \"auto\"): Promise<void> {\n this.globalRowHeight = rowHeight || \"auto\";\n this.variableRowHeight = null;\n }\n\n private showLoadingIndicator() {\n this.loadingIndicator.classList.add(\"show\");\n }\n\n private startLoadingTimer = (): void => {\n this.hasLoadedForOneSecond = false;\n this.timerStarted = Date.now();\n setTimeout(() => {\n this.hasLoadedForOneSecond = true;\n this.timerStarted = null;\n }, this.minimumLoadingDisplayDuration);\n };\n\n private isObject = (value: any) => typeof value === \"object\";\n\n private notDefaultDensity = () => this.density !== \"default\";\n\n private getCellContent = (\n cell: any,\n dataType: IcDataTableColumnDataTypes\n ): any => {\n switch (dataType) {\n case \"element\":\n return undefined;\n case \"date\":\n return (\n cell instanceof Date ? cell : new Date(cell)\n ).toLocaleDateString();\n default:\n return cell;\n }\n };\n\n private getCellAlignment = (\n cell: any,\n alignment: \"horizontal\" | \"vertical\"\n ) => {\n if (this.isObject(cell) && Object.keys(cell).includes(\"cellAlignment\")) {\n return this.getObjectValue(\n this.getObjectValue(cell, \"cellAlignment\"),\n alignment\n );\n }\n };\n\n private getCellOptions = (cell: any, key: string) => {\n if (!(this.isObject(cell) && Object.keys(cell).includes(key))) return;\n\n return this.getObjectValue(cell, key);\n };\n\n private createUpdatingIndicator = () => {\n const { appearance, description, max, min, progress } =\n this.updatingOptions || {};\n return (\n <th colSpan={this.columns.length} class=\"updating-state\">\n <ic-loading-indicator\n appearance={appearance}\n description={description || \"Updating table data\"}\n fullWidth={true}\n max={max}\n min={min}\n progress={progress}\n type=\"linear\"\n size=\"small\"\n ></ic-loading-indicator>\n </th>\n );\n };\n\n private setRowHeight = (height: number) => {\n return pxToRem(\n `${\n height * this.DENSITY_HEIGHT_MULTIPLIER[this.density] -\n this.DENSITY_PADDING_HEIGHT_DIFF[this.density]\n }px`\n );\n };\n\n private setTruncationClass = () => {\n if (this.truncationPattern) {\n return { [`truncation-${this.truncationPattern}`]: true };\n }\n\n return {};\n };\n\n private getColumnWidth = (\n columnWidth?: string | IcDataTableColumnWidthTypes\n ) => {\n // TODO: Setting max width on columns\n let columnWidthStyling = {};\n\n if (columnWidth) {\n if (typeof columnWidth === \"string\") {\n columnWidthStyling = {\n ...columnWidthStyling,\n [\"--column-width\"]: columnWidth,\n };\n }\n\n if (typeof columnWidth === \"object\" && !!Object.keys(columnWidth)) {\n if (columnWidth?.minWidth) {\n columnWidthStyling = {\n ...columnWidthStyling,\n [\"--column-min-width\"]: columnWidth?.minWidth,\n };\n }\n\n if (columnWidth?.maxWidth) {\n columnWidthStyling = {\n ...columnWidthStyling,\n [\"--column-max-width\"]: columnWidth?.maxWidth,\n };\n }\n }\n }\n\n return columnWidthStyling;\n };\n\n private getRowHeight = (\n currentRowHeight: number,\n columnProps: IcDataTableColumnObject,\n rowTextWrap: boolean,\n cell: any\n ) => {\n if (\n (this.truncationPattern || currentRowHeight) &&\n !columnProps?.textWrap &&\n !rowTextWrap &&\n !this.getCellOptions(cell, \"textWrap\") &&\n columnProps?.dataType !== \"element\"\n ) {\n return {\n [this.ROW_HEIGHT_CSS_VARIABLE]: this.setRowHeight(currentRowHeight),\n };\n }\n\n return {};\n };\n\n private createCells = (row: IcDataTableDataType, rowIndex: number) => {\n const rowValues = Object.values(row);\n const rowKeys = Object.keys(row);\n\n const rowOptions = this.getRowOptions(rowKeys, rowValues);\n let rowAlignment: string;\n let rowEmphasis: string;\n\n const headerIndex = rowKeys.indexOf(\"header\");\n if (headerIndex > -1) {\n rowAlignment = this.getObjectValue(\n rowValues[headerIndex],\n \"rowAlignment\"\n );\n rowEmphasis = this.getObjectValue(rowValues[headerIndex], \"emphasis\");\n }\n\n const variableRowHeightVal = this.variableRowHeight?.({\n ...row,\n index: rowIndex,\n });\n const currentRowHeight = variableRowHeightVal\n ? variableRowHeightVal !== \"auto\" && variableRowHeightVal\n : this.globalRowHeight !== \"auto\" && this.globalRowHeight;\n\n return rowValues.map((cell, index) => {\n const columnProps = this.columns[index];\n const cellSlotName = `${columnProps?.key}-${rowIndex}`;\n const hasIcon = this.isObject(cell) && Object.keys(cell).includes(\"icon\");\n const cellValue = (key: string) => this.getObjectValue(cell, key);\n\n if (rowKeys[index] === \"header\") {\n return (\n <th\n scope=\"row\"\n colSpan={cellValue(\"colspan\")}\n class={{\n [\"row-header\"]: true,\n [`row-header-alignment-${cellValue(\"cellAlignment\")}`]:\n !!cellValue(\"cellAlignment\"),\n [\"row-header-sticky\"]: this.stickyRowHeaders,\n }}\n >\n {cellValue(\"title\")}\n </th>\n );\n }\n\n if (rowKeys[index] !== \"rowOptions\") {\n return (\n <td\n class={{\n [\"table-cell\"]: true,\n [`table-density-${this.density}`]: this.notDefaultDensity(),\n [\"with-overflow\"]: columnProps?.dataType === \"element\",\n }}\n style={{ ...this.getColumnWidth(columnProps.columnWidth) }}\n >\n <div\n innerHTML={\n columnProps?.dataType === \"element\" &&\n !isSlotUsed(this.el, cellSlotName)\n ? (cell as string)\n : null\n }\n class={{\n \"cell-container\": columnProps?.dataType !== \"element\",\n [`cell-alignment-${\n columnProps?.columnAlignment?.vertical ||\n rowOptions?.rowAlignment?.vertical ||\n rowAlignment ||\n this.getCellAlignment(cell, \"vertical\")\n }`]:\n !!columnProps?.columnAlignment?.vertical ||\n !!rowOptions?.rowAlignment?.vertical ||\n !!rowAlignment ||\n !!this.getCellAlignment(cell, \"vertical\"),\n [`cell-alignment-${\n columnProps?.columnAlignment?.horizontal ||\n rowOptions?.rowAlignment?.horizontal ||\n this.getCellAlignment(cell, \"horizontal\")\n }`]:\n !!columnProps?.columnAlignment?.horizontal ||\n !!rowOptions?.rowAlignment?.horizontal ||\n !!this.getCellAlignment(cell, \"horizontal\"),\n [`data-type-${columnProps?.dataType}`]: true,\n [this.TEXT_WRAP_STRING]:\n columnProps?.textWrap ||\n rowOptions?.textWrap ||\n !!this.getCellOptions(cell, \"textWrap\"),\n [\"cell-icon\"]: hasIcon || !!columnProps?.icon?.icon,\n ...this.setTruncationClass(),\n }}\n style={{\n ...this.getRowHeight(\n currentRowHeight,\n columnProps,\n rowOptions?.textWrap,\n cell\n ),\n ...this.getColumnWidth(columnProps?.columnWidth),\n }}\n data-row-height={\n this.truncationPattern || currentRowHeight\n ? this.setRowHeight(currentRowHeight)\n : null\n }\n >\n {isSlotUsed(this.el, cellSlotName) ? (\n <slot name={cellSlotName} />\n ) : (\n <Fragment>\n {isSlotUsed(this.el, `${cellSlotName}-icon`) ? (\n <slot name={`${cellSlotName}-icon`} />\n ) : (\n (hasIcon || columnProps?.icon?.onAllCells) &&\n (cellValue(\"icon\") || columnProps?.icon?.icon) && (\n <span\n class=\"icon\"\n innerHTML={cellValue(\"icon\") || columnProps?.icon?.icon}\n ></span>\n )\n )}\n {columnProps?.dataType !== \"element\" &&\n !isSlotUsed(this.el, cellSlotName) && (\n <ic-typography\n variant=\"body\"\n class={{\n [`cell-emphasis-${\n (this.isObject(cell) && cellValue(\"emphasis\")) ||\n columnProps?.emphasis ||\n rowEmphasis\n }`]:\n (this.isObject(cell) && !!cellValue(\"emphasis\")) ||\n !!columnProps?.emphasis ||\n !!rowEmphasis,\n [`text-${this.density}`]: this.notDefaultDensity(),\n }}\n >\n {this.isObject(cell) &&\n columnProps?.dataType !== \"date\" ? (\n Object.keys(cell).includes(\"href\") ? (\n <ic-link href={cellValue(\"href\")}>\n {cellValue(\"data\")}\n </ic-link>\n ) : (\n cellValue(\"data\")\n )\n ) : (\n this.getCellContent(cell, columnProps?.dataType)\n )}\n </ic-typography>\n )}\n </Fragment>\n )}\n </div>\n </td>\n );\n }\n });\n };\n\n private createColumnHeaders = () => {\n return this.columns.map(\n ({ cellAlignment, colspan, icon, key, title, columnWidth }) => (\n <th\n scope=\"col\"\n class={{\n [\"column-header\"]: true,\n [`table-density-${this.density}`]: this.notDefaultDensity(),\n [\"updating-state-headers\"]: this.updating && !this.loading,\n }}\n style={{ ...this.getColumnWidth(columnWidth) }}\n colSpan={colspan}\n >\n <div\n class={{\n \"column-header-inner-container\": true,\n [`column-header-alignment-${cellAlignment}`]: !!cellAlignment,\n }}\n >\n {isSlotUsed(this.el, `${key}-column-icon`) ? (\n <slot name={`${key}-column-icon`} />\n ) : (\n icon &&\n !icon.hideOnHeader && (\n <span class=\"icon\" innerHTML={icon.icon}></span>\n )\n )}\n <ic-typography\n variant=\"body\"\n class={{\n [\"column-header-text\"]: true,\n [`text-${this.density}`]: this.notDefaultDensity(),\n }}\n >\n {title}\n </ic-typography>\n {this.sortable && (\n <ic-button\n variant=\"icon\"\n id={`sort-button-${key}`}\n aria-label={this.getSortButtonLabel(key)}\n // eslint-disable-next-line react/jsx-no-bind\n onClick={() => this.sortRows(key)}\n innerHTML={\n this.SORT_ICONS[\n this.sortedColumn === key\n ? this.sortedColumnOrder\n : \"unsorted\"\n ]\n }\n class={{\n [\"sort-button\"]: true,\n [\"sort-button-unsorted\"]:\n this.sortedColumn !== key ||\n this.sortedColumnOrder === \"unsorted\",\n }}\n ></ic-button>\n )}\n </div>\n </th>\n )\n );\n };\n\n private onRowClick = (row: object) => {\n this.selectedRow =\n this.selectedRow !== row && !this.loading && !this.updating && row;\n };\n\n private createRows = () => {\n const data = this.showPagination\n ? this.data.slice(this.fromRow, this.toRow)\n : this.data.slice();\n\n /**\n * Ensures that createCells has a value in data to map over to actually render the slot.\n * Removes the need for the user to add it multiple times.\n * `addDataToPosition` used to add the element in the correct column order.\n * Adding empty string value in to give `createCells` something to loop over.\n */\n const organisedData = data.map((row, rowIndex) => {\n const slottedColumns = this.columns\n .map(\n ({ key }, index) =>\n isSlotUsed(this.el, `${key}-${rowIndex}`) && { key, index }\n )\n .filter((col) => !!col);\n return slottedColumns.length > 0\n ? addDataToPosition(row, slottedColumns, \"\")\n : row;\n });\n\n return organisedData\n .sort(!this.sortable ? undefined : this.getSortFunction())\n .map((row, index) => {\n return (\n <tr\n // eslint-disable-next-line react/jsx-no-bind\n onClick={() => this.onRowClick(row)}\n class={{\n [\"table-row\"]: true,\n [\"table-row-selected\"]: this.selectedRow === row,\n }}\n >\n {this.createCells(row, index)}\n </tr>\n );\n });\n };\n\n private getObjectValue = (cell: object, key: string) => {\n return Object.values(cell)[Object.keys(cell).indexOf(key)];\n };\n\n private getSortButtonLabel = (key: string) => {\n let label = \"\";\n const getNextSortOption = (option: IcDataTableSortOrderOptions) => {\n const sortOrders = this.sortOptions.sortOrders;\n return sortOrders[(sortOrders.indexOf(option) + 1) % sortOrders.length];\n };\n\n if (this.sortedColumn === key) {\n const sortOption = getNextSortOption(this.sortedColumnOrder);\n label = sortOption !== \"unsorted\" ? `Sort ${sortOption}` : \"Remove sort\";\n } else {\n label = `Sort ${getNextSortOption(\"unsorted\")}`;\n }\n\n return label;\n };\n\n private getComparison = (targetRow: any, comparisonRow: any): number => {\n const targetRowValue = targetRow[this.sortedColumn];\n const comparisonRowValue = comparisonRow[this.sortedColumn];\n return this.columns.find((col) => col.key === this.sortedColumn)\n .dataType === \"date\"\n ? new Date(targetRowValue).valueOf() -\n new Date(comparisonRowValue).valueOf()\n : String(\n this.isObject(targetRowValue)\n ? Object.values(targetRowValue)[0]\n : targetRowValue\n ).localeCompare(\n String(\n this.isObject(comparisonRowValue)\n ? Object.values(comparisonRowValue)[0]\n : comparisonRowValue\n ),\n undefined,\n { numeric: true, sensitivity: \"base\" }\n );\n };\n\n private getSortFunction = () => {\n switch (this.sortedColumnOrder) {\n case \"ascending\":\n return (a: any, b: any) => this.getComparison(a, b);\n case \"descending\":\n return (a: any, b: any) => this.getComparison(b, a);\n default:\n return undefined;\n }\n };\n\n private sortRows = (column: string) => {\n const sortButton = this.el.shadowRoot.querySelector(\n `#sort-button-${column}`\n ) as HTMLIcButtonElement;\n\n const sortOrders = this.sortOptions.sortOrders;\n\n if (column !== this.sortedColumn) {\n if (this.sortedColumn) {\n const previousSortedButton = this.el.shadowRoot.querySelector(\n `#sort-button-${this.sortedColumn}`\n ) as HTMLIcButtonElement;\n previousSortedButton.setAttribute(\n \"aria-label\",\n this.getSortButtonLabel(column)\n ); // Passing through unsorted column returns correct label for newly unsorted column\n }\n this.sortedColumn = column;\n this.sortedColumnOrder = \"unsorted\";\n }\n\n let nextSortOrderIndex = sortOrders.indexOf(this.sortedColumnOrder) + 1;\n\n if (nextSortOrderIndex > sortOrders.length - 1) {\n nextSortOrderIndex = 0;\n }\n\n this.sortedColumnOrder = sortOrders[nextSortOrderIndex];\n\n sortButton.setAttribute(\"aria-label\", this.getSortButtonLabel(column));\n\n this.tableSorted = true;\n\n this.icSortChange.emit({\n columnName: column,\n sorted: this.sortedColumnOrder,\n });\n };\n\n private getTypographyElements = (): HTMLIcTypographyElement[] => {\n return Array.from(\n this.el.shadowRoot.querySelectorAll(\n \"ic-typography:not(.column-header-text)\"\n )\n );\n };\n\n private getTooltip = (\n typographyEl: HTMLIcTypographyElement\n ): HTMLIcTooltipElement => {\n return typographyEl.closest(this.TOOLTIP);\n };\n\n private updateTruncationTooltip = (removeTooltipOnly = false) => {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const tooltip = this.getTooltip(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (typographyEl.closest(this.TEXT_WRAP_CLASS)) {\n this.removeTooltip(cellContainer, typographyEl, tooltip);\n typographyEl.setAttribute(\"style\", `--ic-line-clamp: 0`);\n return;\n }\n\n this.regenerateTooltip(\n cellContainer,\n typographyEl,\n tooltip,\n removeTooltipOnly\n );\n }\n );\n };\n\n private updateScrollOffset = () => {\n this.scrollOffset = this.el.shadowRoot.querySelector(\n \".table-row-container\"\n ).scrollTop;\n };\n\n private getRowOptions(rowKeys: string[], rowValues: any[]) {\n const rowOptionsIndex = rowKeys.indexOf(\"rowOptions\");\n return rowOptionsIndex > -1 && rowValues[rowOptionsIndex];\n }\n\n private regenerateTooltip(\n cellContainer: HTMLElement,\n typographyEl: HTMLIcTypographyElement,\n tooltip: HTMLIcTooltipElement,\n removeTooltipOnly?: boolean\n ) {\n // When sorting the table, instead of regenerating the tooltip,\n // the tooltip details are updated\n\n if (tooltip) {\n if (this.tableSorted) {\n tooltip.setAttribute(\"target\", typographyEl.id);\n tooltip.setAttribute(\"label\", typographyEl.textContent);\n } else {\n this.removeTooltip(cellContainer, typographyEl, tooltip);\n }\n if (removeTooltipOnly) {\n return;\n }\n }\n\n // This add line clamp to data only when\n // the data object has been updated\n if (!typographyEl.getAttribute(\"style\") && this.dataUpdated) {\n this.addLineClampCSS(typographyEl, cellContainer);\n }\n\n if (\n typographyEl?.scrollHeight > cellContainer?.clientHeight &&\n this.truncationPattern === this.TOOLTIP_STRING\n ) {\n if (\n !typographyEl.getAttribute(\"style\") ||\n typographyEl.style.cssText.includes(\"--ic-line-clamp: 0;\")\n ) {\n this.addLineClampCSS(typographyEl, cellContainer);\n }\n this.createTruncationTooltip(typographyEl, cellContainer);\n }\n }\n private setTableDimensions = () => {\n let tableHostDimensions = {};\n\n if (this.width) {\n tableHostDimensions = {\n ...tableHostDimensions,\n [\"--table-width\"]: this.width,\n };\n }\n\n if (this.height) {\n tableHostDimensions = {\n ...tableHostDimensions,\n [\"--table-height\"]: this.height,\n };\n }\n\n if (this.maxWidth) {\n tableHostDimensions = {\n ...tableHostDimensions,\n [\"--table-max-width\"]: this.maxWidth,\n };\n }\n\n if (this.minWidth) {\n tableHostDimensions = {\n ...tableHostDimensions,\n [\"--table-min-width\"]: this.minWidth,\n };\n }\n\n return tableHostDimensions;\n };\n\n private removeTooltip(\n cellContainer: HTMLElement,\n typographyEl: HTMLIcTypographyElement,\n tooltip: HTMLIcTooltipElement\n ) {\n cellContainer.appendChild(typographyEl);\n if (tooltip) {\n tooltip.remove();\n }\n }\n\n private addLineClampCSS(\n typographyEl: HTMLIcTypographyElement,\n cellContainer: HTMLElement\n ) {\n typographyEl.setAttribute(\n \"style\",\n `--ic-line-clamp: ${this.getLines(cellContainer?.clientHeight)}`\n );\n }\n\n private createTruncationTooltip(\n typographyEl: HTMLIcTypographyElement,\n cellContainer: HTMLElement\n ) {\n const tooltipEl = document.createElement(\"ic-tooltip\");\n tooltipEl.setAttribute(\"target\", typographyEl.id);\n tooltipEl.setAttribute(\"label\", typographyEl.textContent);\n tooltipEl.classList.add(\"ic-tooltip-overflow\");\n tooltipEl.setExternalPopperProps({\n // This might need reverting back to absolute if the tooltip doesn't dynamically position itself correctly\n strategy: \"fixed\",\n });\n cellContainer.appendChild(tooltipEl);\n tooltipEl.appendChild(typographyEl);\n }\n\n private fixCellTooltips = () => {\n const elements = this.el.shadowRoot.querySelectorAll(\".data-type-element\");\n elements.forEach((element) => {\n const slotElements = getSlotElements(element);\n slotElements.forEach((slottedEl: HTMLElement) => {\n const tooltipEl = (\n slottedEl.tagName === \"IC-TOOLTIP\"\n ? slottedEl\n : slottedEl.shadowRoot?.querySelector(\"ic-tooltip\")\n ) as HTMLIcTooltipElement;\n if (tooltipEl) {\n tooltipEl.setExternalPopperProps({\n strategy: \"fixed\",\n });\n }\n });\n });\n };\n\n render() {\n const {\n caption,\n createColumnHeaders,\n createRows,\n createUpdatingIndicator,\n data,\n hideColumnHeaders,\n loading,\n loadingOptions,\n paginationBarOptions,\n scrollable,\n scrollOffset,\n showPagination,\n sortable,\n sortedColumnOrder,\n sortedColumn,\n stickyColumnHeaders,\n updateScrollOffset,\n updating,\n } = this;\n\n return (\n <Host style={{ ...this.setTableDimensions() }}>\n <div class=\"table-container\">\n {isSlotUsed(this.el, \"title-bar\") && <slot name=\"title-bar\" />}\n <div\n class={{\n [\"table-row-container\"]: true,\n scrollable,\n }}\n tabIndex={scrollable ? 0 : null}\n onScroll={updateScrollOffset}\n >\n {isSlotUsed(this.el, \"title-bar\") && <slot name=\"title-bar\" />}\n <table\n style={{\n [\"--table-layout\"]: this.tableLayout,\n }}\n >\n <caption class=\"table-caption\">{caption}</caption>\n {!hideColumnHeaders && (\n <thead\n class={{\n [\"column-header-sticky\"]: stickyColumnHeaders,\n [\"column-header-overlay\"]:\n stickyColumnHeaders && scrollOffset !== 0,\n }}\n >\n <tr>{createColumnHeaders()}</tr>\n </thead>\n )}\n {updating &&\n !loading &&\n (hideColumnHeaders ? (\n <thead>{createUpdatingIndicator()}</thead>\n ) : (\n createUpdatingIndicator()\n ))}\n {data?.length > 0 && !loading && <tbody>{createRows()}</tbody>}\n </table>\n {!data?.length &&\n !loading &&\n (isSlotUsed(this.el, \"empty-state\") ? (\n <slot name=\"empty-state\" />\n ) : (\n <ic-empty-state\n aligned=\"center\"\n heading=\"No Data\"\n class=\"loading-empty\"\n ></ic-empty-state>\n ))}\n </div>\n {loading && (\n <ic-loading-indicator\n appearance={loadingOptions?.appearance}\n class={{\n \"loading-empty\": loading,\n loading: true,\n \"show-background\": loadingOptions.showBackground,\n }}\n description={loadingOptions.description || \"Loading table data\"}\n label={loadingOptions.label || \"Loading...\"}\n labelDuration={loadingOptions?.labelDuration}\n max={loadingOptions?.max}\n min={loadingOptions?.min}\n progress={loadingOptions?.progress}\n ref={(el: HTMLIcLoadingIndicatorElement) =>\n (this.loadingIndicator = el)\n }\n ></ic-loading-indicator>\n )}\n {(showPagination || isSlotUsed(this.el, \"pagination-bar\")) && (\n <div class=\"pagination-container\">\n {isSlotUsed(this.el, \"pagination-bar\") ? (\n <slot name=\"pagination-bar\" />\n ) : (\n <ic-pagination-bar\n totalItems={data.length}\n type={paginationBarOptions.type}\n rangeLabelType={paginationBarOptions.rangeLabelType}\n showItemsPerPageControl={\n paginationBarOptions.showItemsPerPageControl\n }\n showGoToPageControl={paginationBarOptions.showGoToPageControl}\n itemsPerPageOptions={paginationBarOptions.itemsPerPageOptions}\n alignment={paginationBarOptions.alignment}\n appearance={paginationBarOptions.appearance}\n itemLabel={paginationBarOptions.itemLabel}\n pageLabel={paginationBarOptions.pageLabel}\n hideRangeLabel={paginationBarOptions.hideRangeLabel}\n hideAllFromItemsPerPage={\n paginationBarOptions.hideAllFromItemsPerPage\n }\n ></ic-pagination-bar>\n )}\n </div>\n )}\n {sortable && (\n <div class=\"screen-reader-sort-text\" aria-live=\"polite\">\n {sortedColumnOrder !== \"unsorted\" && sortedColumn\n ? `${sortedColumn} sorted ${sortedColumnOrder}`\n : \"table unsorted\"}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icPopoverMenuCss","PopoverMenu","constructor","hostRef","this","ARIA_LABEL","popoverMenuEls","setButtonFocus","_a","currentFocus","focus","findAnchorEl","anchor","anchorElement","submenuId","undefined","console","error","document","querySelector","indexOf","isNotPopoverMenuEl","ev","id","tagName","target","getNextItemToSelect","currentItem","movingDown","numButtons","length","nextItem","addMenuItems","elements","i","el","push","groupSlotWrapper","shadowRoot","menuGroupElements","getSlotElements","getMenuAriaLabel","ariaLabel","getAttribute","isPropDefined","submenuLevel","parentLabel","handleBackButtonClick","parentPopover","openFromChild","open","initPopperJS","popperInstance","createPopper","anchorEl","placement","modifiers","name","options","offset","fallbackPlacements","rootBoundary","openingFromChild","openingFromParent","watchOpenHandler","some","menuItem","unshift","backButton","setTimeout","destroy","disconnectedCallback","componentDidLoad","slotWrapper","popoverMenuElements","componentWillRender","componentDidRender","handleMenuItemClick","detail","hasSubMenu","label","closeMenu","handleSubmenuChange","childEl","submenuTriggerFor","openFromParent","handleClick","handleKeyDown","key","preventDefault","blur","setFocusToAnchor","icPopoverClosed","emit","render","h","Host","class","menu","tabindex","ref","onClick","slot","viewBox","fill","xmlns","d","variant","role","delegatesFocus"],"sources":["../web-components/dist/collection/components/ic-popover-menu/ic-popover-menu.css?tag=ic-popover-menu&encapsulation=shadow","../web-components/dist/collection/components/ic-popover-menu/ic-popover-menu.js"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font-style: inherit;\n vertical-align: baseline;\n}\n\n\n/**\n* @prop --ic-z-index-popover: z-index of popover menu. \n* @prop --max-height: Maximum height of the popover menu.\n* @prop --popover-width: Default width of the popover menu.\n*/\n\n@media (prefers-reduced-motion: no-preference) {\n :host .opening-from-parent {\n animation: slide-in var(--ic-transition-duration-slow) ease-in-out;\n }\n\n :host .opening-from-child {\n animation: slide-out var(--ic-transition-duration-slow) ease-in-out;\n }\n}\n\n:host {\n border-radius: var(--ic-border-radius);\n color: var(--ic-color-primary-text);\n background-color: var(--ic-architectural-white);\n position: relative;\n z-index: var(--ic-z-index-popover);\n box-sizing: border-box;\n box-shadow: var(--ic-elevation-overlay);\n display: none;\n}\n\n:host(.on-dialog) {\n inset: auto !important;\n}\n\n:host(.on-dialog-fix-translate) {\n transform: translate(0, var(--ic-space-xs)) !important;\n}\n\n:host(.on-dialog-translate-y) {\n transform: translate(0, calc(-1 * var(--translate-y))) !important;\n}\n\n.menu {\n border: var(--ic-border-default);\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-architectural-white);\n visibility: hidden;\n height: 0;\n}\n\n.button {\n text-decoration: none;\n list-style-type: none;\n}\n\n:host(:focus-within) {\n box-shadow: var(--ic-border-focus);\n}\n\n.menu:focus-visible {\n outline: none;\n}\n\n:host(.open) {\n display: block;\n min-width: calc(20rem - var(--ic-space-xl));\n width: var(--popover-width, 20rem);\n max-width: calc(100vw - var(--ic-space-xl));\n}\n\n:host(.open) .menu {\n visibility: visible;\n height: -moz-fit-content;\n height: fit-content;\n max-height: var(--max-height, -moz-fit-content);\n max-height: var(--max-height, fit-content);\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.parent-label {\n color: var(--ic-color-tertiary-text);\n margin: var(--ic-space-xs) var(--ic-space-xs) 0;\n}\n\n@keyframes slide-in {\n from {\n opacity: 0;\n transform: translateX(10rem);\n }\n\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n@keyframes slide-out {\n from {\n opacity: 0;\n transform: translateX(-10rem);\n }\n\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n","import { Host, h, } from \"@stencil/core\";\nimport { getSlotElements, isPropDefined } from \"../../utils/helpers\";\nimport { createPopper } from \"@popperjs/core\";\nexport class PopoverMenu {\n constructor() {\n this.ARIA_LABEL = \"aria-label\";\n this.popoverMenuEls = [];\n this.setButtonFocus = () => {\n var _a;\n (_a = this.popoverMenuEls[this.currentFocus]) === null || _a === void 0 ? void 0 : _a.focus();\n };\n // Checks that the popover menu has an anchor\n this.findAnchorEl = (anchor) => {\n let anchorElement = null;\n if (!anchor) {\n this.submenuId === undefined &&\n console.error(\"No anchor specified for popover component\");\n }\n else {\n anchorElement = document.querySelector(anchor.indexOf(\"#\") === 0 ? anchor : \"#\" + anchor);\n if (anchorElement === null) {\n console.error(`Popover anchor element '${anchor}' not found`);\n }\n }\n return anchorElement;\n };\n this.isNotPopoverMenuEl = (ev) => {\n const { id, tagName } = ev.target;\n return (id !== this.anchor &&\n tagName !== \"IC-MENU-ITEM\" &&\n tagName !== \"IC-MENU-GROUP\" &&\n tagName !== \"IC-POPOVER-MENU\");\n };\n this.getNextItemToSelect = (currentItem, movingDown) => {\n const numButtons = this.popoverMenuEls.length - 1;\n if (currentItem < 1) {\n currentItem = 0;\n }\n let nextItem = movingDown ? currentItem + 1 : currentItem - 1;\n // Check if wrap around necessary\n if (nextItem < 0) {\n nextItem = numButtons;\n }\n else if (nextItem > numButtons) {\n nextItem = 0;\n }\n return nextItem;\n };\n this.addMenuItems = (elements) => {\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i];\n if (el.tagName === \"IC-MENU-ITEM\") {\n this.popoverMenuEls.push(el);\n }\n else if (el.tagName === \"IC-MENU-GROUP\") {\n const groupSlotWrapper = el.shadowRoot.querySelector(\"ul\");\n const menuGroupElements = getSlotElements(groupSlotWrapper);\n this.addMenuItems(menuGroupElements);\n }\n }\n };\n this.getMenuAriaLabel = () => {\n const ariaLabel = this.el.getAttribute(this.ARIA_LABEL);\n if (isPropDefined(this.submenuId)) {\n return `${ariaLabel}, within nested level ${this.submenuLevel} ${this.parentLabel} submenu,`;\n }\n else {\n return ariaLabel;\n }\n };\n this.handleBackButtonClick = () => {\n this.parentPopover.openFromChild();\n this.open = false;\n };\n this.initPopperJS = () => {\n this.popperInstance = createPopper(this.anchorEl, this.el, {\n placement: \"bottom-start\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 4],\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"top-start\", \"top-end\", \"bottom-end\"],\n rootBoundary: \"viewport\",\n },\n },\n ],\n });\n };\n this.openingFromChild = false;\n this.openingFromParent = false;\n this.anchor = undefined;\n this.parentLabel = undefined;\n this.parentPopover = undefined;\n this.submenuId = undefined;\n this.submenuLevel = 1;\n this.open = undefined;\n }\n watchOpenHandler() {\n if (this.open) {\n if (this.parentPopover !== undefined &&\n !this.popoverMenuEls.some((menuItem) => menuItem.id)) {\n this.popoverMenuEls.unshift(this.backButton);\n }\n this.currentFocus = 0;\n // Needed so that anchorEl isn't always focused\n setTimeout(this.setButtonFocus, 50);\n }\n else if (this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = null;\n }\n }\n disconnectedCallback() {\n if (this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = null;\n }\n }\n componentDidLoad() {\n const slotWrapper = this.el.shadowRoot.querySelector(\"ul.button\");\n const popoverMenuElements = getSlotElements(slotWrapper);\n if (popoverMenuElements !== null) {\n this.addMenuItems(popoverMenuElements);\n }\n if (this.submenuId === undefined &&\n this.el.getAttribute(this.ARIA_LABEL) === null) {\n console.error(`No aria-label specified for popover menu component - aria-label required`);\n }\n }\n componentWillRender() {\n this.anchorEl = this.findAnchorEl(this.anchor);\n }\n componentDidRender() {\n if (this.open && !this.popperInstance) {\n this.initPopperJS();\n }\n }\n handleMenuItemClick(ev) {\n if (!ev.detail.hasSubMenu && ev.detail.label !== \"Back\") {\n this.closeMenu();\n }\n }\n // This is listening for the event emitted when a menu item is acting as a trigger button\n handleSubmenuChange(ev) {\n // Finds the trigger menu item that has emitted the event\n const target = ev.target;\n this.open = false;\n // Find the popover menu that the menu item triggers (i.e. submenu-trigger-for === submenu-id).\n const childEl = document.querySelector(`ic-popover-menu[submenu-id=${target.submenuTriggerFor}]`);\n // Set the parent popover menu of the submenu and open the submenu\n childEl.parentPopover = this.el;\n childEl.anchor = this.anchor;\n childEl.ariaLabel = this.el.getAttribute(this.ARIA_LABEL);\n childEl.openFromParent();\n childEl.submenuLevel = this.submenuLevel + 1;\n // Set the label in the submenu using the label of the menu item that has emitted the event\n childEl.parentLabel = target.label;\n }\n handleClick(ev) {\n if (this.open && this.isNotPopoverMenuEl(ev)) {\n // If menu is open and the next click on the document is not a popover El, close the popover\n this.closeMenu();\n }\n }\n // Manages the keyboard navigation in the popover menu\n handleKeyDown(ev) {\n switch (ev.key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n ev.preventDefault();\n this.currentFocus = this.getNextItemToSelect(this.currentFocus, ev.key === \"ArrowDown\");\n this.setButtonFocus();\n break;\n case \"Home\":\n //Sets home focus as first element, or back button\n this.currentFocus = 0;\n this.setButtonFocus();\n break;\n case \"End\":\n //Sets end focus as last element\n this.currentFocus = this.popoverMenuEls.length - 1;\n this.setButtonFocus();\n break;\n case \"Escape\":\n case \"Tab\":\n ev.preventDefault();\n if (this.open) {\n this.closeMenu(true);\n this.el.blur();\n }\n break;\n }\n }\n /**\n * @internal Opens the menu from the child menu.\n */\n async openFromChild() {\n this.open = true;\n this.openingFromChild = true;\n setTimeout(() => (this.openingFromChild = false), 1000);\n }\n /**\n * @internal Opens the menu from the parent menu.\n */\n async openFromParent() {\n this.open = true;\n this.openingFromParent = true;\n setTimeout(() => (this.openingFromParent = false), 1000);\n }\n /**\n * @internal Close the menu, emit icPopoverClosed of the root popover\n * @param setFocusToAnchor when true return focus to anchor element when menu is closed\n */\n async closeMenu(setFocusToAnchor = false) {\n var _a;\n this.open = false;\n if (this.parentPopover) {\n this.parentPopover.closeMenu(setFocusToAnchor);\n }\n else {\n if (setFocusToAnchor) {\n (_a = this.anchorEl) === null || _a === void 0 ? void 0 : _a.focus();\n }\n this.icPopoverClosed.emit();\n }\n }\n render() {\n return (h(Host, { class: { open: this.open } }, h(\"div\", { id: this.parentPopover === undefined\n ? `ic-popover-submenu-${this.submenuId}`\n : \"\", class: {\n menu: true,\n }, tabindex: open ? \"0\" : \"-1\" }, h(\"div\", { class: {\n \"opening-from-parent\": this.openingFromParent,\n \"opening-from-child\": this.openingFromChild,\n } }, isPropDefined(this.submenuId) && (h(\"div\", null, h(\"ic-menu-item\", { class: \"ic-popover-submenu-back-button\", ref: (el) => (this.backButton = el), label: \"Back\", onClick: this.handleBackButtonClick, id: `ic-popover-submenu-back-button-${this.submenuLevel}` }, h(\"svg\", { slot: \"icon\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", class: \"submenu-back-icon\" }, h(\"path\", { d: \"M20 11H7.83L13.42 5.41L12 4L4 12L12 20L13.41 18.59L7.83 13H20V11Z\", fill: \"currentColor\" }))), h(\"ic-typography\", { variant: \"subtitle-small\", class: \"parent-label\" }, this.parentLabel))), h(\"ul\", { class: \"button\", \"aria-label\": this.getMenuAriaLabel(), role: \"menu\" }, h(\"slot\", null))))));\n }\n static get is() { return \"ic-popover-menu\"; }\n static get encapsulation() { return \"shadow\"; }\n static get delegatesFocus() { return true; }\n static get originalStyleUrls() {\n return {\n \"$\": [\"ic-popover-menu.css\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"ic-popover-menu.css\"]\n };\n }\n static get properties() {\n return {\n \"anchor\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The ID of the element the popover menu will anchor itself to. This is required unless the popover is a submenu.\"\n },\n \"attribute\": \"anchor\",\n \"reflect\": false\n },\n \"parentLabel\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"The parent popover menu of a child popover menu.\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"parent-label\",\n \"reflect\": false\n },\n \"parentPopover\": {\n \"type\": \"unknown\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"HTMLIcPopoverMenuElement\",\n \"resolved\": \"HTMLIcPopoverMenuElement\",\n \"references\": {\n \"HTMLIcPopoverMenuElement\": {\n \"location\": \"global\",\n \"id\": \"global::HTMLIcPopoverMenuElement\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"The parent popover menu of a child popover menu.\"\n }],\n \"text\": \"\"\n }\n },\n \"submenuId\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The unique identifier for a popover submenu.\"\n },\n \"attribute\": \"submenu-id\",\n \"reflect\": false\n },\n \"submenuLevel\": {\n \"type\": \"number\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"number\",\n \"resolved\": \"number\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"The level of menu being displayed.\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"submenu-level\",\n \"reflect\": false,\n \"defaultValue\": \"1\"\n },\n \"open\": {\n \"type\": \"boolean\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the popover menu will be displayed.\"\n },\n \"attribute\": \"open\",\n \"reflect\": true,\n \"defaultValue\": \"undefined\"\n }\n };\n }\n static get states() {\n return {\n \"openingFromChild\": {},\n \"openingFromParent\": {}\n };\n }\n static get events() {\n return [{\n \"method\": \"icPopoverClosed\",\n \"name\": \"icPopoverClosed\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the popover menu is closed.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }];\n }\n static get methods() {\n return {\n \"openFromChild\": {\n \"complexType\": {\n \"signature\": \"() => Promise<void>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Opens the menu from the child menu.\"\n }]\n }\n },\n \"openFromParent\": {\n \"complexType\": {\n \"signature\": \"() => Promise<void>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Opens the menu from the parent menu.\"\n }]\n }\n },\n \"closeMenu\": {\n \"complexType\": {\n \"signature\": \"(setFocusToAnchor?: boolean) => Promise<void>\",\n \"parameters\": [{\n \"name\": \"setFocusToAnchor\",\n \"type\": \"boolean\",\n \"docs\": \"when true return focus to anchor element when menu is closed\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Close the menu, emit icPopoverClosed of the root popover\"\n }, {\n \"name\": \"param\",\n \"text\": \"setFocusToAnchor when true return focus to anchor element when menu is closed\"\n }]\n }\n }\n };\n }\n static get elementRef() { return \"el\"; }\n static get watchers() {\n return [{\n \"propName\": \"open\",\n \"methodName\": \"watchOpenHandler\"\n }];\n }\n static get listeners() {\n return [{\n \"name\": \"handleMenuItemClick\",\n \"method\": \"handleMenuItemClick\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"triggerPopoverMenuInstance\",\n \"method\": \"handleSubmenuChange\",\n \"target\": undefined,\n \"capture\": true,\n \"passive\": false\n }, {\n \"name\": \"click\",\n \"method\": \"handleClick\",\n \"target\": \"document\",\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"keydown\",\n \"method\": \"handleKeyDown\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }];\n }\n}\n//# sourceMappingURL=ic-popover-menu.js.map\n"],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icHorizontalScrollCss","SCROLL_DELAY_MS","HorizontalScroll","constructor","hostRef","this","buttonStateSet","focusHandler","event","itemFocusHandler","Array","from","items","indexOf","target","resizeObserverCallback","el","clientWidth","itemsContainerEl","scrollWidth","itemOverflow","elementOverflowsX","lastItemVisible","offsetWidth","scrollLeft","runResizeObserver","resizeObserver","ResizeObserver","observe","scrollItemIntoView","getCurrentLeftItem","scrollRight","longScrollRight","scrollDelay","window","setTimeout","longScrollLeft","leftArrowMouseDownHandler","e","preventDefault","rightArrowMouseDownHandler","arrowMouseUpHandler","clearTimeout","index","itemOffsets","findIndex","Math","round","scrollHandler","isScrolling","scrollStopped","firstItemVisible","appearance","focusTrigger","componentWillLoad","children","addEventListener","getSlotElements","forEach","item","componentDidLoad","runningTotal","map","checkResizeObserver","scrollArrows","shadowRoot","querySelectorAll","arrow","disconnectedCallback","undefined","disconnect","removeEventListener","itemPosition","newScrollPos","render","h","Host","class","IcThemeForegroundEnum","Dark","Light","role","variant","innerHTML","LeftArrow","disabled","tabindex","onClick","onMouseDown","RightArrow"],"sources":["../web-components/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.css?tag=ic-horizontal-scroll&encapsulation=shadow","../web-components/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font-style: inherit;\n vertical-align: baseline;\n}\n\n\n:host {\n --border-bottom-color: var(--ic-architectural-300);\n --splitter-color: var(--ic-architectural-100);\n\n display: flex;\n max-width: 100%;\n}\n\n:host(.light) {\n --splitter-color: var(--ic-keyline-lighten-rgb);\n}\n\n:host(.dark) {\n --splitter-color: var(--ic-keyline-darken-rgb);\n}\n\n/* Slotted items container element */\n::slotted(*) {\n overflow-x: scroll;\n overflow-y: hidden;\n scroll-behavior: smooth;\n scrollbar-width: none;\n -ms-overflow-style: none;\n margin: calc(var(--ic-space-xs) * -1) !important;\n padding: var(--ic-space-xs) !important;\n}\n\n:host(.visible) ::slotted(*) {\n margin: calc(var(--ic-space-xs) * -1) 0 !important;\n padding: var(--ic-space-xs) !important;\n}\n\n.tabs-container::-webkit-scrollbar {\n display: none;\n}\n\n.scroll-container-left,\n.scroll-container-right {\n display: flex;\n}\n\n.scroll-container-left {\n margin-left: var(--ic-space-xxs);\n}\n\n.scroll-container-right {\n margin-right: var(--ic-space-xxs);\n}\n\n.hidden {\n display: none;\n}\n\n.scroll-arrow {\n margin: var(--ic-space-xxs) 0;\n}\n\n.disabled .ic-tooltip-container {\n display: none !important;\n}\n\n.scroll-splitter-left,\n.scroll-splitter-right {\n display: flex;\n height: var(--ic-space-lg);\n width: var(--ic-space-1px);\n margin-top: var(--ic-space-xs);\n border-radius: var(--ic-space-1px);\n background-color: var(--splitter-color);\n}\n\n.scroll-splitter-left {\n margin-left: calc(var(--ic-space-xxs) - var(--ic-space-1px));\n}\n\n.scroll-splitter-right {\n margin-right: calc(var(--ic-space-xxs) - var(--ic-space-1px));\n}\n\n.disabled .scroll-splitter-left,\n.disabled .scroll-splitter-right {\n background-color: transparent;\n}\n\n.disabled ic-button > svg {\n color: var(--ic-keyline-darken-rgb);\n}\n\n:host(.dark) .disabled ic-button > svg,\n:host(.light) .disabled ic-button > svg {\n color: var(--splitter-color) !important;\n}\n","import { h, Host, } from \"@stencil/core\";\nimport LeftArrow from \"./assets/left-arrow.svg\";\nimport RightArrow from \"./assets/right-arrow.svg\";\nimport { getSlotElements } from \"../../utils/helpers\";\nimport { checkResizeObserver, elementOverflowsX } from \"../../utils/helpers\";\nimport { IcThemeForegroundEnum } from \"../../utils/types\";\nconst SCROLL_DELAY_MS = 200;\nexport class HorizontalScroll {\n constructor() {\n this.buttonStateSet = false;\n this.focusHandler = (event) => {\n this.itemFocusHandler(Array.from(this.items).indexOf(event.target));\n };\n this.resizeObserverCallback = () => {\n if (this.el.clientWidth >= this.itemsContainerEl.scrollWidth) {\n this.itemOverflow = false;\n }\n else {\n this.itemOverflow = elementOverflowsX(this.itemsContainerEl);\n }\n if (this.itemOverflow) {\n this.lastItemVisible =\n this.itemsContainerEl.offsetWidth + this.itemsContainerEl.scrollLeft >=\n this.itemsContainerEl.scrollWidth;\n }\n };\n this.runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.resizeObserverCallback();\n });\n this.resizeObserver.observe(this.itemsContainerEl);\n };\n this.scrollLeft = () => {\n this.scrollItemIntoView(this.getCurrentLeftItem() - 1);\n };\n this.scrollRight = () => {\n this.scrollItemIntoView(this.getCurrentLeftItem() + 1);\n };\n this.longScrollRight = () => {\n this.scrollRight();\n this.scrollDelay = window.setTimeout(this.longScrollRight, SCROLL_DELAY_MS);\n };\n this.longScrollLeft = () => {\n this.scrollLeft();\n this.scrollDelay = window.setTimeout(this.longScrollLeft, SCROLL_DELAY_MS);\n };\n this.leftArrowMouseDownHandler = (e) => {\n e.preventDefault();\n this.scrollDelay = window.setTimeout(this.longScrollLeft, SCROLL_DELAY_MS);\n };\n this.rightArrowMouseDownHandler = (e) => {\n e.preventDefault();\n this.scrollDelay = window.setTimeout(this.longScrollRight, SCROLL_DELAY_MS);\n };\n this.arrowMouseUpHandler = () => {\n window.clearTimeout(this.scrollDelay);\n };\n this.getCurrentLeftItem = () => {\n const index = this.itemOffsets.findIndex((el) => el > Math.round(this.itemsContainerEl.scrollLeft));\n return index < 0 ? 0 : index;\n };\n this.scrollHandler = () => {\n window.clearTimeout(this.isScrolling);\n // Set a timeout to run after scrolling ends\n this.isScrolling = window.setTimeout(this.scrollStopped, 50);\n };\n this.scrollStopped = () => {\n // If scrollItemIntoView has been called, the button states will already be set\n // Can't just handle it here as it causes strange jumping behaviour in positioning\n const scrollLeft = Math.round(this.itemsContainerEl.scrollLeft);\n if (this.buttonStateSet === false) {\n this.firstItemVisible = scrollLeft === 0;\n this.lastItemVisible =\n this.itemsContainerEl.offsetWidth + scrollLeft >=\n this.itemsContainerEl.scrollWidth;\n }\n this.buttonStateSet = false;\n };\n this.firstItemVisible = true;\n this.itemOverflow = false;\n this.lastItemVisible = false;\n this.appearance = \"default\";\n this.focusTrigger = \"focus\";\n }\n componentWillLoad() {\n this.itemsContainerEl = this.el.children[0];\n this.itemsContainerEl.addEventListener(\"scroll\", this.scrollHandler);\n this.items = getSlotElements(this.itemsContainerEl);\n this.items.forEach((item) => {\n if (item.addEventListener) {\n item.addEventListener(this.focusTrigger, this.focusHandler);\n }\n });\n }\n componentDidLoad() {\n let runningTotal = 0;\n this.itemOffsets = this.items.map((item) => {\n runningTotal += item.offsetWidth;\n return runningTotal;\n });\n checkResizeObserver(this.runResizeObserver);\n // Add event listener to scroll containers as mouse events are not fired on disabled elements (ic-button's <button>)\n // 'mouseleave' needed in case the user moves their mouse while holding the arrow buttons\n // - 'mouseup' otherwise not detected and scrolling not stopped\n const scrollArrows = Array.from(this.el.shadowRoot.querySelectorAll(\"div\"));\n [\"mouseup\", \"mouseleave\"].forEach((event) => {\n scrollArrows.forEach((arrow) => arrow.addEventListener(event, this.arrowMouseUpHandler));\n });\n }\n disconnectedCallback() {\n if (this.resizeObserver !== undefined) {\n this.resizeObserver.disconnect();\n }\n const scrollArrows = Array.from(this.el.shadowRoot.querySelectorAll(\"div\"));\n [\"mouseup\", \"mouseleave\"].forEach((event) => {\n scrollArrows.forEach((arrow) => arrow.removeEventListener(event, this.arrowMouseUpHandler));\n });\n this.items.forEach((item) => {\n if (item.removeEventListener) {\n item.removeEventListener(this.focusTrigger, this.focusHandler);\n }\n });\n this.itemsContainerEl.removeEventListener(\"scroll\", this.scrollHandler);\n }\n /**\n * @internal if side scrolling enabled, scrolls the specified item into view.\n */\n async scrollItemIntoView(itemPosition) {\n this.firstItemVisible = itemPosition <= 0;\n const newScrollPos = itemPosition <= 0 ? 0 : this.itemOffsets[itemPosition - 1];\n this.lastItemVisible =\n this.itemsContainerEl.offsetWidth + newScrollPos >=\n this.itemsContainerEl.scrollWidth;\n this.buttonStateSet = true;\n this.itemsContainerEl.scrollLeft = newScrollPos;\n }\n itemFocusHandler(itemPosition) {\n if (this.itemOverflow) {\n this.scrollItemIntoView(itemPosition);\n }\n }\n render() {\n const { appearance, firstItemVisible, lastItemVisible, itemOverflow } = this;\n return (h(Host, { class: {\n [\"visible\"]: itemOverflow,\n [\"dark\"]: this.appearance === IcThemeForegroundEnum.Dark,\n [\"light\"]: this.appearance === IcThemeForegroundEnum.Light,\n } }, h(\"div\", { \"aria-hidden\": \"true\", class: {\n [\"scroll-container-left\"]: true,\n [\"hidden\"]: !itemOverflow,\n [\"disabled\"]: firstItemVisible,\n }, role: \"tab\" }, h(\"ic-button\", { class: \"scroll-arrow\", variant: \"icon\", \"aria-label\": \"Scroll left\", appearance: appearance, innerHTML: LeftArrow, disabled: firstItemVisible, tabindex: \"-1\", onClick: this.scrollLeft, onMouseDown: this.leftArrowMouseDownHandler }), h(\"span\", { class: \"scroll-splitter-left\" })), h(\"slot\", null), h(\"div\", { \"aria-hidden\": \"true\", class: {\n [\"scroll-container-right\"]: true,\n [\"hidden\"]: !itemOverflow,\n [\"disabled\"]: lastItemVisible,\n }, role: \"tab\" }, h(\"span\", { class: \"scroll-splitter-right\" }), h(\"ic-button\", { class: \"scroll-arrow\", variant: \"icon\", \"aria-label\": \"Scroll right\", appearance: appearance, innerHTML: RightArrow, disabled: lastItemVisible, tabindex: \"-1\", onClick: this.scrollRight, onMouseDown: this.rightArrowMouseDownHandler }))));\n }\n static get is() { return \"ic-horizontal-scroll\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() {\n return {\n \"$\": [\"./ic-horizontal-scroll.css\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"ic-horizontal-scroll.css\"]\n };\n }\n static get properties() {\n return {\n \"appearance\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"IcThemeForeground\",\n \"resolved\": \"\\\"dark\\\" | \\\"default\\\" | \\\"light\\\"\",\n \"references\": {\n \"IcThemeForeground\": {\n \"location\": \"import\",\n \"path\": \"../../utils/types\",\n \"id\": \"src/utils/types.ts::IcThemeForeground\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The appearance of the horizontal scroll, e.g. dark, light or the default.\"\n },\n \"attribute\": \"appearance\",\n \"reflect\": false,\n \"defaultValue\": \"\\\"default\\\"\"\n },\n \"focusTrigger\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"The name of the event that triggers focus handler logic.\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"focus-trigger\",\n \"reflect\": false,\n \"defaultValue\": \"\\\"focus\\\"\"\n }\n };\n }\n static get states() {\n return {\n \"firstItemVisible\": {},\n \"itemOverflow\": {},\n \"lastItemVisible\": {}\n };\n }\n static get methods() {\n return {\n \"scrollItemIntoView\": {\n \"complexType\": {\n \"signature\": \"(itemPosition: number) => Promise<void>\",\n \"parameters\": [{\n \"name\": \"itemPosition\",\n \"type\": \"number\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"if side scrolling enabled, scrolls the specified item into view.\"\n }]\n }\n }\n };\n }\n static get elementRef() { return \"el\"; }\n}\n//# sourceMappingURL=ic-horizontal-scroll.js.map\n"],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icMenuGroupCss","MenuGroup","constructor","hostRef","this","label","undefined","render","parentMenu","el","closest","h","Host","isPropDefined","variant","role","querySelector"],"sources":["../web-components/dist/collection/components/ic-menu-group/ic-menu-group.css?tag=ic-menu-group&encapsulation=shadow","../web-components/dist/collection/components/ic-menu-group/ic-menu-group.js"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font-style: inherit;\n vertical-align: baseline;\n}\n\n\n:host {\n display: flex;\n flex-direction: column;\n}\n\nic-typography {\n color: var(--ic-color-tertiary-text);\n margin: var(--ic-space-xs) var(--ic-space-xs) 0;\n}\n\nul {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n\nhr {\n display: flex;\n align-self: stretch;\n border: calc(var(--ic-space-xxxs) / 2) solid var(--ic-architectural-300);\n margin: var(--ic-space-xxs) 0 calc(var(--ic-space-sm) / 4);\n}\n","import { Host, h } from \"@stencil/core\";\nimport { isPropDefined } from \"../../utils/helpers\";\nexport class MenuGroup {\n constructor() {\n this.label = undefined;\n }\n render() {\n const parentMenu = this.el.closest(\"ic-popover-menu\");\n return (h(Host, { \"aria-label\": this.label !== null ? this.label : \"\" }, isPropDefined(this.label) && (h(\"ic-typography\", { variant: \"subtitle-small\" }, this.label)), h(\"ul\", { role: \"group\" }, h(\"slot\", null)), this.el !== (parentMenu === null || parentMenu === void 0 ? void 0 : parentMenu.querySelector(\"ic-menu-group:last-child\")) && (h(\"hr\", null))));\n }\n static get is() { return \"ic-menu-group\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() {\n return {\n \"$\": [\"ic-menu-group.css\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"ic-menu-group.css\"]\n };\n }\n static get properties() {\n return {\n \"label\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The label to display as the title of the menu group.\"\n },\n \"attribute\": \"label\",\n \"reflect\": false\n }\n };\n }\n static get elementRef() { return \"el\"; }\n}\n//# sourceMappingURL=ic-menu-group.js.map\n"],"mappings":"qHAAA,MAAMA,EAAiB,8rF,MCEVC,EAAS,MAClB,WAAAC,CAAAC,G,UACIC,KAAKC,MAAQC,S,CAEjB,MAAAC,GACI,MAAMC,EAAaJ,KAAKK,GAAGC,QAAQ,mBACnC,OAAQC,EAAEC,EAAM,CAAE,aAAcR,KAAKC,QAAU,KAAOD,KAAKC,MAAQ,IAAMQ,EAAcT,KAAKC,QAAWM,EAAE,gBAAiB,CAAEG,QAAS,kBAAoBV,KAAKC,OAASM,EAAE,KAAM,CAAEI,KAAM,SAAWJ,EAAE,OAAQ,OAAQP,KAAKK,MAAQD,IAAe,MAAQA,SAAoB,OAAS,EAAIA,EAAWQ,cAAc,8BAAiCL,EAAE,KAAM,M"}
|
@@ -1,2 +0,0 @@
|
|
1
|
-
import{r as i,c as t,h as e,H as a,g as o}from"./p-8455d1bb.js";import{i as n,D as s,b as r,e as d,z as c}from"./p-8128572e.js";import{C as l}from"./p-170ddfc2.js";import{O as v}from"./p-ea1ea1b9.js";import"./p-fd186591.js";const h='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host{display:block}:host(:focus-within){z-index:var(--ic-z-index-navigation-item)}svg{width:var(--ic-space-xl);fill:var(--ic-theme-text)}.svg{margin-left:auto}.chevron-container svg,.chevron-container .svg{width:var(--ic-space-lg);height:var(--ic-space-lg)}.chevron-container{flex-grow:1}:host(.expandable.navigation-item) .link,:host(.expandable.navigation-item) ::slotted(a){padding-right:0}:host(.navigation-item) .link,:host(.navigation-item) ::slotted(a){height:calc(100% - var(--ic-space-xxs));width:-moz-fit-content;width:fit-content;color:var(--ic-theme-text);display:flex;align-items:center;justify-content:center;padding:0 var(--ic-space-md) var(--ic-space-xxs);text-decoration:none;transition:var(--ic-easing-transition-fast);position:relative;white-space:nowrap}:host(.navigation-item) ::slotted(a){height:100%;font:var(--ic-font-label) !important;letter-spacing:var(--ic-font-letter-spacing-0pt025) !important;padding:0 var(--ic-space-md) !important}:host(.navigation-item-selected) .link::after,:host(.navigation-item-selected) ::slotted(a.active)::after,:host(.navigation-item-top-nav) ::slotted(a.active)::after{content:"";height:0.25rem;width:100%;position:absolute;bottom:0;background-color:var(--ic-theme-text)}:host(.navigation-item-selected.navigation-item-page-header) ::slotted(a.active)::after,:host(.navigation-item-selected.navigation-item-page-header) .link::after,:host(.navigation-item.navigation-item-page-header) ::slotted(a.active)::after,:host(.navigation-item-top-nav-child) ::slotted(a.active)::after{content:none}:host(.navigation-item-side-menu-selected) .link,:host(.navigation-item-side-menu) ::slotted(a.active),:host(.navigation-item-top-nav-child) ::slotted(a.active){box-shadow:none}:host(.navigation-item) .link:hover:not(:focus){background-color:var(--ic-theme-hover);cursor:pointer}:host(.navigation-item:not(.navigation-item-page-header,.navigation-item-side-menu)) ::slotted(a:hover:not(:focus)){background-color:var(--ic-theme-hover) !important}:host(.navigation-item:not(.navigation-item-top-nav-child,.navigation-item-side-menu,.navigation-item-top-nav-child-selected .navigation-item-side-menu-selected)) .focus-indicator:focus-within{box-shadow:var(--ic-border-focus);border-radius:var(--ic-border-radius)}:host(.navigation-item) .link:focus,:host(.navigation-item) ::slotted(a:focus){box-shadow:var(--ic-border-focus);border-radius:var(--ic-border-radius);outline:var(--ic-hc-focus-outline)}:host(.navigation-item-selected) .link:focus,:host(.navigation-item) ::slotted(a.active:focus){box-shadow:var(--ic-border-focus);border-radius:var(--ic-border-radius);outline:var(--ic-hc-focus-outline)}:host(.navigation-item-selected.dark) .link:focus,:host(.navigation-item.dark) ::slotted(a.active:focus){box-shadow:var(--ic-border-focus);border-radius:var(--ic-border-radius);outline:var(--ic-hc-focus-outline)}:host(.navigation-item) .link:active:not(:focus),:host(.navigation-item) ::slotted(a:active:not(:focus)){background-color:var(--ic-theme-active)}:host(.navigation-item-side-menu) .link,:host(.navigation-item-side-menu) ::slotted(a){min-height:2.5rem;height:auto;width:100%;box-sizing:border-box;color:var(--ic-color-primary-text);display:flex;align-items:center;justify-content:flex-start;text-decoration:none;text-wrap:wrap;white-space:normal;transition:box-shadow var(--ic-transition-duration-fast),\n border-radius var(--ic-transition-duration-fast)}:host(.navigation-item-side-menu) ::slotted(a){font:var(--ic-font-body) !important;letter-spacing:var(--ic-font-letter-spacing-0pt005) !important;transition:box-shadow var(--ic-easing-transition-fast),\n background-color var(--ic-easing-transition-fast)}:host(.navigation-item-side-menu) .link:hover:not(:focus){background-color:var(--ic-action-dark-bg-hover)}:host(.navigation-item-side-menu) ::slotted(a:hover:not(:focus)){background-color:var(--ic-action-dark-bg-hover) !important}:host(.navigation-item-side-menu) .focus-indicator:focus-within{box-shadow:none}:host(.navigation-item-side-menu) .link:focus,:host(.navigation-item-side-menu) ::slotted(a:focus){box-shadow:var(--ic-border-focus-inset) !important;width:auto;border-radius:var(--ic-border-radius-inset) !important}:host(.navigation-item-side-menu-selected) .link,:host(.navigation-item-side-menu-selected) ::slotted(a){transition:box-shadow var(--ic-easing-transition-slow),\n background-color var(--ic-easing-transition-slow)}:host(.navigation-item-side-menu-selected) .link:focus,:host(.navigation-item-side-menu) ::slotted(a.active:focus),:host(.navigation-item-top-nav-child) ::slotted(a.active:focus){margin-left:var(--ic-space-xs) !important;padding-left:var(--ic-space-xs) !important}:host(.navigation-item-top-nav-child) .link,:host(.navigation-item-top-nav-child) ::slotted(a){height:2.5rem;width:-moz-fit-content;width:fit-content;min-width:9.063rem;color:var(--ic-color-primary-text);display:flex;align-items:center;justify-content:flex-start;padding:0 var(--ic-space-md) !important;text-decoration:none;position:relative;transition:box-shadow var(--ic-transition-duration-fast),\n border-radius var(--ic-transition-duration-slow)}:host(.navigation-item-top-nav-child) ::slotted(a){font:var(--ic-font-body) !important;letter-spacing:var(--ic-font-letter-spacing-0pt005) !important}:host(.navigation-item-top-nav-child) .link:hover:not(:focus){background-color:var(--ic-action-dark-bg-hover) !important}:host(.navigation-item-top-nav-child) ::slotted(a:hover):not(:focus){background-color:var(--ic-action-dark-bg-hover) !important}:host(.navigation-item-top-nav-child) .link:focus,:host(.navigation-item-top-nav-child) ::slotted(a:focus){z-index:1;outline:var(--ic-hc-focus-outline);border-radius:var(--ic-border-radius-inset);box-shadow:var(--ic-border-focus-inset);transition:border-radius 0s, box-shadow var(--ic-transition-duration-fast)}:host(.navigation-item-top-nav-child) ::slotted(a.active:focus){box-shadow:var(--ic-border-focus-inset);border-radius:var(--ic-border-radius-inset)}:host(.navigation-item-side-menu) .link:active:not(:focus){background-color:var(--ic-action-dark-bg-active)}:host(.navigation-item-top-nav-child) .link:active:not(:focus),:host(.navigation-item-top-nav-child) ::slotted(a:active):not(:focus){outline:var(--ic-hc-focus-outline);background-color:var(--ic-action-dark-bg-active)}:host(.navigation-item-top-nav-child) ::slotted(a:active):not(:focus),:host(.navigation-item-side-menu) ::slotted(a:active):not(:focus){background-color:var(--ic-action-dark-bg-active) !important}:host(.navigation-item-side-menu-selected) *,:host(.navigation-item-top-nav-child-selected) *,:host(.navigation-item-side-menu) ::slotted(a.active),:host(.navigation-item-top-nav-child) ::slotted(a.active){font-weight:700 !important}:host(.navigation-item-top-nav-child) ::slotted(a.active)::before,:host(.navigation-item-top-nav-child-selected) .link::before,:host(.navigation-item-side-menu-selected) .link::before,:host(.navigation-item-side-menu) ::slotted(a.active)::before,:host(.navigation-item-side-menu-selected) .link:focus::before,:host(.navigation-item-side-menu) ::slotted(a.active:focus)::before{content:"";position:absolute;left:0;width:var(--ic-space-xs);height:inherit;min-height:2.5rem;background-color:var(--ic-action-default);transition:left 0s}:host(.navigation-item-top-nav-child-selected) .link::before,:host(.navigation-item-side-menu-selected) .link::before,:host(.navigation-item-side-menu-selected) .link:focus::before{margin-top:0.25rem}:host(.navigation-item-top-nav-child-selected) .link:focus{margin-left:var(--ic-space-xs);margin-right:calc(-1 * var(--ic-space-xs));padding-left:var(--ic-space-xs) !important}:host(.navigation-item-top-nav-child-selected) .link:focus::before{left:calc(-1 * var(--ic-space-xs));z-index:1}:host(.navigation-item-side-menu-selected) .link::before,:host(.navigation-item-side-menu) ::slotted(a.active)::before,:host(.navigation-item-side-menu-selected) .link:focus::before,:host(.navigation-item-side-menu) ::slotted(a.active:focus)::before{z-index:1}:host(.navigation-item-side-menu-selected) .link:focus::before,:host(.navigation-item-side-menu) ::slotted(a.active:focus)::before,:host(.navigation-item-top-nav-child) ::slotted(a.active:focus)::before{left:calc(-1 * var(--ic-space-xs))}:host(.navigation-item-side-menu-selected) .link::after{display:none}:host(.navigation-item-side-nav-collapsed) .link{height:100%}:host(.navigation-item-side-nav-collapsed) ::slotted(svg),:host(.navigation-item-side-nav-collapsed-with-label) ::slotted(svg){margin:auto;pointer-events:none}:host(.navigation-item-side-nav-collapsed) .icon,:host(.navigation-item-side-nav-collapsed-with-label) .icon,:host(.navigation-item-side-nav-collapsed-with-label) ic-typography{align-items:center;padding:0;margin:auto 0;width:-moz-fit-content;width:fit-content;pointer-events:none}:host(.navigation-item-side-nav-collapsed-with-label) ic-typography{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;text-align:center}:host(.navigation-item-side-nav-collapsed-with-label) .link,:host(.navigation-item-side-nav-collapsed-with-label) ::slotted(a){display:flex;flex-direction:column;height:-moz-fit-content;height:fit-content;padding:var(--ic-space-xs) !important;gap:var(--ic-space-xxs)}:host(.navigation-item-side-nav.navigation-item-side-nav-collapsed-with-label) .link,:host(.navigation-item-side-nav.navigation-item-side-nav-collapsed-with-label) ::slotted(a){height:auto !important;gap:0;width:auto;padding:var(--ic-space-xs) !important}:host(.navigation-item-side-nav.navigation-item-side-nav-collapsed-with-label) ::slotted(a){display:block;text-align:center}:host(.navigation-item-side-nav.navigation-item-side-nav-collapsed-with-label) .link ic-typography{opacity:1;min-width:-moz-min-content;min-width:min-content}:host(.navigation-item-side-nav-collapsed) svg,:host(.navigation-item-side-nav-collapsed-with-label) svg{display:none}::slotted(svg){fill:var(--ic-theme-text);width:var(--ic-space-lg);margin-left:var(--ic-space-md)}.icon{height:var(--ic-space-lg);width:var(--ic-space-xxl);margin-left:calc(-1 * var(--ic-space-md));flex:0 1 0%;position:relative}.icon>::slotted(*){margin-left:var(--ic-space-md) !important}:host(.navigation-item-side-nav-collapsed) .icon>::slotted(*){margin:auto !important}:host(.navigation-item-side-nav) .link,:host(.navigation-item-side-nav) ::slotted(a){height:var(--navigation-item-height, 56px);min-height:var(--navigation-item-min-height);width:var(--navigation-item-width, auto);justify-content:var(--navigation-item-justify-content);display:flex;gap:var(--ic-space-xs);box-sizing:border-box;color:var(--navigation-item-child-color) !important;text-decoration:none !important;white-space:nowrap;padding-top:var(--ic-space-md) !important;padding-bottom:var(--ic-space-md) !important;text-wrap:wrap}:host(.navigation-item-side-nav.navigation-item-top-nav-child) .link,:host(.navigation-item-side-nav.navigation-item-top-nav-child) ::slotted(a){height:var(--navigation-item-child-height);width:var(--navigation-group-width);color:var(--navigation-item-child-color) !important;display:flex;gap:0.625rem;box-sizing:border-box;min-width:0;transition:box-shadow var(--ic-easing-transition-fast);text-decoration:none !important;white-space:nowrap}:host(.navigation-item-side-nav.navigation-item-top-nav-child) .link:focus,:host(.navigation-item-side-nav.navigation-item-top-nav-child) ::slotted(a:focus){box-shadow:var(--ic-border-focus-dark)}:host(.navigation-item-side-nav.navigation-item-side-menu) .link:active{background-color:var(--navigation-item-child-active)}:host(.navigation-item-side-nav.navigation-item-top-nav-child) .link:active,:host(.navigation-item-side-nav.navigation-item-top-nav-child) ::slotted(a:active){background-color:var(--navigation-item-child-active)}:host(.navigation-item-side-nav) a.link ic-typography,:host(.navigation-item-side-nav.navigation-item-top-nav-child) a.link ic-typography,:host(.navigation-item-side-nav) div.link ic-typography,:host(.navigation-item-side-nav.navigation-item-top-nav-child) div.link ic-typography,.navigation-item-side-nav-slotted-text{opacity:var(--navigation-item-label-opacity);transition:opacity var(--ic-easing-transition-slow);white-space:wrap;text-overflow:ellipsis;overflow:hidden}:host(.navigation-item-side-nav.navigation-item-selected) .link,:host(.navigation-item-side-nav.navigation-item) ::slotted(a.active){box-shadow:inset 0.313rem 0 0 var(--ic-theme-text)}:host(.navigation-item-side-nav.navigation-item-selected) .link::before,:host(.navigation-item-side-nav) ::slotted(a.active)::before{content:"";display:block;position:absolute;inset:0 0 0 0.313rem;border-radius:0.688rem !important;transition:var(--ic-easing-transition-slow)}:host(.navigation-item-side-nav.navigation-item-selected) .link:focus::before,:host(.navigation-item-side-nav) ::slotted(a.active:focus)::before{box-shadow:var(--ic-border-focus-inset)}:host(:not(.navigation-item-side-nav-collapsed).navigation-item-side-nav.navigation-item-side-nav-collapsed-with-label) .link{opacity:var(--navigation-item-label-opacity);height:auto}:host(.navigation-item-top-nav-child.navigation-item-side-nav-collapsed-with-label) .link,:host(.navigation-item-top-nav-child.navigation-item-side-nav-collapsed-with-label) ::slotted(a){min-width:var(--navigation-group-item-min-width);padding:var(--ic-space-xs) !important;height:auto;gap:0}:host(.navigation-item-top-nav-child.navigation-item-side-nav-collapsed-with-label) ::slotted(a){display:block}:host(.navigation-item-side-nav.navigation-item-selected) .link::after,:host(.navigation-item-side-nav) ::slotted(a.active)::after{display:none}:host(.navigation-item-side-nav.navigation-item) .link:focus,:host(.navigation-item-side-nav.navigation-item) ::slotted(a:focus){box-shadow:var(--ic-border-focus-inset);border-radius:var(--ic-border-radius-inset);background-color:transparent}:host(.navigation-item-side-nav.navigation-item-selected) .link:focus,:host(.navigation-item-side-nav) ::slotted(a.active:focus){margin:0 auto;box-shadow:inset 0.313rem 0 0 var(--ic-theme-text);border-radius:0}:host(.navigation-item-side-nav.navigation-item) .link:hover:not(:focus){background-color:var(--ic-theme-hover) !important}:host(.navigation-item-page-header).link,:host(.navigation-item-page-header) a,:host(.navigation-item-page-header) ::slotted(a){height:2.5rem !important;color:var(--ic-color-primary-text) !important;transition:all var(--ic-easing-transition-fast) !important;box-shadow:rgba(23 89 188 / 0%) !important}:host(.navigation-item-page-header.navigation-item-selected) .link::after,:host(.navigation-item-page-header) ::slotted(a.active)::after{content:" " !important;position:absolute;bottom:0;left:0;right:0;height:var(--ic-space-xxs);background-color:var(--ic-action-default) !important}:host(.navigation-item-page-header) .link:hover,:host(.navigation-item-page-header) ::slotted(.link:hover),:host(.navigation-item-page-header) ::slotted(a:hover),:host(.navigation-item-page-header) .link:hover:not(:focus){background-color:var(--ic-action-default-bg-hover) !important;cursor:pointer}:host(.navigation-item-page-header) .link:focus,:host(.navigation-item-page-header) ::slotted(a:focus){box-shadow:var(--ic-border-focus)}:host(.navigation-item-page-header) .link:active,:host(.navigation-item-page-header) ::slotted(a:active){background-color:var(--ic-action-default-bg-active) !important}:host(.navigation-item-page-header.navigation-item-selected) .link:focus::after,:host(.navigation-item-page-header) ::slotted(a.active:focus)::after{border-bottom-left-radius:var(--ic-border-radius);border-bottom-right-radius:var(--ic-border-radius)}:host(.navigation-item-page-header.navigation-item-selected.with-transition) .link,:host(.navigation-item-page-header.navigation-item-selected.with-transition) ::slotted(a.active){transition:all var(--ic-easing-transition-fast),\n border-color var(--ic-transition-duration-fast)}:host(.navigation-item-page-header) ::slotted(a.active)::before,:host(.navigation-item-page-header) ::slotted(a.active:focus)::before,:host(.navigation-item-page-header.navigation-item-selected) .link:focus::before{display:none}.open-in-new-icon{flex:1}.open-in-new-icon svg{margin-top:var(--ic-space-xxs);padding-left:var(--ic-space-xxs)}:host(.navigation-item-side-nav) .open-in-new-icon{margin-left:calc(-1 * var(--ic-space-xs))}:host(.navigation-item-top-nav) .open-in-new-icon svg,:host(.navigation-item-page-header) .open-in-new-icon svg,:host(.navigation-item-side-nav) .open-in-new-icon svg{height:0.875rem;width:0.875rem}:host(.navigation-item-side-menu) .open-in-new-icon svg,:host(.navigation-item-top-nav-child) .open-in-new-icon svg{height:var(--ic-space-md);width:var(--ic-space-md)}:host(.navigation-item-page-header) .open-in-new-icon svg,:host(.navigation-item-top-nav-child) .open-in-new-icon svg,:host(.navigation-item-side-menu) .open-in-new-icon svg{fill:var(--ic-color-primary-text)}@media (forced-colors: active){.open-in-new-icon svg{fill:currentcolor}}';const m=class{constructor(a){i(this,a);this.childBlur=t(this,"childBlur",7);this.navItemClicked=t(this,"navItemClicked",7);this.isInitialRender=true;this.displayDefaultNavigationItem=(i,t,a,o,s,r,d)=>{const c=this.isTopNavChild||this.inTopNavSideMenu?"body":"label";const h=this.expandable&&e("div",{class:{svg:true},innerHTML:l});const m=this.el.querySelector('[slot="icon"]')&&e("div",{class:"icon"},e("slot",{name:"icon"}),n(this.el,"badge")&&e("slot",{name:"badge"}));if(i!==""){return e("a",{href:i,target:a,rel:o,hreflang:t,referrerPolicy:s,download:r!==false?r:null,class:"link",ref:i=>this.itemEl=i,part:"link"},m,e("ic-typography",{variant:c},d),e("div",{class:"chevron-container"},h),a==="_blank"&&e("span",{class:"open-in-new-icon",innerHTML:v}))}return e("div",{tabindex:"0",class:"link",ref:i=>this.itemEl=i},m,e("ic-typography",{variant:c},d),h)};this.topNavResizedHandler=({detail:i})=>{var t;const{size:e}=i;if(e!==this.deviceSize){this.deviceSize=e;this.inTopNavSideMenu=e<=(((t=this.parentEl)===null||t===void 0?void 0:t.customMobileBreakpoint)||s.L)}};this.sideNavExpandHandler=({detail:i})=>{const{sideNavExpanded:t,sideNavMobile:e}=i;this.sideNavExpanded=t;this.isSideNavMobile=e};this.handleBlur=({relatedTarget:i})=>{if(i===null||i.tagName!=="IC-NAVIGATION-ITEM"){this.childBlur.emit()}};this.handleClick=()=>{this.navItemClicked.emit()};this.generateTooltipLabel=()=>{if(this.label){return this.label}if(this.navigationSlot){return this.navigationSlot.textContent}if(this.el.children[0]){return this.el.children[0].textContent}return""};this.renderNavigationItemContent=()=>{if(this.label){return this.displayDefaultNavigationItem(this.href,this.hreflang,this.target,this.rel,this.referrerpolicy,this.download,this.label)}if(this.navigationSlot){return e("slot",{name:"navigation-item"})}return e("slot",null)};this.deviceSize=s.XL;this.focusStyle=r();this.inTopNavSideMenu=false;this.isSideNavMobile=false;this.isTopNavChild=false;this.navigationType=undefined;this.parentEl=undefined;this.sideNavExpanded=false;this.collapsedIconLabel=false;this.displayNavigationTooltip=false;this.download=false;this.expandable=false;this.href="";this.hreflang=undefined;this.label=undefined;this.rel=undefined;this.referrerpolicy=undefined;this.selected=false;this.target=undefined}disconnectedCallback(){if(this.navigationType==="side"){this.parentEl.removeEventListener("sideNavExpanded",this.sideNavExpandHandler)}else if(this.navigationType==="top"){this.parentEl.removeEventListener("topNavResized",this.topNavResizedHandler)}}componentWillLoad(){const{navType:i,parent:t}=c(this.el);this.navigationType=i;this.parentEl=t;this.deviceSize=d();if(this.navigationType==="side"){this.parentEl.addEventListener("sideNavExpanded",this.sideNavExpandHandler)}else if(this.navigationType==="top"){this.parentEl.addEventListener("topNavResized",this.topNavResizedHandler);if(this.el.parentElement.tagName==="IC-NAVIGATION-GROUP")this.isTopNavChild=true;if(this.deviceSize<=this.parentEl.customMobileBreakpoint)this.inTopNavSideMenu=true}this.navigationSlot=this.el.querySelector('[slot="navigation-item"]');if(this.navigationSlot){this.navigationSlot.ariaLabel=this.navigationSlot.textContent.trim()}}componentDidUpdate(){this.isInitialRender=false}themeChangeHandler({detail:i}){this.focusStyle=i.mode}async setFocus(){var i;(i=this.itemEl)===null||i===void 0?void 0:i.focus()}render(){const{inTopNavSideMenu:i,isTopNavChild:t,selected:o}=this;return e(a,{class:{["navigation-item"]:true,["navigation-item-top-nav"]:!i&&this.navigationType==="top",["navigation-item-top-nav-child-selected"]:t&&!i&&o,[this.focusStyle]:!i&&!t||this.navigationType==="side"&&t,["navigation-item-selected"]:!t&&o,["navigation-item-side-menu"]:i,["navigation-item-side-menu-selected"]:i&&o,["navigation-item-top-nav-child"]:t&&!i,["navigation-item-page-header"]:this.navigationType==="page-header",["with-transition"]:!this.isInitialRender,["navigation-item-side-nav"]:this.navigationType==="side",["navigation-item-side-nav-collapsed"]:(!this.sideNavExpanded||this.displayNavigationTooltip)&&this.navigationType==="side",["navigation-item-side-nav-collapsed-with-label"]:!this.sideNavExpanded&&this.navigationType==="side"&&this.collapsedIconLabel&&!this.isSideNavMobile,["expandable"]:this.expandable},onBlur:t&&!i?this.handleBlur:null,onClick:this.handleClick,"aria-current":o?"page":null,role:"listitem"},e("ic-tooltip",{label:this.generateTooltipLabel(),target:"navigation-item",placement:"right",class:{["tooltip-navigation-item"]:true,["tooltip-navigation-item-side-nav-collapsed"]:(!this.sideNavExpanded||this.displayNavigationTooltip)&&this.navigationType==="side",["tooltip-long-label-navigation-item-side-nav-expanded"]:this.el.hasAttribute("[display-navigation-tooltip = 'true']")}},this.renderNavigationItemContent()))}static get delegatesFocus(){return true}get el(){return o(this)}};m.style=h;export{m as ic_navigation_item};
|
2
|
-
//# sourceMappingURL=p-f09b2041.entry.js.map
|