ts-glitter 13.3.4 → 13.3.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 (101) hide show
  1. package/lowcode/Entry.js +1 -1
  2. package/lowcode/Entry.ts +1 -1
  3. package/lowcode/backend-manager/bg-blog.js +2 -7
  4. package/lowcode/backend-manager/bg-blog.ts +8 -13
  5. package/lowcode/backend-manager/bg-customer-message.js +4 -2
  6. package/lowcode/backend-manager/bg-customer-message.ts +4 -2
  7. package/lowcode/backend-manager/bg-graph-api.js +6 -11
  8. package/lowcode/backend-manager/bg-graph-api.ts +14 -20
  9. package/lowcode/backend-manager/bg-line.js +526 -1002
  10. package/lowcode/backend-manager/bg-line.ts +1815 -2354
  11. package/lowcode/backend-manager/bg-notify.js +392 -746
  12. package/lowcode/backend-manager/bg-notify.ts +436 -835
  13. package/lowcode/backend-manager/bg-project.js +176 -293
  14. package/lowcode/backend-manager/bg-project.ts +214 -344
  15. package/lowcode/backend-manager/bg-recommend.js +39 -148
  16. package/lowcode/backend-manager/bg-recommend.ts +43 -162
  17. package/lowcode/backend-manager/bg-sns.js +489 -814
  18. package/lowcode/backend-manager/bg-sns.ts +1876 -2238
  19. package/lowcode/backend-manager/bg-widget.js +301 -171
  20. package/lowcode/backend-manager/bg-widget.ts +324 -193
  21. package/lowcode/cms-plugin/ai-points.js +84 -67
  22. package/lowcode/cms-plugin/ai-points.ts +280 -247
  23. package/lowcode/cms-plugin/auto-reply.js +6 -7
  24. package/lowcode/cms-plugin/auto-reply.ts +6 -7
  25. package/lowcode/cms-plugin/data-analyze.js +5 -6
  26. package/lowcode/cms-plugin/data-analyze.ts +5 -6
  27. package/lowcode/cms-plugin/form-setting.js +122 -220
  28. package/lowcode/cms-plugin/form-setting.ts +124 -240
  29. package/lowcode/cms-plugin/line-auto-reply.js +17 -18
  30. package/lowcode/cms-plugin/line-auto-reply.ts +29 -36
  31. package/lowcode/cms-plugin/member-group-list.js +5 -2
  32. package/lowcode/cms-plugin/member-group-list.ts +5 -2
  33. package/lowcode/cms-plugin/member-type-list.js +36 -84
  34. package/lowcode/cms-plugin/member-type-list.ts +39 -92
  35. package/lowcode/cms-plugin/menus-setting.js +8 -73
  36. package/lowcode/cms-plugin/menus-setting.ts +8 -78
  37. package/lowcode/cms-plugin/permission-setting.js +73 -106
  38. package/lowcode/cms-plugin/permission-setting.ts +236 -278
  39. package/lowcode/cms-plugin/shopping-collections.js +95 -137
  40. package/lowcode/cms-plugin/shopping-collections.ts +103 -147
  41. package/lowcode/cms-plugin/shopping-discount-setting.js +310 -416
  42. package/lowcode/cms-plugin/shopping-discount-setting.ts +1269 -1386
  43. package/lowcode/cms-plugin/shopping-finance-setting.js +1 -0
  44. package/lowcode/cms-plugin/shopping-finance-setting.ts +1 -0
  45. package/lowcode/cms-plugin/shopping-order-manager.js +742 -973
  46. package/lowcode/cms-plugin/shopping-order-manager.ts +1928 -2164
  47. package/lowcode/cms-plugin/shopping-order-return.js +147 -267
  48. package/lowcode/cms-plugin/shopping-order-return.ts +154 -292
  49. package/lowcode/cms-plugin/shopping-product-setting.js +6 -2
  50. package/lowcode/cms-plugin/shopping-product-setting.ts +8 -4
  51. package/lowcode/cms-plugin/shopping-product-stock.js +12 -92
  52. package/lowcode/cms-plugin/shopping-product-stock.ts +14 -94
  53. package/lowcode/cms-plugin/shopping-product-text.js +0 -3
  54. package/lowcode/cms-plugin/shopping-product-text.ts +0 -3
  55. package/lowcode/cms-plugin/shopping-rebate.js +95 -151
  56. package/lowcode/cms-plugin/shopping-rebate.ts +101 -159
  57. package/lowcode/cms-plugin/sms-points.js +83 -67
  58. package/lowcode/cms-plugin/sms-points.ts +281 -241
  59. package/lowcode/cms-plugin/sns-auto-reply.js +18 -18
  60. package/lowcode/cms-plugin/sns-auto-reply.ts +34 -40
  61. package/lowcode/cms-plugin/user-list.js +71 -90
  62. package/lowcode/cms-plugin/user-list.ts +76 -95
  63. package/lowcode/cms-plugin/web-config-setting.js +61 -111
  64. package/lowcode/cms-plugin/web-config-setting.ts +65 -124
  65. package/lowcode/css/editor.css +5 -2
  66. package/lowcode/glitter-base/route/shopping.js +1 -1
  67. package/lowcode/glitter-base/route/shopping.ts +19 -19
  68. package/lowcode/jspage/editor.js +1 -1
  69. package/lowcode/jspage/editor.ts +1 -1
  70. package/lowcode/jspage/main.js +3 -0
  71. package/lowcode/jspage/main.ts +3 -0
  72. package/package.json +1 -2
  73. package/src/api-public/controllers/ai-chat.js.map +5 -1
  74. package/src/api-public/controllers/article.js.map +1 -1
  75. package/src/api-public/controllers/chat.js.map +1 -1
  76. package/src/api-public/controllers/fb-message.js.map +1 -1
  77. package/src/api-public/controllers/index.js.map +1 -1
  78. package/src/api-public/controllers/line-message.js.map +1 -1
  79. package/src/api-public/controllers/rebate.js.map +1 -1
  80. package/src/api-public/controllers/shop.js.map +1 -1
  81. package/src/api-public/controllers/user.js.map +1 -1
  82. package/src/api-public/services/auto-send-email.js.map +1 -1
  83. package/src/api-public/services/chat.js +3 -3
  84. package/src/api-public/services/chat.js.map +1 -1
  85. package/src/api-public/services/chat.ts +3 -4
  86. package/src/api-public/services/fb-message.js.map +5 -1
  87. package/src/api-public/services/filter-protect-data.js.map +1 -1
  88. package/src/api-public/services/line-message.js.map +1 -1
  89. package/src/api-public/services/monitor.js.map +1 -1
  90. package/src/api-public/services/notify.js.map +1 -1
  91. package/src/api-public/services/rebate.js.map +1 -1
  92. package/src/api-public/services/schedule.js.map +1 -1
  93. package/src/api-public/services/share-permission.js.map +1 -1
  94. package/src/api-public/services/shopping.js.map +1 -1
  95. package/src/api-public/services/user.js +67 -66
  96. package/src/api-public/services/user.js.map +1 -1
  97. package/src/api-public/services/user.ts +212 -182
  98. package/src/helper/glitter-util.js.map +1 -1
  99. package/src/modules/firebase.d.ts +1 -0
  100. package/src/modules/firebase.js +1 -1
  101. package/src/modules/firebase.js.map +1 -1
@@ -31,7 +31,9 @@ export class BgWidget {
31
31
  return html `<span style="color: #006621; font-size: 14px; font-weight: 400; cursor:pointer; overflow-wrap: break-word; text-decoration: underline; ${style}" onclick="${event}">${text}</span>`;
32
32
  }
33
33
  static dangerNote(text, event = '', style = '') {
34
- return html `<span style="color: #ef4444 !important; font-size: 14px; font-weight: 400; cursor:pointer; overflow-wrap: break-word; text-decoration: underline; ${style}" onclick="${event}">${text}</span>`;
34
+ return html `<span style="color: #ef4444 !important; font-size: 14px; font-weight: 400; cursor:pointer; overflow-wrap: break-word; text-decoration: underline; ${style}" onclick="${event}"
35
+ >${text}</span
36
+ >`;
35
37
  }
36
38
  static taiwanPhoneAlert(str = '請輸入正確的市話或手機號碼格式') {
37
39
  return html `
@@ -193,6 +195,17 @@ export class BgWidget {
193
195
  <i class="fa-solid fa-angle-left" style="margin-top: 0.25rem; color: #393939; font-size: 1.75rem; font-weight: 900;"></i>
194
196
  </div>`;
195
197
  }
198
+ static aiChatButton(obj) {
199
+ return html `<div
200
+ class="bt_orange_lin"
201
+ onclick="${obj.gvc.event(() => {
202
+ window.parent.glitter.share.ai_message.vm.select_bt = obj.select;
203
+ window.parent.glitter.share.ai_message.toggle(true);
204
+ })}"
205
+ >
206
+ <img src="https://d3jnmi1tfjgtti.cloudfront.net/file/234285319/size1440_s*px$_sas0s9s0s1sesas0_1697354801736-Glitterlogo.png" class="me-1" style="width: 24px; height: 24px;" />${obj.title}
207
+ </div>`;
208
+ }
196
209
  static primaryInsignia(text) {
197
210
  return html ` <div class="insignia insignia-primary">${text}</div>`;
198
211
  }
@@ -283,11 +296,17 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
283
296
  >
284
297
  </div>`;
285
298
  }
286
- static searchPlace(event, vale, placeholder, margin = '16px 0 0 0') {
287
- return html ` <div class="w-100 position-relative" style="margin: ${margin};">
288
- <i class=" fa-regular fa-magnifying-glass" style="font-size: 18px;color: #A0A0A0;position: absolute;left:20px;top:50%;transform: translateY(-50%);" aria-hidden="true"></i>
289
- <input class="form-control h-100 " style="border-radius: 10px; border: 1px solid #DDD; padding-left: 50px;" placeholder="${placeholder}" onchange="${event}" value="${vale}" />
290
- </div>`;
299
+ static searchPlace(event, vale, placeholder, margin, padding) {
300
+ const defMargin = document.body.clientWidth > 768 ? '16px 0' : '8px 0';
301
+ const defPadding = document.body.clientWidth > 768 ? '0 16px' : '0';
302
+ return html `
303
+ <div style="margin: ${margin !== null && margin !== void 0 ? margin : defMargin}; padding: ${padding !== null && padding !== void 0 ? padding : defPadding}">
304
+ <div class="w-100 position-relative">
305
+ <i class=" fa-regular fa-magnifying-glass" style="font-size: 18px;color: #A0A0A0;position: absolute;left:20px;top:50%;transform: translateY(-50%);" aria-hidden="true"></i>
306
+ <input class="form-control h-100 " style="border-radius: 10px; border: 1px solid #DDD; padding-left: 50px;" placeholder="${placeholder}" onchange="${event}" value="${vale}" />
307
+ </div>
308
+ </div>
309
+ `;
291
310
  }
292
311
  static linkList(obj) {
293
312
  var _a, _b;
@@ -1016,19 +1035,33 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
1016
1035
  });
1017
1036
  }
1018
1037
  static tableV3(obj) {
1019
- var _a, _b;
1020
1038
  const gvc = obj.gvc;
1021
1039
  const glitter = gvc.glitter;
1022
1040
  const ps = new PageSplit(gvc);
1023
- const isPhone = document.body.clientWidth < 768;
1024
- const tableMinWidth = (_a = obj.tableMinWidth) !== null && _a !== void 0 ? _a : 800;
1025
- const maxWidth = (_b = obj.tableMaxWidth) !== null && _b !== void 0 ? _b : 1500;
1026
- const tableMaxWidth = maxWidth > tableMinWidth ? maxWidth : tableMinWidth;
1041
+ const widthList = [];
1042
+ let defWidth = 0;
1043
+ let fullWidth = 0;
1027
1044
  const ids = {
1028
1045
  container: glitter.getUUID(),
1029
1046
  filter: glitter.getUUID(),
1030
1047
  pencil: gvc.glitter.getUUID(),
1048
+ header: Tool.randomString(6),
1049
+ headerCell: Tool.randomString(6),
1050
+ tr: Tool.randomString(6),
1051
+ textClass: Tool.randomString(6),
1031
1052
  };
1053
+ const created = {
1054
+ checkbox: false,
1055
+ header: false,
1056
+ table: false,
1057
+ };
1058
+ gvc.addStyle(`
1059
+ .${ids.textClass} {
1060
+ text-align: left !important;
1061
+ padding-right: 0.25rem !important;
1062
+ padding-left: 0.25rem !important;
1063
+ }
1064
+ `);
1032
1065
  return gvc.bindView(() => {
1033
1066
  const vm = {
1034
1067
  loading: true,
@@ -1037,8 +1070,10 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
1037
1070
  tableData: [],
1038
1071
  originalData: [],
1039
1072
  callback: () => {
1040
- vm.loading = false;
1041
- gvc.notifyDataChange(ids.container);
1073
+ setTimeout(() => {
1074
+ vm.loading = false;
1075
+ gvc.notifyDataChange(ids.container);
1076
+ }, 50);
1042
1077
  },
1043
1078
  };
1044
1079
  return {
@@ -1050,10 +1085,7 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
1050
1085
  if (vm.tableData.length === 0) {
1051
1086
  return html ` <div style="text-align: center; padding: 24px; font-size: 24px; font-weight: 700;">暫無資料</div>`;
1052
1087
  }
1053
- let widthList = [];
1054
- let viewWidth = 100;
1055
- let noneWidthElement = 0;
1056
- const checkAllBox = (changeView) => {
1088
+ function checkAllBox(changeView) {
1057
1089
  return EditorElem.checkBoxOnly({
1058
1090
  gvc: gvc,
1059
1091
  def: vm.originalData.every((item) => item.checked),
@@ -1068,111 +1100,147 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
1068
1100
  }
1069
1101
  });
1070
1102
  gvc.notifyDataChange(ids.filter);
1103
+ changeHeaderStyle();
1071
1104
  },
1072
1105
  stopChangeView: changeView,
1073
1106
  });
1074
- };
1075
- vm.tableData = vm.tableData.map((item, index) => {
1076
- if (obj.filter.length > 0) {
1077
- return [
1078
- {
1079
- key: checkAllBox(true),
1080
- value: EditorElem.checkBoxOnly({
1081
- gvc: gvc,
1082
- def: false,
1083
- callback: (result) => {
1084
- vm.originalData[index].checked = result;
1085
- gvc.notifyDataChange(ids.filter);
1086
- },
1087
- }),
1088
- width: 5,
1089
- },
1090
- ...item,
1091
- ];
1092
- }
1093
- return item;
1094
- });
1095
- vm.tableData[0].map((item) => {
1096
- if (item.width) {
1097
- viewWidth -= item.width;
1098
- }
1099
- else {
1100
- noneWidthElement++;
1101
- }
1102
- });
1103
- vm.tableData[0].map((item) => {
1104
- if (!item.width) {
1105
- item.width = viewWidth / noneWidthElement;
1107
+ }
1108
+ function changeHeaderStyle() {
1109
+ const target = document.querySelector(`[gvc-id="${gvc.id(ids.header)}"]`);
1110
+ if (target) {
1111
+ if (vm.originalData.find((dd) => dd.checked)) {
1112
+ target.style.position = 'sticky';
1113
+ target.style.top = '0';
1114
+ target.style.left = '0';
1115
+ }
1116
+ else {
1117
+ target.style.position = 'relative';
1118
+ target.style.top = '';
1119
+ target.style.left = '';
1120
+ }
1106
1121
  }
1107
- widthList.push(item.width);
1108
- });
1109
- return html `<div style="margin-top: 4px; overflow-x: scroll; z-index: 1;">
1110
- ${gvc.bindView(() => {
1111
- return {
1112
- bind: ids.filter,
1113
- view: () => {
1114
- if (vm.originalData.find((dd) => dd.checked)) {
1115
- const checkedData = vm.originalData.filter((dd) => dd.checked);
1116
- if (isPhone) {
1117
- return BgWidget.selNavbar({
1118
- checkbox: checkAllBox(false),
1119
- count: checkedData.length,
1120
- buttonList: [
1122
+ }
1123
+ if (!created.checkbox) {
1124
+ vm.tableData = vm.tableData.map((item, index) => {
1125
+ if (obj.filter.length > 0) {
1126
+ return [
1127
+ {
1128
+ key: checkAllBox(true),
1129
+ value: EditorElem.checkBoxOnly({
1130
+ gvc: gvc,
1131
+ def: false,
1132
+ callback: (result) => {
1133
+ vm.originalData[index].checked = result;
1134
+ gvc.notifyDataChange(ids.filter);
1135
+ changeHeaderStyle();
1136
+ },
1137
+ }),
1138
+ },
1139
+ ...item,
1140
+ ];
1141
+ }
1142
+ return item;
1143
+ });
1144
+ created.checkbox = !created.checkbox;
1145
+ }
1146
+ return html `<div style="margin-top: 4px; overflow-x: scroll; position: relative; min-height: 350px">
1147
+ <div class="w-100 h-100 bg-white top-0" style="position: absolute; z-index: ${defWidth > 0 ? 0 : 2}; display: ${defWidth > 0 ? 'none' : 'block'};"></div>
1148
+ ${gvc.bindView({
1149
+ bind: ids.header,
1150
+ view: () => {
1151
+ return gvc.bindView({
1152
+ bind: ids.filter,
1153
+ view: () => {
1154
+ if (vm.originalData.find((dd) => dd.checked)) {
1155
+ const checkedData = vm.originalData.filter((dd) => dd.checked);
1156
+ if (document.body.clientWidth < 768) {
1157
+ return BgWidget.selNavbar({
1158
+ checkbox: checkAllBox(false),
1159
+ count: checkedData.length,
1160
+ buttonList: [
1161
+ BgWidget.selEventDropmenu({
1162
+ gvc: gvc,
1163
+ options: obj.filter.map((item) => {
1164
+ return {
1165
+ name: item.name,
1166
+ event: gvc.event(() => item.event(checkedData)),
1167
+ };
1168
+ }),
1169
+ text: '',
1170
+ }),
1171
+ ],
1172
+ });
1173
+ }
1174
+ const inButtons = obj.filter.filter((item) => item.option);
1175
+ const outButtons = obj.filter.filter((item) => !item.option);
1176
+ const inList = inButtons.length > 0
1177
+ ? [
1121
1178
  BgWidget.selEventDropmenu({
1122
1179
  gvc: gvc,
1123
- options: obj.filter.map((item) => {
1180
+ options: inButtons.map((item) => {
1124
1181
  return {
1125
1182
  name: item.name,
1126
1183
  event: gvc.event(() => item.event(checkedData)),
1127
1184
  };
1128
1185
  }),
1129
- text: '',
1186
+ text: '更多操作',
1130
1187
  }),
1131
- ],
1188
+ ]
1189
+ : [];
1190
+ const outList = outButtons.map((item) => {
1191
+ return BgWidget.selEventButton(item.name, gvc.event(() => item.event(checkedData)));
1192
+ });
1193
+ return BgWidget.selNavbar({
1194
+ checkbox: checkAllBox(false),
1195
+ count: checkedData.length,
1196
+ buttonList: [...inList, ...outList],
1132
1197
  });
1133
1198
  }
1134
- const inButtons = obj.filter.filter((item) => item.option);
1135
- const outButtons = obj.filter.filter((item) => !item.option);
1136
- const inList = inButtons.length > 0
1137
- ? [
1138
- BgWidget.selEventDropmenu({
1139
- gvc: gvc,
1140
- options: inButtons.map((item) => {
1141
- return {
1142
- name: item.name,
1143
- event: gvc.event(() => item.event(checkedData)),
1144
- };
1145
- }),
1146
- text: '更多操作',
1147
- }),
1148
- ]
1149
- : [];
1150
- const outList = outButtons.map((item) => {
1151
- return BgWidget.selEventButton(item.name, gvc.event(() => item.event(checkedData)));
1152
- });
1153
- return BgWidget.selNavbar({
1154
- checkbox: checkAllBox(false),
1155
- count: checkedData.length,
1156
- buttonList: [...inList, ...outList],
1157
- });
1158
- }
1159
- return vm.tableData[0]
1160
- .map((dd, index) => {
1161
- return html ` <th class="text-start tx_700 px-1" style="width: ${widthList[index]}%;">${dd.key}</th>`;
1162
- })
1163
- .join('');
1164
- },
1165
- divCreate: {
1166
- class: 'd-flex align-items-center mb-2',
1167
- style: `position: relative; height: 40px !important; ${isPhone ? `min-width: ${tableMinWidth}px; max-width: ${tableMaxWidth}px;` : ''}`,
1168
- },
1169
- };
1199
+ return vm.tableData[0]
1200
+ .map((dd, index) => {
1201
+ return html ` <div class="${ids.headerCell} ${ids.textClass} tx_700" style="min-width: ${widthList[index]}px;">${dd.key}</div>`;
1202
+ })
1203
+ .join('');
1204
+ },
1205
+ divCreate: {
1206
+ class: `d-flex align-items-center mb-2 ${ids.header}`,
1207
+ style: `height: 40px !important;`,
1208
+ },
1209
+ onCreate: () => {
1210
+ if (!created.header) {
1211
+ let timer = 0;
1212
+ const si = setInterval(() => {
1213
+ timer++;
1214
+ const header = document.querySelector(`.${ids.header}`);
1215
+ if (!created.header && header && header.offsetWidth > 0) {
1216
+ let n = 0;
1217
+ const htmlTags = new RegExp(/<[^>]*>/);
1218
+ header === null || header === void 0 ? void 0 : header.querySelectorAll('div').forEach((div) => {
1219
+ if (div.classList.contains(ids.headerCell)) {
1220
+ const baseWidth = htmlTags.test(div.innerHTML) ? 0 : div.innerHTML.length * 24;
1221
+ widthList[n] = div.offsetWidth > baseWidth ? div.offsetWidth : baseWidth;
1222
+ n++;
1223
+ }
1224
+ });
1225
+ fullWidth = header.offsetWidth;
1226
+ created.header = !created.header;
1227
+ clearInterval(si);
1228
+ }
1229
+ if (timer > 500) {
1230
+ clearInterval(si);
1231
+ }
1232
+ }, 50);
1233
+ }
1234
+ },
1235
+ });
1236
+ },
1170
1237
  })}
1171
- <table class="table table-centered table-nowrap text-center table-hover" style="${isPhone ? `min-width: ${tableMinWidth}px; max-width: ${tableMaxWidth}px;` : ''}">
1238
+ <table class="table table-centered table-nowrap text-center table-hover" style="width: ${defWidth}px;">
1172
1239
  <tbody>
1173
1240
  ${vm.tableData
1174
1241
  .map((dd, trIndex) => {
1175
1242
  return html ` <tr
1243
+ class="${trIndex === 0 ? ids.tr : ''}"
1176
1244
  onclick="${gvc.event(() => {
1177
1245
  obj.rowClick && obj.rowClick(dd, trIndex);
1178
1246
  })}"
@@ -1185,20 +1253,22 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
1185
1253
  >
1186
1254
  ${dd
1187
1255
  .map((d3, tdIndex) => {
1188
- var _a;
1256
+ const tdClass = Tool.randomString(5);
1257
+ gvc.addStyle(`
1258
+ .${tdClass} {
1259
+ border: none;
1260
+ vertical-align: middle;
1261
+ width: ${widthList[tdIndex]}px;
1262
+ ${dd.length > 1 && tdIndex === 0 ? 'border-radius: 10px 0 0 10px;' : ''}
1263
+ ${dd.length > 1 && tdIndex === dd.length - 1 ? 'border-radius: 0 10px 10px 0;' : ''}
1264
+ ${dd.length === 1 ? 'border-radius: 10px;' : ''}
1265
+ }
1266
+ `);
1189
1267
  return html ` <td
1190
- class="${(_a = d3.position) !== null && _a !== void 0 ? _a : 'text-start'} tx_normal px-1"
1191
- style="
1192
- color:#393939 !important;
1193
- border: none;
1194
- vertical-align: middle;
1195
- width: ${widthList[tdIndex]}%;
1196
- ${tdIndex === 0 ? 'border-radius: 10px 0 0 10px;' : ''}
1197
- ${tdIndex === dd.length - 1 ? 'border-radius: 0 10px 10px 0;' : ''}
1198
- "
1199
- gvc-checkbox="${obj.filter.length !== 0 && tdIndex === 0 ? `checkbox${trIndex}` : ''}"
1268
+ class="${ids.textClass} ${tdClass} tx_normal"
1269
+ ${obj.filter.length !== 0 && tdIndex === 0 ? `gvc-checkbox="checkbox${trIndex}"` : ''}
1200
1270
  >
1201
- <div class="text-nowrap">${d3.value}</div>
1271
+ <div class="text-nowrap" style="color: #393939 !important;">${d3.value}</div>
1202
1272
  </td>`;
1203
1273
  })
1204
1274
  .join('')}
@@ -1224,6 +1294,42 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
1224
1294
  if (vm.loading) {
1225
1295
  obj.getData(vm);
1226
1296
  }
1297
+ else {
1298
+ if (!created.table) {
1299
+ let timer = 0;
1300
+ const si = setInterval(() => {
1301
+ timer++;
1302
+ if (created.header) {
1303
+ const checkbox = obj.filter.length > 0;
1304
+ const tr = document.querySelector(`.${ids.tr}`);
1305
+ tr === null || tr === void 0 ? void 0 : tr.querySelectorAll('td').forEach((td, index) => {
1306
+ if (checkbox && index === 0) {
1307
+ widthList[index] = 60;
1308
+ }
1309
+ else {
1310
+ widthList[index] = td.offsetWidth > widthList[index] ? td.offsetWidth : widthList[index];
1311
+ }
1312
+ defWidth += widthList[index];
1313
+ });
1314
+ if (fullWidth > defWidth) {
1315
+ const extraWidth = (fullWidth - defWidth) / (widthList.length - (checkbox ? 1 : 0));
1316
+ widthList.map((width, index) => {
1317
+ if (!(checkbox && index === 0)) {
1318
+ widthList[index] = width + extraWidth;
1319
+ }
1320
+ });
1321
+ defWidth = fullWidth;
1322
+ }
1323
+ created.table = !created.table;
1324
+ gvc.notifyDataChange(ids.container);
1325
+ clearInterval(si);
1326
+ }
1327
+ if (timer > 500) {
1328
+ clearInterval(si);
1329
+ }
1330
+ }, 50);
1331
+ }
1332
+ }
1227
1333
  },
1228
1334
  };
1229
1335
  });
@@ -1513,21 +1619,26 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
1513
1619
  }
1514
1620
  static selNavbar(data) {
1515
1621
  var _a;
1516
- const pd = document.body.clientWidth > 768 ? this.getContainerWidth() / 60 : 12;
1622
+ const navbarStyle = `
1623
+ display: flex;
1624
+ justify-content: space-between;
1625
+ align-items: center;
1626
+ height: 40px !important;
1627
+ border-radius: 10px;
1628
+ background: linear-gradient(0deg, #f7f7f7 0%, #f7f7f7 100%), #fff;
1629
+ padding: 0 22px;
1630
+ ${document.body.clientWidth > 768 ? `width: 100%;` : `width: calc(100vw - 24px); `}
1631
+ `;
1517
1632
  return html `
1518
1633
  <div
1519
- style="display: flex;
1520
- justify-content: space-between;
1521
- align-items: center;
1522
- height: 40px !important;
1523
- border-radius: 10px;
1524
- background: linear-gradient(0deg, #f7f7f7 0%, #f7f7f7 100%), #fff;
1525
- padding: 0 ${pd}px;
1526
- ${document.body.clientWidth > 768 ? `width: 100%;` : `width: calc(100vw - 8%); position: sticky; top: 0; left: 0;`}"
1634
+ style="${navbarStyle
1635
+ .replace(/;\s+/g, ';')
1636
+ .replace(/[\r\n]/g, '')
1637
+ .trim()}"
1527
1638
  >
1528
1639
  <div style="display: flex; align-items: center; font-size: 14px; color: #393939; font-weight: 700;">
1529
1640
  ${(_a = data.checkbox) !== null && _a !== void 0 ? _a : ''}
1530
- <span class="ms-3">已選取${data.count}項</span>
1641
+ <span style="margin-left: 24px;">已選取${data.count}項</span>
1531
1642
  </div>
1532
1643
  <div style="display: flex; justify-content: flex-end; gap: 12px;">${data.buttonList.join('')}</div>
1533
1644
  </div>
@@ -1588,7 +1699,8 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
1588
1699
  .join(this.horizontalLine());
1589
1700
  }
1590
1701
  static openBoxContainer(obj) {
1591
- var _a, _b;
1702
+ var _a;
1703
+ const bvid = Tool.randomString(5);
1592
1704
  const text = Tool.randomString(5);
1593
1705
  const height = (_a = obj.height) !== null && _a !== void 0 ? _a : 500;
1594
1706
  const closeHeight = 56;
@@ -1645,55 +1757,73 @@ ${(_c = obj.default) !== null && _c !== void 0 ? _c : ''}</textarea
1645
1757
  }
1646
1758
  }
1647
1759
  `);
1648
- return html ` <div class="box-tag-${obj.tag} box-container-${text}">
1649
- <div
1650
- class="box-navbar-${text} ${(_b = obj.guideClass) !== null && _b !== void 0 ? _b : ''}"
1651
- onclick="${obj.gvc.event((e) => {
1652
- if (!obj.autoClose) {
1653
- const boxes = document.querySelectorAll(`.box-tag-${obj.tag}`);
1654
- boxes.forEach((box) => {
1655
- const isOpening = box.classList.contains('open-box');
1656
- const isSelf = box.classList.contains(`box-container-${text}`) || box.classList.contains(`arrow-icon-${text}`);
1657
- if (isOpening && !isSelf) {
1658
- box.classList.remove('open-box');
1659
- if (box.tagName === 'DIV') {
1660
- box.style.height = `${closeHeight}px`;
1661
- }
1662
- }
1663
- });
1664
- }
1665
- setTimeout(() => {
1666
- e.parentElement.classList.toggle('open-box');
1667
- e.parentElement.querySelector(`.arrow-icon-${text}`).classList.toggle('open-box');
1668
- const container = window.document.querySelector(`.box-container-${text}`);
1669
- if (e.parentElement.classList.contains('open-box')) {
1670
- const si = setInterval(() => {
1671
- const inside = window.document.querySelector(`.box-inside-${text}`);
1672
- if (inside) {
1673
- const insideHeight = inside.clientHeight;
1674
- if (insideHeight + closeHeight < height) {
1675
- container.style.height = `${insideHeight + closeHeight + 20}px`;
1676
- }
1677
- else {
1678
- container.style.height = `${height}px`;
1760
+ return obj.gvc.bindView({
1761
+ bind: bvid,
1762
+ view: () => {
1763
+ var _a;
1764
+ return html ` <div class="box-tag-${obj.tag} box-container-${text}">
1765
+ <div
1766
+ class="box-navbar-${text} ${(_a = obj.guideClass) !== null && _a !== void 0 ? _a : ''}"
1767
+ onclick="${obj.gvc.event((e) => {
1768
+ if (!obj.autoClose) {
1769
+ const boxes = document.querySelectorAll(`.box-tag-${obj.tag}`);
1770
+ boxes.forEach((box) => {
1771
+ const isOpening = box.classList.contains('open-box');
1772
+ const isSelf = box.classList.contains(`box-container-${text}`) || box.classList.contains(`arrow-icon-${text}`);
1773
+ if (isOpening && !isSelf) {
1774
+ box.classList.remove('open-box');
1775
+ if (box.tagName === 'DIV') {
1776
+ box.style.height = `${closeHeight}px`;
1777
+ }
1679
1778
  }
1680
- clearInterval(si);
1779
+ });
1780
+ }
1781
+ setTimeout(() => {
1782
+ e.parentElement.classList.toggle('open-box');
1783
+ e.parentElement.querySelector(`.arrow-icon-${text}`).classList.toggle('open-box');
1784
+ const container = window.document.querySelector(`.box-container-${text}`);
1785
+ if (e.parentElement.classList.contains('open-box')) {
1786
+ const si = setInterval(() => {
1787
+ const inside = window.document.querySelector(`.box-inside-${text}`);
1788
+ if (inside) {
1789
+ const insideHeight = inside.clientHeight;
1790
+ if (insideHeight + closeHeight < height) {
1791
+ container.style.height = `${insideHeight + closeHeight + 20}px`;
1792
+ }
1793
+ else {
1794
+ container.style.height = `${height}px`;
1795
+ }
1796
+ clearInterval(si);
1797
+ }
1798
+ }, 100);
1799
+ }
1800
+ else {
1801
+ container.style.height = `${closeHeight}px`;
1802
+ }
1803
+ }, 50);
1804
+ })}"
1805
+ >
1806
+ <div class="d-flex tx_700">${obj.title}</div>
1807
+ <div class="d-flex">
1808
+ <button class="box-tag-${obj.tag} arrow-icon-${text}"></button>
1809
+ </div>
1810
+ </div>
1811
+ <div class="box-inside-${text} ${obj.guideClass ? `box-inside-${obj.guideClass}` : ''}">${obj.insideHTML}</div>
1812
+ </div>`;
1813
+ },
1814
+ divCreate: {},
1815
+ onCreate: () => {
1816
+ if (obj.openOnInit) {
1817
+ setTimeout(() => {
1818
+ const navs = document.getElementsByClassName(`box-navbar-${text}`);
1819
+ if (navs.length > 0) {
1820
+ const nav = navs[0];
1821
+ nav.click();
1681
1822
  }
1682
1823
  }, 100);
1683
1824
  }
1684
- else {
1685
- container.style.height = `${closeHeight}px`;
1686
- }
1687
- }, 50);
1688
- })}"
1689
- >
1690
- <div class="d-flex tx_700">${obj.title}</div>
1691
- <div class="d-flex">
1692
- <button class="box-tag-${obj.tag} arrow-icon-${text}"></button>
1693
- </div>
1694
- </div>
1695
- <div class="box-inside-${text} ${obj.guideClass ? `box-inside-${obj.guideClass}` : ''}">${obj.insideHTML}</div>
1696
- </div>`;
1825
+ },
1826
+ });
1697
1827
  }
1698
1828
  static selectFilter(obj) {
1699
1829
  var _a;