@hashicorp/design-system-components 5.1.0-rc-20251106155636 → 5.1.0-rc-20251125203828

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 (73) hide show
  1. package/declarations/components/hds/dropdown/list-item/checkbox.d.ts +1 -0
  2. package/declarations/components/hds/dropdown/list-item/radio.d.ts +1 -0
  3. package/declarations/components/hds/filter-bar/{filters-dropdown.d.ts → dropdown.d.ts} +7 -5
  4. package/declarations/components/hds/filter-bar/filter-group/checkbox.d.ts +22 -0
  5. package/declarations/components/hds/filter-bar/filter-group/date.d.ts +47 -0
  6. package/declarations/components/hds/filter-bar/filter-group/generic.d.ts +24 -0
  7. package/declarations/components/hds/filter-bar/filter-group/index.d.ts +51 -0
  8. package/declarations/components/hds/filter-bar/filter-group/numerical.d.ts +45 -0
  9. package/declarations/components/hds/filter-bar/filter-group/radio.d.ts +22 -0
  10. package/declarations/components/hds/filter-bar/index.d.ts +11 -3
  11. package/declarations/components/hds/filter-bar/tabs/tab.d.ts +1 -0
  12. package/declarations/components/hds/filter-bar/types.d.ts +47 -12
  13. package/declarations/components/hds/form/text-input/field.d.ts +1 -1
  14. package/declarations/components.d.ts +7 -5
  15. package/declarations/template-registry.d.ts +19 -13
  16. package/dist/_app_/components/hds/filter-bar/{checkbox.js → dropdown.js} +1 -1
  17. package/dist/_app_/components/hds/filter-bar/filter-group/checkbox.js +1 -0
  18. package/dist/_app_/components/hds/filter-bar/{filters-dropdown.js → filter-group/date.js} +1 -1
  19. package/dist/_app_/components/hds/filter-bar/{range.js → filter-group/generic.js} +1 -1
  20. package/dist/_app_/components/hds/filter-bar/filter-group/numerical.js +1 -0
  21. package/dist/_app_/components/hds/filter-bar/{radio.js → filter-group/radio.js} +1 -1
  22. package/dist/_app_/components/hds/filter-bar/filter-group.js +1 -1
  23. package/dist/components/hds/advanced-table/index.js +1 -1
  24. package/dist/components/hds/dropdown/list-item/checkbox.js.map +1 -1
  25. package/dist/components/hds/dropdown/list-item/radio.js.map +1 -1
  26. package/dist/components/hds/filter-bar/{filters-dropdown.js → dropdown.js} +25 -30
  27. package/dist/components/hds/filter-bar/dropdown.js.map +1 -0
  28. package/dist/components/hds/filter-bar/{checkbox.js → filter-group/checkbox.js} +9 -8
  29. package/dist/components/hds/filter-bar/filter-group/checkbox.js.map +1 -0
  30. package/dist/components/hds/filter-bar/filter-group/date.js +164 -0
  31. package/dist/components/hds/filter-bar/filter-group/date.js.map +1 -0
  32. package/dist/components/hds/filter-bar/filter-group/generic.js +43 -0
  33. package/dist/components/hds/filter-bar/filter-group/generic.js.map +1 -0
  34. package/dist/components/hds/filter-bar/{filter-group.js → filter-group/index.js} +67 -13
  35. package/dist/components/hds/filter-bar/filter-group/index.js.map +1 -0
  36. package/dist/components/hds/filter-bar/filter-group/numerical.js +163 -0
  37. package/dist/components/hds/filter-bar/filter-group/numerical.js.map +1 -0
  38. package/dist/components/hds/filter-bar/{radio.js → filter-group/radio.js} +9 -8
  39. package/dist/components/hds/filter-bar/filter-group/radio.js.map +1 -0
  40. package/dist/components/hds/filter-bar/index.js +96 -18
  41. package/dist/components/hds/filter-bar/index.js.map +1 -1
  42. package/dist/components/hds/filter-bar/tabs/index.js +0 -1
  43. package/dist/components/hds/filter-bar/tabs/index.js.map +1 -1
  44. package/dist/components/hds/filter-bar/tabs/tab.js +1 -2
  45. package/dist/components/hds/filter-bar/tabs/tab.js.map +1 -1
  46. package/dist/components/hds/filter-bar/types.js +20 -9
  47. package/dist/components/hds/filter-bar/types.js.map +1 -1
  48. package/dist/components.js +8 -6
  49. package/dist/components.js.map +1 -1
  50. package/dist/helpers/hds-link-to-query.js +0 -1
  51. package/dist/helpers/hds-link-to-query.js.map +1 -1
  52. package/dist/styles/@hashicorp/design-system-components.css +190 -1621
  53. package/dist/styles/components/app-header.scss +6 -9
  54. package/dist/styles/components/filter-bar.scss +95 -86
  55. package/dist/styles/components/side-nav/header.scss +4 -12
  56. package/dist/styles/mixins/_interactive-dark-theme.scss +7 -4
  57. package/package.json +7 -5
  58. package/translations/hds/components/filter-bar/date/en-us.yaml +18 -0
  59. package/translations/hds/components/filter-bar/en-us.yaml +6 -0
  60. package/translations/hds/components/filter-bar/filter-group/en-us.yaml +1 -0
  61. package/translations/hds/components/filter-bar/filter-group/numerical/en-us.yaml +15 -0
  62. package/translations/hds/components/filter-bar/filters-dropdown/en-us.yaml +1 -1
  63. package/declarations/components/hds/filter-bar/checkbox.d.ts +0 -21
  64. package/declarations/components/hds/filter-bar/filter-group.d.ts +0 -46
  65. package/declarations/components/hds/filter-bar/radio.d.ts +0 -21
  66. package/declarations/components/hds/filter-bar/range.d.ts +0 -33
  67. package/dist/components/hds/filter-bar/checkbox.js.map +0 -1
  68. package/dist/components/hds/filter-bar/filter-group.js.map +0 -1
  69. package/dist/components/hds/filter-bar/filters-dropdown.js.map +0 -1
  70. package/dist/components/hds/filter-bar/radio.js.map +0 -1
  71. package/dist/components/hds/filter-bar/range.js +0 -88
  72. package/dist/components/hds/filter-bar/range.js.map +0 -1
  73. package/translations/hds/components/filter-bar/range/en-us.yaml +0 -3
@@ -0,0 +1,163 @@
1
+ import Component from '@glimmer/component';
2
+ import { action } from '@ember/object';
3
+ import { tracked } from '@glimmer/tracking';
4
+ import { guidFor } from '@ember/object/internals';
5
+ import { service } from '@ember/service';
6
+ import { HdsFilterBarNumericalFilterSelectorValues } from '../types.js';
7
+ import { precompileTemplate } from '@ember/template-compilation';
8
+ import { g, i, n } from 'decorator-transforms/runtime';
9
+ import { setComponentTemplate } from '@ember/component';
10
+
11
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<div class=\"hds-filter-bar__filter-group__numerical\">\n <Hds::Layout::Flex class=\"hds-filter-bar__filter-group__fields\" @direction=\"column\" @gap=\"16\">\n <Hds::Form::Select::Field\n @id={{this._selectorInputId}}\n class=\"hds-filter-bar__filter-group__field\"\n {{on \"change\" this.onSelectorChange}}\n as |F|\n >\n <F.Label>\n {{hds-t \"hds.components.filter-bar.filter-group.numerical.label\" default=\"Number is\"}}\n </F.Label>\n <F.Options>\n <option value=\"\">{{hds-t\n \"hds.components.filter-bar.filter-group.numerical.selector-input.default-value\"\n default=\"Pick a selector\"\n }}</option>\n {{#each this._selectorValues as |selectorValue|}}\n <option value={{selectorValue}} selected={{eq selectorValue this._selector}}>{{this._selectorText\n selectorValue\n }}</option>\n {{/each}}\n </F.Options>\n </Hds::Form::Select::Field>\n {{#if (eq this._selector \"between\")}}\n <Hds::Layout::Flex @gap=\"8\">\n <Hds::Form::TextInput::Base\n @id={{this._betweenValueStartInputId}}\n @type=\"text\"\n @value={{this.stringBetweenValueStart}}\n placeholder={{hds-t \"hds.components.filter-bar.between-value-inputs.start-placeholder\" default=\"Start\"}}\n class=\"hds-filter-bar__filter-group__field\"\n {{on \"change\" this.onBetweenValueStartChange}}\n />\n <Hds::Form::TextInput::Base\n @id={{this._betweenValueEndInputId}}\n @type=\"text\"\n @value={{this.stringBetweenValueEnd}}\n placeholder={{hds-t \"hds.components.filter-bar.between-value-inputs.end-placeholder\" default=\"End\"}}\n class=\"hds-filter-bar__filter-group__field\"\n {{on \"change\" this.onBetweenValueEndChange}}\n />\n </Hds::Layout::Flex>\n {{else}}\n <Hds::Form::TextInput::Base\n @id={{this._valueInputId}}\n @type=\"text\"\n @value={{this.stringValue}}\n placeholder={{hds-t\n \"hds.components.filter-bar.filter-group.numerical.value-input.placeholder\"\n default=\"Enter a value\"\n }}\n class=\"hds-filter-bar__filter-group__field\"\n {{on \"change\" this.onValueChange}}\n />\n {{/if}}\n </Hds::Layout::Flex>\n <div class=\"hds-filter-bar__filter-group__clear\">\n <Hds::Button\n @text={{hds-t \"hds.components.filter-bar.filter-group.numerical.clear\" default=\"Clear filter\"}}\n @color=\"tertiary\"\n @icon=\"rotate-ccw\"\n @isInline={{true}}\n {{on \"click\" this.onClear}}\n />\n </div>\n</div>");
12
+
13
+ /**
14
+ * Copyright (c) HashiCorp, Inc.
15
+ * SPDX-License-Identifier: MPL-2.0
16
+ */
17
+
18
+ const NUMERICAL_SELECTORS = Object.values(HdsFilterBarNumericalFilterSelectorValues);
19
+ const NUMERICAL_SELECTORS_TEXT = {
20
+ [HdsFilterBarNumericalFilterSelectorValues.lessThan]: '<',
21
+ [HdsFilterBarNumericalFilterSelectorValues.lessThanOrEqualTo]: '≤',
22
+ [HdsFilterBarNumericalFilterSelectorValues.equalTo]: '=',
23
+ [HdsFilterBarNumericalFilterSelectorValues.greaterThanOrEqualTo]: '≥',
24
+ [HdsFilterBarNumericalFilterSelectorValues.greaterThan]: '>',
25
+ [HdsFilterBarNumericalFilterSelectorValues.between]: 'between'
26
+ };
27
+ const NUMERICAL_SELECTORS_INPUT_TEXT = {
28
+ [HdsFilterBarNumericalFilterSelectorValues.lessThan]: 'Less than (<)',
29
+ [HdsFilterBarNumericalFilterSelectorValues.lessThanOrEqualTo]: 'Less than or equal to (≤)',
30
+ [HdsFilterBarNumericalFilterSelectorValues.equalTo]: 'Equal to (=)',
31
+ [HdsFilterBarNumericalFilterSelectorValues.greaterThanOrEqualTo]: 'Greater than or equal to (≥)',
32
+ [HdsFilterBarNumericalFilterSelectorValues.greaterThan]: 'Greater than (>)',
33
+ [HdsFilterBarNumericalFilterSelectorValues.between]: 'Between'
34
+ };
35
+ class HdsFilterBarFilterGroupNumerical extends Component {
36
+ static {
37
+ g(this.prototype, "hdsIntl", [service]);
38
+ }
39
+ #hdsIntl = (i(this, "hdsIntl"), void 0);
40
+ static {
41
+ g(this.prototype, "_selector", [tracked]);
42
+ }
43
+ #_selector = (i(this, "_selector"), void 0);
44
+ static {
45
+ g(this.prototype, "_value", [tracked]);
46
+ }
47
+ #_value = (i(this, "_value"), void 0);
48
+ static {
49
+ g(this.prototype, "_betweenValueStart", [tracked]);
50
+ }
51
+ #_betweenValueStart = (i(this, "_betweenValueStart"), void 0);
52
+ static {
53
+ g(this.prototype, "_betweenValueEnd", [tracked]);
54
+ }
55
+ #_betweenValueEnd = (i(this, "_betweenValueEnd"), void 0);
56
+ _selectorValues = NUMERICAL_SELECTORS;
57
+ _selectorInputId = 'selector-input-' + guidFor(this);
58
+ _valueInputId = 'value-input-' + guidFor(this);
59
+ _betweenValueStartInputId = 'between-value-start-input-' + guidFor(this);
60
+ _betweenValueEndInputId = 'between-value-end-input-' + guidFor(this);
61
+ constructor(owner, args) {
62
+ super(owner, args);
63
+ const {
64
+ keyFilter
65
+ } = this.args;
66
+ if (keyFilter && keyFilter.type === 'numerical') {
67
+ const data = keyFilter.data;
68
+ this._selector = data?.selector;
69
+ if (data.selector === 'between') {
70
+ if (data.value && typeof data.value === 'object') {
71
+ this._betweenValueStart = Number(data.value.start);
72
+ this._betweenValueEnd = Number(data.value.end);
73
+ }
74
+ } else {
75
+ this._value = Number(data.value);
76
+ }
77
+ }
78
+ }
79
+ get stringValue() {
80
+ return this._value !== undefined ? this._value.toString() : undefined;
81
+ }
82
+ get stringBetweenValueStart() {
83
+ return this._betweenValueStart !== undefined ? this._betweenValueStart.toString() : undefined;
84
+ }
85
+ get stringBetweenValueEnd() {
86
+ return this._betweenValueEnd !== undefined ? this._betweenValueEnd.toString() : undefined;
87
+ }
88
+ onSelectorChange(event) {
89
+ const select = event.target;
90
+ this._selector = select.value;
91
+ if (this._selector === 'between') {
92
+ this._value = undefined;
93
+ } else {
94
+ this._betweenValueStart = undefined;
95
+ this._betweenValueEnd = undefined;
96
+ }
97
+ this._onChange();
98
+ }
99
+ static {
100
+ n(this.prototype, "onSelectorChange", [action]);
101
+ }
102
+ onValueChange(event) {
103
+ const input = event.target;
104
+ this._value = parseFloat(input.value);
105
+ this._onChange();
106
+ }
107
+ static {
108
+ n(this.prototype, "onValueChange", [action]);
109
+ }
110
+ onBetweenValueStartChange(event) {
111
+ const input = event.target;
112
+ this._betweenValueStart = parseFloat(input.value);
113
+ this._onChange();
114
+ }
115
+ static {
116
+ n(this.prototype, "onBetweenValueStartChange", [action]);
117
+ }
118
+ onBetweenValueEndChange(event) {
119
+ const input = event.target;
120
+ this._betweenValueEnd = parseFloat(input.value);
121
+ this._onChange();
122
+ }
123
+ static {
124
+ n(this.prototype, "onBetweenValueEndChange", [action]);
125
+ }
126
+ onClear() {
127
+ this._resetInputValues();
128
+ this._onChange();
129
+ }
130
+ static {
131
+ n(this.prototype, "onClear", [action]);
132
+ }
133
+ _onChange() {
134
+ const {
135
+ onChange
136
+ } = this.args;
137
+ if (onChange && typeof onChange === 'function') {
138
+ if (this._selector === 'between' && this._betweenValueStart !== undefined && this._betweenValueEnd !== undefined) {
139
+ onChange(this._selector, {
140
+ start: this._betweenValueStart,
141
+ end: this._betweenValueEnd
142
+ });
143
+ } else {
144
+ onChange(this._selector, this._value);
145
+ }
146
+ }
147
+ }
148
+ _selectorText = selector => {
149
+ return this.hdsIntl.t(`hds.components.filter-bar.filter-group.numerical.selector-input.${selector}`, {
150
+ default: NUMERICAL_SELECTORS_INPUT_TEXT[selector]
151
+ });
152
+ };
153
+ _resetInputValues = () => {
154
+ this._selector = undefined;
155
+ this._value = undefined;
156
+ this._betweenValueStart = undefined;
157
+ this._betweenValueEnd = undefined;
158
+ };
159
+ }
160
+ setComponentTemplate(TEMPLATE, HdsFilterBarFilterGroupNumerical);
161
+
162
+ export { NUMERICAL_SELECTORS, NUMERICAL_SELECTORS_INPUT_TEXT, NUMERICAL_SELECTORS_TEXT, HdsFilterBarFilterGroupNumerical as default };
163
+ //# sourceMappingURL=numerical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numerical.js","sources":["../../../../../src/components/hds/filter-bar/filter-group/numerical.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 type Owner from '@ember/owner';\nimport { guidFor } from '@ember/object/internals';\nimport { service } from '@ember/service';\n\nimport type HdsIntlService from '../../../../services/hds-intl';\nimport type {\n HdsFilterBarFilter,\n HdsFilterBarNumericalFilterSelector,\n HdsFilterBarNumericalFilterValue,\n} from '../types.ts';\nimport { HdsFilterBarNumericalFilterSelectorValues } from '../types.ts';\n\nexport const NUMERICAL_SELECTORS: HdsFilterBarNumericalFilterSelector[] =\n Object.values(HdsFilterBarNumericalFilterSelectorValues);\n\nexport const NUMERICAL_SELECTORS_TEXT: Record<\n HdsFilterBarNumericalFilterSelector,\n string\n> = {\n [HdsFilterBarNumericalFilterSelectorValues.lessThan]: '<',\n [HdsFilterBarNumericalFilterSelectorValues.lessThanOrEqualTo]: '≤',\n [HdsFilterBarNumericalFilterSelectorValues.equalTo]: '=',\n [HdsFilterBarNumericalFilterSelectorValues.greaterThanOrEqualTo]: '≥',\n [HdsFilterBarNumericalFilterSelectorValues.greaterThan]: '>',\n [HdsFilterBarNumericalFilterSelectorValues.between]: 'between',\n};\n\nexport const NUMERICAL_SELECTORS_INPUT_TEXT: Record<\n HdsFilterBarNumericalFilterSelector,\n string\n> = {\n [HdsFilterBarNumericalFilterSelectorValues.lessThan]: 'Less than (<)',\n [HdsFilterBarNumericalFilterSelectorValues.lessThanOrEqualTo]:\n 'Less than or equal to (≤)',\n [HdsFilterBarNumericalFilterSelectorValues.equalTo]: 'Equal to (=)',\n [HdsFilterBarNumericalFilterSelectorValues.greaterThanOrEqualTo]:\n 'Greater than or equal to (≥)',\n [HdsFilterBarNumericalFilterSelectorValues.greaterThan]: 'Greater than (>)',\n [HdsFilterBarNumericalFilterSelectorValues.between]: 'Between',\n};\n\nexport interface HdsFilterBarFilterGroupNumericalSignature {\n Args: {\n keyFilter: HdsFilterBarFilter | undefined;\n onChange?: (\n selector?: HdsFilterBarNumericalFilterSelector,\n value?: HdsFilterBarNumericalFilterValue\n ) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBarFilterGroupNumerical extends Component<HdsFilterBarFilterGroupNumericalSignature> {\n @service hdsIntl!: HdsIntlService;\n\n @tracked private _selector: HdsFilterBarNumericalFilterSelector | undefined;\n @tracked private _value: number | undefined;\n @tracked private _betweenValueStart: number | undefined;\n @tracked private _betweenValueEnd: number | undefined;\n\n private _selectorValues = NUMERICAL_SELECTORS;\n private _selectorInputId = 'selector-input-' + guidFor(this);\n private _valueInputId = 'value-input-' + guidFor(this);\n private _betweenValueStartInputId =\n 'between-value-start-input-' + guidFor(this);\n private _betweenValueEndInputId = 'between-value-end-input-' + guidFor(this);\n\n constructor(\n owner: Owner,\n args: HdsFilterBarFilterGroupNumericalSignature['Args']\n ) {\n super(owner, args);\n\n const { keyFilter } = this.args;\n if (keyFilter && keyFilter.type === 'numerical') {\n const data = keyFilter.data;\n this._selector = data?.selector;\n if (data.selector === 'between') {\n if (data.value && typeof data.value === 'object') {\n this._betweenValueStart = Number(data.value.start);\n this._betweenValueEnd = Number(data.value.end);\n }\n } else {\n this._value = Number(data.value);\n }\n }\n }\n\n get stringValue(): string | undefined {\n return this._value !== undefined ? this._value.toString() : undefined;\n }\n\n get stringBetweenValueStart(): string | undefined {\n return this._betweenValueStart !== undefined\n ? this._betweenValueStart.toString()\n : undefined;\n }\n\n get stringBetweenValueEnd(): string | undefined {\n return this._betweenValueEnd !== undefined\n ? this._betweenValueEnd.toString()\n : undefined;\n }\n\n @action\n onSelectorChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n this._selector = select.value as HdsFilterBarNumericalFilterSelector;\n if (this._selector === 'between') {\n this._value = undefined;\n } else {\n this._betweenValueStart = undefined;\n this._betweenValueEnd = undefined;\n }\n this._onChange();\n }\n\n @action\n onValueChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this._value = parseFloat(input.value);\n this._onChange();\n }\n\n @action\n onBetweenValueStartChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this._betweenValueStart = parseFloat(input.value);\n this._onChange();\n }\n\n @action\n onBetweenValueEndChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this._betweenValueEnd = parseFloat(input.value);\n this._onChange();\n }\n\n @action\n onClear(): void {\n this._resetInputValues();\n this._onChange();\n }\n\n private _onChange(): void {\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n if (\n this._selector === 'between' &&\n this._betweenValueStart !== undefined &&\n this._betweenValueEnd !== undefined\n ) {\n onChange(this._selector, {\n start: this._betweenValueStart,\n end: this._betweenValueEnd,\n });\n } else {\n onChange(this._selector, this._value);\n }\n }\n }\n\n private _selectorText = (\n selector: HdsFilterBarNumericalFilterSelector\n ): string => {\n return this.hdsIntl.t(\n `hds.components.filter-bar.filter-group.numerical.selector-input.${selector}`,\n {\n default: NUMERICAL_SELECTORS_INPUT_TEXT[selector],\n }\n );\n };\n\n private _resetInputValues = (): void => {\n this._selector = undefined;\n this._value = undefined;\n this._betweenValueStart = undefined;\n this._betweenValueEnd = undefined;\n };\n}\n"],"names":["NUMERICAL_SELECTORS","Object","values","HdsFilterBarNumericalFilterSelectorValues","NUMERICAL_SELECTORS_TEXT","lessThan","lessThanOrEqualTo","equalTo","greaterThanOrEqualTo","greaterThan","between","NUMERICAL_SELECTORS_INPUT_TEXT","HdsFilterBarFilterGroupNumerical","Component","g","prototype","service","i","void 0","tracked","_selectorValues","_selectorInputId","guidFor","_valueInputId","_betweenValueStartInputId","_betweenValueEndInputId","constructor","owner","args","keyFilter","type","data","_selector","selector","value","_betweenValueStart","Number","start","_betweenValueEnd","end","_value","stringValue","undefined","toString","stringBetweenValueStart","stringBetweenValueEnd","onSelectorChange","event","select","target","_onChange","n","action","onValueChange","input","parseFloat","onBetweenValueStartChange","onBetweenValueEndChange","onClear","_resetInputValues","onChange","_selectorText","hdsIntl","t","default","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -4,20 +4,21 @@ import { precompileTemplate } from '@ember/template-compilation';
4
4
  import { n } from 'decorator-transforms/runtime';
5
5
  import { setComponentTemplate } from '@ember/component';
6
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::Radio::Field checked={{this.isChecked}} @value={{@value}} {{on \"change\" this.onChange}} as |F|>\n <F.Label>{{yield}}</F.Label>\n </Hds::Form::Radio::Field>\n</li>");
7
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<li class=\"hds-filter-bar__filter-group__selection-option\">\n <Hds::Form::Radio::Field checked={{this.isChecked}} @value={{@value}} {{on \"change\" this.onChange}} as |F|>\n <F.Label>{{@label}}</F.Label>\n </Hds::Form::Radio::Field>\n</li>");
8
8
 
9
9
  /**
10
10
  * Copyright (c) HashiCorp, Inc.
11
11
  * SPDX-License-Identifier: MPL-2.0
12
12
  */
13
13
 
14
- class HdsFilterBarRadio extends Component {
14
+ class HdsFilterBarFilterGroupRadio extends Component {
15
15
  onChange(event) {
16
16
  const {
17
- onChange
17
+ onChange,
18
+ label
18
19
  } = this.args;
19
20
  if (onChange && typeof onChange === 'function') {
20
- onChange(event);
21
+ onChange(event, label);
21
22
  }
22
23
  }
23
24
  static {
@@ -28,13 +29,13 @@ class HdsFilterBarRadio extends Component {
28
29
  keyFilter,
29
30
  value
30
31
  } = this.args;
31
- if (keyFilter && value && 'value' in keyFilter) {
32
- return keyFilter.value === value;
32
+ if (keyFilter && keyFilter.type === 'single-select' && value && 'value' in keyFilter.data) {
33
+ return keyFilter.data.value === value;
33
34
  }
34
35
  return false;
35
36
  }
36
37
  }
37
- setComponentTemplate(TEMPLATE, HdsFilterBarRadio);
38
+ setComponentTemplate(TEMPLATE, HdsFilterBarFilterGroupRadio);
38
39
 
39
- export { HdsFilterBarRadio as default };
40
+ export { HdsFilterBarFilterGroupRadio as default };
40
41
  //# sourceMappingURL=radio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio.js","sources":["../../../../../src/components/hds/filter-bar/filter-group/radio.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 { HdsFilterBarFilter } from '../types.ts';\n\nexport interface HdsFilterBarFilterGroupRadioSignature {\n Args: {\n value?: string;\n label?: string;\n keyFilter: HdsFilterBarFilter | undefined;\n onChange?: (event: Event, label?: string) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBarFilterGroupRadio extends Component<HdsFilterBarFilterGroupRadioSignature> {\n @action\n onChange(event: Event): void {\n const { onChange, label } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange(event, label);\n }\n }\n\n get isChecked(): boolean {\n const { keyFilter, value } = this.args;\n if (\n keyFilter &&\n keyFilter.type === 'single-select' &&\n value &&\n 'value' in keyFilter.data\n ) {\n return keyFilter.data.value === value;\n }\n return false;\n }\n}\n"],"names":["HdsFilterBarFilterGroupRadio","Component","onChange","event","label","args","n","prototype","action","isChecked","keyFilter","value","type","data","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;;AAoBe,MAAMA,4BAA4B,SAASC,SAAS,CAAwC;EAEzGC,QAAQA,CAACC,KAAY,EAAQ;IAC3B,MAAM;MAAED,QAAQ;AAAEE,MAAAA;KAAO,GAAG,IAAI,CAACC,IAAI;AACrC,IAAA,IAAIH,QAAQ,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;AAC9CA,MAAAA,QAAQ,CAACC,KAAK,EAAEC,KAAK,CAAC;AACxB,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,IACEK,SAAS,IACTA,SAAS,CAACE,IAAI,KAAK,eAAe,IAClCD,KAAK,IACL,OAAO,IAAID,SAAS,CAACG,IAAI,EACzB;AACA,MAAA,OAAOH,SAAS,CAACG,IAAI,CAACF,KAAK,KAAKA,KAAK;AACvC,IAAA;AACA,IAAA,OAAO,KAAK;AACd,EAAA;AACF;AAACG,oBAAA,CAAAC,QAAA,EArBoBf,4BAA4B,CAAA;;;;"}
@@ -1,15 +1,18 @@
1
1
  import Component from '@glimmer/component';
2
2
  import { action } from '@ember/object';
3
3
  import { tracked } from '@glimmer/tracking';
4
+ import { service } from '@ember/service';
4
5
  import '../dropdown/index.js';
5
- import './filters-dropdown.js';
6
+ import '../yield/index.js';
7
+ import './dropdown.js';
6
8
  import { isArray } from '@ember/array';
7
- import { SELECTORS_DISPLAY_SYMBOL } from './range.js';
9
+ import { NUMERICAL_SELECTORS_TEXT } from './filter-group/numerical.js';
10
+ import { DATE_SELECTORS_TEXT } from './filter-group/date.js';
8
11
  import { precompileTemplate } from '@ember/template-compilation';
9
12
  import { g, i, n } from 'decorator-transforms/runtime';
10
13
  import { setComponentTemplate } from '@ember/component';
11
14
 
12
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<div class=\"hds-filter-bar\" ...attributes>\n <div class=\"hds-filter-bar__actions\">\n {{yield\n (hash FiltersDropdown=(component \"hds/filter-bar/filters-dropdown\" onFilter=this.onFilter filters=@filters))\n }}\n {{#if @hasSearch}}\n <Hds::Form::TextInput::Base\n @type=\"search\"\n @width=\"320px\"\n @value={{this.searchValue}}\n class=\"hds-filter-bar__search\"\n placeholder={{hds-t \"hds.components.filter-bar.search.placeholder\" default=\"Search\"}}\n aria-label={{hds-t \"hds.components.filter-bar.search.aria-label\" default=\"Search filters\"}}\n name=\"search\"\n {{on \"change\" this.onSearch}}\n />\n {{/if}}\n <div class=\"hds-filter-bar__actions__right\">\n {{yield (hash ActionsDropdown=(component \"hds/dropdown\"))}}\n {{#if this.hasActiveFilters}}\n <Hds::Button\n @text={{if\n this._isExpanded\n (hds-t \"hds.components.filter-bar.expand-collapse-button.collapse\" default=\"Collapse filters\")\n (hds-t \"hds.components.filter-bar.expand-collapse-button.expand\" default=\"Expand filters\")\n }}\n @color=\"secondary\"\n @size=\"small\"\n @icon={{if this._isExpanded \"unfold-close\" \"unfold-open\"}}\n @isIconOnly={{true}}\n {{on \"click\" this.toggleExpand}}\n />\n {{/if}}\n </div>\n </div>\n {{#if (and this.hasActiveFilters this._isExpanded)}}\n <div class=\"hds-filter-bar__filters\">\n {{#each-in @filters as |key filter|}}\n {{#if filter.data}}\n {{#if (and (eq filter.type \"single-select\"))}}\n <Hds::Tag\n @text=\"{{this._filterKeyText key filter}}: {{this._filterText filter.data}}\"\n @onDismiss={{fn this.onFilterDismiss key}}\n />\n {{else if (eq filter.type \"range\")}}\n <Hds::Tag\n @text=\"{{this._filterKeyText key filter}} {{this._rangeFilterText filter.data}}\"\n @onDismiss={{fn this.onFilterDismiss key}}\n />\n {{else if (eq filter.type \"search\")}}\n <Hds::Tag\n @text=\"{{this._filterKeyText key filter}}: {{this._filterText filter.data}}\"\n @onDismiss={{fn this.onFilterDismiss key}}\n />\n {{else if (eq filter.type \"multi-select\")}}\n {{#each (this._filterArrayData filter.data) as |item|}}\n <Hds::Tag\n @text=\"{{this._filterKeyText key filter}}: {{item.value}}\"\n @onDismiss={{fn this.onFilterDismiss key item.value}}\n />\n {{/each}}\n {{/if}}\n {{/if}}\n {{/each-in}}\n <Hds::Button\n class=\"hds-filter-bar__clear-button\"\n @text=\"Clear all filters\"\n @color=\"tertiary\"\n @icon=\"x\"\n @size=\"small\"\n {{on \"click\" this.clearFilters}}\n />\n </div>\n {{/if}}\n</div>");
15
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<div class=\"hds-filter-bar\" ...attributes>\n <Hds::Layout::Flex @align=\"end\" @gap=\"8\" class=\"hds-filter-bar__actions\">\n <Hds::Button\n @text={{if\n this._isExpanded\n (hds-t \"hds.components.filter-bar.expand-collapse-button.collapse\" default=\"Collapse filters\")\n (hds-t \"hds.components.filter-bar.expand-collapse-button.expand\" default=\"Expand filters\")\n }}\n @color=\"secondary\"\n @size=\"small\"\n @icon={{if this._isExpanded \"unfold-close\" \"unfold-open\"}}\n @isIconOnly={{true}}\n {{on \"click\" this.toggleExpand}}\n />\n {{yield\n (hash\n Dropdown=(component\n \"hds/filter-bar/dropdown\" filters=@filters isLiveFilter=@isLiveFilter onFilter=this.onFilter\n )\n )\n }}\n {{#if @hasSearch}}\n <Hds::Form::TextInput::Base\n @type=\"search\"\n @width=\"320px\"\n @value={{this.searchValue}}\n class=\"hds-filter-bar__search\"\n placeholder={{hds-t \"hds.components.filter-bar.search.placeholder\" default=\"Search\"}}\n aria-label={{hds-t \"hds.components.filter-bar.search.aria-label\" default=\"Search filters\"}}\n name=\"search\"\n {{on \"change\" this.onSearch}}\n />\n {{/if}}\n <Hds::Layout::Flex @gap=\"8\" @align=\"center\" class=\"hds-filter-bar__actions__right\">\n {{yield (hash ActionsGeneric=(component \"hds/yield\"))}}\n {{yield (hash ActionsDropdown=(component \"hds/dropdown\"))}}\n </Hds::Layout::Flex>\n </Hds::Layout::Flex>\n {{#if this._isExpanded}}\n <div class=\"hds-filter-bar__filters\">\n {{#if this.hasActiveFilters}}\n {{#each-in @filters as |key filter|}}\n {{#if filter.data}}\n {{#if (eq filter.type \"single-select\")}}\n <Hds::Tag\n @text=\"{{this._filterKeyText key filter}}: {{this._filterText filter}}\"\n @onDismiss={{fn this.onFilterDismiss key}}\n />\n {{else if (eq filter.type \"numerical\")}}\n <Hds::Tag\n @text=\"{{this._filterKeyText key filter}} {{this._numericalFilterText filter}}\"\n @onDismiss={{fn this.onFilterDismiss key}}\n />\n {{else if (or (eq filter.type \"date\") (eq filter.type \"datetime\") (eq filter.type \"time\"))}}\n <Hds::Tag\n @text=\"{{this._filterKeyText key filter}} {{this._dateFilterText filter}}\"\n @onDismiss={{fn this.onFilterDismiss key}}\n />\n {{else if (eq filter.type \"search\")}}\n <Hds::Tag\n @text=\"{{this._filterKeyText key filter}}: {{this._filterText filter}}\"\n @onDismiss={{fn this.onFilterDismiss key}}\n />\n {{else if (eq filter.type \"generic\")}}\n <Hds::Tag\n @text=\"{{this._filterKeyText key filter}} {{this._genericFilterText filter}}\"\n @onDismiss={{fn this.onFilterDismiss key}}\n />\n {{else if (eq filter.type \"multi-select\")}}\n {{#each (this._filterArrayData filter.data) as |item|}}\n <Hds::Tag\n @text=\"{{this._filterKeyText key filter}}: {{if item.text item.text item.value}}\"\n @onDismiss={{fn this.onFilterDismiss key item.value}}\n />\n {{/each}}\n {{/if}}\n {{/if}}\n {{/each-in}}\n <Hds::Button\n class=\"hds-filter-bar__clear-button\"\n @text=\"Clear all filters\"\n @color=\"tertiary\"\n @icon=\"x\"\n @size=\"small\"\n {{on \"click\" this.clearFilters}}\n />\n {{else}}\n <Hds::Text::Body @size={{100}} @color=\"faint\">\n {{hds-t \"hds.components.filter-bar.no-filters-applied\" default=\"No filters applied\"}}\n </Hds::Text::Body>\n {{/if}}\n </div>\n {{/if}}\n</div>");
13
16
 
14
17
  /**
15
18
  * Copyright (c) HashiCorp, Inc.
@@ -17,9 +20,13 @@ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-
17
20
  */
18
21
 
19
22
  class HdsFilterBar extends Component {
23
+ static {
24
+ g(this.prototype, "hdsIntl", [service]);
25
+ }
26
+ #hdsIntl = (i(this, "hdsIntl"), void 0);
20
27
  static {
21
28
  g(this.prototype, "_isExpanded", [tracked], function () {
22
- return true;
29
+ return this.hasActiveFilters;
23
30
  });
24
31
  }
25
32
  #_isExpanded = (i(this, "_isExpanded"), void 0);
@@ -28,7 +35,7 @@ class HdsFilterBar extends Component {
28
35
  filters
29
36
  } = this.args;
30
37
  if (filters['search']) {
31
- return this._filterText(filters['search'].data);
38
+ return this._filterText(filters['search']);
32
39
  }
33
40
  return '';
34
41
  }
@@ -38,6 +45,11 @@ class HdsFilterBar extends Component {
38
45
  } = this.args;
39
46
  if (onFilter && typeof onFilter === 'function') {
40
47
  onFilter(filters);
48
+ if (Object.keys(filters).length > 0) {
49
+ this._isExpanded = true;
50
+ } else {
51
+ this._isExpanded = false;
52
+ }
41
53
  }
42
54
  }
43
55
  static {
@@ -49,6 +61,7 @@ class HdsFilterBar extends Component {
49
61
  } = this.args;
50
62
  if (onFilter && typeof onFilter === 'function') {
51
63
  onFilter({});
64
+ this._isExpanded = false;
52
65
  }
53
66
  }
54
67
  static {
@@ -121,19 +134,22 @@ class HdsFilterBar extends Component {
121
134
  }
122
135
  };
123
136
  _filterData = data => {
124
- if ('value' in data) {
125
- return {
126
- value: data.value
127
- };
128
- }
129
- return {
137
+ const result = {
130
138
  value: ''
131
139
  };
140
+ if ('value' in data) {
141
+ result.value = data.value;
142
+ }
143
+ if ('label' in data) {
144
+ result.label = data.label;
145
+ }
146
+ return result;
132
147
  };
133
- _filterText = data => {
134
- const result = this._filterData(data);
135
- const resultText = result?.value;
136
- return resultText ?? '';
148
+ _filterText = filter => {
149
+ const result = this._filterData(filter.data);
150
+ const resultLabel = result?.label;
151
+ const resultValue = result?.value;
152
+ return resultLabel ?? resultValue;
137
153
  };
138
154
  _filterArrayData = data => {
139
155
  if (isArray(data)) {
@@ -148,9 +164,71 @@ class HdsFilterBar extends Component {
148
164
  return key;
149
165
  }
150
166
  };
151
- _rangeFilterText = data => {
152
- if ('selector' in data && 'value' in data) {
153
- return `${SELECTORS_DISPLAY_SYMBOL[data.selector]} ${data.value}`;
167
+ _numericalFilterText = filter => {
168
+ const data = filter.data;
169
+ if (filter.type === 'numerical' && 'selector' in data && 'value' in data) {
170
+ const selector = data.selector;
171
+ if (selector === 'between' && typeof data.value === 'object' && data.value !== null) {
172
+ const separatorText = this.hdsIntl.t('hds.components.filter-bar.filter-text.numerical-filter.separator', {
173
+ default: 'and'
174
+ });
175
+ return `${NUMERICAL_SELECTORS_TEXT[selector]} ${data.value.start} ${separatorText} ${data.value.end}`;
176
+ } else if (typeof data.value !== 'object') {
177
+ return `${NUMERICAL_SELECTORS_TEXT[selector]} ${data.value}`;
178
+ }
179
+ return '';
180
+ } else {
181
+ return '';
182
+ }
183
+ };
184
+ _dateFilterText = filter => {
185
+ const data = filter.data;
186
+ if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'time') && 'selector' in data && 'value' in data) {
187
+ const selector = data.selector;
188
+ if (selector === 'between' && typeof data.value === 'object' && data.value !== null) {
189
+ const separatorText = this.hdsIntl.t('hds.components.filter-bar.filter-text.date-filter.separator', {
190
+ default: 'and'
191
+ });
192
+ const startDateText = this._dateDisplayText(data.value.start, filter.type);
193
+ const endDateText = this._dateDisplayText(data.value.end, filter.type);
194
+ return `${DATE_SELECTORS_TEXT[selector]} ${startDateText} ${separatorText} ${endDateText}`;
195
+ } else if (data.value !== null && typeof data.value !== 'object') {
196
+ const dateText = this._dateDisplayText(data.value, filter.type);
197
+ return `${DATE_SELECTORS_TEXT[selector]} ${dateText}`;
198
+ }
199
+ return '';
200
+ } else {
201
+ return '';
202
+ }
203
+ };
204
+ _dateDisplayText = (dateString, filterType) => {
205
+ let date;
206
+ if (filterType === 'time') {
207
+ date = new Date(`1970-01-01T${dateString}`);
208
+ } else {
209
+ date = new Date(dateString);
210
+ }
211
+ let options = {};
212
+ if (filterType === 'date') {
213
+ options = {
214
+ dateStyle: 'short'
215
+ };
216
+ } else if (filterType === 'time') {
217
+ options = {
218
+ timeStyle: 'short'
219
+ };
220
+ } else {
221
+ options = {
222
+ dateStyle: 'short',
223
+ timeStyle: 'short'
224
+ };
225
+ }
226
+ const newDate = new Intl.DateTimeFormat(undefined, options);
227
+ return newDate.format(date);
228
+ };
229
+ _genericFilterText = filter => {
230
+ if ('dismissTagText' in filter) {
231
+ return filter.dismissTagText ?? '';
154
232
  } else {
155
233
  return '';
156
234
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/filter-bar/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 { tracked } from '@glimmer/tracking';\n\nimport type { WithBoundArgs } from '@glint/template';\n\nimport type {\n HdsFilterBarFilters,\n HdsFilterBarFilter,\n HdsFilterBarData,\n HdsFilterBarGenericFilterData,\n} from './types.ts';\nimport HdsDropdown from '../dropdown/index.ts';\nimport HdsFilterBarFiltersDropdown from './filters-dropdown.ts';\nimport { isArray } from '@ember/array';\n\nimport { SELECTORS_DISPLAY_SYMBOL } from './range.ts';\n\nexport interface HdsFilterBarSignature {\n Args: {\n filters: HdsFilterBarFilters;\n hasSearch?: boolean;\n onFilter?: (filters: HdsFilterBarFilters) => void;\n };\n Blocks: {\n default?: [\n {\n ActionsDropdown?: WithBoundArgs<typeof HdsDropdown, never>;\n FiltersDropdown?: WithBoundArgs<\n typeof HdsFilterBarFiltersDropdown,\n 'filters' | 'onFilter'\n >;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBar extends Component<HdsFilterBarSignature> {\n @tracked _isExpanded: boolean = true;\n\n get searchValue(): string {\n const { filters } = this.args;\n if (filters['search']) {\n return this._filterText(filters['search'].data);\n }\n return '';\n }\n\n @action\n onFilter(filters: HdsFilterBarFilters): void {\n const { onFilter } = this.args;\n if (onFilter && typeof onFilter === 'function') {\n onFilter(filters);\n }\n }\n\n @action\n clearFilters(): void {\n const { onFilter } = this.args;\n if (onFilter && typeof onFilter === 'function') {\n onFilter({});\n }\n }\n\n @action\n onSearch(event: Event): void {\n const { filters } = this.args;\n const input = event.target as HTMLInputElement;\n const value = input?.value;\n\n const newFilters = {} as HdsFilterBarFilters;\n\n Object.keys(filters).forEach((k) => {\n newFilters[k] = JSON.parse(\n JSON.stringify(filters[k])\n ) as HdsFilterBarFilter;\n });\n\n if (value.length > 0) {\n newFilters['search'] = {\n type: 'search',\n text: 'Search',\n data: { value },\n };\n } else {\n delete newFilters['search'];\n }\n\n this.onFilter({ ...newFilters });\n }\n\n @action\n toggleExpand(): void {\n this._isExpanded = !this._isExpanded;\n }\n\n get hasActiveFilters(): boolean {\n return Object.keys(this.args.filters).length > 0;\n }\n\n private onFilterDismiss = (key: string, filterValue?: unknown): void => {\n const { filters } = this.args;\n if (filters && filters[key]) {\n const keyFilter: HdsFilterBarFilter = filters[key];\n const newFilters = {} as HdsFilterBarFilters;\n\n Object.keys(filters).forEach((k) => {\n newFilters[k] = JSON.parse(\n JSON.stringify(filters[k])\n ) as HdsFilterBarFilter;\n });\n\n if (keyFilter.type === 'multi-select' && isArray(keyFilter.data)) {\n const newKeyfilter = keyFilter.data?.filter(\n (item) => item.value !== filterValue\n );\n if (newKeyfilter.length === 0) {\n delete newFilters[key];\n } else {\n newFilters[key] = {\n type: 'multi-select',\n text: keyFilter.text,\n data: newKeyfilter,\n };\n }\n } else {\n delete newFilters[key];\n }\n\n this.onFilter({ ...newFilters });\n }\n };\n\n private _filterData = (\n data: HdsFilterBarData\n ): HdsFilterBarGenericFilterData => {\n if ('value' in data) {\n return { value: data.value };\n }\n return { value: '' };\n };\n\n private _filterText = (data: HdsFilterBarData): string => {\n const result = this._filterData(data);\n const resultText = result?.value as string;\n return resultText ?? '';\n };\n\n private _filterArrayData = (data: HdsFilterBarData): { value: unknown }[] => {\n if (isArray(data)) {\n return data.map((item) => this._filterData(item));\n }\n return [];\n };\n\n private _filterKeyText = (key: string, data: HdsFilterBarFilter): string => {\n if (data.text) {\n return data.text;\n } else {\n return key;\n }\n };\n\n private _rangeFilterText = (data: HdsFilterBarData): string => {\n if ('selector' in data && 'value' in data) {\n return `${SELECTORS_DISPLAY_SYMBOL[data.selector]} ${data.value}`;\n } else {\n return '';\n }\n };\n}\n"],"names":["HdsFilterBar","Component","g","prototype","tracked","i","void 0","searchValue","filters","args","_filterText","data","onFilter","n","action","clearFilters","onSearch","event","input","target","value","newFilters","Object","keys","forEach","k","JSON","parse","stringify","length","type","text","toggleExpand","_isExpanded","hasActiveFilters","onFilterDismiss","key","filterValue","keyFilter","isArray","newKeyfilter","filter","item","_filterData","result","resultText","_filterArrayData","map","_filterKeyText","_rangeFilterText","SELECTORS_DISPLAY_SYMBOL","selector","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/filter-bar/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 { tracked } from '@glimmer/tracking';\nimport { service } from '@ember/service';\n\nimport type { WithBoundArgs } from '@glint/template';\n\nimport type HdsIntlService from '../../../services/hds-intl';\nimport type {\n HdsFilterBarFilters,\n HdsFilterBarFilter,\n HdsFilterBarFilterType,\n HdsFilterBarData,\n HdsFilterBarGenericFilterData,\n} from './types.ts';\nimport HdsDropdown from '../dropdown/index.ts';\nimport HdsYield from '../yield/index.ts';\nimport HdsFilterBarDropdown from './dropdown.ts';\nimport { isArray } from '@ember/array';\n\nimport { NUMERICAL_SELECTORS_TEXT } from './filter-group/numerical.ts';\nimport { DATE_SELECTORS_TEXT } from './filter-group/date.ts';\n\nexport interface HdsFilterBarSignature {\n Args: {\n filters: HdsFilterBarFilters;\n isLiveFilter?: boolean;\n hasSearch?: boolean;\n onFilter?: (filters: HdsFilterBarFilters) => void;\n };\n Blocks: {\n default?: [\n {\n ActionsDropdown?: WithBoundArgs<typeof HdsDropdown, never>;\n ActionsGeneric?: WithBoundArgs<typeof HdsYield, never>;\n Dropdown?: WithBoundArgs<\n typeof HdsFilterBarDropdown,\n 'filters' | 'isLiveFilter' | 'onFilter'\n >;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBar extends Component<HdsFilterBarSignature> {\n @service hdsIntl!: HdsIntlService;\n\n @tracked _isExpanded: boolean = this.hasActiveFilters;\n\n get searchValue(): string {\n const { filters } = this.args;\n if (filters['search']) {\n return this._filterText(filters['search']);\n }\n return '';\n }\n\n @action\n onFilter(filters: HdsFilterBarFilters): void {\n const { onFilter } = this.args;\n if (onFilter && typeof onFilter === 'function') {\n onFilter(filters);\n\n if (Object.keys(filters).length > 0) {\n this._isExpanded = true;\n } else {\n this._isExpanded = false;\n }\n }\n }\n\n @action\n clearFilters(): void {\n const { onFilter } = this.args;\n if (onFilter && typeof onFilter === 'function') {\n onFilter({});\n this._isExpanded = false;\n }\n }\n\n @action\n onSearch(event: Event): void {\n const { filters } = this.args;\n const input = event.target as HTMLInputElement;\n const value = input?.value;\n\n const newFilters = {} as HdsFilterBarFilters;\n\n Object.keys(filters).forEach((k) => {\n newFilters[k] = JSON.parse(\n JSON.stringify(filters[k])\n ) as HdsFilterBarFilter;\n });\n\n if (value.length > 0) {\n newFilters['search'] = {\n type: 'search',\n text: 'Search',\n data: { value },\n };\n } else {\n delete newFilters['search'];\n }\n\n this.onFilter({ ...newFilters });\n }\n\n @action\n toggleExpand(): void {\n this._isExpanded = !this._isExpanded;\n }\n\n get hasActiveFilters(): boolean {\n return Object.keys(this.args.filters).length > 0;\n }\n\n private onFilterDismiss = (key: string, filterValue?: unknown): void => {\n const { filters } = this.args;\n if (filters && filters[key]) {\n const keyFilter: HdsFilterBarFilter = filters[key];\n const newFilters = {} as HdsFilterBarFilters;\n\n Object.keys(filters).forEach((k) => {\n newFilters[k] = JSON.parse(\n JSON.stringify(filters[k])\n ) as HdsFilterBarFilter;\n });\n\n if (keyFilter.type === 'multi-select' && isArray(keyFilter.data)) {\n const newKeyfilter = keyFilter.data?.filter(\n (item) => item.value !== filterValue\n );\n if (newKeyfilter.length === 0) {\n delete newFilters[key];\n } else {\n newFilters[key] = {\n type: 'multi-select',\n text: keyFilter.text,\n data: newKeyfilter,\n };\n }\n } else {\n delete newFilters[key];\n }\n\n this.onFilter({ ...newFilters });\n }\n };\n\n private _filterData = (\n data: HdsFilterBarData\n ): HdsFilterBarGenericFilterData => {\n const result = {\n value: '',\n } as HdsFilterBarGenericFilterData;\n if ('value' in data) {\n result.value = data.value;\n }\n if ('label' in data) {\n result.label = data.label;\n }\n return result;\n };\n\n private _filterText = (filter: HdsFilterBarFilter): string => {\n const result = this._filterData(filter.data);\n const resultLabel = result?.label as string;\n const resultValue = result?.value as string;\n return resultLabel ?? resultValue;\n };\n\n private _filterArrayData = (\n data: HdsFilterBarData\n ): { value: unknown; text?: string }[] => {\n if (isArray(data)) {\n return data.map((item) => this._filterData(item));\n }\n return [];\n };\n\n private _filterKeyText = (key: string, data: HdsFilterBarFilter): string => {\n if (data.text) {\n return data.text;\n } else {\n return key;\n }\n };\n\n private _numericalFilterText = (filter: HdsFilterBarFilter): string => {\n const data = filter.data;\n\n if (filter.type === 'numerical' && 'selector' in data && 'value' in data) {\n const selector = data.selector as keyof typeof NUMERICAL_SELECTORS_TEXT;\n if (\n selector === 'between' &&\n typeof data.value === 'object' &&\n data.value !== null\n ) {\n const separatorText = this.hdsIntl.t(\n 'hds.components.filter-bar.filter-text.numerical-filter.separator',\n {\n default: 'and',\n }\n );\n return `${NUMERICAL_SELECTORS_TEXT[selector]} ${data.value.start} ${separatorText} ${data.value.end}`;\n } else if (typeof data.value !== 'object') {\n return `${NUMERICAL_SELECTORS_TEXT[selector]} ${data.value}`;\n }\n return '';\n } else {\n return '';\n }\n };\n\n private _dateFilterText = (filter: HdsFilterBarFilter): string => {\n const data = filter.data;\n\n if (\n (filter.type === 'date' ||\n filter.type === 'datetime' ||\n filter.type === 'time') &&\n 'selector' in data &&\n 'value' in data\n ) {\n const selector = data.selector as keyof typeof DATE_SELECTORS_TEXT;\n if (\n selector === 'between' &&\n typeof data.value === 'object' &&\n data.value !== null\n ) {\n const separatorText = this.hdsIntl.t(\n 'hds.components.filter-bar.filter-text.date-filter.separator',\n {\n default: 'and',\n }\n );\n const startDateText = this._dateDisplayText(\n data.value.start as string,\n filter.type\n );\n const endDateText = this._dateDisplayText(\n data.value.end as string,\n filter.type\n );\n return `${DATE_SELECTORS_TEXT[selector]} ${startDateText} ${separatorText} ${endDateText}`;\n } else if (data.value !== null && typeof data.value !== 'object') {\n const dateText = this._dateDisplayText(\n data.value as string,\n filter.type\n );\n return `${DATE_SELECTORS_TEXT[selector]} ${dateText}`;\n }\n return '';\n } else {\n return '';\n }\n };\n\n private _dateDisplayText = (\n dateString: string,\n filterType: HdsFilterBarFilterType\n ): string => {\n let date;\n if (filterType === 'time') {\n date = new Date(`1970-01-01T${dateString}`);\n } else {\n date = new Date(dateString);\n }\n\n let options = {};\n if (filterType === 'date') {\n options = { dateStyle: 'short' };\n } else if (filterType === 'time') {\n options = { timeStyle: 'short' };\n } else {\n options = { dateStyle: 'short', timeStyle: 'short' };\n }\n\n const newDate = new Intl.DateTimeFormat(undefined, options);\n return newDate.format(date);\n };\n\n private _genericFilterText = (filter: HdsFilterBarFilter): string => {\n if ('dismissTagText' in filter) {\n return filter.dismissTagText ?? '';\n } else {\n return '';\n }\n };\n}\n"],"names":["HdsFilterBar","Component","g","prototype","service","i","void 0","tracked","hasActiveFilters","searchValue","filters","args","_filterText","onFilter","Object","keys","length","_isExpanded","n","action","clearFilters","onSearch","event","input","target","value","newFilters","forEach","k","JSON","parse","stringify","type","text","data","toggleExpand","onFilterDismiss","key","filterValue","keyFilter","isArray","newKeyfilter","filter","item","_filterData","result","label","resultLabel","resultValue","_filterArrayData","map","_filterKeyText","_numericalFilterText","selector","separatorText","hdsIntl","t","default","NUMERICAL_SELECTORS_TEXT","start","end","_dateFilterText","startDateText","_dateDisplayText","endDateText","DATE_SELECTORS_TEXT","dateText","dateString","filterType","date","Date","options","dateStyle","timeStyle","newDate","Intl","DateTimeFormat","undefined","format","_genericFilterText","dismissTagText","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -103,7 +103,6 @@ class HdsFilterBarTabs extends Component {
103
103
  n(this.prototype, "willDestroyPanel", [action]);
104
104
  }
105
105
  onClick(event, tabIndex) {
106
- console.log('onClick event in Tabs:', event, tabIndex);
107
106
  this._selectedTabIndex = tabIndex;
108
107
 
109
108
  // invoke the callback function if it's provided as argument
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/hds/filter-bar/tabs/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { schedule } from '@ember/runloop';\nimport { modifier } from 'ember-modifier';\nimport type { WithBoundArgs } from '@glint/template';\nimport HdsFilterBarTabsTabComponent from './tab.ts';\nimport HdsFilterBarTabsPanelComponent from './panel.ts';\n\nconst TAB_ELEMENT_SELECTOR = '.hds-filter-bar__tabs__tab__button';\nconst PANEL_ELEMENT_SELECTOR = '.hds-filter-bar__tabs__panel';\n\nexport interface HdsFilterBarTabsSignature {\n Args: {\n selectedTabIndex?: number;\n ariaLabel: string;\n onClickTab?: (event: MouseEvent, tabIndex: number) => void;\n };\n Blocks: {\n default: [\n {\n Tab?: WithBoundArgs<\n typeof HdsFilterBarTabsTabComponent,\n | 'selectedTabIndex'\n | 'tabIds'\n | 'panelIds'\n | 'didInsertNode'\n | 'willDestroyNode'\n | 'onClick'\n | 'onKeyUp'\n >;\n Panel?: WithBoundArgs<\n typeof HdsFilterBarTabsPanelComponent,\n | 'selectedTabIndex'\n | 'tabIds'\n | 'panelIds'\n | 'didInsertNode'\n | 'willDestroyNode'\n >;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBarTabs extends Component<HdsFilterBarTabsSignature> {\n @tracked private _tabIds: string[] = [];\n @tracked private _tabNodes: HTMLElement[] = [];\n @tracked private _panelNodes: HTMLElement[] = [];\n @tracked private _panelIds: string[] = [];\n @tracked private _selectedTabIndex: number = 0;\n @tracked private _selectedTabId?: string;\n\n private _element!: HTMLDivElement;\n\n private _setUpFilterBarTabs = modifier((element: HTMLDivElement) => {\n const { selectedTabIndex } = this.args;\n\n if (selectedTabIndex) {\n this._selectedTabIndex = selectedTabIndex;\n }\n\n this._element = element;\n\n return () => {};\n });\n\n @action\n didInsertTab(): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this.updateTabs();\n });\n }\n\n @action\n willDestroyTab(element: HTMLElement): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this._tabNodes = this._tabNodes.filter(\n (node): boolean => node.id !== element.id\n );\n this._tabIds = this._tabIds.filter(\n (tabId): boolean => tabId !== element.id\n );\n });\n }\n\n @action\n didInsertPanel(): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this.updatePanels();\n });\n }\n\n @action\n willDestroyPanel(element: HTMLElement): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this._panelNodes = this._panelNodes.filter(\n (node): boolean => node.id !== element.id\n );\n this._panelIds = this._panelIds.filter(\n (panelId): boolean => panelId !== element.id\n );\n });\n }\n\n @action\n onClick(event: MouseEvent, tabIndex: number): void {\n console.log('onClick event in Tabs:', event, tabIndex);\n this._selectedTabIndex = tabIndex;\n\n // invoke the callback function if it's provided as argument\n if (typeof this.args.onClickTab === 'function') {\n this.args.onClickTab(event, tabIndex);\n }\n }\n\n @action\n onKeyUp(event: KeyboardEvent, tabIndex: number): void {\n const leftArrow = 'ArrowLeft';\n const rightArrow = 'ArrowRight';\n const upArrow = 'ArrowUp';\n const downArrow = 'ArrowDown';\n const enterKey = 'Enter';\n const spaceKey = ' ';\n\n if (event.key === rightArrow || event.key === downArrow) {\n const nextTabIndex = (tabIndex + 1) % this._tabIds.length;\n this.focusTab(nextTabIndex, event);\n } else if (event.key === leftArrow || event.key === upArrow) {\n const prevTabIndex =\n (tabIndex + this._tabIds.length - 1) % this._tabIds.length;\n this.focusTab(prevTabIndex, event);\n } else if (event.key === enterKey || event.key === spaceKey) {\n this._selectedTabIndex = tabIndex;\n }\n // scroll selected tab into view (it may be out of view when activated using a keyboard with `prev/next`)\n const parentNode = this._tabNodes[this._selectedTabIndex]?.parentNode;\n if (parentNode instanceof HTMLElement) {\n parentNode.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n // Focus tab for keyboard & mouse navigation:\n focusTab(tabIndex: number, event: KeyboardEvent): void {\n event.preventDefault();\n this._tabNodes[tabIndex]?.focus();\n }\n\n // Update the tab arrays based on how they are ordered in the DOM\n private updateTabs(): void {\n const tabs = this._element.querySelectorAll(TAB_ELEMENT_SELECTOR);\n let newTabIds: string[] = [];\n let newTabNodes: HTMLElement[] = [];\n tabs.forEach((tab) => {\n newTabIds = [...newTabIds, tab.id];\n newTabNodes = [...newTabNodes, tab as HTMLElement];\n });\n this._tabIds = newTabIds;\n this._tabNodes = newTabNodes;\n }\n\n // Update the panel arrays based on how they are ordered in the DOM\n private updatePanels(): void {\n const panels = this._element.querySelectorAll(PANEL_ELEMENT_SELECTOR);\n let newPanelIds: string[] = [];\n let newPanelNodes: HTMLElement[] = [];\n panels.forEach((panel) => {\n newPanelIds = [...newPanelIds, panel.id];\n newPanelNodes = [...newPanelNodes, panel as HTMLElement];\n });\n this._panelIds = newPanelIds;\n this._panelNodes = newPanelNodes;\n }\n}\n"],"names":["TAB_ELEMENT_SELECTOR","PANEL_ELEMENT_SELECTOR","HdsFilterBarTabs","Component","g","prototype","tracked","i","void 0","_element","_setUpFilterBarTabs","modifier","element","selectedTabIndex","args","_selectedTabIndex","didInsertTab","schedule","updateTabs","n","action","willDestroyTab","_tabNodes","filter","node","id","_tabIds","tabId","didInsertPanel","updatePanels","willDestroyPanel","_panelNodes","_panelIds","panelId","onClick","event","tabIndex","console","log","onClickTab","onKeyUp","leftArrow","rightArrow","upArrow","downArrow","enterKey","spaceKey","key","nextTabIndex","length","focusTab","prevTabIndex","parentNode","HTMLElement","scrollIntoView","behavior","block","inline","preventDefault","focus","tabs","querySelectorAll","newTabIds","newTabNodes","forEach","tab","panels","newPanelIds","newPanelNodes","panel","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;;AAWA,MAAMA,oBAAoB,GAAG,oCAAoC;AACjE,MAAMC,sBAAsB,GAAG,8BAA8B;AAmC9C,MAAMC,gBAAgB,SAASC,SAAS,CAA4B;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAChFC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6B,EAAE;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACtCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAoC,EAAE;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,aAAA,EAAA,CAC7CC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAsC,EAAE;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,YAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,aAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CAC/CC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA+B,EAAE;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,mBAAA,EAAA,CACxCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAqC,CAAC;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,kBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,mBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,gBAAA,EAAA,CAC7CC,OAAO,CAAA,CAAA;AAAA;AAAA,EAAA,eAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,EAAAC,MAAA;EAEAC,QAAQ;AAERC,EAAAA,mBAAmB,GAAGC,QAAQ,CAAEC,OAAuB,IAAK;IAClE,MAAM;AAAEC,MAAAA;KAAkB,GAAG,IAAI,CAACC,IAAI;AAEtC,IAAA,IAAID,gBAAgB,EAAE;MACpB,IAAI,CAACE,iBAAiB,GAAGF,gBAAgB;AAC3C,IAAA;IAEA,IAAI,CAACJ,QAAQ,GAAGG,OAAO;IAEvB,OAAO,MAAM,CAAC,CAAC;AACjB,EAAA,CAAC,CAAC;AAGFI,EAAAA,YAAYA,GAAS;AACnB;IACAC,QAAQ,CAAC,aAAa,EAAE,MAAY;MAClC,IAAI,CAACC,UAAU,EAAE;AACnB,IAAA,CAAC,CAAC;AACJ,EAAA;AAAC,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAd,SAAA,EAAA,cAAA,EAAA,CANAe,MAAM,CAAA,CAAA;AAAA;EASPC,cAAcA,CAACT,OAAoB,EAAQ;AACzC;IACAK,QAAQ,CAAC,aAAa,EAAE,MAAY;AAClC,MAAA,IAAI,CAACK,SAAS,GAAG,IAAI,CAACA,SAAS,CAACC,MAAM,CACnCC,IAAI,IAAcA,IAAI,CAACC,EAAE,KAAKb,OAAO,CAACa,EACzC,CAAC;AACD,MAAA,IAAI,CAACC,OAAO,GAAG,IAAI,CAACA,OAAO,CAACH,MAAM,CAC/BI,KAAK,IAAcA,KAAK,KAAKf,OAAO,CAACa,EACxC,CAAC;AACH,IAAA,CAAC,CAAC;AACJ,EAAA;AAAC,EAAA;IAAAN,CAAA,CAAA,IAAA,CAAAd,SAAA,EAAA,gBAAA,EAAA,CAXAe,MAAM,CAAA,CAAA;AAAA;AAcPQ,EAAAA,cAAcA,GAAS;AACrB;IACAX,QAAQ,CAAC,aAAa,EAAE,MAAY;MAClC,IAAI,CAACY,YAAY,EAAE;AACrB,IAAA,CAAC,CAAC;AACJ,EAAA;AAAC,EAAA;IAAAV,CAAA,CAAA,IAAA,CAAAd,SAAA,EAAA,gBAAA,EAAA,CANAe,MAAM,CAAA,CAAA;AAAA;EASPU,gBAAgBA,CAAClB,OAAoB,EAAQ;AAC3C;IACAK,QAAQ,CAAC,aAAa,EAAE,MAAY;AAClC,MAAA,IAAI,CAACc,WAAW,GAAG,IAAI,CAACA,WAAW,CAACR,MAAM,CACvCC,IAAI,IAAcA,IAAI,CAACC,EAAE,KAAKb,OAAO,CAACa,EACzC,CAAC;AACD,MAAA,IAAI,CAACO,SAAS,GAAG,IAAI,CAACA,SAAS,CAACT,MAAM,CACnCU,OAAO,IAAcA,OAAO,KAAKrB,OAAO,CAACa,EAC5C,CAAC;AACH,IAAA,CAAC,CAAC;AACJ,EAAA;AAAC,EAAA;IAAAN,CAAA,CAAA,IAAA,CAAAd,SAAA,EAAA,kBAAA,EAAA,CAXAe,MAAM,CAAA,CAAA;AAAA;AAcPc,EAAAA,OAAOA,CAACC,KAAiB,EAAEC,QAAgB,EAAQ;IACjDC,OAAO,CAACC,GAAG,CAAC,wBAAwB,EAAEH,KAAK,EAAEC,QAAQ,CAAC;IACtD,IAAI,CAACrB,iBAAiB,GAAGqB,QAAQ;;AAEjC;IACA,IAAI,OAAO,IAAI,CAACtB,IAAI,CAACyB,UAAU,KAAK,UAAU,EAAE;MAC9C,IAAI,CAACzB,IAAI,CAACyB,UAAU,CAACJ,KAAK,EAAEC,QAAQ,CAAC;AACvC,IAAA;AACF,EAAA;AAAC,EAAA;IAAAjB,CAAA,CAAA,IAAA,CAAAd,SAAA,EAAA,SAAA,EAAA,CATAe,MAAM,CAAA,CAAA;AAAA;AAYPoB,EAAAA,OAAOA,CAACL,KAAoB,EAAEC,QAAgB,EAAQ;IACpD,MAAMK,SAAS,GAAG,WAAW;IAC7B,MAAMC,UAAU,GAAG,YAAY;IAC/B,MAAMC,OAAO,GAAG,SAAS;IACzB,MAAMC,SAAS,GAAG,WAAW;IAC7B,MAAMC,QAAQ,GAAG,OAAO;IACxB,MAAMC,QAAQ,GAAG,GAAG;IAEpB,IAAIX,KAAK,CAACY,GAAG,KAAKL,UAAU,IAAIP,KAAK,CAACY,GAAG,KAAKH,SAAS,EAAE;MACvD,MAAMI,YAAY,GAAG,CAACZ,QAAQ,GAAG,CAAC,IAAI,IAAI,CAACV,OAAO,CAACuB,MAAM;AACzD,MAAA,IAAI,CAACC,QAAQ,CAACF,YAAY,EAAEb,KAAK,CAAC;AACpC,IAAA,CAAC,MAAM,IAAIA,KAAK,CAACY,GAAG,KAAKN,SAAS,IAAIN,KAAK,CAACY,GAAG,KAAKJ,OAAO,EAAE;AAC3D,MAAA,MAAMQ,YAAY,GAChB,CAACf,QAAQ,GAAG,IAAI,CAACV,OAAO,CAACuB,MAAM,GAAG,CAAC,IAAI,IAAI,CAACvB,OAAO,CAACuB,MAAM;AAC5D,MAAA,IAAI,CAACC,QAAQ,CAACC,YAAY,EAAEhB,KAAK,CAAC;AACpC,IAAA,CAAC,MAAM,IAAIA,KAAK,CAACY,GAAG,KAAKF,QAAQ,IAAIV,KAAK,CAACY,GAAG,KAAKD,QAAQ,EAAE;MAC3D,IAAI,CAAC/B,iBAAiB,GAAGqB,QAAQ;AACnC,IAAA;AACA;IACA,MAAMgB,UAAU,GAAG,IAAI,CAAC9B,SAAS,CAAC,IAAI,CAACP,iBAAiB,CAAC,EAAEqC,UAAU;IACrE,IAAIA,UAAU,YAAYC,WAAW,EAAE;MACrCD,UAAU,CAACE,cAAc,CAAC;AACxBC,QAAAA,QAAQ,EAAE,QAAQ;AAClBC,QAAAA,KAAK,EAAE,SAAS;AAChBC,QAAAA,MAAM,EAAE;AACV,OAAC,CAAC;AACJ,IAAA;AACF,EAAA;;AAEA;AAAA,EAAA;IAAAtC,CAAA,CAAA,IAAA,CAAAd,SAAA,EAAA,SAAA,EAAA,CA9BCe,MAAM,CAAA,CAAA;AAAA;AA+BP8B,EAAAA,QAAQA,CAACd,QAAgB,EAAED,KAAoB,EAAQ;IACrDA,KAAK,CAACuB,cAAc,EAAE;IACtB,IAAI,CAACpC,SAAS,CAACc,QAAQ,CAAC,EAAEuB,KAAK,EAAE;AACnC,EAAA;;AAEA;AACQzC,EAAAA,UAAUA,GAAS;IACzB,MAAM0C,IAAI,GAAG,IAAI,CAACnD,QAAQ,CAACoD,gBAAgB,CAAC7D,oBAAoB,CAAC;IACjE,IAAI8D,SAAmB,GAAG,EAAE;IAC5B,IAAIC,WAA0B,GAAG,EAAE;AACnCH,IAAAA,IAAI,CAACI,OAAO,CAAEC,GAAG,IAAK;MACpBH,SAAS,GAAG,CAAC,GAAGA,SAAS,EAAEG,GAAG,CAACxC,EAAE,CAAC;AAClCsC,MAAAA,WAAW,GAAG,CAAC,GAAGA,WAAW,EAAEE,GAAG,CAAgB;AACpD,IAAA,CAAC,CAAC;IACF,IAAI,CAACvC,OAAO,GAAGoC,SAAS;IACxB,IAAI,CAACxC,SAAS,GAAGyC,WAAW;AAC9B,EAAA;;AAEA;AACQlC,EAAAA,YAAYA,GAAS;IAC3B,MAAMqC,MAAM,GAAG,IAAI,CAACzD,QAAQ,CAACoD,gBAAgB,CAAC5D,sBAAsB,CAAC;IACrE,IAAIkE,WAAqB,GAAG,EAAE;IAC9B,IAAIC,aAA4B,GAAG,EAAE;AACrCF,IAAAA,MAAM,CAACF,OAAO,CAAEK,KAAK,IAAK;MACxBF,WAAW,GAAG,CAAC,GAAGA,WAAW,EAAEE,KAAK,CAAC5C,EAAE,CAAC;AACxC2C,MAAAA,aAAa,GAAG,CAAC,GAAGA,aAAa,EAAEC,KAAK,CAAgB;AAC1D,IAAA,CAAC,CAAC;IACF,IAAI,CAACrC,SAAS,GAAGmC,WAAW;IAC5B,IAAI,CAACpC,WAAW,GAAGqC,aAAa;AAClC,EAAA;AACF;AAACE,oBAAA,CAAAC,QAAA,EAxIoBrE,gBAAgB,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/hds/filter-bar/tabs/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { schedule } from '@ember/runloop';\nimport { modifier } from 'ember-modifier';\nimport type { WithBoundArgs } from '@glint/template';\nimport HdsFilterBarTabsTabComponent from './tab.ts';\nimport HdsFilterBarTabsPanelComponent from './panel.ts';\n\nconst TAB_ELEMENT_SELECTOR = '.hds-filter-bar__tabs__tab__button';\nconst PANEL_ELEMENT_SELECTOR = '.hds-filter-bar__tabs__panel';\n\nexport interface HdsFilterBarTabsSignature {\n Args: {\n selectedTabIndex?: number;\n ariaLabel: string;\n onClickTab?: (event: MouseEvent, tabIndex: number) => void;\n };\n Blocks: {\n default: [\n {\n Tab?: WithBoundArgs<\n typeof HdsFilterBarTabsTabComponent,\n | 'selectedTabIndex'\n | 'tabIds'\n | 'panelIds'\n | 'didInsertNode'\n | 'willDestroyNode'\n | 'onClick'\n | 'onKeyUp'\n >;\n Panel?: WithBoundArgs<\n typeof HdsFilterBarTabsPanelComponent,\n | 'selectedTabIndex'\n | 'tabIds'\n | 'panelIds'\n | 'didInsertNode'\n | 'willDestroyNode'\n >;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBarTabs extends Component<HdsFilterBarTabsSignature> {\n @tracked private _tabIds: string[] = [];\n @tracked private _tabNodes: HTMLElement[] = [];\n @tracked private _panelNodes: HTMLElement[] = [];\n @tracked private _panelIds: string[] = [];\n @tracked private _selectedTabIndex: number = 0;\n @tracked private _selectedTabId?: string;\n\n private _element!: HTMLDivElement;\n\n private _setUpFilterBarTabs = modifier((element: HTMLDivElement) => {\n const { selectedTabIndex } = this.args;\n\n if (selectedTabIndex) {\n this._selectedTabIndex = selectedTabIndex;\n }\n\n this._element = element;\n\n return () => {};\n });\n\n @action\n didInsertTab(): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this.updateTabs();\n });\n }\n\n @action\n willDestroyTab(element: HTMLElement): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this._tabNodes = this._tabNodes.filter(\n (node): boolean => node.id !== element.id\n );\n this._tabIds = this._tabIds.filter(\n (tabId): boolean => tabId !== element.id\n );\n });\n }\n\n @action\n didInsertPanel(): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this.updatePanels();\n });\n }\n\n @action\n willDestroyPanel(element: HTMLElement): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this._panelNodes = this._panelNodes.filter(\n (node): boolean => node.id !== element.id\n );\n this._panelIds = this._panelIds.filter(\n (panelId): boolean => panelId !== element.id\n );\n });\n }\n\n @action\n onClick(event: MouseEvent, tabIndex: number): void {\n this._selectedTabIndex = tabIndex;\n\n // invoke the callback function if it's provided as argument\n if (typeof this.args.onClickTab === 'function') {\n this.args.onClickTab(event, tabIndex);\n }\n }\n\n @action\n onKeyUp(event: KeyboardEvent, tabIndex: number): void {\n const leftArrow = 'ArrowLeft';\n const rightArrow = 'ArrowRight';\n const upArrow = 'ArrowUp';\n const downArrow = 'ArrowDown';\n const enterKey = 'Enter';\n const spaceKey = ' ';\n\n if (event.key === rightArrow || event.key === downArrow) {\n const nextTabIndex = (tabIndex + 1) % this._tabIds.length;\n this.focusTab(nextTabIndex, event);\n } else if (event.key === leftArrow || event.key === upArrow) {\n const prevTabIndex =\n (tabIndex + this._tabIds.length - 1) % this._tabIds.length;\n this.focusTab(prevTabIndex, event);\n } else if (event.key === enterKey || event.key === spaceKey) {\n this._selectedTabIndex = tabIndex;\n }\n // scroll selected tab into view (it may be out of view when activated using a keyboard with `prev/next`)\n const parentNode = this._tabNodes[this._selectedTabIndex]?.parentNode;\n if (parentNode instanceof HTMLElement) {\n parentNode.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n // Focus tab for keyboard & mouse navigation:\n focusTab(tabIndex: number, event: KeyboardEvent): void {\n event.preventDefault();\n this._tabNodes[tabIndex]?.focus();\n }\n\n // Update the tab arrays based on how they are ordered in the DOM\n private updateTabs(): void {\n const tabs = this._element.querySelectorAll(TAB_ELEMENT_SELECTOR);\n let newTabIds: string[] = [];\n let newTabNodes: HTMLElement[] = [];\n tabs.forEach((tab) => {\n newTabIds = [...newTabIds, tab.id];\n newTabNodes = [...newTabNodes, tab as HTMLElement];\n });\n this._tabIds = newTabIds;\n this._tabNodes = newTabNodes;\n }\n\n // Update the panel arrays based on how they are ordered in the DOM\n private updatePanels(): void {\n const panels = this._element.querySelectorAll(PANEL_ELEMENT_SELECTOR);\n let newPanelIds: string[] = [];\n let newPanelNodes: HTMLElement[] = [];\n panels.forEach((panel) => {\n newPanelIds = [...newPanelIds, panel.id];\n newPanelNodes = [...newPanelNodes, panel as HTMLElement];\n });\n this._panelIds = newPanelIds;\n this._panelNodes = newPanelNodes;\n }\n}\n"],"names":["TAB_ELEMENT_SELECTOR","PANEL_ELEMENT_SELECTOR","HdsFilterBarTabs","Component","g","prototype","tracked","i","void 0","_element","_setUpFilterBarTabs","modifier","element","selectedTabIndex","args","_selectedTabIndex","didInsertTab","schedule","updateTabs","n","action","willDestroyTab","_tabNodes","filter","node","id","_tabIds","tabId","didInsertPanel","updatePanels","willDestroyPanel","_panelNodes","_panelIds","panelId","onClick","event","tabIndex","onClickTab","onKeyUp","leftArrow","rightArrow","upArrow","downArrow","enterKey","spaceKey","key","nextTabIndex","length","focusTab","prevTabIndex","parentNode","HTMLElement","scrollIntoView","behavior","block","inline","preventDefault","focus","tabs","querySelectorAll","newTabIds","newTabNodes","forEach","tab","panels","newPanelIds","newPanelNodes","panel","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { precompileTemplate } from '@ember/template-compilation';
6
6
  import { n } from 'decorator-transforms/runtime';
7
7
  import { setComponentTemplate } from '@ember/component';
8
8
 
9
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{! template-lint-disable require-context-role no-invalid-role }}\n{{! template-lint-disable require-presentational-children }}\n<li class={{this.classNames}} ...attributes role=\"presentation\">\n <button\n class=\"hds-filter-bar__tabs__tab__button\"\n id={{this._tabId}}\n type=\"button\"\n role=\"tab\"\n aria-controls={{this.coupledPanelId}}\n aria-selected={{if this.isSelected \"true\" \"false\"}}\n tabindex={{unless this.isSelected \"-1\"}}\n {{on \"click\" this.onClick}}\n {{on \"keyup\" this.onKeyUp}}\n {{this._setUpTab this.didInsertNode this.willDestroyNode}}\n >\n <Hds::Text::Body @size=\"200\" @weight=\"medium\">{{yield}}</Hds::Text::Body>\n <Hds::Icon @name=\"chevron-right\" />\n </button>\n</li>\n{{! template-lint-enable require-presentational-children }}\n{{! template-lint-enable require-context-role no-invalid-role }}");
9
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{! template-lint-disable require-context-role no-invalid-role }}\n{{! template-lint-disable require-presentational-children }}\n<li class={{this.classNames}} ...attributes role=\"presentation\">\n <button\n class=\"hds-filter-bar__tabs__tab__button\"\n id={{this._tabId}}\n type=\"button\"\n role=\"tab\"\n aria-controls={{this.coupledPanelId}}\n aria-selected={{if this.isSelected \"true\" \"false\"}}\n tabindex={{unless this.isSelected \"-1\"}}\n {{on \"click\" this.onClick}}\n {{on \"keyup\" this.onKeyUp}}\n {{this._setUpTab this.didInsertNode this.willDestroyNode}}\n >\n <Hds::Text::Body @size=\"200\" @weight=\"medium\" class=\"hds-filter-bar__tabs__tab__text\">{{yield}}</Hds::Text::Body>\n {{#if (gt @numFilters 0)}}\n <Hds::Text::Body @size=\"200\" @color=\"primary\">\n {{@numFilters}}\n </Hds::Text::Body>\n {{/if}}\n <Hds::Icon @name=\"chevron-right\" @color=\"primary\" />\n </button>\n</li>\n{{! template-lint-enable require-presentational-children }}\n{{! template-lint-enable require-context-role no-invalid-role }}");
10
10
 
11
11
  /**
12
12
  * Copyright (c) HashiCorp, Inc.
@@ -64,7 +64,6 @@ class HdsFilterBarTabsTab extends Component {
64
64
  const {
65
65
  onClick
66
66
  } = this.args;
67
- console.log('onClick event in Tab:', event);
68
67
  if (this.nodeIndex !== undefined && typeof onClick === 'function') {
69
68
  onClick(event, this.nodeIndex);
70
69
  } else {