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