@idooel/components 0.0.1-beta.39 → 0.0.1-beta.40

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 (95) hide show
  1. package/dist/@idooel/components.esm.js +4667 -4273
  2. package/dist/@idooel/components.umd.js +4609 -4191
  3. package/jsconfig.json +8 -0
  4. package/package.json +3 -3
  5. package/packages/alert/index.js +4 -4
  6. package/packages/alert/src/index.vue +45 -45
  7. package/packages/batch-export/index.js +4 -4
  8. package/packages/batch-export/src/index.vue +104 -108
  9. package/packages/business-components/modal-fsm/index.js +5 -0
  10. package/packages/business-components/modal-fsm/src/index.vue +164 -0
  11. package/packages/{composite-components → business-components}/modal-import/index.js +4 -4
  12. package/packages/{composite-components → business-components}/modal-import/src/index.vue +139 -145
  13. package/packages/{composite-components → business-components}/modal-timeline/index.js +4 -4
  14. package/packages/{composite-components → business-components}/modal-timeline/src/index.vue +77 -76
  15. package/packages/button/index.js +4 -4
  16. package/packages/button/src/index.vue +54 -54
  17. package/packages/checkbox/index.js +4 -4
  18. package/packages/checkbox/src/index.vue +52 -52
  19. package/packages/composite-components/button-group/index.js +4 -4
  20. package/packages/composite-components/button-group/src/index.vue +88 -53
  21. package/packages/composite-components/{attachment → form-attachment}/src/index.vue +14 -14
  22. package/packages/composite-components/modal-confirm/index.js +5 -0
  23. package/packages/composite-components/modal-confirm/src/index.vue +69 -0
  24. package/packages/composite-components/modal-form/index.js +4 -4
  25. package/packages/composite-components/modal-form/src/index.vue +202 -202
  26. package/packages/{img-crop → composite-components/modal-img-crop}/index.js +4 -4
  27. package/packages/{img-crop → composite-components/modal-img-crop}/src/index.vue +284 -290
  28. package/packages/composite-components/modal-table/index.js +0 -0
  29. package/packages/composite-components/modal-tree/index.js +4 -4
  30. package/packages/composite-components/modal-tree/src/index.vue +75 -75
  31. package/packages/composite-components/search-area/index.js +4 -4
  32. package/packages/composite-components/search-area/src/index.vue +218 -229
  33. package/packages/composite-components/search-area/src/label.vue +35 -35
  34. package/packages/composite-components/table-transfer/index.js +0 -0
  35. package/packages/date/index.js +4 -4
  36. package/packages/date/src/index.vue +95 -39
  37. package/packages/date-range/index.js +4 -4
  38. package/packages/date-range/src/index.vue +47 -47
  39. package/packages/form/index.js +4 -4
  40. package/packages/form/src/index.vue +236 -240
  41. package/packages/icon/index.js +4 -4
  42. package/packages/icon/src/index.vue +31 -31
  43. package/packages/index.js +132 -99
  44. package/packages/input/index.js +4 -4
  45. package/packages/input/src/index.vue +35 -35
  46. package/packages/input-number/index.js +4 -4
  47. package/packages/input-number/src/index.vue +23 -23
  48. package/packages/modal/index.js +4 -4
  49. package/packages/modal/src/index.vue +184 -162
  50. package/packages/{form-group-model → models/form-group-model}/index.js +4 -4
  51. package/packages/{form-group-model → models/form-group-model}/src/index.vue +273 -279
  52. package/packages/{form-model → models/form-model}/index.js +4 -4
  53. package/packages/{form-model → models/form-model}/src/index.vue +201 -189
  54. package/packages/{step-model → models/step-model}/index.js +4 -4
  55. package/packages/{step-model → models/step-model}/src/index.vue +215 -219
  56. package/packages/models/tree-table-model/README.md +0 -0
  57. package/packages/{tree-table-model → models/tree-table-model}/index.js +4 -4
  58. package/packages/{tree-table-model → models/tree-table-model}/src/index.vue +494 -493
  59. package/packages/radio/index.js +4 -4
  60. package/packages/radio/src/index.vue +56 -56
  61. package/packages/select/index.js +4 -4
  62. package/packages/select/src/index.vue +92 -92
  63. package/packages/select-entity/index.js +4 -4
  64. package/packages/select-entity/src/index.vue +113 -113
  65. package/packages/table/index.js +4 -4
  66. package/packages/table/src/action.vue +164 -134
  67. package/packages/table/src/index.vue +257 -257
  68. package/packages/tabs/index.js +4 -4
  69. package/packages/tabs/src/index.vue +55 -55
  70. package/packages/text/index.js +4 -4
  71. package/packages/text/src/index.vue +47 -47
  72. package/packages/text-editor/index.js +4 -4
  73. package/packages/text-editor/src/index.vue +72 -72
  74. package/packages/textarea/index.js +4 -4
  75. package/packages/textarea/src/index.vue +57 -57
  76. package/packages/theme/form.scss +21 -21
  77. package/packages/theme/index.scss +42 -42
  78. package/packages/theme/overrid.scss +7 -7
  79. package/packages/theme/styleClass.scss +2 -2
  80. package/packages/theme/variables.scss +55 -55
  81. package/packages/timeline/index.js +4 -4
  82. package/packages/timeline/src/index.vue +253 -234
  83. package/packages/tpl/index.js +4 -4
  84. package/packages/tpl/src/index.vue +55 -55
  85. package/packages/tree/index.js +4 -4
  86. package/packages/tree/src/TreeNode.vue +29 -29
  87. package/packages/tree/src/index.vue +101 -101
  88. package/packages/upload/index.js +4 -4
  89. package/packages/upload/src/index.vue +440 -442
  90. package/packages/utils/index.js +48 -47
  91. package/scripts/rollup.config.js +42 -40
  92. package/scripts/rollup.esm.config.js +11 -11
  93. package/scripts/rollup.umd.config.js +14 -14
  94. /package/packages/composite-components/{attachment → form-attachment}/index.js +0 -0
  95. /package/packages/{tree-table-model/README.md → composite-components/modal-table-transfer/index.js} +0 -0
@@ -1,291 +1,285 @@
1
- <template>
2
- <div>
3
- <ele-modal
4
- :ref="getEleModal"
5
- :title="title"
6
- :cancelText="cancelText"
7
- :maskClosable="maskClosable"
8
- v-on="$listeners"
9
- :size="size"
10
- :value="value"
11
- @ok="handleOk"
12
- :showDefaultFooter="true"
13
- >
14
- <div class="ele-imgCrop__wrapper">
15
- <div class="ele-imgCrop__left ele-imgCrop__item">
16
- <div class="ele-imgCrop__noImg">
17
- <ele-upload v-if="!fileId" v-bind="uploadFileConfig" class="ele-img-crop__upload" @on-success="onUploadFileSuccess" icon="inbox" url="api/zuul/api-file/workbench/file"></ele-upload>
18
- <template v-else>
19
- <img :ref="leftImage" class="img-crop-left__image" :src="imageUrl" alt="">
20
- </template>
21
- </div>
22
- <div class="margin-t-8">
23
- <span v-if="imgtips" class="ele-imgCrop__font1 ele-imgCrop__tips" :class="isFail? 'ele-imgCrop__error' : ''">{{ imgtips }}</span>
24
- <template v-else>
25
- <span class="ele-imgCrop__font1">{{ fileName }}</span>
26
- <a-icon v-if="fileName" @click="handleClickDeleteFile" type="close" style="cursor: pointer;float: right; line-height: 24px;"/>
27
- </template>
28
- </div>
29
- </div>
30
- <div class="ele-imgCrop__right ele-imgCrop__item">
31
- <span v-if="!fileId" class="ele-imgCrop__font2">左侧上传图片后可预览</span>
32
- <template v-else>
33
- <img class="img-crop-right__image" :src="previewBase" alt="">
34
- </template>
35
- </div>
36
- </div>
37
- </ele-modal>
38
- </div>
39
- </template>
40
-
41
- <script>
42
- import { v4 as uuidv4 } from 'uuid'
43
- import EleModal from '../../modal/src/index.vue'
44
- import EleIcon from '../../icon/src/index.vue'
45
- import Cropper from 'cropperjs'
46
- import { util, net } from '@idooel/shared'
47
- export default {
48
- name: 'ele-img-crop',
49
- components: {
50
- EleModal,
51
- EleIcon
52
- },
53
- model: {
54
- event: 'input',
55
- prop: 'value'
56
- },
57
- props: {
58
- title: {
59
- type: String,
60
- default: '图像裁剪'
61
- },
62
- uploadFileConfig: {
63
- type: Object,
64
- default: () => {
65
- return {
66
- size: 10,
67
- accept: '*',
68
- byteConversion: 1024 * 1024
69
- }
70
- }
71
- },
72
- imageId: {
73
- type: String
74
- },
75
- maskClosable: {
76
- type: Boolean,
77
- default () {
78
- return false
79
- }
80
- },
81
- size: {
82
- type: String,
83
- default () {
84
- return 'big'
85
- }
86
- },
87
- value: {
88
- type: Boolean,
89
- default () {
90
- return false
91
- }
92
- },
93
- cropperConfig: {
94
- type: Object,
95
- default: () => {
96
- return {
97
- aspectRatio: 16 / 9
98
- }
99
- }
100
- }
101
- },
102
- data () {
103
- return {
104
- haveImg: false,
105
- imgtips: null,
106
- isFail: false,
107
- cancelText: '取消',
108
- fileName: null,
109
- fileId: null,
110
- previewBase: null,
111
- cropper: null
112
- }
113
- },
114
- computed: {
115
- leftImage () {
116
- return uuidv4()
117
- },
118
- imageUrl () {
119
- return `api-file/workbench/file/stream/${this.fileId}?origin=true`
120
- },
121
- getEleModal () {
122
- return uuidv4()
123
- }
124
- },
125
- watch: {
126
- value: {
127
- handler (value) {
128
- this.fileId = this.imageId
129
- if (value && this.fileId) {
130
- setTimeout(() => {
131
- this.initCropper()
132
- })
133
- }
134
- },
135
- immediate: true
136
- }
137
- },
138
- methods: {
139
- handleClickDeleteFile () {
140
- this.fileId = null
141
- this.fileName = null
142
- },
143
- handleOk () {
144
- this.cropper.getCroppedCanvas().toBlob(async (blob) => {
145
- await this.uploadFile(blob)
146
- this.$emit('input', false)
147
- this.$emit('change', this.fileId)
148
- })
149
- },
150
- async uploadFile (file) {
151
- const formData = new FormData()
152
- formData.append('serviceCode', 'cover-image')
153
- formData.append('_t', Math.random())
154
- formData.append('file', file)
155
- await net.post(
156
- 'zuul/api-file/workbench/file' + '?_csrf=' + localStorage.getItem('token'),
157
- formData
158
- ).then(() => {})
159
- },
160
- initCropper () {
161
- let previewReady = false
162
- console.log('this.$refs[this.leftImage', this.$refs[this.leftImage])
163
- this.cropper = new Cropper(this.$refs[this.leftImage], {
164
- aspectRatio: this.cropperConfig.aspectRatio,
165
- ready: () => {
166
- previewReady = true
167
- },
168
- crop: util.debounce(() => {
169
- if (!previewReady) {
170
- return
171
- }
172
- this.previewBase = this.cropper.getCroppedCanvas().toDataURL()
173
- }, 200)
174
- })
175
- },
176
- onUploadFileSuccess (props) {
177
- const { response: { data: { fileID } }, name } = props
178
- this.fileId = fileID
179
- this.fileName = name
180
- this.$nextTick(() => {
181
- this.initCropper()
182
- })
183
- }
184
- }
185
- }
186
- </script>
187
-
188
- <style lang="scss" scoped>
189
- ::v-deep .ant-modal-body {
190
- padding: 16px;
191
- }
192
- ::v-deep .ant-modal-header {
193
- padding: 16px;
194
- }
195
- .ele-imgCrop__wrapper {
196
- display: flex;
197
- gap: 16px;
198
- justify-content: center;
199
- margin-bottom: 30px;
200
- .ele-imgCrop__left {
201
- .ele-imgCrop__noImg {
202
- display: flex;
203
- flex-direction: column;
204
- justify-content: center;
205
- align-items: center;
206
- width: 100%;
207
- height: 100%;
208
- position: relative;
209
- .img-crop-left__image {
210
- width: 100%;
211
- height: 100%;
212
- }
213
- .ele-img-crop__upload {
214
- width: 100%;
215
- height: 100%;
216
- ::v-deep .ele-upload__inner {
217
- height: 100%;
218
- border: unset;
219
- background: transparent !important;
220
- .ele-upload__area {
221
- display: flex;
222
- flex-direction: column;
223
- height: 100%;
224
- align-items: center;
225
- justify-content: center;
226
- .ele-upload__area--text {
227
- margin-top: 16px;
228
- display: flex;
229
- flex-direction: column;
230
- align-items: center;
231
- }
232
- }
233
- }
234
- }
235
- .ele-imgCrop__font1 {
236
- color: var(--idoole-black-088);
237
- font-size: 16px;
238
- line-height: 24px !important;
239
- }
240
- .ele-imgCrop__font2 {
241
- color: var(--idoole-black-06);
242
- font-size: 14px;
243
- line-height: 22px;
244
- }
245
- }
246
- .ele-imgCrop__update {
247
- position: absolute;
248
- top: 0;
249
- left: 0;
250
- width: 100%;
251
- height: 100%;
252
- opacity: 0;
253
- cursor: pointer;
254
- }
255
- }
256
- .ele-imgCrop__right {
257
- position: relative;
258
- span {
259
- position: absolute;
260
- top: 50%;
261
- left: 50%;
262
- transform: translate(-50%, -50%);
263
- }
264
- .img-crop-right__image {
265
- width: 100%;
266
- height: 100%;
267
- }
268
- }
269
- .ele-imgCrop__item {
270
- width: 480px;
271
- height: 300px;
272
- border-radius: 2px;
273
- border: 1px dashed var(--idooel-form-title-border-color);
274
- background: var(--idooel-form-upload-bg-color);
275
- }
276
- }
277
- .ele-imgCrop__tips {
278
- float: left;
279
- width: 80%;
280
- }
281
- .ele-imgCrop__error {
282
- color: var(--idooel-form-border-err-color) !important;
283
- }
284
- .ele-imgCrop__error2 {
285
- color: var(--idooel-img-crop-err-color) !important;
286
- }
287
- .ele-imgCrop__icon {
288
- font-size: 48px;
289
- color: var(--idooel-link-06);
290
- }
1
+ <template>
2
+ <div>
3
+ <ele-modal
4
+ :ref="getEleModal"
5
+ :title="title"
6
+ :cancelText="cancelText"
7
+ :maskClosable="maskClosable"
8
+ v-on="$listeners"
9
+ :size="size"
10
+ :value="value"
11
+ @ok="handleOk"
12
+ :showDefaultFooter="true"
13
+ >
14
+ <div class="ele-imgCrop__wrapper">
15
+ <div class="ele-imgCrop__left ele-imgCrop__item">
16
+ <div class="ele-imgCrop__noImg">
17
+ <ele-upload v-if="!fileId" v-bind="uploadFileConfig" class="ele-img-crop__upload" @on-success="onUploadFileSuccess" icon="inbox" url="api/zuul/api-file/workbench/file"></ele-upload>
18
+ <template v-else>
19
+ <img :ref="leftImage" class="img-crop-left__image" :src="imageUrl" alt="">
20
+ </template>
21
+ </div>
22
+ <div class="margin-t-8">
23
+ <span v-if="imgtips" class="ele-imgCrop__font1 ele-imgCrop__tips" :class="isFail? 'ele-imgCrop__error' : ''">{{ imgtips }}</span>
24
+ <template v-else>
25
+ <span class="ele-imgCrop__font1">{{ fileName }}</span>
26
+ <a-icon v-if="fileName" @click="handleClickDeleteFile" type="close" style="cursor: pointer;float: right; line-height: 24px;"/>
27
+ </template>
28
+ </div>
29
+ </div>
30
+ <div class="ele-imgCrop__right ele-imgCrop__item">
31
+ <span v-if="!fileId" class="ele-imgCrop__font2">左侧上传图片后可预览</span>
32
+ <template v-else>
33
+ <img class="img-crop-right__image" :src="previewBase" alt="">
34
+ </template>
35
+ </div>
36
+ </div>
37
+ </ele-modal>
38
+ </div>
39
+ </template>
40
+
41
+ <script>
42
+ import { v4 as uuidv4 } from 'uuid'
43
+ import Cropper from 'cropperjs'
44
+ import { util, net } from '@idooel/shared'
45
+ export default {
46
+ name: 'ele-modal-img-crop',
47
+ model: {
48
+ event: 'input',
49
+ prop: 'value'
50
+ },
51
+ props: {
52
+ title: {
53
+ type: String,
54
+ default: '图像裁剪'
55
+ },
56
+ uploadFileConfig: {
57
+ type: Object,
58
+ default: () => {
59
+ return {
60
+ size: 10,
61
+ accept: '*',
62
+ byteConversion: 1024 * 1024
63
+ }
64
+ }
65
+ },
66
+ imageId: {
67
+ type: String
68
+ },
69
+ maskClosable: {
70
+ type: Boolean,
71
+ default () {
72
+ return false
73
+ }
74
+ },
75
+ size: {
76
+ type: String,
77
+ default () {
78
+ return 'big'
79
+ }
80
+ },
81
+ value: {
82
+ type: Boolean,
83
+ default () {
84
+ return false
85
+ }
86
+ },
87
+ cropperConfig: {
88
+ type: Object,
89
+ default: () => {
90
+ return {
91
+ aspectRatio: 16 / 9
92
+ }
93
+ }
94
+ }
95
+ },
96
+ data () {
97
+ return {
98
+ haveImg: false,
99
+ imgtips: null,
100
+ isFail: false,
101
+ cancelText: '取消',
102
+ fileName: null,
103
+ fileId: null,
104
+ previewBase: null,
105
+ cropper: null
106
+ }
107
+ },
108
+ computed: {
109
+ leftImage () {
110
+ return uuidv4()
111
+ },
112
+ imageUrl () {
113
+ return `api-file/workbench/file/stream/${this.fileId}?origin=true`
114
+ },
115
+ getEleModal () {
116
+ return uuidv4()
117
+ }
118
+ },
119
+ watch: {
120
+ value: {
121
+ handler (value) {
122
+ this.fileId = this.imageId
123
+ if (value && this.fileId) {
124
+ setTimeout(() => {
125
+ this.initCropper()
126
+ })
127
+ }
128
+ },
129
+ immediate: true
130
+ }
131
+ },
132
+ methods: {
133
+ handleClickDeleteFile () {
134
+ this.fileId = null
135
+ this.fileName = null
136
+ },
137
+ handleOk () {
138
+ this.cropper.getCroppedCanvas().toBlob(async (blob) => {
139
+ await this.uploadFile(blob)
140
+ this.$emit('input', false)
141
+ this.$emit('change', this.fileId)
142
+ })
143
+ },
144
+ async uploadFile (file) {
145
+ const formData = new FormData()
146
+ formData.append('serviceCode', 'cover-image')
147
+ formData.append('_t', Math.random())
148
+ formData.append('file', file)
149
+ await net.post(
150
+ 'zuul/api-file/workbench/file' + '?_csrf=' + localStorage.getItem('token'),
151
+ formData
152
+ ).then(() => {})
153
+ },
154
+ initCropper () {
155
+ let previewReady = false
156
+ console.log('this.$refs[this.leftImage', this.$refs[this.leftImage])
157
+ this.cropper = new Cropper(this.$refs[this.leftImage], {
158
+ aspectRatio: this.cropperConfig.aspectRatio,
159
+ ready: () => {
160
+ previewReady = true
161
+ },
162
+ crop: util.debounce(() => {
163
+ if (!previewReady) {
164
+ return
165
+ }
166
+ this.previewBase = this.cropper.getCroppedCanvas().toDataURL()
167
+ }, 200)
168
+ })
169
+ },
170
+ onUploadFileSuccess (props) {
171
+ const { response: { data: { fileID } }, name } = props
172
+ this.fileId = fileID
173
+ this.fileName = name
174
+ this.$nextTick(() => {
175
+ this.initCropper()
176
+ })
177
+ }
178
+ }
179
+ }
180
+ </script>
181
+
182
+ <style lang="scss" scoped>
183
+ ::v-deep .ant-modal-body {
184
+ padding: 16px;
185
+ }
186
+ ::v-deep .ant-modal-header {
187
+ padding: 16px;
188
+ }
189
+ .ele-imgCrop__wrapper {
190
+ display: flex;
191
+ gap: 16px;
192
+ justify-content: center;
193
+ margin-bottom: 30px;
194
+ .ele-imgCrop__left {
195
+ .ele-imgCrop__noImg {
196
+ display: flex;
197
+ flex-direction: column;
198
+ justify-content: center;
199
+ align-items: center;
200
+ width: 100%;
201
+ height: 100%;
202
+ position: relative;
203
+ .img-crop-left__image {
204
+ width: 100%;
205
+ height: 100%;
206
+ }
207
+ .ele-img-crop__upload {
208
+ width: 100%;
209
+ height: 100%;
210
+ ::v-deep .ele-upload__inner {
211
+ height: 100%;
212
+ border: unset;
213
+ background: transparent !important;
214
+ .ele-upload__area {
215
+ display: flex;
216
+ flex-direction: column;
217
+ height: 100%;
218
+ align-items: center;
219
+ justify-content: center;
220
+ .ele-upload__area--text {
221
+ margin-top: 16px;
222
+ display: flex;
223
+ flex-direction: column;
224
+ align-items: center;
225
+ }
226
+ }
227
+ }
228
+ }
229
+ .ele-imgCrop__font1 {
230
+ color: var(--idoole-black-088);
231
+ font-size: 16px;
232
+ line-height: 24px !important;
233
+ }
234
+ .ele-imgCrop__font2 {
235
+ color: var(--idoole-black-06);
236
+ font-size: 14px;
237
+ line-height: 22px;
238
+ }
239
+ }
240
+ .ele-imgCrop__update {
241
+ position: absolute;
242
+ top: 0;
243
+ left: 0;
244
+ width: 100%;
245
+ height: 100%;
246
+ opacity: 0;
247
+ cursor: pointer;
248
+ }
249
+ }
250
+ .ele-imgCrop__right {
251
+ position: relative;
252
+ span {
253
+ position: absolute;
254
+ top: 50%;
255
+ left: 50%;
256
+ transform: translate(-50%, -50%);
257
+ }
258
+ .img-crop-right__image {
259
+ width: 100%;
260
+ height: 100%;
261
+ }
262
+ }
263
+ .ele-imgCrop__item {
264
+ width: 480px;
265
+ height: 300px;
266
+ border-radius: 2px;
267
+ border: 1px dashed var(--idooel-form-title-border-color);
268
+ background: var(--idooel-form-upload-bg-color);
269
+ }
270
+ }
271
+ .ele-imgCrop__tips {
272
+ float: left;
273
+ width: 80%;
274
+ }
275
+ .ele-imgCrop__error {
276
+ color: var(--idooel-form-border-err-color) !important;
277
+ }
278
+ .ele-imgCrop__error2 {
279
+ color: var(--idooel-img-crop-err-color) !important;
280
+ }
281
+ .ele-imgCrop__icon {
282
+ font-size: 48px;
283
+ color: var(--idooel-link-06);
284
+ }
291
285
  </style>
@@ -1,5 +1,5 @@
1
- import EleModalTree from './src/index.vue'
2
-
3
- EleModalTree.install = Vue => Vue.component(EleModalTree.name, EleModalTree)
4
-
1
+ import EleModalTree from './src/index.vue'
2
+
3
+ EleModalTree.install = Vue => Vue.component(EleModalTree.name, EleModalTree)
4
+
5
5
  export default EleModalTree