vxe-table 4.6.17 → 4.6.19

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 (74) hide show
  1. package/README.en.md +173 -0
  2. package/README.zh-TW.md +172 -0
  3. package/es/form/src/form-gather.js +1 -1
  4. package/es/grid/src/grid.js +3 -3
  5. package/es/icon/style.css +1 -1
  6. package/es/menu/src/hooks.js +3 -2
  7. package/es/radio/style.css +1 -1
  8. package/es/style.css +1 -1
  9. package/es/style.min.css +1 -1
  10. package/es/table/src/table.js +15 -2
  11. package/es/table/style.css +4 -1
  12. package/es/tools/log.js +1 -1
  13. package/es/v-x-e-table/index.js +17 -2
  14. package/es/v-x-e-table/src/theme.js +4 -0
  15. package/es/vxe-radio/style.css +1 -1
  16. package/es/vxe-table/style.css +4 -1
  17. package/lib/form/src/form-gather.js +1 -1
  18. package/lib/form/src/form-gather.min.js +1 -1
  19. package/lib/grid/src/grid.js +3 -3
  20. package/lib/grid/src/grid.min.js +1 -1
  21. package/lib/icon/style/style.css +1 -1
  22. package/lib/icon/style/style.min.css +1 -1
  23. package/lib/index.umd.js +129 -41
  24. package/lib/index.umd.min.js +1 -1
  25. package/lib/menu/src/hooks.js +3 -2
  26. package/lib/menu/src/hooks.min.js +1 -1
  27. package/lib/radio/style/style.css +1 -1
  28. package/lib/radio/style/style.min.css +1 -1
  29. package/lib/style.css +1 -1
  30. package/lib/style.min.css +1 -1
  31. package/lib/table/src/table.js +15 -2
  32. package/lib/table/src/table.min.js +1 -1
  33. package/lib/table/style/style.css +4 -1
  34. package/lib/table/style/style.min.css +1 -1
  35. package/lib/tools/log.js +1 -1
  36. package/lib/tools/log.min.js +1 -1
  37. package/lib/v-x-e-table/index.js +26 -3
  38. package/lib/v-x-e-table/index.min.js +1 -1
  39. package/lib/v-x-e-table/src/theme.js +5 -0
  40. package/lib/v-x-e-table/src/theme.min.js +1 -1
  41. package/lib/vxe-radio/style/style.css +1 -1
  42. package/lib/vxe-radio/style/style.min.css +1 -1
  43. package/lib/vxe-table/style/style.css +4 -1
  44. package/lib/vxe-table/style/style.min.css +1 -1
  45. package/package.json +4 -4
  46. package/packages/form/src/form-gather.ts +1 -1
  47. package/packages/grid/src/grid.ts +3 -3
  48. package/packages/menu/src/hooks.ts +3 -2
  49. package/packages/table/src/table.ts +15 -2
  50. package/packages/v-x-e-table/index.ts +21 -2
  51. package/packages/v-x-e-table/src/theme.ts +5 -0
  52. package/styles/checkbox.scss +1 -1
  53. package/styles/custom.scss +1 -1
  54. package/styles/export.scss +1 -1
  55. package/styles/radio.scss +1 -1
  56. package/styles/table.scss +4 -1
  57. package/styles/theme/dark.scss +1 -0
  58. package/styles/theme/default.scss +1 -0
  59. package/styles/variable.scss +1 -0
  60. package/types/table.d.ts +7 -1
  61. package/types/v-x-e-table/index.d.ts +14 -1
  62. package/types/v-x-e-table/menus.d.ts +8 -0
  63. /package/es/icon/style/{iconfont.1716777871692.ttf → iconfont.1726118382121.ttf} +0 -0
  64. /package/es/icon/style/{iconfont.1716777871692.woff → iconfont.1726118382121.woff} +0 -0
  65. /package/es/icon/style/{iconfont.1716777871692.woff2 → iconfont.1726118382121.woff2} +0 -0
  66. /package/es/{iconfont.1716777871692.ttf → iconfont.1726118382121.ttf} +0 -0
  67. /package/es/{iconfont.1716777871692.woff → iconfont.1726118382121.woff} +0 -0
  68. /package/es/{iconfont.1716777871692.woff2 → iconfont.1726118382121.woff2} +0 -0
  69. /package/lib/icon/style/{iconfont.1716777871692.ttf → iconfont.1726118382121.ttf} +0 -0
  70. /package/lib/icon/style/{iconfont.1716777871692.woff → iconfont.1726118382121.woff} +0 -0
  71. /package/lib/icon/style/{iconfont.1716777871692.woff2 → iconfont.1726118382121.woff2} +0 -0
  72. /package/lib/{iconfont.1716777871692.ttf → iconfont.1726118382121.ttf} +0 -0
  73. /package/lib/{iconfont.1716777871692.woff → iconfont.1726118382121.woff} +0 -0
  74. /package/lib/{iconfont.1716777871692.woff2 → iconfont.1726118382121.woff2} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "4.6.17",
3
+ "version": "4.6.19",
4
4
  "description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印导出、自定义模板、渲染器、JSON 配置式...",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -28,8 +28,8 @@
28
28
  "style": "lib/style.css",
29
29
  "typings": "types/index.d.ts",
30
30
  "dependencies": {
31
- "dom-zindex": "^1.0.4",
32
- "xe-utils": "^3.5.26"
31
+ "dom-zindex": "^1.0.6",
32
+ "xe-utils": "^3.5.30"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/resize-observer-browser": "^0.1.11",
@@ -62,7 +62,7 @@
62
62
  "gulp-typescript": "^5.0.1",
63
63
  "gulp-uglify": "^3.0.2",
64
64
  "postcss": "^8.4.38",
65
- "sass": "^1.75.0",
65
+ "sass": "~1.77.8",
66
66
  "sass-loader": "^14.2.0",
67
67
  "typescript": "~4.5.5",
68
68
  "vue": "3.4.27",
@@ -12,7 +12,6 @@ export default defineComponent({
12
12
  const refElem = ref() as Ref<HTMLDivElement>
13
13
  const $xeform = inject('$xeform', {} as VxeFormConstructor & VxeFormPrivateMethods)
14
14
  const formGather = inject('$xeformgather', null as XEFormItemProvide | null)
15
- const defaultSlot = slots.default
16
15
  const formItem = reactive(createItem($xeform, props))
17
16
  const xeformitem: XEFormItemProvide = { formItem }
18
17
  const xeformiteminfo = { itemConfig: formItem }
@@ -35,6 +34,7 @@ export default defineComponent({
35
34
  const renderVN = () => {
36
35
  const { className, field } = props
37
36
  const span = props.span || ($xeform ? $xeform.props.span : null)
37
+ const defaultSlot = slots.default
38
38
  return h('div', {
39
39
  ref: refElem,
40
40
  class: ['vxe-form--gather vxe-form--item-row', formItem.id, span ? `vxe-form--item-col_${span} is--span` : '', className ? (XEUtils.isFunction(className) ? className({ $form: $xeform, data: $xeform ? $xeform.props.data : {}, item: formItem as any, field: field as string, property: field as string }) : className) : '']
@@ -187,9 +187,9 @@ export default defineComponent({
187
187
  const tableProps = Object.assign({}, tableExtendProps)
188
188
  if (isZMax) {
189
189
  if (tableExtendProps.maxHeight) {
190
- tableProps.maxHeight = 'auto'
190
+ tableProps.maxHeight = '100%'
191
191
  } else {
192
- tableProps.height = 'auto'
192
+ tableProps.height = '100%'
193
193
  }
194
194
  }
195
195
  if (proxyConfig && isEnableConf(proxyOpts)) {
@@ -1133,7 +1133,7 @@ export default defineComponent({
1133
1133
  const topWrapper = refTopWrapper.value
1134
1134
  const bottomWrapper = refBottomWrapper.value
1135
1135
  const pagerWrapper = refPagerWrapper.value
1136
- const parentPaddingSize = isZMax || height !== 'auto' ? 0 : getPaddingTopBottomSize(el.parentNode as HTMLElement)
1136
+ const parentPaddingSize = isZMax || !(height === 'auto' || height === '100%') ? 0 : getPaddingTopBottomSize(el.parentNode as HTMLElement)
1137
1137
  return parentPaddingSize + getPaddingTopBottomSize(el) + getOffsetHeight(formWrapper) + getOffsetHeight(toolbarWrapper) + getOffsetHeight(topWrapper) + getOffsetHeight(bottomWrapper) + getOffsetHeight(pagerWrapper)
1138
1138
  },
1139
1139
  getParentHeight () {
@@ -282,8 +282,9 @@ const tableMenuHook: VxeGlobalHooksHandles.HookOptions = {
282
282
  if (!menu.disabled && (menu.code || !menu.children || !menu.children.length)) {
283
283
  const gMenuOpts = VXETable.menus.get(menu.code)
284
284
  const params = Object.assign({}, internalData._currMenuParams, { menu, $table: $xetable, $grid: $xetable.xegrid, $event: evnt })
285
- if (gMenuOpts && gMenuOpts.menuMethod) {
286
- gMenuOpts.menuMethod(params, evnt)
285
+ const tmMethod = gMenuOpts ? (gMenuOpts.tableMenuMethod || gMenuOpts.menuMethod) : null
286
+ if (tmMethod) {
287
+ tmMethod(params, evnt)
287
288
  }
288
289
  $xetable.dispatchEvent('menu-click', params, evnt)
289
290
  menuMethods.closeMenu()
@@ -870,7 +870,7 @@ export default defineComponent({
870
870
  const val = props[key]
871
871
  let num = 0
872
872
  if (val) {
873
- if (val === 'auto') {
873
+ if (val === '100%' || val === 'auto') {
874
874
  num = parentHeight
875
875
  } else {
876
876
  const excludeHeight = $xetable.getExcludeHeight()
@@ -2816,6 +2816,19 @@ export default defineComponent({
2816
2816
  return tableMethods.recalculate()
2817
2817
  })
2818
2818
  },
2819
+ /**
2820
+ * 修改行数据
2821
+ */
2822
+ setRow (rows, record) {
2823
+ if (record) {
2824
+ let rest: any[] = rows
2825
+ if (!XEUtils.isArray(rows)) {
2826
+ rest = [rows]
2827
+ }
2828
+ rest.forEach(item => Object.assign(item, record))
2829
+ }
2830
+ return nextTick()
2831
+ },
2819
2832
  /**
2820
2833
  * 局部加载行数据并恢复到初始状态
2821
2834
  * 对于行数据需要局部更改的场景中可能会用到
@@ -5109,7 +5122,7 @@ export default defineComponent({
5109
5122
  const el = refElem.value
5110
5123
  if (el) {
5111
5124
  const parentElem = el.parentNode as HTMLElement
5112
- const parentPaddingSize = height === 'auto' ? getPaddingTopBottomSize(parentElem) : 0
5125
+ const parentPaddingSize = height === '100%' || height === 'auto' ? getPaddingTopBottomSize(parentElem) : 0
5113
5126
  return Math.floor($xegrid ? $xegrid.getParentHeight() : XEUtils.toNumber(getComputedStyle(parentElem).height) - parentPaddingSize)
5114
5127
  }
5115
5128
  return 0
@@ -8,7 +8,7 @@ import { menus } from './src/menus'
8
8
  import { formats } from './src/formats'
9
9
  import { validators } from './src/validators'
10
10
  import { hooks } from './src/hooks'
11
- import { setTheme } from './src/theme'
11
+ import { setTheme, getTheme } from './src/theme'
12
12
  import { getLastZIndex, nextZIndex } from '../tools/utils'
13
13
  import { warnLog } from '../tools/log'
14
14
 
@@ -129,9 +129,25 @@ export function setIcon (options?: any) {
129
129
 
130
130
  export const globalStore = {}
131
131
 
132
+ const components: any = {}
133
+
134
+ export function getComponent (name: any) {
135
+ return components[name] || null
136
+ }
137
+
138
+ export function component (comp: any) {
139
+ if (comp && comp.name) {
140
+ components[comp.name] = comp
141
+ }
142
+ }
143
+
144
+ export const version = process.env.VUE_APP_VXE_TABLE_VERSION as string
145
+ export const tableVersion = version
146
+
132
147
  export const VXETable = {
133
148
  v,
134
- version: process.env.VUE_APP_VXE_TABLE_VERSION,
149
+ version,
150
+ tableVersion,
135
151
  setConfig,
136
152
  setIcon,
137
153
  globalStore,
@@ -145,6 +161,9 @@ export const VXETable = {
145
161
  use,
146
162
  t,
147
163
  _t,
164
+ setTheme,
165
+ getTheme,
166
+ getComponent,
148
167
 
149
168
  // 已废弃
150
169
  config,
@@ -5,6 +5,7 @@ export function setTheme (name: any) {
5
5
  if (!theme || theme === 'default') {
6
6
  theme = 'light'
7
7
  }
8
+ GlobalConfig.theme = theme
8
9
  if (typeof document !== 'undefined') {
9
10
  const documentElement = document.documentElement
10
11
  if (documentElement) {
@@ -12,3 +13,7 @@ export function setTheme (name: any) {
12
13
  }
13
14
  }
14
15
  }
16
+
17
+ export function getTheme () {
18
+ return GlobalConfig.theme
19
+ }
@@ -11,11 +11,11 @@
11
11
 
12
12
  /*checkbox*/
13
13
  .vxe-checkbox {
14
- @include createCheckboxIcon();
15
14
  display: inline-block;
16
15
  vertical-align: middle;
17
16
  white-space: nowrap;
18
17
  line-height: 1;
18
+ @include createCheckboxIcon();
19
19
  &+.vxe-checkbox {
20
20
  margin-left: 10px;
21
21
  }
@@ -84,11 +84,11 @@
84
84
  }
85
85
 
86
86
  .vxe-table-custom--checkbox-option {
87
- @include createCheckboxIcon();
88
87
  overflow: hidden;
89
88
  text-overflow: ellipsis;
90
89
  white-space: nowrap;
91
90
  flex-grow: 1;
91
+ @include createCheckboxIcon();
92
92
  }
93
93
 
94
94
  .vxe-table-custom--fixed-option {
@@ -91,10 +91,10 @@
91
91
  cursor: pointer;
92
92
  }
93
93
  &:hover {
94
+ color: var(--vxe-primary-color);
94
95
  & > i {
95
96
  display: block;
96
97
  }
97
- color: var(--vxe-primary-color);
98
98
  }
99
99
  }
100
100
  .vxe-import-select--file {
package/styles/radio.scss CHANGED
@@ -15,11 +15,11 @@
15
15
 
16
16
  /*radio*/
17
17
  .vxe-radio {
18
- @include createRadioIcon();
19
18
  display: inline-block;
20
19
  vertical-align: middle;
21
20
  white-space: nowrap;
22
21
  line-height: 1;
22
+ @include createRadioIcon();
23
23
  > input {
24
24
  &[type="radio"] {
25
25
  position: absolute;
package/styles/table.scss CHANGED
@@ -210,7 +210,10 @@
210
210
  }
211
211
 
212
212
  .vxe-table--cell-active-area {
213
- border: var(--vxe-table-cell-active-area-border-width) solid var(--vxe-table-cell-active-area-border-color);
213
+ border-color: var(--vxe-table-cell-active-area-border-color);
214
+ border-style: solid;
215
+ border-width: var(--vxe-table-cell-active-area-border-width);
216
+ background-color: var(--vxe-table-cell-active-area-background-color);
214
217
  }
215
218
 
216
219
  .vxe-table--cell-multi-area {
@@ -111,6 +111,7 @@
111
111
  --vxe-table-cell-extend-area-border-width: #{$vxe-table-cell-extend-area-border-width};
112
112
  --vxe-table-cell-copy-area-border-width: #{$vxe-table-cell-copy-area-border-width};
113
113
  --vxe-table-cell-active-area-border-width: #{$vxe-table-cell-active-area-border-width};
114
+ --vxe-table-cell-active-area-background-color: #{$vxe-table-cell-active-area-background-color};
114
115
  --vxe-table-cell-copy-area-border-color: #{$vxe-table-cell-copy-area-border-color};
115
116
  --vxe-table-cell-extend-area-border-color: #{$vxe-table-cell-extend-area-border-color};
116
117
  --vxe-table-cell-active-area-border-color: #{$vxe-table-cell-active-area-border-color};
@@ -104,6 +104,7 @@
104
104
  --vxe-table-cell-dirty-insert-color: #{$vxe-table-cell-dirty-insert-color};
105
105
  --vxe-table-cell-area-border-color: #{$vxe-table-cell-area-border-color};
106
106
  --vxe-table-cell-area-border-width: #{$vxe-table-cell-area-border-width};
107
+ --vxe-table-cell-active-area-background-color: #{$vxe-table-cell-active-area-background-color};
107
108
  --vxe-table-cell-main-area-extension-border-color: #{$vxe-table-cell-main-area-extension-border-color};
108
109
  --vxe-table-cell-main-area-extension-background-color: #{$vxe-table-cell-main-area-extension-background-color};
109
110
  --vxe-table-cell-extend-area-border-width: #{$vxe-table-cell-extend-area-border-width};
@@ -106,6 +106,7 @@ $vxe-table-cell-main-area-extension-background-color: $vxe-primary-color !defaul
106
106
  $vxe-table-cell-extend-area-border-width: 2px !default;
107
107
  $vxe-table-cell-copy-area-border-width: 3px !default;
108
108
  $vxe-table-cell-active-area-border-width: 2px !default;
109
+ $vxe-table-cell-active-area-background-color: transparent !default;
109
110
  $vxe-table-cell-copy-area-border-color: $vxe-table-cell-area-border-color !default;
110
111
  $vxe-table-cell-extend-area-border-color: $vxe-table-cell-area-border-color !default;
111
112
  $vxe-table-cell-active-area-border-color: $vxe-table-cell-area-border-color !default;
package/types/table.d.ts CHANGED
@@ -132,6 +132,12 @@ export interface TablePublicMethods<DT = VxeTableDataRow> {
132
132
  * @param data 数据
133
133
  */
134
134
  reloadData(data: any[]): Promise<void>
135
+ /**
136
+ * 修改行数据
137
+ * @param rows 行对象
138
+ * @param record 新数据
139
+ */
140
+ setRow(rows: any | any[], record?: any): Promise<void>
135
141
  /**
136
142
  * 局部加载行数据并恢复到初始状态
137
143
  * @param rows 行对象
@@ -1620,7 +1626,7 @@ export namespace VxeTablePropTypes {
1620
1626
  visibleMethod?(params: {
1621
1627
  row: D
1622
1628
  }): boolean
1623
- trigger?: 'default' | 'cell' | 'row' | '' | null
1629
+ trigger?: 'default' | 'cell' | 'row' | '' | 'manual' | null
1624
1630
  highlight?: boolean
1625
1631
  range?: boolean
1626
1632
 
@@ -36,7 +36,7 @@ export interface VXETableConfigOptions {
36
36
  * 扩展插件授权码
37
37
  */
38
38
  authId?: string
39
- onauth?(event: {
39
+ onAuth?(event: {
40
40
  status: boolean
41
41
  code: number
42
42
  msg: string
@@ -89,12 +89,15 @@ export interface VXETableConfigOptions {
89
89
  [key: string]: any
90
90
  }
91
91
 
92
+ export type VxeGlobalConfig = VXETableConfigOptions
93
+
92
94
  export interface VxeGlobalIcon {
93
95
  [ket: string]: string
94
96
  }
95
97
 
96
98
  export type VxeGlobalConfigMethod = (options?: VXETableConfigOptions) => VXETableCore
97
99
  export type VxeGlobalThemeMethod = (name?: '' | 'light' | 'dark') => VXETableCore
100
+ export type VxeGlobalGetThemeMethod = () => 'light' | 'dark'
98
101
 
99
102
  /**
100
103
  * 请使用 setConfig
@@ -135,6 +138,8 @@ export type VxeGlobalUse = (plugin: VXETablePluginObject, ...options: any[]) =>
135
138
 
136
139
  export const setConfig: VxeGlobalConfigMethod
137
140
  export const setTheme: VxeGlobalThemeMethod
141
+ export const getTheme: VxeGlobalGetThemeMethod
142
+
138
143
  export const interceptor: VxeGlobalInterceptor
139
144
  export const renderer: VxeGlobalRenderer
140
145
  export const commands: VxeGlobalCommands
@@ -166,6 +171,9 @@ export const setup: VXETableSetupOptions
166
171
  */
167
172
  export const globalConfs: VXETableConfig
168
173
 
174
+ export function getComponent (name: string): any
175
+ export function component (comp: any): any
176
+
169
177
  export function setIcon(options?: VxeGlobalIcon): VXETableCore
170
178
 
171
179
  export interface VXETablePluginObject {
@@ -192,11 +200,13 @@ export interface VXETableCore {
192
200
  * 版本号
193
201
  */
194
202
  version: string
203
+ tableVersion?: string;
195
204
  /**
196
205
  * 设置全局参数/获取所有参数
197
206
  */
198
207
  setConfig: VxeGlobalConfigMethod
199
208
  setTheme: VxeGlobalThemeMethod
209
+ getTheme: VxeGlobalGetThemeMethod
200
210
  setIcon: typeof setIcon
201
211
  /**
202
212
  * 读取内部数据
@@ -259,6 +269,9 @@ export interface VXETableCore {
259
269
  t: VxeGlobalI18n
260
270
  _t: VxeGlobalTranslate
261
271
 
272
+ getComponent: typeof getComponent,
273
+ component: typeof component,
274
+
262
275
  /**
263
276
  * 请使用 setConfig
264
277
  * @deprecated
@@ -6,7 +6,15 @@ import { VxeGlobalRendererHandles } from './renderer'
6
6
 
7
7
  export namespace VxeGlobalMenusHandles {
8
8
  export type MenusOption<D = VxeTableDataRow> = {
9
+ /**
10
+ * 已废弃,请使用 tableMenuMethod
11
+ * @deprecated
12
+ */
9
13
  menuMethod?: (params: MenuMethodParams<D>, event: Event) => any
14
+ /**
15
+ * 表格 - 自定义菜单方法
16
+ */
17
+ tableMenuMethod?: (params: MenuMethodParams<D>, event: Event) => any
10
18
  }
11
19
  export interface MenuMethodParams<D = VxeTableDataRow> extends VxeGlobalRendererHandles.RenderCellParams<D> {
12
20
  $grid: VxeGridConstructor<D> | null