@idooel/components 0.0.1-beta.2 → 0.0.1-beta.20

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 (72) hide show
  1. package/dist/@idooel/components.esm.css +123 -0
  2. package/dist/@idooel/components.esm.js +1986 -715
  3. package/dist/@idooel/components.umd.css +117 -0
  4. package/dist/@idooel/components.umd.js +1992 -721
  5. package/package.json +46 -45
  6. package/packages/alert/index.js +5 -0
  7. package/packages/alert/src/index.vue +46 -0
  8. package/packages/batch-export/index.js +4 -4
  9. package/packages/batch-export/src/index.vue +106 -14
  10. package/packages/button/index.js +4 -4
  11. package/packages/button/src/index.vue +54 -54
  12. package/packages/checkbox/index.js +4 -4
  13. package/packages/checkbox/src/index.vue +43 -43
  14. package/packages/{attachment → composite-components/attachment}/src/index.vue +14 -14
  15. package/packages/composite-components/button-group/index.js +4 -4
  16. package/packages/composite-components/button-group/src/index.vue +45 -45
  17. package/packages/composite-components/modal-import/index.js +5 -0
  18. package/packages/composite-components/modal-import/src/index.vue +28 -0
  19. package/packages/composite-components/search-area/index.js +4 -4
  20. package/packages/composite-components/search-area/src/index.vue +225 -206
  21. package/packages/composite-components/search-area/src/label.vue +35 -35
  22. package/packages/date/index.js +4 -4
  23. package/packages/date/src/index.vue +39 -39
  24. package/packages/date-range/index.js +5 -0
  25. package/packages/date-range/src/index.vue +42 -0
  26. package/packages/form/index.js +4 -4
  27. package/packages/form/src/index.vue +210 -118
  28. package/packages/form-group-model/index.js +5 -0
  29. package/packages/form-group-model/src/index.vue +258 -0
  30. package/packages/form-model/index.js +4 -4
  31. package/packages/form-model/src/index.vue +163 -138
  32. package/packages/icon/index.js +4 -4
  33. package/packages/icon/src/index.vue +31 -31
  34. package/packages/index.js +81 -73
  35. package/packages/input/index.js +4 -4
  36. package/packages/input/src/index.vue +35 -27
  37. package/packages/input-number/index.js +4 -4
  38. package/packages/input-number/src/index.vue +23 -23
  39. package/packages/modal/index.js +4 -4
  40. package/packages/modal/src/index.vue +141 -128
  41. package/packages/radio/index.js +4 -4
  42. package/packages/radio/src/index.vue +51 -47
  43. package/packages/select/index.js +4 -4
  44. package/packages/select/src/index.vue +77 -34
  45. package/packages/select-entity/index.js +4 -4
  46. package/packages/select-entity/src/index.vue +113 -113
  47. package/packages/step-model/index.js +5 -0
  48. package/packages/step-model/src/index.vue +173 -0
  49. package/packages/table/index.js +4 -4
  50. package/packages/table/src/action.vue +131 -131
  51. package/packages/table/src/index.vue +157 -157
  52. package/packages/textarea/index.js +4 -4
  53. package/packages/textarea/src/index.vue +57 -48
  54. package/packages/theme/form.scss +21 -23
  55. package/packages/theme/index.scss +27 -23
  56. package/packages/theme/variables.scss +55 -55
  57. package/packages/tpl/index.js +4 -4
  58. package/packages/tpl/src/index.vue +55 -49
  59. package/packages/tree/index.js +4 -4
  60. package/packages/tree/src/TreeNode.vue +29 -29
  61. package/packages/tree/src/index.vue +101 -101
  62. package/packages/tree-table-model/index.js +4 -4
  63. package/packages/tree-table-model/src/index.vue +314 -314
  64. package/packages/upload/index.js +4 -4
  65. package/packages/upload/src/index.vue +348 -350
  66. package/packages/utils/index.js +22 -3
  67. package/scripts/rollup.config.js +35 -35
  68. package/scripts/rollup.esm.config.js +11 -11
  69. package/scripts/rollup.umd.config.js +14 -14
  70. package/packages/text/index.js +0 -5
  71. package/packages/text/src/index.vue +0 -15
  72. /package/packages/{attachment → composite-components/attachment}/index.js +0 -0
@@ -1,5 +1,5 @@
1
- import EleSearchArea from './src/index.vue'
2
-
3
- EleSearchArea.install = Vue => Vue.component(EleSearchArea.name, EleSearchArea)
4
-
1
+ import EleSearchArea from './src/index.vue'
2
+
3
+ EleSearchArea.install = Vue => Vue.component(EleSearchArea.name, EleSearchArea)
4
+
5
5
  export default EleSearchArea
@@ -1,207 +1,226 @@
1
- <template>
2
- <div class="search-area__wrapper">
3
- <a-row :gutter="gutter">
4
- <template v-for="(item, idx) in innerDataSource">
5
- <a-col v-if="item._show" :span="item.span || span" :key="idx">
6
- <div v-if="item.type == '_action'" class="search-area__item search-area--action">
7
- <ele-button icon="search" type="primary" @click="handleClickSearch">查询</ele-button>
8
- <ele-button style="margin-left:8px;" icon="reload" @click="handleClickReset">重置</ele-button>
9
- <div class="expand-collapse" @click="handleClickExpandCollapse">
10
- <span class="expand-collapse__text">{{ isExpand ? '收起' : '展开' }}</span>
11
- <span class="expand-collapse__icon">
12
- <a-icon v-if="isExpand" type="up" />
13
- <a-icon v-else type="down" />
14
- </span>
15
- </div>
16
- </div>
17
- <div v-else class="search-area__item">
18
- <template v-if="item.type == 'Input'">
19
- <Label :label="item.label"></Label>
20
- <ele-input v-model="item._value"></ele-input>
21
- </template>
22
- <template v-else-if="item.type == 'Select'">
23
- <Label :label="item.label"></Label>
24
- <ele-select v-model="item._value" :data-source="item.optionList"></ele-select>
25
- </template>
26
- <template v-else-if="item.type == 'DatePicker'">
27
- <Label :label="item.label"></Label>
28
- <ele-date v-model="item._value" :format="item.format"></ele-date>
29
- </template>
30
- </div>
31
- </a-col>
32
- </template>
33
- </a-row>
34
- </div>
35
- </template>
36
-
37
- <script>
38
- import EleInput from '../../../input/src/index.vue'
39
- import EleSelect from '../../../select/src/index.vue'
40
- import ELeButton from '../../../button/src/index.vue'
41
- import EleDate from '../../../date/src/index.vue'
42
- import Label from './label.vue'
43
- import moment from 'moment'
44
- import { parse } from '@idooel/expression'
45
- export default {
46
- name: 'ele-search-area',
47
- components: {
48
- EleInput,
49
- EleSelect,
50
- ELeButton,
51
- Label,
52
- EleDate
53
- },
54
- props: {
55
- gutter: {
56
- type: [Number, Array, Object],
57
- default: () => ([
58
- 16, 8
59
- ])
60
- },
61
- span: {
62
- type: Number,
63
- default: 8
64
- },
65
- dataSource: {
66
- type: Array,
67
- required: true
68
- }
69
- },
70
- data() {
71
- return {
72
- isExpand: false
73
- }
74
- },
75
- computed: {
76
- cuttingFormula () {
77
- return (24 / this.span - 1)
78
- },
79
- buildDataSource () {
80
- return this.controlDisplayByFormula(this.mapDefaultValueToValue())
81
- },
82
- innerDataSource () {
83
- return [ ...this.buildDataSource, { type: '_action', _show: true }]
84
- }
85
- },
86
- created() {},
87
- methods: {
88
- controlDisplayByFormula (dataSource = []) {
89
- if (this.isExpand) {
90
- dataSource.forEach(item => {
91
- this.$set(item, '_show', true)
92
- })
93
- } else {
94
- dataSource.forEach((item, idx) => {
95
- if (idx < this.cuttingFormula) {
96
- this.$set(item, '_show', true)
97
- } else {
98
- this.$set(item, '_show', false)
99
- }
100
- })
101
- }
102
- return dataSource
103
- },
104
- buildDefaultValue (arg) {
105
- if (!arg || arg.charAt(0) !== '_') return arg
106
- return parse(arg, {
107
- _route: this.$route.query
108
- })
109
- },
110
- mapDefaultValueToValue () {
111
- this.dataSource.forEach(props => {
112
- this.$set(props, '_show', this.isExpand)
113
- if (props.defaultValue) {
114
- this.$set(props, '_value', this.buildDefaultValue(props.defaultValue))
115
- }
116
- })
117
- return this.dataSource
118
- },
119
- handleClickExpandCollapse () {
120
- this.isExpand = !this.isExpand
121
- },
122
- handleClickSearch () {
123
- const querys = this.extractValues()
124
- this.$emit('search', querys)
125
- },
126
- extractValues () {
127
- let ret = {}
128
- this.innerDataSource.filter(item => item.type !== '_action').forEach(item => {
129
- switch (item.type) {
130
- case 'DatePicker':
131
- ret[item.name] = typeof item._value == 'undefined' ? undefined : moment(item._value).format(item.format)
132
- break
133
- default:
134
- ret[item.name] = item._value
135
- break
136
- }
137
- })
138
- return ret
139
- },
140
- handleClickReset () {
141
- this.innerDataSource.filter(item => item.type !== '_action').forEach(item => {
142
- const { defaultValue } = item
143
- switch (item.type) {
144
- case 'Select':
145
- defaultValue && this.$set(item, '_value', this.buildDefaultValue(defaultValue))
146
- !defaultValue && this.$set(item, '_value', null)
147
- break
148
- case 'DatePicker':
149
- defaultValue && this.$set(item, '_value', this.buildDefaultValue(defaultValue))
150
- !defaultValue && this.$set(item, '_value', undefined)
151
- break
152
- default:
153
- defaultValue && this.$set(item, '_value', this.buildDefaultValue(defaultValue))
154
- !defaultValue && this.$set(item, '_value', null)
155
- break
156
- }
157
- })
158
- //TODO defaultValue
159
- const querys = this.extractValues()
160
- this.$emit('search', querys)
161
- },
162
- onChangeSelect (value, props) {
163
- this.$set(props, '_value', value)
164
- }
165
- }
166
- }
167
- </script>
168
-
169
- <style lang="scss" scoped>
170
- .search-area__wrapper {
171
- padding-top: 16px;
172
- padding-left: 16px;
173
- padding-right: 16px;
174
- ::v-deep .ant-col {
175
- &:last-child {
176
- float: right;
177
- }
178
- }
179
- .search-area__item {
180
- height: 32px;
181
- display: flex;
182
- flex-direction: row;
183
- align-items: center;
184
- &.search-area--action {
185
- justify-content: end;
186
- }
187
- .expand-collapse {
188
- margin-left: 8px;
189
- height: 32px;
190
- padding: 4px 16px;
191
- color: var(--idooel-primary-color);
192
- display: flex;
193
- flex-direction: row;
194
- align-items: center;
195
- justify-content: center;
196
- cursor: pointer;
197
- .expand-collapse__text {
198
- font-size: 14px;
199
- }
200
- .expand-collapse__icon {
201
- font-size: 16px;
202
- margin-left: 8px;
203
- }
204
- }
205
- }
206
- }
1
+ <template>
2
+ <div class="search-area__wrapper">
3
+ <a-row :gutter="gutter">
4
+ <template v-for="(item, idx) in innerDataSource">
5
+ <a-col v-if="item._show" :span="item.span || span" :key="idx">
6
+ <div v-if="item.type == '_action'" class="search-area__item search-area--action">
7
+ <ele-button icon="search" type="primary" @click="handleClickSearch">查询</ele-button>
8
+ <ele-button style="margin-left:8px;" icon="reload" @click="handleClickReset">重置</ele-button>
9
+ <div class="expand-collapse" @click="handleClickExpandCollapse">
10
+ <span class="expand-collapse__text">{{ isExpand ? '收起' : '展开' }}</span>
11
+ <span class="expand-collapse__icon">
12
+ <a-icon v-if="isExpand" type="up" />
13
+ <a-icon v-else type="down" />
14
+ </span>
15
+ </div>
16
+ </div>
17
+ <div v-else class="search-area__item">
18
+ <template v-if="item.type == 'Input'">
19
+ <Label :label="item.label"></Label>
20
+ <ele-input v-model="item._value"></ele-input>
21
+ </template>
22
+ <template v-else-if="item.type == 'Select'">
23
+ <Label :label="item.label"></Label>
24
+ <ele-select v-model="item._value" :data-source="item.optionList"></ele-select>
25
+ </template>
26
+ <template v-else-if="item.type == 'DatePicker'">
27
+ <Label :label="item.label"></Label>
28
+ <ele-date v-model="item._value" :format="item.format"></ele-date>
29
+ </template>
30
+ <template v-else-if="item.type == 'ele-date-range'">
31
+ <Label :label="item.label"></Label>
32
+ <ele-date-range v-model="item._value" :format="item.format" :show-time="item.showTime"></ele-date-range>
33
+ </template>
34
+ </div>
35
+ </a-col>
36
+ </template>
37
+ </a-row>
38
+ </div>
39
+ </template>
40
+
41
+ <script>
42
+ import EleInput from '../../../input/src/index.vue'
43
+ import EleSelect from '../../../select/src/index.vue'
44
+ import ELeButton from '../../../button/src/index.vue'
45
+ import EleDate from '../../../date/src/index.vue'
46
+ import Label from './label.vue'
47
+ import moment from 'moment'
48
+ import { parse } from '@idooel/expression'
49
+ export default {
50
+ name: 'ele-search-area',
51
+ components: {
52
+ EleInput,
53
+ EleSelect,
54
+ ELeButton,
55
+ Label,
56
+ EleDate
57
+ },
58
+ props: {
59
+ gutter: {
60
+ type: [Number, Array, Object],
61
+ default: () => ([
62
+ 16, 8
63
+ ])
64
+ },
65
+ span: {
66
+ type: Number,
67
+ default: 8
68
+ },
69
+ dataSource: {
70
+ type: Array,
71
+ required: true
72
+ }
73
+ },
74
+ data() {
75
+ return {
76
+ isExpand: false
77
+ }
78
+ },
79
+ computed: {
80
+ cuttingFormula () {
81
+ return (24 / this.span - 1)
82
+ },
83
+ buildDataSource () {
84
+ return this.controlDisplayByFormula(this.mapDefaultValueToValue())
85
+ },
86
+ innerDataSource () {
87
+ return [ ...this.buildDataSource, { type: '_action', _show: true }]
88
+ }
89
+ },
90
+ created() {},
91
+ methods: {
92
+ controlDisplayByFormula (dataSource = []) {
93
+ if (this.isExpand) {
94
+ dataSource.forEach(item => {
95
+ this.$set(item, '_show', true)
96
+ })
97
+ } else {
98
+ dataSource.forEach((item, idx) => {
99
+ if (idx < this.cuttingFormula) {
100
+ this.$set(item, '_show', true)
101
+ } else {
102
+ this.$set(item, '_show', false)
103
+ }
104
+ })
105
+ }
106
+ return dataSource
107
+ },
108
+ buildDefaultValue (arg) {
109
+ if (!arg || arg.charAt(0) !== '_') return arg
110
+ return parse(arg, {
111
+ _route: this.$route.query
112
+ })
113
+ },
114
+ mapDefaultValueToValue () {
115
+ this.dataSource.forEach(props => {
116
+ this.$set(props, '_show', this.isExpand)
117
+ if (props.defaultValue) {
118
+ this.$set(props, '_value', this.buildDefaultValue(props.defaultValue))
119
+ }
120
+ })
121
+ return this.dataSource
122
+ },
123
+ handleClickExpandCollapse () {
124
+ this.isExpand = !this.isExpand
125
+ },
126
+ handleClickSearch () {
127
+ const querys = this.extractValues()
128
+ this.$emit('search', querys)
129
+ },
130
+ buildMapto (mapTo = [], dataSource) {
131
+ const [ startField, endField ] = mapTo
132
+ const [ startValue, endValue ] = dataSource || [null, null]
133
+ return {
134
+ [startField]: startValue,
135
+ [endField]: endValue
136
+ }
137
+ },
138
+ extractValues () {
139
+ let ret = {}
140
+ this.innerDataSource.filter(item => item.type !== '_action').forEach(item => {
141
+ switch (item.type) {
142
+ case 'DatePicker':
143
+ ret[item.name] = typeof item._value == 'undefined' ? undefined : moment(item._value).format(item.format)
144
+ break
145
+ case 'ele-date-range':
146
+ Object.assign(ret, this.buildMapto(item.mapTo, item._value))
147
+ break
148
+ default:
149
+ ret[item.name] = item._value
150
+ break
151
+ }
152
+ })
153
+ return ret
154
+ },
155
+ handleClickReset () {
156
+ this.innerDataSource.filter(item => item.type !== '_action').forEach(item => {
157
+ const { defaultValue } = item
158
+ switch (item.type) {
159
+ case 'Select':
160
+ defaultValue && this.$set(item, '_value', this.buildDefaultValue(defaultValue))
161
+ !defaultValue && this.$set(item, '_value', null)
162
+ break
163
+ case 'DatePicker':
164
+ defaultValue && this.$set(item, '_value', this.buildDefaultValue(defaultValue))
165
+ !defaultValue && this.$set(item, '_value', undefined)
166
+ break
167
+ case 'ele-date-picker':
168
+ defaultValue && this.$set(item, '_value', this.buildDefaultValue(defaultValue))
169
+ !defaultValue && this.$set(item, '_value', [])
170
+ break
171
+ default:
172
+ defaultValue && this.$set(item, '_value', this.buildDefaultValue(defaultValue))
173
+ !defaultValue && this.$set(item, '_value', null)
174
+ break
175
+ }
176
+ })
177
+ //TODO defaultValue
178
+ const querys = this.extractValues()
179
+ this.$emit('search', querys)
180
+ },
181
+ onChangeSelect (value, props) {
182
+ this.$set(props, '_value', value)
183
+ }
184
+ }
185
+ }
186
+ </script>
187
+
188
+ <style lang="scss" scoped>
189
+ .search-area__wrapper {
190
+ padding-top: 16px;
191
+ padding-left: 16px;
192
+ padding-right: 16px;
193
+ ::v-deep .ant-col {
194
+ &:last-child {
195
+ float: right;
196
+ }
197
+ }
198
+ .search-area__item {
199
+ height: 32px;
200
+ display: flex;
201
+ flex-direction: row;
202
+ align-items: center;
203
+ &.search-area--action {
204
+ justify-content: end;
205
+ }
206
+ .expand-collapse {
207
+ margin-left: 8px;
208
+ height: 32px;
209
+ padding: 4px 16px;
210
+ color: var(--idooel-primary-color);
211
+ display: flex;
212
+ flex-direction: row;
213
+ align-items: center;
214
+ justify-content: center;
215
+ cursor: pointer;
216
+ .expand-collapse__text {
217
+ font-size: 14px;
218
+ }
219
+ .expand-collapse__icon {
220
+ font-size: 16px;
221
+ margin-left: 8px;
222
+ }
223
+ }
224
+ }
225
+ }
207
226
  </style>
@@ -1,36 +1,36 @@
1
- <template>
2
- <div class="g-search__label">
3
- <span class="label__title">{{ label }}</span>
4
- <span class="label__suffix">:</span>
5
- </div>
6
- </template>
7
-
8
- <script>
9
- export default {
10
- props: {
11
- label: {
12
- type: String
13
- }
14
- }
15
- }
16
- </script>
17
-
18
- <style lang="scss" scoped>
19
- .g-search__label {
20
- /* width: 69px; */
21
- flex-basis: 69px;
22
- height: 32px;
23
- display: flex;
24
- flex-direction: row;
25
- align-items: center;
26
- justify-content: space-between;
27
- .label__title, .label__suffix {
28
- font-size: 14px;
29
- color: rgba(0, 0, 0, 0.88);
30
- white-space: nowrap;
31
- }
32
- .label__suffix {
33
- margin-left: 4px;
34
- }
35
- }
1
+ <template>
2
+ <div class="g-search__label">
3
+ <span class="label__title">{{ label }}</span>
4
+ <span class="label__suffix">:</span>
5
+ </div>
6
+ </template>
7
+
8
+ <script>
9
+ export default {
10
+ props: {
11
+ label: {
12
+ type: String
13
+ }
14
+ }
15
+ }
16
+ </script>
17
+
18
+ <style lang="scss" scoped>
19
+ .g-search__label {
20
+ /* width: 69px; */
21
+ flex-basis: 69px;
22
+ height: 32px;
23
+ display: flex;
24
+ flex-direction: row;
25
+ align-items: center;
26
+ justify-content: space-between;
27
+ .label__title, .label__suffix {
28
+ font-size: 14px;
29
+ color: rgba(0, 0, 0, 0.88);
30
+ white-space: nowrap;
31
+ }
32
+ .label__suffix {
33
+ margin-left: 4px;
34
+ }
35
+ }
36
36
  </style>
@@ -1,5 +1,5 @@
1
- import EleDate from './src/index.vue'
2
-
3
- EleDate.install = Vue => Vue.component(EleDate.name, EleDate)
4
-
1
+ import EleDate from './src/index.vue'
2
+
3
+ EleDate.install = Vue => Vue.component(EleDate.name, EleDate)
4
+
5
5
  export default EleDate
@@ -1,40 +1,40 @@
1
- <template>
2
- <a-date-picker
3
- style="width: 100%;"
4
- mode="year"
5
- :open="open"
6
- :value="value"
7
- @focus="onFocus"
8
- @panelChange="onPanelChange"
9
- :format="format">
10
- </a-date-picker>
11
- </template>
12
-
13
- <script>
14
- export default {
15
- name: 'ele-date',
16
- props: {
17
- value: {
18
- type: Object
19
- },
20
- format: {
21
- type: String,
22
- default: 'YYYY/MM/DD'
23
- }
24
- },
25
- data () {
26
- return {
27
- open: false
28
- }
29
- },
30
- methods: {
31
- onFocus () {
32
- this.open = true
33
- },
34
- onPanelChange (value, mode) {
35
- this.$emit('input', value)
36
- this.open = false
37
- }
38
- }
39
- }
1
+ <template>
2
+ <a-date-picker
3
+ style="width: 100%;"
4
+ mode="year"
5
+ :open="open"
6
+ :value="value"
7
+ @focus="onFocus"
8
+ @panelChange="onPanelChange"
9
+ :format="format">
10
+ </a-date-picker>
11
+ </template>
12
+
13
+ <script>
14
+ export default {
15
+ name: 'ele-date',
16
+ props: {
17
+ value: {
18
+ type: Object
19
+ },
20
+ format: {
21
+ type: String,
22
+ default: 'YYYY/MM/DD'
23
+ }
24
+ },
25
+ data () {
26
+ return {
27
+ open: false
28
+ }
29
+ },
30
+ methods: {
31
+ onFocus () {
32
+ this.open = true
33
+ },
34
+ onPanelChange (value, mode) {
35
+ this.$emit('input', value)
36
+ this.open = false
37
+ }
38
+ }
39
+ }
40
40
  </script>
@@ -0,0 +1,5 @@
1
+ import EleDateRange from './src/index.vue'
2
+
3
+ EleDateRange.install = Vue => Vue.component(EleDateRange.name, EleDateRange)
4
+
5
+ export default EleDateRange
@@ -0,0 +1,42 @@
1
+ <template>
2
+ <a-range-picker
3
+ style="width: 100%;"
4
+ :show-time="showTime"
5
+ :value="value"
6
+ :format="format"
7
+ @change="onChange">
8
+ </a-range-picker>
9
+ </template>
10
+
11
+ <script>
12
+ export default {
13
+ name: 'ele-date-range',
14
+ model: {
15
+ prop: 'value',
16
+ event: 'change'
17
+ },
18
+ props: {
19
+ showTime: {
20
+ type: Object
21
+ },
22
+ format: {
23
+ type: Array,
24
+ default: () => ['YYYY-MM-DD', 'YYYY-MM-DD']
25
+ },
26
+ value: {
27
+ type: Array,
28
+ default: () => []
29
+ }
30
+ },
31
+ methods: {
32
+ onChange (date, dateString) {
33
+ this.$emit('change', dateString)
34
+ }
35
+ }
36
+ }
37
+ </script>
38
+
39
+ <style lang="scss" scoped>
40
+
41
+ </style>
42
+ import { models } from '../..';