ts-glitter 13.8.821 → 13.8.822

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 CHANGED
@@ -70,7 +70,7 @@ export class Entry {
70
70
  }
71
71
  window.renderClock = (_a = window.renderClock) !== null && _a !== void 0 ? _a : clockF();
72
72
  console.log(`Entry-time:`, window.renderClock.stop());
73
- glitter.share.editerVersion = 'V_13.8.821';
73
+ glitter.share.editerVersion = 'V_13.8.822';
74
74
  glitter.share.start = new Date();
75
75
  const vm = {
76
76
  appConfig: [],
package/lowcode/Entry.ts CHANGED
@@ -71,7 +71,7 @@ export class Entry {
71
71
  }
72
72
  (window as any).renderClock = (window as any).renderClock ?? clockF();
73
73
  console.log(`Entry-time:`, (window as any).renderClock.stop());
74
- glitter.share.editerVersion = 'V_13.8.821';
74
+ glitter.share.editerVersion = 'V_13.8.822';
75
75
  glitter.share.start = new Date();
76
76
  const vm: {
77
77
  appConfig: any;
@@ -1880,6 +1880,10 @@ export class ShoppingProductSetting {
1880
1880
  else {
1881
1881
  obj.vm.replaceData = postMD;
1882
1882
  }
1883
+ const origin_data = JSON.stringify(postMD);
1884
+ window.parent.glitter.share.checkData = () => {
1885
+ return origin_data === JSON.stringify(postMD);
1886
+ };
1883
1887
  const html = String.raw;
1884
1888
  const gvc = obj.gvc;
1885
1889
  const seoID = gvc.glitter.getUUID();
@@ -1572,7 +1572,6 @@ export class ShoppingProductSetting {
1572
1572
  }) {
1573
1573
  const html = String.raw;
1574
1574
  let postMD: any = obj.defData;
1575
-
1576
1575
  let variant: any = {};
1577
1576
  let orignData: any = {};
1578
1577
  let index: number = 0;
@@ -1584,7 +1583,6 @@ export class ShoppingProductSetting {
1584
1583
  orignData = data;
1585
1584
  }
1586
1585
  });
1587
-
1588
1586
  function checkStore(next: () => void) {
1589
1587
  const dialog = new ShareDialog(gvc.glitter);
1590
1588
  if (JSON.stringify(orignData) !== JSON.stringify(variant)) {
@@ -1601,7 +1599,6 @@ export class ShoppingProductSetting {
1601
1599
  next();
1602
1600
  }
1603
1601
  }
1604
-
1605
1602
  document.querySelector('.pd-w-c')!.scrollTop = 0;
1606
1603
  return html` <div class="d-flex" style="font-size: 16px;color:#393939;font-weight: 400;position: relative;padding:0;padding-bottom: ${obj.single ? `0px` : `80px`};">
1607
1604
  ${BgWidget.container(
@@ -2213,6 +2210,10 @@ export class ShoppingProductSetting {
2213
2210
  } else {
2214
2211
  obj.vm.replaceData = postMD;
2215
2212
  }
2213
+ const origin_data=JSON.stringify(postMD);
2214
+ (window.parent as any).glitter.share.checkData=()=>{
2215
+ return origin_data===JSON.stringify(postMD)
2216
+ }
2216
2217
  const html = String.raw;
2217
2218
  const gvc = obj.gvc;
2218
2219
  const seoID = gvc.glitter.getUUID();
@@ -1,3 +1,12 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { ShareDialog } from '../../glitterBundle/dialog/ShareDialog.js';
2
11
  import { EditorElem } from '../../glitterBundle/plugins/editor-elem.js';
3
12
  import { Storage } from '../../glitterBundle/helper/storage.js';
@@ -72,13 +81,15 @@ export class Setting_editor {
72
81
  Storage.select_bg_btn = 'custom';
73
82
  return html `
74
83
  <div
75
- class="d-flex p-3 bg-white border-bottom align-items-end d-lg-none"
76
- style="${parseInt(glitter.share.top_inset, 10) ? `padding-top:${glitter.share.top_inset}px !important;` : ``}"
84
+ class="d-flex p-3 bg-white border-bottom align-items-end d-lg-none"
85
+ style="${parseInt(glitter.share.top_inset, 10) ? `padding-top:${glitter.share.top_inset}px !important;` : ``}"
77
86
  >
78
- <img src="https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/1718986163099-logo.svg" />
79
- <span class="ms-1" style="font-size: 12px;color: orange;">${glitter.share.editerVersion}</span>
87
+ <img src="https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/1718986163099-logo.svg"/>
88
+ <span class="ms-1"
89
+ style="font-size: 12px;color: orange;">${glitter.share.editerVersion}</span>
80
90
  </div>
81
- <div class="w-100 bg-white" style="overflow-y:auto; ${document.body.offsetWidth > 768 ? `padding-top: ${EditorConfig.getPaddingTop(gvc)}px;` : ''}">
91
+ <div class="w-100 bg-white"
92
+ style="overflow-y:auto; ${document.body.offsetWidth > 768 ? `padding-top: ${EditorConfig.getPaddingTop(gvc)}px;` : ''}">
82
93
  ${(() => {
83
94
  if (loading) {
84
95
  return BgWidget.spinner({ text: { visible: false } });
@@ -87,30 +98,48 @@ export class Setting_editor {
87
98
  const authConfig = permissionData.config.auth;
88
99
  let list = [];
89
100
  function click_item(index) {
90
- const itemPage = items[parseInt(index)].page;
91
- const page = permissionTitle === 'employee' && !getCRUD(itemPage).read ? 'noPermission' : itemPage;
92
- if (['page_layout', 'dev_mode'].indexOf(page) !== -1) {
93
- const url = new URL(location.href);
94
- if (page === 'page_layout') {
95
- url.searchParams.set('function', 'user-editor');
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ if (glitter.share.checkData && (!glitter.share.checkData())) {
103
+ const dialog = new ShareDialog(glitter);
104
+ const result = yield new Promise((resolve, reject) => {
105
+ dialog.checkYesOrNot({
106
+ text: '尚未儲存內容,是否確認跳轉?', callback: (response) => {
107
+ resolve(response);
108
+ }
109
+ });
110
+ });
111
+ if (!result) {
112
+ return;
113
+ }
114
+ }
115
+ glitter.share.checkData = () => { return true; };
116
+ const itemPage = items[parseInt(index)].page;
117
+ const page = permissionTitle === 'employee' && !getCRUD(itemPage).read ? 'noPermission' : itemPage;
118
+ if (['page_layout', 'dev_mode'].indexOf(page) !== -1) {
119
+ const url = new URL(location.href);
120
+ if (page === 'page_layout') {
121
+ url.searchParams.set('function', 'user-editor');
122
+ }
123
+ else {
124
+ Storage.view_type = 'col3';
125
+ url.searchParams.set('function', 'page-editor');
126
+ }
127
+ location.href = url.href;
96
128
  }
97
129
  else {
98
- Storage.view_type = 'col3';
99
- url.searchParams.set('function', 'page-editor');
130
+ Storage.select_item = index;
131
+ window.editerData = undefined;
132
+ glitter.setUrlParameter('tab', page);
133
+ const url = new URL('./' + page, glitter.root_path);
134
+ url.searchParams.set('appName', items[parseInt(index)].appName);
135
+ url.searchParams.set('cms', 'true');
136
+ url.searchParams.set('page', page);
137
+ $('#editerCenter').html(html `
138
+ <iframe src="${url.href}"
139
+ style="border: none;height: calc(100%);"></iframe>`);
100
140
  }
101
- location.href = url.href;
102
- }
103
- else {
104
- Storage.select_item = index;
105
- window.editerData = undefined;
106
- glitter.setUrlParameter('tab', page);
107
- const url = new URL('./' + page, glitter.root_path);
108
- url.searchParams.set('appName', items[parseInt(index)].appName);
109
- url.searchParams.set('cms', 'true');
110
- url.searchParams.set('page', page);
111
- $('#editerCenter').html(html ` <iframe src="${url.href}" style="border: none;height: calc(100%);"></iframe>`);
112
- }
113
- return true;
141
+ return true;
142
+ });
114
143
  }
115
144
  items
116
145
  .filter((dd) => {
@@ -206,9 +235,9 @@ export class Setting_editor {
206
235
  }
207
236
  }
208
237
  return html `
209
- ${dd.title === '品牌官網' ? `<div class="my-4 border-top"></div>` : ``}
210
- <li>
211
- <div
238
+ ${dd.title === '品牌官網' ? `<div class="my-4 border-top"></div>` : ``}
239
+ <li>
240
+ <div
212
241
  class="w-100 fw-500 d-flex align-items-center fs-6 hoverBtn h_item rounded px-2 tx_700
213
242
  ${(_b = (_a = dd === null || dd === void 0 ? void 0 : dd.info) === null || _a === void 0 ? void 0 : _a.guideClass) !== null && _b !== void 0 ? _b : ''} ${dd.type === 'container' ? ` mainRow${index}` : ''}"
214
243
  style="gap:7px;color:#393939;${dd.toggle ? `border-radius: 5px;background: #F2F2F2;` : ``}"
@@ -234,21 +263,29 @@ export class Setting_editor {
234
263
  glitter.closeDrawer();
235
264
  }
236
265
  })}"
237
- >
238
- ${dd.icon ? html `<img src="${dd.icon}" style="width:18px;height:18px;" />` : ``}
239
- <span>${dd.title}</span>
240
- <div class="flex-fill"></div>
241
- ${dd.type === 'container'
266
+ >
267
+ ${dd.icon ? html `<img src="${dd.icon}"
268
+ style="width:18px;height:18px;"/>` : ``}
269
+ <span>${dd.title}</span>
270
+ <div class="flex-fill"></div>
271
+ ${dd.type === 'container'
242
272
  ? !dd.toggle
243
- ? html ` <i class="fa-regular fa-angle-right hoverBtn me-1" aria-hidden="true"></i> `
244
- : html ` <i class="fa-regular fa-angle-down hoverBtn me-1" aria-hidden="true"></i>`
273
+ ? html ` <i
274
+ class="fa-regular fa-angle-right hoverBtn me-1"
275
+ aria-hidden="true"></i> `
276
+ : html ` <i
277
+ class="fa-regular fa-angle-down hoverBtn me-1"
278
+ aria-hidden="true"></i>`
245
279
  : html ` ${dd.info && dd.info.icon ? `<img src="${dd.info.icon}" style="width:18px;height:18px;">` : ``} `}
246
- </div>
247
- ${dd.type === 'container'
248
- ? html ` <div class="ps-4 pt-2 pb-2 ${dd.toggle ? `` : `d-none`}">${renderItem(dd.child)}</div>`
280
+ </div>
281
+ ${dd.type === 'container'
282
+ ? html `
283
+ <div class="ps-4 pt-2 pb-2 ${dd.toggle ? `` : `d-none`}">
284
+ ${renderItem(dd.child)}
285
+ </div>`
249
286
  : ``}
250
- </li>
251
- `;
287
+ </li>
288
+ `;
252
289
  })
253
290
  .join('<div class="my-1"></div>');
254
291
  },
@@ -262,23 +299,25 @@ export class Setting_editor {
262
299
  },
263
300
  ],
264
301
  },
265
- onCreate: () => { },
302
+ onCreate: () => {
303
+ },
266
304
  };
267
305
  });
268
306
  }
269
- return html ` <div class="p-2">${renderItem(list)}</div>`;
307
+ return html `
308
+ <div class="p-2">${renderItem(list)}</div>`;
270
309
  }
271
310
  return renderHTML(items);
272
311
  })()}
273
312
  </div>
274
313
  <div
275
- class="bg-white w-100 align-items-center d-flex editor_item_title start-0 z-index-9 ps-2 border-bottom border-top position-absolute bottom-0 border-end d-none"
276
- style="z-index: 999;border:none;"
314
+ class="bg-white w-100 align-items-center d-flex editor_item_title start-0 z-index-9 ps-2 border-bottom border-top position-absolute bottom-0 border-end d-none"
315
+ style="z-index: 999;border:none;"
277
316
  >
278
317
  <div
279
- class="hoverBtn d-flex align-items-center justify-content-center border me-2"
280
- style="height:30px;width:30px;border-radius:5px;cursor:pointer;color:#151515;"
281
- onclick="${gvc.event(() => {
318
+ class="hoverBtn d-flex align-items-center justify-content-center border me-2"
319
+ style="height:30px;width:30px;border-radius:5px;cursor:pointer;color:#151515;"
320
+ onclick="${gvc.event(() => {
282
321
  Setting_editor.addPlugin(gvc, () => {
283
322
  gvc.notifyDataChange(id);
284
323
  });
@@ -293,7 +332,8 @@ export class Setting_editor {
293
332
  };
294
333
  });
295
334
  }
296
- static center(gvc, viewModel, createID) { }
335
+ static center(gvc, viewModel, createID) {
336
+ }
297
337
  static addPlugin(gvc, callback) {
298
338
  const saasConfig = window.saasConfig;
299
339
  const html = String.raw;
@@ -316,12 +356,13 @@ export class Setting_editor {
316
356
  view: () => {
317
357
  return html `
318
358
  <div class="position-relative bgf6 d-flex align-items-center p-2 border-bottom shadow">
319
- <span class="fs-6 fw-bold " style="color:black;">${updateModel ? `插件設定` : '新增插件'}</span>
359
+ <span class="fs-6 fw-bold "
360
+ style="color:black;">${updateModel ? `插件設定` : '新增插件'}</span>
320
361
  <div class="flex-fill"></div>
321
362
  <button
322
- class="btn btn-primary-c ${updateModel ? `d-none` : ``}"
323
- style="height: 28px;width:40px;font-size:14px;"
324
- onclick="${gvc.event(() => {
363
+ class="btn btn-primary-c ${updateModel ? `d-none` : ``}"
364
+ style="height: 28px;width:40px;font-size:14px;"
365
+ onclick="${gvc.event(() => {
325
366
  items.push(postMd);
326
367
  NormalPageEditor.back();
327
368
  })}"
@@ -343,9 +384,10 @@ export class Setting_editor {
343
384
  EditorElem.searchInput({
344
385
  gvc: gvc,
345
386
  title: html `群組分類
346
- <div class="alert alert-info p-2 mt-2 fs-base fw-500 mb-0" style="word-break: break-all;white-space:normal">
347
- 加入 / 進行分類:<br />例如:頁面/登入/註冊設定
348
- </div>`,
387
+ <div class="alert alert-info p-2 mt-2 fs-base fw-500 mb-0"
388
+ style="word-break: break-all;white-space:normal">
389
+ 加入 / 進行分類:<br/>例如:頁面/登入/註冊設定
390
+ </div>`,
349
391
  def: postMd.group,
350
392
  array: (() => {
351
393
  let array = [];
@@ -416,10 +458,12 @@ export class Setting_editor {
416
458
  view: (() => {
417
459
  const viewComponent = {
418
460
  add_plus: (title, event) => {
419
- return html ` <div class="w-100 fw-500 d-flex align-items-center justify-content-center fs-6 hoverBtn h_item border rounded" style="gap:5px;color:#3366BB;" onclick="${event}">
420
- <i class="fa-solid fa-plus"></i>
421
- <span>${title}</span>
422
- </div>`;
461
+ return html `
462
+ <div class="w-100 fw-500 d-flex align-items-center justify-content-center fs-6 hoverBtn h_item border rounded"
463
+ style="gap:5px;color:#3366BB;" onclick="${event}">
464
+ <i class="fa-solid fa-plus"></i>
465
+ <span>${title}</span>
466
+ </div>`;
423
467
  },
424
468
  };
425
469
  return gvc.bindView(() => {
@@ -482,9 +526,9 @@ export class Setting_editor {
482
526
  return html `
483
527
  <li>
484
528
  <div
485
- class="w-100 fw-500 d-flex align-items-center fs-6 hoverBtn h_item rounded px-2"
486
- style="gap:5px;color:#393939;"
487
- onclick="${gvc.event(() => {
529
+ class="w-100 fw-500 d-flex align-items-center fs-6 hoverBtn h_item rounded px-2"
530
+ style="gap:5px;color:#393939;"
531
+ onclick="${gvc.event(() => {
488
532
  if (dd.type === 'container') {
489
533
  dd.toggle = !dd.toggle;
490
534
  gvc.notifyDataChange(id);
@@ -493,8 +537,12 @@ export class Setting_editor {
493
537
  >
494
538
  ${dd.type === 'container'
495
539
  ? !dd.toggle
496
- ? html ` <i class="fa-regular fa-angle-right hoverBtn me-1" aria-hidden="true"></i> `
497
- : html `<i class="fa-regular fa-angle-down hoverBtn me-1" aria-hidden="true"></i>`
540
+ ? html ` <i
541
+ class="fa-regular fa-angle-right hoverBtn me-1"
542
+ aria-hidden="true"></i> `
543
+ : html `<i
544
+ class="fa-regular fa-angle-down hoverBtn me-1"
545
+ aria-hidden="true"></i>`
498
546
  : html ` ${dd.info && dd.info.icon ? `<img src="${dd.info.icon}" style="width:18px;height:18px;">` : ``} `}
499
547
  ${dd.icon ? `<img src="${dd.icon}" style="width:18px;height:18px;">` : ``}
500
548
  <span>${dd.title}</span>
@@ -502,9 +550,9 @@ export class Setting_editor {
502
550
  ${dd.type === 'container'
503
551
  ? ``
504
552
  : html `
505
- <i
506
- class="fa-solid fa-pencil text-black hoverBtn me-2 child"
507
- onclick="${gvc.event(() => {
553
+ <i
554
+ class="fa-solid fa-pencil text-black hoverBtn me-2 child"
555
+ onclick="${gvc.event(() => {
508
556
  select = dd.info;
509
557
  NormalPageEditor.toggle({
510
558
  visible: true,
@@ -512,10 +560,10 @@ export class Setting_editor {
512
560
  title: dd.title,
513
561
  });
514
562
  })}"
515
- ></i>
516
- <i
517
- class="fa-sharp fa-solid fa-trash-can text-black hoverBtn me-2 child"
518
- onclick="${gvc.event(() => {
563
+ ></i>
564
+ <i
565
+ class="fa-sharp fa-solid fa-trash-can text-black hoverBtn me-2 child"
566
+ onclick="${gvc.event(() => {
519
567
  const dialog = new ShareDialog(gvc.glitter);
520
568
  dialog.checkYesOrNot({
521
569
  callback: (response) => {
@@ -535,11 +583,14 @@ export class Setting_editor {
535
583
  text: '是否確認刪除插件?',
536
584
  });
537
585
  })}"
538
- ></i>
539
- `}
586
+ ></i>
587
+ `}
540
588
  <i class="fa-solid fa-grip-dots-vertical"></i>
541
589
  </div>
542
- ${dd.type === 'container' ? html ` <div class="ps-2 ${dd.toggle ? `` : `d-none`}">${renderItems(dd.child)}</div>` : ``}
590
+ ${dd.type === 'container' ? html `
591
+ <div class="ps-2 ${dd.toggle ? `` : `d-none`}">
592
+ ${renderItems(dd.child)}
593
+ </div>` : ``}
543
594
  </li>
544
595
  `;
545
596
  })
@@ -564,7 +615,8 @@ export class Setting_editor {
564
615
  Sortable.create(document.getElementById(id), {
565
616
  group: gvc.glitter.getUUID(),
566
617
  animation: 100,
567
- onChange: function (evt) { },
618
+ onChange: function (evt) {
619
+ },
568
620
  onEnd: (evt) => {
569
621
  let changeItemStart = 0;
570
622
  let changeItemEnd = 0;
@@ -602,9 +654,9 @@ export class Setting_editor {
602
654
  <span class="fs-6 fw-bold " style="color:black;">插件設定</span>
603
655
  <div class="flex-fill"></div>
604
656
  <button
605
- class="btn btn-primary-c"
606
- style="height: 28px;width:40px;font-size:14px;"
607
- onclick="${gvc.event(() => {
657
+ class="btn btn-primary-c"
658
+ style="height: 28px;width:40px;font-size:14px;"
659
+ onclick="${gvc.event(() => {
608
660
  dialog.dataLoading({ visible: true });
609
661
  ApiPageConfig.setPrivateConfigV2({
610
662
  key: 'backend_list',
@@ -1,13 +1,13 @@
1
- import { GVC } from '../../glitterBundle/GVController.js';
2
- import { ShareDialog } from '../../glitterBundle/dialog/ShareDialog.js';
3
- import { EditorElem } from '../../glitterBundle/plugins/editor-elem.js';
4
- import { Storage } from '../../glitterBundle/helper/storage.js';
5
- import { ApiPageConfig } from '../../api/pageConfig.js';
6
- import { NormalPageEditor } from '../../editor/normal-page-editor.js';
7
- import { AddComponent } from '../../editor/add-component.js';
8
- import { EditorConfig } from '../../editor-config.js';
9
- import { ApiUser } from '../../glitter-base/route/user.js';
10
- import { BgWidget } from '../../backend-manager/bg-widget.js';
1
+ import {GVC} from '../../glitterBundle/GVController.js';
2
+ import {ShareDialog} from '../../glitterBundle/dialog/ShareDialog.js';
3
+ import {EditorElem} from '../../glitterBundle/plugins/editor-elem.js';
4
+ import {Storage} from '../../glitterBundle/helper/storage.js';
5
+ import {ApiPageConfig} from '../../api/pageConfig.js';
6
+ import {NormalPageEditor} from '../../editor/normal-page-editor.js';
7
+ import {AddComponent} from '../../editor/add-component.js';
8
+ import {EditorConfig} from '../../editor-config.js';
9
+ import {ApiUser} from '../../glitter-base/route/user.js';
10
+ import {BgWidget} from '../../backend-manager/bg-widget.js';
11
11
 
12
12
  export class Setting_editor {
13
13
  static pluginUrl = '';
@@ -643,7 +643,7 @@ export class Setting_editor {
643
643
  static left(gvc: GVC, viewModel: any, createID: string, gBundle: any) {
644
644
  const html = String.raw;
645
645
  const glitter = gvc.glitter;
646
- glitter.share.checkData=()=>{
646
+ glitter.share.checkData = () => {
647
647
  return true
648
648
  }
649
649
  return gvc.bindView(() => {
@@ -687,7 +687,7 @@ export class Setting_editor {
687
687
  }).then((data) => {
688
688
  if (data.result) {
689
689
  permissionTitle = data.response.store_permission_title;
690
- permissionData = data.response.data[0] ?? { config: { auth: [] } };
690
+ permissionData = data.response.data[0] ?? {config: {auth: []}};
691
691
  resolve();
692
692
  } else {
693
693
  reject();
@@ -704,23 +704,39 @@ export class Setting_editor {
704
704
  Storage.select_bg_btn = 'custom';
705
705
  return html`
706
706
  <div
707
- class="d-flex p-3 bg-white border-bottom align-items-end d-lg-none"
708
- style="${parseInt(glitter.share.top_inset, 10) ? `padding-top:${glitter.share.top_inset}px !important;` : ``}"
707
+ class="d-flex p-3 bg-white border-bottom align-items-end d-lg-none"
708
+ style="${parseInt(glitter.share.top_inset, 10) ? `padding-top:${glitter.share.top_inset}px !important;` : ``}"
709
709
  >
710
- <img src="https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/1718986163099-logo.svg" />
711
- <span class="ms-1" style="font-size: 12px;color: orange;">${glitter.share.editerVersion}</span>
710
+ <img src="https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/1718986163099-logo.svg"/>
711
+ <span class="ms-1"
712
+ style="font-size: 12px;color: orange;">${glitter.share.editerVersion}</span>
712
713
  </div>
713
- <div class="w-100 bg-white" style="overflow-y:auto; ${document.body.offsetWidth > 768 ? `padding-top: ${EditorConfig.getPaddingTop(gvc)}px;` : ''}">
714
- ${(()=>{
714
+ <div class="w-100 bg-white"
715
+ style="overflow-y:auto; ${document.body.offsetWidth > 768 ? `padding-top: ${EditorConfig.getPaddingTop(gvc)}px;` : ''}">
716
+ ${(() => {
715
717
  if (loading) {
716
- return BgWidget.spinner({ text: { visible: false } });
718
+ return BgWidget.spinner({text: {visible: false}});
717
719
  }
718
720
 
719
721
  function renderHTML(items: any) {
720
722
  const authConfig = permissionData.config.auth;
721
723
  let list: any = [];
722
724
 
723
- function click_item(index: any) {
725
+ async function click_item(index: any) {
726
+ if (glitter.share.checkData && (!glitter.share.checkData())) {
727
+ const dialog = new ShareDialog(glitter)
728
+ const result = await new Promise((resolve, reject)=>{
729
+ dialog.checkYesOrNot({
730
+ text: '尚未儲存內容,是否確認跳轉?', callback: (response) => {
731
+ resolve(response)
732
+ }
733
+ })
734
+ })
735
+ if(!result){
736
+ return
737
+ }
738
+ }
739
+ glitter.share.checkData=()=>{return true}
724
740
  const itemPage = items[parseInt(index)].page;
725
741
  const page = permissionTitle === 'employee' && !getCRUD(itemPage).read ? 'noPermission' : itemPage;
726
742
  if (['page_layout', 'dev_mode'].indexOf(page) !== -1) {
@@ -758,7 +774,9 @@ export class Setting_editor {
758
774
  // // resolve(d2.response.result[0])
759
775
  // })
760
776
 
761
- $('#editerCenter').html(html` <iframe src="${url.href}" style="border: none;height: calc(100%);"></iframe>`);
777
+ $('#editerCenter').html(html`
778
+ <iframe src="${url.href}"
779
+ style="border: none;height: calc(100%);"></iframe>`);
762
780
 
763
781
  }
764
782
  return true;
@@ -835,7 +853,7 @@ export class Setting_editor {
835
853
 
836
854
  function getCRUD(page: string): { read: boolean } {
837
855
  const data = authConfig.find((item: any) => item.key === page);
838
- return data ? data.value : { read: false };
856
+ return data ? data.value : {read: false};
839
857
  }
840
858
 
841
859
  function renderItem(list: any) {
@@ -860,49 +878,57 @@ export class Setting_editor {
860
878
  }
861
879
 
862
880
  return html`
863
- ${dd.title === '品牌官網' ? `<div class="my-4 border-top"></div>` : ``}
864
- <li>
865
- <div
881
+ ${dd.title === '品牌官網' ? `<div class="my-4 border-top"></div>` : ``}
882
+ <li>
883
+ <div
866
884
  class="w-100 fw-500 d-flex align-items-center fs-6 hoverBtn h_item rounded px-2 tx_700
867
885
  ${dd?.info?.guideClass ?? ''} ${dd.type === 'container' ? ` mainRow${index}` : ''}"
868
886
  style="gap:7px;color:#393939;${dd.toggle ? `border-radius: 5px;background: #F2F2F2;` : ``}"
869
887
  onclick="${gvc.event(() => {
870
- if (dd.type === 'container') {
871
- list.map((d1: any) => {
872
- d1.toggle = false;
873
- });
874
- dd.toggle = !dd.toggle;
875
- gvc.notifyDataChange(id);
876
- } else {
877
- if (items[parseInt(dd.index)].page === 'app-design') {
878
- localStorage.setItem('lastSelect', '');
879
- localStorage.setItem('ViewType', 'mobile');
880
- glitter.share.switch_to_web_builder('index-mobile','mobile')
881
- return;
882
- }
883
- // app-design
884
- if (click_item(dd.index) && ['page_layout', 'dev_mode'].indexOf(items[parseInt(dd.index)].page) === -1) {
885
- dd.toggle = true;
886
- refreshContainer();
887
- }
888
- glitter.closeDrawer();
889
- }
890
- })}"
891
- >
892
- ${dd.icon ? html`<img src="${dd.icon}" style="width:18px;height:18px;" />` : ``}
893
- <span>${dd.title}</span>
894
- <div class="flex-fill"></div>
895
- ${dd.type === 'container'
896
- ? !dd.toggle
897
- ? html` <i class="fa-regular fa-angle-right hoverBtn me-1" aria-hidden="true"></i> `
898
- : html` <i class="fa-regular fa-angle-down hoverBtn me-1" aria-hidden="true"></i>`
899
- : html` ${dd.info && dd.info.icon ? `<img src="${dd.info.icon}" style="width:18px;height:18px;">` : ``} `}
900
- </div>
888
+ if (dd.type === 'container') {
889
+ list.map((d1: any) => {
890
+ d1.toggle = false;
891
+ });
892
+ dd.toggle = !dd.toggle;
893
+ gvc.notifyDataChange(id);
894
+ } else {
895
+ if (items[parseInt(dd.index)].page === 'app-design') {
896
+ localStorage.setItem('lastSelect', '');
897
+ localStorage.setItem('ViewType', 'mobile');
898
+ glitter.share.switch_to_web_builder('index-mobile', 'mobile')
899
+ return;
900
+ }
901
+ // app-design
902
+ if (click_item(dd.index) && ['page_layout', 'dev_mode'].indexOf(items[parseInt(dd.index)].page) === -1) {
903
+ dd.toggle = true;
904
+ refreshContainer();
905
+ }
906
+ glitter.closeDrawer();
907
+ }
908
+ })}"
909
+ >
910
+ ${dd.icon ? html`<img src="${dd.icon}"
911
+ style="width:18px;height:18px;"/>` : ``}
912
+ <span>${dd.title}</span>
913
+ <div class="flex-fill"></div>
901
914
  ${dd.type === 'container'
902
- ? html` <div class="ps-4 pt-2 pb-2 ${dd.toggle ? `` : `d-none`}">${renderItem(dd.child)}</div>`
903
- : ``}
904
- </li>
905
- `;
915
+ ? !dd.toggle
916
+ ? html` <i
917
+ class="fa-regular fa-angle-right hoverBtn me-1"
918
+ aria-hidden="true"></i> `
919
+ : html` <i
920
+ class="fa-regular fa-angle-down hoverBtn me-1"
921
+ aria-hidden="true"></i>`
922
+ : html` ${dd.info && dd.info.icon ? `<img src="${dd.info.icon}" style="width:18px;height:18px;">` : ``} `}
923
+ </div>
924
+ ${dd.type === 'container'
925
+ ? html`
926
+ <div class="ps-4 pt-2 pb-2 ${dd.toggle ? `` : `d-none`}">
927
+ ${renderItem(dd.child)}
928
+ </div>`
929
+ : ``}
930
+ </li>
931
+ `;
906
932
  })
907
933
  .join('<div class="my-1"></div>');
908
934
  },
@@ -916,41 +942,44 @@ export class Setting_editor {
916
942
  },
917
943
  ],
918
944
  },
919
- onCreate: () => {},
945
+ onCreate: () => {
946
+ },
920
947
  };
921
948
  });
922
949
  }
923
950
 
924
- return html` <div class="p-2">${renderItem(list)}</div>`;
951
+ return html`
952
+ <div class="p-2">${renderItem(list)}</div>`;
925
953
  }
926
954
 
927
955
  return renderHTML(items);
928
956
  })()}
929
957
  </div>
930
958
  <div
931
- class="bg-white w-100 align-items-center d-flex editor_item_title start-0 z-index-9 ps-2 border-bottom border-top position-absolute bottom-0 border-end d-none"
932
- style="z-index: 999;border:none;"
959
+ class="bg-white w-100 align-items-center d-flex editor_item_title start-0 z-index-9 ps-2 border-bottom border-top position-absolute bottom-0 border-end d-none"
960
+ style="z-index: 999;border:none;"
933
961
  >
934
962
  <div
935
- class="hoverBtn d-flex align-items-center justify-content-center border me-2"
936
- style="height:30px;width:30px;border-radius:5px;cursor:pointer;color:#151515;"
937
- onclick="${gvc.event(() => {
938
- Setting_editor.addPlugin(gvc, () => {
939
- gvc.notifyDataChange(id);
940
- });
941
- })}"
963
+ class="hoverBtn d-flex align-items-center justify-content-center border me-2"
964
+ style="height:30px;width:30px;border-radius:5px;cursor:pointer;color:#151515;"
965
+ onclick="${gvc.event(() => {
966
+ Setting_editor.addPlugin(gvc, () => {
967
+ gvc.notifyDataChange(id);
968
+ });
969
+ })}"
942
970
  >
943
971
  <i class="fa-solid fa-puzzle-piece-simple" aria-hidden="true"></i>
944
972
  </div>
945
973
  </div>
946
974
  `;
947
975
  },
948
- divCreate: { style: `` }
976
+ divCreate: {style: ``}
949
977
  };
950
978
  });
951
979
  }
952
980
 
953
- public static center(gvc: GVC, viewModel: any, createID: string) {}
981
+ public static center(gvc: GVC, viewModel: any, createID: string) {
982
+ }
954
983
 
955
984
  public static addPlugin(gvc: GVC, callback: () => void) {
956
985
  const saasConfig: { config: any; api: any } = (window as any).saasConfig;
@@ -976,15 +1005,16 @@ export class Setting_editor {
976
1005
  view: () => {
977
1006
  return html`
978
1007
  <div class="position-relative bgf6 d-flex align-items-center p-2 border-bottom shadow">
979
- <span class="fs-6 fw-bold " style="color:black;">${updateModel ? `插件設定` : '新增插件'}</span>
1008
+ <span class="fs-6 fw-bold "
1009
+ style="color:black;">${updateModel ? `插件設定` : '新增插件'}</span>
980
1010
  <div class="flex-fill"></div>
981
1011
  <button
982
- class="btn btn-primary-c ${updateModel ? `d-none` : ``}"
983
- style="height: 28px;width:40px;font-size:14px;"
984
- onclick="${gvc.event(() => {
985
- items.push(postMd);
986
- NormalPageEditor.back();
987
- })}"
1012
+ class="btn btn-primary-c ${updateModel ? `d-none` : ``}"
1013
+ style="height: 28px;width:40px;font-size:14px;"
1014
+ onclick="${gvc.event(() => {
1015
+ items.push(postMd);
1016
+ NormalPageEditor.back();
1017
+ })}"
988
1018
  >
989
1019
  儲存
990
1020
  </button>
@@ -1003,17 +1033,18 @@ export class Setting_editor {
1003
1033
  EditorElem.searchInput({
1004
1034
  gvc: gvc,
1005
1035
  title: html`群組分類
1006
- <div class="alert alert-info p-2 mt-2 fs-base fw-500 mb-0" style="word-break: break-all;white-space:normal">
1007
- 加入 / 進行分類:<br />例如:頁面/登入/註冊設定
1008
- </div>`,
1036
+ <div class="alert alert-info p-2 mt-2 fs-base fw-500 mb-0"
1037
+ style="word-break: break-all;white-space:normal">
1038
+ 加入 / 進行分類:<br/>例如:頁面/登入/註冊設定
1039
+ </div>`,
1009
1040
  def: postMd.group,
1010
1041
  array: (() => {
1011
1042
  let array: any = [];
1012
1043
  items.map((dd: any) => {
1013
1044
  if (
1014
- !array.find((d1: any) => {
1015
- return d1 === dd.group;
1016
- })
1045
+ !array.find((d1: any) => {
1046
+ return d1 === dd.group;
1047
+ })
1017
1048
  ) {
1018
1049
  array.push(dd.group);
1019
1050
  }
@@ -1024,9 +1055,9 @@ export class Setting_editor {
1024
1055
  callback: (text) => {
1025
1056
  postMd.group = text;
1026
1057
  if (
1027
- items.find((dd: any) => {
1028
- return dd.group === text && dd.groupIcon;
1029
- })
1058
+ items.find((dd: any) => {
1059
+ return dd.group === text && dd.groupIcon;
1060
+ })
1030
1061
  ) {
1031
1062
  postMd.groupIcon = items.find((dd: any) => {
1032
1063
  return dd.group === text && dd.groupIcon;
@@ -1044,36 +1075,36 @@ export class Setting_editor {
1044
1075
  },
1045
1076
  }),
1046
1077
  EditorElem.buttonPrimary(
1047
- postMd.moduleName || '選擇模塊',
1048
- gvc.event(() => {
1049
- NormalPageEditor.toggle({
1050
- visible: true,
1051
- view: gvc.bindView(() => {
1052
- return {
1053
- bind: gvc.glitter.getUUID(),
1054
- view: () => {
1055
- return new Promise((resolve, reject) => {
1056
- resolve(
1057
- AddComponent.addModuleView(
1058
- gvc,
1059
- 'backend',
1060
- (tData: any) => {
1061
- postMd.appName = tData.copyApp;
1062
- postMd.page = tData.copy;
1063
- postMd.moduleName = tData.title;
1064
- NormalPageEditor.back();
1065
- },
1066
- false,
1067
- true
1068
- )
1069
- );
1070
- });
1071
- },
1072
- };
1073
- }),
1074
- title: '選擇插件',
1075
- });
1076
- })
1078
+ postMd.moduleName || '選擇模塊',
1079
+ gvc.event(() => {
1080
+ NormalPageEditor.toggle({
1081
+ visible: true,
1082
+ view: gvc.bindView(() => {
1083
+ return {
1084
+ bind: gvc.glitter.getUUID(),
1085
+ view: () => {
1086
+ return new Promise((resolve, reject) => {
1087
+ resolve(
1088
+ AddComponent.addModuleView(
1089
+ gvc,
1090
+ 'backend',
1091
+ (tData: any) => {
1092
+ postMd.appName = tData.copyApp;
1093
+ postMd.page = tData.copy;
1094
+ postMd.moduleName = tData.title;
1095
+ NormalPageEditor.back();
1096
+ },
1097
+ false,
1098
+ true
1099
+ )
1100
+ );
1101
+ });
1102
+ },
1103
+ };
1104
+ }),
1105
+ title: '選擇插件',
1106
+ });
1107
+ })
1077
1108
  ),
1078
1109
  ].join('')}
1079
1110
  </div>
@@ -1093,10 +1124,12 @@ export class Setting_editor {
1093
1124
  view: (() => {
1094
1125
  const viewComponent = {
1095
1126
  add_plus: (title: string, event: string) => {
1096
- return html` <div class="w-100 fw-500 d-flex align-items-center justify-content-center fs-6 hoverBtn h_item border rounded" style="gap:5px;color:#3366BB;" onclick="${event}">
1097
- <i class="fa-solid fa-plus"></i>
1098
- <span>${title}</span>
1099
- </div>`;
1127
+ return html`
1128
+ <div class="w-100 fw-500 d-flex align-items-center justify-content-center fs-6 hoverBtn h_item border rounded"
1129
+ style="gap:5px;color:#3366BB;" onclick="${event}">
1130
+ <i class="fa-solid fa-plus"></i>
1131
+ <span>${title}</span>
1132
+ </div>`;
1100
1133
  },
1101
1134
  };
1102
1135
  return gvc.bindView(() => {
@@ -1161,63 +1194,70 @@ export class Setting_editor {
1161
1194
  return html`
1162
1195
  <li>
1163
1196
  <div
1164
- class="w-100 fw-500 d-flex align-items-center fs-6 hoverBtn h_item rounded px-2"
1165
- style="gap:5px;color:#393939;"
1166
- onclick="${gvc.event(() => {
1167
- if (dd.type === 'container') {
1168
- dd.toggle = !dd.toggle;
1169
- gvc.notifyDataChange(id);
1170
- }
1171
- })}"
1197
+ class="w-100 fw-500 d-flex align-items-center fs-6 hoverBtn h_item rounded px-2"
1198
+ style="gap:5px;color:#393939;"
1199
+ onclick="${gvc.event(() => {
1200
+ if (dd.type === 'container') {
1201
+ dd.toggle = !dd.toggle;
1202
+ gvc.notifyDataChange(id);
1203
+ }
1204
+ })}"
1172
1205
  >
1173
1206
  ${dd.type === 'container'
1174
- ? !dd.toggle
1175
- ? html` <i class="fa-regular fa-angle-right hoverBtn me-1" aria-hidden="true"></i> `
1176
- : html`<i class="fa-regular fa-angle-down hoverBtn me-1" aria-hidden="true"></i>`
1177
- : html` ${dd.info && dd.info.icon ? `<img src="${dd.info.icon}" style="width:18px;height:18px;">` : ``} `}
1207
+ ? !dd.toggle
1208
+ ? html` <i
1209
+ class="fa-regular fa-angle-right hoverBtn me-1"
1210
+ aria-hidden="true"></i> `
1211
+ : html`<i
1212
+ class="fa-regular fa-angle-down hoverBtn me-1"
1213
+ aria-hidden="true"></i>`
1214
+ : html` ${dd.info && dd.info.icon ? `<img src="${dd.info.icon}" style="width:18px;height:18px;">` : ``} `}
1178
1215
  ${dd.icon ? `<img src="${dd.icon}" style="width:18px;height:18px;">` : ``}
1179
1216
  <span>${dd.title}</span>
1180
1217
  <div class="flex-fill"></div>
1181
1218
  ${dd.type === 'container'
1182
- ? ``
1183
- : html`
1184
- <i
1185
- class="fa-solid fa-pencil text-black hoverBtn me-2 child"
1186
- onclick="${gvc.event(() => {
1187
- select = dd.info;
1188
- NormalPageEditor.toggle({
1189
- visible: true,
1190
- view: addPlugin(select),
1191
- title: dd.title,
1192
- });
1193
- })}"
1194
- ></i>
1195
- <i
1196
- class="fa-sharp fa-solid fa-trash-can text-black hoverBtn me-2 child"
1197
- onclick="${gvc.event(() => {
1198
- const dialog = new ShareDialog(gvc.glitter);
1199
- dialog.checkYesOrNot({
1200
- callback: (response) => {
1201
- if (response) {
1202
- items = items.filter((d2: any, index: any) => {
1203
- return index !== dd.index;
1204
- });
1205
- list.splice(index, 1);
1206
- if (list.length === 0) {
1207
- refreshContainer();
1208
- } else {
1209
- gvc.notifyDataChange(id);
1210
- }
1211
- }
1212
- },
1213
- text: '是否確認刪除插件?',
1214
- });
1215
- })}"
1216
- ></i>
1217
- `}
1219
+ ? ``
1220
+ : html`
1221
+ <i
1222
+ class="fa-solid fa-pencil text-black hoverBtn me-2 child"
1223
+ onclick="${gvc.event(() => {
1224
+ select = dd.info;
1225
+ NormalPageEditor.toggle({
1226
+ visible: true,
1227
+ view: addPlugin(select),
1228
+ title: dd.title,
1229
+ });
1230
+ })}"
1231
+ ></i>
1232
+ <i
1233
+ class="fa-sharp fa-solid fa-trash-can text-black hoverBtn me-2 child"
1234
+ onclick="${gvc.event(() => {
1235
+ const dialog = new ShareDialog(gvc.glitter);
1236
+ dialog.checkYesOrNot({
1237
+ callback: (response) => {
1238
+ if (response) {
1239
+ items = items.filter((d2: any, index: any) => {
1240
+ return index !== dd.index;
1241
+ });
1242
+ list.splice(index, 1);
1243
+ if (list.length === 0) {
1244
+ refreshContainer();
1245
+ } else {
1246
+ gvc.notifyDataChange(id);
1247
+ }
1248
+ }
1249
+ },
1250
+ text: '是否確認刪除插件?',
1251
+ });
1252
+ })}"
1253
+ ></i>
1254
+ `}
1218
1255
  <i class="fa-solid fa-grip-dots-vertical"></i>
1219
1256
  </div>
1220
- ${dd.type === 'container' ? html` <div class="ps-2 ${dd.toggle ? `` : `d-none`}">${renderItems(dd.child)}</div>` : ``}
1257
+ ${dd.type === 'container' ? html`
1258
+ <div class="ps-2 ${dd.toggle ? `` : `d-none`}">
1259
+ ${renderItems(dd.child)}
1260
+ </div>` : ``}
1221
1261
  </li>
1222
1262
  `;
1223
1263
  })
@@ -1244,7 +1284,8 @@ export class Setting_editor {
1244
1284
  Sortable.create(document.getElementById(id), {
1245
1285
  group: gvc.glitter.getUUID(),
1246
1286
  animation: 100,
1247
- onChange: function (evt: any) {},
1287
+ onChange: function (evt: any) {
1288
+ },
1248
1289
  onEnd: (evt: any) => {
1249
1290
  let changeItemStart = 0;
1250
1291
  let changeItemEnd = 0;
@@ -1285,22 +1326,22 @@ export class Setting_editor {
1285
1326
  <span class="fs-6 fw-bold " style="color:black;">插件設定</span>
1286
1327
  <div class="flex-fill"></div>
1287
1328
  <button
1288
- class="btn btn-primary-c"
1289
- style="height: 28px;width:40px;font-size:14px;"
1290
- onclick="${gvc.event(() => {
1291
- dialog.dataLoading({ visible: true });
1292
- ApiPageConfig.setPrivateConfigV2({
1293
- key: 'backend_list',
1294
- value: JSON.stringify(items),
1295
- }).then((res) => {
1296
- dialog.dataLoading({ visible: false });
1297
- if (res.result) {
1298
- dialog.successMessage({ text: '儲存成功' });
1299
- } else {
1300
- dialog.errorMessage({ text: '伺服器異常' });
1301
- }
1302
- });
1303
- })}"
1329
+ class="btn btn-primary-c"
1330
+ style="height: 28px;width:40px;font-size:14px;"
1331
+ onclick="${gvc.event(() => {
1332
+ dialog.dataLoading({visible: true});
1333
+ ApiPageConfig.setPrivateConfigV2({
1334
+ key: 'backend_list',
1335
+ value: JSON.stringify(items),
1336
+ }).then((res) => {
1337
+ dialog.dataLoading({visible: false});
1338
+ if (res.result) {
1339
+ dialog.successMessage({text: '儲存成功'});
1340
+ } else {
1341
+ dialog.errorMessage({text: '伺服器異常'});
1342
+ }
1343
+ });
1344
+ })}"
1304
1345
  >
1305
1346
  儲存
1306
1347
  </button>
@@ -1310,14 +1351,14 @@ export class Setting_editor {
1310
1351
  <div class="my-1"></div>
1311
1352
  ${[
1312
1353
  viewComponent.add_plus(
1313
- '新增插件',
1314
- gvc.event(() => {
1315
- NormalPageEditor.toggle({
1316
- visible: true,
1317
- view: addPlugin(),
1318
- title: '新增插件',
1319
- });
1320
- })
1354
+ '新增插件',
1355
+ gvc.event(() => {
1356
+ NormalPageEditor.toggle({
1357
+ visible: true,
1358
+ view: addPlugin(),
1359
+ title: '新增插件',
1360
+ });
1361
+ })
1321
1362
  ),
1322
1363
  ].join(``)}
1323
1364
  </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-glitter",
3
- "version": "13.8.821",
3
+ "version": "13.8.822",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {