@g1cloud/bluesea 5.0.0-alpha.51 → 5.0.0-alpha.53

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.
@@ -273,6 +273,17 @@
273
273
  background-color: $gray-100 !important;
274
274
  color: $gray-400 !important;
275
275
  }
276
+
277
+ .small-progress {
278
+ font-family: $icon-font-family;
279
+ font-size: 0.9em;
280
+ position: absolute;
281
+ left: 100%;
282
+ top: 0;
283
+ padding: 0 2px;
284
+ color: $gray-400;
285
+ animation: spin 1s linear infinite;
286
+ }
276
287
  }
277
288
 
278
289
  // field error
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, ref, onMounted, openBlock, createBlock, withCtx, createElementVNode, createVNode, unref } from "vue";
2
- import { S as SearchParam, P as PaginatedList, u as useModalHandle, _ as _sfc_main$1, a as _sfc_main$2, b as _sfc_main$3, B as BSButton, w as waitDuring } from "./index-C81TfBCL.js";
2
+ import { S as SearchParam, P as PaginatedList, u as useModalHandle, _ as _sfc_main$1, a as _sfc_main$2, b as _sfc_main$3, B as BSButton, w as waitDuring } from "./index-30Eo6Aut.js";
3
3
  const gridColumns = [
4
4
  { propertyId: "zipCode", caption: "Zipcode", width: 80 },
5
5
  { propertyId: "address1", caption: "state/province/region", width: 150 },
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, openBlock, createBlock, withCtx, createElementVNode, withDirectives, createVNode, unref } from "vue";
2
- import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, v as vFocusOnLoad, c as vT } from "./index-C81TfBCL.js";
2
+ import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, v as vFocusOnLoad, c as vT } from "./index-30Eo6Aut.js";
3
3
  const _hoisted_1 = { class: "text-right" };
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "BSAlertModal",
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, openBlock, createBlock, withCtx, createElementVNode, createVNode, withDirectives, unref } from "vue";
2
- import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, v as vFocusOnLoad, c as vT } from "./index-C81TfBCL.js";
2
+ import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, v as vFocusOnLoad, c as vT } from "./index-30Eo6Aut.js";
3
3
  const _hoisted_1 = { class: "text-right" };
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "BSYesNoModal",
package/dist/bluesea.js CHANGED
@@ -1,4 +1,4 @@
1
- import { aL, aM, d, a0, a4, B, L, q, r, k, a5, bi, o, p, K, e, b, I, a, a1, G, i, O, N, Y, b2, a2, _, H, W, X, V, U, T, z, Z, a3, m, l, g, D, n, j, s, t, F, y, M, $, E, J, h, Q, R, C, A, x, f, aT, aS, ac, a7, bm, a6, aj, ag, ad, aR, al, ak, bq, aP, ai, aQ, am, aO, aN, af, P, aH, S, at, by, b8, aU, a$, a_, aa, aK, ba, ab, bl, bn, ah, b5, ae, aq, ar, aZ, aE, aF, aG, aC, aD, aB, ay, av, bt, bg, bd, br, aX, a9, bz, bx, au, aY, ax, bA, aW, bs, b6, aV, bw, bo, b0, b4, aI, an, b9, bf, be, b7, bc, aw, as, bb, bv, bj, bk, bp, b1, b3, u, aJ, ao, ap, a8, c, az, aA, w, bu, bh } from "./index-C81TfBCL.js";
1
+ import { aL, aM, d, a0, a4, B, L, q, r, k, a5, bi, o, p, K, e, b, I, a, a1, G, i, O, N, Y, b2, a2, _, H, W, X, V, U, T, z, Z, a3, m, l, g, D, n, j, s, t, F, y, M, $, E, J, h, Q, R, C, A, x, f, aT, aS, ac, a7, bm, a6, aj, ag, ad, aR, al, ak, bq, aP, ai, aQ, am, aO, aN, af, P, aH, S, at, by, b8, aU, a$, a_, aa, aK, ba, ab, bl, bn, ah, b5, ae, aq, ar, aZ, aE, aF, aG, aC, aD, aB, ay, av, bt, bg, bd, br, aX, a9, bz, bx, au, aY, ax, bA, aW, bs, b6, aV, bw, bo, b0, b4, aI, an, b9, bf, be, b7, bc, aw, as, bb, bv, bj, bk, bp, b1, b3, u, aJ, ao, ap, a8, c, az, aA, w, bu, bh } from "./index-30Eo6Aut.js";
2
2
  export {
3
3
  aL as AbstractFilter,
4
4
  aM as AndFilter,
@@ -401,6 +401,9 @@ var __publicField = (obj, key, value) => {
401
401
  };
402
402
  }
403
403
  });
404
+ function notNull(value) {
405
+ return value !== null && value !== void 0;
406
+ }
404
407
  const _hoisted_1$15 = ["onMouseover", "onClick"];
405
408
  const _hoisted_2$T = /* @__PURE__ */ vue.createElementVNode("span", { class: "checkbox" }, null, -1);
406
409
  const _hoisted_3$x = {
@@ -421,25 +424,34 @@ var __publicField = (obj, key, value) => {
421
424
  setup(__props, { emit: __emit }) {
422
425
  const props = __props;
423
426
  const emit = __emit;
424
- const allItems = vue.computed(() => props.allowNull ? [void 0, ...props.items] : props.items);
427
+ const allItems = vue.ref();
428
+ vue.watch(
429
+ () => props.items,
430
+ async () => {
431
+ const items = await props.items;
432
+ allItems.value = props.allowNull ? [void 0, ...items] : items;
433
+ },
434
+ { immediate: true }
435
+ );
425
436
  const findItemIndex = (target) => {
426
- return allItems.value.findIndex((item) => {
437
+ var _a;
438
+ return ((_a = allItems.value) == null ? void 0 : _a.findIndex((item) => {
427
439
  if (item === void 0 && target === void 0)
428
440
  return true;
429
441
  else if (item && target)
430
442
  return props.valueProvider(item) === props.valueProvider(target);
431
443
  else
432
444
  return false;
433
- });
445
+ })) || -1;
434
446
  };
435
447
  const nextPopupItem = () => {
436
- if (allItems.value.length > 0) {
448
+ if (allItems.value && allItems.value.length > 0) {
437
449
  const index = findItemIndex(hoveredPopupItem.value) + 1;
438
450
  hoveredPopupItem.value = allItems.value[index % allItems.value.length];
439
451
  }
440
452
  };
441
453
  const prevPopupItem = () => {
442
- if (allItems.value.length > 0) {
454
+ if (allItems.value && allItems.value.length > 0) {
443
455
  const index = findItemIndex(hoveredPopupItem.value) + allItems.value.length - 1;
444
456
  hoveredPopupItem.value = allItems.value[index % allItems.value.length];
445
457
  }
@@ -477,8 +489,8 @@ var __publicField = (obj, key, value) => {
477
489
  return false;
478
490
  };
479
491
  const selectPopupItem = (item) => {
480
- if (item) {
481
- item = props.items.find((it) => props.valueProvider(it) === props.valueProvider(item));
492
+ if (item && allItems.value) {
493
+ item = allItems.value.filter(notNull).find((it) => props.valueProvider(it) === props.valueProvider(item));
482
494
  }
483
495
  emit("itemSelected", item);
484
496
  };
@@ -882,6 +894,10 @@ var __publicField = (obj, key, value) => {
882
894
  class: "label"
883
895
  };
884
896
  const _hoisted_5$j = /* @__PURE__ */ vue.createElementVNode("span", { class: "dropdown-btn" }, "expand_more", -1);
897
+ const _hoisted_6$d = {
898
+ key: 2,
899
+ class: "small-progress"
900
+ };
885
901
  const _sfc_main$1i = /* @__PURE__ */ vue.defineComponent({
886
902
  __name: "BSSelect",
887
903
  props: {
@@ -903,6 +919,17 @@ var __publicField = (obj, key, value) => {
903
919
  setup(__props, { emit: __emit }) {
904
920
  const props = __props;
905
921
  const emit = __emit;
922
+ const allItems = vue.ref();
923
+ const loadingItems = vue.ref(false);
924
+ vue.watch(
925
+ () => props.items,
926
+ async () => {
927
+ loadingItems.value = true;
928
+ allItems.value = await props.items;
929
+ loadingItems.value = false;
930
+ },
931
+ { immediate: true }
932
+ );
906
933
  const itemLabel = (item) => {
907
934
  return props.labelProvider ? props.labelProvider(item) : String(item);
908
935
  };
@@ -910,7 +937,8 @@ var __publicField = (obj, key, value) => {
910
937
  return props.valueProvider ? props.valueProvider(item) : item;
911
938
  };
912
939
  const findItemFromValue = (value) => {
913
- return value ? props.items.find((item) => itemValue(item) === value) : void 0;
940
+ var _a;
941
+ return value ? (_a = allItems.value) == null ? void 0 : _a.find((item) => itemValue(item) === value) : void 0;
914
942
  };
915
943
  const isEmpty2 = vue.computed(() => !props.modelValue);
916
944
  const selectedItem = vue.computed(() => findItemFromValue(props.modelValue));
@@ -994,7 +1022,8 @@ var __publicField = (obj, key, value) => {
994
1022
  ]) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("span", _hoisted_4$n, null, 512)), [
995
1023
  [vue.unref(vT), selectedItemLabel.value]
996
1024
  ]),
997
- _hoisted_5$j
1025
+ _hoisted_5$j,
1026
+ loadingItems.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_6$d, "progress_activity")) : vue.createCommentVNode("", true)
998
1027
  ], 512),
999
1028
  !_ctx.disabled && showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$1k, {
1000
1029
  key: 0,
@@ -2021,7 +2050,7 @@ var __publicField = (obj, key, value) => {
2021
2050
  class: "input-area"
2022
2051
  };
2023
2052
  const _hoisted_5$h = ["id", "autocomplete", "disabled", "maxlength", "name", "tabindex", "value"];
2024
- const _hoisted_6$9 = ["textContent"];
2053
+ const _hoisted_6$c = ["textContent"];
2025
2054
  const _sfc_main$18 = /* @__PURE__ */ vue.defineComponent({
2026
2055
  __name: "BSPriceInput",
2027
2056
  props: {
@@ -2177,7 +2206,7 @@ var __publicField = (obj, key, value) => {
2177
2206
  vue.createElementVNode("div", {
2178
2207
  class: "currency-code",
2179
2208
  textContent: vue.toDisplayString(currencyCode.value)
2180
- }, null, 8, _hoisted_6$9)
2209
+ }, null, 8, _hoisted_6$c)
2181
2210
  ])),
2182
2211
  vue.createVNode(_sfc_main$1j, { errors: vue.unref(errors) }, null, 8, ["errors"])
2183
2212
  ], 6);
@@ -2351,7 +2380,7 @@ var __publicField = (obj, key, value) => {
2351
2380
  const _hoisted_3$p = /* @__PURE__ */ vue.createElementVNode("span", { class: "font-icon" }, "calendar_month", -1);
2352
2381
  const _hoisted_4$h = ["id", "disabled", "maxlength", "name", "tabindex", "value"];
2353
2382
  const _hoisted_5$g = /* @__PURE__ */ vue.createElementVNode("span", { class: "px-4" }, "~", -1);
2354
- const _hoisted_6$8 = ["id", "disabled", "maxlength", "name", "tabindex", "value"];
2383
+ const _hoisted_6$b = ["id", "disabled", "maxlength", "name", "tabindex", "value"];
2355
2384
  const _sfc_main$16 = /* @__PURE__ */ vue.defineComponent({
2356
2385
  __name: "BSDateRange",
2357
2386
  props: {
@@ -2572,7 +2601,7 @@ var __publicField = (obj, key, value) => {
2572
2601
  tabindex: _ctx.tabindex,
2573
2602
  value: focusedTo.value ? vue.unref(stringValueTo) : formattedTo.value,
2574
2603
  type: "text"
2575
- }, vue.toHandlers(handlersTo, true)), null, 16, _hoisted_6$8), [
2604
+ }, vue.toHandlers(handlersTo, true)), null, 16, _hoisted_6$b), [
2576
2605
  [
2577
2606
  vue.unref(vT),
2578
2607
  _ctx.placeholderTo,
@@ -3000,9 +3029,6 @@ var __publicField = (obj, key, value) => {
3000
3029
  };
3001
3030
  }
3002
3031
  });
3003
- function notNull(value) {
3004
- return value !== null && value !== void 0;
3005
- }
3006
3032
  const _hoisted_1$R = ["tabindex", "onKeydown"];
3007
3033
  const _hoisted_2$F = { key: 0 };
3008
3034
  const _hoisted_3$m = {
@@ -3011,6 +3037,10 @@ var __publicField = (obj, key, value) => {
3011
3037
  };
3012
3038
  const _hoisted_4$g = { key: 1 };
3013
3039
  const _hoisted_5$f = /* @__PURE__ */ vue.createElementVNode("span", { class: "dropdown-btn" }, "expand_more", -1);
3040
+ const _hoisted_6$a = {
3041
+ key: 2,
3042
+ class: "small-progress"
3043
+ };
3014
3044
  const _sfc_main$10 = /* @__PURE__ */ vue.defineComponent({
3015
3045
  __name: "BSMultiSelect",
3016
3046
  props: {
@@ -3032,6 +3062,17 @@ var __publicField = (obj, key, value) => {
3032
3062
  var _a;
3033
3063
  const props = __props;
3034
3064
  const emit = __emit;
3065
+ const allItems = vue.ref();
3066
+ const loadingItems = vue.ref(false);
3067
+ vue.watch(
3068
+ () => props.items,
3069
+ async () => {
3070
+ loadingItems.value = true;
3071
+ allItems.value = await props.items;
3072
+ loadingItems.value = false;
3073
+ },
3074
+ { immediate: true }
3075
+ );
3035
3076
  const itemLabel = (item) => {
3036
3077
  return executeLabelProviderOrDefault(item, props.labelProvider, () => String(item));
3037
3078
  };
@@ -3042,7 +3083,8 @@ var __publicField = (obj, key, value) => {
3042
3083
  return executeKeyProviderOrDefault(item, props.keyProvider, () => String(item));
3043
3084
  };
3044
3085
  const findItemFromValue = (value) => {
3045
- return value ? props.items.find((item) => itemValue(item) === value) : void 0;
3086
+ var _a2;
3087
+ return value ? (_a2 = allItems.value) == null ? void 0 : _a2.find((item) => itemValue(item) === value) : void 0;
3046
3088
  };
3047
3089
  const isEmpty2 = vue.computed(() => !props.modelValue || props.modelValue.length === 0);
3048
3090
  const selectedItems = vue.computed(() => props.modelValue.map(findItemFromValue).filter(notNull));
@@ -3063,13 +3105,13 @@ var __publicField = (obj, key, value) => {
3063
3105
  keyboardHandler(event);
3064
3106
  };
3065
3107
  const itemSelected = (item) => {
3066
- if (item) {
3108
+ if (item && allItems.value) {
3067
3109
  let newItems = [...selectedItems.value];
3068
3110
  const index = newItems.indexOf(item);
3069
3111
  if (index >= 0) {
3070
3112
  newItems.splice(index, 1);
3071
3113
  } else {
3072
- newItems = props.items.filter((it) => newItems.includes(it) || it === item);
3114
+ newItems = allItems.value.filter((it) => newItems.includes(it) || it === item);
3073
3115
  }
3074
3116
  const values = newItems.map(itemValue);
3075
3117
  emit("update:modelValue", values);
@@ -3149,7 +3191,8 @@ var __publicField = (obj, key, value) => {
3149
3191
  ]);
3150
3192
  }), 128))
3151
3193
  ])),
3152
- _hoisted_5$f
3194
+ _hoisted_5$f,
3195
+ loadingItems.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_6$a, "progress_activity")) : vue.createCommentVNode("", true)
3153
3196
  ], 512),
3154
3197
  !_ctx.disabled && showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$1k, {
3155
3198
  key: 0,
@@ -4084,6 +4127,10 @@ var __publicField = (obj, key, value) => {
4084
4127
  class: "label"
4085
4128
  };
4086
4129
  const _hoisted_5$d = /* @__PURE__ */ vue.createElementVNode("span", { class: "dropdown-btn" }, "expand_more", -1);
4130
+ const _hoisted_6$9 = {
4131
+ key: 2,
4132
+ class: "small-progress"
4133
+ };
4087
4134
  const _sfc_main$Z = /* @__PURE__ */ vue.defineComponent({
4088
4135
  __name: "BSTreeSelect",
4089
4136
  props: {
@@ -4106,6 +4153,17 @@ var __publicField = (obj, key, value) => {
4106
4153
  var _a;
4107
4154
  const props = __props;
4108
4155
  const emit = __emit;
4156
+ const allItems = vue.ref();
4157
+ const loadingItems = vue.ref(false);
4158
+ vue.watch(
4159
+ () => props.items,
4160
+ async () => {
4161
+ loadingItems.value = true;
4162
+ allItems.value = await props.items;
4163
+ loadingItems.value = false;
4164
+ },
4165
+ { immediate: true }
4166
+ );
4109
4167
  const itemLabel = (item) => {
4110
4168
  return props.labelProvider ? props.labelProvider(item) : String(item);
4111
4169
  };
@@ -4113,7 +4171,7 @@ var __publicField = (obj, key, value) => {
4113
4171
  return props.valueProvider ? props.valueProvider(item) : item;
4114
4172
  };
4115
4173
  const findItemFromValue = (value) => {
4116
- if (value) {
4174
+ if (value && allItems.value) {
4117
4175
  let found2 = void 0;
4118
4176
  componentUtil.acceptTreeItems(
4119
4177
  (item) => {
@@ -4122,7 +4180,7 @@ var __publicField = (obj, key, value) => {
4122
4180
  return true;
4123
4181
  }
4124
4182
  },
4125
- props.items,
4183
+ allItems.value,
4126
4184
  (item) => props.childrenProvider(item)
4127
4185
  );
4128
4186
  return found2;
@@ -4136,7 +4194,7 @@ var __publicField = (obj, key, value) => {
4136
4194
  if (!props.disabled && !props.viewMode) {
4137
4195
  const shouldShow = show === void 0 ? !showPopup.value : show;
4138
4196
  if (shouldShow) {
4139
- treeHandler.setTreeData(props.items, true, true, 0);
4197
+ treeHandler.setTreeData(allItems.value || [], true, true, 0);
4140
4198
  treeHandler.selectItem(findItemFromValue(props.modelValue));
4141
4199
  }
4142
4200
  showPopup.value = shouldShow;
@@ -4220,7 +4278,8 @@ var __publicField = (obj, key, value) => {
4220
4278
  ]) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("span", _hoisted_4$e, null, 512)), [
4221
4279
  [vue.unref(vT), selectedItemLabel.value]
4222
4280
  ]),
4223
- _hoisted_5$d
4281
+ _hoisted_5$d,
4282
+ loadingItems.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_6$9, "progress_activity")) : vue.createCommentVNode("", true)
4224
4283
  ], 512),
4225
4284
  showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$1l, {
4226
4285
  key: 0,
@@ -4249,6 +4308,10 @@ var __publicField = (obj, key, value) => {
4249
4308
  class: "label"
4250
4309
  };
4251
4310
  const _hoisted_5$c = /* @__PURE__ */ vue.createElementVNode("span", { class: "dropdown-btn" }, "expand_more", -1);
4311
+ const _hoisted_6$8 = {
4312
+ key: 2,
4313
+ class: "small-progress"
4314
+ };
4252
4315
  const _sfc_main$Y = /* @__PURE__ */ vue.defineComponent({
4253
4316
  __name: "BSTreeMultiSelect",
4254
4317
  props: {
@@ -4271,6 +4334,17 @@ var __publicField = (obj, key, value) => {
4271
4334
  var _a;
4272
4335
  const props = __props;
4273
4336
  const emit = __emit;
4337
+ const allItems = vue.ref();
4338
+ const loadingItems = vue.ref(false);
4339
+ vue.watch(
4340
+ () => props.items,
4341
+ async () => {
4342
+ loadingItems.value = true;
4343
+ allItems.value = await props.items;
4344
+ loadingItems.value = false;
4345
+ },
4346
+ { immediate: true }
4347
+ );
4274
4348
  const itemLabel = (item) => {
4275
4349
  return props.labelProvider ? props.labelProvider(item) : String(item);
4276
4350
  };
@@ -4278,7 +4352,7 @@ var __publicField = (obj, key, value) => {
4278
4352
  return props.valueProvider ? props.valueProvider(item) : item;
4279
4353
  };
4280
4354
  const findItemFromValue = (value) => {
4281
- if (value) {
4355
+ if (value && allItems.value) {
4282
4356
  let found2 = void 0;
4283
4357
  componentUtil.acceptTreeItems(
4284
4358
  (item) => {
@@ -4287,7 +4361,7 @@ var __publicField = (obj, key, value) => {
4287
4361
  return true;
4288
4362
  }
4289
4363
  },
4290
- props.items,
4364
+ allItems.value,
4291
4365
  (item) => props.childrenProvider(item)
4292
4366
  );
4293
4367
  return found2;
@@ -4301,7 +4375,7 @@ var __publicField = (obj, key, value) => {
4301
4375
  if (!props.disabled && !props.viewMode) {
4302
4376
  const shouldShow = show === void 0 ? !showPopup.value : show;
4303
4377
  if (shouldShow) {
4304
- treeHandler.setTreeData(props.items, true, true, 0);
4378
+ treeHandler.setTreeData(allItems.value || [], true, true, 0);
4305
4379
  treeHandler.selectItem(selectedItems.value);
4306
4380
  }
4307
4381
  showPopup.value = shouldShow;
@@ -4381,7 +4455,8 @@ var __publicField = (obj, key, value) => {
4381
4455
  ]) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("span", _hoisted_4$d, null, 512)), [
4382
4456
  [vue.unref(vT), selectedItemLabel.value]
4383
4457
  ]),
4384
- _hoisted_5$c
4458
+ _hoisted_5$c,
4459
+ loadingItems.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_6$8, "progress_activity")) : vue.createCommentVNode("", true)
4385
4460
  ], 512),
4386
4461
  showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$1l, {
4387
4462
  key: 0,
@@ -30714,6 +30789,9 @@ img.ProseMirror-separator {
30714
30789
  getDeletedRows() {
30715
30790
  return this.selectDeleteSupport.deletedRows;
30716
30791
  }
30792
+ isAddedRow(_row) {
30793
+ return false;
30794
+ }
30717
30795
  addNewRow(_newRow) {
30718
30796
  return -1;
30719
30797
  }
@@ -30749,6 +30827,7 @@ img.ProseMirror-separator {
30749
30827
  constructor(option) {
30750
30828
  super(option);
30751
30829
  __publicField(this, "editableSupport");
30830
+ this.grid.rowEditPolicy = option.isRowEditable;
30752
30831
  this.editableSupport = new GridHandlerEditableSupport(
30753
30832
  this.grid,
30754
30833
  this.gridEventListener,
@@ -30767,6 +30846,9 @@ img.ProseMirror-separator {
30767
30846
  getAddedRows() {
30768
30847
  return this.editableSupport.getAddedRows();
30769
30848
  }
30849
+ isAddedRow(row) {
30850
+ return this.editableSupport.isAddedRow(row);
30851
+ }
30770
30852
  addNewRow(newRow) {
30771
30853
  return this.editableSupport.addNewRow(newRow);
30772
30854
  }
@@ -30858,6 +30940,7 @@ img.ProseMirror-separator {
30858
30940
  constructor(option) {
30859
30941
  super(option);
30860
30942
  __publicField(this, "editableSupport");
30943
+ this.grid.rowEditPolicy = option.isRowEditable;
30861
30944
  this.editableSupport = new GridHandlerEditableSupport(
30862
30945
  this.grid,
30863
30946
  this.gridEventListener,
@@ -31385,17 +31468,19 @@ img.ProseMirror-separator {
31385
31468
  const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
31386
31469
  __name: "BSGridCellEdit",
31387
31470
  props: {
31388
- isEditing: { type: Boolean }
31471
+ isEditing: { type: Boolean },
31472
+ showEditIcon: { type: Boolean }
31389
31473
  },
31390
31474
  emits: ["toggleEditMode"],
31391
31475
  setup(__props, { emit: __emit }) {
31392
31476
  return (_ctx, _cache) => {
31393
31477
  return vue.openBlock(), vue.createElementBlock("td", _hoisted_1$A, [
31394
- vue.createElementVNode("div", {
31478
+ _ctx.showEditIcon ? (vue.openBlock(), vue.createElementBlock("div", {
31479
+ key: 0,
31395
31480
  onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => _ctx.$emit("toggleEditMode"), ["stop"]))
31396
31481
  }, [
31397
31482
  vue.createElementVNode("span", _hoisted_2$q, vue.toDisplayString(_ctx.isEditing ? "replay" : "stylus"), 1)
31398
- ])
31483
+ ])) : vue.createCommentVNode("", true)
31399
31484
  ]);
31400
31485
  };
31401
31486
  }
@@ -31537,6 +31622,8 @@ img.ProseMirror-separator {
31537
31622
  showDragHandle: { type: Boolean },
31538
31623
  selectedRows: {},
31539
31624
  editable: { type: Boolean },
31625
+ rowEditable: { type: Boolean },
31626
+ hideEditIcon: { type: Boolean },
31540
31627
  editingRow: {},
31541
31628
  isEditing: { type: Boolean },
31542
31629
  selectOnClick: { type: Boolean }
@@ -31550,11 +31637,11 @@ img.ProseMirror-separator {
31550
31637
  emit("toggleSelection", props.row);
31551
31638
  };
31552
31639
  const enterEditMode = () => {
31553
- if (props.editable)
31640
+ if (props.editable && props.rowEditable)
31554
31641
  emit("enterEditMode", props.row, savePoint);
31555
31642
  };
31556
31643
  const toggleEditMode = () => {
31557
- if (props.editable) {
31644
+ if (props.editable && props.rowEditable) {
31558
31645
  props.isEditing ? emit("cancelEditMode", props.row) : enterEditMode();
31559
31646
  }
31560
31647
  };
@@ -31610,11 +31697,12 @@ img.ProseMirror-separator {
31610
31697
  checked: isRowSelected.value,
31611
31698
  onClick: toggleSelection
31612
31699
  }, null, 8, ["checked"])) : vue.createCommentVNode("", true),
31613
- _ctx.editable ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
31700
+ _ctx.editable && !_ctx.hideEditIcon ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
31614
31701
  key: 2,
31615
31702
  "is-editing": _ctx.isEditing,
31703
+ "show-edit-icon": _ctx.rowEditable,
31616
31704
  onToggleEditMode: toggleEditMode
31617
- }, null, 8, ["is-editing"])) : vue.createCommentVNode("", true),
31705
+ }, null, 8, ["is-editing", "show-edit-icon"])) : vue.createCommentVNode("", true),
31618
31706
  _ctx.showSerial ? (vue.openBlock(), vue.createBlock(_sfc_main$K, {
31619
31707
  key: 3,
31620
31708
  "serial-no": _ctx.rowIndex + (((_a = _ctx.pageInfo) == null ? void 0 : _a.offset) || 0) + 1
@@ -31688,11 +31776,13 @@ img.ProseMirror-separator {
31688
31776
  keyProvider: { default: () => emptyKeyProvider },
31689
31777
  selectedRows: {},
31690
31778
  editable: { type: Boolean },
31779
+ hideEditIcon: { type: Boolean },
31691
31780
  editingRows: {},
31781
+ rowEditPolicy: {},
31692
31782
  alwaysEditing: { type: Boolean },
31693
31783
  rowDisplayPolicy: {}
31694
31784
  },
31695
- emits: ["offsetChanged", "update:selectedRows", "update:editingRows", "changeEditingRow", "update:sorts"],
31785
+ emits: ["offsetChanged", "update:selectedRows", "changeSelectedRows", "update:editingRows", "changeEditingRow", "update:sorts"],
31696
31786
  setup(__props, { emit: __emit }) {
31697
31787
  const props = __props;
31698
31788
  const emit = __emit;
@@ -31708,28 +31798,35 @@ img.ProseMirror-separator {
31708
31798
  const toggleSelection = (row) => {
31709
31799
  if (internalSelectedRows.has(row)) {
31710
31800
  internalSelectedRows.delete(row);
31801
+ emit("changeSelectedRows", { allRows: false, targetRows: [row], selected: false });
31711
31802
  } else {
31712
31803
  if (props.singleSelect)
31713
31804
  internalSelectedRows.clear();
31714
31805
  internalSelectedRows.add(row);
31806
+ emit("changeSelectedRows", { allRows: false, targetRows: [row], selected: true });
31715
31807
  }
31716
31808
  emit("update:selectedRows", internalSelectedRows);
31717
31809
  };
31718
31810
  const toggleAllSelection = () => {
31719
31811
  if (internalSelectedRows.size > 0) {
31720
31812
  internalSelectedRows.clear();
31813
+ emit("changeSelectedRows", { allRows: true, selected: false });
31721
31814
  } else {
31722
31815
  if (props.singleSelect) {
31723
- if (props.data[0])
31816
+ if (props.data[0]) {
31724
31817
  internalSelectedRows.add(props.data[0]);
31818
+ emit("changeSelectedRows", { allRows: false, targetRows: [props.data[0]], selected: true });
31819
+ }
31725
31820
  } else {
31726
31821
  props.data.forEach((row) => internalSelectedRows.add(row));
31822
+ emit("changeSelectedRows", { allRows: true, selected: true });
31727
31823
  }
31728
31824
  }
31729
31825
  emit("update:selectedRows", internalSelectedRows);
31730
31826
  };
31731
31827
  const clearSelection = () => {
31732
31828
  internalSelectedRows.clear();
31829
+ emit("changeSelectedRows", { allRows: true, selected: false });
31733
31830
  emit("update:selectedRows", internalSelectedRows);
31734
31831
  };
31735
31832
  const table = vue.ref();
@@ -31773,7 +31870,7 @@ img.ProseMirror-separator {
31773
31870
  const initEditing = () => {
31774
31871
  if (props.alwaysEditing) {
31775
31872
  props.data.forEach((row) => {
31776
- if (!internalEditingRows.isEditingRow(row)) {
31873
+ if ((!props.rowEditPolicy || props.rowEditPolicy(row)) && !internalEditingRows.isEditingRow(row)) {
31777
31874
  internalEditingRows.addEditingRow({ row });
31778
31875
  }
31779
31876
  });
@@ -31864,7 +31961,7 @@ img.ProseMirror-separator {
31864
31961
  "selected-row-count": vue.unref(internalSelectedRows).size,
31865
31962
  onClick: toggleAllSelection
31866
31963
  }, null, 8, ["selected-row-count"])) : vue.createCommentVNode("", true),
31867
- _ctx.editable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_6$7, _hoisted_8$3)) : vue.createCommentVNode("", true),
31964
+ _ctx.editable && !_ctx.hideEditIcon ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_6$7, _hoisted_8$3)) : vue.createCommentVNode("", true),
31868
31965
  _ctx.showSerial ? (vue.openBlock(), vue.createBlock(BSGridHeaderCellSerialNo, { key: 3 })) : vue.createCommentVNode("", true),
31869
31966
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(internalColumns.value, (column) => {
31870
31967
  return vue.openBlock(), vue.createBlock(BSGridHeaderCell, {
@@ -31896,9 +31993,11 @@ img.ProseMirror-separator {
31896
31993
  editable: _ctx.editable,
31897
31994
  "editing-row": (_a2 = _ctx.editingRows) == null ? void 0 : _a2.getEditingRow(row),
31898
31995
  "fixed-columns": fixedColumns.value,
31996
+ "hide-edit-icon": _ctx.hideEditIcon,
31899
31997
  "is-editing": vue.unref(internalEditingRows).isEditingRow(row),
31900
31998
  "page-info": _ctx.pageInfo,
31901
31999
  row,
32000
+ "row-editable": !_ctx.rowEditPolicy || _ctx.rowEditPolicy(row),
31902
32001
  "row-index": index,
31903
32002
  "row-key": _ctx.keyProvider(row),
31904
32003
  "select-on-click": _ctx.selectOnClick,
@@ -31924,7 +32023,7 @@ img.ProseMirror-separator {
31924
32023
  ])
31925
32024
  };
31926
32025
  })
31927
- ]), 1032, ["all-rows", "columns", "editable", "editing-row", "fixed-columns", "is-editing", "page-info", "row", "row-index", "row-key", "select-on-click", "selected-rows", "show-checkbox", "show-drag-handle", "show-serial", "style", "visible-columns"]);
32026
+ ]), 1032, ["all-rows", "columns", "editable", "editing-row", "fixed-columns", "hide-edit-icon", "is-editing", "page-info", "row", "row-editable", "row-index", "row-key", "select-on-click", "selected-rows", "show-checkbox", "show-drag-handle", "show-serial", "style", "visible-columns"]);
31928
32027
  }), 128)) : vue.createCommentVNode("", true)
31929
32028
  ])
31930
32029
  ], 512)
@@ -34503,6 +34602,9 @@ img.ProseMirror-separator {
34503
34602
  const checkEnglish = (str) => {
34504
34603
  return /[a-z]/i.test(str);
34505
34604
  };
34605
+ const getRoutePagePath = (framePrefix, route) => {
34606
+ return decodeURIComponent(route.path.substring(framePrefix.length));
34607
+ };
34506
34608
  class DefaultFrameContext {
34507
34609
  constructor(config) {
34508
34610
  __publicField(this, "pageManager");
@@ -34520,7 +34622,7 @@ img.ProseMirror-separator {
34520
34622
  }
34521
34623
  // 현재 route 에 해당하는 Page 를 오픈한다.
34522
34624
  async syncCurrentPath(route) {
34523
- const pagePath = route.path.substring(this.config.framePrefix.length);
34625
+ const pagePath = getRoutePagePath(this.config.framePrefix, route);
34524
34626
  await this.pageManager.openPage(pagePath);
34525
34627
  }
34526
34628
  // 현재 활성화된 Page 를 닫는다.
@@ -34530,7 +34632,7 @@ img.ProseMirror-separator {
34530
34632
  await this.pageManager.closePage(active);
34531
34633
  }
34532
34634
  getPageByRoute(route) {
34533
- const pagePath = route.path.substring(this.config.framePrefix.length);
34635
+ const pagePath = getRoutePagePath(this.config.framePrefix, route);
34534
34636
  return this.pageManager.getPageByPath(pagePath);
34535
34637
  }
34536
34638
  setPageSubtitle(route, subtitle) {