ts-glitter 21.2.5 → 21.2.7

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 (36) hide show
  1. package/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/cms-plugin/filter-options.js +1 -0
  4. package/lowcode/cms-plugin/filter-options.ts +1 -0
  5. package/lowcode/cms-plugin/pos-pages/pos-summary.js +4 -4
  6. package/lowcode/cms-plugin/pos-pages/pos-summary.ts +4 -1
  7. package/lowcode/cms-plugin/shopping-order-manager.js +10 -7
  8. package/lowcode/cms-plugin/shopping-order-manager.ts +10 -7
  9. package/lowcode/cms-plugin/shopping-product-setting.js +9 -6
  10. package/lowcode/cms-plugin/shopping-product-setting.ts +13 -6
  11. package/lowcode/cms-plugin/shopping-setting-basic.js +411 -405
  12. package/lowcode/cms-plugin/shopping-setting-basic.ts +497 -486
  13. package/lowcode/public-components/checkout/index.js +10 -5
  14. package/lowcode/public-components/checkout/index.ts +13 -7
  15. package/package.json +1 -1
  16. package/src/api-public/controllers/shop.js +4 -4
  17. package/src/api-public/controllers/shop.js.map +1 -1
  18. package/src/api-public/controllers/shop.ts +10 -12
  19. package/src/api-public/services/checkout-event.js +17 -7
  20. package/src/api-public/services/checkout-event.js.map +1 -1
  21. package/src/api-public/services/financial-serviceV2.js +17 -7
  22. package/src/api-public/services/financial-serviceV2.js.map +1 -1
  23. package/src/api-public/services/mail.js +3 -3
  24. package/src/api-public/services/mail.js.map +1 -1
  25. package/src/api-public/services/mail.ts +144 -134
  26. package/src/api-public/services/shopping.js +8 -4
  27. package/src/api-public/services/shopping.js.map +1 -1
  28. package/src/api-public/services/shopping.ts +18 -14
  29. package/src/api-public/services/user.js +17 -7
  30. package/src/api-public/services/user.js.map +1 -1
  31. package/src/index.js +17 -7
  32. package/src/index.js.map +1 -1
  33. package/src/services/app.js +17 -7
  34. package/src/services/app.js.map +1 -1
  35. package/src/services/ses.js.map +1 -1
  36. package/src/services/ses.ts +41 -35
@@ -184,7 +184,7 @@ export class ShoppingSettingBasic {
184
184
  html: [
185
185
  BgWidget.mainCard(html `
186
186
  <div class="d-flex flex-column guide5-4">
187
- <div style="font-weight: 700;" class="">
187
+ <div style="font-weight: 700;">
188
188
  ${cat_title}名稱 ${BgWidget.languageInsignia(vm.language, 'margin-left:5px;')}
189
189
  </div>
190
190
  ${BgWidget.editeInput({
@@ -334,426 +334,432 @@ export class ShoppingSettingBasic {
334
334
  };
335
335
  }),
336
336
  ].join(BgWidget.mbContainer(12))),
337
- BgWidget.mainCard([
338
- obj.gvc.bindView(() => {
339
- const vm_this = vm;
340
- return (() => {
341
- var _a, _b;
342
- const vm = {
343
- id: obj.gvc.glitter.getUUID(),
344
- type: 'product-detail',
345
- loading: true,
346
- documents: [],
347
- };
348
- language_data.content_array = (_a = language_data.content_array) !== null && _a !== void 0 ? _a : [];
349
- language_data.content_json = (_b = language_data.content_json) !== null && _b !== void 0 ? _b : [];
350
- if (!vm_this.content_detail) {
351
- ApiUser.getPublicConfig('text-manager', 'manager').then((data) => {
352
- vm.documents = data.response.value;
353
- if (!Array.isArray(vm.documents)) {
354
- vm.documents = [];
355
- }
356
- vm_this.content_detail = vm.documents;
357
- vm.loading = false;
358
- gvc.notifyDataChange(vm.id);
359
- });
360
- }
361
- else {
362
- vm.documents = vm_this.content_detail;
363
- vm.loading = false;
364
- }
365
- return {
366
- bind: vm.id,
367
- view: () => __awaiter(this, void 0, void 0, function* () {
368
- if (vm.loading) {
369
- return BgWidget.spinner();
370
- }
371
- language_data.content_array = language_data.content_array.filter((id) => {
372
- return vm.documents.some((item) => item.id === id);
373
- });
374
- language_data.content_json = language_data.content_json.filter((d) => {
375
- return vm.documents.some((item) => item.id === d.id);
337
+ obj.postMD.productType.giveaway
338
+ ? ''
339
+ : BgWidget.mainCard([
340
+ obj.gvc.bindView(() => {
341
+ const vm_this = vm;
342
+ return (() => {
343
+ var _a, _b;
344
+ const vm = {
345
+ id: obj.gvc.glitter.getUUID(),
346
+ type: 'product-detail',
347
+ loading: true,
348
+ documents: [],
349
+ };
350
+ language_data.content_array = (_a = language_data.content_array) !== null && _a !== void 0 ? _a : [];
351
+ language_data.content_json = (_b = language_data.content_json) !== null && _b !== void 0 ? _b : [];
352
+ if (!vm_this.content_detail) {
353
+ ApiUser.getPublicConfig('text-manager', 'manager').then((data) => {
354
+ vm.documents = data.response.value;
355
+ if (!Array.isArray(vm.documents)) {
356
+ vm.documents = [];
357
+ }
358
+ vm_this.content_detail = vm.documents;
359
+ vm.loading = false;
360
+ gvc.notifyDataChange(vm.id);
376
361
  });
377
- function formatRichtext(text, tags, jsonData) {
378
- var _a, _b, _c;
379
- let gText = `${text}`;
380
- if (tags && tags.length > 0) {
381
- for (const item of tags) {
382
- const data = jsonData.find(j => j.key === item.key);
383
- const textImage = data && data.value
384
- ? html `<span
385
- style="font-size: ${(_a = item.font_size) !== null && _a !== void 0 ? _a : '14'}px; color: ${(_b = item.font_color) !== null && _b !== void 0 ? _b : '#393939'}; background: ${(_c = item.font_bgr) !== null && _c !== void 0 ? _c : '#fff'}"
386
- >${data.value}</span
387
- >`
388
- : html `#${item.title}#`;
389
- const regex = new RegExp(`@{{${item.key}}}`, 'g');
390
- gText = gText.replace(regex, textImage);
362
+ }
363
+ else {
364
+ vm.documents = vm_this.content_detail;
365
+ vm.loading = false;
366
+ }
367
+ return {
368
+ bind: vm.id,
369
+ view: () => __awaiter(this, void 0, void 0, function* () {
370
+ if (vm.loading) {
371
+ return BgWidget.spinner();
372
+ }
373
+ language_data.content_array = language_data.content_array.filter((id) => {
374
+ return vm.documents.some((item) => item.id === id);
375
+ });
376
+ language_data.content_json = language_data.content_json.filter((d) => {
377
+ return vm.documents.some((item) => item.id === d.id);
378
+ });
379
+ function formatRichtext(text, tags, jsonData) {
380
+ var _a, _b, _c;
381
+ let gText = `${text}`;
382
+ if (tags && tags.length > 0) {
383
+ for (const item of tags) {
384
+ const data = jsonData.find(j => j.key === item.key);
385
+ const textImage = data && data.value
386
+ ? html `<span
387
+ style="font-size: ${(_a = item.font_size) !== null && _a !== void 0 ? _a : '14'}px; color: ${(_b = item.font_color) !== null && _b !== void 0 ? _b : '#393939'}; background: ${(_c = item.font_bgr) !== null && _c !== void 0 ? _c : '#fff'}"
388
+ >${data.value}</span
389
+ >`
390
+ : html `#${item.title}#`;
391
+ const regex = new RegExp(`@{{${item.key}}}`, 'g');
392
+ gText = gText.replace(regex, textImage);
393
+ }
391
394
  }
395
+ return gText;
392
396
  }
393
- return gText;
394
- }
395
- return html ` <div class="d-flex align-items-center justify-content-end mb-3">
396
- <div class="d-flex align-items-center gap-2">
397
- <div style="color: #393939; font-weight: 700;">
398
- ${cat_title}詳細描述 ${BgWidget.languageInsignia(sel_lan(), 'margin-left:5px;')}
399
- </div>
400
- </div>
401
- <div class="flex-fill"></div>
402
- <div
403
- class="cursor_pointer"
404
- onclick="${gvc.event(() => {
405
- BgWidget.dialog({
406
- gvc: gvc,
407
- title: '設定',
408
- xmark: () => {
409
- return new Promise(resolve => {
410
- gvc.notifyDataChange(vm.id);
411
- resolve(true);
412
- });
413
- },
414
- innerHTML: gvc => {
415
- const id = gvc.glitter.getUUID();
416
- return gvc.bindView(() => {
417
- return {
418
- bind: id,
419
- view: () => {
420
- return vm.documents
421
- .map((dd) => {
422
- return html ` <li class="w-100 px-2">
423
- <div class="w-100 d-flex justify-content-between">
424
- <div class="d-flex justify-content-start align-items-center gap-3">
425
- <i class="fa-solid fa-grip-dots-vertical dragItem cursor_pointer"></i>
426
- <div class="tx_normal">${dd.title}</div>
427
- </div>
428
- ${gvc.bindView((() => {
429
- const iconId = gvc.glitter.getUUID();
430
- return {
431
- bind: iconId,
432
- view: () => {
433
- return html ` <i
434
- class="${language_data.content_array.includes(dd.id)
435
- ? 'fa-solid fa-eye'
436
- : 'fa-sharp fa-solid fa-eye-slash'} d-flex align-items-center justify-content-center cursor_pointer"
437
- onclick="${gvc.event(() => {
438
- if (language_data.content_array.includes(dd.id)) {
439
- language_data.content_array =
440
- language_data.content_array.filter((d) => d !== dd.id);
441
- }
442
- else {
443
- language_data.content_array.push(dd.id);
444
- }
445
- gvc.notifyDataChange(iconId);
446
- })}"
447
- ></i>`;
448
- },
449
- divCreate: {
450
- class: 'd-flex',
397
+ return html ` <div class="d-flex align-items-center justify-content-end mb-3">
398
+ <div class="d-flex align-items-center gap-2">
399
+ <div style="color: #393939; font-weight: 700;">
400
+ ${cat_title}詳細描述 ${BgWidget.languageInsignia(sel_lan(), 'margin-left:5px;')}
401
+ </div>
402
+ </div>
403
+ <div class="flex-fill"></div>
404
+ <div
405
+ class="cursor_pointer"
406
+ onclick="${gvc.event(() => {
407
+ BgWidget.dialog({
408
+ gvc: gvc,
409
+ title: '設定',
410
+ xmark: () => {
411
+ return new Promise(resolve => {
412
+ gvc.notifyDataChange(vm.id);
413
+ resolve(true);
414
+ });
415
+ },
416
+ innerHTML: gvc => {
417
+ const id = gvc.glitter.getUUID();
418
+ return gvc.bindView(() => {
419
+ return {
420
+ bind: id,
421
+ view: () => {
422
+ return vm.documents
423
+ .map((dd) => {
424
+ return html ` <li class="w-100 px-2">
425
+ <div class="w-100 d-flex justify-content-between">
426
+ <div class="d-flex justify-content-start align-items-center gap-3">
427
+ <i
428
+ class="fa-solid fa-grip-dots-vertical dragItem cursor_pointer"
429
+ ></i>
430
+ <div class="tx_normal">${dd.title}</div>
431
+ </div>
432
+ ${gvc.bindView((() => {
433
+ const iconId = gvc.glitter.getUUID();
434
+ return {
435
+ bind: iconId,
436
+ view: () => {
437
+ return html ` <i
438
+ class="${language_data.content_array.includes(dd.id)
439
+ ? 'fa-solid fa-eye'
440
+ : 'fa-sharp fa-solid fa-eye-slash'} d-flex align-items-center justify-content-center cursor_pointer"
441
+ onclick="${gvc.event(() => {
442
+ if (language_data.content_array.includes(dd.id)) {
443
+ language_data.content_array =
444
+ language_data.content_array.filter((d) => d !== dd.id);
445
+ }
446
+ else {
447
+ language_data.content_array.push(dd.id);
448
+ }
449
+ gvc.notifyDataChange(iconId);
450
+ })}"
451
+ ></i>`;
452
+ },
453
+ divCreate: {
454
+ class: 'd-flex',
455
+ },
456
+ };
457
+ })())}
458
+ </div>
459
+ </li>`;
460
+ })
461
+ .join('');
462
+ },
463
+ divCreate: {
464
+ elem: 'ul',
465
+ class: 'w-100 my-2 d-flex flex-column gap-4',
466
+ },
467
+ onCreate: () => {
468
+ if (!vm.loading) {
469
+ gvc.glitter.addMtScript([
470
+ {
471
+ src: `https://raw.githack.com/SortableJS/Sortable/master/Sortable.js`,
451
472
  },
452
- };
453
- })())}
454
- </div>
455
- </li>`;
456
- })
457
- .join('');
458
- },
459
- divCreate: {
460
- elem: 'ul',
461
- class: 'w-100 my-2 d-flex flex-column gap-4',
462
- },
463
- onCreate: () => {
464
- if (!vm.loading) {
465
- gvc.glitter.addMtScript([
466
- {
467
- src: `https://raw.githack.com/SortableJS/Sortable/master/Sortable.js`,
468
- },
469
- ], () => { }, () => { });
470
- const interval = setInterval(() => {
471
- if (window.Sortable) {
472
- try {
473
- gvc.addStyle(`
473
+ ], () => { }, () => { });
474
+ const interval = setInterval(() => {
475
+ if (window.Sortable) {
476
+ try {
477
+ gvc.addStyle(`
474
478
  ul {
475
479
  list-style: none;
476
480
  padding: 0;
477
481
  }
478
482
  `);
479
- function swapArr(arr, t1, t2) {
480
- const data = arr[t1];
481
- arr.splice(t1, 1);
482
- arr.splice(t2, 0, data);
483
+ function swapArr(arr, t1, t2) {
484
+ const data = arr[t1];
485
+ arr.splice(t1, 1);
486
+ arr.splice(t2, 0, data);
487
+ }
488
+ let startIndex = 0;
489
+ Sortable.create(gvc.getBindViewElem(id).get(0), {
490
+ group: id,
491
+ animation: 100,
492
+ handle: '.dragItem',
493
+ onEnd: (evt) => {
494
+ swapArr(vm.documents, startIndex, evt.newIndex);
495
+ ApiUser.setPublicConfig({
496
+ key: 'text-manager',
497
+ user_id: 'manager',
498
+ value: vm.documents,
499
+ }).then(result => {
500
+ if (!result.response.result) {
501
+ dialog.errorMessage({ text: '設定失敗' });
502
+ }
503
+ });
504
+ },
505
+ onStart: (evt) => {
506
+ startIndex = evt.oldIndex;
507
+ },
508
+ });
483
509
  }
484
- let startIndex = 0;
485
- Sortable.create(gvc.getBindViewElem(id).get(0), {
486
- group: id,
487
- animation: 100,
488
- handle: '.dragItem',
489
- onEnd: (evt) => {
490
- swapArr(vm.documents, startIndex, evt.newIndex);
491
- ApiUser.setPublicConfig({
492
- key: 'text-manager',
493
- user_id: 'manager',
494
- value: vm.documents,
495
- }).then(result => {
496
- if (!result.response.result) {
497
- dialog.errorMessage({ text: '設定失敗' });
498
- }
499
- });
500
- },
501
- onStart: (evt) => {
502
- startIndex = evt.oldIndex;
503
- },
504
- });
505
- }
506
- catch (e) { }
507
- clearInterval(interval);
508
- }
509
- }, 100);
510
- }
511
- },
512
- };
513
- });
514
- },
515
- });
516
- })}"
517
- >
518
- 設定<i class="fa-regular fa-gear ms-1"></i>
519
- </div>
520
- </div>
521
- <div class="my-3">
522
- ${gvc.bindView((() => {
523
- const id = gvc.glitter.getUUID();
524
- return {
525
- bind: id,
526
- view: () => {
527
- return html ` <div
528
- class="d-flex justify-content-between align-items-center gap-3 mb-1"
529
- style="cursor: pointer;"
530
- onclick="${gvc.event(() => {
531
- const originContent = `${language_data.content}`;
532
- BgWidget.fullDialog({
533
- gvc: gvc,
534
- title: gvc2 => {
535
- return html `<div class="d-flex align-items-center" style="gap:10px;">
536
- ${`${cat_title}描述` +
537
- BgWidget.aiChatButton({
538
- gvc: gvc2,
539
- select: 'writer',
540
- click: () => {
541
- ProductAi.generateRichText(gvc, text => {
542
- language_data.content += text;
543
- gvc.notifyDataChange(vm.id);
544
- gvc2.recreateView();
545
- });
546
- },
547
- })}
548
- </div>`;
549
- },
550
- innerHTML: gvc2 => {
551
- return html ` <div>
552
- ${EditorElem.richText({
553
- gvc: gvc2,
554
- def: language_data.content,
555
- setHeight: '100vh',
556
- hiddenBorder: true,
557
- insertImageEvent: editor => {
558
- const mark = `{{${Tool.randomString(8)}}}`;
559
- editor.selection.setAtEnd(editor.$el.get(0));
560
- editor.html.insert(mark);
561
- editor.undo.saveStep();
562
- imageLibrary.selectImageLibrary(gvc, urlArray => {
563
- if (urlArray.length > 0) {
564
- const imgHTML = urlArray
565
- .map(url => {
566
- return html ` <img src="${url.data}" />`;
567
- })
568
- .join('');
569
- editor.html.set(editor.html
570
- .get(0)
571
- .replace(mark, html ` <div class="d-flex flex-column">${imgHTML}</div>`));
572
- editor.undo.saveStep();
573
- }
574
- else {
575
- dialog.errorMessage({ text: '請選擇至少一張圖片' });
510
+ catch (e) { }
511
+ clearInterval(interval);
576
512
  }
577
- }, html ` <div
578
- class="d-flex flex-column"
579
- style="border-radius: 10px 10px 0px 0px;background: #F2F2F2;"
580
- >
581
- 圖片庫
582
- </div>`, {
583
- mul: true,
584
- cancelEvent: () => {
585
- editor.html.set(editor.html.get(0).replace(mark, ''));
586
- editor.undo.saveStep();
587
- },
588
- });
589
- },
590
- callback: text => {
591
- language_data.content = text;
592
- },
593
- rich_height: `calc(${window.parent.innerHeight}px - 70px - 58px - 49px - 64px - 40px + ${document.body.clientWidth < 800 ? `70` : `0`}px)`,
594
- })}
595
- </div>`;
596
- },
597
- footer_html: (gvc2) => {
598
- return [
599
- BgWidget.cancel(gvc2.event(() => {
600
- language_data.content = originContent;
601
- gvc2.closeDialog();
602
- })),
603
- BgWidget.save(gvc2.event(() => {
604
- gvc2.closeDialog();
605
- gvc.notifyDataChange(id);
606
- })),
607
- ].join('');
608
- },
609
- closeCallback: () => {
610
- language_data.content = originContent;
611
- },
513
+ }, 100);
514
+ }
515
+ },
516
+ };
612
517
  });
613
- })}"
614
- >
615
- ${(() => {
616
- const text = gvc.glitter.utText.removeTag(language_data.content);
617
- return BgWidget.richTextView(Tool.truncateString(text, 100));
618
- })()}
619
- </div>`;
620
- },
621
- };
622
- })())}
623
- </div>
624
- ${(vm.documents || [])
625
- .filter((item) => {
626
- return language_data.content_array.includes(item.id);
627
- })
628
- .map((item, index) => {
629
- return BgWidget.openBoxContainer({
630
- gvc,
631
- tag: 'content_array',
632
- title: item.title,
633
- insideHTML: (() => {
634
- if (item.data.tags && item.data.tags.length > 0) {
635
- const id = obj.gvc.glitter.getUUID();
518
+ },
519
+ });
520
+ })}"
521
+ >
522
+ 設定<i class="fa-regular fa-gear ms-1"></i>
523
+ </div>
524
+ </div>
525
+ <div class="my-3">
526
+ ${gvc.bindView((() => {
527
+ const id = gvc.glitter.getUUID();
528
+ return {
529
+ bind: id,
530
+ view: () => {
636
531
  return html ` <div
637
- class="cursor_pointer text-end me-1 mb-2"
638
- onclick="${gvc.event(() => {
639
- const originJson = JSON.parse(JSON.stringify(language_data.content_json));
640
- BgWidget.settingDialog({
532
+ class="d-flex justify-content-between align-items-center gap-3 mb-1"
533
+ style="cursor: pointer;"
534
+ onclick="${gvc.event(() => {
535
+ const originContent = `${language_data.content}`;
536
+ BgWidget.fullDialog({
641
537
  gvc: gvc,
642
- title: '設定',
643
- innerHTML: gvc => {
538
+ title: gvc2 => {
539
+ return html `<div class="d-flex align-items-center" style="gap:10px;">
540
+ ${`${cat_title}描述` +
541
+ BgWidget.aiChatButton({
542
+ gvc: gvc2,
543
+ select: 'writer',
544
+ click: () => {
545
+ ProductAi.generateRichText(gvc, text => {
546
+ language_data.content += text;
547
+ gvc.notifyDataChange(vm.id);
548
+ gvc2.recreateView();
549
+ });
550
+ },
551
+ })}
552
+ </div>`;
553
+ },
554
+ innerHTML: gvc2 => {
644
555
  return html ` <div>
645
- ${item.data.tags
646
- .map((tag) => {
647
- return html ` <div>
648
- ${BgWidget.editeInput({
649
- gvc,
650
- title: tag.title,
651
- default: (() => {
652
- const docIndex = language_data.content_json.findIndex((c) => c.id === item.id);
653
- if (docIndex === -1) {
654
- return '';
655
- }
656
- if (language_data.content_json[docIndex].list === undefined) {
657
- return '';
658
- }
659
- const keyIndex = language_data.content_json[docIndex].list.findIndex((l) => l.key === tag.key);
660
- if (keyIndex === -1) {
661
- return '';
662
- }
663
- return language_data.content_json[docIndex].list[keyIndex]
664
- .value;
665
- })(),
666
- callback: text => {
667
- const docIndex = language_data.content_json.findIndex((c) => c.id === item.id);
668
- if (docIndex === -1) {
669
- language_data.content_json.push({
670
- id: item.id,
671
- list: [
672
- {
673
- key: tag.key,
674
- value: text,
675
- },
676
- ],
677
- });
678
- return;
556
+ ${EditorElem.richText({
557
+ gvc: gvc2,
558
+ def: language_data.content,
559
+ setHeight: '100vh',
560
+ hiddenBorder: true,
561
+ insertImageEvent: editor => {
562
+ const mark = `{{${Tool.randomString(8)}}}`;
563
+ editor.selection.setAtEnd(editor.$el.get(0));
564
+ editor.html.insert(mark);
565
+ editor.undo.saveStep();
566
+ imageLibrary.selectImageLibrary(gvc, urlArray => {
567
+ if (urlArray.length > 0) {
568
+ const imgHTML = urlArray
569
+ .map(url => {
570
+ return html ` <img src="${url.data}" />`;
571
+ })
572
+ .join('');
573
+ editor.html.set(editor.html
574
+ .get(0)
575
+ .replace(mark, html ` <div class="d-flex flex-column">${imgHTML}</div>`));
576
+ editor.undo.saveStep();
679
577
  }
680
- if (language_data.content_json[docIndex].list === undefined) {
681
- language_data.content_json[docIndex].list = [
682
- {
683
- key: tag.key,
684
- value: text,
685
- },
686
- ];
687
- return;
578
+ else {
579
+ dialog.errorMessage({ text: '請選擇至少一張圖片' });
688
580
  }
689
- const keyIndex = language_data.content_json[docIndex].list.findIndex((l) => l.key === tag.key);
690
- if (keyIndex === -1) {
691
- language_data.content_json[docIndex].list.push({
692
- key: tag.key,
693
- value: text,
694
- });
695
- return;
696
- }
697
- language_data.content_json[docIndex].list[keyIndex].value =
698
- text;
699
- },
700
- placeHolder: '輸入文本標籤',
701
- })}
702
- </div>`;
703
- })
704
- .join(BgWidget.mbContainer(12))}
705
- </div>`;
581
+ }, html ` <div
582
+ class="d-flex flex-column"
583
+ style="border-radius: 10px 10px 0px 0px;background: #F2F2F2;"
584
+ >
585
+ 圖片庫
586
+ </div>`, {
587
+ mul: true,
588
+ cancelEvent: () => {
589
+ editor.html.set(editor.html.get(0).replace(mark, ''));
590
+ editor.undo.saveStep();
591
+ },
592
+ });
593
+ },
594
+ callback: text => {
595
+ language_data.content = text;
596
+ },
597
+ rich_height: `calc(${window.parent.innerHeight}px - 70px - 58px - 49px - 64px - 40px + ${document.body.clientWidth < 800 ? `70` : `0`}px)`,
598
+ })}
599
+ </div>`;
706
600
  },
707
601
  footer_html: (gvc2) => {
708
602
  return [
709
603
  BgWidget.cancel(gvc2.event(() => {
710
- language_data.content_json = originJson;
604
+ language_data.content = originContent;
711
605
  gvc2.closeDialog();
712
606
  })),
713
607
  BgWidget.save(gvc2.event(() => {
714
608
  gvc2.closeDialog();
715
- gvc.notifyDataChange(`${id}-${index}`);
609
+ gvc.notifyDataChange(id);
716
610
  })),
717
611
  ].join('');
718
612
  },
719
613
  closeCallback: () => {
720
- language_data.content_json = originJson;
614
+ language_data.content = originContent;
721
615
  },
722
616
  });
723
617
  })}"
618
+ >
619
+ ${(() => {
620
+ const text = gvc.glitter.utText.removeTag(language_data.content);
621
+ return BgWidget.richTextView(Tool.truncateString(text, 100));
622
+ })()}
623
+ </div>`;
624
+ },
625
+ };
626
+ })())}
627
+ </div>
628
+ ${(vm.documents || [])
629
+ .filter((item) => {
630
+ return language_data.content_array.includes(item.id);
631
+ })
632
+ .map((item, index) => {
633
+ return BgWidget.openBoxContainer({
634
+ gvc,
635
+ tag: 'content_array',
636
+ title: item.title,
637
+ insideHTML: (() => {
638
+ if (item.data.tags && item.data.tags.length > 0) {
639
+ const id = obj.gvc.glitter.getUUID();
640
+ return html ` <div
641
+ class="cursor_pointer text-end me-1 mb-2"
642
+ onclick="${gvc.event(() => {
643
+ const originJson = JSON.parse(JSON.stringify(language_data.content_json));
644
+ BgWidget.settingDialog({
645
+ gvc: gvc,
646
+ title: '設定',
647
+ innerHTML: gvc => {
648
+ return html ` <div>
649
+ ${item.data.tags
650
+ .map((tag) => {
651
+ return html ` <div>
652
+ ${BgWidget.editeInput({
653
+ gvc,
654
+ title: tag.title,
655
+ default: (() => {
656
+ const docIndex = language_data.content_json.findIndex((c) => c.id === item.id);
657
+ if (docIndex === -1) {
658
+ return '';
659
+ }
660
+ if (language_data.content_json[docIndex].list === undefined) {
661
+ return '';
662
+ }
663
+ const keyIndex = language_data.content_json[docIndex].list.findIndex((l) => l.key === tag.key);
664
+ if (keyIndex === -1) {
665
+ return '';
666
+ }
667
+ return language_data.content_json[docIndex].list[keyIndex]
668
+ .value;
669
+ })(),
670
+ callback: text => {
671
+ const docIndex = language_data.content_json.findIndex((c) => c.id === item.id);
672
+ if (docIndex === -1) {
673
+ language_data.content_json.push({
674
+ id: item.id,
675
+ list: [
676
+ {
677
+ key: tag.key,
678
+ value: text,
679
+ },
680
+ ],
681
+ });
682
+ return;
683
+ }
684
+ if (language_data.content_json[docIndex].list === undefined) {
685
+ language_data.content_json[docIndex].list = [
686
+ {
687
+ key: tag.key,
688
+ value: text,
689
+ },
690
+ ];
691
+ return;
692
+ }
693
+ const keyIndex = language_data.content_json[docIndex].list.findIndex((l) => l.key === tag.key);
694
+ if (keyIndex === -1) {
695
+ language_data.content_json[docIndex].list.push({
696
+ key: tag.key,
697
+ value: text,
698
+ });
699
+ return;
700
+ }
701
+ language_data.content_json[docIndex].list[keyIndex].value =
702
+ text;
703
+ },
704
+ placeHolder: '輸入文本標籤',
705
+ })}
706
+ </div>`;
707
+ })
708
+ .join(BgWidget.mbContainer(12))}
709
+ </div>`;
710
+ },
711
+ footer_html: (gvc2) => {
712
+ return [
713
+ BgWidget.cancel(gvc2.event(() => {
714
+ language_data.content_json = originJson;
715
+ gvc2.closeDialog();
716
+ })),
717
+ BgWidget.save(gvc2.event(() => {
718
+ gvc2.closeDialog();
719
+ gvc.notifyDataChange(`${id}-${index}`);
720
+ })),
721
+ ].join('');
722
+ },
723
+ closeCallback: () => {
724
+ language_data.content_json = originJson;
725
+ },
726
+ });
727
+ })}"
728
+ >
729
+ 標籤設值
730
+ </div>
731
+ ${gvc.bindView((() => {
732
+ return {
733
+ bind: `${id}-${index}`,
734
+ view: () => {
735
+ const content = item.data.content || '';
736
+ const tags = item.data.tags;
737
+ const jsonData = language_data.content_json.find((c) => c.id === item.id);
738
+ return html ` <div
739
+ style="border: 2px #DDDDDD solid; border-radius: 6px; padding: 12px;"
740
+ >
741
+ ${tags
742
+ ? formatRichtext(content, tags, jsonData ? jsonData.list : [])
743
+ : content}
744
+ </div>`;
745
+ },
746
+ };
747
+ })())}`;
748
+ }
749
+ return html ` <div
750
+ style="border: 1px #DDDDDD solid; border-radius: 6px; padding: 12px"
724
751
  >
725
- 標籤設值
726
- </div>
727
- ${gvc.bindView((() => {
728
- return {
729
- bind: `${id}-${index}`,
730
- view: () => {
731
- const content = item.data.content || '';
732
- const tags = item.data.tags;
733
- const jsonData = language_data.content_json.find((c) => c.id === item.id);
734
- return html ` <div
735
- style="border: 2px #DDDDDD solid; border-radius: 6px; padding: 12px;"
736
- >
737
- ${tags
738
- ? formatRichtext(content, tags, jsonData ? jsonData.list : [])
739
- : content}
740
- </div>`;
741
- },
742
- };
743
- })())}`;
744
- }
745
- return html ` <div style="border: 1px #DDDDDD solid; border-radius: 6px; padding: 12px">
746
- ${item.data.content || ''}
747
- </div>`;
748
- })(),
749
- });
750
- })
751
- .join(BgWidget.mbContainer(8))}`;
752
- }),
753
- };
754
- })();
755
- }),
756
- ].join(BgWidget.mbContainer(12))),
752
+ ${item.data.content || ''}
753
+ </div>`;
754
+ })(),
755
+ });
756
+ })
757
+ .join(BgWidget.mbContainer(8))}`;
758
+ }),
759
+ };
760
+ })();
761
+ }),
762
+ ].join(BgWidget.mbContainer(12))),
757
763
  BgWidget.mainCard(html `
758
764
  <div
759
765
  class="d-flex align-items-center justify-content-between"
@@ -951,7 +957,7 @@ export class ShoppingSettingBasic {
951
957
  ${dd.language_title[sel_lan()] || dd.title}
952
958
  </div>
953
959
  ${(() => {
954
- let returnHTML = ``;
960
+ let returnHTML = '';
955
961
  dd.option.map((opt, index) => {
956
962
  var _a;
957
963
  opt.language_title = ((_a = opt.language_title) !== null && _a !== void 0 ? _a : {});
@@ -1054,7 +1060,7 @@ export class ShoppingSettingBasic {
1054
1060
  ],
1055
1061
  view: () => {
1056
1062
  var _a;
1057
- let returnHTML = html ``;
1063
+ let returnHTML = '';
1058
1064
  let specs_in_line = [];
1059
1065
  temp.option = (_a = temp.option) !== null && _a !== void 0 ? _a : [];
1060
1066
  specs_in_line.push(html ` <div class="d-flex flex-column w-100">
@@ -1148,7 +1154,7 @@ export class ShoppingSettingBasic {
1148
1154
  divCreate: { class: `w-100 position-relative` },
1149
1155
  }),
1150
1156
  innerHtml: (gvc) => {
1151
- return ``;
1157
+ return '';
1152
1158
  },
1153
1159
  editTitle: `編輯規格`,
1154
1160
  draggable: editSpectPage[specIndex].type === 'show',
@@ -1337,7 +1343,7 @@ export class ShoppingSettingBasic {
1337
1343
  <div
1338
1344
  class="d-flex flex-column"
1339
1345
  style="font-size: 16px;font-weight: 700;color:#393939;${postMD.shopee_id
1340
- ? ``
1346
+ ? ''
1341
1347
  : `margin-bottom: 10px;`}"
1342
1348
  >
1343
1349
  組合費用
@@ -1417,7 +1423,7 @@ export class ShoppingSettingBasic {
1417
1423
  <div
1418
1424
  class="d-flex flex-column"
1419
1425
  style="font-size: 16px;font-weight: 700;color:#393939;${postMD.shopee_id
1420
- ? ``
1426
+ ? ''
1421
1427
  : `margin-bottom: 10px;`}"
1422
1428
  >
1423
1429
  組合費用 ${BgWidget.grayNote('如未輸入庫存數量則不追蹤庫存')}
@@ -1470,7 +1476,7 @@ export class ShoppingSettingBasic {
1470
1476
  return BgWidget.mainCard(html `
1471
1477
  <div
1472
1478
  style="font-size: 16px;font-weight: 700;color:#393939;${postMD.shopee_id
1473
- ? ``
1479
+ ? ''
1474
1480
  : `margin-bottom: 18px;`}"
1475
1481
  >
1476
1482
  <span class="me-2">規格設定</span>
@@ -1479,7 +1485,7 @@ export class ShoppingSettingBasic {
1479
1485
  : ''}
1480
1486
  </div>
1481
1487
  <div
1482
- class="w-100 ${postMD.shopee_id ? `` : `d-none`}"
1488
+ class="w-100 ${postMD.shopee_id ? '' : `d-none`}"
1483
1489
  style="font-size: 14px;font-weight: 400;color: #8D8D8D;margin-bottom: 18px;"
1484
1490
  >
1485
1491
  此商品來源為蝦皮電商平台,將自動同步蝦皮庫存
@@ -1795,7 +1801,7 @@ export class ShoppingSettingBasic {
1795
1801
  style="margin-bottom:18px;padding: 0px 20px;gap:18px;color:#393939;"
1796
1802
  >
1797
1803
  ${(() => {
1798
- let arrayHTML = ``;
1804
+ let arrayHTML = '';
1799
1805
  postMD.specs[0].option.map((option) => {
1800
1806
  option.sortQueue.map((data) => {
1801
1807
  var _a;
@@ -2243,7 +2249,7 @@ export class ShoppingSettingBasic {
2243
2249
  </div>
2244
2250
  </div>
2245
2251
  `
2246
- : ``}
2252
+ : ''}
2247
2253
  </div>
2248
2254
  </div>
2249
2255
  `;
@@ -2735,7 +2741,7 @@ export class ShoppingSettingBasic {
2735
2741
  style="width: 100%;height: 40px;padding: 0px 18px;border-radius: 10px;border: 1px solid #DDD;background: #FFF;"
2736
2742
  value="${(_a = data[dd]) !== null && _a !== void 0 ? _a : 0}"
2737
2743
  min="0"
2738
- ${index === 1 ? `readonly` : ``}
2744
+ ${index === 1 ? `readonly` : ''}
2739
2745
  onclick="${gvc.event(() => {
2740
2746
  if (index === 1) {
2741
2747
  ProductSetting.showBatchEditDialog({
@@ -2780,19 +2786,19 @@ export class ShoppingSettingBasic {
2780
2786
  >
2781
2787
  <option
2782
2788
  value="none"
2783
- ${data.shipment_type == 'none' ? `selected` : ``}
2789
+ ${data.shipment_type == 'none' ? `selected` : ''}
2784
2790
  >
2785
2791
  無運費
2786
2792
  </option>
2787
2793
  <option
2788
2794
  value="volume"
2789
- ${data.shipment_type == 'volume' ? `selected` : ``}
2795
+ ${data.shipment_type == 'volume' ? `selected` : ''}
2790
2796
  >
2791
2797
  依材積
2792
2798
  </option>
2793
2799
  <option
2794
2800
  value="weight"
2795
- ${data.shipment_type == 'weight' ? `selected` : ``}
2801
+ ${data.shipment_type == 'weight' ? `selected` : ''}
2796
2802
  >
2797
2803
  依重量
2798
2804
  </option>
@@ -2802,7 +2808,7 @@ export class ShoppingSettingBasic {
2802
2808
  `;
2803
2809
  },
2804
2810
  divCreate: {
2805
- class: `w-100 ${viewID} ${index === 0 && postMD.specs.length > 1 ? `border-top` : ``}`,
2811
+ class: `w-100 ${viewID} ${index === 0 && postMD.specs.length > 1 ? `border-top` : ''}`,
2806
2812
  },
2807
2813
  });
2808
2814
  })
@@ -2828,7 +2834,7 @@ export class ShoppingSettingBasic {
2828
2834
  };
2829
2835
  }));
2830
2836
  })()
2831
- : ``,
2837
+ : '',
2832
2838
  BgWidget.mainCard(obj.gvc.bindView(() => {
2833
2839
  var _a;
2834
2840
  postMD.seo = (_a = postMD.seo) !== null && _a !== void 0 ? _a : {
@@ -2846,7 +2852,7 @@ export class ShoppingSettingBasic {
2846
2852
  搜尋引擎列表 ${BgWidget.languageInsignia(sel_lan(), 'margin-left:5px;')}
2847
2853
  </div>
2848
2854
  ${[
2849
- html ` <div class="tx_normal fw-normal mb-2" style="">${cat_title}網址</div>`,
2855
+ html ` <div class="tx_normal fw-normal mb-2">${cat_title}網址</div>`,
2850
2856
  html ` <div
2851
2857
  style="justify-content: flex-start; align-items: center; display: inline-flex;border:1px solid #EAEAEA;border-radius: 10px;overflow: hidden; ${document
2852
2858
  .body.clientWidth > 768
@@ -2919,7 +2925,7 @@ ${(_b = language_data.seo.content) !== null && _b !== void 0 ? _b : ''}</textare
2919
2925
  };
2920
2926
  })),
2921
2927
  ]
2922
- .filter(str => str.length > 0)
2928
+ .filter(Boolean)
2923
2929
  .join(BgWidget.mbContainer(18)),
2924
2930
  ratio: 77,
2925
2931
  }, {