ts-glitter 18.5.0 → 18.5.2
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.
- package/lowcode/Entry.js +1 -1
- package/lowcode/Entry.ts +1 -1
- package/lowcode/backend-manager/bg-list-component.js +150 -0
- package/lowcode/backend-manager/bg-list-component.ts +174 -0
- package/lowcode/backend-manager/bg-widget.js +1600 -1756
- package/lowcode/backend-manager/bg-widget.ts +5069 -5203
- package/lowcode/cms-plugin/cms-router.js +9 -0
- package/lowcode/cms-plugin/cms-router.ts +9 -0
- package/lowcode/cms-plugin/filter-options.js +23 -0
- package/lowcode/cms-plugin/filter-options.ts +24 -0
- package/lowcode/cms-plugin/list-header-option.js +16 -0
- package/lowcode/cms-plugin/list-header-option.ts +17 -0
- package/lowcode/cms-plugin/module/user-excel.js +8 -0
- package/lowcode/cms-plugin/module/user-excel.ts +8 -0
- package/lowcode/cms-plugin/shipment_list.js +6 -0
- package/lowcode/cms-plugin/shipment_list.ts +9 -0
- package/lowcode/cms-plugin/shopping-finance-setting.js +1 -1
- package/lowcode/cms-plugin/shopping-finance-setting.ts +1 -1
- package/lowcode/cms-plugin/shopping-information.js +1 -1
- package/lowcode/cms-plugin/shopping-information.ts +1 -1
- package/lowcode/cms-plugin/shopping-order-manager.js +2313 -2104
- package/lowcode/cms-plugin/shopping-order-manager.ts +4882 -4530
- package/lowcode/cms-plugin/shopping-order-return.js +3 -1
- package/lowcode/cms-plugin/shopping-order-return.ts +4 -1
- package/lowcode/cms-plugin/shopping-product-setting.js +1 -1
- package/lowcode/cms-plugin/shopping-product-setting.ts +1 -1
- package/lowcode/cms-plugin/user-list.js +140 -70
- package/lowcode/cms-plugin/user-list.ts +173 -90
- package/lowcode/glitter-base/global/language.js +4 -0
- package/lowcode/glitter-base/global/language.ts +4 -0
- package/lowcode/glitter-base/global/payment-config.js +97 -0
- package/lowcode/glitter-base/global/payment-config.ts +88 -0
- package/lowcode/glitter-base/global/shipment-config.js +32 -0
- package/lowcode/glitter-base/global/shipment-config.ts +28 -0
- package/lowcode/glitter-base/route/shopping.js +7 -0
- package/lowcode/glitter-base/route/shopping.ts +8 -0
- package/lowcode/glitter-base/route/user.js +14 -8
- package/lowcode/glitter-base/route/user.ts +16 -8
- package/lowcode/glitterBundle/plugins/html-render.js +11 -1
- package/lowcode/glitterBundle/plugins/html-render.ts +14 -1
- package/lowcode/jspage/function-page/setting_editor.js +20 -2
- package/lowcode/jspage/function-page/setting_editor.ts +20 -2
- package/lowcode/public-components/checkout/index.js +2 -2
- package/lowcode/public-components/checkout/index.ts +2 -2
- package/lowcode/public-components/terms-related/index.js +1 -1
- package/lowcode/public-components/terms-related/index.ts +1 -1
- package/lowcode/public-components/user-manager/um-order.js +24 -0
- package/lowcode/public-components/user-manager/um-order.ts +28 -0
- package/package.json +1 -1
- package/src/api-public/controllers/shop.js +4 -1
- package/src/api-public/controllers/shop.js.map +1 -1
- package/src/api-public/controllers/shop.ts +4 -1
- package/src/api-public/controllers/track.js.map +1 -1
- package/src/api-public/services/delivery.js +1 -0
- package/src/api-public/services/delivery.js.map +1 -1
- package/src/api-public/services/delivery.ts +2 -1
- package/src/api-public/services/paynow-logistics.js +1 -1
- package/src/api-public/services/paynow-logistics.js.map +1 -1
- package/src/api-public/services/paynow-logistics.ts +1 -1
- package/src/api-public/services/shopping.d.ts +3 -0
- package/src/api-public/services/shopping.js +42 -2
- package/src/api-public/services/shopping.js.map +1 -1
- package/src/api-public/services/shopping.ts +104 -54
- package/src/api-public/services/user.js +88 -147
- package/src/api-public/services/user.js.map +1 -1
- package/src/api-public/services/user.ts +103 -155
- package/src/services/template.js +1 -1
- package/src/services/template.js.map +1 -1
- package/src/services/template.ts +1 -1
package/lowcode/Entry.js
CHANGED
|
@@ -131,7 +131,7 @@ export class Entry {
|
|
|
131
131
|
}
|
|
132
132
|
window.renderClock = (_b = window.renderClock) !== null && _b !== void 0 ? _b : createClock();
|
|
133
133
|
console.log(`Entry-time:`, window.renderClock.stop());
|
|
134
|
-
glitter.share.editerVersion = 'V_18.5.
|
|
134
|
+
glitter.share.editerVersion = 'V_18.5.2';
|
|
135
135
|
glitter.share.start = new Date();
|
|
136
136
|
const vm = { appConfig: [] };
|
|
137
137
|
window.saasConfig = {
|
package/lowcode/Entry.ts
CHANGED
|
@@ -131,7 +131,7 @@ export class Entry {
|
|
|
131
131
|
}
|
|
132
132
|
(window as any).renderClock = (window as any).renderClock ?? createClock();
|
|
133
133
|
console.log(`Entry-time:`, (window as any).renderClock.stop());
|
|
134
|
-
glitter.share.editerVersion = 'V_18.5.
|
|
134
|
+
glitter.share.editerVersion = 'V_18.5.2';
|
|
135
135
|
glitter.share.start = new Date();
|
|
136
136
|
const vm = { appConfig: [] };
|
|
137
137
|
(window as any).saasConfig = {
|
|
@@ -210,5 +210,155 @@ export class BgListComponent {
|
|
|
210
210
|
right: true,
|
|
211
211
|
});
|
|
212
212
|
}
|
|
213
|
+
static rightMenu(obj) {
|
|
214
|
+
const glitter = window.parent.glitter;
|
|
215
|
+
const gvc = glitter.pageConfig[glitter.pageConfig.length - 1].gvc;
|
|
216
|
+
const menu = glitter.share.NormalPageEditor;
|
|
217
|
+
const items = obj.items;
|
|
218
|
+
const menuTitle = obj.menuTitle;
|
|
219
|
+
const cancelType = obj.cancelType;
|
|
220
|
+
const cloneFrame = structuredClone(obj.frame);
|
|
221
|
+
const cloneDefault = structuredClone(obj.default);
|
|
222
|
+
const vmShow = { id: gvc.glitter.getUUID() };
|
|
223
|
+
const vm = {
|
|
224
|
+
id: gvc.glitter.getUUID(),
|
|
225
|
+
filter: obj.default,
|
|
226
|
+
getFilterObject: () => cloneFrame,
|
|
227
|
+
getConfigObject: () => cloneDefault,
|
|
228
|
+
};
|
|
229
|
+
menu.closeEvent = () => gvc.notifyDataChange(vm.id);
|
|
230
|
+
return menu.toggle({
|
|
231
|
+
visible: true,
|
|
232
|
+
title: menuTitle !== null && menuTitle !== void 0 ? menuTitle : '篩選',
|
|
233
|
+
view: gvc.bindView(() => {
|
|
234
|
+
return {
|
|
235
|
+
bind: vmShow.id,
|
|
236
|
+
view: () => {
|
|
237
|
+
return html `<!-- Accordion: 篩選 -->
|
|
238
|
+
<div class="accordion" id="accordion${vmShow.id}">
|
|
239
|
+
${gvc.map(items.length > 0
|
|
240
|
+
? items.map((item) => {
|
|
241
|
+
let contentHTML = '';
|
|
242
|
+
switch (item.type) {
|
|
243
|
+
case 'during':
|
|
244
|
+
contentHTML +=
|
|
245
|
+
item.data && item.data.list.length > 0
|
|
246
|
+
? BgWidget.duringInputContainer(gvc, item.data, vm.filter[item.key], value => {
|
|
247
|
+
vm.filter[item.key] = value;
|
|
248
|
+
})
|
|
249
|
+
: '';
|
|
250
|
+
break;
|
|
251
|
+
case 'multi_checkbox':
|
|
252
|
+
contentHTML +=
|
|
253
|
+
item.data.length > 0
|
|
254
|
+
? BgWidget.multiCheckboxContainer(gvc, item.data, vm.filter[item.key], value => {
|
|
255
|
+
vm.filter[item.key] = value;
|
|
256
|
+
})
|
|
257
|
+
: '';
|
|
258
|
+
break;
|
|
259
|
+
case 'radio_and_input':
|
|
260
|
+
contentHTML +=
|
|
261
|
+
item.data.length > 0
|
|
262
|
+
? BgWidget.radioInputContainer(gvc, item.data, vm.filter[item.key], value => {
|
|
263
|
+
vm.filter[item.key] = value;
|
|
264
|
+
})
|
|
265
|
+
: '';
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
return contentHTML.length > 0
|
|
269
|
+
? html `<!-- Item -->
|
|
270
|
+
<div class="accordion-item border-0 rounded-3 mb-3">
|
|
271
|
+
<h3 class="accordion-header" id="heading${item.key}">
|
|
272
|
+
<button
|
|
273
|
+
class="accordion-button shadow-none rounded-3 p-0 collapsed"
|
|
274
|
+
type="button"
|
|
275
|
+
data-bs-toggle="collapse"
|
|
276
|
+
data-bs-target="#collapse${item.key}"
|
|
277
|
+
aria-expanded="false"
|
|
278
|
+
aria-controls="collapse${item.key}"
|
|
279
|
+
>
|
|
280
|
+
${item.name}
|
|
281
|
+
</button>
|
|
282
|
+
</h3>
|
|
283
|
+
<div
|
|
284
|
+
class="accordion-collapse collapse"
|
|
285
|
+
id="collapse${item.key}"
|
|
286
|
+
aria-labelledby="heading${item.key}"
|
|
287
|
+
data-bs-parent="#accordion${vmShow.id}"
|
|
288
|
+
>
|
|
289
|
+
<div class="accordion-body p-0 pt-1">${contentHTML}</div>
|
|
290
|
+
</div>
|
|
291
|
+
</div> `
|
|
292
|
+
: '';
|
|
293
|
+
})
|
|
294
|
+
: ['無篩選項目'])}
|
|
295
|
+
</div>
|
|
296
|
+
<div
|
|
297
|
+
class="position-absolute bottom-0 left-0 w-100 d-flex align-items-center justify-content-end p-3 border-top pe-4"
|
|
298
|
+
style="gap:10px;"
|
|
299
|
+
>
|
|
300
|
+
${BgWidget.cancel(gvc.event(() => {
|
|
301
|
+
const cancelMap = {
|
|
302
|
+
default: () => {
|
|
303
|
+
vm.filter = vm.getConfigObject();
|
|
304
|
+
gvc.notifyDataChange(vmShow.id);
|
|
305
|
+
},
|
|
306
|
+
clear: () => {
|
|
307
|
+
vm.filter = vm.getFilterObject();
|
|
308
|
+
menu.toggle({ visible: false });
|
|
309
|
+
gvc.notifyDataChange(vm.id);
|
|
310
|
+
},
|
|
311
|
+
};
|
|
312
|
+
return cancelMap[cancelType] ? cancelMap[cancelType]() : cancelMap.default();
|
|
313
|
+
}), (() => {
|
|
314
|
+
var _a;
|
|
315
|
+
const cancelMap = {
|
|
316
|
+
default: '回到預設值',
|
|
317
|
+
clear: '清除',
|
|
318
|
+
};
|
|
319
|
+
return (_a = cancelMap[cancelType]) !== null && _a !== void 0 ? _a : cancelMap.default;
|
|
320
|
+
})())}
|
|
321
|
+
${BgWidget.save(gvc.event(() => {
|
|
322
|
+
for (const name of Object.keys(vm.filter)) {
|
|
323
|
+
const obj = items.find(item => item.key === name);
|
|
324
|
+
const during = vm.filter[name];
|
|
325
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
326
|
+
if (obj && obj.type === 'during') {
|
|
327
|
+
if ((during[0].length > 0 && during[1].length === 0) ||
|
|
328
|
+
(during[0].length === 0 && during[1].length > 0)) {
|
|
329
|
+
dialog.infoMessage({ text: `${obj.name}欄位,開始日期與結束日期皆為必填` });
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
if (!BgListComponent.duringInputVerify(during)) {
|
|
333
|
+
dialog.infoMessage({ text: `${obj.name}欄位,結束日期不得早於開始日期` });
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
menu.toggle({ visible: false });
|
|
339
|
+
obj.save(vm.filter);
|
|
340
|
+
}), '完成')}
|
|
341
|
+
</div>`;
|
|
342
|
+
},
|
|
343
|
+
divCreate: { style: 'padding: 20px;' },
|
|
344
|
+
onCreate: () => {
|
|
345
|
+
gvc.addStyle(`
|
|
346
|
+
.accordion-button:not(.collapsed)::after {
|
|
347
|
+
box-shadow: none !important;
|
|
348
|
+
color: #393939 !important;
|
|
349
|
+
background-color: #fff !important;
|
|
350
|
+
background-image: url(${BgWidget.arrowDownDataImage('#000')}) !important;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.accordion-button::after {
|
|
354
|
+
background-color: #fff !important;
|
|
355
|
+
}
|
|
356
|
+
`);
|
|
357
|
+
},
|
|
358
|
+
};
|
|
359
|
+
}),
|
|
360
|
+
right: true,
|
|
361
|
+
});
|
|
362
|
+
}
|
|
213
363
|
}
|
|
214
364
|
window.glitter.setModule(import.meta.url, BgListComponent);
|
|
@@ -246,6 +246,180 @@ export class BgListComponent {
|
|
|
246
246
|
right: true,
|
|
247
247
|
});
|
|
248
248
|
}
|
|
249
|
+
|
|
250
|
+
static rightMenu(obj: {
|
|
251
|
+
menuTitle: string;
|
|
252
|
+
items: FilterItem[];
|
|
253
|
+
frame: any;
|
|
254
|
+
default: any;
|
|
255
|
+
cancelType: 'default' | 'clear';
|
|
256
|
+
save: (data: any) => void;
|
|
257
|
+
}) {
|
|
258
|
+
const glitter = (window.parent as any).glitter;
|
|
259
|
+
const gvc: GVC = glitter.pageConfig[glitter.pageConfig.length - 1].gvc;
|
|
260
|
+
const menu = glitter.share.NormalPageEditor;
|
|
261
|
+
|
|
262
|
+
const items = obj.items;
|
|
263
|
+
const menuTitle = obj.menuTitle;
|
|
264
|
+
const cancelType = obj.cancelType;
|
|
265
|
+
const cloneFrame = structuredClone(obj.frame);
|
|
266
|
+
const cloneDefault = structuredClone(obj.default);
|
|
267
|
+
|
|
268
|
+
const vmShow = { id: gvc.glitter.getUUID() };
|
|
269
|
+
|
|
270
|
+
const vm = {
|
|
271
|
+
id: gvc.glitter.getUUID(),
|
|
272
|
+
filter: obj.default,
|
|
273
|
+
getFilterObject: () => cloneFrame,
|
|
274
|
+
getConfigObject: () => cloneDefault,
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
menu.closeEvent = () => gvc.notifyDataChange(vm.id);
|
|
278
|
+
|
|
279
|
+
return menu.toggle({
|
|
280
|
+
visible: true,
|
|
281
|
+
title: menuTitle ?? '篩選',
|
|
282
|
+
view: gvc.bindView(() => {
|
|
283
|
+
return {
|
|
284
|
+
bind: vmShow.id,
|
|
285
|
+
view: () => {
|
|
286
|
+
return html`<!-- Accordion: 篩選 -->
|
|
287
|
+
<div class="accordion" id="accordion${vmShow.id}">
|
|
288
|
+
${gvc.map(
|
|
289
|
+
items.length > 0
|
|
290
|
+
? items.map((item: any) => {
|
|
291
|
+
let contentHTML = '';
|
|
292
|
+
switch (item.type) {
|
|
293
|
+
case 'during':
|
|
294
|
+
contentHTML +=
|
|
295
|
+
item.data && item.data.list.length > 0
|
|
296
|
+
? BgWidget.duringInputContainer(gvc, item.data, vm.filter[item.key], value => {
|
|
297
|
+
vm.filter[item.key] = value;
|
|
298
|
+
})
|
|
299
|
+
: '';
|
|
300
|
+
break;
|
|
301
|
+
case 'multi_checkbox':
|
|
302
|
+
contentHTML +=
|
|
303
|
+
item.data.length > 0
|
|
304
|
+
? BgWidget.multiCheckboxContainer(gvc, item.data, vm.filter[item.key], value => {
|
|
305
|
+
vm.filter[item.key] = value;
|
|
306
|
+
})
|
|
307
|
+
: '';
|
|
308
|
+
|
|
309
|
+
break;
|
|
310
|
+
case 'radio_and_input':
|
|
311
|
+
contentHTML +=
|
|
312
|
+
item.data.length > 0
|
|
313
|
+
? BgWidget.radioInputContainer(gvc, item.data, vm.filter[item.key], value => {
|
|
314
|
+
vm.filter[item.key] = value;
|
|
315
|
+
})
|
|
316
|
+
: '';
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
return contentHTML.length > 0
|
|
321
|
+
? html`<!-- Item -->
|
|
322
|
+
<div class="accordion-item border-0 rounded-3 mb-3">
|
|
323
|
+
<h3 class="accordion-header" id="heading${item.key}">
|
|
324
|
+
<button
|
|
325
|
+
class="accordion-button shadow-none rounded-3 p-0 collapsed"
|
|
326
|
+
type="button"
|
|
327
|
+
data-bs-toggle="collapse"
|
|
328
|
+
data-bs-target="#collapse${item.key}"
|
|
329
|
+
aria-expanded="false"
|
|
330
|
+
aria-controls="collapse${item.key}"
|
|
331
|
+
>
|
|
332
|
+
${item.name}
|
|
333
|
+
</button>
|
|
334
|
+
</h3>
|
|
335
|
+
<div
|
|
336
|
+
class="accordion-collapse collapse"
|
|
337
|
+
id="collapse${item.key}"
|
|
338
|
+
aria-labelledby="heading${item.key}"
|
|
339
|
+
data-bs-parent="#accordion${vmShow.id}"
|
|
340
|
+
>
|
|
341
|
+
<div class="accordion-body p-0 pt-1">${contentHTML}</div>
|
|
342
|
+
</div>
|
|
343
|
+
</div> `
|
|
344
|
+
: '';
|
|
345
|
+
})
|
|
346
|
+
: ['無篩選項目']
|
|
347
|
+
)}
|
|
348
|
+
</div>
|
|
349
|
+
<div
|
|
350
|
+
class="position-absolute bottom-0 left-0 w-100 d-flex align-items-center justify-content-end p-3 border-top pe-4"
|
|
351
|
+
style="gap:10px;"
|
|
352
|
+
>
|
|
353
|
+
${BgWidget.cancel(
|
|
354
|
+
gvc.event(() => {
|
|
355
|
+
const cancelMap = {
|
|
356
|
+
default: () => {
|
|
357
|
+
vm.filter = vm.getConfigObject();
|
|
358
|
+
gvc.notifyDataChange(vmShow.id);
|
|
359
|
+
},
|
|
360
|
+
clear: () => {
|
|
361
|
+
vm.filter = vm.getFilterObject();
|
|
362
|
+
menu.toggle({ visible: false });
|
|
363
|
+
gvc.notifyDataChange(vm.id);
|
|
364
|
+
},
|
|
365
|
+
};
|
|
366
|
+
return cancelMap[cancelType] ? cancelMap[cancelType]() : cancelMap.default();
|
|
367
|
+
}),
|
|
368
|
+
(() => {
|
|
369
|
+
const cancelMap = {
|
|
370
|
+
default: '回到預設值',
|
|
371
|
+
clear: '清除',
|
|
372
|
+
};
|
|
373
|
+
return cancelMap[cancelType] ?? cancelMap.default;
|
|
374
|
+
})()
|
|
375
|
+
)}
|
|
376
|
+
${BgWidget.save(
|
|
377
|
+
gvc.event(() => {
|
|
378
|
+
for (const name of Object.keys(vm.filter)) {
|
|
379
|
+
const obj = items.find(item => item.key === name);
|
|
380
|
+
const during = vm.filter[name];
|
|
381
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
382
|
+
if (obj && obj.type === 'during') {
|
|
383
|
+
if (
|
|
384
|
+
(during[0].length > 0 && during[1].length === 0) ||
|
|
385
|
+
(during[0].length === 0 && during[1].length > 0)
|
|
386
|
+
) {
|
|
387
|
+
dialog.infoMessage({ text: `${obj.name}欄位,開始日期與結束日期皆為必填` });
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
if (!BgListComponent.duringInputVerify(during)) {
|
|
391
|
+
dialog.infoMessage({ text: `${obj.name}欄位,結束日期不得早於開始日期` });
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
menu.toggle({ visible: false });
|
|
397
|
+
obj.save(vm.filter);
|
|
398
|
+
}),
|
|
399
|
+
'完成'
|
|
400
|
+
)}
|
|
401
|
+
</div>`;
|
|
402
|
+
},
|
|
403
|
+
divCreate: { style: 'padding: 20px;' },
|
|
404
|
+
onCreate: () => {
|
|
405
|
+
gvc.addStyle(`
|
|
406
|
+
.accordion-button:not(.collapsed)::after {
|
|
407
|
+
box-shadow: none !important;
|
|
408
|
+
color: #393939 !important;
|
|
409
|
+
background-color: #fff !important;
|
|
410
|
+
background-image: url(${BgWidget.arrowDownDataImage('#000')}) !important;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
.accordion-button::after {
|
|
414
|
+
background-color: #fff !important;
|
|
415
|
+
}
|
|
416
|
+
`);
|
|
417
|
+
},
|
|
418
|
+
};
|
|
419
|
+
}),
|
|
420
|
+
right: true,
|
|
421
|
+
});
|
|
422
|
+
}
|
|
249
423
|
}
|
|
250
424
|
|
|
251
425
|
(window as any).glitter.setModule(import.meta.url, BgListComponent);
|