@zkwq/business 0.0.4 → 0.0.6

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 (227) hide show
  1. package/package.json +2 -2
  2. package/src/components/base/ui/alert/Alert.vue +0 -94
  3. package/src/components/base/ui/autocomplete/autocomplete-suggestions.vue +0 -77
  4. package/src/components/base/ui/autocomplete/autocomplete.vue +0 -305
  5. package/src/components/base/ui/backtop/main.vue +0 -112
  6. package/src/components/base/ui/button/Button.vue +0 -84
  7. package/src/components/base/ui/button/ButtonGroup.vue +0 -10
  8. package/src/components/base/ui/carousel/Carousel.vue +0 -304
  9. package/src/components/base/ui/carousel/CarouselItem.vue +0 -137
  10. package/src/components/base/ui/cascader/cascader.vue +0 -650
  11. package/src/components/base/ui/cascader-panel/cascader-menu.vue +0 -138
  12. package/src/components/base/ui/cascader-panel/cascader-node.vue +0 -246
  13. package/src/components/base/ui/cascader-panel/cascader-panel.vue +0 -382
  14. package/src/components/base/ui/cascader-panel/node.js +0 -166
  15. package/src/components/base/ui/cascader-panel/store.js +0 -62
  16. package/src/components/base/ui/checkbox/checkbox-button.vue +0 -199
  17. package/src/components/base/ui/checkbox/checkbox-group.vue +0 -48
  18. package/src/components/base/ui/checkbox/checkbox.vue +0 -222
  19. package/src/components/base/ui/col/col.js +0 -71
  20. package/src/components/base/ui/collapse/collapse-item.vue +0 -180
  21. package/src/components/base/ui/collapse/collapse.vue +0 -73
  22. package/src/components/base/ui/color-picker/color.js +0 -317
  23. package/src/components/base/ui/color-picker/components/alpha-slider.vue +0 -132
  24. package/src/components/base/ui/color-picker/components/hue-slider.vue +0 -123
  25. package/src/components/base/ui/color-picker/components/picker-dropdown.vue +0 -119
  26. package/src/components/base/ui/color-picker/components/predefine.vue +0 -61
  27. package/src/components/base/ui/color-picker/components/sv-panel.vue +0 -100
  28. package/src/components/base/ui/color-picker/draggable.js +0 -36
  29. package/src/components/base/ui/color-picker/index.js +0 -2
  30. package/src/components/base/ui/color-picker/main.vue +0 -188
  31. package/src/components/base/ui/date-picker/basic/date-table.vue +0 -441
  32. package/src/components/base/ui/date-picker/basic/month-table.vue +0 -254
  33. package/src/components/base/ui/date-picker/basic/time-spinner.vue +0 -304
  34. package/src/components/base/ui/date-picker/basic/year-table.vue +0 -101
  35. package/src/components/base/ui/date-picker/panel/date-range.vue +0 -680
  36. package/src/components/base/ui/date-picker/panel/date.vue +0 -597
  37. package/src/components/base/ui/date-picker/panel/month-range.vue +0 -289
  38. package/src/components/base/ui/date-picker/panel/time-range.vue +0 -248
  39. package/src/components/base/ui/date-picker/panel/time-select.vue +0 -178
  40. package/src/components/base/ui/date-picker/panel/time.vue +0 -186
  41. package/src/components/base/ui/date-picker/picker/date-picker.js +0 -43
  42. package/src/components/base/ui/date-picker/picker/time-picker.js +0 -39
  43. package/src/components/base/ui/date-picker/picker/time-select.js +0 -21
  44. package/src/components/base/ui/date-picker/picker.vue +0 -942
  45. package/src/components/base/ui/dialog/Index.vue +0 -212
  46. package/src/components/base/ui/directive/repeat-click.js +0 -24
  47. package/src/components/base/ui/directive/ripple.js +0 -303
  48. package/src/components/base/ui/divider/Divider.vue +0 -37
  49. package/src/components/base/ui/drawer/Drawer.vue +0 -202
  50. package/src/components/base/ui/dropdown/dropdown-item.vue +0 -39
  51. package/src/components/base/ui/dropdown/dropdown-menu.vue +0 -63
  52. package/src/components/base/ui/dropdown/dropdown.vue +0 -308
  53. package/src/components/base/ui/form/Form.vue +0 -167
  54. package/src/components/base/ui/form/FormItem.vue +0 -334
  55. package/src/components/base/ui/form/LabelWrap.vue +0 -69
  56. package/src/components/base/ui/icon/icon.vue +0 -13
  57. package/src/components/base/ui/image/image-viewer.vue +0 -302
  58. package/src/components/base/ui/image/main.vue +0 -248
  59. package/src/components/base/ui/index.js +0 -189
  60. package/src/components/base/ui/input/Input.vue +0 -438
  61. package/src/components/base/ui/input/calcTextareaHeight.js +0 -104
  62. package/src/components/base/ui/input-number/input-number.vue +0 -285
  63. package/src/components/base/ui/locale/format.js +0 -32
  64. package/src/components/base/ui/locale/index.js +0 -48
  65. package/src/components/base/ui/locale/lang/zh-CN.js +0 -120
  66. package/src/components/base/ui/menu/menu-item-group.vue +0 -45
  67. package/src/components/base/ui/menu/menu-item.vue +0 -112
  68. package/src/components/base/ui/menu/menu-mixin.js +0 -44
  69. package/src/components/base/ui/menu/menu.vue +0 -312
  70. package/src/components/base/ui/menu/submenu.vue +0 -408
  71. package/src/components/base/ui/message/index.js +0 -2
  72. package/src/components/base/ui/message/main.js +0 -87
  73. package/src/components/base/ui/message/main.vue +0 -110
  74. package/src/components/base/ui/message-box/main.js +0 -216
  75. package/src/components/base/ui/message-box/main.vue +0 -323
  76. package/src/components/base/ui/mixin/emitter.js +0 -31
  77. package/src/components/base/ui/mixin/focus.js +0 -9
  78. package/src/components/base/ui/mixin/locale.js +0 -9
  79. package/src/components/base/ui/mixin/migrating.js +0 -33
  80. package/src/components/base/ui/pagination/pager.vue +0 -163
  81. package/src/components/base/ui/pagination/pagination.jsx +0 -391
  82. package/src/components/base/ui/popover/directive.js +0 -20
  83. package/src/components/base/ui/popover/index.js +0 -14
  84. package/src/components/base/ui/popover/main.vue +0 -236
  85. package/src/components/base/ui/progress/Progress.vue +0 -227
  86. package/src/components/base/ui/radio/radio-button.vue +0 -114
  87. package/src/components/base/ui/radio/radio-group.vue +0 -111
  88. package/src/components/base/ui/radio/radio.vue +0 -134
  89. package/src/components/base/ui/row/row.js +0 -47
  90. package/src/components/base/ui/scrollbar/bar.jsx +0 -91
  91. package/src/components/base/ui/scrollbar/index.jsx +0 -203
  92. package/src/components/base/ui/scrollbar/util.js +0 -32
  93. package/src/components/base/ui/select/Option.vue +0 -168
  94. package/src/components/base/ui/select/OptionGroup.vue +0 -60
  95. package/src/components/base/ui/select/Select.vue +0 -920
  96. package/src/components/base/ui/select/SelectDropdown.vue +0 -74
  97. package/src/components/base/ui/select/navigation-mixin.js +0 -54
  98. package/src/components/base/ui/skeleton/index.js +0 -8
  99. package/src/components/base/ui/skeleton/src/img-placeholder.vue +0 -16
  100. package/src/components/base/ui/skeleton/src/index.vue +0 -80
  101. package/src/components/base/ui/skeleton/src/item.vue +0 -22
  102. package/src/components/base/ui/skeleton-item/index.js +0 -8
  103. package/src/components/base/ui/slider/button.vue +0 -238
  104. package/src/components/base/ui/slider/main.vue +0 -427
  105. package/src/components/base/ui/slider/marker.js +0 -18
  106. package/src/components/base/ui/style/alert.scss +0 -147
  107. package/src/components/base/ui/style/animations.scss +0 -65
  108. package/src/components/base/ui/style/autocomplete.scss +0 -81
  109. package/src/components/base/ui/style/backtop.scss +0 -20
  110. package/src/components/base/ui/style/button-group.scss +0 -0
  111. package/src/components/base/ui/style/button.scss +0 -380
  112. package/src/components/base/ui/style/carousel-item.scss +0 -50
  113. package/src/components/base/ui/style/carousel.scss +0 -161
  114. package/src/components/base/ui/style/cascader-panel.scss +0 -120
  115. package/src/components/base/ui/style/cascader.scss +0 -185
  116. package/src/components/base/ui/style/checkbox-button.scss +0 -0
  117. package/src/components/base/ui/style/checkbox-group.scss +0 -0
  118. package/src/components/base/ui/style/checkbox.scss +0 -360
  119. package/src/components/base/ui/style/col.scss +0 -156
  120. package/src/components/base/ui/style/collapse-item.scss +0 -0
  121. package/src/components/base/ui/style/collapse.scss +0 -114
  122. package/src/components/base/ui/style/color-picker.scss +0 -387
  123. package/src/components/base/ui/style/config.scss +0 -4
  124. package/src/components/base/ui/style/date-picker/date-picker.scss +0 -97
  125. package/src/components/base/ui/style/date-picker/date-range-picker.scss +0 -101
  126. package/src/components/base/ui/style/date-picker/date-table.scss +0 -151
  127. package/src/components/base/ui/style/date-picker/month-table.scss +0 -82
  128. package/src/components/base/ui/style/date-picker/picker-panel.scss +0 -117
  129. package/src/components/base/ui/style/date-picker/picker.scss +0 -197
  130. package/src/components/base/ui/style/date-picker/time-picker.scss +0 -85
  131. package/src/components/base/ui/style/date-picker/time-range-picker.scss +0 -31
  132. package/src/components/base/ui/style/date-picker/time-spinner.scss +0 -110
  133. package/src/components/base/ui/style/date-picker/year-table.scss +0 -51
  134. package/src/components/base/ui/style/date-picker.scss +0 -12
  135. package/src/components/base/ui/style/dialog.scss +0 -123
  136. package/src/components/base/ui/style/divider.scss +0 -47
  137. package/src/components/base/ui/style/drawer.scss +0 -218
  138. package/src/components/base/ui/style/dropdown-item.scss +0 -0
  139. package/src/components/base/ui/style/dropdown-menu.scss +0 -0
  140. package/src/components/base/ui/style/dropdown.scss +0 -185
  141. package/src/components/base/ui/style/form-item.scss +0 -0
  142. package/src/components/base/ui/style/form.scss +0 -203
  143. package/src/components/base/ui/style/function.scss +0 -43
  144. package/src/components/base/ui/style/icon.scss +0 -1167
  145. package/src/components/base/ui/style/image.scss +0 -184
  146. package/src/components/base/ui/style/index.scss +0 -57
  147. package/src/components/base/ui/style/input-number.scss +0 -187
  148. package/src/components/base/ui/style/input.scss +0 -477
  149. package/src/components/base/ui/style/menu-item-group.scss +0 -0
  150. package/src/components/base/ui/style/menu-item.scss +0 -0
  151. package/src/components/base/ui/style/menu.scss +0 -294
  152. package/src/components/base/ui/style/message-box.scss +0 -231
  153. package/src/components/base/ui/style/message.scss +0 -120
  154. package/src/components/base/ui/style/mixins.scss +0 -196
  155. package/src/components/base/ui/style/option-group.scss +0 -42
  156. package/src/components/base/ui/style/option.scss +0 -36
  157. package/src/components/base/ui/style/pagination.scss +0 -295
  158. package/src/components/base/ui/style/popover.scss +0 -40
  159. package/src/components/base/ui/style/popper.scss +0 -102
  160. package/src/components/base/ui/style/popup.scss +0 -42
  161. package/src/components/base/ui/style/progress.scss +0 -141
  162. package/src/components/base/ui/style/radio-button.scss +0 -113
  163. package/src/components/base/ui/style/radio-group.scss +0 -9
  164. package/src/components/base/ui/style/radio.scss +0 -203
  165. package/src/components/base/ui/style/ripple.scss +0 -35
  166. package/src/components/base/ui/style/row.scss +0 -39
  167. package/src/components/base/ui/style/scrollbar.scss +0 -75
  168. package/src/components/base/ui/style/select-dropdown.scss +0 -59
  169. package/src/components/base/ui/style/select.scss +0 -154
  170. package/src/components/base/ui/style/skeleton-item.scss +0 -84
  171. package/src/components/base/ui/style/skeleton.scss +0 -40
  172. package/src/components/base/ui/style/slider.scss +0 -250
  173. package/src/components/base/ui/style/switch.scss +0 -116
  174. package/src/components/base/ui/style/tabs.scss +0 -602
  175. package/src/components/base/ui/style/tag.scss +0 -174
  176. package/src/components/base/ui/style/tooltip.scss +0 -146
  177. package/src/components/base/ui/style/transition.scss +0 -138
  178. package/src/components/base/ui/style/upload.scss +0 -603
  179. package/src/components/base/ui/style/utils.scss +0 -39
  180. package/src/components/base/ui/style/var.scss +0 -1011
  181. package/src/components/base/ui/switch/index.vue +0 -174
  182. package/src/components/base/ui/tabs/tab-bar.vue +0 -57
  183. package/src/components/base/ui/tabs/tab-nav.vue +0 -294
  184. package/src/components/base/ui/tabs/tab-pane.vue +0 -56
  185. package/src/components/base/ui/tabs/tabs.vue +0 -191
  186. package/src/components/base/ui/tag/Tag.vue +0 -60
  187. package/src/components/base/ui/tooltip/tooltip.jsx +0 -234
  188. package/src/components/base/ui/upload/Index.vue +0 -340
  189. package/src/components/base/ui/upload/Upload.vue +0 -216
  190. package/src/components/base/ui/upload/UploadDragger.vue +0 -70
  191. package/src/components/base/ui/upload/UploadList.vue +0 -100
  192. package/src/components/base/ui/upload/ajax.js +0 -85
  193. package/src/components/base/ui/util/aria-dialog.js +0 -90
  194. package/src/components/base/ui/util/aria-utils.js +0 -122
  195. package/src/components/base/ui/util/clickoutside.js +0 -76
  196. package/src/components/base/ui/util/date-util.js +0 -292
  197. package/src/components/base/ui/util/date.js +0 -355
  198. package/src/components/base/ui/util/debounce.js +0 -21
  199. package/src/components/base/ui/util/deepmerge.js +0 -100
  200. package/src/components/base/ui/util/dom.js +0 -215
  201. package/src/components/base/ui/util/index.js +0 -262
  202. package/src/components/base/ui/util/menu/aria-menubar.js +0 -14
  203. package/src/components/base/ui/util/menu/aria-menuitem.js +0 -49
  204. package/src/components/base/ui/util/menu/aria-submenu.js +0 -59
  205. package/src/components/base/ui/util/merge.js +0 -14
  206. package/src/components/base/ui/util/popper.js +0 -1235
  207. package/src/components/base/ui/util/popup/index.js +0 -218
  208. package/src/components/base/ui/util/popup/popup-manager.js +0 -194
  209. package/src/components/base/ui/util/resize-events.js +0 -32
  210. package/src/components/base/ui/util/scroll-into-view.js +0 -27
  211. package/src/components/base/ui/util/scrollbar-width.js +0 -29
  212. package/src/components/base/ui/util/shared.js +0 -7
  213. package/src/components/base/ui/util/throttle.js +0 -91
  214. package/src/components/base/ui/util/types.js +0 -24
  215. package/src/components/base/ui/util/vdom.js +0 -5
  216. package/src/components/base/ui/util/vue-popper.js +0 -188
  217. package/src/components/normal/AggsItemH.vue +0 -145
  218. package/src/index.js +0 -10
  219. package/src/static/base-icons.ttf +0 -0
  220. package/src/static/base-icons.woff +0 -0
  221. package/src/static/label_bg.png +0 -0
  222. package/src/static/term-label-bg.png +0 -0
  223. package/src/style/app-article.scss +0 -698
  224. package/src/style/app-comment.scss +0 -259
  225. package/src/style/app-recommend.scss +0 -48
  226. package/src/style/app-richtext.scss +0 -176
  227. package/src/style/index.scss +0 -523
@@ -1,189 +0,0 @@
1
- import Message from './message'
2
- import MessageBox from './message-box/main.js'
3
- import locale from './locale'
4
- import Button from "./button/Button";
5
- import ButtonGroup from "./button/ButtonGroup";
6
- import Alert from "./alert/Alert";
7
- import BaseBacktop from "./backtop/main";
8
- import Carousel from "./carousel/Carousel";
9
- import CarouselItem from "./carousel/CarouselItem";
10
- import autocompleteSuggestions from "./autocomplete/autocomplete-suggestions";
11
- import autocomplete from "./autocomplete/autocomplete";
12
- import cascader from "./cascader/cascader";
13
- import cascaderMenu from "./cascader-panel/cascader-menu";
14
- import cascaderPanel from "./cascader-panel/cascader-panel";
15
- import datePicker from "./date-picker/picker/date-picker";
16
- import timePicker from "./date-picker/picker/time-picker";
17
- import timeSelect from "./date-picker/picker/time-select";
18
- import checkbox from "./checkbox/checkbox";
19
- import checkboxButton from "./checkbox/checkbox-button";
20
- import checkboxGroup from "./checkbox/checkbox-group";
21
- import col from "./col/col";
22
- import collapse from "./collapse/collapse";
23
- import collapseItem from "./collapse/collapse-item";
24
- import BaseColorPicker from './color-picker/main'
25
- import BaseDialog from './dialog/Index'
26
- import Divider from "./divider/Divider";
27
- import Drawer from "./drawer/Drawer";
28
- import dropdown from "./dropdown/dropdown";
29
- import dropdownItem from "./dropdown/dropdown-item";
30
- import dropdownMenu from "./dropdown/dropdown-menu";
31
- import Form from "./form/Form";
32
- import FormItem from "./form/FormItem";
33
- import icon from "./icon/icon";
34
- import BaseImage from './image/main'
35
- import Input from "./input/Input";
36
- import menu from "./menu/menu";
37
- import menuItem from "./menu/menu-item";
38
- import menuItemGroup from "./menu/menu-item-group";
39
- import submenu from "./menu/submenu";
40
- import pagination from "./pagination/pagination";
41
- import BasePopover from "./popover/main"
42
- import Progress from "./progress/Progress";
43
- import radio from "./radio/radio";
44
- import radioButton from "./radio/radio-button";
45
- import radioGroup from "./radio/radio-group";
46
- import row from "./row/row";
47
- import BaseScrollbar from "./scrollbar/index"
48
- import Option from "./select/Option";
49
- import OptionGroup from "./select/OptionGroup";
50
- import Select from "./select/Select";
51
- import SelectDropdown from "./select/SelectDropdown";
52
- import BaseSwitch from './switch/index'
53
- import tabs from "./tabs/tabs";
54
- import tabPane from "./tabs/tab-pane";
55
- import Tag from "./tag/Tag";
56
- import tooltip from "./tooltip/tooltip";
57
- import BaseUpload from './upload/Index'
58
- const components = [
59
- Button,
60
- ButtonGroup,
61
- Alert,
62
- BaseBacktop,
63
- Carousel,
64
- CarouselItem,
65
- autocomplete,
66
- cascaderMenu,
67
- cascader,
68
- cascaderPanel,
69
- datePicker,
70
- timePicker,
71
- timeSelect,
72
- checkbox,
73
- checkboxButton,
74
- checkboxGroup,
75
- col,
76
- collapse,
77
- collapseItem,
78
- BaseColorPicker,
79
- BaseDialog,
80
- Divider,
81
- Drawer,
82
- dropdown,
83
- dropdownItem,
84
- dropdownMenu,
85
- Form,
86
- FormItem,
87
- icon,
88
- BaseImage,
89
- Input,
90
- menu,
91
- menuItem,
92
- menuItemGroup,
93
- submenu,
94
- pagination,
95
- BasePopover,
96
- Progress,
97
- radio,
98
- radioButton,
99
- radioGroup,
100
- row,
101
- BaseScrollbar,
102
- Option,
103
- OptionGroup,
104
- Select,
105
- SelectDropdown,
106
- BaseSwitch,
107
- tabs,
108
- tabPane,
109
- Tag,
110
- tooltip,
111
- BaseUpload
112
- ];
113
- const BaseUI = {
114
- install: function(Vue, opts = {}) {
115
- locale.use(opts.locale)
116
- locale.i18n(opts.i18n)
117
- components.forEach(component => {
118
- Vue.component(component.name, component);
119
- });
120
- Vue.prototype.$ELEMENT = {
121
- size: opts.size || '',
122
- zIndex: opts.zIndex || 2000
123
- }
124
-
125
- Vue.prototype.$msgbox = MessageBox;
126
- Vue.prototype.$alert = MessageBox.alert;
127
- Vue.prototype.$confirm = MessageBox.confirm;
128
- Vue.prototype.$prompt = MessageBox.prompt;
129
- Vue.prototype.$notify = Notification;
130
- Vue.prototype.$message = Message;
131
- }
132
- }
133
-
134
- export default BaseUI
135
- export {
136
- Button,
137
- ButtonGroup,
138
- Alert,
139
- BaseBacktop,
140
- Carousel,
141
- CarouselItem,
142
- autocomplete,
143
- cascaderMenu,
144
- cascader,
145
- cascaderPanel,
146
- datePicker,
147
- timePicker,
148
- timeSelect,
149
- checkbox,
150
- checkboxButton,
151
- checkboxGroup,
152
- col,
153
- collapse,
154
- collapseItem,
155
- BaseColorPicker,
156
- BaseDialog,
157
- Divider,
158
- Drawer,
159
- dropdown,
160
- dropdownItem,
161
- dropdownMenu,
162
- Form,
163
- FormItem,
164
- icon,
165
- BaseImage,
166
- Input,
167
- menu,
168
- menuItem,
169
- menuItemGroup,
170
- submenu,
171
- pagination,
172
- BasePopover,
173
- Progress,
174
- radio,
175
- radioButton,
176
- radioGroup,
177
- row,
178
- BaseScrollbar,
179
- Option,
180
- OptionGroup,
181
- Select,
182
- SelectDropdown,
183
- BaseSwitch,
184
- tabs,
185
- tabPane,
186
- Tag,
187
- tooltip,
188
- BaseUpload
189
- };
@@ -1,438 +0,0 @@
1
- <template>
2
- <div :class="[
3
- type === 'textarea' ? 'base-textarea' : 'base-input',
4
- inputSize ? 'base-input--' + inputSize : '',
5
- {
6
- 'is-rippled': ripple,
7
- 'is-focused': focused && enableFocusClass,
8
- 'is-disabled': inputDisabled,
9
- 'is-exceed': inputExceed,
10
- 'base-input-group': $slots.prepend || $slots.append,
11
- 'base-input-group--append': $slots.append,
12
- 'base-input-group--prepend': $slots.prepend,
13
- 'base-input--prefix': $slots.prefix || prefixIcon,
14
- 'base-input--suffix': $slots.suffix || suffixIcon || clearable || showPassword
15
- }
16
- ]"
17
- @mouseenter="hovering = true"
18
- @mouseleave="hovering = false"
19
- >
20
- <template v-if="type !== 'textarea'">
21
- <!-- 前置元素 -->
22
- <div class="base-input-group__prepend" v-if="$slots.prepend">
23
- <slot name="prepend"></slot>
24
- </div>
25
- <input
26
- :tabindex="tabindex"
27
- v-if="type !== 'textarea'"
28
- class="base-input__inner"
29
- v-bind="$attrs"
30
- :type="showPassword ? (passwordVisible ? 'text': 'password') : type"
31
- :disabled="inputDisabled"
32
- :readonly="readonly"
33
- :autocomplete="autoComplete || autocomplete"
34
- :placeholder="showLabel ? null : placeholder"
35
- ref="input"
36
- @compositionstart="handleCompositionStart"
37
- @compositionupdate="handleCompositionUpdate"
38
- @compositionend="handleCompositionEnd"
39
- @input="handleInput"
40
- @focus="handleFocus"
41
- @blur="handleBlur"
42
- @change="handleChange"
43
- @keyup.enter="handleKeyUpEnter"
44
- :aria-label="label"
45
- >
46
- <!-- 前置内容 -->
47
- <span class="base-input__prefix" v-if="$slots.prefix || prefixIcon">
48
- <slot name="prefix"></slot>
49
- <i class="base-input__icon"
50
- v-if="prefixIcon"
51
- :class="prefixIcon">
52
- </i>
53
- </span>
54
- <!-- 后置内容 -->
55
- <span
56
- class="base-input__suffix"
57
- v-if="getSuffixVisible()">
58
- <span class="base-input__suffix-inner">
59
- <template v-if="!showClear || !showPwdVisible || !isWordLimitVisible">
60
- <slot name="suffix"></slot>
61
- <i class="base-input__icon"
62
- v-if="suffixIcon"
63
- :class="suffixIcon">
64
- </i>
65
- </template>
66
- <i v-if="showClear"
67
- class="base-input__icon base-icon-close base-input__clear"
68
- @mousedown.prevent
69
- @click="clear"
70
- ></i>
71
- <i v-if="showPwdVisible"
72
- class="base-input__icon base-icon-view base-input__clear"
73
- @click="handlePasswordVisible"
74
- ></i>
75
- <span v-if="isWordLimitVisible" class="base-input__count">
76
- <span class="base-input__count-inner">
77
- {{ textLength }}/{{ upperLimit }}
78
- </span>
79
- </span>
80
- </span>
81
- <i class="base-input__icon"
82
- v-if="validateState"
83
- :class="['base-input__validateIcon', validateIcon]">
84
- </i>
85
- </span>
86
- <!-- 后置元素 -->
87
- <div class="base-input-group__append" v-if="$slots.append">
88
- <slot name="append"></slot>
89
- </div>
90
- </template>
91
- <textarea
92
- v-else
93
- :tabindex="tabindex"
94
- class="base-textarea__inner"
95
- @compositionstart="handleCompositionStart"
96
- @compositionupdate="handleCompositionUpdate"
97
- @compositionend="handleCompositionEnd"
98
- @input="handleInput"
99
- :placeholder="showLabel ? null : placeholder"
100
- ref="textarea"
101
- v-bind="$attrs"
102
- :disabled="inputDisabled"
103
- :readonly="readonly"
104
- :autocomplete="autoComplete || autocomplete"
105
- :style="textareaStyle"
106
- @focus="handleFocus"
107
- @blur="handleBlur"
108
- @change="handleChange"
109
- :aria-label="label"
110
- >
111
- </textarea>
112
- <div class="base-input__placeholder" :class="{ 'is-active' : focused || value }" v-if="showLabel && placeholder">{{ placeholder }}</div>
113
- <span v-if="isWordLimitVisible && type === 'textarea'" class="base-input__count">{{ textLength }}/{{ upperLimit }}</span>
114
- </div>
115
- </template>
116
- <script>
117
- import emitter from '../mixin/emitter'
118
- import Migrating from '../mixin/migrating'
119
- import calcTextareaHeight from './calcTextareaHeight'
120
- import merge from '../util/merge'
121
- import {isKorean} from '../util/shared'
122
-
123
- export default {
124
- name: 'BaseInput',
125
- componentName: 'BaseInput',
126
- mixins: [emitter, Migrating],
127
- inheritAttrs: false,
128
- inject: {
129
- baseForm: {
130
- default: ''
131
- },
132
- baseFormItem: {
133
- default: ''
134
- }
135
- },
136
- data() {
137
- return {
138
- textareaCalcStyle: {},
139
- hovering: false,
140
- focused: false,
141
- isComposing: false,
142
- passwordVisible: false
143
- };
144
- },
145
- props: {
146
- value: [String, Number],
147
- size: String,
148
- resize: String,
149
- form: String,
150
- disabled: Boolean,
151
- readonly: Boolean,
152
- type: {
153
- type: String,
154
- default: 'text'
155
- },
156
- autosize: {
157
- type: [Boolean, Object],
158
- default: false
159
- },
160
- autocomplete: {
161
- type: String,
162
- default: 'off'
163
- },
164
- /** @Deprecated in next major version */
165
- autoComplete: {
166
- type: String,
167
- validator(val) {
168
- process.env.NODE_ENV !== 'production' &&
169
- console.warn('[Element Warn][Input]\'auto-complete\' property will be deprecated in next major version. please use \'autocomplete\' instead.');
170
- return true;
171
- }
172
- },
173
- validateEvent: {
174
- type: Boolean,
175
- default: true
176
- },
177
- suffixIcon: String,
178
- prefixIcon: String,
179
- label: String,
180
- clearable: {
181
- type: Boolean,
182
- default: false
183
- },
184
- alwaysShowClear:{
185
- type: Boolean,
186
- default: false
187
- },
188
- showPassword: {
189
- type: Boolean,
190
- default: false
191
- },
192
- showWordLimit: {
193
- type: Boolean,
194
- default: false
195
- },
196
- showLabel: {
197
- type: Boolean,
198
- default: true
199
- },
200
- tabindex: String,
201
- placeholder: String,
202
- ripple: {
203
- type: Boolean,
204
- default: true
205
- },
206
- enableFocusClass: {
207
- type: Boolean,
208
- default: true
209
- }
210
- },
211
- computed: {
212
- _baseFormItemSize() {
213
- return (this.baseFormItem || {}).baseFormItemSize
214
- },
215
- validateState() {
216
- return this.baseFormItem ? this.baseFormItem.validateState : ''
217
- },
218
- needStatusIcon() {
219
- return this.baseForm ? this.baseForm.statusIcon : false
220
- },
221
- validateIcon() {
222
- return {
223
- validating: 'base-icon-loading',
224
- success: 'base-icon-circle-check',
225
- error: 'base-icon-circle-close'
226
- }[this.validateState]
227
- },
228
- textareaStyle() {
229
- return merge({}, this.textareaCalcStyle, { resize: this.resize })
230
- },
231
- inputSize() {
232
- return this.size || this._baseFormItemSize || (this.$ELEMENT || {}).size
233
- },
234
- inputDisabled() {
235
- return this.disabled || (this.baseForm || {}).disabled;
236
- },
237
- nativeInputValue() {
238
- return this.value === null || this.value === undefined ? '' : String(this.value)
239
- },
240
- showClear() {
241
- return this.clearable &&
242
- !this.inputDisabled &&
243
- !this.readonly &&
244
- this.nativeInputValue &&
245
- (this.focused || this.hovering || this.alwaysShowClear)
246
- },
247
- showPwdVisible() {
248
- return this.showPassword &&
249
- !this.inputDisabled &&
250
- !this.readonly &&
251
- (!!this.nativeInputValue || this.focused)
252
- },
253
- isWordLimitVisible() {
254
- return this.showWordLimit &&
255
- this.$attrs.maxlength &&
256
- (this.type === 'text' || this.type === 'textarea') &&
257
- !this.inputDisabled &&
258
- !this.readonly &&
259
- !this.showPassword
260
- },
261
- upperLimit() {
262
- return this.$attrs.maxlength
263
- },
264
- textLength() {
265
- if (typeof this.value === 'number') {
266
- return String(this.value).length
267
- }
268
-
269
- return (this.value || '').length
270
- },
271
- inputExceed() {
272
- // show exceed style if length of initial value greater then maxlength
273
- return this.isWordLimitVisible &&
274
- (this.textLength > this.upperLimit)
275
- }
276
- },
277
- watch: {
278
- value(val) {
279
- this.$nextTick(this.resizeTextarea)
280
- if (this.validateEvent) {
281
- this.dispatch('BaseFormItem', 'base.form.change', [val])
282
- }
283
- },
284
- nativeInputValue() {
285
- this.setNativeInputValue()
286
- },
287
- type() {
288
- this.$nextTick(() => {
289
- this.setNativeInputValue()
290
- this.resizeTextarea()
291
- this.updateIconOffset()
292
- })
293
- }
294
- },
295
- methods: {
296
- focus() {
297
- this.getInput().focus()
298
- },
299
- blur() {
300
- this.getInput().blur()
301
- },
302
- getMigratingConfig() {
303
- return {
304
- props: {
305
- 'icon': 'icon is removed, use suffix-icon / prefix-icon instead.',
306
- 'on-icon-click': 'on-icon-click is removed.'
307
- },
308
- events: {
309
- 'click': 'click is removed.'
310
- }
311
- }
312
- },
313
- handleBlur(event) {
314
- this.focused = false
315
- this.$emit('blur', event)
316
- if (this.validateEvent) {
317
- this.dispatch('BaseFormItem', 'base.form.blur', [this.value])
318
- }
319
- },
320
- select() {
321
- this.getInput().select()
322
- },
323
- resizeTextarea() {
324
- if (this.$isServer) return
325
- const { autosize, type } = this
326
- if (type !== 'textarea') return
327
- if (!autosize) {
328
- this.textareaCalcStyle = {
329
- minHeight: calcTextareaHeight(this.$refs.textarea).minHeight
330
- }
331
- return
332
- }
333
- const minRows = autosize.minRows
334
- const maxRows = autosize.maxRows
335
-
336
- this.textareaCalcStyle = calcTextareaHeight(this.$refs.textarea, minRows, maxRows)
337
- },
338
- setNativeInputValue() {
339
- const input = this.getInput()
340
- if (!input) return
341
- if (input.value === this.nativeInputValue) return
342
- input.value = this.nativeInputValue
343
- },
344
- handleFocus(event) {
345
- this.focused = true
346
- this.$emit('focus', event)
347
- if (this.validateEvent) {
348
- this.dispatch('BaseFormItem', 'clearValidate')
349
- }
350
- },
351
- handleCompositionStart() {
352
- this.isComposing = true
353
- },
354
- handleCompositionUpdate(event) {
355
- const text = event.target.value
356
- const lastCharacter = text[text.length - 1] || ''
357
- this.isComposing = !isKorean(lastCharacter)
358
- },
359
- handleCompositionEnd(event) {
360
- if (this.isComposing) {
361
- this.isComposing = false
362
- this.handleInput(event)
363
- }
364
- },
365
- handleInput(event) {
366
- if (this.isComposing) return
367
- if (event.target.value === this.nativeInputValue) return
368
- this.$emit('input', event.target.value)
369
- this.$nextTick(this.setNativeInputValue)
370
- },
371
- handleChange(event) {
372
- this.$emit('change', event.target.value)
373
- },
374
- handleKeyUpEnter() {
375
- this.$emit('key-up-enter')
376
- },
377
- calcIconOffset(place) {
378
- let elList = [].slice.call(this.$el.querySelectorAll(`.base-input__${place}`) || [])
379
- if (!elList.length) return
380
- let el = null
381
- for (let i = 0; i < elList.length; i++) {
382
- if (elList[i].parentNode === this.$el) {
383
- el = elList[i];
384
- break
385
- }
386
- }
387
- if (!el) return
388
- const pendantMap = {
389
- suffix: 'append',
390
- prefix: 'prepend'
391
- }
392
-
393
- const pendant = pendantMap[place]
394
- if (this.$slots[pendant]) {
395
- el.style.transform = `translateX(${place === 'suffix' ? '-' : ''}${this.$el.querySelector(`.base-input-group__${pendant}`).offsetWidth}px)`
396
- } else {
397
- el.removeAttribute('style')
398
- }
399
- },
400
- updateIconOffset() {
401
- this.calcIconOffset('prefix')
402
- this.calcIconOffset('suffix')
403
- },
404
- clear() {
405
- this.$emit('input', '')
406
- this.$emit('change', '')
407
- this.$emit('clear')
408
- },
409
- handlePasswordVisible() {
410
- this.passwordVisible = !this.passwordVisible
411
- this.focus()
412
- },
413
- getInput() {
414
- return this.$refs.input || this.$refs.textarea
415
- },
416
- getSuffixVisible() {
417
- return this.$slots.suffix ||
418
- this.suffixIcon ||
419
- this.showClear ||
420
- this.showPassword ||
421
- this.isWordLimitVisible ||
422
- (this.validateState && this.needStatusIcon)
423
- }
424
- },
425
- created() {
426
- this.$on('inputSelect', this.select)
427
- this.$on('clearError', this.focus)
428
- },
429
- mounted() {
430
- this.setNativeInputValue()
431
- this.resizeTextarea()
432
- this.updateIconOffset()
433
- },
434
- updated() {
435
- this.$nextTick(this.updateIconOffset)
436
- }
437
- }
438
- </script>