@idooel/components 0.0.2-beta.3 → 0.0.2-beta.30

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 (113) hide show
  1. package/README.md +98 -98
  2. package/dist/@idooel/components.esm.js +3622 -1592
  3. package/dist/@idooel/components.umd.js +3676 -1647
  4. package/jsconfig.json +7 -7
  5. package/package.json +64 -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 +222 -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 +131 -131
  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 -230
  31. package/packages/composite-components/modal-img-crop/index.js +4 -4
  32. package/packages/composite-components/modal-img-crop/src/index.vue +298 -298
  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 +239 -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 -171
  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 +393 -319
  48. package/packages/icon/index.js +4 -4
  49. package/packages/icon/src/index.vue +31 -31
  50. package/packages/index.js +159 -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/meta/provider.js +4 -0
  58. package/packages/modal/index.js +4 -4
  59. package/packages/modal/src/index.vue +184 -184
  60. package/packages/models/form-group-model/index.js +4 -4
  61. package/packages/models/form-group-model/src/index.vue +271 -273
  62. package/packages/models/form-model/index.js +4 -4
  63. package/packages/models/form-model/src/index.vue +236 -232
  64. package/packages/models/step-model/index.js +4 -4
  65. package/packages/models/step-model/src/index.vue +224 -224
  66. package/packages/models/tree-table-model/README.md +0 -0
  67. package/packages/models/tree-table-model/index.js +4 -4
  68. package/packages/models/tree-table-model/src/index.vue +964 -689
  69. package/packages/pagination/index.js +5 -0
  70. package/packages/pagination/src/index.vue +372 -0
  71. package/packages/radio/index.js +4 -4
  72. package/packages/radio/src/index.vue +56 -56
  73. package/packages/select/index.js +4 -4
  74. package/packages/select/src/index.vue +113 -105
  75. package/packages/select-entity/index.js +4 -4
  76. package/packages/select-entity/src/index.vue +119 -119
  77. package/packages/table/index.js +4 -4
  78. package/packages/table/src/action.vue +176 -172
  79. package/packages/table/src/index.vue +605 -319
  80. package/packages/tabs/index.js +4 -4
  81. package/packages/tabs/src/index.vue +55 -55
  82. package/packages/text/index.js +4 -4
  83. package/packages/text/src/index.vue +47 -47
  84. package/packages/text-editor/index.js +4 -4
  85. package/packages/text-editor/src/index.vue +72 -72
  86. package/packages/textarea/index.js +4 -4
  87. package/packages/textarea/src/index.vue +57 -57
  88. package/packages/theme/form.scss +21 -21
  89. package/packages/theme/index.scss +43 -43
  90. package/packages/theme/overrid.scss +7 -7
  91. package/packages/theme/styleClass.scss +2 -2
  92. package/packages/theme/variables.scss +55 -55
  93. package/packages/timeline/index.js +4 -4
  94. package/packages/timeline/src/index.vue +257 -257
  95. package/packages/tpl/index.js +4 -4
  96. package/packages/tpl/src/index.vue +55 -55
  97. package/packages/tree/index.js +4 -4
  98. package/packages/tree/src/TreeNode.vue +29 -29
  99. package/packages/tree/src/index.vue +101 -101
  100. package/packages/tree-select/index.js +4 -4
  101. package/packages/tree-select/src/index.vue +142 -142
  102. package/packages/upload/index.js +4 -4
  103. package/packages/upload/src/index.vue +998 -494
  104. package/packages/utils/README.md +172 -0
  105. package/packages/utils/index.js +66 -62
  106. package/packages/utils/runtime-context/dataPoolAPI.js +501 -0
  107. package/packages/utils/runtime-context/globalDataPool.js +279 -0
  108. package/packages/utils/runtime-context/index.js +76 -0
  109. package/packages/utils/runtime-context/modelSchema.js +174 -0
  110. package/scripts/rollup.config.js +42 -42
  111. package/scripts/rollup.esm.config.js +11 -11
  112. package/scripts/rollup.umd.config.js +17 -14
  113. package/vitest.config.js +17 -0
@@ -1,233 +1,237 @@
1
- <template>
2
- <div class="form__model--wrapper">
3
- <div class="form-model__title" v-if="title">
4
- {{ title }}
5
- </div>
6
- <div class="form-model__content">
7
- <ele-alert style="margin-bottom: 16px;" v-if="alertMeta" v-bind="alertMeta"></ele-alert>
8
- <ele-form :ref="formRef" @change="onChangeFormStatus($event)" :elements="elements" :disabled="globalDisabled"></ele-form>
9
- </div>
10
- <div class="form-model__footer" v-if="footerMeta">
11
- <ele-button-group v-on="assignAttrForEvents" :data-source="footerElements"></ele-button-group>
12
- </div>
13
- </div>
14
- </template>
15
-
16
- <script>
17
- import { BUILT_IN_EVENT_NAMES, parseFieldMap, RESERVE_EVENT_NAMES, PAGE_STATUS, CONTEXT, BUILT_IN_METHODS_NAMES } from '../../../utils'
18
- import { v4 as uuidv4 } from 'uuid'
19
- import { net, type } from '@idooel/shared'
20
- import { parse } from '@idooel/expression'
21
- export default {
22
- name: 'ele-form-model',
23
- props: {
24
- disabled: {
25
- type: [Boolean, String],
26
- default: '_routeMeta.disabled'
27
- },
28
- title: {
29
- type: String
30
- },
31
- formMeta: {
32
- type: Object
33
- },
34
- footerMeta: {
35
- type: Object
36
- }
37
- },
38
- data() {
39
- return {}
40
- },
41
- provide () {
42
- return {
43
- [CONTEXT]: () => {
44
- return {
45
- exposed: this.exposed
46
- }
47
- }
48
- }
49
- },
50
- computed: {
51
- globalDisabled () {
52
- return this.executeExpression(this.disabled)
53
- },
54
- formRef () {
55
- return uuidv4()
56
- },
57
- exposed () {
58
- return {
59
- setFieldsValue: this.setFieldsValue,
60
- validateFields: this.validateFields,
61
- getFieldsValue: this.getFieldsValue,
62
- route: this.$route,
63
- [BUILT_IN_METHODS_NAMES.SUBMIT_FORM]: this.submitRequestTrigger
64
- }
65
- },
66
- assignAttrForEvents () {
67
- const events = this.footerElements.reduce((ret, ele) => {
68
- ret[ele.eventName] = (e) => {
69
- this.$emit(ele.eventName || 'click', { ...e, formModel: this.formModels(), exposed: this.exposed })
70
- }
71
- return ret
72
- }, {})
73
- return {
74
- ...this.$listeners,
75
- ...events,
76
- [BUILT_IN_EVENT_NAMES.SUBMIT]: this[BUILT_IN_EVENT_NAMES.SUBMIT],
77
- [BUILT_IN_EVENT_NAMES.CANCEL]: this[BUILT_IN_EVENT_NAMES.CANCEL]
78
- }
79
- },
80
- elements () {
81
- const { elements } = this.formMeta
82
- return elements
83
- },
84
- preRequest () {
85
- const { preRequest = {} } = this.formMeta
86
- return preRequest
87
- },
88
- infoRequest () {
89
- const { infoRequest = {} } = this.formMeta
90
- return infoRequest
91
- },
92
- alertMeta () {
93
- const { alert = {} } = this.formMeta
94
- return type.isEmpty(alert) ? null : alert
95
- },
96
- submitRequest () {
97
- const { submitRequest = {} } = this.formMeta
98
- return submitRequest
99
- },
100
- footerElements () {
101
- const { elements } = this.footerMeta
102
- return elements.call(this)
103
- },
104
- expressionData () {
105
- return {
106
- _route: this.$route.query,
107
- _routeMeta: this.$route.meta
108
- }
109
- },
110
- routeMetaMode () {
111
- return this.$route.meta.mode
112
- }
113
- },
114
- methods: {
115
- collectDefaultValues () {
116
- const ret = this.elements.reduce((ret, props) => {
117
- const { name, defaultValue } = props
118
- if (defaultValue) {
119
- ret[name] = defaultValue
120
- }
121
- return ret
122
- }, {})
123
- return ret
124
- },
125
- onChangeFormStatus (props) {
126
- this.$emit(RESERVE_EVENT_NAMES.WATCH_FORM_STATUS, { ...props })
127
- },
128
- formModels (fieldNames) {
129
- return this.$refs[this.formRef] ? this.$refs[this.formRef].getFieldsValue(fieldNames) : {}
130
- },
131
- executeExpression (expression, dataSource = {}) {
132
- if (type.isBool(expression)) return expression
133
- if (type.isEmpty(expression)) return false
134
- return parse(expression, { ...this.expressionData, ...this.formModels(), ...dataSource })
135
- },
136
- execFieldMap (fieldMap = {}, dataSource = {}) {
137
- const ret = parseFieldMap(fieldMap, { ...this.expressionData, ...dataSource})
138
- return ret
139
- },
140
- async submitRequestTrigger (props = {}) {
141
- const { url, requestType, headers = {}, params = {}, fieldMap = {} } = this.submitRequest
142
- const currentUrl = this.executeExpressionForUrl(url)
143
- if (!currentUrl) return
144
- const ret = await net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap, { ...this.formModels() }), ...this.formModels() }, { headers }).then(resp => {
145
- this.$emit(BUILT_IN_EVENT_NAMES.SUBMIT, { ...props, formModel: { ...this.formModels(), ...resp.data || {} } })
146
- return resp.data
147
- })
148
- return ret
149
- },
150
- async infoRequestTrigger () {
151
- if (PAGE_STATUS.CREATE == this.routeMetaMode) return
152
- const { url, requestType, params = {}, fieldMap = {}, headers = {} } = this.infoRequest
153
- const currentUrl = this.executeExpressionForUrl(url)
154
- if (!currentUrl) return
155
- net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap) }, { ...headers }).then(resp => {
156
- const { data = {} } = resp
157
- this.setFieldsValue(data)
158
- this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
159
- })
160
- },
161
- async preRequestTrigger () {
162
- const { url, requestType = 'GET', params = {}, fieldMap = {}, headers = {} } = this.preRequest
163
- const currentUrl = this.executeExpressionForUrl(url)
164
- if (!currentUrl) return
165
- const { data } = await net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap) }, { ...headers })
166
- this.setFieldsValue(data)
167
- this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
168
- },
169
- executeExpressionForUrl (url) {
170
- return type.isApi(url) ? url : this.executeExpression(url)
171
- },
172
- setFieldsValue (props) {
173
- this.$refs[this.formRef].setFieldsValue(props)
174
- },
175
- getFieldsValue (fieldNames) {
176
- return this.$refs[this.formRef].getFieldsValue(fieldNames)
177
- },
178
- validateFields () {
179
- return this.$refs[this.formRef].validateFields()
180
- },
181
- [BUILT_IN_EVENT_NAMES.SUBMIT] (props = {}) {
182
- if (this.globalDisabled) return
183
- const status = this.$refs[this.formRef].validateFields()
184
- if (status) {
185
- //TODO fieldMap
186
- return this.submitRequestTrigger(props)
187
- } else {
188
- return false
189
- }
190
- },
191
- [BUILT_IN_EVENT_NAMES.CANCEL] (props = {}) {
192
- this.$emit(BUILT_IN_EVENT_NAMES.CANCEL, { ...props })
193
- }
194
- },
195
- async mounted() {
196
- this.setFieldsValue(this.collectDefaultValues())
197
- await this.preRequestTrigger()
198
- await this.infoRequestTrigger()
199
- this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { exposed: this.exposed })
200
- }
201
- }
202
- </script>
203
-
204
- <style lang="scss" scoped>
205
- .form__model--wrapper {
206
- width: 100%;
207
- height: 100%;
208
- overflow: auto;
209
- background: #fff;
210
- .form-model__title {
211
- height: 56px;
212
- padding: 0 16px;
213
- display: flex;
214
- flex-direction: row;
215
- align-items: center;
216
- border-bottom: 1px solid var(--idooel-form-title-border-color);
217
- }
218
- .form-model__content {
219
- padding: 16px;
220
- }
221
- .form-model__footer {
222
- /* width: 100%; */
223
- height: 64px;
224
- position: fixed;
225
- bottom: 0;
226
- display: flex;
227
- float: right;
228
- flex-direction: row;
229
- align-items: center;
230
- justify-content: end;
231
- }
232
- }
1
+ <template>
2
+ <div class="form__model--wrapper">
3
+ <div class="form-model__title" v-if="title">
4
+ {{ title }}
5
+ </div>
6
+ <div class="form-model__content">
7
+ <ele-alert style="margin-bottom: 16px;" v-if="alertMeta" v-bind="alertMeta"></ele-alert>
8
+ <ele-form :ref="formRef" @change="onChangeFormStatus($event)" :elements="elements" :disabled="globalDisabled"></ele-form>
9
+ </div>
10
+ <div class="form-model__footer" v-if="footerMeta">
11
+ <ele-button-group v-on="assignAttrForEvents" :data-source="footerElements"></ele-button-group>
12
+ </div>
13
+ </div>
14
+ </template>
15
+
16
+ <script>
17
+ import { BUILT_IN_EVENT_NAMES, parseFieldMap, RESERVE_EVENT_NAMES, PAGE_STATUS, CONTEXT, BUILT_IN_METHODS_NAMES } from '../../../utils'
18
+ import { v4 as uuidv4 } from 'uuid'
19
+ import { net, type } from '@idooel/shared'
20
+ import { parse } from '@idooel/expression'
21
+ export default {
22
+ name: 'ele-form-model',
23
+ props: {
24
+ disabled: {
25
+ type: [Boolean, String],
26
+ default: '_routeMeta.disabled'
27
+ },
28
+ title: {
29
+ type: String
30
+ },
31
+ formMeta: {
32
+ type: Object
33
+ },
34
+ footerMeta: {
35
+ type: Object
36
+ }
37
+ },
38
+ data() {
39
+ return {}
40
+ },
41
+ provide () {
42
+ return {
43
+ [CONTEXT]: () => {
44
+ return {
45
+ exposed: this.exposed
46
+ }
47
+ }
48
+ }
49
+ },
50
+ computed: {
51
+ globalDisabled () {
52
+ return this.executeExpression(this.disabled)
53
+ },
54
+ formRef () {
55
+ return uuidv4()
56
+ },
57
+ exposed () {
58
+ return {
59
+ setFieldsValue: this.setFieldsValue,
60
+ validateFields: this.validateFields,
61
+ getFieldsValue: this.getFieldsValue,
62
+ executeExpressions: this.executeExpressions,
63
+ route: this.$route,
64
+ [BUILT_IN_METHODS_NAMES.SUBMIT_FORM]: this.submitRequestTrigger
65
+ }
66
+ },
67
+ assignAttrForEvents () {
68
+ const events = this.footerElements.reduce((ret, ele) => {
69
+ ret[ele.eventName] = (e) => {
70
+ this.$emit(ele.eventName || 'click', { ...e, formModel: this.formModels(), exposed: this.exposed })
71
+ }
72
+ return ret
73
+ }, {})
74
+ return {
75
+ ...this.$listeners,
76
+ ...events,
77
+ [BUILT_IN_EVENT_NAMES.SUBMIT]: this[BUILT_IN_EVENT_NAMES.SUBMIT],
78
+ [BUILT_IN_EVENT_NAMES.CANCEL]: this[BUILT_IN_EVENT_NAMES.CANCEL]
79
+ }
80
+ },
81
+ elements () {
82
+ const { elements } = this.formMeta
83
+ return elements
84
+ },
85
+ preRequest () {
86
+ const { preRequest = {} } = this.formMeta
87
+ return preRequest
88
+ },
89
+ infoRequest () {
90
+ const { infoRequest = {} } = this.formMeta
91
+ return infoRequest
92
+ },
93
+ alertMeta () {
94
+ const { alert = {} } = this.formMeta
95
+ return type.isEmpty(alert) ? null : alert
96
+ },
97
+ submitRequest () {
98
+ const { submitRequest = {} } = this.formMeta
99
+ return submitRequest
100
+ },
101
+ footerElements () {
102
+ const { elements } = this.footerMeta
103
+ return elements.call(this)
104
+ },
105
+ expressionData () {
106
+ return {
107
+ _route: this.$route.query,
108
+ _routeMeta: this.$route.meta
109
+ }
110
+ },
111
+ routeMetaMode () {
112
+ return this.$route.meta.mode
113
+ }
114
+ },
115
+ methods: {
116
+ collectDefaultValues () {
117
+ const ret = this.elements.reduce((ret, props) => {
118
+ const { name, defaultValue } = props
119
+ if (defaultValue) {
120
+ ret[name] = defaultValue
121
+ }
122
+ return ret
123
+ }, {})
124
+ return ret
125
+ },
126
+ onChangeFormStatus (props) {
127
+ this.$emit(RESERVE_EVENT_NAMES.WATCH_FORM_STATUS, { ...props })
128
+ },
129
+ formModels (fieldNames) {
130
+ return this.$refs[this.formRef] ? this.$refs[this.formRef].getFieldsValue(fieldNames) : {}
131
+ },
132
+ executeExpression (expression, dataSource = {}) {
133
+ if (type.isBool(expression)) return expression
134
+ if (type.isEmpty(expression)) return false
135
+ return parse(expression, { ...this.expressionData, ...this.formModels(), ...dataSource })
136
+ },
137
+ execFieldMap (fieldMap = {}, dataSource = {}) {
138
+ const ret = parseFieldMap(fieldMap, { ...this.expressionData, ...dataSource})
139
+ return ret
140
+ },
141
+ async submitRequestTrigger (props = {}) {
142
+ const { url, requestType, headers = {}, params = {}, fieldMap = {} } = this.submitRequest
143
+ const currentUrl = this.executeExpressionForUrl(url)
144
+ if (!currentUrl) return
145
+ const ret = await net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap, { ...this.formModels() }), ...this.formModels() }, { headers }).then(resp => {
146
+ this.$emit(BUILT_IN_EVENT_NAMES.SUBMIT, { ...props, response: resp, formModel: { ...this.formModels(), ...resp.data || {} } })
147
+ return resp.data
148
+ })
149
+ return ret
150
+ },
151
+ async infoRequestTrigger () {
152
+ if (PAGE_STATUS.CREATE == this.routeMetaMode) return
153
+ const { url, requestType, params = {}, fieldMap = {}, headers = {} } = this.infoRequest
154
+ const currentUrl = this.executeExpressionForUrl(url)
155
+ if (!currentUrl) return
156
+ net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap) }, { ...headers }).then(resp => {
157
+ const { data = {} } = resp
158
+ this.setFieldsValue(data)
159
+ this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
160
+ })
161
+ },
162
+ async preRequestTrigger () {
163
+ const { url, requestType = 'GET', params = {}, fieldMap = {}, headers = {} } = this.preRequest
164
+ const currentUrl = this.executeExpressionForUrl(url)
165
+ if (!currentUrl) return
166
+ const { data } = await net[requestType.toLowerCase()](currentUrl, { ...params, ...this.execFieldMap(fieldMap) }, { ...headers })
167
+ this.setFieldsValue(data)
168
+ this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { ...data })
169
+ },
170
+ executeExpressionForUrl (url) {
171
+ return type.isApi(url) ? url : this.executeExpression(url)
172
+ },
173
+ setFieldsValue (props) {
174
+ this.$refs[this.formRef].setFieldsValue(props)
175
+ },
176
+ getFieldsValue (fieldNames) {
177
+ return this.$refs[this.formRef].getFieldsValue(fieldNames)
178
+ },
179
+ executeExpressions () {
180
+ return this.$refs[this.formRef].evalShowExpression()
181
+ },
182
+ validateFields () {
183
+ return this.$refs[this.formRef].validateFields()
184
+ },
185
+ async [BUILT_IN_EVENT_NAMES.SUBMIT] (props = {}) {
186
+ if (this.globalDisabled) return
187
+ const status = await this.$refs[this.formRef].validateFields()
188
+ if (status) {
189
+ //TODO fieldMap
190
+ return this.submitRequestTrigger(props)
191
+ } else {
192
+ return false
193
+ }
194
+ },
195
+ [BUILT_IN_EVENT_NAMES.CANCEL] (props = {}) {
196
+ this.$emit(BUILT_IN_EVENT_NAMES.CANCEL, { ...props })
197
+ }
198
+ },
199
+ async mounted() {
200
+ this.setFieldsValue(this.collectDefaultValues())
201
+ await this.preRequestTrigger()
202
+ await this.infoRequestTrigger()
203
+ this.$emit(RESERVE_EVENT_NAMES.INIT_FORM, { exposed: this.exposed })
204
+ }
205
+ }
206
+ </script>
207
+
208
+ <style lang="scss" scoped>
209
+ .form__model--wrapper {
210
+ width: 100%;
211
+ height: 100%;
212
+ overflow: auto;
213
+ background: #fff;
214
+ .form-model__title {
215
+ height: 56px;
216
+ padding: 0 16px;
217
+ display: flex;
218
+ flex-direction: row;
219
+ align-items: center;
220
+ border-bottom: 1px solid var(--idooel-form-title-border-color);
221
+ }
222
+ .form-model__content {
223
+ padding: 16px;
224
+ }
225
+ .form-model__footer {
226
+ /* width: 100%; */
227
+ height: 64px;
228
+ position: fixed;
229
+ bottom: 0;
230
+ display: flex;
231
+ float: right;
232
+ flex-direction: row;
233
+ align-items: center;
234
+ justify-content: end;
235
+ }
236
+ }
233
237
  </style>
@@ -1,5 +1,5 @@
1
- import EleStepModel from './src/index.vue'
2
-
3
- EleStepModel.install = Vue => Vue.component(EleStepModel.name, EleStepModel)
4
-
1
+ import EleStepModel from './src/index.vue'
2
+
3
+ EleStepModel.install = Vue => Vue.component(EleStepModel.name, EleStepModel)
4
+
5
5
  export default EleStepModel