@g1cloud/bluesea 5.0.0-beta.6 → 5.0.0-beta.8

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.
Files changed (27) hide show
  1. package/dist/{BSAlertModal-B6XlvWm2.js → BSAlertModal-C8PIj5h_.js} +1 -1
  2. package/dist/{BSGridColumnSettingModal-DgqYUHUF.js → BSGridColumnSettingModal-D9CI-F_e.js} +1 -1
  3. package/dist/{BSRichTextMaximizedModal-DhmCYN9S.js → BSRichTextMaximizedModal-DsSYqgSR.js} +1 -1
  4. package/dist/{BSYesNoModal-CcElFZw-.js → BSYesNoModal-CB_RIKt0.js} +1 -1
  5. package/dist/{BSYoutubeInputModal-DLXCEq2-.js → BSYoutubeInputModal-CwLcWtEI.js} +1 -1
  6. package/dist/{ImageInsertModal-B5WoMehM.js → ImageInsertModal-lWQeIMu7.js} +2 -2
  7. package/dist/{ImageProperties.vue_vue_type_script_setup_true_lang-BIoCOwlw.js → ImageProperties.vue_vue_type_script_setup_true_lang-DDj0Odaa.js} +1 -1
  8. package/dist/{ImagePropertiesModal-AuLfc63Y.js → ImagePropertiesModal-C6RyT5B5.js} +2 -2
  9. package/dist/{LinkPropertiesModal-CzM1G8qN.js → LinkPropertiesModal-D5A3Gq2i.js} +1 -1
  10. package/dist/{TableInsertModal-ChcQJBQV.js → TableInsertModal-B1F5T8qs.js} +1 -1
  11. package/dist/{TablePropertiesModal-C1FzxMmL.js → TablePropertiesModal-DUiHSjcT.js} +1 -1
  12. package/dist/{VideoInsertModal-Blyjl-az.js → VideoInsertModal-R0Bs5E2T.js} +2 -2
  13. package/dist/{VideoProperties.vue_vue_type_script_setup_true_lang-C7l371rG.js → VideoProperties.vue_vue_type_script_setup_true_lang-BCTNqg94.js} +1 -1
  14. package/dist/{VideoPropertiesModal-CcgFfcXd.js → VideoPropertiesModal-DQADTS-J.js} +2 -2
  15. package/dist/{YoutubeInsertModal-B81eZZ3b.js → YoutubeInsertModal-R97l6ge3.js} +2 -2
  16. package/dist/{YoutubeProperties.vue_vue_type_script_setup_true_lang-DKGiIhRX.js → YoutubeProperties.vue_vue_type_script_setup_true_lang-Ce9a5UDA.js} +1 -1
  17. package/dist/{YoutubePropertiesModal-BI7rBusJ.js → YoutubePropertiesModal-BbrU7l5m.js} +2 -2
  18. package/dist/bluesea.js +107 -105
  19. package/dist/bluesea.umd.cjs +97 -31
  20. package/dist/component/grid/DateFilterModel.d.ts +15 -0
  21. package/dist/component/grid/GridModel.d.ts +1 -0
  22. package/dist/component/input/BSDateRangePresets.vue.d.ts +2 -2
  23. package/dist/component/input/DateRangePresetModel.d.ts +2 -0
  24. package/dist/component/tree/TreeModel.d.ts +28 -0
  25. package/dist/config/config.d.ts +3 -2
  26. package/dist/{index-DzQ05auj.js → index-DRs7QwNQ.js} +217 -151
  27. package/package.json +1 -1
@@ -118,6 +118,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
118
118
  __publicField(this, "currentLocale");
119
119
  __publicField(this, "dataLocales");
120
120
  __publicField(this, "currentDataLocale");
121
+ __publicField(this, "defaultDataLocale");
121
122
  __publicField(this, "timeZone");
122
123
  __publicField(this, "displayTimeZones");
123
124
  __publicField(this, "allTimeZones");
@@ -142,6 +143,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
142
143
  this.currentLocale = this.defaultLocale;
143
144
  this.dataLocales = ["en"];
144
145
  this.currentDataLocale = this.dataLocales[0];
146
+ this.defaultDataLocale = this.dataLocales[0];
145
147
  this.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
146
148
  this.displayTimeZones = [];
147
149
  this.allTimeZones = [this.timeZone];
@@ -163,7 +165,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
163
165
  if (options.dataLocales && options.dataLocales.length > 0) {
164
166
  this.setDataLocales(
165
167
  options.dataLocales,
166
- options.currentDataLocale || options.dataLocales[0]
168
+ options.currentDataLocale || options.dataLocales[0],
169
+ options.defaultDataLocale || options.dataLocales[0]
167
170
  );
168
171
  }
169
172
  if (options.timeZone) this.timeZone = options.timeZone;
@@ -212,9 +215,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
212
215
  setCurrentLocale(locale) {
213
216
  this.currentLocale = locale || this.defaultLocale;
214
217
  }
215
- setDataLocales(dataLocales, currentDataLocale) {
218
+ setDataLocales(dataLocales, currentDataLocale, defaultDataLocale) {
216
219
  this.dataLocales = dataLocales;
217
220
  this.currentDataLocale = currentDataLocale;
221
+ this.defaultDataLocale = defaultDataLocale || dataLocales[0];
218
222
  }
219
223
  setCurrentDataLocale(locale) {
220
224
  this.currentDataLocale = locale || this.dataLocales[0] || "en";
@@ -4684,6 +4688,11 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
4684
4688
  });
4685
4689
  dayjs.extend(utc);
4686
4690
  dayjs.extend(timezone);
4691
+ const createDateRangeFromPreset = (value, timeZone) => {
4692
+ const from = value.from ? resolveMoment(value.from, true, timeZone) : void 0;
4693
+ const to = value.to ? resolveMoment(value.to, false, timeZone) : void 0;
4694
+ return { from: from == null ? void 0 : from.toISOString(), to: to == null ? void 0 : to.toISOString() };
4695
+ };
4687
4696
  const resolveMoment = (setting, from, timeZone, baseDate) => {
4688
4697
  switch (setting.type) {
4689
4698
  case "TODAY":
@@ -4950,25 +4959,20 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
4950
4959
  const emit = __emit;
4951
4960
  const actualTimeZone = vue.computed(() => props.timeZone || blueseaConfig.timeZone);
4952
4961
  const currentPreset = vue.ref();
4953
- const createDateRange = (value) => {
4954
- const from = value.from ? resolveMoment(value.from, true, actualTimeZone.value) : void 0;
4955
- const to = value.to ? resolveMoment(value.to, false, actualTimeZone.value) : void 0;
4956
- return { from: from == null ? void 0 : from.toISOString(), to: to == null ? void 0 : to.toISOString() };
4957
- };
4958
4962
  const presetSelected = (value) => {
4959
- const range = value ? createDateRange(value) : void 0;
4960
- emit("update:modelValue", range);
4963
+ const range = value ? createDateRangeFromPreset(value, actualTimeZone.value) : void 0;
4964
+ emit("update:modelValue", range, value);
4961
4965
  };
4962
- const findPreset = (range) => {
4966
+ const findPreset2 = (range) => {
4963
4967
  return props.presets.find((preset) => {
4964
- const presetValue = createDateRange(preset);
4968
+ const presetValue = createDateRangeFromPreset(preset, actualTimeZone.value);
4965
4969
  return (range == null ? void 0 : range.from) === presetValue.from && (range == null ? void 0 : range.to) === presetValue.to;
4966
4970
  });
4967
4971
  };
4968
4972
  vue.watch(
4969
4973
  () => props.modelValue,
4970
4974
  () => {
4971
- currentPreset.value = findPreset(props.modelValue);
4975
+ currentPreset.value = findPreset2(props.modelValue);
4972
4976
  },
4973
4977
  { immediate: true }
4974
4978
  );
@@ -6149,16 +6153,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
6149
6153
  },
6150
6154
  clickRemoveButton: () => this.removeSelectedItem(),
6151
6155
  expandAll: () => {
6152
- const allParents = this.getAllParents();
6153
- if (this.expandedRows.size === allParents.size) {
6154
- this.expandedRows.clear();
6155
- } else {
6156
- allParents.forEach((item) => {
6157
- const key = option.getItemKey(item);
6158
- if (key) this.expandedRows.add(key);
6159
- });
6160
- }
6161
- this.updateAllExpanded();
6156
+ this.expandAll(this.expandedRows.size !== this.getAllParents().size);
6162
6157
  }
6163
6158
  };
6164
6159
  }
@@ -6294,6 +6289,25 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
6294
6289
  }
6295
6290
  this.cleanUpExpandedRows(this.expandedRows, this.tree.data);
6296
6291
  }
6292
+ expandAll(expandOrDepth) {
6293
+ if (expandOrDepth === true) {
6294
+ const allParents = this.getAllParents();
6295
+ allParents.forEach((item) => {
6296
+ const key = this.option.getItemKey(item);
6297
+ if (key) this.expandedRows.add(key);
6298
+ });
6299
+ } else if (expandOrDepth === false) {
6300
+ this.expandedRows.clear();
6301
+ } else if (expandOrDepth > 1) {
6302
+ const parents = /* @__PURE__ */ new Set();
6303
+ this.collectParents(parents, this.tree.data, this.option.getChildren, expandOrDepth - 1);
6304
+ parents.forEach((item) => {
6305
+ const key = this.option.getItemKey(item);
6306
+ if (key) this.expandedRows.add(key);
6307
+ });
6308
+ }
6309
+ this.updateAllExpanded();
6310
+ }
6297
6311
  forceRemoveItems(items) {
6298
6312
  items.forEach((item) => {
6299
6313
  var _a2, _b;
@@ -6330,12 +6344,14 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
6330
6344
  }
6331
6345
  }
6332
6346
  }
6333
- collectParents(parents, list, childrenProvider) {
6347
+ collectParents(parents, list, childrenProvider, maxDepth) {
6334
6348
  for (const item of list) {
6335
6349
  const children = childrenProvider(item);
6336
6350
  if (children && children.length > 0) {
6337
6351
  parents.add(item);
6338
- this.collectParents(parents, children, childrenProvider);
6352
+ if (maxDepth === void 0 || maxDepth > 1) {
6353
+ this.collectParents(parents, children, childrenProvider, maxDepth ? maxDepth - 1 : void 0);
6354
+ }
6339
6355
  }
6340
6356
  }
6341
6357
  }
@@ -36194,6 +36210,7 @@ img.ProseMirror-separator {
36194
36210
  this.selectDeleteSupport.removeIfAddedRow = (row) => this.editableSupport.removeIfAddedRow(row);
36195
36211
  }
36196
36212
  setGridData(data) {
36213
+ GridHandlerEditableSupport.cleanUpData(data);
36197
36214
  super.setGridData(data);
36198
36215
  this.editableSupport.clearAddedRows();
36199
36216
  }
@@ -36280,6 +36297,11 @@ img.ProseMirror-separator {
36280
36297
  };
36281
36298
  controlEventListener.clickAdd = () => this.createAndAddNewRow();
36282
36299
  }
36300
+ static cleanUpData(data) {
36301
+ data == null ? void 0 : data.forEach((row) => {
36302
+ if (row && row[GRID_NEW_ROW_KEY]) delete row[GRID_NEW_ROW_KEY];
36303
+ });
36304
+ }
36283
36305
  getModifiedRows() {
36284
36306
  var _a2;
36285
36307
  const addedKeys = this.addedRows.map((row) => row[GRID_NEW_ROW_KEY]);
@@ -37801,6 +37823,35 @@ img.ProseMirror-separator {
37801
37823
  };
37802
37824
  }
37803
37825
  });
37826
+ const serializeMomentSetting = (setting) => {
37827
+ if (!setting) return "";
37828
+ const value = setting.value === void 0 ? "" : `:${setting.value}`;
37829
+ return `${setting.type}${value}`;
37830
+ };
37831
+ const convertDateRangePresetKey = (preset) => {
37832
+ return `${serializeMomentSetting(preset.from)}~${serializeMomentSetting(preset.to)}`;
37833
+ };
37834
+ const findPreset = (presetKey, candidatePresets) => {
37835
+ if (!presetKey) return void 0;
37836
+ return candidatePresets == null ? void 0 : candidatePresets.find((preset) => convertDateRangePresetKey(preset) === presetKey);
37837
+ };
37838
+ class BetweenDateFilterWithPreset extends BetweenDateFilter {
37839
+ constructor(name2, fromValue, toValue, preset) {
37840
+ super(name2, fromValue, toValue);
37841
+ __publicField(this, "presetKey");
37842
+ this.name = name2;
37843
+ this.fromValue = fromValue;
37844
+ this.toValue = toValue;
37845
+ this.presetKey = preset ? convertDateRangePresetKey(preset) : void 0;
37846
+ }
37847
+ // candidatePresets 중 presetKey 에 해당하는 preset 을 찾아, fromValue, toValue 를 설정한다.
37848
+ // preset 을 찾을 수 없으면 undefined 를 리턴한다.
37849
+ static createFromPresetKey(name2, presetKey, candidatePresets, timeZone) {
37850
+ const preset = findPreset(presetKey, candidatePresets);
37851
+ const range = preset ? createDateRangeFromPreset(preset, timeZone) : void 0;
37852
+ return range ? new BetweenDateFilterWithPreset(name2, range.from, range.to, preset) : void 0;
37853
+ }
37854
+ }
37804
37855
  const _hoisted_1$N = {
37805
37856
  key: 0,
37806
37857
  class: "date-filters .bs-layout-vertical mr-16"
@@ -37859,9 +37910,10 @@ img.ProseMirror-separator {
37859
37910
  if (propertyId) item.propertyId = propertyId;
37860
37911
  emitValue();
37861
37912
  };
37862
- const setDateFilterValue = (index, value) => {
37913
+ const setDateFilterValue = (index, value, preset) => {
37863
37914
  const item = dateFilterValues.value[index];
37864
37915
  item.value = value || {};
37916
+ item.preset = preset;
37865
37917
  emitValue();
37866
37918
  };
37867
37919
  const addDateFilter = () => {
@@ -37886,7 +37938,7 @@ img.ProseMirror-separator {
37886
37938
  };
37887
37939
  const emitValue = () => {
37888
37940
  var _a2;
37889
- const filters = dateFilterValues.value.map((item) => betweenDateFilter(item.propertyId, item.value.from, item.value.to));
37941
+ const filters = dateFilterValues.value.map((item) => new BetweenDateFilterWithPreset(item.propertyId, item.value.from, item.value.to, item.preset));
37890
37942
  const and = filters.length > 0 ? andFilter(filters) : void 0;
37891
37943
  if (((_a2 = props.modelValue) == null ? void 0 : _a2.toString()) !== (and == null ? void 0 : and.toString())) {
37892
37944
  emit("update:modelValue", and);
@@ -37953,10 +38005,11 @@ img.ProseMirror-separator {
37953
38005
  }, null, 8, ["display-format", "from-id", "model-value", "name-from", "name-to", "popup-display-format", "popup-end-year", "popup-start-year", "resolution", "time-zone", "to-id", "width", "onUpdate:modelValue"]),
37954
38006
  vue.createVNode(_sfc_main$1A, {
37955
38007
  modelValue: item.value,
37956
- "onUpdate:modelValue": [($event) => item.value = $event, ($event) => setDateFilterValue(index, $event)],
38008
+ "onUpdate:modelValue": [($event) => item.value = $event, (value, preset) => setDateFilterValue(index, value, preset)],
37957
38009
  presets: _ctx.presets,
38010
+ "time-zone": timeZoneOfFilterItem(item.propertyId),
37958
38011
  class: "ml-4"
37959
- }, null, 8, ["modelValue", "onUpdate:modelValue", "presets"])
38012
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "presets", "time-zone"])
37960
38013
  ]);
37961
38014
  }), 128))
37962
38015
  ])) : vue.createCommentVNode("", true);
@@ -38012,12 +38065,23 @@ img.ProseMirror-separator {
38012
38065
  emitUpdateModelValue();
38013
38066
  emitSearch();
38014
38067
  };
38068
+ const findDateFilterTimeZone = (name2, dateFilter) => {
38069
+ var _a2;
38070
+ return ((_a2 = dateFilter == null ? void 0 : dateFilter.filterItems.find((f) => f.propertyId === name2)) == null ? void 0 : _a2.timeZone) || blueseaConfig.timeZone;
38071
+ };
38015
38072
  vue.watch(() => props.gridPreferenceDateFilterValues, () => {
38016
38073
  if (props.gridPreferenceDateFilterValues && props.gridPreferenceDateFilterValues.filters && props.gridPreferenceDateFilterValues.filters.length > 0) {
38017
38074
  const filters = props.gridPreferenceDateFilterValues.filters.map((filter) => {
38018
- const dateFilter = filter;
38019
- if (dateFilter.name && (dateFilter.fromValue || dateFilter.toValue)) {
38020
- return betweenDateFilter(dateFilter.name, dateFilter.fromValue, dateFilter.toValue);
38075
+ var _a2, _b;
38076
+ const f = filter;
38077
+ if (f.name && (f.fromValue || f.toValue)) {
38078
+ if (f.presetKey) {
38079
+ const presets = props.dateRangePresets || ((_a2 = blueseaConfig.componentConfig.gridLookup) == null ? void 0 : _a2.dateRangePresets) || [];
38080
+ const timeZone = findDateFilterTimeZone(f.name, (_b = props.config) == null ? void 0 : _b.dateFilter);
38081
+ return BetweenDateFilterWithPreset.createFromPresetKey(f.name, f.presetKey, presets, timeZone);
38082
+ } else {
38083
+ return new BetweenDateFilterWithPreset(f.name, f.fromValue, f.toValue);
38084
+ }
38021
38085
  }
38022
38086
  }).filter(notNull);
38023
38087
  if (filters.length > 0) {
@@ -72011,6 +72075,7 @@ img.ProseMirror-separator {
72011
72075
  exports2.BSYesNoGroup = _sfc_main$1x;
72012
72076
  exports2.BSYesNoSelect = _sfc_main$1V;
72013
72077
  exports2.BetweenDateFilter = BetweenDateFilter;
72078
+ exports2.BetweenDateFilterWithPreset = BetweenDateFilterWithPreset;
72014
72079
  exports2.BetweenFilter = BetweenFilter;
72015
72080
  exports2.DEFAULT_GRID_COLUMN_WIDTH = DEFAULT_GRID_COLUMN_WIDTH;
72016
72081
  exports2.DefaultBody = _sfc_main$h;
@@ -72057,6 +72122,7 @@ img.ProseMirror-separator {
72057
72122
  exports2.closeAlarm = closeAlarm;
72058
72123
  exports2.configureBluesea = configureBluesea;
72059
72124
  exports2.contextMenuPluginKey = contextMenuPluginKey;
72125
+ exports2.convertDateRangePresetKey = convertDateRangePresetKey;
72060
72126
  exports2.createContextMenuPlugin = createContextMenuPlugin;
72061
72127
  exports2.createDefaultFrameContext = createDefaultFrameContext;
72062
72128
  exports2.createInputGridHandler = createInputGridHandler;
@@ -1,4 +1,19 @@
1
+ import { BetweenDateFilter } from '../../model/FilterModel.ts';
2
+ import { Dayjs } from 'dayjs';
3
+ import { DateRangePreset } from '../input/DateRangePresetModel.ts';
4
+ import { TimeZone } from '../../model/CommonTypes.ts';
5
+
1
6
  export type DateRange = {
2
7
  from?: string;
3
8
  to?: string;
4
9
  };
10
+ export type DateRangePresetKey = string;
11
+ export declare const convertDateRangePresetKey: (preset: DateRangePreset) => DateRangePresetKey;
12
+ export declare class BetweenDateFilterWithPreset extends BetweenDateFilter {
13
+ readonly name: string;
14
+ readonly fromValue?: string | Date | Dayjs | undefined;
15
+ readonly toValue?: string | Date | Dayjs | undefined;
16
+ presetKey?: DateRangePresetKey;
17
+ constructor(name: string, fromValue?: string | Date | Dayjs | undefined, toValue?: string | Date | Dayjs | undefined, preset?: DateRangePreset);
18
+ static createFromPresetKey(name: string, presetKey: DateRangePresetKey, candidatePresets: DateRangePreset[], timeZone: TimeZone): BetweenDateFilterWithPreset | undefined;
19
+ }
@@ -341,6 +341,7 @@ export declare class GridHandlerEditableSupport<T extends GridRowData> {
341
341
  private listener?;
342
342
  addedRows: T[];
343
343
  constructor(grid: UnwrapNestedRefs<GridBinding<T>>, gridEventListener: GridEventListener<T>, controlEventListener: GridControlEventListener, getRowKey: KeyProvider<T>, newRowCreator?: (() => T | undefined) | undefined, addRowToLast?: boolean | undefined, listener?: ((eventType: 'rowAdded' | 'rowRemoved') => void) | undefined);
344
+ static cleanUpData<T extends GridRowData>(data: T[]): void;
344
345
  getModifiedRows(): T[];
345
346
  getAddedRows(): T[];
346
347
  clearAddedRows(): void;
@@ -8,7 +8,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
8
8
  }>, {
9
9
  presets: () => DateRangePreset[];
10
10
  }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
11
- "update:modelValue": (value: DateRange | undefined) => void;
11
+ "update:modelValue": (value: DateRange | undefined, preset: DateRangePreset | undefined) => void;
12
12
  }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
13
13
  modelValue?: DateRange | undefined;
14
14
  presets?: DateRangePreset[] | undefined;
@@ -16,7 +16,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
16
16
  }>, {
17
17
  presets: () => DateRangePreset[];
18
18
  }>>> & Readonly<{
19
- "onUpdate:modelValue"?: ((value: DateRange | undefined) => any) | undefined;
19
+ "onUpdate:modelValue"?: ((value: DateRange | undefined, preset: DateRangePreset | undefined) => any) | undefined;
20
20
  }>, {
21
21
  presets: DateRangePreset[];
22
22
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -1,5 +1,6 @@
1
1
  import { MultiLangText, TimeZone } from '../../model/CommonTypes.ts';
2
2
  import { Dayjs } from 'dayjs';
3
+ import { DateRange } from '../grid/DateFilterModel.ts';
3
4
 
4
5
  export type MomentType = 'TODAY' | 'THIS_WEEK' | 'THIS_MONTH' | 'THIS_YEAR' | 'LAST_HOURS' | 'LAST_DAYS' | 'DAYS_AGO' | 'WEEKS_AGO' | 'MONTHS_AGO' | 'YEARS_AGO';
5
6
  export type MomentSetting = {
@@ -11,4 +12,5 @@ export type DateRangePreset = {
11
12
  from?: MomentSetting;
12
13
  to?: MomentSetting;
13
14
  };
15
+ export declare const createDateRangeFromPreset: (value: DateRangePreset, timeZone: TimeZone) => DateRange;
14
16
  export declare const resolveMoment: (setting: MomentSetting, from: boolean, timeZone: TimeZone, baseDate?: Dayjs) => Dayjs | undefined;
@@ -35,9 +35,28 @@ export interface TreeHandler<T> {
35
35
  treeEventListener: TreeEventListener<T>;
36
36
  control: UnwrapNestedRefs<TreeControlBinding<T>>;
37
37
  controlEventListener: TreeControlEventListener;
38
+ /**
39
+ * Tree 에 data 를 넣는다.
40
+ * @param data
41
+ * @param keepSelection true 이면 현재 선택된 항목이 유지된다.
42
+ * @param keepExpanded true 이면 현재 expanded 인 항목이 유지된다.
43
+ * @param waitTime 이 값이 0보다 크면 이 시간동안 tree 를 비웠다가 다시 채운다. refresh 효과를 위해 사용한다. millisecond 단위.
44
+ */
38
45
  setTreeData(data: T[], keepSelection?: boolean, keepExpanded?: boolean, waitTime?: number): Promise<void>;
46
+ /**
47
+ * 항목을 선택한다.
48
+ * @param item
49
+ */
39
50
  selectItem(item: T | T[] | undefined): void;
51
+ /**
52
+ * `item` 의 parent 를 리턴한다.
53
+ * @param item
54
+ */
40
55
  getParent(item: T | undefined): T | undefined;
56
+ /**
57
+ * `item` 을 교체한다. item 이 변경된 경우, 변경된 객체를 tree 에 다시 표시할 때 사용한다.
58
+ * @param newItem
59
+ */
41
60
  replaceCurrentItem(newItem: T): void;
42
61
  /**
43
62
  * Tree 이 모든 항목을 순회하며 visitor 함수를 호출한다. visitor 함수가
@@ -63,7 +82,16 @@ export interface TreeHandler<T> {
63
82
  * @param index 추가할 위치. 0 보다 작으면 제일 마지막에 추가한다. 디폴트는 -1.
64
83
  */
65
84
  addChildItem(parent: T, index: number): void;
85
+ /**
86
+ * `items` 를 삭제한다.
87
+ * @param items
88
+ */
66
89
  removeItems(items: T[]): void;
90
+ /**
91
+ * Tree 전체를 펼치거나 접는다.
92
+ * @param expandOrDepth true 이면 전체를 펼치고, false 이면 접는다. 숫자이면 해당 depth 까지 표시되도록 펼친다.
93
+ */
94
+ expandAll(expandOrDepth: boolean | number): void;
67
95
  }
68
96
  export type TreeBinding<T> = {
69
97
  data: T[];
@@ -94,6 +94,7 @@ declare class BlueseaConfig {
94
94
  currentLocale: LocaleName;
95
95
  dataLocales: LocaleName[];
96
96
  currentDataLocale: LocaleName;
97
+ defaultDataLocale: LocaleName;
97
98
  timeZone: TimeZone;
98
99
  displayTimeZones: TimeZone[];
99
100
  allTimeZones: TimeZone[];
@@ -117,7 +118,7 @@ declare class BlueseaConfig {
117
118
  configure(options: BlueseaConfigRaw): void;
118
119
  setLocales(locales: LocaleName[], defaultLocale: LocaleName, currentLocale: LocaleName): void;
119
120
  setCurrentLocale(locale?: LocaleName): void;
120
- setDataLocales(dataLocales: LocaleName[], currentDataLocale: LocaleName): void;
121
+ setDataLocales(dataLocales: LocaleName[], currentDataLocale: LocaleName, defaultDataLocale?: LocaleName): void;
121
122
  setCurrentDataLocale(locale?: LocaleName): void;
122
123
  getValidDisplayTimeZones(): TimeZone[];
123
124
  resolveDisplayDateFormat(format?: string | DisplayDateResolution): string;
@@ -127,8 +128,8 @@ export type BlueseaConfigRaw = {
127
128
  defaultLocale?: LocaleName;
128
129
  currentLocale?: LocaleName;
129
130
  dataLocales?: LocaleName[];
130
- defaultDataLocale?: LocaleName;
131
131
  currentDataLocale?: LocaleName;
132
+ defaultDataLocale?: LocaleName;
132
133
  timeZone?: TimeZone;
133
134
  displayTimeZones?: TimeZone[];
134
135
  allTimeZones?: TimeZone[];