ts-glitter 21.0.3 → 21.0.5

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/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/backend-manager/bg-blog.js +22 -37
  4. package/lowcode/backend-manager/bg-blog.ts +45 -34
  5. package/lowcode/backend-manager/bg-list-component.js +2 -2
  6. package/lowcode/backend-manager/bg-list-component.ts +2 -2
  7. package/lowcode/backend-manager/bg-widget.js +21 -0
  8. package/lowcode/backend-manager/bg-widget.ts +21 -0
  9. package/lowcode/cms-plugin/filter-options.js +3 -3
  10. package/lowcode/cms-plugin/filter-options.ts +1 -1
  11. package/lowcode/cms-plugin/shopping-finance-setting.js +251 -6
  12. package/lowcode/cms-plugin/shopping-finance-setting.ts +291 -6
  13. package/lowcode/cms-plugin/shopping-order-manager.js +56 -46
  14. package/lowcode/cms-plugin/shopping-order-manager.ts +59 -47
  15. package/lowcode/cms-plugin/shopping-product-setting.js +10 -5
  16. package/lowcode/cms-plugin/shopping-product-setting.ts +14 -6
  17. package/lowcode/cms-plugin/shopping-setting-advance.js +21 -72
  18. package/lowcode/cms-plugin/shopping-setting-advance.ts +31 -98
  19. package/lowcode/css/editor.css +48 -16
  20. package/lowcode/css/front-end.css +16 -17
  21. package/lowcode/glitter-base/global/language.js +2 -0
  22. package/lowcode/glitter-base/global/language.ts +3 -0
  23. package/lowcode/glitter-base/global/shipment-config.js +4 -4
  24. package/lowcode/glitter-base/global/shipment-config.ts +1 -1
  25. package/lowcode/glitter-base/route/shopping.js +11 -0
  26. package/lowcode/glitter-base/route/shopping.ts +12 -0
  27. package/lowcode/official_view_component/form-widget/input-custom.js +0 -1
  28. package/lowcode/official_view_component/form-widget/input-custom.ts +0 -1
  29. package/lowcode/public-components/checkout/index.js +578 -780
  30. package/lowcode/public-components/checkout/index.ts +2457 -2652
  31. package/lowcode/public-components/headers/header-class.js +252 -324
  32. package/lowcode/public-components/headers/header-class.ts +389 -480
  33. package/lowcode/public-components/modules/cart-module.js +433 -0
  34. package/lowcode/public-components/modules/cart-module.ts +491 -0
  35. package/lowcode/public-components/modules/product-module.js +45 -0
  36. package/lowcode/public-components/modules/product-module.ts +58 -0
  37. package/lowcode/public-components/product/product-detail.js +178 -184
  38. package/lowcode/public-components/product/product-detail.ts +564 -579
  39. package/lowcode/public-components/user-manager/um-order.js +162 -32
  40. package/lowcode/public-components/user-manager/um-order.ts +181 -46
  41. package/lowcode/public-models/product.ts +1 -0
  42. package/lowcode/view-model/saas-view-model.js +1 -1
  43. package/lowcode/view-model/saas-view-model.ts +1 -1
  44. package/package.json +1 -1
  45. package/src/Language.js +1 -0
  46. package/src/Language.js.map +1 -1
  47. package/src/Language.ts +3 -0
  48. package/src/api-public/controllers/article.js +33 -29
  49. package/src/api-public/controllers/article.js.map +1 -1
  50. package/src/api-public/controllers/article.ts +152 -146
  51. package/src/api-public/controllers/index.js +2 -0
  52. package/src/api-public/controllers/index.js.map +1 -1
  53. package/src/api-public/controllers/index.ts +2 -0
  54. package/src/api-public/controllers/shop.js +125 -47
  55. package/src/api-public/controllers/shop.js.map +1 -1
  56. package/src/api-public/controllers/shop.ts +148 -61
  57. package/src/api-public/controllers/user.js +51 -52
  58. package/src/api-public/controllers/user.js.map +1 -1
  59. package/src/api-public/controllers/user.ts +63 -52
  60. package/src/api-public/models/glitter-finance.js +2 -1
  61. package/src/api-public/models/glitter-finance.js.map +5 -1
  62. package/src/api-public/services/checkout-event.d.ts +1 -0
  63. package/src/api-public/services/checkout-event.js +18 -10
  64. package/src/api-public/services/checkout-event.js.map +1 -1
  65. package/src/api-public/services/checkout-event.ts +18 -7
  66. package/src/api-public/services/factories/payment-strategy-factory.d.ts +6 -0
  67. package/src/api-public/services/factories/payment-strategy-factory.js +49 -0
  68. package/src/api-public/services/factories/payment-strategy-factory.js.map +1 -0
  69. package/src/api-public/services/factories/payment-strategy-factory.ts +71 -0
  70. package/src/api-public/services/fb-service.js +4 -4
  71. package/src/api-public/services/fb-service.js.map +1 -1
  72. package/src/api-public/services/financial-service.d.ts +2 -1
  73. package/src/api-public/services/financial-service.js +48 -53
  74. package/src/api-public/services/financial-service.js.map +1 -1
  75. package/src/api-public/services/financial-service.ts +29 -38
  76. package/src/api-public/services/financial-serviceV2.d.ts +298 -0
  77. package/src/api-public/services/financial-serviceV2.js +1158 -0
  78. package/src/api-public/services/financial-serviceV2.js.map +1 -0
  79. package/src/api-public/services/financial-serviceV2.ts +1518 -0
  80. package/src/api-public/services/interface/payment-keys-interface.d.ts +37 -0
  81. package/src/api-public/services/interface/payment-keys-interface.js +3 -0
  82. package/src/api-public/services/interface/payment-keys-interface.js.map +1 -0
  83. package/src/api-public/services/interface/payment-keys-interface.ts +46 -0
  84. package/src/api-public/services/interface/payment-strategy-interface.d.ts +17 -0
  85. package/src/api-public/services/interface/payment-strategy-interface.js +3 -0
  86. package/src/api-public/services/interface/payment-strategy-interface.js.map +1 -0
  87. package/src/api-public/services/interface/payment-strategy-interface.ts +48 -0
  88. package/src/api-public/services/migrate-event/public-user-config.d.ts +5 -0
  89. package/src/api-public/services/migrate-event/public-user-config.js +81 -0
  90. package/src/api-public/services/migrate-event/public-user-config.js.map +1 -0
  91. package/src/api-public/services/migrate-event/public-user-config.ts +106 -0
  92. package/src/api-public/services/model/handlePaymentTransaction.js +0 -68
  93. package/src/api-public/services/model/handlePaymentTransaction.js.map +1 -1
  94. package/src/api-public/services/model/handlePaymentTransaction.ts +62 -54
  95. package/src/api-public/services/monitor.d.ts +1 -0
  96. package/src/api-public/services/payment-service.d.ts +12 -0
  97. package/src/api-public/services/payment-service.js +83 -0
  98. package/src/api-public/services/payment-service.js.map +1 -0
  99. package/src/api-public/services/payment-service.ts +112 -0
  100. package/src/api-public/services/shopping.d.ts +2 -1
  101. package/src/api-public/services/shopping.js +60 -23
  102. package/src/api-public/services/shopping.js.map +1 -1
  103. package/src/api-public/services/shopping.ts +88 -16
  104. package/src/api-public/services/strategies/ecpay-strategy.d.ts +8 -0
  105. package/src/api-public/services/strategies/ecpay-strategy.js +26 -0
  106. package/src/api-public/services/strategies/ecpay-strategy.js.map +1 -0
  107. package/src/api-public/services/strategies/ecpay-strategy.ts +30 -0
  108. package/src/api-public/services/strategies/ezpay-strategy.d.ts +8 -0
  109. package/src/api-public/services/strategies/ezpay-strategy.js +26 -0
  110. package/src/api-public/services/strategies/ezpay-strategy.js.map +1 -0
  111. package/src/api-public/services/strategies/ezpay-strategy.ts +31 -0
  112. package/src/api-public/services/strategies/jkopay-strategy.d.ts +8 -0
  113. package/src/api-public/services/strategies/jkopay-strategy.js +32 -0
  114. package/src/api-public/services/strategies/jkopay-strategy.js.map +1 -0
  115. package/src/api-public/services/strategies/jkopay-strategy.ts +36 -0
  116. package/src/api-public/services/strategies/linepay-strategy.d.ts +8 -0
  117. package/src/api-public/services/strategies/linepay-strategy.js +32 -0
  118. package/src/api-public/services/strategies/linepay-strategy.js.map +1 -0
  119. package/src/api-public/services/strategies/linepay-strategy.ts +35 -0
  120. package/src/api-public/services/strategies/paynow-strategy.d.ts +8 -0
  121. package/src/api-public/services/strategies/paynow-strategy.js +26 -0
  122. package/src/api-public/services/strategies/paynow-strategy.js.map +1 -0
  123. package/src/api-public/services/strategies/paynow-strategy.ts +29 -0
  124. package/src/api-public/services/strategies/paypal-strategy.d.ts +8 -0
  125. package/src/api-public/services/strategies/paypal-strategy.js +28 -0
  126. package/src/api-public/services/strategies/paypal-strategy.js.map +1 -0
  127. package/src/api-public/services/strategies/paypal-strategy.ts +31 -0
  128. package/src/api-public/services/updated-table-checked.d.ts +1 -0
  129. package/src/api-public/services/updated-table-checked.js +37 -15
  130. package/src/api-public/services/updated-table-checked.js.map +1 -1
  131. package/src/api-public/services/updated-table-checked.ts +56 -36
  132. package/src/api-public/utils/ut-permission.d.ts +1 -0
  133. package/src/app-project/serverless/src/index.js +17 -7
  134. package/src/app-project/serverless/src/index.js.map +1 -1
  135. package/src/app-project/serverless/src/modules/CryptoJS.js +17 -7
  136. package/src/app-project/serverless/src/modules/CryptoJS.js.map +1 -1
  137. package/src/app-project/serverless/src/modules/ssh.js +17 -7
  138. package/src/app-project/serverless/src/modules/ssh.js.map +1 -1
  139. package/src/config.d.ts +1 -1
  140. package/src/modules/AWSLib.js +3 -2
  141. package/src/modules/AWSLib.js.map +1 -1
  142. package/src/modules/CryptoJS.js +17 -7
  143. package/src/modules/CryptoJS.js.map +1 -1
  144. package/src/modules/database.d.ts +1 -1
  145. package/src/modules/redis.d.ts +1 -1
  146. package/src/modules/ssh.js +17 -7
  147. package/src/modules/ssh.js.map +1 -1
  148. package/src/modules/tool.d.ts +4 -4
  149. package/src/modules/tool.js +2 -1
  150. package/src/modules/tool.js.map +1 -1
  151. package/src/run.js +2 -1
  152. package/src/run.js.map +1 -1
  153. package/src/services/create-instance.js +4 -3
  154. package/src/services/create-instance.js.map +1 -1
  155. package/src/services/saas-table-check.js +2 -2
  156. package/src/services/saas-table-check.js.map +5 -1
  157. package/src/services/tool.js +3 -2
  158. package/src/services/tool.js.map +1 -1
  159. package/vp00rqhw1r.json +1 -0
  160. package/src/api-public/services/product-migrate.d.ts +0 -8
  161. package/src/api-public/services/product-migrate.js.map +0 -1
@@ -12,6 +12,7 @@ import { ApiCart } from '../../glitter-base/route/api-cart.js';
12
12
  import { Language } from '../../glitter-base/global/language.js';
13
13
  import { Currency } from '../../glitter-base/global/currency.js';
14
14
  import { PdClass } from '../product/pd-class.js';
15
+ import { CartModule } from '../modules/cart-module.js';
15
16
  const html = String.raw;
16
17
  export class HeaderClass {
17
18
  static hideShopperBtn() {
@@ -35,25 +36,19 @@ export class HeaderClass {
35
36
  visible: ((_l = obj === null || obj === void 0 ? void 0 : obj.text) === null || _l === void 0 ? void 0 : _l.visible) === false ? false : true,
36
37
  fontSize: (_o = (_m = obj === null || obj === void 0 ? void 0 : obj.text) === null || _m === void 0 ? void 0 : _m.fontSize) !== null && _o !== void 0 ? _o : 16,
37
38
  };
38
- return html `
39
- <div class="d-flex align-items-center justify-content-center flex-column w-100 mx-auto ${container.class}"
40
- style="${container.style}">
41
- <div
42
- class="spinner-border ${circleAttr.visible ? '' : 'd-none'}"
43
- style="font-size: ${circleAttr.borderSize}px; width: ${circleAttr.width}px; height: ${circleAttr.width}px;"
44
- role="status"
45
- ></div>
46
- <span class="mt-3 ${textAttr.visible ? '' : 'd-none'}"
47
- style="font-size: ${textAttr.fontSize}px;">${textAttr.value}</span>
48
- </div>`;
49
- }
50
- static isImageUrlValid(url) {
51
- return new Promise((resolve) => {
52
- const img = new Image();
53
- img.onload = () => resolve(true);
54
- img.onerror = () => resolve(false);
55
- img.src = url;
56
- });
39
+ return html ` <div
40
+ class="d-flex align-items-center justify-content-center flex-column w-100 mx-auto ${container.class}"
41
+ style="${container.style}"
42
+ >
43
+ <div
44
+ class="spinner-border ${circleAttr.visible ? '' : 'd-none'}"
45
+ style="font-size: ${circleAttr.borderSize}px; width: ${circleAttr.width}px; height: ${circleAttr.width}px;"
46
+ role="status"
47
+ ></div>
48
+ <span class="mt-3 ${textAttr.visible ? '' : 'd-none'}" style="font-size: ${textAttr.fontSize}px;"
49
+ >${textAttr.value}</span
50
+ >
51
+ </div>`;
57
52
  }
58
53
  static rightCartMenu(gvc, widget) {
59
54
  gvc.glitter.setDrawer(gvc.bindView((() => {
@@ -61,97 +56,98 @@ export class HeaderClass {
61
56
  const vm = {
62
57
  id: gvc.glitter.getUUID(),
63
58
  imageId: gvc.glitter.getUUID(),
64
- shippings: [],
65
59
  dataList: [],
60
+ shippings: [],
66
61
  loading: true,
67
62
  };
68
63
  const classPrefix = `header-checkout`;
69
64
  gvc.addStyle(`
70
- .${classPrefix}-wh {
71
- display: flex;
72
- min-width: 70px;
73
- min-height: 70px;
74
- max-width: 70px;
75
- max-height: 70px;
76
- width: 100%;
77
- height: 100%;
78
- object-fit: cover;
79
- object-position: center;
80
- }
65
+ .${classPrefix}-wh {
66
+ display: flex;
67
+ min-width: 70px;
68
+ min-height: 70px;
69
+ max-width: 70px;
70
+ max-height: 70px;
71
+ width: 100%;
72
+ height: 100%;
73
+ object-fit: cover;
74
+ object-position: center;
75
+ }
81
76
 
82
- .${classPrefix}-select {
83
- display: flex;
84
- padding: 7px 30px 7px 18px;
85
- max-height: 40px;
86
- align-items: center;
87
- gap: 6px;
88
- border-radius: 10px;
89
- border: 1px solid #ddd;
90
- background: transparent url('https://d3jnmi1tfjgtti.cloudfront.net/file/234285319/1718100926212-Vector 89.png') no-repeat;
91
- background-position-x: calc(100% - 12px);
92
- background-position-y: 16px;
93
- appearance: none;
94
- -webkit-appearance: none;
95
- -moz-appearance: none;
96
- color: #393939;
97
- }
77
+ .${classPrefix}-select {
78
+ display: flex;
79
+ padding: 7px 30px 7px 18px;
80
+ max-height: 40px;
81
+ align-items: center;
82
+ gap: 6px;
83
+ border-radius: 10px;
84
+ border: 1px solid #ddd;
85
+ background: transparent
86
+ url('https://d3jnmi1tfjgtti.cloudfront.net/file/234285319/1718100926212-Vector 89.png') no-repeat;
87
+ background-position-x: calc(100% - 12px);
88
+ background-position-y: 16px;
89
+ appearance: none;
90
+ -webkit-appearance: none;
91
+ -moz-appearance: none;
92
+ color: #393939;
93
+ }
98
94
 
99
- .${classPrefix}-select:focus {
100
- outline: 0;
101
- }
95
+ .${classPrefix}-select:focus {
96
+ outline: 0;
97
+ }
102
98
 
103
- .${classPrefix}-cart-container {
104
- display: flex;
105
- width: 100%;
106
- align-items: center;
107
- padding: 0;
108
- margin-bottom: 18px;
109
- padding: 12px;
110
- border-bottom: 1px solid #dddddd;
111
- }
99
+ .${classPrefix}-cart-container {
100
+ display: flex;
101
+ width: 100%;
102
+ align-items: center;
103
+ padding: 0;
104
+ margin-bottom: 18px;
105
+ padding: 12px;
106
+ border-bottom: 1px solid #dddddd;
107
+ }
112
108
 
113
- .${classPrefix}-cart-title {
114
- letter-spacing: 4px;
115
- font-size: 22px;
116
- font-weight: 700;
117
- }
109
+ .${classPrefix}-cart-title {
110
+ letter-spacing: 4px;
111
+ font-size: 22px;
112
+ font-weight: 700;
113
+ }
118
114
 
119
- .${classPrefix}-shipping-title {
120
- font-size: 18px;
121
- font-weight: 600;
122
- }
115
+ .${classPrefix}-shipping-title {
116
+ font-size: 18px;
117
+ font-weight: 600;
118
+ }
123
119
 
124
- .${classPrefix}-title {
125
- font-size: 16px;
126
- }
120
+ .${classPrefix}-title {
121
+ font-size: 16px;
122
+ }
127
123
 
128
- .${classPrefix}-spec {
129
- font-size: 14px;
130
- color: #8d8d8d;
131
- }
124
+ .${classPrefix}-spec {
125
+ font-size: 14px;
126
+ color: #8d8d8d;
127
+ }
132
128
 
133
- .${classPrefix}-card {
134
- border-radius: 10px;
135
- padding: 20px 8px;
136
- background: #fff;
137
- box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.12);
138
- margin: 0 12px;
139
- }
129
+ .${classPrefix}-card {
130
+ border-radius: 10px;
131
+ padding: 20px 8px;
132
+ background: #fff;
133
+ box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.12);
134
+ margin: 0 12px;
135
+ }
140
136
 
141
- .${classPrefix}-button {
142
- display: flex;
143
- padding: 6px 14px;
144
- max-height: 30px;
145
- justify-content: center;
146
- align-items: center;
147
- gap: 8px;
148
- border: 1px solid ${(_a = widget.formData.theme_color['solid-button-text']) !== null && _a !== void 0 ? _a : '#fff'};
149
- border-radius: 10px;
150
- background: ${(_b = widget.formData.theme_color['solid-button-bg']) !== null && _b !== void 0 ? _b : '#000'};
151
- cursor: pointer;
152
- color: ${(_c = widget.formData.theme_color['solid-button-text']) !== null && _c !== void 0 ? _c : '#fff'};
153
- }
154
- `);
137
+ .${classPrefix}-button {
138
+ display: flex;
139
+ padding: 6px 14px;
140
+ max-height: 30px;
141
+ justify-content: center;
142
+ align-items: center;
143
+ gap: 8px;
144
+ border: 1px solid ${(_a = widget.formData.theme_color['solid-button-text']) !== null && _a !== void 0 ? _a : '#fff'};
145
+ border-radius: 10px;
146
+ background: ${(_b = widget.formData.theme_color['solid-button-bg']) !== null && _b !== void 0 ? _b : '#000'};
147
+ cursor: pointer;
148
+ color: ${(_c = widget.formData.theme_color['solid-button-text']) !== null && _c !== void 0 ? _c : '#fff'};
149
+ }
150
+ `);
155
151
  function refreshView() {
156
152
  setTimeout(() => {
157
153
  vm.loading = true;
@@ -161,214 +157,170 @@ export class HeaderClass {
161
157
  }, 200);
162
158
  }
163
159
  function goToCheckoutButton(id) {
164
- return html `
165
- <button
166
- class="${classPrefix}-button"
167
- type="button"
168
- onclick="${gvc.event(() => {
160
+ return html ` <button
161
+ class="${classPrefix}-button"
162
+ type="button"
163
+ onclick="${gvc.event(() => {
169
164
  window.drawer.close();
170
165
  ApiCart.toCheckOutPage(id);
171
166
  })}"
172
- >
173
- ${Language.text('proceed_to_checkout')}
174
- </button>`;
167
+ >
168
+ ${Language.text('proceed_to_checkout')}
169
+ </button>`;
175
170
  }
176
171
  return {
177
172
  bind: vm.id,
178
173
  view: () => {
179
174
  try {
180
175
  if (vm.loading) {
181
- return html `
182
- <div class="w-100 vh-100 bg-white">${this.spinner()}</div>`;
176
+ return html ` <div class="w-100 vh-100 bg-white">${this.spinner()}</div>`;
183
177
  }
184
- else {
185
- return html `
186
- <div class="" style="position: relative;">
187
- <div class="${classPrefix}-cart-container align-items-center">
188
- <div
189
- class="d-flex align-items-center justify-content-center fs-5 py-3 px-2"
190
- style="cursor:pointer;"
191
- onclick="${gvc.event(() => {
192
- gvc.glitter.closeDrawer();
193
- })}"
194
- >
195
- <i class="fa-sharp fa-solid fa-angle-left"></i>
196
- </div>
197
- <div class="${classPrefix}-cart-title">${Language.text('cart')}</div>
198
- <div class="flex-fill"></div>
199
- ${vm.dataList.length === 1 ? goToCheckoutButton(ApiCart.globalCart) : ''}
200
- </div>
201
- ${(() => {
202
- if (vm.dataList.length === 0) {
203
- return html `
204
- <div class="container d-flex align-items-center justify-content-center flex-column">
205
- <lottie-player
206
- style="max-width: 100%; width: 300px; height: 300px;"
207
- src="https://lottie.host/38ba8340-3414-41b8-b068-bba18d240bb3/h7e1Q29IQJ.json"
208
- speed="1"
209
- loop=""
210
- autoplay=""
211
- background="transparent"
212
- ></lottie-player>
213
- <div class="mt-3 fw-bold">
214
- ${Language.text('empty_cart_message')}
215
- </div>
216
- </div>`;
217
- }
218
- else {
219
- console.log(`vm.dataList==>`, vm.dataList);
220
- return vm.dataList
221
- .map((data) => {
222
- const logistic = vm.shippings.find((item) => item.value === data.logistic);
223
- const logiCartID = `${ApiCart.cartPrefix}_${logistic === null || logistic === void 0 ? void 0 : logistic.value}`;
224
- const logiCart = new ApiCart(logiCartID);
225
- logiCart.clearCart();
226
- return html `
227
- <div class="${classPrefix}-card">
228
- ${vm.dataList.length !== 1
229
- ? html `
230
- <div class="d-flex justify-content-between align-items-center px-3 mb-2">
231
- <div class="${classPrefix}-shipping-title">
232
- ${logistic === null || logistic === void 0 ? void 0 : logistic.name}
233
- </div>
234
- ${goToCheckoutButton(logiCartID)}
235
- </div>
236
- `
237
- : ''}
238
- ${data.cart
239
- .map((item) => {
240
- logiCart.addToCart(`${item.id}`, item.spec, item.count);
241
- return html `
242
- <div class="d-flex align-items-center px-3 position-relative"
243
- style="gap: 12px;">
244
- <div
245
- class="position-absolute"
246
- style="right:13px;top:0px;cursor:pointer;"
247
- onclick="${gvc.event(() => {
248
- new ApiCart().setCart((cartItem) => {
249
- cartItem.line_items = cartItem.line_items.filter((dd) => {
250
- return !(dd.id === item.id && item.spec.join('') === dd.spec.join(''));
251
- });
252
- refreshView();
253
- });
254
- })}"
255
- >
256
- <i class="fa-regular fa-trash-can"></i>
257
- </div>
258
- <div class="d-none"
259
- style="width: 10%">
260
- <i
261
- class="fa-solid fa-xmark-large"
262
- style="cursor: pointer;"
263
- onclick="${gvc.event(() => {
264
- new ApiCart().setCart((cartItem) => {
265
- cartItem.line_items = cartItem.line_items.filter((dd) => {
266
- return !(dd.id === item.id && item.spec.join('') === dd.spec.join(''));
267
- });
268
- refreshView();
269
- });
270
- })}"
271
- ></i>
272
- </div>
273
- <div class="d-flex"
274
- style="">
275
- <img src="${item.image}"
276
- class="${classPrefix}-wh rounded-3"/>
277
- </div>
278
- <div class="d-flex flex-column gap-1 flex-fill">
279
- <div class="${classPrefix}-title pe-3"
280
- style="">
281
- ${item.title}
282
- </div>
283
- <div class="${classPrefix}-spec ">
284
- ${(() => {
285
- const spec = (() => {
286
- if (item.spec) {
287
- return item.spec.map((dd, index) => {
288
- try {
289
- return (item.specs[index].option.find((d1) => {
290
- return d1.title === dd;
291
- }).language_title[Language.getLanguage()] || dd);
292
- }
293
- catch (e) {
294
- return dd;
295
- }
296
- });
178
+ return html ` <div class="" style="position: relative;">
179
+ <div class="${classPrefix}-cart-container align-items-center">
180
+ <div
181
+ class="d-flex align-items-center justify-content-center fs-5 py-3 px-2"
182
+ style="cursor:pointer;"
183
+ onclick="${gvc.event(() => {
184
+ gvc.glitter.closeDrawer();
185
+ })}"
186
+ >
187
+ <i class="fa-sharp fa-solid fa-angle-left"></i>
188
+ </div>
189
+ <div class="${classPrefix}-cart-title">${Language.text('cart')}</div>
190
+ <div class="flex-fill"></div>
191
+ ${goToCheckoutButton(ApiCart.globalCart)}
192
+ </div>
193
+ ${(() => {
194
+ if (vm.dataList.length === 0) {
195
+ return html ` <div class="container d-flex align-items-center justify-content-center flex-column">
196
+ <lottie-player
197
+ style="max-width: 100%; width: 300px; height: 300px;"
198
+ src="https://lottie.host/38ba8340-3414-41b8-b068-bba18d240bb3/h7e1Q29IQJ.json"
199
+ speed="1"
200
+ loop=""
201
+ autoplay=""
202
+ background="transparent"
203
+ ></lottie-player>
204
+ <div class="mt-3 fw-bold">${Language.text('empty_cart_message')}</div>
205
+ </div>`;
206
+ }
207
+ else {
208
+ return vm.dataList
209
+ .map(item => {
210
+ return html ` <div class="d-flex align-items-center px-3 position-relative" style="gap: 12px;">
211
+ <div
212
+ class="position-absolute"
213
+ style="right:13px;top:0px;cursor:pointer;"
214
+ onclick="${gvc.event(() => {
215
+ new ApiCart().setCart(cartItem => {
216
+ cartItem.line_items = cartItem.line_items.filter(dd => {
217
+ return !(dd.id === item.id && item.spec.join('') === dd.spec.join(''));
218
+ });
219
+ refreshView();
220
+ });
221
+ })}"
222
+ >
223
+ <i class="fa-regular fa-trash-can"></i>
224
+ </div>
225
+ <div class="d-none" style="width: 10%">
226
+ <i
227
+ class="fa-solid fa-xmark-large"
228
+ style="cursor: pointer;"
229
+ onclick="${gvc.event(() => {
230
+ new ApiCart().setCart(cartItem => {
231
+ cartItem.line_items = cartItem.line_items.filter(dd => {
232
+ return !(dd.id === item.id && item.spec.join('') === dd.spec.join(''));
233
+ });
234
+ refreshView();
235
+ });
236
+ })}"
237
+ ></i>
238
+ </div>
239
+ <div class="d-flex" style="">
240
+ <img src="${item.image}" class="${classPrefix}-wh rounded-3" />
241
+ </div>
242
+ <div class="d-flex flex-column gap-1 flex-fill">
243
+ <div class="${classPrefix}-title pe-3" style="">${item.title}</div>
244
+ <div class="${classPrefix}-spec ">
245
+ ${(() => {
246
+ const spec = (() => {
247
+ if (item.spec) {
248
+ return item.spec.map((dd, index) => {
249
+ try {
250
+ return (item.specs[index].option.find((d1) => {
251
+ return d1.title === dd;
252
+ }).language_title[Language.getLanguage()] || dd);
297
253
  }
298
- else {
299
- return [];
254
+ catch (e) {
255
+ return dd;
300
256
  }
301
- })();
302
- return spec.join(' / ');
303
- })()}
304
- </div>
305
- <div class="d-flex align-items-center justify-content-between">
306
- <div class="d-flex align-items-center gap-1"
307
- style="font-size:14px;">
308
- ${Language.text('quantity')}
309
- :<select
310
- class="${classPrefix}-select"
311
- style="width: 100px;"
312
- onchange="${gvc.event((e) => {
313
- new ApiCart().setCart((cartItem) => {
314
- cartItem.line_items.find((dd) => {
315
- return `${dd.id}` === `${item.id}` && item.spec.join('') === dd.spec.join('');
316
- }).count = parseInt(e.value, 10);
317
- refreshView();
318
257
  });
319
- })}"
320
- >
321
- ${[...new Array(99)]
322
- .map((_, index) => {
323
- return html `
324
- <option value="${index + 1}"
325
- ${index + 1 === item.count ? `selected` : ``}>
326
- ${index + 1}
327
- </option>`;
328
- })
329
- .join('')}
330
- </select>
331
- </div>
332
- ${Currency.convertCurrencyText(item.price * item.count)}
333
- </div>
334
- </div>
335
- </div>`;
336
- })
337
- .join(html `
338
- <div class="w-100 border-top my-3"></div>`)}
339
- </div>
340
- `;
258
+ }
259
+ else {
260
+ return [];
261
+ }
262
+ })();
263
+ return spec.join(' / ');
264
+ })()}
265
+ </div>
266
+ <div class="d-flex align-items-center justify-content-between">
267
+ <div class="d-flex align-items-center gap-1" style="font-size:14px;">
268
+ ${Language.text('quantity')} :<select
269
+ class="${classPrefix}-select"
270
+ style="width: 100px;"
271
+ onchange="${gvc.event(e => {
272
+ new ApiCart().setCart(cartItem => {
273
+ cartItem.line_items.find(dd => {
274
+ return `${dd.id}` === `${item.id}` && item.spec.join('') === dd.spec.join('');
275
+ }).count = parseInt(e.value, 10);
276
+ refreshView();
277
+ });
278
+ })}"
279
+ >
280
+ ${[...new Array(99)]
281
+ .map((_, index) => {
282
+ return html ` <option
283
+ value="${index + 1}"
284
+ ${index + 1 === item.count ? `selected` : ``}
285
+ >
286
+ ${index + 1}
287
+ </option>`;
341
288
  })
342
- .join(html `
343
- <div class="w-100 my-3"></div>`);
344
- }
345
- })()}
346
- </div>`;
347
- }
289
+ .join('')}
290
+ </select>
291
+ </div>
292
+ ${Currency.convertCurrencyText(item.price * item.count)}
293
+ </div>
294
+ </div>
295
+ </div>`;
296
+ })
297
+ .join(html ` <div class="w-100 border-top my-3"></div>`);
298
+ }
299
+ })()}
300
+ </div>`;
348
301
  }
349
302
  catch (e) {
350
303
  console.error(e);
351
304
  return `${e}`;
352
305
  }
353
306
  },
354
- divCreate: {},
355
307
  onCreate: () => {
356
308
  if (vm.loading) {
357
309
  const cart = new ApiCart().cart;
358
310
  Promise.all([
359
- new Promise((resolve) => {
360
- ApiShop.getShippingMethod().then((d) => {
311
+ new Promise(resolve => {
312
+ ApiShop.getShippingMethod().then(d => {
361
313
  resolve(d);
362
314
  });
363
315
  }),
364
- new Promise((resolve) => {
316
+ new Promise(resolve => {
365
317
  ApiShop.getProduct({
366
318
  page: 0,
367
319
  limit: 10000,
368
320
  status: 'inRange',
369
321
  show_hidden: true,
370
- id_list: [...new Set(cart.line_items.map((item) => item.id))].join(','),
371
- }).then((d) => {
322
+ id_list: [...new Set(cart.line_items.map(item => item.id))].join(','),
323
+ }).then(d => {
372
324
  resolve(d);
373
325
  });
374
326
  }),
@@ -378,61 +330,38 @@ export class HeaderClass {
378
330
  if (shippings.result && shippings.response) {
379
331
  vm.shippings = shippings.response;
380
332
  }
381
- vm.dataList = [
382
- ...vm.shippings.map((item) => {
383
- return {
384
- logistic: item.value,
385
- cart: [],
386
- };
387
- }),
388
- ];
389
- console.log(`vm.shippings=>`, vm.shippings);
390
- console.log(`vm.dataList=>`, vm.dataList);
391
333
  const data = dataArray[1];
392
- if (data.result && data.response) {
393
- const products = data.response.data;
394
- for (const item of cart.line_items) {
395
- const product = products.find((p) => `${p.id}` === `${item.id}`);
396
- if (product) {
397
- const variant = PdClass.getVariant(product.content, {
398
- specs: item.spec
399
- });
400
- const lineItem = {
401
- id: item.id,
402
- title: product.content.title,
403
- count: item.count,
404
- spec: item.spec,
405
- specs: product.content.specs,
406
- price: variant ? variant.sale_price : 0,
407
- image: yield (() => __awaiter(this, void 0, void 0, function* () {
408
- if (!variant) {
409
- if (product.content && product.content.preview_image) {
410
- return product.content.preview_image[0];
411
- }
412
- return this.noImageURL;
334
+ const products = data.response.data;
335
+ for (const item of cart.line_items) {
336
+ const product = products.find((p) => `${p.id}` === `${item.id}`);
337
+ if (product) {
338
+ const variant = PdClass.getVariant(product.content, {
339
+ specs: item.spec,
340
+ });
341
+ const lineItem = {
342
+ id: item.id,
343
+ title: product.content.title,
344
+ count: item.count,
345
+ spec: item.spec,
346
+ specs: product.content.specs,
347
+ price: variant ? variant.sale_price : 0,
348
+ image: yield (() => __awaiter(this, void 0, void 0, function* () {
349
+ if (!variant) {
350
+ if (product.content && product.content.preview_image) {
351
+ return product.content.preview_image[0];
413
352
  }
414
- const img = yield this.isImageUrlValid(variant.preview_image).then((isValid) => {
415
- return isValid ? variant.preview_image : product.content.preview_image[0] || this.noImageURL;
416
- });
417
- return img;
418
- }))(),
419
- };
420
- const logistics = product.content.designated_logistics;
421
- for (const data of vm.dataList) {
422
- if (!logistics || logistics.type === 'all' || logistics.list.includes(data.logistic)) {
423
- data.cart.push(lineItem);
353
+ return CartModule.noImageURL;
424
354
  }
425
- }
426
- }
427
- }
428
- vm.dataList = vm.dataList.filter((item) => item.cart.length > 0);
429
- const hasFullShipping = vm.dataList.find((item) => {
430
- return item.cart.length === cart.line_items.length;
431
- });
432
- if (hasFullShipping) {
433
- vm.dataList = [hasFullShipping];
355
+ const img = yield CartModule.isImageUrlValid(variant.preview_image).then(isValid => {
356
+ return isValid
357
+ ? variant.preview_image
358
+ : product.content.preview_image[0] || CartModule.noImageURL;
359
+ });
360
+ return img;
361
+ }))(),
362
+ };
363
+ vm.dataList.push(lineItem);
434
364
  }
435
- console.log(`vm.dataList ==>`, vm.dataList);
436
365
  }
437
366
  }))
438
367
  .then(() => {
@@ -456,4 +385,3 @@ export class HeaderClass {
456
385
  });
457
386
  }
458
387
  }
459
- HeaderClass.noImageURL = 'https://d3jnmi1tfjgtti.cloudfront.net/file/234285319/1722936949034-default_image.jpg';