@jetlinks-web/components 2.4.25 → 2.5.0

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 (65) hide show
  1. package/es/EditTable/Body.js +91 -181
  2. package/es/EditTable/EditTable.js +178 -105
  3. package/es/EditTable/FormItem.js +3 -4
  4. package/es/EditTable/Header.js +56 -164
  5. package/es/EditTable/components/ContextMenu/Menu.js +11 -7
  6. package/es/EditTable/components/Search/index.js +2 -1
  7. package/es/EditTable/components/Search/{Search.js → search.js} +94 -66
  8. package/es/EditTable/components/Search/sort.js +214 -0
  9. package/es/EditTable/consts.js +6 -1
  10. package/es/EditTable/context.js +50 -0
  11. package/es/EditTable/group.js +355 -0
  12. package/es/EditTable/hooks/index.js +1 -0
  13. package/es/EditTable/hooks/useGroup.js +44 -0
  14. package/es/EditTable/props.js +14 -4
  15. package/es/EditTable/style/body.less +17 -27
  16. package/es/EditTable/style/form.less +33 -0
  17. package/es/EditTable/style/group.less +32 -0
  18. package/es/EditTable/style/header.less +16 -21
  19. package/es/EditTable/style/index.css +103 -66
  20. package/es/EditTable/style/index.less +3 -0
  21. package/es/EditTable/style/menu.less +25 -0
  22. package/es/EditTable/style/table.less +2 -11
  23. package/es/EditTable/utils.js +22 -50
  24. package/es/FullPage/FullPage.js +1 -1
  25. package/es/PermissionButton/index.js +40 -20
  26. package/es/RadioButton/RadioButton.js +1 -1
  27. package/es/Search/Advanced/SaveHistory.js +1 -1
  28. package/es/Search/Item.js +1 -1
  29. package/es/Search/Search.js +1 -1
  30. package/es/locale/en-US.js +39 -3
  31. package/es/locale/zh-CN.js +36 -0
  32. package/es/style/index.css +103 -66
  33. package/lib/EditTable/Body.js +91 -181
  34. package/lib/EditTable/EditTable.js +178 -105
  35. package/lib/EditTable/FormItem.js +3 -4
  36. package/lib/EditTable/Header.js +56 -164
  37. package/lib/EditTable/components/ContextMenu/Menu.js +11 -7
  38. package/lib/EditTable/components/Search/index.js +10 -3
  39. package/lib/EditTable/components/Search/{Search.js → search.js} +94 -66
  40. package/lib/EditTable/components/Search/sort.js +214 -0
  41. package/lib/EditTable/consts.js +7 -2
  42. package/lib/EditTable/context.js +56 -0
  43. package/lib/EditTable/group.js +355 -0
  44. package/lib/EditTable/hooks/index.js +12 -0
  45. package/lib/EditTable/hooks/useGroup.js +50 -0
  46. package/lib/EditTable/props.js +14 -4
  47. package/lib/EditTable/style/body.less +17 -27
  48. package/lib/EditTable/style/form.less +33 -0
  49. package/lib/EditTable/style/group.less +32 -0
  50. package/lib/EditTable/style/header.less +16 -21
  51. package/lib/EditTable/style/index.css +103 -66
  52. package/lib/EditTable/style/index.less +3 -0
  53. package/lib/EditTable/style/menu.less +25 -0
  54. package/lib/EditTable/style/table.less +2 -11
  55. package/lib/EditTable/utils.js +23 -51
  56. package/lib/FullPage/FullPage.js +1 -1
  57. package/lib/PermissionButton/index.js +40 -20
  58. package/lib/RadioButton/RadioButton.js +1 -1
  59. package/lib/Search/Advanced/SaveHistory.js +1 -1
  60. package/lib/Search/Item.js +1 -1
  61. package/lib/Search/Search.js +1 -1
  62. package/lib/locale/en-US.js +39 -3
  63. package/lib/locale/zh-CN.js +36 -0
  64. package/lib/style/index.css +103 -66
  65. package/package.json +2 -2
@@ -17,22 +17,25 @@ function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]
17
17
  /* Analyzed bindings: {
18
18
  "serial": "props",
19
19
  "validateRowKey": "props",
20
+ "readonly": "props",
20
21
  "FULL_SCREEN": "setup-maybe-ref",
21
22
  "RIGHT_MENU": "setup-maybe-ref",
22
23
  "TABLE_DATA_SOURCE": "setup-maybe-ref",
23
24
  "TABLE_ERROR": "setup-maybe-ref",
25
+ "TABLE_GROUP_ACTIVE": "setup-maybe-ref",
26
+ "TABLE_GROUP_ERROR": "setup-maybe-ref",
27
+ "TABLE_GROUP_OPTIONS": "setup-maybe-ref",
28
+ "TABLE_OPEN_GROUP": "setup-maybe-ref",
24
29
  "TABLE_TOOL": "setup-maybe-ref",
25
30
  "TABLE_WRAPPER": "setup-maybe-ref",
26
31
  "handleColumnsWidth": "setup-maybe-ref",
32
+ "useGroup": "setup-maybe-ref",
27
33
  "useResizeObserver": "setup-maybe-ref",
28
34
  "useValidate": "setup-maybe-ref",
29
- "useFormContext": "setup-maybe-ref",
30
35
  "tableProps": "setup-maybe-ref",
31
- "Header": "setup-const",
32
- "Body": "setup-const",
36
+ "useFormContext": "setup-maybe-ref",
33
37
  "useFullscreen": "setup-maybe-ref",
34
38
  "provide": "setup-const",
35
- "useAttrs": "setup-const",
36
39
  "useSlots": "setup-const",
37
40
  "ref": "setup-const",
38
41
  "reactive": "setup-const",
@@ -40,24 +43,35 @@ function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]
40
43
  "computed": "setup-const",
41
44
  "watch": "setup-const",
42
45
  "bodyProps": "setup-maybe-ref",
43
- "defaultProps": "setup-maybe-ref",
44
46
  "findIndex": "setup-maybe-ref",
45
47
  "get": "setup-maybe-ref",
46
48
  "sortBy": "setup-maybe-ref",
49
+ "Header": "setup-const",
50
+ "Body": "setup-const",
51
+ "Group": "setup-const",
52
+ "useLocaleReceiver": "setup-maybe-ref",
47
53
  "emit": "setup-const",
54
+ "contextLocale": "setup-maybe-ref",
48
55
  "props": "setup-reactive-const",
49
56
  "slots": "setup-maybe-ref",
50
- "attrs": "setup-maybe-ref",
51
57
  "myColumns": "setup-ref",
52
58
  "tableWrapper": "setup-ref",
53
59
  "tableBody": "setup-ref",
54
- "horizontalScrollRef": "setup-ref",
55
- "scrollMap": "setup-reactive-const",
56
60
  "tableStyle": "setup-reactive-const",
57
61
  "fields": "setup-const",
62
+ "defaultGroupId": "literal-const",
58
63
  "fieldsErrMap": "setup-ref",
64
+ "fieldsGroupError": "setup-ref",
65
+ "scrollDefaultWidth": "setup-ref",
59
66
  "sortData": "setup-reactive-const",
67
+ "groupActive": "setup-maybe-ref",
68
+ "groupOptions": "setup-maybe-ref",
69
+ "addGroup": "setup-maybe-ref",
70
+ "removeGroup": "setup-maybe-ref",
71
+ "updateGroupActive": "setup-maybe-ref",
72
+ "updateGroupOptions": "setup-maybe-ref",
60
73
  "_dataSource": "setup-ref",
74
+ "bodyDataSource": "setup-ref",
61
75
  "isFullscreen": "setup-maybe-ref",
62
76
  "toggle": "setup-maybe-ref",
63
77
  "rules": "setup-maybe-ref",
@@ -70,75 +84,81 @@ function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]
70
84
  "removeFieldError": "setup-const",
71
85
  "addFieldError": "setup-const",
72
86
  "scrollWidth": "setup-ref",
73
- "onHorizontalScroll": "setup-const",
74
87
  "onResize": "setup-const",
75
88
  "onScrollDown": "setup-const",
76
89
  "rightMenu": "setup-const",
77
90
  "scrollToById": "setup-const",
78
91
  "scrollToByIndex": "setup-const",
79
- "getTableWrapperRef": "setup-const"
92
+ "getTableWrapperRef": "setup-const",
93
+ "groupDelete": "setup-const",
94
+ "groupEdit": "setup-const",
95
+ "getGroupActive": "setup-const"
80
96
  } */
81
- import { unref as _unref, renderSlot as _renderSlot, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, createVNode as _createVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, withCtx as _withCtx, renderList as _renderList, createSlots as _createSlots, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from "vue";
97
+ import { unref as _unref, renderSlot as _renderSlot, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, createVNode as _createVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, withCtx as _withCtx, renderList as _renderList, createSlots as _createSlots, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock } from "vue";
82
98
  const _hoisted_1 = { class: "jetlinks-edit-table-extra" };
83
99
  const _hoisted_2 = { class: "jetlinks-edit-table" };
84
- const _hoisted_3 = {
85
- key: 0,
86
- class: "jetlinks-edit-table-horizontal-scroll"
87
- };
88
- import { FULL_SCREEN, RIGHT_MENU, TABLE_DATA_SOURCE, TABLE_ERROR, TABLE_TOOL, TABLE_WRAPPER } from './consts';
100
+ import { FULL_SCREEN, RIGHT_MENU, TABLE_DATA_SOURCE, TABLE_ERROR, TABLE_GROUP_ACTIVE, TABLE_GROUP_ERROR, TABLE_GROUP_OPTIONS, TABLE_OPEN_GROUP, TABLE_TOOL, TABLE_WRAPPER } from './consts';
89
101
  import { handleColumnsWidth } from './utils';
90
- import { useResizeObserver, useValidate, useFormContext } from './hooks';
102
+ import { useGroup, useResizeObserver, useValidate } from './hooks';
91
103
  import { tableProps } from 'ant-design-vue/lib/table';
92
- import Header from './Header.js';
93
- import Body from './Body.js';
104
+ import { useFormContext } from './context';
94
105
  import { useFullscreen } from '@vueuse/core';
95
- import { provide, useAttrs, useSlots, ref, reactive, computed, watch } from 'vue';
96
- import { bodyProps, defaultProps } from "./props";
106
+ import { provide, useSlots, ref, reactive, computed, watch } from 'vue';
107
+ import { bodyProps } from "./props";
97
108
  import { findIndex, get, sortBy } from 'lodash-es';
109
+ import Header from './Header.js';
110
+ import Body from './Body.js';
111
+ import Group from './group.js';
112
+ import { useLocaleReceiver } from "../LocaleReciver";
113
+ const defaultGroupId = 'group_1';
98
114
  const __sfc_main__ = Object.assign({
99
115
  name: 'JEditTable'
100
116
  }, {
101
117
  props: {
102
118
  ...tableProps(),
103
- ...defaultProps(),
104
119
  ...bodyProps(),
105
120
  serial: {
106
121
  type: [Object, Boolean],
107
- default: () => ({})
122
+ default: () => ({
123
+ width: 66,
124
+ title: ''
125
+ })
108
126
  },
109
127
  validateRowKey: {
110
128
  type: Boolean,
111
129
  default: false
112
130
  },
131
+ readonly: {
132
+ type: Boolean,
133
+ default: false
134
+ }
113
135
  },
114
136
  emits: ['scrollDown', 'rightMenuClick', 'editChange', 'searchVisibleChange'],
115
137
  setup(__props, { expose: __expose, emit: __emit }) {
116
138
  const emit = __emit;
139
+ const [contextLocale] = useLocaleReceiver('EditTable');
117
140
  const props = __props;
118
141
  const slots = useSlots();
119
- const attrs = useAttrs();
120
142
  const myColumns = ref([]);
121
143
  const tableWrapper = ref();
122
144
  const tableBody = ref();
123
- const horizontalScrollRef = ref();
124
- const scrollMap = reactive({
125
- x: 0,
126
- y: 0,
127
- down: undefined
128
- });
129
145
  const tableStyle = reactive({
130
146
  width: '100%',
131
147
  height: props.height
132
148
  });
133
149
  const fields = {};
134
150
  const fieldsErrMap = ref({});
151
+ const fieldsGroupError = ref({});
152
+ const scrollDefaultWidth = ref(17);
135
153
  const sortData = reactive({
136
154
  key: undefined,
137
155
  order: undefined,
138
156
  orderKeys: [],
139
157
  dataIndex: undefined
140
158
  });
159
+ const { groupActive, groupOptions, addGroup, removeGroup, updateGroupActive, updateGroupOptions } = useGroup(props.openGroup);
141
160
  const _dataSource = computed(() => {
161
+ const _options = new Map();
142
162
  const sortDataSource = sortData.key ?
143
163
  sortBy(props.dataSource, (val) => {
144
164
  if (!val.id)
@@ -148,15 +168,53 @@ const __sfc_main__ = Object.assign({
148
168
  }) : props.dataSource;
149
169
  sortDataSource.forEach((item, index) => {
150
170
  item.__dataIndex = index;
151
- item.__serial = index + 1;
171
+ if (props.openGroup) {
172
+ const _groupId = _optionalChain([item, 'access', _2 => _2.expands, 'optionalAccess', _3 => _3.groupId]);
173
+ if (!_groupId) {
174
+ item.expands.groupId = groupActive.value || defaultGroupId;
175
+ item.expands.groupName = groupActive.label || (contextLocale.value.Group.one + '1');
176
+ }
177
+ const _optionsItem = _options.get(item.expands.groupId);
178
+ if (!_optionsItem) {
179
+ _options.set(item.expands.groupId, {
180
+ value: _optionalChain([item, 'access', _4 => _4.expands, 'optionalAccess', _5 => _5.groupId]),
181
+ label: _optionalChain([item, 'access', _6 => _6.expands, 'optionalAccess', _7 => _7.groupName]),
182
+ effective: item.id ? 1 : 0,
183
+ len: 1 // 分组数据总长度
184
+ });
185
+ }
186
+ else {
187
+ if (item.id) {
188
+ _optionsItem.effective += 1;
189
+ }
190
+ _optionsItem.len += 1;
191
+ _options.set(item.expands.groupId, _optionsItem);
192
+ }
193
+ item.__serial = _optionalChain([_optionsItem, 'optionalAccess', _8 => _8.len]) || 1;
194
+ }
195
+ else {
196
+ item.__serial = index + 1;
197
+ }
152
198
  });
199
+ if (props.openGroup) {
200
+ updateGroupOptions([..._options.values()]);
201
+ }
153
202
  return sortDataSource;
154
203
  });
204
+ const bodyDataSource = computed(() => {
205
+ if (props.openGroup) {
206
+ return _dataSource.value.filter(item => {
207
+ return item.expands.groupId === groupActive.value;
208
+ });
209
+ }
210
+ return _dataSource.value;
211
+ });
155
212
  useResizeObserver(tableWrapper, onResize);
156
213
  const { isFullscreen, toggle } = useFullscreen(tableWrapper);
157
214
  const { rules, validateItem, validate, errorMap } = useValidate(_dataSource, props.columns, props.rowKey, {
158
215
  onError: (err) => {
159
216
  fieldsErrMap.value = {};
217
+ fieldsGroupError.value = {};
160
218
  const errMap = {};
161
219
  // 显示全部err红标
162
220
  err.forEach((item, errIndex) => {
@@ -168,6 +226,10 @@ const __sfc_main__ = Object.assign({
168
226
  }
169
227
  errMap[_eventKey] = e.message;
170
228
  if (errIndex === 0 && eIndex === 0) {
229
+ if (props.openGroup) {
230
+ const expands = _dataSource.value[e.__dataIndex].expands;
231
+ updateGroupActive(expands.groupId, expands.groupName);
232
+ }
171
233
  setTimeout(() => {
172
234
  tableBody.value.scrollTo(e.__serial - 1);
173
235
  }, 10);
@@ -188,9 +250,15 @@ const __sfc_main__ = Object.assign({
188
250
  provide(FULL_SCREEN, isFullscreen);
189
251
  provide(RIGHT_MENU, { click: rightMenu, getPopupContainer: () => tableWrapper.value });
190
252
  provide(TABLE_ERROR, fieldsErrMap);
253
+ provide(TABLE_GROUP_ERROR, fieldsGroupError);
191
254
  provide(TABLE_DATA_SOURCE, _dataSource);
255
+ provide(TABLE_OPEN_GROUP, props.openGroup);
192
256
  provide(TABLE_TOOL, {
193
257
  scrollTo: (record) => {
258
+ if (props.openGroup) {
259
+ const expands = record.expands;
260
+ updateGroupActive(expands.groupId, expands.groupName);
261
+ }
194
262
  setTimeout(() => {
195
263
  tableBody.value.scrollTo(record.__serial);
196
264
  }, 10);
@@ -210,13 +278,10 @@ const __sfc_main__ = Object.assign({
210
278
  sortData.orderKeys = [];
211
279
  sortData.dataIndex = undefined;
212
280
  },
213
- searchVisible: (v) => {
214
- emit('searchVisibleChange', v);
215
- },
216
- scrollMap,
217
- sortData,
218
- columns: myColumns
281
+ sortData
219
282
  });
283
+ provide(TABLE_GROUP_OPTIONS, groupOptions);
284
+ provide(TABLE_GROUP_ACTIVE, groupActive);
220
285
  const addField = (key, field) => {
221
286
  fields[key] = field;
222
287
  };
@@ -237,57 +302,30 @@ const __sfc_main__ = Object.assign({
237
302
  fieldsErrMap.value[key] = message;
238
303
  }
239
304
  const scrollWidth = computed(() => {
240
- let _width = 0;
241
- if (props.dataSource.length * props.cellHeight) {
242
- _width = 17;
243
- }
244
- if (_optionalChain([tableBody, 'access', _2 => _2.value, 'optionalAccess', _3 => _3.getViewScrollRef]) && props.dataSource.length) {
245
- const viewScrollDom = _optionalChain([tableBody, 'access', _4 => _4.value, 'optionalAccess', _5 => _5.getViewScrollRef, 'call', _6 => _6()]);
246
- const bodyContainer = viewScrollDom.querySelector('.jetlinks-edit-table-body-container');
247
- _width = viewScrollDom.offsetWidth - bodyContainer.offsetWidth;
248
- }
249
- return _width;
305
+ return (props.dataSource.length * props.cellHeight) > props.height ? scrollDefaultWidth.value : 0;
250
306
  });
251
- const onHorizontalScroll = () => {
252
- if (!horizontalScrollRef.value)
253
- return;
254
- const { clientWidth, scrollLeft, scrollWidth } = horizontalScrollRef.value;
255
- scrollMap.x = scrollLeft;
256
- if (clientWidth + scrollLeft >= scrollWidth) {
257
- scrollMap.down = 'right';
258
- }
259
- else if (scrollLeft === 0) {
260
- scrollMap.down = undefined;
261
- }
262
- else {
263
- scrollMap.down = 'left';
264
- }
265
- };
266
- function onResize({ width = 0, height }) {
307
+ function onResize({ width = 0 }) {
267
308
  const _width = width - scrollWidth.value;
268
309
  tableStyle.width = width || '100%';
310
+ const viewportDom = document.querySelector('.jetlinks-edit-table-body-viewport');
311
+ const viewportDivDom = viewportDom.querySelector('div');
312
+ scrollDefaultWidth.value = viewportDom.offsetWidth - viewportDivDom.offsetWidth;
269
313
  let newColumns = [...props.columns];
270
314
  if (props.serial) {
271
- const options = Object.assign({
272
- title: '序号',
273
- width: 66,
274
- fixed: 'left'
275
- }, props.serial);
276
315
  const serial = {
277
316
  dataIndex: '__serial',
278
- title: options.title,
317
+ title: props.serial.title || contextLocale.value.serial,
279
318
  customRender: (customData) => {
280
- if (_optionalChain([props, 'access', _7 => _7.serial, 'optionalAccess', _8 => _8.customRender])) {
281
- return _optionalChain([props, 'access', _9 => _9.serial, 'optionalAccess', _10 => _10.customRender, 'call', _11 => _11(customData)]);
319
+ if (_optionalChain([props, 'access', _9 => _9.serial, 'optionalAccess', _10 => _10.customRender])) {
320
+ return _optionalChain([props, 'access', _11 => _11.serial, 'optionalAccess', _12 => _12.customRender, 'call', _13 => _13(customData)]);
282
321
  }
283
322
  return customData.index + 1;
284
323
  },
285
- width: options.width,
286
- fixed: options.fixed
324
+ width: _optionalChain([props, 'access', _14 => _14.serial, 'optionalAccess', _15 => _15.width])
287
325
  };
288
326
  newColumns = [serial, ...props.columns];
289
327
  }
290
- myColumns.value = handleColumnsWidth(newColumns, _width, _optionalChain([props, 'access', _12 => _12.scroll, 'optionalAccess', _13 => _13.x]));
328
+ myColumns.value = handleColumnsWidth(newColumns, _width);
291
329
  }
292
330
  const onScrollDown = (len) => {
293
331
  emit('scrollDown', len);
@@ -305,6 +343,52 @@ const __sfc_main__ = Object.assign({
305
343
  const getTableWrapperRef = () => {
306
344
  return tableWrapper.value;
307
345
  };
346
+ const groupDelete = (id, index) => {
347
+ removeGroup(index);
348
+ Object.keys(fieldsErrMap.value).forEach(errorKey => {
349
+ const [index] = errorKey.split('-');
350
+ const dataSourceItem = _dataSource.value[index];
351
+ const groupId = _optionalChain([dataSourceItem, 'access', _16 => _16.expands, 'optionalAccess', _17 => _17.groupId]);
352
+ if (groupId === id) {
353
+ removeFieldError(errorKey);
354
+ removeField(errorKey);
355
+ }
356
+ });
357
+ emit('groupDelete', id);
358
+ };
359
+ const groupEdit = (record) => {
360
+ emit('groupEdit', record);
361
+ };
362
+ const getGroupActive = () => {
363
+ return groupActive.value;
364
+ };
365
+ watch(() => fieldsErrMap.value, (errorMap) => {
366
+ fieldsGroupError.value = {};
367
+ if (props.openGroup) {
368
+ const _errorObj = errorMap;
369
+ const groupErrorMap = {};
370
+ Object.keys(_errorObj).forEach(errorKey => {
371
+ const [index] = errorKey.split('-');
372
+ const dataSourceItem = _dataSource.value[index];
373
+ const groupId = _optionalChain([dataSourceItem, 'access', _18 => _18.expands, 'optionalAccess', _19 => _19.groupId]);
374
+ const groupError = groupErrorMap[groupId];
375
+ const groupErrorItem = {
376
+ [errorKey]: {
377
+ message: _errorObj[errorKey],
378
+ index,
379
+ serial: dataSourceItem.__serial
380
+ }
381
+ };
382
+ if (groupError) {
383
+ groupError.push(groupErrorItem);
384
+ }
385
+ else {
386
+ groupErrorMap[groupId] = [groupErrorItem];
387
+ }
388
+ });
389
+ fieldsGroupError.value = groupErrorMap;
390
+ }
391
+ }, { deep: true });
308
392
  watch(() => scrollWidth.value, () => {
309
393
  onResize({ width: tableStyle.width });
310
394
  });
@@ -326,6 +410,7 @@ const __sfc_main__ = Object.assign({
326
410
  scrollToById,
327
411
  scrollToByIndex,
328
412
  getTableWrapperRef,
413
+ getGroupActive
329
414
  });
330
415
  return (_ctx, _cache) => {
331
416
  return (_openBlock(), _createElementBlock("div", {
@@ -349,14 +434,8 @@ const __sfc_main__ = Object.assign({
349
434
  }, [
350
435
  _createVNode(Header, {
351
436
  columns: myColumns.value,
352
- style: _normalizeStyle({ width: tableStyle.width }),
353
- rowKey: _ctx.rowKey,
354
- searchColumns: _ctx.searchColumns
355
- }, null, 8 /* PROPS */, ["columns", "style", "rowKey", "searchColumns"]),
356
- _createElementVNode("div", {
357
- class: "jetlinks-edit-table-header-scroll-hidden",
358
- style: _normalizeStyle({ width: scrollWidth.value + 'px' })
359
- }, null, 4 /* STYLE */)
437
+ style: _normalizeStyle({ width: tableStyle.width })
438
+ }, null, 8 /* PROPS */, ["columns", "style"])
360
439
  ], 4 /* STYLE */),
361
440
  _createElementVNode("div", {
362
441
  class: "jetlinks-edit-table-body",
@@ -365,13 +444,16 @@ const __sfc_main__ = Object.assign({
365
444
  _createVNode(Body, {
366
445
  ref_key: "tableBody",
367
446
  ref: tableBody,
368
- dataSource: _dataSource.value,
447
+ dataSource: bodyDataSource.value,
369
448
  columns: myColumns.value,
370
449
  cellHeight: _ctx.cellHeight,
371
450
  height: _ctx.height,
372
451
  disableMenu: _ctx.disableMenu,
373
452
  rowKey: _ctx.rowKey,
453
+ groupKey: _unref(groupActive).value,
454
+ openGroup: _ctx.openGroup,
374
455
  rowSelection: _ctx.rowSelection,
456
+ readonly: __props.readonly,
375
457
  onScrollDown: onScrollDown
376
458
  }, _createSlots({ _: 2 /* DYNAMIC */ }, [
377
459
  _renderList(_unref(slots), (_, name) => {
@@ -382,30 +464,21 @@ const __sfc_main__ = Object.assign({
382
464
  ])
383
465
  };
384
466
  })
385
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["dataSource", "columns", "cellHeight", "height", "disableMenu", "rowKey", "rowSelection"]),
467
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["dataSource", "columns", "cellHeight", "height", "disableMenu", "rowKey", "groupKey", "openGroup", "rowSelection", "readonly"]),
386
468
  _renderSlot(_ctx.$slots, "bodyExtra")
387
469
  ], 4 /* STYLE */),
388
- (_optionalChain([_ctx, 'access', _14 => _14.scroll, 'optionalAccess', _15 => _15.x]))
389
- ? (_openBlock(), _createElementBlock("div", _hoisted_3, [
390
- _createElementVNode("div", {
391
- class: "jetlinks-edit-table-horizontal-scroll-viewport",
392
- ref_key: "horizontalScrollRef",
393
- ref: horizontalScrollRef,
394
- onScroll: onHorizontalScroll
395
- }, [
396
- _createElementVNode("div", {
397
- style: _normalizeStyle({
398
- width: _ctx.scroll.x + 'px',
399
- minWidth: _ctx.scroll.x + 'px',
400
- maxWidth: _ctx.scroll.x + 'px'
401
- })
402
- }, null, 4 /* STYLE */)
403
- ], 544 /* NEED_HYDRATION, NEED_PATCH */),
404
- _createElementVNode("div", {
405
- class: "jetlinks-edit-table-horizontal-scroll-hidden",
406
- style: _normalizeStyle({ width: scrollWidth.value + 'px' })
407
- }, null, 4 /* STYLE */)
408
- ]))
470
+ (_ctx.dataSource.length && _ctx.openGroup)
471
+ ? (_openBlock(), _createBlock(Group, {
472
+ key: 0,
473
+ activeKey: _unref(groupActive).value,
474
+ "onUpdate:activeKey": _cache[0] || (_cache[0] = $event => ((_unref(groupActive).value) = $event)),
475
+ options: _unref(groupOptions),
476
+ readonly: __props.readonly,
477
+ onAdd: _unref(addGroup),
478
+ onDelete: groupDelete,
479
+ onEdit: groupEdit,
480
+ onChange: _unref(updateGroupActive)
481
+ }, null, 8 /* PROPS */, ["activeKey", "options", "readonly", "onAdd", "onChange"]))
409
482
  : _createCommentVNode("v-if", true)
410
483
  ])
411
484
  ], 2 /* CLASS */));
@@ -47,12 +47,11 @@ function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]
47
47
  "onFieldBlur": "setup-const",
48
48
  "onFieldChange": "setup-const"
49
49
  } */
50
- import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from "vue";
51
- const _withScopeId = n => (_pushScopeId("data-v-1741691309984"), n = n(), _popScopeId(), n);
50
+ import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass, Fragment as _Fragment } from "vue";
52
51
  const _hoisted_1 = { style: { "color": "#1d2129" } };
53
52
  const _hoisted_2 = {
54
53
  key: 0,
55
- class: "table-form-error-target"
54
+ class: "jetlinks-table-form-error-target"
56
55
  };
57
56
  const _hoisted_3 = ["id"];
58
57
  import { onBeforeUnmount, computed, reactive, watch, provide } from "vue";
@@ -203,7 +202,7 @@ const __sfc_main__ = Object.assign({
203
202
  _createElementVNode("div", {
204
203
  id: eventKey.value,
205
204
  style: { "position": "relative" },
206
- class: _normalizeClass({ 'edit-table-form-has-error': errorMap.message })
205
+ class: _normalizeClass({ 'jetlinks-edit-table-form-has-error': errorMap.message })
207
206
  }, [
208
207
  _renderSlot(_ctx.$slots, "default")
209
208
  ], 10 /* CLASS, PROPS */, _hoisted_3)