@carbon/web-components 2.48.0-rc.0 → 2.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/data-table/table.js +2 -3
- package/es/components/data-table/table.js.map +1 -1
- package/es/components/popover/popover.js +1 -1
- package/es/components/popover/popover.js.map +1 -1
- package/es-custom/components/data-table/table.js +2 -3
- package/es-custom/components/data-table/table.js.map +1 -1
- package/es-custom/components/popover/popover.js +1 -1
- package/es-custom/components/popover/popover.js.map +1 -1
- package/package.json +7 -7
|
@@ -226,7 +226,7 @@ let CDSTable = class CDSTable extends HostListenerMixin(LitElement) {
|
|
|
226
226
|
// selected header checkbox upon all rows being selected
|
|
227
227
|
const headerCheckbox = (_b = tableHeaderRow.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector(`${prefix}-checkbox`).shadowRoot.querySelector(`.${prefix}--checkbox`);
|
|
228
228
|
const allRowsSelected = this._selectedRows.length === totalSelectableRows;
|
|
229
|
-
headerCheckbox.checked =
|
|
229
|
+
headerCheckbox.checked = Boolean(this._selectedRows.length);
|
|
230
230
|
headerCheckbox.indeterminate =
|
|
231
231
|
!allRowsSelected && this._selectedRows.length > 0;
|
|
232
232
|
const init = {
|
|
@@ -393,8 +393,7 @@ let CDSTable = class CDSTable extends HostListenerMixin(LitElement) {
|
|
|
393
393
|
return !elem.hasAttribute('disabled');
|
|
394
394
|
}).length;
|
|
395
395
|
const headerCheckbox = (_c = this._tableHeaderRow.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector(`${prefix}-checkbox`).shadowRoot.querySelector(`.${prefix}--checkbox`);
|
|
396
|
-
headerCheckbox.disabled =
|
|
397
|
-
unfilteredSelectableLength === 0 ? true : false;
|
|
396
|
+
headerCheckbox.disabled = unfilteredSelectableLength === 0;
|
|
398
397
|
}
|
|
399
398
|
if (this.expandable) {
|
|
400
399
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../../src/components/data-table/table.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { forEach } from '../../globals/internal/collection-helpers';\nimport { TABLE_SIZE, TABLE_SORT_DIRECTION } from './defs';\nimport styles from './data-table.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport {\n CDSRadioButton,\n CDSTableBatchActions,\n CDSTableCell,\n CDSTableHeaderCell,\n CDSTableHeaderRow,\n CDSTableRow,\n CDSTableToolbarSearch,\n} from '../..';\nimport CDSTableExpandedRow from './table-expanded-row';\n\nexport { TABLE_SIZE };\n\n/**\n * Data table.\n *\n * @element cds-table\n * @fires cds-table-header-cell-sort\n * The name of the custom event fired before a new sort direction is set upon a user gesture.\n * Cancellation of this event stops the user-initiated change in sort direction.\n * @fires cds-search input\n * The name of the custom event fired during search bar input\n * @fires cds-table-change-selection-all\n * The name of the custom event fired before header row is selected/unselected upon a user gesture.\n * @fires cds-table-row-change-selection\n * The name of the custom event fired before a row is selected/unselected upon a user gesture.\n * @fires cds-table-batch-actions-cancel-clicked\n * The name of the custom event fired after the Cancel button is clicked.\n * @fires cds-table-row-expando-toggled\n * The name of the custom event fired after the expanded state of a row is toggled upon a user gesture.\n * @fires cds-table-row-selected\n * The name of the custom event fired after a row has been selected.\n * @fires cds-table-row-all-selected\n * The name of the custom event fired after all rows have been selected.\n * @fires cds-table-sorted\n * The name of the custom event fired after the table has been sorted.\n * @fires cds-table-filtered\n * The name of the custom event fired after the table has been filtered containing remaining rows.\n */\n@customElement(`${prefix}-table`)\nclass CDSTable extends HostListenerMixin(LitElement) {\n /**\n * The map of how sorting direction affects sorting order.\n */\n private collationFactors = {\n [TABLE_SORT_DIRECTION.ASCENDING]: 1,\n [TABLE_SORT_DIRECTION.DESCENDING]: -1,\n };\n\n /**\n * Reference to download button\n */\n @state()\n private _downloadButton;\n\n /**\n * Current search value for filtering\n */\n @state()\n private _searchValue = '';\n\n /**\n * Table header row within component\n */\n @state()\n private _tableHeaderRow;\n\n /**\n * Table body\n */\n @state()\n private _tableBody;\n\n /**\n * Table expanded row within component\n */\n @state()\n private _tableExpandedRows;\n\n /**\n * Table rows within component\n */\n @state()\n private _tableRows;\n\n /**\n * Reference to the component containing batch actions\n */\n @state()\n private _tableBatchActions;\n\n /**\n * Reference to the table toolbar\n */\n @state()\n private _tableToolbar;\n\n /**\n * Reference to the table toolbar content\n */\n @state()\n private _tableToolbarContent;\n\n @state()\n private _selectedRows: CDSTableRow[] = [];\n\n /**\n * `true` if this table should support batch expansion\n */\n @property({ type: Boolean, reflect: true, attribute: 'batch-expansion' })\n batchExpansion = false;\n\n /**\n * The g11n collator to use.\n */\n @property({ attribute: false })\n collator;\n\n /**\n * @param lhs A value.\n * @param rhs Another value.\n * @param collator A custom collator.\n * @returns\n * `0` if the given two values are equal\n * A negative value to sort `lhs` to an index lower than `rhs`\n * A positive value to sort `rhs` to an index lower than `lhs`\n */\n\n customSortRow(lhs, rhs, collator) {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return lhs - rhs;\n }\n return collator.compare(lhs, rhs);\n }\n\n /**\n * Specify whether the rows should be able to be expandable\n */\n @property({ type: Boolean, reflect: true })\n expandable = false;\n\n /**\n * The method used when filtering the table with the search bar.\n * Can be replaced with custom method.\n *\n * @param rowText A table row.\n * @param searchString A search string.\n * @returns `false` if the given table row matches the given search string.\n */\n @property()\n filterRows = (rowText: string, searchString: string) =>\n rowText.toLowerCase().indexOf(searchString.toLowerCase()) < 0;\n\n /**\n * The total headers\n */\n @property()\n headerCount = 0;\n\n /**\n * `true` if this table contains selectable rows\n */\n @property({ type: Boolean, reflect: true, attribute: 'is-selectable' })\n isSelectable = false;\n\n /**\n * `true` if this table should support sorting.\n */\n @property({ type: Boolean, reflect: true, attribute: 'is-sortable' })\n isSortable = false;\n\n /**\n * The table size.\n */\n @property({ reflect: true })\n locale = 'en';\n\n /**\n * Specify whether the overflow menu (if it exists) should be shown always, or only on hover\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'overflow-menu-on-hover',\n })\n overflowMenuOnHover = false;\n\n /**\n * Specify whether the control should be a radio button or inline checkbox\n */\n @property({ type: Boolean, reflect: true })\n radio = false;\n\n /**\n * The table size.\n */\n @property({ reflect: true })\n size = TABLE_SIZE.LG;\n\n /**\n * TODO: Uncomment when Carbon fully implements sticky header\n * Specify whether the header should be sticky.\n * Still experimental: may not work with every combination of table props\n */\n // @property({ type: Boolean, attribute: 'sticky-header', reflect: true })\n // stickyHeader = false;\n\n /**\n * If true, will use a width of 'auto' instead of 100%\n */\n @property({ type: Boolean, attribute: 'use-static-width', reflect: true })\n useStaticWidth = false;\n\n /**\n * true to add useZebraStyles striping.\n */\n @property({ type: Boolean, attribute: 'use-zebra-styles', reflect: true })\n useZebraStyles = false;\n\n @property({ type: Boolean, attribute: 'with-header', reflect: true })\n withHeader;\n\n /**\n * true if AI Labels are added in the rows\n */\n @property({ type: Boolean, attribute: 'with-row-ai-labels' })\n withRowAILabels = false;\n\n /**\n * true if slugs are added in the rows\n *\n * @deprecated remove in v12, use `with-row-ai-labels` instead\n */\n @property({ type: Boolean, attribute: 'with-row-slugs' })\n withRowSlugs = false;\n\n private _handleSlotChange({ target }: Event) {\n const hasContent = (target as HTMLSlotElement).assignedNodes().some(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n (node) => node.nodeType !== Node.TEXT_NODE || node!.textContent!.trim()\n );\n this.withHeader = hasContent;\n }\n\n private _handleTableBodyChange() {\n // cds-table-head or cds-table-body may have changed\n this._tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n this._tableExpandedRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableExpandedRows\n );\n this._tableRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n );\n\n // update any row dependant features\n this.updateExpandable();\n }\n\n private _handleSortAction(columnIndex, sortDirection) {\n const rows = [...this._tableRows];\n\n // regular row sorting\n rows.sort((a, b) => {\n const cellA = a.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )[columnIndex].textContent;\n const cellB = b.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )[columnIndex].textContent;\n return (\n this.collationFactors[sortDirection] *\n this.customSortRow(cellA, cellB, this.collator)\n );\n });\n\n // take into account the expanded rows, mapping each expandable row to its original for proper reinsertion\n if (this.expandable) {\n const originalRows = [...this._tableRows];\n const expandedRows = [...this._tableExpandedRows];\n\n const mapping = originalRows.reduce((acc, element, index) => {\n const sortId = element.getAttribute('sort-id');\n acc[sortId] = expandedRows[index];\n return acc;\n }, {});\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const sortedWithExpanded = [] as any;\n\n rows.forEach((e) => {\n const sortId = e.getAttribute('sort-id');\n sortedWithExpanded.push(e);\n // Only add the expanded row if it exists\n if (mapping[sortId]) {\n sortedWithExpanded.push(mapping[sortId]);\n }\n });\n\n sortedWithExpanded.forEach((e) => {\n this._tableBody.insertBefore(e, null);\n });\n } else {\n rows.forEach((e) => {\n this._tableBody.insertBefore(e, null);\n });\n }\n }\n\n private _handleFilterRows() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const unfilteredRows = [] as any;\n forEach(this._tableRows, (elem) => {\n let rowText = elem.textContent?.trim();\n let filtered = this.filterRows(rowText as string, this._searchValue);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).filtered = filtered;\n\n if (filtered && this.expandable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n rowText = (elem as any).nextElementSibling.textContent?.trim();\n filtered = this.filterRows(rowText as string, this._searchValue);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).filtered = filtered;\n }\n\n if (!filtered) {\n unfilteredRows.push(elem);\n }\n\n if (this.isSelectable) {\n const unfilteredSelectableLength = unfilteredRows.filter((elem) => {\n return !elem.hasAttribute('disabled');\n }).length;\n\n const headerCheckbox = this._tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`);\n\n headerCheckbox.disabled =\n unfilteredSelectableLength === 0 ? true : false;\n }\n\n if (this.expandable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).nextElementSibling.filtered = filtered;\n }\n });\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n unfilteredRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableFiltered,\n init\n )\n );\n }\n\n /**\n * Download manager for selected rows.\n */\n private _handleDownload({ target }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const data = [] as any;\n\n const elementsToArray = (elements) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n Array.from(elements, (element) => (element as any).textContent);\n\n const headerCells = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorHeaderCell\n );\n const rows = this._selectedRows;\n const headerTitleArray = elementsToArray(headerCells);\n\n rows.forEach((row) => {\n const rowData = {};\n const cells = elementsToArray(\n row.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )\n );\n\n cells.forEach((cellText, index) => {\n const headerTitle = headerTitleArray[index];\n rowData[headerTitle] = cellText;\n });\n\n data.push(rowData);\n });\n\n const blob = new Blob([JSON.stringify(data)], { type: 'application/json' });\n\n target.href = URL.createObjectURL(blob);\n }\n\n /**\n * Handles batch expansion\n */\n @HostListener('eventExpandoToggle')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBatchExpansion = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { expanded } = detail;\n\n if ((target as CDSTableHeaderRow) === this._tableHeaderRow) {\n this._tableRows.forEach((e) => ((e as CDSTableRow).expanded = expanded));\n }\n };\n\n /**\n * Handles sorting the table depending on the column selected\n */\n @HostListener('eventBeforeSort')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleSort = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { sortDirection } = detail;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n if (!this.contains(target as any)) {\n return;\n }\n\n const columns = [...this._tableHeaderRow.children];\n const columnIndex = columns.indexOf(target);\n\n columns.forEach((e) => {\n if (e !== target && this.isSortable) {\n e.setAttribute('sort-direction', 'none');\n } else if (e.hasAttribute('is-sortable')) {\n e.setAttribute('sort-direction', 'none');\n }\n });\n\n this._handleSortAction(columnIndex, sortDirection);\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n sortedHeader: columns[columnIndex],\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableSorted,\n init\n )\n );\n\n this._handleFilterRows();\n };\n\n /**\n * Handles search input within the toolbar actions\n */\n @HostListener('eventSearchInput')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleSearchInput = async (event: CustomEvent) => {\n const { detail, target } = event;\n\n if (this.contains(target as CDSTableToolbarSearch)) {\n const { value } = detail;\n this._searchValue = value;\n this._handleFilterRows();\n }\n };\n\n /**\n * Handles row selection\n */\n @HostListener('eventBeforeChangeSelection')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleRowSelect = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { selected } = detail;\n const {\n _tableBatchActions: tableBatchActions,\n _tableToolbarContent: tableToolbarContent,\n _tableHeaderRow: tableHeaderRow,\n _selectedRows: selectedRows,\n } = this;\n\n if (!this.contains(target as CDSTableRow)) {\n return;\n }\n\n if (this.radio) {\n this._tableRows.forEach((e) => {\n if (e !== target) {\n e.removeAttribute('selected');\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n e.shadowRoot!.querySelector(`${prefix}-radio-button`).checked = false;\n }\n });\n this._selectedRows.push(...[target as CDSTableRow]);\n } else {\n if (selectedRows.includes(target as CDSTableRow)) {\n this._selectedRows = selectedRows.filter((e) => e !== target);\n } else {\n selectedRows.push(target as CDSTableRow);\n }\n\n if (tableBatchActions) {\n tableBatchActions.active = this._selectedRows?.length;\n tableBatchActions.selectedRowsCount += selected ? 1 : -1;\n }\n\n if (tableToolbarContent) {\n tableToolbarContent.hasBatchActions = this._selectedRows.length;\n }\n }\n\n const totalSelectableRows = [...this._tableRows].filter(\n (elem) => !elem.hasAttribute('filtered') && !elem.hasAttribute('disabled')\n ).length;\n\n // selected header checkbox upon all rows being selected\n const headerCheckbox = tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`);\n const allRowsSelected = this._selectedRows.length === totalSelectableRows;\n headerCheckbox.checked = !this._selectedRows.length ? false : true;\n headerCheckbox.indeterminate =\n !allRowsSelected && this._selectedRows.length > 0;\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n selectedRow: target,\n selectedRows: selectedRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableRowSelect,\n init\n )\n );\n };\n\n /**\n * Handles header row selection, selecting/unselecting all rows\n */\n @HostListener('eventBeforeChangeSelectionAll')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleAllRowsSelect = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { selected } = detail;\n const {\n _tableBatchActions: tableBatchActions,\n _tableToolbarContent: tableToolbarContent,\n _tableRows: tableRows,\n } = this;\n\n if (!this.contains(target as CDSTableRow)) {\n return;\n }\n\n let totalRows = 0;\n forEach(tableRows, (elem) => {\n if (!(elem as CDSTableRow).filtered && !(elem as CDSTableRow).disabled) {\n (elem as CDSTableRow).selected = selected;\n if (this.radio) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n const radioButton = (elem as CDSTableRow).shadowRoot!.querySelector(\n `${prefix}-radio-button`\n ) as CDSRadioButton;\n radioButton.checked = selected;\n }\n this._selectedRows.push(elem as CDSTableRow);\n totalRows++;\n\n const { selectorTableExpandedRows } = this\n .constructor as typeof CDSTable;\n const { nextElementSibling } = elem;\n\n // selecting the expanded row as well\n if (nextElementSibling?.matches(selectorTableExpandedRows)) {\n (elem.nextElementSibling as CDSTableExpandedRow).selected = selected;\n }\n }\n });\n\n if (!selected) {\n this._selectedRows = [];\n }\n\n if (tableBatchActions) {\n tableBatchActions.selectedRowsCount = selected ? totalRows : 0;\n tableBatchActions.active = selected;\n }\n\n if (tableToolbarContent) {\n tableToolbarContent.hasBatchActions = selected;\n }\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n selectedRows: this._selectedRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableRowSelectAll,\n init\n )\n );\n };\n\n /**\n * Handles cancel button within the toolbar actions\n */\n @HostListener('eventClickCancel')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleCancelSelection = async (event: CustomEvent) => {\n const { target } = event;\n const { _tableHeaderRow: tableHeaderRow } = this;\n\n if (this.contains(target as CDSTableBatchActions)) {\n tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`)\n .click();\n }\n };\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'table');\n }\n\n /**\n * If using `with-row-slugs`, set `with-row-ai-labels` attribute to true so\n * the styles are applied for slug as well\n *\n * remove in v12\n */\n if (this.withRowSlugs) {\n this.setAttribute('with-rows-ai-labels', '');\n this.withRowAILabels = true;\n }\n super.connectedCallback();\n }\n\n firstUpdated() {\n this._tableBatchActions = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBatchActions\n );\n this._tableToolbar = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableToolbar\n );\n this._tableToolbarContent = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableToolbarContent\n );\n this._tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n this._tableHeaderRow = this.querySelector(\n (this.constructor as typeof CDSTable).selectorRowsWithHeader\n );\n this._tableExpandedRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableExpandedRows\n );\n\n this._tableRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n );\n\n this._downloadButton = this.querySelector(\n (this.constructor as typeof CDSTable).selectorToolbarDownload\n );\n if (this._downloadButton) {\n this._downloadButton.onclick = this._handleDownload.bind(this);\n }\n this.headerCount = this._tableHeaderRow.children.length;\n }\n\n updateExpandable() {\n const { selectorTableExpandedRows } = this.constructor as typeof CDSTable;\n\n this._tableRows.forEach((e, index) => {\n // Only set expandable=true if this row has an expanded row following it\n const hasExpandedRow = e.nextElementSibling?.matches(\n selectorTableExpandedRows\n );\n e.expandable = this.expandable && hasExpandedRow;\n e.setAttribute('sort-id', index);\n });\n this._tableHeaderRow.expandable = this.expandable;\n this._tableHeaderRow.batchExpansion = this.batchExpansion;\n this.headerCount += this.expandable ? 1 : -1;\n }\n\n updated(changedProperties) {\n if (changedProperties.has('expandable')) {\n this.updateExpandable();\n }\n\n if (changedProperties.has('headerCount')) {\n this._tableExpandedRows.forEach((e) => {\n e.setAttribute('colspan', this.headerCount);\n });\n }\n\n if (changedProperties.has('isSelectable')) {\n if (this.isSelectable) {\n this._tableHeaderRow.setAttribute('selection-name', 'header');\n this._tableRows.forEach((e, index) => {\n if (!e.hasAttribute('selection-name')) {\n e.setAttribute('selection-name', index);\n }\n });\n }\n this.headerCount++;\n }\n\n if (changedProperties.has('locale')) {\n this.collator = new Intl.Collator(this.locale);\n }\n if (changedProperties.has('isSortable')) {\n if (this.isSortable) {\n this._enableSortAction();\n }\n }\n\n if (\n changedProperties.has('overflowMenuOnHover') ||\n changedProperties.has('size')\n ) {\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableCellOverflowMenu\n ),\n (elem) => {\n const cell = elem.parentNode as CDSTableCell;\n const row = cell.parentNode as CDSTableRow;\n cell.overflowMenuOnHover = this.overflowMenuOnHover;\n row.overflowMenuOnHover = this.overflowMenuOnHover;\n cell.setAttribute('size', this.size);\n elem.setAttribute('size', this.size);\n elem.setAttribute('data-table', '');\n }\n );\n }\n\n if (changedProperties.has('radio')) {\n // Propagate `size` attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n ),\n (elem) => {\n (elem as CDSTableRow).radio = this.radio;\n }\n );\n if (this._tableHeaderRow) {\n this._tableHeaderRow.hideCheckbox = this.radio;\n }\n }\n\n if (changedProperties.has('size')) {\n // Propagate `size` attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorAllRows\n ),\n (elem) => {\n elem.setAttribute('size', this.size);\n }\n );\n this._tableToolbar?.setAttribute('size', this.size);\n const batchActions = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBatchActions\n );\n if (batchActions) {\n batchActions.setAttribute('size', this.size);\n }\n }\n\n // TODO: Uncomment when Carbon fully implements Sticky header feature\n // if (changedProperties.has('stickyHeader')) {\n // const tableBody = this.querySelector(\n // (this.constructor as typeof CDSTable).selectorTableBody\n // );\n // const tableHead = this.querySelector(\n // (this.constructor as typeof CDSTable).selectorTableHead\n // );\n // (tableBody as any).stickyHeader = this.stickyHeader;\n // (tableHead as any).stickyHeader = this.stickyHeader;\n // forEach(\n // this.querySelectorAll(\n // (this.constructor as typeof CDSTable).selectorRowsWithHeader\n // ),\n // (elem) => {\n // (elem as any).stickyHeader = this.stickyHeader;\n // }\n // );\n // forEach(\n // this.querySelectorAll(\n // (this.constructor as typeof CDSTable).selectorTableCells\n // ),\n // (elem) => {\n // (elem as any).stickyHeader = this.stickyHeader;\n // }\n // );\n // }\n\n if (changedProperties.has('useZebraStyles')) {\n const tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (tableBody as any).useZebraStyles = this.useZebraStyles;\n }\n\n if (this.withRowAILabels) {\n this._tableHeaderRow.setAttribute('rows-with-ai-label', '');\n this._tableRows.forEach((row) => {\n row.setAttribute('rows-with-ai-label', '');\n });\n } else {\n this._tableHeaderRow.removeAttribute('rows-with-ai-label');\n this._tableRows.forEach((row) => {\n row.removeAttribute('rows-with-ai-label');\n });\n }\n\n // Gets table header info to add to the column cells for styles\n const headersWithAILabel: number[] = [];\n\n Array.prototype.slice\n .call(this._tableHeaderRow.children)\n .forEach((headerCell, index) => {\n if (\n headerCell.querySelector(`${prefix}-ai-label`) ||\n headerCell.querySelector(`${prefix}-slug`)\n ) {\n headerCell.setAttribute('ai-label', '');\n headersWithAILabel.push(index);\n } else {\n headerCell.removeAttribute('ai-label');\n }\n });\n\n this._tableRows.forEach((row) => {\n Array.prototype.slice\n .call((row as HTMLElement).children)\n .forEach((cell, index) => {\n if (headersWithAILabel.includes(index)) {\n cell.setAttribute('ai-label-in-header', '');\n } else {\n cell.removeAttribute('ai-label-in-header');\n }\n });\n });\n }\n\n render() {\n return html` <div class=\"${prefix}--data-table-header-container\">\n <div ?hidden=\"${!this.withHeader}\" class=\"${prefix}--data-table-header\">\n <slot @slotchange=\"${this._handleSlotChange}\" name=\"title\"></slot>\n <slot\n @slotchange=\"${this._handleSlotChange}\"\n name=\"description\"></slot>\n </div>\n <slot name=\"toolbar\"></slot>\n </div>\n\n <div part=\"inner-container\" class=\"${prefix}--data-table_inner-container\">\n <div part=\"content\" class=\"${prefix}--data-table-content\">\n <slot\n @cds-table-body-content-change=\"${this\n ._handleTableBodyChange}\"></slot>\n </div>\n </div>`;\n }\n\n /**\n * Adds isSortable value for table header cells.\n */\n _enableSortAction() {\n const headerCells = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorHeaderCell\n );\n headerCells.forEach((e) => {\n (e as CDSTableHeaderCell).isSortable = this.isSortable;\n (e as CDSTableHeaderCell).isSelectable = this.isSelectable;\n (e as CDSTableHeaderCell).isExpandable = this.expandable;\n });\n const columns = [...this._tableHeaderRow.children];\n let sortDirection;\n let columnIndex = 0;\n columns.forEach((column, index) => {\n if (\n column.hasAttribute('sort-direction') &&\n column.getAttribute('sort-direction') !== 'none'\n ) {\n sortDirection = column.getAttribute('sort-direction');\n columnIndex = index;\n }\n });\n\n columns.forEach((e, index) => {\n if (index !== columnIndex && this.isSortable) {\n e.setAttribute('sort-direction', 'none');\n } else if (e.hasAttribute('is-sortable')) {\n e.setAttribute('sort-direction', 'none');\n }\n });\n this._handleSortAction(columnIndex, sortDirection);\n }\n\n /**\n * The name of the custom event fired before a new sort direction is set upon a user gesture.\n * Cancellation of this event stops the user-initiated change in sort direction.\n */\n static get eventBeforeSort() {\n return `${prefix}-table-header-cell-sort`;\n }\n\n /**\n * The name of the custom event fired during search bar input\n */\n static get eventSearchInput() {\n return `${prefix}-search-input`;\n }\n\n /**\n * The name of the custom event fired before header row is selected/unselected upon a user gesture.\n */\n static get eventBeforeChangeSelectionAll() {\n return `${prefix}-table-change-selection-all`;\n }\n\n /**\n * The name of the custom event fired before a row is selected/unselected upon a user gesture.\n */\n static get eventBeforeChangeSelection() {\n return `${prefix}-table-row-change-selection`;\n }\n\n /**\n * The name of the custom event fired after the Cancel button is clicked.\n */\n static get eventClickCancel() {\n return `${prefix}-table-batch-actions-cancel-clicked`;\n }\n\n /**\n * The name of the custom event fired after the expanded state a row is toggled upon a user gesture.\n */\n static get eventExpandoToggle() {\n return `${prefix}-table-row-expando-toggled`;\n }\n\n /**\n * The name of the custom event fired after a row has been selected\n */\n static get eventTableRowSelect() {\n return `${prefix}-table-row-selected`;\n }\n\n /**\n * The name of the custom event fired after all rows have been selected\n */\n static get eventTableRowSelectAll() {\n return `${prefix}-table-row-all-selected`;\n }\n\n /**\n * The name of the custom event fired after the table has been sorted\n */\n static get eventTableSorted() {\n return `${prefix}-table-sorted`;\n }\n\n /**\n * The name of the custom event fired after the table has been filtered containing remaining rows.\n */\n static get eventTableFiltered() {\n return `${prefix}-table-filtered`;\n }\n\n /**\n * The CSS selector to find the overflow menu on the table cell\n */\n static get selectorTableCellOverflowMenu() {\n return `${prefix}-table-cell ${prefix}-overflow-menu`;\n }\n\n /**\n * The CSS selector to find the download button\n */\n static get selectorToolbarDownload() {\n return `${prefix}-button[download]`;\n }\n\n /**\n * The CSS selector to find the table batch actions\n */\n static get selectorTableBatchActions() {\n return `${prefix}-table-batch-actions`;\n }\n\n /**\n * The CSS selector to find the table toolbar\n */\n static get selectorTableToolbar() {\n return `${prefix}-table-toolbar`;\n }\n\n /**\n * The CSS selector to find the table toolbar content\n */\n static get selectorTableToolbarContent() {\n return `${prefix}-table-toolbar-content`;\n }\n\n /**\n * The CSS selector to find the table toolbar search\n */\n static get selectorTableToolbarSearch() {\n return `${prefix}-table-toolbar-search`;\n }\n\n /**\n * The CSS selector to find the table head\n */\n static get selectorTableHead() {\n return `${prefix}-table-head`;\n }\n\n /**\n * The CSS selector to find the table body\n */\n static get selectorTableBody() {\n return `${prefix}-table-body`;\n }\n\n /**\n * The CSS selector to find the table expanded rows\n */\n static get selectorTableExpandedRows() {\n return `${prefix}-table-expanded-row`;\n }\n\n /**\n * The CSS selector to find the table rows\n */\n static get selectorTableRow() {\n return `${prefix}-table-row`;\n }\n\n /**\n * The CSS selector to find the rows cells.\n */\n static get selectorTableRowCells() {\n return `${prefix}-table-cell`;\n }\n\n /**\n * The CSS selector to find the rows cells, including header cells.\n */\n static get selectorTableCells() {\n return `${prefix}-table-cell, ${prefix}-table-header-cell`;\n }\n\n /**\n * The CSS selector to find the header cell\n */\n static get selectorHeaderCell() {\n return `${prefix}-table-header-cell`;\n }\n\n /**\n * The CSS selector to find the rows, including header rows.\n */\n static get selectorRowsWithHeader() {\n return `${prefix}-table-header-row,${prefix}-table-row`;\n }\n\n /**\n * The CSS selector to find all rows\n */\n static get selectorAllRows() {\n return `${prefix}-table-header-row,${prefix}-table-row,${prefix}-table-expanded-row`;\n }\n\n static styles = styles;\n}\n\nexport default CDSTable;\n"],"names":["customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../../src/components/data-table/table.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { forEach } from '../../globals/internal/collection-helpers';\nimport { TABLE_SIZE, TABLE_SORT_DIRECTION } from './defs';\nimport styles from './data-table.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport {\n CDSRadioButton,\n CDSTableBatchActions,\n CDSTableCell,\n CDSTableHeaderCell,\n CDSTableHeaderRow,\n CDSTableRow,\n CDSTableToolbarSearch,\n} from '../..';\nimport CDSTableExpandedRow from './table-expanded-row';\n\nexport { TABLE_SIZE };\n\n/**\n * Data table.\n *\n * @element cds-table\n * @fires cds-table-header-cell-sort\n * The name of the custom event fired before a new sort direction is set upon a user gesture.\n * Cancellation of this event stops the user-initiated change in sort direction.\n * @fires cds-search input\n * The name of the custom event fired during search bar input\n * @fires cds-table-change-selection-all\n * The name of the custom event fired before header row is selected/unselected upon a user gesture.\n * @fires cds-table-row-change-selection\n * The name of the custom event fired before a row is selected/unselected upon a user gesture.\n * @fires cds-table-batch-actions-cancel-clicked\n * The name of the custom event fired after the Cancel button is clicked.\n * @fires cds-table-row-expando-toggled\n * The name of the custom event fired after the expanded state of a row is toggled upon a user gesture.\n * @fires cds-table-row-selected\n * The name of the custom event fired after a row has been selected.\n * @fires cds-table-row-all-selected\n * The name of the custom event fired after all rows have been selected.\n * @fires cds-table-sorted\n * The name of the custom event fired after the table has been sorted.\n * @fires cds-table-filtered\n * The name of the custom event fired after the table has been filtered containing remaining rows.\n */\n@customElement(`${prefix}-table`)\nclass CDSTable extends HostListenerMixin(LitElement) {\n /**\n * The map of how sorting direction affects sorting order.\n */\n private collationFactors = {\n [TABLE_SORT_DIRECTION.ASCENDING]: 1,\n [TABLE_SORT_DIRECTION.DESCENDING]: -1,\n };\n\n /**\n * Reference to download button\n */\n @state()\n private _downloadButton;\n\n /**\n * Current search value for filtering\n */\n @state()\n private _searchValue = '';\n\n /**\n * Table header row within component\n */\n @state()\n private _tableHeaderRow;\n\n /**\n * Table body\n */\n @state()\n private _tableBody;\n\n /**\n * Table expanded row within component\n */\n @state()\n private _tableExpandedRows;\n\n /**\n * Table rows within component\n */\n @state()\n private _tableRows;\n\n /**\n * Reference to the component containing batch actions\n */\n @state()\n private _tableBatchActions;\n\n /**\n * Reference to the table toolbar\n */\n @state()\n private _tableToolbar;\n\n /**\n * Reference to the table toolbar content\n */\n @state()\n private _tableToolbarContent;\n\n @state()\n private _selectedRows: CDSTableRow[] = [];\n\n /**\n * `true` if this table should support batch expansion\n */\n @property({ type: Boolean, reflect: true, attribute: 'batch-expansion' })\n batchExpansion = false;\n\n /**\n * The g11n collator to use.\n */\n @property({ attribute: false })\n collator;\n\n /**\n * @param lhs A value.\n * @param rhs Another value.\n * @param collator A custom collator.\n * @returns\n * `0` if the given two values are equal\n * A negative value to sort `lhs` to an index lower than `rhs`\n * A positive value to sort `rhs` to an index lower than `lhs`\n */\n\n customSortRow(lhs, rhs, collator) {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return lhs - rhs;\n }\n return collator.compare(lhs, rhs);\n }\n\n /**\n * Specify whether the rows should be able to be expandable\n */\n @property({ type: Boolean, reflect: true })\n expandable = false;\n\n /**\n * The method used when filtering the table with the search bar.\n * Can be replaced with custom method.\n *\n * @param rowText A table row.\n * @param searchString A search string.\n * @returns `false` if the given table row matches the given search string.\n */\n @property()\n filterRows = (rowText: string, searchString: string) =>\n rowText.toLowerCase().indexOf(searchString.toLowerCase()) < 0;\n\n /**\n * The total headers\n */\n @property()\n headerCount = 0;\n\n /**\n * `true` if this table contains selectable rows\n */\n @property({ type: Boolean, reflect: true, attribute: 'is-selectable' })\n isSelectable = false;\n\n /**\n * `true` if this table should support sorting.\n */\n @property({ type: Boolean, reflect: true, attribute: 'is-sortable' })\n isSortable = false;\n\n /**\n * The table size.\n */\n @property({ reflect: true })\n locale = 'en';\n\n /**\n * Specify whether the overflow menu (if it exists) should be shown always, or only on hover\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'overflow-menu-on-hover',\n })\n overflowMenuOnHover = false;\n\n /**\n * Specify whether the control should be a radio button or inline checkbox\n */\n @property({ type: Boolean, reflect: true })\n radio = false;\n\n /**\n * The table size.\n */\n @property({ reflect: true })\n size = TABLE_SIZE.LG;\n\n /**\n * TODO: Uncomment when Carbon fully implements sticky header\n * Specify whether the header should be sticky.\n * Still experimental: may not work with every combination of table props\n */\n // @property({ type: Boolean, attribute: 'sticky-header', reflect: true })\n // stickyHeader = false;\n\n /**\n * If true, will use a width of 'auto' instead of 100%\n */\n @property({ type: Boolean, attribute: 'use-static-width', reflect: true })\n useStaticWidth = false;\n\n /**\n * true to add useZebraStyles striping.\n */\n @property({ type: Boolean, attribute: 'use-zebra-styles', reflect: true })\n useZebraStyles = false;\n\n @property({ type: Boolean, attribute: 'with-header', reflect: true })\n withHeader;\n\n /**\n * true if AI Labels are added in the rows\n */\n @property({ type: Boolean, attribute: 'with-row-ai-labels' })\n withRowAILabels = false;\n\n /**\n * true if slugs are added in the rows\n *\n * @deprecated remove in v12, use `with-row-ai-labels` instead\n */\n @property({ type: Boolean, attribute: 'with-row-slugs' })\n withRowSlugs = false;\n\n private _handleSlotChange({ target }: Event) {\n const hasContent = (target as HTMLSlotElement).assignedNodes().some(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n (node) => node.nodeType !== Node.TEXT_NODE || node!.textContent!.trim()\n );\n this.withHeader = hasContent;\n }\n\n private _handleTableBodyChange() {\n // cds-table-head or cds-table-body may have changed\n this._tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n this._tableExpandedRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableExpandedRows\n );\n this._tableRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n );\n\n // update any row dependant features\n this.updateExpandable();\n }\n\n private _handleSortAction(columnIndex, sortDirection) {\n const rows = [...this._tableRows];\n\n // regular row sorting\n rows.sort((a, b) => {\n const cellA = a.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )[columnIndex].textContent;\n const cellB = b.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )[columnIndex].textContent;\n return (\n this.collationFactors[sortDirection] *\n this.customSortRow(cellA, cellB, this.collator)\n );\n });\n\n // take into account the expanded rows, mapping each expandable row to its original for proper reinsertion\n if (this.expandable) {\n const originalRows = [...this._tableRows];\n const expandedRows = [...this._tableExpandedRows];\n\n const mapping = originalRows.reduce((acc, element, index) => {\n const sortId = element.getAttribute('sort-id');\n acc[sortId] = expandedRows[index];\n return acc;\n }, {});\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const sortedWithExpanded = [] as any;\n\n rows.forEach((e) => {\n const sortId = e.getAttribute('sort-id');\n sortedWithExpanded.push(e);\n // Only add the expanded row if it exists\n if (mapping[sortId]) {\n sortedWithExpanded.push(mapping[sortId]);\n }\n });\n\n sortedWithExpanded.forEach((e) => {\n this._tableBody.insertBefore(e, null);\n });\n } else {\n rows.forEach((e) => {\n this._tableBody.insertBefore(e, null);\n });\n }\n }\n\n private _handleFilterRows() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const unfilteredRows = [] as any;\n forEach(this._tableRows, (elem) => {\n let rowText = elem.textContent?.trim();\n let filtered = this.filterRows(rowText as string, this._searchValue);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).filtered = filtered;\n\n if (filtered && this.expandable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n rowText = (elem as any).nextElementSibling.textContent?.trim();\n filtered = this.filterRows(rowText as string, this._searchValue);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).filtered = filtered;\n }\n\n if (!filtered) {\n unfilteredRows.push(elem);\n }\n\n if (this.isSelectable) {\n const unfilteredSelectableLength = unfilteredRows.filter((elem) => {\n return !elem.hasAttribute('disabled');\n }).length;\n\n const headerCheckbox = this._tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`);\n\n headerCheckbox.disabled = unfilteredSelectableLength === 0;\n }\n\n if (this.expandable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).nextElementSibling.filtered = filtered;\n }\n });\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n unfilteredRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableFiltered,\n init\n )\n );\n }\n\n /**\n * Download manager for selected rows.\n */\n private _handleDownload({ target }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const data = [] as any;\n\n const elementsToArray = (elements) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n Array.from(elements, (element) => (element as any).textContent);\n\n const headerCells = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorHeaderCell\n );\n const rows = this._selectedRows;\n const headerTitleArray = elementsToArray(headerCells);\n\n rows.forEach((row) => {\n const rowData = {};\n const cells = elementsToArray(\n row.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )\n );\n\n cells.forEach((cellText, index) => {\n const headerTitle = headerTitleArray[index];\n rowData[headerTitle] = cellText;\n });\n\n data.push(rowData);\n });\n\n const blob = new Blob([JSON.stringify(data)], { type: 'application/json' });\n\n target.href = URL.createObjectURL(blob);\n }\n\n /**\n * Handles batch expansion\n */\n @HostListener('eventExpandoToggle')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBatchExpansion = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { expanded } = detail;\n\n if ((target as CDSTableHeaderRow) === this._tableHeaderRow) {\n this._tableRows.forEach((e) => ((e as CDSTableRow).expanded = expanded));\n }\n };\n\n /**\n * Handles sorting the table depending on the column selected\n */\n @HostListener('eventBeforeSort')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleSort = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { sortDirection } = detail;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n if (!this.contains(target as any)) {\n return;\n }\n\n const columns = [...this._tableHeaderRow.children];\n const columnIndex = columns.indexOf(target);\n\n columns.forEach((e) => {\n if (e !== target && this.isSortable) {\n e.setAttribute('sort-direction', 'none');\n } else if (e.hasAttribute('is-sortable')) {\n e.setAttribute('sort-direction', 'none');\n }\n });\n\n this._handleSortAction(columnIndex, sortDirection);\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n sortedHeader: columns[columnIndex],\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableSorted,\n init\n )\n );\n\n this._handleFilterRows();\n };\n\n /**\n * Handles search input within the toolbar actions\n */\n @HostListener('eventSearchInput')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleSearchInput = async (event: CustomEvent) => {\n const { detail, target } = event;\n\n if (this.contains(target as CDSTableToolbarSearch)) {\n const { value } = detail;\n this._searchValue = value;\n this._handleFilterRows();\n }\n };\n\n /**\n * Handles row selection\n */\n @HostListener('eventBeforeChangeSelection')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleRowSelect = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { selected } = detail;\n const {\n _tableBatchActions: tableBatchActions,\n _tableToolbarContent: tableToolbarContent,\n _tableHeaderRow: tableHeaderRow,\n _selectedRows: selectedRows,\n } = this;\n\n if (!this.contains(target as CDSTableRow)) {\n return;\n }\n\n if (this.radio) {\n this._tableRows.forEach((e) => {\n if (e !== target) {\n e.removeAttribute('selected');\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n e.shadowRoot!.querySelector(`${prefix}-radio-button`).checked = false;\n }\n });\n this._selectedRows.push(...[target as CDSTableRow]);\n } else {\n if (selectedRows.includes(target as CDSTableRow)) {\n this._selectedRows = selectedRows.filter((e) => e !== target);\n } else {\n selectedRows.push(target as CDSTableRow);\n }\n\n if (tableBatchActions) {\n tableBatchActions.active = this._selectedRows?.length;\n tableBatchActions.selectedRowsCount += selected ? 1 : -1;\n }\n\n if (tableToolbarContent) {\n tableToolbarContent.hasBatchActions = this._selectedRows.length;\n }\n }\n\n const totalSelectableRows = [...this._tableRows].filter(\n (elem) => !elem.hasAttribute('filtered') && !elem.hasAttribute('disabled')\n ).length;\n\n // selected header checkbox upon all rows being selected\n const headerCheckbox = tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`);\n const allRowsSelected = this._selectedRows.length === totalSelectableRows;\n headerCheckbox.checked = Boolean(this._selectedRows.length);\n headerCheckbox.indeterminate =\n !allRowsSelected && this._selectedRows.length > 0;\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n selectedRow: target,\n selectedRows: selectedRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableRowSelect,\n init\n )\n );\n };\n\n /**\n * Handles header row selection, selecting/unselecting all rows\n */\n @HostListener('eventBeforeChangeSelectionAll')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleAllRowsSelect = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { selected } = detail;\n const {\n _tableBatchActions: tableBatchActions,\n _tableToolbarContent: tableToolbarContent,\n _tableRows: tableRows,\n } = this;\n\n if (!this.contains(target as CDSTableRow)) {\n return;\n }\n\n let totalRows = 0;\n forEach(tableRows, (elem) => {\n if (!(elem as CDSTableRow).filtered && !(elem as CDSTableRow).disabled) {\n (elem as CDSTableRow).selected = selected;\n if (this.radio) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n const radioButton = (elem as CDSTableRow).shadowRoot!.querySelector(\n `${prefix}-radio-button`\n ) as CDSRadioButton;\n radioButton.checked = selected;\n }\n this._selectedRows.push(elem as CDSTableRow);\n totalRows++;\n\n const { selectorTableExpandedRows } = this\n .constructor as typeof CDSTable;\n const { nextElementSibling } = elem;\n\n // selecting the expanded row as well\n if (nextElementSibling?.matches(selectorTableExpandedRows)) {\n (elem.nextElementSibling as CDSTableExpandedRow).selected = selected;\n }\n }\n });\n\n if (!selected) {\n this._selectedRows = [];\n }\n\n if (tableBatchActions) {\n tableBatchActions.selectedRowsCount = selected ? totalRows : 0;\n tableBatchActions.active = selected;\n }\n\n if (tableToolbarContent) {\n tableToolbarContent.hasBatchActions = selected;\n }\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n selectedRows: this._selectedRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableRowSelectAll,\n init\n )\n );\n };\n\n /**\n * Handles cancel button within the toolbar actions\n */\n @HostListener('eventClickCancel')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleCancelSelection = async (event: CustomEvent) => {\n const { target } = event;\n const { _tableHeaderRow: tableHeaderRow } = this;\n\n if (this.contains(target as CDSTableBatchActions)) {\n tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`)\n .click();\n }\n };\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'table');\n }\n\n /**\n * If using `with-row-slugs`, set `with-row-ai-labels` attribute to true so\n * the styles are applied for slug as well\n *\n * remove in v12\n */\n if (this.withRowSlugs) {\n this.setAttribute('with-rows-ai-labels', '');\n this.withRowAILabels = true;\n }\n super.connectedCallback();\n }\n\n firstUpdated() {\n this._tableBatchActions = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBatchActions\n );\n this._tableToolbar = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableToolbar\n );\n this._tableToolbarContent = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableToolbarContent\n );\n this._tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n this._tableHeaderRow = this.querySelector(\n (this.constructor as typeof CDSTable).selectorRowsWithHeader\n );\n this._tableExpandedRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableExpandedRows\n );\n\n this._tableRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n );\n\n this._downloadButton = this.querySelector(\n (this.constructor as typeof CDSTable).selectorToolbarDownload\n );\n if (this._downloadButton) {\n this._downloadButton.onclick = this._handleDownload.bind(this);\n }\n this.headerCount = this._tableHeaderRow.children.length;\n }\n\n updateExpandable() {\n const { selectorTableExpandedRows } = this.constructor as typeof CDSTable;\n\n this._tableRows.forEach((e, index) => {\n // Only set expandable=true if this row has an expanded row following it\n const hasExpandedRow = e.nextElementSibling?.matches(\n selectorTableExpandedRows\n );\n e.expandable = this.expandable && hasExpandedRow;\n e.setAttribute('sort-id', index);\n });\n this._tableHeaderRow.expandable = this.expandable;\n this._tableHeaderRow.batchExpansion = this.batchExpansion;\n this.headerCount += this.expandable ? 1 : -1;\n }\n\n updated(changedProperties) {\n if (changedProperties.has('expandable')) {\n this.updateExpandable();\n }\n\n if (changedProperties.has('headerCount')) {\n this._tableExpandedRows.forEach((e) => {\n e.setAttribute('colspan', this.headerCount);\n });\n }\n\n if (changedProperties.has('isSelectable')) {\n if (this.isSelectable) {\n this._tableHeaderRow.setAttribute('selection-name', 'header');\n this._tableRows.forEach((e, index) => {\n if (!e.hasAttribute('selection-name')) {\n e.setAttribute('selection-name', index);\n }\n });\n }\n this.headerCount++;\n }\n\n if (changedProperties.has('locale')) {\n this.collator = new Intl.Collator(this.locale);\n }\n if (changedProperties.has('isSortable')) {\n if (this.isSortable) {\n this._enableSortAction();\n }\n }\n\n if (\n changedProperties.has('overflowMenuOnHover') ||\n changedProperties.has('size')\n ) {\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableCellOverflowMenu\n ),\n (elem) => {\n const cell = elem.parentNode as CDSTableCell;\n const row = cell.parentNode as CDSTableRow;\n cell.overflowMenuOnHover = this.overflowMenuOnHover;\n row.overflowMenuOnHover = this.overflowMenuOnHover;\n cell.setAttribute('size', this.size);\n elem.setAttribute('size', this.size);\n elem.setAttribute('data-table', '');\n }\n );\n }\n\n if (changedProperties.has('radio')) {\n // Propagate `size` attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n ),\n (elem) => {\n (elem as CDSTableRow).radio = this.radio;\n }\n );\n if (this._tableHeaderRow) {\n this._tableHeaderRow.hideCheckbox = this.radio;\n }\n }\n\n if (changedProperties.has('size')) {\n // Propagate `size` attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorAllRows\n ),\n (elem) => {\n elem.setAttribute('size', this.size);\n }\n );\n this._tableToolbar?.setAttribute('size', this.size);\n const batchActions = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBatchActions\n );\n if (batchActions) {\n batchActions.setAttribute('size', this.size);\n }\n }\n\n // TODO: Uncomment when Carbon fully implements Sticky header feature\n // if (changedProperties.has('stickyHeader')) {\n // const tableBody = this.querySelector(\n // (this.constructor as typeof CDSTable).selectorTableBody\n // );\n // const tableHead = this.querySelector(\n // (this.constructor as typeof CDSTable).selectorTableHead\n // );\n // (tableBody as any).stickyHeader = this.stickyHeader;\n // (tableHead as any).stickyHeader = this.stickyHeader;\n // forEach(\n // this.querySelectorAll(\n // (this.constructor as typeof CDSTable).selectorRowsWithHeader\n // ),\n // (elem) => {\n // (elem as any).stickyHeader = this.stickyHeader;\n // }\n // );\n // forEach(\n // this.querySelectorAll(\n // (this.constructor as typeof CDSTable).selectorTableCells\n // ),\n // (elem) => {\n // (elem as any).stickyHeader = this.stickyHeader;\n // }\n // );\n // }\n\n if (changedProperties.has('useZebraStyles')) {\n const tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (tableBody as any).useZebraStyles = this.useZebraStyles;\n }\n\n if (this.withRowAILabels) {\n this._tableHeaderRow.setAttribute('rows-with-ai-label', '');\n this._tableRows.forEach((row) => {\n row.setAttribute('rows-with-ai-label', '');\n });\n } else {\n this._tableHeaderRow.removeAttribute('rows-with-ai-label');\n this._tableRows.forEach((row) => {\n row.removeAttribute('rows-with-ai-label');\n });\n }\n\n // Gets table header info to add to the column cells for styles\n const headersWithAILabel: number[] = [];\n\n Array.prototype.slice\n .call(this._tableHeaderRow.children)\n .forEach((headerCell, index) => {\n if (\n headerCell.querySelector(`${prefix}-ai-label`) ||\n headerCell.querySelector(`${prefix}-slug`)\n ) {\n headerCell.setAttribute('ai-label', '');\n headersWithAILabel.push(index);\n } else {\n headerCell.removeAttribute('ai-label');\n }\n });\n\n this._tableRows.forEach((row) => {\n Array.prototype.slice\n .call((row as HTMLElement).children)\n .forEach((cell, index) => {\n if (headersWithAILabel.includes(index)) {\n cell.setAttribute('ai-label-in-header', '');\n } else {\n cell.removeAttribute('ai-label-in-header');\n }\n });\n });\n }\n\n render() {\n return html` <div class=\"${prefix}--data-table-header-container\">\n <div ?hidden=\"${!this.withHeader}\" class=\"${prefix}--data-table-header\">\n <slot @slotchange=\"${this._handleSlotChange}\" name=\"title\"></slot>\n <slot\n @slotchange=\"${this._handleSlotChange}\"\n name=\"description\"></slot>\n </div>\n <slot name=\"toolbar\"></slot>\n </div>\n\n <div part=\"inner-container\" class=\"${prefix}--data-table_inner-container\">\n <div part=\"content\" class=\"${prefix}--data-table-content\">\n <slot\n @cds-table-body-content-change=\"${this\n ._handleTableBodyChange}\"></slot>\n </div>\n </div>`;\n }\n\n /**\n * Adds isSortable value for table header cells.\n */\n _enableSortAction() {\n const headerCells = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorHeaderCell\n );\n headerCells.forEach((e) => {\n (e as CDSTableHeaderCell).isSortable = this.isSortable;\n (e as CDSTableHeaderCell).isSelectable = this.isSelectable;\n (e as CDSTableHeaderCell).isExpandable = this.expandable;\n });\n const columns = [...this._tableHeaderRow.children];\n let sortDirection;\n let columnIndex = 0;\n columns.forEach((column, index) => {\n if (\n column.hasAttribute('sort-direction') &&\n column.getAttribute('sort-direction') !== 'none'\n ) {\n sortDirection = column.getAttribute('sort-direction');\n columnIndex = index;\n }\n });\n\n columns.forEach((e, index) => {\n if (index !== columnIndex && this.isSortable) {\n e.setAttribute('sort-direction', 'none');\n } else if (e.hasAttribute('is-sortable')) {\n e.setAttribute('sort-direction', 'none');\n }\n });\n this._handleSortAction(columnIndex, sortDirection);\n }\n\n /**\n * The name of the custom event fired before a new sort direction is set upon a user gesture.\n * Cancellation of this event stops the user-initiated change in sort direction.\n */\n static get eventBeforeSort() {\n return `${prefix}-table-header-cell-sort`;\n }\n\n /**\n * The name of the custom event fired during search bar input\n */\n static get eventSearchInput() {\n return `${prefix}-search-input`;\n }\n\n /**\n * The name of the custom event fired before header row is selected/unselected upon a user gesture.\n */\n static get eventBeforeChangeSelectionAll() {\n return `${prefix}-table-change-selection-all`;\n }\n\n /**\n * The name of the custom event fired before a row is selected/unselected upon a user gesture.\n */\n static get eventBeforeChangeSelection() {\n return `${prefix}-table-row-change-selection`;\n }\n\n /**\n * The name of the custom event fired after the Cancel button is clicked.\n */\n static get eventClickCancel() {\n return `${prefix}-table-batch-actions-cancel-clicked`;\n }\n\n /**\n * The name of the custom event fired after the expanded state a row is toggled upon a user gesture.\n */\n static get eventExpandoToggle() {\n return `${prefix}-table-row-expando-toggled`;\n }\n\n /**\n * The name of the custom event fired after a row has been selected\n */\n static get eventTableRowSelect() {\n return `${prefix}-table-row-selected`;\n }\n\n /**\n * The name of the custom event fired after all rows have been selected\n */\n static get eventTableRowSelectAll() {\n return `${prefix}-table-row-all-selected`;\n }\n\n /**\n * The name of the custom event fired after the table has been sorted\n */\n static get eventTableSorted() {\n return `${prefix}-table-sorted`;\n }\n\n /**\n * The name of the custom event fired after the table has been filtered containing remaining rows.\n */\n static get eventTableFiltered() {\n return `${prefix}-table-filtered`;\n }\n\n /**\n * The CSS selector to find the overflow menu on the table cell\n */\n static get selectorTableCellOverflowMenu() {\n return `${prefix}-table-cell ${prefix}-overflow-menu`;\n }\n\n /**\n * The CSS selector to find the download button\n */\n static get selectorToolbarDownload() {\n return `${prefix}-button[download]`;\n }\n\n /**\n * The CSS selector to find the table batch actions\n */\n static get selectorTableBatchActions() {\n return `${prefix}-table-batch-actions`;\n }\n\n /**\n * The CSS selector to find the table toolbar\n */\n static get selectorTableToolbar() {\n return `${prefix}-table-toolbar`;\n }\n\n /**\n * The CSS selector to find the table toolbar content\n */\n static get selectorTableToolbarContent() {\n return `${prefix}-table-toolbar-content`;\n }\n\n /**\n * The CSS selector to find the table toolbar search\n */\n static get selectorTableToolbarSearch() {\n return `${prefix}-table-toolbar-search`;\n }\n\n /**\n * The CSS selector to find the table head\n */\n static get selectorTableHead() {\n return `${prefix}-table-head`;\n }\n\n /**\n * The CSS selector to find the table body\n */\n static get selectorTableBody() {\n return `${prefix}-table-body`;\n }\n\n /**\n * The CSS selector to find the table expanded rows\n */\n static get selectorTableExpandedRows() {\n return `${prefix}-table-expanded-row`;\n }\n\n /**\n * The CSS selector to find the table rows\n */\n static get selectorTableRow() {\n return `${prefix}-table-row`;\n }\n\n /**\n * The CSS selector to find the rows cells.\n */\n static get selectorTableRowCells() {\n return `${prefix}-table-cell`;\n }\n\n /**\n * The CSS selector to find the rows cells, including header cells.\n */\n static get selectorTableCells() {\n return `${prefix}-table-cell, ${prefix}-table-header-cell`;\n }\n\n /**\n * The CSS selector to find the header cell\n */\n static get selectorHeaderCell() {\n return `${prefix}-table-header-cell`;\n }\n\n /**\n * The CSS selector to find the rows, including header rows.\n */\n static get selectorRowsWithHeader() {\n return `${prefix}-table-header-row,${prefix}-table-row`;\n }\n\n /**\n * The CSS selector to find all rows\n */\n static get selectorAllRows() {\n return `${prefix}-table-header-row,${prefix}-table-row,${prefix}-table-expanded-row`;\n }\n\n static styles = styles;\n}\n\nexport default CDSTable;\n"],"names":["customElement"],"mappings":"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"}
|
|
@@ -251,7 +251,7 @@ let CDSPopover = CDSPopover_1 = class CDSPopover extends HostListenerMixin(LitEl
|
|
|
251
251
|
render() {
|
|
252
252
|
const { dropShadow, border, highContrast, open, tabTip, _handleSlotChange: handleSlotChange, } = this;
|
|
253
253
|
if (tabTip) {
|
|
254
|
-
this.caret = tabTip
|
|
254
|
+
this.caret = !tabTip;
|
|
255
255
|
}
|
|
256
256
|
if (!this.autoalign) {
|
|
257
257
|
this.align = this.align ? this.align : tabTip ? 'bottom-start' : 'bottom';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.js","sources":["../../../src/components/popover/popover.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport styles from './popover.scss?lit';\nimport CDSPopoverContent from './popover-content';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport FloatingUIController from '../../globals/controllers/floating-controller';\nimport { POPOVER_BACKGROUND_TOKEN } from './defs';\nimport type { Boundary, Rect } from '@floating-ui/dom';\n\n/**\n * Popover.\n *\n * @element cds-popover\n */\n@customElement(`${prefix}-popover`)\nclass CDSPopover extends HostListenerMixin(LitElement) {\n /**\n * Create popover controller instance\n */\n private popoverController = new FloatingUIController(this);\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot')\n private _triggerSlotNode!: HTMLSlotElement;\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot[name=\"content\"]')\n private _contentSlotNode!: HTMLSlotElement;\n\n /**\n * Specify direction of alignment\n */\n @property({ reflect: true, type: String })\n align = '';\n\n /**\n * **Experimental:** Provide an offset value for alignment axis. Only takes effect when `autoalign` is enabled.\n */\n @property({ type: Number, reflect: true, attribute: 'alignment-axis-offset' })\n alignmentAxisOffset?: number;\n\n /**\n * Specify whether a auto align functionality should be applied\n */\n @property({ type: Boolean, reflect: true })\n autoalign = false;\n\n /**\n * Specify whether a caret should be rendered\n */\n @property({ type: Boolean, reflect: true })\n caret = true;\n\n /**\n * Specify whether a dropShadow should be rendered\n */\n @property({ type: Boolean, reflect: true })\n dropShadow = true;\n\n /**\n * Specify whether a border should be rendered on the popover\n */\n @property({ type: Boolean, reflect: true })\n border = false;\n\n /**\n * Render the component using the high-contrast variant\n */\n @property({ type: Boolean, reflect: true })\n highContrast = false;\n\n /**\n * Specify whether the component is currently open or closed\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Render the component using the tab tip variant\n */\n @property({ type: Boolean, reflect: true })\n tabTip = false;\n\n /**\n * Specify the background token to use. Default is 'layer'.\n */\n @property({ reflect: true, type: String })\n backgroundToken = POPOVER_BACKGROUND_TOKEN.LAYER;\n\n /**\n * Specify a bounding element to be used for autoAlign calculations. The viewport is used by default.\n * Takes one of the following: 'clippingAncestors', '#elementid', '#elementid_1, #elementid_2', 'rect(x, y, width, height)'\n * This prop is currently experimental and is subject to future changes.\n */\n @property({ type: String, reflect: true, attribute: 'autoalign-boundary' })\n autoAlignBoundary?: string;\n\n // Tracks whether the last mousedown event was inside the popover content\n private _lastClickWasInsidePopoverContent = false;\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n if (this.tabTip) {\n const component = (target as HTMLSlotElement)\n .assignedNodes()\n .filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).tagName === 'BUTTON'\n );\n\n (component[0] as HTMLElement)?.classList.add(\n `${prefix}--popover--tab-tip__button`\n );\n }\n this.requestUpdate();\n }\n\n @HostListener('mousedown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleMouseDown(event: MouseEvent) {\n const path = event.composedPath();\n const contentEl = this._contentSlotNode.assignedElements()[0];\n\n this._lastClickWasInsidePopoverContent =\n contentEl && path.includes(contentEl);\n\n // reset flag\n if (this._lastClickWasInsidePopoverContent) {\n setTimeout(() => {\n this._lastClickWasInsidePopoverContent = false;\n }, 0);\n }\n }\n\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleFocusOut(event: Event) {\n const relatedTarget = (event as FocusEvent).relatedTarget as Node | null;\n const path = event.composedPath();\n const triggerEl = this._triggerSlotNode.assignedElements({\n flatten: true,\n })[0];\n\n if (this._lastClickWasInsidePopoverContent) {\n this._lastClickWasInsidePopoverContent = false;\n return;\n }\n\n if (\n relatedTarget &&\n triggerEl &&\n (path.includes(triggerEl) ||\n triggerEl === relatedTarget ||\n triggerEl.contains(relatedTarget))\n ) {\n return;\n }\n if (!this.contains(relatedTarget)) {\n const wasOpen = this.open;\n this.open = false;\n\n if (wasOpen) {\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventOnClose,\n {\n bubbles: true,\n composed: true,\n }\n )\n );\n }\n }\n }\n\n private _handleOutsideClick(event: Event) {\n const path = event.composedPath();\n\n if (path.includes(this._triggerSlotNode.assignedElements()[0])) return;\n\n const popoverContent = this.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContent\n )?.shadowRoot?.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContentClass\n ) as HTMLElement;\n\n if (path.includes(popoverContent)) return;\n\n const target = event.target as Node | null;\n const composedTarget = event.composedPath?.()[0] as Node | null;\n\n if (\n this.open &&\n target &&\n !this.contains(target) &&\n !this.contains(composedTarget)\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSPopover).eventOnClose, {\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n constructor() {\n super();\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n }\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this._handleOutsideClick);\n }\n\n /**\n * This function resolves the string passed in for `autoAlignBoundary` to either:\n * \"clippingAncestors\"\n * An element (found via #id)\n * An array of elements (found via #id1, #id2, #id3, separated by \",\")\n * A rect, input format should be 'rect(x,y,width,height)'\n */\n private _resolveAutoAlignBoundary(): Boundary {\n const raw = (this.autoAlignBoundary ?? '').trim();\n\n // Default to 'clippingAncestors'\n if (!raw) return 'clippingAncestors';\n if (raw === 'clippingAncestors') return 'clippingAncestors';\n\n // regex match for: rect(x,y,width,height)\n const rectMatch =\n /^rect\\(\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*\\)$/i.exec(\n raw\n );\n if (rectMatch) {\n const [, x, y, w, h] = rectMatch;\n const rect: Rect = { x: +x, y: +y, width: +w, height: +h };\n return rect;\n }\n\n // Get element(s)\n const ids = raw\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 1 && s.startsWith('#'))\n .map((s) => s.slice(1).trim())\n .filter(Boolean);\n\n if (ids.length > 0) {\n const elements: Element[] = [];\n const inputted_ids = new Set<string>();\n\n for (const id of ids) {\n if (inputted_ids.has(id)) continue;\n inputted_ids.add(id);\n\n const el = document.getElementById(id);\n\n if (el) elements.push(el);\n }\n return elements.length === 1 ? elements[0] : elements;\n }\n\n // default fallback\n return 'clippingAncestors';\n }\n\n updated(changedProperties) {\n const { selectorPopoverContent } = this.constructor as typeof CDSPopover;\n [\n 'open',\n 'align',\n 'autoalign',\n 'caret',\n 'dropShadow',\n 'border',\n 'tabTip',\n 'highContrast',\n 'backgroundToken',\n ].forEach((name) => {\n if (changedProperties.has(name)) {\n const { [name as keyof CDSPopover]: value } = this;\n if (this.querySelector(selectorPopoverContent) as CDSPopoverContent) {\n (this.querySelector(selectorPopoverContent) as CDSPopoverContent)[\n name\n ] = value;\n }\n }\n });\n\n if (this.autoalign && this.open) {\n // auto align functionality with @floating-ui/dom library\n const button = this._triggerSlotNode.assignedElements()[0];\n const content = this._contentSlotNode.assignedElements()[0];\n\n const tooltip = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverContentClass\n );\n const arrowElement = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverCaret\n );\n\n if (button && tooltip) {\n this.popoverController?.setPlacement({\n trigger: button as HTMLElement,\n target: tooltip as HTMLElement,\n arrowElement:\n this.caret && arrowElement\n ? (arrowElement as HTMLElement)\n : undefined,\n caret: this.caret,\n flipArguments: { fallbackAxisSideDirection: 'start' },\n alignment: this.align,\n open: this.open,\n alignmentAxisOffset: this.alignmentAxisOffset,\n autoAlignBoundary: this._resolveAutoAlignBoundary(),\n isTabTip: this.tabTip,\n });\n }\n }\n }\n\n render() {\n const {\n dropShadow,\n border,\n highContrast,\n open,\n tabTip,\n _handleSlotChange: handleSlotChange,\n } = this;\n if (tabTip) {\n this.caret = tabTip ? false : true;\n }\n\n if (!this.autoalign) {\n this.align = this.align ? this.align : tabTip ? 'bottom-start' : 'bottom';\n }\n\n if (tabTip) {\n const tabTipAlignments = [\n 'bottom-start',\n 'bottom-end',\n 'bottom-left', // remove in v12\n 'bottom-right', // remove in v12\n ];\n\n if (!tabTipAlignments.includes(this.align)) {\n this.align = 'bottom-start';\n }\n }\n\n const classes = classMap({\n [`${prefix}--popover-container`]: true,\n [`${prefix}--popover--caret`]: this.caret,\n [`${prefix}--popover--drop-shadow`]: dropShadow,\n [`${prefix}--popover--border`]: border,\n [`${prefix}--popover--high-contrast`]: highContrast,\n [`${prefix}--popover--open`]: open,\n [`${prefix}--popover--${this.align}`]: true,\n [`${prefix}--popover--tab-tip`]: tabTip,\n [`${prefix}--popover--background-token__background`]:\n this.backgroundToken === POPOVER_BACKGROUND_TOKEN.BACKGROUND &&\n !highContrast,\n });\n return html`\n <span class=\"${classes}\" part=\"popover-container\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n <slot name=\"content\"></slot>\n </span>\n `;\n }\n\n /**\n * A selector that will return popover content element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverContentClass() {\n return `.${prefix}--popover-content`;\n }\n\n /**\n * A selector that will return popover caret element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverCaret() {\n return `.${prefix}--popover-caret`;\n }\n\n /**\n * A selector that will return the CDSPopoverContent.\n */\n static get selectorPopoverContent() {\n return `${prefix}-popover-content`;\n }\n\n /**\n * The name of the custom event fired when the popover closes via focusout/outsideclick\n */\n static get eventOnClose() {\n return `${prefix}-popover-closed`;\n }\n\n static styles = styles;\n}\n\nexport default CDSPopover;\n"],"names":["FloatingUIController","styles","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"popover.js","sources":["../../../src/components/popover/popover.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport styles from './popover.scss?lit';\nimport CDSPopoverContent from './popover-content';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport FloatingUIController from '../../globals/controllers/floating-controller';\nimport { POPOVER_BACKGROUND_TOKEN } from './defs';\nimport type { Boundary, Rect } from '@floating-ui/dom';\n\n/**\n * Popover.\n *\n * @element cds-popover\n */\n@customElement(`${prefix}-popover`)\nclass CDSPopover extends HostListenerMixin(LitElement) {\n /**\n * Create popover controller instance\n */\n private popoverController = new FloatingUIController(this);\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot')\n private _triggerSlotNode!: HTMLSlotElement;\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot[name=\"content\"]')\n private _contentSlotNode!: HTMLSlotElement;\n\n /**\n * Specify direction of alignment\n */\n @property({ reflect: true, type: String })\n align = '';\n\n /**\n * **Experimental:** Provide an offset value for alignment axis. Only takes effect when `autoalign` is enabled.\n */\n @property({ type: Number, reflect: true, attribute: 'alignment-axis-offset' })\n alignmentAxisOffset?: number;\n\n /**\n * Specify whether a auto align functionality should be applied\n */\n @property({ type: Boolean, reflect: true })\n autoalign = false;\n\n /**\n * Specify whether a caret should be rendered\n */\n @property({ type: Boolean, reflect: true })\n caret = true;\n\n /**\n * Specify whether a dropShadow should be rendered\n */\n @property({ type: Boolean, reflect: true })\n dropShadow = true;\n\n /**\n * Specify whether a border should be rendered on the popover\n */\n @property({ type: Boolean, reflect: true })\n border = false;\n\n /**\n * Render the component using the high-contrast variant\n */\n @property({ type: Boolean, reflect: true })\n highContrast = false;\n\n /**\n * Specify whether the component is currently open or closed\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Render the component using the tab tip variant\n */\n @property({ type: Boolean, reflect: true })\n tabTip = false;\n\n /**\n * Specify the background token to use. Default is 'layer'.\n */\n @property({ reflect: true, type: String })\n backgroundToken = POPOVER_BACKGROUND_TOKEN.LAYER;\n\n /**\n * Specify a bounding element to be used for autoAlign calculations. The viewport is used by default.\n * Takes one of the following: 'clippingAncestors', '#elementid', '#elementid_1, #elementid_2', 'rect(x, y, width, height)'\n * This prop is currently experimental and is subject to future changes.\n */\n @property({ type: String, reflect: true, attribute: 'autoalign-boundary' })\n autoAlignBoundary?: string;\n\n // Tracks whether the last mousedown event was inside the popover content\n private _lastClickWasInsidePopoverContent = false;\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n if (this.tabTip) {\n const component = (target as HTMLSlotElement)\n .assignedNodes()\n .filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).tagName === 'BUTTON'\n );\n\n (component[0] as HTMLElement)?.classList.add(\n `${prefix}--popover--tab-tip__button`\n );\n }\n this.requestUpdate();\n }\n\n @HostListener('mousedown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleMouseDown(event: MouseEvent) {\n const path = event.composedPath();\n const contentEl = this._contentSlotNode.assignedElements()[0];\n\n this._lastClickWasInsidePopoverContent =\n contentEl && path.includes(contentEl);\n\n // reset flag\n if (this._lastClickWasInsidePopoverContent) {\n setTimeout(() => {\n this._lastClickWasInsidePopoverContent = false;\n }, 0);\n }\n }\n\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleFocusOut(event: Event) {\n const relatedTarget = (event as FocusEvent).relatedTarget as Node | null;\n const path = event.composedPath();\n const triggerEl = this._triggerSlotNode.assignedElements({\n flatten: true,\n })[0];\n\n if (this._lastClickWasInsidePopoverContent) {\n this._lastClickWasInsidePopoverContent = false;\n return;\n }\n\n if (\n relatedTarget &&\n triggerEl &&\n (path.includes(triggerEl) ||\n triggerEl === relatedTarget ||\n triggerEl.contains(relatedTarget))\n ) {\n return;\n }\n if (!this.contains(relatedTarget)) {\n const wasOpen = this.open;\n this.open = false;\n\n if (wasOpen) {\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventOnClose,\n {\n bubbles: true,\n composed: true,\n }\n )\n );\n }\n }\n }\n\n private _handleOutsideClick(event: Event) {\n const path = event.composedPath();\n\n if (path.includes(this._triggerSlotNode.assignedElements()[0])) return;\n\n const popoverContent = this.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContent\n )?.shadowRoot?.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContentClass\n ) as HTMLElement;\n\n if (path.includes(popoverContent)) return;\n\n const target = event.target as Node | null;\n const composedTarget = event.composedPath?.()[0] as Node | null;\n\n if (\n this.open &&\n target &&\n !this.contains(target) &&\n !this.contains(composedTarget)\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSPopover).eventOnClose, {\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n constructor() {\n super();\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n }\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this._handleOutsideClick);\n }\n\n /**\n * This function resolves the string passed in for `autoAlignBoundary` to either:\n * \"clippingAncestors\"\n * An element (found via #id)\n * An array of elements (found via #id1, #id2, #id3, separated by \",\")\n * A rect, input format should be 'rect(x,y,width,height)'\n */\n private _resolveAutoAlignBoundary(): Boundary {\n const raw = (this.autoAlignBoundary ?? '').trim();\n\n // Default to 'clippingAncestors'\n if (!raw) return 'clippingAncestors';\n if (raw === 'clippingAncestors') return 'clippingAncestors';\n\n // regex match for: rect(x,y,width,height)\n const rectMatch =\n /^rect\\(\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*\\)$/i.exec(\n raw\n );\n if (rectMatch) {\n const [, x, y, w, h] = rectMatch;\n const rect: Rect = { x: +x, y: +y, width: +w, height: +h };\n return rect;\n }\n\n // Get element(s)\n const ids = raw\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 1 && s.startsWith('#'))\n .map((s) => s.slice(1).trim())\n .filter(Boolean);\n\n if (ids.length > 0) {\n const elements: Element[] = [];\n const inputted_ids = new Set<string>();\n\n for (const id of ids) {\n if (inputted_ids.has(id)) continue;\n inputted_ids.add(id);\n\n const el = document.getElementById(id);\n\n if (el) elements.push(el);\n }\n return elements.length === 1 ? elements[0] : elements;\n }\n\n // default fallback\n return 'clippingAncestors';\n }\n\n updated(changedProperties) {\n const { selectorPopoverContent } = this.constructor as typeof CDSPopover;\n [\n 'open',\n 'align',\n 'autoalign',\n 'caret',\n 'dropShadow',\n 'border',\n 'tabTip',\n 'highContrast',\n 'backgroundToken',\n ].forEach((name) => {\n if (changedProperties.has(name)) {\n const { [name as keyof CDSPopover]: value } = this;\n if (this.querySelector(selectorPopoverContent) as CDSPopoverContent) {\n (this.querySelector(selectorPopoverContent) as CDSPopoverContent)[\n name\n ] = value;\n }\n }\n });\n\n if (this.autoalign && this.open) {\n // auto align functionality with @floating-ui/dom library\n const button = this._triggerSlotNode.assignedElements()[0];\n const content = this._contentSlotNode.assignedElements()[0];\n\n const tooltip = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverContentClass\n );\n const arrowElement = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverCaret\n );\n\n if (button && tooltip) {\n this.popoverController?.setPlacement({\n trigger: button as HTMLElement,\n target: tooltip as HTMLElement,\n arrowElement:\n this.caret && arrowElement\n ? (arrowElement as HTMLElement)\n : undefined,\n caret: this.caret,\n flipArguments: { fallbackAxisSideDirection: 'start' },\n alignment: this.align,\n open: this.open,\n alignmentAxisOffset: this.alignmentAxisOffset,\n autoAlignBoundary: this._resolveAutoAlignBoundary(),\n isTabTip: this.tabTip,\n });\n }\n }\n }\n\n render() {\n const {\n dropShadow,\n border,\n highContrast,\n open,\n tabTip,\n _handleSlotChange: handleSlotChange,\n } = this;\n if (tabTip) {\n this.caret = !tabTip;\n }\n\n if (!this.autoalign) {\n this.align = this.align ? this.align : tabTip ? 'bottom-start' : 'bottom';\n }\n\n if (tabTip) {\n const tabTipAlignments = [\n 'bottom-start',\n 'bottom-end',\n 'bottom-left', // remove in v12\n 'bottom-right', // remove in v12\n ];\n\n if (!tabTipAlignments.includes(this.align)) {\n this.align = 'bottom-start';\n }\n }\n\n const classes = classMap({\n [`${prefix}--popover-container`]: true,\n [`${prefix}--popover--caret`]: this.caret,\n [`${prefix}--popover--drop-shadow`]: dropShadow,\n [`${prefix}--popover--border`]: border,\n [`${prefix}--popover--high-contrast`]: highContrast,\n [`${prefix}--popover--open`]: open,\n [`${prefix}--popover--${this.align}`]: true,\n [`${prefix}--popover--tab-tip`]: tabTip,\n [`${prefix}--popover--background-token__background`]:\n this.backgroundToken === POPOVER_BACKGROUND_TOKEN.BACKGROUND &&\n !highContrast,\n });\n return html`\n <span class=\"${classes}\" part=\"popover-container\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n <slot name=\"content\"></slot>\n </span>\n `;\n }\n\n /**\n * A selector that will return popover content element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverContentClass() {\n return `.${prefix}--popover-content`;\n }\n\n /**\n * A selector that will return popover caret element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverCaret() {\n return `.${prefix}--popover-caret`;\n }\n\n /**\n * A selector that will return the CDSPopoverContent.\n */\n static get selectorPopoverContent() {\n return `${prefix}-popover-content`;\n }\n\n /**\n * The name of the custom event fired when the popover closes via focusout/outsideclick\n */\n static get eventOnClose() {\n return `${prefix}-popover-closed`;\n }\n\n static styles = styles;\n}\n\nexport default CDSPopover;\n"],"names":["FloatingUIController","styles","customElement"],"mappings":"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"}
|
|
@@ -226,7 +226,7 @@ let CDSTable = class CDSTable extends HostListenerMixin(LitElement) {
|
|
|
226
226
|
// selected header checkbox upon all rows being selected
|
|
227
227
|
const headerCheckbox = (_b = tableHeaderRow.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector(`${prefix}-checkbox`).shadowRoot.querySelector(`.${prefix}--checkbox`);
|
|
228
228
|
const allRowsSelected = this._selectedRows.length === totalSelectableRows;
|
|
229
|
-
headerCheckbox.checked =
|
|
229
|
+
headerCheckbox.checked = Boolean(this._selectedRows.length);
|
|
230
230
|
headerCheckbox.indeterminate =
|
|
231
231
|
!allRowsSelected && this._selectedRows.length > 0;
|
|
232
232
|
const init = {
|
|
@@ -393,8 +393,7 @@ let CDSTable = class CDSTable extends HostListenerMixin(LitElement) {
|
|
|
393
393
|
return !elem.hasAttribute('disabled');
|
|
394
394
|
}).length;
|
|
395
395
|
const headerCheckbox = (_c = this._tableHeaderRow.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector(`${prefix}-checkbox`).shadowRoot.querySelector(`.${prefix}--checkbox`);
|
|
396
|
-
headerCheckbox.disabled =
|
|
397
|
-
unfilteredSelectableLength === 0 ? true : false;
|
|
396
|
+
headerCheckbox.disabled = unfilteredSelectableLength === 0;
|
|
398
397
|
}
|
|
399
398
|
if (this.expandable) {
|
|
400
399
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../../src/components/data-table/table.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { forEach } from '../../globals/internal/collection-helpers';\nimport { TABLE_SIZE, TABLE_SORT_DIRECTION } from './defs';\nimport styles from './data-table.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport {\n CDSRadioButton,\n CDSTableBatchActions,\n CDSTableCell,\n CDSTableHeaderCell,\n CDSTableHeaderRow,\n CDSTableRow,\n CDSTableToolbarSearch,\n} from '../..';\nimport CDSTableExpandedRow from './table-expanded-row';\n\nexport { TABLE_SIZE };\n\n/**\n * Data table.\n *\n * @element cds-custom-table\n * @fires cds-custom-table-header-cell-sort\n * The name of the custom event fired before a new sort direction is set upon a user gesture.\n * Cancellation of this event stops the user-initiated change in sort direction.\n * @fires cds-custom-search input\n * The name of the custom event fired during search bar input\n * @fires cds-custom-table-change-selection-all\n * The name of the custom event fired before header row is selected/unselected upon a user gesture.\n * @fires cds-custom-table-row-change-selection\n * The name of the custom event fired before a row is selected/unselected upon a user gesture.\n * @fires cds-custom-table-batch-actions-cancel-clicked\n * The name of the custom event fired after the Cancel button is clicked.\n * @fires cds-custom-table-row-expando-toggled\n * The name of the custom event fired after the expanded state of a row is toggled upon a user gesture.\n * @fires cds-custom-table-row-selected\n * The name of the custom event fired after a row has been selected.\n * @fires cds-custom-table-row-all-selected\n * The name of the custom event fired after all rows have been selected.\n * @fires cds-custom-table-sorted\n * The name of the custom event fired after the table has been sorted.\n * @fires cds-custom-table-filtered\n * The name of the custom event fired after the table has been filtered containing remaining rows.\n */\n@customElement(`${prefix}-table`)\nclass CDSTable extends HostListenerMixin(LitElement) {\n /**\n * The map of how sorting direction affects sorting order.\n */\n private collationFactors = {\n [TABLE_SORT_DIRECTION.ASCENDING]: 1,\n [TABLE_SORT_DIRECTION.DESCENDING]: -1,\n };\n\n /**\n * Reference to download button\n */\n @state()\n private _downloadButton;\n\n /**\n * Current search value for filtering\n */\n @state()\n private _searchValue = '';\n\n /**\n * Table header row within component\n */\n @state()\n private _tableHeaderRow;\n\n /**\n * Table body\n */\n @state()\n private _tableBody;\n\n /**\n * Table expanded row within component\n */\n @state()\n private _tableExpandedRows;\n\n /**\n * Table rows within component\n */\n @state()\n private _tableRows;\n\n /**\n * Reference to the component containing batch actions\n */\n @state()\n private _tableBatchActions;\n\n /**\n * Reference to the table toolbar\n */\n @state()\n private _tableToolbar;\n\n /**\n * Reference to the table toolbar content\n */\n @state()\n private _tableToolbarContent;\n\n @state()\n private _selectedRows: CDSTableRow[] = [];\n\n /**\n * `true` if this table should support batch expansion\n */\n @property({ type: Boolean, reflect: true, attribute: 'batch-expansion' })\n batchExpansion = false;\n\n /**\n * The g11n collator to use.\n */\n @property({ attribute: false })\n collator;\n\n /**\n * @param lhs A value.\n * @param rhs Another value.\n * @param collator A custom collator.\n * @returns\n * `0` if the given two values are equal\n * A negative value to sort `lhs` to an index lower than `rhs`\n * A positive value to sort `rhs` to an index lower than `lhs`\n */\n\n customSortRow(lhs, rhs, collator) {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return lhs - rhs;\n }\n return collator.compare(lhs, rhs);\n }\n\n /**\n * Specify whether the rows should be able to be expandable\n */\n @property({ type: Boolean, reflect: true })\n expandable = false;\n\n /**\n * The method used when filtering the table with the search bar.\n * Can be replaced with custom method.\n *\n * @param rowText A table row.\n * @param searchString A search string.\n * @returns `false` if the given table row matches the given search string.\n */\n @property()\n filterRows = (rowText: string, searchString: string) =>\n rowText.toLowerCase().indexOf(searchString.toLowerCase()) < 0;\n\n /**\n * The total headers\n */\n @property()\n headerCount = 0;\n\n /**\n * `true` if this table contains selectable rows\n */\n @property({ type: Boolean, reflect: true, attribute: 'is-selectable' })\n isSelectable = false;\n\n /**\n * `true` if this table should support sorting.\n */\n @property({ type: Boolean, reflect: true, attribute: 'is-sortable' })\n isSortable = false;\n\n /**\n * The table size.\n */\n @property({ reflect: true })\n locale = 'en';\n\n /**\n * Specify whether the overflow menu (if it exists) should be shown always, or only on hover\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'overflow-menu-on-hover',\n })\n overflowMenuOnHover = false;\n\n /**\n * Specify whether the control should be a radio button or inline checkbox\n */\n @property({ type: Boolean, reflect: true })\n radio = false;\n\n /**\n * The table size.\n */\n @property({ reflect: true })\n size = TABLE_SIZE.LG;\n\n /**\n * TODO: Uncomment when Carbon fully implements sticky header\n * Specify whether the header should be sticky.\n * Still experimental: may not work with every combination of table props\n */\n // @property({ type: Boolean, attribute: 'sticky-header', reflect: true })\n // stickyHeader = false;\n\n /**\n * If true, will use a width of 'auto' instead of 100%\n */\n @property({ type: Boolean, attribute: 'use-static-width', reflect: true })\n useStaticWidth = false;\n\n /**\n * true to add useZebraStyles striping.\n */\n @property({ type: Boolean, attribute: 'use-zebra-styles', reflect: true })\n useZebraStyles = false;\n\n @property({ type: Boolean, attribute: 'with-header', reflect: true })\n withHeader;\n\n /**\n * true if AI Labels are added in the rows\n */\n @property({ type: Boolean, attribute: 'with-row-ai-labels' })\n withRowAILabels = false;\n\n /**\n * true if slugs are added in the rows\n *\n * @deprecated remove in v12, use `with-row-ai-labels` instead\n */\n @property({ type: Boolean, attribute: 'with-row-slugs' })\n withRowSlugs = false;\n\n private _handleSlotChange({ target }: Event) {\n const hasContent = (target as HTMLSlotElement).assignedNodes().some(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n (node) => node.nodeType !== Node.TEXT_NODE || node!.textContent!.trim()\n );\n this.withHeader = hasContent;\n }\n\n private _handleTableBodyChange() {\n // cds-custom-table-head or cds-custom-table-body may have changed\n this._tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n this._tableExpandedRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableExpandedRows\n );\n this._tableRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n );\n\n // update any row dependant features\n this.updateExpandable();\n }\n\n private _handleSortAction(columnIndex, sortDirection) {\n const rows = [...this._tableRows];\n\n // regular row sorting\n rows.sort((a, b) => {\n const cellA = a.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )[columnIndex].textContent;\n const cellB = b.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )[columnIndex].textContent;\n return (\n this.collationFactors[sortDirection] *\n this.customSortRow(cellA, cellB, this.collator)\n );\n });\n\n // take into account the expanded rows, mapping each expandable row to its original for proper reinsertion\n if (this.expandable) {\n const originalRows = [...this._tableRows];\n const expandedRows = [...this._tableExpandedRows];\n\n const mapping = originalRows.reduce((acc, element, index) => {\n const sortId = element.getAttribute('sort-id');\n acc[sortId] = expandedRows[index];\n return acc;\n }, {});\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const sortedWithExpanded = [] as any;\n\n rows.forEach((e) => {\n const sortId = e.getAttribute('sort-id');\n sortedWithExpanded.push(e);\n // Only add the expanded row if it exists\n if (mapping[sortId]) {\n sortedWithExpanded.push(mapping[sortId]);\n }\n });\n\n sortedWithExpanded.forEach((e) => {\n this._tableBody.insertBefore(e, null);\n });\n } else {\n rows.forEach((e) => {\n this._tableBody.insertBefore(e, null);\n });\n }\n }\n\n private _handleFilterRows() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const unfilteredRows = [] as any;\n forEach(this._tableRows, (elem) => {\n let rowText = elem.textContent?.trim();\n let filtered = this.filterRows(rowText as string, this._searchValue);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).filtered = filtered;\n\n if (filtered && this.expandable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n rowText = (elem as any).nextElementSibling.textContent?.trim();\n filtered = this.filterRows(rowText as string, this._searchValue);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).filtered = filtered;\n }\n\n if (!filtered) {\n unfilteredRows.push(elem);\n }\n\n if (this.isSelectable) {\n const unfilteredSelectableLength = unfilteredRows.filter((elem) => {\n return !elem.hasAttribute('disabled');\n }).length;\n\n const headerCheckbox = this._tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`);\n\n headerCheckbox.disabled =\n unfilteredSelectableLength === 0 ? true : false;\n }\n\n if (this.expandable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).nextElementSibling.filtered = filtered;\n }\n });\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n unfilteredRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableFiltered,\n init\n )\n );\n }\n\n /**\n * Download manager for selected rows.\n */\n private _handleDownload({ target }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const data = [] as any;\n\n const elementsToArray = (elements) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n Array.from(elements, (element) => (element as any).textContent);\n\n const headerCells = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorHeaderCell\n );\n const rows = this._selectedRows;\n const headerTitleArray = elementsToArray(headerCells);\n\n rows.forEach((row) => {\n const rowData = {};\n const cells = elementsToArray(\n row.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )\n );\n\n cells.forEach((cellText, index) => {\n const headerTitle = headerTitleArray[index];\n rowData[headerTitle] = cellText;\n });\n\n data.push(rowData);\n });\n\n const blob = new Blob([JSON.stringify(data)], { type: 'application/json' });\n\n target.href = URL.createObjectURL(blob);\n }\n\n /**\n * Handles batch expansion\n */\n @HostListener('eventExpandoToggle')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBatchExpansion = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { expanded } = detail;\n\n if ((target as CDSTableHeaderRow) === this._tableHeaderRow) {\n this._tableRows.forEach((e) => ((e as CDSTableRow).expanded = expanded));\n }\n };\n\n /**\n * Handles sorting the table depending on the column selected\n */\n @HostListener('eventBeforeSort')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleSort = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { sortDirection } = detail;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n if (!this.contains(target as any)) {\n return;\n }\n\n const columns = [...this._tableHeaderRow.children];\n const columnIndex = columns.indexOf(target);\n\n columns.forEach((e) => {\n if (e !== target && this.isSortable) {\n e.setAttribute('sort-direction', 'none');\n } else if (e.hasAttribute('is-sortable')) {\n e.setAttribute('sort-direction', 'none');\n }\n });\n\n this._handleSortAction(columnIndex, sortDirection);\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n sortedHeader: columns[columnIndex],\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableSorted,\n init\n )\n );\n\n this._handleFilterRows();\n };\n\n /**\n * Handles search input within the toolbar actions\n */\n @HostListener('eventSearchInput')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleSearchInput = async (event: CustomEvent) => {\n const { detail, target } = event;\n\n if (this.contains(target as CDSTableToolbarSearch)) {\n const { value } = detail;\n this._searchValue = value;\n this._handleFilterRows();\n }\n };\n\n /**\n * Handles row selection\n */\n @HostListener('eventBeforeChangeSelection')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleRowSelect = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { selected } = detail;\n const {\n _tableBatchActions: tableBatchActions,\n _tableToolbarContent: tableToolbarContent,\n _tableHeaderRow: tableHeaderRow,\n _selectedRows: selectedRows,\n } = this;\n\n if (!this.contains(target as CDSTableRow)) {\n return;\n }\n\n if (this.radio) {\n this._tableRows.forEach((e) => {\n if (e !== target) {\n e.removeAttribute('selected');\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n e.shadowRoot!.querySelector(`${prefix}-radio-button`).checked = false;\n }\n });\n this._selectedRows.push(...[target as CDSTableRow]);\n } else {\n if (selectedRows.includes(target as CDSTableRow)) {\n this._selectedRows = selectedRows.filter((e) => e !== target);\n } else {\n selectedRows.push(target as CDSTableRow);\n }\n\n if (tableBatchActions) {\n tableBatchActions.active = this._selectedRows?.length;\n tableBatchActions.selectedRowsCount += selected ? 1 : -1;\n }\n\n if (tableToolbarContent) {\n tableToolbarContent.hasBatchActions = this._selectedRows.length;\n }\n }\n\n const totalSelectableRows = [...this._tableRows].filter(\n (elem) => !elem.hasAttribute('filtered') && !elem.hasAttribute('disabled')\n ).length;\n\n // selected header checkbox upon all rows being selected\n const headerCheckbox = tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`);\n const allRowsSelected = this._selectedRows.length === totalSelectableRows;\n headerCheckbox.checked = !this._selectedRows.length ? false : true;\n headerCheckbox.indeterminate =\n !allRowsSelected && this._selectedRows.length > 0;\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n selectedRow: target,\n selectedRows: selectedRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableRowSelect,\n init\n )\n );\n };\n\n /**\n * Handles header row selection, selecting/unselecting all rows\n */\n @HostListener('eventBeforeChangeSelectionAll')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleAllRowsSelect = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { selected } = detail;\n const {\n _tableBatchActions: tableBatchActions,\n _tableToolbarContent: tableToolbarContent,\n _tableRows: tableRows,\n } = this;\n\n if (!this.contains(target as CDSTableRow)) {\n return;\n }\n\n let totalRows = 0;\n forEach(tableRows, (elem) => {\n if (!(elem as CDSTableRow).filtered && !(elem as CDSTableRow).disabled) {\n (elem as CDSTableRow).selected = selected;\n if (this.radio) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n const radioButton = (elem as CDSTableRow).shadowRoot!.querySelector(\n `${prefix}-radio-button`\n ) as CDSRadioButton;\n radioButton.checked = selected;\n }\n this._selectedRows.push(elem as CDSTableRow);\n totalRows++;\n\n const { selectorTableExpandedRows } = this\n .constructor as typeof CDSTable;\n const { nextElementSibling } = elem;\n\n // selecting the expanded row as well\n if (nextElementSibling?.matches(selectorTableExpandedRows)) {\n (elem.nextElementSibling as CDSTableExpandedRow).selected = selected;\n }\n }\n });\n\n if (!selected) {\n this._selectedRows = [];\n }\n\n if (tableBatchActions) {\n tableBatchActions.selectedRowsCount = selected ? totalRows : 0;\n tableBatchActions.active = selected;\n }\n\n if (tableToolbarContent) {\n tableToolbarContent.hasBatchActions = selected;\n }\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n selectedRows: this._selectedRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableRowSelectAll,\n init\n )\n );\n };\n\n /**\n * Handles cancel button within the toolbar actions\n */\n @HostListener('eventClickCancel')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleCancelSelection = async (event: CustomEvent) => {\n const { target } = event;\n const { _tableHeaderRow: tableHeaderRow } = this;\n\n if (this.contains(target as CDSTableBatchActions)) {\n tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`)\n .click();\n }\n };\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'table');\n }\n\n /**\n * If using `with-row-slugs`, set `with-row-ai-labels` attribute to true so\n * the styles are applied for slug as well\n *\n * remove in v12\n */\n if (this.withRowSlugs) {\n this.setAttribute('with-rows-ai-labels', '');\n this.withRowAILabels = true;\n }\n super.connectedCallback();\n }\n\n firstUpdated() {\n this._tableBatchActions = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBatchActions\n );\n this._tableToolbar = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableToolbar\n );\n this._tableToolbarContent = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableToolbarContent\n );\n this._tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n this._tableHeaderRow = this.querySelector(\n (this.constructor as typeof CDSTable).selectorRowsWithHeader\n );\n this._tableExpandedRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableExpandedRows\n );\n\n this._tableRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n );\n\n this._downloadButton = this.querySelector(\n (this.constructor as typeof CDSTable).selectorToolbarDownload\n );\n if (this._downloadButton) {\n this._downloadButton.onclick = this._handleDownload.bind(this);\n }\n this.headerCount = this._tableHeaderRow.children.length;\n }\n\n updateExpandable() {\n const { selectorTableExpandedRows } = this.constructor as typeof CDSTable;\n\n this._tableRows.forEach((e, index) => {\n // Only set expandable=true if this row has an expanded row following it\n const hasExpandedRow = e.nextElementSibling?.matches(\n selectorTableExpandedRows\n );\n e.expandable = this.expandable && hasExpandedRow;\n e.setAttribute('sort-id', index);\n });\n this._tableHeaderRow.expandable = this.expandable;\n this._tableHeaderRow.batchExpansion = this.batchExpansion;\n this.headerCount += this.expandable ? 1 : -1;\n }\n\n updated(changedProperties) {\n if (changedProperties.has('expandable')) {\n this.updateExpandable();\n }\n\n if (changedProperties.has('headerCount')) {\n this._tableExpandedRows.forEach((e) => {\n e.setAttribute('colspan', this.headerCount);\n });\n }\n\n if (changedProperties.has('isSelectable')) {\n if (this.isSelectable) {\n this._tableHeaderRow.setAttribute('selection-name', 'header');\n this._tableRows.forEach((e, index) => {\n if (!e.hasAttribute('selection-name')) {\n e.setAttribute('selection-name', index);\n }\n });\n }\n this.headerCount++;\n }\n\n if (changedProperties.has('locale')) {\n this.collator = new Intl.Collator(this.locale);\n }\n if (changedProperties.has('isSortable')) {\n if (this.isSortable) {\n this._enableSortAction();\n }\n }\n\n if (\n changedProperties.has('overflowMenuOnHover') ||\n changedProperties.has('size')\n ) {\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableCellOverflowMenu\n ),\n (elem) => {\n const cell = elem.parentNode as CDSTableCell;\n const row = cell.parentNode as CDSTableRow;\n cell.overflowMenuOnHover = this.overflowMenuOnHover;\n row.overflowMenuOnHover = this.overflowMenuOnHover;\n cell.setAttribute('size', this.size);\n elem.setAttribute('size', this.size);\n elem.setAttribute('data-table', '');\n }\n );\n }\n\n if (changedProperties.has('radio')) {\n // Propagate `size` attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n ),\n (elem) => {\n (elem as CDSTableRow).radio = this.radio;\n }\n );\n if (this._tableHeaderRow) {\n this._tableHeaderRow.hideCheckbox = this.radio;\n }\n }\n\n if (changedProperties.has('size')) {\n // Propagate `size` attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorAllRows\n ),\n (elem) => {\n elem.setAttribute('size', this.size);\n }\n );\n this._tableToolbar?.setAttribute('size', this.size);\n const batchActions = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBatchActions\n );\n if (batchActions) {\n batchActions.setAttribute('size', this.size);\n }\n }\n\n // TODO: Uncomment when Carbon fully implements Sticky header feature\n // if (changedProperties.has('stickyHeader')) {\n // const tableBody = this.querySelector(\n // (this.constructor as typeof CDSTable).selectorTableBody\n // );\n // const tableHead = this.querySelector(\n // (this.constructor as typeof CDSTable).selectorTableHead\n // );\n // (tableBody as any).stickyHeader = this.stickyHeader;\n // (tableHead as any).stickyHeader = this.stickyHeader;\n // forEach(\n // this.querySelectorAll(\n // (this.constructor as typeof CDSTable).selectorRowsWithHeader\n // ),\n // (elem) => {\n // (elem as any).stickyHeader = this.stickyHeader;\n // }\n // );\n // forEach(\n // this.querySelectorAll(\n // (this.constructor as typeof CDSTable).selectorTableCells\n // ),\n // (elem) => {\n // (elem as any).stickyHeader = this.stickyHeader;\n // }\n // );\n // }\n\n if (changedProperties.has('useZebraStyles')) {\n const tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (tableBody as any).useZebraStyles = this.useZebraStyles;\n }\n\n if (this.withRowAILabels) {\n this._tableHeaderRow.setAttribute('rows-with-ai-label', '');\n this._tableRows.forEach((row) => {\n row.setAttribute('rows-with-ai-label', '');\n });\n } else {\n this._tableHeaderRow.removeAttribute('rows-with-ai-label');\n this._tableRows.forEach((row) => {\n row.removeAttribute('rows-with-ai-label');\n });\n }\n\n // Gets table header info to add to the column cells for styles\n const headersWithAILabel: number[] = [];\n\n Array.prototype.slice\n .call(this._tableHeaderRow.children)\n .forEach((headerCell, index) => {\n if (\n headerCell.querySelector(`${prefix}-ai-label`) ||\n headerCell.querySelector(`${prefix}-slug`)\n ) {\n headerCell.setAttribute('ai-label', '');\n headersWithAILabel.push(index);\n } else {\n headerCell.removeAttribute('ai-label');\n }\n });\n\n this._tableRows.forEach((row) => {\n Array.prototype.slice\n .call((row as HTMLElement).children)\n .forEach((cell, index) => {\n if (headersWithAILabel.includes(index)) {\n cell.setAttribute('ai-label-in-header', '');\n } else {\n cell.removeAttribute('ai-label-in-header');\n }\n });\n });\n }\n\n render() {\n return html` <div class=\"${prefix}--data-table-header-container\">\n <div ?hidden=\"${!this.withHeader}\" class=\"${prefix}--data-table-header\">\n <slot @slotchange=\"${this._handleSlotChange}\" name=\"title\"></slot>\n <slot\n @slotchange=\"${this._handleSlotChange}\"\n name=\"description\"></slot>\n </div>\n <slot name=\"toolbar\"></slot>\n </div>\n\n <div part=\"inner-container\" class=\"${prefix}--data-table_inner-container\">\n <div part=\"content\" class=\"${prefix}--data-table-content\">\n <slot\n @cds-custom-table-body-content-change=\"${this\n ._handleTableBodyChange}\"></slot>\n </div>\n </div>`;\n }\n\n /**\n * Adds isSortable value for table header cells.\n */\n _enableSortAction() {\n const headerCells = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorHeaderCell\n );\n headerCells.forEach((e) => {\n (e as CDSTableHeaderCell).isSortable = this.isSortable;\n (e as CDSTableHeaderCell).isSelectable = this.isSelectable;\n (e as CDSTableHeaderCell).isExpandable = this.expandable;\n });\n const columns = [...this._tableHeaderRow.children];\n let sortDirection;\n let columnIndex = 0;\n columns.forEach((column, index) => {\n if (\n column.hasAttribute('sort-direction') &&\n column.getAttribute('sort-direction') !== 'none'\n ) {\n sortDirection = column.getAttribute('sort-direction');\n columnIndex = index;\n }\n });\n\n columns.forEach((e, index) => {\n if (index !== columnIndex && this.isSortable) {\n e.setAttribute('sort-direction', 'none');\n } else if (e.hasAttribute('is-sortable')) {\n e.setAttribute('sort-direction', 'none');\n }\n });\n this._handleSortAction(columnIndex, sortDirection);\n }\n\n /**\n * The name of the custom event fired before a new sort direction is set upon a user gesture.\n * Cancellation of this event stops the user-initiated change in sort direction.\n */\n static get eventBeforeSort() {\n return `${prefix}-table-header-cell-sort`;\n }\n\n /**\n * The name of the custom event fired during search bar input\n */\n static get eventSearchInput() {\n return `${prefix}-search-input`;\n }\n\n /**\n * The name of the custom event fired before header row is selected/unselected upon a user gesture.\n */\n static get eventBeforeChangeSelectionAll() {\n return `${prefix}-table-change-selection-all`;\n }\n\n /**\n * The name of the custom event fired before a row is selected/unselected upon a user gesture.\n */\n static get eventBeforeChangeSelection() {\n return `${prefix}-table-row-change-selection`;\n }\n\n /**\n * The name of the custom event fired after the Cancel button is clicked.\n */\n static get eventClickCancel() {\n return `${prefix}-table-batch-actions-cancel-clicked`;\n }\n\n /**\n * The name of the custom event fired after the expanded state a row is toggled upon a user gesture.\n */\n static get eventExpandoToggle() {\n return `${prefix}-table-row-expando-toggled`;\n }\n\n /**\n * The name of the custom event fired after a row has been selected\n */\n static get eventTableRowSelect() {\n return `${prefix}-table-row-selected`;\n }\n\n /**\n * The name of the custom event fired after all rows have been selected\n */\n static get eventTableRowSelectAll() {\n return `${prefix}-table-row-all-selected`;\n }\n\n /**\n * The name of the custom event fired after the table has been sorted\n */\n static get eventTableSorted() {\n return `${prefix}-table-sorted`;\n }\n\n /**\n * The name of the custom event fired after the table has been filtered containing remaining rows.\n */\n static get eventTableFiltered() {\n return `${prefix}-table-filtered`;\n }\n\n /**\n * The CSS selector to find the overflow menu on the table cell\n */\n static get selectorTableCellOverflowMenu() {\n return `${prefix}-table-cell ${prefix}-overflow-menu`;\n }\n\n /**\n * The CSS selector to find the download button\n */\n static get selectorToolbarDownload() {\n return `${prefix}-button[download]`;\n }\n\n /**\n * The CSS selector to find the table batch actions\n */\n static get selectorTableBatchActions() {\n return `${prefix}-table-batch-actions`;\n }\n\n /**\n * The CSS selector to find the table toolbar\n */\n static get selectorTableToolbar() {\n return `${prefix}-table-toolbar`;\n }\n\n /**\n * The CSS selector to find the table toolbar content\n */\n static get selectorTableToolbarContent() {\n return `${prefix}-table-toolbar-content`;\n }\n\n /**\n * The CSS selector to find the table toolbar search\n */\n static get selectorTableToolbarSearch() {\n return `${prefix}-table-toolbar-search`;\n }\n\n /**\n * The CSS selector to find the table head\n */\n static get selectorTableHead() {\n return `${prefix}-table-head`;\n }\n\n /**\n * The CSS selector to find the table body\n */\n static get selectorTableBody() {\n return `${prefix}-table-body`;\n }\n\n /**\n * The CSS selector to find the table expanded rows\n */\n static get selectorTableExpandedRows() {\n return `${prefix}-table-expanded-row`;\n }\n\n /**\n * The CSS selector to find the table rows\n */\n static get selectorTableRow() {\n return `${prefix}-table-row`;\n }\n\n /**\n * The CSS selector to find the rows cells.\n */\n static get selectorTableRowCells() {\n return `${prefix}-table-cell`;\n }\n\n /**\n * The CSS selector to find the rows cells, including header cells.\n */\n static get selectorTableCells() {\n return `${prefix}-table-cell, ${prefix}-table-header-cell`;\n }\n\n /**\n * The CSS selector to find the header cell\n */\n static get selectorHeaderCell() {\n return `${prefix}-table-header-cell`;\n }\n\n /**\n * The CSS selector to find the rows, including header rows.\n */\n static get selectorRowsWithHeader() {\n return `${prefix}-table-header-row,${prefix}-table-row`;\n }\n\n /**\n * The CSS selector to find all rows\n */\n static get selectorAllRows() {\n return `${prefix}-table-header-row,${prefix}-table-row,${prefix}-table-expanded-row`;\n }\n\n static styles = styles;\n}\n\nexport default CDSTable;\n"],"names":["customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../../src/components/data-table/table.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { forEach } from '../../globals/internal/collection-helpers';\nimport { TABLE_SIZE, TABLE_SORT_DIRECTION } from './defs';\nimport styles from './data-table.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport {\n CDSRadioButton,\n CDSTableBatchActions,\n CDSTableCell,\n CDSTableHeaderCell,\n CDSTableHeaderRow,\n CDSTableRow,\n CDSTableToolbarSearch,\n} from '../..';\nimport CDSTableExpandedRow from './table-expanded-row';\n\nexport { TABLE_SIZE };\n\n/**\n * Data table.\n *\n * @element cds-custom-table\n * @fires cds-custom-table-header-cell-sort\n * The name of the custom event fired before a new sort direction is set upon a user gesture.\n * Cancellation of this event stops the user-initiated change in sort direction.\n * @fires cds-custom-search input\n * The name of the custom event fired during search bar input\n * @fires cds-custom-table-change-selection-all\n * The name of the custom event fired before header row is selected/unselected upon a user gesture.\n * @fires cds-custom-table-row-change-selection\n * The name of the custom event fired before a row is selected/unselected upon a user gesture.\n * @fires cds-custom-table-batch-actions-cancel-clicked\n * The name of the custom event fired after the Cancel button is clicked.\n * @fires cds-custom-table-row-expando-toggled\n * The name of the custom event fired after the expanded state of a row is toggled upon a user gesture.\n * @fires cds-custom-table-row-selected\n * The name of the custom event fired after a row has been selected.\n * @fires cds-custom-table-row-all-selected\n * The name of the custom event fired after all rows have been selected.\n * @fires cds-custom-table-sorted\n * The name of the custom event fired after the table has been sorted.\n * @fires cds-custom-table-filtered\n * The name of the custom event fired after the table has been filtered containing remaining rows.\n */\n@customElement(`${prefix}-table`)\nclass CDSTable extends HostListenerMixin(LitElement) {\n /**\n * The map of how sorting direction affects sorting order.\n */\n private collationFactors = {\n [TABLE_SORT_DIRECTION.ASCENDING]: 1,\n [TABLE_SORT_DIRECTION.DESCENDING]: -1,\n };\n\n /**\n * Reference to download button\n */\n @state()\n private _downloadButton;\n\n /**\n * Current search value for filtering\n */\n @state()\n private _searchValue = '';\n\n /**\n * Table header row within component\n */\n @state()\n private _tableHeaderRow;\n\n /**\n * Table body\n */\n @state()\n private _tableBody;\n\n /**\n * Table expanded row within component\n */\n @state()\n private _tableExpandedRows;\n\n /**\n * Table rows within component\n */\n @state()\n private _tableRows;\n\n /**\n * Reference to the component containing batch actions\n */\n @state()\n private _tableBatchActions;\n\n /**\n * Reference to the table toolbar\n */\n @state()\n private _tableToolbar;\n\n /**\n * Reference to the table toolbar content\n */\n @state()\n private _tableToolbarContent;\n\n @state()\n private _selectedRows: CDSTableRow[] = [];\n\n /**\n * `true` if this table should support batch expansion\n */\n @property({ type: Boolean, reflect: true, attribute: 'batch-expansion' })\n batchExpansion = false;\n\n /**\n * The g11n collator to use.\n */\n @property({ attribute: false })\n collator;\n\n /**\n * @param lhs A value.\n * @param rhs Another value.\n * @param collator A custom collator.\n * @returns\n * `0` if the given two values are equal\n * A negative value to sort `lhs` to an index lower than `rhs`\n * A positive value to sort `rhs` to an index lower than `lhs`\n */\n\n customSortRow(lhs, rhs, collator) {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return lhs - rhs;\n }\n return collator.compare(lhs, rhs);\n }\n\n /**\n * Specify whether the rows should be able to be expandable\n */\n @property({ type: Boolean, reflect: true })\n expandable = false;\n\n /**\n * The method used when filtering the table with the search bar.\n * Can be replaced with custom method.\n *\n * @param rowText A table row.\n * @param searchString A search string.\n * @returns `false` if the given table row matches the given search string.\n */\n @property()\n filterRows = (rowText: string, searchString: string) =>\n rowText.toLowerCase().indexOf(searchString.toLowerCase()) < 0;\n\n /**\n * The total headers\n */\n @property()\n headerCount = 0;\n\n /**\n * `true` if this table contains selectable rows\n */\n @property({ type: Boolean, reflect: true, attribute: 'is-selectable' })\n isSelectable = false;\n\n /**\n * `true` if this table should support sorting.\n */\n @property({ type: Boolean, reflect: true, attribute: 'is-sortable' })\n isSortable = false;\n\n /**\n * The table size.\n */\n @property({ reflect: true })\n locale = 'en';\n\n /**\n * Specify whether the overflow menu (if it exists) should be shown always, or only on hover\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'overflow-menu-on-hover',\n })\n overflowMenuOnHover = false;\n\n /**\n * Specify whether the control should be a radio button or inline checkbox\n */\n @property({ type: Boolean, reflect: true })\n radio = false;\n\n /**\n * The table size.\n */\n @property({ reflect: true })\n size = TABLE_SIZE.LG;\n\n /**\n * TODO: Uncomment when Carbon fully implements sticky header\n * Specify whether the header should be sticky.\n * Still experimental: may not work with every combination of table props\n */\n // @property({ type: Boolean, attribute: 'sticky-header', reflect: true })\n // stickyHeader = false;\n\n /**\n * If true, will use a width of 'auto' instead of 100%\n */\n @property({ type: Boolean, attribute: 'use-static-width', reflect: true })\n useStaticWidth = false;\n\n /**\n * true to add useZebraStyles striping.\n */\n @property({ type: Boolean, attribute: 'use-zebra-styles', reflect: true })\n useZebraStyles = false;\n\n @property({ type: Boolean, attribute: 'with-header', reflect: true })\n withHeader;\n\n /**\n * true if AI Labels are added in the rows\n */\n @property({ type: Boolean, attribute: 'with-row-ai-labels' })\n withRowAILabels = false;\n\n /**\n * true if slugs are added in the rows\n *\n * @deprecated remove in v12, use `with-row-ai-labels` instead\n */\n @property({ type: Boolean, attribute: 'with-row-slugs' })\n withRowSlugs = false;\n\n private _handleSlotChange({ target }: Event) {\n const hasContent = (target as HTMLSlotElement).assignedNodes().some(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n (node) => node.nodeType !== Node.TEXT_NODE || node!.textContent!.trim()\n );\n this.withHeader = hasContent;\n }\n\n private _handleTableBodyChange() {\n // cds-custom-table-head or cds-custom-table-body may have changed\n this._tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n this._tableExpandedRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableExpandedRows\n );\n this._tableRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n );\n\n // update any row dependant features\n this.updateExpandable();\n }\n\n private _handleSortAction(columnIndex, sortDirection) {\n const rows = [...this._tableRows];\n\n // regular row sorting\n rows.sort((a, b) => {\n const cellA = a.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )[columnIndex].textContent;\n const cellB = b.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )[columnIndex].textContent;\n return (\n this.collationFactors[sortDirection] *\n this.customSortRow(cellA, cellB, this.collator)\n );\n });\n\n // take into account the expanded rows, mapping each expandable row to its original for proper reinsertion\n if (this.expandable) {\n const originalRows = [...this._tableRows];\n const expandedRows = [...this._tableExpandedRows];\n\n const mapping = originalRows.reduce((acc, element, index) => {\n const sortId = element.getAttribute('sort-id');\n acc[sortId] = expandedRows[index];\n return acc;\n }, {});\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const sortedWithExpanded = [] as any;\n\n rows.forEach((e) => {\n const sortId = e.getAttribute('sort-id');\n sortedWithExpanded.push(e);\n // Only add the expanded row if it exists\n if (mapping[sortId]) {\n sortedWithExpanded.push(mapping[sortId]);\n }\n });\n\n sortedWithExpanded.forEach((e) => {\n this._tableBody.insertBefore(e, null);\n });\n } else {\n rows.forEach((e) => {\n this._tableBody.insertBefore(e, null);\n });\n }\n }\n\n private _handleFilterRows() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const unfilteredRows = [] as any;\n forEach(this._tableRows, (elem) => {\n let rowText = elem.textContent?.trim();\n let filtered = this.filterRows(rowText as string, this._searchValue);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).filtered = filtered;\n\n if (filtered && this.expandable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n rowText = (elem as any).nextElementSibling.textContent?.trim();\n filtered = this.filterRows(rowText as string, this._searchValue);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).filtered = filtered;\n }\n\n if (!filtered) {\n unfilteredRows.push(elem);\n }\n\n if (this.isSelectable) {\n const unfilteredSelectableLength = unfilteredRows.filter((elem) => {\n return !elem.hasAttribute('disabled');\n }).length;\n\n const headerCheckbox = this._tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`);\n\n headerCheckbox.disabled = unfilteredSelectableLength === 0;\n }\n\n if (this.expandable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (elem as any).nextElementSibling.filtered = filtered;\n }\n });\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n unfilteredRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableFiltered,\n init\n )\n );\n }\n\n /**\n * Download manager for selected rows.\n */\n private _handleDownload({ target }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const data = [] as any;\n\n const elementsToArray = (elements) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n Array.from(elements, (element) => (element as any).textContent);\n\n const headerCells = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorHeaderCell\n );\n const rows = this._selectedRows;\n const headerTitleArray = elementsToArray(headerCells);\n\n rows.forEach((row) => {\n const rowData = {};\n const cells = elementsToArray(\n row.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRowCells\n )\n );\n\n cells.forEach((cellText, index) => {\n const headerTitle = headerTitleArray[index];\n rowData[headerTitle] = cellText;\n });\n\n data.push(rowData);\n });\n\n const blob = new Blob([JSON.stringify(data)], { type: 'application/json' });\n\n target.href = URL.createObjectURL(blob);\n }\n\n /**\n * Handles batch expansion\n */\n @HostListener('eventExpandoToggle')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBatchExpansion = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { expanded } = detail;\n\n if ((target as CDSTableHeaderRow) === this._tableHeaderRow) {\n this._tableRows.forEach((e) => ((e as CDSTableRow).expanded = expanded));\n }\n };\n\n /**\n * Handles sorting the table depending on the column selected\n */\n @HostListener('eventBeforeSort')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleSort = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { sortDirection } = detail;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n if (!this.contains(target as any)) {\n return;\n }\n\n const columns = [...this._tableHeaderRow.children];\n const columnIndex = columns.indexOf(target);\n\n columns.forEach((e) => {\n if (e !== target && this.isSortable) {\n e.setAttribute('sort-direction', 'none');\n } else if (e.hasAttribute('is-sortable')) {\n e.setAttribute('sort-direction', 'none');\n }\n });\n\n this._handleSortAction(columnIndex, sortDirection);\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n sortedHeader: columns[columnIndex],\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableSorted,\n init\n )\n );\n\n this._handleFilterRows();\n };\n\n /**\n * Handles search input within the toolbar actions\n */\n @HostListener('eventSearchInput')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleSearchInput = async (event: CustomEvent) => {\n const { detail, target } = event;\n\n if (this.contains(target as CDSTableToolbarSearch)) {\n const { value } = detail;\n this._searchValue = value;\n this._handleFilterRows();\n }\n };\n\n /**\n * Handles row selection\n */\n @HostListener('eventBeforeChangeSelection')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleRowSelect = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { selected } = detail;\n const {\n _tableBatchActions: tableBatchActions,\n _tableToolbarContent: tableToolbarContent,\n _tableHeaderRow: tableHeaderRow,\n _selectedRows: selectedRows,\n } = this;\n\n if (!this.contains(target as CDSTableRow)) {\n return;\n }\n\n if (this.radio) {\n this._tableRows.forEach((e) => {\n if (e !== target) {\n e.removeAttribute('selected');\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n e.shadowRoot!.querySelector(`${prefix}-radio-button`).checked = false;\n }\n });\n this._selectedRows.push(...[target as CDSTableRow]);\n } else {\n if (selectedRows.includes(target as CDSTableRow)) {\n this._selectedRows = selectedRows.filter((e) => e !== target);\n } else {\n selectedRows.push(target as CDSTableRow);\n }\n\n if (tableBatchActions) {\n tableBatchActions.active = this._selectedRows?.length;\n tableBatchActions.selectedRowsCount += selected ? 1 : -1;\n }\n\n if (tableToolbarContent) {\n tableToolbarContent.hasBatchActions = this._selectedRows.length;\n }\n }\n\n const totalSelectableRows = [...this._tableRows].filter(\n (elem) => !elem.hasAttribute('filtered') && !elem.hasAttribute('disabled')\n ).length;\n\n // selected header checkbox upon all rows being selected\n const headerCheckbox = tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`);\n const allRowsSelected = this._selectedRows.length === totalSelectableRows;\n headerCheckbox.checked = Boolean(this._selectedRows.length);\n headerCheckbox.indeterminate =\n !allRowsSelected && this._selectedRows.length > 0;\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n selectedRow: target,\n selectedRows: selectedRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableRowSelect,\n init\n )\n );\n };\n\n /**\n * Handles header row selection, selecting/unselecting all rows\n */\n @HostListener('eventBeforeChangeSelectionAll')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleAllRowsSelect = async (event: CustomEvent) => {\n const { detail, target } = event;\n const { selected } = detail;\n const {\n _tableBatchActions: tableBatchActions,\n _tableToolbarContent: tableToolbarContent,\n _tableRows: tableRows,\n } = this;\n\n if (!this.contains(target as CDSTableRow)) {\n return;\n }\n\n let totalRows = 0;\n forEach(tableRows, (elem) => {\n if (!(elem as CDSTableRow).filtered && !(elem as CDSTableRow).disabled) {\n (elem as CDSTableRow).selected = selected;\n if (this.radio) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n const radioButton = (elem as CDSTableRow).shadowRoot!.querySelector(\n `${prefix}-radio-button`\n ) as CDSRadioButton;\n radioButton.checked = selected;\n }\n this._selectedRows.push(elem as CDSTableRow);\n totalRows++;\n\n const { selectorTableExpandedRows } = this\n .constructor as typeof CDSTable;\n const { nextElementSibling } = elem;\n\n // selecting the expanded row as well\n if (nextElementSibling?.matches(selectorTableExpandedRows)) {\n (elem.nextElementSibling as CDSTableExpandedRow).selected = selected;\n }\n }\n });\n\n if (!selected) {\n this._selectedRows = [];\n }\n\n if (tableBatchActions) {\n tableBatchActions.selectedRowsCount = selected ? totalRows : 0;\n tableBatchActions.active = selected;\n }\n\n if (tableToolbarContent) {\n tableToolbarContent.hasBatchActions = selected;\n }\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n selectedRows: this._selectedRows,\n },\n };\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTable).eventTableRowSelectAll,\n init\n )\n );\n };\n\n /**\n * Handles cancel button within the toolbar actions\n */\n @HostListener('eventClickCancel')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleCancelSelection = async (event: CustomEvent) => {\n const { target } = event;\n const { _tableHeaderRow: tableHeaderRow } = this;\n\n if (this.contains(target as CDSTableBatchActions)) {\n tableHeaderRow.shadowRoot\n ?.querySelector(`${prefix}-checkbox`)\n .shadowRoot.querySelector(`.${prefix}--checkbox`)\n .click();\n }\n };\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'table');\n }\n\n /**\n * If using `with-row-slugs`, set `with-row-ai-labels` attribute to true so\n * the styles are applied for slug as well\n *\n * remove in v12\n */\n if (this.withRowSlugs) {\n this.setAttribute('with-rows-ai-labels', '');\n this.withRowAILabels = true;\n }\n super.connectedCallback();\n }\n\n firstUpdated() {\n this._tableBatchActions = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBatchActions\n );\n this._tableToolbar = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableToolbar\n );\n this._tableToolbarContent = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableToolbarContent\n );\n this._tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n this._tableHeaderRow = this.querySelector(\n (this.constructor as typeof CDSTable).selectorRowsWithHeader\n );\n this._tableExpandedRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableExpandedRows\n );\n\n this._tableRows = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n );\n\n this._downloadButton = this.querySelector(\n (this.constructor as typeof CDSTable).selectorToolbarDownload\n );\n if (this._downloadButton) {\n this._downloadButton.onclick = this._handleDownload.bind(this);\n }\n this.headerCount = this._tableHeaderRow.children.length;\n }\n\n updateExpandable() {\n const { selectorTableExpandedRows } = this.constructor as typeof CDSTable;\n\n this._tableRows.forEach((e, index) => {\n // Only set expandable=true if this row has an expanded row following it\n const hasExpandedRow = e.nextElementSibling?.matches(\n selectorTableExpandedRows\n );\n e.expandable = this.expandable && hasExpandedRow;\n e.setAttribute('sort-id', index);\n });\n this._tableHeaderRow.expandable = this.expandable;\n this._tableHeaderRow.batchExpansion = this.batchExpansion;\n this.headerCount += this.expandable ? 1 : -1;\n }\n\n updated(changedProperties) {\n if (changedProperties.has('expandable')) {\n this.updateExpandable();\n }\n\n if (changedProperties.has('headerCount')) {\n this._tableExpandedRows.forEach((e) => {\n e.setAttribute('colspan', this.headerCount);\n });\n }\n\n if (changedProperties.has('isSelectable')) {\n if (this.isSelectable) {\n this._tableHeaderRow.setAttribute('selection-name', 'header');\n this._tableRows.forEach((e, index) => {\n if (!e.hasAttribute('selection-name')) {\n e.setAttribute('selection-name', index);\n }\n });\n }\n this.headerCount++;\n }\n\n if (changedProperties.has('locale')) {\n this.collator = new Intl.Collator(this.locale);\n }\n if (changedProperties.has('isSortable')) {\n if (this.isSortable) {\n this._enableSortAction();\n }\n }\n\n if (\n changedProperties.has('overflowMenuOnHover') ||\n changedProperties.has('size')\n ) {\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableCellOverflowMenu\n ),\n (elem) => {\n const cell = elem.parentNode as CDSTableCell;\n const row = cell.parentNode as CDSTableRow;\n cell.overflowMenuOnHover = this.overflowMenuOnHover;\n row.overflowMenuOnHover = this.overflowMenuOnHover;\n cell.setAttribute('size', this.size);\n elem.setAttribute('size', this.size);\n elem.setAttribute('data-table', '');\n }\n );\n }\n\n if (changedProperties.has('radio')) {\n // Propagate `size` attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorTableRow\n ),\n (elem) => {\n (elem as CDSTableRow).radio = this.radio;\n }\n );\n if (this._tableHeaderRow) {\n this._tableHeaderRow.hideCheckbox = this.radio;\n }\n }\n\n if (changedProperties.has('size')) {\n // Propagate `size` attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorAllRows\n ),\n (elem) => {\n elem.setAttribute('size', this.size);\n }\n );\n this._tableToolbar?.setAttribute('size', this.size);\n const batchActions = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBatchActions\n );\n if (batchActions) {\n batchActions.setAttribute('size', this.size);\n }\n }\n\n // TODO: Uncomment when Carbon fully implements Sticky header feature\n // if (changedProperties.has('stickyHeader')) {\n // const tableBody = this.querySelector(\n // (this.constructor as typeof CDSTable).selectorTableBody\n // );\n // const tableHead = this.querySelector(\n // (this.constructor as typeof CDSTable).selectorTableHead\n // );\n // (tableBody as any).stickyHeader = this.stickyHeader;\n // (tableHead as any).stickyHeader = this.stickyHeader;\n // forEach(\n // this.querySelectorAll(\n // (this.constructor as typeof CDSTable).selectorRowsWithHeader\n // ),\n // (elem) => {\n // (elem as any).stickyHeader = this.stickyHeader;\n // }\n // );\n // forEach(\n // this.querySelectorAll(\n // (this.constructor as typeof CDSTable).selectorTableCells\n // ),\n // (elem) => {\n // (elem as any).stickyHeader = this.stickyHeader;\n // }\n // );\n // }\n\n if (changedProperties.has('useZebraStyles')) {\n const tableBody = this.querySelector(\n (this.constructor as typeof CDSTable).selectorTableBody\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (tableBody as any).useZebraStyles = this.useZebraStyles;\n }\n\n if (this.withRowAILabels) {\n this._tableHeaderRow.setAttribute('rows-with-ai-label', '');\n this._tableRows.forEach((row) => {\n row.setAttribute('rows-with-ai-label', '');\n });\n } else {\n this._tableHeaderRow.removeAttribute('rows-with-ai-label');\n this._tableRows.forEach((row) => {\n row.removeAttribute('rows-with-ai-label');\n });\n }\n\n // Gets table header info to add to the column cells for styles\n const headersWithAILabel: number[] = [];\n\n Array.prototype.slice\n .call(this._tableHeaderRow.children)\n .forEach((headerCell, index) => {\n if (\n headerCell.querySelector(`${prefix}-ai-label`) ||\n headerCell.querySelector(`${prefix}-slug`)\n ) {\n headerCell.setAttribute('ai-label', '');\n headersWithAILabel.push(index);\n } else {\n headerCell.removeAttribute('ai-label');\n }\n });\n\n this._tableRows.forEach((row) => {\n Array.prototype.slice\n .call((row as HTMLElement).children)\n .forEach((cell, index) => {\n if (headersWithAILabel.includes(index)) {\n cell.setAttribute('ai-label-in-header', '');\n } else {\n cell.removeAttribute('ai-label-in-header');\n }\n });\n });\n }\n\n render() {\n return html` <div class=\"${prefix}--data-table-header-container\">\n <div ?hidden=\"${!this.withHeader}\" class=\"${prefix}--data-table-header\">\n <slot @slotchange=\"${this._handleSlotChange}\" name=\"title\"></slot>\n <slot\n @slotchange=\"${this._handleSlotChange}\"\n name=\"description\"></slot>\n </div>\n <slot name=\"toolbar\"></slot>\n </div>\n\n <div part=\"inner-container\" class=\"${prefix}--data-table_inner-container\">\n <div part=\"content\" class=\"${prefix}--data-table-content\">\n <slot\n @cds-custom-table-body-content-change=\"${this\n ._handleTableBodyChange}\"></slot>\n </div>\n </div>`;\n }\n\n /**\n * Adds isSortable value for table header cells.\n */\n _enableSortAction() {\n const headerCells = this.querySelectorAll(\n (this.constructor as typeof CDSTable).selectorHeaderCell\n );\n headerCells.forEach((e) => {\n (e as CDSTableHeaderCell).isSortable = this.isSortable;\n (e as CDSTableHeaderCell).isSelectable = this.isSelectable;\n (e as CDSTableHeaderCell).isExpandable = this.expandable;\n });\n const columns = [...this._tableHeaderRow.children];\n let sortDirection;\n let columnIndex = 0;\n columns.forEach((column, index) => {\n if (\n column.hasAttribute('sort-direction') &&\n column.getAttribute('sort-direction') !== 'none'\n ) {\n sortDirection = column.getAttribute('sort-direction');\n columnIndex = index;\n }\n });\n\n columns.forEach((e, index) => {\n if (index !== columnIndex && this.isSortable) {\n e.setAttribute('sort-direction', 'none');\n } else if (e.hasAttribute('is-sortable')) {\n e.setAttribute('sort-direction', 'none');\n }\n });\n this._handleSortAction(columnIndex, sortDirection);\n }\n\n /**\n * The name of the custom event fired before a new sort direction is set upon a user gesture.\n * Cancellation of this event stops the user-initiated change in sort direction.\n */\n static get eventBeforeSort() {\n return `${prefix}-table-header-cell-sort`;\n }\n\n /**\n * The name of the custom event fired during search bar input\n */\n static get eventSearchInput() {\n return `${prefix}-search-input`;\n }\n\n /**\n * The name of the custom event fired before header row is selected/unselected upon a user gesture.\n */\n static get eventBeforeChangeSelectionAll() {\n return `${prefix}-table-change-selection-all`;\n }\n\n /**\n * The name of the custom event fired before a row is selected/unselected upon a user gesture.\n */\n static get eventBeforeChangeSelection() {\n return `${prefix}-table-row-change-selection`;\n }\n\n /**\n * The name of the custom event fired after the Cancel button is clicked.\n */\n static get eventClickCancel() {\n return `${prefix}-table-batch-actions-cancel-clicked`;\n }\n\n /**\n * The name of the custom event fired after the expanded state a row is toggled upon a user gesture.\n */\n static get eventExpandoToggle() {\n return `${prefix}-table-row-expando-toggled`;\n }\n\n /**\n * The name of the custom event fired after a row has been selected\n */\n static get eventTableRowSelect() {\n return `${prefix}-table-row-selected`;\n }\n\n /**\n * The name of the custom event fired after all rows have been selected\n */\n static get eventTableRowSelectAll() {\n return `${prefix}-table-row-all-selected`;\n }\n\n /**\n * The name of the custom event fired after the table has been sorted\n */\n static get eventTableSorted() {\n return `${prefix}-table-sorted`;\n }\n\n /**\n * The name of the custom event fired after the table has been filtered containing remaining rows.\n */\n static get eventTableFiltered() {\n return `${prefix}-table-filtered`;\n }\n\n /**\n * The CSS selector to find the overflow menu on the table cell\n */\n static get selectorTableCellOverflowMenu() {\n return `${prefix}-table-cell ${prefix}-overflow-menu`;\n }\n\n /**\n * The CSS selector to find the download button\n */\n static get selectorToolbarDownload() {\n return `${prefix}-button[download]`;\n }\n\n /**\n * The CSS selector to find the table batch actions\n */\n static get selectorTableBatchActions() {\n return `${prefix}-table-batch-actions`;\n }\n\n /**\n * The CSS selector to find the table toolbar\n */\n static get selectorTableToolbar() {\n return `${prefix}-table-toolbar`;\n }\n\n /**\n * The CSS selector to find the table toolbar content\n */\n static get selectorTableToolbarContent() {\n return `${prefix}-table-toolbar-content`;\n }\n\n /**\n * The CSS selector to find the table toolbar search\n */\n static get selectorTableToolbarSearch() {\n return `${prefix}-table-toolbar-search`;\n }\n\n /**\n * The CSS selector to find the table head\n */\n static get selectorTableHead() {\n return `${prefix}-table-head`;\n }\n\n /**\n * The CSS selector to find the table body\n */\n static get selectorTableBody() {\n return `${prefix}-table-body`;\n }\n\n /**\n * The CSS selector to find the table expanded rows\n */\n static get selectorTableExpandedRows() {\n return `${prefix}-table-expanded-row`;\n }\n\n /**\n * The CSS selector to find the table rows\n */\n static get selectorTableRow() {\n return `${prefix}-table-row`;\n }\n\n /**\n * The CSS selector to find the rows cells.\n */\n static get selectorTableRowCells() {\n return `${prefix}-table-cell`;\n }\n\n /**\n * The CSS selector to find the rows cells, including header cells.\n */\n static get selectorTableCells() {\n return `${prefix}-table-cell, ${prefix}-table-header-cell`;\n }\n\n /**\n * The CSS selector to find the header cell\n */\n static get selectorHeaderCell() {\n return `${prefix}-table-header-cell`;\n }\n\n /**\n * The CSS selector to find the rows, including header rows.\n */\n static get selectorRowsWithHeader() {\n return `${prefix}-table-header-row,${prefix}-table-row`;\n }\n\n /**\n * The CSS selector to find all rows\n */\n static get selectorAllRows() {\n return `${prefix}-table-header-row,${prefix}-table-row,${prefix}-table-expanded-row`;\n }\n\n static styles = styles;\n}\n\nexport default CDSTable;\n"],"names":["customElement"],"mappings":"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"}
|
|
@@ -251,7 +251,7 @@ let CDSPopover = CDSPopover_1 = class CDSPopover extends HostListenerMixin(LitEl
|
|
|
251
251
|
render() {
|
|
252
252
|
const { dropShadow, border, highContrast, open, tabTip, _handleSlotChange: handleSlotChange, } = this;
|
|
253
253
|
if (tabTip) {
|
|
254
|
-
this.caret = tabTip
|
|
254
|
+
this.caret = !tabTip;
|
|
255
255
|
}
|
|
256
256
|
if (!this.autoalign) {
|
|
257
257
|
this.align = this.align ? this.align : tabTip ? 'bottom-start' : 'bottom';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.js","sources":["../../../src/components/popover/popover.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport styles from './popover.scss?lit';\nimport CDSPopoverContent from './popover-content';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport FloatingUIController from '../../globals/controllers/floating-controller';\nimport { POPOVER_BACKGROUND_TOKEN } from './defs';\nimport type { Boundary, Rect } from '@floating-ui/dom';\n\n/**\n * Popover.\n *\n * @element cds-custom-popover\n */\n@customElement(`${prefix}-popover`)\nclass CDSPopover extends HostListenerMixin(LitElement) {\n /**\n * Create popover controller instance\n */\n private popoverController = new FloatingUIController(this);\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot')\n private _triggerSlotNode!: HTMLSlotElement;\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot[name=\"content\"]')\n private _contentSlotNode!: HTMLSlotElement;\n\n /**\n * Specify direction of alignment\n */\n @property({ reflect: true, type: String })\n align = '';\n\n /**\n * **Experimental:** Provide an offset value for alignment axis. Only takes effect when `autoalign` is enabled.\n */\n @property({ type: Number, reflect: true, attribute: 'alignment-axis-offset' })\n alignmentAxisOffset?: number;\n\n /**\n * Specify whether a auto align functionality should be applied\n */\n @property({ type: Boolean, reflect: true })\n autoalign = false;\n\n /**\n * Specify whether a caret should be rendered\n */\n @property({ type: Boolean, reflect: true })\n caret = true;\n\n /**\n * Specify whether a dropShadow should be rendered\n */\n @property({ type: Boolean, reflect: true })\n dropShadow = true;\n\n /**\n * Specify whether a border should be rendered on the popover\n */\n @property({ type: Boolean, reflect: true })\n border = false;\n\n /**\n * Render the component using the high-contrast variant\n */\n @property({ type: Boolean, reflect: true })\n highContrast = false;\n\n /**\n * Specify whether the component is currently open or closed\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Render the component using the tab tip variant\n */\n @property({ type: Boolean, reflect: true })\n tabTip = false;\n\n /**\n * Specify the background token to use. Default is 'layer'.\n */\n @property({ reflect: true, type: String })\n backgroundToken = POPOVER_BACKGROUND_TOKEN.LAYER;\n\n /**\n * Specify a bounding element to be used for autoAlign calculations. The viewport is used by default.\n * Takes one of the following: 'clippingAncestors', '#elementid', '#elementid_1, #elementid_2', 'rect(x, y, width, height)'\n * This prop is currently experimental and is subject to future changes.\n */\n @property({ type: String, reflect: true, attribute: 'autoalign-boundary' })\n autoAlignBoundary?: string;\n\n // Tracks whether the last mousedown event was inside the popover content\n private _lastClickWasInsidePopoverContent = false;\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n if (this.tabTip) {\n const component = (target as HTMLSlotElement)\n .assignedNodes()\n .filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).tagName === 'BUTTON'\n );\n\n (component[0] as HTMLElement)?.classList.add(\n `${prefix}--popover--tab-tip__button`\n );\n }\n this.requestUpdate();\n }\n\n @HostListener('mousedown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleMouseDown(event: MouseEvent) {\n const path = event.composedPath();\n const contentEl = this._contentSlotNode.assignedElements()[0];\n\n this._lastClickWasInsidePopoverContent =\n contentEl && path.includes(contentEl);\n\n // reset flag\n if (this._lastClickWasInsidePopoverContent) {\n setTimeout(() => {\n this._lastClickWasInsidePopoverContent = false;\n }, 0);\n }\n }\n\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleFocusOut(event: Event) {\n const relatedTarget = (event as FocusEvent).relatedTarget as Node | null;\n const path = event.composedPath();\n const triggerEl = this._triggerSlotNode.assignedElements({\n flatten: true,\n })[0];\n\n if (this._lastClickWasInsidePopoverContent) {\n this._lastClickWasInsidePopoverContent = false;\n return;\n }\n\n if (\n relatedTarget &&\n triggerEl &&\n (path.includes(triggerEl) ||\n triggerEl === relatedTarget ||\n triggerEl.contains(relatedTarget))\n ) {\n return;\n }\n if (!this.contains(relatedTarget)) {\n const wasOpen = this.open;\n this.open = false;\n\n if (wasOpen) {\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventOnClose,\n {\n bubbles: true,\n composed: true,\n }\n )\n );\n }\n }\n }\n\n private _handleOutsideClick(event: Event) {\n const path = event.composedPath();\n\n if (path.includes(this._triggerSlotNode.assignedElements()[0])) return;\n\n const popoverContent = this.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContent\n )?.shadowRoot?.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContentClass\n ) as HTMLElement;\n\n if (path.includes(popoverContent)) return;\n\n const target = event.target as Node | null;\n const composedTarget = event.composedPath?.()[0] as Node | null;\n\n if (\n this.open &&\n target &&\n !this.contains(target) &&\n !this.contains(composedTarget)\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSPopover).eventOnClose, {\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n constructor() {\n super();\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n }\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this._handleOutsideClick);\n }\n\n /**\n * This function resolves the string passed in for `autoAlignBoundary` to either:\n * \"clippingAncestors\"\n * An element (found via #id)\n * An array of elements (found via #id1, #id2, #id3, separated by \",\")\n * A rect, input format should be 'rect(x,y,width,height)'\n */\n private _resolveAutoAlignBoundary(): Boundary {\n const raw = (this.autoAlignBoundary ?? '').trim();\n\n // Default to 'clippingAncestors'\n if (!raw) return 'clippingAncestors';\n if (raw === 'clippingAncestors') return 'clippingAncestors';\n\n // regex match for: rect(x,y,width,height)\n const rectMatch =\n /^rect\\(\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*\\)$/i.exec(\n raw\n );\n if (rectMatch) {\n const [, x, y, w, h] = rectMatch;\n const rect: Rect = { x: +x, y: +y, width: +w, height: +h };\n return rect;\n }\n\n // Get element(s)\n const ids = raw\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 1 && s.startsWith('#'))\n .map((s) => s.slice(1).trim())\n .filter(Boolean);\n\n if (ids.length > 0) {\n const elements: Element[] = [];\n const inputted_ids = new Set<string>();\n\n for (const id of ids) {\n if (inputted_ids.has(id)) continue;\n inputted_ids.add(id);\n\n const el = document.getElementById(id);\n\n if (el) elements.push(el);\n }\n return elements.length === 1 ? elements[0] : elements;\n }\n\n // default fallback\n return 'clippingAncestors';\n }\n\n updated(changedProperties) {\n const { selectorPopoverContent } = this.constructor as typeof CDSPopover;\n [\n 'open',\n 'align',\n 'autoalign',\n 'caret',\n 'dropShadow',\n 'border',\n 'tabTip',\n 'highContrast',\n 'backgroundToken',\n ].forEach((name) => {\n if (changedProperties.has(name)) {\n const { [name as keyof CDSPopover]: value } = this;\n if (this.querySelector(selectorPopoverContent) as CDSPopoverContent) {\n (this.querySelector(selectorPopoverContent) as CDSPopoverContent)[\n name\n ] = value;\n }\n }\n });\n\n if (this.autoalign && this.open) {\n // auto align functionality with @floating-ui/dom library\n const button = this._triggerSlotNode.assignedElements()[0];\n const content = this._contentSlotNode.assignedElements()[0];\n\n const tooltip = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverContentClass\n );\n const arrowElement = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverCaret\n );\n\n if (button && tooltip) {\n this.popoverController?.setPlacement({\n trigger: button as HTMLElement,\n target: tooltip as HTMLElement,\n arrowElement:\n this.caret && arrowElement\n ? (arrowElement as HTMLElement)\n : undefined,\n caret: this.caret,\n flipArguments: { fallbackAxisSideDirection: 'start' },\n alignment: this.align,\n open: this.open,\n alignmentAxisOffset: this.alignmentAxisOffset,\n autoAlignBoundary: this._resolveAutoAlignBoundary(),\n isTabTip: this.tabTip,\n });\n }\n }\n }\n\n render() {\n const {\n dropShadow,\n border,\n highContrast,\n open,\n tabTip,\n _handleSlotChange: handleSlotChange,\n } = this;\n if (tabTip) {\n this.caret = tabTip ? false : true;\n }\n\n if (!this.autoalign) {\n this.align = this.align ? this.align : tabTip ? 'bottom-start' : 'bottom';\n }\n\n if (tabTip) {\n const tabTipAlignments = [\n 'bottom-start',\n 'bottom-end',\n 'bottom-left', // remove in v12\n 'bottom-right', // remove in v12\n ];\n\n if (!tabTipAlignments.includes(this.align)) {\n this.align = 'bottom-start';\n }\n }\n\n const classes = classMap({\n [`${prefix}--popover-container`]: true,\n [`${prefix}--popover--caret`]: this.caret,\n [`${prefix}--popover--drop-shadow`]: dropShadow,\n [`${prefix}--popover--border`]: border,\n [`${prefix}--popover--high-contrast`]: highContrast,\n [`${prefix}--popover--open`]: open,\n [`${prefix}--popover--${this.align}`]: true,\n [`${prefix}--popover--tab-tip`]: tabTip,\n [`${prefix}--popover--background-token__background`]:\n this.backgroundToken === POPOVER_BACKGROUND_TOKEN.BACKGROUND &&\n !highContrast,\n });\n return html`\n <span class=\"${classes}\" part=\"popover-container\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n <slot name=\"content\"></slot>\n </span>\n `;\n }\n\n /**\n * A selector that will return popover content element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverContentClass() {\n return `.${prefix}--popover-content`;\n }\n\n /**\n * A selector that will return popover caret element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverCaret() {\n return `.${prefix}--popover-caret`;\n }\n\n /**\n * A selector that will return the CDSPopoverContent.\n */\n static get selectorPopoverContent() {\n return `${prefix}-popover-content`;\n }\n\n /**\n * The name of the custom event fired when the popover closes via focusout/outsideclick\n */\n static get eventOnClose() {\n return `${prefix}-popover-closed`;\n }\n\n static styles = styles;\n}\n\nexport default CDSPopover;\n"],"names":["FloatingUIController","styles","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"popover.js","sources":["../../../src/components/popover/popover.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport styles from './popover.scss?lit';\nimport CDSPopoverContent from './popover-content';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport FloatingUIController from '../../globals/controllers/floating-controller';\nimport { POPOVER_BACKGROUND_TOKEN } from './defs';\nimport type { Boundary, Rect } from '@floating-ui/dom';\n\n/**\n * Popover.\n *\n * @element cds-custom-popover\n */\n@customElement(`${prefix}-popover`)\nclass CDSPopover extends HostListenerMixin(LitElement) {\n /**\n * Create popover controller instance\n */\n private popoverController = new FloatingUIController(this);\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot')\n private _triggerSlotNode!: HTMLSlotElement;\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot[name=\"content\"]')\n private _contentSlotNode!: HTMLSlotElement;\n\n /**\n * Specify direction of alignment\n */\n @property({ reflect: true, type: String })\n align = '';\n\n /**\n * **Experimental:** Provide an offset value for alignment axis. Only takes effect when `autoalign` is enabled.\n */\n @property({ type: Number, reflect: true, attribute: 'alignment-axis-offset' })\n alignmentAxisOffset?: number;\n\n /**\n * Specify whether a auto align functionality should be applied\n */\n @property({ type: Boolean, reflect: true })\n autoalign = false;\n\n /**\n * Specify whether a caret should be rendered\n */\n @property({ type: Boolean, reflect: true })\n caret = true;\n\n /**\n * Specify whether a dropShadow should be rendered\n */\n @property({ type: Boolean, reflect: true })\n dropShadow = true;\n\n /**\n * Specify whether a border should be rendered on the popover\n */\n @property({ type: Boolean, reflect: true })\n border = false;\n\n /**\n * Render the component using the high-contrast variant\n */\n @property({ type: Boolean, reflect: true })\n highContrast = false;\n\n /**\n * Specify whether the component is currently open or closed\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Render the component using the tab tip variant\n */\n @property({ type: Boolean, reflect: true })\n tabTip = false;\n\n /**\n * Specify the background token to use. Default is 'layer'.\n */\n @property({ reflect: true, type: String })\n backgroundToken = POPOVER_BACKGROUND_TOKEN.LAYER;\n\n /**\n * Specify a bounding element to be used for autoAlign calculations. The viewport is used by default.\n * Takes one of the following: 'clippingAncestors', '#elementid', '#elementid_1, #elementid_2', 'rect(x, y, width, height)'\n * This prop is currently experimental and is subject to future changes.\n */\n @property({ type: String, reflect: true, attribute: 'autoalign-boundary' })\n autoAlignBoundary?: string;\n\n // Tracks whether the last mousedown event was inside the popover content\n private _lastClickWasInsidePopoverContent = false;\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n if (this.tabTip) {\n const component = (target as HTMLSlotElement)\n .assignedNodes()\n .filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).tagName === 'BUTTON'\n );\n\n (component[0] as HTMLElement)?.classList.add(\n `${prefix}--popover--tab-tip__button`\n );\n }\n this.requestUpdate();\n }\n\n @HostListener('mousedown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleMouseDown(event: MouseEvent) {\n const path = event.composedPath();\n const contentEl = this._contentSlotNode.assignedElements()[0];\n\n this._lastClickWasInsidePopoverContent =\n contentEl && path.includes(contentEl);\n\n // reset flag\n if (this._lastClickWasInsidePopoverContent) {\n setTimeout(() => {\n this._lastClickWasInsidePopoverContent = false;\n }, 0);\n }\n }\n\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleFocusOut(event: Event) {\n const relatedTarget = (event as FocusEvent).relatedTarget as Node | null;\n const path = event.composedPath();\n const triggerEl = this._triggerSlotNode.assignedElements({\n flatten: true,\n })[0];\n\n if (this._lastClickWasInsidePopoverContent) {\n this._lastClickWasInsidePopoverContent = false;\n return;\n }\n\n if (\n relatedTarget &&\n triggerEl &&\n (path.includes(triggerEl) ||\n triggerEl === relatedTarget ||\n triggerEl.contains(relatedTarget))\n ) {\n return;\n }\n if (!this.contains(relatedTarget)) {\n const wasOpen = this.open;\n this.open = false;\n\n if (wasOpen) {\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventOnClose,\n {\n bubbles: true,\n composed: true,\n }\n )\n );\n }\n }\n }\n\n private _handleOutsideClick(event: Event) {\n const path = event.composedPath();\n\n if (path.includes(this._triggerSlotNode.assignedElements()[0])) return;\n\n const popoverContent = this.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContent\n )?.shadowRoot?.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContentClass\n ) as HTMLElement;\n\n if (path.includes(popoverContent)) return;\n\n const target = event.target as Node | null;\n const composedTarget = event.composedPath?.()[0] as Node | null;\n\n if (\n this.open &&\n target &&\n !this.contains(target) &&\n !this.contains(composedTarget)\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSPopover).eventOnClose, {\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n constructor() {\n super();\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n }\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this._handleOutsideClick);\n }\n\n /**\n * This function resolves the string passed in for `autoAlignBoundary` to either:\n * \"clippingAncestors\"\n * An element (found via #id)\n * An array of elements (found via #id1, #id2, #id3, separated by \",\")\n * A rect, input format should be 'rect(x,y,width,height)'\n */\n private _resolveAutoAlignBoundary(): Boundary {\n const raw = (this.autoAlignBoundary ?? '').trim();\n\n // Default to 'clippingAncestors'\n if (!raw) return 'clippingAncestors';\n if (raw === 'clippingAncestors') return 'clippingAncestors';\n\n // regex match for: rect(x,y,width,height)\n const rectMatch =\n /^rect\\(\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*\\)$/i.exec(\n raw\n );\n if (rectMatch) {\n const [, x, y, w, h] = rectMatch;\n const rect: Rect = { x: +x, y: +y, width: +w, height: +h };\n return rect;\n }\n\n // Get element(s)\n const ids = raw\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 1 && s.startsWith('#'))\n .map((s) => s.slice(1).trim())\n .filter(Boolean);\n\n if (ids.length > 0) {\n const elements: Element[] = [];\n const inputted_ids = new Set<string>();\n\n for (const id of ids) {\n if (inputted_ids.has(id)) continue;\n inputted_ids.add(id);\n\n const el = document.getElementById(id);\n\n if (el) elements.push(el);\n }\n return elements.length === 1 ? elements[0] : elements;\n }\n\n // default fallback\n return 'clippingAncestors';\n }\n\n updated(changedProperties) {\n const { selectorPopoverContent } = this.constructor as typeof CDSPopover;\n [\n 'open',\n 'align',\n 'autoalign',\n 'caret',\n 'dropShadow',\n 'border',\n 'tabTip',\n 'highContrast',\n 'backgroundToken',\n ].forEach((name) => {\n if (changedProperties.has(name)) {\n const { [name as keyof CDSPopover]: value } = this;\n if (this.querySelector(selectorPopoverContent) as CDSPopoverContent) {\n (this.querySelector(selectorPopoverContent) as CDSPopoverContent)[\n name\n ] = value;\n }\n }\n });\n\n if (this.autoalign && this.open) {\n // auto align functionality with @floating-ui/dom library\n const button = this._triggerSlotNode.assignedElements()[0];\n const content = this._contentSlotNode.assignedElements()[0];\n\n const tooltip = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverContentClass\n );\n const arrowElement = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverCaret\n );\n\n if (button && tooltip) {\n this.popoverController?.setPlacement({\n trigger: button as HTMLElement,\n target: tooltip as HTMLElement,\n arrowElement:\n this.caret && arrowElement\n ? (arrowElement as HTMLElement)\n : undefined,\n caret: this.caret,\n flipArguments: { fallbackAxisSideDirection: 'start' },\n alignment: this.align,\n open: this.open,\n alignmentAxisOffset: this.alignmentAxisOffset,\n autoAlignBoundary: this._resolveAutoAlignBoundary(),\n isTabTip: this.tabTip,\n });\n }\n }\n }\n\n render() {\n const {\n dropShadow,\n border,\n highContrast,\n open,\n tabTip,\n _handleSlotChange: handleSlotChange,\n } = this;\n if (tabTip) {\n this.caret = !tabTip;\n }\n\n if (!this.autoalign) {\n this.align = this.align ? this.align : tabTip ? 'bottom-start' : 'bottom';\n }\n\n if (tabTip) {\n const tabTipAlignments = [\n 'bottom-start',\n 'bottom-end',\n 'bottom-left', // remove in v12\n 'bottom-right', // remove in v12\n ];\n\n if (!tabTipAlignments.includes(this.align)) {\n this.align = 'bottom-start';\n }\n }\n\n const classes = classMap({\n [`${prefix}--popover-container`]: true,\n [`${prefix}--popover--caret`]: this.caret,\n [`${prefix}--popover--drop-shadow`]: dropShadow,\n [`${prefix}--popover--border`]: border,\n [`${prefix}--popover--high-contrast`]: highContrast,\n [`${prefix}--popover--open`]: open,\n [`${prefix}--popover--${this.align}`]: true,\n [`${prefix}--popover--tab-tip`]: tabTip,\n [`${prefix}--popover--background-token__background`]:\n this.backgroundToken === POPOVER_BACKGROUND_TOKEN.BACKGROUND &&\n !highContrast,\n });\n return html`\n <span class=\"${classes}\" part=\"popover-container\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n <slot name=\"content\"></slot>\n </span>\n `;\n }\n\n /**\n * A selector that will return popover content element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverContentClass() {\n return `.${prefix}--popover-content`;\n }\n\n /**\n * A selector that will return popover caret element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverCaret() {\n return `.${prefix}--popover-caret`;\n }\n\n /**\n * A selector that will return the CDSPopoverContent.\n */\n static get selectorPopoverContent() {\n return `${prefix}-popover-content`;\n }\n\n /**\n * The name of the custom event fired when the popover closes via focusout/outsideclick\n */\n static get eventOnClose() {\n return `${prefix}-popover-closed`;\n }\n\n static styles = styles;\n}\n\nexport default CDSPopover;\n"],"names":["FloatingUIController","styles","customElement"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carbon/web-components",
|
|
3
3
|
"description": "Web components for the Carbon Design System",
|
|
4
|
-
"version": "2.48.0
|
|
4
|
+
"version": "2.48.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "es/index.js",
|
|
7
7
|
"module": "es/index.js",
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
67
|
"@carbon/icon-helpers": "10.47.0",
|
|
68
|
-
"@carbon/icons": "^11.75.0
|
|
69
|
-
"@carbon/styles": "^1.100.0
|
|
68
|
+
"@carbon/icons": "^11.75.0",
|
|
69
|
+
"@carbon/styles": "^1.100.0",
|
|
70
70
|
"@floating-ui/dom": "^1.6.3",
|
|
71
71
|
"@ibm/telemetry-js": "^1.10.2",
|
|
72
72
|
"@lit/context": "^1.1.3",
|
|
@@ -76,8 +76,8 @@
|
|
|
76
76
|
"tslib": "^2.6.3"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"@carbon/layout": "^11.48.0
|
|
80
|
-
"@carbon/motion": "^11.41.0
|
|
79
|
+
"@carbon/layout": "^11.48.0",
|
|
80
|
+
"@carbon/motion": "^11.41.0",
|
|
81
81
|
"@juggle/resize-observer": "^3.4.0",
|
|
82
82
|
"@mordech/vite-lit-loader": "^0.37.0",
|
|
83
83
|
"@open-wc/testing": "^4.0.0",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"@storybook/addon-links": "^9.1.8",
|
|
94
94
|
"@storybook/web-components-vite": "^9.1.8",
|
|
95
95
|
"@types/lodash-es": "^4.17.5",
|
|
96
|
-
"@types/node": "^
|
|
96
|
+
"@types/node": "^24.0.0",
|
|
97
97
|
"@web/test-runner": "^0.20.0",
|
|
98
98
|
"@web/test-runner-commands": "^0.9.0",
|
|
99
99
|
"@web/test-runner-playwright": "^0.11.0",
|
|
@@ -129,5 +129,5 @@
|
|
|
129
129
|
}
|
|
130
130
|
]
|
|
131
131
|
},
|
|
132
|
-
"gitHead": "
|
|
132
|
+
"gitHead": "6dde90f9edfb378e1585f1954c92484a37f22f02"
|
|
133
133
|
}
|