@aochuang/common 1.0.0 → 1.0.1

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 (194) hide show
  1. package/common/loading/index.js +7 -0
  2. package/common/loading/loading.vue +71 -0
  3. package/common/tips/index.js +7 -0
  4. package/common/tips/tips.vue +82 -0
  5. package/common/tooltip/index.js +7 -0
  6. package/common/tooltip/popper.js +18 -0
  7. package/common/tooltip/tooltip.vue +55 -0
  8. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-boolean.vue +33 -0
  9. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-date-range.vue +30 -0
  10. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-date.vue +41 -0
  11. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-datetime-range.vue +34 -0
  12. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-datetime.vue +41 -0
  13. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-number-range.vue +67 -0
  14. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-number.vue +35 -0
  15. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-string.vue +41 -0
  16. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-value.vue +73 -0
  17. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item.vue +226 -0
  18. package/components/advanced-filter/advanced-filter-condition-toggle.vue +112 -0
  19. package/components/advanced-filter/advanced-filter-condition.vue +352 -0
  20. package/components/advanced-filter/advanced-filter-permanent-item.vue +10 -0
  21. package/components/advanced-filter/advanced-filter-permanent.vue +10 -0
  22. package/components/advanced-filter/advanced-filter-scene-form.vue +95 -0
  23. package/components/advanced-filter/advanced-filter-scene-item.vue +64 -0
  24. package/components/advanced-filter/advanced-filter-scene-manage.vue +264 -0
  25. package/components/advanced-filter/advanced-filter-scene-transfer.vue +283 -0
  26. package/components/advanced-filter/advanced-filter-scene.vue +199 -0
  27. package/components/advanced-filter/advanced-filter.vue +114 -0
  28. package/components/advanced-filter/index.js +36 -0
  29. package/components/advanced-filter/utils.js +132 -0
  30. package/components/autocomplete/autocomplete.vue +121 -0
  31. package/components/autocomplete/index.js +7 -0
  32. package/components/avatar/avatar.png +0 -0
  33. package/components/avatar/avatar.vue +212 -0
  34. package/components/avatar/index.js +7 -0
  35. package/components/brick-wall/brick-wall-skeleton.vue +125 -0
  36. package/components/brick-wall/brick-wall.vue +293 -0
  37. package/components/brick-wall/index.js +7 -0
  38. package/components/button/button.vue +537 -0
  39. package/components/button/index.js +7 -0
  40. package/components/button/utils.js +20 -0
  41. package/components/cascader/cascader.vue +184 -0
  42. package/components/cascader/index.js +7 -0
  43. package/components/cascader/util.js +50 -0
  44. package/components/checkbox/checkbox.vue +114 -0
  45. package/components/checkbox/index.js +7 -0
  46. package/components/checkbox-button/index.js +8 -0
  47. package/components/checkbox-group/checkbox-group.vue +11 -0
  48. package/components/checkbox-group/index.js +7 -0
  49. package/components/date-picker/date-picker.vue +300 -0
  50. package/components/date-picker/index.js +7 -0
  51. package/components/dialog/dialog.vue +182 -0
  52. package/components/dialog/index.js +14 -0
  53. package/components/dialog/utils.js +20 -0
  54. package/components/drawer/drawer.vue +186 -0
  55. package/components/drawer/index.js +14 -0
  56. package/components/drawer/utils.js +36 -0
  57. package/components/dropdown/dropdown-item.vue +63 -0
  58. package/components/dropdown/dropdown.vue +286 -0
  59. package/components/dropdown/index.js +16 -0
  60. package/components/empty/empty.vue +62 -0
  61. package/components/empty/index.js +7 -0
  62. package/components/filter/filter-group.vue +44 -0
  63. package/components/filter/filter-item.vue +122 -0
  64. package/components/filter/filter-more.vue +114 -0
  65. package/components/filter/filter.vue +407 -0
  66. package/components/filter/index.js +20 -0
  67. package/components/filter/refresh-line.svg +1 -0
  68. package/components/filter/util.js +5 -0
  69. package/components/form/form-cell.vue +231 -0
  70. package/components/form/form-group.vue +147 -0
  71. package/components/form/form-row.vue +51 -0
  72. package/components/form/form.vue +256 -0
  73. package/components/form/index.js +13 -0
  74. package/components/grid/grid-card-view/grid-card-view.vue +157 -0
  75. package/components/grid/grid-column.vue +136 -0
  76. package/components/grid/grid-filter/grid-filter-group.vue +41 -0
  77. package/components/grid/grid-filter/grid-filter-item.vue +68 -0
  78. package/components/grid/grid-filter/grid-filter.vue +115 -0
  79. package/components/grid/grid-filter/util.js +7 -0
  80. package/components/grid/grid-filter-operate/grid-filter-operate-item.vue +55 -0
  81. package/components/grid/grid-filter-operate/grid-filter-operate.vue +46 -0
  82. package/components/grid/grid-sort/grid-sort-proxy.js +27 -0
  83. package/components/grid/grid-sort/grid-sort.vue +205 -0
  84. package/components/grid/grid-sort/icons/asc.png +0 -0
  85. package/components/grid/grid-sort/icons/desc.png +0 -0
  86. package/components/grid/grid-sort/index.js +7 -0
  87. package/components/grid/grid-table-view/grid-table-view.vue +178 -0
  88. package/components/grid/grid-table.vue +547 -0
  89. package/components/grid/grid-toolbar/grid-batch-toolbar-proxy.js +21 -0
  90. package/components/grid/grid-toolbar/grid-batch-toolbar.vue +129 -0
  91. package/components/grid/grid-toolbar/grid-global-toolbar-proxy.js +21 -0
  92. package/components/grid/grid-toolbar/grid-global-toolbar.vue +37 -0
  93. package/components/grid/grid-toolbar/grid-more-toolbar-proxy.js +21 -0
  94. package/components/grid/grid-toolbar/grid-more-toolbar.vue +138 -0
  95. package/components/grid/grid-toolbar/grid-row-toolbar.vue +279 -0
  96. package/components/grid/grid-view-select.vue +78 -0
  97. package/components/grid/grid.vue +1102 -0
  98. package/components/grid/icons/more-line.svg +1 -0
  99. package/components/grid/icons/refresh.svg +14 -0
  100. package/components/grid/index.js +61 -0
  101. package/components/grid/util.js +31 -0
  102. package/components/icon/demo.css +539 -0
  103. package/components/icon/demo_index.html +7433 -0
  104. package/components/icon/icon.vue +96 -0
  105. package/components/icon/iconfont.css +1275 -0
  106. package/components/icon/iconfont.eot +0 -0
  107. package/components/icon/iconfont.js +1 -0
  108. package/components/icon/iconfont.json +2214 -0
  109. package/components/icon/iconfont.svg +455 -0
  110. package/components/icon/iconfont.ttf +0 -0
  111. package/components/icon/iconfont.woff +0 -0
  112. package/components/icon/iconfont.woff2 +0 -0
  113. package/components/icon/index.js +7 -0
  114. package/components/image/image.vue +299 -0
  115. package/components/image/index.js +12 -0
  116. package/components/image/util.js +26 -0
  117. package/components/index.js +153 -0
  118. package/components/loading/index.js +7 -0
  119. package/components/loading/loading.vue +130 -0
  120. package/components/menu/index.js +14 -0
  121. package/components/menu/menu-group.vue +240 -0
  122. package/components/menu/menu-item.vue +215 -0
  123. package/components/menu/menu.vue +64 -0
  124. package/components/message/index.js +19 -0
  125. package/components/message/message.js +28 -0
  126. package/components/message/message.less +6 -0
  127. package/components/message-box/index.js +10 -0
  128. package/components/message-box/message-box.js +140 -0
  129. package/components/message-box/message-box.less +5 -0
  130. package/components/pagination/index.js +7 -0
  131. package/components/pagination/pagination.vue +193 -0
  132. package/components/panel/index.js +7 -0
  133. package/components/panel/panel.vue +44 -0
  134. package/components/popover/index.js +7 -0
  135. package/components/popover/popover.vue +140 -0
  136. package/components/popup-select/index.js +7 -0
  137. package/components/popup-select/popup-select.vue +114 -0
  138. package/components/radio/index.js +7 -0
  139. package/components/radio/radio.vue +92 -0
  140. package/components/radio-button/index.js +7 -0
  141. package/components/radio-button/radio-button.vue +20 -0
  142. package/components/radio-group/index.js +7 -0
  143. package/components/radio-group/radio-group.vue +22 -0
  144. package/components/searchbox/index.js +7 -0
  145. package/components/searchbox/searchbox.vue +260 -0
  146. package/components/select/index.js +9 -0
  147. package/components/select/select-load-more.vue +53 -0
  148. package/components/select/select.vue +572 -0
  149. package/components/skeleton/index.js +14 -0
  150. package/components/skeleton/skeleton-rows.vue +52 -0
  151. package/components/skeleton/skeleton.vue +72 -0
  152. package/components/sortable/index.js +9 -0
  153. package/components/sortable/sortable-item.vue +77 -0
  154. package/components/sortable/sortable.vue +62 -0
  155. package/components/spinner/index.js +7 -0
  156. package/components/spinner/spinner.vue +121 -0
  157. package/components/spinner-range/index.js +7 -0
  158. package/components/spinner-range/spinner-range.vue +97 -0
  159. package/components/spinner-textarea/index.js +7 -0
  160. package/components/spinner-textarea/spinner-textarea.vue +65 -0
  161. package/components/switch/index.js +7 -0
  162. package/components/switch/switch.vue +105 -0
  163. package/components/tabs/index.js +10 -0
  164. package/components/tabs/tabs.vue +115 -0
  165. package/components/tag/index.js +9 -0
  166. package/components/tag/tag.less +30 -0
  167. package/components/text/index.js +7 -0
  168. package/components/text/text.vue +69 -0
  169. package/components/textarea/index.js +7 -0
  170. package/components/textarea/textarea.vue +229 -0
  171. package/components/textbox/index.js +7 -0
  172. package/components/textbox/textbox.vue +275 -0
  173. package/components/time-picker/index.js +7 -0
  174. package/components/time-picker/time-picker.vue +77 -0
  175. package/components/toolbar/index.js +14 -0
  176. package/components/toolbar/toolbar-item.vue +43 -0
  177. package/components/toolbar/toolbar.vue +81 -0
  178. package/components/tooltip/index.js +9 -0
  179. package/components/tooltip/tooltip.vue +86 -0
  180. package/components/transfer/index.js +7 -0
  181. package/components/transfer/transfer-load-more.vue +53 -0
  182. package/components/transfer/transfer.vue +245 -0
  183. package/components/tree/index.js +7 -0
  184. package/components/tree/tree.vue +326 -0
  185. package/components/tree/utils.js +122 -0
  186. package/components/video/index.js +7 -0
  187. package/components/video/video.vue +53 -0
  188. package/package.json +4 -1
  189. package/utils/date.js +55 -0
  190. package/utils/emitter.js +3 -0
  191. package/utils/json.js +19 -0
  192. package/utils/resize-event.js +35 -0
  193. package/utils/util.js +12 -0
  194. package/utils/utils.js +0 -0
@@ -0,0 +1,182 @@
1
+ <template>
2
+ <el-dialog
3
+ class="ui-dialog"
4
+ :class="['ui-dialog--' + size, {'is-closeable': closeable, 'is-hide-header': hideHeader}]"
5
+ top="2vh"
6
+ :append-to-body="true"
7
+ :visible.sync="dialogVisible"
8
+ :title="title"
9
+ :width="width"
10
+ :close-on-press-escape="closeable"
11
+ @close="handleClose"
12
+ @open="handleOpen"
13
+ @opened="handleOpended"
14
+ @closed="handleClosed"
15
+ :close-on-click-modal="closeOnClickModal"
16
+ >
17
+ <slot slot="title" name="title">
18
+ <span class="el-dialog__title">{{ title }}</span>
19
+ </slot>
20
+ <slot v-if="showContent"></slot>
21
+ </el-dialog>
22
+ </template>
23
+ <script>
24
+ import ElDialog from 'element-ui/lib/dialog'
25
+ import 'element-ui/lib/theme-chalk/dialog.css'
26
+ import { getDialogOpenCallback, getDialogCloseCallback } from './utils'
27
+
28
+ export default {
29
+ name: 'UiDialog',
30
+ components: {
31
+ ElDialog
32
+ },
33
+ provide () {
34
+ return {
35
+ UiDialog: this
36
+ }
37
+ },
38
+ model: {
39
+ prop: 'visible',
40
+ event: 'input'
41
+ },
42
+ props: {
43
+ width: {
44
+ type: String
45
+ },
46
+ title: {
47
+ type: String
48
+ },
49
+ size: {
50
+ type: String,
51
+ default: 'small',
52
+ validator: (value) => {
53
+ return ['large', 'medium', 'small', 'mini', 'auto'].indexOf(value) >= 0
54
+ }
55
+ },
56
+ hideHeader: {
57
+ type: Boolean,
58
+ default: false
59
+ },
60
+ visible: {
61
+ type: Boolean,
62
+ default: false
63
+ },
64
+ closeable: {
65
+ type: Boolean,
66
+ default: true
67
+ },
68
+ closeOnClickModal: {
69
+ type: Boolean,
70
+ default: false
71
+ }
72
+ },
73
+ data () {
74
+ return {
75
+ showContent: this.visible
76
+ }
77
+ },
78
+ computed: {
79
+ dialogVisible: {
80
+ get () {
81
+ return this.visible
82
+ },
83
+ set (val) {
84
+ this.$emit('input', val)
85
+ }
86
+ }
87
+ },
88
+ methods: {
89
+ handleOpen () {
90
+ this.$emit('open')
91
+ this.showContent = true
92
+ const openCallback = getDialogOpenCallback()
93
+ if (openCallback) {
94
+ openCallback()
95
+ }
96
+ },
97
+ handleOpended () {
98
+ this.$emit('opened')
99
+ },
100
+ handleClose () {
101
+ this.$emit('close')
102
+ },
103
+ handleClosed () {
104
+ const closeCallback = getDialogCloseCallback()
105
+ if (closeCallback) {
106
+ closeCallback()
107
+ }
108
+ this.showContent = false
109
+ this.$emit('closed')
110
+ },
111
+ close () {
112
+ this.dialogVisible = false
113
+ }
114
+ }
115
+ }
116
+ </script>
117
+ <style lang="less">
118
+ .ui-dialog{
119
+ &:not(.is-closeable) {
120
+ .el-dialog__header{
121
+ .el-dialog__headerbtn{
122
+ display: none;
123
+ }
124
+ }
125
+ }
126
+ .el-dialog__header{
127
+ border-bottom: 1px solid #eee;
128
+ padding: 15px 22px;
129
+ background-color: #F9FAFB;
130
+ border-top-left-radius: 3px;
131
+ border-top-right-radius: 3px;
132
+ }
133
+ .el-dialog__body{
134
+ color: #404040;
135
+ padding: 0;
136
+ height: min-content;
137
+ }
138
+ .el-dialog__headerbtn{
139
+ top: 18px;
140
+ }
141
+ &.is-hide-header {
142
+ .el-dialog__header{
143
+ padding: 0;
144
+ border-bottom: 0;
145
+ }
146
+ .el-dialog__title{
147
+ display: none;
148
+ }
149
+ .el-dialog__headerbtn{
150
+ z-index: 10;
151
+ }
152
+ }
153
+ }
154
+ .ui-dialog--small{
155
+ .el-dialog{
156
+ width: 600px;
157
+ }
158
+ }
159
+ .ui-dialog--mini{
160
+ .el-dialog{
161
+ width: 420px;
162
+ }
163
+ }
164
+ .ui-dialog--medium{
165
+ .el-dialog{
166
+ width: 800px;
167
+ }
168
+ }
169
+ .ui-dialog--large{
170
+ .el-dialog{
171
+ width: 1100px;
172
+ }
173
+ }
174
+ .ui-dialog--auto{
175
+ text-align: center;
176
+ .el-dialog{
177
+ text-align: left;
178
+ width: auto;
179
+ display: inline-block;
180
+ }
181
+ }
182
+ </style>
@@ -0,0 +1,14 @@
1
+ import Dialog from './dialog.vue'
2
+ import { setDialogOpenCallback, setDialogCloseCallback } from './utils'
3
+
4
+ Dialog.install = (Vue, options) => {
5
+ Vue.component(Dialog.name, Dialog)
6
+ if (options && options.onOpenDialog) {
7
+ setDialogOpenCallback(options.onOpenDialog)
8
+ }
9
+ if (options && options.onCloseDialog) {
10
+ setDialogCloseCallback(options.onCloseDialog)
11
+ }
12
+ }
13
+
14
+ export default Dialog
@@ -0,0 +1,20 @@
1
+ const DialogCallbacks = {
2
+ dialogOpenCallback: null,
3
+ dialogCloseCallback: null
4
+ }
5
+
6
+ export function setDialogOpenCallback (fn) {
7
+ DialogCallbacks.dialogOpenCallback = fn
8
+ }
9
+
10
+ export function getDialogOpenCallback () {
11
+ return DialogCallbacks.dialogOpenCallback
12
+ }
13
+
14
+ export function setDialogCloseCallback (fn) {
15
+ DialogCallbacks.dialogCloseCallback = fn
16
+ }
17
+
18
+ export function getDialogCloseCallback () {
19
+ return DialogCallbacks.dialogCloseCallback
20
+ }
@@ -0,0 +1,186 @@
1
+ <template>
2
+ <el-drawer
3
+ class="ui-drawer"
4
+ :class="[{'has-modal': innerModal}]"
5
+ :visible.sync="visible"
6
+ :with-header="false"
7
+ :size="width"
8
+ :modal="innerModal"
9
+ :wrapper-closable="modalClosable"
10
+ :append-to-body="true"
11
+ @open="handleDrawerOpen"
12
+ @close="handleDrawerClose"
13
+ >
14
+ <div class="ui-drawer__close" @click="handleCloseClick">
15
+ <i class="wk wk-d-arrow-right"></i>
16
+ </div>
17
+ <slot v-if="visible"></slot>
18
+ </el-drawer>
19
+ </template>
20
+ <script>
21
+ import ElDrawer from 'element-ui/lib/drawer'
22
+ import 'element-ui/lib/theme-chalk/drawer.css'
23
+ import { getDrawerOpenCallback, getDrawerCloseCallback, selfAddDrawerNumber, selfSubDrawerNumber, getDrawerNumber } from './utils'
24
+
25
+ export default {
26
+ name: 'UiDrawer',
27
+ provide () {
28
+ return {
29
+ UiDrawer: this
30
+ }
31
+ },
32
+ components: {
33
+ ElDrawer
34
+ },
35
+ props: {
36
+ size: {
37
+ type: String,
38
+ default: 'mini',
39
+ validator (value) {
40
+ return ['mini', 'small', 'medium', 'large', 'maxlarge'].includes(value)
41
+ }
42
+ },
43
+ modal: {
44
+ type: [String, Boolean],
45
+ default: true,
46
+ validator (value) {
47
+ return [true, false, 'auto'].includes(value)
48
+ }
49
+ },
50
+ modalClosable: {
51
+ type: Boolean,
52
+ default: false
53
+ },
54
+ value: {
55
+ type: Boolean
56
+ }
57
+ },
58
+ data () {
59
+ return {
60
+ autoModal: false
61
+ }
62
+ },
63
+ computed: {
64
+ innerModal () {
65
+ if (this.modal === 'auto') {
66
+ return this.autoModal
67
+ } else {
68
+ return !!this.modal
69
+ }
70
+ },
71
+ visible: {
72
+ get () {
73
+ return this.value
74
+ },
75
+ set (val) {
76
+ this.$emit('input', val)
77
+ }
78
+ },
79
+ width () {
80
+ const map = {
81
+ mini: '540px',
82
+ small: '720px',
83
+ medium: '800px',
84
+ large: '980px',
85
+ maxlarge: '1200px'
86
+ }
87
+ return map[this.size]
88
+ }
89
+ },
90
+ mounted () {
91
+ const $app = window.document.getElementById('app')
92
+ if ($app) {
93
+ $app.addEventListener('click', this.handleDocumentClick)
94
+ }
95
+ },
96
+ methods: {
97
+ handleDocumentClick () {
98
+ if (!this.innerModal) {
99
+ this.close()
100
+ }
101
+ },
102
+ handleCloseClick () {
103
+ this.$emit('input', false)
104
+ },
105
+ handleDrawerOpen () {
106
+ const openCallback = getDrawerOpenCallback()
107
+ if (openCallback) {
108
+ openCallback()
109
+ }
110
+ selfAddDrawerNumber()
111
+ if (getDrawerNumber() === 1) {
112
+ this.autoModal = false
113
+ } else {
114
+ this.autoModal = true
115
+ }
116
+ this.$emit('open')
117
+ },
118
+ handleDrawerClose () {
119
+ const closeCallback = getDrawerCloseCallback()
120
+ if (closeCallback) {
121
+ closeCallback()
122
+ }
123
+ this.$emit('close')
124
+ selfSubDrawerNumber()
125
+ },
126
+ close () {
127
+ this.visible = false
128
+ }
129
+ }
130
+ }
131
+ </script>
132
+ <style lang="scss">
133
+ body {
134
+ .el-drawer{
135
+ outline: 0;
136
+ overflow: initial;
137
+ }
138
+ .el-drawer__body{
139
+ min-height: 0;
140
+ }
141
+ .el-drawer__wrapper {
142
+ outline: 0;
143
+ &:not(.has-modal) {
144
+ pointer-events: none;
145
+ > .el-drawer__container{
146
+ > .el-drawer{
147
+ pointer-events: initial;
148
+ }
149
+ }
150
+ }
151
+ }
152
+ .el-drawer__header {
153
+ > span{
154
+ outline: 0;
155
+ }
156
+ }
157
+ .ui-drawer__close{
158
+ position: absolute;
159
+ left: -38px;
160
+ top: 108px;
161
+ width: 26px;
162
+ height: 26px;
163
+ line-height: 26px;
164
+ padding: 6px;
165
+ text-align: center;
166
+ cursor: pointer;
167
+ transition: all .3s;
168
+ background-color: var(--el-button-primary);
169
+ border-color: var(--el-button-primary);
170
+ border-top-left-radius: 4px;
171
+ border-bottom-left-radius: 4px;
172
+ border-top-right-radius: 0;
173
+ border-bottom-right-radius: 0;
174
+ color: #fff;
175
+ box-sizing: content-box;
176
+ i {
177
+ font-size: 26px;
178
+ }
179
+ &:hover {
180
+ background: var(--el-button-primary-light-3);
181
+ border-color: var(--el-button-primary-light-3);
182
+ color: #FFF;
183
+ }
184
+ }
185
+ }
186
+ </style>
@@ -0,0 +1,14 @@
1
+ import UiDrawer from './drawer'
2
+ import { setDrawerOpenCallback, setDrawerCloseCallback } from './utils'
3
+
4
+ UiDrawer.install = (Vue, options = {}) => {
5
+ Vue.component(UiDrawer.name, UiDrawer)
6
+ if (options && options.onOpenDrawer) {
7
+ setDrawerOpenCallback(options.onOpenDrawer)
8
+ }
9
+ if (options && options.onCloseDrawer) {
10
+ setDrawerCloseCallback(options.onCloseDrawer)
11
+ }
12
+ }
13
+
14
+ export default UiDrawer
@@ -0,0 +1,36 @@
1
+ const DrawerCallbacks = {
2
+ drawerOpenCallback: null,
3
+ drawerCloseCallback: null
4
+ }
5
+
6
+ const drawerNumberInfo = {
7
+ value: 0
8
+ }
9
+
10
+ export function setDrawerOpenCallback (fn) {
11
+ DrawerCallbacks.drawerOpenCallback = fn
12
+ }
13
+
14
+ export function getDrawerOpenCallback () {
15
+ return DrawerCallbacks.drawerOpenCallback
16
+ }
17
+
18
+ export function setDrawerCloseCallback (fn) {
19
+ DrawerCallbacks.drawerCloseCallback = fn
20
+ }
21
+
22
+ export function getDrawerCloseCallback () {
23
+ return DrawerCallbacks.drawerCloseCallback
24
+ }
25
+
26
+ export function selfAddDrawerNumber () {
27
+ drawerNumberInfo.value = drawerNumberInfo.value + 1
28
+ }
29
+
30
+ export function selfSubDrawerNumber () {
31
+ drawerNumberInfo.value = drawerNumberInfo.value - 1
32
+ }
33
+
34
+ export function getDrawerNumber () {
35
+ return drawerNumberInfo.value
36
+ }
@@ -0,0 +1,63 @@
1
+ <script>
2
+ import { unique } from '../../utils/util'
3
+
4
+ export default {
5
+ name: 'UiDropdownItem',
6
+ inject: ['UiDropdown'],
7
+ props: {
8
+ label: {
9
+ type: String
10
+ },
11
+ value: {
12
+ type: String
13
+ },
14
+ icon: {
15
+ type: String
16
+ },
17
+ divided: {
18
+ type: Boolean
19
+ },
20
+ type: {
21
+ type: String
22
+ },
23
+ disabled: {
24
+ type: Boolean
25
+ }
26
+ },
27
+ computed: {
28
+ props () {
29
+ return {
30
+ label: this.label,
31
+ type: this.type,
32
+ icon: this.icon,
33
+ divided: this.divided,
34
+ disabled: this.disabled
35
+ }
36
+ }
37
+ },
38
+ watch: {
39
+ props () {
40
+ this.UiDropdown.updateOptionProps(this.id, this.props)
41
+ }
42
+ },
43
+ created () {
44
+ this.id = unique()
45
+ this.UiDropdown.addOption({
46
+ id: this.id,
47
+ props: this.props,
48
+ click: (evt) => {
49
+ this.$emit('click', evt)
50
+ },
51
+ render: () => {
52
+ return this.$slot.default ? this.$slot.default() : null
53
+ }
54
+ })
55
+ },
56
+ render () {
57
+ return null
58
+ },
59
+ beforeDestroy () {
60
+ this.UiDropdown.removeOption(this.id)
61
+ }
62
+ }
63
+ </script>