@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
@@ -2,19 +2,19 @@ import Component from '@glimmer/component';
2
2
  import { action } from '@ember/object';
3
3
  import { tracked } from '@glimmer/tracking';
4
4
  import { modifier } from 'ember-modifier';
5
- import './filter-group.js';
5
+ import './filter-group/index.js';
6
6
  import { precompileTemplate } from '@ember/template-compilation';
7
7
  import { g, i, n } from 'decorator-transforms/runtime';
8
8
  import { setComponentTemplate } from '@ember/component';
9
9
 
10
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<Hds::Dropdown\n @listPosition=\"bottom-left\"\n @height=\"600px\"\n @width=\"600px\"\n class={{this.classNames}}\n @onClose={{this._onClose}}\n {{this._syncFilters @filters}}\n as |D|\n>\n <D.ToggleButton\n @icon=\"filter\"\n @text={{hds-t \"hds.components.filter-bar.filters-dropdown.toggle-button\" default=\"Add filter\"}}\n @color=\"secondary\"\n @size=\"small\"\n />\n <D.Generic>\n <Hds::FilterBar::Tabs @ariaLabel=\"Filter bar tabs\" as |T|>\n {{yield\n (hash\n FilterGroup=(component\n \"hds/filter-bar/filter-group\" tab=T.Tab panel=T.Panel onChange=this.onFilter filters=this.internalFilters\n )\n close=D.close\n )\n }}\n </Hds::FilterBar::Tabs>\n </D.Generic>\n <D.Footer @hasDivider={{true}}>\n <Hds::Layout::Flex @direction=\"row\" @justify=\"space-between\" @align=\"center\" as |LF|>\n <Hds::ButtonSet>\n <Hds::Button\n @text={{hds-t \"hds.components.filter-bar.filters-dropdown.apply\" default=\"Apply filters\"}}\n @size=\"small\"\n {{on \"click\" (fn this.onApply D.close)}}\n />\n <Hds::Button\n @text={{hds-t \"hds.components.filter-bar.filters-dropdown.clear\" default=\"Clear all filters\"}}\n @color=\"secondary\"\n @size=\"small\"\n {{on \"click\" (fn this.onClear D.close)}}\n />\n </Hds::ButtonSet>\n <LF.Item>\n <Hds::Text::Body>{{hds-t\n \"hds.components.filter-bar.filters-dropdown.selected-filters\"\n default=\"Filters selected\"\n }}:</Hds::Text::Body>\n <Hds::BadgeCount\n @text={{this.numFilters}}\n @type=\"outlined\"\n @size=\"small\"\n class=\"hds-filter-bar__filters-dropdown__filters-count\"\n />\n </LF.Item>\n </Hds::Layout::Flex>\n </D.Footer>\n</Hds::Dropdown>");
10
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<Hds::Dropdown\n @listPosition=\"bottom-left\"\n @height=\"600px\"\n @width=\"600px\"\n class={{this.classNames}}\n @onClose={{this._onClose}}\n {{this._syncFilters @filters}}\n as |D|\n>\n <D.ToggleButton\n @icon=\"filter\"\n @text={{hds-t \"hds.components.filter-bar.dropdown.toggle-button\" default=\"Filters\"}}\n @color=\"secondary\"\n @size=\"small\"\n />\n <D.Generic>\n <Hds::FilterBar::Tabs @ariaLabel=\"Filter bar tabs\" as |T|>\n {{yield\n (hash\n FilterGroup=(component\n \"hds/filter-bar/filter-group\" tab=T.Tab panel=T.Panel onChange=this.onFilter filters=this.internalFilters\n )\n close=D.close\n )\n }}\n </Hds::FilterBar::Tabs>\n </D.Generic>\n <D.Footer @hasDivider={{true}}>\n <Hds::ButtonSet>\n {{#unless this.isLiveFilter}}\n <Hds::Button\n @text={{hds-t \"hds.components.filter-bar.dropdown.apply\" default=\"Apply filters\"}}\n @size=\"small\"\n {{on \"click\" (fn this.onApply D.close)}}\n />\n {{/unless}}\n <Hds::Button\n @text={{hds-t \"hds.components.filter-bar.dropdown.clear\" default=\"Clear all filters\"}}\n @color=\"secondary\"\n @size=\"small\"\n {{on \"click\" (fn this.onClear D.close)}}\n />\n </Hds::ButtonSet>\n </D.Footer>\n</Hds::Dropdown>");
11
11
 
12
12
  /**
13
13
  * Copyright (c) HashiCorp, Inc.
14
14
  * SPDX-License-Identifier: MPL-2.0
15
15
  */
16
16
 
17
- class HdsFilterBarFiltersDropdown extends Component {
17
+ class HdsFilterBarDropdown extends Component {
18
18
  static {
19
19
  g(this.prototype, "internalFilters", [tracked], function () {
20
20
  return {};
@@ -37,22 +37,20 @@ class HdsFilterBarFiltersDropdown extends Component {
37
37
  this.internalFilters = _filters;
38
38
  }
39
39
  });
40
+ get isLiveFilter() {
41
+ return this.args.isLiveFilter || false;
42
+ }
40
43
  onFilter(key, keyFilter) {
41
44
  this.internalFilters = this._updateFilter(key, keyFilter);
45
+ if (this.isLiveFilter) {
46
+ this._applyFilters();
47
+ }
42
48
  }
43
49
  static {
44
50
  n(this.prototype, "onFilter", [action]);
45
51
  }
46
52
  onApply(closeDropdown) {
47
- const {
48
- onFilter
49
- } = this.args;
50
- if (onFilter && typeof onFilter === 'function') {
51
- onFilter(this.internalFilters);
52
- }
53
- if (closeDropdown && typeof closeDropdown === 'function') {
54
- closeDropdown();
55
- }
53
+ this._applyFilters(closeDropdown);
56
54
  }
57
55
  static {
58
56
  n(this.prototype, "onApply", [action]);
@@ -72,22 +70,8 @@ class HdsFilterBarFiltersDropdown extends Component {
72
70
  static {
73
71
  n(this.prototype, "onClear", [action]);
74
72
  }
75
- get numFilters() {
76
- let numFilters = 0;
77
- Object.keys(this.internalFilters).forEach(key => {
78
- const filter = this.internalFilters[key];
79
- if (filter) {
80
- if (Array.isArray(filter.data)) {
81
- numFilters += filter.data.length;
82
- } else {
83
- numFilters += 1;
84
- }
85
- }
86
- });
87
- return numFilters;
88
- }
89
73
  get classNames() {
90
- const classes = ['hds-filter-bar__filters-dropdown'];
74
+ const classes = ['hds-filter-bar__dropdown'];
91
75
  return classes.join(' ');
92
76
  }
93
77
  _updateFilter(key, keyFilter) {
@@ -106,6 +90,17 @@ class HdsFilterBarFiltersDropdown extends Component {
106
90
  ...newFilters
107
91
  };
108
92
  }
93
+ _applyFilters = closeDropdown => {
94
+ const {
95
+ onFilter
96
+ } = this.args;
97
+ if (onFilter && typeof onFilter === 'function') {
98
+ onFilter(this.internalFilters);
99
+ }
100
+ if (closeDropdown && typeof closeDropdown === 'function') {
101
+ closeDropdown();
102
+ }
103
+ };
109
104
  _onClose = () => {
110
105
  const {
111
106
  filters
@@ -119,7 +114,7 @@ class HdsFilterBarFiltersDropdown extends Component {
119
114
  }
120
115
  };
121
116
  }
122
- setComponentTemplate(TEMPLATE, HdsFilterBarFiltersDropdown);
117
+ setComponentTemplate(TEMPLATE, HdsFilterBarDropdown);
123
118
 
124
- export { HdsFilterBarFiltersDropdown as default };
125
- //# sourceMappingURL=filters-dropdown.js.map
119
+ export { HdsFilterBarDropdown as default };
120
+ //# sourceMappingURL=dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.js","sources":["../../../../src/components/hds/filter-bar/dropdown.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { modifier } from 'ember-modifier';\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\n\nimport HdsFilterBarFilterGroup from './filter-group/index.ts';\nimport type { HdsFilterBarFilters, HdsFilterBarFilter } from './types.ts';\n\nimport type { HdsDropdownSignature } from '../dropdown/index.ts';\n\nexport interface HdsFilterBarDropdownSignature {\n Args: HdsDropdownSignature['Args'] & {\n filters: HdsFilterBarFilters;\n isLiveFilter: boolean;\n onFilter?: (filters: HdsFilterBarFilters) => void;\n };\n Blocks: {\n default: [\n {\n FilterGroup?: WithBoundArgs<\n typeof HdsFilterBarFilterGroup,\n 'tab' | 'panel' | 'filters' | 'onChange'\n >;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBarDropdown extends Component<\n HdsDropdownSignature & HdsFilterBarDropdownSignature\n> {\n @tracked internalFilters: HdsFilterBarFilters = {};\n\n constructor(owner: Owner, args: HdsFilterBarDropdownSignature['Args']) {\n super(owner, args);\n\n const { filters } = this.args;\n\n if (filters) {\n this.internalFilters = { ...filters };\n }\n }\n\n private _syncFilters = modifier(\n (_element, [_filters]: [HdsFilterBarFilters | undefined]) => {\n if (_filters) {\n this.internalFilters = _filters;\n }\n }\n );\n\n get isLiveFilter(): boolean {\n return this.args.isLiveFilter || false;\n }\n\n @action\n onFilter(key: string, keyFilter?: HdsFilterBarFilter): void {\n this.internalFilters = this._updateFilter(key, keyFilter);\n\n if (this.isLiveFilter) {\n this._applyFilters();\n }\n }\n\n @action\n onApply(closeDropdown?: () => void): void {\n this._applyFilters(closeDropdown);\n }\n\n @action\n onClear(closeDropdown?: () => void): void {\n const { onFilter } = this.args;\n this.internalFilters = {};\n\n if (onFilter && typeof onFilter === 'function') {\n onFilter(this.internalFilters);\n }\n\n if (closeDropdown && typeof closeDropdown === 'function') {\n closeDropdown();\n }\n }\n\n get classNames(): string {\n const classes = ['hds-filter-bar__dropdown'];\n\n return classes.join(' ');\n }\n\n private _updateFilter(\n key: string,\n keyFilter?: HdsFilterBarFilter\n ): HdsFilterBarFilters {\n const newFilters = {} as HdsFilterBarFilters;\n\n Object.keys(this.internalFilters).forEach((k) => {\n newFilters[k] = JSON.parse(\n JSON.stringify(this.internalFilters[k])\n ) as HdsFilterBarFilter;\n });\n if (\n keyFilter === undefined ||\n (Array.isArray(keyFilter) && keyFilter.length === 0)\n ) {\n delete newFilters[key];\n } else {\n Object.assign(newFilters, { [key]: keyFilter });\n }\n\n return { ...newFilters };\n }\n\n private _applyFilters = (closeDropdown?: () => void): void => {\n const { onFilter } = this.args;\n if (onFilter && typeof onFilter === 'function') {\n onFilter(this.internalFilters);\n }\n\n if (closeDropdown && typeof closeDropdown === 'function') {\n closeDropdown();\n }\n };\n\n private _onClose = (): void => {\n const { filters } = this.args;\n if (filters) {\n this.internalFilters = { ...filters };\n } else {\n this.internalFilters = {};\n }\n };\n}\n"],"names":["HdsFilterBarDropdown","Component","g","prototype","tracked","i","void 0","constructor","owner","args","filters","internalFilters","_syncFilters","modifier","_element","_filters","isLiveFilter","onFilter","key","keyFilter","_updateFilter","_applyFilters","n","action","onApply","closeDropdown","onClear","classNames","classes","join","newFilters","Object","keys","forEach","k","JSON","parse","stringify","undefined","Array","isArray","length","assign","_onClose","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::Checkbox::Field checked={{this.isChecked}} @value={{@value}} {{on \"change\" this.onChange}} as |F|>\n <F.Label>{{yield}}</F.Label>\n </Hds::Form::Checkbox::Field>\n</li>");
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::Checkbox::Field checked={{this.isChecked}} @value={{@value}} {{on \"change\" this.onChange}} as |F|>\n <F.Label>{{@label}}</F.Label>\n </Hds::Form::Checkbox::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 HdsFilterBarCheckbox extends Component {
14
+ class HdsFilterBarFilterGroupCheckbox 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 HdsFilterBarCheckbox extends Component {
28
29
  keyFilter,
29
30
  value
30
31
  } = this.args;
31
- if (Array.isArray(keyFilter)) {
32
- return keyFilter.some(filter => filter.value === value);
32
+ if (keyFilter && Array.isArray(keyFilter.data)) {
33
+ return keyFilter.data.some(filter => filter.value === value);
33
34
  }
34
35
  return false;
35
36
  }
36
37
  }
37
- setComponentTemplate(TEMPLATE, HdsFilterBarCheckbox);
38
+ setComponentTemplate(TEMPLATE, HdsFilterBarFilterGroupCheckbox);
38
39
 
39
- export { HdsFilterBarCheckbox as default };
40
+ export { HdsFilterBarFilterGroupCheckbox as default };
40
41
  //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","sources":["../../../../../src/components/hds/filter-bar/filter-group/checkbox.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nimport type { HdsFilterBarFilter } from '../types.ts';\n\nexport interface HdsFilterBarFilterGroupCheckboxSignature {\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 HdsFilterBarFilterGroupCheckbox extends Component<HdsFilterBarFilterGroupCheckboxSignature> {\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 (keyFilter && Array.isArray(keyFilter.data)) {\n return keyFilter.data.some((filter) => filter.value === value);\n }\n return false;\n }\n}\n"],"names":["HdsFilterBarFilterGroupCheckbox","Component","onChange","event","label","args","n","prototype","action","isChecked","keyFilter","value","Array","isArray","data","some","filter","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;;AAoBe,MAAMA,+BAA+B,SAASC,SAAS,CAA2C;EAE/GC,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;IACtC,IAAIK,SAAS,IAAIE,KAAK,CAACC,OAAO,CAACH,SAAS,CAACI,IAAI,CAAC,EAAE;AAC9C,MAAA,OAAOJ,SAAS,CAACI,IAAI,CAACC,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACL,KAAK,KAAKA,KAAK,CAAC;AAChE,IAAA;AACA,IAAA,OAAO,KAAK;AACd,EAAA;AACF;AAACM,oBAAA,CAAAC,QAAA,EAhBoBlB,+BAA+B,CAAA;;;;"}
@@ -0,0 +1,164 @@
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 { HdsFilterBarDateFilterSelectorValues } 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__date\">\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 {{on \"change\" this.onSelectorChange}}\n class=\"hds-filter-bar__filter-group__field\"\n as |F|\n >\n <F.Label>{{this.selectorLabelText}}</F.Label>\n <F.Options>\n <option value=\"\">{{hds-t\n \"hds.components.filter-bar.date.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\" @direction={{if (eq @type \"datetime\") \"column\" \"row\"}}>\n <Hds::Form::TextInput::Base\n @id={{this._betweenValueStartInputId}}\n @type={{this.inputType}}\n @value={{this._betweenValueStart}}\n placeholder={{hds-t \"hds.components.filter-bar.between-value-inputs.date.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={{this.inputType}}\n @value={{this._betweenValueEnd}}\n placeholder={{hds-t \"hds.components.filter-bar.between-value-inputs.date.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={{this.inputType}}\n @value={{this._value}}\n placeholder={{hds-t \"hds.components.filter-bar.date.value-input.placeholder\" default=\"Enter a value\"}}\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.date.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 DATE_SELECTORS = Object.values(HdsFilterBarDateFilterSelectorValues);
19
+ const DATE_SELECTORS_TEXT = {
20
+ [HdsFilterBarDateFilterSelectorValues.before]: 'before',
21
+ [HdsFilterBarDateFilterSelectorValues.exactly]: 'exactly',
22
+ [HdsFilterBarDateFilterSelectorValues.after]: 'after',
23
+ [HdsFilterBarDateFilterSelectorValues.between]: 'between'
24
+ };
25
+ const DATE_SELECTORS_INPUT_TEXT = {
26
+ [HdsFilterBarDateFilterSelectorValues.before]: 'Before',
27
+ [HdsFilterBarDateFilterSelectorValues.exactly]: 'Exactly',
28
+ [HdsFilterBarDateFilterSelectorValues.after]: 'After',
29
+ [HdsFilterBarDateFilterSelectorValues.between]: 'Between'
30
+ };
31
+ class HdsFilterBarFilterGroupDate extends Component {
32
+ static {
33
+ g(this.prototype, "hdsIntl", [service]);
34
+ }
35
+ #hdsIntl = (i(this, "hdsIntl"), void 0);
36
+ static {
37
+ g(this.prototype, "_selector", [tracked]);
38
+ }
39
+ #_selector = (i(this, "_selector"), void 0);
40
+ static {
41
+ g(this.prototype, "_value", [tracked]);
42
+ }
43
+ #_value = (i(this, "_value"), void 0);
44
+ static {
45
+ g(this.prototype, "_betweenValueStart", [tracked]);
46
+ }
47
+ #_betweenValueStart = (i(this, "_betweenValueStart"), void 0);
48
+ static {
49
+ g(this.prototype, "_betweenValueEnd", [tracked]);
50
+ }
51
+ #_betweenValueEnd = (i(this, "_betweenValueEnd"), void 0);
52
+ _selectorValues = DATE_SELECTORS;
53
+ _selectorInputId = 'selector-input-' + guidFor(this);
54
+ _valueInputId = 'value-input-' + guidFor(this);
55
+ _betweenValueStartInputId = 'between-value-start-input-' + guidFor(this);
56
+ _betweenValueEndInputId = 'between-value-end-input-' + guidFor(this);
57
+ constructor(owner, args) {
58
+ super(owner, args);
59
+ const {
60
+ keyFilter
61
+ } = this.args;
62
+ if (keyFilter && (keyFilter.type === 'date' || keyFilter.type === 'time' || keyFilter.type === 'datetime')) {
63
+ const data = keyFilter.data;
64
+ this._selector = data.selector;
65
+ if (data.selector === 'between') {
66
+ if (data.value && typeof data.value === 'object' && 'start' in data.value && 'end' in data.value) {
67
+ this._betweenValueStart = data.value.start;
68
+ this._betweenValueEnd = data.value.end;
69
+ }
70
+ } else {
71
+ this._value = data.value;
72
+ }
73
+ }
74
+ }
75
+ get type() {
76
+ return this.args.type || 'date';
77
+ }
78
+ get inputType() {
79
+ if (this.type === 'datetime') {
80
+ return 'datetime-local';
81
+ }
82
+ return this.type;
83
+ }
84
+ get selectorLabelText() {
85
+ return this.hdsIntl.t(`hds.components.filter-bar.date.${this.type}.label`, {
86
+ default: 'Date is'
87
+ });
88
+ }
89
+ onSelectorChange(event) {
90
+ const select = event.target;
91
+ this._selector = select.value;
92
+ if (this._selector === 'between') {
93
+ this._value = undefined;
94
+ } else {
95
+ this._betweenValueStart = undefined;
96
+ this._betweenValueEnd = undefined;
97
+ }
98
+ this._onChange();
99
+ }
100
+ static {
101
+ n(this.prototype, "onSelectorChange", [action]);
102
+ }
103
+ onValueChange(event) {
104
+ const input = event.target;
105
+ this._value = input.value;
106
+ this._onChange();
107
+ }
108
+ static {
109
+ n(this.prototype, "onValueChange", [action]);
110
+ }
111
+ onBetweenValueStartChange(event) {
112
+ const input = event.target;
113
+ this._betweenValueStart = input.value;
114
+ this._onChange();
115
+ }
116
+ static {
117
+ n(this.prototype, "onBetweenValueStartChange", [action]);
118
+ }
119
+ onBetweenValueEndChange(event) {
120
+ const input = event.target;
121
+ this._betweenValueEnd = input.value;
122
+ this._onChange();
123
+ }
124
+ static {
125
+ n(this.prototype, "onBetweenValueEndChange", [action]);
126
+ }
127
+ onClear() {
128
+ this._resetInputValues();
129
+ this._onChange();
130
+ }
131
+ static {
132
+ n(this.prototype, "onClear", [action]);
133
+ }
134
+ _onChange() {
135
+ const {
136
+ onChange
137
+ } = this.args;
138
+ if (onChange && typeof onChange === 'function') {
139
+ if (this._selector === 'between' && this._betweenValueStart !== undefined && this._betweenValueEnd !== undefined) {
140
+ onChange(this._selector, {
141
+ start: this._betweenValueStart,
142
+ end: this._betweenValueEnd
143
+ });
144
+ } else {
145
+ onChange(this._selector, this._value);
146
+ }
147
+ }
148
+ }
149
+ _selectorText = selector => {
150
+ return this.hdsIntl.t(`hds.components.filter-bar.date.selector-input.${selector}`, {
151
+ default: DATE_SELECTORS_INPUT_TEXT[selector]
152
+ });
153
+ };
154
+ _resetInputValues = () => {
155
+ this._selector = undefined;
156
+ this._value = undefined;
157
+ this._betweenValueStart = undefined;
158
+ this._betweenValueEnd = undefined;
159
+ };
160
+ }
161
+ setComponentTemplate(TEMPLATE, HdsFilterBarFilterGroupDate);
162
+
163
+ export { DATE_SELECTORS, DATE_SELECTORS_INPUT_TEXT, DATE_SELECTORS_TEXT, HdsFilterBarFilterGroupDate as default };
164
+ //# sourceMappingURL=date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.js","sources":["../../../../../src/components/hds/filter-bar/filter-group/date.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 { HdsFormTextInputTypes } from '../../form/text-input/types.ts';\n\nimport type {\n HdsFilterBarFilter,\n HdsFilterBarDateFilterSelector,\n HdsFilterBarDateFilterValue,\n} from '../types.ts';\nimport { HdsFilterBarDateFilterSelectorValues } from '../types.ts';\n\nexport const DATE_SELECTORS: HdsFilterBarDateFilterSelector[] = Object.values(\n HdsFilterBarDateFilterSelectorValues\n);\n\nexport const DATE_SELECTORS_TEXT: Record<\n HdsFilterBarDateFilterSelector,\n string\n> = {\n [HdsFilterBarDateFilterSelectorValues.before]: 'before',\n [HdsFilterBarDateFilterSelectorValues.exactly]: 'exactly',\n [HdsFilterBarDateFilterSelectorValues.after]: 'after',\n [HdsFilterBarDateFilterSelectorValues.between]: 'between',\n};\n\nexport const DATE_SELECTORS_INPUT_TEXT: Record<\n HdsFilterBarDateFilterSelector,\n string\n> = {\n [HdsFilterBarDateFilterSelectorValues.before]: 'Before',\n [HdsFilterBarDateFilterSelectorValues.exactly]: 'Exactly',\n [HdsFilterBarDateFilterSelectorValues.after]: 'After',\n [HdsFilterBarDateFilterSelectorValues.between]: 'Between',\n};\n\nexport interface HdsFilterBarFilterGroupDateSignature {\n Args: {\n keyFilter: HdsFilterBarFilter | undefined;\n type?: 'date' | 'time' | 'datetime';\n onChange?: (\n selector?: HdsFilterBarDateFilterSelector,\n value?: HdsFilterBarDateFilterValue\n ) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBarFilterGroupDate extends Component<HdsFilterBarFilterGroupDateSignature> {\n @service hdsIntl!: HdsIntlService;\n\n @tracked private _selector: HdsFilterBarDateFilterSelector | undefined;\n @tracked private _value: string | undefined;\n @tracked private _betweenValueStart: string | undefined;\n @tracked private _betweenValueEnd: string | undefined;\n\n private _selectorValues = DATE_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: HdsFilterBarFilterGroupDateSignature['Args']\n ) {\n super(owner, args);\n\n const { keyFilter } = this.args;\n if (\n keyFilter &&\n (keyFilter.type === 'date' ||\n keyFilter.type === 'time' ||\n keyFilter.type === 'datetime')\n ) {\n const data = keyFilter.data;\n this._selector = data.selector;\n if (data.selector === 'between') {\n if (\n data.value &&\n typeof data.value === 'object' &&\n 'start' in data.value &&\n 'end' in data.value\n ) {\n this._betweenValueStart = data.value.start;\n this._betweenValueEnd = data.value.end;\n }\n } else {\n this._value = data.value as string;\n }\n }\n }\n\n get type(): 'date' | 'time' | 'datetime' {\n return this.args.type || 'date';\n }\n\n get inputType(): HdsFormTextInputTypes {\n if (this.type === 'datetime') {\n return 'datetime-local';\n }\n return this.type;\n }\n\n get selectorLabelText(): string {\n return this.hdsIntl.t(`hds.components.filter-bar.date.${this.type}.label`, {\n default: 'Date is',\n });\n }\n\n @action\n onSelectorChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n this._selector = select.value as HdsFilterBarDateFilterSelector;\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 = input.value;\n this._onChange();\n }\n\n @action\n onBetweenValueStartChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this._betweenValueStart = input.value;\n this._onChange();\n }\n\n @action\n onBetweenValueEndChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this._betweenValueEnd = 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: HdsFilterBarDateFilterSelector\n ): string => {\n return this.hdsIntl.t(\n `hds.components.filter-bar.date.selector-input.${selector}`,\n {\n default: DATE_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":["DATE_SELECTORS","Object","values","HdsFilterBarDateFilterSelectorValues","DATE_SELECTORS_TEXT","before","exactly","after","between","DATE_SELECTORS_INPUT_TEXT","HdsFilterBarFilterGroupDate","Component","g","prototype","service","i","void 0","tracked","_selectorValues","_selectorInputId","guidFor","_valueInputId","_betweenValueStartInputId","_betweenValueEndInputId","constructor","owner","args","keyFilter","type","data","_selector","selector","value","_betweenValueStart","start","_betweenValueEnd","end","_value","inputType","selectorLabelText","hdsIntl","t","default","onSelectorChange","event","select","target","undefined","_onChange","n","action","onValueChange","input","onBetweenValueStartChange","onBetweenValueEndChange","onClear","_resetInputValues","onChange","_selectorText","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import Component from '@glimmer/component';
2
+ import { action } from '@ember/object';
3
+ import { precompileTemplate } from '@ember/template-compilation';
4
+ import { n } from 'decorator-transforms/runtime';
5
+ import { setComponentTemplate } from '@ember/component';
6
+
7
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<div class=\"hds-filter-bar__filter-group__filter-generic\">\n <Hds::Layout::Flex class=\"hds-filter-bar__filter-group__fields\" @direction=\"column\" @gap=\"16\">\n {{yield (hash updateFilter=this.updateFilter)}}\n </Hds::Layout::Flex>\n <div class=\"hds-filter-bar__filter-group__clear\">\n <Hds::Button\n @text={{hds-t \"hds.components.filter-bar.date.clear\" default=\"Clear filter\"}}\n @color=\"tertiary\"\n @icon=\"rotate-ccw\"\n @isInline={{true}}\n {{on \"click\" this.onClear}}\n />\n </div>\n</div>");
8
+
9
+ /**
10
+ * Copyright (c) HashiCorp, Inc.
11
+ * SPDX-License-Identifier: MPL-2.0
12
+ */
13
+
14
+ class HdsFilterBarFilterGroupGeneric extends Component {
15
+ updateFilter(filter) {
16
+ console.log('Update filter action triggered', filter);
17
+ const {
18
+ onChange
19
+ } = this.args;
20
+ if (onChange && typeof onChange === 'function') {
21
+ onChange(filter);
22
+ }
23
+ }
24
+ static {
25
+ n(this.prototype, "updateFilter", [action]);
26
+ }
27
+ onClear() {
28
+ console.log('Clear action triggered');
29
+ const {
30
+ onChange
31
+ } = this.args;
32
+ if (onChange && typeof onChange === 'function') {
33
+ onChange();
34
+ }
35
+ }
36
+ static {
37
+ n(this.prototype, "onClear", [action]);
38
+ }
39
+ }
40
+ setComponentTemplate(TEMPLATE, HdsFilterBarFilterGroupGeneric);
41
+
42
+ export { HdsFilterBarFilterGroupGeneric as default };
43
+ //# sourceMappingURL=generic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic.js","sources":["../../../../../src/components/hds/filter-bar/filter-group/generic.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 {\n HdsFilterBarFilter,\n HdsFilterBarGenericFilter,\n} from '../types.ts';\n\nexport interface HdsFilterBarFilterGroupGenericSignature {\n Args: {\n keyFilter: HdsFilterBarFilter | undefined;\n onChange?: (filter?: HdsFilterBarGenericFilter) => void;\n };\n Blocks: {\n default: [\n {\n updateFilter: (filter: HdsFilterBarGenericFilter) => void;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBarFilterGroupGeneric extends Component<HdsFilterBarFilterGroupGenericSignature> {\n @action\n updateFilter(filter: HdsFilterBarGenericFilter): void {\n console.log('Update filter action triggered', filter);\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange(filter);\n }\n }\n\n @action\n onClear(): void {\n console.log('Clear action triggered');\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange();\n }\n }\n}\n"],"names":["HdsFilterBarFilterGroupGeneric","Component","updateFilter","filter","console","log","onChange","args","n","prototype","action","onClear","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;;AAyBe,MAAMA,8BAA8B,SAASC,SAAS,CAA0C;EAE7GC,YAAYA,CAACC,MAAiC,EAAQ;AACpDC,IAAAA,OAAO,CAACC,GAAG,CAAC,gCAAgC,EAAEF,MAAM,CAAC;IACrD,MAAM;AAAEG,MAAAA;KAAU,GAAG,IAAI,CAACC,IAAI;AAC9B,IAAA,IAAID,QAAQ,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;MAC9CA,QAAQ,CAACH,MAAM,CAAC;AAClB,IAAA;AACF,EAAA;AAAC,EAAA;IAAAK,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,cAAA,EAAA,CAPAC,MAAM,CAAA,CAAA;AAAA;AAUPC,EAAAA,OAAOA,GAAS;AACdP,IAAAA,OAAO,CAACC,GAAG,CAAC,wBAAwB,CAAC;IACrC,MAAM;AAAEC,MAAAA;KAAU,GAAG,IAAI,CAACC,IAAI;AAC9B,IAAA,IAAID,QAAQ,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;AAC9CA,MAAAA,QAAQ,EAAE;AACZ,IAAA;AACF,EAAA;AAAC,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAPAC,MAAM,CAAA,CAAA;AAAA;AAQT;AAACE,oBAAA,CAAAC,QAAA,EAlBoBb,8BAA8B,CAAA;;;;"}
@@ -2,15 +2,16 @@ import Component from '@glimmer/component';
2
2
  import { action } from '@ember/object';
3
3
  import { tracked } from '@glimmer/tracking';
4
4
  import { modifier } from 'ember-modifier';
5
- import './tabs/tab.js';
6
- import './tabs/panel.js';
5
+ import '../tabs/tab.js';
6
+ import '../tabs/panel.js';
7
+ import './generic.js';
7
8
  import './checkbox.js';
8
9
  import './radio.js';
9
10
  import { precompileTemplate } from '@ember/template-compilation';
10
11
  import { g, i, n } from 'decorator-transforms/runtime';
11
12
  import { setComponentTemplate } from '@ember/component';
12
13
 
13
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{#let @tab as |Tab|}}\n <Tab>\n {{@text}}\n {{#unless (eq this.numFilters 0)}}\n <Hds::BadgeCount\n @text={{this.numFilters}}\n @type=\"outlined\"\n @size=\"small\"\n class=\"hds-filter-bar__filters-dropdown__filter-group__filters-count\"\n />\n {{/unless}}\n </Tab>\n{{/let}}\n{{#let @panel as |Panel|}}\n <Panel {{this._setUpFilterPanel}}>\n {{#if @searchEnabled}}\n <div class=\"hds-filter-bar__filters-dropdown__filter-group__search\">\n <Hds::Form::TextInput::Base\n @type=\"search\"\n placeholder={{hds-t \"components.filter-bar.filter-group.search-input-placeholder\" default=\"Search\"}}\n {{on \"input\" this.onSearch}}\n />\n </div>\n {{/if}}\n {{#if (eq @type \"range\")}}\n <Hds::FilterBar::Range @keyFilter={{this.keyFilter}} @onChange={{this.onRangeChange}} />\n {{else}}\n <ul class=\"hds-filter-bar__filters-dropdown__filter-group__list\">\n {{yield\n (hash\n Checkbox=(component \"hds/filter-bar/checkbox\" keyFilter=this.keyFilter onChange=this.onSelectionChange)\n Radio=(component \"hds/filter-bar/radio\" keyFilter=this.keyFilter onChange=this.onSelectionChange)\n )\n }}\n </ul>\n {{/if}}\n </Panel>\n{{/let}}");
14
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{#let @tab as |Tab|}}\n <Tab @numFilters={{this.numFilters}}>\n {{@text}}\n </Tab>\n{{/let}}\n{{#let @panel as |Panel|}}\n <Panel {{this._setUpFilterPanel}}>\n {{#if @searchEnabled}}\n <div class=\"hds-filter-bar__filter-group__search\">\n <Hds::Form::TextInput::Base\n @type=\"search\"\n placeholder={{hds-t \"components.filter-bar.filter-group.search-input-placeholder\" default=\"Search\"}}\n {{on \"input\" this.onSearch}}\n />\n </div>\n {{/if}}\n {{#if (eq @type \"numerical\")}}\n <Hds::FilterBar::FilterGroup::Numerical @keyFilter={{this.keyFilter}} @onChange={{this.onNumericalChange}} />\n {{else if (eq @type \"date\")}}\n <Hds::FilterBar::FilterGroup::Date @keyFilter={{this.keyFilter}} @onChange={{this.onDateChange}} @type=\"date\" />\n {{else if (eq @type \"datetime\")}}\n <Hds::FilterBar::FilterGroup::Date\n @keyFilter={{this.keyFilter}}\n @onChange={{this.onDateChange}}\n @type=\"datetime\"\n />\n {{else if (eq @type \"time\")}}\n <Hds::FilterBar::FilterGroup::Date @keyFilter={{this.keyFilter}} @onChange={{this.onDateChange}} @type=\"time\" />\n {{else if (eq @type \"generic\")}}\n {{yield\n (hash\n Generic=(component\n \"hds/filter-bar/filter-group/generic\" keyFilter=this.keyFilter onChange=this.onGenericChange\n )\n )\n }}\n {{else}}\n <div class=\"hds-filter-bar__filter-group__values-list\">\n <div class=\"hds-filter-bar__filter-group__clear\">\n <Hds::Button\n @text={{hds-t \"hds.components.filter-bar.filter-group.clear\" default=\"Clear selection\"}}\n @color=\"tertiary\"\n @icon=\"rotate-ccw\"\n {{on \"click\" this.onClear}}\n />\n </div>\n <ul class=\"hds-filter-bar__filter-group__list\">\n {{yield\n (hash\n Checkbox=(component\n \"hds/filter-bar/filter-group/checkbox\" keyFilter=this.keyFilter onChange=this.onSelectionChange\n )\n Radio=(component\n \"hds/filter-bar/filter-group/radio\" keyFilter=this.keyFilter onChange=this.onSelectionChange\n )\n )\n }}\n </ul>\n </div>\n {{/if}}\n </Panel>\n{{/let}}");
14
15
 
15
16
  /**
16
17
  * Copyright (c) HashiCorp, Inc.
@@ -28,7 +29,7 @@ class HdsFilterBarFilterGroup extends Component {
28
29
  _setUpFilterPanel = modifier(element => {
29
30
  this._panelElement = element;
30
31
  if (this.keyFilter) {
31
- this.internalFilters = JSON.parse(JSON.stringify(this.keyFilter));
32
+ this.internalFilters = JSON.parse(JSON.stringify(this.keyFilter.data));
32
33
  }
33
34
  });
34
35
  get type() {
@@ -48,7 +49,7 @@ class HdsFilterBarFilterGroup extends Component {
48
49
  if (!filters) {
49
50
  return undefined;
50
51
  }
51
- return filters[key]?.data;
52
+ return filters[key];
52
53
  }
53
54
  get numFilters() {
54
55
  const {
@@ -65,10 +66,11 @@ class HdsFilterBarFilterGroup extends Component {
65
66
  }
66
67
  return 0;
67
68
  }
68
- onSelectionChange(event) {
69
+ onSelectionChange(event, label) {
69
70
  const addFilter = value => {
70
71
  const newFilter = {
71
- value: value
72
+ value: value,
73
+ label: label
72
74
  };
73
75
  if (this.type === 'single-select') {
74
76
  this.internalFilters = newFilter;
@@ -113,7 +115,30 @@ class HdsFilterBarFilterGroup extends Component {
113
115
  static {
114
116
  n(this.prototype, "onSelectionChange", [action]);
115
117
  }
116
- onRangeChange(selector, value) {
118
+ onNumericalChange(selector, value) {
119
+ const addFilter = () => {
120
+ const newFilter = {
121
+ selector: selector,
122
+ value: value
123
+ };
124
+ return newFilter;
125
+ };
126
+ if (selector && value) {
127
+ this.internalFilters = addFilter();
128
+ } else {
129
+ this.internalFilters = undefined;
130
+ }
131
+ const {
132
+ onChange
133
+ } = this.args;
134
+ if (onChange && typeof onChange === 'function') {
135
+ onChange(this.args.key, this.formattedFilters);
136
+ }
137
+ }
138
+ static {
139
+ n(this.prototype, "onNumericalChange", [action]);
140
+ }
141
+ onDateChange(selector, value) {
117
142
  const addFilter = () => {
118
143
  const newFilter = {
119
144
  selector: selector,
@@ -134,7 +159,36 @@ class HdsFilterBarFilterGroup extends Component {
134
159
  }
135
160
  }
136
161
  static {
137
- n(this.prototype, "onRangeChange", [action]);
162
+ n(this.prototype, "onDateChange", [action]);
163
+ }
164
+ onGenericChange(filter) {
165
+ if (filter) {
166
+ this.internalFilters = filter.data;
167
+ filter.text = this.args.text;
168
+ } else {
169
+ this.internalFilters = undefined;
170
+ }
171
+ const {
172
+ onChange
173
+ } = this.args;
174
+ if (onChange && typeof onChange === 'function') {
175
+ onChange(this.args.key, filter);
176
+ }
177
+ }
178
+ static {
179
+ n(this.prototype, "onGenericChange", [action]);
180
+ }
181
+ onClear() {
182
+ this.internalFilters = undefined;
183
+ const {
184
+ onChange
185
+ } = this.args;
186
+ if (onChange && typeof onChange === 'function') {
187
+ onChange(this.args.key, this.formattedFilters);
188
+ }
189
+ }
190
+ static {
191
+ n(this.prototype, "onClear", [action]);
138
192
  }
139
193
  get formattedFilters() {
140
194
  if (this.internalFilters === undefined || Array.isArray(this.internalFilters) && this.internalFilters.length === 0) {
@@ -152,16 +206,16 @@ class HdsFilterBarFilterGroup extends Component {
152
206
  return classes.join(' ');
153
207
  }
154
208
  onSearch = event => {
155
- const listItems = this._panelElement.querySelectorAll('.hds-filter-bar__filters-dropdown__filter-option');
209
+ const listItems = this._panelElement.querySelectorAll('.hds-filter-bar__filter-group__selection-option');
156
210
  const input = event.target;
157
211
  listItems.forEach(item => {
158
212
  if (item.textContent) {
159
213
  const text = item.textContent.toLowerCase();
160
214
  const searchText = input.value.toLowerCase();
161
215
  if (text.includes(searchText)) {
162
- item.classList.remove('hds-filter-bar__filters-dropdown__filter-option--hidden');
216
+ item.classList.remove('hds-filter-bar__filter-group__selection-option--hidden');
163
217
  } else {
164
- item.classList.add('hds-filter-bar__filters-dropdown__filter-option--hidden');
218
+ item.classList.add('hds-filter-bar__filter-group__selection-option--hidden');
165
219
  }
166
220
  }
167
221
  });
@@ -170,4 +224,4 @@ class HdsFilterBarFilterGroup extends Component {
170
224
  setComponentTemplate(TEMPLATE, HdsFilterBarFilterGroup);
171
225
 
172
226
  export { HdsFilterBarFilterGroup as default };
173
- //# sourceMappingURL=filter-group.js.map
227
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/hds/filter-bar/filter-group/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 { modifier } from 'ember-modifier';\nimport type { WithBoundArgs } from '@glint/template';\n\nimport HdsFilterBarTabsTab from '../tabs/tab.ts';\nimport HdsFilterBarTabsPanel from '../tabs/panel.ts';\nimport type { HdsTabsPanelSignature } from '../../tabs/panel.ts';\n\nimport HdsFilterBarFilterGroupGeneric from './generic.ts';\nimport HdsFilterBarFilterGroupCheckbox from './checkbox.ts';\nimport HdsFilterBarFilterGroupRadio from './radio.ts';\n\nimport type {\n HdsFilterBarFilter,\n HdsFilterBarFilters,\n HdsFilterBarFilterType,\n HdsFilterBarData,\n HdsFilterBarGenericFilter,\n HdsFilterBarGenericFilterData,\n HdsFilterBarNumericalFilterData,\n HdsFilterBarNumericalFilterSelector,\n HdsFilterBarNumericalFilterValue,\n HdsFilterBarDateFilterData,\n HdsFilterBarDateFilterSelector,\n HdsFilterBarDateFilterValue,\n} from '../types.ts';\n\nexport interface HdsFilterBarFilterGroupSignature {\n Args: {\n tab?: WithBoundArgs<typeof HdsFilterBarTabsTab, never>;\n panel?: WithBoundArgs<typeof HdsFilterBarTabsPanel, never>;\n key: string;\n text: string;\n type?: HdsFilterBarFilterType;\n filters: HdsFilterBarFilters;\n searchEnabled?: boolean;\n onChange: (key: string, keyFilter?: HdsFilterBarFilter) => void;\n };\n Blocks: {\n default: [\n {\n Generic?: WithBoundArgs<\n typeof HdsFilterBarFilterGroupGeneric,\n 'keyFilter'\n >;\n Checkbox?: WithBoundArgs<\n typeof HdsFilterBarFilterGroupCheckbox,\n 'keyFilter' | 'onChange'\n >;\n Radio?: WithBoundArgs<\n typeof HdsFilterBarFilterGroupRadio,\n 'keyFilter' | 'onChange'\n >;\n },\n ];\n };\n Element: HdsTabsPanelSignature['Element'];\n}\n\nexport default class HdsFilterBarFilterGroup extends Component<HdsFilterBarFilterGroupSignature> {\n @tracked internalFilters: HdsFilterBarData | undefined = [];\n\n private _panelElement!: HdsTabsPanelSignature['Element'];\n\n private _setUpFilterPanel = modifier(\n (element: HdsTabsPanelSignature['Element']) => {\n this._panelElement = element;\n\n if (this.keyFilter) {\n this.internalFilters = JSON.parse(\n JSON.stringify(this.keyFilter.data)\n ) as HdsFilterBarData;\n }\n }\n );\n\n get type(): HdsFilterBarFilterType {\n const { type } = this.args;\n\n if (!type) {\n return 'multi-select';\n }\n return type;\n }\n\n get keyFilter(): HdsFilterBarFilter | undefined {\n const { filters, key } = this.args;\n\n if (!filters) {\n return undefined;\n }\n return filters[key];\n }\n\n get numFilters(): number {\n const { filters, key } = this.args;\n if (filters && key in filters) {\n const keyFilters = filters[key]?.data;\n if (Array.isArray(keyFilters)) {\n return keyFilters.length;\n } else if (keyFilters) {\n return 1;\n }\n }\n return 0;\n }\n\n @action\n onSelectionChange(event: Event, label?: string): void {\n const addFilter = (value: unknown): void => {\n const newFilter = {\n value: value,\n label: label,\n } as HdsFilterBarGenericFilterData;\n if (this.type === 'single-select') {\n this.internalFilters = newFilter;\n } else {\n if (Array.isArray(this.internalFilters)) {\n this.internalFilters.push(newFilter);\n } else {\n this.internalFilters = [newFilter];\n }\n }\n };\n\n const removeFilter = (value: string): void => {\n if (this.type === 'single-select') {\n this.internalFilters = undefined;\n } else {\n if (Array.isArray(this.internalFilters)) {\n const newFilter = [] as HdsFilterBarGenericFilterData[];\n this.internalFilters.forEach((filter) => {\n if (filter.value != value) {\n newFilter.push(filter);\n }\n });\n this.internalFilters = newFilter;\n } else {\n this.internalFilters = [];\n }\n }\n };\n\n const input = event.target as HTMLInputElement;\n\n if (input.checked) {\n addFilter(input.value);\n } else {\n removeFilter(input.value);\n }\n\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange(this.args.key, this.formattedFilters);\n }\n }\n\n @action\n onNumericalChange(\n selector?: HdsFilterBarNumericalFilterSelector,\n value?: HdsFilterBarNumericalFilterValue\n ): void {\n const addFilter = (): HdsFilterBarData => {\n const newFilter = {\n selector: selector,\n value: value,\n } as HdsFilterBarNumericalFilterData;\n return newFilter;\n };\n\n if (selector && value) {\n this.internalFilters = addFilter();\n } else {\n this.internalFilters = undefined;\n }\n\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange(this.args.key, this.formattedFilters);\n }\n }\n\n @action\n onDateChange(\n selector?: HdsFilterBarDateFilterSelector,\n value?: HdsFilterBarDateFilterValue\n ): void {\n const addFilter = (): HdsFilterBarData => {\n const newFilter = {\n selector: selector,\n value: value,\n } as HdsFilterBarDateFilterData;\n return newFilter;\n };\n\n if (selector && value) {\n this.internalFilters = addFilter();\n } else {\n this.internalFilters = undefined;\n }\n\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange(this.args.key, this.formattedFilters);\n }\n }\n\n @action\n onGenericChange(filter?: HdsFilterBarGenericFilter): void {\n if (filter) {\n this.internalFilters = filter.data;\n filter.text = this.args.text;\n } else {\n this.internalFilters = undefined;\n }\n\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange(this.args.key, filter);\n }\n }\n\n @action\n onClear(): void {\n this.internalFilters = undefined;\n\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange(this.args.key, this.formattedFilters);\n }\n }\n\n get formattedFilters(): HdsFilterBarFilter | undefined {\n if (\n this.internalFilters === undefined ||\n (Array.isArray(this.internalFilters) && this.internalFilters.length === 0)\n ) {\n return undefined;\n }\n return {\n type: this.type,\n text: this.args.text,\n data: this.internalFilters,\n } as HdsFilterBarFilter;\n }\n\n get classNames(): string {\n const classes = ['hds-filter-bar__filter-group'];\n\n classes.push(`hds-filter-bar__dropdown--type-${this.type}`);\n\n return classes.join(' ');\n }\n\n private onSearch = (event: Event) => {\n const listItems = this._panelElement.querySelectorAll(\n '.hds-filter-bar__filter-group__selection-option'\n );\n const input = event.target as HTMLInputElement;\n listItems.forEach((item) => {\n if (item.textContent) {\n const text = item.textContent.toLowerCase();\n const searchText = input.value.toLowerCase();\n if (text.includes(searchText)) {\n item.classList.remove(\n 'hds-filter-bar__filter-group__selection-option--hidden'\n );\n } else {\n item.classList.add(\n 'hds-filter-bar__filter-group__selection-option--hidden'\n );\n }\n }\n });\n };\n}\n"],"names":["HdsFilterBarFilterGroup","Component","g","prototype","tracked","i","void 0","_panelElement","_setUpFilterPanel","modifier","element","keyFilter","internalFilters","JSON","parse","stringify","data","type","args","filters","key","undefined","numFilters","keyFilters","Array","isArray","length","onSelectionChange","event","label","addFilter","value","newFilter","push","removeFilter","forEach","filter","input","target","checked","onChange","formattedFilters","n","action","onNumericalChange","selector","onDateChange","onGenericChange","text","onClear","classNames","classes","join","onSearch","listItems","querySelectorAll","item","textContent","toLowerCase","searchText","includes","classList","remove","add","setComponentTemplate","TEMPLATE"],"mappings":"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"}