@g1cloud/bluesea 5.0.0-alpha.46 → 5.0.0-alpha.48

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.
@@ -62,6 +62,7 @@
62
62
  padding: 2px 4px;
63
63
  border-radius: 2px;
64
64
  line-height: 1;
65
+ white-space: nowrap;
65
66
 
66
67
  &:first-child {
67
68
  margin-left: 4px;
@@ -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-DwRH_LBa.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-BcChfC_U.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-DwRH_LBa.js";
2
+ import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, v as vFocusOnLoad, c as vT } from "./index-BcChfC_U.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-DwRH_LBa.js";
2
+ import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, v as vFocusOnLoad, c as vT } from "./index-BcChfC_U.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,7 +1,7 @@
1
- import { aH, aI, d, a0, a4, B, L, q, r, k, a5, be, o, p, K, e, b, I, a, a1, G, i, O, N, Y, a_, 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, aP, aO, ac, a7, bi, a6, aj, ag, ad, aN, al, ak, bm, aL, ai, aM, am, aK, aJ, af, P, aE, S, ar, bu, b4, aQ, aX, aW, aa, b6, ab, bh, bj, ah, b1, ae, aq, aV, aB, aC, aD, az, aA, ay, at, bp, bc, b9, bn, aT, a9, bv, bt, as, aU, av, aS, bo, b2, aR, bs, bk, aY, b0, aF, an, b5, bb, ba, b3, b8, au, b7, br, bf, bg, bl, aZ, a$, u, aG, ao, ap, a8, c, aw, ax, w, bq, bd } from "./index-DwRH_LBa.js";
1
+ import { aK, aL, d, a0, a4, B, L, q, r, k, a5, bh, o, p, K, e, b, I, a, a1, G, i, O, N, Y, b1, 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, aS, aR, ac, a7, bl, a6, aj, ag, ad, aQ, al, ak, bp, aO, ai, aP, am, aN, aM, af, P, aG, S, at, bx, b7, aT, a_, aZ, aa, aJ, b9, ab, bk, bm, ah, b4, ae, aq, ar, aY, aD, aE, aF, aB, aC, aA, av, bs, bf, bc, bq, aW, a9, by, bw, au, aX, ax, bz, aV, br, b5, aU, bv, bn, a$, b3, aH, an, b8, be, bd, b6, bb, aw, as, ba, bu, bi, bj, bo, b0, b2, u, aI, ao, ap, a8, c, ay, az, w, bt, bg } from "./index-BcChfC_U.js";
2
2
  export {
3
- aH as AbstractFilter,
4
- aI as AndFilter,
3
+ aK as AbstractFilter,
4
+ aL as AndFilter,
5
5
  d as BLUESEA_VERSION,
6
6
  a0 as BSAddressInput,
7
7
  a4 as BSAlarmFrame,
@@ -11,7 +11,7 @@ export {
11
11
  r as BSCheckboxGroup,
12
12
  k as BSConsole,
13
13
  a5 as BSContextMenuContainer,
14
- be as BSContextMenuPlugin,
14
+ bh as BSContextMenuPlugin,
15
15
  o as BSDateInput,
16
16
  p as BSDateRange,
17
17
  K as BSDateRangeFilter,
@@ -25,7 +25,7 @@ export {
25
25
  O as BSListControl,
26
26
  N as BSListLayout,
27
27
  Y as BSLocaleSelect,
28
- a_ as BSModal,
28
+ b1 as BSModal,
29
29
  a2 as BSModalContainer,
30
30
  _ as BSModalFrame,
31
31
  H as BSMultiImageUpload,
@@ -58,95 +58,99 @@ export {
58
58
  A as BSTreeSelect,
59
59
  x as BSYesNoGroup,
60
60
  f as BSYesNoSelect,
61
- aP as BetweenDateFilter,
62
- aO as BetweenFilter,
61
+ aS as BetweenDateFilter,
62
+ aR as BetweenFilter,
63
63
  ac as DEFAULT_GRID_COLUMN_WIDTH,
64
64
  a7 as DefaultBody,
65
- bi as DefaultFrameContext,
65
+ bl as DefaultFrameContext,
66
66
  a6 as DefaultHeader,
67
67
  aj as EditableInputGridHandlerImpl,
68
68
  ag as EditablePageGridHandlerImpl,
69
69
  ad as EditingRows,
70
- aN as EqualFilter,
70
+ aQ as EqualFilter,
71
71
  al as GridHandlerEditableSupport,
72
72
  ak as GridHandlerSelectDeleteSupport,
73
- bm as I18NTexts,
74
- aL as InFilter,
73
+ bp as I18NTexts,
74
+ aO as InFilter,
75
75
  ai as InputGridHandlerImpl,
76
- aM as LikeFilter,
76
+ aP as LikeFilter,
77
77
  am as LocalStorageGridPreferenceStore,
78
- aK as NotFilter,
79
- aJ as OrFilter,
78
+ aN as NotFilter,
79
+ aM as OrFilter,
80
80
  af as PageGridHandlerImpl,
81
81
  P as PaginatedList,
82
- aE as SavePointImpl,
82
+ aG as SavePointImpl,
83
83
  S as SearchParam,
84
- ar as ValidationFailedError,
85
- bu as addPrefixToMultiLangString,
86
- b4 as alarmEntries,
87
- aQ as andFilter,
88
- aX as betweenDateFilter,
89
- aW as betweenFilter,
84
+ at as ValidationFailedError,
85
+ bx as addPrefixToMultiLangString,
86
+ b7 as alarmEntries,
87
+ aT as andFilter,
88
+ a_ as betweenDateFilter,
89
+ aZ as betweenFilter,
90
90
  aa as blueseaConfig,
91
- b6 as closeAlarm,
91
+ aJ as cancelProvidedSavePoint,
92
+ b9 as closeAlarm,
92
93
  ab as configureBluesea,
93
- bh as createContextMenuPlugin,
94
- bj as createDefaultFrameContext,
94
+ bk as createContextMenuPlugin,
95
+ bm as createDefaultFrameContext,
95
96
  ah as createInputGridHandler,
96
- b1 as createModalPlugin,
97
+ b4 as createModalPlugin,
97
98
  ae as createPageGridHandler,
98
99
  aq as createTreeHandler,
99
- aV as equalFilter,
100
- aB as executeBetweenLengthValidation,
101
- aC as executeBetweenValueValidation,
102
- aD as executeDateRangeValidation,
103
- az as executeFieldValidationRule,
104
- aA as executeRequiredValidation,
105
- ay as fieldValidator,
106
- at as formValidator,
107
- bp as formatUtil,
108
- bc as hideLoading,
109
- b9 as hideTooltip,
110
- bn as i18n,
111
- aT as inFilter,
100
+ ar as defaultExpandMultiLang,
101
+ aY as equalFilter,
102
+ aD as executeBetweenLengthValidation,
103
+ aE as executeBetweenValueValidation,
104
+ aF as executeDateRangeValidation,
105
+ aB as executeFieldValidationRule,
106
+ aC as executeRequiredValidation,
107
+ aA as fieldValidator,
108
+ av as formValidator,
109
+ bs as formatUtil,
110
+ bf as hideLoading,
111
+ bc as hideTooltip,
112
+ bq as i18n,
113
+ aW as inFilter,
112
114
  a9 as interpretMultiLangText,
113
- bv as isBlankMultiLangImageFile,
114
- bt as isBlankMultiLangString,
115
- as as isValidationFailedError,
116
- aU as likeFilter,
117
- av as loadFieldValidator,
118
- aS as notFilter,
119
- bo as notNull,
120
- b2 as notificationEntries,
121
- aR as orFilter,
122
- bs as parsePathParam,
123
- bk as provideDefaultFrameContext,
124
- aY as provideFieldContext,
125
- b0 as provideModalHandle,
126
- aF as provideSavePoint,
115
+ by as isBlankMultiLangImageFile,
116
+ bw as isBlankMultiLangString,
117
+ au as isValidationFailedError,
118
+ aX as likeFilter,
119
+ ax as loadFieldValidator,
120
+ bz as localeNameProvider,
121
+ aV as notFilter,
122
+ br as notNull,
123
+ b5 as notificationEntries,
124
+ aU as orFilter,
125
+ bv as parsePathParam,
126
+ bn as provideDefaultFrameContext,
127
+ a$ as provideFieldContext,
128
+ b3 as provideModalHandle,
129
+ aH as provideSavePoint,
127
130
  an as provideTabManager,
128
- b5 as showAlarm,
129
- bb as showLoading,
130
- ba as showLoadingIcon,
131
- b3 as showNotification,
132
- b8 as showTooltip,
133
- au as storeFieldValidator,
134
- b7 as tooltipEntry,
135
- br as tryUntil,
136
- bf as useContextMenu,
137
- bg as useContextMenuOptional,
138
- bl as useDefaultFrame,
139
- aZ as useFieldContext,
140
- a$ as useModal,
131
+ b8 as showAlarm,
132
+ be as showLoading,
133
+ bd as showLoadingIcon,
134
+ b6 as showNotification,
135
+ bb as showTooltip,
136
+ aw as storeFieldValidator,
137
+ as as toggleDefaultExpandMultiLang,
138
+ ba as tooltipEntry,
139
+ bu as tryUntil,
140
+ bi as useContextMenu,
141
+ bj as useContextMenuOptional,
142
+ bo as useDefaultFrame,
143
+ b0 as useFieldContext,
144
+ b2 as useModal,
141
145
  u as useModalHandle,
142
- aG as useSavePoint,
146
+ aI as useSavePoint,
143
147
  ao as useTabManager,
144
148
  ap as useTabManagerSilently,
145
149
  a8 as vClickOutside,
146
150
  c as vT,
147
- aw as validateField,
148
- ax as validateFields,
151
+ ay as validateField,
152
+ az as validateFields,
149
153
  w as waitDuring,
150
- bq as waitUntil,
151
- bd as withLoading
154
+ bt as waitUntil,
155
+ bg as withLoading
152
156
  };
@@ -13,6 +13,9 @@ var __publicField = (obj, key, value) => {
13
13
  __publicField(this, "locales", []);
14
14
  __publicField(this, "defaultLocale");
15
15
  __publicField(this, "currentLocale");
16
+ __publicField(this, "dataLocales");
17
+ __publicField(this, "defaultDataLocale");
18
+ __publicField(this, "currentDataLocale");
16
19
  __publicField(this, "defaultCurrencyCode");
17
20
  __publicField(this, "fileUrlPrefix");
18
21
  __publicField(this, "maxFileSize");
@@ -23,6 +26,9 @@ var __publicField = (obj, key, value) => {
23
26
  this.locales = ["en"];
24
27
  this.defaultLocale = this.locales[0];
25
28
  this.currentLocale = this.defaultLocale;
29
+ this.dataLocales = ["en"];
30
+ this.defaultDataLocale = this.dataLocales[0];
31
+ this.currentDataLocale = this.defaultDataLocale;
26
32
  this.defaultCurrencyCode = "USD";
27
33
  this.maxFileSize = 10485760;
28
34
  this.componentConfig = {};
@@ -30,9 +36,18 @@ var __publicField = (obj, key, value) => {
30
36
  configure(options) {
31
37
  var _a;
32
38
  if (options.locales && options.locales.length > 0) {
33
- this.locales = options.locales;
34
- this.defaultLocale = options.defaultLocale || this.locales[0];
35
- this.currentLocale = options.currentLocale || this.defaultLocale;
39
+ this.setLocales(
40
+ options.locales,
41
+ options.defaultLocale || options.locales[0],
42
+ options.currentLocale || options.locales[0]
43
+ );
44
+ }
45
+ if (options.dataLocales && options.dataLocales.length > 0) {
46
+ this.setDataLocales(
47
+ options.dataLocales,
48
+ options.defaultDataLocale || options.dataLocales[0],
49
+ options.currentDataLocale || options.dataLocales[0]
50
+ );
36
51
  }
37
52
  if (options.defaultCurrencyCode) {
38
53
  this.defaultCurrencyCode = options.defaultCurrencyCode;
@@ -48,9 +63,22 @@ var __publicField = (obj, key, value) => {
48
63
  telInput: Object.assign({}, (_a = options.componentConfig) == null ? void 0 : _a.telInput)
49
64
  };
50
65
  }
66
+ setLocales(locales, defaultLocale, currentLocale) {
67
+ this.locales = locales;
68
+ this.defaultLocale = defaultLocale;
69
+ this.currentLocale = currentLocale;
70
+ }
51
71
  setCurrentLocale(locale) {
52
72
  this.currentLocale = locale || this.defaultLocale;
53
73
  }
74
+ setDataLocales(dataLocales, defaultDataLocale, currentDataLocale) {
75
+ this.dataLocales = dataLocales;
76
+ this.defaultDataLocale = defaultDataLocale;
77
+ this.currentDataLocale = currentDataLocale;
78
+ }
79
+ setCurrentDataLocale(locale) {
80
+ this.currentDataLocale = locale || this.defaultDataLocale;
81
+ }
54
82
  }
55
83
  const blueseaConfig = vue.reactive(new BlueseaConfig());
56
84
  const configureBluesea = (options) => {
@@ -59,10 +87,6 @@ var __publicField = (obj, key, value) => {
59
87
  class I18NTexts {
60
88
  constructor() {
61
89
  __publicField(this, "localeTexts", {});
62
- __publicField(this, "defaultLocale", blueseaConfig.defaultLocale);
63
- }
64
- setDefaultLocale(locale) {
65
- this.defaultLocale = locale;
66
90
  }
67
91
  addTexts(locale, textList) {
68
92
  const text = this.ensureAddLocale(locale);
@@ -90,7 +114,7 @@ var __publicField = (obj, key, value) => {
90
114
  parentLocale = parentLocale.substring(0, parentLocale.lastIndexOf("-"));
91
115
  text = (_b = this.localeTexts[parentLocale]) == null ? void 0 : _b[key];
92
116
  }
93
- const defLocale = this.getDefaultLocale();
117
+ const defLocale = blueseaConfig.defaultLocale;
94
118
  if (!text && defLocale && defLocale !== locale) {
95
119
  text = (_c = this.localeTexts[defLocale]) == null ? void 0 : _c[key];
96
120
  }
@@ -98,12 +122,6 @@ var __publicField = (obj, key, value) => {
98
122
  const html = text ? !!text.html : false;
99
123
  return { key, text: resolvedText, resolved: !!text, html };
100
124
  }
101
- getDefaultLocale() {
102
- if (!this.defaultLocale) {
103
- this.defaultLocale = blueseaConfig.defaultLocale;
104
- }
105
- return this.defaultLocale;
106
- }
107
125
  // {0} {1} 등의 변수를 args 로 대치한다.
108
126
  resolveText(text, args) {
109
127
  let result = text.text;
@@ -141,7 +159,7 @@ var __publicField = (obj, key, value) => {
141
159
  return i18n.text(locale || blueseaConfig.currentLocale, key, args).text;
142
160
  } else {
143
161
  const str = text;
144
- return str[locale || blueseaConfig.currentLocale] ?? str[i18n.getDefaultLocale()];
162
+ return str[locale || blueseaConfig.currentDataLocale];
145
163
  }
146
164
  } else {
147
165
  return "";
@@ -160,7 +178,7 @@ var __publicField = (obj, key, value) => {
160
178
  const args = Array.isArray(binding.value.args) ? binding.value.args : void 0;
161
179
  return { key, args, attribute, multiLang: true };
162
180
  } else {
163
- const value = binding.value[blueseaConfig.currentLocale] ?? binding.value[i18n.getDefaultLocale()];
181
+ const value = binding.value[blueseaConfig.currentDataLocale];
164
182
  return { key: value, multiLang: false, attribute };
165
183
  }
166
184
  } else {
@@ -679,6 +697,7 @@ var __publicField = (obj, key, value) => {
679
697
  class SavePointImpl {
680
698
  constructor() {
681
699
  __publicField(this, "fields", vue.markRaw(/* @__PURE__ */ new Map()));
700
+ __publicField(this, "children");
682
701
  }
683
702
  registerField(option) {
684
703
  const handler = new SavePointHandlerImpl({
@@ -699,18 +718,40 @@ var __publicField = (obj, key, value) => {
699
718
  if (field.value)
700
719
  this.fields.delete(field.value);
701
720
  }
721
+ addChild(child) {
722
+ if (!this.children)
723
+ this.children = [];
724
+ this.children.push(child);
725
+ }
726
+ removeChild(child) {
727
+ if (this.children) {
728
+ const index = this.children.findIndex((ch) => ch === child);
729
+ if (index >= 0)
730
+ this.children.splice(index, 1);
731
+ }
732
+ }
702
733
  set() {
734
+ var _a;
703
735
  this.fields.forEach((handler) => handler.saveValue());
736
+ (_a = this.children) == null ? void 0 : _a.forEach((child) => child.set());
704
737
  }
705
738
  async setNextTick() {
706
739
  await vue.nextTick();
707
740
  this.set();
708
741
  }
709
742
  rollback() {
743
+ var _a;
710
744
  this.fields.forEach((handler) => handler.rollbackValue());
745
+ (_a = this.children) == null ? void 0 : _a.forEach((child) => child.rollback());
711
746
  }
712
747
  isModified() {
713
- return !!Array.from(this.fields.values()).find((handler) => handler.isFieldModified());
748
+ if (Array.from(this.fields.values()).find((handler) => handler.isFieldModified())) {
749
+ return true;
750
+ }
751
+ if (this.children) {
752
+ return !!this.children.find((child) => child.isModified());
753
+ }
754
+ return false;
714
755
  }
715
756
  }
716
757
  const provideSavePoint = () => {
@@ -723,6 +764,9 @@ var __publicField = (obj, key, value) => {
723
764
  const result = vue.inject(SAVE_POINT_KEY, dummySavePoint);
724
765
  return result === dummySavePoint ? void 0 : result;
725
766
  };
767
+ const cancelProvidedSavePoint = () => {
768
+ vue.provide(SAVE_POINT_KEY, dummySavePoint);
769
+ };
726
770
  class SavePointHandlerImpl {
727
771
  constructor(valueProvider) {
728
772
  __publicField(this, "saved", false);
@@ -1093,7 +1137,7 @@ var __publicField = (obj, key, value) => {
1093
1137
  submenu.value = menu.children;
1094
1138
  const target = event.target;
1095
1139
  submenuPosition.value = {
1096
- x: props.left + target.offsetWidth,
1140
+ x: (props.left ?? 0) + target.offsetWidth,
1097
1141
  y: props.top + target.offsetTop
1098
1142
  };
1099
1143
  } else {
@@ -1107,7 +1151,7 @@ var __publicField = (obj, key, value) => {
1107
1151
  return (_ctx, _cache) => {
1108
1152
  const _component_BSContextMenu = vue.resolveComponent("BSContextMenu", true);
1109
1153
  return vue.openBlock(), vue.createBlock(_sfc_main$1k, {
1110
- style: vue.normalizeStyle({ left: `${_ctx.left}px`, top: `${_ctx.top}px` }),
1154
+ style: vue.normalizeStyle({ left: _ctx.left !== void 0 ? `${_ctx.left}px` : "auto", top: `${_ctx.top}px` }),
1111
1155
  class: "bs-context-menu",
1112
1156
  onKeydown: vue.withKeys(hideContextMenu, ["esc"])
1113
1157
  }, {
@@ -1147,7 +1191,9 @@ var __publicField = (obj, key, value) => {
1147
1191
  leftIcon: {},
1148
1192
  disabled: { type: Boolean },
1149
1193
  menuItems: {},
1150
- withoutRightIcon: { type: Boolean }
1194
+ withoutRightIcon: { type: Boolean },
1195
+ buttonStyleClass: {},
1196
+ popupStyleClass: {}
1151
1197
  },
1152
1198
  setup(__props) {
1153
1199
  const showPopup = vue.ref(false);
@@ -1169,18 +1215,19 @@ var __publicField = (obj, key, value) => {
1169
1215
  vue.createVNode(BSButton, {
1170
1216
  "button-color": _ctx.buttonColor,
1171
1217
  caption: _ctx.caption,
1218
+ class: vue.normalizeClass(_ctx.buttonStyleClass),
1172
1219
  disabled: _ctx.disabled,
1173
1220
  "left-icon": _ctx.leftIcon,
1174
1221
  "right-icon": _ctx.withoutRightIcon ? void 0 : "arrow_drop_down",
1175
1222
  onClick: _cache[0] || (_cache[0] = ($event) => togglePopup())
1176
- }, null, 8, ["button-color", "caption", "disabled", "left-icon", "right-icon"]),
1223
+ }, null, 8, ["button-color", "caption", "class", "disabled", "left-icon", "right-icon"]),
1177
1224
  showPopup.value ? (vue.openBlock(), vue.createBlock(_sfc_main$1f, {
1178
1225
  key: 0,
1179
- left: 0,
1226
+ class: vue.normalizeClass(_ctx.popupStyleClass),
1180
1227
  "menu-items": _ctx.menuItems,
1181
1228
  top: menuTop.value,
1182
1229
  onMenuClicked: _cache[1] || (_cache[1] = ($event) => togglePopup(false))
1183
- }, null, 8, ["menu-items", "top"])) : vue.createCommentVNode("", true)
1230
+ }, null, 8, ["class", "menu-items", "top"])) : vue.createCommentVNode("", true)
1184
1231
  ])), [
1185
1232
  [vue.unref(vClickOutside), () => togglePopup(false)]
1186
1233
  ]);
@@ -31189,8 +31236,8 @@ img.ProseMirror-separator {
31189
31236
  return formatUtil.formatPercent(Number(cellValue.value));
31190
31237
  } else if (props.column.cellType === "DATE") {
31191
31238
  return formatUtil.formatDate(cellValue.value ? String(cellValue.value) : "", props.column.dateFormat);
31192
- } else if (props.column.cellType === "MULTI_LANG_TEXT" && typeof cellValue.value === "object") {
31193
- return cellValue.value[blueseaConfig.currentLocale];
31239
+ } else if (props.column.cellType === "MULTI_LANG_STRING" && typeof cellValue.value === "object") {
31240
+ return cellValue.value[blueseaConfig.currentDataLocale];
31194
31241
  } else {
31195
31242
  return cellValue.value;
31196
31243
  }
@@ -31708,6 +31755,24 @@ img.ProseMirror-separator {
31708
31755
  if (column.render.fixed)
31709
31756
  await setFixedCellLeftStyle(table.value);
31710
31757
  };
31758
+ const parentSavePoint = useSavePoint();
31759
+ if (parentSavePoint) {
31760
+ const childSavePoint = {
31761
+ set() {
31762
+ },
31763
+ rollback() {
31764
+ },
31765
+ isModified() {
31766
+ return !!internalEditingRows.getRows().find((row) => {
31767
+ var _a;
31768
+ return (_a = row.savePoint) == null ? void 0 : _a.isModified();
31769
+ });
31770
+ }
31771
+ };
31772
+ parentSavePoint.addChild(childSavePoint);
31773
+ vue.onBeforeUnmount(() => parentSavePoint.removeChild(childSavePoint));
31774
+ cancelProvidedSavePoint();
31775
+ }
31711
31776
  return (_ctx, _cache) => {
31712
31777
  var _a, _b, _c;
31713
31778
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -32849,7 +32914,7 @@ img.ProseMirror-separator {
32849
32914
  if (value && prefix) {
32850
32915
  for (const locale in value) {
32851
32916
  const prefixText = interpretMultiLangText(prefix, locale);
32852
- value[locale] = `${prefixText}${value[locale]}`;
32917
+ value[locale] = `${prefixText || ""}${value[locale]}`;
32853
32918
  }
32854
32919
  }
32855
32920
  };
@@ -32864,6 +32929,10 @@ img.ProseMirror-separator {
32864
32929
  }
32865
32930
  return true;
32866
32931
  };
32932
+ const localeNameProvider = (locale) => {
32933
+ const displayNames = new Intl.DisplayNames([locale], { type: "language" });
32934
+ return displayNames.of(locale);
32935
+ };
32867
32936
  const _hoisted_1$o = { key: 0 };
32868
32937
  const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
32869
32938
  __name: "BSMultiLangTextInput",
@@ -35230,6 +35299,7 @@ img.ProseMirror-separator {
35230
35299
  exports2.betweenDateFilter = betweenDateFilter;
35231
35300
  exports2.betweenFilter = betweenFilter;
35232
35301
  exports2.blueseaConfig = blueseaConfig;
35302
+ exports2.cancelProvidedSavePoint = cancelProvidedSavePoint;
35233
35303
  exports2.closeAlarm = closeAlarm;
35234
35304
  exports2.configureBluesea = configureBluesea;
35235
35305
  exports2.createContextMenuPlugin = createContextMenuPlugin;
@@ -35238,6 +35308,7 @@ img.ProseMirror-separator {
35238
35308
  exports2.createModalPlugin = createModalPlugin;
35239
35309
  exports2.createPageGridHandler = createPageGridHandler;
35240
35310
  exports2.createTreeHandler = createTreeHandler;
35311
+ exports2.defaultExpandMultiLang = defaultExpandMultiLang;
35241
35312
  exports2.equalFilter = equalFilter;
35242
35313
  exports2.executeBetweenLengthValidation = executeBetweenLengthValidation;
35243
35314
  exports2.executeBetweenValueValidation = executeBetweenValueValidation;
@@ -35257,6 +35328,7 @@ img.ProseMirror-separator {
35257
35328
  exports2.isValidationFailedError = isValidationFailedError;
35258
35329
  exports2.likeFilter = likeFilter;
35259
35330
  exports2.loadFieldValidator = loadFieldValidator;
35331
+ exports2.localeNameProvider = localeNameProvider;
35260
35332
  exports2.notFilter = notFilter;
35261
35333
  exports2.notNull = notNull;
35262
35334
  exports2.notificationEntries = notificationEntries;
@@ -35273,6 +35345,7 @@ img.ProseMirror-separator {
35273
35345
  exports2.showNotification = showNotification;
35274
35346
  exports2.showTooltip = showTooltip;
35275
35347
  exports2.storeFieldValidator = storeFieldValidator;
35348
+ exports2.toggleDefaultExpandMultiLang = toggleDefaultExpandMultiLang;
35276
35349
  exports2.tooltipEntry = tooltipEntry;
35277
35350
  exports2.tryUntil = tryUntil;
35278
35351
  exports2.useContextMenu = useContextMenu;
@@ -8,6 +8,8 @@ declare const _default: import('vue').DefineComponent<__VLS_TypePropsToRuntimePr
8
8
  disabled?: boolean | undefined;
9
9
  menuItems?: MenuItem[] | undefined;
10
10
  withoutRightIcon?: boolean | undefined;
11
+ buttonStyleClass?: string | string[] | unknown;
12
+ popupStyleClass?: string | string[] | unknown;
11
13
  }>, {}, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
12
14
  caption?: MultiLangText | undefined;
13
15
  buttonColor?: string | undefined;
@@ -15,6 +17,8 @@ declare const _default: import('vue').DefineComponent<__VLS_TypePropsToRuntimePr
15
17
  disabled?: boolean | undefined;
16
18
  menuItems?: MenuItem[] | undefined;
17
19
  withoutRightIcon?: boolean | undefined;
20
+ buttonStyleClass?: string | string[] | unknown;
21
+ popupStyleClass?: string | string[] | unknown;
18
22
  }>>>, {}, {}>;
19
23
  export default _default;
20
24
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
@@ -7,7 +7,7 @@ import { KeyProvider, MultiLangText } from '../../model/CommonTypes';
7
7
  import { SavePoint } from '../../savepoint/SavePoint';
8
8
 
9
9
  export declare const DEFAULT_GRID_COLUMN_WIDTH = 100;
10
- export type GridCellType = 'TEXT' | 'NUMBER' | 'DATE' | 'PERCENTAGE' | 'BOOL' | 'MULTI_LANG_TEXT';
10
+ export type GridCellType = 'TEXT' | 'NUMBER' | 'DATE' | 'PERCENTAGE' | 'BOOL' | 'MULTI_LANG_STRING';
11
11
  export type Column = {
12
12
  propertyId: string;
13
13
  caption: MultiLangText;
@@ -13,6 +13,9 @@ export type BlueseaConfigRaw = {
13
13
  locales?: LocaleName[];
14
14
  defaultLocale?: LocaleName;
15
15
  currentLocale?: LocaleName;
16
+ dataLocales?: LocaleName[];
17
+ defaultDataLocale?: LocaleName;
18
+ currentDataLocale?: LocaleName;
16
19
  timeZones?: TimeZone[];
17
20
  defaultCurrencyCode?: CurrencyCode;
18
21
  fileUrlPrefix?: string;
@@ -26,6 +29,9 @@ export declare const blueseaConfig: {
26
29
  locales: LocaleName[];
27
30
  defaultLocale: LocaleName;
28
31
  currentLocale: LocaleName;
32
+ dataLocales: LocaleName[];
33
+ defaultDataLocale: LocaleName;
34
+ currentDataLocale: LocaleName;
29
35
  defaultCurrencyCode: CurrencyCode;
30
36
  fileUrlPrefix?: string | undefined;
31
37
  maxFileSize: number;
@@ -50,6 +56,9 @@ export declare const blueseaConfig: {
50
56
  } | undefined;
51
57
  };
52
58
  configure: (options: BlueseaConfigRaw) => void;
59
+ setLocales: (locales: LocaleName[], defaultLocale: LocaleName, currentLocale: LocaleName) => void;
53
60
  setCurrentLocale: (locale?: LocaleName) => void;
61
+ setDataLocales: (dataLocales: LocaleName[], defaultDataLocale: LocaleName, currentDataLocale: LocaleName) => void;
62
+ setCurrentDataLocale: (locale?: LocaleName) => void;
54
63
  };
55
64
  export declare const configureBluesea: (options: BlueseaConfigRaw) => void;
@@ -1,16 +1,16 @@
1
1
  import { MenuItem } from './contextMenuPlugin';
2
2
 
3
- declare const _default: import('vue').DefineComponent<__VLS_TypePropsToRuntimeProps<{
3
+ declare const _default: import('vue').DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
4
4
  menuItems?: MenuItem[] | undefined;
5
- left: number;
5
+ left?: number | undefined;
6
6
  top: number;
7
- }>, {}, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
+ }>, {}>, {}, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
8
8
  menuClicked: (menu: MenuItem) => void;
9
- }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
9
+ }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
10
10
  menuItems?: MenuItem[] | undefined;
11
- left: number;
11
+ left?: number | undefined;
12
12
  top: number;
13
- }>>> & {
13
+ }>, {}>>> & {
14
14
  onMenuClicked?: ((menu: MenuItem) => any) | undefined;
15
15
  }, {}, {}>;
16
16
  export default _default;
@@ -23,3 +23,11 @@ type __VLS_TypePropsToRuntimeProps<T> = {
23
23
  required: true;
24
24
  };
25
25
  };
26
+ type __VLS_WithDefaults<P, D> = {
27
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
28
+ default: D[K];
29
+ }> : P[K];
30
+ };
31
+ type __VLS_Prettify<T> = {
32
+ [K in keyof T]: T[K];
33
+ } & {};