@g1cloud/bluesea 5.0.0-alpha.5 → 5.0.0-alpha.6

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.
package/dist/bluesea.js CHANGED
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
6
6
  };
7
7
  import { defineComponent, openBlock, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, withDirectives, createElementVNode, unref, ref, watch, normalizeStyle, mergeProps, isRef, toHandlers, vModelDynamic, Fragment, renderList, vModelText, computed, createVNode, useSlots, renderSlot, createBlock, Transition, withCtx, onMounted, onBeforeUnmount, withModifiers, withKeys, createTextVNode, reactive, nextTick, vShow, inject, resolveComponent, markRaw, provide, resolveDynamicComponent, shallowReactive } from "vue";
8
8
  import dayjs from "dayjs";
9
- import { useRouter, useRoute } from "vue-router";
9
+ import { useRoute } from "vue-router";
10
10
  class BlueseaConfig {
11
11
  constructor() {
12
12
  __publicField(this, "locales", []);
@@ -120,8 +120,8 @@ const vT = {
120
120
  }
121
121
  }
122
122
  };
123
- const _hoisted_1$G = ["disabled"];
124
- const _hoisted_2$v = {
123
+ const _hoisted_1$H = ["disabled"];
124
+ const _hoisted_2$w = {
125
125
  key: 0,
126
126
  class: "font-icon"
127
127
  };
@@ -139,11 +139,11 @@ const _sfc_main$K = /* @__PURE__ */ defineComponent({
139
139
  class: normalizeClass([[_ctx.buttonColor], "bs-button inline-flex items-center justify-center"]),
140
140
  disabled: _ctx.disabled
141
141
  }, [
142
- _ctx.leftIcon ? (openBlock(), createElementBlock("span", _hoisted_2$v, toDisplayString(_ctx.leftIcon), 1)) : createCommentVNode("", true),
142
+ _ctx.leftIcon ? (openBlock(), createElementBlock("span", _hoisted_2$w, toDisplayString(_ctx.leftIcon), 1)) : createCommentVNode("", true),
143
143
  withDirectives(createElementVNode("span", null, null, 512), [
144
144
  [unref(vT), _ctx.caption]
145
145
  ])
146
- ], 10, _hoisted_1$G);
146
+ ], 10, _hoisted_1$H);
147
147
  };
148
148
  }
149
149
  });
@@ -229,8 +229,8 @@ const componentUtil = {
229
229
  }
230
230
  }
231
231
  };
232
- const _hoisted_1$F = { class: "input-area" };
233
- const _hoisted_2$u = ["id", "autocomplete", "disabled", "maxlength", "name", "placeholder", "tabindex", "type"];
232
+ const _hoisted_1$G = { class: "input-area" };
233
+ const _hoisted_2$v = ["id", "autocomplete", "disabled", "maxlength", "name", "placeholder", "tabindex", "type"];
234
234
  const _hoisted_3$j = { key: 0 };
235
235
  const _hoisted_4$c = ["textContent"];
236
236
  const _sfc_main$J = /* @__PURE__ */ defineComponent({
@@ -284,7 +284,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
284
284
  class: normalizeClass([{ required: _ctx.required }, "bs-text-input"]),
285
285
  style: normalizeStyle({ width: _ctx.width })
286
286
  }, [
287
- createElementVNode("div", _hoisted_1$F, [
287
+ createElementVNode("div", _hoisted_1$G, [
288
288
  withDirectives(createElementVNode("input", mergeProps({
289
289
  id: _ctx.id,
290
290
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(value) ? value.value = $event : null),
@@ -295,7 +295,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
295
295
  placeholder: _ctx.placeholder,
296
296
  tabindex: _ctx.tabindex,
297
297
  type: _ctx.inputType
298
- }, toHandlers(handlers, true)), null, 16, _hoisted_2$u), [
298
+ }, toHandlers(handlers, true)), null, 16, _hoisted_2$v), [
299
299
  [vModelDynamic, unref(value)]
300
300
  ])
301
301
  ]),
@@ -312,8 +312,8 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
312
312
  };
313
313
  }
314
314
  });
315
- const _hoisted_1$E = { class: "input-area" };
316
- const _hoisted_2$t = ["id", "autocomplete", "disabled", "maxlength", "name", "placeholder", "tabindex"];
315
+ const _hoisted_1$F = { class: "input-area" };
316
+ const _hoisted_2$u = ["id", "autocomplete", "disabled", "maxlength", "name", "placeholder", "tabindex"];
317
317
  const _hoisted_3$i = /* @__PURE__ */ createElementVNode("div", { class: "message-area" }, null, -1);
318
318
  const _sfc_main$I = /* @__PURE__ */ defineComponent({
319
319
  __name: "BSNumberInput",
@@ -342,7 +342,7 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
342
342
  style: normalizeStyle({ width: _ctx.width }),
343
343
  class: "bs-number-input"
344
344
  }, [
345
- createElementVNode("div", _hoisted_1$E, [
345
+ createElementVNode("div", _hoisted_1$F, [
346
346
  withDirectives(createElementVNode("input", mergeProps({
347
347
  id: _ctx.id,
348
348
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
@@ -354,7 +354,7 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
354
354
  tabindex: _ctx.tabindex,
355
355
  pattern: "\\d*",
356
356
  type: "text"
357
- }, toHandlers(handlers, true)), null, 16, _hoisted_2$t), [
357
+ }, toHandlers(handlers, true)), null, 16, _hoisted_2$u), [
358
358
  [vModelText, value.value]
359
359
  ])
360
360
  ]),
@@ -363,8 +363,8 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
363
363
  };
364
364
  }
365
365
  });
366
- const _hoisted_1$D = { class: "input-area" };
367
- const _hoisted_2$s = ["id", "name", "value"];
366
+ const _hoisted_1$E = { class: "input-area" };
367
+ const _hoisted_2$t = ["id", "name", "value"];
368
368
  const _hoisted_3$h = /* @__PURE__ */ createElementVNode("div", { class: "message-area" }, null, -1);
369
369
  const _sfc_main$H = /* @__PURE__ */ defineComponent({
370
370
  __name: "BSPriceInput",
@@ -402,7 +402,7 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
402
402
  style: normalizeStyle({ width: _ctx.width }),
403
403
  class: "bs-number-input"
404
404
  }, [
405
- createElementVNode("div", _hoisted_1$D, [
405
+ createElementVNode("div", _hoisted_1$E, [
406
406
  createElementVNode("input", {
407
407
  id: _ctx.id,
408
408
  name: _ctx.name,
@@ -410,14 +410,14 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
410
410
  pattern: "\\d*",
411
411
  type: "text",
412
412
  onChange: emitValue
413
- }, null, 40, _hoisted_2$s)
413
+ }, null, 40, _hoisted_2$t)
414
414
  ]),
415
415
  _hoisted_3$h
416
416
  ], 4);
417
417
  };
418
418
  }
419
419
  });
420
- const _hoisted_1$C = ["id", "disabled", "maxlength", "name", "placeholder", "tabindex", "value"];
420
+ const _hoisted_1$D = ["id", "disabled", "maxlength", "name", "placeholder", "tabindex", "value"];
421
421
  const _sfc_main$G = /* @__PURE__ */ defineComponent({
422
422
  __name: "InternalDateInput",
423
423
  props: {
@@ -484,12 +484,12 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
484
484
  onFocus: _cache[1] || (_cache[1] = ($event) => focused.value = true),
485
485
  "on:update:modelValue": _cache[2] || (_cache[2] = () => {
486
486
  })
487
- }, null, 40, _hoisted_1$C);
487
+ }, null, 40, _hoisted_1$D);
488
488
  };
489
489
  }
490
490
  });
491
- const _hoisted_1$B = { class: "bs-date-input" };
492
- const _hoisted_2$r = { class: "input-area" };
491
+ const _hoisted_1$C = { class: "bs-date-input" };
492
+ const _hoisted_2$s = { class: "input-area" };
493
493
  const _hoisted_3$g = /* @__PURE__ */ createElementVNode("span", { class: "icon" }, "calendar_month", -1);
494
494
  const _sfc_main$F = /* @__PURE__ */ defineComponent({
495
495
  __name: "BSDateInput",
@@ -519,8 +519,8 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
519
519
  { immediate: true }
520
520
  );
521
521
  return (_ctx, _cache) => {
522
- return openBlock(), createElementBlock("div", _hoisted_1$B, [
523
- createElementVNode("div", _hoisted_2$r, [
522
+ return openBlock(), createElementBlock("div", _hoisted_1$C, [
523
+ createElementVNode("div", _hoisted_2$s, [
524
524
  _hoisted_3$g,
525
525
  createVNode(_sfc_main$G, {
526
526
  id: _ctx.id,
@@ -542,8 +542,8 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
542
542
  };
543
543
  }
544
544
  });
545
- const _hoisted_1$A = ["id", "checked", "disabled", "name", "tabindex"];
546
- const _hoisted_2$q = ["for"];
545
+ const _hoisted_1$B = ["id", "checked", "disabled", "name", "tabindex"];
546
+ const _hoisted_2$r = ["for"];
547
547
  const _hoisted_3$f = ["for"];
548
548
  const _sfc_main$E = /* @__PURE__ */ defineComponent({
549
549
  __name: "BSCheckbox",
@@ -584,12 +584,12 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
584
584
  tabindex: _ctx.tabindex,
585
585
  class: "",
586
586
  type: "checkbox"
587
- }, toHandlers(handlers, true)), null, 16, _hoisted_1$A),
587
+ }, toHandlers(handlers, true)), null, 16, _hoisted_1$B),
588
588
  _ctx.label ? (openBlock(), createElementBlock("label", {
589
589
  key: 0,
590
590
  for: _ctx.id,
591
591
  class: "text-label"
592
- }, toDisplayString(_ctx.label), 9, _hoisted_2$q)) : createCommentVNode("", true),
592
+ }, toDisplayString(_ctx.label), 9, _hoisted_2$r)) : createCommentVNode("", true),
593
593
  hasLabelSlot.value ? (openBlock(), createElementBlock("label", {
594
594
  key: 1,
595
595
  for: _ctx.id,
@@ -601,7 +601,7 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
601
601
  };
602
602
  }
603
603
  });
604
- const _hoisted_1$z = { class: "bs-checkbox-group" };
604
+ const _hoisted_1$A = { class: "bs-checkbox-group" };
605
605
  const _sfc_main$D = /* @__PURE__ */ defineComponent({
606
606
  __name: "BSCheckboxGroup",
607
607
  props: {
@@ -638,7 +638,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
638
638
  }
639
639
  };
640
640
  return (_ctx, _cache) => {
641
- return openBlock(), createElementBlock("div", _hoisted_1$z, [
641
+ return openBlock(), createElementBlock("div", _hoisted_1$A, [
642
642
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.items, (item) => {
643
643
  return openBlock(), createBlock(_sfc_main$E, {
644
644
  key: String(item),
@@ -652,8 +652,8 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
652
652
  };
653
653
  }
654
654
  });
655
- const _hoisted_1$y = ["id", "checked", "disabled", "name", "tabindex"];
656
- const _hoisted_2$p = ["for"];
655
+ const _hoisted_1$z = ["id", "checked", "disabled", "name", "tabindex"];
656
+ const _hoisted_2$q = ["for"];
657
657
  const _hoisted_3$e = ["for"];
658
658
  const _sfc_main$C = /* @__PURE__ */ defineComponent({
659
659
  __name: "BSRadioButton",
@@ -695,12 +695,12 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
695
695
  tabindex: _ctx.tabindex,
696
696
  class: "",
697
697
  type: "radio"
698
- }, toHandlers(handlers, true)), null, 16, _hoisted_1$y),
698
+ }, toHandlers(handlers, true)), null, 16, _hoisted_1$z),
699
699
  _ctx.label ? (openBlock(), createElementBlock("label", {
700
700
  key: 0,
701
701
  for: _ctx.id,
702
702
  class: "text-label"
703
- }, toDisplayString(_ctx.label), 9, _hoisted_2$p)) : createCommentVNode("", true),
703
+ }, toDisplayString(_ctx.label), 9, _hoisted_2$q)) : createCommentVNode("", true),
704
704
  hasLabelSlot.value ? (openBlock(), createElementBlock("label", {
705
705
  key: 1,
706
706
  for: _ctx.id,
@@ -712,7 +712,7 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
712
712
  };
713
713
  }
714
714
  });
715
- const _hoisted_1$x = { class: "bs-radio-button-group" };
715
+ const _hoisted_1$y = { class: "bs-radio-button-group" };
716
716
  const _sfc_main$B = /* @__PURE__ */ defineComponent({
717
717
  __name: "BSRadioButtonGroup",
718
718
  props: {
@@ -736,7 +736,7 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
736
736
  emit("update:modelValue", value);
737
737
  };
738
738
  return (_ctx, _cache) => {
739
- return openBlock(), createElementBlock("div", _hoisted_1$x, [
739
+ return openBlock(), createElementBlock("div", _hoisted_1$y, [
740
740
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.items, (item) => {
741
741
  return openBlock(), createBlock(_sfc_main$C, {
742
742
  key: String(itemValue(item)),
@@ -752,11 +752,11 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
752
752
  }
753
753
  });
754
754
  const _sfc_main$A = {};
755
- const _hoisted_1$w = { class: "bs-popup" };
755
+ const _hoisted_1$x = { class: "bs-popup" };
756
756
  function _sfc_render(_ctx, _cache) {
757
757
  return openBlock(), createBlock(Transition, null, {
758
758
  default: withCtx(() => [
759
- createElementVNode("div", _hoisted_1$w, [
759
+ createElementVNode("div", _hoisted_1$x, [
760
760
  renderSlot(_ctx.$slots, "default")
761
761
  ])
762
762
  ]),
@@ -764,8 +764,8 @@ function _sfc_render(_ctx, _cache) {
764
764
  });
765
765
  }
766
766
  const BSPopup = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render]]);
767
- const _hoisted_1$v = ["onMouseover", "onClick"];
768
- const _hoisted_2$o = /* @__PURE__ */ createElementVNode("span", { class: "checkbox" }, null, -1);
767
+ const _hoisted_1$w = ["onMouseover", "onClick"];
768
+ const _hoisted_2$p = /* @__PURE__ */ createElementVNode("span", { class: "checkbox" }, null, -1);
769
769
  const _hoisted_3$d = { class: "label" };
770
770
  const _hoisted_4$b = {
771
771
  key: 0,
@@ -844,10 +844,10 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
844
844
  onMouseover: ($event) => setHoveredPopupItem(item),
845
845
  onClick: withModifiers(($event) => selectPopupItem(item), ["stop"])
846
846
  }, [
847
- _hoisted_2$o,
847
+ _hoisted_2$p,
848
848
  createElementVNode("span", _hoisted_3$d, toDisplayString(_ctx.itemLabel(item)), 1),
849
849
  _ctx.tree && hasSubItems(item) ? (openBlock(), createElementBlock("span", _hoisted_4$b)) : createCommentVNode("", true)
850
- ], 42, _hoisted_1$v);
850
+ ], 42, _hoisted_1$w);
851
851
  }), 128))
852
852
  ]),
853
853
  _: 1
@@ -855,8 +855,8 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
855
855
  };
856
856
  }
857
857
  });
858
- const _hoisted_1$u = ["tabindex", "onKeydown"];
859
- const _hoisted_2$n = { class: "selected" };
858
+ const _hoisted_1$v = ["tabindex", "onKeydown"];
859
+ const _hoisted_2$o = { class: "selected" };
860
860
  const _hoisted_3$c = ["textContent"];
861
861
  const _hoisted_4$a = /* @__PURE__ */ createElementVNode("span", { class: "dropdown-btn" }, "expand_more", -1);
862
862
  const _hoisted_5$8 = {
@@ -920,7 +920,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
920
920
  _cache[3] || (_cache[3] = withKeys(withModifiers(($event) => togglePopup(false), ["stop", "prevent"]), ["esc"]))
921
921
  ]
922
922
  }, [
923
- createElementVNode("div", _hoisted_2$n, [
923
+ createElementVNode("div", _hoisted_2$o, [
924
924
  createElementVNode("span", {
925
925
  class: "label",
926
926
  textContent: toDisplayString(selectedItemLabel.value)
@@ -937,15 +937,15 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
937
937
  onItemSelected: itemSelected
938
938
  }, null, 8, ["initial-item", "items", "selected-items"])) : createCommentVNode("", true),
939
939
  messages.value ? (openBlock(), createElementBlock("div", _hoisted_5$8)) : createCommentVNode("", true)
940
- ], 42, _hoisted_1$u);
940
+ ], 42, _hoisted_1$v);
941
941
  };
942
942
  }
943
943
  });
944
944
  function notNull(value) {
945
945
  return value !== null && value !== void 0;
946
946
  }
947
- const _hoisted_1$t = ["tabindex", "onKeydown"];
948
- const _hoisted_2$m = { class: "selected" };
947
+ const _hoisted_1$u = ["tabindex", "onKeydown"];
948
+ const _hoisted_2$n = { class: "selected" };
949
949
  const _hoisted_3$b = ["textContent"];
950
950
  const _hoisted_4$9 = /* @__PURE__ */ createElementVNode("span", { class: "dropdown-btn" }, "expand_more", -1);
951
951
  const _hoisted_5$7 = {
@@ -1016,7 +1016,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
1016
1016
  _cache[3] || (_cache[3] = withKeys(withModifiers(($event) => togglePopup(false), ["stop", "prevent"]), ["esc"]))
1017
1017
  ]
1018
1018
  }, [
1019
- createElementVNode("div", _hoisted_2$m, [
1019
+ createElementVNode("div", _hoisted_2$n, [
1020
1020
  createElementVNode("span", {
1021
1021
  class: "label",
1022
1022
  textContent: toDisplayString(selectedItemsLabel.value)
@@ -1032,12 +1032,12 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
1032
1032
  onItemSelected: itemSelected
1033
1033
  }, null, 8, ["items", "selected-items"])) : createCommentVNode("", true),
1034
1034
  messages.value ? (openBlock(), createElementBlock("div", _hoisted_5$7)) : createCommentVNode("", true)
1035
- ], 42, _hoisted_1$t);
1035
+ ], 42, _hoisted_1$u);
1036
1036
  };
1037
1037
  }
1038
1038
  });
1039
- const _hoisted_1$s = ["tabindex", "onKeydown"];
1040
- const _hoisted_2$l = { class: "selected" };
1039
+ const _hoisted_1$t = ["tabindex", "onKeydown"];
1040
+ const _hoisted_2$m = { class: "selected" };
1041
1041
  const _hoisted_3$a = ["textContent"];
1042
1042
  const _hoisted_4$8 = /* @__PURE__ */ createElementVNode("span", { class: "dropdown-btn" }, "expand_more", -1);
1043
1043
  const _hoisted_5$6 = {
@@ -1100,7 +1100,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
1100
1100
  _cache[3] || (_cache[3] = withKeys(withModifiers(($event) => togglePopup(false), ["stop", "prevent"]), ["esc"]))
1101
1101
  ]
1102
1102
  }, [
1103
- createElementVNode("div", _hoisted_2$l, [
1103
+ createElementVNode("div", _hoisted_2$m, [
1104
1104
  createElementVNode("span", {
1105
1105
  class: "label",
1106
1106
  textContent: toDisplayString(selectedItemLabel.value)
@@ -1117,12 +1117,12 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
1117
1117
  onItemSelected: itemSelected
1118
1118
  }, null, 8, ["initial-item", "items"])) : createCommentVNode("", true),
1119
1119
  messages.value ? (openBlock(), createElementBlock("div", _hoisted_5$6)) : createCommentVNode("", true)
1120
- ], 42, _hoisted_1$s);
1120
+ ], 42, _hoisted_1$t);
1121
1121
  };
1122
1122
  }
1123
1123
  });
1124
- const _hoisted_1$r = { class: "input-area" };
1125
- const _hoisted_2$k = ["tabindex"];
1124
+ const _hoisted_1$s = { class: "input-area" };
1125
+ const _hoisted_2$l = ["tabindex"];
1126
1126
  const _sfc_main$v = /* @__PURE__ */ defineComponent({
1127
1127
  __name: "BSTextArea",
1128
1128
  props: {
@@ -1154,13 +1154,13 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
1154
1154
  style: normalizeStyle({ width: outerWidth.value, height: outerHeight.value }),
1155
1155
  class: "bs-text-area"
1156
1156
  }, [
1157
- createElementVNode("div", _hoisted_1$r, [
1157
+ createElementVNode("div", _hoisted_1$s, [
1158
1158
  withDirectives(createElementVNode("textarea", {
1159
1159
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
1160
1160
  style: normalizeStyle({ width: innerWidth.value, height: innerHeight.value }),
1161
1161
  tabindex: _ctx.tabindex,
1162
1162
  onChange: emitValue
1163
- }, null, 44, _hoisted_2$k), [
1163
+ }, null, 44, _hoisted_2$l), [
1164
1164
  [vModelText, value.value]
1165
1165
  ])
1166
1166
  ])
@@ -1300,10 +1300,12 @@ const formatUtil = {
1300
1300
  * @return
1301
1301
  */
1302
1302
  formatNumber(value) {
1303
- const regexp = /\B(?=(\d{3})+(?!\d))/g;
1304
1303
  if (value || typeof value === "number") {
1304
+ const regexp = /\B(?=(\d{3})+(?!\d))/g;
1305
1305
  const splitValue = value.toString().split(".");
1306
- return splitValue[0].replace(regexp, ",").concat(".", splitValue[1]);
1306
+ const integerPart = splitValue[0].replace(regexp, ",");
1307
+ const decimalPart = splitValue[1] ? `.${splitValue[1]}` : "";
1308
+ return integerPart + decimalPart;
1307
1309
  }
1308
1310
  return null;
1309
1311
  },
@@ -1432,7 +1434,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
1432
1434
  };
1433
1435
  }
1434
1436
  });
1435
- const _hoisted_1$q = { class: "font-icon" };
1437
+ const _hoisted_1$r = { class: "font-icon" };
1436
1438
  const _sfc_main$s = /* @__PURE__ */ defineComponent({
1437
1439
  __name: "BSGridCheckboxCell",
1438
1440
  props: {
@@ -1446,12 +1448,12 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
1446
1448
  class: normalizeClass([{ checked: _ctx.checked }, "fixed func-cell checkbox bs-clickable"]),
1447
1449
  onClick: _cache[0] || (_cache[0] = ($event) => emit("click"))
1448
1450
  }, [
1449
- createElementVNode("div", _hoisted_1$q, toDisplayString(_ctx.checked ? "check" : ""), 1)
1451
+ createElementVNode("div", _hoisted_1$r, toDisplayString(_ctx.checked ? "check" : ""), 1)
1450
1452
  ], 2);
1451
1453
  };
1452
1454
  }
1453
1455
  });
1454
- const _hoisted_1$p = { class: "font-icon" };
1456
+ const _hoisted_1$q = { class: "font-icon" };
1455
1457
  const _sfc_main$r = /* @__PURE__ */ defineComponent({
1456
1458
  __name: "BSGridCheckboxHeaderCell",
1457
1459
  props: {
@@ -1467,13 +1469,13 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
1467
1469
  class: normalizeClass([{ checked: checked.value }, "fixed func-cell checkbox bs-clickable"]),
1468
1470
  onClick: _cache[0] || (_cache[0] = ($event) => emit("click"))
1469
1471
  }, [
1470
- createElementVNode("div", _hoisted_1$p, toDisplayString(checked.value ? "check" : "check_box_outline_blank"), 1)
1472
+ createElementVNode("div", _hoisted_1$q, toDisplayString(checked.value ? "check" : "check_box_outline_blank"), 1)
1471
1473
  ], 2);
1472
1474
  };
1473
1475
  }
1474
1476
  });
1475
- const _hoisted_1$o = { class: "page-navigation" };
1476
- const _hoisted_2$j = ["data-page", "onClick"];
1477
+ const _hoisted_1$p = { class: "page-navigation" };
1478
+ const _hoisted_2$k = ["data-page", "onClick"];
1477
1479
  const _sfc_main$q = /* @__PURE__ */ defineComponent({
1478
1480
  __name: "BSGridPageNavigation",
1479
1481
  props: {
@@ -1538,7 +1540,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
1538
1540
  }
1539
1541
  };
1540
1542
  return (_ctx, _cache) => {
1541
- return openBlock(), createElementBlock("div", _hoisted_1$o, [
1543
+ return openBlock(), createElementBlock("div", _hoisted_1$p, [
1542
1544
  createElementVNode("span", {
1543
1545
  class: normalizeClass([{ "disabled": isFirstSet.value }, "font-icon first"]),
1544
1546
  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => !isFirstSet.value ? goToPage(1) : void 0, ["prevent"]))
@@ -1553,7 +1555,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
1553
1555
  class: normalizeClass([{ on: page === currentPage.value }, "page"]),
1554
1556
  "data-page": page,
1555
1557
  onClick: withModifiers(($event) => goToPage(page), ["prevent"])
1556
- }, toDisplayString(page), 11, _hoisted_2$j);
1558
+ }, toDisplayString(page), 11, _hoisted_2$k);
1557
1559
  }), 128)),
1558
1560
  createElementVNode("span", {
1559
1561
  class: normalizeClass([{ "disabled": !isLastSet.value }, "font-icon next"]),
@@ -1567,8 +1569,8 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
1567
1569
  };
1568
1570
  }
1569
1571
  });
1570
- const _hoisted_1$n = { class: "table-wrap" };
1571
- const _hoisted_2$i = { class: "header-row" };
1572
+ const _hoisted_1$o = { class: "table-wrap" };
1573
+ const _hoisted_2$j = { class: "header-row" };
1572
1574
  const _hoisted_3$9 = {
1573
1575
  key: 1,
1574
1576
  class: "fixed func-cell serial-no"
@@ -1632,13 +1634,13 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
1632
1634
  style: normalizeStyle({ width: _ctx.width, height: _ctx.height }),
1633
1635
  class: "bs-grid"
1634
1636
  }, [
1635
- createElementVNode("div", _hoisted_1$n, [
1637
+ createElementVNode("div", _hoisted_1$o, [
1636
1638
  createElementVNode("table", {
1637
1639
  ref_key: "table",
1638
1640
  ref: table
1639
1641
  }, [
1640
1642
  createElementVNode("thead", null, [
1641
- createElementVNode("tr", _hoisted_2$i, [
1643
+ createElementVNode("tr", _hoisted_2$j, [
1642
1644
  _ctx.showCheckbox ? (openBlock(), createBlock(_sfc_main$r, {
1643
1645
  key: 0,
1644
1646
  "selected-row-count": selectedRows.size,
@@ -1800,8 +1802,8 @@ const likeFilter = (names, value, prefix, suffix, ignoreCase) => {
1800
1802
  const betweenDateFilter = (names, fromValue, toValue) => {
1801
1803
  return new BetweenDateFilter(names, fromValue, toValue);
1802
1804
  };
1803
- const _hoisted_1$m = { class: "bs-text-filter" };
1804
- const _hoisted_2$h = { class: "input-wrap" };
1805
+ const _hoisted_1$n = { class: "bs-text-filter" };
1806
+ const _hoisted_2$i = { class: "input-wrap" };
1805
1807
  const _hoisted_3$8 = ["onKeyup"];
1806
1808
  const _hoisted_4$6 = { class: "input-wrap" };
1807
1809
  const _hoisted_5$4 = /* @__PURE__ */ createElementVNode("textarea", { cols: "3" }, null, -1);
@@ -1864,7 +1866,7 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
1864
1866
  }
1865
1867
  };
1866
1868
  return (_ctx, _cache) => {
1867
- return openBlock(), createElementBlock("div", _hoisted_1$m, [
1869
+ return openBlock(), createElementBlock("div", _hoisted_1$n, [
1868
1870
  withDirectives((openBlock(), createElementBlock("span", {
1869
1871
  class: "font-icon mr-8 bs-clickable",
1870
1872
  onClick: toggleFilterItemPopup
@@ -1873,7 +1875,7 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
1873
1875
  ])), [
1874
1876
  [unref(vClickOutside), hideFilterItemPopup]
1875
1877
  ]),
1876
- withDirectives(createElementVNode("span", _hoisted_2$h, [
1878
+ withDirectives(createElementVNode("span", _hoisted_2$i, [
1877
1879
  withDirectives(createElementVNode("input", {
1878
1880
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => inputText.value = $event),
1879
1881
  type: "text",
@@ -1905,8 +1907,8 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
1905
1907
  };
1906
1908
  }
1907
1909
  });
1908
- const _hoisted_1$l = { class: "bs-date-range-filter" };
1909
- const _hoisted_2$g = { class: "input-area" };
1910
+ const _hoisted_1$m = { class: "bs-date-range-filter" };
1911
+ const _hoisted_2$h = { class: "input-area" };
1910
1912
  const _hoisted_3$7 = /* @__PURE__ */ createElementVNode("span", { class: "font-icon" }, "calendar_month", -1);
1911
1913
  const _hoisted_4$5 = /* @__PURE__ */ createElementVNode("span", { class: "px-4" }, "~", -1);
1912
1914
  const _sfc_main$n = /* @__PURE__ */ defineComponent({
@@ -1946,8 +1948,8 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
1946
1948
  emit("update:modelValue", value);
1947
1949
  };
1948
1950
  return (_ctx, _cache) => {
1949
- return openBlock(), createElementBlock("div", _hoisted_1$l, [
1950
- createElementVNode("div", _hoisted_2$g, [
1951
+ return openBlock(), createElementBlock("div", _hoisted_1$m, [
1952
+ createElementVNode("div", _hoisted_2$h, [
1951
1953
  _hoisted_3$7,
1952
1954
  createVNode(_sfc_main$G, {
1953
1955
  id: _ctx.fromId,
@@ -1980,11 +1982,11 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
1980
1982
  };
1981
1983
  }
1982
1984
  });
1983
- const _hoisted_1$k = {
1985
+ const _hoisted_1$l = {
1984
1986
  key: 0,
1985
1987
  class: "date-filters .bs-layout-vertical mr-32"
1986
1988
  };
1987
- const _hoisted_2$f = ["onClick"];
1989
+ const _hoisted_2$g = ["onClick"];
1988
1990
  const _sfc_main$m = /* @__PURE__ */ defineComponent({
1989
1991
  __name: "BSDateRangeFilters",
1990
1992
  props: {
@@ -2046,7 +2048,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
2046
2048
  }
2047
2049
  };
2048
2050
  return (_ctx, _cache) => {
2049
- return _ctx.dateFilter.filterItems ? (openBlock(), createElementBlock("div", _hoisted_1$k, [
2051
+ return _ctx.dateFilter.filterItems ? (openBlock(), createElementBlock("div", _hoisted_1$l, [
2050
2052
  (openBlock(true), createElementBlock(Fragment, null, renderList(dateFilterValues, (item, index) => {
2051
2053
  return openBlock(), createElementBlock("div", {
2052
2054
  key: index,
@@ -2060,7 +2062,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
2060
2062
  key: 1,
2061
2063
  class: "font-icon bs-clickable mr-4",
2062
2064
  onClick: ($event) => removeDateFilter(index)
2063
- }, "do_not_disturb_on", 8, _hoisted_2$f)),
2065
+ }, "do_not_disturb_on", 8, _hoisted_2$g)),
2064
2066
  createVNode(_sfc_main$y, {
2065
2067
  items: _ctx.dateFilter.filterItems,
2066
2068
  "label-provider": (filter) => filter.caption,
@@ -2081,7 +2083,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
2081
2083
  };
2082
2084
  }
2083
2085
  });
2084
- const _hoisted_1$j = { class: "bs-grid-lookup bs-layout-horizontal flex-align-start" };
2086
+ const _hoisted_1$k = { class: "bs-grid-lookup bs-layout-horizontal flex-align-start" };
2085
2087
  const _sfc_main$l = /* @__PURE__ */ defineComponent({
2086
2088
  __name: "BSGridLookup",
2087
2089
  props: {
@@ -2104,7 +2106,7 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
2104
2106
  };
2105
2107
  return (_ctx, _cache) => {
2106
2108
  var _a, _b;
2107
- return openBlock(), createElementBlock("div", _hoisted_1$j, [
2109
+ return openBlock(), createElementBlock("div", _hoisted_1$k, [
2108
2110
  ((_a = _ctx.config) == null ? void 0 : _a.textFilter) ? (openBlock(), createBlock(_sfc_main$o, {
2109
2111
  key: 0,
2110
2112
  modelValue: textFilterValue.value,
@@ -2131,8 +2133,8 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
2131
2133
  };
2132
2134
  }
2133
2135
  });
2134
- const _hoisted_1$i = { class: "bs-grid-control" };
2135
- const _hoisted_2$e = {
2136
+ const _hoisted_1$j = { class: "bs-grid-control" };
2137
+ const _hoisted_2$f = {
2136
2138
  key: 0,
2137
2139
  class: "bs-clickable"
2138
2140
  };
@@ -2169,8 +2171,8 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
2169
2171
  emit("update:limit", Math.max(1, limit || 0));
2170
2172
  };
2171
2173
  return (_ctx, _cache) => {
2172
- return openBlock(), createElementBlock("div", _hoisted_1$i, [
2173
- _ctx.showSetting ? (openBlock(), createElementBlock("div", _hoisted_2$e, " 칼럼설정 ")) : createCommentVNode("", true),
2174
+ return openBlock(), createElementBlock("div", _hoisted_1$j, [
2175
+ _ctx.showSetting ? (openBlock(), createElementBlock("div", _hoisted_2$f, " 칼럼설정 ")) : createCommentVNode("", true),
2174
2176
  _ctx.showClearFilter ? (openBlock(), createElementBlock("div", _hoisted_3$6, " 필터초기화 ")) : createCommentVNode("", true),
2175
2177
  _ctx.showFilter ? (openBlock(), createElementBlock("div", _hoisted_4$4, " 필터 ")) : createCommentVNode("", true),
2176
2178
  _ctx.showAdd ? (openBlock(), createElementBlock("div", {
@@ -2202,8 +2204,8 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
2202
2204
  };
2203
2205
  }
2204
2206
  });
2205
- const _hoisted_1$h = { class: "bs-tab-sheet bs-layout-vertical" };
2206
- const _hoisted_2$d = { class: "tab-bar bs-layout-horizontal" };
2207
+ const _hoisted_1$i = { class: "bs-tab-sheet bs-layout-vertical" };
2208
+ const _hoisted_2$e = { class: "tab-bar bs-layout-horizontal" };
2207
2209
  const _hoisted_3$5 = { class: "tabs flex-grow-1 flex-shrink-1" };
2208
2210
  const _hoisted_4$3 = ["onClick"];
2209
2211
  const _hoisted_5$2 = { class: "buttons text-nowrap" };
@@ -2220,8 +2222,8 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
2220
2222
  selectTab(props.tabs[0]);
2221
2223
  });
2222
2224
  return (_ctx, _cache) => {
2223
- return openBlock(), createElementBlock("div", _hoisted_1$h, [
2224
- createElementVNode("div", _hoisted_2$d, [
2225
+ return openBlock(), createElementBlock("div", _hoisted_1$i, [
2226
+ createElementVNode("div", _hoisted_2$e, [
2225
2227
  createElementVNode("div", _hoisted_3$5, [
2226
2228
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.tabs, (tab) => {
2227
2229
  var _a;
@@ -2241,8 +2243,8 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
2241
2243
  };
2242
2244
  }
2243
2245
  });
2244
- const _hoisted_1$g = { class: "bs-list-layout-item" };
2245
- const _hoisted_2$c = { class: "list-item-title bs-layout-horizontal flex-align-center" };
2246
+ const _hoisted_1$h = { class: "bs-list-layout-item" };
2247
+ const _hoisted_2$d = { class: "list-item-title bs-layout-horizontal flex-align-center" };
2246
2248
  const _hoisted_3$4 = /* @__PURE__ */ createElementVNode("div", { class: "title-text flex-grow-1" }, "Title", -1);
2247
2249
  const _hoisted_4$2 = {
2248
2250
  key: 0,
@@ -2264,8 +2266,8 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
2264
2266
  emit("update:expanded", !actualExpanded.value);
2265
2267
  };
2266
2268
  return (_ctx, _cache) => {
2267
- return openBlock(), createElementBlock("div", _hoisted_1$g, [
2268
- createElementVNode("div", _hoisted_2$c, [
2269
+ return openBlock(), createElementBlock("div", _hoisted_1$h, [
2270
+ createElementVNode("div", _hoisted_2$d, [
2269
2271
  createVNode(_sfc_main$E, { class: "mr-4" }),
2270
2272
  _hoisted_3$4,
2271
2273
  createElementVNode("span", {
@@ -2282,8 +2284,8 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
2282
2284
  };
2283
2285
  }
2284
2286
  });
2285
- const _hoisted_1$f = { class: "bs-list-layout" };
2286
- const _hoisted_2$b = /* @__PURE__ */ createElementVNode("div", { class: "toolbar" }, null, -1);
2287
+ const _hoisted_1$g = { class: "bs-list-layout" };
2288
+ const _hoisted_2$c = /* @__PURE__ */ createElementVNode("div", { class: "toolbar" }, null, -1);
2287
2289
  const _hoisted_3$3 = { class: "list-item bs-layout-vertical gap-4" };
2288
2290
  const _sfc_main$h = /* @__PURE__ */ defineComponent({
2289
2291
  __name: "BSListLayout",
@@ -2302,8 +2304,8 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
2302
2304
  emit("update:expanded", props.expanded);
2303
2305
  };
2304
2306
  return (_ctx, _cache) => {
2305
- return openBlock(), createElementBlock("div", _hoisted_1$f, [
2306
- _hoisted_2$b,
2307
+ return openBlock(), createElementBlock("div", _hoisted_1$g, [
2308
+ _hoisted_2$c,
2307
2309
  createElementVNode("div", _hoisted_3$3, [
2308
2310
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.data, (item, index) => {
2309
2311
  return openBlock(), createBlock(_sfc_main$i, {
@@ -2336,8 +2338,8 @@ class TreeRowStatuses {
2336
2338
  }
2337
2339
  }
2338
2340
  const defaultCaptionProvider = (item) => (item == null ? void 0 : item.toString()) || "";
2339
- const _hoisted_1$e = { class: "bs-tree-row" };
2340
- const _hoisted_2$a = { class: "row-caption" };
2341
+ const _hoisted_1$f = { class: "bs-tree-row" };
2342
+ const _hoisted_2$b = { class: "row-caption" };
2341
2343
  const _hoisted_3$2 = ["onClick"];
2342
2344
  const _hoisted_4$1 = ["textContent", "onClick", "onMousedown", "onDblclick"];
2343
2345
  const _hoisted_5$1 = {
@@ -2367,8 +2369,8 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
2367
2369
  const rowIcon = computed(() => children.value && children.value.length > 0 ? isOpen.value ? "arrow_drop_down" : "arrow_right" : "");
2368
2370
  return (_ctx, _cache) => {
2369
2371
  const _component_BSTreeRow = resolveComponent("BSTreeRow", true);
2370
- return openBlock(), createElementBlock("div", _hoisted_1$e, [
2371
- createElementVNode("div", _hoisted_2$a, [
2372
+ return openBlock(), createElementBlock("div", _hoisted_1$f, [
2373
+ createElementVNode("div", _hoisted_2$b, [
2372
2374
  createElementVNode("span", {
2373
2375
  class: "bs-clickable font-icon w-16 my-n2",
2374
2376
  onClick: withModifiers(toggleRow, ["stop"])
@@ -2437,7 +2439,7 @@ const useContextMenuOptional = () => {
2437
2439
  const createContextMenuPlugin = () => {
2438
2440
  return new BSContextMenuPlugin();
2439
2441
  };
2440
- const _hoisted_1$d = { class: "bs-tree" };
2442
+ const _hoisted_1$e = { class: "bs-tree" };
2441
2443
  const _sfc_main$f = /* @__PURE__ */ defineComponent({
2442
2444
  __name: "BSTree",
2443
2445
  props: {
@@ -2511,7 +2513,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
2511
2513
  }
2512
2514
  };
2513
2515
  return (_ctx, _cache) => {
2514
- return openBlock(), createElementBlock("div", _hoisted_1$d, [
2516
+ return openBlock(), createElementBlock("div", _hoisted_1$e, [
2515
2517
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.data, (row) => {
2516
2518
  return openBlock(), createBlock(_sfc_main$g, {
2517
2519
  key: row == null ? void 0 : row.toString(),
@@ -2527,8 +2529,8 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
2527
2529
  };
2528
2530
  }
2529
2531
  });
2530
- const _hoisted_1$c = { key: 0 };
2531
- const _hoisted_2$9 = ["textContent"];
2532
+ const _hoisted_1$d = { key: 0 };
2533
+ const _hoisted_2$a = ["textContent"];
2532
2534
  const _sfc_main$e = /* @__PURE__ */ defineComponent({
2533
2535
  __name: "BSMultiLangTextInput",
2534
2536
  props: {
@@ -2561,7 +2563,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
2561
2563
  }, [
2562
2564
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.locales, (locale) => {
2563
2565
  return openBlock(), createElementBlock(Fragment, { key: locale }, [
2564
- _ctx.expandLocale || locale === unref(blueseaConfig).defaultLocale ? (openBlock(), createElementBlock("div", _hoisted_1$c, [
2566
+ _ctx.expandLocale || locale === unref(blueseaConfig).defaultLocale ? (openBlock(), createElementBlock("div", _hoisted_1$d, [
2565
2567
  createVNode(_sfc_main$J, {
2566
2568
  id: _ctx.id ? `${_ctx.id}_${locale}` : void 0,
2567
2569
  autocomplete: _ctx.autocomplete,
@@ -2578,7 +2580,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
2578
2580
  key: 0,
2579
2581
  class: "locale-tag",
2580
2582
  textContent: toDisplayString(locale)
2581
- }, null, 8, _hoisted_2$9)) : createCommentVNode("", true)
2583
+ }, null, 8, _hoisted_2$a)) : createCommentVNode("", true)
2582
2584
  ])) : createCommentVNode("", true)
2583
2585
  ], 64);
2584
2586
  }), 128))
@@ -2586,8 +2588,8 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
2586
2588
  };
2587
2589
  }
2588
2590
  });
2589
- const _hoisted_1$b = { key: 0 };
2590
- const _hoisted_2$8 = ["textContent"];
2591
+ const _hoisted_1$c = { key: 0 };
2592
+ const _hoisted_2$9 = ["textContent"];
2591
2593
  const _sfc_main$d = /* @__PURE__ */ defineComponent({
2592
2594
  __name: "BSMultiLangTextArea",
2593
2595
  props: {
@@ -2620,7 +2622,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2620
2622
  }, [
2621
2623
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.locales, (locale) => {
2622
2624
  return openBlock(), createElementBlock(Fragment, { key: locale }, [
2623
- _ctx.expandLocale || locale === unref(blueseaConfig).defaultLocale ? (openBlock(), createElementBlock("div", _hoisted_1$b, [
2625
+ _ctx.expandLocale || locale === unref(blueseaConfig).defaultLocale ? (openBlock(), createElementBlock("div", _hoisted_1$c, [
2624
2626
  createVNode(_sfc_main$v, {
2625
2627
  id: _ctx.id ? `${_ctx.id}_${locale}` : void 0,
2626
2628
  autocomplete: _ctx.autocomplete,
@@ -2636,7 +2638,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2636
2638
  key: 0,
2637
2639
  class: "locale-tag",
2638
2640
  textContent: toDisplayString(locale)
2639
- }, null, 8, _hoisted_2$8)) : createCommentVNode("", true)
2641
+ }, null, 8, _hoisted_2$9)) : createCommentVNode("", true)
2640
2642
  ])) : createCommentVNode("", true)
2641
2643
  ], 64);
2642
2644
  }), 128))
@@ -2644,6 +2646,83 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2644
2646
  };
2645
2647
  }
2646
2648
  });
2649
+ class PaginatedList {
2650
+ constructor() {
2651
+ __publicField(this, "data", []);
2652
+ __publicField(this, "totalCount", 0);
2653
+ __publicField(this, "offset", 0);
2654
+ __publicField(this, "limit", 0);
2655
+ }
2656
+ static of(data = [], totalCount = void 0, offset = 0, limit = void 0) {
2657
+ const paginatedList = new PaginatedList();
2658
+ paginatedList.data = data ? data.slice() : [];
2659
+ paginatedList.totalCount = Math.max(0, totalCount || paginatedList.data.length);
2660
+ paginatedList.offset = Math.max(0, offset);
2661
+ paginatedList.limit = Math.max(0, limit || paginatedList.data.length);
2662
+ return paginatedList;
2663
+ }
2664
+ /**
2665
+ * `AxiosResponse` 등의 http response 로부터 `PaginatedList` 를 생성한다.
2666
+ * @param response
2667
+ * @param converter
2668
+ */
2669
+ static fromAxiosResponse(response, converter) {
2670
+ return PaginatedList.fromAxiosHeader(response.headers, response.data, converter);
2671
+ }
2672
+ /**
2673
+ * Axios Header 와 response data 로부터 `PaginatedList` 를 생성한다.
2674
+ * @param headers
2675
+ * @param data
2676
+ * @param converter
2677
+ */
2678
+ static fromAxiosHeader(headers, data, converter) {
2679
+ const actualConverter = converter ? converter : (item) => item;
2680
+ const convertedData = data && data.length ? data.map((item) => actualConverter(item)) : [];
2681
+ return PaginatedList.of(
2682
+ convertedData,
2683
+ Number(headers["x-total-count"]) || void 0,
2684
+ Number(headers["x-offset"]) || 0,
2685
+ Number(headers["x-limit"] || void 0)
2686
+ );
2687
+ }
2688
+ /**
2689
+ * @return 로딩된 데이터가 비어있으면 true
2690
+ */
2691
+ isEmpty() {
2692
+ return this.data.length === 0;
2693
+ }
2694
+ }
2695
+ class SearchParam {
2696
+ constructor() {
2697
+ __publicField(this, "offset");
2698
+ __publicField(this, "limit");
2699
+ __publicField(this, "filter");
2700
+ __publicField(this, "sorts");
2701
+ }
2702
+ toQueryMap() {
2703
+ return {
2704
+ filter: this.serializeFilter(),
2705
+ sort: this.serializeSort(),
2706
+ offset: this.offset,
2707
+ limit: this.limit
2708
+ };
2709
+ }
2710
+ serializeFilter() {
2711
+ if (this.filter) {
2712
+ return "";
2713
+ }
2714
+ }
2715
+ serializeSort() {
2716
+ if (this.sorts) {
2717
+ return this.sorts.map((sort) => {
2718
+ const dir = sort.ascending ? "" : "-";
2719
+ const propertyId = encodeURIComponent(sort.propertyId);
2720
+ const nulls = sort.nullHandling || "";
2721
+ return `${dir}${propertyId} ${nulls}`;
2722
+ }).join(",");
2723
+ }
2724
+ }
2725
+ }
2647
2726
  const modalKey = Symbol();
2648
2727
  const modalHandleKey = Symbol();
2649
2728
  class ModalHandleImpl {
@@ -2707,7 +2786,7 @@ const useModalHandle = () => {
2707
2786
  const createModalPlugin = () => {
2708
2787
  return new BSModal();
2709
2788
  };
2710
- const _hoisted_1$a = { class: "modal-wrapper bs-layout-vertical flex-align-center flex-content-center" };
2789
+ const _hoisted_1$b = { class: "modal-wrapper bs-layout-vertical flex-align-center flex-content-center" };
2711
2790
  const _sfc_main$c = /* @__PURE__ */ defineComponent({
2712
2791
  __name: "BSModalWrapper",
2713
2792
  props: {
@@ -2718,7 +2797,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2718
2797
  provideModalHandle(props.modalItem.modalHandle);
2719
2798
  return (_ctx, _cache) => {
2720
2799
  var _a;
2721
- return openBlock(), createElementBlock("div", _hoisted_1$a, [
2800
+ return openBlock(), createElementBlock("div", _hoisted_1$b, [
2722
2801
  createElementVNode("div", {
2723
2802
  class: normalizeClass([(_a = _ctx.modalItem.style) == null ? void 0 : _a.styleClass, "modal-panel"]),
2724
2803
  style: normalizeStyle(_ctx.modalItem.style)
@@ -2729,8 +2808,8 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2729
2808
  };
2730
2809
  }
2731
2810
  });
2732
- const _hoisted_1$9 = { class: "bs-modal-container" };
2733
- const _hoisted_2$7 = {
2811
+ const _hoisted_1$a = { class: "bs-modal-container" };
2812
+ const _hoisted_2$8 = {
2734
2813
  key: 0,
2735
2814
  class: "modal-curtain"
2736
2815
  };
@@ -2747,8 +2826,8 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
2747
2826
  () => disableBodyScroll(modalExists.value)
2748
2827
  );
2749
2828
  return (_ctx, _cache) => {
2750
- return openBlock(), createElementBlock("div", _hoisted_1$9, [
2751
- modalExists.value ? (openBlock(), createElementBlock("div", _hoisted_2$7)) : createCommentVNode("", true),
2829
+ return openBlock(), createElementBlock("div", _hoisted_1$a, [
2830
+ modalExists.value ? (openBlock(), createElementBlock("div", _hoisted_2$8)) : createCommentVNode("", true),
2752
2831
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(modal).modalItems, (item) => {
2753
2832
  return openBlock(), createBlock(_sfc_main$c, {
2754
2833
  key: item.name,
@@ -2759,8 +2838,8 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
2759
2838
  };
2760
2839
  }
2761
2840
  });
2762
- const _hoisted_1$8 = { class: "bs-modal-frame bs-layout-vertical" };
2763
- const _hoisted_2$6 = {
2841
+ const _hoisted_1$9 = { class: "bs-modal-frame bs-layout-vertical" };
2842
+ const _hoisted_2$7 = {
2764
2843
  key: 0,
2765
2844
  class: "title-bar bs-layout-horizontal flex-align-center"
2766
2845
  };
@@ -2787,8 +2866,8 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
2787
2866
  modalHandle.close();
2788
2867
  };
2789
2868
  return (_ctx, _cache) => {
2790
- return openBlock(), createElementBlock("div", _hoisted_1$8, [
2791
- hasTitleBar.value ? (openBlock(), createElementBlock("div", _hoisted_2$6, [
2869
+ return openBlock(), createElementBlock("div", _hoisted_1$9, [
2870
+ hasTitleBar.value ? (openBlock(), createElementBlock("div", _hoisted_2$7, [
2792
2871
  createElementVNode("div", _hoisted_3$1, [
2793
2872
  renderSlot(_ctx.$slots, "title", {}, () => [
2794
2873
  createTextVNode(toDisplayString(_ctx.title), 1)
@@ -2813,11 +2892,11 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
2813
2892
  };
2814
2893
  }
2815
2894
  });
2816
- const _hoisted_1$7 = {
2895
+ const _hoisted_1$8 = {
2817
2896
  key: 0,
2818
2897
  class: "menu separator"
2819
2898
  };
2820
- const _hoisted_2$5 = ["onClick", "onMouseenter"];
2899
+ const _hoisted_2$6 = ["onClick", "onMouseenter"];
2821
2900
  const _sfc_main$9 = /* @__PURE__ */ defineComponent({
2822
2901
  __name: "BSContextMenu",
2823
2902
  props: {
@@ -2865,7 +2944,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
2865
2944
  default: withCtx(() => [
2866
2945
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.menuItems, (menu) => {
2867
2946
  return openBlock(), createElementBlock(Fragment, { key: menu }, [
2868
- menu.type === "separator" ? (openBlock(), createElementBlock("div", _hoisted_1$7)) : menu.type === "custom" && menu.component ? (openBlock(), createBlock(resolveDynamicComponent(menu.component), {
2947
+ menu.type === "separator" ? (openBlock(), createElementBlock("div", _hoisted_1$8)) : menu.type === "custom" && menu.component ? (openBlock(), createBlock(resolveDynamicComponent(menu.component), {
2869
2948
  key: 1,
2870
2949
  class: "menu custom"
2871
2950
  })) : withDirectives((openBlock(), createElementBlock("div", {
@@ -2873,7 +2952,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
2873
2952
  class: normalizeClass([{ "has-submenu": menu.children }, "menu"]),
2874
2953
  onClick: ($event) => handleMenuClick(menu),
2875
2954
  onMouseenter: ($event) => showSubmenu($event, menu)
2876
- }, null, 42, _hoisted_2$5)), [
2955
+ }, null, 42, _hoisted_2$6)), [
2877
2956
  [unref(vT), menu.caption]
2878
2957
  ])
2879
2958
  ], 64);
@@ -2890,8 +2969,8 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
2890
2969
  };
2891
2970
  }
2892
2971
  });
2893
- const _hoisted_1$6 = { class: "bs-context-menu-container" };
2894
- const _hoisted_2$4 = ["onClick", "onContextmenu"];
2972
+ const _hoisted_1$7 = { class: "bs-context-menu-container" };
2973
+ const _hoisted_2$5 = ["onClick", "onContextmenu"];
2895
2974
  const _sfc_main$8 = /* @__PURE__ */ defineComponent({
2896
2975
  __name: "BSContextMenuContainer",
2897
2976
  setup(__props) {
@@ -2902,14 +2981,14 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
2902
2981
  contextMenu.hideContextMenu();
2903
2982
  };
2904
2983
  return (_ctx, _cache) => {
2905
- return openBlock(), createElementBlock("div", _hoisted_1$6, [
2984
+ return openBlock(), createElementBlock("div", _hoisted_1$7, [
2906
2985
  menuItems.value ? (openBlock(), createElementBlock("div", {
2907
2986
  key: 0,
2908
2987
  class: "context-menu-curtain",
2909
2988
  tabindex: "0",
2910
2989
  onClick: withModifiers(hideContextMenu, ["prevent"]),
2911
2990
  onContextmenu: withModifiers(hideContextMenu, ["prevent"])
2912
- }, null, 40, _hoisted_2$4)) : createCommentVNode("", true),
2991
+ }, null, 40, _hoisted_2$5)) : createCommentVNode("", true),
2913
2992
  menuItems.value ? (openBlock(), createBlock(_sfc_main$9, {
2914
2993
  key: 1,
2915
2994
  left: position.value.x,
@@ -2924,7 +3003,7 @@ class DefaultFrameContext {
2924
3003
  constructor(config) {
2925
3004
  __publicField(this, "pageManager");
2926
3005
  this.config = config;
2927
- this.pageManager = new PageManager(config.menus, config.extraPages, config.firstPage);
3006
+ this.pageManager = new PageManager(this, config.menus, config.extraPages, config.firstPage);
2928
3007
  }
2929
3008
  getMenus() {
2930
3009
  return this.config.menus;
@@ -2935,24 +3014,26 @@ class DefaultFrameContext {
2935
3014
  this.pageManager.openPage(pagePath);
2936
3015
  }
2937
3016
  // pagePath 에 해당하는 화면 URL 로 이동한다.
2938
- async openPagePath(router, pagePath) {
3017
+ async openPagePath(pagePath) {
2939
3018
  const actualPath = pagePath.replace(/^\/+/, "");
2940
- await router.push({ path: `${this.config.framePrefix}/${actualPath}` });
3019
+ await this.config.router.push({ path: `${this.config.framePrefix}/${actualPath}` });
2941
3020
  }
2942
3021
  }
2943
- const createDefaultFrameContext = (config) => {
3022
+ const createDefaultFrameContext = (router, config) => {
2944
3023
  const defaultConfig = {
3024
+ router,
2945
3025
  framePrefix: "/",
2946
3026
  logoText: "G1 Commerce",
3027
+ logoImageHeight: "28px",
2947
3028
  menus: [],
2948
3029
  extraPages: []
2949
3030
  };
2950
- const mergedConfig = Object.assign(defaultConfig, config || {});
3031
+ const mergedConfig = Object.assign(defaultConfig, config);
2951
3032
  return new DefaultFrameContext(mergedConfig);
2952
3033
  };
2953
3034
  const CONTEXT_NAME = "DEFAULT_FRAME_CONTEXT";
2954
- const provideDefaultFrameContext = (config) => {
2955
- const context = createDefaultFrameContext(config);
3035
+ const provideDefaultFrameContext = (router, config) => {
3036
+ const context = createDefaultFrameContext(router, config);
2956
3037
  provide(CONTEXT_NAME, context);
2957
3038
  return context;
2958
3039
  };
@@ -2964,9 +3045,10 @@ const useDefaultFrame = () => {
2964
3045
  return context;
2965
3046
  };
2966
3047
  class PageManager {
2967
- constructor(menus, extraPages, firstPage) {
3048
+ constructor(context, menus, extraPages, firstPage) {
2968
3049
  __publicField(this, "openPages", shallowReactive([]));
2969
3050
  __publicField(this, "pageMap", /* @__PURE__ */ new Map());
3051
+ this.context = context;
2970
3052
  this.menus = menus;
2971
3053
  this.extraPages = extraPages;
2972
3054
  this.firstPage = firstPage;
@@ -3003,6 +3085,30 @@ class PageManager {
3003
3085
  }
3004
3086
  this.setActivePage(page);
3005
3087
  }
3088
+ async openPageByIndex(index) {
3089
+ if (index < 0 || index >= this.openPages.length) {
3090
+ return;
3091
+ }
3092
+ const page = this.openPages[index];
3093
+ if (page) {
3094
+ await this.context.openPagePath(page.path);
3095
+ }
3096
+ }
3097
+ async closePage(pageId) {
3098
+ const index = this.openPages.findIndex((p) => p.pageId === pageId);
3099
+ if (index >= 0) {
3100
+ const isPageActive = this.openPages[index].active;
3101
+ this.openPages.splice(index, 1);
3102
+ if (isPageActive) {
3103
+ const activePage = this.openPages[index - 1 < 0 ? 0 : index - 1];
3104
+ if (activePage) {
3105
+ await this.context.openPagePath(activePage.path);
3106
+ }
3107
+ }
3108
+ } else {
3109
+ console.error(`Page not found: ${pageId}`);
3110
+ }
3111
+ }
3006
3112
  collectPages(pageMap, menus) {
3007
3113
  menus.forEach((menu) => {
3008
3114
  var _a;
@@ -3054,8 +3160,8 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
3054
3160
  };
3055
3161
  }
3056
3162
  });
3057
- const _hoisted_1$5 = { class: "sidebar-menu-item" };
3058
- const _hoisted_2$3 = {
3163
+ const _hoisted_1$6 = { class: "sidebar-menu-item" };
3164
+ const _hoisted_2$4 = {
3059
3165
  key: 0,
3060
3166
  class: "sidebar-submenu"
3061
3167
  };
@@ -3073,12 +3179,12 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
3073
3179
  const showSubMenu = ref(false);
3074
3180
  const toggleSubMenu = () => showSubMenu.value = !showSubMenu.value;
3075
3181
  return (_ctx, _cache) => {
3076
- return openBlock(), createElementBlock("div", _hoisted_1$5, [
3182
+ return openBlock(), createElementBlock("div", _hoisted_1$6, [
3077
3183
  createVNode(_sfc_main$7, {
3078
3184
  menu: _ctx.menu,
3079
3185
  onClick: toggleSubMenu
3080
3186
  }, null, 8, ["menu"]),
3081
- hasSubMenus.value && showSubMenu.value ? (openBlock(), createElementBlock("div", _hoisted_2$3, [
3187
+ hasSubMenus.value && showSubMenu.value ? (openBlock(), createElementBlock("div", _hoisted_2$4, [
3082
3188
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.menu.subMenu, (submenu) => {
3083
3189
  return openBlock(), createBlock(_sfc_main$7, {
3084
3190
  key: submenu.menuId,
@@ -3090,8 +3196,8 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
3090
3196
  };
3091
3197
  }
3092
3198
  });
3093
- const _hoisted_1$4 = ["onKeyup"];
3094
- const _hoisted_2$2 = ["onKeydown", "onClick"];
3199
+ const _hoisted_1$5 = ["onKeyup"];
3200
+ const _hoisted_2$3 = ["onKeydown", "onClick"];
3095
3201
  const _hoisted_3 = { class: "menu-container" };
3096
3202
  const _sfc_main$5 = /* @__PURE__ */ defineComponent({
3097
3203
  __name: "SidebarMenu",
@@ -3114,7 +3220,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
3114
3220
  tabindex: "0",
3115
3221
  onKeydown: withKeys(withModifiers(toggleMenu, ["stop"]), ["enter", "space"]),
3116
3222
  onClick: withModifiers(toggleMenu, ["stop"])
3117
- }, toDisplayString(showMenu.value ? "menu_open" : "menu"), 41, _hoisted_2$2),
3223
+ }, toDisplayString(showMenu.value ? "menu_open" : "menu"), 41, _hoisted_2$3),
3118
3224
  createVNode(Transition, { name: "menu-slide" }, {
3119
3225
  default: withCtx(() => [
3120
3226
  withDirectives(createElementVNode("div", _hoisted_3, [
@@ -3130,25 +3236,38 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
3130
3236
  ]),
3131
3237
  _: 1
3132
3238
  })
3133
- ], 40, _hoisted_1$4)), [
3239
+ ], 40, _hoisted_1$5)), [
3134
3240
  [unref(vClickOutside), hideMenu]
3135
3241
  ]);
3136
3242
  };
3137
3243
  }
3138
3244
  });
3245
+ const _hoisted_1$4 = ["alt", "src"];
3246
+ const _hoisted_2$2 = { key: 1 };
3139
3247
  const _sfc_main$4 = /* @__PURE__ */ defineComponent({
3140
3248
  __name: "HeaderLogo",
3141
3249
  setup(__props) {
3142
3250
  const context = useDefaultFrame();
3143
- const router = useRouter();
3251
+ const logoText = computed(() => context.config.logoText);
3252
+ const logoImageUrl = computed(() => context.config.logoImageUrl);
3253
+ const logoImageHeight = computed(() => context.config.logoImageHeight);
3144
3254
  const goToFirstPage = () => {
3145
- context.openPagePath(router, "/");
3255
+ context.openPagePath("/");
3146
3256
  };
3147
3257
  return (_ctx, _cache) => {
3148
3258
  return openBlock(), createElementBlock("div", {
3149
3259
  class: "header-logo",
3150
3260
  onClick: goToFirstPage
3151
- }, " G1 Commerce ");
3261
+ }, [
3262
+ logoImageUrl.value ? (openBlock(), createElementBlock("img", {
3263
+ key: 0,
3264
+ alt: logoText.value,
3265
+ src: logoImageUrl.value,
3266
+ style: normalizeStyle({ height: logoImageHeight.value })
3267
+ }, null, 12, _hoisted_1$4)) : withDirectives((openBlock(), createElementBlock("span", _hoisted_2$2, null, 512)), [
3268
+ [unref(vT), logoText.value]
3269
+ ])
3270
+ ]);
3152
3271
  };
3153
3272
  }
3154
3273
  });
@@ -3162,11 +3281,11 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
3162
3281
  setup(__props) {
3163
3282
  const props = __props;
3164
3283
  const context = useDefaultFrame();
3165
- const router = useRouter();
3166
3284
  const selectPage = () => {
3167
- context.openPagePath(router, props.page.path);
3285
+ context.openPagePath(props.page.path);
3168
3286
  };
3169
3287
  const closePage = () => {
3288
+ context.pageManager.closePage(props.page.pageId);
3170
3289
  };
3171
3290
  return (_ctx, _cache) => {
3172
3291
  return openBlock(), createElementBlock("div", {
@@ -3302,6 +3421,8 @@ export {
3302
3421
  DefaultFrameContext,
3303
3422
  _sfc_main$1 as DefaultHeader,
3304
3423
  I18NTexts,
3424
+ PaginatedList,
3425
+ SearchParam,
3305
3426
  blueseaConfig,
3306
3427
  configureBluesea,
3307
3428
  createContextMenuPlugin,