@idooel/components 0.0.1 → 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 (107) hide show
  1. package/README.md +99 -0
  2. package/dist/@idooel/components.esm.js +13956 -1882
  3. package/dist/@idooel/components.umd.js +14000 -1891
  4. package/jsconfig.json +8 -0
  5. package/package.json +12 -6
  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/index.js +4 -4
  19. package/packages/button/src/index.vue +65 -24
  20. package/packages/checkbox/index.js +5 -0
  21. package/packages/checkbox/src/index.vue +53 -0
  22. package/packages/composite-components/button-group/index.js +4 -4
  23. package/packages/composite-components/button-group/src/index.vue +151 -46
  24. package/packages/composite-components/form-attachment/src/index.vue +15 -0
  25. package/packages/composite-components/form-img-crop/index.js +5 -0
  26. package/packages/composite-components/form-img-crop/src/index.vue +121 -0
  27. package/packages/composite-components/modal-confirm/index.js +5 -0
  28. package/packages/composite-components/modal-confirm/src/index.vue +104 -0
  29. package/packages/composite-components/modal-form/index.js +5 -0
  30. package/packages/composite-components/modal-form/src/index.vue +231 -0
  31. package/packages/composite-components/modal-img-crop/index.js +5 -0
  32. package/packages/composite-components/modal-img-crop/src/index.vue +299 -0
  33. package/packages/composite-components/modal-table/index.js +5 -0
  34. package/packages/composite-components/modal-table/src/index.vue +156 -0
  35. package/packages/composite-components/modal-table-transfer/index.js +0 -0
  36. package/packages/composite-components/modal-tree/index.js +5 -0
  37. package/packages/composite-components/modal-tree/src/index.vue +76 -0
  38. package/packages/composite-components/search-area/index.js +4 -4
  39. package/packages/composite-components/search-area/src/index.vue +237 -128
  40. package/packages/composite-components/search-area/src/label.vue +35 -35
  41. package/packages/composite-components/select-entity-modal-table/index.js +5 -0
  42. package/packages/composite-components/select-entity-modal-table/src/index.vue +172 -0
  43. package/packages/composite-components/table-transfer/index.js +0 -0
  44. package/packages/date/index.js +4 -4
  45. package/packages/date/src/index.vue +113 -40
  46. package/packages/date-range/index.js +5 -0
  47. package/packages/date-range/src/index.vue +47 -0
  48. package/packages/form/index.js +5 -0
  49. package/packages/form/src/index.vue +319 -0
  50. package/packages/icon/index.js +5 -0
  51. package/packages/icon/src/index.vue +32 -0
  52. package/packages/index.js +153 -50
  53. package/packages/input/index.js +4 -4
  54. package/packages/input/src/index.vue +35 -23
  55. package/packages/input-number/index.js +5 -0
  56. package/packages/input-number/src/index.vue +24 -0
  57. package/packages/loading/index.js +5 -0
  58. package/packages/loading/src/index.vue +37 -0
  59. package/packages/modal/index.js +5 -0
  60. package/packages/modal/src/index.vue +185 -0
  61. package/packages/models/form-group-model/index.js +5 -0
  62. package/packages/models/form-group-model/src/index.vue +274 -0
  63. package/packages/models/form-model/index.js +5 -0
  64. package/packages/models/form-model/src/index.vue +233 -0
  65. package/packages/models/step-model/index.js +5 -0
  66. package/packages/models/step-model/src/index.vue +224 -0
  67. package/packages/{tree-table-model → models/tree-table-model}/index.js +4 -4
  68. package/packages/models/tree-table-model/src/index.vue +689 -0
  69. package/packages/radio/index.js +5 -0
  70. package/packages/radio/src/index.vue +57 -0
  71. package/packages/select/index.js +4 -4
  72. package/packages/select/src/index.vue +105 -34
  73. package/packages/select-entity/index.js +5 -0
  74. package/packages/select-entity/src/index.vue +120 -0
  75. package/packages/table/index.js +4 -4
  76. package/packages/table/src/action.vue +172 -103
  77. package/packages/table/src/index.vue +289 -88
  78. package/packages/tabs/index.js +5 -0
  79. package/packages/tabs/src/index.vue +56 -0
  80. package/packages/text/index.js +5 -0
  81. package/packages/text/src/index.vue +48 -0
  82. package/packages/text-editor/index.js +5 -0
  83. package/packages/text-editor/src/index.vue +73 -0
  84. package/packages/textarea/index.js +5 -0
  85. package/packages/textarea/src/index.vue +58 -0
  86. package/packages/theme/form.scss +22 -0
  87. package/packages/theme/index.scss +43 -0
  88. package/packages/theme/overrid.scss +8 -0
  89. package/packages/theme/styleClass.scss +3 -0
  90. package/packages/theme/variables.scss +56 -0
  91. package/packages/timeline/index.js +5 -0
  92. package/packages/timeline/src/index.vue +258 -0
  93. package/packages/tpl/index.js +4 -4
  94. package/packages/tpl/src/index.vue +56 -47
  95. package/packages/tree/index.js +4 -4
  96. package/packages/tree/src/TreeNode.vue +29 -29
  97. package/packages/tree/src/index.vue +101 -96
  98. package/packages/tree-select/index.js +5 -0
  99. package/packages/tree-select/src/index.vue +143 -0
  100. package/packages/upload/index.js +5 -0
  101. package/packages/upload/src/index.vue +445 -0
  102. package/packages/utils/index.js +63 -0
  103. package/scripts/rollup.config.js +42 -35
  104. package/scripts/rollup.esm.config.js +11 -11
  105. package/scripts/rollup.umd.config.js +14 -14
  106. package/packages/tree-table-model/src/index.vue +0 -290
  107. /package/packages/{tree-table-model/README.md → composite-components/form-attachment/index.js} +0 -0
@@ -0,0 +1,117 @@
1
+ <template>
2
+ <div class="g-form__tabs">
3
+ <div :class="['g-form__wrapper', disabled && 'disabled']">
4
+ <div :class="['g-form__item', !disabled && (innerActiveKey == props.key) && 'actived']" @click="handleTabClick(props)" v-for="props in dataSource" :key="props.key">
5
+ <div>{{ props.title }}</div>
6
+ <div v-if="isSuffix" class="suffix">
7
+ <template v-if="props.loading">
8
+ <ele-loading style="margin-left:4px;" :loading="props.loading"></ele-loading>
9
+ </template>
10
+ <div v-else>({{ props.suffix }}人)</div>
11
+ </div>
12
+ </div>
13
+ </div>
14
+ </div>
15
+ </template>
16
+
17
+ <script>
18
+ export default {
19
+ name: 'ele-tabs-sub-center',
20
+ props: {
21
+ activeKey: {
22
+ type: [String, Number]
23
+ },
24
+ isSuffix: {
25
+ type: Boolean,
26
+ default: false
27
+ },
28
+ disabled: {
29
+ type: Boolean,
30
+ default: false
31
+ },
32
+ dataSource: {
33
+ type: Array
34
+ }
35
+ },
36
+ data () {
37
+ return {
38
+ innerActiveKey: 1
39
+ }
40
+ },
41
+ watch: {
42
+ activeKey: {
43
+ handler (key) {
44
+ this.innerActiveKey = key
45
+ },
46
+ immediate: true
47
+ }
48
+ },
49
+ methods: {
50
+ setLoadingByKey (key, status = true) {
51
+ const target = this.dataSource.find(item => item.key == key)
52
+ this.$set(target, 'loading', status)
53
+ },
54
+ setTitleByKey (key, title) {
55
+ const target = this.dataSource.find(item => item.key == key)
56
+ this.$set(target, 'title', title)
57
+ },
58
+ setSuffixByKey (key, suffix) {
59
+ const target = this.dataSource.find(item => item.key == key)
60
+ this.$set(target, 'suffix', suffix)
61
+ },
62
+ handleTabClick (props) {
63
+ if (this.disabled) return
64
+ const { key } = props
65
+ this.innerActiveKey = key
66
+ this.$emit('on-click', props)
67
+ }
68
+ }
69
+ }
70
+ </script>
71
+
72
+ <style lang="scss" scoped>
73
+ .g-form__tabs {
74
+ width: 100%;
75
+ background: #fff;
76
+ display: flex;
77
+ flex-direction: row;
78
+ height: 32px;
79
+ .g-form__wrapper {
80
+ display: flex;
81
+ flex-direction: row;
82
+ &.disabled {
83
+ .g-form__item {
84
+ cursor: not-allowed;
85
+ border-color: rgba(0, 0, 0, 0.16);
86
+ background: rgba(0, 0, 0, 0.04);
87
+ color: rgba(0, 0, 0, 0.24);
88
+ }
89
+ }
90
+ .g-form__item {
91
+ padding: 0px 16px;
92
+ cursor: pointer;
93
+ font-size: 14px;
94
+ display: flex;
95
+ flex-direction: row;
96
+ align-items: center;
97
+ border: 1px solid rgba(0, 0, 0, 0.16);
98
+ color: rgba(0, 0, 0, 0.64);
99
+ border-right: unset;
100
+ & .suffix {
101
+ display: flex;
102
+ }
103
+ &:last-child {
104
+ border-right: 1px solid rgba(0, 0, 0, 0.16);
105
+ }
106
+ &.actived {
107
+ border-color:#409eff;
108
+ color: #409eff;
109
+ font-size: 14px;
110
+ &+.g-form__item {
111
+ border-left: 1px solid #409eff;
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ </style>
@@ -1,5 +1,5 @@
1
- import EleButton from './src/index.vue'
2
-
3
- EleButton.install = Vue => Vue.component(EleButton.name, EleButton)
4
-
1
+ import EleButton from './src/index.vue'
2
+
3
+ EleButton.install = Vue => Vue.component(EleButton.name, EleButton)
4
+
5
5
  export default EleButton
@@ -1,25 +1,66 @@
1
- <template>
2
- <a-button :type="type" :icon="icon" @click="handleClick">
3
- <slot></slot>
4
- </a-button>
5
- </template>
6
-
7
- <script>
8
- export default {
9
- name: 'ele-button',
10
- props: {
11
- type: {
12
- type: String,
13
- default: 'default'
14
- },
15
- icon: {
16
- type: String
17
- }
18
- },
19
- methods: {
20
- handleClick () {
21
- this.$emit('click')
22
- }
23
- }
24
- }
1
+ <template>
2
+ <a-dropdown v-if="mode == 'dropdown'">
3
+ <a-menu slot="overlay" @click="handleMenuClick">
4
+ <a-menu-item :key="opt.value" v-for="opt in dataSource">
5
+ {{ opt.label }}
6
+ </a-menu-item>
7
+ </a-menu>
8
+ <a-button :type="type">
9
+ <slot></slot>
10
+ <a-icon :type="icon" />
11
+ </a-button>
12
+ </a-dropdown>
13
+ <a-button :type="type" :icon="icon" @click="handleClick" v-else>
14
+ <slot></slot>
15
+ </a-button>
16
+ </template>
17
+
18
+ <script>
19
+ import { CONTEXT } from '../../utils'
20
+ export default {
21
+ name: 'ele-button',
22
+ props: {
23
+ record: {
24
+ type: Object
25
+ },
26
+ eventName: {
27
+ type: String
28
+ },
29
+ mode: {
30
+ type: String
31
+ },
32
+ dataSource: {
33
+ type: Array,
34
+ default: () => []
35
+ },
36
+ type: {
37
+ type: String,
38
+ default: 'default'
39
+ },
40
+ icon: {
41
+ type: String
42
+ }
43
+ },
44
+ inject: {
45
+ [CONTEXT]: {
46
+ default: () => (() => ({}))
47
+ }
48
+ },
49
+ computed: {
50
+ callContext () {
51
+ return this[CONTEXT].call(this)
52
+ }
53
+ },
54
+ methods: {
55
+ handleMenuClick (props) {
56
+ const { key } = props
57
+ const currentClickTarget = this.dataSource.find(item => item.value === key)
58
+ const { eventName } = currentClickTarget
59
+ eventName && this.$emit(eventName, { ...currentClickTarget })
60
+ },
61
+ handleClick () {
62
+ this.$emit(this.eventName || 'click', { ...this.record, ...this.callContext })
63
+ }
64
+ }
65
+ }
25
66
  </script>
@@ -0,0 +1,5 @@
1
+ import EleCheckbox from './src/index.vue'
2
+
3
+ EleCheckbox.install = Vue => Vue.component(EleCheckbox.name, EleCheckbox)
4
+
5
+ export default EleCheckbox
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <a-checkbox-group
3
+ :value="value"
4
+ :options="dataSource"
5
+ :disabled="disabled"
6
+ @change="onChange">
7
+ </a-checkbox-group>
8
+ </template>
9
+
10
+ <script>
11
+ export default {
12
+ name: 'ele-checkbox',
13
+ model: {
14
+ prop: 'value',
15
+ event: 'change'
16
+ },
17
+ props: {
18
+ value: {
19
+ type: Array
20
+ },
21
+ dataSource: {
22
+ type: Array,
23
+ default: () => []
24
+ },
25
+ disabled: {
26
+ type: Boolean,
27
+ default: false
28
+ }
29
+ },
30
+ methods: {
31
+ onChange (value) {
32
+ this.$emit('change', value)
33
+ this.$emit('input', value)
34
+ }
35
+ }
36
+ }
37
+ </script>
38
+ <style lang="scss" scoped>
39
+ .ant-checkbox-group {
40
+ text-align: left;
41
+ line-height: 32px;
42
+ }
43
+ .has-error {
44
+ .ant-checkbox-group {
45
+ ::v-deep .ant-checkbox-wrapper {
46
+ color: var(--idooel-form-border-err-color);
47
+ }
48
+ ::v-deep .ant-checkbox-inner {
49
+ border-color: var(--idooel-form-border-err-color);
50
+ }
51
+ }
52
+ }
53
+ </style>
@@ -1,5 +1,5 @@
1
- import EleButtonGroup from './src/index.vue'
2
-
3
- EleButtonGroup.install = Vue => Vue.component(EleButtonGroup.name, EleButtonGroup)
4
-
1
+ import EleButtonGroup from './src/index.vue'
2
+
3
+ EleButtonGroup.install = Vue => Vue.component(EleButtonGroup.name, EleButtonGroup)
4
+
5
5
  export default EleButtonGroup
@@ -1,47 +1,152 @@
1
- <template>
2
- <div class="button-group__wrapper">
3
- <ele-button
4
- v-for="(item, idx) in dataSource"
5
- :type="item.type"
6
- :icon="item.icon"
7
- @click="handleClick(item)"
8
- :key="idx">
9
- {{ item.label }}
10
- </ele-button>
11
- </div>
12
- </template>
13
-
14
- <script>
15
- import EleButton from '../../../button/src/index.vue'
16
- export default {
17
- name: 'ele-button-group',
18
- components: {
19
- EleButton
20
- },
21
- props: {
22
- dataSource: {
23
- type: Array,
24
- default: () => []
25
- }
26
- },
27
- methods: {
28
- handleClick (props) {
29
- this.$emit('click', props)
30
- }
31
- }
32
- }
33
- </script>
34
-
35
- <style lang="scss" scoped>
36
- .button-group__wrapper {
37
- display: flex;
38
- padding-left: 16px;
39
- padding-right: 16px;
40
- .ant-btn {
41
- margin-left: 8px;
42
- &:first-child {
43
- margin-left: 0;
44
- }
45
- }
46
- }
1
+ <template>
2
+ <div class="button-group__wrapper">
3
+ <template v-for="(item, idx) in innerDatasource" >
4
+ <ele-button
5
+ v-if="isBool(item._show) ? item._show : true"
6
+ :type="item.type"
7
+ :icon="item.icon"
8
+ :mode="item.mode"
9
+ :data-source="item.optionList"
10
+ :event-name="item.eventName"
11
+ :record="item"
12
+ v-on="overrideButtonEvent"
13
+ :key="idx">
14
+ {{ item.label }}
15
+ </ele-button>
16
+ </template>
17
+ <ele-modal-confirm v-model="modalConfirmValue" :contextProp="currentContext" v-on="overrideModalConfirmEvent" v-bind="modalConfirmMeta"></ele-modal-confirm>
18
+ </div>
19
+ </template>
20
+
21
+ <script>
22
+ import { type, util } from '@idooel/shared'
23
+ import { parse } from '@idooel/expression'
24
+ import { CONTEXT, AREA_NAMES } from '../../../utils'
25
+ export default {
26
+ name: 'ele-button-group',
27
+ props: {
28
+ dataSource: {
29
+ type: Array,
30
+ default: () => []
31
+ }
32
+ },
33
+ data() {
34
+ return {
35
+ innerDatasource: [],
36
+ modalConfirmValue: false,
37
+ modalConfirmMeta: {}
38
+ }
39
+ },
40
+ inject: {
41
+ [CONTEXT]: {
42
+ default: () => (() => ({}))
43
+ }
44
+ },
45
+ computed: {
46
+ callContext () {
47
+ return this[CONTEXT].call(this)
48
+ },
49
+ currentExposed () {
50
+ const exposed = Object.assign({}, this.callContext.exposed || {}, { [AREA_NAMES.BUTTON_GROUP]: { setModalConfirm: this.setModalConfirm } })
51
+ return exposed
52
+ },
53
+ contextData () {
54
+ return {
55
+ ...this.currentContext,
56
+ exposed: this.currentExposed
57
+ }
58
+ },
59
+ overrideButtonEvent () {
60
+ const events = this.dataSource.reduce((ret, item) => {
61
+ const { mode, optionList = [] } = item
62
+ if (mode == 'dropdown') {
63
+ optionList.forEach(props => {
64
+ ret[props.eventName || 'click'] = (e) => {
65
+ const { modalConfirm } = props
66
+ modalConfirm && (this.modalConfirmMeta = modalConfirm)
67
+ if (this.preventModalConfirm(modalConfirm)) {
68
+ this.$emit(props.eventName || 'click', { ...e, ...props, record: props, ...this.contextData })
69
+ return
70
+ }
71
+ modalConfirm && (this.modalConfirmValue = true)
72
+ this.$emit(props.eventName || 'click', { ...e, ...props, record: props, ...this.contextData })
73
+ }
74
+ })
75
+ }
76
+ ret[item.eventName || 'click'] = (e) => {
77
+ const { modalConfirm } = item
78
+ modalConfirm && (this.modalConfirmMeta = modalConfirm)
79
+ if (this.preventModalConfirm(modalConfirm)) {
80
+ this.$emit(item.eventName || 'click', { ...e, record: item, ...this.contextData })
81
+ return
82
+ }
83
+ modalConfirm && (this.modalConfirmValue = true)
84
+ this.$emit(item.eventName || 'click', { ...e, record: item, ...this.contextData })
85
+ }
86
+ return ret
87
+ }, {})
88
+ return {
89
+ ...this.$listeners,
90
+ ...events,
91
+ ...this.contextData
92
+ }
93
+ },
94
+ overrideModalConfirmEvent () {
95
+ return {
96
+ ...this.$listeners
97
+ }
98
+ },
99
+ currentContext () {
100
+ return {
101
+ _route: this.$route.query,
102
+ _routeMeta: this.$route.meta,
103
+ ...this.callContext
104
+ }
105
+ }
106
+ },
107
+ watch: {
108
+ dataSource: {
109
+ handler (dataSource) {
110
+ this.innerDatasource = dataSource.map(item => {
111
+ return {
112
+ ...item,
113
+ _show: this.executeExpression(item.show)
114
+ }
115
+ })
116
+ },
117
+ immediate: true
118
+ }
119
+ },
120
+ methods: {
121
+ setModalConfirm (arg = false) {
122
+ this.modalConfirmValue = arg
123
+ },
124
+ preventModalConfirm (modalConfirm = {}) {
125
+ const { show } = modalConfirm
126
+ return !this.executeExpression(show)
127
+ },
128
+ executeExpression (expression) {
129
+ if (type.isBool(expression)) return expression
130
+ if (type.isEmpty(expression)) return true
131
+ return parse(expression, { ...this.currentContext, ...this.contextData })
132
+ },
133
+ isBool (arg) {
134
+ return type.isBool(arg)
135
+ }
136
+ }
137
+ }
138
+ </script>
139
+
140
+ <style lang="scss" scoped>
141
+ .button-group__wrapper {
142
+ display: flex;
143
+ padding-left: 16px;
144
+ padding-right: 16px;
145
+ .ant-btn {
146
+ margin-left: 8px;
147
+ &:first-child {
148
+ margin-left: 0;
149
+ }
150
+ }
151
+ }
47
152
  </style>
@@ -0,0 +1,15 @@
1
+ <template>
2
+ <div>
3
+ attachment
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'ele-form-attachment'
10
+ }
11
+ </script>
12
+
13
+ <style lang="scss" scoped>
14
+
15
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleFormImgCrop from './src/index.vue'
2
+
3
+ EleFormImgCrop.install = Vue => Vue.component(EleFormImgCrop.name, EleFormImgCrop)
4
+
5
+ export default EleFormImgCrop
@@ -0,0 +1,121 @@
1
+ <template>
2
+ <div class="ele__img--form">
3
+ <div class="form__img--wrapper"
4
+ @click="handleClick"
5
+ :style="style">
6
+ <div class="form__img--preivew" v-if="value">
7
+ <img style="width:100%;height:100%" :src="imageUrl" alt="" srcset="">
8
+ </div>
9
+ <div class="form__icon--wrapper">
10
+ <ele-icon class="icon--oper" type="icon-camera"></ele-icon>
11
+ <span class="icon__text--oper">{{ operText }}</span>
12
+ </div>
13
+ </div>
14
+ <ele-modal-img-crop
15
+ v-model="showModalImgCropValue"
16
+ @change="onChangeModalCropImg"
17
+ :cropperConfig="cropperConfig"
18
+ :imageId="value"
19
+ :title="modalTitle">
20
+ </ele-modal-img-crop>
21
+ </div>
22
+ </template>
23
+
24
+ <script>
25
+ export default {
26
+ name: 'ele-form-img-crop',
27
+ model: {
28
+ prop: 'value',
29
+ event: 'change'
30
+ },
31
+ props: {
32
+ value: {
33
+ type: [String, Number]
34
+ },
35
+ modalTitle: {
36
+ type: String
37
+ },
38
+ operText: {
39
+ type: String,
40
+ default: '更改头像'
41
+ },
42
+ width: {
43
+ type: [Number, String],
44
+ default: 200
45
+ },
46
+ height: {
47
+ type: [Number, String],
48
+ default: 200
49
+ },
50
+ cropperConfig: {
51
+ type: Object,
52
+ default: () => {
53
+ return {
54
+ aspectRatio: 16 / 9
55
+ }
56
+ }
57
+ }
58
+ },
59
+ data() {
60
+ return {
61
+ showModalImgCropValue: false
62
+ }
63
+ },
64
+ computed: {
65
+ style () {
66
+ return {
67
+ width: this.width + 'px',
68
+ height: this.height + 'px'
69
+ }
70
+ },
71
+ imageUrl () {
72
+ return `/api-file/workbench/file/stream/${this.value}?origin=true`
73
+ }
74
+ },
75
+ methods: {
76
+ handleClick () {
77
+ this.showModalImgCropValue = true
78
+ },
79
+ onChangeModalCropImg (fileId) {
80
+ console.log('fileId', fileId)
81
+ this.$emit('change', fileId)
82
+ }
83
+ }
84
+ }
85
+ </script>
86
+
87
+ <style lang="scss" scoped>
88
+ .ele__img--form {
89
+ .form__img--wrapper {
90
+ cursor: pointer;
91
+ border-radius: 4px;
92
+ background: #000;
93
+ opacity: 0.3;
94
+ display: flex;
95
+ flex-direction: row;
96
+ align-items: center;
97
+ justify-content: center;
98
+ position: relative;
99
+ .form__img--preivew {
100
+ position: absolute;
101
+ color: red;
102
+ width: 100%;
103
+ height: 100%;
104
+ border-radius: 4px;
105
+ }
106
+ .form__icon--wrapper {
107
+ position: absolute;
108
+ display: flex;
109
+ flex-direction: column;
110
+ align-items: center;
111
+ color: #fff;
112
+ .icon--oper {
113
+ font-size: 40px;
114
+ }
115
+ .icon__text--oper {
116
+ font-size: 16px;
117
+ }
118
+ }
119
+ }
120
+ }
121
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleModalConfirm from './src/index.vue'
2
+
3
+ EleModalConfirm.install = Vue => Vue.component(EleModalConfirm.name, EleModalConfirm)
4
+
5
+ export default EleModalConfirm