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