ts-glitter 13.5.8 → 13.5.9

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 (103) hide show
  1. package/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/backend-manager/bg-blog.js +146 -143
  4. package/lowcode/backend-manager/bg-blog.ts +1008 -1005
  5. package/lowcode/backend-manager/bg-graph-api.js +1 -1
  6. package/lowcode/backend-manager/bg-graph-api.ts +1 -1
  7. package/lowcode/backend-manager/bg-line.js +42 -17
  8. package/lowcode/backend-manager/bg-line.ts +41 -20
  9. package/lowcode/backend-manager/bg-notify.js +69 -18
  10. package/lowcode/backend-manager/bg-notify.ts +68 -25
  11. package/lowcode/backend-manager/bg-project.js +7 -7
  12. package/lowcode/backend-manager/bg-project.ts +7 -7
  13. package/lowcode/backend-manager/bg-shopping.js +9 -9
  14. package/lowcode/backend-manager/bg-shopping.ts +9 -9
  15. package/lowcode/backend-manager/bg-sns.js +46 -26
  16. package/lowcode/backend-manager/bg-sns.ts +48 -34
  17. package/lowcode/backend-manager/bg-wallet.js +2 -2
  18. package/lowcode/backend-manager/bg-wallet.ts +2 -2
  19. package/lowcode/backend-manager/bg-widget.js +17 -6
  20. package/lowcode/backend-manager/bg-widget.ts +20 -7
  21. package/lowcode/cms-plugin/ai-points-list.js +2 -2
  22. package/lowcode/cms-plugin/ai-points-list.ts +2 -2
  23. package/lowcode/cms-plugin/ai-points.js +1 -4
  24. package/lowcode/cms-plugin/ai-points.ts +1 -4
  25. package/lowcode/cms-plugin/app-release.js +73 -89
  26. package/lowcode/cms-plugin/app-release.ts +120 -130
  27. package/lowcode/cms-plugin/auto-reply.js +10 -4
  28. package/lowcode/cms-plugin/auto-reply.ts +10 -4
  29. package/lowcode/cms-plugin/data-analyze.js +186 -129
  30. package/lowcode/cms-plugin/data-analyze.ts +411 -347
  31. package/lowcode/cms-plugin/form-setting.js +2 -2
  32. package/lowcode/cms-plugin/form-setting.ts +2 -2
  33. package/lowcode/cms-plugin/line-auto-reply.js +5 -5
  34. package/lowcode/cms-plugin/line-auto-reply.ts +5 -5
  35. package/lowcode/cms-plugin/menus-setting.js +1 -1
  36. package/lowcode/cms-plugin/menus-setting.ts +1 -1
  37. package/lowcode/cms-plugin/module/form-module.ts +1 -0
  38. package/lowcode/cms-plugin/pos-checkout-setting.js +1 -1
  39. package/lowcode/cms-plugin/pos-checkout-setting.ts +1 -1
  40. package/lowcode/cms-plugin/shopping-collections.js +0 -1
  41. package/lowcode/cms-plugin/shopping-collections.ts +0 -1
  42. package/lowcode/cms-plugin/shopping-discount-setting.js +2 -2
  43. package/lowcode/cms-plugin/shopping-discount-setting.ts +2 -2
  44. package/lowcode/cms-plugin/shopping-finance-setting.js +39 -14
  45. package/lowcode/cms-plugin/shopping-finance-setting.ts +37 -14
  46. package/lowcode/cms-plugin/shopping-product-setting.js +2 -3
  47. package/lowcode/cms-plugin/shopping-product-setting.ts +2 -3
  48. package/lowcode/cms-plugin/shopping-product-text.js +5 -1
  49. package/lowcode/cms-plugin/shopping-product-text.ts +5 -1
  50. package/lowcode/cms-plugin/sms-points.js +2 -7
  51. package/lowcode/cms-plugin/sms-points.ts +2 -6
  52. package/lowcode/cms-plugin/sns-auto-reply.js +4 -4
  53. package/lowcode/cms-plugin/sns-auto-reply.ts +4 -4
  54. package/lowcode/cms-plugin/third-party-apple.js +118 -111
  55. package/lowcode/cms-plugin/third-party-apple.ts +116 -112
  56. package/lowcode/cms-plugin/third-party-facebook.js +170 -160
  57. package/lowcode/cms-plugin/third-party-facebook.ts +137 -128
  58. package/lowcode/cms-plugin/third-party-google.js +144 -118
  59. package/lowcode/cms-plugin/third-party-google.ts +164 -140
  60. package/lowcode/cms-plugin/third-party-line.js +117 -106
  61. package/lowcode/cms-plugin/third-party-line.ts +123 -115
  62. package/lowcode/cms-plugin/user-list.js +3 -3
  63. package/lowcode/cms-plugin/user-list.ts +3 -3
  64. package/lowcode/cms-plugin/user-login-setting.js +2 -2
  65. package/lowcode/cms-plugin/user-login-setting.ts +2 -2
  66. package/lowcode/cms-plugin/wallet-list.js +2 -2
  67. package/lowcode/cms-plugin/wallet-list.ts +2 -2
  68. package/lowcode/cms-plugin/web-config-setting.js +1 -1
  69. package/lowcode/cms-plugin/web-config-setting.ts +1 -1
  70. package/lowcode/css/editor.css +13 -7
  71. package/lowcode/glitterBundle/html-component/global-widget.js +54 -29
  72. package/lowcode/glitterBundle/html-component/global-widget.ts +95 -72
  73. package/lowcode/glitterBundle/html-component/widget.js +44 -38
  74. package/lowcode/glitterBundle/html-component/widget.ts +166 -157
  75. package/lowcode/glitterBundle/module/html-generate.js +3 -3
  76. package/lowcode/glitterBundle/module/html-generate.ts +3 -3
  77. package/lowcode/index.html +2 -2
  78. package/lowcode/jspage/editor.js +201 -220
  79. package/lowcode/jspage/editor.ts +317 -329
  80. package/lowcode/jspage/function-page/main_editor.js +68 -10
  81. package/lowcode/jspage/function-page/main_editor.ts +65 -10
  82. package/lowcode/jspage/function-page/server-editor/router/api-manager.js +1 -1
  83. package/lowcode/jspage/function-page/server-editor/router/api-manager.ts +1 -1
  84. package/lowcode/jspage/function-page/server-editor/router/domain-manager.js +1 -1
  85. package/lowcode/jspage/function-page/server-editor/router/domain-manager.ts +1 -1
  86. package/lowcode/jspage/function-page/tool-setting.js +340 -320
  87. package/lowcode/jspage/function-page/tool-setting.ts +351 -331
  88. package/lowcode/official_view_component/official/component.js +132 -98
  89. package/lowcode/official_view_component/official/component.ts +151 -114
  90. package/package.json +1 -1
  91. package/src/api-public/services/ai-robot.js.map +1 -1
  92. package/src/api-public/services/fake-data-model/fake-order.js.map +1 -1
  93. package/src/api-public/services/line-message.d.ts +1 -1
  94. package/src/api-public/services/line-message.js +8 -2
  95. package/src/api-public/services/line-message.js.map +1 -1
  96. package/src/api-public/services/line-message.ts +10 -3
  97. package/src/api-public/services/schedule.js +5 -1
  98. package/src/api-public/services/schedule.js.map +1 -1
  99. package/src/api-public/services/schedule.ts +5 -1
  100. package/src/api-public/services/shopping.d.ts +1 -1
  101. package/src/modules/database.d.ts +2 -1
  102. package/src/modules/database.js.map +1 -1
  103. package/src/update-script.js.map +1 -1
package/lowcode/Entry.js CHANGED
@@ -59,7 +59,7 @@ export class Entry {
59
59
  }
60
60
  window.renderClock = (_a = window.renderClock) !== null && _a !== void 0 ? _a : clockF();
61
61
  console.log(`Entry-time:`, window.renderClock.stop());
62
- glitter.share.editerVersion = "V_13.5.8";
62
+ glitter.share.editerVersion = "V_13.5.9";
63
63
  glitter.share.start = (new Date());
64
64
  const vm = {
65
65
  appConfig: [],
package/lowcode/Entry.ts CHANGED
@@ -60,7 +60,7 @@ export class Entry {
60
60
  }
61
61
  (window as any).renderClock = (window as any).renderClock ?? clockF();
62
62
  console.log(`Entry-time:`, (window as any).renderClock.stop());
63
- glitter.share.editerVersion = "V_13.5.8";
63
+ glitter.share.editerVersion = "V_13.5.9";
64
64
  glitter.share.start = (new Date());
65
65
  const vm: {
66
66
  appConfig: any;
@@ -49,9 +49,9 @@ export class BgBlog {
49
49
  key: '預覽',
50
50
  value: html `
51
51
  <div
52
- class="d-flex align-items-center justify-content-center hoverBtn me-2 border"
53
- style="height:28px;width:28px;border-radius:5px;cursor:pointer;color:#151515;"
54
- onclick="${gvc.event((e, event) => {
52
+ class="d-flex align-items-center justify-content-center hoverBtn me-2 border"
53
+ style="height:28px;width:28px;border-radius:5px;cursor:pointer;color:#151515;"
54
+ onclick="${gvc.event((e, event) => {
55
55
  const href = (() => {
56
56
  return `https://${window.parent.glitter.share.editorViewModel.domain}/${is_page
57
57
  ? (() => {
@@ -81,7 +81,7 @@ export class BgBlog {
81
81
  Article.get({
82
82
  page: 0,
83
83
  limit: 1,
84
- id: window.parent.glitter.getUrlParameter('page-id')
84
+ id: window.parent.glitter.getUrlParameter('page-id'),
85
85
  }).then((data) => __awaiter(this, void 0, void 0, function* () {
86
86
  vm.data = data.response.data[0];
87
87
  vm.type = 'replace';
@@ -271,7 +271,7 @@ export class BgBlog {
271
271
  </div>
272
272
  ${[
273
273
  html `<div class="my-3"></div>`,
274
- BgWidget.card(gvc.bindView(() => {
274
+ BgWidget.mainCard(gvc.bindView(() => {
275
275
  return {
276
276
  bind: containerID,
277
277
  view: () => {
@@ -395,26 +395,26 @@ export class BgBlog {
395
395
  if (data.response.result.data.length === 0) {
396
396
  if (!vm.search) {
397
397
  return html `
398
- <div class="d-flex align-items-center justify-content-center flex-column w-100 py-4" style="width:700px;gap:10px;">
399
- <img src="./img/box-open-solid.svg" />
400
- <span class="color39 text-center">尚未自製任何模塊<br />請前往開發者模式自製專屬模塊</span>
401
- </div>
402
- `;
398
+ <div class="d-flex align-items-center justify-content-center flex-column w-100 py-4" style="width:700px;gap:10px;">
399
+ <img src="./img/box-open-solid.svg" />
400
+ <span class="color39 text-center">尚未自製任何模塊<br />請前往開發者模式自製專屬模塊</span>
401
+ </div>
402
+ `;
403
403
  }
404
404
  else {
405
405
  return html `
406
- <div class="d-flex align-items-center justify-content-center flex-column w-100 py-4" style="width:700px;gap:10px;">
407
- <img src="./img/box-open-solid.svg" />
408
- <span class="color39 text-center">查無相關模塊</span>
409
- </div>
410
- `;
406
+ <div class="d-flex align-items-center justify-content-center flex-column w-100 py-4" style="width:700px;gap:10px;">
407
+ <img src="./img/box-open-solid.svg" />
408
+ <span class="color39 text-center">查無相關模塊</span>
409
+ </div>
410
+ `;
411
411
  }
412
412
  }
413
413
  else {
414
414
  return html `
415
- <div class="w-100" style="overflow-y: auto;">
416
- <div class="row m-0 pt-2 w-100">
417
- ${data.response.result.data
415
+ <div class="w-100" style="overflow-y: auto;">
416
+ <div class="row m-0 pt-2 w-100">
417
+ ${data.response.result.data
418
418
  .sort((a, b) => {
419
419
  if (a.tag === 'empty' || b.tag === 'empty') {
420
420
  return b.tag === 'empty' ? 1 : -1;
@@ -426,29 +426,29 @@ export class BgBlog {
426
426
  .map((dd, index) => {
427
427
  var _a;
428
428
  return html `<div class="col-6 col-sm-3 mb-3 rounded-3">
429
- <div class="d-flex flex-column justify-content-center w-100 " style="gap:5px;cursor:pointer;">
430
- <div
431
- class="card w-100 position-relative rounded hoverHidden bgf6 rounded-3"
432
- style="padding-bottom: ${(800 / 600) * 100}%;"
433
- >
434
- <div
435
- class="position-absolute w-100 h-100 d-flex align-items-center justify-content-center rounded-3"
436
- style="overflow: hidden;"
437
- >
438
- <img
439
- class="w-100 "
440
- src="${(_a = dd.template_config.image[0]) !== null && _a !== void 0 ? _a : 'https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/1713445383494-未命名(1080x1080像素).jpg'}"
441
- />
442
- </div>
429
+ <div class="d-flex flex-column justify-content-center w-100 " style="gap:5px;cursor:pointer;">
430
+ <div
431
+ class="card w-100 position-relative rounded hoverHidden bgf6 rounded-3"
432
+ style="padding-bottom: ${(800 / 600) * 100}%;"
433
+ >
434
+ <div
435
+ class="position-absolute w-100 h-100 d-flex align-items-center justify-content-center rounded-3"
436
+ style="overflow: hidden;"
437
+ >
438
+ <img
439
+ class="w-100 "
440
+ src="${(_a = dd.template_config.image[0]) !== null && _a !== void 0 ? _a : 'https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/1713445383494-未命名(1080x1080像素).jpg'}"
441
+ />
442
+ </div>
443
443
 
444
- <div
445
- class="position-absolute w-100 h-100 align-items-center justify-content-center rounded fs-6 flex-column"
446
- style="background: rgba(0,0,0,0.5);gap:5px;"
447
- >
448
- <button
449
- class="btn btn-secondary d-flex align-items-center "
450
- style="height: 28px;width: 75px;gap:5px;"
451
- onclick="${gvc.event(() => {
444
+ <div
445
+ class="position-absolute w-100 h-100 align-items-center justify-content-center rounded fs-6 flex-column"
446
+ style="background: rgba(0,0,0,0.5);gap:5px;"
447
+ >
448
+ <button
449
+ class="btn btn-secondary d-flex align-items-center "
450
+ style="height: 28px;width: 75px;gap:5px;"
451
+ onclick="${gvc.event(() => {
452
452
  if (dd.tag === 'empty') {
453
453
  const a = [];
454
454
  a.name = '空白頁面';
@@ -470,36 +470,36 @@ export class BgBlog {
470
470
  }
471
471
  }
472
472
  })}"
473
- >
474
- 選擇
475
- </button>
476
- </div>
477
- </div>
478
- <h3 class="fs-6 mb-0 d-flex justify-content-between align-items-center fw-500 mt-1">
479
- ${dd.template_config.name}
480
- <i
481
- class="fa-solid fa-eye ${dd.tag === 'empty' ? `d-none` : ``}"
482
- style="cursor:pointer;"
483
- onclick="${gvc.event(() => {
473
+ >
474
+ 選擇
475
+ </button>
476
+ </div>
477
+ </div>
478
+ <h3 class="fs-6 mb-0 d-flex justify-content-between align-items-center fw-500 mt-1">
479
+ ${dd.template_config.name}
480
+ <i
481
+ class="fa-solid fa-eye ${dd.tag === 'empty' ? `d-none` : ``}"
482
+ style="cursor:pointer;"
483
+ onclick="${gvc.event(() => {
484
484
  window.parent.glitter.openNewTab(`${gvc.glitter.root_path}pages/${dd.tag}?appName=${dd.appName}`);
485
485
  })}"
486
- ></i>
487
- </h3>
488
- </div>
489
- </div>`;
486
+ ></i>
487
+ </h3>
488
+ </div>
489
+ </div>`;
490
490
  })
491
491
  .join('')}
492
- </div>
493
492
  </div>
494
- `;
493
+ </div>
494
+ `;
495
495
  }
496
496
  })();
497
497
  }
498
498
  else {
499
499
  return html ` <div class="w-100 p-3 d-flex align-items-center justify-content-center flex-column" style="gap: 10px;">
500
- <div class="spinner-border fs-5"></div>
501
- <div class="fs-6 fw-500">載入中...</div>
502
- </div>`;
500
+ <div class="spinner-border fs-5"></div>
501
+ <div class="fs-6 fw-500">載入中...</div>
502
+ </div>`;
503
503
  }
504
504
  },
505
505
  divCreate: {
@@ -746,7 +746,10 @@ function detail(gvc, cf, vm, cVm, page_tab) {
746
746
  if (`${vm.data.content.for_index}` === 'true') {
747
747
  return [
748
748
  [
749
- html `<div class="tx_normal my-3">網誌內文</div>`,
749
+ html `<div class="d-flex w-100 align-items-center justify-content-between p-0 my-2">
750
+ <div class="tx_normal fw-normal">網誌內文</div>
751
+ ${BgWidget.aiChatButton({ gvc, select: 'writer' })}
752
+ </div>`,
750
753
  EditorElem.richText({
751
754
  gvc: gvc,
752
755
  def: (_a = vm.data.content.text) !== null && _a !== void 0 ? _a : '',
@@ -1313,44 +1316,44 @@ function setCollection(cf) {
1313
1316
  bind: vm.id,
1314
1317
  view: () => {
1315
1318
  return html ` <div class="title-container">
1316
- ${BgWidget.goBack(cf.gvc.event(() => {
1319
+ ${BgWidget.goBack(cf.gvc.event(() => {
1317
1320
  cf.goBack();
1318
1321
  }))}${BgWidget.title('分類設定')}
1319
- </div>
1320
- <div
1322
+ </div>
1323
+ ${BgWidget.container(html `<div
1321
1324
  style="max-width:100%;width: 856px; padding: 20px; background: white; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.08); border-radius: 10px; overflow: hidden; justify-content: center; align-items: center; display: inline-flex"
1322
- >
1323
- <div style="width: 100%; position: relative">
1324
- <div style="width: 100%; left: 0px; top: 0px; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 20px; display: inline-flex">
1325
- <div
1325
+ >
1326
+ <div style="width: 100%; position: relative">
1327
+ <div style="width: 100%; left: 0px; top: 0px; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 20px; display: inline-flex">
1328
+ <div
1326
1329
  class="w-100 ${getSelectCount({
1327
1330
  items: vm.link,
1328
1331
  }) > 0
1329
1332
  ? ``
1330
1333
  : `d-none`}"
1331
1334
  style="height: 40px; padding: 12px 18px;background: #F7F7F7; border-radius: 10px; justify-content: flex-end; align-items: center; gap: 8px; display: inline-flex"
1332
- >
1333
- <div style="flex: 1 1 0; color: #393939; font-size: 14px; font-family: Noto Sans; font-weight: 700; word-wrap: break-word">
1335
+ >
1336
+ <div style="flex: 1 1 0; color: #393939; font-size: 14px; font-family: Noto Sans; font-weight: 700; word-wrap: break-word">
1334
1337
  已選取${getSelectCount({
1335
1338
  items: vm.link,
1336
1339
  })}項
1337
- </div>
1338
- <div
1339
- style="cursor:pointer;padding: 4px 14px;background: white; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.10); border-radius: 20px; border: 1px #DDDDDD solid; justify-content: flex-start; align-items: flex-start; gap: 10px; display: flex"
1340
- >
1340
+ </div>
1341
1341
  <div
1342
+ style="cursor:pointer;padding: 4px 14px;background: white; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.10); border-radius: 20px; border: 1px #DDDDDD solid; justify-content: flex-start; align-items: flex-start; gap: 10px; display: flex"
1343
+ >
1344
+ <div
1342
1345
  style="color: #393939; font-size: 14px; font-family: Noto Sans; font-weight: 400; word-wrap: break-word"
1343
1346
  onclick="${gvc.event(() => {
1344
1347
  vm.link = deleteSelect(vm.link);
1345
1348
  gvc.notifyDataChange(vm.id);
1346
1349
  })}"
1347
- >
1348
- 刪除
1350
+ >
1351
+ 刪除
1352
+ </div>
1349
1353
  </div>
1350
1354
  </div>
1351
- </div>
1352
- <div class="d-flex align-items-center" style="width: 100%; height: 22px; position: relative;gap:29px;">
1353
- <div
1355
+ <div class="d-flex align-items-center" style="width: 100%; height: 22px; position: relative;gap:29px;">
1356
+ <div
1354
1357
  class="${allSelect({
1355
1358
  items: vm.link,
1356
1359
  selected: !vm.link.find((dd) => {
@@ -1376,11 +1379,11 @@ function setCollection(cf) {
1376
1379
  }
1377
1380
  gvc.notifyDataChange(vm.id);
1378
1381
  })}"
1379
- ></div>
1380
- <div style="left: 61px; top: 0px; color: #393939; font-size: 16px; font-family: Noto Sans; font-weight: 700; word-wrap: break-word">選單名稱</div>
1381
- </div>
1382
- <div style="align-self: stretch; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 18px; display: flex">
1383
- ${(() => {
1382
+ ></div>
1383
+ <div style="left: 61px; top: 0px; color: #393939; font-size: 16px; font-family: Noto Sans; font-weight: 700; word-wrap: break-word">選單名稱</div>
1384
+ </div>
1385
+ <div style="align-self: stretch; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 18px; display: flex">
1386
+ ${(() => {
1384
1387
  function renderItems(array) {
1385
1388
  const id = gvc.glitter.getUUID();
1386
1389
  return (gvc.bindView(() => {
@@ -1391,20 +1394,20 @@ function setCollection(cf) {
1391
1394
  .map((dd, index) => {
1392
1395
  dd.items;
1393
1396
  const list = html `
1394
- <div
1395
- class=" w-100 "
1396
- style="width: 100%; justify-content: flex-start; align-items: center; gap: 5px; display: inline-flex;cursor: pointer;"
1397
- onclick="${cf.gvc.event(() => {
1397
+ <div
1398
+ class=" w-100 "
1399
+ style="width: 100%; justify-content: flex-start; align-items: center; gap: 5px; display: inline-flex;cursor: pointer;"
1400
+ onclick="${cf.gvc.event(() => {
1398
1401
  if (dd.items && dd.items.length > 0) {
1399
1402
  dd.toggle = !dd.toggle;
1400
1403
  gvc.notifyDataChange(vm.id);
1401
1404
  }
1402
1405
  })}"
1403
- >
1404
- <div
1405
- class="${allSelect(dd) ? `fa-solid fa-square-check` : `fa-regular fa-square`}"
1406
- style="color:#393939;width: 16px; height: 16px;"
1407
- onclick="${cf.gvc.event((e, event) => {
1406
+ >
1407
+ <div
1408
+ class="${allSelect(dd) ? `fa-solid fa-square-check` : `fa-regular fa-square`}"
1409
+ style="color:#393939;width: 16px; height: 16px;"
1410
+ onclick="${cf.gvc.event((e, event) => {
1408
1411
  event.stopPropagation();
1409
1412
  dd.selected = !dd.selected;
1410
1413
  if (dd.selected) {
@@ -1415,38 +1418,38 @@ function setCollection(cf) {
1415
1418
  }
1416
1419
  gvc.notifyDataChange(vm.id);
1417
1420
  })}"
1418
- ></div>
1419
- <div class="hoverF2 pe-2" style="width: 100%; justify-content: flex-start; align-items: center; gap: 8px; display: flex">
1420
- <i
1421
- class="ms-2 fa-solid fa-grip-dots-vertical color39 dragItem hoverBtn d-flex align-items-center justify-content-center"
1422
- style="cursor: pointer;width:25px;height: 25px;"
1423
- ></i>
1424
- <div style="flex-direction: column; justify-content: center; align-items: flex-start; gap: 2px; display: inline-flex">
1425
- <div style="justify-content: flex-start; align-items: center; gap: 8px; display: inline-flex">
1426
- <div style="color: #393939; font-size: 16px; font-family: Noto Sans; font-weight: 400; word-wrap: break-word">
1427
- ${dd.title}
1428
- </div>
1429
- ${dd.items && dd.items.length > 0
1421
+ ></div>
1422
+ <div class="hoverF2 pe-2" style="width: 100%; justify-content: flex-start; align-items: center; gap: 8px; display: flex">
1423
+ <i
1424
+ class="ms-2 fa-solid fa-grip-dots-vertical color39 dragItem hoverBtn d-flex align-items-center justify-content-center"
1425
+ style="cursor: pointer;width:25px;height: 25px;"
1426
+ ></i>
1427
+ <div style="flex-direction: column; justify-content: center; align-items: flex-start; gap: 2px; display: inline-flex">
1428
+ <div style="justify-content: flex-start; align-items: center; gap: 8px; display: inline-flex">
1429
+ <div style="color: #393939; font-size: 16px; font-family: Noto Sans; font-weight: 400; word-wrap: break-word">
1430
+ ${dd.title}
1431
+ </div>
1432
+ ${dd.items && dd.items.length > 0
1430
1433
  ? !dd.toggle
1431
1434
  ? `<i class="fa-solid fa-angle-down color39"></i>`
1432
1435
  : `<i class="fa-solid fa-angle-up color39"></i>`
1433
1436
  : ``}
1437
+ </div>
1438
+ <div style="justify-content: flex-start; align-items: center; gap: 8px; display: inline-flex">
1439
+ <div
1440
+ style="color: #3366BB; font-size: 14px; font-family: Noto Sans; font-weight: 400; line-height: 14px; word-wrap: break-word"
1441
+ >
1442
+ ${dd.title}
1434
1443
  </div>
1435
- <div style="justify-content: flex-start; align-items: center; gap: 8px; display: inline-flex">
1436
- <div
1437
- style="color: #3366BB; font-size: 14px; font-family: Noto Sans; font-weight: 400; line-height: 14px; word-wrap: break-word"
1438
- >
1439
- ${dd.title}
1440
- </div>
1441
- <div style="color: #159240; font-size: 14px; font-family: Noto Sans; font-weight: 400; word-wrap: break-word">
1442
- ${dd.link}
1443
- </div>
1444
+ <div style="color: #159240; font-size: 14px; font-family: Noto Sans; font-weight: 400; word-wrap: break-word">
1445
+ ${dd.link}
1444
1446
  </div>
1445
1447
  </div>
1446
- <div class="flex-fill"></div>
1447
- <div
1448
- class="child me-2"
1449
- onclick="${cf.gvc.event((e, event) => {
1448
+ </div>
1449
+ <div class="flex-fill"></div>
1450
+ <div
1451
+ class="child me-2"
1452
+ onclick="${cf.gvc.event((e, event) => {
1450
1453
  event.stopPropagation();
1451
1454
  MenusSetting.collectionEvent({
1452
1455
  link: '',
@@ -1465,12 +1468,12 @@ function setCollection(cf) {
1465
1468
  }
1466
1469
  });
1467
1470
  })}"
1468
- >
1469
- <i class="fa-solid fa-plus" style="color:#393939;"></i>
1470
- </div>
1471
- <div
1472
- class="child"
1473
- onclick="${cf.gvc.event((e, event) => {
1471
+ >
1472
+ <i class="fa-solid fa-plus" style="color:#393939;"></i>
1473
+ </div>
1474
+ <div
1475
+ class="child"
1476
+ onclick="${cf.gvc.event((e, event) => {
1474
1477
  event.stopPropagation();
1475
1478
  const og = JSON.parse(JSON.stringify(dd));
1476
1479
  MenusSetting.collectionEvent(dd, (data) => {
@@ -1486,19 +1489,19 @@ function setCollection(cf) {
1486
1489
  }
1487
1490
  });
1488
1491
  })}"
1489
- >
1490
- <i class="fa-solid fa-pencil" style="color:#393939;"></i>
1491
- </div>
1492
+ >
1493
+ <i class="fa-solid fa-pencil" style="color:#393939;"></i>
1492
1494
  </div>
1493
1495
  </div>
1494
- ${dd.items && dd.items.length > 0
1496
+ </div>
1497
+ ${dd.items && dd.items.length > 0
1495
1498
  ? html `
1496
- <div class=" w-100 ${dd.toggle ? `` : `d-none`}" style="padding-left: 35px;">
1497
- ${renderItems(dd.items)}
1498
- </div>
1499
- `
1499
+ <div class=" w-100 ${dd.toggle ? `` : `d-none`}" style="padding-left: 35px;">
1500
+ ${renderItems(dd.items)}
1501
+ </div>
1502
+ `
1500
1503
  : ``}
1501
- `;
1504
+ `;
1502
1505
  return html ` <li class="w-100 ">${list}</li>`;
1503
1506
  })
1504
1507
  .join('');
@@ -1551,9 +1554,9 @@ function setCollection(cf) {
1551
1554
  };
1552
1555
  }) +
1553
1556
  html ` <div
1554
- class=""
1555
- style="cursor:pointer;align-self: stretch; height: 50px; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 10px; display: flex"
1556
- onclick="${cf.gvc.event(() => {
1557
+ class=""
1558
+ style="cursor:pointer;align-self: stretch; height: 50px; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 10px; display: flex"
1559
+ onclick="${cf.gvc.event(() => {
1557
1560
  MenusSetting.collectionEvent({
1558
1561
  link: '',
1559
1562
  title: '',
@@ -1572,7 +1575,7 @@ function setCollection(cf) {
1572
1575
  })}"
1573
1576
  >
1574
1577
  <div
1575
- style="align-self: stretch; height: 54px; border-radius: 10px; border: 1px #DDDDDD solid; justify-content: center; align-items: center; gap: 6px; display: inline-flex"
1578
+ style="align-self: stretch; height: 54px; border-radius: 10px; border: 1px #DDDDDD solid; justify-content: center; align-items: center; gap: 6px; display: inline-flex"
1576
1579
  >
1577
1580
  <i class="fa-solid fa-plus" style="color: #3366BB;font-size: 16px; "></i>
1578
1581
  <div style="color: #3366BB; font-size: 16px; font-family: Noto Sans; font-weight: 400; word-wrap: break-word">新增選單</div>
@@ -1581,18 +1584,18 @@ function setCollection(cf) {
1581
1584
  }
1582
1585
  return renderItems(vm.link);
1583
1586
  })()}
1587
+ </div>
1584
1588
  </div>
1585
1589
  </div>
1586
- </div>
1587
- </div>
1588
- <div class="position-fixed bg-body bottom-0 w-100 d-flex align-items-center justify-content-end p-3 border-top" style="gap:10px;left:0px;">
1589
- ${BgWidget.cancel(gvc.event(() => {
1590
+ </div>`)}
1591
+ <div class="update-bar-container">
1592
+ ${BgWidget.cancel(gvc.event(() => {
1590
1593
  cf.goBack();
1591
1594
  }))}
1592
- ${BgWidget.save(gvc.event(() => {
1595
+ ${BgWidget.save(gvc.event(() => {
1593
1596
  save();
1594
1597
  }), '確認')}
1595
- </div>`;
1598
+ </div>`;
1596
1599
  },
1597
1600
  divCreate: {
1598
1601
  style: `padding-bottom:60px;`,