favesalon-embed 1.0.3 → 1.0.4

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 (161) hide show
  1. package/dist/{favesalon-embed/_commonjsHelpers-9bc404fc.js → cjs/_commonjsHelpers-5cfcba41.js} +6 -14
  2. package/dist/cjs/chat-box_5.cjs.entry.js +17439 -0
  3. package/dist/cjs/chat-button.cjs.entry.js +55 -0
  4. package/dist/cjs/colors-38421769.js +69 -0
  5. package/dist/cjs/favesalon-embed.cjs.js +23 -0
  6. package/dist/cjs/google-map.cjs.entry.js +52 -0
  7. package/dist/{favesalon-embed/index-ac52896a.js → cjs/index-7f190886.js} +47 -454
  8. package/dist/cjs/index-dd8176c4.js +1531 -0
  9. package/dist/cjs/index.cjs.js +2 -0
  10. package/dist/cjs/loader.cjs.js +22 -0
  11. package/dist/cjs/relativeTime-3721080d.js +9 -0
  12. package/dist/cjs/salon-booking-modal.cjs.entry.js +30 -0
  13. package/dist/cjs/salon-booking.cjs.entry.js +51 -0
  14. package/dist/cjs/salon-gift-card-modal.cjs.entry.js +29 -0
  15. package/dist/cjs/salon-gift-card.cjs.entry.js +51 -0
  16. package/dist/cjs/salon-info.cjs.entry.js +33 -0
  17. package/dist/cjs/salon-latest-reviews.cjs.entry.js +97 -0
  18. package/dist/cjs/salon-latest-styles_3.cjs.entry.js +241 -0
  19. package/dist/cjs/salon-lookbook.cjs.entry.js +222 -0
  20. package/dist/cjs/salon-ranking.cjs.entry.js +60 -0
  21. package/dist/cjs/salon-reviews.cjs.entry.js +193 -0
  22. package/dist/cjs/salon-services.cjs.entry.js +81 -0
  23. package/dist/cjs/salon-stylists.cjs.entry.js +118 -0
  24. package/dist/{favesalon-embed/services-7cb8f2a6.js → cjs/services-d1bdf299.js} +55 -2415
  25. package/dist/cjs/style-detail.cjs.entry.js +312 -0
  26. package/dist/cjs/utils-c5a33b3c.js +23 -0
  27. package/dist/collection/collection-manifest.json +33 -0
  28. package/dist/collection/components/chat-box/index.css +105 -0
  29. package/dist/collection/components/chat-box/index.js +138 -0
  30. package/dist/collection/components/chat-button/index.css +101 -0
  31. package/dist/collection/components/chat-button/index.js +155 -0
  32. package/dist/collection/components/chat-form/index.css +40 -0
  33. package/dist/collection/components/chat-form/index.js +79 -0
  34. package/dist/collection/components/chat-messages/index.css +48 -0
  35. package/dist/collection/components/chat-messages/index.js +142 -0
  36. package/dist/collection/components/chat-rooms/index.css +102 -0
  37. package/dist/collection/components/chat-rooms/index.js +157 -0
  38. package/dist/collection/components/google-map/assets/map--placeholder.jpeg +0 -0
  39. package/dist/collection/components/google-map/index.css +5 -0
  40. package/dist/collection/components/google-map/index.js +90 -0
  41. package/dist/collection/components/salon-booking/index.css +30 -0
  42. package/dist/collection/components/salon-booking/index.js +126 -0
  43. package/dist/collection/components/salon-booking/salon-booking-modal.js +92 -0
  44. package/dist/collection/components/salon-gift-card/index.css +30 -0
  45. package/dist/collection/components/salon-gift-card/index.js +126 -0
  46. package/dist/collection/components/salon-gift-card/salon-gift-card-modal.js +73 -0
  47. package/dist/collection/components/salon-info/index.css +1 -0
  48. package/dist/collection/components/salon-info/index.js +77 -0
  49. package/dist/collection/components/salon-latest-reviews/index.css +11 -0
  50. package/dist/collection/components/salon-latest-reviews/index.js +163 -0
  51. package/dist/collection/components/salon-latest-styles/index.css +12 -0
  52. package/dist/{favesalon-embed/salon-latest-styles.entry.js → collection/components/salon-latest-styles/index.js} +99 -14
  53. package/dist/collection/components/salon-locations/index.css +24 -0
  54. package/dist/{favesalon-embed/salon-locations.entry.js → collection/components/salon-locations/index.js} +95 -15
  55. package/dist/collection/components/salon-lookbook/index.css +15 -0
  56. package/dist/collection/components/salon-lookbook/index.js +368 -0
  57. package/dist/collection/components/salon-ranking/index.css +3 -0
  58. package/dist/collection/components/salon-ranking/index.js +117 -0
  59. package/dist/collection/components/salon-reviews/index.css +18 -0
  60. package/dist/collection/components/salon-reviews/index.js +249 -0
  61. package/dist/collection/components/salon-schedules/index.css +18 -0
  62. package/dist/{favesalon-embed/salon-schedules.entry.js → collection/components/salon-schedules/index.js} +95 -14
  63. package/dist/collection/components/salon-services/index.css +1 -0
  64. package/dist/collection/components/salon-services/index.js +146 -0
  65. package/dist/collection/components/salon-stylists/index.css +43 -0
  66. package/dist/collection/components/salon-stylists/index.js +184 -0
  67. package/dist/collection/components/style-detail/index.css +76 -0
  68. package/dist/collection/components/style-detail/index.js +386 -0
  69. package/dist/collection/components/user-avatar/index.css +0 -0
  70. package/dist/collection/components/user-avatar/index.js +159 -0
  71. package/dist/collection/constants/colors.js +65 -0
  72. package/dist/collection/global/global.js +0 -0
  73. package/dist/collection/index.js +1 -0
  74. package/dist/collection/mocks/users.js +10 -0
  75. package/dist/collection/services/services.js +295 -0
  76. package/dist/collection/types/chat.js +23 -0
  77. package/dist/collection/types/common.js +11 -0
  78. package/dist/collection/types/review.js +39 -0
  79. package/dist/collection/types/salon.js +58 -0
  80. package/dist/collection/types/service.js +24 -0
  81. package/dist/collection/types/style.js +128 -0
  82. package/dist/collection/types/stylist.js +30 -0
  83. package/dist/collection/types/user.js +10 -0
  84. package/dist/collection/utils/utils.js +23 -0
  85. package/dist/custom-elements/index.js +44974 -0
  86. package/dist/{favesalon-embed/_commonjsHelpers-a4f66ccd.js → esm/_commonjsHelpers-66ac50f5.js} +2 -14
  87. package/dist/{favesalon-embed/chat-rooms.entry.js → esm/chat-box_5.entry.js} +182 -30
  88. package/dist/{favesalon-embed → esm}/chat-button.entry.js +3 -3
  89. package/dist/esm/favesalon-embed.js +18 -0
  90. package/dist/{favesalon-embed → esm}/google-map.entry.js +1 -1
  91. package/dist/esm/index-0494771f.js +1504 -0
  92. package/dist/{favesalon-embed/index-00b83e1c.js → esm/index-a1c7583c.js} +15 -425
  93. package/dist/esm/index.js +1 -0
  94. package/dist/esm/loader.js +18 -0
  95. package/dist/esm/polyfills/core-js.js +11 -0
  96. package/dist/esm/polyfills/css-shim.js +1 -0
  97. package/dist/esm/polyfills/dom.js +79 -0
  98. package/dist/esm/polyfills/es5-html-element.js +1 -0
  99. package/dist/esm/polyfills/index.js +34 -0
  100. package/dist/esm/polyfills/system.js +6 -0
  101. package/dist/esm/relativeTime-baa50aa2.js +7 -0
  102. package/dist/{favesalon-embed → esm}/salon-booking-modal.entry.js +1 -1
  103. package/dist/{favesalon-embed → esm}/salon-booking.entry.js +3 -3
  104. package/dist/{favesalon-embed → esm}/salon-gift-card-modal.entry.js +1 -1
  105. package/dist/{favesalon-embed → esm}/salon-gift-card.entry.js +3 -3
  106. package/dist/{favesalon-embed → esm}/salon-info.entry.js +3 -3
  107. package/dist/{favesalon-embed → esm}/salon-latest-reviews.entry.js +4 -4
  108. package/dist/esm/salon-latest-styles_3.entry.js +235 -0
  109. package/dist/{favesalon-embed → esm}/salon-lookbook.entry.js +3 -3
  110. package/dist/{favesalon-embed → esm}/salon-ranking.entry.js +1 -1
  111. package/dist/{favesalon-embed → esm}/salon-reviews.entry.js +3 -3
  112. package/dist/{favesalon-embed → esm}/salon-services.entry.js +3 -3
  113. package/dist/{favesalon-embed → esm}/salon-stylists.entry.js +3 -3
  114. package/dist/{favesalon-embed/services-7c46a2fd.js → esm/services-257442e2.js} +99 -2467
  115. package/dist/{favesalon-embed → esm}/style-detail.entry.js +4 -4
  116. package/dist/{favesalon-embed/utils-2c19db45.js → esm/utils-e97485e0.js} +0 -6
  117. package/dist/favesalon-embed/favesalon-embed.css +1 -2439
  118. package/dist/favesalon-embed/favesalon-embed.esm.js +1 -148
  119. package/dist/favesalon-embed/index.esm.js +0 -1
  120. package/dist/favesalon-embed/p-05a1c88a.entry.js +1 -0
  121. package/dist/favesalon-embed/p-0acf0447.entry.js +1 -0
  122. package/dist/favesalon-embed/p-0bc4f624.js +1 -0
  123. package/dist/favesalon-embed/p-1af1515f.entry.js +1 -0
  124. package/dist/favesalon-embed/p-1cba5fc9.entry.js +1 -0
  125. package/dist/favesalon-embed/p-39a4ef15.entry.js +1 -0
  126. package/dist/favesalon-embed/p-3e2cb05b.entry.js +1 -0
  127. package/dist/favesalon-embed/p-47e646f8.js +1 -0
  128. package/dist/favesalon-embed/p-487b311f.entry.js +1 -0
  129. package/dist/favesalon-embed/p-55387c2f.entry.js +1 -0
  130. package/dist/favesalon-embed/p-566f05b4.entry.js +1 -0
  131. package/dist/favesalon-embed/p-862a0de0.entry.js +1 -0
  132. package/dist/favesalon-embed/p-9fe0cbeb.js +2 -0
  133. package/dist/favesalon-embed/p-a33331cc.js +1 -0
  134. package/dist/favesalon-embed/p-aeeb7b5f.entry.js +1 -0
  135. package/dist/favesalon-embed/p-b08e5b54.js +6 -0
  136. package/dist/favesalon-embed/p-b5cca5fc.entry.js +1 -0
  137. package/dist/favesalon-embed/p-c7fb7af5.js +1580 -0
  138. package/dist/favesalon-embed/p-ccab56d8.js +1 -0
  139. package/dist/favesalon-embed/p-d6e13053.entry.js +1 -0
  140. package/dist/favesalon-embed/p-dee42d34.entry.js +1 -0
  141. package/dist/favesalon-embed/p-e661ca1d.entry.js +1 -0
  142. package/dist/favesalon-embed/p-eeceab9c.entry.js +1 -0
  143. package/dist/index.cjs.js +1 -0
  144. package/dist/index.js +1 -0
  145. package/package.json +1 -1
  146. package/dist/favesalon-embed/app-globals-437cc3f3.js +0 -712
  147. package/dist/favesalon-embed/app-globals-60769a2c.js +0 -712
  148. package/dist/favesalon-embed/chat-box.entry.js +0 -54
  149. package/dist/favesalon-embed/chat-form.entry.js +0 -39
  150. package/dist/favesalon-embed/chat-messages.entry.js +0 -53
  151. package/dist/favesalon-embed/css-shim-b7d3d95f.js +0 -4
  152. package/dist/favesalon-embed/dom-64053c71.js +0 -73
  153. package/dist/favesalon-embed/index-04c09911.js +0 -3371
  154. package/dist/favesalon-embed/index-888e99e3.js +0 -3371
  155. package/dist/favesalon-embed/isObject-13b86c17.js +0 -203
  156. package/dist/favesalon-embed/relativeTime-15477f02.js +0 -7
  157. package/dist/favesalon-embed/relativeTime-268e64b0.js +0 -7
  158. package/dist/favesalon-embed/services-55a87166.js +0 -23655
  159. package/dist/favesalon-embed/shadow-css-98135883.js +0 -387
  160. package/dist/favesalon-embed/user-avatar.entry.js +0 -50
  161. /package/dist/{favesalon-embed → esm}/colors-ea36347a.js +0 -0
@@ -0,0 +1,368 @@
1
+ import { h } from '@stencil/core';
2
+ import { Colors } from '../../constants/colors';
3
+ import HttpService from '../../services/services';
4
+ const lookbookSortOptions = [{
5
+ value: 'like',
6
+ label: 'Most popular',
7
+ }, {
8
+ value: 'newest',
9
+ label: 'Newest first',
10
+ }, {
11
+ value: 'oldest',
12
+ label: 'Oldest first',
13
+ }];
14
+ const lookbookFilterOptions = [{
15
+ value: 'all',
16
+ label: 'All Category',
17
+ }];
18
+ export class SalonLookbook {
19
+ constructor() {
20
+ this.salonId = undefined;
21
+ this.isLoading = true;
22
+ this.isLoadingMore = undefined;
23
+ this.hideLoadMore = undefined;
24
+ this.currentPage = 1;
25
+ this.totalLookbooks = 0;
26
+ this.salonCategories = [];
27
+ this.salonLookbooks = [];
28
+ this.sortBy = lookbookSortOptions[1].value;
29
+ this.filterBy = lookbookFilterOptions[0].value;
30
+ this.isLayoutSetup = undefined;
31
+ }
32
+ componentWillLoad() {
33
+ this.fetchData();
34
+ this.injectSDK();
35
+ }
36
+ componentDidRender() {
37
+ this.setupGridLayout();
38
+ }
39
+ injectSDK() {
40
+ return new Promise((resolve) => {
41
+ const script = document.createElement('script');
42
+ script.type = 'text/javascript';
43
+ script.src = 'https://cdn.jsdelivr.net/npm/macy@2';
44
+ document.body.appendChild(script);
45
+ return resolve(true);
46
+ });
47
+ }
48
+ setupGridLayout() {
49
+ if (!this.isLayoutSetup && document.querySelector('#salon-loobooks--grid')) {
50
+ const script = document.createElement('script');
51
+ script.type = 'text/javascript';
52
+ script.innerHTML = `
53
+ var masonry = new Macy({
54
+ container: '#salon-loobooks--grid',
55
+ useContainerForBreakpoints: true,
56
+ margin: 16,
57
+ columns: 5,
58
+ breakAt: {
59
+ 1024: {
60
+ columns: 4,
61
+ },
62
+ 768: {
63
+ columns: 3,
64
+ },
65
+ 576: {
66
+ margin: 16,
67
+ columns: 2,
68
+ },
69
+ },
70
+ });
71
+ `;
72
+ document.body.appendChild(script);
73
+ this.isLayoutSetup = true;
74
+ }
75
+ }
76
+ async fetchData() {
77
+ try {
78
+ const promises = [
79
+ this.fetchLookbooks(Object.assign({ page: 1, sort: this.sortBy }, this.filterBy !== 'all' ? { services: [this.filterBy] } : {})),
80
+ this.fetchCategories(),
81
+ ];
82
+ return Promise.all(promises);
83
+ }
84
+ catch (e) { }
85
+ }
86
+ async fetchLookbooks(options, isLoadingMore) {
87
+ if (isLoadingMore) {
88
+ this.isLoadingMore = true;
89
+ }
90
+ else {
91
+ this.isLoading = true;
92
+ }
93
+ try {
94
+ const { total, allLookbooks } = await HttpService().fetchSalonLookbooks(this.salonId, options);
95
+ this.totalLookbooks = total;
96
+ this.salonLookbooks = this.salonLookbooks.concat(allLookbooks);
97
+ this.hideLoadMore = allLookbooks.length < 20;
98
+ }
99
+ catch (error) { }
100
+ if (isLoadingMore) {
101
+ this.isLoadingMore = false;
102
+ }
103
+ else {
104
+ this.isLoading = false;
105
+ }
106
+ }
107
+ async onChangeFiltering(filterBy) {
108
+ try {
109
+ this.currentPage = 1;
110
+ this.totalLookbooks = 0;
111
+ this.salonLookbooks = [];
112
+ this.hideLoadMore = true;
113
+ this.filterBy = filterBy;
114
+ await this.fetchLookbooks(Object.assign({ page: this.currentPage, sort: this.sortBy }, this.filterBy !== 'all' ? { services: [Number(this.filterBy)] } : {}));
115
+ if (window.masonry) {
116
+ this.isLayoutSetup = false;
117
+ }
118
+ }
119
+ catch (error) { }
120
+ }
121
+ async onChangeSorting(sortBy) {
122
+ try {
123
+ this.currentPage = 1;
124
+ this.totalLookbooks = 0;
125
+ this.salonLookbooks = [];
126
+ this.hideLoadMore = true;
127
+ this.sortBy = sortBy;
128
+ await this.fetchLookbooks(Object.assign({ page: this.currentPage, sort: this.sortBy }, this.filterBy !== 'all' ? { services: [this.filterBy] } : {}));
129
+ if (window.masonry) {
130
+ this.isLayoutSetup = false;
131
+ }
132
+ }
133
+ catch (error) { }
134
+ }
135
+ async onLoadMore() {
136
+ try {
137
+ this.currentPage += 1;
138
+ await this.fetchLookbooks({ page: this.currentPage }, true);
139
+ if (window.masonry) {
140
+ this.isLayoutSetup = false;
141
+ }
142
+ }
143
+ catch (error) { }
144
+ }
145
+ async fetchCategories() {
146
+ try {
147
+ this.salonCategories = await HttpService().fetchSalonCategories();
148
+ }
149
+ catch (error) { }
150
+ }
151
+ onClickLookbook(style) {
152
+ const elLookbookModal = document.createElement('div');
153
+ elLookbookModal.innerHTML = `
154
+ <style-detail
155
+ salon-id=${this.salonId}
156
+ salon-lookbook='${JSON.stringify(style)}'
157
+ ></style-detail>
158
+ `;
159
+ document.body.appendChild(elLookbookModal);
160
+ }
161
+ renderHeader() {
162
+ const allFilterOptions = lookbookFilterOptions.concat(([...this.salonCategories]).map(category => {
163
+ return {
164
+ value: category.id,
165
+ label: category.name,
166
+ };
167
+ }));
168
+ return (h("div", { class: "view-header", style: {
169
+ display: 'flex',
170
+ flexDirection: 'row',
171
+ justifyContent: 'space-between',
172
+ alignItems: 'center',
173
+ marginBottom: '24px',
174
+ } }, h("div", { class: "salon-loobook--serch-result" }, this.totalLookbooks, " ", this.totalLookbooks === 1 ? 'result' : 'results'), h("div", { style: {
175
+ display: 'flex',
176
+ flexDirection: 'row',
177
+ alignItems: 'center',
178
+ } }, h("div", { class: "salon-loobook--filter-wrapper", style: {
179
+ display: 'flex',
180
+ flexDirection: 'row',
181
+ alignItems: 'center',
182
+ marginRight: '16px',
183
+ } }, h("label", { style: { marginRight: '8px', marginBottom: '0' } }, "Filter by"), h("select", { class: "form-select", style: { width: '160px' }, onChange: (evt) => this.onChangeFiltering(evt.target.value) }, allFilterOptions.map(filterOption => (h("option", { value: filterOption.value, selected: String(filterOption.value) === String(this.filterBy) }, filterOption.label))))), h("div", { class: "salon-loobook--sort-wrapper", style: {
184
+ display: 'flex',
185
+ flexDirection: 'row',
186
+ alignItems: 'center',
187
+ } }, h("label", { style: { marginRight: '8px', marginBottom: '0' } }, "Sort by"), h("select", { class: "form-select", style: { width: '160px' }, onChange: (evt) => this.onChangeSorting(evt.target.value) }, lookbookSortOptions.map(sortOption => (h("option", { value: sortOption.value, selected: sortOption.value === this.sortBy }, sortOption.label))))))));
188
+ }
189
+ render() {
190
+ return (h("div", { class: "salon-loobooks" }, h("div", null, h("div", { class: "view-content" }, this.renderHeader(), this.salonLookbooks.length > 0 && (h("div", { class: "salon-loobooks--grid", id: "salon-loobooks--grid" }, this.salonLookbooks.map(style => {
191
+ const { caption, imageThumbMedium, owner } = style;
192
+ return (h("div", { class: "salon-lookbook salon-loobooks--grid-item", onClick: () => this.onClickLookbook(style) }, h("div", { class: "card", style: {
193
+ background: 'none',
194
+ border: 'none',
195
+ // maxWidth: '200px',
196
+ } }, h("div", { class: "salon-lookbook--image", style: {
197
+ borderRadius: '8px',
198
+ overflow: 'hidden',
199
+ minHeight: '80px',
200
+ background: Colors.Gray01,
201
+ } }, h("img", { src: imageThumbMedium, alt: caption, style: { maxWidth: '100%' } })), owner && (h("div", { class: "card-body", style: { paddingLeft: '0' } }, h("user-avatar", { name: owner.fullName, shortName: `${(owner.firstName || '').charAt(0)}${(owner.lastName || '').charAt(0)}`, avatar: owner.avatar }))))));
202
+ })))), this.salonLookbooks.length > 0 && !this.hideLoadMore && (h("div", { class: "view-footer", style: { paddingTop: '16px', textAlign: 'center' } }, h("button", { type: "button", class: "btn btn-light btn-lg", onClick: () => this.onLoadMore(), style: {
203
+ background: Colors.White,
204
+ border: `1px solid ${Colors.Gray02}`,
205
+ borderRadius: '4px',
206
+ paddingLeft: '24px',
207
+ paddingRight: '24px',
208
+ } }, this.isLoadingMore ? 'Loading' : 'Load more'))))));
209
+ }
210
+ static get is() { return "salon-lookbook"; }
211
+ static get originalStyleUrls() {
212
+ return {
213
+ "$": ["index.css"]
214
+ };
215
+ }
216
+ static get styleUrls() {
217
+ return {
218
+ "$": ["index.css"]
219
+ };
220
+ }
221
+ static get properties() {
222
+ return {
223
+ "salonId": {
224
+ "type": "number",
225
+ "mutable": false,
226
+ "complexType": {
227
+ "original": "number",
228
+ "resolved": "number",
229
+ "references": {}
230
+ },
231
+ "required": false,
232
+ "optional": false,
233
+ "docs": {
234
+ "tags": [],
235
+ "text": ""
236
+ },
237
+ "attribute": "salon-id",
238
+ "reflect": false
239
+ }
240
+ };
241
+ }
242
+ static get states() {
243
+ return {
244
+ "isLoading": {},
245
+ "isLoadingMore": {},
246
+ "hideLoadMore": {},
247
+ "currentPage": {},
248
+ "totalLookbooks": {},
249
+ "salonCategories": {},
250
+ "salonLookbooks": {},
251
+ "sortBy": {},
252
+ "filterBy": {},
253
+ "isLayoutSetup": {}
254
+ };
255
+ }
256
+ static get methods() {
257
+ return {
258
+ "fetchData": {
259
+ "complexType": {
260
+ "signature": "() => Promise<any[]>",
261
+ "parameters": [],
262
+ "references": {
263
+ "Promise": {
264
+ "location": "global"
265
+ }
266
+ },
267
+ "return": "Promise<any[]>"
268
+ },
269
+ "docs": {
270
+ "text": "",
271
+ "tags": []
272
+ }
273
+ },
274
+ "fetchLookbooks": {
275
+ "complexType": {
276
+ "signature": "(options: any, isLoadingMore?: boolean) => Promise<void>",
277
+ "parameters": [{
278
+ "tags": [],
279
+ "text": ""
280
+ }, {
281
+ "tags": [],
282
+ "text": ""
283
+ }],
284
+ "references": {
285
+ "Promise": {
286
+ "location": "global"
287
+ }
288
+ },
289
+ "return": "Promise<void>"
290
+ },
291
+ "docs": {
292
+ "text": "",
293
+ "tags": []
294
+ }
295
+ },
296
+ "onChangeFiltering": {
297
+ "complexType": {
298
+ "signature": "(filterBy: string) => Promise<void>",
299
+ "parameters": [{
300
+ "tags": [],
301
+ "text": ""
302
+ }],
303
+ "references": {
304
+ "Promise": {
305
+ "location": "global"
306
+ }
307
+ },
308
+ "return": "Promise<void>"
309
+ },
310
+ "docs": {
311
+ "text": "",
312
+ "tags": []
313
+ }
314
+ },
315
+ "onChangeSorting": {
316
+ "complexType": {
317
+ "signature": "(sortBy: string) => Promise<void>",
318
+ "parameters": [{
319
+ "tags": [],
320
+ "text": ""
321
+ }],
322
+ "references": {
323
+ "Promise": {
324
+ "location": "global"
325
+ }
326
+ },
327
+ "return": "Promise<void>"
328
+ },
329
+ "docs": {
330
+ "text": "",
331
+ "tags": []
332
+ }
333
+ },
334
+ "onLoadMore": {
335
+ "complexType": {
336
+ "signature": "() => Promise<void>",
337
+ "parameters": [],
338
+ "references": {
339
+ "Promise": {
340
+ "location": "global"
341
+ }
342
+ },
343
+ "return": "Promise<void>"
344
+ },
345
+ "docs": {
346
+ "text": "",
347
+ "tags": []
348
+ }
349
+ },
350
+ "fetchCategories": {
351
+ "complexType": {
352
+ "signature": "() => Promise<void>",
353
+ "parameters": [],
354
+ "references": {
355
+ "Promise": {
356
+ "location": "global"
357
+ }
358
+ },
359
+ "return": "Promise<void>"
360
+ },
361
+ "docs": {
362
+ "text": "",
363
+ "tags": []
364
+ }
365
+ }
366
+ };
367
+ }
368
+ }
@@ -0,0 +1,3 @@
1
+ salon-ranking {
2
+ display: block;
3
+ }
@@ -0,0 +1,117 @@
1
+ import { h } from '@stencil/core';
2
+ import { Colors } from '../../constants/colors';
3
+ export class SalonRanking {
4
+ constructor() {
5
+ this.ranking = undefined;
6
+ this.height = 16;
7
+ this.width = 16;
8
+ }
9
+ getRankingData(ranking) {
10
+ if (ranking === 5) {
11
+ return {
12
+ color: Colors.Primary,
13
+ text: 'Viral',
14
+ };
15
+ }
16
+ if (ranking === 4) {
17
+ return {
18
+ color: Colors.Orange03,
19
+ text: 'Advancing',
20
+ };
21
+ }
22
+ if (ranking === 3) {
23
+ return {
24
+ color: Colors.Lilac03,
25
+ text: 'Progressing',
26
+ };
27
+ }
28
+ if (ranking === 2) {
29
+ return {
30
+ color: Colors.Blue03,
31
+ text: 'Building',
32
+ };
33
+ }
34
+ return {
35
+ color: Colors.Gray05,
36
+ text: 'Starting',
37
+ };
38
+ }
39
+ render() {
40
+ const rankingData = this.getRankingData(this.ranking);
41
+ return (h("div", { style: {
42
+ display: 'flex',
43
+ alignItems: 'center',
44
+ justifyContent: 'center',
45
+ width: '100%',
46
+ color: rankingData.color,
47
+ } }, h("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", width: this.width, height: this.height, viewBox: `0 0 ${this.width} ${this.height}`, style: { maxWidth: `${this.width}px`, height: 'auto', marginRight: '8px' } }, h("path", { d: "M14.9984 14.1273C15.0188 14.2658 14.8369 14.3204 14.7415 14.2251L8.11345 7.6028C6.41272 5.90355 6.42184 3.19468 8.23887 1.76037C9.63972 0.678363 11.7259 0.753791 13.1793 1.96961C14.1899 2.80207 14.706 3.93808 14.7471 5.07223L14.9984 14.1273Z", fill: "currentColor" }), h("path", { d: "M1.74847 8.24513C3.18403 6.42967 5.91004 6.40579 7.61078 8.10504L14.2548 14.7432C14.3501 14.8385 14.2795 15.0043 14.1568 14.9999L5.078 14.7329C3.94287 14.6918 2.78997 14.1604 1.97268 13.1665C0.755801 11.7144 0.680308 9.62998 1.74847 8.24513Z", fill: "currentColor" })), rankingData.text));
48
+ }
49
+ static get is() { return "salon-ranking"; }
50
+ static get originalStyleUrls() {
51
+ return {
52
+ "$": ["index.css"]
53
+ };
54
+ }
55
+ static get styleUrls() {
56
+ return {
57
+ "$": ["index.css"]
58
+ };
59
+ }
60
+ static get properties() {
61
+ return {
62
+ "ranking": {
63
+ "type": "number",
64
+ "mutable": false,
65
+ "complexType": {
66
+ "original": "number",
67
+ "resolved": "number",
68
+ "references": {}
69
+ },
70
+ "required": false,
71
+ "optional": false,
72
+ "docs": {
73
+ "tags": [],
74
+ "text": ""
75
+ },
76
+ "attribute": "ranking",
77
+ "reflect": false
78
+ },
79
+ "height": {
80
+ "type": "number",
81
+ "mutable": false,
82
+ "complexType": {
83
+ "original": "number",
84
+ "resolved": "number",
85
+ "references": {}
86
+ },
87
+ "required": false,
88
+ "optional": true,
89
+ "docs": {
90
+ "tags": [],
91
+ "text": ""
92
+ },
93
+ "attribute": "height",
94
+ "reflect": false,
95
+ "defaultValue": "16"
96
+ },
97
+ "width": {
98
+ "type": "number",
99
+ "mutable": false,
100
+ "complexType": {
101
+ "original": "number",
102
+ "resolved": "number",
103
+ "references": {}
104
+ },
105
+ "required": false,
106
+ "optional": true,
107
+ "docs": {
108
+ "tags": [],
109
+ "text": ""
110
+ },
111
+ "attribute": "width",
112
+ "reflect": false,
113
+ "defaultValue": "16"
114
+ }
115
+ };
116
+ }
117
+ }
@@ -0,0 +1,18 @@
1
+ @media (max-width: 768px) {
2
+ salon-reviews .salon-reviews {
3
+ flex-direction: column !important;
4
+ }
5
+
6
+ salon-reviews .salon-reviews--filters--options {
7
+ display: none !important;
8
+ }
9
+
10
+ salon-reviews .salon-reviews--list {
11
+ padding-top: 32px !important;
12
+ padding-left: 0px !important;
13
+ }
14
+
15
+ salon-reviews .reviews-list--sorting > label {
16
+ display: none !important;
17
+ }
18
+ }