shoplazza-cli 0.0.1

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 (181) hide show
  1. package/.editorconfig +28 -0
  2. package/.prettierrc +9 -0
  3. package/LICENSE +21 -0
  4. package/README.md +208 -0
  5. package/bin/shoplazza +117 -0
  6. package/fixtures/assets/blog.scss +74 -0
  7. package/fixtures/assets/cart_modal.scss +450 -0
  8. package/fixtures/assets/collection_detail.js +234 -0
  9. package/fixtures/assets/collection_detail.scss +345 -0
  10. package/fixtures/assets/collection_list.scss +11 -0
  11. package/fixtures/assets/collection_slider.scss +169 -0
  12. package/fixtures/assets/feature_columns.scss +26 -0
  13. package/fixtures/assets/feature_product.scss +109 -0
  14. package/fixtures/assets/footer.js +58 -0
  15. package/fixtures/assets/footer.scss +337 -0
  16. package/fixtures/assets/four_images.scss +29 -0
  17. package/fixtures/assets/gallery.scss +55 -0
  18. package/fixtures/assets/header.js +178 -0
  19. package/fixtures/assets/header.scss +929 -0
  20. package/fixtures/assets/image_text.scss +72 -0
  21. package/fixtures/assets/logo_bar.scss +11 -0
  22. package/fixtures/assets/newsletter.scss +90 -0
  23. package/fixtures/assets/not_found.scss +39 -0
  24. package/fixtures/assets/page_detail.scss +16 -0
  25. package/fixtures/assets/pagination.scss +150 -0
  26. package/fixtures/assets/postcss.config.js +6 -0
  27. package/fixtures/assets/product_description.scss +88 -0
  28. package/fixtures/assets/product_detail.js +634 -0
  29. package/fixtures/assets/product_detail.scss +1106 -0
  30. package/fixtures/assets/relative_product.scss +45 -0
  31. package/fixtures/assets/reviews.scss +70 -0
  32. package/fixtures/assets/rich_text.scss +71 -0
  33. package/fixtures/assets/search.js +87 -0
  34. package/fixtures/assets/search.scss +67 -0
  35. package/fixtures/assets/slide.scss +51 -0
  36. package/fixtures/assets/slider.scss +141 -0
  37. package/fixtures/assets/theme.css +976 -0
  38. package/fixtures/assets/theme.scss +1100 -0
  39. package/fixtures/assets/three_images.scss +20 -0
  40. package/fixtures/assets/tools.scss +23 -0
  41. package/fixtures/assets/two_images.scss +24 -0
  42. package/fixtures/assets/video.scss +45 -0
  43. package/fixtures/assets/video_text.scss +63 -0
  44. package/fixtures/config/settings_data.json +107 -0
  45. package/fixtures/config/settings_schema.json +690 -0
  46. package/fixtures/layout/theme.liquid +76 -0
  47. package/fixtures/locales/ar-SA.json +212 -0
  48. package/fixtures/locales/de-DE.json +290 -0
  49. package/fixtures/locales/en-US.json +290 -0
  50. package/fixtures/locales/es-ES.json +290 -0
  51. package/fixtures/locales/fr-FR.json +290 -0
  52. package/fixtures/locales/id-ID.json +212 -0
  53. package/fixtures/locales/it-IT.json +212 -0
  54. package/fixtures/locales/ja-JP.json +289 -0
  55. package/fixtures/locales/ko-KR.json +290 -0
  56. package/fixtures/locales/nl-NL.json +290 -0
  57. package/fixtures/locales/pl-PL.json +290 -0
  58. package/fixtures/locales/pt-PT.json +212 -0
  59. package/fixtures/locales/ru-RU.json +212 -0
  60. package/fixtures/locales/th-TH.json +212 -0
  61. package/fixtures/locales/zh-CN.json +290 -0
  62. package/fixtures/locales/zh-TW.json +290 -0
  63. package/fixtures/sections/apps.liquid +47 -0
  64. package/fixtures/sections/blog.liquid +137 -0
  65. package/fixtures/sections/collection_desc.liquid +34 -0
  66. package/fixtures/sections/collection_detail.liquid +436 -0
  67. package/fixtures/sections/collection_image.liquid +104 -0
  68. package/fixtures/sections/collection_list.liquid +161 -0
  69. package/fixtures/sections/collection_name.liquid +34 -0
  70. package/fixtures/sections/collection_slider.liquid +330 -0
  71. package/fixtures/sections/feature_columns.liquid +275 -0
  72. package/fixtures/sections/feature_product.liquid +227 -0
  73. package/fixtures/sections/footer.liquid +488 -0
  74. package/fixtures/sections/four_images.liquid +160 -0
  75. package/fixtures/sections/gallery.liquid +258 -0
  76. package/fixtures/sections/header.liquid +1157 -0
  77. package/fixtures/sections/html.liquid +40 -0
  78. package/fixtures/sections/image_text.liquid +350 -0
  79. package/fixtures/sections/instagram_plus.liquid +393 -0
  80. package/fixtures/sections/logo_bar.liquid +183 -0
  81. package/fixtures/sections/newsletter.liquid +225 -0
  82. package/fixtures/sections/not_found.liquid +39 -0
  83. package/fixtures/sections/overlay_image.liquid +648 -0
  84. package/fixtures/sections/page_detail.liquid +39 -0
  85. package/fixtures/sections/photo_collection.liquid +433 -0
  86. package/fixtures/sections/product_description.liquid +208 -0
  87. package/fixtures/sections/product_detail.liquid +611 -0
  88. package/fixtures/sections/products.liquid +216 -0
  89. package/fixtures/sections/relative_product.liquid +121 -0
  90. package/fixtures/sections/reviews.liquid +115 -0
  91. package/fixtures/sections/rich_text.liquid +157 -0
  92. package/fixtures/sections/search.liquid +163 -0
  93. package/fixtures/sections/slide.liquid +719 -0
  94. package/fixtures/sections/three_images.liquid +157 -0
  95. package/fixtures/sections/two_images.liquid +125 -0
  96. package/fixtures/sections/video.liquid +95 -0
  97. package/fixtures/sections/video_text.liquid +128 -0
  98. package/fixtures/snippets/bgset.liquid +21 -0
  99. package/fixtures/snippets/card_title.liquid +8 -0
  100. package/fixtures/snippets/cart_modal.liquid +74 -0
  101. package/fixtures/snippets/collection.liquid +77 -0
  102. package/fixtures/snippets/collection_filter_modal.liquid +56 -0
  103. package/fixtures/snippets/default_image_4.liquid +14 -0
  104. package/fixtures/snippets/default_image_6.liquid +18 -0
  105. package/fixtures/snippets/default_image_8.liquid +23 -0
  106. package/fixtures/snippets/four_images_item.liquid +8 -0
  107. package/fixtures/snippets/header_ads.liquid +95 -0
  108. package/fixtures/snippets/hero_image.liquid +94 -0
  109. package/fixtures/snippets/icon_video_play_large.liquid +1 -0
  110. package/fixtures/snippets/icon_video_play_medium.liquid +4 -0
  111. package/fixtures/snippets/icon_video_play_small.liquid +4 -0
  112. package/fixtures/snippets/lazyimg.liquid +22 -0
  113. package/fixtures/snippets/lazyimg_art.liquid +36 -0
  114. package/fixtures/snippets/lazysizes.liquid +41 -0
  115. package/fixtures/snippets/link.liquid +2 -0
  116. package/fixtures/snippets/pagination.liquid +48 -0
  117. package/fixtures/snippets/product.liquid +126 -0
  118. package/fixtures/snippets/product_art_tpl.liquid +152 -0
  119. package/fixtures/snippets/product_info_body.liquid +337 -0
  120. package/fixtures/snippets/product_info_tpl.liquid +423 -0
  121. package/fixtures/snippets/product_label.liquid +46 -0
  122. package/fixtures/snippets/settings.liquid +295 -0
  123. package/fixtures/snippets/social-meta-tags.liquid +106 -0
  124. package/fixtures/snippets/video_html.liquid +11 -0
  125. package/fixtures/snippets/video_source.liquid +98 -0
  126. package/fixtures/snippets/video_thumb_icon.liquid +2 -0
  127. package/fixtures/templates/404.liquid +1 -0
  128. package/fixtures/templates/collection.liquid +92 -0
  129. package/fixtures/templates/index.liquid +206 -0
  130. package/fixtures/templates/page.liquid +1 -0
  131. package/fixtures/templates/product.liquid +99 -0
  132. package/fixtures/templates/search.liquid +1 -0
  133. package/jest.config.js +192 -0
  134. package/lib/__tests__/log.test.js +15 -0
  135. package/lib/__tests__/utils.test.js +69 -0
  136. package/lib/auth/__mocks__/getCode.js +7 -0
  137. package/lib/auth/__mocks__/index.js +0 -0
  138. package/lib/auth/child.js +23 -0
  139. package/lib/auth/getCode.js +35 -0
  140. package/lib/auth/index.js +91 -0
  141. package/lib/commands/__tests__/login.test.js +77 -0
  142. package/lib/commands/__tests__/logout.test.js +29 -0
  143. package/lib/commands/__tests__/store.test.js +44 -0
  144. package/lib/commands/__tests__/switch.test.js +45 -0
  145. package/lib/commands/login.js +99 -0
  146. package/lib/commands/logout.js +14 -0
  147. package/lib/commands/store.js +14 -0
  148. package/lib/commands/switch.js +52 -0
  149. package/lib/commands/theme/__tests__/delete.test.js +49 -0
  150. package/lib/commands/theme/__tests__/init.test.js +21 -0
  151. package/lib/commands/theme/__tests__/list.test.js +80 -0
  152. package/lib/commands/theme/__tests__/package.test.js +17 -0
  153. package/lib/commands/theme/__tests__/publish.test.js +61 -0
  154. package/lib/commands/theme/__tests__/pull.test.js +69 -0
  155. package/lib/commands/theme/__tests__/push.test.js +63 -0
  156. package/lib/commands/theme/__tests__/serve.test.js +107 -0
  157. package/lib/commands/theme/delete.js +64 -0
  158. package/lib/commands/theme/init.js +51 -0
  159. package/lib/commands/theme/list.js +28 -0
  160. package/lib/commands/theme/package.js +37 -0
  161. package/lib/commands/theme/publish.js +56 -0
  162. package/lib/commands/theme/pull.js +62 -0
  163. package/lib/commands/theme/push.js +106 -0
  164. package/lib/commands/theme/serve.js +153 -0
  165. package/lib/commands/theme/share.js +20 -0
  166. package/lib/commands/version.js +6 -0
  167. package/lib/config.js +5 -0
  168. package/lib/db/__mocks__/index.js +9 -0
  169. package/lib/db/__tests__/analytics.test.js +19 -0
  170. package/lib/db/__tests__/user.test.js +20 -0
  171. package/lib/db/analytics.js +48 -0
  172. package/lib/db/index.js +9 -0
  173. package/lib/db/user.js +68 -0
  174. package/lib/log.js +13 -0
  175. package/lib/openAPI/__mocks__/index.js +20 -0
  176. package/lib/openAPI/api.js +76 -0
  177. package/lib/openAPI/index.js +46 -0
  178. package/lib/report.js +37 -0
  179. package/lib/tracing.js +50 -0
  180. package/lib/utils.js +48 -0
  181. package/package.json +54 -0
@@ -0,0 +1,337 @@
1
+ @import './tools.scss';
2
+
3
+ /* footer starts */
4
+ .has-link {
5
+ cursor: pointer;
6
+
7
+ &:hover {
8
+ color: unset !important;
9
+ text-decoration: none;
10
+ }
11
+ }
12
+
13
+ .copyright > a[href] {
14
+ color: inherit;
15
+ text-decoration: none;
16
+ }
17
+
18
+ .footer-column__title {
19
+ max-width: px-to-rem(250);
20
+ min-height: px-to-rem(22);
21
+ font-size: px-to-rem(18);
22
+ font-weight: 500;
23
+ margin-bottom: px-to-rem(15);
24
+
25
+ @media ($mobile) {
26
+ max-width: 100%;
27
+ margin-bottom: px-to-rem(12);
28
+ font-size: px-to-rem(34/2);
29
+ }
30
+ }
31
+
32
+ .footer-content {
33
+ padding: px-to-rem(30) 0;
34
+ justify-content: space-between;
35
+
36
+ &-1 {
37
+ justify-content: center;
38
+ }
39
+
40
+ &-2 {
41
+ justify-content: space-around;
42
+ }
43
+ }
44
+
45
+ .footer-menu {
46
+ &__link {
47
+ display: block;
48
+ color: inherit;
49
+ max-width: px-to-rem(250);
50
+ height: px-to-rem(18);
51
+ line-height: px-to-rem(18);
52
+ margin: px-to-rem(10) 0;
53
+ text-decoration: none;
54
+
55
+ &:hover {
56
+ text-decoration: underline;
57
+ }
58
+ }
59
+ }
60
+
61
+ .footer-info {
62
+ &__img {
63
+ max-width: px-to-rem(200);
64
+ max-height: px-to-rem(30);
65
+ margin-bottom: px-to-rem(15);
66
+ }
67
+
68
+ &__desc {
69
+ line-height: 1.4;
70
+ }
71
+ }
72
+
73
+ .footer-copyright {
74
+ padding: px-to-rem(15) 0;
75
+ border-top: 1px solid #e5e5e5;
76
+ text-align: center;
77
+
78
+ .copyright p{
79
+ margin: 0;
80
+ }
81
+
82
+ @media ($pc) {
83
+ &__inner {
84
+ padding-left: 0;
85
+ padding-right: 0;
86
+ }
87
+ }
88
+ }
89
+
90
+ .footer-newsletter {
91
+ width: 100%;
92
+
93
+ &__input {
94
+ margin-top: px-to-rem(15);
95
+ height: px-to-rem(42);
96
+ font-size: px-to-rem(14);
97
+ }
98
+
99
+ @media ($pc) {
100
+ &__input-wrap {
101
+ max-width: px-to-rem(340);
102
+ }
103
+ }
104
+
105
+ &__btn {
106
+ margin-top: px-to-rem(20);
107
+ min-width: px-to-rem(100);
108
+ height: px-to-rem(42);
109
+ font-size: px-to-rem(14);
110
+ }
111
+
112
+ @media ($mobile) {
113
+ &__input {
114
+ margin-top: px-to-rem(20/2);
115
+ height: px-to-rem(64/2);
116
+ width: 100%;
117
+ }
118
+
119
+ &__btn {
120
+ margin-top: px-to-rem(30/2);
121
+ line-height: 1.2;
122
+ }
123
+ }
124
+
125
+ .form-control.is-valid {
126
+ border-color: #000;
127
+ }
128
+ }
129
+
130
+ .footer-social {
131
+ &__link {
132
+ text-decoration: none;
133
+
134
+ &:hover {
135
+ text-decoration: none;
136
+ }
137
+
138
+ &::after {
139
+ content: '/';
140
+ margin: 0 px-to-rem(2) 0 px-to-rem(6);
141
+ }
142
+
143
+ &:last-child {
144
+ &::after {
145
+ display: none;
146
+ }
147
+ }
148
+ }
149
+
150
+ &__icon {
151
+ font-size: px-to-rem(22);
152
+ }
153
+ }
154
+
155
+ .footer {
156
+ font-size: px-to-rem(14);
157
+
158
+ &__item {
159
+ padding: 0 px-to-rem(15) 0 px-to-rem(15);
160
+ display: flex;
161
+ width: 100%;
162
+ flex: 1 1 100%;
163
+
164
+ &_full-width {
165
+ flex: 1 1 100%;
166
+ justify-content: center;
167
+
168
+ .footer-column__title {
169
+ margin-left: auto;
170
+ margin-right: auto;
171
+ }
172
+
173
+ .footer-newsletter {
174
+ max-width: 50%;
175
+
176
+ &__input-wrap {
177
+ margin-left: auto;
178
+ margin-right: auto;
179
+ }
180
+ }
181
+
182
+ .footer-menu {
183
+ &__link-wrap {
184
+ display: flex;
185
+ flex-wrap: wrap;
186
+ }
187
+
188
+ &__link {
189
+ padding: 0 px-to-rem(20);
190
+ margin: 0;
191
+ border-right: 1px solid #999;
192
+
193
+ &:last-child {
194
+ border-right: unset;
195
+ }
196
+ }
197
+ }
198
+
199
+ .footer-info {
200
+ max-width: unset;
201
+ text-align: center;
202
+ }
203
+ }
204
+
205
+ &__one-half {
206
+ flex: 1 1 50%;
207
+ }
208
+
209
+ &__one-third {
210
+ flex: 1 1 33%;
211
+ }
212
+
213
+ &__one-quarter {
214
+ flex: 1 1 25%;
215
+ }
216
+ }
217
+
218
+ &__payment {
219
+ ul {
220
+ padding: 0;
221
+ margin: 0;
222
+
223
+ li {
224
+ list-style: none;
225
+ display: inline-block;
226
+ height: px-to-rem(24);
227
+ margin-bottom: px-to-rem(8);
228
+ margin-left: px-to-rem(10);
229
+
230
+ &:last-of-type {
231
+ margin-right: 0;
232
+ }
233
+
234
+ &:first-of-type {
235
+ margin-left: 0;
236
+ }
237
+
238
+ img {
239
+ height: 100%;
240
+ vertical-align: top;
241
+ }
242
+ }
243
+ }
244
+ }
245
+ }
246
+
247
+ @media ($mobile) {
248
+ .footer-content {
249
+ padding: px-to-rem(15) px-to-rem(25);
250
+ flex-direction: column;
251
+ justify-content: center;
252
+ }
253
+
254
+ .footer-menu {
255
+ max-width: 100%;
256
+
257
+ &__link {
258
+ max-width: 100%;
259
+ margin: px-to-rem(8) 0;
260
+ }
261
+ }
262
+
263
+ .footer-info {
264
+ max-width: 100%;
265
+
266
+ &__img {
267
+ max-width: px-to-rem(145);
268
+ max-height: px-to-rem(50);
269
+ margin-bottom: px-to-rem(12);
270
+ }
271
+ }
272
+
273
+ .footer-social {
274
+ &__link {
275
+ text-decoration: none;
276
+
277
+ &:hover {
278
+ text-decoration: none;
279
+ }
280
+
281
+ &::after {
282
+ content: '/';
283
+ display: inline-block;
284
+ height: px-to-rem(14);
285
+ overflow-y: hidden;
286
+ margin-left: px-to-rem(4);
287
+ }
288
+ }
289
+
290
+ &__icon {
291
+ font-size: px-to-rem(18);
292
+ }
293
+ }
294
+
295
+ .footer-copyright {
296
+ font-size: px-to-rem(24/2);
297
+ }
298
+
299
+ .footer {
300
+ font-size: px-to-rem(28/2);
301
+
302
+ &__item {
303
+ padding: 0;
304
+ margin-bottom: px-to-rem(60/2);
305
+ text-align: center;
306
+ justify-content: center;
307
+
308
+ &:last-child {
309
+ margin-bottom: 0;
310
+ }
311
+
312
+ &_full-width {
313
+ .footer-newsletter {
314
+ max-width: 100%;
315
+ }
316
+
317
+ .footer-menu {
318
+ &__link-wrap {
319
+ display: unset;
320
+ }
321
+
322
+ &__link {
323
+ padding: unset;
324
+ border-right: none;
325
+ margin: px-to-rem(17/2) 0;
326
+
327
+ &:last-child {
328
+ margin-bottom: 0;
329
+ }
330
+ }
331
+ }
332
+ }
333
+ }
334
+ }
335
+ }
336
+
337
+ /* footer ends */
@@ -0,0 +1,29 @@
1
+ @import './tools.scss';
2
+
3
+ .four_images{
4
+ &-container{
5
+ display:grid;
6
+ grid-template-columns: repeat(3, minmax(0, 1fr));
7
+ gap: 24px;
8
+ width: 100%;
9
+ }
10
+ &__item-3{
11
+ grid-row: span 2 / span 2;
12
+ }
13
+ &__item-4{
14
+ grid-column: span 2 / span 2;
15
+ }
16
+ }
17
+
18
+ @media ($mobile) {
19
+ .four_images{
20
+ &-container{
21
+ grid-template-columns: repeat(2, minmax(0, 1fr));
22
+ gap: 16px;
23
+ padding: 0 px-to-rem($mb_row_padding);
24
+ }
25
+ &__item-2{
26
+ grid-row-start: 2;
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,55 @@
1
+ @import './tools.scss';
2
+
3
+ @media ($pc) {
4
+ .grid__item {
5
+ &.dashed-border {
6
+ border: 1px solid #ebebeb;
7
+ }
8
+
9
+ &-bg {
10
+ background-size: cover;
11
+ transition: all 0.5s;
12
+
13
+ &:hover {
14
+ transform: scale(1.1);
15
+ }
16
+ }
17
+
18
+ &-text {
19
+ font-size: 2rem;
20
+ padding: 0 55px;
21
+ max-width: 750px;
22
+ }
23
+ }
24
+
25
+ .overflow-hidden {
26
+ overflow: hidden;
27
+ }
28
+ }
29
+
30
+ @media ($mobile) {
31
+ .grid__item {
32
+ &.dashed-border {
33
+ border: 1px solid #ebebeb;
34
+ }
35
+
36
+ &-bg {
37
+ background-size: cover;
38
+ transition: all 0.5s;
39
+
40
+ &:hover {
41
+ transform: scale(1.1);
42
+ }
43
+ }
44
+
45
+ &-text {
46
+ font-size: 2rem;
47
+ padding: 0 px-to-rem(22 / 2);
48
+ max-width: px-to-rem(690 / 2);
49
+ }
50
+ }
51
+
52
+ .overflow-hidden {
53
+ overflow: hidden;
54
+ }
55
+ }
@@ -0,0 +1,178 @@
1
+ /* global $,template */
2
+
3
+ (function ($) {
4
+ $.header = function (params) {
5
+ var sectionId = params.id;
6
+ var $section = $('[data-section-id="' + sectionId + '"]');
7
+ var $header = $section.find('.header__wrapper');
8
+ var $menu = $section.find('#navigation-pc-menu ul');
9
+ // 菜单点击 -- start
10
+ var $body = $('body');
11
+ // 菜单汉堡
12
+ $body.off('click', '.header__icon_menu').on('click', '.header__icon_menu', function (e) {
13
+ e.preventDefault();
14
+ $('.navigation-m .navigation-m__menu').html($menu.html())
15
+ $('.page_container, .navigation-m').toggleClass('navigation-m_on');
16
+ $('.navigation-m').css('paddingBottom', ($('.navigation-m__setting').height() || 0) + 25 + 'px');
17
+ $section.find('.header__icon_menu i').toggleClass('sep-font-list').toggleClass('sep-font-close');
18
+ $body.toggleClass('no-scroll');
19
+ // iso safari 兼容(fixed点击移动端菜单,关闭按钮无法出现)
20
+ setTimeout(function () {
21
+ $(window).trigger('scroll')
22
+ }, 500);
23
+ });
24
+ $(document).off('click.closeMenu').on('click.closeMenu', function(e){
25
+ if($('.page_container, .navigation-m').is('.navigation-m_on') && !$(e.target).is('.navigation-m, .navigation-m *, .header__icon_menu, .header__icon_menu *')){
26
+ e.stopPropagation();
27
+ e.preventDefault();
28
+ $('.page_container, .navigation-m').toggleClass('navigation-m_on');
29
+ $section.find('.header__icon_menu i').toggleClass('sep-font-list').toggleClass('sep-font-close');
30
+ $body.toggleClass('no-scroll');
31
+ }
32
+ })
33
+ //一级菜单展开
34
+ $body.off('click', '.navigation-m .nav_first-menu-icon').on('click', '.navigation-m .nav_first-menu-icon', function (e) {
35
+ $(this).parent().toggleClass('nav_first-menu-icon-close');
36
+ $(this).toggleClass('sep-font-plus').toggleClass('sep-font-minus');
37
+ });
38
+ //二级菜单展开
39
+ $body.off('click', '.navigation-m .nav_second-menu-icon').on('click', '.navigation-m .nav_second-menu-icon', function (e) {
40
+ $(this).parent().toggleClass('nav_second-menu-icon-close');
41
+ $(this).toggleClass('sep-font-plus').toggleClass('sep-font-minus');
42
+ });
43
+ // B端切换双端处理(关闭菜单)
44
+ if (window.SHOP_PARAMS.shop_env == '1') {
45
+ $(window).resize($.throttle(function () {
46
+ $('.page_container, .navigation-m').removeClass('navigation-m_on');
47
+ $body.removeClass('no-scroll');
48
+ $section.find('.header__icon_menu i').addClass('sep-font-list').removeClass('sep-font-close');
49
+ }, 16, 16))
50
+ }
51
+ // 菜单点击 -- end
52
+
53
+ // 三级菜单通屏 -- start
54
+ var timeout;
55
+ $('[data-section-id="header"]').find('.navigation-pc__menu-block_has-child').hover(function() {
56
+ timeout && clearTimeout(timeout);
57
+ $('.menus_container_inner').empty().parent().hide();
58
+ $(this).addClass('navigation-pc__menu-item_hover').siblings().removeClass('navigation-pc__menu-item_hover');
59
+ // 不能直接将append进去会丢失原有dom
60
+ var menuDate = $(this).find('.navigation-hidden-data')
61
+ $('.menus_container_inner').append(menuDate.children().clone()).parent().show();
62
+ $('.menus_container_inner').length && $('.menus_container_inner').css({'max-height': 'calc(100vh - ' + ($('.menus_container_inner').offset().top - $(document).scrollTop()) + 'px)'});
63
+ }, function() {
64
+ timeout = setTimeout(function() {
65
+ $('.menus_container_inner').empty().parent().hide();
66
+ $('.navigation-pc__menu-block_has-child').removeClass('navigation-pc__menu-item_hover');
67
+ },500)
68
+ });
69
+ $('[data-section-id="header"]').find('.menus_container').hover(function() {
70
+ //enter
71
+ clearTimeout(timeout);
72
+ $(document.body).off('mouseleave', '.navigation-pc__menu-block_has-child');
73
+ }, function() {
74
+ //out
75
+ $('.menus_container_inner').empty().parent().hide();
76
+ $('.navigation-pc__menu-block_has-child').removeClass('navigation-pc__menu-item_hover');
77
+ });
78
+ // 三级菜单通屏 -- end
79
+
80
+ // 购物车数量 -- start
81
+ (function () {
82
+ // 暴露更新导航购物车数量事件
83
+ $(document).on('dj.common.cart.change update_header_cart', function () {
84
+ $.get('/api/cart/count', function (res) {
85
+ if (res && res.state == "success") {
86
+ // 设置购物车数量
87
+ var count = res.data.count;
88
+ if (count > 99) {
89
+ $('.header__cart-count')
90
+ .html('<span class="header__cart-count_over">99</span>')
91
+ .show();
92
+ } else {
93
+ $('.header__cart-count')
94
+ .html(count)
95
+ .show();
96
+ count == 0 ? $('.header__cart-count').hide() : '';
97
+ }
98
+ }
99
+ });
100
+ });
101
+ // 触发更新购物车数量
102
+ $(document).trigger('update_header_cart');
103
+ })();
104
+ // 购物车数量 -- end
105
+
106
+ // 个人中心 -- start
107
+ $body.off('click', '.header__logout').on('click', '.header__logout', function (e) {
108
+ $.ajax({
109
+ type: 'POST',
110
+ dataType: 'json',
111
+ url: '/api/customers/sign_out',
112
+ data: {},
113
+ success: function (data) {
114
+ // 退出登陆埋点
115
+ $(document.body).trigger('dj.logout');
116
+ window.location.reload();
117
+ },
118
+ error: function () {
119
+ window.location.reload();
120
+ }
121
+ });
122
+ });
123
+ // 登陆判断
124
+ // 个人中心 -- end
125
+
126
+ // 悬浮 -- start
127
+ (function () {
128
+ var $headerAnnounce = $header.find('.fast-bar');
129
+ // 设置占位符的高度
130
+ var setHeaderPlaceholderHeight = function () {
131
+ return $('[data-section-id="header"]').css('min-height', $header.outerHeight() + 'px')
132
+ }
133
+ params.is_header_fixed && $(window).resize($.throttle(function () {
134
+ setHeaderPlaceholderHeight()
135
+ }, 16, 16));
136
+ $(window).trigger('resize');
137
+ function scrollFix() {
138
+ var headerAnnounceHeight = $headerAnnounce.outerHeight();
139
+ // 判断滚动距离,设置fix定位,填充虚拟dom
140
+ if ($(window).scrollTop() > headerAnnounceHeight) {
141
+ // 顶部缩小
142
+ $headerAnnounce.hide();
143
+ // 悬浮fixed
144
+ $header.addClass('header__fixed');
145
+
146
+ } else { // 正常static
147
+ $headerAnnounce.show();
148
+ setHeaderPlaceholderHeight()
149
+ $header.removeClass('header__fixed');
150
+ }
151
+ }
152
+ if (params.is_header_fixed) { // 悬浮fix状态处理
153
+ $(window).on('scroll', window.header_fix = $.throttle(scrollFix, 16, 16));
154
+ window.header_fix();
155
+ } else { // 正常流状态处理
156
+ window.header_fix = null;
157
+ $header.removeClass('fixed-top').css({ boxShadow: 'none', });
158
+ }
159
+ })();
160
+ // 悬浮 -- end
161
+
162
+ // 导航后面增加静态插件的div -- start
163
+ (function () {
164
+ // 插件不悬浮(插件放到导航外部)
165
+ $('#shoplaza-section-header').after('<div class="plugin__static-div"></div>');
166
+ // 插件悬浮
167
+ if (params.is_header_fixed) {
168
+ // 导航悬浮(插件放到导航内部)
169
+ $('#shoplaza-section-header').find('.header__wrapper').append('<div class="plugin__fixed-div"></div>');
170
+ } else {
171
+ // 导航不悬浮(插件放到导航外部)
172
+ $('#shoplaza-section-header').after('<div style="position: sticky; top:0; z-index:90; width: 100%;" class="plugin__fixed-div"></div>');
173
+ }
174
+ })();
175
+ // 导航后面增加静态插件的div -- end
176
+ };
177
+
178
+ })(window.jQuery);