@shoper/phoenix_design_system 1.4.3 → 1.5.1-0

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 (164) hide show
  1. package/build/cjs/external/lit/external/lit-html/directive-helpers.js +7 -2
  2. package/build/cjs/external/lit/external/lit-html/directive-helpers.js.map +1 -1
  3. package/build/cjs/external/lit/external/lit-html/directives/repeat.js +17 -0
  4. package/build/cjs/external/lit/external/lit-html/directives/repeat.js.map +1 -0
  5. package/build/cjs/external/lit/external/lit-html/directives/when.js +13 -0
  6. package/build/cjs/external/lit/external/lit-html/directives/when.js.map +1 -0
  7. package/build/cjs/external/lit/external/lit-html/lit-html.js +2 -1
  8. package/build/cjs/external/lit/external/lit-html/lit-html.js.map +1 -1
  9. package/build/cjs/packages/phoenix/src/components/backdrop/backdrop.js +17 -8
  10. package/build/cjs/packages/phoenix/src/components/backdrop/backdrop.js.map +1 -1
  11. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js +17 -8
  12. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
  13. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_close.js +36 -0
  14. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_close.js.map +1 -0
  15. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_constants.js +14 -12
  16. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_constants.js.map +1 -1
  17. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_content.js +1 -1
  18. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_toggler.js +1 -1
  19. package/build/cjs/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js +9 -2
  20. package/build/cjs/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js.map +1 -1
  21. package/build/cjs/packages/phoenix/src/components/form/file_picker/file/file.js +31 -15
  22. package/build/cjs/packages/phoenix/src/components/form/file_picker/file/file.js.map +1 -1
  23. package/build/cjs/packages/phoenix/src/components/form/search/buttons/search_clear_btn.js +56 -0
  24. package/build/cjs/packages/phoenix/src/components/form/search/buttons/search_clear_btn.js.map +1 -0
  25. package/build/cjs/packages/phoenix/src/components/form/search/buttons/search_submit_btn.js +30 -0
  26. package/build/cjs/packages/phoenix/src/components/form/search/buttons/search_submit_btn.js.map +1 -0
  27. package/build/cjs/packages/phoenix/src/components/form/search/history/search_history_load_more_btn.js +38 -0
  28. package/build/cjs/packages/phoenix/src/components/form/search/history/search_history_load_more_btn.js.map +1 -0
  29. package/build/cjs/packages/phoenix/src/components/form/search/history/search_history_remove_btn.js +38 -0
  30. package/build/cjs/packages/phoenix/src/components/form/search/history/search_history_remove_btn.js.map +1 -0
  31. package/build/cjs/packages/phoenix/src/components/form/search/history/search_history_select_btn.js +38 -0
  32. package/build/cjs/packages/phoenix/src/components/form/search/history/search_history_select_btn.js.map +1 -0
  33. package/build/cjs/packages/phoenix/src/components/form/search/results/search_producer_content.js +49 -0
  34. package/build/cjs/packages/phoenix/src/components/form/search/results/search_producer_content.js.map +1 -0
  35. package/build/cjs/packages/phoenix/src/components/form/search/results/search_product_content.js +66 -0
  36. package/build/cjs/packages/phoenix/src/components/form/search/results/search_product_content.js.map +1 -0
  37. package/build/cjs/packages/phoenix/src/components/form/search/results/search_suggestion_content.js +66 -0
  38. package/build/cjs/packages/phoenix/src/components/form/search/results/search_suggestion_content.js.map +1 -0
  39. package/build/cjs/packages/phoenix/src/components/form/search/search.js +191 -0
  40. package/build/cjs/packages/phoenix/src/components/form/search/search.js.map +1 -0
  41. package/build/cjs/packages/phoenix/src/components/form/search/search_constants.js +67 -0
  42. package/build/cjs/packages/phoenix/src/components/form/search/search_constants.js.map +1 -0
  43. package/build/cjs/packages/phoenix/src/components/form/search/search_history.js +71 -0
  44. package/build/cjs/packages/phoenix/src/components/form/search/search_history.js.map +1 -0
  45. package/build/cjs/packages/phoenix/src/components/form/search/search_input.js +40 -0
  46. package/build/cjs/packages/phoenix/src/components/form/search/search_input.js.map +1 -0
  47. package/build/cjs/packages/phoenix/src/components/form/search/search_results.js +45 -0
  48. package/build/cjs/packages/phoenix/src/components/form/search/search_results.js.map +1 -0
  49. package/build/cjs/packages/phoenix/src/components/form/select/model/select_option_mapper.js +8 -5
  50. package/build/cjs/packages/phoenix/src/components/form/select/model/select_option_mapper.js.map +1 -1
  51. package/build/cjs/packages/phoenix/src/components/form/select/select.js +6 -3
  52. package/build/cjs/packages/phoenix/src/components/form/select/select.js.map +1 -1
  53. package/build/cjs/packages/phoenix/src/components/icon/icon.js +6 -1
  54. package/build/cjs/packages/phoenix/src/components/icon/icon.js.map +1 -1
  55. package/build/cjs/packages/phoenix/src/components/modal/modal.js +1 -1
  56. package/build/cjs/packages/phoenix/src/components/scroll_to/scroll_to.js +3 -3
  57. package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js +19 -25
  58. package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js.map +1 -1
  59. package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js +13 -8
  60. package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js.map +1 -1
  61. package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_constants.js +5 -0
  62. package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_constants.js.map +1 -1
  63. package/build/cjs/packages/phoenix/src/index.js +102 -0
  64. package/build/cjs/packages/phoenix/src/index.js.map +1 -1
  65. package/build/esm/external/lit/external/lit-html/directive-helpers.js +3 -3
  66. package/build/esm/external/lit/external/lit-html/directives/repeat.js +13 -0
  67. package/build/esm/external/lit/external/lit-html/directives/repeat.js.map +1 -0
  68. package/build/esm/external/lit/external/lit-html/directives/when.js +9 -0
  69. package/build/esm/external/lit/external/lit-html/directives/when.js.map +1 -0
  70. package/build/esm/external/lit/external/lit-html/lit-html.js +2 -2
  71. package/build/esm/packages/phoenix/src/components/backdrop/backdrop.d.ts +2 -0
  72. package/build/esm/packages/phoenix/src/components/backdrop/backdrop.js +17 -8
  73. package/build/esm/packages/phoenix/src/components/backdrop/backdrop.js.map +1 -1
  74. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.d.ts +2 -0
  75. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js +18 -9
  76. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
  77. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_close.d.ts +8 -0
  78. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_close.js +34 -0
  79. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_close.js.map +1 -0
  80. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_constants.d.ts +11 -6
  81. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_constants.js +13 -7
  82. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_constants.js.map +1 -1
  83. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_content.js +2 -2
  84. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_toggler.js +2 -2
  85. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_types.d.ts +3 -5
  86. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_types.js +1 -1
  87. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_types.js.map +1 -1
  88. package/build/esm/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js +9 -2
  89. package/build/esm/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js.map +1 -1
  90. package/build/esm/packages/phoenix/src/components/form/file_picker/file/file.d.ts +5 -0
  91. package/build/esm/packages/phoenix/src/components/form/file_picker/file/file.js +32 -16
  92. package/build/esm/packages/phoenix/src/components/form/file_picker/file/file.js.map +1 -1
  93. package/build/esm/packages/phoenix/src/components/form/search/buttons/search_clear_btn.d.ts +14 -0
  94. package/build/esm/packages/phoenix/src/components/form/search/buttons/search_clear_btn.js +54 -0
  95. package/build/esm/packages/phoenix/src/components/form/search/buttons/search_clear_btn.js.map +1 -0
  96. package/build/esm/packages/phoenix/src/components/form/search/buttons/search_submit_btn.d.ts +7 -0
  97. package/build/esm/packages/phoenix/src/components/form/search/buttons/search_submit_btn.js +28 -0
  98. package/build/esm/packages/phoenix/src/components/form/search/buttons/search_submit_btn.js.map +1 -0
  99. package/build/esm/packages/phoenix/src/components/form/search/history/search_history_load_more_btn.d.ts +10 -0
  100. package/build/esm/packages/phoenix/src/components/form/search/history/search_history_load_more_btn.js +36 -0
  101. package/build/esm/packages/phoenix/src/components/form/search/history/search_history_load_more_btn.js.map +1 -0
  102. package/build/esm/packages/phoenix/src/components/form/search/history/search_history_remove_btn.d.ts +8 -0
  103. package/build/esm/packages/phoenix/src/components/form/search/history/search_history_remove_btn.js +36 -0
  104. package/build/esm/packages/phoenix/src/components/form/search/history/search_history_remove_btn.js.map +1 -0
  105. package/build/esm/packages/phoenix/src/components/form/search/history/search_history_select_btn.d.ts +8 -0
  106. package/build/esm/packages/phoenix/src/components/form/search/history/search_history_select_btn.js +36 -0
  107. package/build/esm/packages/phoenix/src/components/form/search/history/search_history_select_btn.js.map +1 -0
  108. package/build/esm/packages/phoenix/src/components/form/search/results/search_producer_content.d.ts +6 -0
  109. package/build/esm/packages/phoenix/src/components/form/search/results/search_producer_content.js +47 -0
  110. package/build/esm/packages/phoenix/src/components/form/search/results/search_producer_content.js.map +1 -0
  111. package/build/esm/packages/phoenix/src/components/form/search/results/search_product_content.d.ts +7 -0
  112. package/build/esm/packages/phoenix/src/components/form/search/results/search_product_content.js +64 -0
  113. package/build/esm/packages/phoenix/src/components/form/search/results/search_product_content.js.map +1 -0
  114. package/build/esm/packages/phoenix/src/components/form/search/results/search_suggestion_content.d.ts +9 -0
  115. package/build/esm/packages/phoenix/src/components/form/search/results/search_suggestion_content.js +64 -0
  116. package/build/esm/packages/phoenix/src/components/form/search/results/search_suggestion_content.js.map +1 -0
  117. package/build/esm/packages/phoenix/src/components/form/search/search.d.ts +26 -0
  118. package/build/esm/packages/phoenix/src/components/form/search/search.js +189 -0
  119. package/build/esm/packages/phoenix/src/components/form/search/search.js.map +1 -0
  120. package/build/esm/packages/phoenix/src/components/form/search/search_constants.d.ts +53 -0
  121. package/build/esm/packages/phoenix/src/components/form/search/search_constants.js +56 -0
  122. package/build/esm/packages/phoenix/src/components/form/search/search_constants.js.map +1 -0
  123. package/build/esm/packages/phoenix/src/components/form/search/search_history.d.ts +13 -0
  124. package/build/esm/packages/phoenix/src/components/form/search/search_history.js +69 -0
  125. package/build/esm/packages/phoenix/src/components/form/search/search_history.js.map +1 -0
  126. package/build/esm/packages/phoenix/src/components/form/search/search_input.d.ts +9 -0
  127. package/build/esm/packages/phoenix/src/components/form/search/search_input.js +38 -0
  128. package/build/esm/packages/phoenix/src/components/form/search/search_input.js.map +1 -0
  129. package/build/esm/packages/phoenix/src/components/form/search/search_results.d.ts +7 -0
  130. package/build/esm/packages/phoenix/src/components/form/search/search_results.js +43 -0
  131. package/build/esm/packages/phoenix/src/components/form/search/search_results.js.map +1 -0
  132. package/build/esm/packages/phoenix/src/components/form/search/search_types.d.ts +32 -0
  133. package/build/esm/packages/phoenix/src/components/form/search/search_types.js +2 -0
  134. package/build/esm/packages/phoenix/src/components/form/search/search_types.js.map +1 -0
  135. package/build/esm/packages/phoenix/src/components/form/search/storefront_search_mock.d.ts +8 -0
  136. package/build/esm/packages/phoenix/src/components/form/search/storefront_search_mock.js +208 -0
  137. package/build/esm/packages/phoenix/src/components/form/search/storefront_search_mock.js.map +1 -0
  138. package/build/esm/packages/phoenix/src/components/form/select/model/select_option_mapper.js +8 -5
  139. package/build/esm/packages/phoenix/src/components/form/select/model/select_option_mapper.js.map +1 -1
  140. package/build/esm/packages/phoenix/src/components/form/select/select.js +6 -3
  141. package/build/esm/packages/phoenix/src/components/form/select/select.js.map +1 -1
  142. package/build/esm/packages/phoenix/src/components/icon/icon.d.ts +1 -0
  143. package/build/esm/packages/phoenix/src/components/icon/icon.js +6 -1
  144. package/build/esm/packages/phoenix/src/components/icon/icon.js.map +1 -1
  145. package/build/esm/packages/phoenix/src/components/modal/modal.js +1 -1
  146. package/build/esm/packages/phoenix/src/components/scroll_to/scroll_to.d.ts +1 -1
  147. package/build/esm/packages/phoenix/src/components/scroll_to/scroll_to.js +3 -3
  148. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.d.ts +1 -1
  149. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js +19 -25
  150. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js.map +1 -1
  151. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator_types.d.ts +0 -1
  152. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.d.ts +1 -1
  153. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js +14 -9
  154. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js.map +1 -1
  155. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_constants.d.ts +4 -0
  156. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_constants.js +5 -1
  157. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_constants.js.map +1 -1
  158. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_types.d.ts +3 -1
  159. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_types.js +1 -1
  160. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_types.js.map +1 -1
  161. package/build/esm/packages/phoenix/src/index.d.ts +15 -0
  162. package/build/esm/packages/phoenix/src/index.js +15 -0
  163. package/build/esm/packages/phoenix/src/index.js.map +1 -1
  164. package/package.json +1 -1
@@ -0,0 +1,26 @@
1
+ import { PhoenixLightLitElement } from "../../../core/phoenix_light_lit_element/phoenix_light_lit_element";
2
+ export declare class HSearch extends PhoenixLightLitElement {
3
+ private _historyContextProvider;
4
+ private _searchContextConsumer;
5
+ private _searchContext$;
6
+ private _searchContextObserver;
7
+ private _shouldShowHistory;
8
+ private _shouldShowResults;
9
+ private _searchResults;
10
+ private _searchHistory;
11
+ private _historyLimitedContent;
12
+ private _historyContext;
13
+ connectedCallback(): Promise<void>;
14
+ disconnectedCallback(): void;
15
+ private _setupContext;
16
+ private _getSearchPhrase;
17
+ private _setupListeners;
18
+ private _hideSuggesterOnClickOutside;
19
+ private _updateSearchPhrase;
20
+ private _submitSearchPhrase;
21
+ private _displaySuggester;
22
+ private _displayHistorySuggestions;
23
+ private _displayResults;
24
+ private _hideHistorySuggestionsAndResults;
25
+ render(): import("lit-html").TemplateResult<1>;
26
+ }
@@ -0,0 +1,189 @@
1
+ import { __decorate, __metadata } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { html } from 'lit';
3
+ import { state } from 'lit/decorators';
4
+ import { PhoenixLightLitElement } from '../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
5
+ import { phoenixCustomElement } from '../../../core/decorators/phoenix_custom_element.js';
6
+ import { Observer } from '../../../core/classes/observer/observer.js';
7
+ import { ContextConsumerController } from '../../../core/context/context_consumer_controller.js';
8
+ import { BehaviorSubject } from '../../../core/classes/behavior_subject/behavior_subject.js';
9
+ import { ContextProviderController } from '../../../core/context/context_provider_controller.js';
10
+ import { SEARCH_CONFIGURATION, SEARCH_CONTEXT_NAMES, SEARCH_CUSTOM_EVENT_NAMES, SEARCH_COMPONENT_NAMES } from './search_constants.js';
11
+ import { when as n } from '../../../../../../external/lit/external/lit-html/directives/when.js';
12
+
13
+ let HSearch = class HSearch extends PhoenixLightLitElement {
14
+ constructor() {
15
+ super(...arguments);
16
+ this._shouldShowHistory = false;
17
+ this._shouldShowResults = false;
18
+ this._searchHistory = [];
19
+ this._historyLimitedContent = [];
20
+ this._historyContext = new BehaviorSubject({
21
+ showLoadMore: false
22
+ });
23
+ this._getSearchPhrase = (target) => {
24
+ const isSearchInput = target instanceof HTMLInputElement && target.type === 'search';
25
+ if (!isSearchInput) {
26
+ throw new Error('Search input not found. Search phrase action.');
27
+ }
28
+ return target.value;
29
+ };
30
+ this._hideSuggesterOnClickOutside = (ev) => {
31
+ const outsideClick = typeof ev.composedPath === 'function' && !ev.composedPath().includes(this);
32
+ if (outsideClick) {
33
+ this._hideHistorySuggestionsAndResults();
34
+ }
35
+ };
36
+ }
37
+ async connectedCallback() {
38
+ super.connectedCallback();
39
+ this._setupContext();
40
+ try {
41
+ this._searchContextConsumer = new ContextConsumerController(this);
42
+ this._searchContext$ = await this._searchContextConsumer.consumeAsync('searchContext');
43
+ this._searchContextObserver = new Observer((searchData) => {
44
+ this._searchResults = searchData.results;
45
+ this._searchHistory = searchData.history;
46
+ this._historyContext.notify({ showLoadMore: this._searchHistory.length > SEARCH_CONFIGURATION.historyContentLimit });
47
+ this._historyLimitedContent = this._searchHistory.slice(0, SEARCH_CONFIGURATION.historyContentLimit);
48
+ if (this._searchHistory.length === 0) {
49
+ this._hideHistorySuggestionsAndResults();
50
+ }
51
+ });
52
+ this._searchContext$.subscribe(this._searchContextObserver);
53
+ }
54
+ catch (_a) {
55
+ console.error('Search context is not provided');
56
+ }
57
+ this._setupListeners();
58
+ }
59
+ disconnectedCallback() {
60
+ super.disconnectedCallback();
61
+ document.removeEventListener('click', this._hideSuggesterOnClickOutside);
62
+ }
63
+ _setupContext() {
64
+ this._historyContextProvider = new ContextProviderController(this);
65
+ this._historyContextProvider.provide(SEARCH_CONTEXT_NAMES.historyContext, this._historyContext);
66
+ }
67
+ _setupListeners() {
68
+ const input = this.querySelector('input[type="search"]');
69
+ if (!input) {
70
+ throw new Error('Search input not found');
71
+ }
72
+ input.addEventListener('focusin', (ev) => {
73
+ const $searchInput = this._getSearchPhrase(ev.target);
74
+ this._displaySuggester($searchInput);
75
+ });
76
+ input.addEventListener('keyup', (ev) => {
77
+ const $searchInput = this._getSearchPhrase(ev.target);
78
+ this._displaySuggester($searchInput);
79
+ this._updateSearchPhrase($searchInput);
80
+ });
81
+ input.addEventListener('search', (ev) => {
82
+ const $searchInput = this._getSearchPhrase(ev.target);
83
+ if ($searchInput === '') {
84
+ this._displaySuggester($searchInput);
85
+ }
86
+ else {
87
+ this._updateSearchPhrase($searchInput);
88
+ }
89
+ });
90
+ this.addEventListener(SEARCH_CUSTOM_EVENT_NAMES.clear, () => {
91
+ this._displaySuggester('');
92
+ this._updateSearchPhrase('');
93
+ });
94
+ this.addEventListener(SEARCH_CUSTOM_EVENT_NAMES.submit, () => {
95
+ const updatedInput = this.querySelector('input[type="search"]');
96
+ if (!updatedInput) {
97
+ throw new Error('Search input not found');
98
+ }
99
+ this._displaySuggester('');
100
+ this._submitSearchPhrase(updatedInput.value);
101
+ });
102
+ this.addEventListener(SEARCH_CUSTOM_EVENT_NAMES.loadMoreHistoryItems, () => {
103
+ const contentLength = this._searchHistory.length;
104
+ const limitedContentLength = this._historyLimitedContent.length;
105
+ if (limitedContentLength < contentLength) {
106
+ this._historyLimitedContent = this._searchHistory.slice(0, limitedContentLength + SEARCH_CONFIGURATION.historyContentLimit);
107
+ }
108
+ this._historyContext.notify({ showLoadMore: this._historyLimitedContent.length < contentLength });
109
+ });
110
+ document.addEventListener('click', this._hideSuggesterOnClickOutside);
111
+ }
112
+ _updateSearchPhrase(searchPhrase) {
113
+ this.dispatchEvent(new CustomEvent(SEARCH_CUSTOM_EVENT_NAMES.searchPhraseUpdated, {
114
+ detail: {
115
+ searchPhrase
116
+ },
117
+ bubbles: true
118
+ }));
119
+ }
120
+ _submitSearchPhrase(searchPhrase) {
121
+ this.dispatchEvent(new CustomEvent(SEARCH_CUSTOM_EVENT_NAMES.searchPhraseSubmitted, {
122
+ detail: {
123
+ searchPhrase
124
+ },
125
+ bubbles: true
126
+ }));
127
+ }
128
+ _displaySuggester(searchPhrase) {
129
+ if (searchPhrase === '' && this._searchHistory.length !== 0) {
130
+ this._displayHistorySuggestions();
131
+ }
132
+ if (searchPhrase === '' && this._searchHistory.length === 0) {
133
+ this._hideHistorySuggestionsAndResults();
134
+ }
135
+ if (searchPhrase !== '') {
136
+ this._displayResults();
137
+ }
138
+ }
139
+ _displayHistorySuggestions() {
140
+ this._shouldShowHistory = true;
141
+ this._shouldShowResults = false;
142
+ }
143
+ _displayResults() {
144
+ this._shouldShowHistory = false;
145
+ this._shouldShowResults = true;
146
+ }
147
+ _hideHistorySuggestionsAndResults() {
148
+ this._shouldShowHistory = false;
149
+ this._shouldShowResults = false;
150
+ }
151
+ render() {
152
+ return html `
153
+ ${n(this._shouldShowHistory, () => {
154
+ return html `<h-search-history .history="${this._historyLimitedContent}"></h-search-history>`;
155
+ })}
156
+ ${n(this._shouldShowResults, () => html `<h-search-results .results="${this._searchResults}"></h-search-results>`)}
157
+ `;
158
+ }
159
+ };
160
+ __decorate([
161
+ state(),
162
+ __metadata("design:type", Boolean)
163
+ ], HSearch.prototype, "_shouldShowHistory", void 0);
164
+ __decorate([
165
+ state(),
166
+ __metadata("design:type", Boolean)
167
+ ], HSearch.prototype, "_shouldShowResults", void 0);
168
+ __decorate([
169
+ state(),
170
+ __metadata("design:type", Object)
171
+ ], HSearch.prototype, "_searchResults", void 0);
172
+ __decorate([
173
+ state(),
174
+ __metadata("design:type", Array)
175
+ ], HSearch.prototype, "_searchHistory", void 0);
176
+ __decorate([
177
+ state(),
178
+ __metadata("design:type", Array)
179
+ ], HSearch.prototype, "_historyLimitedContent", void 0);
180
+ __decorate([
181
+ state(),
182
+ __metadata("design:type", BehaviorSubject)
183
+ ], HSearch.prototype, "_historyContext", void 0);
184
+ HSearch = __decorate([
185
+ phoenixCustomElement(SEARCH_COMPONENT_NAMES.search)
186
+ ], HSearch);
187
+
188
+ export { HSearch };
189
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,+CAAmD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,qEAA6E;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,53 @@
1
+ export declare const SEARCH_COMPONENT_NAMES: {
2
+ readonly search: "h-search";
3
+ readonly searchInput: "h-search-input";
4
+ readonly clearButton: "h-search-clear-btn";
5
+ readonly submitButton: "h-search-submit-btn";
6
+ readonly searchResults: "h-search-results";
7
+ readonly searchHistory: "h-search-history";
8
+ readonly historyRemoveButton: "h-search-history-remove";
9
+ readonly historySelectButton: "h-search-history-select";
10
+ readonly historyLoadMoreButton: "h-search-history-load-more";
11
+ readonly searchSuggestionContent: "h-search-suggestion-content";
12
+ readonly searchProductContent: "h-search-product-content";
13
+ readonly searchProducerContent: "h-search-producer-content";
14
+ };
15
+ export declare const SEARCH_CUSTOM_EVENT_NAMES: {
16
+ readonly searchPhraseUpdated: "search.external.searchPhraseUpdated";
17
+ readonly searchPhraseSubmitted: "search.external.searchPhraseSubmitted";
18
+ readonly removeHistoryItem: "search.external.removeHistoryItem";
19
+ readonly onHistory: "search.removeHistoryItem";
20
+ readonly loadMoreHistoryItems: "search.loadMoreHistoryItems";
21
+ readonly clear: "search.clearSearchPhrase";
22
+ readonly submit: "search.submitSearchPhrase";
23
+ };
24
+ export declare const SEARCH_NATIVE_EVENT_NAMES: {
25
+ readonly click: "click";
26
+ };
27
+ export declare const SEARCH_CLASS_NAMES: {
28
+ readonly inputSearch: "search__input_search";
29
+ readonly historyContainer: "search__history-list-container";
30
+ readonly historyContainerHeadline: "search__history-list-container_headline";
31
+ readonly historyContainerList: "search__history-list-container_list-items";
32
+ readonly historyContainerItem: "search__history-list-container_item";
33
+ readonly historyContainerLoadMore: "search__history-list-container_load-more";
34
+ readonly historyPortalContainer: "search__history-portal-container";
35
+ readonly resultsListContainer: "search__results-list-container";
36
+ readonly resultsPortalContainer: "search__results-portal-container";
37
+ };
38
+ export declare const SEARCH_CONTEXT_NAMES: {
39
+ readonly historyContext: "historyContext";
40
+ };
41
+ export declare const SEARCH_PORTAL_DESTINATIONS: {
42
+ readonly historyContent: "search.historyContent";
43
+ readonly resultsContent: "search.resultsContent";
44
+ };
45
+ export declare const SEARCH_SLOT_NAMES: {
46
+ readonly clearButton: "search.clear.button";
47
+ };
48
+ /**
49
+ * TODO: Should be moved the config object injected to component
50
+ */
51
+ export declare const SEARCH_CONFIGURATION: {
52
+ readonly historyContentLimit: 3;
53
+ };
@@ -0,0 +1,56 @@
1
+ const SEARCH_COMPONENT_NAMES = {
2
+ search: 'h-search',
3
+ searchInput: 'h-search-input',
4
+ clearButton: 'h-search-clear-btn',
5
+ submitButton: 'h-search-submit-btn',
6
+ searchResults: 'h-search-results',
7
+ searchHistory: 'h-search-history',
8
+ historyRemoveButton: 'h-search-history-remove',
9
+ historySelectButton: 'h-search-history-select',
10
+ historyLoadMoreButton: 'h-search-history-load-more',
11
+ searchSuggestionContent: 'h-search-suggestion-content',
12
+ searchProductContent: 'h-search-product-content',
13
+ searchProducerContent: 'h-search-producer-content'
14
+ };
15
+ const SEARCH_CUSTOM_EVENT_NAMES = {
16
+ searchPhraseUpdated: 'search.external.searchPhraseUpdated',
17
+ searchPhraseSubmitted: 'search.external.searchPhraseSubmitted',
18
+ removeHistoryItem: 'search.external.removeHistoryItem',
19
+ onHistory: 'search.removeHistoryItem',
20
+ loadMoreHistoryItems: 'search.loadMoreHistoryItems',
21
+ clear: 'search.clearSearchPhrase',
22
+ submit: 'search.submitSearchPhrase'
23
+ };
24
+ const SEARCH_NATIVE_EVENT_NAMES = {
25
+ click: 'click'
26
+ };
27
+ const SEARCH_CLASS_NAMES = {
28
+ inputSearch: 'search__input_search',
29
+ historyContainer: 'search__history-list-container',
30
+ historyContainerHeadline: 'search__history-list-container_headline',
31
+ historyContainerList: 'search__history-list-container_list-items',
32
+ historyContainerItem: 'search__history-list-container_item',
33
+ historyContainerLoadMore: 'search__history-list-container_load-more',
34
+ historyPortalContainer: 'search__history-portal-container',
35
+ resultsListContainer: 'search__results-list-container',
36
+ resultsPortalContainer: 'search__results-portal-container'
37
+ };
38
+ const SEARCH_CONTEXT_NAMES = {
39
+ historyContext: 'historyContext'
40
+ };
41
+ const SEARCH_PORTAL_DESTINATIONS = {
42
+ historyContent: 'search.historyContent',
43
+ resultsContent: 'search.resultsContent'
44
+ };
45
+ const SEARCH_SLOT_NAMES = {
46
+ clearButton: 'search.clear.button'
47
+ };
48
+ /**
49
+ * TODO: Should be moved the config object injected to component
50
+ */
51
+ const SEARCH_CONFIGURATION = {
52
+ historyContentLimit: 3
53
+ };
54
+
55
+ export { SEARCH_CLASS_NAMES, SEARCH_COMPONENT_NAMES, SEARCH_CONFIGURATION, SEARCH_CONTEXT_NAMES, SEARCH_CUSTOM_EVENT_NAMES, SEARCH_NATIVE_EVENT_NAMES, SEARCH_PORTAL_DESTINATIONS, SEARCH_SLOT_NAMES };
56
+ //# sourceMappingURL=search_constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,13 @@
1
+ import { TSearchHistoryItem } from "./search_types";
2
+ import { PhoenixLightLitElement } from "../../../core/phoenix_light_lit_element/phoenix_light_lit_element";
3
+ import { Ref } from 'lit/directives/ref.js';
4
+ import { HSearchHistoryLoadMoreBtn } from "./history/search_history_load_more_btn";
5
+ export declare class HSearchHistory extends PhoenixLightLitElement {
6
+ private _historyContextConsumer;
7
+ private _historyContext$;
8
+ private _historyContextObserver;
9
+ buttonRef: Ref<HSearchHistoryLoadMoreBtn>;
10
+ history: TSearchHistoryItem[];
11
+ connectedCallback(): Promise<void>;
12
+ render(): import("lit-html").TemplateResult<1>;
13
+ }
@@ -0,0 +1,69 @@
1
+ import { __decorate, __metadata } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { html } from 'lit';
3
+ import { property } from 'lit/decorators';
4
+ import { PhoenixLightLitElement } from '../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
5
+ import { phoenixCustomElement } from '../../../core/decorators/phoenix_custom_element.js';
6
+ import { Observer } from '../../../core/classes/observer/observer.js';
7
+ import { ContextConsumerController } from '../../../core/context/context_consumer_controller.js';
8
+ import { createRef, ref } from 'lit-html/directives/ref.js';
9
+ import { SEARCH_CLASS_NAMES, SEARCH_PORTAL_DESTINATIONS, SEARCH_COMPONENT_NAMES } from './search_constants.js';
10
+ import { repeat as c } from '../../../../../../external/lit/external/lit-html/directives/repeat.js';
11
+
12
+ let HSearchHistory = class HSearchHistory extends PhoenixLightLitElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.buttonRef = createRef();
16
+ this.history = [];
17
+ }
18
+ async connectedCallback() {
19
+ super.connectedCallback();
20
+ try {
21
+ this._historyContextConsumer = new ContextConsumerController(this);
22
+ this._historyContext$ = await this._historyContextConsumer.consumeAsync('historyContext');
23
+ this._historyContextObserver = new Observer((searchData) => {
24
+ this.requestUpdate();
25
+ const button = this.buttonRef.value;
26
+ searchData.showLoadMore ? button.show() : button.hide();
27
+ });
28
+ this._historyContext$.subscribe(this._historyContextObserver);
29
+ }
30
+ catch (_a) {
31
+ console.error('Search context is not provided');
32
+ }
33
+ }
34
+ render() {
35
+ return html `<div class="${SEARCH_CLASS_NAMES.historyContainer}">
36
+ <h-portal to="${SEARCH_PORTAL_DESTINATIONS.historyContent}" hidden>
37
+ <h3 class="${SEARCH_CLASS_NAMES.historyContainerHeadline}">Historia</h3>
38
+ <ul class="${SEARCH_CLASS_NAMES.historyContainerList}">
39
+ ${c(this.history, (historyElement) => html `<li class="${SEARCH_CLASS_NAMES.historyContainerItem}">
40
+ <h-search-history-select item-label="${historyElement.label}">
41
+ <span class="search__icon_main-color search__list-icon icon icon-reload"></span>
42
+ <span class="search__history-item-value">${historyElement.label}</span>
43
+ </h-search-history-select>
44
+ <h-search-history-remove item-id="${historyElement.id}">X</h-search-history-remove>
45
+ </li>`)}
46
+ </ul>
47
+ <h-search-history-load-more class="${SEARCH_CLASS_NAMES.historyContainerLoadMore}" ${ref(this.buttonRef)}
48
+ >Load more</h-search-history-load-more
49
+ >
50
+ </h-portal>
51
+
52
+ <h-portal-target
53
+ name="${SEARCH_PORTAL_DESTINATIONS.historyContent}"
54
+ class="${SEARCH_CLASS_NAMES.historyPortalContainer}"
55
+ style="position: absolute; left: 0; bottom: 0"
56
+ ></h-portal-target>
57
+ </div> `;
58
+ }
59
+ };
60
+ __decorate([
61
+ property({ type: Array, attribute: 'history' }),
62
+ __metadata("design:type", Array)
63
+ ], HSearchHistory.prototype, "history", void 0);
64
+ HSearchHistory = __decorate([
65
+ phoenixCustomElement(SEARCH_COMPONENT_NAMES.searchHistory)
66
+ ], HSearchHistory);
67
+
68
+ export { HSearchHistory };
69
+ //# sourceMappingURL=search_history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,+CAAmD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uEAA+E;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,9 @@
1
+ import { PhoenixLightLitElement } from "../../../core/phoenix_light_lit_element/phoenix_light_lit_element";
2
+ export declare class HSearchInput extends PhoenixLightLitElement {
3
+ private _searchContextConsumer;
4
+ private _searchContext$;
5
+ private _searchContextObserver;
6
+ private _input;
7
+ connectedCallback(): void;
8
+ private _searchContextSetup;
9
+ }
@@ -0,0 +1,38 @@
1
+ import { __decorate } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { PhoenixLightLitElement } from '../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
3
+ import { phoenixCustomElement } from '../../../core/decorators/phoenix_custom_element.js';
4
+ import { Observer } from '../../../core/classes/observer/observer.js';
5
+ import { ContextConsumerController } from '../../../core/context/context_consumer_controller.js';
6
+ import { SEARCH_COMPONENT_NAMES } from './search_constants.js';
7
+
8
+ let HSearchInput = class HSearchInput extends PhoenixLightLitElement {
9
+ connectedCallback() {
10
+ super.connectedCallback();
11
+ this._input = this.querySelector('input[type="search"]');
12
+ if (!this._input) {
13
+ throw new Error('Search input not found');
14
+ }
15
+ this._searchContextSetup();
16
+ }
17
+ async _searchContextSetup() {
18
+ try {
19
+ this._searchContextConsumer = new ContextConsumerController(this);
20
+ this._searchContext$ = await this._searchContextConsumer.consumeAsync('searchContext');
21
+ this._searchContextObserver = new Observer((searchData) => {
22
+ if (searchData.searchPhrase === '') {
23
+ this._input.value = '';
24
+ }
25
+ });
26
+ this._searchContext$.subscribe(this._searchContextObserver);
27
+ }
28
+ catch (_a) {
29
+ console.error('Search context is not provided');
30
+ }
31
+ }
32
+ };
33
+ HSearchInput = __decorate([
34
+ phoenixCustomElement(SEARCH_COMPONENT_NAMES.searchInput)
35
+ ], HSearchInput);
36
+
37
+ export { HSearchInput };
38
+ //# sourceMappingURL=search_input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,2BAA2B,+CAAmD;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,7 @@
1
+ import type { TSearchResults } from "./search_types";
2
+ import { PhoenixLightLitElement } from "../../../core/phoenix_light_lit_element/phoenix_light_lit_element";
3
+ import { nothing } from 'lit';
4
+ export declare class HSearchResults extends PhoenixLightLitElement {
5
+ results: TSearchResults;
6
+ render(): import("lit-html").TemplateResult<1> | typeof nothing;
7
+ }
@@ -0,0 +1,43 @@
1
+ import { __decorate, __metadata } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { html, nothing } from 'lit';
3
+ import { property } from 'lit/decorators';
4
+ import { PhoenixLightLitElement } from '../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
5
+ import { phoenixCustomElement } from '../../../core/decorators/phoenix_custom_element.js';
6
+ import { SEARCH_CLASS_NAMES, SEARCH_PORTAL_DESTINATIONS, SEARCH_COMPONENT_NAMES } from './search_constants.js';
7
+
8
+ let HSearchResults = class HSearchResults extends PhoenixLightLitElement {
9
+ render() {
10
+ if (this.results)
11
+ return html `<div class="${SEARCH_CLASS_NAMES.resultsListContainer}">
12
+ <h-portal to="${SEARCH_PORTAL_DESTINATIONS.resultsContent}">
13
+ <div>
14
+ <h3 class="search__section-head search__section-head_sticky search__section-head_line">Results</h3>
15
+
16
+ <h-search-suggestion-content .suggestions="${this.results.suggestions}" .categories="${this.results.categories.list}">
17
+ </h-search-suggestion-content>
18
+
19
+ <h-search-product-content .products="${this.results.products.list}"></h-search-product-content>
20
+
21
+ <h-search-producer-content .producers="${this.results.producers.list}"></h-search-producer-content>
22
+ </div>
23
+ </h-portal>
24
+
25
+ <h-portal-target
26
+ name="${SEARCH_PORTAL_DESTINATIONS.resultsContent}"
27
+ class="${SEARCH_CLASS_NAMES.resultsPortalContainer}"
28
+ style="position: absolute; right: 0; bottom: 0"
29
+ ></h-portal-target>
30
+ </div> `;
31
+ return nothing;
32
+ }
33
+ };
34
+ __decorate([
35
+ property({ type: Object, attribute: 'result-data' }),
36
+ __metadata("design:type", Object)
37
+ ], HSearchResults.prototype, "results", void 0);
38
+ HSearchResults = __decorate([
39
+ phoenixCustomElement(SEARCH_COMPONENT_NAMES.searchResults)
40
+ ], HSearchResults);
41
+
42
+ export { HSearchResults };
43
+ //# sourceMappingURL=search_results.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,+CAAmD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,32 @@
1
+ export declare type TSearchType = {
2
+ list: [];
3
+ };
4
+ export declare type TSearchResults = {
5
+ suggestions: string[];
6
+ products: TSearchType;
7
+ producers: TSearchType;
8
+ categories: TSearchType;
9
+ };
10
+ export declare type TSearchHistoryItem = {
11
+ id: number;
12
+ label: string;
13
+ };
14
+ export declare type TSearchData = {
15
+ results: TSearchResults;
16
+ history: TSearchHistoryItem[];
17
+ searchPhrase: string;
18
+ };
19
+ export declare type TSearchPhaseEventBody = {
20
+ searchPhrase: string;
21
+ };
22
+ export declare type SearchPhraseEvent = Event & {
23
+ detail: TSearchPhaseEventBody;
24
+ };
25
+ export declare type RemoveHistoryItemEvent = Event & {
26
+ detail: {
27
+ id: number;
28
+ };
29
+ };
30
+ export declare type TSearchHistoryContext = {
31
+ showLoadMore: boolean;
32
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=search_types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search_types.js","sourceRoot":"","sources":["../../../../../../../../src/components/form/search/search_types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { PhoenixLightLitElement } from "../../../core/phoenix_light_lit_element/phoenix_light_lit_element";
2
+ export declare class HStorefrontSearchMock extends PhoenixLightLitElement {
3
+ private _searchContextProvider;
4
+ private _searchState;
5
+ connectedCallback(): Promise<void>;
6
+ private _serverMock;
7
+ private _setupListeners;
8
+ }