@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.
Files changed (56) hide show
  1. package/declarations/components/hds/advanced-table/index.d.ts +10 -0
  2. package/declarations/components/hds/filter-bar/checkbox.d.ts +21 -0
  3. package/declarations/components/hds/filter-bar/filter-group.d.ts +46 -0
  4. package/declarations/components/hds/filter-bar/filters-dropdown.d.ts +36 -0
  5. package/declarations/components/hds/filter-bar/index.d.ts +40 -0
  6. package/declarations/components/hds/filter-bar/radio.d.ts +21 -0
  7. package/declarations/components/hds/filter-bar/range.d.ts +33 -0
  8. package/declarations/components/hds/filter-bar/tabs/index.d.ts +43 -0
  9. package/declarations/components/hds/filter-bar/tabs/panel.d.ts +28 -0
  10. package/declarations/components/hds/filter-bar/tabs/tab.d.ts +33 -0
  11. package/declarations/components/hds/filter-bar/types.d.ts +52 -0
  12. package/declarations/components.d.ts +10 -0
  13. package/declarations/template-registry.d.ts +27 -0
  14. package/dist/_app_/components/hds/filter-bar/checkbox.js +1 -0
  15. package/dist/_app_/components/hds/filter-bar/filter-group.js +1 -0
  16. package/dist/_app_/components/hds/filter-bar/filters-dropdown.js +1 -0
  17. package/dist/_app_/components/hds/filter-bar/radio.js +1 -0
  18. package/dist/_app_/components/hds/filter-bar/range.js +1 -0
  19. package/dist/_app_/components/hds/filter-bar/tabs/panel.js +1 -0
  20. package/dist/_app_/components/hds/filter-bar/tabs/tab.js +1 -0
  21. package/dist/_app_/components/hds/filter-bar/tabs.js +1 -0
  22. package/dist/_app_/components/hds/filter-bar.js +1 -0
  23. package/dist/components/hds/advanced-table/index.js +10 -1
  24. package/dist/components/hds/advanced-table/index.js.map +1 -1
  25. package/dist/components/hds/filter-bar/checkbox.js +40 -0
  26. package/dist/components/hds/filter-bar/checkbox.js.map +1 -0
  27. package/dist/components/hds/filter-bar/filter-group.js +173 -0
  28. package/dist/components/hds/filter-bar/filter-group.js.map +1 -0
  29. package/dist/components/hds/filter-bar/filters-dropdown.js +125 -0
  30. package/dist/components/hds/filter-bar/filters-dropdown.js.map +1 -0
  31. package/dist/components/hds/filter-bar/index.js +162 -0
  32. package/dist/components/hds/filter-bar/index.js.map +1 -0
  33. package/dist/components/hds/filter-bar/radio.js +40 -0
  34. package/dist/components/hds/filter-bar/radio.js.map +1 -0
  35. package/dist/components/hds/filter-bar/range.js +88 -0
  36. package/dist/components/hds/filter-bar/range.js.map +1 -0
  37. package/dist/components/hds/filter-bar/tabs/index.js +182 -0
  38. package/dist/components/hds/filter-bar/tabs/index.js.map +1 -0
  39. package/dist/components/hds/filter-bar/tabs/panel.js +67 -0
  40. package/dist/components/hds/filter-bar/tabs/panel.js.map +1 -0
  41. package/dist/components/hds/filter-bar/tabs/tab.js +99 -0
  42. package/dist/components/hds/filter-bar/tabs/tab.js.map +1 -0
  43. package/dist/components/hds/filter-bar/types.js +24 -0
  44. package/dist/components/hds/filter-bar/types.js.map +1 -0
  45. package/dist/components.js +10 -0
  46. package/dist/components.js.map +1 -1
  47. package/dist/styles/@hashicorp/design-system-components.css +198 -3
  48. package/dist/styles/@hashicorp/design-system-components.scss +1 -0
  49. package/dist/styles/components/advanced-table.scss +67 -1
  50. package/dist/styles/components/filter-bar.scss +155 -0
  51. package/package.json +10 -1
  52. package/translations/hds/components/advanced-table/en-us.yaml +3 -0
  53. package/translations/hds/components/filter-bar/en-us.yaml +3 -0
  54. package/translations/hds/components/filter-bar/filter-options/en-us.yaml +1 -0
  55. package/translations/hds/components/filter-bar/filters-dropdown/en-us.yaml +7 -0
  56. package/translations/hds/components/filter-bar/range/en-us.yaml +3 -0
@@ -5,8 +5,10 @@
5
5
  import Component from '@glimmer/component';
6
6
  import type Owner from '@ember/owner';
7
7
  import type { WithBoundArgs } from '@glint/template';
8
+ import type { ComponentLike } from '@glint/template';
8
9
  import { HdsAdvancedTableDensityValues, HdsAdvancedTableVerticalAlignmentValues } from './types.ts';
9
10
  import type { HdsAdvancedTableColumn, HdsAdvancedTableDensities, HdsAdvancedTableHorizontalAlignment, HdsAdvancedTableOnSelectionChangeSignature, HdsAdvancedTableThSortOrder, HdsAdvancedTableVerticalAlignment, HdsAdvancedTableModel, HdsAdvancedTableExpandState, HdsAdvancedTableColumnReorderCallback } from './types.ts';
11
+ import type { HdsFilterBarSignature } from '../filter-bar/index.ts';
10
12
  import type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';
11
13
  import type HdsAdvancedTableTd from './td.ts';
12
14
  import type HdsAdvancedTableTh from './th.ts';
@@ -41,12 +43,18 @@ export interface HdsAdvancedTableSignature {
41
43
  hasStickyFirstColumn?: boolean;
42
44
  childrenKey?: string;
43
45
  maxHeight?: string;
46
+ isEmpty?: boolean;
44
47
  onColumnReorder?: HdsAdvancedTableColumnReorderCallback;
45
48
  onColumnResize?: (columnKey: string, newWidth?: string) => void;
46
49
  onSelectionChange?: (selection: HdsAdvancedTableOnSelectionChangeSignature) => void;
47
50
  onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;
48
51
  };
49
52
  Blocks: {
53
+ actions?: [
54
+ {
55
+ FilterBar?: ComponentLike<HdsFilterBarSignature>;
56
+ }
57
+ ];
50
58
  body?: [
51
59
  {
52
60
  Td?: WithBoundArgs<typeof HdsAdvancedTableTd, 'align'>;
@@ -57,6 +65,7 @@ export interface HdsAdvancedTableSignature {
57
65
  isOpen?: HdsAdvancedTableExpandState;
58
66
  }
59
67
  ];
68
+ emptyState?: [];
60
69
  };
61
70
  Element: HTMLDivElement;
62
71
  }
@@ -89,6 +98,7 @@ export default class HdsAdvancedTable extends Component<HdsAdvancedTableSignatur
89
98
  showScrollIndicatorBottom: boolean;
90
99
  stickyColumnOffset: string;
91
100
  constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']);
101
+ get isEmpty(): boolean;
92
102
  get identityKey(): string | undefined;
93
103
  get childrenKey(): string;
94
104
  get hasStickyFirstColumn(): boolean | undefined;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ import type { HdsFilterBarData } from './types.ts';
7
+ export interface HdsFilterBarCheckboxSignature {
8
+ Args: {
9
+ value?: string;
10
+ keyFilter: HdsFilterBarData | undefined;
11
+ onChange?: (event: Event) => void;
12
+ };
13
+ Blocks: {
14
+ default: [];
15
+ };
16
+ Element: HTMLDivElement;
17
+ }
18
+ export default class HdsFilterBarCheckbox extends Component<HdsFilterBarCheckboxSignature> {
19
+ onChange(event: Event): void;
20
+ get isChecked(): boolean;
21
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ import type { WithBoundArgs } from '@glint/template';
7
+ import HdsFilterBarTabsTab from './tabs/tab.ts';
8
+ import HdsFilterBarTabsPanel from './tabs/panel.ts';
9
+ import type { HdsTabsPanelSignature } from '../tabs/panel.ts';
10
+ import HdsFilterBarCheckbox from './checkbox.ts';
11
+ import HdsFilterBarRadio from './radio.ts';
12
+ import type { HdsFilterBarFilter, HdsFilterBarFilters, HdsFilterBarFilterType, HdsFilterBarData, HdsFilterBarRangeFilterSelector } from './types.ts';
13
+ export interface HdsFilterBarFilterGroupSignature {
14
+ Args: {
15
+ tab?: WithBoundArgs<typeof HdsFilterBarTabsTab, never>;
16
+ panel?: WithBoundArgs<typeof HdsFilterBarTabsPanel, never>;
17
+ key: string;
18
+ text: string;
19
+ type?: HdsFilterBarFilterType;
20
+ filters: HdsFilterBarFilters;
21
+ searchEnabled?: boolean;
22
+ onChange: (key: string, keyFilter?: HdsFilterBarFilter) => void;
23
+ };
24
+ Blocks: {
25
+ default: [
26
+ {
27
+ Checkbox?: WithBoundArgs<typeof HdsFilterBarCheckbox, 'keyFilter' | 'onChange'>;
28
+ Radio?: WithBoundArgs<typeof HdsFilterBarRadio, 'keyFilter' | 'onChange'>;
29
+ }
30
+ ];
31
+ };
32
+ Element: HdsTabsPanelSignature['Element'];
33
+ }
34
+ export default class HdsFilterBarFilterGroup extends Component<HdsFilterBarFilterGroupSignature> {
35
+ internalFilters: HdsFilterBarData | undefined;
36
+ private _panelElement;
37
+ private _setUpFilterPanel;
38
+ get type(): HdsFilterBarFilterType;
39
+ get keyFilter(): HdsFilterBarData | undefined;
40
+ get numFilters(): number;
41
+ onSelectionChange(event: Event): void;
42
+ onRangeChange(selector?: HdsFilterBarRangeFilterSelector, value?: number): void;
43
+ get formattedFilters(): HdsFilterBarFilter | undefined;
44
+ get classNames(): string;
45
+ private onSearch;
46
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ import type Owner from '@ember/owner';
7
+ import type { WithBoundArgs } from '@glint/template';
8
+ import HdsFilterBarFilterGroup from './filter-group.ts';
9
+ import type { HdsFilterBarFilters, HdsFilterBarFilter } from './types.ts';
10
+ import type { HdsDropdownSignature } from '../dropdown/index.ts';
11
+ export interface HdsFilterBarFiltersDropdownSignature {
12
+ Args: HdsDropdownSignature['Args'] & {
13
+ filters: HdsFilterBarFilters;
14
+ onFilter?: (filters: HdsFilterBarFilters) => void;
15
+ };
16
+ Blocks: {
17
+ default: [
18
+ {
19
+ FilterGroup?: WithBoundArgs<typeof HdsFilterBarFilterGroup, 'tab' | 'panel' | 'filters' | 'onChange'>;
20
+ }
21
+ ];
22
+ };
23
+ Element: HTMLDivElement;
24
+ }
25
+ export default class HdsFilterBarFiltersDropdown extends Component<HdsDropdownSignature & HdsFilterBarFiltersDropdownSignature> {
26
+ internalFilters: HdsFilterBarFilters;
27
+ constructor(owner: Owner, args: HdsFilterBarFiltersDropdownSignature['Args']);
28
+ private _syncFilters;
29
+ onFilter(key: string, keyFilter?: HdsFilterBarFilter): void;
30
+ onApply(closeDropdown?: () => void): void;
31
+ onClear(closeDropdown?: () => void): void;
32
+ get numFilters(): number;
33
+ get classNames(): string;
34
+ private _updateFilter;
35
+ private _onClose;
36
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ import type { WithBoundArgs } from '@glint/template';
7
+ import type { HdsFilterBarFilters } from './types.ts';
8
+ import HdsDropdown from '../dropdown/index.ts';
9
+ import HdsFilterBarFiltersDropdown from './filters-dropdown.ts';
10
+ export interface HdsFilterBarSignature {
11
+ Args: {
12
+ filters: HdsFilterBarFilters;
13
+ hasSearch?: boolean;
14
+ onFilter?: (filters: HdsFilterBarFilters) => void;
15
+ };
16
+ Blocks: {
17
+ default?: [
18
+ {
19
+ ActionsDropdown?: WithBoundArgs<typeof HdsDropdown, never>;
20
+ FiltersDropdown?: WithBoundArgs<typeof HdsFilterBarFiltersDropdown, 'filters' | 'onFilter'>;
21
+ }
22
+ ];
23
+ };
24
+ Element: HTMLDivElement;
25
+ }
26
+ export default class HdsFilterBar extends Component<HdsFilterBarSignature> {
27
+ _isExpanded: boolean;
28
+ get searchValue(): string;
29
+ onFilter(filters: HdsFilterBarFilters): void;
30
+ clearFilters(): void;
31
+ onSearch(event: Event): void;
32
+ toggleExpand(): void;
33
+ get hasActiveFilters(): boolean;
34
+ private onFilterDismiss;
35
+ private _filterData;
36
+ private _filterText;
37
+ private _filterArrayData;
38
+ private _filterKeyText;
39
+ private _rangeFilterText;
40
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ import type { HdsFilterBarData } from './types.ts';
7
+ export interface HdsFilterBarRadioSignature {
8
+ Args: {
9
+ value?: string;
10
+ keyFilter: HdsFilterBarData | undefined;
11
+ onChange?: (event: Event) => void;
12
+ };
13
+ Blocks: {
14
+ default: [];
15
+ };
16
+ Element: HTMLDivElement;
17
+ }
18
+ export default class HdsFilterBarRadio extends Component<HdsFilterBarRadioSignature> {
19
+ onChange(event: Event): void;
20
+ get isChecked(): boolean;
21
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ import type Owner from '@ember/owner';
7
+ import type { HdsFilterBarData, HdsFilterBarRangeFilterSelector } from './types.ts';
8
+ export declare const SELECTORS: HdsFilterBarRangeFilterSelector[];
9
+ export declare const SELECTORS_DISPLAY_TEXT: Record<HdsFilterBarRangeFilterSelector, string>;
10
+ export declare const SELECTORS_DISPLAY_SYMBOL: Record<HdsFilterBarRangeFilterSelector, string>;
11
+ export interface HdsFilterBarRangeSignature {
12
+ Args: {
13
+ keyFilter: HdsFilterBarData | undefined;
14
+ onChange?: (selector?: HdsFilterBarRangeFilterSelector, value?: number) => void;
15
+ };
16
+ Blocks: {
17
+ default: [];
18
+ };
19
+ Element: HTMLDivElement;
20
+ }
21
+ export default class HdsFilterBarRange extends Component<HdsFilterBarRangeSignature> {
22
+ private _selector;
23
+ private _value;
24
+ private _selectorValues;
25
+ private _selectorInputId;
26
+ private _valueInputId;
27
+ constructor(owner: Owner, args: HdsFilterBarRangeSignature['Args']);
28
+ get stringValue(): string | undefined;
29
+ selectorText(selector: HdsFilterBarRangeFilterSelector): string;
30
+ onSelectorChange(event: Event): void;
31
+ onValueChange(event: Event): void;
32
+ private _onChange;
33
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ import type { WithBoundArgs } from '@glint/template';
7
+ import HdsFilterBarTabsTabComponent from './tab.ts';
8
+ import HdsFilterBarTabsPanelComponent from './panel.ts';
9
+ export interface HdsFilterBarTabsSignature {
10
+ Args: {
11
+ selectedTabIndex?: number;
12
+ ariaLabel: string;
13
+ onClickTab?: (event: MouseEvent, tabIndex: number) => void;
14
+ };
15
+ Blocks: {
16
+ default: [
17
+ {
18
+ Tab?: WithBoundArgs<typeof HdsFilterBarTabsTabComponent, 'selectedTabIndex' | 'tabIds' | 'panelIds' | 'didInsertNode' | 'willDestroyNode' | 'onClick' | 'onKeyUp'>;
19
+ Panel?: WithBoundArgs<typeof HdsFilterBarTabsPanelComponent, 'selectedTabIndex' | 'tabIds' | 'panelIds' | 'didInsertNode' | 'willDestroyNode'>;
20
+ }
21
+ ];
22
+ };
23
+ Element: HTMLDivElement;
24
+ }
25
+ export default class HdsFilterBarTabs extends Component<HdsFilterBarTabsSignature> {
26
+ private _tabIds;
27
+ private _tabNodes;
28
+ private _panelNodes;
29
+ private _panelIds;
30
+ private _selectedTabIndex;
31
+ private _selectedTabId?;
32
+ private _element;
33
+ private _setUpFilterBarTabs;
34
+ didInsertTab(): void;
35
+ willDestroyTab(element: HTMLElement): void;
36
+ didInsertPanel(): void;
37
+ willDestroyPanel(element: HTMLElement): void;
38
+ onClick(event: MouseEvent, tabIndex: number): void;
39
+ onKeyUp(event: KeyboardEvent, tabIndex: number): void;
40
+ focusTab(tabIndex: number, event: KeyboardEvent): void;
41
+ private updateTabs;
42
+ private updatePanels;
43
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ export interface HdsFilterBarTabsPanelSignature {
7
+ Args: {
8
+ selectedTabIndex?: number;
9
+ tabIds?: string[];
10
+ panelIds?: string[];
11
+ didInsertNode?: () => void;
12
+ willDestroyNode?: (element: HTMLElement) => void;
13
+ };
14
+ Blocks: {
15
+ default: [];
16
+ };
17
+ Element: HTMLElement;
18
+ }
19
+ export default class HdsFilterBarTabsPanel extends Component<HdsFilterBarTabsPanelSignature> {
20
+ private _panelId;
21
+ private _elementId?;
22
+ private _setUpPanel;
23
+ get nodeIndex(): number | undefined;
24
+ get coupledTabId(): string | undefined;
25
+ get isVisible(): boolean;
26
+ didInsertNode(element: HTMLElement): void;
27
+ willDestroyNode(element: HTMLElement): void;
28
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ export interface HdsFilterBarTabsTabSignature {
7
+ Args: {
8
+ selectedTabIndex?: number;
9
+ tabIds?: string[];
10
+ panelIds?: string[];
11
+ didInsertNode?: () => void;
12
+ willDestroyNode?: (element: HTMLButtonElement) => void;
13
+ onClick?: (event: MouseEvent, nodeIndex: number) => void;
14
+ onKeyUp?: (event: KeyboardEvent, nodeIndex: number) => void;
15
+ };
16
+ Blocks: {
17
+ default: [];
18
+ };
19
+ Element: HTMLElement;
20
+ }
21
+ export default class HdsFilterBarTabsTab extends Component<HdsFilterBarTabsTabSignature> {
22
+ private _tabId;
23
+ private _elementId?;
24
+ private _setUpTab;
25
+ get nodeIndex(): number | undefined;
26
+ get coupledPanelId(): string | undefined;
27
+ get isSelected(): boolean;
28
+ didInsertNode(element: HTMLButtonElement): void;
29
+ willDestroyNode(element: HTMLButtonElement): void;
30
+ onClick(event: MouseEvent): false | undefined;
31
+ onKeyUp(event: KeyboardEvent): void;
32
+ get classNames(): string;
33
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ export declare enum HdsFilterBarFilterTypeValues {
6
+ multiSelect = "multi-select",
7
+ singleSelect = "single-select",
8
+ range = "range",
9
+ generic = "generic",
10
+ search = "search"
11
+ }
12
+ export type HdsFilterBarFilterType = `${HdsFilterBarFilterTypeValues}`;
13
+ export interface HdsFilterBarGenericFilterData {
14
+ value: unknown;
15
+ }
16
+ export interface HdsFilterBarRangeFilterData {
17
+ selector: HdsFilterBarRangeFilterSelector;
18
+ value: number;
19
+ }
20
+ export type HdsFilterBarData = HdsFilterBarGenericFilterData[] | HdsFilterBarGenericFilterData | HdsFilterBarRangeFilterData;
21
+ export interface HdsFilterBarSingleSelectFilter {
22
+ type: 'single-select';
23
+ text?: string;
24
+ data: HdsFilterBarGenericFilterData;
25
+ }
26
+ export interface HdsFilterBarMultiSelectFilter {
27
+ type: 'multi-select';
28
+ text?: string;
29
+ data: HdsFilterBarGenericFilterData[];
30
+ }
31
+ export interface HdsFilterBarRangeFilter {
32
+ type: 'range';
33
+ text?: string;
34
+ data: HdsFilterBarRangeFilterData;
35
+ }
36
+ export interface HdsFilterBarSearchFilter {
37
+ type: 'search';
38
+ text?: string;
39
+ data: HdsFilterBarGenericFilterData;
40
+ }
41
+ export type HdsFilterBarFilter = HdsFilterBarSingleSelectFilter | HdsFilterBarMultiSelectFilter | HdsFilterBarRangeFilter | HdsFilterBarSearchFilter;
42
+ export interface HdsFilterBarFilters {
43
+ [name: string]: HdsFilterBarFilter;
44
+ }
45
+ export declare enum HdsFilterBarRangeFilterSelectorValues {
46
+ lessThan = "less-than",
47
+ lessThanOrEqualTo = "less-than-or-equal-to",
48
+ equalTo = "equal-to",
49
+ greaterThanOrEqualTo = "greater-than-or-equal-to",
50
+ greaterThan = "greater-than"
51
+ }
52
+ export type HdsFilterBarRangeFilterSelector = `${HdsFilterBarRangeFilterSelectorValues}`;
@@ -87,6 +87,16 @@ export { default as HdsDropdownToggleIcon } from './components/hds/dropdown/togg
87
87
  export * from './components/hds/dropdown/list-item/types.ts';
88
88
  export * from './components/hds/dropdown/toggle/types.ts';
89
89
  export * from './components/hds/dropdown/types.ts';
90
+ export { default as HdsFilterBar } from './components/hds/filter-bar/index.ts';
91
+ export { default as HdsFilterBarCheckbox } from './components/hds/filter-bar/checkbox.ts';
92
+ export { default as HdsFilterBarFiltersDropdown } from './components/hds/filter-bar/filters-dropdown.ts';
93
+ export { default as HdsFilterBarFilterGroup } from './components/hds/filter-bar/filter-group.ts';
94
+ export { default as HdsFilterBarRadio } from './components/hds/filter-bar/radio.ts';
95
+ export { default as HdsFilterBarRange } from './components/hds/filter-bar/range.ts';
96
+ export { default as HdsFilterBarTabs } from './components/hds/filter-bar/tabs/index.ts';
97
+ export { default as HdsFilterBarTabsPanel } from './components/hds/filter-bar/tabs/panel.ts';
98
+ export { default as HdsFilterBarTabsTab } from './components/hds/filter-bar/tabs/tab.ts';
99
+ export * from './components/hds/filter-bar/types.ts';
90
100
  export { default as HdsFlyout } from './components/hds/flyout/index.ts';
91
101
  export * from './components/hds/flyout/types.ts';
92
102
  export { default as HdsForm } from './components/hds/form/index.ts';
@@ -93,6 +93,15 @@ import type HdsDropdownListItemTitleComponent from './components/hds/dropdown/li
93
93
  import type HdsDropdownToggleButtonComponent from './components/hds/dropdown/toggle/button';
94
94
  import type HdsDropdownToggleChevronComponent from './components/hds/dropdown/toggle/chevron';
95
95
  import type HdsDropdownToggleIconComponent from './components/hds/dropdown/toggle/icon';
96
+ import type HdsFilterBarComponent from './components/hds/filter-bar';
97
+ import type HdsFilterBarCheckboxComponent from './components/hds/filter-bar/checkbox';
98
+ import type HdsFilterBarRadioComponent from './components/hds/filter-bar/radio';
99
+ import type HdsFilterBarFiltersDropdownComponent from './components/hds/filter-bar/filters-dropdown';
100
+ import type HdsFilterBarFilterGroupComponent from './components/hds/filter-bar/filter-group';
101
+ import type HdsFilterBarRangeComponent from './components/hds/filter-bar/range';
102
+ import type HdsFilterBarTabsComponent from './components/hds/filter-bar/tabs';
103
+ import type HdsFilterBarTabsPanelComponent from './components/hds/filter-bar/tabs/panel';
104
+ import type HdsFilterBarTabsTabComponent from './components/hds/filter-bar/tabs/tab';
96
105
  import type HdsFlyoutComponent from './components/hds/flyout';
97
106
  import type HdsFormComponent from './components/hds/form';
98
107
  import type HdsFormCharacterCountComponent from './components/hds/form/character-count';
@@ -424,6 +433,24 @@ export default interface HdsComponentsRegistry {
424
433
  'hds/dropdown/toggle/chevron': typeof HdsDropdownToggleChevronComponent;
425
434
  'Hds::Dropdown::Toggle::Icon': typeof HdsDropdownToggleIconComponent;
426
435
  'hds/dropdown/toggle/icon': typeof HdsDropdownToggleIconComponent;
436
+ 'Hds::FilterBar': typeof HdsFilterBarComponent;
437
+ 'hds/filter-bar': typeof HdsFilterBarComponent;
438
+ 'Hds::FilterBar::Checkbox': typeof HdsFilterBarCheckboxComponent;
439
+ 'hds/filter-bar/checkbox': typeof HdsFilterBarCheckboxComponent;
440
+ 'Hds::FilterBar::Radio': typeof HdsFilterBarRadioComponent;
441
+ 'hds/filter-bar/radio': typeof HdsFilterBarRadioComponent;
442
+ 'Hds::FilterBar::FiltersDropdown': typeof HdsFilterBarFiltersDropdownComponent;
443
+ 'hds/filter-bar/filters-dropdown': typeof HdsFilterBarFiltersDropdownComponent;
444
+ 'Hds::FilterBar::FilterGroup': typeof HdsFilterBarFilterGroupComponent;
445
+ 'hds/filter-bar/filter-group': typeof HdsFilterBarFilterGroupComponent;
446
+ 'Hds::FilterBar::Range': typeof HdsFilterBarRangeComponent;
447
+ 'hds/filter-bar/range': typeof HdsFilterBarRangeComponent;
448
+ 'Hds::FilterBar::Tabs': typeof HdsFilterBarTabsComponent;
449
+ 'hds/filter-bar/tabs': typeof HdsFilterBarTabsComponent;
450
+ 'Hds::FilterBar::Tabs::Panel': typeof HdsFilterBarTabsPanelComponent;
451
+ 'hds/filter-bar/tabs/panel': typeof HdsFilterBarTabsPanelComponent;
452
+ 'Hds::FilterBar::Tabs::Tab': typeof HdsFilterBarTabsTabComponent;
453
+ 'hds/filter-bar/tabs/tab': typeof HdsFilterBarTabsTabComponent;
427
454
  'Hds::Flyout': typeof HdsFlyoutComponent;
428
455
  'hds/flyout': typeof HdsFlyoutComponent;
429
456
  'Hds::Form': typeof HdsFormComponent;
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/checkbox";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/filter-group";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/filters-dropdown";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/radio";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/range";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/tabs/panel";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/tabs/tab";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/tabs/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/index";
@@ -11,7 +11,7 @@ import { precompileTemplate } from '@ember/template-compilation';
11
11
  import { g, i, n } from 'decorator-transforms/runtime';
12
12
  import { setComponentTemplate } from '@ember/component';
13
13
 
14
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<div\n class=\"hds-advanced-table__container\n {{(if this.isStickyHeaderPinned \'hds-advanced-table__container--header-is-pinned\')}}\"\n {{did-update this.setupTableModelData @columns @model @sortBy @sortOrder}}\n {{did-update this.updateTableModelColumnOrder @columnOrder}}\n ...attributes\n>\n {{! Caption }}\n <div id={{this._captionId}} class=\"sr-only hds-advanced-table__caption\" aria-live=\"polite\">\n {{@caption}}\n {{this.sortedMessageText}}\n {{this.reorderedMessageText}}\n </div>\n\n {{! Grid }}\n <div\n class={{this.classNames}}\n role=\"grid\"\n aria-describedby={{this._captionId}}\n {{style\n grid-template-columns=this.gridTemplateColumns\n --hds-advanced-table-sticky-column-offset=this.stickyColumnOffset\n max-height=@maxHeight\n }}\n {{this._registerGridElement}}\n {{this._setUpScrollWrapper}}\n >\n {{! Header }}\n <div\n class={{this.theadClassNames}}\n role=\"rowgroup\"\n {{this._setUpThead}}\n {{on \"dragleave\" (fn (mut this._tableModel.reorderHoveredColumn) null)}}\n >\n <Hds::AdvancedTable::Tr\n @selectionScope=\"col\"\n @onClickSortBySelected={{if @selectableColumnKey (fn this._tableModel.setSortBy @selectableColumnKey)}}\n @sortBySelectedOrder={{if (eq this._tableModel.sortBy @selectableColumnKey) this._tableModel.sortOrder}}\n @isSelectable={{this.isSelectable}}\n @onSelectionChange={{this.onSelectionAllChange}}\n @didInsert={{this.didInsertSelectAllCheckbox}}\n @willDestroy={{this.willDestroySelectAllCheckbox}}\n @selectionAriaLabelSuffix=\"all rows\"\n @hasStickyColumn={{this.hasStickyFirstColumn}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n >\n {{#each this._tableModel.orderedColumns as |column|}}\n {{#if column.isSortable}}\n <Hds::AdvancedTable::ThSort\n @column={{column}}\n @sortOrder={{if (eq column.key this._tableModel.sortBy) this._tableModel.sortOrder}}\n @onClickSort={{if column.key (fn this._tableModel.setSortBy column.key)}}\n @align={{column.align}}\n @tooltip={{column.tooltip}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @hasSelectableRows={{this.isSelectable}}\n @isStickyColumn={{this._isStickyColumn column}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @tableHeight={{this._tableHeight}}\n @onColumnResize={{@onColumnResize}}\n @onPinFirstColumn={{this._onPinFirstColumn}}\n @onReorderDragEnd={{fn (mut this._tableModel.reorderDraggedColumn) null}}\n @onReorderDragStart={{fn (mut this._tableModel.reorderDraggedColumn)}}\n @onReorderDrop={{this._tableModel.moveColumnToDropTarget}}\n {{this._registerThElement column}}\n >\n {{column.label}}\n </Hds::AdvancedTable::ThSort>\n {{else}}\n <Hds::AdvancedTable::Th\n @align={{column.align}}\n @column={{column}}\n @hasExpandAllButton={{this._tableModel.hasRowsWithChildren}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @hasSelectableRows={{this.isSelectable}}\n @isExpanded={{this._tableModel.expandState}}\n @isExpandable={{column.isExpandable}}\n @isStickyColumn={{this._isStickyColumn column}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @tableHeight={{this._tableHeight}}\n @tooltip={{column.tooltip}}\n @onClickToggle={{this._tableModel.toggleAll}}\n @onColumnResize={{@onColumnResize}}\n @onPinFirstColumn={{this._onPinFirstColumn}}\n @onReorderDragEnd={{fn (mut this._tableModel.reorderDraggedColumn) null}}\n @onReorderDragStart={{fn (mut this._tableModel.reorderDraggedColumn)}}\n @onReorderDrop={{this._tableModel.moveColumnToDropTarget}}\n {{this._registerThElement column}}\n >\n {{column.label}}\n </Hds::AdvancedTable::Th>\n {{/if}}\n {{/each}}\n </Hds::AdvancedTable::Tr>\n\n {{#if this.showScrollIndicatorTop}}\n <div class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-top\" />\n {{/if}}\n </div>\n\n {{! Body }}\n <div class=\"hds-advanced-table__tbody\" role=\"rowgroup\">\n {{! ----------------------------------------------------------------------------------------\n IMPORTANT: we loop on the `model` array and for each record\n we yield the Tr/Td/Th elements _and_ the record itself as `data`\n this means the consumer will *have to* use the `data` key to access it in their template\n -------------------------------------------------------------------------------------------- }}\n {{#each this._tableModel.sortedRows key=this.identityKey as |record index|}}\n {{#if this._tableModel.hasRowsWithChildren}}\n <Hds::AdvancedTable::ExpandableTrGroup\n @record={{record}}\n @rowIndex={{index}}\n @onClickToggle={{record.onClickToggle}}\n as |T|\n >\n {{yield\n (hash\n Tr=(component\n \"hds/advanced-table/tr\"\n isLastRow=(eq this._tableModel.lastVisibleRow.id T.data.id)\n isParentRow=T.isExpandable\n depth=T.depth\n displayRow=T.shouldDisplayChildRows\n data=T.data\n )\n Th=(component\n \"hds/advanced-table/th\"\n depth=T.depth\n isExpandable=T.isExpandable\n isExpanded=T.isExpanded\n newLabel=T.id\n parentId=T.parentId\n scope=\"row\"\n onClickToggle=T.onClickToggle\n )\n Td=(component \"hds/advanced-table/td\" align=@align)\n data=T.data\n isOpen=T.isExpanded\n rowIndex=T.rowIndex\n )\n to=\"body\"\n }}\n </Hds::AdvancedTable::ExpandableTrGroup>\n {{else}}\n {{yield\n (hash\n Tr=(component\n \"hds/advanced-table/tr\"\n selectionScope=\"row\"\n isLastRow=(eq this._tableModel.lastVisibleRow.id record.id)\n isSelectable=this.isSelectable\n onSelectionChange=this.onSelectionRowChange\n didInsert=this.didInsertRowCheckbox\n willDestroy=this.willDestroyRowCheckbox\n selectionAriaLabelSuffix=@selectionAriaLabelSuffix\n hasStickyColumn=this.hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n data=record\n )\n Th=(component\n \"hds/advanced-table/th\"\n scope=\"row\"\n isStickyColumn=this.hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n Td=(component \"hds/advanced-table/td\" align=@align)\n data=record\n rowIndex=index\n )\n to=\"body\"\n }}\n {{/if}}\n {{/each}}\n </div>\n </div>\n\n {{#if this.showScrollIndicatorLeft}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-left\"\n {{style height=this.scrollIndicatorDimensions.height left=this.scrollIndicatorDimensions.left}}\n />\n {{/if}}\n\n {{#if this.showScrollIndicatorRight}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-right\"\n {{style height=this.scrollIndicatorDimensions.height right=this.scrollIndicatorDimensions.right}}\n />\n {{/if}}\n\n {{#if this.showScrollIndicatorBottom}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-bottom\"\n {{style bottom=this.scrollIndicatorDimensions.bottom width=this.scrollIndicatorDimensions.width}}\n />\n {{/if}}\n</div>");
14
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n{{#if (has-block \"actions\")}}\n <div class=\"hds-advanced-table__actions\">\n {{yield (hash FilterBar=(component \"hds/filter-bar\")) to=\"actions\"}}\n </div>\n{{/if}}\n<div\n class=\"hds-advanced-table__container\n {{(if this.isStickyHeaderPinned \'hds-advanced-table__container--header-is-pinned\')}}\"\n {{did-update this.setupTableModelData @columns @model @sortBy @sortOrder}}\n {{did-update this.updateTableModelColumnOrder @columnOrder}}\n ...attributes\n>\n {{! Caption }}\n <div id={{this._captionId}} class=\"sr-only hds-advanced-table__caption\" aria-live=\"polite\">\n {{@caption}}\n {{this.sortedMessageText}}\n {{this.reorderedMessageText}}\n </div>\n\n {{! Grid }}\n <div\n class={{this.classNames}}\n role=\"grid\"\n aria-describedby={{this._captionId}}\n {{style\n grid-template-columns=this.gridTemplateColumns\n --hds-advanced-table-sticky-column-offset=this.stickyColumnOffset\n max-height=@maxHeight\n }}\n {{this._registerGridElement}}\n {{this._setUpScrollWrapper}}\n >\n {{! Header }}\n <div\n class={{this.theadClassNames}}\n role=\"rowgroup\"\n {{this._setUpThead}}\n {{on \"dragleave\" (fn (mut this._tableModel.reorderHoveredColumn) null)}}\n >\n <Hds::AdvancedTable::Tr\n @selectionScope=\"col\"\n @onClickSortBySelected={{if @selectableColumnKey (fn this._tableModel.setSortBy @selectableColumnKey)}}\n @sortBySelectedOrder={{if (eq this._tableModel.sortBy @selectableColumnKey) this._tableModel.sortOrder}}\n @isSelectable={{this.isSelectable}}\n @onSelectionChange={{this.onSelectionAllChange}}\n @didInsert={{this.didInsertSelectAllCheckbox}}\n @willDestroy={{this.willDestroySelectAllCheckbox}}\n @selectionAriaLabelSuffix=\"all rows\"\n @hasStickyColumn={{this.hasStickyFirstColumn}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n >\n {{#each this._tableModel.orderedColumns as |column|}}\n {{#if column.isSortable}}\n <Hds::AdvancedTable::ThSort\n @column={{column}}\n @sortOrder={{if (eq column.key this._tableModel.sortBy) this._tableModel.sortOrder}}\n @onClickSort={{if column.key (fn this._tableModel.setSortBy column.key)}}\n @align={{column.align}}\n @tooltip={{column.tooltip}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @hasSelectableRows={{this.isSelectable}}\n @isStickyColumn={{this._isStickyColumn column}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @tableHeight={{this._tableHeight}}\n @onColumnResize={{@onColumnResize}}\n @onPinFirstColumn={{this._onPinFirstColumn}}\n @onReorderDragEnd={{fn (mut this._tableModel.reorderDraggedColumn) null}}\n @onReorderDragStart={{fn (mut this._tableModel.reorderDraggedColumn)}}\n @onReorderDrop={{this._tableModel.moveColumnToDropTarget}}\n {{this._registerThElement column}}\n >\n {{column.label}}\n </Hds::AdvancedTable::ThSort>\n {{else}}\n <Hds::AdvancedTable::Th\n @align={{column.align}}\n @column={{column}}\n @hasExpandAllButton={{this._tableModel.hasRowsWithChildren}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @hasSelectableRows={{this.isSelectable}}\n @isExpanded={{this._tableModel.expandState}}\n @isExpandable={{column.isExpandable}}\n @isStickyColumn={{this._isStickyColumn column}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @tableHeight={{this._tableHeight}}\n @tooltip={{column.tooltip}}\n @onClickToggle={{this._tableModel.toggleAll}}\n @onColumnResize={{@onColumnResize}}\n @onPinFirstColumn={{this._onPinFirstColumn}}\n @onReorderDragEnd={{fn (mut this._tableModel.reorderDraggedColumn) null}}\n @onReorderDragStart={{fn (mut this._tableModel.reorderDraggedColumn)}}\n @onReorderDrop={{this._tableModel.moveColumnToDropTarget}}\n {{this._registerThElement column}}\n >\n {{column.label}}\n </Hds::AdvancedTable::Th>\n {{/if}}\n {{/each}}\n </Hds::AdvancedTable::Tr>\n\n {{#if this.showScrollIndicatorTop}}\n <div class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-top\" />\n {{/if}}\n </div>\n\n {{! Body }}\n {{#unless this.isEmpty}}\n <div class=\"hds-advanced-table__tbody\" role=\"rowgroup\">\n {{! ----------------------------------------------------------------------------------------\n IMPORTANT: we loop on the `model` array and for each record\n we yield the Tr/Td/Th elements _and_ the record itself as `data`\n this means the consumer will *have to* use the `data` key to access it in their template\n -------------------------------------------------------------------------------------------- }}\n {{#each this._tableModel.sortedRows key=this.identityKey as |record index|}}\n {{#if this._tableModel.hasRowsWithChildren}}\n <Hds::AdvancedTable::ExpandableTrGroup\n @record={{record}}\n @rowIndex={{index}}\n @onClickToggle={{record.onClickToggle}}\n as |T|\n >\n {{yield\n (hash\n Tr=(component\n \"hds/advanced-table/tr\"\n isLastRow=(eq this._tableModel.lastVisibleRow.id T.data.id)\n isParentRow=T.isExpandable\n depth=T.depth\n displayRow=T.shouldDisplayChildRows\n data=T.data\n )\n Th=(component\n \"hds/advanced-table/th\"\n depth=T.depth\n isExpandable=T.isExpandable\n isExpanded=T.isExpanded\n newLabel=T.id\n parentId=T.parentId\n scope=\"row\"\n onClickToggle=T.onClickToggle\n )\n Td=(component \"hds/advanced-table/td\" align=@align)\n data=T.data\n isOpen=T.isExpanded\n rowIndex=T.rowIndex\n )\n to=\"body\"\n }}\n </Hds::AdvancedTable::ExpandableTrGroup>\n {{else}}\n {{yield\n (hash\n Tr=(component\n \"hds/advanced-table/tr\"\n selectionScope=\"row\"\n isLastRow=(eq this._tableModel.lastVisibleRow.id record.id)\n isSelectable=this.isSelectable\n onSelectionChange=this.onSelectionRowChange\n didInsert=this.didInsertRowCheckbox\n willDestroy=this.willDestroyRowCheckbox\n selectionAriaLabelSuffix=@selectionAriaLabelSuffix\n hasStickyColumn=this.hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n data=record\n )\n Th=(component\n \"hds/advanced-table/th\"\n scope=\"row\"\n isStickyColumn=this.hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n Td=(component \"hds/advanced-table/td\" align=@align)\n data=record\n rowIndex=index\n )\n to=\"body\"\n }}\n {{/if}}\n {{/each}}\n </div>\n {{/unless}}\n </div>\n\n {{#if this.showScrollIndicatorLeft}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-left\"\n {{style height=this.scrollIndicatorDimensions.height left=this.scrollIndicatorDimensions.left}}\n />\n {{/if}}\n\n {{#if this.showScrollIndicatorRight}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-right\"\n {{style height=this.scrollIndicatorDimensions.height right=this.scrollIndicatorDimensions.right}}\n />\n {{/if}}\n\n {{#unless this.isEmpty}}\n {{#if this.showScrollIndicatorBottom}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-bottom\"\n {{style bottom=this.scrollIndicatorDimensions.bottom width=this.scrollIndicatorDimensions.width}}\n />\n {{/if}}\n {{/unless}}\n\n {{#if this.isEmpty}}\n <div class=\"hds-advanced-table__empty-state\">\n <div class=\"hds-advanced-table__empty-state__content\">\n {{#if (has-block \"emptyState\")}}\n {{yield to=\"emptyState\"}}\n {{else}}\n <Hds::Layout::Flex @direction=\"column\" @gap=\"8\">\n <Hds::Text::Display @tag=\"h3\" @size=\"300\">{{hds-t\n \"hds.components.advanced-table.empty-state.title\"\n default=\"No data available\"\n }}</Hds::Text::Display>\n <Hds::Text::Body>\n {{hds-t\n \"hds.components.advanced-table.empty-state.description\"\n default=\"There is currently no data to display in the table.\"\n }}\n </Hds::Text::Body>\n </Hds::Layout::Flex>\n {{/if}}\n </div>\n </div>\n {{/if}}\n</div>");
15
15
 
16
16
  /**
17
17
  * Copyright (c) HashiCorp, Inc.
@@ -194,6 +194,15 @@ class HdsAdvancedTable extends Component {
194
194
  this.hasPinnedFirstColumn = true;
195
195
  }
196
196
  }
197
+ get isEmpty() {
198
+ const {
199
+ isEmpty
200
+ } = this.args;
201
+ if (isEmpty !== undefined) {
202
+ return isEmpty;
203
+ }
204
+ return false;
205
+ }
197
206
  get identityKey() {
198
207
  // 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
199
208
  if (this.args.identityKey === 'none') {