ts-glitter 21.1.5 → 21.1.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 (40) hide show
  1. package/create.js +1 -0
  2. package/lowcode/Entry.js +1 -1
  3. package/lowcode/Entry.ts +1 -1
  4. package/lowcode/cms-plugin/module/order-excel.js +256 -132
  5. package/lowcode/cms-plugin/module/order-excel.ts +228 -81
  6. package/lowcode/cms-plugin/shopping-finance-setting.js +1 -1
  7. package/lowcode/cms-plugin/shopping-finance-setting.ts +1 -1
  8. package/lowcode/cms-plugin/shopping-order-manager.js +33 -29
  9. package/lowcode/cms-plugin/shopping-order-manager.ts +36 -30
  10. package/lowcode/editor-components/global-widget/bridge.js +43 -0
  11. package/lowcode/editor-components/global-widget/bridge.ts +46 -0
  12. package/lowcode/editor-components/global-widget/global-widget.js +254 -0
  13. package/lowcode/editor-components/global-widget/global-widget.ts +269 -0
  14. package/lowcode/editor-components/global-widget/src/banner.jpg +0 -0
  15. package/lowcode/editor-components/global-widget/src/footer.jpg +0 -0
  16. package/lowcode/editor-components/global-widget/src/header.png +0 -0
  17. package/lowcode/editor-components/global-widget/src/product.jpg +0 -0
  18. package/lowcode/glitterBundle/plugins/editor-elem.js +14 -4
  19. package/lowcode/glitterBundle/plugins/editor-elem.ts +13 -4
  20. package/lowcode/jspage/function-page/main_editor.js +14 -10
  21. package/lowcode/jspage/function-page/main_editor.ts +14 -10
  22. package/lowcode/jspage/function-page/tool-setting.js +260 -300
  23. package/lowcode/jspage/function-page/tool-setting.ts +350 -384
  24. package/lowcode/official_view_component/official/component.ts +1 -0
  25. package/lowcode/public-components/checkout/index.js +32 -1
  26. package/lowcode/public-components/checkout/index.ts +32 -1
  27. package/lowcode/public-components/product/pd-card-01.js +0 -58
  28. package/lowcode/public-components/product/pd-card-01.ts +0 -45
  29. package/lowcode/public-components/product/pd-card-02.js +1 -59
  30. package/lowcode/public-components/product/pd-card-02.ts +1 -45
  31. package/lowcode/public-components/product/pd-card-03.js +2 -59
  32. package/lowcode/public-components/product/pd-card-03.ts +2 -46
  33. package/package.json +3 -1
  34. package/src/api-public/services/financial-serviceV2.js +17 -7
  35. package/src/api-public/services/financial-serviceV2.js.map +1 -1
  36. package/src/api-public/services/post.js +17 -7
  37. package/src/api-public/services/post.js.map +1 -1
  38. package/src/api-public/services/shopee.js +17 -7
  39. package/src/api-public/services/shopee.js.map +1 -1
  40. package/src/api-public/services/shopping.js.map +1 -1
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { BgWidget } from '../../backend-manager/bg-widget.js';
11
11
  import { ApiPageConfig } from '../../api/pageConfig.js';
12
- import { ShareDialog } from '../../glitterBundle/dialog/ShareDialog.js';
13
- import { FirstBanner } from "../../public-components/banner/first-banner.js";
12
+ import { FirstBanner } from '../../public-components/banner/first-banner.js';
13
+ import { GlobalWidget } from '../../editor-components/global-widget/global-widget.js';
14
14
  export class ToolSetting {
15
15
  static main(gvc) {
16
16
  const html = String.raw;
@@ -21,16 +21,16 @@ export class ToolSetting {
21
21
  function: 'list',
22
22
  edit_view: '',
23
23
  };
24
- return [gvc.bindView(() => {
24
+ return [
25
+ gvc.bindView(() => {
25
26
  return {
26
27
  bind: vm.id,
27
28
  view: () => {
28
29
  if (vm.function === 'edit') {
29
- return html `
30
- <div class="px-2 pt-2">${vm.edit_view}</div>`;
30
+ return html ` <div class="px-2 pt-2">${vm.edit_view}</div>`;
31
31
  }
32
32
  return html `
33
- ${(() => {
33
+ ${(() => {
34
34
  if (document.body.clientWidth < 800) {
35
35
  return `<div class="w-100 d-flex align-items-center p-3 border-bottom">
36
36
  <h5 class="offcanvas-title " style="max-width: calc(100% - 50px);overflow: hidden;text-overflow: ellipsis;">統一元件設定</h5>
@@ -50,326 +50,286 @@ export class ToolSetting {
50
50
  return ``;
51
51
  }
52
52
  })()}
53
- ${gvc.bindView((() => {
53
+ ${gvc.bindView((() => {
54
54
  const vid = gvc.glitter.getUUID();
55
55
  return {
56
56
  bind: vid,
57
57
  view: () => {
58
- return vm.data.map((dd) => {
58
+ return vm.data
59
+ .map((dd) => {
59
60
  let viewID = gvc.glitter.getUUID();
60
61
  return gvc.bindView({
61
62
  bind: viewID,
62
63
  view: () => {
63
64
  var _a;
64
65
  return html `
65
- <div class="d-flex flex-column w-100 border-bottom">
66
- <div class="hoverF2 w-100 h-100 px-3 d-flex align-items-center justify-content-between p-3 ${(_a = dd.class) !== null && _a !== void 0 ? _a : ''}"
67
- style="cursor: pointer;"
68
- onclick="${gvc.event(() => {
66
+ <div class="d-flex flex-column w-100 border-bottom">
67
+ <div
68
+ class="hoverF2 w-100 h-100 px-3 d-flex align-items-center justify-content-between p-3 ${(_a = dd.class) !== null && _a !== void 0 ? _a : ''}"
69
+ style="cursor: pointer;"
70
+ onclick="${gvc.event(() => {
69
71
  let temp = dd.toggle;
70
72
  vm.data.map((d2) => {
71
73
  d2.toggle = false;
72
74
  });
73
75
  dd.toggle = !temp;
74
76
  gvc.notifyDataChange(vid);
75
- })}">
76
- ${BgWidget.title(dd.title, 'font-size: 16px;')}
77
- ${dd.toggle ? `<i class="fa-solid fa-chevron-down ms-2"></i>` : `<i class="fa-solid fa-chevron-right ms-2"></i>`}
78
- </div>
79
- <div class="px-3 mb-2 ${dd.toggle ? `` : `d-none`}"
80
- style="white-space: normal;t">
81
- ${dd.hint && dd.toggle ? BgWidget.grayNote(dd.hint) : ``}
82
- </div>
83
- ${gvc.bindView(() => {
84
- const id = gvc.glitter.getUUID();
85
- const cvm = {
86
- loading: true,
87
- html: ``,
88
- };
89
- function loadData() {
90
- var _a;
91
- return __awaiter(this, void 0, void 0, function* () {
92
- let module_list = (yield ApiPageConfig.getPageTemplate({
93
- template_from: 'all',
94
- page: '0',
95
- limit: '3000',
96
- type: 'module',
97
- tag: dd.tag,
98
- })).response.result.data;
99
- const ci_tag = (() => {
100
- switch (dd.tag) {
101
- case '標頭元件':
102
- return 'c_header';
103
- case '頁腳元件':
104
- return `footer`;
105
- case '商品卡片':
106
- return `product_widget`;
107
- case '廣告輪播':
108
- return 'advertise';
109
- }
110
- })();
111
- let setting_view = '';
112
- let widget = yield (() => __awaiter(this, void 0, void 0, function* () {
113
- if (['標頭元件', '頁腳元件', '商品卡片', '廣告輪播'].includes(dd.tag)) {
114
- return (yield ApiPageConfig.getPage({
115
- appName: window.appName,
116
- type: 'template',
117
- tag: ci_tag,
118
- })).response.result[0];
119
- }
120
- else {
121
- return {};
122
- }
123
- }))();
124
- const refer_widget = yield (() => __awaiter(this, void 0, void 0, function* () {
125
- if (['標頭元件', '頁腳元件', '商品卡片', '廣告輪播'].includes(dd.tag)) {
126
- return (yield ApiPageConfig.getPage({
127
- appName: widget.config[0].data.refer_app,
128
- type: 'template',
129
- tag: widget.config[0].data.tag,
130
- })).response.result[0];
131
- }
132
- else {
133
- return {};
134
- }
135
- }))();
136
- const find_showed_widget = gvc.glitter.share.findWidget((d1) => {
137
- return (d1.data &&
138
- d1.data.tag ===
139
- ci_tag);
140
- });
141
- const widget_container = find_showed_widget.container || widget.config;
142
- let widget_edited = find_showed_widget.widget || widget.config[0];
143
- const htmlGenerate = new gvc.glitter.htmlGenerate(widget_container, [], {
144
- editor_updated_callback: (oWidget) => {
145
- if (dd.tag === '廣告輪播') {
146
- FirstBanner.main({
147
- gvc: document.querySelector('.iframe_view').contentWindow.glitter.pageConfig[0].gvc,
148
- ed_widget: oWidget
149
- });
150
- }
151
- }
152
- }, true);
153
- gvc.glitter.share.editorViewModel.selectItem = widget_edited;
154
- try {
155
- module_list = module_list.filter((dd) => {
156
- return dd.appName !== widget.config[0].data.refer_app || dd.tag !== widget.config[0].data.tag;
157
- });
158
- }
159
- catch (e) {
160
- module_list = [];
161
- }
162
- try {
163
- setting_view += html `
164
- <div class="col-12 p-0 m-0">
165
- <div
166
- class="position-relative"
167
- style="width: 100%; padding: 18px 12px;border-radius: 7px; overflow: hidden; border: 1px #DDDDDD solid; flex-direction: column; justify-content: center; align-items: flex-start; gap: 32px; display: inline-flex"
168
- >
169
- <div style="align-self: stretch; justify-content: flex-start; align-items: center; gap: 10px; display: inline-flex">
170
- <div class="rounded-2 shadow"
171
- style="background-position:center;background-repeat: no-repeat;background-size: cover;width:93px;height: 59px;background-image: url('${(_a = refer_widget.template_config.image[0]) !== null && _a !== void 0 ? _a : 'https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/1713445383494-未命名(1080x1080像素).jpg'}');">
77
+ })}"
78
+ >
79
+ ${BgWidget.title(dd.title, 'font-size: 16px;')}
80
+ ${dd.toggle
81
+ ? `<i class="fa-solid fa-chevron-down ms-2"></i>`
82
+ : `<i class="fa-solid fa-chevron-right ms-2"></i>`}
83
+ </div>
172
84
 
173
- </div>
174
- <div style="flex: 1 1 0; flex-direction: column; justify-content: center; align-items: flex-start; gap: 4px; display: inline-flex">
175
- <div style="align-self: stretch; color: #393939; font-size: 15px; font-weight: 400; word-wrap: break-word">
176
- ${refer_widget.template_config.name}
177
- </div>
178
- </div>
179
-
180
- <div class=""
181
- style="cursor: pointer;color: #36B;font-size: 15px; "
182
- onclick="${gvc.event(() => {
183
- var _a, _b;
184
- if (dd.tag === '商品卡片') {
185
- gvc.glitter.share.product_edit_w = (_a = gvc.glitter.share.product_edit_w) !== null && _a !== void 0 ? _a : widget;
186
- widget = gvc.glitter.share.product_edit_w;
187
- widget_edited = widget.config[0];
188
- gvc.glitter.share.editorViewModel.saveArray[widget.id] = () => {
189
- return ApiPageConfig.setPage({
190
- id: widget.id,
191
- appName: widget.appName,
192
- tag: widget.tag,
193
- config: widget.config,
194
- });
195
- };
196
- }
197
- else if (dd.tag === '廣告輪播') {
198
- gvc.glitter.share.first_banner = (_b = gvc.glitter.share.first_banner) !== null && _b !== void 0 ? _b : widget;
199
- widget = gvc.glitter.share.first_banner;
200
- widget_edited = widget.config[0];
201
- gvc.glitter.share.editorViewModel.saveArray[widget.id] = () => {
202
- return ApiPageConfig.setPage({
203
- id: widget.id,
204
- appName: widget.appName,
205
- tag: widget.tag,
206
- config: widget.config,
207
- });
208
- };
209
- }
210
- vm.edit_view =
211
- html `` +
212
- htmlGenerate.editor(gvc, {
213
- return_: false,
214
- refreshAll: () => {
215
- },
216
- setting: [widget_edited],
217
- deleteEvent: () => {
218
- },
219
- });
220
- vm.function = 'edit';
221
- gvc.notifyDataChange(vm.id);
222
- })}">編輯
223
- </div>
224
- </div>
225
- </div>
226
- <div class="w-100 mt-2 ${module_list.length ? `` : `d-none`}">
227
- <div class="bt_border_editor"
228
- data-bs-toggle="dropdown"
229
- aria-haspopup="true"
230
- aria-expanded="false">變更樣式
231
- </div>
232
- <div class="dropdown-menu my-1 p-0 rounded-3 position-fixed "
233
- style="overflow: hidden;max-width: 100%;width: 300px;">
234
- ${(() => {
235
- return `<div class="d-flex flex-column w-100" style="max-height: 300px;overflow-y: auto;">
236
- ${module_list.map((dd, index) => {
237
- var _a;
238
- return html `
239
- <div
240
- class="position-relative"
241
- style="max-width: 100%;width: 300px; padding: 18px 12px;border-radius: 7px; overflow: hidden; flex-direction: column; justify-content: center; align-items: flex-start; gap: 32px; display: inline-flex"
242
- onclick="${gvc.event(() => {
243
- const dialog = new ShareDialog(gvc.glitter);
244
- dialog.checkYesOrNot({
245
- text: '是否確認替換樣式?',
246
- callback: (response) => {
247
- if (response) {
248
- dialog.dataLoading({ visible: true });
249
- (window.glitterInitialHelper).getPageData({
250
- tag: dd.tag,
251
- appName: dd.appName
252
- }, (d3) => {
253
- widget.config[0] = {
254
- id: gvc.glitter.getUUID(),
255
- js: './official_view_component/official.js',
256
- css: {
257
- class: {},
258
- style: {},
259
- },
260
- data: {
261
- refer_app: dd.appName,
262
- refer_form_data: d3.response.result[0].page_config.formData,
263
- tag: dd.tag,
264
- list: [],
265
- carryData: {},
266
- },
267
- type: 'component',
268
- class: 'w-100',
269
- index: 0,
270
- label: dd.name,
271
- style: '',
272
- bundle: {},
273
- global: [],
274
- toggle: false,
275
- stylist: [],
276
- dataType: 'static',
277
- style_from: 'code',
278
- classDataType: 'static',
279
- preloadEvenet: {},
280
- share: {},
281
- "gCount": "single"
282
- };
283
- ApiPageConfig.setPage({
284
- id: widget.id,
285
- appName: widget.appName,
286
- tag: widget.tag,
287
- name: widget.name,
288
- config: widget.config,
289
- group: widget.group,
290
- page_config: widget.page_config,
291
- page_type: widget.page_type,
292
- preview_image: widget.preview_image,
293
- favorite: widget.favorite,
294
- }).then((api) => {
295
- dialog.dataLoading({ visible: false });
296
- location.reload();
297
- });
298
- });
299
- }
300
- },
301
- });
302
- })}"
303
- >
304
- <div style="align-self: stretch; justify-content: flex-start; align-items: center; gap: 10px; display: inline-flex">
305
- <div class="rounded-2 shadow"
306
- style="background-position:center;background-repeat: no-repeat;background-size: cover;width:93px;height: 59px;background-image: url('${(_a = dd.template_config.image[0]) !== null && _a !== void 0 ? _a : 'https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/1713445383494-未命名(1080x1080像素).jpg'}');">
307
-
308
- </div>
309
- <div style="flex: 1 1 0; flex-direction: column; justify-content: center; align-items: flex-start; gap: 4px; display: inline-flex">
310
- <div style="align-self: stretch; color: #393939; font-size: 15px; font-weight: 400; word-wrap: break-word">
311
- ${dd.template_config.name}
312
- </div>
313
- </div>
314
-
315
- </div>
316
- </div>
317
- `;
318
- }).join(`<div class="w-100 border-top"></div>`)}
319
- </div>`;
320
- })()}
321
- </div>
322
- </div>
323
- </div>
324
- `;
325
- }
326
- catch (e) {
327
- }
328
- return setting_view + `<div class="mb-2"></div>`;
329
- });
330
- }
331
- return {
332
- bind: id,
333
- view: () => {
334
- if (!dd.toggle) {
335
- return ``;
336
- }
337
- else if (cvm.loading) {
338
- loadData().then((dd) => {
339
- cvm.html = dd;
340
- cvm.loading = false;
341
- gvc.notifyDataChange(id);
342
- });
343
- return html `
344
- <div class="d-flex w-100 align-items-center justify-content-center p-3">
345
- <div class="spinner-border"></div>
346
- </div>`;
347
- }
348
- else {
349
- return cvm.html;
350
- }
351
- },
352
- divCreate: {
353
- class: `row m-0 px-2`,
354
- style: 'cursor:pointer;',
355
- },
356
- };
85
+ ${ToolSetting.item({
86
+ gvc,
87
+ dd,
88
+ vm,
357
89
  })}
358
- </div>
359
- `;
360
- }, divCreate: { class: ' d-flex align-items-center' }
90
+ </div>
91
+ `;
92
+ },
93
+ divCreate: { class: ' d-flex align-items-center' },
361
94
  });
362
- }).join('');
95
+ })
96
+ .join('');
363
97
  },
364
98
  };
365
99
  })())}
366
- `;
100
+ `;
367
101
  },
368
102
  divCreate: {
369
103
  class: `p-2 mx-n2 mt-n2`,
370
104
  },
371
105
  };
372
- })].join('');
106
+ }),
107
+ ].join('');
108
+ }
109
+ static item(obj) {
110
+ const { gvc, dd, vm } = obj;
111
+ const html = String.raw;
112
+ return [
113
+ html ` <div class="px-2 mb-2 ${dd.toggle ? `` : `d-none`}" style="white-space: normal;t">
114
+ ${dd.hint && dd.toggle ? BgWidget.grayNote(dd.hint) : ``}
115
+ </div>`,
116
+ gvc.bindView(() => {
117
+ const id = gvc.glitter.getUUID();
118
+ const cvm = {
119
+ loading: true,
120
+ html: ``,
121
+ };
122
+ function loadData() {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ let module_list = (yield ApiPageConfig.getPageTemplate({
125
+ template_from: 'all',
126
+ page: '0',
127
+ limit: '3000',
128
+ type: 'module',
129
+ tag: dd.tag,
130
+ })).response.result.data;
131
+ const ci_tag = (() => {
132
+ switch (dd.tag) {
133
+ case '標頭元件':
134
+ return 'c_header';
135
+ case '頁腳元件':
136
+ return `footer`;
137
+ case '商品卡片':
138
+ return `product_widget`;
139
+ case '廣告輪播':
140
+ return 'advertise';
141
+ }
142
+ })();
143
+ let setting_view = '';
144
+ let widget = yield (() => __awaiter(this, void 0, void 0, function* () {
145
+ if (['標頭元件', '頁腳元件', '商品卡片', '廣告輪播'].includes(dd.tag)) {
146
+ return (yield ApiPageConfig.getPage({
147
+ appName: window.appName,
148
+ type: 'template',
149
+ tag: ci_tag,
150
+ })).response.result[0];
151
+ }
152
+ else {
153
+ return {};
154
+ }
155
+ }))();
156
+ const refer_widget = yield (() => __awaiter(this, void 0, void 0, function* () {
157
+ if (['標頭元件', '頁腳元件', '商品卡片', '廣告輪播'].includes(dd.tag)) {
158
+ return (yield ApiPageConfig.getPage({
159
+ appName: widget.config[0].data.refer_app,
160
+ type: 'template',
161
+ tag: widget.config[0].data.tag,
162
+ })).response.result[0];
163
+ }
164
+ else {
165
+ return {};
166
+ }
167
+ }))();
168
+ const find_showed_widget = gvc.glitter.share.findWidget((d1) => {
169
+ return d1.data && d1.data.tag === ci_tag;
170
+ });
171
+ const widget_container = find_showed_widget.container || widget.config;
172
+ let widget_edited = find_showed_widget.widget || widget.config[0];
173
+ const htmlGenerate = new gvc.glitter.htmlGenerate(widget_container, [], {
174
+ editor_updated_callback: (oWidget) => {
175
+ if (dd.tag === '廣告輪播') {
176
+ FirstBanner.main({
177
+ gvc: document.querySelector('.iframe_view').contentWindow.glitter.pageConfig[0].gvc,
178
+ ed_widget: oWidget,
179
+ });
180
+ }
181
+ },
182
+ }, true);
183
+ gvc.glitter.share.editorViewModel.selectItem = widget_edited;
184
+ try {
185
+ module_list = module_list.filter((dd) => {
186
+ return dd.appName !== widget.config[0].data.refer_app || dd.tag !== widget.config[0].data.tag;
187
+ });
188
+ }
189
+ catch (e) {
190
+ module_list = [];
191
+ }
192
+ try {
193
+ setting_view += html `
194
+ <div class="col-12 p-0 m-0">
195
+ <div
196
+ class="position-relative"
197
+ style="width: 100%; padding: 18px 12px;border-radius: 7px; overflow: hidden; border: 1px #DDDDDD solid; flex-direction: column; justify-content: center; align-items: flex-start; gap: 32px; display: inline-flex"
198
+ >
199
+ <div
200
+ style="align-self: stretch; justify-content: flex-start; align-items: center; gap: 10px; display: inline-flex"
201
+ >
202
+ <div
203
+ class="rounded-2 shadow"
204
+ style="background-position:center;background-repeat: no-repeat;background-size: cover;width:93px;height: 59px;background-image: url('${(() => {
205
+ switch (dd.tag) {
206
+ case '標頭元件':
207
+ return `${gvc.glitter.root_path}/editor-components/global-widget/src/header.png`;
208
+ case '頁腳元件':
209
+ return `${gvc.glitter.root_path}/editor-components/global-widget/src/footer.jpg`;
210
+ case '商品卡片':
211
+ return `${gvc.glitter.root_path}/editor-components/global-widget/src/product.jpg`;
212
+ case '廣告輪播':
213
+ return `${gvc.glitter.root_path}/editor-components/global-widget/src/banner.jpg`;
214
+ }
215
+ })()}');"
216
+ ></div>
217
+ <div
218
+ style="flex: 1 1 0; flex-direction: column; justify-content: center; align-items: flex-start; gap: 4px; display: inline-flex"
219
+ >
220
+ <div
221
+ style="align-self: stretch; color: #393939; font-size: 15px; font-weight: 400; word-wrap: break-word"
222
+ >
223
+ ${refer_widget.template_config.name}
224
+ </div>
225
+ </div>
226
+
227
+ <div
228
+ class="${(vm || dd.editable) ? `` : `d-none`}"
229
+ style="cursor: pointer;color: #36B;font-size: 15px; "
230
+ onclick="${gvc.event(() => {
231
+ var _a, _b;
232
+ if (dd.tag === '商品卡片') {
233
+ gvc.glitter.share.product_edit_w = (_a = gvc.glitter.share.product_edit_w) !== null && _a !== void 0 ? _a : widget;
234
+ widget = gvc.glitter.share.product_edit_w;
235
+ widget_edited = widget.config[0];
236
+ gvc.glitter.share.editorViewModel.saveArray[widget.id] = () => {
237
+ return ApiPageConfig.setPage({
238
+ id: widget.id,
239
+ appName: widget.appName,
240
+ tag: widget.tag,
241
+ config: widget.config,
242
+ });
243
+ };
244
+ }
245
+ else if (dd.tag === '廣告輪播') {
246
+ gvc.glitter.share.first_banner = (_b = gvc.glitter.share.first_banner) !== null && _b !== void 0 ? _b : widget;
247
+ widget = gvc.glitter.share.first_banner;
248
+ widget_edited = widget.config[0];
249
+ gvc.glitter.share.editorViewModel.saveArray[widget.id] = () => {
250
+ return ApiPageConfig.setPage({
251
+ id: widget.id,
252
+ appName: widget.appName,
253
+ tag: widget.tag,
254
+ config: widget.config,
255
+ });
256
+ };
257
+ }
258
+ if (vm) {
259
+ vm.edit_view =
260
+ html `` +
261
+ htmlGenerate.editor(gvc, {
262
+ return_: false,
263
+ refreshAll: () => { },
264
+ setting: [widget_edited],
265
+ deleteEvent: () => { },
266
+ });
267
+ vm.function = 'edit';
268
+ gvc.notifyDataChange(vm.id);
269
+ }
270
+ else {
271
+ gvc.glitter.pageConfig[0].gvc.getBindViewElem('right_NAV')[0].innerHTML = html `<div class="p-2">
272
+ ${htmlGenerate.editor(gvc, {
273
+ return_: false,
274
+ refreshAll: () => { },
275
+ setting: [widget_edited],
276
+ deleteEvent: () => { },
277
+ })}
278
+ </div>`;
279
+ }
280
+ })}"
281
+ >
282
+ 編輯
283
+ </div>
284
+ </div>
285
+ </div>
286
+ <div class="w-100 mt-2 ${module_list.length ? `` : `d-none`}">
287
+ <div
288
+ class="bt_border_editor"
289
+ data-bs-toggle="dropdown"
290
+ aria-haspopup="true"
291
+ aria-expanded="false"
292
+ onclick="${gvc.event(() => {
293
+ GlobalWidget.open(gvc, dd.tag);
294
+ })}"
295
+ >
296
+ 變更樣式
297
+ </div>
298
+ </div>
299
+ </div>
300
+ `;
301
+ }
302
+ catch (e) { }
303
+ return setting_view + `<div class="mb-2"></div>`;
304
+ });
305
+ }
306
+ return {
307
+ bind: id,
308
+ view: () => {
309
+ if (!dd.toggle) {
310
+ return ``;
311
+ }
312
+ else if (cvm.loading) {
313
+ loadData().then(dd => {
314
+ cvm.html = dd;
315
+ cvm.loading = false;
316
+ gvc.notifyDataChange(id);
317
+ });
318
+ return html ` <div class="d-flex w-100 align-items-center justify-content-center p-3">
319
+ <div class="spinner-border"></div>
320
+ </div>`;
321
+ }
322
+ else {
323
+ return cvm.html;
324
+ }
325
+ },
326
+ divCreate: {
327
+ class: `row m-0 px-2`,
328
+ style: 'cursor:pointer;',
329
+ },
330
+ };
331
+ }),
332
+ ].join('');
373
333
  }
374
334
  }
375
335
  ToolSetting.tool_setting_list = [
@@ -377,7 +337,7 @@ ToolSetting.tool_setting_list = [
377
337
  title: '標頭選單',
378
338
  tag: '標頭元件',
379
339
  hint: `全館 (首頁,隱形賣場,一頁式網頁) 的標頭將預設為以下樣式`,
380
- class: "guideDesign-2"
340
+ class: 'guideDesign-2',
381
341
  },
382
342
  {
383
343
  title: '頁腳選單',