ts-glitter 21.1.6 → 21.1.8

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