@idooel/components 0.0.1 → 0.0.2-beta.10

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 (96) hide show
  1. package/README.md +99 -0
  2. package/dist/@idooel/components.esm.js +13639 -1388
  3. package/dist/@idooel/components.umd.js +13682 -1397
  4. package/jsconfig.json +8 -0
  5. package/package.json +58 -44
  6. package/packages/alert/index.js +5 -0
  7. package/packages/alert/src/index.vue +46 -0
  8. package/packages/batch-export/index.js +5 -0
  9. package/packages/batch-export/src/index.vue +105 -0
  10. package/packages/business-components/modal-fsm/index.js +5 -0
  11. package/packages/business-components/modal-fsm/src/index.vue +164 -0
  12. package/packages/business-components/modal-import/index.js +5 -0
  13. package/packages/business-components/modal-import/src/index.vue +140 -0
  14. package/packages/business-components/modal-timeline/index.js +5 -0
  15. package/packages/business-components/modal-timeline/src/index.vue +78 -0
  16. package/packages/business-components/tabs-sub-center/index.js +5 -0
  17. package/packages/business-components/tabs-sub-center/src/index.vue +117 -0
  18. package/packages/button/src/index.vue +43 -2
  19. package/packages/checkbox/index.js +5 -0
  20. package/packages/checkbox/src/index.vue +53 -0
  21. package/packages/composite-components/button-group/src/index.vue +119 -14
  22. package/packages/composite-components/form-attachment/src/index.vue +15 -0
  23. package/packages/composite-components/form-img-crop/index.js +5 -0
  24. package/packages/composite-components/form-img-crop/src/index.vue +132 -0
  25. package/packages/composite-components/modal-confirm/index.js +5 -0
  26. package/packages/composite-components/modal-confirm/src/index.vue +104 -0
  27. package/packages/composite-components/modal-form/index.js +5 -0
  28. package/packages/composite-components/modal-form/src/index.vue +231 -0
  29. package/packages/composite-components/modal-img-crop/index.js +5 -0
  30. package/packages/composite-components/modal-img-crop/src/index.vue +299 -0
  31. package/packages/composite-components/modal-table/index.js +5 -0
  32. package/packages/composite-components/modal-table/src/index.vue +156 -0
  33. package/packages/composite-components/modal-table-transfer/index.js +0 -0
  34. package/packages/composite-components/modal-tree/index.js +5 -0
  35. package/packages/composite-components/modal-tree/src/index.vue +76 -0
  36. package/packages/composite-components/search-area/src/index.vue +145 -36
  37. package/packages/composite-components/select-entity-modal-table/index.js +5 -0
  38. package/packages/composite-components/select-entity-modal-table/src/index.vue +172 -0
  39. package/packages/composite-components/table-transfer/index.js +0 -0
  40. package/packages/date/src/index.vue +87 -14
  41. package/packages/date-range/index.js +5 -0
  42. package/packages/date-range/src/index.vue +47 -0
  43. package/packages/form/index.js +5 -0
  44. package/packages/form/src/index.vue +320 -0
  45. package/packages/icon/index.js +5 -0
  46. package/packages/icon/src/index.vue +32 -0
  47. package/packages/index.js +109 -6
  48. package/packages/input/src/index.vue +13 -1
  49. package/packages/input-number/index.js +5 -0
  50. package/packages/input-number/src/index.vue +24 -0
  51. package/packages/loading/index.js +5 -0
  52. package/packages/loading/src/index.vue +37 -0
  53. package/packages/modal/index.js +5 -0
  54. package/packages/modal/src/index.vue +185 -0
  55. package/packages/models/form-group-model/index.js +5 -0
  56. package/packages/models/form-group-model/src/index.vue +274 -0
  57. package/packages/models/form-model/index.js +5 -0
  58. package/packages/models/form-model/src/index.vue +237 -0
  59. package/packages/models/step-model/index.js +5 -0
  60. package/packages/models/step-model/src/index.vue +224 -0
  61. package/packages/models/tree-table-model/src/index.vue +689 -0
  62. package/packages/radio/index.js +5 -0
  63. package/packages/radio/src/index.vue +57 -0
  64. package/packages/select/src/index.vue +73 -2
  65. package/packages/select-entity/index.js +5 -0
  66. package/packages/select-entity/src/index.vue +120 -0
  67. package/packages/table/src/action.vue +81 -12
  68. package/packages/table/src/index.vue +244 -13
  69. package/packages/tabs/index.js +5 -0
  70. package/packages/tabs/src/index.vue +56 -0
  71. package/packages/text/index.js +5 -0
  72. package/packages/text/src/index.vue +48 -0
  73. package/packages/text-editor/index.js +5 -0
  74. package/packages/text-editor/src/index.vue +73 -0
  75. package/packages/textarea/index.js +5 -0
  76. package/packages/textarea/src/index.vue +58 -0
  77. package/packages/theme/form.scss +22 -0
  78. package/packages/theme/index.scss +44 -0
  79. package/packages/theme/overrid.scss +8 -0
  80. package/packages/theme/styleClass.scss +3 -0
  81. package/packages/theme/variables.scss +56 -0
  82. package/packages/timeline/index.js +5 -0
  83. package/packages/timeline/src/index.vue +258 -0
  84. package/packages/tpl/src/index.vue +12 -3
  85. package/packages/tree/src/index.vue +32 -27
  86. package/packages/tree-select/index.js +5 -0
  87. package/packages/tree-select/src/index.vue +143 -0
  88. package/packages/upload/index.js +5 -0
  89. package/packages/upload/src/index.vue +997 -0
  90. package/packages/utils/index.js +63 -0
  91. package/scripts/rollup.config.js +18 -11
  92. package/scripts/rollup.umd.config.js +3 -1
  93. package/vitest.config.js +17 -0
  94. package/packages/tree-table-model/src/index.vue +0 -290
  95. /package/packages/{tree-table-model/README.md → composite-components/form-attachment/index.js} +0 -0
  96. /package/packages/{tree-table-model → models/tree-table-model}/index.js +0 -0
@@ -0,0 +1,224 @@
1
+ <template>
2
+ <div class="ele-step-model__wrapper">
3
+ <div class="ele-step-model__step--wrapper">
4
+ <a-steps class="ele-steps" :current="current" size="small">
5
+ <a-step v-for="step in elements" :title="step.title" :key="step.key" />
6
+ </a-steps>
7
+ </div>
8
+ <div class="ele-step-model__content--wrapper">
9
+ <template v-for="name in scopedSlotsNames">
10
+ <div :key="name" v-if="currentSlotName == name" :class="['ele-step-model__slot', `ele-step-model__slot--${name}`]">
11
+ <slot :name="name"></slot>
12
+ </div>
13
+ </template>
14
+ </div>
15
+ <div class="ele-step-model__footer--wrapper">
16
+ <ele-button-group v-on="assignAttrForEvents" :data-source="footerElements"></ele-button-group>
17
+ </div>
18
+ </div>
19
+ </template>
20
+
21
+ <script>
22
+ import { BUILT_IN_EVENT_NAMES, CONTEXT } from '../../../utils'
23
+ import { parse } from '@idooel/expression'
24
+ import { type } from '@idooel/shared'
25
+ export default {
26
+ name: 'ele-step-model',
27
+ props: {
28
+ stepMeta: {
29
+ type: Object,
30
+ default: () => ({})
31
+ },
32
+ footerMeta: {
33
+ type: Object,
34
+ default: () => ({})
35
+ }
36
+ },
37
+ data() {
38
+ return {
39
+ current: 0,
40
+ currentSlotComponentRef: null,
41
+ innerFooterElements: []
42
+ }
43
+ },
44
+ provide() {
45
+ return {
46
+ [CONTEXT]: () => {
47
+ return {
48
+ ...this.expressionData
49
+ }
50
+ }
51
+ }
52
+ },
53
+ computed: {
54
+ routeMetaDisabled () {
55
+ return this.executeExpression(this.$route.meta.disabled)
56
+ },
57
+ expressionData () {
58
+ return {
59
+ current: this.current,
60
+ _route: this.$route.query,
61
+ _routeMeta: this.$route.meta
62
+ }
63
+ },
64
+ currentSlotName () {
65
+ return this.scopedSlotsNames[this.current]
66
+ },
67
+ footerElements () {
68
+ return this.innerFooterElements
69
+ },
70
+ assignAttrForEvents () {
71
+ const events = this.footerElements.reduce((ret, ele) => {
72
+ ret[ele.eventName] = (e) => {
73
+ this.evalShowExpressionForFooterElements()
74
+ this.$emit(ele.eventName || 'click', { ...e, exposed: this.exposedMethods })
75
+ }
76
+ return ret
77
+ }, {})
78
+ return {
79
+ ...this.$listeners,
80
+ ...events,
81
+ [BUILT_IN_EVENT_NAMES.NEXT]: this[BUILT_IN_EVENT_NAMES.NEXT],
82
+ [BUILT_IN_EVENT_NAMES.PREVIOUS]: this[BUILT_IN_EVENT_NAMES.PREVIOUS],
83
+ [BUILT_IN_EVENT_NAMES.SUBMIT]: this[BUILT_IN_EVENT_NAMES.SUBMIT]
84
+ }
85
+ },
86
+ activeIndex () {
87
+ const { activeIndex } = this.stepMeta
88
+ return activeIndex
89
+ },
90
+ elements () {
91
+ const { elements } = this.stepMeta
92
+ return elements
93
+ },
94
+ scopedSlotsNames () {
95
+ const slotNames = this.elements.map(item => item.key)
96
+ return slotNames
97
+ },
98
+ exposedMethods () {
99
+ return {
100
+ slotRef: this.currentSlotComponentRef,
101
+ setCurrentStep: this.setCurrentStep,
102
+ next: this.nextStep,
103
+ prev: this.prevStep,
104
+ current: this.current
105
+ }
106
+ }
107
+ },
108
+ watch: {
109
+ activeIndex: {
110
+ handler (idx) {
111
+ this.current = idx
112
+ },
113
+ immediate: true
114
+ },
115
+ current: {
116
+ handler () {
117
+ this.$nextTick(() => {
118
+ this.currentSlotComponentRef = this.getCurrentSlotComponentRef()
119
+ })
120
+ },
121
+ immediate: true
122
+ }
123
+ },
124
+ created () {
125
+ const { elements } = this.footerMeta
126
+ this.innerFooterElements = elements.call(this)
127
+ this.evalShowExpressionForFooterElements()
128
+ },
129
+ methods: {
130
+ executeExpression (expression) {
131
+ if (type.isBool(expression)) return expression
132
+ if (type.isEmpty(expression)) return false
133
+ return parse(expression, { ...this.expressionData })
134
+ },
135
+ evalShowExpressionForFooterElements () {
136
+ this.innerFooterElements = this.innerFooterElements.map(element => {
137
+ const { show = true, key, eventName } = element
138
+ if(key == BUILT_IN_EVENT_NAMES.SUBMIT || eventName == BUILT_IN_EVENT_NAMES.SUBMIT) {
139
+ // built in submit button should according to the route meta disabled
140
+ this.$set(element, '_show', this.executeExpression(show, this.expressionData) && !this.routeMetaDisabled)
141
+ return element
142
+ }
143
+ show && this.$set(element, '_show', this.executeExpression(show, this.expressionData))
144
+ return element
145
+ })
146
+ },
147
+ getCurrentSlotComponentRef () {
148
+ const includeMetaCmp = this.$children.find(child => child.meta)
149
+ if (!includeMetaCmp) return null
150
+ const { $children: components } = includeMetaCmp
151
+ const target = components.find(cmp => cmp.$options._componentTag === 'ele-tpl')
152
+ return target.getModel ? target.getModel() : null
153
+ },
154
+ setCurrentStep (index) {
155
+ this.current = index
156
+ this.evalShowExpressionForFooterElements()
157
+ },
158
+ nextStep () {
159
+ if (this.current >= this.elements.length - 1) return
160
+ this.current ++
161
+ this.evalShowExpressionForFooterElements()
162
+ },
163
+ prevStep () {
164
+ if (this.current <= 0) return
165
+ this.current --
166
+ this.evalShowExpressionForFooterElements()
167
+ },
168
+ [BUILT_IN_EVENT_NAMES.NEXT] (props) {
169
+ this.$emit(BUILT_IN_EVENT_NAMES.NEXT, { ...props, exposed: { ...this.exposedMethods } })
170
+ },
171
+ [BUILT_IN_EVENT_NAMES.PREVIOUS] (props) {
172
+ this.$emit(BUILT_IN_EVENT_NAMES.PREVIOUS, { ...props, exposed: { ...this.exposedMethods } })
173
+ },
174
+ [BUILT_IN_EVENT_NAMES.SUBMIT] (props) {
175
+ const currentComponent = this.getCurrentSlotComponentRef() || {}
176
+ const hasSubmitMethod = currentComponent.hasOwnProperty(BUILT_IN_EVENT_NAMES.SUBMIT)
177
+ hasSubmitMethod && currentComponent[BUILT_IN_EVENT_NAMES.SUBMIT]()
178
+ this.$emit(BUILT_IN_EVENT_NAMES.SUBMIT, { ...props, exposed: { ...this.exposedMethods } })
179
+ }
180
+ }
181
+ }
182
+ </script>
183
+
184
+ <style lang="scss" scoped>
185
+ .ele-step-model__wrapper {
186
+ width: 100%;
187
+ height: 100vh;
188
+ position: relative;
189
+ .ele-step-model__step--wrapper {
190
+ width: 100%;
191
+ height: 64px;
192
+ padding: 16px;
193
+ display: flex;
194
+ flex-direction: row;
195
+ align-items: center;
196
+ background: #fff;
197
+ .ele-steps {
198
+ .ant-steps-item {
199
+ text-align: left;
200
+ }
201
+ }
202
+ }
203
+ .ele-step-model__content--wrapper {
204
+ width: 100%;
205
+ width: 100%;
206
+ margin-top: 16px;
207
+ margin-bottom: 16px;
208
+ height: calc(100vh - 64px - 64px - 16px - 16px);
209
+ overflow: auto;
210
+ }
211
+ .ele-step-model__footer--wrapper {
212
+ width: 100%;
213
+ height: 64px;
214
+ background: #fff;
215
+ position: absolute;
216
+ bottom: 0;
217
+ display: flex;
218
+ flex-direction: row;
219
+ align-items: center;
220
+ justify-content: end;
221
+ }
222
+ }
223
+ </style>import meta from '@/views/tree-table-page/meta'import meta from '@/views/tree-table-page/meta'
224
+