@g1cloud/open-bluesea-core 1.0.0-alpha.5 → 1.0.0-alpha.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.
@@ -21,22 +21,19 @@
21
21
  this.position.value = void 0;
22
22
  this.options.value = void 0;
23
23
  }
24
- // install(app: AbstractApp) {
25
- // app.provide(contextMenuPluginKey, this)
26
- // }
24
+ install(app) {
25
+ app.provide(ContextMenuPluginKey, this);
26
+ }
27
27
  markComponentRaw(menus) {
28
28
  menus.forEach((menu) => {
29
- if (menu.component)
30
- menu.component = vue.markRaw(menu.component);
31
- if (menu.children)
32
- this.markComponentRaw(menu.children);
29
+ if (menu.component) menu.component = vue.markRaw(menu.component);
30
+ if (menu.children) this.markComponentRaw(menu.children);
33
31
  });
34
32
  }
35
33
  }
36
34
  const useContextMenu = () => {
37
35
  const contextMenu = vue.inject(ContextMenuPluginKey);
38
- if (!contextMenu)
39
- throw new Error("BSContextMenuPlugin is not initialized.");
36
+ if (!contextMenu) throw new Error("BSContextMenuPlugin is not initialized.");
40
37
  return contextMenu;
41
38
  };
42
39
  const useContextMenuOptional = () => {
@@ -61,8 +58,7 @@
61
58
  this.dateFormatSecond = config?.dateFormatSecond || this.dateFormatSecond;
62
59
  this.minDateValue = config?.minDateValue || this.minDateValue;
63
60
  this.maxDateValue = config?.maxDateValue || this.maxDateValue;
64
- if (config?.timeZone)
65
- this.timeZone = config.timeZone;
61
+ if (config?.timeZone) this.timeZone = config.timeZone;
66
62
  this.componentConfig = {
67
63
  popup: { hideOnScroll: false, ...config?.componentConfig?.popup },
68
64
  calendar: { startYear: "-20", endYear: "+20", ...config?.componentConfig?.calendar }
@@ -70,14 +66,10 @@
70
66
  }
71
67
  resolveDisplayDateFormat(format) {
72
68
  const actualFormat = format || this.dateFormat;
73
- if (actualFormat === "DAY")
74
- return this.dateFormatDay;
75
- else if (actualFormat === "MINUTE")
76
- return this.dateFormatMinute;
77
- else if (actualFormat === "SECOND")
78
- return this.dateFormatSecond;
79
- else
80
- return actualFormat;
69
+ if (actualFormat === "DAY") return this.dateFormatDay;
70
+ else if (actualFormat === "MINUTE") return this.dateFormatMinute;
71
+ else if (actualFormat === "SECOND") return this.dateFormatSecond;
72
+ else return actualFormat;
81
73
  }
82
74
  }
83
75
  const BlueseaConfigKey = Symbol("BlueseaConfig");
@@ -158,10 +150,8 @@
158
150
  try {
159
151
  return await func();
160
152
  } finally {
161
- if (shown)
162
- hideLoading();
163
- if (timeoutId)
164
- window.clearTimeout(timeoutId);
153
+ if (shown) hideLoading();
154
+ if (timeoutId) window.clearTimeout(timeoutId);
165
155
  }
166
156
  };
167
157
  const DEFAULT_TOOLTIP_SHOW_DELAY = 800;
@@ -169,12 +159,10 @@
169
159
  const setTooltipParam = (el, param) => {
170
160
  if (param && param.content) {
171
161
  el.setAttribute("data-bs-tooltip-data", JSON.stringify(param));
172
- if (isTooltipDisplayed())
173
- showTooltip(param.content, el);
162
+ if (isTooltipDisplayed()) showTooltip(param.content, el);
174
163
  } else {
175
164
  el.removeAttribute("data-bs-tooltip-data");
176
- if (isTooltipDisplayed())
177
- hideTooltip();
165
+ if (isTooltipDisplayed()) hideTooltip();
178
166
  }
179
167
  };
180
168
  const vTooltip = {
@@ -208,8 +196,8 @@
208
196
  hideTooltip();
209
197
  }
210
198
  };
211
- const _hoisted_1$q = ["textContent"];
212
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
199
+ const _hoisted_1$u = ["textContent"];
200
+ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
213
201
  __name: "BSButton",
214
202
  props: {
215
203
  caption: {},
@@ -238,7 +226,7 @@
238
226
  }, vue.toDisplayString(__props.leftIcon), 3)) : vue.createCommentVNode("", true),
239
227
  vue.createElementVNode("span", {
240
228
  textContent: vue.toDisplayString(__props.caption)
241
- }, null, 8, _hoisted_1$q),
229
+ }, null, 8, _hoisted_1$u),
242
230
  __props.rightIcon ? (vue.openBlock(), vue.createElementBlock("span", {
243
231
  key: 1,
244
232
  class: vue.normalizeClass([{ "ml-1": !!__props.caption }, "font-icon right"])
@@ -251,9 +239,9 @@
251
239
  };
252
240
  }
253
241
  });
254
- const _hoisted_1$p = { class: "page-navigation" };
255
- const _hoisted_2$l = ["data-page", "onClick"];
256
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
242
+ const _hoisted_1$t = { class: "page-navigation" };
243
+ const _hoisted_2$o = ["data-page", "onClick"];
244
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
257
245
  __name: "BSPageNavigation",
258
246
  props: {
259
247
  totalCount: { default: 0 },
@@ -313,7 +301,7 @@
313
301
  }
314
302
  };
315
303
  return (_ctx, _cache) => {
316
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
304
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [
317
305
  vue.createElementVNode("span", {
318
306
  class: vue.normalizeClass([{ "disabled": isFirstSet.value }, "font-icon first"]),
319
307
  onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => !isFirstSet.value && goToPage(1), ["prevent"]))
@@ -328,7 +316,7 @@
328
316
  class: vue.normalizeClass([{ on: page === currentPage.value }, "page"]),
329
317
  "data-page": page,
330
318
  onClick: vue.withModifiers(($event) => goToPage(page), ["prevent"])
331
- }, vue.toDisplayString(page), 11, _hoisted_2$l);
319
+ }, vue.toDisplayString(page), 11, _hoisted_2$o);
332
320
  }), 128)),
333
321
  vue.createElementVNode("span", {
334
322
  class: vue.normalizeClass([{ "disabled": isLastSet.value }, "font-icon next"]),
@@ -349,14 +337,14 @@
349
337
  }
350
338
  return target;
351
339
  };
352
- const _sfc_main$p = {};
353
- const _hoisted_1$o = { class: "bs-loading-icon" };
340
+ const _sfc_main$u = {};
341
+ const _hoisted_1$s = { class: "bs-loading-icon" };
354
342
  function _sfc_render(_ctx, _cache) {
355
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [..._cache[0] || (_cache[0] = [
343
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [..._cache[0] || (_cache[0] = [
356
344
  vue.createElementVNode("span", { class: "font-icon" }, "progress_activity", -1)
357
345
  ])]);
358
346
  }
359
- const BSLoadingIcon = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render]]);
347
+ const BSLoadingIcon = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["render", _sfc_render]]);
360
348
  const waitUntil = async (condition, intervalMilliseconds = 200, maxTrial = 15) => {
361
349
  return await new Promise((resolve) => {
362
350
  let tried = 0;
@@ -379,9 +367,9 @@
379
367
  tried++;
380
368
  }, intervalMilliseconds);
381
369
  };
382
- const _hoisted_1$n = ["data-popup-id"];
370
+ const _hoisted_1$r = ["data-popup-id"];
383
371
  const ADJUST_OFFSET = 8;
384
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
372
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
385
373
  __name: "BSPopup",
386
374
  props: {
387
375
  popupId: {},
@@ -572,7 +560,7 @@
572
560
  onKeydown: _cache[1] || (_cache[1] = ($event) => emit("keydown", $event))
573
561
  }, [
574
562
  vue.renderSlot(_ctx.$slots, "default")
575
- ], 46, _hoisted_1$n)
563
+ ], 46, _hoisted_1$r)
576
564
  ]),
577
565
  _: 3
578
566
  })
@@ -580,8 +568,8 @@
580
568
  };
581
569
  }
582
570
  });
583
- const _hoisted_1$m = ["textContent"];
584
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
571
+ const _hoisted_1$q = ["textContent"];
572
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
585
573
  __name: "BSTooltip",
586
574
  props: {
587
575
  align: { default: "center" },
@@ -608,7 +596,7 @@
608
596
  }, [
609
597
  vue.createElementVNode("div", {
610
598
  textContent: vue.toDisplayString(__props.content)
611
- }, null, 8, _hoisted_1$m)
599
+ }, null, 8, _hoisted_1$q)
612
600
  ], 6);
613
601
  };
614
602
  }
@@ -650,14 +638,14 @@
650
638
  });
651
639
  };
652
640
  };
653
- const _hoisted_1$l = {
641
+ const _hoisted_1$p = {
654
642
  key: 0,
655
643
  class: "popup-search"
656
644
  };
657
- const _hoisted_2$k = ["data-value", "onMouseover", "onClick"];
658
- const _hoisted_3$g = ["textContent"];
659
- const _hoisted_4$a = ["textContent"];
660
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
645
+ const _hoisted_2$n = ["data-value", "onMouseover", "onClick"];
646
+ const _hoisted_3$h = ["textContent"];
647
+ const _hoisted_4$b = ["textContent"];
648
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
661
649
  __name: "BSSelectPopup",
662
650
  props: {
663
651
  items: {},
@@ -799,7 +787,7 @@
799
787
  handleKeyboard
800
788
  });
801
789
  return (_ctx, _cache) => {
802
- return vue.openBlock(), vue.createBlock(_sfc_main$o, {
790
+ return vue.openBlock(), vue.createBlock(_sfc_main$t, {
803
791
  "base-element": __props.baseElement,
804
792
  "max-height": __props.maxHeight,
805
793
  "offset-from-base-element": 4,
@@ -810,7 +798,7 @@
810
798
  onKeydown: vue.withKeys(vue.withModifiers(handleKeyboard, ["stop", "prevent"]), ["enter", "down", "up"])
811
799
  }, {
812
800
  default: vue.withCtx(() => [
813
- actualShowSearch.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
801
+ actualShowSearch.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
814
802
  vue.withDirectives(vue.createElementVNode("input", {
815
803
  type: "text",
816
804
  onInput: setSearchKeyword,
@@ -843,12 +831,12 @@
843
831
  key: 0,
844
832
  textContent: vue.toDisplayString(item?.label),
845
833
  class: "label"
846
- }, null, 8, _hoisted_3$g)) : (vue.openBlock(), vue.createElementBlock("label", {
834
+ }, null, 8, _hoisted_3$h)) : (vue.openBlock(), vue.createElementBlock("label", {
847
835
  key: 1,
848
836
  textContent: vue.toDisplayString(__props.nullLabel),
849
837
  class: "label null-label"
850
- }, null, 8, _hoisted_4$a))
851
- ], 42, _hoisted_2$k);
838
+ }, null, 8, _hoisted_4$b))
839
+ ], 42, _hoisted_2$n);
852
840
  }), 128))
853
841
  ], 512)
854
842
  ]),
@@ -865,13 +853,10 @@
865
853
  };
866
854
  };
867
855
  const clickInsideElements = (target, elements) => {
868
- if (!elements)
869
- return false;
856
+ if (!elements) return false;
870
857
  return elements.some((el) => {
871
- if (el instanceof HTMLElement)
872
- return el.contains(target);
873
- else if (typeof el === "string")
874
- return document.querySelector(el)?.contains(target);
858
+ if (el instanceof HTMLElement) return el.contains(target);
859
+ else if (typeof el === "string") return document.querySelector(el)?.contains(target);
875
860
  });
876
861
  };
877
862
  const vClickOutside = {
@@ -896,8 +881,7 @@
896
881
  },
897
882
  unmounted: (el) => {
898
883
  const clickListener = el.vClickOutsideListener;
899
- if (clickListener)
900
- window.removeEventListener("click", clickListener);
884
+ if (clickListener) window.removeEventListener("click", clickListener);
901
885
  delete el.vClickOutsideContext;
902
886
  }
903
887
  };
@@ -992,10 +976,12 @@
992
976
  };
993
977
  stringValue.value = convertFromValue(value.value);
994
978
  if (option.field) {
995
- vue.watch(option.field, (field) => {
996
- if (field)
997
- storeFieldValidator(field, validator);
998
- });
979
+ vue.watch(
980
+ option.field,
981
+ (field) => {
982
+ if (field) storeFieldValidator(field, validator);
983
+ }
984
+ );
999
985
  }
1000
986
  return validator;
1001
987
  };
@@ -1004,8 +990,7 @@
1004
990
  if (rules) {
1005
991
  for (const rule of rules) {
1006
992
  const result = await rule(value, phase, fieldContext);
1007
- if (result)
1008
- result.forEach((error) => errs.push(error));
993
+ if (result) result.forEach((error) => errs.push(error));
1009
994
  }
1010
995
  errs.forEach((error) => errors.push(error));
1011
996
  }
@@ -1115,26 +1100,25 @@
1115
1100
  setCurrentValue: option.setCurrentValue,
1116
1101
  compare: option.compare
1117
1102
  });
1118
- vue.watch(option.field, (field) => {
1119
- if (field)
1120
- this.fields.set(field, handler);
1121
- });
1103
+ vue.watch(
1104
+ option.field,
1105
+ (field) => {
1106
+ if (field) this.fields.set(field, handler);
1107
+ }
1108
+ );
1122
1109
  return handler;
1123
1110
  }
1124
1111
  unregisterField(field) {
1125
- if (field.value)
1126
- this.fields.delete(field.value);
1112
+ if (field.value) this.fields.delete(field.value);
1127
1113
  }
1128
1114
  addChild(child) {
1129
- if (!this.children)
1130
- this.children = [];
1115
+ if (!this.children) this.children = [];
1131
1116
  this.children.push(child);
1132
1117
  }
1133
1118
  removeChild(child) {
1134
1119
  if (this.children) {
1135
1120
  const index = this.children.findIndex((ch) => ch === child);
1136
- if (index >= 0)
1137
- this.children.splice(index, 1);
1121
+ if (index >= 0) this.children.splice(index, 1);
1138
1122
  }
1139
1123
  }
1140
1124
  set() {
@@ -1187,8 +1171,7 @@
1187
1171
  return this.savedValue.value;
1188
1172
  }
1189
1173
  rollbackValue() {
1190
- if (this.saved)
1191
- this.valueProvider.setCurrentValue(this.savedValue.value);
1174
+ if (this.saved) this.valueProvider.setCurrentValue(this.savedValue.value);
1192
1175
  }
1193
1176
  isModified(currentValue) {
1194
1177
  return this.saved && (this.valueProvider.compare ? !this.valueProvider.compare(this.savedValue.value, currentValue) : this.savedValue?.value !== currentValue);
@@ -1197,9 +1180,9 @@
1197
1180
  return this.isModified(this.valueProvider.getCurrentValue());
1198
1181
  }
1199
1182
  }
1200
- const _hoisted_1$k = { key: 0 };
1201
- const _hoisted_2$j = ["textContent"];
1202
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
1183
+ const _hoisted_1$o = { key: 0 };
1184
+ const _hoisted_2$m = ["textContent"];
1185
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
1203
1186
  __name: "ValidationErrors",
1204
1187
  props: {
1205
1188
  errors: {},
@@ -1207,13 +1190,13 @@
1207
1190
  },
1208
1191
  setup(__props) {
1209
1192
  return (_ctx, _cache) => {
1210
- return !__props.hideErrorMessage && __props.errors && __props.errors.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
1193
+ return !__props.hideErrorMessage && __props.errors && __props.errors.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
1211
1194
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.errors, (error) => {
1212
1195
  return vue.openBlock(), vue.createElementBlock("div", {
1213
1196
  key: error.code,
1214
1197
  textContent: vue.toDisplayString(error.message),
1215
1198
  class: "bs-field-error"
1216
- }, null, 8, _hoisted_2$j);
1199
+ }, null, 8, _hoisted_2$m);
1217
1200
  }), 128))
1218
1201
  ])) : vue.createCommentVNode("", true);
1219
1202
  };
@@ -1229,39 +1212,43 @@
1229
1212
  return result === dummyFieldContext ? void 0 : result;
1230
1213
  };
1231
1214
  const defaultLabelProvider = (item) => {
1232
- if (!item)
1233
- return "";
1234
- else if (typeof item === "string")
1235
- return item;
1236
- else
1237
- return String(item);
1215
+ if (!item) return "";
1216
+ else if (typeof item === "string") return item;
1217
+ else return String(item);
1218
+ };
1219
+ const emptyLabelProvider = (_item) => {
1220
+ return void 0;
1238
1221
  };
1239
1222
  const executeLabelProviderOrDefault = (item, labelProvider, defaultLabel) => {
1240
1223
  if (labelProvider) {
1241
1224
  const label = labelProvider(item);
1242
- if (label !== void 0)
1243
- return label;
1225
+ if (label !== void 0) return label;
1244
1226
  }
1245
1227
  return defaultLabel(item);
1246
1228
  };
1229
+ const defaultKeyProvider = (item) => {
1230
+ return JSON.stringify(item);
1231
+ };
1232
+ const emptyKeyProvider = (_item) => {
1233
+ return void 0;
1234
+ };
1247
1235
  const executeKeyProviderOrDefault = (item, keyProvider, defaultKey) => {
1248
1236
  if (keyProvider) {
1249
1237
  const key = keyProvider(item);
1250
- if (key)
1251
- return key;
1238
+ if (key) return key;
1252
1239
  }
1253
1240
  return defaultKey(item);
1254
1241
  };
1255
- const _hoisted_1$j = ["tabindex", "onKeydown"];
1256
- const _hoisted_2$i = ["textContent"];
1257
- const _hoisted_3$f = ["data-field-name"];
1258
- const _hoisted_4$9 = ["textContent"];
1259
- const _hoisted_5$4 = ["textContent"];
1242
+ const _hoisted_1$n = ["tabindex", "onKeydown"];
1243
+ const _hoisted_2$l = ["textContent"];
1244
+ const _hoisted_3$g = ["data-field-name"];
1245
+ const _hoisted_4$a = ["textContent"];
1246
+ const _hoisted_5$5 = ["textContent"];
1260
1247
  const _hoisted_6$2 = {
1261
1248
  key: 2,
1262
1249
  class: "small-progress"
1263
1250
  };
1264
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
1251
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
1265
1252
  __name: "BSSelect",
1266
1253
  props: {
1267
1254
  modelValue: {},
@@ -1396,7 +1383,7 @@
1396
1383
  __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", {
1397
1384
  key: 0,
1398
1385
  textContent: vue.toDisplayString(selectedItemLabel.value)
1399
- }, null, 8, _hoisted_2$i)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
1386
+ }, null, 8, _hoisted_2$l)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
1400
1387
  vue.createElementVNode("div", {
1401
1388
  ref_key: "field",
1402
1389
  ref: field,
@@ -1408,15 +1395,15 @@
1408
1395
  key: 0,
1409
1396
  textContent: vue.toDisplayString(__props.placeholder),
1410
1397
  class: "placeholder grow"
1411
- }, null, 8, _hoisted_4$9)) : (vue.openBlock(), vue.createElementBlock("span", {
1398
+ }, null, 8, _hoisted_4$a)) : (vue.openBlock(), vue.createElementBlock("span", {
1412
1399
  key: 1,
1413
1400
  textContent: vue.toDisplayString(selectedItemLabel.value),
1414
1401
  class: "label"
1415
- }, null, 8, _hoisted_5$4)),
1402
+ }, null, 8, _hoisted_5$5)),
1416
1403
  _cache[4] || (_cache[4] = vue.createElementVNode("span", { class: "dropdown-btn" }, "expand_more", -1)),
1417
1404
  loadingItems.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_6$2, "progress_activity")) : vue.createCommentVNode("", true)
1418
- ], 8, _hoisted_3$f),
1419
- !__props.disabled && showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$m, {
1405
+ ], 8, _hoisted_3$g),
1406
+ !__props.disabled && showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$r, {
1420
1407
  key: 0,
1421
1408
  ref_key: "selectPopup",
1422
1409
  ref: selectPopup,
@@ -1438,26 +1425,26 @@
1438
1425
  focusToRoot();
1439
1426
  })
1440
1427
  }, null, 8, ["allow-null", "base-element", "initial-item", "items", "label-provider", "max-height", "null-label", "popup-align", "popup-direction", "selected-items", "show-search", "value-provider"])) : vue.createCommentVNode("", true),
1441
- !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
1428
+ !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$q, {
1442
1429
  key: 1,
1443
1430
  errors: vue.unref(errors),
1444
1431
  "hide-error-message": __props.hideErrorMessage || __props.disabled && !__props.showErrorMessageOnDisabled
1445
1432
  }, null, 8, ["errors", "hide-error-message"])) : vue.createCommentVNode("", true)
1446
1433
  ], 64))
1447
- ], 42, _hoisted_1$j)), [
1434
+ ], 42, _hoisted_1$n)), [
1448
1435
  [vue.unref(vClickOutside), () => togglePopup(false)]
1449
1436
  ]);
1450
1437
  };
1451
1438
  }
1452
1439
  });
1453
- const _hoisted_1$i = { class: "bs-calendar" };
1454
- const _hoisted_2$h = { class: "bs-calendar-head" };
1455
- const _hoisted_3$e = { class: "year-month" };
1456
- const _hoisted_4$8 = {
1440
+ const _hoisted_1$m = { class: "bs-calendar" };
1441
+ const _hoisted_2$k = { class: "bs-calendar-head" };
1442
+ const _hoisted_3$f = { class: "year-month" };
1443
+ const _hoisted_4$9 = {
1457
1444
  key: 0,
1458
1445
  class: "timezone"
1459
1446
  };
1460
- const _hoisted_5$3 = { class: "weekdays" };
1447
+ const _hoisted_5$4 = { class: "weekdays" };
1461
1448
  const _hoisted_6$1 = ["textContent"];
1462
1449
  const _hoisted_7$1 = ["onClick"];
1463
1450
  const _hoisted_8$1 = {
@@ -1465,7 +1452,7 @@
1465
1452
  class: "bs-calendar-time"
1466
1453
  };
1467
1454
  const _hoisted_9$1 = { class: "select-wrap" };
1468
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
1455
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
1469
1456
  __name: "BSCalendar",
1470
1457
  props: {
1471
1458
  modelValue: {},
@@ -1654,39 +1641,39 @@
1654
1641
  }
1655
1642
  };
1656
1643
  return (_ctx, _cache) => {
1657
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
1658
- vue.createElementVNode("div", _hoisted_2$h, [
1659
- vue.createElementVNode("div", _hoisted_3$e, [
1660
- vue.createVNode(_sfc_main$r, {
1644
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
1645
+ vue.createElementVNode("div", _hoisted_2$k, [
1646
+ vue.createElementVNode("div", _hoisted_3$f, [
1647
+ vue.createVNode(_sfc_main$w, {
1661
1648
  class: "",
1662
1649
  "left-icon": "chevron_left",
1663
1650
  onClick: prevMonth
1664
1651
  }),
1665
- vue.createVNode(_sfc_main$k, {
1652
+ vue.createVNode(_sfc_main$p, {
1666
1653
  modelValue: year.value,
1667
1654
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => year.value = $event),
1668
1655
  disabled: __props.disabled,
1669
1656
  items: years.value
1670
1657
  }, null, 8, ["modelValue", "disabled", "items"]),
1671
- vue.createVNode(_sfc_main$k, {
1658
+ vue.createVNode(_sfc_main$p, {
1672
1659
  modelValue: month.value,
1673
1660
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => month.value = $event),
1674
1661
  disabled: __props.disabled,
1675
1662
  items: vue.unref(months)
1676
1663
  }, null, 8, ["modelValue", "disabled", "items"]),
1677
- vue.createVNode(_sfc_main$r, {
1664
+ vue.createVNode(_sfc_main$w, {
1678
1665
  class: "",
1679
1666
  "left-icon": "chevron_right",
1680
1667
  onClick: nextMonth
1681
1668
  })
1682
1669
  ]),
1683
- __props.showTimeZone ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$8, "(" + vue.toDisplayString(actualTimeZone.value) + ")", 1)) : vue.createCommentVNode("", true)
1670
+ __props.showTimeZone ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$9, "(" + vue.toDisplayString(actualTimeZone.value) + ")", 1)) : vue.createCommentVNode("", true)
1684
1671
  ]),
1685
1672
  vue.createElementVNode("table", {
1686
1673
  class: vue.normalizeClass([{ disabled: __props.disabled }, "align-self-center"])
1687
1674
  }, [
1688
1675
  vue.createElementVNode("tbody", null, [
1689
- vue.createElementVNode("tr", _hoisted_5$3, [
1676
+ vue.createElementVNode("tr", _hoisted_5$4, [
1690
1677
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(weekdays.value, (day) => {
1691
1678
  return vue.openBlock(), vue.createElementBlock("th", {
1692
1679
  key: day,
@@ -1716,7 +1703,7 @@
1716
1703
  __props.resolution
1717
1704
  ) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$1, [
1718
1705
  vue.createElementVNode("div", _hoisted_9$1, [
1719
- vue.createVNode(_sfc_main$k, {
1706
+ vue.createVNode(_sfc_main$p, {
1720
1707
  disabled: __props.disabled,
1721
1708
  items: hours,
1722
1709
  "label-provider": (item) => item < 10 ? "0" + item : item.toString(),
@@ -1725,7 +1712,7 @@
1725
1712
  "onUpdate:modelValue": updateHour
1726
1713
  }, null, 8, ["disabled", "label-provider", "model-value"]),
1727
1714
  _cache[2] || (_cache[2] = vue.createElementVNode("span", { class: "" }, ":", -1)),
1728
- vue.createVNode(_sfc_main$k, {
1715
+ vue.createVNode(_sfc_main$p, {
1729
1716
  disabled: __props.disabled || __props.resolution === "HOUR",
1730
1717
  items: minutes.value,
1731
1718
  "label-provider": (item) => item < 10 ? "0" + item : item.toString(),
@@ -1739,10 +1726,10 @@
1739
1726
  };
1740
1727
  }
1741
1728
  });
1742
- const _hoisted_1$h = { class: "bs-calendar-range flex flex-row" };
1743
- const _hoisted_2$g = { class: "flex flex-col" };
1744
- const _hoisted_3$d = { class: "flex flex-row items-center" };
1745
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
1729
+ const _hoisted_1$l = { class: "bs-calendar-range flex flex-row" };
1730
+ const _hoisted_2$j = { class: "flex flex-col" };
1731
+ const _hoisted_3$e = { class: "flex flex-row items-center" };
1732
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
1746
1733
  __name: "BSCalendarRange",
1747
1734
  props: {
1748
1735
  from: {},
@@ -1780,10 +1767,10 @@
1780
1767
  emit("update:to", value);
1781
1768
  };
1782
1769
  return (_ctx, _cache) => {
1783
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
1784
- vue.createElementVNode("div", _hoisted_2$g, [
1785
- vue.createElementVNode("div", _hoisted_3$d, [
1786
- vue.createVNode(_sfc_main$j, {
1770
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
1771
+ vue.createElementVNode("div", _hoisted_2$j, [
1772
+ vue.createElementVNode("div", _hoisted_3$e, [
1773
+ vue.createVNode(_sfc_main$o, {
1787
1774
  modelValue: fromValue.value,
1788
1775
  "onUpdate:modelValue": [
1789
1776
  _cache[0] || (_cache[0] = ($event) => fromValue.value = $event),
@@ -1801,7 +1788,7 @@
1801
1788
  "range-type": "from"
1802
1789
  }, null, 8, ["modelValue", "disabled", "display-format", "end-year", "first-day", "range-value", "resolution", "start-year", "time-zone"]),
1803
1790
  _cache[2] || (_cache[2] = vue.createElementVNode("span", { class: "tilde" }, "~", -1)),
1804
- vue.createVNode(_sfc_main$j, {
1791
+ vue.createVNode(_sfc_main$o, {
1805
1792
  modelValue: toValue.value,
1806
1793
  "onUpdate:modelValue": [
1807
1794
  _cache[1] || (_cache[1] = ($event) => toValue.value = $event),
@@ -1862,13 +1849,11 @@
1862
1849
  return trim ? value?.trim() : value;
1863
1850
  },
1864
1851
  getPrefixSuffixList(param) {
1865
- if (!param)
1866
- return [];
1852
+ if (!param) return [];
1867
1853
  const params = Array.isArray(param) ? param : [param];
1868
1854
  const list = [];
1869
1855
  for (let item of params) {
1870
- if (!item)
1871
- continue;
1856
+ if (!item) continue;
1872
1857
  if (typeof item === "object" && item.hasOwnProperty("type") && item.hasOwnProperty("value")) {
1873
1858
  list.push(item);
1874
1859
  } else {
@@ -1876,12 +1861,16 @@
1876
1861
  }
1877
1862
  }
1878
1863
  return list;
1864
+ },
1865
+ isCursorInElement(event, element) {
1866
+ const rect = element.getBoundingClientRect();
1867
+ return event.clientX >= rect.left && event.clientX <= rect.right && event.clientY >= rect.top && event.clientY <= rect.bottom;
1879
1868
  }
1880
1869
  };
1881
- const _hoisted_1$g = ["textContent"];
1882
- const _hoisted_2$f = { class: "font-icon" };
1883
- const _hoisted_3$c = ["src", "alt"];
1884
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
1870
+ const _hoisted_1$k = ["textContent"];
1871
+ const _hoisted_2$i = { class: "font-icon" };
1872
+ const _hoisted_3$d = ["src", "alt"];
1873
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
1885
1874
  __name: "BSPrefixSuffix",
1886
1875
  props: {
1887
1876
  value: {},
@@ -1897,11 +1886,11 @@
1897
1886
  textContent: vue.toDisplayString(item.value),
1898
1887
  key: JSON.stringify(item.value),
1899
1888
  class: vue.normalizeClass(__props.type)
1900
- }, null, 10, _hoisted_1$g)) : item.type === "font-icon" ? (vue.openBlock(), vue.createElementBlock("span", {
1889
+ }, null, 10, _hoisted_1$k)) : item.type === "font-icon" ? (vue.openBlock(), vue.createElementBlock("span", {
1901
1890
  key: 1,
1902
1891
  class: vue.normalizeClass(__props.type)
1903
1892
  }, [
1904
- vue.createElementVNode("span", _hoisted_2$f, vue.toDisplayString(item.value), 1)
1893
+ vue.createElementVNode("span", _hoisted_2$i, vue.toDisplayString(item.value), 1)
1905
1894
  ], 2)) : item.type === "image-url" ? (vue.openBlock(), vue.createElementBlock("span", {
1906
1895
  key: 2,
1907
1896
  class: vue.normalizeClass(__props.type)
@@ -1909,24 +1898,24 @@
1909
1898
  vue.createElementVNode("img", {
1910
1899
  src: item.value,
1911
1900
  alt: __props.type
1912
- }, null, 8, _hoisted_3$c)
1901
+ }, null, 8, _hoisted_3$d)
1913
1902
  ], 2)) : vue.createCommentVNode("", true)
1914
1903
  ], 64);
1915
1904
  }), 256);
1916
1905
  };
1917
1906
  }
1918
1907
  });
1919
- const _hoisted_1$f = {
1908
+ const _hoisted_1$j = {
1920
1909
  key: 0,
1921
1910
  class: "view-mode"
1922
1911
  };
1923
- const _hoisted_2$e = ["textContent"];
1924
- const _hoisted_3$b = {
1912
+ const _hoisted_2$h = ["textContent"];
1913
+ const _hoisted_3$c = {
1925
1914
  key: 1,
1926
1915
  class: "input-area"
1927
1916
  };
1928
- const _hoisted_4$7 = ["id", "placeholder", "autocomplete", "disabled", "maxlength", "name", "tabindex", "type"];
1929
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
1917
+ const _hoisted_4$8 = ["id", "placeholder", "autocomplete", "disabled", "maxlength", "name", "tabindex", "type"];
1918
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
1930
1919
  __name: "BSTextInput",
1931
1920
  props: {
1932
1921
  id: {},
@@ -2050,20 +2039,20 @@
2050
2039
  class: vue.normalizeClass([{ required: __props.required, disabled: __props.disabled, modified: modified.value, error: vue.unref(errors).length > 0 }, "bs-text-input bs-input-wrap"]),
2051
2040
  style: vue.normalizeStyle({ width: __props.width })
2052
2041
  }, [
2053
- __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
2054
- vue.createVNode(_sfc_main$h, {
2042
+ __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
2043
+ vue.createVNode(_sfc_main$m, {
2055
2044
  value: __props.prefix,
2056
2045
  type: "prefix"
2057
2046
  }, null, 8, ["value"]),
2058
2047
  vue.createElementVNode("span", {
2059
2048
  textContent: vue.toDisplayString(vue.unref(stringValue))
2060
- }, null, 8, _hoisted_2$e),
2061
- vue.createVNode(_sfc_main$h, {
2049
+ }, null, 8, _hoisted_2$h),
2050
+ vue.createVNode(_sfc_main$m, {
2062
2051
  value: __props.suffix,
2063
2052
  type: "suffix"
2064
2053
  }, null, 8, ["value"])
2065
- ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$b, [
2066
- vue.createVNode(_sfc_main$h, {
2054
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$c, [
2055
+ vue.createVNode(_sfc_main$m, {
2067
2056
  value: __props.prefix,
2068
2057
  type: "prefix"
2069
2058
  }, null, 8, ["value"]),
@@ -2079,15 +2068,15 @@
2079
2068
  name: __props.name,
2080
2069
  tabindex: __props.tabindex,
2081
2070
  type: __props.inputType
2082
- }, vue.toHandlers(handlers, true)), null, 16, _hoisted_4$7), [
2071
+ }, vue.toHandlers(handlers, true)), null, 16, _hoisted_4$8), [
2083
2072
  [vue.vModelDynamic, vue.unref(stringValue)]
2084
2073
  ]),
2085
- vue.createVNode(_sfc_main$h, {
2074
+ vue.createVNode(_sfc_main$m, {
2086
2075
  value: __props.suffix,
2087
2076
  type: "suffix"
2088
2077
  }, null, 8, ["value"])
2089
2078
  ])),
2090
- !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
2079
+ !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$q, {
2091
2080
  key: 2,
2092
2081
  errors: vue.unref(errors),
2093
2082
  "hide-error-message": __props.hideErrorMessage || __props.disabled && !__props.showErrorMessageOnDisabled
@@ -2290,8 +2279,7 @@
2290
2279
  formatDateString(utcDate, format, displayTimeZone) {
2291
2280
  if (utcDate) {
2292
2281
  let date = dayjs(utcDate);
2293
- if (displayTimeZone)
2294
- date = date.tz(displayTimeZone);
2282
+ if (displayTimeZone) date = date.tz(displayTimeZone);
2295
2283
  return date.format(format || "YYYY-MM-DD HH:mm Z");
2296
2284
  }
2297
2285
  return "";
@@ -2370,17 +2358,17 @@
2370
2358
  return tmp.textContent || tmp.innerText;
2371
2359
  }
2372
2360
  };
2373
- const _hoisted_1$e = {
2361
+ const _hoisted_1$i = {
2374
2362
  key: 0,
2375
2363
  class: "view-mode"
2376
2364
  };
2377
- const _hoisted_2$d = ["textContent"];
2378
- const _hoisted_3$a = {
2365
+ const _hoisted_2$g = ["textContent"];
2366
+ const _hoisted_3$b = {
2379
2367
  key: 1,
2380
2368
  class: "input-area"
2381
2369
  };
2382
- const _hoisted_4$6 = ["id", "placeholder", "autocomplete", "disabled", "maxlength", "name", "tabindex", "value"];
2383
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
2370
+ const _hoisted_4$7 = ["id", "placeholder", "autocomplete", "disabled", "maxlength", "name", "tabindex", "value"];
2371
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
2384
2372
  __name: "BSNumberInput",
2385
2373
  props: {
2386
2374
  id: {},
@@ -2512,20 +2500,20 @@
2512
2500
  class: vue.normalizeClass([{ required: __props.required, disabled: __props.disabled, modified: modified.value, error: vue.unref(errors).length > 0 }, "bs-number-input bs-input-wrap"]),
2513
2501
  style: vue.normalizeStyle({ width: __props.width })
2514
2502
  }, [
2515
- __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
2516
- vue.createVNode(_sfc_main$h, {
2503
+ __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
2504
+ vue.createVNode(_sfc_main$m, {
2517
2505
  value: __props.prefix,
2518
2506
  type: "prefix"
2519
2507
  }, null, 8, ["value"]),
2520
2508
  vue.createElementVNode("span", {
2521
2509
  textContent: vue.toDisplayString(__props.formatInViewMode ? formattedStringValue.value : vue.unref(stringValue))
2522
- }, null, 8, _hoisted_2$d),
2523
- vue.createVNode(_sfc_main$h, {
2510
+ }, null, 8, _hoisted_2$g),
2511
+ vue.createVNode(_sfc_main$m, {
2524
2512
  value: __props.suffix,
2525
2513
  type: "suffix"
2526
2514
  }, null, 8, ["value"])
2527
- ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$a, [
2528
- vue.createVNode(_sfc_main$h, {
2515
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$b, [
2516
+ vue.createVNode(_sfc_main$m, {
2529
2517
  value: __props.prefix,
2530
2518
  type: "prefix"
2531
2519
  }, null, 8, ["value"]),
@@ -2541,13 +2529,13 @@
2541
2529
  tabindex: __props.tabindex,
2542
2530
  value: focused.value || !__props.formatOnBlur ? vue.unref(stringValue) : formattedStringValue.value,
2543
2531
  type: "text"
2544
- }, vue.toHandlers(handlers, true)), null, 16, _hoisted_4$6),
2545
- vue.createVNode(_sfc_main$h, {
2532
+ }, vue.toHandlers(handlers, true)), null, 16, _hoisted_4$7),
2533
+ vue.createVNode(_sfc_main$m, {
2546
2534
  value: __props.suffix,
2547
2535
  type: "suffix"
2548
2536
  }, null, 8, ["value"])
2549
2537
  ])),
2550
- !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
2538
+ !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$q, {
2551
2539
  key: 2,
2552
2540
  errors: vue.unref(errors),
2553
2541
  "hide-error-message": __props.hideErrorMessage || __props.disabled && !__props.showErrorMessageOnDisabled
@@ -2556,17 +2544,17 @@
2556
2544
  };
2557
2545
  }
2558
2546
  });
2559
- const _hoisted_1$d = {
2547
+ const _hoisted_1$h = {
2560
2548
  key: 0,
2561
2549
  class: "view-mode flex flex-row gap-2 items-start"
2562
2550
  };
2563
- const _hoisted_2$c = ["textContent"];
2564
- const _hoisted_3$9 = {
2551
+ const _hoisted_2$f = ["textContent"];
2552
+ const _hoisted_3$a = {
2565
2553
  key: 1,
2566
2554
  class: "input-area flex flex-row items-start"
2567
2555
  };
2568
- const _hoisted_4$5 = ["placeholder", "disabled", "maxlength", "name", "tabindex"];
2569
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
2556
+ const _hoisted_4$6 = ["placeholder", "disabled", "maxlength", "name", "tabindex"];
2557
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
2570
2558
  __name: "BSTextArea",
2571
2559
  props: {
2572
2560
  id: {},
@@ -2681,20 +2669,20 @@
2681
2669
  class: vue.normalizeClass([{ disabled: __props.disabled, modified: modified.value, error: vue.unref(errors).length > 0 }, "bs-text-area bs-input-wrap"]),
2682
2670
  style: vue.normalizeStyle({ width: outerWidth.value, height: outerHeight.value })
2683
2671
  }, [
2684
- __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
2685
- vue.createVNode(_sfc_main$h, {
2672
+ __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
2673
+ vue.createVNode(_sfc_main$m, {
2686
2674
  value: __props.prefix,
2687
2675
  type: "prefix"
2688
2676
  }, null, 8, ["value"]),
2689
2677
  vue.createElementVNode("div", {
2690
2678
  textContent: vue.toDisplayString(vue.unref(stringValue))
2691
- }, null, 8, _hoisted_2$c),
2692
- vue.createVNode(_sfc_main$h, {
2679
+ }, null, 8, _hoisted_2$f),
2680
+ vue.createVNode(_sfc_main$m, {
2693
2681
  value: __props.suffix,
2694
2682
  type: "suffix"
2695
2683
  }, null, 8, ["value"])
2696
- ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$9, [
2697
- vue.createVNode(_sfc_main$h, {
2684
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$a, [
2685
+ vue.createVNode(_sfc_main$m, {
2698
2686
  value: __props.prefix,
2699
2687
  type: "prefix"
2700
2688
  }, null, 8, ["value"]),
@@ -2711,15 +2699,15 @@
2711
2699
  class: "grow",
2712
2700
  onPointerdown: capturePointer,
2713
2701
  onPointerup: preserveResizedHeight
2714
- }, vue.toHandlers(handlers, true)), null, 16, _hoisted_4$5), [
2702
+ }, vue.toHandlers(handlers, true)), null, 16, _hoisted_4$6), [
2715
2703
  [vue.vModelText, vue.unref(stringValue)]
2716
2704
  ]),
2717
- vue.createVNode(_sfc_main$h, {
2705
+ vue.createVNode(_sfc_main$m, {
2718
2706
  value: __props.suffix,
2719
2707
  type: "suffix"
2720
2708
  }, null, 8, ["value"])
2721
2709
  ])),
2722
- !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
2710
+ !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$q, {
2723
2711
  key: 2,
2724
2712
  errors: vue.unref(errors),
2725
2713
  "hide-error-message": __props.hideErrorMessage || __props.disabled && !__props.showErrorMessageOnDisabled
@@ -2728,10 +2716,10 @@
2728
2716
  };
2729
2717
  }
2730
2718
  });
2731
- const _hoisted_1$c = ["id", "checked", "disabled", "name", "tabindex"];
2732
- const _hoisted_2$b = ["textContent", "for"];
2733
- const _hoisted_3$8 = ["for"];
2734
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
2719
+ const _hoisted_1$g = ["id", "checked", "disabled", "name", "tabindex"];
2720
+ const _hoisted_2$e = ["textContent", "for"];
2721
+ const _hoisted_3$9 = ["for"];
2722
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
2735
2723
  __name: "BSCheckbox",
2736
2724
  props: {
2737
2725
  id: { default: () => componentUtil.generateNextId("checkbox") },
@@ -2787,28 +2775,28 @@
2787
2775
  tabindex: __props.tabindex,
2788
2776
  class: "",
2789
2777
  type: "checkbox"
2790
- }, vue.toHandlers(handlers, true)), null, 16, _hoisted_1$c),
2778
+ }, vue.toHandlers(handlers, true)), null, 16, _hoisted_1$g),
2791
2779
  __props.label ? (vue.openBlock(), vue.createElementBlock("label", {
2792
2780
  key: 0,
2793
2781
  textContent: vue.toDisplayString(__props.label),
2794
2782
  for: __props.id,
2795
2783
  class: "text-label"
2796
- }, null, 8, _hoisted_2$b)) : vue.createCommentVNode("", true),
2784
+ }, null, 8, _hoisted_2$e)) : vue.createCommentVNode("", true),
2797
2785
  hasLabelSlot.value ? (vue.openBlock(), vue.createElementBlock("label", {
2798
2786
  key: 1,
2799
2787
  for: __props.id,
2800
2788
  class: "slot-label cursor-pointer"
2801
2789
  }, [
2802
2790
  vue.renderSlot(_ctx.$slots, "default", { disabled: __props.disabled })
2803
- ], 8, _hoisted_3$8)) : vue.createCommentVNode("", true)
2791
+ ], 8, _hoisted_3$9)) : vue.createCommentVNode("", true)
2804
2792
  ], 2);
2805
2793
  };
2806
2794
  }
2807
2795
  });
2808
- const _hoisted_1$b = ["data-field-name"];
2809
- const _hoisted_2$a = { class: "items" };
2810
- const _hoisted_3$7 = ["textContent"];
2811
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
2796
+ const _hoisted_1$f = ["data-field-name"];
2797
+ const _hoisted_2$d = { class: "items" };
2798
+ const _hoisted_3$8 = ["textContent"];
2799
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
2812
2800
  __name: "BSCheckboxGroup",
2813
2801
  props: {
2814
2802
  name: {},
@@ -2914,13 +2902,13 @@
2914
2902
  "data-field-name": __props.name,
2915
2903
  role: "group"
2916
2904
  }, [
2917
- vue.createElementVNode("div", _hoisted_2$a, [
2905
+ vue.createElementVNode("div", _hoisted_2$d, [
2918
2906
  __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", {
2919
2907
  key: 0,
2920
2908
  class: "view-mode",
2921
2909
  textContent: vue.toDisplayString(modelValueLabels.value)
2922
- }, null, 8, _hoisted_3$7)) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(__props.items, (item) => {
2923
- return vue.openBlock(), vue.createBlock(_sfc_main$d, {
2910
+ }, null, 8, _hoisted_3$8)) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(__props.items, (item) => {
2911
+ return vue.openBlock(), vue.createBlock(_sfc_main$i, {
2924
2912
  key: itemKey(item),
2925
2913
  disabled: __props.disabled || isDisabledItem(item),
2926
2914
  label: itemLabel(item),
@@ -2932,24 +2920,24 @@
2932
2920
  }, null, 8, ["disabled", "label", "model-value", "name", "tabindex", "onUpdate:modelValue"]);
2933
2921
  }), 128))
2934
2922
  ]),
2935
- !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
2923
+ !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$q, {
2936
2924
  key: 0,
2937
2925
  errors: vue.unref(errors),
2938
2926
  "hide-error-message": __props.hideErrorMessage || __props.disabled && !__props.showErrorMessageOnDisabled
2939
2927
  }, null, 8, ["errors", "hide-error-message"])) : vue.createCommentVNode("", true)
2940
- ], 10, _hoisted_1$b);
2928
+ ], 10, _hoisted_1$f);
2941
2929
  };
2942
2930
  }
2943
2931
  });
2944
- const _hoisted_1$a = ["id", "checked", "disabled", "name", "tabindex"];
2945
- const _hoisted_2$9 = ["for"];
2946
- const _hoisted_3$6 = {
2932
+ const _hoisted_1$e = ["id", "checked", "disabled", "name", "tabindex"];
2933
+ const _hoisted_2$c = ["for"];
2934
+ const _hoisted_3$7 = {
2947
2935
  key: 0,
2948
2936
  class: "font-icon"
2949
2937
  };
2950
- const _hoisted_4$4 = ["textContent"];
2951
- const _hoisted_5$2 = ["for"];
2952
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2938
+ const _hoisted_4$5 = ["textContent"];
2939
+ const _hoisted_5$3 = ["for"];
2940
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
2953
2941
  __name: "BSRadioButton",
2954
2942
  props: {
2955
2943
  id: { default: () => componentUtil.generateNextId("radio") },
@@ -2992,34 +2980,34 @@
2992
2980
  class: "",
2993
2981
  role: "radio",
2994
2982
  type: "radio"
2995
- }, vue.toHandlers(handlers, true)), null, 16, _hoisted_1$a),
2983
+ }, vue.toHandlers(handlers, true)), null, 16, _hoisted_1$e),
2996
2984
  vue.createElementVNode("label", { for: __props.id }, [
2997
- __props.icon ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$6, vue.toDisplayString(__props.icon), 1)) : vue.createCommentVNode("", true),
2985
+ __props.icon ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$7, vue.toDisplayString(__props.icon), 1)) : vue.createCommentVNode("", true),
2998
2986
  __props.label ? (vue.openBlock(), vue.createElementBlock("span", {
2999
2987
  key: 1,
3000
2988
  textContent: vue.toDisplayString(__props.label),
3001
2989
  class: "text-label"
3002
- }, null, 8, _hoisted_4$4)) : vue.createCommentVNode("", true)
3003
- ], 8, _hoisted_2$9),
2990
+ }, null, 8, _hoisted_4$5)) : vue.createCommentVNode("", true)
2991
+ ], 8, _hoisted_2$c),
3004
2992
  hasLabelSlot.value ? (vue.openBlock(), vue.createElementBlock("label", {
3005
2993
  key: 0,
3006
2994
  for: __props.id,
3007
2995
  class: "slot-label cursor-pointer"
3008
2996
  }, [
3009
2997
  vue.renderSlot(_ctx.$slots, "default", { disabled: __props.disabled })
3010
- ], 8, _hoisted_5$2)) : vue.createCommentVNode("", true)
2998
+ ], 8, _hoisted_5$3)) : vue.createCommentVNode("", true)
3011
2999
  ], 2);
3012
3000
  };
3013
3001
  }
3014
3002
  });
3015
- const _hoisted_1$9 = ["data-field-name"];
3016
- const _hoisted_2$8 = ["textContent"];
3017
- const _hoisted_3$5 = {
3003
+ const _hoisted_1$d = ["data-field-name"];
3004
+ const _hoisted_2$b = ["textContent"];
3005
+ const _hoisted_3$6 = {
3018
3006
  key: 1,
3019
3007
  class: "radio-button-group",
3020
3008
  role: "radiogroup"
3021
3009
  };
3022
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
3010
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
3023
3011
  __name: "BSRadioButtonGroup",
3024
3012
  props: {
3025
3013
  name: { default: () => componentUtil.generateNextName("radioGroup") },
@@ -3102,9 +3090,9 @@
3102
3090
  __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", {
3103
3091
  key: 0,
3104
3092
  textContent: vue.toDisplayString(modelValueLabel.value)
3105
- }, null, 8, _hoisted_2$8)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$5, [
3093
+ }, null, 8, _hoisted_2$b)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$6, [
3106
3094
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
3107
- return vue.withDirectives((vue.openBlock(), vue.createBlock(_sfc_main$b, {
3095
+ return vue.withDirectives((vue.openBlock(), vue.createBlock(_sfc_main$g, {
3108
3096
  key: itemKey(item),
3109
3097
  disabled: __props.disabled || isDisabledItem(item),
3110
3098
  icon: __props.iconProvider?.(item),
@@ -3119,20 +3107,20 @@
3119
3107
  ]);
3120
3108
  }), 128))
3121
3109
  ])),
3122
- !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
3110
+ !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$q, {
3123
3111
  key: 2,
3124
3112
  errors: vue.unref(errors),
3125
3113
  "hide-error-message": __props.hideErrorMessage || __props.disabled && !__props.showErrorMessageOnDisabled
3126
3114
  }, null, 8, ["errors", "hide-error-message"])) : vue.createCommentVNode("", true)
3127
- ], 10, _hoisted_1$9);
3115
+ ], 10, _hoisted_1$d);
3128
3116
  };
3129
3117
  }
3130
3118
  });
3131
- const _hoisted_1$8 = ["tabindex", "onKeydown"];
3132
- const _hoisted_2$7 = { key: 0 };
3133
- const _hoisted_3$4 = ["textContent"];
3134
- const _hoisted_4$3 = ["textContent"];
3135
- const _hoisted_5$1 = ["data-field-name"];
3119
+ const _hoisted_1$c = ["tabindex", "onKeydown"];
3120
+ const _hoisted_2$a = { key: 0 };
3121
+ const _hoisted_3$5 = ["textContent"];
3122
+ const _hoisted_4$4 = ["textContent"];
3123
+ const _hoisted_5$2 = ["data-field-name"];
3136
3124
  const _hoisted_6 = ["textContent"];
3137
3125
  const _hoisted_7 = {
3138
3126
  key: 1,
@@ -3144,7 +3132,7 @@
3144
3132
  key: 2,
3145
3133
  class: "small-progress"
3146
3134
  };
3147
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
3135
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
3148
3136
  __name: "BSMultiSelect",
3149
3137
  props: {
3150
3138
  modelValue: { default: () => [] },
@@ -3267,17 +3255,17 @@
3267
3255
  _cache[4] || (_cache[4] = vue.withKeys(($event) => togglePopup(false), ["tab"]))
3268
3256
  ]
3269
3257
  }, [
3270
- __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$7, [
3258
+ __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$a, [
3271
3259
  __props.selectedLabelProvider ? (vue.openBlock(), vue.createElementBlock("span", {
3272
3260
  key: 0,
3273
3261
  textContent: vue.toDisplayString(__props.selectedLabelProvider(selectedItems.value)),
3274
3262
  class: "label"
3275
- }, null, 8, _hoisted_3$4)) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(selectedItems.value, (item) => {
3263
+ }, null, 8, _hoisted_3$5)) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(selectedItems.value, (item) => {
3276
3264
  return vue.openBlock(), vue.createElementBlock("span", {
3277
3265
  key: itemKey(item),
3278
3266
  textContent: vue.toDisplayString(itemLabel(item)),
3279
3267
  class: "label"
3280
- }, null, 8, _hoisted_4$3);
3268
+ }, null, 8, _hoisted_4$4);
3281
3269
  }), 128))
3282
3270
  ])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
3283
3271
  vue.createElementVNode("div", {
@@ -3306,8 +3294,8 @@
3306
3294
  ])),
3307
3295
  _cache[5] || (_cache[5] = vue.createElementVNode("span", { class: "dropdown-btn" }, "expand_more", -1)),
3308
3296
  loadingItems.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_10, "progress_activity")) : vue.createCommentVNode("", true)
3309
- ], 8, _hoisted_5$1),
3310
- !__props.disabled && showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$m, {
3297
+ ], 8, _hoisted_5$2),
3298
+ !__props.disabled && showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$r, {
3311
3299
  key: 0,
3312
3300
  ref_key: "selectPopup",
3313
3301
  ref: selectPopup,
@@ -3325,12 +3313,12 @@
3325
3313
  onRequestClose: _cache[0] || (_cache[0] = ($event) => togglePopup(false))
3326
3314
  }, null, 8, ["base-element", "initial-item", "items", "label-provider", "max-height", "popup-align", "popup-direction", "selected-items", "show-search", "value-provider"])) : vue.createCommentVNode("", true)
3327
3315
  ], 64)),
3328
- !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
3316
+ !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$q, {
3329
3317
  key: 2,
3330
3318
  errors: vue.unref(errors),
3331
3319
  "hide-error-message": __props.hideErrorMessage || __props.disabled && !__props.showErrorMessageOnDisabled
3332
3320
  }, null, 8, ["errors", "hide-error-message"])) : vue.createCommentVNode("", true)
3333
- ], 42, _hoisted_1$8)), [
3321
+ ], 42, _hoisted_1$c)), [
3334
3322
  [vue.unref(vClickOutside), () => togglePopup(false)]
3335
3323
  ]);
3336
3324
  };
@@ -3339,14 +3327,10 @@
3339
3327
  dayjs.extend(utc);
3340
3328
  dayjs.extend(timezone);
3341
3329
  const dateInputFormatByResolution = (resolution) => {
3342
- if (resolution === "DAY")
3343
- return "YYYYMMDD";
3344
- else if (resolution === "HOUR")
3345
- return "YYYYMMDDHH";
3346
- else if (resolution === "SECOND")
3347
- return "YYYYMMDDHHmmss";
3348
- else
3349
- return "YYYYMMDDHHmm";
3330
+ if (resolution === "DAY") return "YYYYMMDD";
3331
+ else if (resolution === "HOUR") return "YYYYMMDDHH";
3332
+ else if (resolution === "SECOND") return "YYYYMMDDHHmmss";
3333
+ else return "YYYYMMDDHHmm";
3350
3334
  };
3351
3335
  const convertInputToDateString = (str, inputFormat, endTime, resolution, inputTimeZone, minDateValue, maxDateValue) => {
3352
3336
  if (str) {
@@ -3359,19 +3343,16 @@
3359
3343
  }
3360
3344
  }
3361
3345
  let value = dayjs.tz(str, inputFormat, inputTimeZone);
3362
- if (endTime)
3363
- value = value.endOf(resolution.toLowerCase());
3346
+ if (endTime) value = value.endOf(resolution.toLowerCase());
3364
3347
  const minValue = minDateValue;
3365
3348
  if (minValue) {
3366
3349
  let minDate = dayjs(minValue).tz(inputTimeZone);
3367
- if (value.isBefore(minDate))
3368
- value = minDate;
3350
+ if (value.isBefore(minDate)) value = minDate;
3369
3351
  }
3370
3352
  const maxValue = maxDateValue;
3371
3353
  if (maxValue) {
3372
3354
  let maxDate = dayjs(maxValue).tz(inputTimeZone);
3373
- if (maxDate.isBefore(value))
3374
- value = maxDate;
3355
+ if (maxDate.isBefore(value)) value = maxDate;
3375
3356
  }
3376
3357
  if (resolution === "MINUTE_10" || resolution === "MINUTE_30") {
3377
3358
  const truncateUnit = resolution === "MINUTE_10" ? 10 : 30;
@@ -3401,9 +3382,9 @@
3401
3382
  const normalizeDateInput = (value) => {
3402
3383
  return value.replace(/[^\d-]/g, "");
3403
3384
  };
3404
- const _hoisted_1$7 = { class: "bs-date-input-popup" };
3405
- const _hoisted_2$6 = { class: "buttons" };
3406
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
3385
+ const _hoisted_1$b = { class: "bs-date-input-popup" };
3386
+ const _hoisted_2$9 = { class: "buttons" };
3387
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
3407
3388
  __name: "BSDateInputPopup",
3408
3389
  props: {
3409
3390
  modelValue: {},
@@ -3431,7 +3412,7 @@
3431
3412
  emit("close");
3432
3413
  };
3433
3414
  return (_ctx, _cache) => {
3434
- return vue.openBlock(), vue.createBlock(_sfc_main$o, {
3415
+ return vue.openBlock(), vue.createBlock(_sfc_main$t, {
3435
3416
  "base-element": __props.baseElement,
3436
3417
  "popup-align": __props.popupAlign,
3437
3418
  "offset-from-base-element": 4,
@@ -3442,8 +3423,8 @@
3442
3423
  }, ["stop"]))
3443
3424
  }, {
3444
3425
  default: vue.withCtx(() => [
3445
- vue.createElementVNode("div", _hoisted_1$7, [
3446
- vue.createVNode(_sfc_main$j, {
3426
+ vue.createElementVNode("div", _hoisted_1$b, [
3427
+ vue.createVNode(_sfc_main$o, {
3447
3428
  modelValue: date.value,
3448
3429
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => date.value = $event),
3449
3430
  "display-format": __props.displayFormat,
@@ -3452,14 +3433,14 @@
3452
3433
  "start-year": __props.selectStartYear,
3453
3434
  "time-zone": __props.timeZone
3454
3435
  }, null, 8, ["modelValue", "display-format", "end-year", "resolution", "start-year", "time-zone"]),
3455
- vue.createElementVNode("div", _hoisted_2$6, [
3456
- vue.createVNode(_sfc_main$r, {
3436
+ vue.createElementVNode("div", _hoisted_2$9, [
3437
+ vue.createVNode(_sfc_main$w, {
3457
3438
  caption: __props.okButtonCaption,
3458
3439
  "button-color": "blue",
3459
3440
  class: "min-w-80",
3460
3441
  onClick: emitValue
3461
3442
  }, null, 8, ["caption"]),
3462
- vue.createVNode(_sfc_main$r, {
3443
+ vue.createVNode(_sfc_main$w, {
3463
3444
  caption: __props.cancelButtonCaption,
3464
3445
  class: "min-w-80",
3465
3446
  onClick: close
@@ -3472,16 +3453,16 @@
3472
3453
  };
3473
3454
  }
3474
3455
  });
3475
- const _hoisted_1$6 = {
3456
+ const _hoisted_1$a = {
3476
3457
  key: 0,
3477
3458
  class: "view-mode"
3478
3459
  };
3479
- const _hoisted_2$5 = {
3460
+ const _hoisted_2$8 = {
3480
3461
  key: 1,
3481
3462
  class: "input-area"
3482
3463
  };
3483
- const _hoisted_3$3 = ["id", "placeholder", "disabled", "maxlength", "name", "tabindex", "value"];
3484
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
3464
+ const _hoisted_3$4 = ["id", "placeholder", "disabled", "maxlength", "name", "tabindex", "value"];
3465
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
3485
3466
  __name: "BSDateInput",
3486
3467
  props: {
3487
3468
  id: {},
@@ -3688,9 +3669,9 @@
3688
3669
  style: vue.normalizeStyle({ width: __props.width }),
3689
3670
  onKeydown: _cache[2] || (_cache[2] = vue.withKeys(vue.withModifiers(() => togglePopup(false), ["stop", "prevent"]), ["esc"]))
3690
3671
  }, [
3691
- __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
3672
+ __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
3692
3673
  vue.createElementVNode("span", null, vue.toDisplayString(viewModeValue.value), 1)
3693
- ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$5, [
3674
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$8, [
3694
3675
  vue.createElementVNode("span", {
3695
3676
  class: vue.normalizeClass([{ "bs-clickable": !__props.disabled }, "font-icon"]),
3696
3677
  onClick: _cache[0] || (_cache[0] = ($event) => togglePopup())
@@ -3706,14 +3687,14 @@
3706
3687
  tabindex: __props.tabindex,
3707
3688
  value: focused.value ? vue.unref(stringValue) : formattedValue.value,
3708
3689
  type: "text"
3709
- }, vue.toHandlers(handlers, true)), null, 16, _hoisted_3$3)
3690
+ }, vue.toHandlers(handlers, true)), null, 16, _hoisted_3$4)
3710
3691
  ])),
3711
- !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
3692
+ !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$q, {
3712
3693
  key: 2,
3713
3694
  errors: vue.unref(errors),
3714
3695
  "hide-error-message": __props.hideErrorMessage || __props.disabled && !__props.showErrorMessageOnDisabled
3715
3696
  }, null, 8, ["errors", "hide-error-message"])) : vue.createCommentVNode("", true),
3716
- showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$8, {
3697
+ showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$d, {
3717
3698
  key: 3,
3718
3699
  "base-element": rootRef.value,
3719
3700
  "display-format": actualDisplayFormat.value,
@@ -3734,9 +3715,9 @@
3734
3715
  };
3735
3716
  }
3736
3717
  });
3737
- const _hoisted_1$5 = { class: "bs-date-range-popup flex flex-col px-16 py-8" };
3738
- const _hoisted_2$4 = { class: "buttons" };
3739
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
3718
+ const _hoisted_1$9 = { class: "bs-date-range-popup flex flex-col px-16 py-8" };
3719
+ const _hoisted_2$7 = { class: "buttons" };
3720
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
3740
3721
  __name: "BSDateRangeInputPopup",
3741
3722
  props: {
3742
3723
  from: {},
@@ -3767,7 +3748,7 @@
3767
3748
  emit("close");
3768
3749
  };
3769
3750
  return (_ctx, _cache) => {
3770
- return vue.openBlock(), vue.createBlock(_sfc_main$o, {
3751
+ return vue.openBlock(), vue.createBlock(_sfc_main$t, {
3771
3752
  "base-element": __props.baseElement,
3772
3753
  "offset-from-base-element": 4,
3773
3754
  "max-height": "auto",
@@ -3776,8 +3757,8 @@
3776
3757
  }, ["stop"]))
3777
3758
  }, {
3778
3759
  default: vue.withCtx(() => [
3779
- vue.createElementVNode("div", _hoisted_1$5, [
3780
- vue.createVNode(_sfc_main$i, {
3760
+ vue.createElementVNode("div", _hoisted_1$9, [
3761
+ vue.createVNode(_sfc_main$n, {
3781
3762
  from: fromValue.value,
3782
3763
  "onUpdate:from": _cache[0] || (_cache[0] = ($event) => fromValue.value = $event),
3783
3764
  to: toValue.value,
@@ -3790,14 +3771,14 @@
3790
3771
  "start-year": __props.selectStartYear,
3791
3772
  "time-zone": __props.timeZone
3792
3773
  }, null, 8, ["from", "to", "disabled-from", "disabled-to", "display-format", "end-year", "resolution", "start-year", "time-zone"]),
3793
- vue.createElementVNode("div", _hoisted_2$4, [
3794
- vue.createVNode(_sfc_main$r, {
3774
+ vue.createElementVNode("div", _hoisted_2$7, [
3775
+ vue.createVNode(_sfc_main$w, {
3795
3776
  caption: __props.okButtonCaption,
3796
3777
  "button-color": "blue",
3797
3778
  class: "min-w-80",
3798
3779
  onClick: emitValue
3799
3780
  }, null, 8, ["caption"]),
3800
- vue.createVNode(_sfc_main$r, {
3781
+ vue.createVNode(_sfc_main$w, {
3801
3782
  caption: __props.cancelButtonCaption,
3802
3783
  class: "min-w-80",
3803
3784
  onClick: close
@@ -3810,17 +3791,17 @@
3810
3791
  };
3811
3792
  }
3812
3793
  });
3813
- const _hoisted_1$4 = {
3794
+ const _hoisted_1$8 = {
3814
3795
  key: 0,
3815
3796
  class: "view-mode"
3816
3797
  };
3817
- const _hoisted_2$3 = {
3798
+ const _hoisted_2$6 = {
3818
3799
  key: 1,
3819
3800
  class: "input-area"
3820
3801
  };
3821
- const _hoisted_3$2 = ["id", "placeholder", "disabled", "maxlength", "name", "tabindex", "value"];
3822
- const _hoisted_4$2 = ["id", "placeholder", "disabled", "maxlength", "name", "tabindex", "value"];
3823
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
3802
+ const _hoisted_3$3 = ["id", "placeholder", "disabled", "maxlength", "name", "tabindex", "value"];
3803
+ const _hoisted_4$3 = ["id", "placeholder", "disabled", "maxlength", "name", "tabindex", "value"];
3804
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
3824
3805
  __name: "BSDateRange",
3825
3806
  props: {
3826
3807
  idFrom: {},
@@ -4198,9 +4179,9 @@
4198
4179
  style: vue.normalizeStyle({ width: __props.width }),
4199
4180
  onKeydown: _cache[2] || (_cache[2] = vue.withKeys(vue.withModifiers(() => togglePopup(false), ["stop", "prevent"]), ["esc"]))
4200
4181
  }, [
4201
- __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
4182
+ __props.viewMode ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
4202
4183
  vue.createElementVNode("span", null, vue.toDisplayString(formattedDateRange.value), 1)
4203
- ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$3, [
4184
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$6, [
4204
4185
  vue.createElementVNode("span", {
4205
4186
  class: vue.normalizeClass([{ "bs-clickable": !disabled.value }, "font-icon"]),
4206
4187
  onClick: _cache[0] || (_cache[0] = () => togglePopup())
@@ -4216,7 +4197,7 @@
4216
4197
  tabindex: __props.tabindex,
4217
4198
  value: focusedFrom.value ? vue.unref(stringValueFrom) : formattedFrom.value,
4218
4199
  type: "text"
4219
- }, vue.toHandlers(handlersFrom, true)), null, 16, _hoisted_3$2),
4200
+ }, vue.toHandlers(handlersFrom, true)), null, 16, _hoisted_3$3),
4220
4201
  _cache[3] || (_cache[3] = vue.createElementVNode("span", { class: "px-4" }, "~", -1)),
4221
4202
  vue.createElementVNode("input", vue.mergeProps({
4222
4203
  id: __props.idTo,
@@ -4229,14 +4210,14 @@
4229
4210
  tabindex: __props.tabindex,
4230
4211
  value: focusedTo.value ? vue.unref(stringValueTo) : formattedTo.value,
4231
4212
  type: "text"
4232
- }, vue.toHandlers(handlersTo, true)), null, 16, _hoisted_4$2)
4213
+ }, vue.toHandlers(handlersTo, true)), null, 16, _hoisted_4$3)
4233
4214
  ])),
4234
- !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
4215
+ !__props.viewMode ? (vue.openBlock(), vue.createBlock(_sfc_main$q, {
4235
4216
  key: 2,
4236
4217
  errors: errors.value,
4237
4218
  "hide-error-message": __props.hideErrorMessage || disabled.value && !__props.showErrorMessageOnDisabled
4238
4219
  }, null, 8, ["errors", "hide-error-message"])) : vue.createCommentVNode("", true),
4239
- showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$6, {
4220
+ showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$b, {
4240
4221
  key: 3,
4241
4222
  "base-element": rootRef.value,
4242
4223
  "disabled-from": __props.disabledFrom,
@@ -4261,7 +4242,7 @@
4261
4242
  };
4262
4243
  }
4263
4244
  });
4264
- const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
4245
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
4265
4246
  __name: "SlideDownTransition",
4266
4247
  setup(__props) {
4267
4248
  const beforeEnter = (el) => {
@@ -4324,12 +4305,12 @@
4324
4305
  };
4325
4306
  }
4326
4307
  });
4327
- const _hoisted_1$3 = {
4308
+ const _hoisted_1$7 = {
4328
4309
  key: 0,
4329
4310
  class: "card-layout-header flex flex-row items-center"
4330
4311
  };
4331
- const _hoisted_2$2 = ["textContent"];
4332
- const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
4312
+ const _hoisted_2$5 = ["textContent"];
4313
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
4333
4314
  __name: "BSCardLayout",
4334
4315
  props: {
4335
4316
  title: {},
@@ -4343,7 +4324,7 @@
4343
4324
  return vue.openBlock(), vue.createElementBlock("div", {
4344
4325
  class: vue.normalizeClass([{ expanded: expanded.value }, "bs-card-layout"])
4345
4326
  }, [
4346
- !__props.hideTitle ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
4327
+ !__props.hideTitle ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
4347
4328
  vue.createElementVNode("span", {
4348
4329
  class: "expand-btn font-icon bs-clickable",
4349
4330
  onClick: toggleExpand
@@ -4351,13 +4332,13 @@
4351
4332
  vue.createElementVNode("div", {
4352
4333
  textContent: vue.toDisplayString(__props.title),
4353
4334
  class: "card-layout-title"
4354
- }, null, 8, _hoisted_2$2),
4335
+ }, null, 8, _hoisted_2$5),
4355
4336
  _cache[0] || (_cache[0] = vue.createElementVNode("div", { class: "grow" }, null, -1)),
4356
4337
  vue.createElementVNode("div", null, [
4357
4338
  vue.renderSlot(_ctx.$slots, "title-right")
4358
4339
  ])
4359
4340
  ])) : vue.createCommentVNode("", true),
4360
- vue.createVNode(_sfc_main$4, null, {
4341
+ vue.createVNode(_sfc_main$9, null, {
4361
4342
  default: vue.withCtx(() => [
4362
4343
  vue.withDirectives(vue.createElementVNode("div", {
4363
4344
  class: vue.normalizeClass(__props.cardBodyClass)
@@ -4373,6 +4354,742 @@
4373
4354
  };
4374
4355
  }
4375
4356
  });
4357
+ const modalPluginKey = "BlueseaModalPlugin";
4358
+ const modalHandleKey = "BlueseaModalHandle";
4359
+ class ModalHandleImpl {
4360
+ constructor(modal, modalId) {
4361
+ this.modal = modal;
4362
+ this.modalId = modalId;
4363
+ }
4364
+ maximized = false;
4365
+ defaultStyleListener;
4366
+ defaultPositionListener;
4367
+ close() {
4368
+ this.modal.closeModal(this.modalId);
4369
+ }
4370
+ setDefaultStyle(modalStyle) {
4371
+ this.defaultStyleListener?.(modalStyle);
4372
+ }
4373
+ setDefaultPosition(modalPosition) {
4374
+ this.defaultPositionListener?.(modalPosition);
4375
+ }
4376
+ setDefaultStyleListener(listener) {
4377
+ this.defaultStyleListener = listener;
4378
+ }
4379
+ setDefaultPositionListener(listener) {
4380
+ this.defaultPositionListener = listener;
4381
+ }
4382
+ }
4383
+ class BSModal {
4384
+ modalItems = vue.reactive([]);
4385
+ openModal(modalItem) {
4386
+ const modalId = Math.random().toString(36);
4387
+ const handle = new ModalHandleImpl(this, modalId);
4388
+ const registered = {
4389
+ modalId,
4390
+ pageId: modalItem.pageId,
4391
+ component: vue.markRaw(modalItem.component),
4392
+ style: modalItem.style,
4393
+ position: modalItem.position,
4394
+ bind: modalItem.bind,
4395
+ on: modalItem.on,
4396
+ slots: modalItem.slots,
4397
+ modalHandle: handle
4398
+ };
4399
+ this.modalItems.push(registered);
4400
+ return registered;
4401
+ }
4402
+ closeModal(modalItem) {
4403
+ let index = -1;
4404
+ if (typeof modalItem === "string") {
4405
+ index = this.modalItems.findIndex((item) => item.modalId === modalItem);
4406
+ } else {
4407
+ index = this.modalItems.findIndex((item) => item === modalItem);
4408
+ }
4409
+ if (index >= 0) this.modalItems.splice(index, 1);
4410
+ }
4411
+ closeAllModals() {
4412
+ this.modalItems.splice(0, this.modalItems.length);
4413
+ }
4414
+ openAlert(title, message, clickHandler) {
4415
+ const option = {
4416
+ component: vue.defineAsyncComponent(() => Promise.resolve().then(() => BSAlertModal)),
4417
+ bind: {
4418
+ title,
4419
+ message
4420
+ },
4421
+ on: {
4422
+ click: async () => await clickHandler?.()
4423
+ }
4424
+ };
4425
+ return this.openModal(option);
4426
+ }
4427
+ openYesNo(title, message, yesHandler, noHandler) {
4428
+ const option = {
4429
+ component: vue.defineAsyncComponent(() => Promise.resolve().then(() => BSYesNoModal)),
4430
+ bind: {
4431
+ title,
4432
+ message
4433
+ },
4434
+ on: {
4435
+ clickYes: async () => await yesHandler?.(),
4436
+ clickNo: async () => await noHandler?.()
4437
+ }
4438
+ };
4439
+ return this.openModal(option);
4440
+ }
4441
+ install(app) {
4442
+ app.provide(modalPluginKey, this);
4443
+ }
4444
+ }
4445
+ const useModal = () => {
4446
+ const modal = vue.inject(modalPluginKey);
4447
+ if (!modal) throw new Error("BSModal is not initialized.");
4448
+ return modal;
4449
+ };
4450
+ const provideModalHandle = (modalHandle) => {
4451
+ vue.provide(modalHandleKey, modalHandle);
4452
+ };
4453
+ const useModalHandle = () => {
4454
+ const modalHandle = vue.inject(modalHandleKey);
4455
+ if (!modalHandle) throw new Error("ModalHandle not found. Maybe not inside modal component.");
4456
+ return modalHandle;
4457
+ };
4458
+ const createModalPlugin = () => {
4459
+ return new BSModal();
4460
+ };
4461
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
4462
+ __name: "BSModalWrapper",
4463
+ props: {
4464
+ modalItem: {}
4465
+ },
4466
+ setup(__props) {
4467
+ const props = __props;
4468
+ const defaultModalPosition = vue.ref();
4469
+ props.modalItem.modalHandle.setDefaultPositionListener(
4470
+ (position) => {
4471
+ defaultModalPosition.value = position;
4472
+ initializeOffset(position);
4473
+ }
4474
+ );
4475
+ const modalPositionStyle = vue.computed(() => {
4476
+ const pos = {
4477
+ ...defaultModalPosition.value,
4478
+ ...props.modalItem.position
4479
+ };
4480
+ const result = [];
4481
+ if (pos.horizontal === "left") result.push("items-start");
4482
+ else if (pos.horizontal === "right") result.push("items-end");
4483
+ else result.push("items-center");
4484
+ if (pos.vertical === "top") result.push("justify-start");
4485
+ else if (pos.vertical === "bottom") result.push("justify-end");
4486
+ else result.push("justify-center");
4487
+ return result;
4488
+ });
4489
+ const defaultModalStyle = vue.ref();
4490
+ props.modalItem.modalHandle.setDefaultStyleListener((style) => {
4491
+ defaultModalStyle.value = style;
4492
+ props.modalItem.escToClose = style.escToClose;
4493
+ });
4494
+ const mergedStyle = vue.computed(() => {
4495
+ const result = {
4496
+ ...defaultModalStyle.value,
4497
+ ...props.modalItem.style,
4498
+ transform: ""
4499
+ };
4500
+ if (props.modalItem.modalHandle.maximized) {
4501
+ delete result.maxWidth;
4502
+ delete result.maxHeight;
4503
+ } else {
4504
+ result.transform = `translate(${offset.value.x}px, ${offset.value.y}px)`;
4505
+ }
4506
+ return result;
4507
+ });
4508
+ provideModalHandle(props.modalItem.modalHandle);
4509
+ const modalComponent = vue.ref();
4510
+ const modalPanel = vue.ref();
4511
+ const offset = vue.ref({ x: 0, y: 0 });
4512
+ const initializeOffset = (defaultPosition) => {
4513
+ if (offset.value.x === 0) {
4514
+ offset.value.x = props.modalItem.position?.offsetX ?? defaultPosition?.offsetX ?? 0;
4515
+ }
4516
+ if (offset.value.y === 0) {
4517
+ offset.value.y = props.modalItem.position?.offsetY ?? defaultPosition?.offsetY ?? 0;
4518
+ }
4519
+ };
4520
+ initializeOffset();
4521
+ let initialPosition = void 0;
4522
+ const startMoveModal = (event) => {
4523
+ if (!props.modalItem.modalHandle.maximized && modalPanel.value === event.target && event.button === 0) {
4524
+ initialPosition = {
4525
+ x: event.clientX - offset.value.x,
4526
+ y: event.clientY - offset.value.y
4527
+ };
4528
+ modalPanel.value.setPointerCapture(event.pointerId);
4529
+ }
4530
+ };
4531
+ const moveModal = (event) => {
4532
+ if (!props.modalItem.modalHandle.maximized && initialPosition) {
4533
+ offset.value.x = event.clientX - initialPosition.x;
4534
+ offset.value.y = event.clientY - initialPosition.y;
4535
+ event.preventDefault();
4536
+ event.stopPropagation();
4537
+ }
4538
+ };
4539
+ const endMoveModal = (event) => {
4540
+ if (!props.modalItem.modalHandle.maximized && initialPosition) {
4541
+ modalPanel.value?.releasePointerCapture(event.pointerId);
4542
+ initialPosition = void 0;
4543
+ }
4544
+ };
4545
+ return (_ctx, _cache) => {
4546
+ return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
4547
+ class: vue.normalizeClass([modalPositionStyle.value, "modal-wrapper flex flex-col"])
4548
+ }, [
4549
+ vue.createElementVNode("div", {
4550
+ ref_key: "modalPanel",
4551
+ ref: modalPanel,
4552
+ class: vue.normalizeClass([[
4553
+ __props.modalItem.style?.styleClass,
4554
+ __props.modalItem.modalHandle.maximized ? "maximized" : void 0
4555
+ ], "modal-panel"]),
4556
+ style: vue.normalizeStyle(mergedStyle.value),
4557
+ onPointerdown: startMoveModal,
4558
+ onPointermove: moveModal,
4559
+ onPointerup: endMoveModal
4560
+ }, [
4561
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(__props.modalItem.component), vue.mergeProps({
4562
+ ref_key: "modalComponent",
4563
+ ref: modalComponent
4564
+ }, __props.modalItem.bind || {}, vue.toHandlers(__props.modalItem.on || {})), null, 16))
4565
+ ], 38)
4566
+ ], 2)), [
4567
+ [vue.vShow, modalComponent.value]
4568
+ ]);
4569
+ };
4570
+ }
4571
+ });
4572
+ const _hoisted_1$6 = {
4573
+ key: 0,
4574
+ class: "modal-curtain"
4575
+ };
4576
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
4577
+ __name: "BSModalContainer",
4578
+ setup(__props) {
4579
+ const modal = useModal();
4580
+ const modalExists = vue.computed(() => modal.modalItems.length > 0);
4581
+ const disableBodyScroll = (disable) => {
4582
+ document.body.style.overflow = disable ? "hidden" : "auto";
4583
+ };
4584
+ vue.watch(
4585
+ modalExists,
4586
+ () => disableBodyScroll(modalExists.value)
4587
+ );
4588
+ const modalContainer = vue.ref();
4589
+ const getLastModal = () => {
4590
+ return modal.modalItems[modal.modalItems.length - 1];
4591
+ };
4592
+ const escapeLastModal = () => {
4593
+ const lastModal = getLastModal();
4594
+ if (lastModal) {
4595
+ if (lastModal.modalHandle.maximized) {
4596
+ lastModal.modalHandle.maximized = false;
4597
+ } else {
4598
+ lastModal.modalHandle.close();
4599
+ }
4600
+ }
4601
+ };
4602
+ const handleKeyDown = (event) => {
4603
+ if (modalExists.value && event.key === "Escape") {
4604
+ if (event.shiftKey) {
4605
+ escapeLastModal();
4606
+ } else if (modalContainer.value) {
4607
+ const lastModal = getLastModal();
4608
+ if (lastModal?.escToClose) {
4609
+ escapeLastModal();
4610
+ }
4611
+ }
4612
+ }
4613
+ };
4614
+ vue.onMounted(() => {
4615
+ window.addEventListener("keydown", handleKeyDown);
4616
+ });
4617
+ vue.onBeforeUnmount(() => {
4618
+ window.removeEventListener("keydown", handleKeyDown);
4619
+ });
4620
+ return (_ctx, _cache) => {
4621
+ return vue.openBlock(), vue.createElementBlock("div", {
4622
+ ref_key: "modalContainer",
4623
+ ref: modalContainer,
4624
+ class: "bs-modal-container"
4625
+ }, [
4626
+ modalExists.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6)) : vue.createCommentVNode("", true),
4627
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(modal).modalItems, (item) => {
4628
+ return vue.openBlock(), vue.createBlock(_sfc_main$7, {
4629
+ key: item.modalId,
4630
+ "data-page-id": item.pageId,
4631
+ "modal-item": item
4632
+ }, null, 8, ["data-page-id", "modal-item"]);
4633
+ }), 128))
4634
+ ], 512);
4635
+ };
4636
+ }
4637
+ });
4638
+ const findElement = (maybeElement) => {
4639
+ const val = maybeElement?.value;
4640
+ if (val) {
4641
+ if ("querySelectorAll" in val) return val;
4642
+ if ("$el" in val && "querySelectorAll" in val.$el) return val.$el;
4643
+ }
4644
+ };
4645
+ const findInputComponents = (maybeElement) => {
4646
+ const element = findElement(maybeElement);
4647
+ if (element) {
4648
+ const selector = `input,textarea,select,[role=listbox],[role=radiogroup],[role=group],[role=textbox],[role=img]`;
4649
+ return Array.from(element.querySelectorAll(selector)).map((el) => el);
4650
+ }
4651
+ return [];
4652
+ };
4653
+ const getComponentRootElement = (component) => {
4654
+ return "$el" in component ? component.$el : void 0;
4655
+ };
4656
+ const focusFirstElement = (element) => {
4657
+ const focusable = findFirstFocusableElement(element);
4658
+ if (focusable) {
4659
+ focusable.focus();
4660
+ return true;
4661
+ } else {
4662
+ return false;
4663
+ }
4664
+ };
4665
+ const focusLastElement = (element) => {
4666
+ const focusable = findLastFocusableElement(element);
4667
+ if (focusable) {
4668
+ focusable.focus();
4669
+ return true;
4670
+ } else {
4671
+ return false;
4672
+ }
4673
+ };
4674
+ const findFirstFocusableElement = (element) => {
4675
+ const focusableElementsSelector = 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), [tabindex]:not([disabled])';
4676
+ return element.querySelector(focusableElementsSelector) || void 0;
4677
+ };
4678
+ const findLastFocusableElement = (element) => {
4679
+ const focusableElementsSelector = 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), [tabindex]:not([disabled])';
4680
+ const all = element.querySelectorAll(focusableElementsSelector);
4681
+ return all.item(all.length - 1) || void 0;
4682
+ };
4683
+ const getSelfIndex = (element) => {
4684
+ if (element.parentElement) {
4685
+ return Array.from(element.parentElement.children).indexOf(element);
4686
+ } else {
4687
+ return -1;
4688
+ }
4689
+ };
4690
+ const NAMED_COLORS = {
4691
+ aliceblue: "#F0F8FF",
4692
+ antiquewhite: "#FAEBD7",
4693
+ aqua: "#00FFFF",
4694
+ aquamarine: "#7FFFD4",
4695
+ azure: "#F0FFFF",
4696
+ beige: "#F5F5DC",
4697
+ bisque: "#FFE4C4",
4698
+ black: "#000000",
4699
+ blanchedalmond: "#FFEBCD",
4700
+ blue: "#0000FF",
4701
+ blueviolet: "#8A2BE2",
4702
+ brown: "#A52A2A",
4703
+ burlywood: "#DEB887",
4704
+ cadetblue: "#5F9EA0",
4705
+ chartreuse: "#7FFF00",
4706
+ chocolate: "#D2691E",
4707
+ coral: "#FF7F50",
4708
+ cornflowerblue: "#6495ED",
4709
+ cornsilk: "#FFF8DC",
4710
+ crimson: "#DC143C",
4711
+ cyan: "#00FFFF",
4712
+ darkblue: "#00008B",
4713
+ darkcyan: "#008B8B",
4714
+ darkgoldenrod: "#B8860B",
4715
+ darkgray: "#A9A9A9",
4716
+ darkgrey: "#A9A9A9",
4717
+ darkgreen: "#006400",
4718
+ darkkhaki: "#BDB76B",
4719
+ darkmagenta: "#8B008B",
4720
+ darkolivegreen: "#556B2F",
4721
+ darkorange: "#FF8C00",
4722
+ darkorchid: "#9932CC",
4723
+ darkred: "#8B0000",
4724
+ darksalmon: "#E9967A",
4725
+ darkseagreen: "#8FBC8F",
4726
+ darkslateblue: "#483D8B",
4727
+ darkslategray: "#2F4F4F",
4728
+ darkslategrey: "#2F4F4F",
4729
+ darkturquoise: "#00CED1",
4730
+ darkviolet: "#9400D3",
4731
+ deeppink: "#FF1493",
4732
+ deepskyblue: "#00BFFF",
4733
+ dimgray: "#696969",
4734
+ dimgrey: "#696969",
4735
+ dodgerblue: "#1E90FF",
4736
+ firebrick: "#B22222",
4737
+ floralwhite: "#FFFAF0",
4738
+ forestgreen: "#228B22",
4739
+ fuchsia: "#FF00FF",
4740
+ gainsboro: "#DCDCDC",
4741
+ ghostwhite: "#F8F8FF",
4742
+ gold: "#FFD700",
4743
+ goldenrod: "#DAA520",
4744
+ gray: "#808080",
4745
+ grey: "#808080",
4746
+ green: "#008000",
4747
+ greenyellow: "#ADFF2F",
4748
+ honeydew: "#F0FFF0",
4749
+ hotpink: "#FF69B4",
4750
+ indianred: "#CD5C5C",
4751
+ indigo: "#4B0082",
4752
+ ivory: "#FFFFF0",
4753
+ khaki: "#F0E68C",
4754
+ lavender: "#E6E6FA",
4755
+ lavenderblush: "#FFF0F5",
4756
+ lawngreen: "#7CFC00",
4757
+ lemonchiffon: "#FFFACD",
4758
+ lightblue: "#ADD8E6",
4759
+ lightcoral: "#F08080",
4760
+ lightcyan: "#E0FFFF",
4761
+ lightgoldenrodyellow: "#FAFAD2",
4762
+ lightgray: "#D3D3D3",
4763
+ lightgrey: "#D3D3D3",
4764
+ lightgreen: "#90EE90",
4765
+ lightpink: "#FFB6C1",
4766
+ lightsalmon: "#FFA07A",
4767
+ lightseagreen: "#20B2AA",
4768
+ lightskyblue: "#87CEFA",
4769
+ lightslategray: "#778899",
4770
+ lightslategrey: "#778899",
4771
+ lightsteelblue: "#B0C4DE",
4772
+ lightyellow: "#FFFFE0",
4773
+ lime: "#00FF00",
4774
+ limegreen: "#32CD32",
4775
+ linen: "#FAF0E6",
4776
+ magenta: "#FF00FF",
4777
+ maroon: "#800000",
4778
+ mediumaquamarine: "#66CDAA",
4779
+ mediumblue: "#0000CD",
4780
+ mediumorchid: "#BA55D3",
4781
+ mediumpurple: "#9370DB",
4782
+ mediumseagreen: "#3CB371",
4783
+ mediumslateblue: "#7B68EE",
4784
+ mediumspringgreen: "#00FA9A",
4785
+ mediumturquoise: "#48D1CC",
4786
+ mediumvioletred: "#C71585",
4787
+ midnightblue: "#191970",
4788
+ mintcream: "#F5FFFA",
4789
+ mistyrose: "#FFE4E1",
4790
+ moccasin: "#FFE4B5",
4791
+ navajowhite: "#FFDEAD",
4792
+ navy: "#000080",
4793
+ oldlace: "#FDF5E6",
4794
+ olive: "#808000",
4795
+ olivedrab: "#6B8E23",
4796
+ orange: "#FFA500",
4797
+ orangered: "#FF4500",
4798
+ orchid: "#DA70D6",
4799
+ palegoldenrod: "#EEE8AA",
4800
+ palegreen: "#98FB98",
4801
+ paleturquoise: "#AFEEEE",
4802
+ palevioletred: "#DB7093",
4803
+ papayawhip: "#FFEFD5",
4804
+ peachpuff: "#FFDAB9",
4805
+ peru: "#CD853F",
4806
+ pink: "#FFC0CB",
4807
+ plum: "#DDA0DD",
4808
+ powderblue: "#B0E0E6",
4809
+ purple: "#800080",
4810
+ rebeccapurple: "#663399",
4811
+ red: "#FF0000",
4812
+ rosybrown: "#BC8F8F",
4813
+ royalblue: "#4169E1",
4814
+ saddlebrown: "#8B4513",
4815
+ salmon: "#FA8072",
4816
+ sandybrown: "#F4A460",
4817
+ seagreen: "#2E8B57",
4818
+ seashell: "#FFF5EE",
4819
+ sienna: "#A0522D",
4820
+ silver: "#C0C0C0",
4821
+ skyblue: "#87CEEB",
4822
+ slateblue: "#6A5ACD",
4823
+ slategray: "#708090",
4824
+ slategrey: "#708090",
4825
+ snow: "#FFFAFA",
4826
+ springgreen: "#00FF7F",
4827
+ steelblue: "#4682B4",
4828
+ tan: "#D2B48C",
4829
+ teal: "#008080",
4830
+ thistle: "#D8BFD8",
4831
+ tomato: "#FF6347",
4832
+ turquoise: "#40E0D0",
4833
+ violet: "#EE82EE",
4834
+ wheat: "#F5DEB3",
4835
+ white: "#FFFFFF",
4836
+ whitesmoke: "#F5F5F5",
4837
+ yellow: "#FFFF00",
4838
+ yellowgreen: "#9ACD32"
4839
+ };
4840
+ class FocusLoopContext {
4841
+ constructor(el) {
4842
+ this.el = el;
4843
+ }
4844
+ firstEl;
4845
+ lastEl;
4846
+ update() {
4847
+ const first = findFirstFocusableElement(this.el);
4848
+ if (this.firstEl !== first) {
4849
+ this.firstEl?.removeEventListener("keydown", this.onShiftTabKeyDown.bind(this));
4850
+ this.firstEl = first;
4851
+ this.firstEl?.addEventListener("keydown", this.onShiftTabKeyDown.bind(this));
4852
+ }
4853
+ const last = findLastFocusableElement(this.el);
4854
+ if (this.lastEl !== last) {
4855
+ this.lastEl?.removeEventListener("keydown", this.onTabKeyDown.bind(this));
4856
+ this.lastEl = last;
4857
+ this.lastEl?.addEventListener("keydown", this.onTabKeyDown.bind(this));
4858
+ }
4859
+ }
4860
+ onTabKeyDown(event) {
4861
+ if (event.key == "Tab" && !event.shiftKey) {
4862
+ this.firstEl?.focus();
4863
+ event.preventDefault();
4864
+ event.stopPropagation();
4865
+ }
4866
+ }
4867
+ onShiftTabKeyDown(event) {
4868
+ if (event.key == "Tab" && event.shiftKey) {
4869
+ this.lastEl?.focus();
4870
+ event.preventDefault();
4871
+ event.stopPropagation();
4872
+ }
4873
+ }
4874
+ }
4875
+ const VFocusLoop = {
4876
+ mounted: async (el, _binding) => {
4877
+ if (el instanceof HTMLElement) {
4878
+ el.vFocusLoopContext = new FocusLoopContext(el);
4879
+ await vue.nextTick();
4880
+ el.vFocusLoopContext.update();
4881
+ }
4882
+ }
4883
+ };
4884
+ const _hoisted_1$5 = { class: "bs-modal-frame flex flex-col" };
4885
+ const _hoisted_2$4 = {
4886
+ key: 0,
4887
+ class: "title-bar flex flex-row items-center"
4888
+ };
4889
+ const _hoisted_3$2 = { class: "title grow" };
4890
+ const _hoisted_4$2 = ["textContent"];
4891
+ const _hoisted_5$1 = { class: "title-buttons" };
4892
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
4893
+ __name: "BSModalFrame",
4894
+ props: {
4895
+ title: {},
4896
+ hideMaximizeButton: { type: Boolean },
4897
+ hideCloseButton: { type: Boolean },
4898
+ closeCaption: { default: "Close" },
4899
+ autoFocus: { type: Boolean }
4900
+ },
4901
+ emits: ["closeModal"],
4902
+ setup(__props, { emit: __emit }) {
4903
+ const props = __props;
4904
+ const emit = __emit;
4905
+ const slots = vue.useSlots();
4906
+ const hasTitleBar = vue.computed(
4907
+ () => props.title || slots["title"] || slots["title-buttons"] || !props.hideCloseButton
4908
+ );
4909
+ const hasButtons = vue.computed(() => slots["buttons"]);
4910
+ const modalHandle = useModalHandle();
4911
+ const toggleMaximize = () => {
4912
+ modalHandle.maximized = !modalHandle.maximized;
4913
+ };
4914
+ const closeModal = () => {
4915
+ modalHandle.close();
4916
+ emit("closeModal");
4917
+ };
4918
+ const modalBody = vue.ref();
4919
+ const modalButtons = vue.ref();
4920
+ vue.onMounted(async () => {
4921
+ await vue.nextTick();
4922
+ if (props.autoFocus) {
4923
+ modalBody.value && focusFirstElement(modalBody.value) || modalButtons.value && focusFirstElement(modalButtons.value);
4924
+ } else if (modalBody.value) {
4925
+ modalBody.value.tabIndex = 0;
4926
+ modalBody.value.focus();
4927
+ modalBody.value.tabIndex = -1;
4928
+ }
4929
+ });
4930
+ return (_ctx, _cache) => {
4931
+ return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
4932
+ hasTitleBar.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$4, [
4933
+ vue.createElementVNode("div", _hoisted_3$2, [
4934
+ vue.renderSlot(_ctx.$slots, "title", {}, () => [
4935
+ vue.createElementVNode("span", {
4936
+ textContent: vue.toDisplayString(__props.title)
4937
+ }, null, 8, _hoisted_4$2)
4938
+ ])
4939
+ ]),
4940
+ vue.createElementVNode("div", _hoisted_5$1, [
4941
+ vue.renderSlot(_ctx.$slots, "title-buttons")
4942
+ ]),
4943
+ vue.createElementVNode("div", null, [
4944
+ !__props.hideMaximizeButton ? (vue.openBlock(), vue.createBlock(_sfc_main$w, {
4945
+ key: 0,
4946
+ "left-icon": vue.unref(modalHandle).maximized ? "minimize" : "maximize",
4947
+ title: vue.unref(modalHandle).maximized ? "Restore" : "Maximize",
4948
+ class: "border-0 maximize-btn",
4949
+ onClick: toggleMaximize
4950
+ }, null, 8, ["left-icon", "title"])) : vue.createCommentVNode("", true),
4951
+ !__props.hideCloseButton ? (vue.openBlock(), vue.createBlock(_sfc_main$w, {
4952
+ key: 1,
4953
+ title: __props.closeCaption,
4954
+ class: "border-0 close-btn",
4955
+ "left-icon": "close",
4956
+ onClick: closeModal
4957
+ }, null, 8, ["title"])) : vue.createCommentVNode("", true)
4958
+ ])
4959
+ ])) : vue.createCommentVNode("", true),
4960
+ vue.createElementVNode("div", {
4961
+ ref_key: "modalBody",
4962
+ ref: modalBody,
4963
+ class: "grow overflow-auto outline-none"
4964
+ }, [
4965
+ vue.renderSlot(_ctx.$slots, "default")
4966
+ ], 512),
4967
+ hasButtons.value ? (vue.openBlock(), vue.createElementBlock("div", {
4968
+ key: 1,
4969
+ ref_key: "modalButtons",
4970
+ ref: modalButtons,
4971
+ class: "buttons"
4972
+ }, [
4973
+ vue.renderSlot(_ctx.$slots, "buttons")
4974
+ ], 512)) : vue.createCommentVNode("", true)
4975
+ ])), [
4976
+ [vue.unref(VFocusLoop)]
4977
+ ]);
4978
+ };
4979
+ }
4980
+ });
4981
+ const _hoisted_1$4 = ["textContent"];
4982
+ const _hoisted_2$3 = { class: "text-right" };
4983
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
4984
+ __name: "BSAlertModal",
4985
+ props: {
4986
+ title: {},
4987
+ message: {},
4988
+ okCaption: { default: "OK" }
4989
+ },
4990
+ emits: ["click"],
4991
+ setup(__props, { emit: __emit }) {
4992
+ const emit = __emit;
4993
+ const modalHandle = useModalHandle();
4994
+ modalHandle.setDefaultStyle({
4995
+ minWidth: "300px",
4996
+ escToClose: true
4997
+ });
4998
+ const clickOk = () => {
4999
+ emit("click");
5000
+ modalHandle.close();
5001
+ };
5002
+ return (_ctx, _cache) => {
5003
+ return vue.openBlock(), vue.createBlock(_sfc_main$5, {
5004
+ title: __props.title,
5005
+ "auto-focus": ""
5006
+ }, {
5007
+ buttons: vue.withCtx(() => [
5008
+ vue.createElementVNode("div", _hoisted_2$3, [
5009
+ vue.withDirectives(vue.createVNode(_sfc_main$w, {
5010
+ caption: __props.okCaption,
5011
+ "button-color": "blue",
5012
+ class: "min-w-80",
5013
+ "data-id": "okBtn",
5014
+ onClick: clickOk
5015
+ }, null, 8, ["caption"]), [
5016
+ [vue.unref(vFocusOnLoad)]
5017
+ ])
5018
+ ])
5019
+ ]),
5020
+ default: vue.withCtx(() => [
5021
+ vue.createElementVNode("div", {
5022
+ textContent: vue.toDisplayString(__props.message)
5023
+ }, null, 8, _hoisted_1$4)
5024
+ ]),
5025
+ _: 1
5026
+ }, 8, ["title"]);
5027
+ };
5028
+ }
5029
+ });
5030
+ const BSAlertModal = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5031
+ __proto__: null,
5032
+ default: _sfc_main$4
5033
+ }, Symbol.toStringTag, { value: "Module" }));
5034
+ const _hoisted_1$3 = ["textContent"];
5035
+ const _hoisted_2$2 = { class: "text-right" };
5036
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
5037
+ __name: "BSYesNoModal",
5038
+ props: {
5039
+ title: {},
5040
+ message: {},
5041
+ yesCaption: { default: "Yes" },
5042
+ noCaption: { default: "No" }
5043
+ },
5044
+ emits: ["clickNo", "clickYes"],
5045
+ setup(__props, { emit: __emit }) {
5046
+ const emit = __emit;
5047
+ const modalHandle = useModalHandle();
5048
+ modalHandle.setDefaultStyle({
5049
+ minWidth: "300px",
5050
+ escToClose: true
5051
+ });
5052
+ const clickNo = () => {
5053
+ emit("clickNo");
5054
+ modalHandle.close();
5055
+ };
5056
+ const clickYes = () => {
5057
+ emit("clickYes");
5058
+ modalHandle.close();
5059
+ };
5060
+ return (_ctx, _cache) => {
5061
+ return vue.openBlock(), vue.createBlock(_sfc_main$5, { title: __props.title }, {
5062
+ buttons: vue.withCtx(() => [
5063
+ vue.createElementVNode("div", _hoisted_2$2, [
5064
+ vue.createVNode(_sfc_main$w, {
5065
+ caption: __props.noCaption,
5066
+ class: "min-w-80",
5067
+ "data-id": "noBtn",
5068
+ onClick: clickNo
5069
+ }, null, 8, ["caption"]),
5070
+ vue.createVNode(_sfc_main$w, {
5071
+ caption: __props.yesCaption,
5072
+ "button-color": "blue",
5073
+ class: "ml-8 min-w-80",
5074
+ "data-id": "yesBtn",
5075
+ onClick: clickYes
5076
+ }, null, 8, ["caption"])
5077
+ ])
5078
+ ]),
5079
+ default: vue.withCtx(() => [
5080
+ vue.createElementVNode("div", {
5081
+ textContent: vue.toDisplayString(__props.message)
5082
+ }, null, 8, _hoisted_1$3)
5083
+ ]),
5084
+ _: 1
5085
+ }, 8, ["title"]);
5086
+ };
5087
+ }
5088
+ });
5089
+ const BSYesNoModal = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5090
+ __proto__: null,
5091
+ default: _sfc_main$3
5092
+ }, Symbol.toStringTag, { value: "Module" }));
4376
5093
  const _hoisted_1$2 = { class: "bs-notification-container" };
4377
5094
  const _hoisted_2$1 = { class: "top-notification inline-flex flex-col items-center gap-1" };
4378
5095
  const _hoisted_3$1 = ["textContent"];
@@ -4419,7 +5136,7 @@
4419
5136
  })
4420
5137
  ]),
4421
5138
  vue.createElementVNode("div", _hoisted_5, [
4422
- vue.unref(tooltipEntry) ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
5139
+ vue.unref(tooltipEntry) ? (vue.openBlock(), vue.createBlock(_sfc_main$s, {
4423
5140
  key: 0,
4424
5141
  ref_key: "tooltip",
4425
5142
  ref: tooltip,
@@ -4486,7 +5203,7 @@
4486
5203
  return (_ctx, _cache) => {
4487
5204
  const _component_router_link = vue.resolveComponent("router-link");
4488
5205
  const _component_BSContextMenu = vue.resolveComponent("BSContextMenu", true);
4489
- return vue.openBlock(), vue.createBlock(_sfc_main$o, {
5206
+ return vue.openBlock(), vue.createBlock(_sfc_main$t, {
4490
5207
  ref: "root",
4491
5208
  "base-element": __props.baseElement || { left: __props.left || 0, top: __props.top || 0 },
4492
5209
  "popup-direction": __props.direction,
@@ -4585,45 +5302,74 @@
4585
5302
  };
4586
5303
  }
4587
5304
  });
4588
- exports2.BSButton = _sfc_main$r;
4589
- exports2.BSCalendar = _sfc_main$j;
4590
- exports2.BSCalendarRange = _sfc_main$i;
4591
- exports2.BSCardLayout = _sfc_main$3;
4592
- exports2.BSCheckbox = _sfc_main$d;
4593
- exports2.BSCheckboxGroup = _sfc_main$c;
5305
+ class IllegalAccessError {
5306
+ }
5307
+ exports2.BSAlertModal = _sfc_main$4;
5308
+ exports2.BSButton = _sfc_main$w;
5309
+ exports2.BSCalendar = _sfc_main$o;
5310
+ exports2.BSCalendarRange = _sfc_main$n;
5311
+ exports2.BSCardLayout = _sfc_main$8;
5312
+ exports2.BSCheckbox = _sfc_main$i;
5313
+ exports2.BSCheckboxGroup = _sfc_main$h;
4594
5314
  exports2.BSContextMenu = _sfc_main$1;
4595
5315
  exports2.BSContextMenuContainer = _sfc_main;
4596
5316
  exports2.BSContextMenuPlugin = BSContextMenuPlugin;
4597
- exports2.BSDateInput = _sfc_main$7;
4598
- exports2.BSDateInputPopup = _sfc_main$8;
4599
- exports2.BSDateRange = _sfc_main$5;
4600
- exports2.BSDateRangeInputPopup = _sfc_main$6;
5317
+ exports2.BSDateInput = _sfc_main$c;
5318
+ exports2.BSDateInputPopup = _sfc_main$d;
5319
+ exports2.BSDateRange = _sfc_main$a;
5320
+ exports2.BSDateRangeInputPopup = _sfc_main$b;
4601
5321
  exports2.BSLoadingIcon = BSLoadingIcon;
4602
- exports2.BSMultiSelect = _sfc_main$9;
5322
+ exports2.BSModal = BSModal;
5323
+ exports2.BSModalContainer = _sfc_main$6;
5324
+ exports2.BSModalFrame = _sfc_main$5;
5325
+ exports2.BSMultiSelect = _sfc_main$e;
4603
5326
  exports2.BSNotificationContainer = _sfc_main$2;
4604
- exports2.BSNumberInput = _sfc_main$f;
4605
- exports2.BSPageNavigation = _sfc_main$q;
4606
- exports2.BSPopup = _sfc_main$o;
4607
- exports2.BSRadioButton = _sfc_main$b;
4608
- exports2.BSRadioButtonGroup = _sfc_main$a;
4609
- exports2.BSSelect = _sfc_main$k;
4610
- exports2.BSTextArea = _sfc_main$e;
4611
- exports2.BSTextInput = _sfc_main$g;
4612
- exports2.BSTooltip = _sfc_main$n;
5327
+ exports2.BSNumberInput = _sfc_main$k;
5328
+ exports2.BSPageNavigation = _sfc_main$v;
5329
+ exports2.BSPopup = _sfc_main$t;
5330
+ exports2.BSRadioButton = _sfc_main$g;
5331
+ exports2.BSRadioButtonGroup = _sfc_main$f;
5332
+ exports2.BSSelect = _sfc_main$p;
5333
+ exports2.BSTextArea = _sfc_main$j;
5334
+ exports2.BSTextInput = _sfc_main$l;
5335
+ exports2.BSTooltip = _sfc_main$s;
5336
+ exports2.BSYesNoModal = _sfc_main$3;
4613
5337
  exports2.BlueseaPlugin = BlueseaPlugin;
4614
5338
  exports2.ContextMenuPluginKey = ContextMenuPluginKey;
5339
+ exports2.IllegalAccessError = IllegalAccessError;
5340
+ exports2.NAMED_COLORS = NAMED_COLORS;
4615
5341
  exports2.SavePointImpl = SavePointImpl;
4616
5342
  exports2.alarmEntries = alarmEntries;
4617
5343
  exports2.cancelProvidedSavePoint = cancelProvidedSavePoint;
4618
5344
  exports2.closeAlarm = closeAlarm;
5345
+ exports2.componentUtil = componentUtil;
4619
5346
  exports2.createContextMenuPlugin = createContextMenuPlugin;
5347
+ exports2.createModalPlugin = createModalPlugin;
4620
5348
  exports2.debounce = debounce;
5349
+ exports2.defaultKeyProvider = defaultKeyProvider;
5350
+ exports2.defaultLabelProvider = defaultLabelProvider;
5351
+ exports2.emptyKeyProvider = emptyKeyProvider;
5352
+ exports2.emptyLabelProvider = emptyLabelProvider;
5353
+ exports2.executeKeyProviderOrDefault = executeKeyProviderOrDefault;
5354
+ exports2.executeLabelProviderOrDefault = executeLabelProviderOrDefault;
5355
+ exports2.findElement = findElement;
5356
+ exports2.findFirstFocusableElement = findFirstFocusableElement;
5357
+ exports2.findInputComponents = findInputComponents;
5358
+ exports2.findLastFocusableElement = findLastFocusableElement;
5359
+ exports2.focusFirstElement = focusFirstElement;
5360
+ exports2.focusLastElement = focusLastElement;
5361
+ exports2.formatUtil = formatUtil;
5362
+ exports2.getComponentRootElement = getComponentRootElement;
5363
+ exports2.getSelfIndex = getSelfIndex;
4621
5364
  exports2.hideLoading = hideLoading;
4622
5365
  exports2.hideTooltip = hideTooltip;
4623
5366
  exports2.isTooltipDisplayed = isTooltipDisplayed;
5367
+ exports2.modalHandleKey = modalHandleKey;
5368
+ exports2.modalPluginKey = modalPluginKey;
4624
5369
  exports2.notNull = notNull;
4625
5370
  exports2.notificationEntries = notificationEntries;
4626
5371
  exports2.provideFieldContext = provideFieldContext;
5372
+ exports2.provideModalHandle = provideModalHandle;
4627
5373
  exports2.provideSavePoint = provideSavePoint;
4628
5374
  exports2.showAlarm = showAlarm;
4629
5375
  exports2.showLoading = showLoading;
@@ -4632,11 +5378,15 @@
4632
5378
  exports2.showTooltip = showTooltip;
4633
5379
  exports2.tooltipEntry = tooltipEntry;
4634
5380
  exports2.tryUntil = tryUntil;
5381
+ exports2.useBlueseaConfig = useBlueseaConfig;
4635
5382
  exports2.useContextMenu = useContextMenu;
4636
5383
  exports2.useContextMenuOptional = useContextMenuOptional;
4637
5384
  exports2.useFieldContext = useFieldContext;
5385
+ exports2.useModal = useModal;
5386
+ exports2.useModalHandle = useModalHandle;
4638
5387
  exports2.useSavePoint = useSavePoint;
4639
5388
  exports2.vClickOutside = vClickOutside;
5389
+ exports2.vFocusLoop = VFocusLoop;
4640
5390
  exports2.vFocusOnLoad = vFocusOnLoad;
4641
5391
  exports2.vTooltip = vTooltip;
4642
5392
  exports2.waitDuring = waitDuring;