@hashicorp/design-system-components 5.0.0 → 5.1.0-rc-20251106155636
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/declarations/components/hds/advanced-table/index.d.ts +10 -0
- package/declarations/components/hds/filter-bar/checkbox.d.ts +21 -0
- package/declarations/components/hds/filter-bar/filter-group.d.ts +46 -0
- package/declarations/components/hds/filter-bar/filters-dropdown.d.ts +36 -0
- package/declarations/components/hds/filter-bar/index.d.ts +40 -0
- package/declarations/components/hds/filter-bar/radio.d.ts +21 -0
- package/declarations/components/hds/filter-bar/range.d.ts +33 -0
- package/declarations/components/hds/filter-bar/tabs/index.d.ts +43 -0
- package/declarations/components/hds/filter-bar/tabs/panel.d.ts +28 -0
- package/declarations/components/hds/filter-bar/tabs/tab.d.ts +33 -0
- package/declarations/components/hds/filter-bar/types.d.ts +52 -0
- package/declarations/components.d.ts +10 -0
- package/declarations/template-registry.d.ts +27 -0
- package/dist/_app_/components/hds/filter-bar/checkbox.js +1 -0
- package/dist/_app_/components/hds/filter-bar/filter-group.js +1 -0
- package/dist/_app_/components/hds/filter-bar/filters-dropdown.js +1 -0
- package/dist/_app_/components/hds/filter-bar/radio.js +1 -0
- package/dist/_app_/components/hds/filter-bar/range.js +1 -0
- package/dist/_app_/components/hds/filter-bar/tabs/panel.js +1 -0
- package/dist/_app_/components/hds/filter-bar/tabs/tab.js +1 -0
- package/dist/_app_/components/hds/filter-bar/tabs.js +1 -0
- package/dist/_app_/components/hds/filter-bar.js +1 -0
- package/dist/components/hds/advanced-table/index.js +10 -1
- package/dist/components/hds/advanced-table/index.js.map +1 -1
- package/dist/components/hds/filter-bar/checkbox.js +40 -0
- package/dist/components/hds/filter-bar/checkbox.js.map +1 -0
- package/dist/components/hds/filter-bar/filter-group.js +173 -0
- package/dist/components/hds/filter-bar/filter-group.js.map +1 -0
- package/dist/components/hds/filter-bar/filters-dropdown.js +125 -0
- package/dist/components/hds/filter-bar/filters-dropdown.js.map +1 -0
- package/dist/components/hds/filter-bar/index.js +162 -0
- package/dist/components/hds/filter-bar/index.js.map +1 -0
- package/dist/components/hds/filter-bar/radio.js +40 -0
- package/dist/components/hds/filter-bar/radio.js.map +1 -0
- package/dist/components/hds/filter-bar/range.js +88 -0
- package/dist/components/hds/filter-bar/range.js.map +1 -0
- package/dist/components/hds/filter-bar/tabs/index.js +182 -0
- package/dist/components/hds/filter-bar/tabs/index.js.map +1 -0
- package/dist/components/hds/filter-bar/tabs/panel.js +67 -0
- package/dist/components/hds/filter-bar/tabs/panel.js.map +1 -0
- package/dist/components/hds/filter-bar/tabs/tab.js +99 -0
- package/dist/components/hds/filter-bar/tabs/tab.js.map +1 -0
- package/dist/components/hds/filter-bar/types.js +24 -0
- package/dist/components/hds/filter-bar/types.js.map +1 -0
- package/dist/components.js +10 -0
- package/dist/components.js.map +1 -1
- package/dist/styles/@hashicorp/design-system-components.css +198 -3
- package/dist/styles/@hashicorp/design-system-components.scss +1 -0
- package/dist/styles/components/advanced-table.scss +67 -1
- package/dist/styles/components/filter-bar.scss +155 -0
- package/package.json +10 -1
- package/translations/hds/components/advanced-table/en-us.yaml +3 -0
- package/translations/hds/components/filter-bar/en-us.yaml +3 -0
- package/translations/hds/components/filter-bar/filter-options/en-us.yaml +1 -0
- package/translations/hds/components/filter-bar/filters-dropdown/en-us.yaml +7 -0
- package/translations/hds/components/filter-bar/range/en-us.yaml +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/advanced-table/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { guidFor } from '@ember/object/internals';\nimport { service } from '@ember/service';\nimport { modifier } from 'ember-modifier';\nimport HdsAdvancedTableTableModel from './models/table.ts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nimport {\n HdsAdvancedTableDensityValues,\n HdsAdvancedTableVerticalAlignmentValues,\n} from './types.ts';\nimport type {\n HdsAdvancedTableColumn,\n HdsAdvancedTableDensities,\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableOnSelectionChangeSignature,\n HdsAdvancedTableSelectableRow,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableVerticalAlignment,\n HdsAdvancedTableModel,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderCallback,\n} from './types.ts';\nimport type HdsAdvancedTableColumnType from './models/column.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';\nimport type HdsAdvancedTableTd from './td.ts';\nimport type HdsAdvancedTableTh from './th.ts';\nimport type HdsAdvancedTableTr from './tr.ts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\nexport const DENSITIES: HdsAdvancedTableDensities[] = Object.values(\n HdsAdvancedTableDensityValues\n);\nexport const DEFAULT_DENSITY = HdsAdvancedTableDensityValues.Medium;\n\nexport const VALIGNMENTS: HdsAdvancedTableVerticalAlignment[] = Object.values(\n HdsAdvancedTableVerticalAlignmentValues\n);\nexport const DEFAULT_VALIGN = HdsAdvancedTableVerticalAlignmentValues.Top;\n\nexport const BORDER_WIDTH = 1;\n\nconst DEFAULT_SCROLL_DIMENSIONS = {\n bottom: '0px',\n height: '0px',\n left: '0px',\n right: '0px',\n width: '0px',\n};\n\nconst getScrollIndicatorDimensions = (\n scrollWrapper: HTMLDivElement,\n theadElement: HTMLDivElement,\n hasStickyFirstColumn: boolean,\n hasFirstColumnPxWidth: boolean,\n isStickyColumnPinned: boolean\n) => {\n const horizontalScrollBarHeight =\n scrollWrapper.offsetHeight - scrollWrapper.clientHeight;\n const verticalScrollBarWidth =\n scrollWrapper.offsetWidth - scrollWrapper.clientWidth;\n\n let leftOffset = 0;\n\n if (hasStickyFirstColumn) {\n const stickyColumnHeaders = theadElement.querySelectorAll(\n '.hds-advanced-table__th--is-sticky-column'\n );\n\n stickyColumnHeaders?.forEach((el) => {\n // querySelectorAll returns Elements, which don't have offsetWidth\n // need to use offsetWidth to account for the cell borders\n const elAsHTMLElement = el as HTMLElement;\n leftOffset += elAsHTMLElement.offsetWidth;\n });\n\n // offsets the left: -1px position if there are multiple sticky columns or the first column has a fixed pixel width\n if (stickyColumnHeaders.length > 1 || hasFirstColumnPxWidth) {\n leftOffset -= 1;\n }\n\n // offsets the left: -1px position if the sticky column is already pinned when the scroll indicator is calculated\n if (isStickyColumnPinned) {\n leftOffset -= 1;\n }\n }\n\n return {\n bottom: `${horizontalScrollBarHeight}px`,\n height: `${scrollWrapper.offsetHeight - horizontalScrollBarHeight}px`,\n left: `${leftOffset}px`,\n right: `${verticalScrollBarWidth}px`,\n width: `${scrollWrapper.offsetWidth - verticalScrollBarWidth}px`,\n };\n};\n\nconst getStickyColumnLeftOffset = (\n theadElement: HTMLDivElement,\n hasRowSelection: boolean,\n isStickyColumnPinned: boolean\n) => {\n // if there is no select checkbox column, the sticky column is all the way to the left\n if (!hasRowSelection) return '0px';\n\n const selectableCell = theadElement.querySelector(\n '.hds-advanced-table__th--is-selectable'\n ) as HTMLElement;\n\n let leftOffset = selectableCell?.offsetWidth ?? 0;\n\n // if the sticky column is pinned when the offset is calculated, we need to account for the increased width of the border\n if (isStickyColumnPinned && leftOffset > 0) {\n leftOffset -= 2;\n }\n\n return `${leftOffset}px`;\n};\n\nexport interface HdsAdvancedTableSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n caption?: string;\n columns: HdsAdvancedTableColumn[];\n columnOrder?: string[];\n density?: HdsAdvancedTableDensities;\n identityKey?: string;\n isSelectable?: boolean;\n isStriped?: boolean;\n model: HdsAdvancedTableModel;\n reorderedMessageText?: string;\n selectionAriaLabelSuffix?: string;\n sortBy?: string;\n selectableColumnKey?: string;\n sortedMessageText?: string;\n sortOrder?: HdsAdvancedTableThSortOrder;\n valign?: HdsAdvancedTableVerticalAlignment;\n hasReorderableColumns?: boolean;\n hasResizableColumns?: boolean;\n hasStickyHeader?: boolean;\n hasStickyFirstColumn?: boolean;\n childrenKey?: string;\n maxHeight?: string;\n onColumnReorder?: HdsAdvancedTableColumnReorderCallback;\n onColumnResize?: (columnKey: string, newWidth?: string) => void;\n onSelectionChange?: (\n selection: HdsAdvancedTableOnSelectionChangeSignature\n ) => void;\n onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;\n };\n Blocks: {\n body?: [\n {\n Td?: WithBoundArgs<typeof HdsAdvancedTableTd, 'align'>;\n Tr?: WithBoundArgs<\n typeof HdsAdvancedTableTr,\n | 'selectionScope'\n | 'isLastRow'\n | 'isSelectable'\n | 'onSelectionChange'\n | 'didInsert'\n | 'willDestroy'\n | 'selectionAriaLabelSuffix'\n | 'hasStickyColumn'\n | 'isStickyColumnPinned'\n | 'isParentRow'\n | 'depth'\n | 'displayRow'\n >;\n Th?: WithBoundArgs<\n typeof HdsAdvancedTableTh,\n | 'depth'\n | 'isExpandable'\n | 'isExpanded'\n | 'newLabel'\n | 'parentId'\n | 'scope'\n | 'isStickyColumn'\n | 'isStickyColumnPinned'\n | 'onClickToggle'\n >;\n data?: Record<string, unknown>;\n rowIndex?: number | string;\n isOpen?: HdsAdvancedTableExpandState;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTable extends Component<HdsAdvancedTableSignature> {\n @service hdsIntl!: HdsIntlService;\n\n @tracked\n private _selectAllCheckbox?: HdsFormCheckboxBaseSignature['Element'] =\n undefined;\n @tracked private _isSelectAllCheckboxSelected?: boolean = undefined;\n @tracked private _tableHeight = 0;\n private _selectableRows: HdsAdvancedTableSelectableRow[] = [];\n private _captionId = 'caption-' + guidFor(this);\n private _tableModel!: HdsAdvancedTableTableModel;\n private _scrollHandler!: (event: Event) => void;\n private _resizeObserver!: ResizeObserver;\n private _theadElement!: HTMLDivElement;\n private _scrollWrapperElement!: HTMLDivElement;\n\n @tracked scrollIndicatorDimensions = DEFAULT_SCROLL_DIMENSIONS;\n @tracked isStickyColumnPinned = false;\n @tracked isStickyHeaderPinned = false;\n @tracked hasPinnedFirstColumn: boolean | undefined = undefined;\n @tracked reorderedMessageText = '';\n @tracked showScrollIndicatorLeft = false;\n @tracked showScrollIndicatorRight = false;\n @tracked showScrollIndicatorTop = false;\n @tracked showScrollIndicatorBottom = false;\n @tracked stickyColumnOffset = '0px';\n\n constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']) {\n super(owner, args);\n\n const {\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n hasStickyFirstColumn,\n onSort,\n } = args;\n\n this._tableModel = new HdsAdvancedTableTableModel({\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n onColumnReorder: this._onColumnReorder.bind(this),\n onSort,\n });\n\n this._runAssertions();\n\n if (hasStickyFirstColumn) {\n this.hasPinnedFirstColumn = true;\n }\n }\n\n get identityKey(): string | undefined {\n // we have to provide a way for the consumer to pass undefined because Ember tries to interpret undefined as missing an arg and therefore falls back to the default\n if (this.args.identityKey === 'none') {\n return undefined;\n } else {\n return this.args.identityKey ?? '@identity';\n }\n }\n\n get childrenKey(): string {\n const { childrenKey = 'children' } = this.args;\n\n return childrenKey;\n }\n\n get hasStickyFirstColumn(): boolean | undefined {\n // The user-controlled `hasPinnedFirstColumn` variable takes precedence over the model's `hasStickyFirstColumn` property.\n if (this.hasPinnedFirstColumn !== undefined) {\n return this.hasPinnedFirstColumn;\n } else if (this.args.hasStickyFirstColumn === false) {\n return this.args.hasStickyFirstColumn;\n }\n\n return undefined;\n }\n\n get hasScrollIndicator(): boolean {\n if (this.hasStickyFirstColumn) {\n return true;\n }\n\n return false;\n }\n\n get sortedMessageText(): string {\n const { sortedMessageText } = this.args;\n const { sortBy, sortOrder } = this._tableModel;\n\n if (sortedMessageText !== undefined) {\n return sortedMessageText;\n } else if (sortBy !== undefined && sortOrder !== undefined) {\n // we should allow the user to define a custom value here (e.g., for i18n) - tracked with HDS-965\n return `Sorted by ${sortBy} ${sortOrder}ending`;\n } else {\n return '';\n }\n }\n\n get isSelectable(): boolean {\n const { isSelectable = false } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n assert(\n '@isSelectable must not be true if there are nested rows.',\n !isSelectable\n );\n return isSelectable;\n }\n\n return isSelectable;\n }\n\n get isStriped(): boolean {\n const { isStriped = false } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n assert(\n '@isStriped must not be true if there are nested rows.',\n !isStriped\n );\n return isStriped;\n }\n\n return isStriped;\n }\n\n get density(): HdsAdvancedTableDensities {\n const { density = DEFAULT_DENSITY } = this.args;\n\n assert(\n `@density for \"Hds::Table\" must be one of the following: ${DENSITIES.join(\n ', '\n )}; received: ${density}`,\n DENSITIES.includes(density)\n );\n\n return density;\n }\n\n get hasStickyHeader(): boolean {\n if (this.args.maxHeight && this.args.hasStickyHeader !== false) {\n return true;\n } else if (this.args.hasStickyHeader && !this.args.maxHeight) {\n assert('Must set @maxHeight to use @hasStickyHeader.', false);\n }\n\n return false;\n }\n\n get valign(): HdsAdvancedTableVerticalAlignment {\n const { valign = DEFAULT_VALIGN } = this.args;\n\n assert(\n `@valign for \"Hds::Table\" must be one of the following: ${VALIGNMENTS.join(\n ', '\n )}; received: ${valign}`,\n VALIGNMENTS.includes(valign)\n );\n\n return valign;\n }\n\n // returns the grid-template-columns CSS attribute for the grid\n get gridTemplateColumns(): string {\n const { isSelectable } = this.args;\n const { orderedColumns } = this._tableModel;\n\n // if there is a select checkbox, the first column has a 'min-content' width to hug the checkbox content\n let style = isSelectable ? 'min-content ' : '';\n\n for (let i = 0; i < orderedColumns.length; i++) {\n style += ` ${orderedColumns[i]!.appliedWidth}`;\n }\n\n return style;\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table'];\n\n if (this.isStriped) {\n classes.push('hds-advanced-table--striped');\n }\n\n if (this.density) {\n classes.push(`hds-advanced-table--density-${this.density}`);\n }\n\n if (this.valign) {\n classes.push(`hds-advanced-table--valign-${this.valign}`);\n }\n\n if (this._tableModel.hasRowsWithChildren) {\n classes.push(`hds-advanced-table--nested`);\n }\n\n return classes.join(' ');\n }\n\n get theadClassNames(): string {\n const classes = ['hds-advanced-table__thead'];\n\n if (this.hasStickyHeader) {\n classes.push('hds-advanced-table__thead--sticky');\n }\n\n if (this.isStickyHeaderPinned) {\n classes.push('hds-advanced-table__thead--is-pinned');\n }\n\n if (this._tableModel.hasResizableColumns) {\n classes.push('hds-advanced-table__thead--has-resizable-columns');\n }\n\n return classes.join(' ');\n }\n\n private _registerGridElement = modifier((element: HTMLDivElement) => {\n this._tableModel.gridElement = element;\n });\n\n private _registerThElement = modifier(\n (element: HTMLDivElement, [column]: [HdsAdvancedTableColumnType]) => {\n if (column === undefined) {\n return;\n }\n\n column.thElement = element;\n }\n );\n\n private _setUpScrollWrapper = modifier((element: HTMLDivElement) => {\n this._scrollWrapperElement = element;\n\n const updateHorizontalScrollIndicators = () => {\n this.showScrollIndicatorRight = element.clientWidth < element.scrollWidth;\n };\n\n this._scrollHandler = () => {\n this._updateScrollIndicators(element);\n };\n\n element.addEventListener('scroll', this._scrollHandler);\n\n const updateMeasurements = () => {\n this._tableHeight = element.offsetHeight;\n\n const hasFirstColumnPxWidth =\n this._tableModel.columns[0]?.pxWidth !== undefined;\n\n this.scrollIndicatorDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyFirstColumn ? true : false,\n hasFirstColumnPxWidth,\n this.isStickyColumnPinned\n );\n\n if (this.hasStickyFirstColumn) {\n this.stickyColumnOffset = getStickyColumnLeftOffset(\n this._theadElement,\n isSelectable,\n this.isStickyColumnPinned\n );\n }\n };\n\n const { isSelectable = false } = this.args;\n\n this._resizeObserver = new ResizeObserver((entries) => {\n entries.forEach(() => {\n updateMeasurements();\n updateHorizontalScrollIndicators();\n });\n });\n\n this._resizeObserver.observe(element);\n\n updateMeasurements();\n\n // on render check if should show right scroll indicator\n updateHorizontalScrollIndicators();\n\n // on render check if should show bottom scroll indicator\n if (element.clientHeight < element.scrollHeight) {\n this.showScrollIndicatorBottom = true;\n }\n\n return () => {\n element.removeEventListener('scroll', this._scrollHandler);\n this._resizeObserver.disconnect();\n };\n });\n\n private _runAssertions() {\n const {\n columns,\n hasReorderableColumns,\n hasResizableColumns,\n hasStickyFirstColumn,\n } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n const sortableColumns = columns.filter((column) => column.isSortable);\n const sortableColumnLabels = sortableColumns.map(\n (column) => column.label\n );\n\n assert(\n 'Cannot have reorderable columns if there are nested rows.',\n !hasReorderableColumns\n );\n\n assert(\n `Cannot have sortable columns if there are nested rows. Sortable columns are ${sortableColumnLabels.toString()}`,\n sortableColumns.length === 0\n );\n\n assert(\n 'Cannot have a sticky first column if there are nested rows.',\n hasStickyFirstColumn === undefined\n );\n\n assert(\n `Cannot have resizable columns if there are nested rows.`,\n !hasResizableColumns\n );\n }\n\n if (hasReorderableColumns) {\n assert(\n 'Cannot have both reorderable columns and a sticky first column.',\n hasStickyFirstColumn === undefined\n );\n }\n }\n\n private _setUpThead = modifier((element: HTMLDivElement) => {\n this._theadElement = element;\n });\n\n private _onColumnReorder: HdsAdvancedTableColumnReorderCallback = ({\n column,\n newOrder,\n insertedAt,\n }) => {\n const { reorderedMessageText } = this.args;\n\n if (reorderedMessageText !== undefined) {\n this.reorderedMessageText = reorderedMessageText;\n } else {\n const newPosition = insertedAt + 1;\n const translatedReorderedMessageText = this.hdsIntl.t(\n 'hds.advanced-table.reordered-message',\n {\n default: `Moved ${column.label} column to position ${newPosition}`,\n columnLabel: column.label,\n newPosition,\n }\n );\n\n this.reorderedMessageText = translatedReorderedMessageText;\n }\n\n this.args.onColumnReorder?.({\n column,\n newOrder,\n insertedAt,\n });\n };\n\n onSelectionChangeCallback(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n const { onSelectionChange } = this.args;\n\n if (typeof onSelectionChange !== 'function') return;\n\n onSelectionChange({\n selectionKey: selectionKey,\n selectionCheckboxElement: checkbox,\n selectedRowsKeys: this._selectableRows.reduce<string[]>((acc, row) => {\n if (row.checkbox.checked) {\n acc.push(row.selectionKey);\n }\n return acc;\n }, []),\n selectableRowsStates: this._selectableRows.reduce(\n (\n acc: { selectionKey: string; isSelected: boolean | undefined }[],\n row\n ) => {\n acc.push({\n selectionKey: row.selectionKey,\n isSelected: row.checkbox.checked,\n });\n return acc;\n },\n []\n ),\n });\n }\n\n @action\n setupTableModelData(): void {\n const { columns, model, sortBy, sortOrder } = this.args;\n\n this._tableModel.setupData({\n columns,\n model,\n sortBy,\n sortOrder,\n });\n }\n\n @action\n updateTableModelColumnOrder(): void {\n if (this.args.columnOrder === undefined) {\n return;\n }\n\n this._tableModel.columnOrder = this.args.columnOrder;\n }\n\n @action\n onSelectionAllChange(): void {\n this._selectableRows.forEach((row) => {\n row.checkbox.checked = this._selectAllCheckbox?.checked ?? false;\n });\n this._isSelectAllCheckboxSelected =\n this._selectAllCheckbox?.checked ?? false;\n this.onSelectionChangeCallback(this._selectAllCheckbox, 'all');\n }\n\n @action\n onSelectionRowChange(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n this.setSelectAllState();\n this.onSelectionChangeCallback(checkbox, selectionKey);\n }\n\n @action\n didInsertSelectAllCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element']\n ): void {\n this._selectAllCheckbox = checkbox;\n }\n\n @action\n willDestroySelectAllCheckbox(): void {\n this._selectAllCheckbox = undefined;\n }\n\n @action\n didInsertRowCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n if (selectionKey) {\n this._selectableRows.push({ selectionKey, checkbox });\n }\n this.setSelectAllState();\n }\n\n @action\n willDestroyRowCheckbox(selectionKey?: string): void {\n this._selectableRows = this._selectableRows.filter(\n (row) => row.selectionKey !== selectionKey\n );\n this.setSelectAllState();\n }\n\n @action\n setSelectAllState(): void {\n if (this._selectAllCheckbox) {\n const selectableRowsCount = this._selectableRows.length;\n const selectedRowsCount = this._selectableRows.filter(\n (row) => row.checkbox.checked\n ).length;\n\n this._selectAllCheckbox.checked =\n selectedRowsCount === selectableRowsCount;\n this._selectAllCheckbox.indeterminate =\n selectedRowsCount > 0 && selectedRowsCount < selectableRowsCount;\n this._isSelectAllCheckboxSelected = this._selectAllCheckbox.checked;\n }\n }\n\n private _updateScrollIndicators(element: HTMLElement): void {\n // 6px as a buffer so the shadow doesn't appear over the border radius on the edge of the table\n const SCROLL_BUFFER = 6;\n\n // left scroll indicator and sticky column styles\n if (element.scrollLeft > SCROLL_BUFFER) {\n if (this.hasStickyFirstColumn) {\n this.isStickyColumnPinned = true;\n }\n if (!this.showScrollIndicatorLeft) {\n this.showScrollIndicatorLeft = true;\n }\n } else if (element.scrollLeft === 0 && this.showScrollIndicatorLeft) {\n this.isStickyColumnPinned = false;\n this.showScrollIndicatorLeft = false;\n }\n\n // the right edge is how far the user can scroll, which is the full width of the table - the visible section of the table (also subtract the buffer)\n const rightEdge = element.scrollWidth - element.clientWidth - SCROLL_BUFFER;\n\n // right scroll indicator\n if (element.scrollLeft < rightEdge) {\n this.showScrollIndicatorRight = true;\n } else {\n this.showScrollIndicatorRight = false;\n }\n\n // sticky header\n if (element.scrollTop > 0) {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = true;\n }\n this.showScrollIndicatorTop = true;\n } else {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = false;\n }\n this.showScrollIndicatorTop = false;\n }\n\n // the bottom edge is how far the user can scroll, which is the full height of the table - the visible section of the table (also subtract the buffer)\n const bottomEdge =\n element.scrollHeight - element.clientHeight - SCROLL_BUFFER;\n\n // bottom scroll indicator\n if (element.scrollTop < bottomEdge) {\n this.showScrollIndicatorBottom = true;\n } else {\n this.showScrollIndicatorBottom = false;\n }\n }\n\n private _onPinFirstColumn = (): void => {\n this.hasPinnedFirstColumn = this.hasPinnedFirstColumn ? false : true;\n // we need to retrigger the scroll indicator updates if the pinned state is changed when the table is already scrolled\n this._updateScrollIndicators(this._scrollWrapperElement);\n };\n\n private _isStickyColumn = (\n column: HdsAdvancedTableColumnType\n ): boolean | undefined => {\n if (column.isFirst && this.hasStickyFirstColumn !== undefined) {\n return this.hasStickyFirstColumn;\n }\n return undefined;\n };\n}\n"],"names":["DENSITIES","Object","values","HdsAdvancedTableDensityValues","DEFAULT_DENSITY","Medium","VALIGNMENTS","HdsAdvancedTableVerticalAlignmentValues","DEFAULT_VALIGN","Top","BORDER_WIDTH","DEFAULT_SCROLL_DIMENSIONS","bottom","height","left","right","width","getScrollIndicatorDimensions","scrollWrapper","theadElement","hasStickyFirstColumn","hasFirstColumnPxWidth","isStickyColumnPinned","horizontalScrollBarHeight","offsetHeight","clientHeight","verticalScrollBarWidth","offsetWidth","clientWidth","leftOffset","stickyColumnHeaders","querySelectorAll","forEach","el","elAsHTMLElement","length","getStickyColumnLeftOffset","hasRowSelection","selectableCell","querySelector","HdsAdvancedTable","Component","g","prototype","service","i","void 0","tracked","undefined","_selectableRows","_captionId","guidFor","_tableModel","_scrollHandler","_resizeObserver","_theadElement","_scrollWrapperElement","constructor","owner","args","model","columns","columnOrder","childrenKey","hasReorderableColumns","hasResizableColumns","sortBy","sortOrder","onSort","HdsAdvancedTableTableModel","onColumnReorder","_onColumnReorder","bind","_runAssertions","hasPinnedFirstColumn","identityKey","hasScrollIndicator","sortedMessageText","isSelectable","hasRowsWithChildren","assert","isStriped","density","join","includes","hasStickyHeader","maxHeight","valign","gridTemplateColumns","orderedColumns","style","appliedWidth","classNames","classes","push","theadClassNames","isStickyHeaderPinned","_registerGridElement","modifier","element","gridElement","_registerThElement","column","thElement","_setUpScrollWrapper","updateHorizontalScrollIndicators","showScrollIndicatorRight","scrollWidth","_updateScrollIndicators","addEventListener","updateMeasurements","_tableHeight","pxWidth","scrollIndicatorDimensions","stickyColumnOffset","ResizeObserver","entries","observe","scrollHeight","showScrollIndicatorBottom","removeEventListener","disconnect","sortableColumns","filter","isSortable","sortableColumnLabels","map","label","toString","_setUpThead","newOrder","insertedAt","reorderedMessageText","newPosition","translatedReorderedMessageText","hdsIntl","t","default","columnLabel","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","setupTableModelData","setupData","n","action","updateTableModelColumnOrder","onSelectionAllChange","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","selectableRowsCount","selectedRowsCount","indeterminate","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","rightEdge","scrollTop","showScrollIndicatorTop","bottomEdge","_onPinFirstColumn","_isStickyColumn","isFirst","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;;AAoCO,MAAMA,SAAsC,GAAGC,MAAM,CAACC,MAAM,CACjEC,6BACF;AACO,MAAMC,eAAe,GAAGD,6BAA6B,CAACE;AAEtD,MAAMC,WAAgD,GAAGL,MAAM,CAACC,MAAM,CAC3EK,uCACF;AACO,MAAMC,cAAc,GAAGD,uCAAuC,CAACE;AAE/D,MAAMC,YAAY,GAAG;AAE5B,MAAMC,yBAAyB,GAAG;AAChCC,EAAAA,MAAM,EAAE,KAAK;AACbC,EAAAA,MAAM,EAAE,KAAK;AACbC,EAAAA,IAAI,EAAE,KAAK;AACXC,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,4BAA4B,GAAGA,CACnCC,aAA6B,EAC7BC,YAA4B,EAC5BC,oBAA6B,EAC7BC,qBAA8B,EAC9BC,oBAA6B,KAC1B;EACH,MAAMC,yBAAyB,GAC7BL,aAAa,CAACM,YAAY,GAAGN,aAAa,CAACO,YAAY;EACzD,MAAMC,sBAAsB,GAC1BR,aAAa,CAACS,WAAW,GAAGT,aAAa,CAACU,WAAW;EAEvD,IAAIC,UAAU,GAAG,CAAC;AAElB,EAAA,IAAIT,oBAAoB,EAAE;AACxB,IAAA,MAAMU,mBAAmB,GAAGX,YAAY,CAACY,gBAAgB,CACvD,2CACF,CAAC;AAEDD,IAAAA,mBAAmB,EAAEE,OAAO,CAAEC,EAAE,IAAK;AACnC;AACA;MACA,MAAMC,eAAe,GAAGD,EAAiB;MACzCJ,UAAU,IAAIK,eAAe,CAACP,WAAW;AAC3C,IAAA,CAAC,CAAC;;AAEF;AACA,IAAA,IAAIG,mBAAmB,CAACK,MAAM,GAAG,CAAC,IAAId,qBAAqB,EAAE;AAC3DQ,MAAAA,UAAU,IAAI,CAAC;AACjB,IAAA;;AAEA;AACA,IAAA,IAAIP,oBAAoB,EAAE;AACxBO,MAAAA,UAAU,IAAI,CAAC;AACjB,IAAA;AACF,EAAA;EAEA,OAAO;IACLjB,MAAM,EAAE,CAAA,EAAGW,yBAAyB,CAAA,EAAA,CAAI;AACxCV,IAAAA,MAAM,EAAE,CAAA,EAAGK,aAAa,CAACM,YAAY,GAAGD,yBAAyB,CAAA,EAAA,CAAI;IACrET,IAAI,EAAE,CAAA,EAAGe,UAAU,CAAA,EAAA,CAAI;IACvBd,KAAK,EAAE,CAAA,EAAGW,sBAAsB,CAAA,EAAA,CAAI;AACpCV,IAAAA,KAAK,EAAE,CAAA,EAAGE,aAAa,CAACS,WAAW,GAAGD,sBAAsB,CAAA,EAAA;GAC7D;AACH,CAAC;AAED,MAAMU,yBAAyB,GAAGA,CAChCjB,YAA4B,EAC5BkB,eAAwB,EACxBf,oBAA6B,KAC1B;AACH;AACA,EAAA,IAAI,CAACe,eAAe,EAAE,OAAO,KAAK;AAElC,EAAA,MAAMC,cAAc,GAAGnB,YAAY,CAACoB,aAAa,CAC/C,wCACF,CAAgB;AAEhB,EAAA,IAAIV,UAAU,GAAGS,cAAc,EAAEX,WAAW,IAAI,CAAC;;AAEjD;AACA,EAAA,IAAIL,oBAAoB,IAAIO,UAAU,GAAG,CAAC,EAAE;AAC1CA,IAAAA,UAAU,IAAI,CAAC;AACjB,EAAA;EAEA,OAAO,CAAA,EAAGA,UAAU,CAAA,EAAA,CAAI;AAC1B,CAAC;AAyEc,MAAMW,gBAAgB,SAASC,SAAS,CAA4B;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAChFC,OAAO,CAAA,CAAA;AAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,oBAAA,EAAA,CAEPI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAENC,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,mBAAA,IAAAH,CAAA,CAAA,IAAA,EAAA,oBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,8BAAA,EAAA,CACVI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAkDC,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,6BAAA,IAAAH,CAAA,CAAA,IAAA,EAAA,8BAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,cAAA,EAAA,CAClEI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,CAAC;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,aAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,cAAA,CAAA,EAAAC,MAAA;AACzBG,EAAAA,eAAe,GAAoC,EAAE;AACrDC,EAAAA,UAAU,GAAG,UAAU,GAAGC,OAAO,CAAC,IAAI,CAAC;EACvCC,WAAW;EACXC,cAAc;EACdC,eAAe;EACfC,aAAa;EACbC,qBAAqB;AAAkB,EAAA;IAAAd,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,2BAAA,EAAA,CAE9CI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6BpC,yBAAyB;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,0BAAA,IAAAkC,CAAA,CAAA,IAAA,EAAA,2BAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CAC7DI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,qBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CACpCI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,qBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CACpCI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6CC,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,qBAAA,IAAAH,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CAC7DI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,EAAE;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,qBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,yBAAA,EAAA,CACjCI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA2B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,wBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,yBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,0BAAA,EAAA,CACvCI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA4B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,yBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,0BAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,wBAAA,EAAA,CACxCI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA0B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,uBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,wBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,2BAAA,EAAA,CACtCI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,0BAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,2BAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,oBAAA,EAAA,CACzCI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAsB,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,mBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,oBAAA,CAAA,EAAAC,MAAA;AAEnCW,EAAAA,WAAWA,CAACC,KAAY,EAAEC,IAAuC,EAAE;AACjE,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC;IAElB,MAAM;MACJC,KAAK;MACLC,OAAO;MACPC,WAAW;MACXC,WAAW;MACXC,qBAAqB;MACrBC,mBAAmB;MACnBC,MAAM;MACNC,SAAS;MACT/C,oBAAoB;AACpBgD,MAAAA;AACF,KAAC,GAAGT,IAAI;AAER,IAAA,IAAI,CAACP,WAAW,GAAG,IAAIiB,0BAA0B,CAAC;MAChDT,KAAK;MACLC,OAAO;MACPC,WAAW;MACXC,WAAW;MACXC,qBAAqB;MACrBC,mBAAmB;MACnBC,MAAM;MACNC,SAAS;MACTG,eAAe,EAAE,IAAI,CAACC,gBAAgB,CAACC,IAAI,CAAC,IAAI,CAAC;AACjDJ,MAAAA;AACF,KAAC,CAAC;IAEF,IAAI,CAACK,cAAc,EAAE;AAErB,IAAA,IAAIrD,oBAAoB,EAAE;MACxB,IAAI,CAACsD,oBAAoB,GAAG,IAAI;AAClC,IAAA;AACF,EAAA;EAEA,IAAIC,WAAWA,GAAuB;AACpC;AACA,IAAA,IAAI,IAAI,CAAChB,IAAI,CAACgB,WAAW,KAAK,MAAM,EAAE;AACpC,MAAA,OAAO3B,SAAS;AAClB,IAAA,CAAC,MAAM;AACL,MAAA,OAAO,IAAI,CAACW,IAAI,CAACgB,WAAW,IAAI,WAAW;AAC7C,IAAA;AACF,EAAA;EAEA,IAAIZ,WAAWA,GAAW;IACxB,MAAM;AAAEA,MAAAA,WAAW,GAAG;KAAY,GAAG,IAAI,CAACJ,IAAI;AAE9C,IAAA,OAAOI,WAAW;AACpB,EAAA;EAEA,IAAI3C,oBAAoBA,GAAwB;AAC9C;AACA,IAAA,IAAI,IAAI,CAACsD,oBAAoB,KAAK1B,SAAS,EAAE;MAC3C,OAAO,IAAI,CAAC0B,oBAAoB;IAClC,CAAC,MAAM,IAAI,IAAI,CAACf,IAAI,CAACvC,oBAAoB,KAAK,KAAK,EAAE;AACnD,MAAA,OAAO,IAAI,CAACuC,IAAI,CAACvC,oBAAoB;AACvC,IAAA;AAEA,IAAA,OAAO4B,SAAS;AAClB,EAAA;EAEA,IAAI4B,kBAAkBA,GAAY;IAChC,IAAI,IAAI,CAACxD,oBAAoB,EAAE;AAC7B,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,OAAO,KAAK;AACd,EAAA;EAEA,IAAIyD,iBAAiBA,GAAW;IAC9B,MAAM;AAAEA,MAAAA;KAAmB,GAAG,IAAI,CAAClB,IAAI;IACvC,MAAM;MAAEO,MAAM;AAAEC,MAAAA;KAAW,GAAG,IAAI,CAACf,WAAW;IAE9C,IAAIyB,iBAAiB,KAAK7B,SAAS,EAAE;AACnC,MAAA,OAAO6B,iBAAiB;IAC1B,CAAC,MAAM,IAAIX,MAAM,KAAKlB,SAAS,IAAImB,SAAS,KAAKnB,SAAS,EAAE;AAC1D;AACA,MAAA,OAAO,CAAA,UAAA,EAAakB,MAAM,CAAA,CAAA,EAAIC,SAAS,CAAA,MAAA,CAAQ;AACjD,IAAA,CAAC,MAAM;AACL,MAAA,OAAO,EAAE;AACX,IAAA;AACF,EAAA;EAEA,IAAIW,YAAYA,GAAY;IAC1B,MAAM;AAAEA,MAAAA,YAAY,GAAG;KAAO,GAAG,IAAI,CAACnB,IAAI;AAE1C,IAAA,IAAI,IAAI,CAACP,WAAW,CAAC2B,mBAAmB,EAAE;AACxCC,MAAAA,MAAM,CACJ,0DAA0D,EAC1D,CAACF,YACH,CAAC;AACD,MAAA,OAAOA,YAAY;AACrB,IAAA;AAEA,IAAA,OAAOA,YAAY;AACrB,EAAA;EAEA,IAAIG,SAASA,GAAY;IACvB,MAAM;AAAEA,MAAAA,SAAS,GAAG;KAAO,GAAG,IAAI,CAACtB,IAAI;AAEvC,IAAA,IAAI,IAAI,CAACP,WAAW,CAAC2B,mBAAmB,EAAE;AACxCC,MAAAA,MAAM,CACJ,uDAAuD,EACvD,CAACC,SACH,CAAC;AACD,MAAA,OAAOA,SAAS;AAClB,IAAA;AAEA,IAAA,OAAOA,SAAS;AAClB,EAAA;EAEA,IAAIC,OAAOA,GAA8B;IACvC,MAAM;AAAEA,MAAAA,OAAO,GAAG9E;KAAiB,GAAG,IAAI,CAACuD,IAAI;AAE/CqB,IAAAA,MAAM,CACJ,CAAA,wDAAA,EAA2DhF,SAAS,CAACmF,IAAI,CACvE,IACF,CAAC,CAAA,YAAA,EAAeD,OAAO,CAAA,CAAE,EACzBlF,SAAS,CAACoF,QAAQ,CAACF,OAAO,CAC5B,CAAC;AAED,IAAA,OAAOA,OAAO;AAChB,EAAA;EAEA,IAAIG,eAAeA,GAAY;AAC7B,IAAA,IAAI,IAAI,CAAC1B,IAAI,CAAC2B,SAAS,IAAI,IAAI,CAAC3B,IAAI,CAAC0B,eAAe,KAAK,KAAK,EAAE;AAC9D,MAAA,OAAO,IAAI;AACb,IAAA,CAAC,MAAM,IAAI,IAAI,CAAC1B,IAAI,CAAC0B,eAAe,IAAI,CAAC,IAAI,CAAC1B,IAAI,CAAC2B,SAAS,EAAE;AAC5DN,MAAAA,MAAM,CAAC,8CAA8C,EAAE,KAAK,CAAC;AAC/D,IAAA;AAEA,IAAA,OAAO,KAAK;AACd,EAAA;EAEA,IAAIO,MAAMA,GAAsC;IAC9C,MAAM;AAAEA,MAAAA,MAAM,GAAG/E;KAAgB,GAAG,IAAI,CAACmD,IAAI;AAE7CqB,IAAAA,MAAM,CACJ,CAAA,uDAAA,EAA0D1E,WAAW,CAAC6E,IAAI,CACxE,IACF,CAAC,CAAA,YAAA,EAAeI,MAAM,CAAA,CAAE,EACxBjF,WAAW,CAAC8E,QAAQ,CAACG,MAAM,CAC7B,CAAC;AAED,IAAA,OAAOA,MAAM;AACf,EAAA;;AAEA;EACA,IAAIC,mBAAmBA,GAAW;IAChC,MAAM;AAAEV,MAAAA;KAAc,GAAG,IAAI,CAACnB,IAAI;IAClC,MAAM;AAAE8B,MAAAA;KAAgB,GAAG,IAAI,CAACrC,WAAW;;AAE3C;AACA,IAAA,IAAIsC,KAAK,GAAGZ,YAAY,GAAG,cAAc,GAAG,EAAE;AAE9C,IAAA,KAAK,IAAIjC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4C,cAAc,CAACtD,MAAM,EAAEU,CAAC,EAAE,EAAE;MAC9C6C,KAAK,IAAI,IAAID,cAAc,CAAC5C,CAAC,CAAC,CAAE8C,YAAY,CAAA,CAAE;AAChD,IAAA;AAEA,IAAA,OAAOD,KAAK;AACd,EAAA;EAEA,IAAIE,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,oBAAoB,CAAC;IAEtC,IAAI,IAAI,CAACZ,SAAS,EAAE;AAClBY,MAAAA,OAAO,CAACC,IAAI,CAAC,6BAA6B,CAAC;AAC7C,IAAA;IAEA,IAAI,IAAI,CAACZ,OAAO,EAAE;MAChBW,OAAO,CAACC,IAAI,CAAC,CAAA,4BAAA,EAA+B,IAAI,CAACZ,OAAO,EAAE,CAAC;AAC7D,IAAA;IAEA,IAAI,IAAI,CAACK,MAAM,EAAE;MACfM,OAAO,CAACC,IAAI,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAACP,MAAM,EAAE,CAAC;AAC3D,IAAA;AAEA,IAAA,IAAI,IAAI,CAACnC,WAAW,CAAC2B,mBAAmB,EAAE;AACxCc,MAAAA,OAAO,CAACC,IAAI,CAAC,CAAA,0BAAA,CAA4B,CAAC;AAC5C,IAAA;AAEA,IAAA,OAAOD,OAAO,CAACV,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAA;EAEA,IAAIY,eAAeA,GAAW;AAC5B,IAAA,MAAMF,OAAO,GAAG,CAAC,2BAA2B,CAAC;IAE7C,IAAI,IAAI,CAACR,eAAe,EAAE;AACxBQ,MAAAA,OAAO,CAACC,IAAI,CAAC,mCAAmC,CAAC;AACnD,IAAA;IAEA,IAAI,IAAI,CAACE,oBAAoB,EAAE;AAC7BH,MAAAA,OAAO,CAACC,IAAI,CAAC,sCAAsC,CAAC;AACtD,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC1C,WAAW,CAACa,mBAAmB,EAAE;AACxC4B,MAAAA,OAAO,CAACC,IAAI,CAAC,kDAAkD,CAAC;AAClE,IAAA;AAEA,IAAA,OAAOD,OAAO,CAACV,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAA;AAEQc,EAAAA,oBAAoB,GAAGC,QAAQ,CAAEC,OAAuB,IAAK;AACnE,IAAA,IAAI,CAAC/C,WAAW,CAACgD,WAAW,GAAGD,OAAO;AACxC,EAAA,CAAC,CAAC;EAEME,kBAAkB,GAAGH,QAAQ,CACnC,CAACC,OAAuB,EAAE,CAACG,MAAM,CAA+B,KAAK;IACnE,IAAIA,MAAM,KAAKtD,SAAS,EAAE;AACxB,MAAA;AACF,IAAA;IAEAsD,MAAM,CAACC,SAAS,GAAGJ,OAAO;AAC5B,EAAA,CACF,CAAC;AAEOK,EAAAA,mBAAmB,GAAGN,QAAQ,CAAEC,OAAuB,IAAK;IAClE,IAAI,CAAC3C,qBAAqB,GAAG2C,OAAO;IAEpC,MAAMM,gCAAgC,GAAGA,MAAM;MAC7C,IAAI,CAACC,wBAAwB,GAAGP,OAAO,CAACvE,WAAW,GAAGuE,OAAO,CAACQ,WAAW;IAC3E,CAAC;IAED,IAAI,CAACtD,cAAc,GAAG,MAAM;AAC1B,MAAA,IAAI,CAACuD,uBAAuB,CAACT,OAAO,CAAC;IACvC,CAAC;IAEDA,OAAO,CAACU,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAACxD,cAAc,CAAC;IAEvD,MAAMyD,kBAAkB,GAAGA,MAAM;AAC/B,MAAA,IAAI,CAACC,YAAY,GAAGZ,OAAO,CAAC3E,YAAY;AAExC,MAAA,MAAMH,qBAAqB,GACzB,IAAI,CAAC+B,WAAW,CAACS,OAAO,CAAC,CAAC,CAAC,EAAEmD,OAAO,KAAKhE,SAAS;MAEpD,IAAI,CAACiE,yBAAyB,GAAGhG,4BAA4B,CAC3DkF,OAAO,EACP,IAAI,CAAC5C,aAAa,EAClB,IAAI,CAACnC,oBAAoB,GAAG,IAAI,GAAG,KAAK,EACxCC,qBAAqB,EACrB,IAAI,CAACC,oBACP,CAAC;MAED,IAAI,IAAI,CAACF,oBAAoB,EAAE;AAC7B,QAAA,IAAI,CAAC8F,kBAAkB,GAAG9E,yBAAyB,CACjD,IAAI,CAACmB,aAAa,EAClBuB,YAAY,EACZ,IAAI,CAACxD,oBACP,CAAC;AACH,MAAA;IACF,CAAC;IAED,MAAM;AAAEwD,MAAAA,YAAY,GAAG;KAAO,GAAG,IAAI,CAACnB,IAAI;AAE1C,IAAA,IAAI,CAACL,eAAe,GAAG,IAAI6D,cAAc,CAAEC,OAAO,IAAK;MACrDA,OAAO,CAACpF,OAAO,CAAC,MAAM;AACpB8E,QAAAA,kBAAkB,EAAE;AACpBL,QAAAA,gCAAgC,EAAE;AACpC,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,IAAI,CAACnD,eAAe,CAAC+D,OAAO,CAAClB,OAAO,CAAC;AAErCW,IAAAA,kBAAkB,EAAE;;AAEpB;AACAL,IAAAA,gCAAgC,EAAE;;AAElC;AACA,IAAA,IAAIN,OAAO,CAAC1E,YAAY,GAAG0E,OAAO,CAACmB,YAAY,EAAE;MAC/C,IAAI,CAACC,yBAAyB,GAAG,IAAI;AACvC,IAAA;AAEA,IAAA,OAAO,MAAM;MACXpB,OAAO,CAACqB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAACnE,cAAc,CAAC;AAC1D,MAAA,IAAI,CAACC,eAAe,CAACmE,UAAU,EAAE;IACnC,CAAC;AACH,EAAA,CAAC,CAAC;AAEMhD,EAAAA,cAAcA,GAAG;IACvB,MAAM;MACJZ,OAAO;MACPG,qBAAqB;MACrBC,mBAAmB;AACnB7C,MAAAA;KACD,GAAG,IAAI,CAACuC,IAAI;AAEb,IAAA,IAAI,IAAI,CAACP,WAAW,CAAC2B,mBAAmB,EAAE;MACxC,MAAM2C,eAAe,GAAG7D,OAAO,CAAC8D,MAAM,CAAErB,MAAM,IAAKA,MAAM,CAACsB,UAAU,CAAC;MACrE,MAAMC,oBAAoB,GAAGH,eAAe,CAACI,GAAG,CAC7CxB,MAAM,IAAKA,MAAM,CAACyB,KACrB,CAAC;AAED/C,MAAAA,MAAM,CACJ,2DAA2D,EAC3D,CAAChB,qBACH,CAAC;AAEDgB,MAAAA,MAAM,CACJ,CAAA,4EAAA,EAA+E6C,oBAAoB,CAACG,QAAQ,EAAE,CAAA,CAAE,EAChHN,eAAe,CAACvF,MAAM,KAAK,CAC7B,CAAC;AAED6C,MAAAA,MAAM,CACJ,6DAA6D,EAC7D5D,oBAAoB,KAAK4B,SAC3B,CAAC;AAEDgC,MAAAA,MAAM,CACJ,CAAA,uDAAA,CAAyD,EACzD,CAACf,mBACH,CAAC;AACH,IAAA;AAEA,IAAA,IAAID,qBAAqB,EAAE;AACzBgB,MAAAA,MAAM,CACJ,iEAAiE,EACjE5D,oBAAoB,KAAK4B,SAC3B,CAAC;AACH,IAAA;AACF,EAAA;AAEQiF,EAAAA,WAAW,GAAG/B,QAAQ,CAAEC,OAAuB,IAAK;IAC1D,IAAI,CAAC5C,aAAa,GAAG4C,OAAO;AAC9B,EAAA,CAAC,CAAC;AAEM5B,EAAAA,gBAAgB,GAA0CA,CAAC;IACjE+B,MAAM;IACN4B,QAAQ;AACRC,IAAAA;AACF,GAAC,KAAK;IACJ,MAAM;AAAEC,MAAAA;KAAsB,GAAG,IAAI,CAACzE,IAAI;IAE1C,IAAIyE,oBAAoB,KAAKpF,SAAS,EAAE;MACtC,IAAI,CAACoF,oBAAoB,GAAGA,oBAAoB;AAClD,IAAA,CAAC,MAAM;AACL,MAAA,MAAMC,WAAW,GAAGF,UAAU,GAAG,CAAC;MAClC,MAAMG,8BAA8B,GAAG,IAAI,CAACC,OAAO,CAACC,CAAC,CACnD,sCAAsC,EACtC;AACEC,QAAAA,OAAO,EAAE,CAAA,MAAA,EAASnC,MAAM,CAACyB,KAAK,CAAA,oBAAA,EAAuBM,WAAW,CAAA,CAAE;QAClEK,WAAW,EAAEpC,MAAM,CAACyB,KAAK;AACzBM,QAAAA;AACF,OACF,CAAC;MAED,IAAI,CAACD,oBAAoB,GAAGE,8BAA8B;AAC5D,IAAA;AAEA,IAAA,IAAI,CAAC3E,IAAI,CAACW,eAAe,GAAG;MAC1BgC,MAAM;MACN4B,QAAQ;AACRC,MAAAA;AACF,KAAC,CAAC;EACJ,CAAC;AAEDQ,EAAAA,yBAAyBA,CACvBC,QAAkD,EAClDC,YAAqB,EACf;IACN,MAAM;AAAEC,MAAAA;KAAmB,GAAG,IAAI,CAACnF,IAAI;AAEvC,IAAA,IAAI,OAAOmF,iBAAiB,KAAK,UAAU,EAAE;AAE7CA,IAAAA,iBAAiB,CAAC;AAChBD,MAAAA,YAAY,EAAEA,YAAY;AAC1BE,MAAAA,wBAAwB,EAAEH,QAAQ;MAClCI,gBAAgB,EAAE,IAAI,CAAC/F,eAAe,CAACgG,MAAM,CAAW,CAACC,GAAG,EAAEC,GAAG,KAAK;AACpE,QAAA,IAAIA,GAAG,CAACP,QAAQ,CAACQ,OAAO,EAAE;AACxBF,UAAAA,GAAG,CAACpD,IAAI,CAACqD,GAAG,CAACN,YAAY,CAAC;AAC5B,QAAA;AACA,QAAA,OAAOK,GAAG;MACZ,CAAC,EAAE,EAAE,CAAC;MACNG,oBAAoB,EAAE,IAAI,CAACpG,eAAe,CAACgG,MAAM,CAC/C,CACEC,GAAgE,EAChEC,GAAG,KACA;QACHD,GAAG,CAACpD,IAAI,CAAC;UACP+C,YAAY,EAAEM,GAAG,CAACN,YAAY;AAC9BS,UAAAA,UAAU,EAAEH,GAAG,CAACP,QAAQ,CAACQ;AAC3B,SAAC,CAAC;AACF,QAAA,OAAOF,GAAG;AACZ,MAAA,CAAC,EACD,EACF;AACF,KAAC,CAAC;AACJ,EAAA;AAGAK,EAAAA,mBAAmBA,GAAS;IAC1B,MAAM;MAAE1F,OAAO;MAAED,KAAK;MAAEM,MAAM;AAAEC,MAAAA;KAAW,GAAG,IAAI,CAACR,IAAI;AAEvD,IAAA,IAAI,CAACP,WAAW,CAACoG,SAAS,CAAC;MACzB3F,OAAO;MACPD,KAAK;MACLM,MAAM;AACNC,MAAAA;AACF,KAAC,CAAC;AACJ,EAAA;AAAC,EAAA;IAAAsF,CAAA,CAAA,IAAA,CAAA9G,SAAA,EAAA,qBAAA,EAAA,CAVA+G,MAAM,CAAA,CAAA;AAAA;AAaPC,EAAAA,2BAA2BA,GAAS;AAClC,IAAA,IAAI,IAAI,CAAChG,IAAI,CAACG,WAAW,KAAKd,SAAS,EAAE;AACvC,MAAA;AACF,IAAA;IAEA,IAAI,CAACI,WAAW,CAACU,WAAW,GAAG,IAAI,CAACH,IAAI,CAACG,WAAW;AACtD,EAAA;AAAC,EAAA;IAAA2F,CAAA,CAAA,IAAA,CAAA9G,SAAA,EAAA,6BAAA,EAAA,CAPA+G,MAAM,CAAA,CAAA;AAAA;AAUPE,EAAAA,oBAAoBA,GAAS;AAC3B,IAAA,IAAI,CAAC3G,eAAe,CAACjB,OAAO,CAAEmH,GAAG,IAAK;MACpCA,GAAG,CAACP,QAAQ,CAACQ,OAAO,GAAG,IAAI,CAACS,kBAAkB,EAAET,OAAO,IAAI,KAAK;AAClE,IAAA,CAAC,CAAC;IACF,IAAI,CAACU,4BAA4B,GAC/B,IAAI,CAACD,kBAAkB,EAAET,OAAO,IAAI,KAAK;IAC3C,IAAI,CAACT,yBAAyB,CAAC,IAAI,CAACkB,kBAAkB,EAAE,KAAK,CAAC;AAChE,EAAA;AAAC,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAA9G,SAAA,EAAA,sBAAA,EAAA,CARA+G,MAAM,CAAA,CAAA;AAAA;AAWPK,EAAAA,oBAAoBA,CAClBnB,QAAkD,EAClDC,YAAqB,EACf;IACN,IAAI,CAACmB,iBAAiB,EAAE;AACxB,IAAA,IAAI,CAACrB,yBAAyB,CAACC,QAAQ,EAAEC,YAAY,CAAC;AACxD,EAAA;AAAC,EAAA;IAAAY,CAAA,CAAA,IAAA,CAAA9G,SAAA,EAAA,sBAAA,EAAA,CAPA+G,MAAM,CAAA,CAAA;AAAA;EAUPO,0BAA0BA,CACxBrB,QAAiD,EAC3C;IACN,IAAI,CAACiB,kBAAkB,GAAGjB,QAAQ;AACpC,EAAA;AAAC,EAAA;IAAAa,CAAA,CAAA,IAAA,CAAA9G,SAAA,EAAA,4BAAA,EAAA,CALA+G,MAAM,CAAA,CAAA;AAAA;AAQPQ,EAAAA,4BAA4BA,GAAS;IACnC,IAAI,CAACL,kBAAkB,GAAG7G,SAAS;AACrC,EAAA;AAAC,EAAA;IAAAyG,CAAA,CAAA,IAAA,CAAA9G,SAAA,EAAA,8BAAA,EAAA,CAHA+G,MAAM,CAAA,CAAA;AAAA;AAMPS,EAAAA,oBAAoBA,CAClBvB,QAAiD,EACjDC,YAAqB,EACf;AACN,IAAA,IAAIA,YAAY,EAAE;AAChB,MAAA,IAAI,CAAC5F,eAAe,CAAC6C,IAAI,CAAC;QAAE+C,YAAY;AAAED,QAAAA;AAAS,OAAC,CAAC;AACvD,IAAA;IACA,IAAI,CAACoB,iBAAiB,EAAE;AAC1B,EAAA;AAAC,EAAA;IAAAP,CAAA,CAAA,IAAA,CAAA9G,SAAA,EAAA,sBAAA,EAAA,CATA+G,MAAM,CAAA,CAAA;AAAA;EAYPU,sBAAsBA,CAACvB,YAAqB,EAAQ;AAClD,IAAA,IAAI,CAAC5F,eAAe,GAAG,IAAI,CAACA,eAAe,CAAC0E,MAAM,CAC/CwB,GAAG,IAAKA,GAAG,CAACN,YAAY,KAAKA,YAChC,CAAC;IACD,IAAI,CAACmB,iBAAiB,EAAE;AAC1B,EAAA;AAAC,EAAA;IAAAP,CAAA,CAAA,IAAA,CAAA9G,SAAA,EAAA,wBAAA,EAAA,CANA+G,MAAM,CAAA,CAAA;AAAA;AASPM,EAAAA,iBAAiBA,GAAS;IACxB,IAAI,IAAI,CAACH,kBAAkB,EAAE;AAC3B,MAAA,MAAMQ,mBAAmB,GAAG,IAAI,CAACpH,eAAe,CAACd,MAAM;AACvD,MAAA,MAAMmI,iBAAiB,GAAG,IAAI,CAACrH,eAAe,CAAC0E,MAAM,CAClDwB,GAAG,IAAKA,GAAG,CAACP,QAAQ,CAACQ,OACxB,CAAC,CAACjH,MAAM;AAER,MAAA,IAAI,CAAC0H,kBAAkB,CAACT,OAAO,GAC7BkB,iBAAiB,KAAKD,mBAAmB;MAC3C,IAAI,CAACR,kBAAkB,CAACU,aAAa,GACnCD,iBAAiB,GAAG,CAAC,IAAIA,iBAAiB,GAAGD,mBAAmB;AAClE,MAAA,IAAI,CAACP,4BAA4B,GAAG,IAAI,CAACD,kBAAkB,CAACT,OAAO;AACrE,IAAA;AACF,EAAA;AAAC,EAAA;IAAAK,CAAA,CAAA,IAAA,CAAA9G,SAAA,EAAA,mBAAA,EAAA,CAdA+G,MAAM,CAAA,CAAA;AAAA;EAgBC9C,uBAAuBA,CAACT,OAAoB,EAAQ;AAC1D;IACA,MAAMqE,aAAa,GAAG,CAAC;;AAEvB;AACA,IAAA,IAAIrE,OAAO,CAACsE,UAAU,GAAGD,aAAa,EAAE;MACtC,IAAI,IAAI,CAACpJ,oBAAoB,EAAE;QAC7B,IAAI,CAACE,oBAAoB,GAAG,IAAI;AAClC,MAAA;AACA,MAAA,IAAI,CAAC,IAAI,CAACoJ,uBAAuB,EAAE;QACjC,IAAI,CAACA,uBAAuB,GAAG,IAAI;AACrC,MAAA;IACF,CAAC,MAAM,IAAIvE,OAAO,CAACsE,UAAU,KAAK,CAAC,IAAI,IAAI,CAACC,uBAAuB,EAAE;MACnE,IAAI,CAACpJ,oBAAoB,GAAG,KAAK;MACjC,IAAI,CAACoJ,uBAAuB,GAAG,KAAK;AACtC,IAAA;;AAEA;IACA,MAAMC,SAAS,GAAGxE,OAAO,CAACQ,WAAW,GAAGR,OAAO,CAACvE,WAAW,GAAG4I,aAAa;;AAE3E;AACA,IAAA,IAAIrE,OAAO,CAACsE,UAAU,GAAGE,SAAS,EAAE;MAClC,IAAI,CAACjE,wBAAwB,GAAG,IAAI;AACtC,IAAA,CAAC,MAAM;MACL,IAAI,CAACA,wBAAwB,GAAG,KAAK;AACvC,IAAA;;AAEA;AACA,IAAA,IAAIP,OAAO,CAACyE,SAAS,GAAG,CAAC,EAAE;MACzB,IAAI,IAAI,CAACvF,eAAe,EAAE;QACxB,IAAI,CAACW,oBAAoB,GAAG,IAAI;AAClC,MAAA;MACA,IAAI,CAAC6E,sBAAsB,GAAG,IAAI;AACpC,IAAA,CAAC,MAAM;MACL,IAAI,IAAI,CAACxF,eAAe,EAAE;QACxB,IAAI,CAACW,oBAAoB,GAAG,KAAK;AACnC,MAAA;MACA,IAAI,CAAC6E,sBAAsB,GAAG,KAAK;AACrC,IAAA;;AAEA;IACA,MAAMC,UAAU,GACd3E,OAAO,CAACmB,YAAY,GAAGnB,OAAO,CAAC1E,YAAY,GAAG+I,aAAa;;AAE7D;AACA,IAAA,IAAIrE,OAAO,CAACyE,SAAS,GAAGE,UAAU,EAAE;MAClC,IAAI,CAACvD,yBAAyB,GAAG,IAAI;AACvC,IAAA,CAAC,MAAM;MACL,IAAI,CAACA,yBAAyB,GAAG,KAAK;AACxC,IAAA;AACF,EAAA;EAEQwD,iBAAiB,GAAGA,MAAY;IACtC,IAAI,CAACrG,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,GAAG,KAAK,GAAG,IAAI;AACpE;AACA,IAAA,IAAI,CAACkC,uBAAuB,CAAC,IAAI,CAACpD,qBAAqB,CAAC;EAC1D,CAAC;EAEOwH,eAAe,GACrB1E,MAAkC,IACV;IACxB,IAAIA,MAAM,CAAC2E,OAAO,IAAI,IAAI,CAAC7J,oBAAoB,KAAK4B,SAAS,EAAE;MAC7D,OAAO,IAAI,CAAC5B,oBAAoB;AAClC,IAAA;AACA,IAAA,OAAO4B,SAAS;EAClB,CAAC;AACH;AAACkI,oBAAA,CAAAC,QAAA,EA1jBoB3I,gBAAgB,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/advanced-table/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { guidFor } from '@ember/object/internals';\nimport { service } from '@ember/service';\nimport { modifier } from 'ember-modifier';\nimport HdsAdvancedTableTableModel from './models/table.ts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nimport type { ComponentLike } from '@glint/template';\nimport {\n HdsAdvancedTableDensityValues,\n HdsAdvancedTableVerticalAlignmentValues,\n} from './types.ts';\nimport type {\n HdsAdvancedTableColumn,\n HdsAdvancedTableDensities,\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableOnSelectionChangeSignature,\n HdsAdvancedTableSelectableRow,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableVerticalAlignment,\n HdsAdvancedTableModel,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderCallback,\n} from './types.ts';\nimport type { HdsFilterBarSignature } from '../filter-bar/index.ts';\nimport type HdsAdvancedTableColumnType from './models/column.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';\nimport type HdsAdvancedTableTd from './td.ts';\nimport type HdsAdvancedTableTh from './th.ts';\nimport type HdsAdvancedTableTr from './tr.ts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\nexport const DENSITIES: HdsAdvancedTableDensities[] = Object.values(\n HdsAdvancedTableDensityValues\n);\nexport const DEFAULT_DENSITY = HdsAdvancedTableDensityValues.Medium;\n\nexport const VALIGNMENTS: HdsAdvancedTableVerticalAlignment[] = Object.values(\n HdsAdvancedTableVerticalAlignmentValues\n);\nexport const DEFAULT_VALIGN = HdsAdvancedTableVerticalAlignmentValues.Top;\n\nexport const BORDER_WIDTH = 1;\n\nconst DEFAULT_SCROLL_DIMENSIONS = {\n bottom: '0px',\n height: '0px',\n left: '0px',\n right: '0px',\n width: '0px',\n};\n\nconst getScrollIndicatorDimensions = (\n scrollWrapper: HTMLDivElement,\n theadElement: HTMLDivElement,\n hasStickyFirstColumn: boolean,\n hasFirstColumnPxWidth: boolean,\n isStickyColumnPinned: boolean\n) => {\n const horizontalScrollBarHeight =\n scrollWrapper.offsetHeight - scrollWrapper.clientHeight;\n const verticalScrollBarWidth =\n scrollWrapper.offsetWidth - scrollWrapper.clientWidth;\n\n let leftOffset = 0;\n\n if (hasStickyFirstColumn) {\n const stickyColumnHeaders = theadElement.querySelectorAll(\n '.hds-advanced-table__th--is-sticky-column'\n );\n\n stickyColumnHeaders?.forEach((el) => {\n // querySelectorAll returns Elements, which don't have offsetWidth\n // need to use offsetWidth to account for the cell borders\n const elAsHTMLElement = el as HTMLElement;\n leftOffset += elAsHTMLElement.offsetWidth;\n });\n\n // offsets the left: -1px position if there are multiple sticky columns or the first column has a fixed pixel width\n if (stickyColumnHeaders.length > 1 || hasFirstColumnPxWidth) {\n leftOffset -= 1;\n }\n\n // offsets the left: -1px position if the sticky column is already pinned when the scroll indicator is calculated\n if (isStickyColumnPinned) {\n leftOffset -= 1;\n }\n }\n\n return {\n bottom: `${horizontalScrollBarHeight}px`,\n height: `${scrollWrapper.offsetHeight - horizontalScrollBarHeight}px`,\n left: `${leftOffset}px`,\n right: `${verticalScrollBarWidth}px`,\n width: `${scrollWrapper.offsetWidth - verticalScrollBarWidth}px`,\n };\n};\n\nconst getStickyColumnLeftOffset = (\n theadElement: HTMLDivElement,\n hasRowSelection: boolean,\n isStickyColumnPinned: boolean\n) => {\n // if there is no select checkbox column, the sticky column is all the way to the left\n if (!hasRowSelection) return '0px';\n\n const selectableCell = theadElement.querySelector(\n '.hds-advanced-table__th--is-selectable'\n ) as HTMLElement;\n\n let leftOffset = selectableCell?.offsetWidth ?? 0;\n\n // if the sticky column is pinned when the offset is calculated, we need to account for the increased width of the border\n if (isStickyColumnPinned && leftOffset > 0) {\n leftOffset -= 2;\n }\n\n return `${leftOffset}px`;\n};\n\nexport interface HdsAdvancedTableSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n caption?: string;\n columns: HdsAdvancedTableColumn[];\n columnOrder?: string[];\n density?: HdsAdvancedTableDensities;\n identityKey?: string;\n isSelectable?: boolean;\n isStriped?: boolean;\n model: HdsAdvancedTableModel;\n reorderedMessageText?: string;\n selectionAriaLabelSuffix?: string;\n sortBy?: string;\n selectableColumnKey?: string;\n sortedMessageText?: string;\n sortOrder?: HdsAdvancedTableThSortOrder;\n valign?: HdsAdvancedTableVerticalAlignment;\n hasReorderableColumns?: boolean;\n hasResizableColumns?: boolean;\n hasStickyHeader?: boolean;\n hasStickyFirstColumn?: boolean;\n childrenKey?: string;\n maxHeight?: string;\n isEmpty?: boolean;\n onColumnReorder?: HdsAdvancedTableColumnReorderCallback;\n onColumnResize?: (columnKey: string, newWidth?: string) => void;\n onSelectionChange?: (\n selection: HdsAdvancedTableOnSelectionChangeSignature\n ) => void;\n onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;\n };\n Blocks: {\n actions?: [\n {\n FilterBar?: ComponentLike<HdsFilterBarSignature>;\n },\n ];\n body?: [\n {\n Td?: WithBoundArgs<typeof HdsAdvancedTableTd, 'align'>;\n Tr?: WithBoundArgs<\n typeof HdsAdvancedTableTr,\n | 'selectionScope'\n | 'isLastRow'\n | 'isSelectable'\n | 'onSelectionChange'\n | 'didInsert'\n | 'willDestroy'\n | 'selectionAriaLabelSuffix'\n | 'hasStickyColumn'\n | 'isStickyColumnPinned'\n | 'isParentRow'\n | 'depth'\n | 'displayRow'\n >;\n Th?: WithBoundArgs<\n typeof HdsAdvancedTableTh,\n | 'depth'\n | 'isExpandable'\n | 'isExpanded'\n | 'newLabel'\n | 'parentId'\n | 'scope'\n | 'isStickyColumn'\n | 'isStickyColumnPinned'\n | 'onClickToggle'\n >;\n data?: Record<string, unknown>;\n rowIndex?: number | string;\n isOpen?: HdsAdvancedTableExpandState;\n },\n ];\n emptyState?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTable extends Component<HdsAdvancedTableSignature> {\n @service hdsIntl!: HdsIntlService;\n\n @tracked\n private _selectAllCheckbox?: HdsFormCheckboxBaseSignature['Element'] =\n undefined;\n @tracked private _isSelectAllCheckboxSelected?: boolean = undefined;\n @tracked private _tableHeight = 0;\n private _selectableRows: HdsAdvancedTableSelectableRow[] = [];\n private _captionId = 'caption-' + guidFor(this);\n private _tableModel!: HdsAdvancedTableTableModel;\n private _scrollHandler!: (event: Event) => void;\n private _resizeObserver!: ResizeObserver;\n private _theadElement!: HTMLDivElement;\n private _scrollWrapperElement!: HTMLDivElement;\n\n @tracked scrollIndicatorDimensions = DEFAULT_SCROLL_DIMENSIONS;\n @tracked isStickyColumnPinned = false;\n @tracked isStickyHeaderPinned = false;\n @tracked hasPinnedFirstColumn: boolean | undefined = undefined;\n @tracked reorderedMessageText = '';\n @tracked showScrollIndicatorLeft = false;\n @tracked showScrollIndicatorRight = false;\n @tracked showScrollIndicatorTop = false;\n @tracked showScrollIndicatorBottom = false;\n @tracked stickyColumnOffset = '0px';\n\n constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']) {\n super(owner, args);\n\n const {\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n hasStickyFirstColumn,\n onSort,\n } = args;\n\n this._tableModel = new HdsAdvancedTableTableModel({\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n onColumnReorder: this._onColumnReorder.bind(this),\n onSort,\n });\n\n this._runAssertions();\n\n if (hasStickyFirstColumn) {\n this.hasPinnedFirstColumn = true;\n }\n }\n\n get isEmpty(): boolean {\n const { isEmpty } = this.args;\n if (isEmpty !== undefined) {\n return isEmpty;\n }\n return false;\n }\n\n get identityKey(): string | undefined {\n // we have to provide a way for the consumer to pass undefined because Ember tries to interpret undefined as missing an arg and therefore falls back to the default\n if (this.args.identityKey === 'none') {\n return undefined;\n } else {\n return this.args.identityKey ?? '@identity';\n }\n }\n\n get childrenKey(): string {\n const { childrenKey = 'children' } = this.args;\n\n return childrenKey;\n }\n\n get hasStickyFirstColumn(): boolean | undefined {\n // The user-controlled `hasPinnedFirstColumn` variable takes precedence over the model's `hasStickyFirstColumn` property.\n if (this.hasPinnedFirstColumn !== undefined) {\n return this.hasPinnedFirstColumn;\n } else if (this.args.hasStickyFirstColumn === false) {\n return this.args.hasStickyFirstColumn;\n }\n\n return undefined;\n }\n\n get hasScrollIndicator(): boolean {\n if (this.hasStickyFirstColumn) {\n return true;\n }\n\n return false;\n }\n\n get sortedMessageText(): string {\n const { sortedMessageText } = this.args;\n const { sortBy, sortOrder } = this._tableModel;\n\n if (sortedMessageText !== undefined) {\n return sortedMessageText;\n } else if (sortBy !== undefined && sortOrder !== undefined) {\n // we should allow the user to define a custom value here (e.g., for i18n) - tracked with HDS-965\n return `Sorted by ${sortBy} ${sortOrder}ending`;\n } else {\n return '';\n }\n }\n\n get isSelectable(): boolean {\n const { isSelectable = false } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n assert(\n '@isSelectable must not be true if there are nested rows.',\n !isSelectable\n );\n return isSelectable;\n }\n\n return isSelectable;\n }\n\n get isStriped(): boolean {\n const { isStriped = false } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n assert(\n '@isStriped must not be true if there are nested rows.',\n !isStriped\n );\n return isStriped;\n }\n\n return isStriped;\n }\n\n get density(): HdsAdvancedTableDensities {\n const { density = DEFAULT_DENSITY } = this.args;\n\n assert(\n `@density for \"Hds::Table\" must be one of the following: ${DENSITIES.join(\n ', '\n )}; received: ${density}`,\n DENSITIES.includes(density)\n );\n\n return density;\n }\n\n get hasStickyHeader(): boolean {\n if (this.args.maxHeight && this.args.hasStickyHeader !== false) {\n return true;\n } else if (this.args.hasStickyHeader && !this.args.maxHeight) {\n assert('Must set @maxHeight to use @hasStickyHeader.', false);\n }\n\n return false;\n }\n\n get valign(): HdsAdvancedTableVerticalAlignment {\n const { valign = DEFAULT_VALIGN } = this.args;\n\n assert(\n `@valign for \"Hds::Table\" must be one of the following: ${VALIGNMENTS.join(\n ', '\n )}; received: ${valign}`,\n VALIGNMENTS.includes(valign)\n );\n\n return valign;\n }\n\n // returns the grid-template-columns CSS attribute for the grid\n get gridTemplateColumns(): string {\n const { isSelectable } = this.args;\n const { orderedColumns } = this._tableModel;\n\n // if there is a select checkbox, the first column has a 'min-content' width to hug the checkbox content\n let style = isSelectable ? 'min-content ' : '';\n\n for (let i = 0; i < orderedColumns.length; i++) {\n style += ` ${orderedColumns[i]!.appliedWidth}`;\n }\n\n return style;\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table'];\n\n if (this.isStriped) {\n classes.push('hds-advanced-table--striped');\n }\n\n if (this.density) {\n classes.push(`hds-advanced-table--density-${this.density}`);\n }\n\n if (this.valign) {\n classes.push(`hds-advanced-table--valign-${this.valign}`);\n }\n\n if (this._tableModel.hasRowsWithChildren) {\n classes.push(`hds-advanced-table--nested`);\n }\n\n return classes.join(' ');\n }\n\n get theadClassNames(): string {\n const classes = ['hds-advanced-table__thead'];\n\n if (this.hasStickyHeader) {\n classes.push('hds-advanced-table__thead--sticky');\n }\n\n if (this.isStickyHeaderPinned) {\n classes.push('hds-advanced-table__thead--is-pinned');\n }\n\n if (this._tableModel.hasResizableColumns) {\n classes.push('hds-advanced-table__thead--has-resizable-columns');\n }\n\n return classes.join(' ');\n }\n\n private _registerGridElement = modifier((element: HTMLDivElement) => {\n this._tableModel.gridElement = element;\n });\n\n private _registerThElement = modifier(\n (element: HTMLDivElement, [column]: [HdsAdvancedTableColumnType]) => {\n if (column === undefined) {\n return;\n }\n\n column.thElement = element;\n }\n );\n\n private _setUpScrollWrapper = modifier((element: HTMLDivElement) => {\n this._scrollWrapperElement = element;\n\n const updateHorizontalScrollIndicators = () => {\n this.showScrollIndicatorRight = element.clientWidth < element.scrollWidth;\n };\n\n this._scrollHandler = () => {\n this._updateScrollIndicators(element);\n };\n\n element.addEventListener('scroll', this._scrollHandler);\n\n const updateMeasurements = () => {\n this._tableHeight = element.offsetHeight;\n\n const hasFirstColumnPxWidth =\n this._tableModel.columns[0]?.pxWidth !== undefined;\n\n this.scrollIndicatorDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyFirstColumn ? true : false,\n hasFirstColumnPxWidth,\n this.isStickyColumnPinned\n );\n\n if (this.hasStickyFirstColumn) {\n this.stickyColumnOffset = getStickyColumnLeftOffset(\n this._theadElement,\n isSelectable,\n this.isStickyColumnPinned\n );\n }\n };\n\n const { isSelectable = false } = this.args;\n\n this._resizeObserver = new ResizeObserver((entries) => {\n entries.forEach(() => {\n updateMeasurements();\n updateHorizontalScrollIndicators();\n });\n });\n\n this._resizeObserver.observe(element);\n\n updateMeasurements();\n\n // on render check if should show right scroll indicator\n updateHorizontalScrollIndicators();\n\n // on render check if should show bottom scroll indicator\n if (element.clientHeight < element.scrollHeight) {\n this.showScrollIndicatorBottom = true;\n }\n\n return () => {\n element.removeEventListener('scroll', this._scrollHandler);\n this._resizeObserver.disconnect();\n };\n });\n\n private _runAssertions() {\n const {\n columns,\n hasReorderableColumns,\n hasResizableColumns,\n hasStickyFirstColumn,\n } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n const sortableColumns = columns.filter((column) => column.isSortable);\n const sortableColumnLabels = sortableColumns.map(\n (column) => column.label\n );\n\n assert(\n 'Cannot have reorderable columns if there are nested rows.',\n !hasReorderableColumns\n );\n\n assert(\n `Cannot have sortable columns if there are nested rows. Sortable columns are ${sortableColumnLabels.toString()}`,\n sortableColumns.length === 0\n );\n\n assert(\n 'Cannot have a sticky first column if there are nested rows.',\n hasStickyFirstColumn === undefined\n );\n\n assert(\n `Cannot have resizable columns if there are nested rows.`,\n !hasResizableColumns\n );\n }\n\n if (hasReorderableColumns) {\n assert(\n 'Cannot have both reorderable columns and a sticky first column.',\n hasStickyFirstColumn === undefined\n );\n }\n }\n\n private _setUpThead = modifier((element: HTMLDivElement) => {\n this._theadElement = element;\n });\n\n private _onColumnReorder: HdsAdvancedTableColumnReorderCallback = ({\n column,\n newOrder,\n insertedAt,\n }) => {\n const { reorderedMessageText } = this.args;\n\n if (reorderedMessageText !== undefined) {\n this.reorderedMessageText = reorderedMessageText;\n } else {\n const newPosition = insertedAt + 1;\n const translatedReorderedMessageText = this.hdsIntl.t(\n 'hds.advanced-table.reordered-message',\n {\n default: `Moved ${column.label} column to position ${newPosition}`,\n columnLabel: column.label,\n newPosition,\n }\n );\n\n this.reorderedMessageText = translatedReorderedMessageText;\n }\n\n this.args.onColumnReorder?.({\n column,\n newOrder,\n insertedAt,\n });\n };\n\n onSelectionChangeCallback(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n const { onSelectionChange } = this.args;\n\n if (typeof onSelectionChange !== 'function') return;\n\n onSelectionChange({\n selectionKey: selectionKey,\n selectionCheckboxElement: checkbox,\n selectedRowsKeys: this._selectableRows.reduce<string[]>((acc, row) => {\n if (row.checkbox.checked) {\n acc.push(row.selectionKey);\n }\n return acc;\n }, []),\n selectableRowsStates: this._selectableRows.reduce(\n (\n acc: { selectionKey: string; isSelected: boolean | undefined }[],\n row\n ) => {\n acc.push({\n selectionKey: row.selectionKey,\n isSelected: row.checkbox.checked,\n });\n return acc;\n },\n []\n ),\n });\n }\n\n @action\n setupTableModelData(): void {\n const { columns, model, sortBy, sortOrder } = this.args;\n\n this._tableModel.setupData({\n columns,\n model,\n sortBy,\n sortOrder,\n });\n }\n\n @action\n updateTableModelColumnOrder(): void {\n if (this.args.columnOrder === undefined) {\n return;\n }\n\n this._tableModel.columnOrder = this.args.columnOrder;\n }\n\n @action\n onSelectionAllChange(): void {\n this._selectableRows.forEach((row) => {\n row.checkbox.checked = this._selectAllCheckbox?.checked ?? false;\n });\n this._isSelectAllCheckboxSelected =\n this._selectAllCheckbox?.checked ?? false;\n this.onSelectionChangeCallback(this._selectAllCheckbox, 'all');\n }\n\n @action\n onSelectionRowChange(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n this.setSelectAllState();\n this.onSelectionChangeCallback(checkbox, selectionKey);\n }\n\n @action\n didInsertSelectAllCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element']\n ): void {\n this._selectAllCheckbox = checkbox;\n }\n\n @action\n willDestroySelectAllCheckbox(): void {\n this._selectAllCheckbox = undefined;\n }\n\n @action\n didInsertRowCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n if (selectionKey) {\n this._selectableRows.push({ selectionKey, checkbox });\n }\n this.setSelectAllState();\n }\n\n @action\n willDestroyRowCheckbox(selectionKey?: string): void {\n this._selectableRows = this._selectableRows.filter(\n (row) => row.selectionKey !== selectionKey\n );\n this.setSelectAllState();\n }\n\n @action\n setSelectAllState(): void {\n if (this._selectAllCheckbox) {\n const selectableRowsCount = this._selectableRows.length;\n const selectedRowsCount = this._selectableRows.filter(\n (row) => row.checkbox.checked\n ).length;\n\n this._selectAllCheckbox.checked =\n selectedRowsCount === selectableRowsCount;\n this._selectAllCheckbox.indeterminate =\n selectedRowsCount > 0 && selectedRowsCount < selectableRowsCount;\n this._isSelectAllCheckboxSelected = this._selectAllCheckbox.checked;\n }\n }\n\n private _updateScrollIndicators(element: HTMLElement): void {\n // 6px as a buffer so the shadow doesn't appear over the border radius on the edge of the table\n const SCROLL_BUFFER = 6;\n\n // left scroll indicator and sticky column styles\n if (element.scrollLeft > SCROLL_BUFFER) {\n if (this.hasStickyFirstColumn) {\n this.isStickyColumnPinned = true;\n }\n if (!this.showScrollIndicatorLeft) {\n this.showScrollIndicatorLeft = true;\n }\n } else if (element.scrollLeft === 0 && this.showScrollIndicatorLeft) {\n this.isStickyColumnPinned = false;\n this.showScrollIndicatorLeft = false;\n }\n\n // the right edge is how far the user can scroll, which is the full width of the table - the visible section of the table (also subtract the buffer)\n const rightEdge = element.scrollWidth - element.clientWidth - SCROLL_BUFFER;\n\n // right scroll indicator\n if (element.scrollLeft < rightEdge) {\n this.showScrollIndicatorRight = true;\n } else {\n this.showScrollIndicatorRight = false;\n }\n\n // sticky header\n if (element.scrollTop > 0) {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = true;\n }\n this.showScrollIndicatorTop = true;\n } else {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = false;\n }\n this.showScrollIndicatorTop = false;\n }\n\n // the bottom edge is how far the user can scroll, which is the full height of the table - the visible section of the table (also subtract the buffer)\n const bottomEdge =\n element.scrollHeight - element.clientHeight - SCROLL_BUFFER;\n\n // bottom scroll indicator\n if (element.scrollTop < bottomEdge) {\n this.showScrollIndicatorBottom = true;\n } else {\n this.showScrollIndicatorBottom = false;\n }\n }\n\n private _onPinFirstColumn = (): void => {\n this.hasPinnedFirstColumn = this.hasPinnedFirstColumn ? false : true;\n // we need to retrigger the scroll indicator updates if the pinned state is changed when the table is already scrolled\n this._updateScrollIndicators(this._scrollWrapperElement);\n };\n\n private _isStickyColumn = (\n column: HdsAdvancedTableColumnType\n ): boolean | undefined => {\n if (column.isFirst && this.hasStickyFirstColumn !== undefined) {\n return this.hasStickyFirstColumn;\n }\n return undefined;\n };\n}\n"],"names":["DENSITIES","Object","values","HdsAdvancedTableDensityValues","DEFAULT_DENSITY","Medium","VALIGNMENTS","HdsAdvancedTableVerticalAlignmentValues","DEFAULT_VALIGN","Top","BORDER_WIDTH","DEFAULT_SCROLL_DIMENSIONS","bottom","height","left","right","width","getScrollIndicatorDimensions","scrollWrapper","theadElement","hasStickyFirstColumn","hasFirstColumnPxWidth","isStickyColumnPinned","horizontalScrollBarHeight","offsetHeight","clientHeight","verticalScrollBarWidth","offsetWidth","clientWidth","leftOffset","stickyColumnHeaders","querySelectorAll","forEach","el","elAsHTMLElement","length","getStickyColumnLeftOffset","hasRowSelection","selectableCell","querySelector","HdsAdvancedTable","Component","g","prototype","service","i","void 0","tracked","undefined","_selectableRows","_captionId","guidFor","_tableModel","_scrollHandler","_resizeObserver","_theadElement","_scrollWrapperElement","constructor","owner","args","model","columns","columnOrder","childrenKey","hasReorderableColumns","hasResizableColumns","sortBy","sortOrder","onSort","HdsAdvancedTableTableModel","onColumnReorder","_onColumnReorder","bind","_runAssertions","hasPinnedFirstColumn","isEmpty","identityKey","hasScrollIndicator","sortedMessageText","isSelectable","hasRowsWithChildren","assert","isStriped","density","join","includes","hasStickyHeader","maxHeight","valign","gridTemplateColumns","orderedColumns","style","appliedWidth","classNames","classes","push","theadClassNames","isStickyHeaderPinned","_registerGridElement","modifier","element","gridElement","_registerThElement","column","thElement","_setUpScrollWrapper","updateHorizontalScrollIndicators","showScrollIndicatorRight","scrollWidth","_updateScrollIndicators","addEventListener","updateMeasurements","_tableHeight","pxWidth","scrollIndicatorDimensions","stickyColumnOffset","ResizeObserver","entries","observe","scrollHeight","showScrollIndicatorBottom","removeEventListener","disconnect","sortableColumns","filter","isSortable","sortableColumnLabels","map","label","toString","_setUpThead","newOrder","insertedAt","reorderedMessageText","newPosition","translatedReorderedMessageText","hdsIntl","t","default","columnLabel","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","setupTableModelData","setupData","n","action","updateTableModelColumnOrder","onSelectionAllChange","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","selectableRowsCount","selectedRowsCount","indeterminate","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","rightEdge","scrollTop","showScrollIndicatorTop","bottomEdge","_onPinFirstColumn","_isStickyColumn","isFirst","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import Component from '@glimmer/component';
|
|
2
|
+
import { action } from '@ember/object';
|
|
3
|
+
import { precompileTemplate } from '@ember/template-compilation';
|
|
4
|
+
import { n } from 'decorator-transforms/runtime';
|
|
5
|
+
import { setComponentTemplate } from '@ember/component';
|
|
6
|
+
|
|
7
|
+
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<li class=\"hds-filter-bar__filters-dropdown__filter-option\">\n <Hds::Form::Checkbox::Field checked={{this.isChecked}} @value={{@value}} {{on \"change\" this.onChange}} as |F|>\n <F.Label>{{yield}}</F.Label>\n </Hds::Form::Checkbox::Field>\n</li>");
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Copyright (c) HashiCorp, Inc.
|
|
11
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
class HdsFilterBarCheckbox extends Component {
|
|
15
|
+
onChange(event) {
|
|
16
|
+
const {
|
|
17
|
+
onChange
|
|
18
|
+
} = this.args;
|
|
19
|
+
if (onChange && typeof onChange === 'function') {
|
|
20
|
+
onChange(event);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
static {
|
|
24
|
+
n(this.prototype, "onChange", [action]);
|
|
25
|
+
}
|
|
26
|
+
get isChecked() {
|
|
27
|
+
const {
|
|
28
|
+
keyFilter,
|
|
29
|
+
value
|
|
30
|
+
} = this.args;
|
|
31
|
+
if (Array.isArray(keyFilter)) {
|
|
32
|
+
return keyFilter.some(filter => filter.value === value);
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
setComponentTemplate(TEMPLATE, HdsFilterBarCheckbox);
|
|
38
|
+
|
|
39
|
+
export { HdsFilterBarCheckbox as default };
|
|
40
|
+
//# sourceMappingURL=checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.js","sources":["../../../../src/components/hds/filter-bar/checkbox.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nimport type { HdsFilterBarData } from './types.ts';\n\nexport interface HdsFilterBarCheckboxSignature {\n Args: {\n value?: string;\n keyFilter: HdsFilterBarData | undefined;\n onChange?: (event: Event) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBarCheckbox extends Component<HdsFilterBarCheckboxSignature> {\n @action\n onChange(event: Event): void {\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange(event);\n }\n }\n\n get isChecked(): boolean {\n const { keyFilter, value } = this.args;\n if (Array.isArray(keyFilter)) {\n return keyFilter.some((filter) => filter.value === value);\n }\n return false;\n }\n}\n"],"names":["HdsFilterBarCheckbox","Component","onChange","event","args","n","prototype","action","isChecked","keyFilter","value","Array","isArray","some","filter","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;;AAmBe,MAAMA,oBAAoB,SAASC,SAAS,CAAgC;EAEzFC,QAAQA,CAACC,KAAY,EAAQ;IAC3B,MAAM;AAAED,MAAAA;KAAU,GAAG,IAAI,CAACE,IAAI;AAC9B,IAAA,IAAIF,QAAQ,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;MAC9CA,QAAQ,CAACC,KAAK,CAAC;AACjB,IAAA;AACF,EAAA;AAAC,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CANAC,MAAM,CAAA,CAAA;AAAA;EAQP,IAAIC,SAASA,GAAY;IACvB,MAAM;MAAEC,SAAS;AAAEC,MAAAA;KAAO,GAAG,IAAI,CAACN,IAAI;AACtC,IAAA,IAAIO,KAAK,CAACC,OAAO,CAACH,SAAS,CAAC,EAAE;MAC5B,OAAOA,SAAS,CAACI,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACJ,KAAK,KAAKA,KAAK,CAAC;AAC3D,IAAA;AACA,IAAA,OAAO,KAAK;AACd,EAAA;AACF;AAACK,oBAAA,CAAAC,QAAA,EAhBoBhB,oBAAoB,CAAA;;;;"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import Component from '@glimmer/component';
|
|
2
|
+
import { action } from '@ember/object';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { modifier } from 'ember-modifier';
|
|
5
|
+
import './tabs/tab.js';
|
|
6
|
+
import './tabs/panel.js';
|
|
7
|
+
import './checkbox.js';
|
|
8
|
+
import './radio.js';
|
|
9
|
+
import { precompileTemplate } from '@ember/template-compilation';
|
|
10
|
+
import { g, i, n } from 'decorator-transforms/runtime';
|
|
11
|
+
import { setComponentTemplate } from '@ember/component';
|
|
12
|
+
|
|
13
|
+
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{#let @tab as |Tab|}}\n <Tab>\n {{@text}}\n {{#unless (eq this.numFilters 0)}}\n <Hds::BadgeCount\n @text={{this.numFilters}}\n @type=\"outlined\"\n @size=\"small\"\n class=\"hds-filter-bar__filters-dropdown__filter-group__filters-count\"\n />\n {{/unless}}\n </Tab>\n{{/let}}\n{{#let @panel as |Panel|}}\n <Panel {{this._setUpFilterPanel}}>\n {{#if @searchEnabled}}\n <div class=\"hds-filter-bar__filters-dropdown__filter-group__search\">\n <Hds::Form::TextInput::Base\n @type=\"search\"\n placeholder={{hds-t \"components.filter-bar.filter-group.search-input-placeholder\" default=\"Search\"}}\n {{on \"input\" this.onSearch}}\n />\n </div>\n {{/if}}\n {{#if (eq @type \"range\")}}\n <Hds::FilterBar::Range @keyFilter={{this.keyFilter}} @onChange={{this.onRangeChange}} />\n {{else}}\n <ul class=\"hds-filter-bar__filters-dropdown__filter-group__list\">\n {{yield\n (hash\n Checkbox=(component \"hds/filter-bar/checkbox\" keyFilter=this.keyFilter onChange=this.onSelectionChange)\n Radio=(component \"hds/filter-bar/radio\" keyFilter=this.keyFilter onChange=this.onSelectionChange)\n )\n }}\n </ul>\n {{/if}}\n </Panel>\n{{/let}}");
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Copyright (c) HashiCorp, Inc.
|
|
17
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
class HdsFilterBarFilterGroup extends Component {
|
|
21
|
+
static {
|
|
22
|
+
g(this.prototype, "internalFilters", [tracked], function () {
|
|
23
|
+
return [];
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
#internalFilters = (i(this, "internalFilters"), void 0);
|
|
27
|
+
_panelElement;
|
|
28
|
+
_setUpFilterPanel = modifier(element => {
|
|
29
|
+
this._panelElement = element;
|
|
30
|
+
if (this.keyFilter) {
|
|
31
|
+
this.internalFilters = JSON.parse(JSON.stringify(this.keyFilter));
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
get type() {
|
|
35
|
+
const {
|
|
36
|
+
type
|
|
37
|
+
} = this.args;
|
|
38
|
+
if (!type) {
|
|
39
|
+
return 'multi-select';
|
|
40
|
+
}
|
|
41
|
+
return type;
|
|
42
|
+
}
|
|
43
|
+
get keyFilter() {
|
|
44
|
+
const {
|
|
45
|
+
filters,
|
|
46
|
+
key
|
|
47
|
+
} = this.args;
|
|
48
|
+
if (!filters) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
return filters[key]?.data;
|
|
52
|
+
}
|
|
53
|
+
get numFilters() {
|
|
54
|
+
const {
|
|
55
|
+
filters,
|
|
56
|
+
key
|
|
57
|
+
} = this.args;
|
|
58
|
+
if (filters && key in filters) {
|
|
59
|
+
const keyFilters = filters[key]?.data;
|
|
60
|
+
if (Array.isArray(keyFilters)) {
|
|
61
|
+
return keyFilters.length;
|
|
62
|
+
} else if (keyFilters) {
|
|
63
|
+
return 1;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
onSelectionChange(event) {
|
|
69
|
+
const addFilter = value => {
|
|
70
|
+
const newFilter = {
|
|
71
|
+
value: value
|
|
72
|
+
};
|
|
73
|
+
if (this.type === 'single-select') {
|
|
74
|
+
this.internalFilters = newFilter;
|
|
75
|
+
} else {
|
|
76
|
+
if (Array.isArray(this.internalFilters)) {
|
|
77
|
+
this.internalFilters.push(newFilter);
|
|
78
|
+
} else {
|
|
79
|
+
this.internalFilters = [newFilter];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
const removeFilter = value => {
|
|
84
|
+
if (this.type === 'single-select') {
|
|
85
|
+
this.internalFilters = undefined;
|
|
86
|
+
} else {
|
|
87
|
+
if (Array.isArray(this.internalFilters)) {
|
|
88
|
+
const newFilter = [];
|
|
89
|
+
this.internalFilters.forEach(filter => {
|
|
90
|
+
if (filter.value != value) {
|
|
91
|
+
newFilter.push(filter);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
this.internalFilters = newFilter;
|
|
95
|
+
} else {
|
|
96
|
+
this.internalFilters = [];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const input = event.target;
|
|
101
|
+
if (input.checked) {
|
|
102
|
+
addFilter(input.value);
|
|
103
|
+
} else {
|
|
104
|
+
removeFilter(input.value);
|
|
105
|
+
}
|
|
106
|
+
const {
|
|
107
|
+
onChange
|
|
108
|
+
} = this.args;
|
|
109
|
+
if (onChange && typeof onChange === 'function') {
|
|
110
|
+
onChange(this.args.key, this.formattedFilters);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
static {
|
|
114
|
+
n(this.prototype, "onSelectionChange", [action]);
|
|
115
|
+
}
|
|
116
|
+
onRangeChange(selector, value) {
|
|
117
|
+
const addFilter = () => {
|
|
118
|
+
const newFilter = {
|
|
119
|
+
selector: selector,
|
|
120
|
+
value: value
|
|
121
|
+
};
|
|
122
|
+
return newFilter;
|
|
123
|
+
};
|
|
124
|
+
if (selector && value) {
|
|
125
|
+
this.internalFilters = addFilter();
|
|
126
|
+
} else {
|
|
127
|
+
this.internalFilters = undefined;
|
|
128
|
+
}
|
|
129
|
+
const {
|
|
130
|
+
onChange
|
|
131
|
+
} = this.args;
|
|
132
|
+
if (onChange && typeof onChange === 'function') {
|
|
133
|
+
onChange(this.args.key, this.formattedFilters);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
static {
|
|
137
|
+
n(this.prototype, "onRangeChange", [action]);
|
|
138
|
+
}
|
|
139
|
+
get formattedFilters() {
|
|
140
|
+
if (this.internalFilters === undefined || Array.isArray(this.internalFilters) && this.internalFilters.length === 0) {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
type: this.type,
|
|
145
|
+
text: this.args.text,
|
|
146
|
+
data: this.internalFilters
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
get classNames() {
|
|
150
|
+
const classes = ['hds-filter-bar__filter-group'];
|
|
151
|
+
classes.push(`hds-filter-bar__dropdown--type-${this.type}`);
|
|
152
|
+
return classes.join(' ');
|
|
153
|
+
}
|
|
154
|
+
onSearch = event => {
|
|
155
|
+
const listItems = this._panelElement.querySelectorAll('.hds-filter-bar__filters-dropdown__filter-option');
|
|
156
|
+
const input = event.target;
|
|
157
|
+
listItems.forEach(item => {
|
|
158
|
+
if (item.textContent) {
|
|
159
|
+
const text = item.textContent.toLowerCase();
|
|
160
|
+
const searchText = input.value.toLowerCase();
|
|
161
|
+
if (text.includes(searchText)) {
|
|
162
|
+
item.classList.remove('hds-filter-bar__filters-dropdown__filter-option--hidden');
|
|
163
|
+
} else {
|
|
164
|
+
item.classList.add('hds-filter-bar__filters-dropdown__filter-option--hidden');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
setComponentTemplate(TEMPLATE, HdsFilterBarFilterGroup);
|
|
171
|
+
|
|
172
|
+
export { HdsFilterBarFilterGroup as default };
|
|
173
|
+
//# sourceMappingURL=filter-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-group.js","sources":["../../../../src/components/hds/filter-bar/filter-group.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { modifier } from 'ember-modifier';\nimport type { WithBoundArgs } from '@glint/template';\n\nimport HdsFilterBarTabsTab from './tabs/tab.ts';\nimport HdsFilterBarTabsPanel from './tabs/panel.ts';\nimport type { HdsTabsPanelSignature } from '../tabs/panel.ts';\n\nimport HdsFilterBarCheckbox from './checkbox.ts';\nimport HdsFilterBarRadio from './radio.ts';\n\nimport type {\n HdsFilterBarFilter,\n HdsFilterBarFilters,\n HdsFilterBarFilterType,\n HdsFilterBarData,\n HdsFilterBarGenericFilterData,\n HdsFilterBarRangeFilterData,\n HdsFilterBarRangeFilterSelector,\n} from './types.ts';\n\nexport interface HdsFilterBarFilterGroupSignature {\n Args: {\n tab?: WithBoundArgs<typeof HdsFilterBarTabsTab, never>;\n panel?: WithBoundArgs<typeof HdsFilterBarTabsPanel, never>;\n key: string;\n text: string;\n type?: HdsFilterBarFilterType;\n filters: HdsFilterBarFilters;\n searchEnabled?: boolean;\n onChange: (key: string, keyFilter?: HdsFilterBarFilter) => void;\n };\n Blocks: {\n default: [\n {\n Checkbox?: WithBoundArgs<\n typeof HdsFilterBarCheckbox,\n 'keyFilter' | 'onChange'\n >;\n Radio?: WithBoundArgs<\n typeof HdsFilterBarRadio,\n 'keyFilter' | 'onChange'\n >;\n },\n ];\n };\n Element: HdsTabsPanelSignature['Element'];\n}\n\nexport default class HdsFilterBarFilterGroup extends Component<HdsFilterBarFilterGroupSignature> {\n @tracked internalFilters: HdsFilterBarData | undefined = [];\n\n private _panelElement!: HdsTabsPanelSignature['Element'];\n\n private _setUpFilterPanel = modifier(\n (element: HdsTabsPanelSignature['Element']) => {\n this._panelElement = element;\n\n if (this.keyFilter) {\n this.internalFilters = JSON.parse(\n JSON.stringify(this.keyFilter)\n ) as HdsFilterBarData;\n }\n }\n );\n\n get type(): HdsFilterBarFilterType {\n const { type } = this.args;\n\n if (!type) {\n return 'multi-select';\n }\n return type;\n }\n\n get keyFilter(): HdsFilterBarData | undefined {\n const { filters, key } = this.args;\n\n if (!filters) {\n return undefined;\n }\n return filters[key]?.data;\n }\n\n get numFilters(): number {\n const { filters, key } = this.args;\n if (filters && key in filters) {\n const keyFilters = filters[key]?.data;\n if (Array.isArray(keyFilters)) {\n return keyFilters.length;\n } else if (keyFilters) {\n return 1;\n }\n }\n return 0;\n }\n\n @action\n onSelectionChange(event: Event): void {\n const addFilter = (value: unknown): void => {\n const newFilter = {\n value: value,\n } as HdsFilterBarGenericFilterData;\n if (this.type === 'single-select') {\n this.internalFilters = newFilter;\n } else {\n if (Array.isArray(this.internalFilters)) {\n this.internalFilters.push(newFilter);\n } else {\n this.internalFilters = [newFilter];\n }\n }\n };\n\n const removeFilter = (value: string): void => {\n if (this.type === 'single-select') {\n this.internalFilters = undefined;\n } else {\n if (Array.isArray(this.internalFilters)) {\n const newFilter = [] as HdsFilterBarGenericFilterData[];\n this.internalFilters.forEach((filter) => {\n if (filter.value != value) {\n newFilter.push(filter);\n }\n });\n this.internalFilters = newFilter;\n } else {\n this.internalFilters = [];\n }\n }\n };\n\n const input = event.target as HTMLInputElement;\n\n if (input.checked) {\n addFilter(input.value);\n } else {\n removeFilter(input.value);\n }\n\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange(this.args.key, this.formattedFilters);\n }\n }\n\n @action\n onRangeChange(\n selector?: HdsFilterBarRangeFilterSelector,\n value?: number\n ): void {\n const addFilter = (): HdsFilterBarData => {\n const newFilter = {\n selector: selector,\n value: value,\n } as HdsFilterBarRangeFilterData;\n return newFilter;\n };\n\n if (selector && value) {\n this.internalFilters = addFilter();\n } else {\n this.internalFilters = undefined;\n }\n\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange(this.args.key, this.formattedFilters);\n }\n }\n\n get formattedFilters(): HdsFilterBarFilter | undefined {\n if (\n this.internalFilters === undefined ||\n (Array.isArray(this.internalFilters) && this.internalFilters.length === 0)\n ) {\n return undefined;\n }\n return {\n type: this.type,\n text: this.args.text,\n data: this.internalFilters,\n } as HdsFilterBarFilter;\n }\n\n get classNames(): string {\n const classes = ['hds-filter-bar__filter-group'];\n\n classes.push(`hds-filter-bar__dropdown--type-${this.type}`);\n\n return classes.join(' ');\n }\n\n private onSearch = (event: Event) => {\n const listItems = this._panelElement.querySelectorAll(\n '.hds-filter-bar__filters-dropdown__filter-option'\n );\n const input = event.target as HTMLInputElement;\n listItems.forEach((item) => {\n if (item.textContent) {\n const text = item.textContent.toLowerCase();\n const searchText = input.value.toLowerCase();\n if (text.includes(searchText)) {\n item.classList.remove(\n 'hds-filter-bar__filters-dropdown__filter-option--hidden'\n );\n } else {\n item.classList.add(\n 'hds-filter-bar__filters-dropdown__filter-option--hidden'\n );\n }\n }\n });\n };\n}\n"],"names":["HdsFilterBarFilterGroup","Component","g","prototype","tracked","i","void 0","_panelElement","_setUpFilterPanel","modifier","element","keyFilter","internalFilters","JSON","parse","stringify","type","args","filters","key","undefined","data","numFilters","keyFilters","Array","isArray","length","onSelectionChange","event","addFilter","value","newFilter","push","removeFilter","forEach","filter","input","target","checked","onChange","formattedFilters","n","action","onRangeChange","selector","text","classNames","classes","join","onSearch","listItems","querySelectorAll","item","textContent","toLowerCase","searchText","includes","classList","remove","add","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import Component from '@glimmer/component';
|
|
2
|
+
import { action } from '@ember/object';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { modifier } from 'ember-modifier';
|
|
5
|
+
import './filter-group.js';
|
|
6
|
+
import { precompileTemplate } from '@ember/template-compilation';
|
|
7
|
+
import { g, i, n } from 'decorator-transforms/runtime';
|
|
8
|
+
import { setComponentTemplate } from '@ember/component';
|
|
9
|
+
|
|
10
|
+
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<Hds::Dropdown\n @listPosition=\"bottom-left\"\n @height=\"600px\"\n @width=\"600px\"\n class={{this.classNames}}\n @onClose={{this._onClose}}\n {{this._syncFilters @filters}}\n as |D|\n>\n <D.ToggleButton\n @icon=\"filter\"\n @text={{hds-t \"hds.components.filter-bar.filters-dropdown.toggle-button\" default=\"Add filter\"}}\n @color=\"secondary\"\n @size=\"small\"\n />\n <D.Generic>\n <Hds::FilterBar::Tabs @ariaLabel=\"Filter bar tabs\" as |T|>\n {{yield\n (hash\n FilterGroup=(component\n \"hds/filter-bar/filter-group\" tab=T.Tab panel=T.Panel onChange=this.onFilter filters=this.internalFilters\n )\n close=D.close\n )\n }}\n </Hds::FilterBar::Tabs>\n </D.Generic>\n <D.Footer @hasDivider={{true}}>\n <Hds::Layout::Flex @direction=\"row\" @justify=\"space-between\" @align=\"center\" as |LF|>\n <Hds::ButtonSet>\n <Hds::Button\n @text={{hds-t \"hds.components.filter-bar.filters-dropdown.apply\" default=\"Apply filters\"}}\n @size=\"small\"\n {{on \"click\" (fn this.onApply D.close)}}\n />\n <Hds::Button\n @text={{hds-t \"hds.components.filter-bar.filters-dropdown.clear\" default=\"Clear all filters\"}}\n @color=\"secondary\"\n @size=\"small\"\n {{on \"click\" (fn this.onClear D.close)}}\n />\n </Hds::ButtonSet>\n <LF.Item>\n <Hds::Text::Body>{{hds-t\n \"hds.components.filter-bar.filters-dropdown.selected-filters\"\n default=\"Filters selected\"\n }}:</Hds::Text::Body>\n <Hds::BadgeCount\n @text={{this.numFilters}}\n @type=\"outlined\"\n @size=\"small\"\n class=\"hds-filter-bar__filters-dropdown__filters-count\"\n />\n </LF.Item>\n </Hds::Layout::Flex>\n </D.Footer>\n</Hds::Dropdown>");
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Copyright (c) HashiCorp, Inc.
|
|
14
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
class HdsFilterBarFiltersDropdown extends Component {
|
|
18
|
+
static {
|
|
19
|
+
g(this.prototype, "internalFilters", [tracked], function () {
|
|
20
|
+
return {};
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
#internalFilters = (i(this, "internalFilters"), void 0);
|
|
24
|
+
constructor(owner, args) {
|
|
25
|
+
super(owner, args);
|
|
26
|
+
const {
|
|
27
|
+
filters
|
|
28
|
+
} = this.args;
|
|
29
|
+
if (filters) {
|
|
30
|
+
this.internalFilters = {
|
|
31
|
+
...filters
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
_syncFilters = modifier((_element, [_filters]) => {
|
|
36
|
+
if (_filters) {
|
|
37
|
+
this.internalFilters = _filters;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
onFilter(key, keyFilter) {
|
|
41
|
+
this.internalFilters = this._updateFilter(key, keyFilter);
|
|
42
|
+
}
|
|
43
|
+
static {
|
|
44
|
+
n(this.prototype, "onFilter", [action]);
|
|
45
|
+
}
|
|
46
|
+
onApply(closeDropdown) {
|
|
47
|
+
const {
|
|
48
|
+
onFilter
|
|
49
|
+
} = this.args;
|
|
50
|
+
if (onFilter && typeof onFilter === 'function') {
|
|
51
|
+
onFilter(this.internalFilters);
|
|
52
|
+
}
|
|
53
|
+
if (closeDropdown && typeof closeDropdown === 'function') {
|
|
54
|
+
closeDropdown();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
static {
|
|
58
|
+
n(this.prototype, "onApply", [action]);
|
|
59
|
+
}
|
|
60
|
+
onClear(closeDropdown) {
|
|
61
|
+
const {
|
|
62
|
+
onFilter
|
|
63
|
+
} = this.args;
|
|
64
|
+
this.internalFilters = {};
|
|
65
|
+
if (onFilter && typeof onFilter === 'function') {
|
|
66
|
+
onFilter(this.internalFilters);
|
|
67
|
+
}
|
|
68
|
+
if (closeDropdown && typeof closeDropdown === 'function') {
|
|
69
|
+
closeDropdown();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
static {
|
|
73
|
+
n(this.prototype, "onClear", [action]);
|
|
74
|
+
}
|
|
75
|
+
get numFilters() {
|
|
76
|
+
let numFilters = 0;
|
|
77
|
+
Object.keys(this.internalFilters).forEach(key => {
|
|
78
|
+
const filter = this.internalFilters[key];
|
|
79
|
+
if (filter) {
|
|
80
|
+
if (Array.isArray(filter.data)) {
|
|
81
|
+
numFilters += filter.data.length;
|
|
82
|
+
} else {
|
|
83
|
+
numFilters += 1;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return numFilters;
|
|
88
|
+
}
|
|
89
|
+
get classNames() {
|
|
90
|
+
const classes = ['hds-filter-bar__filters-dropdown'];
|
|
91
|
+
return classes.join(' ');
|
|
92
|
+
}
|
|
93
|
+
_updateFilter(key, keyFilter) {
|
|
94
|
+
const newFilters = {};
|
|
95
|
+
Object.keys(this.internalFilters).forEach(k => {
|
|
96
|
+
newFilters[k] = JSON.parse(JSON.stringify(this.internalFilters[k]));
|
|
97
|
+
});
|
|
98
|
+
if (keyFilter === undefined || Array.isArray(keyFilter) && keyFilter.length === 0) {
|
|
99
|
+
delete newFilters[key];
|
|
100
|
+
} else {
|
|
101
|
+
Object.assign(newFilters, {
|
|
102
|
+
[key]: keyFilter
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
...newFilters
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
_onClose = () => {
|
|
110
|
+
const {
|
|
111
|
+
filters
|
|
112
|
+
} = this.args;
|
|
113
|
+
if (filters) {
|
|
114
|
+
this.internalFilters = {
|
|
115
|
+
...filters
|
|
116
|
+
};
|
|
117
|
+
} else {
|
|
118
|
+
this.internalFilters = {};
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
setComponentTemplate(TEMPLATE, HdsFilterBarFiltersDropdown);
|
|
123
|
+
|
|
124
|
+
export { HdsFilterBarFiltersDropdown as default };
|
|
125
|
+
//# sourceMappingURL=filters-dropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters-dropdown.js","sources":["../../../../src/components/hds/filter-bar/filters-dropdown.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { modifier } from 'ember-modifier';\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\n\nimport HdsFilterBarFilterGroup from './filter-group.ts';\nimport type { HdsFilterBarFilters, HdsFilterBarFilter } from './types.ts';\n\nimport type { HdsDropdownSignature } from '../dropdown/index.ts';\n\nexport interface HdsFilterBarFiltersDropdownSignature {\n Args: HdsDropdownSignature['Args'] & {\n filters: HdsFilterBarFilters;\n onFilter?: (filters: HdsFilterBarFilters) => void;\n };\n Blocks: {\n default: [\n {\n FilterGroup?: WithBoundArgs<\n typeof HdsFilterBarFilterGroup,\n 'tab' | 'panel' | 'filters' | 'onChange'\n >;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBarFiltersDropdown extends Component<\n HdsDropdownSignature & HdsFilterBarFiltersDropdownSignature\n> {\n @tracked internalFilters: HdsFilterBarFilters = {};\n\n constructor(\n owner: Owner,\n args: HdsFilterBarFiltersDropdownSignature['Args']\n ) {\n super(owner, args);\n\n const { filters } = this.args;\n\n if (filters) {\n this.internalFilters = { ...filters };\n }\n }\n\n private _syncFilters = modifier(\n (_element, [_filters]: [HdsFilterBarFilters | undefined]) => {\n if (_filters) {\n this.internalFilters = _filters;\n }\n }\n );\n\n @action\n onFilter(key: string, keyFilter?: HdsFilterBarFilter): void {\n this.internalFilters = this._updateFilter(key, keyFilter);\n }\n\n @action\n onApply(closeDropdown?: () => void): void {\n const { onFilter } = this.args;\n if (onFilter && typeof onFilter === 'function') {\n onFilter(this.internalFilters);\n }\n\n if (closeDropdown && typeof closeDropdown === 'function') {\n closeDropdown();\n }\n }\n\n @action\n onClear(closeDropdown?: () => void): void {\n const { onFilter } = this.args;\n this.internalFilters = {};\n\n if (onFilter && typeof onFilter === 'function') {\n onFilter(this.internalFilters);\n }\n\n if (closeDropdown && typeof closeDropdown === 'function') {\n closeDropdown();\n }\n }\n\n get numFilters(): number {\n let numFilters = 0;\n Object.keys(this.internalFilters).forEach((key) => {\n const filter = this.internalFilters[key];\n if (filter) {\n if (Array.isArray(filter.data)) {\n numFilters += filter.data.length;\n } else {\n numFilters += 1;\n }\n }\n });\n return numFilters;\n }\n\n get classNames(): string {\n const classes = ['hds-filter-bar__filters-dropdown'];\n\n return classes.join(' ');\n }\n\n private _updateFilter(\n key: string,\n keyFilter?: HdsFilterBarFilter\n ): HdsFilterBarFilters {\n const newFilters = {} as HdsFilterBarFilters;\n\n Object.keys(this.internalFilters).forEach((k) => {\n newFilters[k] = JSON.parse(\n JSON.stringify(this.internalFilters[k])\n ) as HdsFilterBarFilter;\n });\n if (\n keyFilter === undefined ||\n (Array.isArray(keyFilter) && keyFilter.length === 0)\n ) {\n delete newFilters[key];\n } else {\n Object.assign(newFilters, { [key]: keyFilter });\n }\n\n return { ...newFilters };\n }\n\n private _onClose = (): void => {\n const { filters } = this.args;\n if (filters) {\n this.internalFilters = { ...filters };\n } else {\n this.internalFilters = {};\n }\n };\n}\n"],"names":["HdsFilterBarFiltersDropdown","Component","g","prototype","tracked","i","void 0","constructor","owner","args","filters","internalFilters","_syncFilters","modifier","_element","_filters","onFilter","key","keyFilter","_updateFilter","n","action","onApply","closeDropdown","onClear","numFilters","Object","keys","forEach","filter","Array","isArray","data","length","classNames","classes","join","newFilters","k","JSON","parse","stringify","undefined","assign","_onClose","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;AAAA;AACA;AACA;AACA;;AAgCe,MAAMA,2BAA2B,SAASC,SAAS,CAEhE;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,iBAAA,EAAA,CACCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwC,EAAE;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,gBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,EAAAC,MAAA;AAElDC,EAAAA,WAAWA,CACTC,KAAY,EACZC,IAAkD,EAClD;AACA,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC;IAElB,MAAM;AAAEC,MAAAA;KAAS,GAAG,IAAI,CAACD,IAAI;AAE7B,IAAA,IAAIC,OAAO,EAAE;MACX,IAAI,CAACC,eAAe,GAAG;QAAE,GAAGD;OAAS;AACvC,IAAA;AACF,EAAA;EAEQE,YAAY,GAAGC,QAAQ,CAC7B,CAACC,QAAQ,EAAE,CAACC,QAAQ,CAAoC,KAAK;AAC3D,IAAA,IAAIA,QAAQ,EAAE;MACZ,IAAI,CAACJ,eAAe,GAAGI,QAAQ;AACjC,IAAA;AACF,EAAA,CACF,CAAC;AAGDC,EAAAA,QAAQA,CAACC,GAAW,EAAEC,SAA8B,EAAQ;IAC1D,IAAI,CAACP,eAAe,GAAG,IAAI,CAACQ,aAAa,CAACF,GAAG,EAAEC,SAAS,CAAC;AAC3D,EAAA;AAAC,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAAjB,SAAA,EAAA,UAAA,EAAA,CAHAkB,MAAM,CAAA,CAAA;AAAA;EAMPC,OAAOA,CAACC,aAA0B,EAAQ;IACxC,MAAM;AAAEP,MAAAA;KAAU,GAAG,IAAI,CAACP,IAAI;AAC9B,IAAA,IAAIO,QAAQ,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;AAC9CA,MAAAA,QAAQ,CAAC,IAAI,CAACL,eAAe,CAAC;AAChC,IAAA;AAEA,IAAA,IAAIY,aAAa,IAAI,OAAOA,aAAa,KAAK,UAAU,EAAE;AACxDA,MAAAA,aAAa,EAAE;AACjB,IAAA;AACF,EAAA;AAAC,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAjB,SAAA,EAAA,SAAA,EAAA,CAVAkB,MAAM,CAAA,CAAA;AAAA;EAaPG,OAAOA,CAACD,aAA0B,EAAQ;IACxC,MAAM;AAAEP,MAAAA;KAAU,GAAG,IAAI,CAACP,IAAI;AAC9B,IAAA,IAAI,CAACE,eAAe,GAAG,EAAE;AAEzB,IAAA,IAAIK,QAAQ,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;AAC9CA,MAAAA,QAAQ,CAAC,IAAI,CAACL,eAAe,CAAC;AAChC,IAAA;AAEA,IAAA,IAAIY,aAAa,IAAI,OAAOA,aAAa,KAAK,UAAU,EAAE;AACxDA,MAAAA,aAAa,EAAE;AACjB,IAAA;AACF,EAAA;AAAC,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAjB,SAAA,EAAA,SAAA,EAAA,CAZAkB,MAAM,CAAA,CAAA;AAAA;EAcP,IAAII,UAAUA,GAAW;IACvB,IAAIA,UAAU,GAAG,CAAC;IAClBC,MAAM,CAACC,IAAI,CAAC,IAAI,CAAChB,eAAe,CAAC,CAACiB,OAAO,CAAEX,GAAG,IAAK;AACjD,MAAA,MAAMY,MAAM,GAAG,IAAI,CAAClB,eAAe,CAACM,GAAG,CAAC;AACxC,MAAA,IAAIY,MAAM,EAAE;QACV,IAAIC,KAAK,CAACC,OAAO,CAACF,MAAM,CAACG,IAAI,CAAC,EAAE;AAC9BP,UAAAA,UAAU,IAAII,MAAM,CAACG,IAAI,CAACC,MAAM;AAClC,QAAA,CAAC,MAAM;AACLR,UAAAA,UAAU,IAAI,CAAC;AACjB,QAAA;AACF,MAAA;AACF,IAAA,CAAC,CAAC;AACF,IAAA,OAAOA,UAAU;AACnB,EAAA;EAEA,IAAIS,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,kCAAkC,CAAC;AAEpD,IAAA,OAAOA,OAAO,CAACC,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAA;AAEQjB,EAAAA,aAAaA,CACnBF,GAAW,EACXC,SAA8B,EACT;IACrB,MAAMmB,UAAU,GAAG,EAAyB;IAE5CX,MAAM,CAACC,IAAI,CAAC,IAAI,CAAChB,eAAe,CAAC,CAACiB,OAAO,CAAEU,CAAC,IAAK;AAC/CD,MAAAA,UAAU,CAACC,CAAC,CAAC,GAAGC,IAAI,CAACC,KAAK,CACxBD,IAAI,CAACE,SAAS,CAAC,IAAI,CAAC9B,eAAe,CAAC2B,CAAC,CAAC,CACxC,CAAuB;AACzB,IAAA,CAAC,CAAC;AACF,IAAA,IACEpB,SAAS,KAAKwB,SAAS,IACtBZ,KAAK,CAACC,OAAO,CAACb,SAAS,CAAC,IAAIA,SAAS,CAACe,MAAM,KAAK,CAAE,EACpD;MACA,OAAOI,UAAU,CAACpB,GAAG,CAAC;AACxB,IAAA,CAAC,MAAM;AACLS,MAAAA,MAAM,CAACiB,MAAM,CAACN,UAAU,EAAE;AAAE,QAAA,CAACpB,GAAG,GAAGC;AAAU,OAAC,CAAC;AACjD,IAAA;IAEA,OAAO;MAAE,GAAGmB;KAAY;AAC1B,EAAA;EAEQO,QAAQ,GAAGA,MAAY;IAC7B,MAAM;AAAElC,MAAAA;KAAS,GAAG,IAAI,CAACD,IAAI;AAC7B,IAAA,IAAIC,OAAO,EAAE;MACX,IAAI,CAACC,eAAe,GAAG;QAAE,GAAGD;OAAS;AACvC,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACC,eAAe,GAAG,EAAE;AAC3B,IAAA;EACF,CAAC;AACH;AAACkC,oBAAA,CAAAC,QAAA,EA7GoB9C,2BAA2B,CAAA;;;;"}
|