ts-glitter 21.8.3 → 21.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/backend-manager/bg-dialog.js +342 -100
  4. package/lowcode/backend-manager/bg-dialog.ts +432 -145
  5. package/lowcode/backend-manager/bg-widget.js +4 -4
  6. package/lowcode/backend-manager/bg-widget.ts +5 -5
  7. package/lowcode/cms-plugin/shopping-discount-setting.js +148 -92
  8. package/lowcode/cms-plugin/shopping-discount-setting.ts +162 -111
  9. package/lowcode/cms-plugin/shopping-product-stock.js +58 -45
  10. package/lowcode/cms-plugin/shopping-product-stock.ts +66 -49
  11. package/lowcode/css/editor.css +8 -9
  12. package/lowcode/editor/basic-component.js +0 -10
  13. package/lowcode/editor/basic-component.ts +1 -11
  14. package/lowcode/glitter-base/route/article.js +50 -51
  15. package/lowcode/glitter-base/route/article.ts +102 -103
  16. package/lowcode/glitter-base/route/recommend.js +1 -0
  17. package/lowcode/glitter-base/route/recommend.ts +141 -123
  18. package/lowcode/glitterBundle/plugins/html-render.js +2 -0
  19. package/lowcode/glitterBundle/plugins/html-render.ts +1 -0
  20. package/lowcode/jspage/function-page/tool-setting.js +0 -1
  21. package/lowcode/jspage/function-page/tool-setting.ts +0 -1
  22. package/lowcode/jspage/main.js +6 -1
  23. package/lowcode/jspage/main.ts +6 -1
  24. package/lowcode/modules/image-library-clone.ts +2 -0
  25. package/lowcode/modules/image-library.js +118 -155
  26. package/lowcode/modules/image-library.ts +134 -197
  27. package/lowcode/official_view_component/official/component.js +1 -1
  28. package/lowcode/official_view_component/official/component.ts +1 -1
  29. package/lowcode/public-components/banner/first-banner.js +85 -50
  30. package/lowcode/public-components/banner/first-banner.ts +96 -59
  31. package/lowcode/public-components/layout-plugin/social-links-01.js +23 -44
  32. package/lowcode/public-components/layout-plugin/social-links-01.ts +23 -48
  33. package/package.json +1 -1
  34. package/src/api-public/controllers/article.js +11 -0
  35. package/src/api-public/controllers/article.js.map +1 -1
  36. package/src/api-public/controllers/article.ts +13 -0
  37. package/src/api-public/controllers/recommend.js +1 -0
  38. package/src/api-public/controllers/recommend.js.map +1 -1
  39. package/src/api-public/controllers/recommend.ts +99 -89
  40. package/src/api-public/services/checkout-event.js +4 -3
  41. package/src/api-public/services/checkout-event.js.map +1 -1
  42. package/src/api-public/services/checkout-event.ts +11 -7
  43. package/src/api-public/services/post.js +7 -17
  44. package/src/api-public/services/post.js.map +1 -1
  45. package/src/api-public/services/recommend.d.ts +1 -0
  46. package/src/api-public/services/recommend.js +12 -2
  47. package/src/api-public/services/recommend.js.map +1 -1
  48. package/src/api-public/services/recommend.ts +375 -354
  49. package/src/api-public/services/shopping.d.ts +1 -0
  50. package/src/api-public/services/shopping.js +4 -2
  51. package/src/api-public/services/shopping.js.map +1 -1
  52. package/src/api-public/services/shopping.ts +7 -2
@@ -74,7 +74,19 @@ export class imageLibrary {
74
74
  function getPublicConfig(callback) {
75
75
  ApiUser.getPublicConfig('image-manager', 'manager').then((data) => {
76
76
  if (data.response.value) {
77
+ const tagDiv = window.parent.document.querySelector('.tag-title');
77
78
  vm.link = data.response.value;
79
+ if (tagDiv) {
80
+ const tag = tagDiv.getAttribute('data-tag');
81
+ if (tag) {
82
+ console.log('vm.link.filter(item => item.tag.includes(tag)) -- ', vm.link.filter(item => item.tag.includes(tag)));
83
+ vm.link
84
+ .filter(item => item.tag.includes(tag))
85
+ .forEach(item => {
86
+ item.selected = true;
87
+ });
88
+ }
89
+ }
78
90
  function loop(array) {
79
91
  array.map(dd => {
80
92
  var _a;
@@ -253,7 +265,7 @@ export class imageLibrary {
253
265
  });
254
266
  }
255
267
  fileItem.selected = !defaultSelect;
256
- gvc.notifyDataChange(vm.id);
268
+ gvc.notifyDataChange([viewID, ids.selectBarID]);
257
269
  event.stopPropagation();
258
270
  })}"
259
271
  ${!gvc.glitter.isTouchDevice()
@@ -415,6 +427,7 @@ export class imageLibrary {
415
427
  });
416
428
  }
417
429
  getPublicConfig(() => {
430
+ const tagDiv = document.querySelector('.tag-title');
418
431
  gvc.notifyDataChange(vm.id);
419
432
  });
420
433
  return gvc.bindView(() => {
@@ -433,6 +446,7 @@ export class imageLibrary {
433
446
  onclick="${gvc.event(() => {
434
447
  closeFolderView();
435
448
  vm.type = 'file';
449
+ cf.key = 'file';
436
450
  gvc.notifyDataChange(vm.id);
437
451
  })}"
438
452
  >
@@ -496,14 +510,67 @@ export class imageLibrary {
496
510
  })
497
511
  .join('');
498
512
  }
499
- function drawSelectBar(selectCount) {
513
+ function pushFolder(folder, imageArray) {
514
+ imageArray.forEach(image => {
515
+ image.selected = false;
516
+ });
517
+ folder.data.push(...imageArray.filter(image => !folder.data.some((existingImage) => existingImage.id === image.id)));
518
+ return folder.data;
519
+ }
520
+ function pushDataToFolder(selectData) {
521
+ selectData.map(data => {
522
+ let matchingElement = vm.link.find(item2 => item2.id === data.id);
523
+ if (matchingElement) {
524
+ if (!matchingElement.tag) {
525
+ matchingElement.tag = [];
526
+ }
527
+ if (!matchingElement.tag.includes(vm.tag)) {
528
+ matchingElement.tag.push(vm.tag);
529
+ }
530
+ }
531
+ data.selected = false;
532
+ });
533
+ }
534
+ function drawAlbumInsertImage(callback) {
535
+ return html `
536
+ <div class="w-100 ${gClass('new-album-add-block')}">
537
+ <div
538
+ class="btn1"
539
+ onclick="${gvc.event(() => {
540
+ that.selectImageLibrary(gvc, selectData => {
541
+ callback(selectData);
542
+ }, `<div class="d-flex flex-column tag-title" data-tag="${vm.tag}" style="border-radius: 10px 10px 0 0;background: #F2F2F2;">${vm.tag}</div>`, {
543
+ key: 'album',
544
+ mul: true,
545
+ });
546
+ })}"
547
+ >
548
+ 從圖庫中選擇
549
+ </div>
550
+ <div
551
+ class="btn1"
552
+ onclick="${gvc.event(() => {
553
+ cf.plus(gvc, fileArray => {
554
+ vm.link.push(...fileArray);
555
+ callback(fileArray);
556
+ save(() => {
557
+ gvc.notifyDataChange(vm.id);
558
+ });
559
+ }, 'file');
560
+ })}"
561
+ >
562
+ 上傳新圖片
563
+ </div>
564
+ </div>
565
+ `;
566
+ }
567
+ function drawSelectBar(data) {
500
568
  return gvc.bindView({
501
569
  bind: ids.selectBarID,
502
570
  view: () => {
571
+ const selectCount = getSelectCount(data);
503
572
  return html `
504
- <div
505
- class="${selectCount ? `` : `d-none`} ${gClass('select-bar-text')}"
506
- >
573
+ <div class="${selectCount ? `` : `d-none`} ${gClass('select-bar-text')}">
507
574
  已選取${selectCount}項
508
575
  </div>
509
576
  <div class="ms-auto ${gClass('search-raw')}">上傳時間舊>新</div>
@@ -515,21 +582,7 @@ export class imageLibrary {
515
582
  });
516
583
  }
517
584
  if (vm.type == 'folderADD') {
518
- function pushFolder(folder, imageArray) {
519
- imageArray.forEach(image => {
520
- image.selected = false;
521
- });
522
- return folder.data.push(...imageArray);
523
- }
524
- vm.newFolder = {
525
- selected: false,
526
- title: '',
527
- data: [],
528
- items: [],
529
- type: 'folder',
530
- tag: [],
531
- id: gvc.glitter.getUUID(),
532
- };
585
+ const copyLink = structuredClone(vm.link);
533
586
  return html `
534
587
  <div class="d-flex flex-column ${gClass('new-album-title-bar')}">
535
588
  相簿名稱
@@ -542,35 +595,11 @@ export class imageLibrary {
542
595
  })}"
543
596
  />
544
597
  </div>
545
- <div class="w-100 ${gClass('new-album-add-block')}">
546
- <div
547
- class="btn1"
548
- onclick="${gvc.event(() => {
549
- this.selectImageLibrary(gvc, selectData => {
550
- pushFolder(vm.newFolder, selectData);
551
- gvc.notifyDataChange('folderItemGroup');
552
- }, `<div class="d-flex flex-column" style="border-radius: 10px 10px 0px 0px;background: #F2F2F2;">${vm.tag}</div>`, {
553
- key: 'album',
554
- mul: true,
555
- });
556
- })}"
557
- >
558
- 從圖庫中選擇
559
- </div>
560
- <div
561
- class="btn1"
562
- onclick="${gvc.event(() => {
563
- cf.plus(gvc, fileArray => {
564
- pushFolder(vm.newFolder, fileArray);
565
- save(() => {
566
- gvc.notifyDataChange('folderItemGroup');
567
- });
568
- }, 'file');
569
- })}"
570
- >
571
- 上傳新圖片
572
- </div>
573
- </div>
598
+ ${drawAlbumInsertImage((selectData) => {
599
+ pushFolder(vm.newFolder, selectData);
600
+ vm.link.push(vm.newFolder);
601
+ gvc.notifyDataChange('folderItemGroup');
602
+ })}
574
603
  ${gvc.bindView({
575
604
  bind: `folderItemGroup`,
576
605
  view: () => {
@@ -604,7 +633,7 @@ export class imageLibrary {
604
633
  options: FilterOptions.imageLibraryOrderBy,
605
634
  })}
606
635
  </div>
607
- ${drawSelectBar(getSelectCount(group))}
636
+ ${drawSelectBar(group)}
608
637
  ${gvc.bindView({
609
638
  bind: `folderItemGroup`,
610
639
  view: () => {
@@ -631,101 +660,14 @@ export class imageLibrary {
631
660
  })}"
632
661
  />
633
662
  </div>
634
- <div class="d-flex w-100" style="gap:14px;margin-top: 12px;">
635
- ${BgWidget.searchFilter(gvc.event(e => {
636
- vm.query = e.value;
637
- gvc.notifyDataChange(vm.id);
638
- }), vm.query || '', '搜尋圖片')}
639
- ${BgWidget.updownFilter({
640
- gvc,
641
- callback: (value) => {
642
- vm.orderString = value;
643
- gvc.notifyDataChange(vm.id);
644
- },
645
- default: vm.orderString || 'default',
646
- options: FilterOptions.imageLibraryOrderBy,
663
+ ${drawAlbumInsertImage((selectData) => {
664
+ pushDataToFolder(selectData);
665
+ save(() => {
666
+ gvc.notifyDataChange('folderItemGroup');
667
+ });
647
668
  })}
648
- </div>
649
669
  <div class="d-flex w-100 justify-content-end" style="gap:12px;margin-top: 18px;">
650
- ${drawSelectBar(getSelectCount(vm.link))}
651
-
652
- ${BgWidget.grayButton('新增圖片', gvc.event(() => {
653
- const thatGVC = gvc;
654
- gvc.glitter.innerDialog((gvc) => {
655
- return html `
656
- <div style="width: 445px;height: 255px;border-radius: 10px;background: #FFF;">
657
- <div
658
- class="d-flex"
659
- style="color:#393939;display: flex;padding: 12px 20px;align-items: center;gap: 10px;"
660
- >
661
- 新增圖片
662
- <span
663
- class="d-flex align-items-center justify-content-center"
664
- style="margin-left: auto;cursor: pointer;"
665
- onclick="${gvc.event(() => {
666
- gvc.glitter.closeDiaLog('add');
667
- })}"
668
- >
669
- <svg
670
- xmlns="http://www.w3.org/2000/svg"
671
- width="14"
672
- height="14"
673
- viewBox="0 0 14 14"
674
- fill="none"
675
- >
676
- <path d="M1 1L13 13" stroke="#393939" stroke-linecap="round" />
677
- <path d="M13 1L1 13" stroke="#393939" stroke-linecap="round" />
678
- </svg>
679
- </span>
680
- </div>
681
- <div class="d-flex justify-content-center" style="padding-top:61px;gap:14px;">
682
- <div
683
- style="padding: 10px 18px;border-radius: 10px;border: 1px solid #DDD;background: #FFF;box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.10);cursor: pointer;"
684
- onclick="${gvc.event(() => {
685
- this.selectImageLibrary(gvc, selectData => {
686
- selectData.map(data => {
687
- let matchingElement = vm.link.find(item2 => item2.id === data.id);
688
- if (matchingElement) {
689
- if (!matchingElement.tag) {
690
- matchingElement.tag = [];
691
- }
692
- if (!matchingElement.tag.includes(vm.tag)) {
693
- matchingElement.tag.push(vm.tag);
694
- }
695
- }
696
- data.selected = false;
697
- });
698
- gvc.glitter.closeDiaLog('add');
699
- thatGVC.notifyDataChange(vm.id);
700
- }, `<div class="d-flex flex-column" style="border-radius: 10px 10px 0px 0px;background: #F2F2F2;">${vm.tag}</div>`, {
701
- key: 'album',
702
- mul: true,
703
- });
704
- })}"
705
- >
706
- 從圖庫中選擇
707
- </div>
708
- <div
709
- style="padding: 10px 18px;border-radius: 10px;border: 1px solid #DDD;background: #FFF;box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.10);cursor: pointer;"
710
- onclick="${gvc.event(() => {
711
- cf.plus(gvc, fileArray => {
712
- fileArray.forEach(item => {
713
- item.tag = [];
714
- item.tag.push(vm.tag);
715
- vm.link.push(item);
716
- });
717
- gvc.glitter.closeDiaLog('add');
718
- thatGVC.notifyDataChange(vm.id);
719
- }, 'file');
720
- })}"
721
- >
722
- 上傳新圖片
723
- </div>
724
- </div>
725
- </div>
726
- `;
727
- }, 'add');
728
- }))}
670
+ ${drawSelectBar(vm.link)}
729
671
  </div>
730
672
  <div>
731
673
  ${gvc.bindView({
@@ -784,19 +726,19 @@ export class imageLibrary {
784
726
  margin-top: 18px;
785
727
  margin-bottom: 8px;
786
728
  }
787
- .${ids.classPrefix}-select-bar-text{
729
+ .${ids.classPrefix}-select-bar-text {
788
730
  flex: 1 1 0;
789
731
  color: #393939;
790
732
  font-size: 14px;
791
733
  font-weight: 700;
792
- word-wrap: break-word
734
+ word-wrap: break-word;
793
735
  }
794
736
 
795
737
  .${ids.classPrefix}-new-album-title-bar {
796
738
  font-size: 16px;
797
739
  font-style: normal;
798
740
  font-weight: 400;
799
- gap: 8px;
741
+ gap: 12px;
800
742
  }
801
743
 
802
744
  .${ids.classPrefix}-new-album-title-bar input {
@@ -807,7 +749,7 @@ export class imageLibrary {
807
749
  }
808
750
 
809
751
  .${ids.classPrefix}-new-album-add-block {
810
- margin-top: 18px;
752
+ margin-top: 12px;
811
753
  padding: 39px 0;
812
754
  display: flex;
813
755
  justify-content: center;
@@ -815,7 +757,7 @@ export class imageLibrary {
815
757
  border-radius: 10px;
816
758
  border: 1px solid #ddd;
817
759
  background: #fff;
818
- gap: 14px;
760
+ gap: 12px;
819
761
  }
820
762
 
821
763
  .${ids.classPrefix}-new-album-add-block .btn1 {
@@ -853,7 +795,7 @@ export class imageLibrary {
853
795
  class="w-100 d-inline-flex flex-column justify-content-start align-items-start ${gClass('content')}"
854
796
  >
855
797
  <div class="fixed-top-section">
856
- <div class=" ${cf.key == 'album' ? `d-none` : `d-flex`}" style="gap:14px;">${pageBTN()}</div>
798
+ <div class=" ${cf.key != 'album' ? `d-flex` : `d-none`}" style="gap:14px;">${pageBTN()}</div>
857
799
  <div class="d-flex w-100" style="gap:14px;">
858
800
  ${BgWidget.searchFilter(gvc.event(e => {
859
801
  vm.query = e.value;
@@ -869,9 +811,9 @@ export class imageLibrary {
869
811
  options: FilterOptions.imageLibraryOrderBy,
870
812
  })}
871
813
  </div>
814
+ ${drawSelectBar(vm.link)}
872
815
  </div>
873
816
  <div class="scrollable-bottom-section d-flex flex-column">
874
- ${drawSelectBar(getSelectCount(vm.link))}
875
817
  <div
876
818
  style="align-self: stretch; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 18px; display: flex"
877
819
  >
@@ -929,6 +871,15 @@ export class imageLibrary {
929
871
  else {
930
872
  vm.tag = '';
931
873
  vm.type = 'folderADD';
874
+ vm.newFolder = {
875
+ selected: false,
876
+ title: '',
877
+ data: [],
878
+ items: [],
879
+ type: 'folder',
880
+ tag: [],
881
+ id: gvc.glitter.getUUID(),
882
+ };
932
883
  gvc.notifyDataChange(vm.id);
933
884
  }
934
885
  })}"
@@ -940,9 +891,9 @@ export class imageLibrary {
940
891
  }
941
892
  return html `
942
893
  <div
943
- class="w-100 ${cf.key == 'album'
944
- ? `d-none`
945
- : `d-flex`} align-items-center justify-content-center"
894
+ class="w-100 ${vm.type == 'file' || vm.type == 'folder'
895
+ ? `d-flex`
896
+ : `d-none`} align-items-center justify-content-center"
946
897
  style="padding: 39px 0;border-radius: 10px;border: 1px solid #DDD;background: #FFF;"
947
898
  >
948
899
  <div
@@ -959,6 +910,15 @@ export class imageLibrary {
959
910
  else {
960
911
  vm.tag = '';
961
912
  vm.type = 'folderADD';
913
+ vm.newFolder = {
914
+ selected: false,
915
+ title: '',
916
+ data: [],
917
+ items: [],
918
+ type: 'folder',
919
+ tag: [],
920
+ id: gvc.glitter.getUUID(),
921
+ };
962
922
  gvc.notifyDataChange(vm.id);
963
923
  }
964
924
  })}"
@@ -1075,6 +1035,7 @@ export class imageLibrary {
1075
1035
  type: 'cancel',
1076
1036
  label: cancelLabel,
1077
1037
  onClick: () => {
1038
+ cf.key = 'file';
1078
1039
  if (cf.cancelEvent)
1079
1040
  cf.cancelEvent();
1080
1041
  if (vm.type === 'folderView' || vm.type === 'folderADD') {
@@ -1097,7 +1058,7 @@ export class imageLibrary {
1097
1058
  label: '編輯',
1098
1059
  onClick: () => {
1099
1060
  vm.type = 'folderEdit';
1100
- cf.key = "album";
1061
+ cf.key = 'album';
1101
1062
  gvc.notifyDataChange(vm.id);
1102
1063
  },
1103
1064
  },
@@ -1479,7 +1440,9 @@ export class imageLibrary {
1479
1440
  BgWidget.danger(gvc.event(() => {
1480
1441
  const dialog = new ShareDialog(gvc.glitter);
1481
1442
  function deleteImage() {
1482
- const text = (item.type == 'folder') ? `此操作不可復原。確定要刪除相簿${item.title}嗎?` : '刪除此圖片後,所有使用它的頁面與商品將無法顯示。<br>是否確定?';
1443
+ const text = item.type == 'folder'
1444
+ ? `此操作不可復原。確定要刪除相簿${item.title}嗎?`
1445
+ : '刪除此圖片後,所有使用它的頁面與商品將無法顯示。<br>是否確定?';
1483
1446
  dialog.checkYesOrNotWithCustomWidth({
1484
1447
  width: '432',
1485
1448
  text: text,