@bridgeline-digital/hawksearch-handlebars-ui 1.0.0-beta.0 → 1.0.0-beta.3

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 (197) hide show
  1. package/{src/assets/images/icons.svg → dist/545f0f75f62e4805198f.svg} +0 -0
  2. package/{src/assets/images/placeholder.png → dist/c99b7374b9bf579d0fd0.png} +0 -0
  3. package/dist/components/autocomplete/autocomplete.component.js +100 -0
  4. package/dist/components/autocomplete/autocomplete.component.js.map +1 -0
  5. package/{src/components/base.component.ts → dist/components/base.component.js} +81 -120
  6. package/dist/components/base.component.js.map +1 -0
  7. package/dist/components/facet-types/base-facet.component.js +93 -0
  8. package/dist/components/facet-types/base-facet.component.js.map +1 -0
  9. package/dist/components/facet-types/checkbox-list-facet/checkbox-list-facet.component.js +52 -0
  10. package/dist/components/facet-types/checkbox-list-facet/checkbox-list-facet.component.js.map +1 -0
  11. package/dist/components/facet-types/color-facet/color-facet.component.js +26 -0
  12. package/dist/components/facet-types/color-facet/color-facet.component.js.map +1 -0
  13. package/{src/components/facet-types/index.ts → dist/components/facet-types/index.js} +7 -6
  14. package/dist/components/facet-types/index.js.map +1 -0
  15. package/dist/components/facet-types/linked-list-facet/link-list-facet.component.js +30 -0
  16. package/dist/components/facet-types/linked-list-facet/link-list-facet.component.js.map +1 -0
  17. package/dist/components/facet-types/range-slider-facet/range-slider-facet.component.js +92 -0
  18. package/dist/components/facet-types/range-slider-facet/range-slider-facet.component.js.map +1 -0
  19. package/dist/components/facet-types/search-within-facet/search-within-facet.component.js +32 -0
  20. package/dist/components/facet-types/search-within-facet/search-within-facet.component.js.map +1 -0
  21. package/dist/components/facet-types/size-facet/size-facet.component.js +28 -0
  22. package/dist/components/facet-types/size-facet/size-facet.component.js.map +1 -0
  23. package/dist/components/facet-wrapper/facet-wrapper.component.js +51 -0
  24. package/dist/components/facet-wrapper/facet-wrapper.component.js.map +1 -0
  25. package/dist/components/facets-list/facets-list.component.js +72 -0
  26. package/dist/components/facets-list/facets-list.component.js.map +1 -0
  27. package/{src/components/icon/icon.component.ts → dist/components/icon/icon.component.js} +34 -40
  28. package/dist/components/icon/icon.component.js.map +1 -0
  29. package/{src/components/index.ts → dist/components/index.js} +1 -0
  30. package/dist/components/index.js.map +1 -0
  31. package/{src/components/modified-query/modified-query.component.ts → dist/components/modified-query/modified-query.component.js} +35 -38
  32. package/dist/components/modified-query/modified-query.component.js.map +1 -0
  33. package/dist/components/page-size/page-size.component.js +33 -0
  34. package/dist/components/page-size/page-size.component.js.map +1 -0
  35. package/dist/components/pagination/pagination.component.js +84 -0
  36. package/dist/components/pagination/pagination.component.js.map +1 -0
  37. package/dist/components/query-suggestions/query-suggestions.component.js +54 -0
  38. package/dist/components/query-suggestions/query-suggestions.component.js.map +1 -0
  39. package/{src/components/range-slider/range-slider.component.ts → dist/components/range-slider/range-slider.component.js} +153 -190
  40. package/dist/components/range-slider/range-slider.component.js.map +1 -0
  41. package/dist/components/search/search.component.js +73 -0
  42. package/dist/components/search/search.component.js.map +1 -0
  43. package/dist/components/search-results/search-results.component.js +17 -0
  44. package/dist/components/search-results/search-results.component.js.map +1 -0
  45. package/dist/components/search-results-item/search-results-item.component.js +81 -0
  46. package/dist/components/search-results-item/search-results-item.component.js.map +1 -0
  47. package/dist/components/search-results-list/search-results-list.component.js +28 -0
  48. package/dist/components/search-results-list/search-results-list.component.js.map +1 -0
  49. package/{src/components/selected-facets/selected-facets.component.ts → dist/components/selected-facets/selected-facets.component.js} +64 -81
  50. package/dist/components/selected-facets/selected-facets.component.js.map +1 -0
  51. package/dist/components/sorting/sorting.component.js +31 -0
  52. package/dist/components/sorting/sorting.component.js.map +1 -0
  53. package/dist/components/tabs/tabs.component.js +31 -0
  54. package/dist/components/tabs/tabs.component.js.map +1 -0
  55. package/{src/components/tooltip/tooltip.component.ts → dist/components/tooltip/tooltip.component.js} +43 -48
  56. package/dist/components/tooltip/tooltip.component.js.map +1 -0
  57. package/dist/custom1.html +1 -0
  58. package/dist/custom2.html +1 -0
  59. package/dist/handlebars-ui.js +3 -0
  60. package/dist/handlebars-ui.js.LICENSE.txt +35 -0
  61. package/dist/handlebars-ui.js.map +1 -0
  62. package/dist/helpers/formatters.js +12 -0
  63. package/dist/helpers/formatters.js.map +1 -0
  64. package/dist/helpers/index.js +2 -0
  65. package/dist/helpers/index.js.map +1 -0
  66. package/dist/index.html +1 -0
  67. package/{src/index.ts → dist/index.js} +17 -63
  68. package/dist/index.js.map +1 -0
  69. package/dist/models/autocomplete.models.js +2 -0
  70. package/dist/models/autocomplete.models.js.map +1 -0
  71. package/dist/models/component.models.js +2 -0
  72. package/dist/models/component.models.js.map +1 -0
  73. package/dist/models/global.models.js +2 -0
  74. package/dist/models/global.models.js.map +1 -0
  75. package/{src/models/index.ts → dist/models/index.js} +8 -7
  76. package/dist/models/index.js.map +1 -0
  77. package/dist/models/raw-autocomplete.models.js +2 -0
  78. package/dist/models/raw-autocomplete.models.js.map +1 -0
  79. package/dist/models/raw-search.models.js +2 -0
  80. package/dist/models/raw-search.models.js.map +1 -0
  81. package/dist/models/search.models.js +2 -0
  82. package/dist/models/search.models.js.map +1 -0
  83. package/dist/models/tracking.models.js +35 -0
  84. package/dist/models/tracking.models.js.map +1 -0
  85. package/{src/services/autocomplete.service.ts → dist/services/autocomplete.service.js} +103 -104
  86. package/dist/services/autocomplete.service.js.map +1 -0
  87. package/dist/services/base.service.js +83 -0
  88. package/dist/services/base.service.js.map +1 -0
  89. package/{src/services/index.ts → dist/services/index.js} +4 -3
  90. package/dist/services/index.js.map +1 -0
  91. package/dist/services/search.service.js +608 -0
  92. package/dist/services/search.service.js.map +1 -0
  93. package/{src/services/tracking.service.ts → dist/services/tracking.service.js} +115 -136
  94. package/dist/services/tracking.service.js.map +1 -0
  95. package/package.json +63 -57
  96. package/.eslintignore +0 -2
  97. package/.eslintrc.json +0 -153
  98. package/.husky/pre-commit +0 -5
  99. package/.lintstagedrc.json +0 -4
  100. package/.prettierignore +0 -7
  101. package/.prettierrc.json +0 -19
  102. package/.vscode/launch.json +0 -15
  103. package/custom1.html +0 -52
  104. package/custom2.html +0 -44
  105. package/gulpfile.js +0 -73
  106. package/index.html +0 -39
  107. package/src/assets/icons/chevron-back.svg +0 -4
  108. package/src/assets/icons/chevron-down.svg +0 -3
  109. package/src/assets/icons/chevron-forward.svg +0 -4
  110. package/src/assets/icons/chevron-left.svg +0 -3
  111. package/src/assets/icons/chevron-right.svg +0 -3
  112. package/src/assets/icons/chevron-up.svg +0 -3
  113. package/src/assets/icons/cross.svg +0 -3
  114. package/src/assets/icons/help.svg +0 -4
  115. package/src/assets/icons/minus.svg +0 -3
  116. package/src/assets/icons/plus.svg +0 -7
  117. package/src/components/autocomplete/autocomplete.component.hbs +0 -60
  118. package/src/components/autocomplete/autocomplete.component.ts +0 -124
  119. package/src/components/facet-types/base-facet.component.ts +0 -114
  120. package/src/components/facet-types/checkbox-list-facet/checkbox-list-facet.component.hbs +0 -6
  121. package/src/components/facet-types/checkbox-list-facet/checkbox-list-facet.component.ts +0 -73
  122. package/src/components/facet-types/checkbox-list-facet/checkbox-list.partial.hbs +0 -42
  123. package/src/components/facet-types/color-facet/color-facet.component.hbs +0 -29
  124. package/src/components/facet-types/color-facet/color-facet.component.ts +0 -26
  125. package/src/components/facet-types/linked-list-facet/link-list-facet.component.hbs +0 -17
  126. package/src/components/facet-types/linked-list-facet/link-list-facet.component.ts +0 -32
  127. package/src/components/facet-types/range-slider-facet/range-slider-facet.component.hbs +0 -11
  128. package/src/components/facet-types/range-slider-facet/range-slider-facet.component.ts +0 -107
  129. package/src/components/facet-types/search-within-facet/search-within-facet.component.hbs +0 -3
  130. package/src/components/facet-types/search-within-facet/search-within-facet.component.ts +0 -33
  131. package/src/components/facet-types/size-facet/size-facet.component.hbs +0 -29
  132. package/src/components/facet-types/size-facet/size-facet.component.ts +0 -30
  133. package/src/components/facet-wrapper/facet-wrapper.component.hbs +0 -36
  134. package/src/components/facet-wrapper/facet-wrapper.component.ts +0 -62
  135. package/src/components/facets-list/facets-list.component.hbs +0 -11
  136. package/src/components/facets-list/facets-list.component.ts +0 -92
  137. package/src/components/icon/icon.component.hbs +0 -3
  138. package/src/components/modified-query/modified-query.component.hbs +0 -7
  139. package/src/components/page-size/page-size.component.hbs +0 -7
  140. package/src/components/page-size/page-size.component.ts +0 -35
  141. package/src/components/pagination/pagination.component.hbs +0 -34
  142. package/src/components/pagination/pagination.component.ts +0 -85
  143. package/src/components/query-suggestions/query-suggestions.component.hbs +0 -3
  144. package/src/components/query-suggestions/query-suggestions.component.ts +0 -66
  145. package/src/components/range-slider/range-slider.component.hbs +0 -9
  146. package/src/components/search/search.component.hbs +0 -4
  147. package/src/components/search/search.component.ts +0 -93
  148. package/src/components/search-results/search-results.component.hbs +0 -29
  149. package/src/components/search-results/search-results.component.ts +0 -17
  150. package/src/components/search-results-item/search-results-item.component.hbs +0 -23
  151. package/src/components/search-results-item/search-results-item.component.ts +0 -99
  152. package/src/components/search-results-list/search-results-list.component.hbs +0 -15
  153. package/src/components/search-results-list/search-results-list.component.ts +0 -24
  154. package/src/components/selected-facets/selected-facets.component.hbs +0 -11
  155. package/src/components/sorting/sorting.component.hbs +0 -7
  156. package/src/components/sorting/sorting.component.ts +0 -33
  157. package/src/components/tabs/tabs.component.hbs +0 -7
  158. package/src/components/tabs/tabs.component.ts +0 -35
  159. package/src/components/tooltip/tooltip.component.hbs +0 -6
  160. package/src/helpers/formatters.ts +0 -15
  161. package/src/helpers/index.ts +0 -1
  162. package/src/models/autocomplete.models.ts +0 -71
  163. package/src/models/component.models.ts +0 -27
  164. package/src/models/global.models.ts +0 -78
  165. package/src/models/raw-autocomplete.models.ts +0 -46
  166. package/src/models/raw-search.models.ts +0 -130
  167. package/src/models/search.models.ts +0 -144
  168. package/src/models/tracking.models.ts +0 -33
  169. package/src/scss/components/_autocomplete.scss +0 -55
  170. package/src/scss/components/_facets.scss +0 -287
  171. package/src/scss/components/_icons.scss +0 -17
  172. package/src/scss/components/_modified-query.scss +0 -11
  173. package/src/scss/components/_page-size.scss +0 -2
  174. package/src/scss/components/_pagination.scss +0 -23
  175. package/src/scss/components/_query-suggestions.scss +0 -7
  176. package/src/scss/components/_range-slider.scss +0 -50
  177. package/src/scss/components/_search-results-item.scss +0 -64
  178. package/src/scss/components/_search.scss +0 -4
  179. package/src/scss/components/_selected-facets.scss +0 -24
  180. package/src/scss/components/_sorting.scss +0 -2
  181. package/src/scss/components/_tabs.scss +0 -51
  182. package/src/scss/components/_tooltips.scss +0 -29
  183. package/src/scss/general/_forms.scss +0 -82
  184. package/src/scss/general/_grid-layout.scss +0 -44
  185. package/src/scss/general/_images.scss +0 -3
  186. package/src/scss/general/_typography.scss +0 -15
  187. package/src/scss/hawksearch.scss +0 -35
  188. package/src/scss/includes/_breakpoints.scss +0 -51
  189. package/src/scss/includes/_components.scss +0 -14
  190. package/src/scss/includes/_general.scss +0 -4
  191. package/src/scss/includes/_reset.scss +0 -203
  192. package/src/scss/includes/_utility-classes.scss +0 -85
  193. package/src/services/base.service.ts +0 -93
  194. package/src/services/search.service.ts +0 -754
  195. package/tsconfig.json +0 -22
  196. package/typings.d.ts +0 -21
  197. package/webpack.config.js +0 -75
@@ -0,0 +1,100 @@
1
+ import placeholderUrl from '@assets/images/placeholder.png';
2
+ import { AutocompleteItemType } from '@models';
3
+ import { searchService, trackingService } from '@services';
4
+ import { BaseComponent } from '../base.component';
5
+ import defaultHtml from './autocomplete.component.hbs';
6
+ export class AutocompleteComponent extends BaseComponent {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.bindEvent = 'hawksearch:bind-autocomplete';
10
+ this.customTemplatePropertyName = 'search';
11
+ this.defaultHtml = defaultHtml;
12
+ }
13
+ getContentHtml(template) {
14
+ var _a, _b, _c, _d, _e, _f;
15
+ if (!this.data || !(((_b = (_a = this.data.categories) === null || _a === void 0 ? void 0 : _a.results) === null || _b === void 0 ? void 0 : _b.length) || ((_d = (_c = this.data.content) === null || _c === void 0 ? void 0 : _c.results) === null || _d === void 0 ? void 0 : _d.length) || ((_f = (_e = this.data.products) === null || _e === void 0 ? void 0 : _e.results) === null || _f === void 0 ? void 0 : _f.length))) {
16
+ return '';
17
+ }
18
+ const html = template(Object.assign(Object.assign({}, this.data), { AutocompleteItemType: AutocompleteItemType }));
19
+ return html;
20
+ }
21
+ bindChildElements() {
22
+ var _a, _b, _c, _d, _e, _f;
23
+ (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[hawksearch-image]').forEach((e) => {
24
+ e.addEventListener('error', (event) => {
25
+ const element = event.currentTarget;
26
+ element.src = Hawksearch.config.placeholderImageUrl || placeholderUrl;
27
+ });
28
+ });
29
+ (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('[hawksearch-category-field][hawksearch-category-value]').forEach((e) => {
30
+ e.addEventListener('click', ((event) => {
31
+ var _a, _b;
32
+ event.preventDefault();
33
+ const element = event.currentTarget;
34
+ const field = element.getAttribute('hawksearch-category-field');
35
+ const value = element.getAttribute('hawksearch-category-value');
36
+ const category = (_b = (_a = this.data.categories) === null || _a === void 0 ? void 0 : _a.results) === null || _b === void 0 ? void 0 : _b.find((r) => r.field === field && r.value === value);
37
+ if (!category) {
38
+ return;
39
+ }
40
+ trackingService.trackAutocompleteClick(this.data.query, AutocompleteItemType.Category, category.title, category.url);
41
+ const facets = {
42
+ [category.field]: [category.value]
43
+ };
44
+ searchService.modifySearch(undefined, facets);
45
+ this.close();
46
+ }));
47
+ });
48
+ (_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelectorAll('[hawksearch-content]').forEach((e) => {
49
+ e.addEventListener('click', ((event) => {
50
+ var _a, _b;
51
+ const element = event.currentTarget;
52
+ const id = element.getAttribute('hawksearch-content');
53
+ const content = (_b = (_a = this.data.content) === null || _a === void 0 ? void 0 : _a.results) === null || _b === void 0 ? void 0 : _b.find((r) => r.id === id);
54
+ if (!content) {
55
+ return;
56
+ }
57
+ trackingService.trackAutocompleteClick(this.data.query, AutocompleteItemType.Content, content.title, content.url);
58
+ }));
59
+ });
60
+ (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelectorAll('[hawksearch-product]').forEach((e) => {
61
+ e.addEventListener('click', ((event) => {
62
+ var _a, _b;
63
+ const element = event.currentTarget;
64
+ const id = element.getAttribute('hawksearch-product');
65
+ const product = (_b = (_a = this.data.products) === null || _a === void 0 ? void 0 : _a.results) === null || _b === void 0 ? void 0 : _b.find((r) => r.id === id);
66
+ if (!product) {
67
+ return;
68
+ }
69
+ trackingService.trackAutocompleteClick(this.data.query, AutocompleteItemType.Product, product.title, product.url);
70
+ }));
71
+ });
72
+ (_e = this.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelectorAll('[hawksearch-query]').forEach((e) => {
73
+ e.addEventListener('click', (event) => {
74
+ var _a;
75
+ event.preventDefault();
76
+ const element = event.currentTarget;
77
+ const query = element.getAttribute('hawksearch-query');
78
+ if (!query) {
79
+ return;
80
+ }
81
+ const queryResult = (_a = this.data.queries) === null || _a === void 0 ? void 0 : _a.results.find((q) => q.query === query);
82
+ if (queryResult) {
83
+ trackingService.trackAutocompleteClick(this.data.query, AutocompleteItemType.Search, queryResult.query, queryResult.url);
84
+ }
85
+ searchService.query(query);
86
+ });
87
+ });
88
+ (_f = this.shadowRoot) === null || _f === void 0 ? void 0 : _f.querySelectorAll('[hawksearch-view-all]').forEach((e) => {
89
+ e.addEventListener('click', (event) => {
90
+ event.preventDefault();
91
+ searchService.query(this.data.query);
92
+ });
93
+ });
94
+ }
95
+ close() {
96
+ const event = new Event('hawksearch:close-autocomplete');
97
+ this.dispatchEvent(event);
98
+ }
99
+ }
100
+ //# sourceMappingURL=autocomplete.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.component.js","sourceRoot":"","sources":["../../../src/components/autocomplete/autocomplete.component.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAA0D,MAAM,SAAS,CAAC;AACvG,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,WAAW,MAAM,8BAA8B,CAAC;AAIvD,MAAM,OAAO,qBAAsB,SAAQ,aAAmC;IAA9E;;QACc,cAAS,GAAG,8BAA8B,CAAC;QAC3C,+BAA0B,GAAG,QAAQ,CAAC;QACtC,gBAAW,GAAG,WAAW,CAAC;IAgHxC,CAAC;IA9Ga,cAAc,CAAC,QAAoC;;QACzD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,0CAAE,OAAO,0CAAE,MAAM,MAAI,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,OAAO,0CAAE,OAAO,0CAAE,MAAM,CAAA,KAAI,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,0CAAE,OAAO,0CAAE,MAAM,CAAA,CAAC,EAAE;YACrI,OAAO,EAAE,CAAC;SACb;QAED,MAAM,IAAI,GAAG,QAAQ,iCACd,IAAI,CAAC,IAAI,KACZ,oBAAoB,EAAE,oBAAoB,IAC5C,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,iBAAiB;;QACvB,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAClE,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAY,EAAQ,EAAE;gBAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,aAAiC,CAAC;gBAExD,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,mBAAmB,IAAI,cAAc,CAAC;YAC1E,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,CAAC,wDAAwD,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACtG,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAmB,EAAQ,EAAE;;gBACvD,KAAK,CAAC,cAAc,EAAE,CAAC;gBAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,aAA4B,CAAC;gBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAC;gBAChE,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAC;gBAChE,MAAM,QAAQ,GAAG,MAAA,MAAA,IAAI,CAAC,IAAK,CAAC,UAAU,0CAAE,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;gBAErG,IAAI,CAAC,QAAQ,EAAE;oBACX,OAAO;iBACV;gBAED,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAK,CAAC,KAAK,EAAE,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAEtH,MAAM,MAAM,GAAmB;oBAC3B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;iBACrC,CAAC;gBAEF,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC,CAAkB,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACpE,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAmB,EAAQ,EAAE;;gBACvD,MAAM,OAAO,GAAG,KAAK,CAAC,aAA4B,CAAC;gBACnD,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;gBACtD,MAAM,OAAO,GAAG,MAAA,MAAA,IAAI,CAAC,IAAK,CAAC,OAAO,0CAAE,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEtE,IAAI,CAAC,OAAO,EAAE;oBACV,OAAO;iBACV;gBAED,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAK,CAAC,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACvH,CAAC,CAAkB,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACpE,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAmB,EAAQ,EAAE;;gBACvD,MAAM,OAAO,GAAG,KAAK,CAAC,aAA4B,CAAC;gBACnD,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;gBACtD,MAAM,OAAO,GAAG,MAAA,MAAA,IAAI,CAAC,IAAK,CAAC,QAAQ,0CAAE,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEvE,IAAI,CAAC,OAAO,EAAE;oBACV,OAAO;iBACV;gBAED,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAK,CAAC,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACvH,CAAC,CAAkB,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAClE,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;;gBACzC,KAAK,CAAC,cAAc,EAAE,CAAC;gBAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,aAA4B,CAAC;gBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;gBAEvD,IAAI,CAAC,KAAK,EAAE;oBACR,OAAO;iBACV;gBAED,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,IAAK,CAAC,OAAO,0CAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;gBAE/E,IAAI,WAAW,EAAE;oBACb,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAK,CAAC,KAAK,EAAE,oBAAoB,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;iBAC7H;gBAED,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrE,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;gBACzC,KAAK,CAAC,cAAc,EAAE,CAAC;gBAEvB,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAK,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK;QACT,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAEzD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACJ"}
@@ -1,120 +1,81 @@
1
- import { HawksearchGlobal } from '../models';
2
- import hawksearchCss from '../scss/hawksearch.scss';
3
-
4
- declare let Hawksearch: HawksearchGlobal;
5
-
6
- export abstract class BaseComponent<TData> extends HTMLElement {
7
- protected handlebars = Hawksearch.handlebars;
8
-
9
- protected abstract bindEvent: string | undefined;
10
- protected abstract customTemplatePropertyName: string | undefined;
11
- protected abstract defaultHtml: string;
12
-
13
- data?: TData;
14
-
15
- get hasCustomTemplate(): boolean {
16
- return !!this.innerHTML.trim().length;
17
- }
18
-
19
- private bindEventHandler?: EventListener;
20
- private template!: HandlebarsTemplateDelegate;
21
-
22
- connectedCallback(): void {
23
- this.attachShadow({
24
- mode: 'open'
25
- });
26
-
27
- this.registerHelpers();
28
-
29
- const customTemplateHtml = this.getCustomTemplateHtml();
30
- const templateHtml = customTemplateHtml ?? this.defaultHtml;
31
-
32
- this.template = this.handlebars.compile(templateHtml);
33
-
34
- setTimeout(() => {
35
- this.renderContent();
36
- });
37
-
38
- if (this.bindEvent) {
39
- this.bindEventHandler = ((event: CustomEvent): void => {
40
- this.data = event.detail;
41
-
42
- this.renderContent();
43
- }) as EventListener;
44
-
45
- addEventListener(this.bindEvent, this.bindEventHandler);
46
- }
47
- }
48
-
49
- disconnectedCallback(): void {
50
- if (this.bindEvent && this.bindEventHandler) {
51
- removeEventListener(this.bindEvent, this.bindEventHandler);
52
- }
53
- }
54
-
55
- protected registerHelpers(): void {}
56
-
57
- public renderContent(): void {
58
- if (!this.template) {
59
- return;
60
- }
61
-
62
- const elements: Array<Node> = [];
63
-
64
- if (Hawksearch.config.defaultStyles !== false) {
65
- const defaultStyles = document.createElement('style');
66
-
67
- defaultStyles.innerHTML = hawksearchCss;
68
-
69
- elements.push(defaultStyles);
70
- }
71
-
72
- if (Hawksearch.config.customCssUrl) {
73
- const customStyles = document.createElement('link');
74
-
75
- customStyles.type = 'text/css';
76
- customStyles.rel = 'stylesheet';
77
- customStyles.href = Hawksearch.config.customCssUrl;
78
-
79
- elements.push(customStyles);
80
- }
81
-
82
- const templateElement = document.createElement('template');
83
-
84
- templateElement.innerHTML = this.getContentHtml(this.template);
85
-
86
- const content = templateElement.content.cloneNode(true);
87
-
88
- elements.push(content);
89
-
90
- this.shadowRoot?.replaceChildren(...elements);
91
-
92
- this.bindChildElements();
93
- }
94
-
95
- protected abstract getContentHtml(template: HandlebarsTemplateDelegate): string;
96
-
97
- protected bindChildElements(): void {}
98
-
99
- private getCustomTemplateHtml(): string | undefined {
100
- let customTemplate: string | undefined;
101
-
102
- if (this.hasCustomTemplate) {
103
- customTemplate = this.innerHTML;
104
- } else {
105
- if (this.customTemplatePropertyName) {
106
- customTemplate = (Hawksearch.templates as any)?.[this.customTemplatePropertyName];
107
- }
108
-
109
- if (customTemplate) {
110
- const customTemplateElement = document.getElementById(customTemplate);
111
-
112
- if (customTemplateElement instanceof HTMLTemplateElement) {
113
- customTemplate = customTemplateElement.innerHTML;
114
- }
115
- }
116
- }
117
-
118
- return customTemplate;
119
- }
120
- }
1
+ import hawksearchCss from '../scss/hawksearch.scss';
2
+ export class BaseComponent extends HTMLElement {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.handlebars = Hawksearch.handlebars;
6
+ }
7
+ get hasCustomTemplate() {
8
+ return !!this.innerHTML.trim().length;
9
+ }
10
+ connectedCallback() {
11
+ this.attachShadow({
12
+ mode: 'open'
13
+ });
14
+ this.registerHelpers();
15
+ const customTemplateHtml = this.getCustomTemplateHtml();
16
+ const templateHtml = customTemplateHtml !== null && customTemplateHtml !== void 0 ? customTemplateHtml : this.defaultHtml;
17
+ this.template = this.handlebars.compile(templateHtml);
18
+ setTimeout(() => {
19
+ this.renderContent();
20
+ });
21
+ if (this.bindEvent) {
22
+ this.bindEventHandler = ((event) => {
23
+ this.data = event.detail;
24
+ this.renderContent();
25
+ });
26
+ addEventListener(this.bindEvent, this.bindEventHandler);
27
+ }
28
+ }
29
+ disconnectedCallback() {
30
+ if (this.bindEvent && this.bindEventHandler) {
31
+ removeEventListener(this.bindEvent, this.bindEventHandler);
32
+ }
33
+ }
34
+ registerHelpers() { }
35
+ renderContent() {
36
+ var _a;
37
+ if (!this.template) {
38
+ return;
39
+ }
40
+ const elements = [];
41
+ if (Hawksearch.config.defaultStyles !== false) {
42
+ const defaultStyles = document.createElement('style');
43
+ defaultStyles.innerHTML = hawksearchCss;
44
+ elements.push(defaultStyles);
45
+ }
46
+ if (Hawksearch.config.customCssUrl) {
47
+ const customStyles = document.createElement('link');
48
+ customStyles.type = 'text/css';
49
+ customStyles.rel = 'stylesheet';
50
+ customStyles.href = Hawksearch.config.customCssUrl;
51
+ elements.push(customStyles);
52
+ }
53
+ const templateElement = document.createElement('template');
54
+ templateElement.innerHTML = this.getContentHtml(this.template);
55
+ const content = templateElement.content.cloneNode(true);
56
+ elements.push(content);
57
+ (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.replaceChildren(...elements);
58
+ this.bindChildElements();
59
+ }
60
+ bindChildElements() { }
61
+ getCustomTemplateHtml() {
62
+ var _a;
63
+ let customTemplate;
64
+ if (this.hasCustomTemplate) {
65
+ customTemplate = this.innerHTML;
66
+ }
67
+ else {
68
+ if (this.customTemplatePropertyName) {
69
+ customTemplate = (_a = Hawksearch.config.templates) === null || _a === void 0 ? void 0 : _a[this.customTemplatePropertyName];
70
+ }
71
+ if (customTemplate) {
72
+ const customTemplateElement = document.getElementById(customTemplate);
73
+ if (customTemplateElement instanceof HTMLTemplateElement) {
74
+ customTemplate = customTemplateElement.innerHTML;
75
+ }
76
+ }
77
+ }
78
+ return customTemplate;
79
+ }
80
+ }
81
+ //# sourceMappingURL=base.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.component.js","sourceRoot":"","sources":["../../src/components/base.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { searchService } from '@services';
2
+ import { BaseComponent } from '../base.component';
3
+ export class BaseFacetComponent extends BaseComponent {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.bindEvent = undefined;
7
+ }
8
+ bindChildElements() {
9
+ var _a, _b, _c, _d, _e, _f;
10
+ (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('input[hawksearch-facet-value]').forEach((e) => {
11
+ e.addEventListener('change', (event) => {
12
+ event.stopPropagation();
13
+ const element = event.currentTarget;
14
+ const field = this.data.field;
15
+ const value = element.value;
16
+ if (element.checked) {
17
+ searchService.addFacetValue(field, value);
18
+ }
19
+ else {
20
+ searchService.removeFacetValue(field, value);
21
+ }
22
+ });
23
+ });
24
+ (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('[hawksearch-facet-value]:not(input)').forEach((e) => {
25
+ e.addEventListener('click', (event) => {
26
+ var _a;
27
+ event.preventDefault();
28
+ event.stopPropagation();
29
+ const element = event.currentTarget;
30
+ const value = element.getAttribute('hawksearch-facet-value');
31
+ const facetValue = (_a = this.data.values) === null || _a === void 0 ? void 0 : _a.find((v) => v.value === value);
32
+ if (!facetValue) {
33
+ return;
34
+ }
35
+ if (facetValue.selected) {
36
+ searchService.removeFacetValue(this.data.field, value);
37
+ }
38
+ else {
39
+ searchService.addFacetValue(this.data.field, value);
40
+ }
41
+ });
42
+ });
43
+ (_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelectorAll('[hawksearch-facet-value-include]').forEach((e) => {
44
+ e.addEventListener('click', (event) => {
45
+ event.preventDefault();
46
+ event.stopPropagation();
47
+ const element = event.currentTarget;
48
+ const field = this.data.field;
49
+ let value = element.getAttribute('hawksearch-facet-value-include');
50
+ if (!value) {
51
+ return;
52
+ }
53
+ value = `@${value}`;
54
+ searchService.removeFacetValue(field, value);
55
+ });
56
+ });
57
+ (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelectorAll('[hawksearch-facet-value-exclude]').forEach((e) => {
58
+ e.addEventListener('click', (event) => {
59
+ event.preventDefault();
60
+ event.stopPropagation();
61
+ const element = event.currentTarget;
62
+ const field = this.data.field;
63
+ const value = element.getAttribute('hawksearch-facet-value-exclude');
64
+ if (!value) {
65
+ return;
66
+ }
67
+ searchService.excludeFacetValue(field, value);
68
+ });
69
+ });
70
+ (_e = this.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelectorAll('[hawksearch-facet-value-toggle]').forEach((e) => {
71
+ e.addEventListener('click', (event) => {
72
+ event.preventDefault();
73
+ event.stopPropagation();
74
+ const element = event.currentTarget;
75
+ const value = element.getAttribute('hawksearch-facet-value-toggle');
76
+ if (!value) {
77
+ return;
78
+ }
79
+ this.state.values[value].toggled = !this.state.values[value].toggled;
80
+ this.renderContent();
81
+ });
82
+ });
83
+ (_f = this.shadowRoot) === null || _f === void 0 ? void 0 : _f.querySelectorAll('[hawksearch-facet-toggle]').forEach((e) => {
84
+ e.addEventListener('click', (event) => {
85
+ event.preventDefault();
86
+ event.stopPropagation();
87
+ this.state.toggled = !this.state.toggled;
88
+ this.renderContent();
89
+ });
90
+ });
91
+ }
92
+ }
93
+ //# sourceMappingURL=base-facet.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-facet.component.js","sourceRoot":"","sources":["../../../src/components/facet-types/base-facet.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { BaseFacetComponent } from '../base-facet.component';
2
+ import defaultHtml from './checkbox-list-facet.component.hbs';
3
+ import checkboxListPartialHtml from './checkbox-list.partial.hbs';
4
+ export class CheckboxListFacetComponent extends BaseFacetComponent {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.customTemplatePropertyName = 'checkboxListFacet';
8
+ this.defaultHtml = defaultHtml;
9
+ }
10
+ registerHelpers() {
11
+ super.registerHelpers();
12
+ this.handlebars.registerPartial('facet-checkbox-list', checkboxListPartialHtml);
13
+ }
14
+ getContentHtml(template) {
15
+ var _a, _b, _c;
16
+ if (!this.data || !((_a = this.data.values) === null || _a === void 0 ? void 0 : _a.length)) {
17
+ return '';
18
+ }
19
+ const filterRegex = this.state.filter ? new RegExp(this.state.filter, 'i') : undefined;
20
+ const filtered = (value) => {
21
+ if (!filterRegex) {
22
+ return false;
23
+ }
24
+ return filterRegex.test(value.title);
25
+ };
26
+ const containsFiltered = (value) => {
27
+ var _a;
28
+ return ((_a = value.children) === null || _a === void 0 ? void 0 : _a.some((v) => filtered(v))) || false;
29
+ };
30
+ const getValues = (values, parent) => {
31
+ return values === null || values === void 0 ? void 0 : values.map((v, i) => {
32
+ var _a, _b, _c, _d, _e;
33
+ const valueWithState = Object.assign(Object.assign({}, v), { visible: (!parent && !filterRegex && (this.state.toggled || !this.data.truncateThreshold || i < this.data.truncateThreshold)) ||
34
+ filtered(v) ||
35
+ containsFiltered(v) ||
36
+ (!filterRegex && !!(parent === null || parent === void 0 ? void 0 : parent.toggled)), hasChildren: !!((_a = v.children) === null || _a === void 0 ? void 0 : _a.length), children: undefined, toggled: (v.value && ((_b = v.children) === null || _b === void 0 ? void 0 : _b.length) ? (_e = (_d = (_c = this.state.values) === null || _c === void 0 ? void 0 : _c[v.value]) === null || _d === void 0 ? void 0 : _d.toggled) !== null && _e !== void 0 ? _e : false : false) || containsFiltered(v) });
37
+ valueWithState.children = getValues(v.children, valueWithState);
38
+ return valueWithState;
39
+ });
40
+ };
41
+ const html = template({
42
+ id: this.data.id,
43
+ field: this.data.field,
44
+ values: getValues(this.data.values, undefined),
45
+ showToggle: !!this.data.truncateThreshold && ((_c = (_b = this.data.values) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > this.data.truncateThreshold && !this.state.filter,
46
+ toggleText: this.state.toggled ? 'Show fewer' : 'Show more',
47
+ expanded: this.state.toggled
48
+ });
49
+ return html;
50
+ }
51
+ }
52
+ //# sourceMappingURL=checkbox-list-facet.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-list-facet.component.js","sourceRoot":"","sources":["../../../../src/components/facet-types/checkbox-list-facet/checkbox-list-facet.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAC9D,OAAO,uBAAuB,MAAM,6BAA6B,CAAC;AASlE,MAAM,OAAO,0BAA2B,SAAQ,kBAAkB;IAAlE;;QACc,+BAA0B,GAAG,mBAAmB,CAAC;QACjD,gBAAW,GAAG,WAAW,CAAC;IA0DxC,CAAC;IAxDa,eAAe;QACrB,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;IACpF,CAAC;IAES,cAAc,CAAC,QAAoC;;QACzD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAE,MAAM,CAAA,EAAE;YACzC,OAAO,EAAE,CAAC;SACb;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvF,MAAM,QAAQ,GAAG,CAAC,KAAiB,EAAW,EAAE;YAC5C,IAAI,CAAC,WAAW,EAAE;gBACd,OAAO,KAAK,CAAC;aAChB;YAED,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,CAAC,KAAiB,EAAW,EAAE;;YACpD,OAAO,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAI,KAAK,CAAC;QAC7D,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,CAAC,MAAqC,EAAE,MAA0C,EAA6C,EAAE;YAC/I,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;;gBACxB,MAAM,cAAc,mCACb,CAAC,KACJ,OAAO,EACH,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,iBAAiB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAK,CAAC,iBAAkB,CAAC,CAAC;wBACvH,QAAQ,CAAC,CAAC,CAAC;wBACX,gBAAgB,CAAC,CAAC,CAAC;wBACnB,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,CAAC,EACvC,WAAW,EAAE,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,QAAQ,0CAAE,MAAM,CAAA,EACjC,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,KAAI,MAAA,CAAC,CAAC,QAAQ,0CAAE,MAAM,CAAA,CAAC,CAAC,CAAC,MAAA,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAG,CAAC,CAAC,KAAM,CAAC,0CAAE,OAAO,mCAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAC5H,CAAC;gBAED,cAAsB,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBAEzE,OAAO,cAAc,CAAC;YAC1B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,QAAQ,CAAC;YAClB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YAChB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;YAC9C,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAE,MAAM,mCAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YAChI,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW;YAC3D,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;SAC/B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -0,0 +1,26 @@
1
+ import { BaseFacetComponent } from '../base-facet.component';
2
+ import defaultHtml from './color-facet.component.hbs';
3
+ export class ColorFacetComponent extends BaseFacetComponent {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.customTemplatePropertyName = 'colorFacet';
7
+ this.defaultHtml = defaultHtml;
8
+ }
9
+ getContentHtml(template) {
10
+ var _a, _b, _c, _d;
11
+ if (!this.data) {
12
+ return '';
13
+ }
14
+ const html = template({
15
+ values: (_b = (_a = this.data.values) === null || _a === void 0 ? void 0 : _a.map((v, i) => {
16
+ var _a, _b;
17
+ return (Object.assign(Object.assign({}, v), { visible: this.state.toggled || !((_a = this.data) === null || _a === void 0 ? void 0 : _a.truncateThreshold) || i < ((_b = this.data) === null || _b === void 0 ? void 0 : _b.truncateThreshold) }));
18
+ })) !== null && _b !== void 0 ? _b : [],
19
+ showToggle: !!this.data.truncateThreshold && ((_d = (_c = this.data.values) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > this.data.truncateThreshold,
20
+ toggleText: this.state.toggled ? 'Show fewer' : 'Show more',
21
+ expanded: this.state.toggled
22
+ });
23
+ return html;
24
+ }
25
+ }
26
+ //# sourceMappingURL=color-facet.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-facet.component.js","sourceRoot":"","sources":["../../../../src/components/facet-types/color-facet/color-facet.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,WAAW,MAAM,6BAA6B,CAAC;AAMtD,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IAA3D;;QACc,+BAA0B,GAAG,YAAY,CAAC;QAC1C,gBAAW,GAAG,WAAW,CAAC;IAsBxC,CAAC;IApBa,cAAc,CAAC,QAAoC;;QACzD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,OAAO,EAAE,CAAC;SACb;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC;YAClB,MAAM,EACF,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAE,GAAG,CACjB,CAAC,CAAC,EAAE,CAAC,EAAmB,EAAE;;gBAAC,OAAA,iCACpB,CAAC,KACJ,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,iBAAiB,CAAA,IAAI,CAAC,IAAG,MAAA,IAAI,CAAC,IAAI,0CAAE,iBAAiB,CAAA,IAClG,CAAA;aAAA,CACL,mCAAI,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAE,MAAM,mCAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAC1G,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW;YAC3D,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;SAC/B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -1,6 +1,7 @@
1
- export * from './checkbox-list-facet/checkbox-list-facet.component';
2
- export * from './color-facet/color-facet.component';
3
- export * from './linked-list-facet/link-list-facet.component';
4
- export * from './range-slider-facet/range-slider-facet.component';
5
- export * from './search-within-facet/search-within-facet.component';
6
- export * from './size-facet/size-facet.component';
1
+ export * from './checkbox-list-facet/checkbox-list-facet.component';
2
+ export * from './color-facet/color-facet.component';
3
+ export * from './linked-list-facet/link-list-facet.component';
4
+ export * from './range-slider-facet/range-slider-facet.component';
5
+ export * from './search-within-facet/search-within-facet.component';
6
+ export * from './size-facet/size-facet.component';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/facet-types/index.ts"],"names":[],"mappings":"AAAA,cAAc,qDAAqD,CAAC;AACpE,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,mDAAmD,CAAC;AAClE,cAAc,qDAAqD,CAAC;AACpE,cAAc,mCAAmC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { BaseFacetComponent } from '../base-facet.component';
2
+ import defaultHtml from './link-list-facet.component.hbs';
3
+ export class LinkListFacetComponent extends BaseFacetComponent {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.customTemplatePropertyName = 'linkListFacet';
7
+ this.defaultHtml = defaultHtml;
8
+ }
9
+ getContentHtml(template) {
10
+ var _a, _b, _c, _d, _e;
11
+ if (!this.data) {
12
+ return '';
13
+ }
14
+ const filterRegex = this.state.filter ? new RegExp((_a = this.state.filter) !== null && _a !== void 0 ? _a : '', 'i') : undefined;
15
+ const html = template({
16
+ id: this.data.id,
17
+ field: this.data.field,
18
+ values: (_c = (_b = this.data.values) === null || _b === void 0 ? void 0 : _b.map((v, i) => {
19
+ var _a;
20
+ return (Object.assign(Object.assign({}, v), { visible: (!filterRegex && (this.state.toggled || !this.data.truncateThreshold || i < this.data.truncateThreshold)) ||
21
+ (!!filterRegex && filterRegex.test((_a = v.title) !== null && _a !== void 0 ? _a : '')) }));
22
+ })) !== null && _c !== void 0 ? _c : [],
23
+ showToggle: !!this.data.truncateThreshold && ((_e = (_d = this.data.values) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0) > this.data.truncateThreshold && !this.state.filter,
24
+ toggleText: this.state.toggled ? 'Show fewer' : 'Show more',
25
+ expanded: this.state.toggled
26
+ });
27
+ return html;
28
+ }
29
+ }
30
+ //# sourceMappingURL=link-list-facet.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-list-facet.component.js","sourceRoot":"","sources":["../../../../src/components/facet-types/linked-list-facet/link-list-facet.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,WAAW,MAAM,iCAAiC,CAAC;AAM1D,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IAA9D;;QACc,+BAA0B,GAAG,eAAe,CAAC;QAC7C,gBAAW,GAAG,WAAW,CAAC;IA4BxC,CAAC;IA1Ba,cAAc,CAAC,QAAoC;;QACzD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,OAAO,EAAE,CAAC;SACb;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,mCAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE7F,MAAM,IAAI,GAAG,QAAQ,CAAC;YAClB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YAChB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,MAAM,EACF,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAE,GAAG,CACjB,CAAC,CAAC,EAAE,CAAC,EAAsB,EAAE;;gBAAC,OAAA,iCACvB,CAAC,KACJ,OAAO,EACH,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,iBAAiB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAK,CAAC,iBAAkB,CAAC,CAAC;wBAC5G,CAAC,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,MAAA,CAAC,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,IACxD,CAAA;aAAA,CACL,mCAAI,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAE,MAAM,mCAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YAChI,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW;YAC3D,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;SAC/B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}