sh-view 2.8.1 → 2.8.2

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 (91) hide show
  1. package/.eslintrc.js +25 -20
  2. package/other.js +8 -8
  3. package/package.json +9 -6
  4. package/packages/components/index.js +91 -91
  5. package/packages/components/sh-alert/alert.ts +30 -0
  6. package/packages/components/sh-alert/index.vue +143 -168
  7. package/packages/components/sh-badge/index.vue +242 -242
  8. package/packages/components/sh-calendar/index.vue +650 -650
  9. package/packages/components/sh-card/index.vue +148 -148
  10. package/packages/components/sh-code-editor/index.vue +19 -19
  11. package/packages/components/sh-col/index.vue +92 -92
  12. package/packages/components/sh-corner/index.vue +230 -230
  13. package/packages/components/sh-count-to/index.vue +131 -131
  14. package/packages/components/sh-date/index.vue +301 -301
  15. package/packages/components/sh-drawer/index.vue +579 -579
  16. package/packages/components/sh-drawer/scrollbar.js +78 -78
  17. package/packages/components/sh-empty/index.vue +42 -42
  18. package/packages/components/sh-form/js/props.js +76 -76
  19. package/packages/components/sh-form/js/useForm.js +229 -229
  20. package/packages/components/sh-header/index.vue +261 -260
  21. package/packages/components/sh-icon/css/default/ionicons.svg +869 -869
  22. package/packages/components/sh-icon/css/font/iconfont.json +247 -247
  23. package/packages/components/sh-icon/index.vue +41 -41
  24. package/packages/components/sh-image/index.vue +133 -133
  25. package/packages/components/sh-list/index.vue +146 -146
  26. package/packages/components/sh-loading/index.vue +53 -53
  27. package/packages/components/sh-modal/index.vue +188 -188
  28. package/packages/components/sh-noticebar/index.vue +215 -215
  29. package/packages/components/sh-poptip/index.vue +597 -597
  30. package/packages/components/sh-progress/index.vue +276 -276
  31. package/packages/components/sh-pull-refresh/index.vue +289 -289
  32. package/packages/components/sh-result/index.vue +114 -114
  33. package/packages/components/sh-row/index.vue +66 -66
  34. package/packages/components/sh-split/components/trigger.vue +33 -33
  35. package/packages/components/sh-split/index.vue +342 -342
  36. package/packages/components/sh-table/components/importModal.vue +363 -363
  37. package/packages/components/sh-table/components/sh-column.vue +68 -68
  38. package/packages/components/sh-table/js/excel_to_json.js +313 -313
  39. package/packages/components/sh-table/js/props.js +305 -305
  40. package/packages/components/sh-table/js/tableMethods.js +167 -167
  41. package/packages/components/sh-table/js/useTable.js +636 -636
  42. package/packages/components/sh-table/table.vue +217 -217
  43. package/packages/components/sh-tabs/index.vue +426 -426
  44. package/packages/components/sh-tag/index.vue +168 -168
  45. package/packages/components/sh-toolbar/index.vue +182 -182
  46. package/packages/components/sh-tree/components/table-tree.vue +289 -289
  47. package/packages/components/sh-tree/mixin/treeProps.js +122 -122
  48. package/packages/components/sh-upload/index.vue +535 -535
  49. package/packages/components/sh-water-fall/index.vue +80 -80
  50. package/packages/components/sh-water-mark/index.vue +96 -96
  51. package/packages/css/index.js +4 -4
  52. package/packages/directive/index.js +19 -19
  53. package/packages/directive/module/click-out.js +14 -14
  54. package/packages/directive/module/draggable.js +42 -42
  55. package/packages/directive/module/line-clamp.js +22 -22
  56. package/packages/directive/module/prevent-click.js +18 -18
  57. package/packages/directive/module/resize.js +14 -14
  58. package/packages/directive/module/ripple.js +166 -166
  59. package/packages/index.js +39 -39
  60. package/packages/mixin/index.js +86 -86
  61. package/packages/other/sh-cron-modal/components/cron-content.vue +294 -294
  62. package/packages/other/sh-cron-modal/index.vue +81 -81
  63. package/packages/other/sh-cron-modal/mixin/cron-emits.js +1 -1
  64. package/packages/other/sh-cron-modal/mixin/cron-props.js +9 -9
  65. package/packages/other/sh-cron-modal/tabs/cron-week-box.vue +126 -126
  66. package/packages/other/sh-menu/index.vue +326 -326
  67. package/packages/other/sh-menu/menu-group-content.vue +136 -136
  68. package/packages/other/sh-menu/menu-item-content.vue +71 -71
  69. package/packages/other/sh-menu-card/index.vue +250 -250
  70. package/packages/other/sh-menu-card/menu-box.vue +87 -87
  71. package/packages/other/sh-preview/components/sh-excel.vue +163 -163
  72. package/packages/other/sh-preview/js/data-hook.js +41 -41
  73. package/packages/other/sh-preview/js/data-props.js +15 -15
  74. package/packages/other/sh-system-tip/index.vue +115 -115
  75. package/packages/utils/resize.js +69 -70
  76. package/packages/utils/transfer-queue.js +12 -12
  77. package/packages/vxeTable/index.js +193 -184
  78. package/packages/vxeTable/plugins/export.js +450 -450
  79. package/packages/vxeTable/render/cell/vxe-render-img.vue +27 -27
  80. package/packages/vxeTable/render/cell/vxe-render-table.vue +51 -51
  81. package/packages/vxeTable/render/cell/vxe-render-time.vue +44 -44
  82. package/packages/vxeTable/render/cell/vxe-render-tree.vue +70 -70
  83. package/packages/vxeTable/render/filters/vxe-filter-input.vue +26 -26
  84. package/packages/vxeTable/render/filters/vxe-filter-time.vue +26 -26
  85. package/packages/vxeTable/render/globalRenders.jsx +514 -514
  86. package/packages/vxeTable/render/mixin/cell-hooks.js +198 -198
  87. package/packages/vxeTable/render/mixin/cell-props.js +23 -23
  88. package/packages/vxeTable/render/mixin/filter-hooks.js +46 -46
  89. package/tsconfig.json +25 -0
  90. package/types/component.d.ts +1 -0
  91. package/types/index.ts +0 -0
@@ -1,70 +1,69 @@
1
- import { utils } from 'sh-tools'
2
-
3
- let resizeTimeout = null
4
- const eventStore = []
5
- const defaultInterval = 500
6
-
7
- function eventHandle() {
8
- if (eventStore.length) {
9
- eventStore.forEach(item => {
10
- item.tarList.forEach(observer => {
11
- const { target, width, heighe } = observer
12
- const clientWidth = target.clientWidth
13
- const clientHeight = target.clientHeight
14
- const rWidth = clientWidth && width !== clientWidth
15
- const rHeight = clientHeight && heighe !== clientHeight
16
- if (rWidth || rHeight) {
17
- observer.width = clientWidth
18
- observer.heighe = clientHeight
19
- setTimeout(item.callback)
20
- }
21
- })
22
- })
23
- eventListener()
24
- }
25
- }
26
-
27
- function eventListener() {
28
- clearTimeout(resizeTimeout)
29
- resizeTimeout = setTimeout(eventHandle, defaultInterval)
30
- }
31
-
32
- export class XEResizeObserver {
33
- // target: Element, width: number, heighe: number
34
- tarList = []
35
- callback = () => {}
36
- constructor(callback) {
37
- this.callback = callback
38
- }
39
- observe(target) {
40
- if (target) {
41
- const { tarList } = this
42
- if (!tarList.some(observer => observer.target === target)) {
43
- tarList.push({
44
- target,
45
- width: target.clientWidth,
46
- heighe: target.clientHeight
47
- })
48
- }
49
- if (!eventStore.length) {
50
- eventListener()
51
- }
52
- if (!eventStore.some(item => item === this)) {
53
- eventStore.push(this)
54
- }
55
- }
56
- }
57
- unobserve(target) {
58
- utils.remove(eventStore, item => item.tarList.some(observer => observer.target === target))
59
- }
60
- disconnect() {
61
- utils.remove(eventStore, item => item === this)
62
- }
63
- }
64
-
65
- export function createResizeEvent(callback) {
66
- if (window.ResizeObserver) {
67
- return new window.ResizeObserver(callback)
68
- }
69
- return new XEResizeObserver(callback)
70
- }
1
+ import { utils } from 'sh-tools'
2
+
3
+ let resizeTimeout = null
4
+ const eventStore = []
5
+ const defaultInterval = 500
6
+
7
+ function eventHandle() {
8
+ if (eventStore.length) {
9
+ eventStore.forEach(item => {
10
+ item.tarList.forEach(observer => {
11
+ const { target, width, heighe } = observer
12
+ const clientWidth = target.clientWidth
13
+ const clientHeight = target.clientHeight
14
+ const rWidth = clientWidth && width !== clientWidth
15
+ const rHeight = clientHeight && heighe !== clientHeight
16
+ if (rWidth || rHeight) {
17
+ observer.width = clientWidth
18
+ observer.heighe = clientHeight
19
+ setTimeout(item.callback)
20
+ }
21
+ })
22
+ })
23
+ eventListener()
24
+ }
25
+ }
26
+
27
+ function eventListener() {
28
+ clearTimeout(resizeTimeout)
29
+ resizeTimeout = setTimeout(eventHandle, defaultInterval)
30
+ }
31
+
32
+ export class XEResizeObserver {
33
+ // target: Element, width: number, heighe: number
34
+ constructor(callback) {
35
+ this.tarList = []
36
+ this.callback = callback
37
+ }
38
+ observe(target) {
39
+ if (target) {
40
+ const { tarList } = this
41
+ if (!tarList.some(observer => observer.target === target)) {
42
+ tarList.push({
43
+ target,
44
+ width: target.clientWidth,
45
+ heighe: target.clientHeight
46
+ })
47
+ }
48
+ if (!eventStore.length) {
49
+ eventListener()
50
+ }
51
+ if (!eventStore.some(item => item === this)) {
52
+ eventStore.push(this)
53
+ }
54
+ }
55
+ }
56
+ unobserve(target) {
57
+ utils.remove(eventStore, item => item.tarList.some(observer => observer.target === target))
58
+ }
59
+ disconnect() {
60
+ utils.remove(eventStore, item => item === this)
61
+ }
62
+ }
63
+
64
+ export function createResizeEvent(callback) {
65
+ if (window.ResizeObserver) {
66
+ return new window.ResizeObserver(callback)
67
+ }
68
+ return new XEResizeObserver(callback)
69
+ }
@@ -1,12 +1,12 @@
1
- let transferIndex = 0
2
- let lastVisibleIndex = 0
3
-
4
- function transferIncrease() {
5
- transferIndex++
6
- }
7
-
8
- function lastVisibleIncrease() {
9
- lastVisibleIndex++
10
- }
11
-
12
- export { transferIndex, transferIncrease, lastVisibleIndex, lastVisibleIncrease }
1
+ let transferIndex = 0
2
+ let lastVisibleIndex = 0
3
+
4
+ function transferIncrease() {
5
+ transferIndex++
6
+ }
7
+
8
+ function lastVisibleIncrease() {
9
+ lastVisibleIndex++
10
+ }
11
+
12
+ export { transferIndex, transferIncrease, lastVisibleIndex, lastVisibleIncrease }
@@ -1,184 +1,193 @@
1
- import VXETable from 'vxe-table'
2
- import './css/index.scss'
3
- import VXETablePluginExportXLSX from './plugins/export'
4
- import VXETablePluginExportPDF from 'vxe-table-plugin-export-pdf'
5
- import XEClipboard from 'xe-clipboard'
6
- import { publicRenders, extraRenders, filterRenders, publicRendersNames } from './render/globalRenders.jsx'
7
-
8
- let vxeOptions = {
9
- zIndex: 1500,
10
- version: 0,
11
- input: {
12
- controls: false,
13
- clearable: true
14
- },
15
- select: {
16
- optionConfig: {
17
- useKey: false,
18
- keyField: 'value'
19
- }
20
- },
21
- table: {
22
- fit: true,
23
- stripe: false,
24
- border: 'full',
25
- round: false,
26
- keepSource: false,
27
- minHeight: 30,
28
- rowConfig: {
29
- useKey: false,
30
- keyField: '_XID',
31
- isCurrent: true,
32
- isHover: true
33
- },
34
- sortConfig: {
35
- multiple: false,
36
- chronological: false,
37
- trigger: 'cell'
38
- },
39
- radioConfig: {
40
- strict: true,
41
- highlight: true
42
- },
43
- checkboxConfig: {
44
- checkStrictly: false,
45
- highlight: true,
46
- reserve: true,
47
- checkAll: false
48
- },
49
- tooltipConfig: {
50
- showAll: false,
51
- theme: 'dark',
52
- enterable: true
53
- },
54
- treeConfig: {
55
- indent: 20,
56
- showLine: false,
57
- expandAll: false,
58
- expandRowKeys: [],
59
- accordion: true,
60
- showIcon: true,
61
- childrenField: 'children',
62
- // 若为平行数据结构不是嵌套结构则使用下面配置 transform 需要为true
63
- transform: false,
64
- rowField: 'id',
65
- parentField: 'parentId'
66
- },
67
- mouseConfig: {
68
- selected: true
69
- },
70
- keyboardConfig: {
71
- isArrow: true,
72
- isEsc: true,
73
- isDel: false,
74
- isEnter: true,
75
- isTab: true,
76
- isEdit: true,
77
- isChecked: true,
78
- enterToTab: false
79
- },
80
- editConfig: {
81
- enabled: true,
82
- trigger: 'click',
83
- mode: 'cell'
84
- },
85
- customConfig: {
86
- storage: true
87
- },
88
- seqConfig: {
89
- startIndex: 1,
90
- seqMethod: obj => {
91
- let { $table, seq, $seq, $$seq, $rowIndex } = obj
92
- const grid = $table.xegrid || {}
93
- const propsData = $table.props || {}
94
- const { seqConfig, treeConfig } = propsData
95
- const tablePage = grid.props?.pagerConfig?.enabled
96
- if ($$seq) {
97
- return $$seq
98
- } else if (tablePage) {
99
- const { pagerConfig } = grid.props
100
- const pageStart = seqConfig?.startIndex || (+pagerConfig.pageSize || 50) * ((+pagerConfig.currentPage || 1) - 1)
101
- return treeConfig && $seq ? Number(pageStart) + Number($seq) + '.' + seq : Number(pageStart) + Number(seq)
102
- } else if (treeConfig) {
103
- return $seq ? $seq + '.' + seq : seq
104
- }
105
- return seq === -1 ? $rowIndex + (seqConfig.startIndex || 1) : seq
106
- }
107
- },
108
- resizeConfig: {
109
- refreshDelay: 200
110
- },
111
- scrollX: {
112
- enabled: true,
113
- gt: 40,
114
- oSize: 0
115
- },
116
- scrollY: {
117
- enabled: true,
118
- gt: 60,
119
- oSize: 0
120
- }
121
- },
122
- pager: {
123
- currentPage: 1,
124
- pageSize: 50,
125
- total: 0,
126
- layouts: ['Sizes', 'PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'FullJump', 'Total'],
127
- pagerCount: 7,
128
- pageSizes: [
129
- { label: '50条', value: 50 },
130
- { label: '100条', value: 100 },
131
- { label: '500条', value: 500 },
132
- { label: '1000条', value: 1000 },
133
- { label: '10000条', value: 10000 },
134
- { label: '10万条', value: 100000 }
135
- ],
136
- align: 'right',
137
- border: true,
138
- background: false,
139
- perfect: true,
140
- autoHidden: false,
141
- enabled: true
142
- },
143
- form: {},
144
- modal: {
145
- lockView: true,
146
- resize: true,
147
- mask: true,
148
- duration: 3000,
149
- dblclickZoom: true,
150
- showTitleOverflow: true
151
- },
152
- icon: {},
153
- loading: {
154
- icon: 'vxe-icon-spinner roll',
155
- text: '加载中...'
156
- }
157
- }
158
-
159
- let vxePdfOptions = {
160
- // 设置全局默认字体
161
- fontName: 'SourceHanSans-Normal',
162
- beforeMethod: ({ $pdf, options, columns, datas }) => {}
163
- }
164
-
165
- VXETable.renderer.mixin(publicRenders)
166
- VXETable.renderer.mixin(extraRenders)
167
- VXETable.renderer.mixin(filterRenders)
168
- VXETable.use(VXETablePluginExportXLSX)
169
- VXETable.use(VXETablePluginExportPDF)
170
-
171
- const index = {
172
- install(Vue, { vxeOption = {}, vxePdfOption = {} }) {
173
- let setupOption = Object.assign(vxeOptions, vxeOption)
174
- let pdfSetUpOption = Object.assign(vxePdfOptions, vxePdfOption)
175
- VXETable.setup(setupOption)
176
- VXETablePluginExportPDF.setup(pdfSetUpOption)
177
- Vue.use(VXETable)
178
- Vue.config.globalProperties.$vTable = VXETable
179
- Vue.config.globalProperties.$vTableSetup = setupOption
180
- Vue.config.globalProperties.$vxePluginNames = publicRendersNames
181
- Vue.config.globalProperties.$vClipboard = XEClipboard
182
- }
183
- }
184
- export default index
1
+ import VXETable from 'vxe-table'
2
+ import './css/index.scss'
3
+ import VXETablePluginExportXLSX from './plugins/export'
4
+ import VXETablePluginExportPDF from 'vxe-table-plugin-export-pdf'
5
+ import XEClipboard from 'xe-clipboard'
6
+ import ShValidators from 'sh-tools/packages/utils/validate'
7
+ import { publicRenders, extraRenders, filterRenders, publicRendersNames } from './render/globalRenders.jsx'
8
+
9
+ let vxeOptions = {
10
+ zIndex: 1500,
11
+ version: 0,
12
+ input: {
13
+ controls: false,
14
+ clearable: true
15
+ },
16
+ select: {
17
+ optionConfig: {
18
+ useKey: false,
19
+ keyField: 'value'
20
+ }
21
+ },
22
+ table: {
23
+ fit: true,
24
+ stripe: false,
25
+ border: 'full',
26
+ round: false,
27
+ keepSource: false,
28
+ minHeight: 30,
29
+ rowConfig: {
30
+ useKey: false,
31
+ keyField: '_XID',
32
+ isCurrent: true,
33
+ isHover: true
34
+ },
35
+ sortConfig: {
36
+ multiple: false,
37
+ chronological: false,
38
+ trigger: 'cell'
39
+ },
40
+ radioConfig: {
41
+ strict: true,
42
+ highlight: true
43
+ },
44
+ checkboxConfig: {
45
+ checkStrictly: false,
46
+ highlight: true,
47
+ reserve: true,
48
+ checkAll: false
49
+ },
50
+ tooltipConfig: {
51
+ showAll: false,
52
+ theme: 'dark',
53
+ enterable: true
54
+ },
55
+ treeConfig: {
56
+ indent: 20,
57
+ showLine: false,
58
+ expandAll: false,
59
+ expandRowKeys: [],
60
+ accordion: true,
61
+ showIcon: true,
62
+ childrenField: 'children',
63
+ // 若为平行数据结构不是嵌套结构则使用下面配置 transform 需要为true
64
+ transform: false,
65
+ rowField: 'id',
66
+ parentField: 'parentId'
67
+ },
68
+ mouseConfig: {
69
+ selected: true
70
+ },
71
+ keyboardConfig: {
72
+ isArrow: true,
73
+ isEsc: true,
74
+ isDel: false,
75
+ isEnter: true,
76
+ isTab: true,
77
+ isEdit: true,
78
+ isChecked: true,
79
+ enterToTab: false
80
+ },
81
+ editConfig: {
82
+ enabled: true,
83
+ trigger: 'click',
84
+ mode: 'cell'
85
+ },
86
+ customConfig: {
87
+ storage: true
88
+ },
89
+ seqConfig: {
90
+ startIndex: 1,
91
+ seqMethod: obj => {
92
+ let { $table, seq, $seq, $$seq, $rowIndex } = obj
93
+ const grid = $table.xegrid || {}
94
+ const propsData = $table.props || {}
95
+ const { seqConfig, treeConfig } = propsData
96
+ const tablePage = grid.props?.pagerConfig?.enabled
97
+ if ($$seq) {
98
+ return $$seq
99
+ } else if (tablePage) {
100
+ const { pagerConfig } = grid.props
101
+ const pageStart = seqConfig?.startIndex || (+pagerConfig.pageSize || 50) * ((+pagerConfig.currentPage || 1) - 1)
102
+ return treeConfig && $seq ? Number(pageStart) + Number($seq) + '.' + seq : Number(pageStart) + Number(seq)
103
+ } else if (treeConfig) {
104
+ return $seq ? $seq + '.' + seq : seq
105
+ }
106
+ return seq === -1 ? $rowIndex + (seqConfig.startIndex || 1) : seq
107
+ }
108
+ },
109
+ resizeConfig: {
110
+ refreshDelay: 200
111
+ },
112
+ scrollX: {
113
+ enabled: true,
114
+ gt: 40,
115
+ oSize: 0
116
+ },
117
+ scrollY: {
118
+ enabled: true,
119
+ gt: 60,
120
+ oSize: 0
121
+ }
122
+ },
123
+ pager: {
124
+ currentPage: 1,
125
+ pageSize: 50,
126
+ total: 0,
127
+ layouts: ['Sizes', 'PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'FullJump', 'Total'],
128
+ pagerCount: 7,
129
+ pageSizes: [
130
+ { label: '50条', value: 50 },
131
+ { label: '100条', value: 100 },
132
+ { label: '500条', value: 500 },
133
+ { label: '1000条', value: 1000 },
134
+ { label: '10000条', value: 10000 },
135
+ { label: '10万条', value: 100000 }
136
+ ],
137
+ align: 'right',
138
+ border: true,
139
+ background: false,
140
+ perfect: true,
141
+ autoHidden: false,
142
+ enabled: true
143
+ },
144
+ form: {},
145
+ modal: {
146
+ lockView: true,
147
+ resize: true,
148
+ mask: true,
149
+ duration: 3000,
150
+ dblclickZoom: true,
151
+ showTitleOverflow: true
152
+ },
153
+ icon: {},
154
+ loading: {
155
+ icon: 'vxe-icon-spinner roll',
156
+ text: '加载中...'
157
+ }
158
+ }
159
+
160
+ let vxePdfOptions = {
161
+ // 设置全局默认字体
162
+ fontName: 'SourceHanSans-Normal',
163
+ beforeMethod: ({ $pdf, options, columns, datas }) => {}
164
+ }
165
+
166
+ Object.keys(ShValidators).forEach(key => {
167
+ VXETable.validators.add(key, {
168
+ cellValidatorMethod({ cellValue }) {
169
+ return ShValidators[key](cellValue)
170
+ }
171
+ })
172
+ })
173
+
174
+ VXETable.renderer.mixin(publicRenders)
175
+ VXETable.renderer.mixin(extraRenders)
176
+ VXETable.renderer.mixin(filterRenders)
177
+ VXETable.use(VXETablePluginExportXLSX)
178
+ VXETable.use(VXETablePluginExportPDF)
179
+
180
+ const index = {
181
+ install(Vue, { vxeOption = {}, vxePdfOption = {} }) {
182
+ let setupOption = Object.assign(vxeOptions, vxeOption)
183
+ let pdfSetUpOption = Object.assign(vxePdfOptions, vxePdfOption)
184
+ VXETable.setup(setupOption)
185
+ VXETablePluginExportPDF.setup(pdfSetUpOption)
186
+ Vue.use(VXETable)
187
+ Vue.config.globalProperties.$vTable = VXETable
188
+ Vue.config.globalProperties.$vTableSetup = setupOption
189
+ Vue.config.globalProperties.$vxePluginNames = publicRendersNames
190
+ Vue.config.globalProperties.$vClipboard = XEClipboard
191
+ }
192
+ }
193
+ export default index