vdesign-ui 0.1.18 → 0.1.19

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 (192) hide show
  1. package/dist/css/chunk-1952c402.04c2303e.css +1 -0
  2. package/dist/css/chunk-6a5c6104.38021b56.css +1 -0
  3. package/dist/css/chunk-vendors.4ecfba63.css +1 -0
  4. package/dist/css/sites.395ce21f.css +1 -0
  5. package/dist/img/404-dark.775df5bb.png +0 -0
  6. package/dist/img/bg_mobile.5909f667.png +0 -0
  7. package/dist/img/icon.a67073c3.svg +7 -0
  8. package/dist/img/iphoneX.38c8778e.png +0 -0
  9. package/dist/img/logo-white.fad4f907.png +0 -0
  10. package/dist/img/logo.1eda11d6.png +0 -0
  11. package/dist/img/network-dark.11a147bb.png +0 -0
  12. package/dist/img/nodata-dark.b0ea0e39.png +0 -0
  13. package/dist/img/qrcode2.0a9d9044.png +0 -0
  14. package/dist/index.html +1 -0
  15. package/dist/js/chunk-1952c402.c58ecfb5.js +1 -0
  16. package/dist/js/chunk-2d2183be.2a64419d.js +1 -0
  17. package/dist/js/chunk-6a5c6104.c8fa5635.js +1 -0
  18. package/dist/js/chunk-vendors.490b7673.js +37 -0
  19. package/dist/js/sites.5a217467.js +1 -0
  20. package/package.json +1 -1
  21. package/dist/components/actionbar/actionbar-cell/index.vue +0 -34
  22. package/dist/components/actionbar/index.js +0 -8
  23. package/dist/components/actionbar/index.vue +0 -39
  24. package/dist/components/actionbar/style.less +0 -48
  25. package/dist/components/actions-cell/actions/index.js +0 -7
  26. package/dist/components/actions-cell/actions/index.vue +0 -76
  27. package/dist/components/actions-cell/actions/style.less +0 -112
  28. package/dist/components/actions-cell/index.js +0 -7
  29. package/dist/components/actions-cell/index.vue +0 -94
  30. package/dist/components/actions-cell/style.less +0 -39
  31. package/dist/components/activityviews/index.js +0 -8
  32. package/dist/components/activityviews/index.vue +0 -139
  33. package/dist/components/activityviews/style.less +0 -150
  34. package/dist/components/badge/index.js +0 -8
  35. package/dist/components/badge/index.vue +0 -49
  36. package/dist/components/badge/style.less +0 -66
  37. package/dist/components/button/index.js +0 -8
  38. package/dist/components/button/index.vue +0 -89
  39. package/dist/components/button/style.less +0 -563
  40. package/dist/components/calendar/end.png +0 -0
  41. package/dist/components/calendar/index-element.vue +0 -84
  42. package/dist/components/calendar/index.js +0 -8
  43. package/dist/components/calendar/index.vue +0 -52
  44. package/dist/components/calendar/start.png +0 -0
  45. package/dist/components/calendar/style.less +0 -167
  46. package/dist/components/checkbox/assist.js +0 -34
  47. package/dist/components/checkbox/checkbox-group/index.js +0 -8
  48. package/dist/components/checkbox/checkbox-group/index.vue +0 -69
  49. package/dist/components/checkbox/index.js +0 -8
  50. package/dist/components/checkbox/index.vue +0 -184
  51. package/dist/components/checkbox/style.less +0 -291
  52. package/dist/components/common/state/index.vue +0 -80
  53. package/dist/components/data-list/index.js +0 -10
  54. package/dist/components/data-list/index.vue +0 -19
  55. package/dist/components/data-list/style.less +0 -624
  56. package/dist/components/datetime-picker/index.js +0 -8
  57. package/dist/components/datetime-picker/index.vue +0 -37
  58. package/dist/components/datetime-picker/style.less +0 -24
  59. package/dist/components/dialog/index.js +0 -8
  60. package/dist/components/dialog/index.vue +0 -111
  61. package/dist/components/dialog/style.less +0 -132
  62. package/dist/components/divider/index.js +0 -8
  63. package/dist/components/divider/index.vue +0 -54
  64. package/dist/components/divider/style.less +0 -92
  65. package/dist/components/dropdown/index.js +0 -8
  66. package/dist/components/dropdown/index.vue +0 -210
  67. package/dist/components/dropdown/style.less +0 -418
  68. package/dist/components/empty/empty-404.png +0 -0
  69. package/dist/components/empty/empty-img.png +0 -0
  70. package/dist/components/empty/empty-network.png +0 -0
  71. package/dist/components/empty/index.js +0 -8
  72. package/dist/components/empty/index.vue +0 -65
  73. package/dist/components/empty/style.less +0 -53
  74. package/dist/components/footer/index.js +0 -7
  75. package/dist/components/footer/index.vue +0 -29
  76. package/dist/components/footer/style.less +0 -22
  77. package/dist/components/footnav/footnav-item/index.js +0 -7
  78. package/dist/components/footnav/footnav-item/index.vue +0 -75
  79. package/dist/components/footnav/footnav-item/style.less +0 -39
  80. package/dist/components/footnav/index.js +0 -7
  81. package/dist/components/footnav/index.vue +0 -82
  82. package/dist/components/footnav/style.less +0 -22
  83. package/dist/components/form/index.js +0 -7
  84. package/dist/components/form/index.vue +0 -12
  85. package/dist/components/headnav/index.js +0 -7
  86. package/dist/components/headnav/index.vue +0 -139
  87. package/dist/components/headnav/style.less +0 -232
  88. package/dist/components/icon/font/iconfont.css +0 -1041
  89. package/dist/components/icon/font/iconfont.js +0 -2
  90. package/dist/components/icon/index.js +0 -9
  91. package/dist/components/icon/index.vue +0 -46
  92. package/dist/components/icon/style.less +0 -44
  93. package/dist/components/input/calcTextareaHeight.js +0 -266
  94. package/dist/components/input/index.js +0 -8
  95. package/dist/components/input/index.vue +0 -343
  96. package/dist/components/input/password/index.js +0 -8
  97. package/dist/components/input/password/index.vue +0 -60
  98. package/dist/components/input/search/index.js +0 -8
  99. package/dist/components/input/search/index.vue +0 -66
  100. package/dist/components/input/stepper/index.js +0 -8
  101. package/dist/components/input/stepper/index.vue +0 -136
  102. package/dist/components/input/style.less +0 -497
  103. package/dist/components/list/index.js +0 -8
  104. package/dist/components/list/index.vue +0 -159
  105. package/dist/components/list/style.less +0 -292
  106. package/dist/components/loading/index.js +0 -7
  107. package/dist/components/loading/index.vue +0 -53
  108. package/dist/components/loading/loading.png +0 -0
  109. package/dist/components/loading/refresh.png +0 -0
  110. package/dist/components/loading/style.less +0 -48
  111. package/dist/components/mixins/clickoutside.js +0 -81
  112. package/dist/components/mixins/dom.js +0 -41
  113. package/dist/components/mixins/languageMixin.js +0 -38
  114. package/dist/components/mixins/outlineConfigPlugin.js +0 -40
  115. package/dist/components/mixins/router-link.js +0 -23
  116. package/dist/components/mixins/themeMixin.js +0 -29
  117. package/dist/components/noticebar/index.js +0 -8
  118. package/dist/components/noticebar/index.vue +0 -247
  119. package/dist/components/noticebar/style.less +0 -332
  120. package/dist/components/overlay/index.js +0 -8
  121. package/dist/components/overlay/index.vue +0 -161
  122. package/dist/components/overlay/style.less +0 -23
  123. package/dist/components/pagebreak/index.js +0 -7
  124. package/dist/components/pagebreak/index.vue +0 -60
  125. package/dist/components/pagebreak/style.less +0 -43
  126. package/dist/components/popover/index.js +0 -8
  127. package/dist/components/popover/index.vue +0 -99
  128. package/dist/components/popover/style.less +0 -346
  129. package/dist/components/popover/vue-popover.vue +0 -314
  130. package/dist/components/radio/assist.js +0 -34
  131. package/dist/components/radio/index.js +0 -8
  132. package/dist/components/radio/index.vue +0 -159
  133. package/dist/components/radio/radio-group/index.vue +0 -70
  134. package/dist/components/radio/style.less +0 -297
  135. package/dist/components/result/completed-dark.png +0 -0
  136. package/dist/components/result/completed.png +0 -0
  137. package/dist/components/result/error-dark.png +0 -0
  138. package/dist/components/result/error.png +0 -0
  139. package/dist/components/result/index.js +0 -8
  140. package/dist/components/result/index.vue +0 -66
  141. package/dist/components/result/style.less +0 -42
  142. package/dist/components/result/wait-dark.png +0 -0
  143. package/dist/components/result/wait.png +0 -0
  144. package/dist/components/selector/index.js +0 -8
  145. package/dist/components/selector/index.vue +0 -124
  146. package/dist/components/selector/style.less +0 -474
  147. package/dist/components/skeleton/index.js +0 -7
  148. package/dist/components/skeleton/index.vue +0 -142
  149. package/dist/components/skeleton/style.less +0 -192
  150. package/dist/components/slider/draggable.js +0 -49
  151. package/dist/components/slider/index.js +0 -7
  152. package/dist/components/slider/index.vue +0 -173
  153. package/dist/components/slider/style.less +0 -96
  154. package/dist/components/slider/utils.js +0 -60
  155. package/dist/components/step/index.js +0 -7
  156. package/dist/components/step/index.vue +0 -48
  157. package/dist/components/step/style.less +0 -59
  158. package/dist/components/step-item/index.js +0 -7
  159. package/dist/components/step-item/index.vue +0 -117
  160. package/dist/components/step-item/style.less +0 -361
  161. package/dist/components/style/index.vue +0 -42
  162. package/dist/components/switch/index.js +0 -8
  163. package/dist/components/switch/index.vue +0 -72
  164. package/dist/components/switch/style.less +0 -56
  165. package/dist/components/tabs/index.js +0 -8
  166. package/dist/components/tabs/index.vue +0 -145
  167. package/dist/components/tabs/style.less +0 -383
  168. package/dist/components/tabs/tab/index.vue +0 -56
  169. package/dist/components/tag/index.js +0 -7
  170. package/dist/components/tag/index.vue +0 -50
  171. package/dist/components/tag/style.less +0 -211
  172. package/dist/components/title/index.js +0 -8
  173. package/dist/components/title/index.vue +0 -92
  174. package/dist/components/title/style.less +0 -188
  175. package/dist/components/toast/index.js +0 -80
  176. package/dist/components/toast/index.vue +0 -44
  177. package/dist/components/toast/style.less +0 -55
  178. package/dist/components/transition/index.js +0 -8
  179. package/dist/components/transition/index.vue +0 -13
  180. package/dist/components/transition/style.less +0 -208
  181. package/dist/components/upload/index.js +0 -7
  182. package/dist/components/upload/index.vue +0 -224
  183. package/dist/components/upload/style.less +0 -156
  184. package/dist/demo.html +0 -10
  185. package/dist/locale/ar.js +0 -98
  186. package/dist/locale/en.js +0 -98
  187. package/dist/locale/zh.js +0 -98
  188. package/dist/token.css +0 -2981
  189. package/dist/vdesign-ui.common.js +0 -27025
  190. package/dist/vdesign-ui.css +0 -1
  191. package/dist/vdesign-ui.umd.js +0 -27035
  192. package/dist/vdesign-ui.umd.min.js +0 -32
@@ -1,343 +0,0 @@
1
- <template>
2
- <div :class="wrapClasses" class="vd-input">
3
- <template v-if="inputTextArea || type !== 'textarea'">
4
- <span v-if="prefix || $slots.prefix" class="vd-input-form__prefix" :class="borderRightClasses">
5
- <slot name="prefix">{{ prefix }}</slot>
6
- </span>
7
- <input
8
- v-if="!inputTextArea"
9
- ref="input"
10
- v-bind="$attrs"
11
- :type="passwordIcon ? (passwordVisible ? 'text' : 'password') : type"
12
- :class="inputClasses"
13
- :disabled="disabled"
14
- :placeholder="placeholder"
15
- :value="currentValue"
16
- @input="handleInput"
17
- @focus="handleFocus"
18
- @blur="handleBlur"
19
- />
20
-
21
- <textarea
22
- v-else
23
- ref="textarea"
24
- v-bind="$attrs"
25
- :id="elementId"
26
- :wrap="wrap"
27
- :type="type"
28
- :rows="rows"
29
- :class="inputClasses"
30
- :disabled="disabled"
31
- :placeholder="placeholder"
32
- :value="currentValue"
33
- @focus="handleFocus"
34
- @blur="handleBlur"
35
- @input="handleInput"
36
- :style="textareaStyles"
37
- >
38
- </textarea>
39
- <div
40
- v-if="suffix || $slots.suffix || append || $slots.append || isWordLimitVisible"
41
- class="vd-input-form__right"
42
- >
43
- <span v-if="suffix || $slots.suffix" class="vd-input-form__suffix">
44
- <slot name="suffix">
45
- <vd-icon name="icon_btn_clean" @click="handleClear"></vd-icon>
46
- </slot>
47
- </span>
48
- <span v-if="append || $slots.append" class="vd-input-form__append">
49
- <slot name="append">{{ append }}</slot>
50
- </span>
51
- <div
52
- v-if="isWordLimitVisible"
53
- :class="[
54
- 'vd-input__word-limit',
55
- { 'vd-input__word-limit--error': isOverLimit },
56
- ]"
57
- >
58
- <span>{{ textLength }}</span
59
- >/<span>{{ upperLimit }}</span>
60
- </div>
61
- </div>
62
- <span
63
- v-if="passwordClose || passwordIcon"
64
- class="vd-input-form__password"
65
- >
66
- <span v-if="passwordClose" class="vd-input-form__password--close">
67
- <vd-icon name="icon_btn_close" @click="handleClear"></vd-icon>
68
- </span>
69
- <span v-if="passwordIcon" class="vd-input-form__password--password">
70
- <vd-icon
71
- :name="passwordVisible ? 'icon_btn_eye' : 'icon_btn_eye_close'"
72
- @click="handlePasswordVisible"
73
- ></vd-icon>
74
- </span>
75
- </span>
76
- </template>
77
- <template v-else>
78
- <textarea
79
- ref="textarea"
80
- :type="type"
81
- v-bind="$attrs"
82
- :wrap="wrap"
83
- :class="inputClasses"
84
- :disabled="disabled"
85
- :placeholder="placeholder"
86
- :value="currentValue"
87
- :rows="rows"
88
- :name="name"
89
- @input="handleInput"
90
- :style="textareaStyles"
91
- >
92
- </textarea>
93
- <div
94
- v-if="isWordLimitVisible"
95
- :class="[
96
- 'vd-input__word-limit',
97
- { 'vd-input__word-limit--error': isOverLimit },
98
- ]"
99
- >
100
- <span>{{ textLength }}</span
101
- >/<span>{{ upperLimit }}</span>
102
- </div>
103
- </template>
104
- </div>
105
- </template>
106
-
107
- <script>
108
- import calcTextareaHeight from "./calcTextareaHeight";
109
- const prefixCls = "vd-input";
110
-
111
- export default {
112
- name: "vd-input",
113
- props: {
114
- type: {
115
- type: String,
116
- default: "text",
117
- },
118
- prefix: {
119
- type: Boolean,
120
- },
121
- borderRight: {
122
- type: Boolean,
123
- default: true
124
- },
125
- suffix: {
126
- type: Boolean,
127
- },
128
- // 设计如此,单独的文字
129
- append: {
130
- type: Boolean,
131
- },
132
- placeholder: {
133
- type: String,
134
- },
135
- error: {
136
- type: Boolean,
137
- },
138
- bigSize: {
139
- type: Boolean,
140
- },
141
- passwordIcon: {
142
- type: Boolean,
143
- },
144
- passwordClose: {
145
- type: Boolean,
146
- },
147
- passwordType: {
148
- type: String,
149
- default: "icon_btn_eye_close",
150
- },
151
- form: {
152
- type: String,
153
- },
154
- disabled: {
155
- type: Boolean,
156
- },
157
- value: {
158
- type: [String, Number],
159
- default: "",
160
- },
161
- rows: {
162
- type: Number,
163
- default: 2,
164
- },
165
- name: {
166
- type: String,
167
- },
168
- // 设计如此多行textarea,跟input属性一样
169
- inputTextArea: {
170
- type: Boolean,
171
- },
172
- warning: {
173
- type: Boolean,
174
- },
175
- hairline: {
176
- type: Boolean,
177
- default: true,
178
- },
179
- autosize: {
180
- type: [Boolean, Object],
181
- default: false,
182
- },
183
- elementId: {
184
- type: String,
185
- },
186
- wrap: {
187
- type: String,
188
- default: "soft",
189
- },
190
- // 新增0118
191
- showWordLimit: {
192
- type: Boolean,
193
- default: false,
194
- },
195
- },
196
- data() {
197
- return {
198
- focusClass: false,
199
- currentValue: this.value,
200
- isOnComposition: false,
201
- textareaStyles: {},
202
- passwordVisible: false,
203
- };
204
- },
205
- computed: {
206
- wrapClasses() {
207
- return [
208
- {
209
- [`${prefixCls}-${this.form}`]: this.form,
210
- [`${prefixCls}--disabled`]: this.disabled,
211
- [`${prefixCls}-${this.type}`]: this.type,
212
- [`${prefixCls}-${this.type}--warning`]: this.warning,
213
- [`${prefixCls}--bigsize`]: this.bigSize,
214
- [`${prefixCls}--error`]: this.error,
215
- [`${prefixCls}--active`]: this.focusClass,
216
- [`${prefixCls}-inputarea`]: this.inputTextArea,
217
- "vd-hairline--bottom": this.hairline,
218
- "vd-textarea-auto": this.inputTextArea,
219
- },
220
- ];
221
- },
222
- borderRightClasses(){
223
- return [
224
- "vd-hairline--right",
225
- {
226
- [`${prefixCls}--border`]: this.borderRight,
227
- }
228
- ]
229
- },
230
- inputClasses() {
231
- return [
232
- `${prefixCls}__control`,
233
- {
234
- [`${prefixCls}-${this.type}__control`]: this.type,
235
- },
236
- ];
237
- },
238
- textLength() {
239
- if (typeof this.value === "number") {
240
- return String(this.value).length;
241
- }
242
- return (this.value || "").length;
243
- },
244
- upperLimit() {
245
- return this.$attrs.maxlength;
246
- },
247
- isWordLimitVisible() {
248
- return (
249
- this.showWordLimit &&
250
- this.$attrs.maxlength &&
251
- (this.type === "text" || this.type === "textarea")
252
- );
253
- },
254
- isOverLimit() {
255
- return this.textLength >= this.upperLimit;
256
- },
257
- },
258
- methods: {
259
- handleFocus(event) {
260
- if (this.form) {
261
- this.focusClass = true;
262
- }
263
- this.$emit("focus", event);
264
- },
265
- handleBlur(event) {
266
- if (this.form) {
267
- this.focusClass = false;
268
- }
269
- this.$emit("blur", event);
270
- },
271
- focus() {
272
- if (this.type === "textarea") {
273
- this.$refs.textarea.focus();
274
- } else {
275
- this.$refs.input.focus();
276
- }
277
- },
278
- blur() {
279
- if (this.type === "textarea") {
280
- this.$refs.textarea.blur();
281
- } else {
282
- this.$refs.input.blur();
283
- }
284
- },
285
-
286
- handleInput(event) {
287
- if (this.isOnComposition) return;
288
- let value = event.target.value;
289
- if (this.number && value !== "")
290
- value = Number.isNaN(Number(value)) ? value : Number(value);
291
- this.$emit("input", value);
292
- this.setCurrentValue(value);
293
- this.$emit("change", event);
294
- },
295
-
296
- setCurrentValue(value) {
297
- if (value === this.currentValue) return;
298
- this.$nextTick(() => {
299
- this.resizeTextarea();
300
- });
301
- this.currentValue = value;
302
- },
303
- resizeTextarea() {
304
- const autosize = this.autosize;
305
- if (!autosize || this.type !== "textarea") {
306
- return false;
307
- }
308
- const minRows = autosize.minRows;
309
- const maxRows = autosize.maxRows;
310
- this.textareaStyles = calcTextareaHeight(
311
- this.$refs.textarea,
312
- minRows,
313
- maxRows
314
- );
315
- },
316
- handleClear() {
317
- const e = { target: { value: "" } };
318
- this.$emit("input", "");
319
- this.setCurrentValue("");
320
- this.$emit("change", e);
321
- this.$emit("clear");
322
- },
323
- handlePasswordVisible() {
324
- this.passwordVisible = !this.passwordVisible;
325
- this.$nextTick(() => {
326
- this.focus();
327
- });
328
- },
329
- },
330
- watch: {
331
- value(val) {
332
- this.setCurrentValue(val);
333
- },
334
- },
335
- mounted() {
336
- this.resizeTextarea();
337
- },
338
- };
339
- </script>
340
-
341
- <style lang="less">
342
- @import "./style.less";
343
- </style>
@@ -1,8 +0,0 @@
1
- import Password from './index.vue';
2
- import './style.less';
3
-
4
- Password.install = function (Vue) {
5
- Vue.component(Password.name, Password);
6
- };
7
-
8
- export default Password;
@@ -1,60 +0,0 @@
1
- <template>
2
- <div class="vd-password">
3
- <input type="tel" :maxlength="length" v-model="innerValue" @input="handleInput" @focus="handleFocus"
4
- @blur="handleBlur" class="vd-password__input" />
5
- <div class="vd-password__security">
6
- <div class="vd-password__item" v-for="n in length" :key="n" :class="{ 'is-filled': n > innerValue.length }">
7
- <template v-if="mask">
8
- <i v-if="n <= innerValue.length" class="mask-icon"></i>
9
- </template>
10
- <template v-else>
11
- {{ innerValue[n - 1] }}
12
- </template>
13
- </div>
14
- </div>
15
- </div>
16
- </template>
17
-
18
- <script>
19
- export default {
20
- name: "vd-password",
21
- props: {
22
- value: {
23
- type: String,
24
- },
25
- length: {
26
- type: Number,
27
- default: 6,
28
- },
29
- mask: {
30
- type: Boolean,
31
- default: true,
32
- },
33
- },
34
- data() {
35
- return {
36
- innerValue: this.value,
37
- };
38
- },
39
- watch: {
40
- value(val) {
41
- this.innerValue = val;
42
- },
43
- },
44
- methods: {
45
- handleInput(e) {
46
- this.innerValue = e.target.value.slice(0, this.length);
47
- this.$emit("input", this.innerValue);
48
- if (this.innerValue.length === this.length) {
49
- this.$emit("complete", this.innerValue);
50
- }
51
- },
52
- handleFocus() {
53
- this.$emit("focus");
54
- },
55
- handleBlur() {
56
- this.$emit("blur");
57
- },
58
- },
59
- };
60
- </script>
@@ -1,8 +0,0 @@
1
- import Search from './index.vue';
2
- import './style.less';
3
-
4
- Search.install = function (Vue) {
5
- Vue.component(Search.name, Search);
6
- };
7
-
8
- export default Search;
@@ -1,66 +0,0 @@
1
- <template>
2
- <div class="vd-search">
3
- <div class="vd-search-content">
4
- <span v-if="prefix || $slots.prefix" class="vd-search__prefix">
5
- <slot name="prefix">
6
- <vd-icon name="icon_nav_search"></vd-icon>
7
- </slot>
8
- </span>
9
- <!-- <input :type="type" :class="inputClasses" :placeholder="placeholder"> -->
10
- <vd-input
11
- v-bind="$attrs"
12
- v-on="listeners"
13
- form="search"
14
- :hairline = "false"
15
- ></vd-input>
16
- <span v-if="suffix || $slots.suffix" class="vd-search__suffix">
17
- <slot name="suffix">
18
- <vd-icon v-if="suffix" name="icon_btn_clean"></vd-icon>
19
- </slot>
20
- </span>
21
-
22
- </div>
23
- <span class="vd-search__action" v-if="$slots.default">
24
- <slot></slot>
25
- </span>
26
- </div>
27
- </template>
28
-
29
- <script>
30
- const prefixCls = 'vd-search';
31
- export default {
32
- name: 'vd-search',
33
- inheritAttrs: false,
34
- props: {
35
- type: {
36
- type: String,
37
- default: 'text'
38
- },
39
- prefix: {
40
- type: Boolean,
41
- },
42
- suffix: {
43
- type: Boolean,
44
- },
45
- },
46
- data() {
47
- return {
48
- }
49
- },
50
- computed: {
51
- inputClasses() {
52
- return [
53
- `${prefixCls}__control`
54
- ]
55
- },
56
- listeners() {
57
- return {
58
- ...this.$listeners,
59
- };
60
- }
61
- },
62
- methods: {
63
-
64
- }
65
- }
66
- </script>
@@ -1,8 +0,0 @@
1
- import Stepper from './index.vue';
2
- import './style.less';
3
-
4
- Stepper.install = function (Vue) {
5
- Vue.component(Stepper.name, Stepper);
6
- };
7
-
8
- export default Stepper;
@@ -1,136 +0,0 @@
1
- <template>
2
- <div class="vd-stepper" :class="wrapClasses">
3
- <vd-button v-if="!position" :class="minusButtonClass" icon="icon_btn_reduce" size="small"
4
- @click="onChange('minus')"></vd-button>
5
- <input type="number" :class="inputClasses" :disabled="disabled" :value="currentValue" :placeholder="placeholder" @input="onInput"
6
- @blur="onBlur">
7
- <vd-button v-if="position === 'right'" class="vd-stepper__minus" icon="icon_btn_reduce" size="small"
8
- @click="onChange('minus')"></vd-button>
9
- <vd-button :class="plusButtonClass" icon="icon_btn_add" size="small"
10
- @click="onChange('plus')"></vd-button>
11
- </div>
12
- </template>
13
-
14
- <script>
15
- import languageMixin from '@p/components/mixins/languageMixin.js';
16
-
17
- const prefixCls = 'vd-stepper';
18
- export default {
19
- mixins: [languageMixin],
20
- name: 'vd-stepper',
21
- props: {
22
- value: null,
23
- integer: Boolean,
24
- position: String,
25
- inputCenter: Boolean,
26
- disabled: Boolean,
27
- theme: String,
28
- min: {
29
- type: [String, Number],
30
- default: 1
31
- },
32
- max: {
33
- type: [String, Number],
34
- default: Infinity
35
- },
36
- step: {
37
- type: [String, Number],
38
- default: 1
39
- },
40
- placeholder:String
41
- },
42
- data() {
43
- const value = this.range(this.isDef(this.value) ? this.value : this.defaultValue);
44
- if (value !== +this.value) {
45
- this.$emit('input', value);
46
- }
47
- return {
48
- currentValue: value,
49
- }
50
- },
51
- computed: {
52
- inputClasses() {
53
- return [
54
- `${prefixCls}-input`,
55
- ]
56
- },
57
- wrapClasses() {
58
- return [
59
- {
60
- [`${prefixCls}--disabled`]: this.disabled,
61
- [`${prefixCls}--${this.theme}`]: this.theme,
62
- [`${prefixCls}--center`]: this.inputCenter
63
-
64
- }
65
- ]
66
- },
67
- minusButtonClass() {
68
- const hairlineClass = this.language === 'ar' ? 'vd-hairline--left' : 'vd-hairline--right';
69
- return `vd-stepper__minus ${hairlineClass}`;
70
- },
71
- plusButtonClass() {
72
- const hairlineClass = this.language === 'ar' ? 'vd-hairline--right' : 'vd-hairline--left';
73
- return `vd-stepper__plus ${hairlineClass}`;
74
- }
75
- // minusDisabled() {
76
- // return this.disabled || this.currentValue <= this.min;
77
- // },
78
-
79
- // plusDisabled() {
80
- // return this.disabled || this.currentValue >= this.max;
81
- // }
82
- },
83
- watch: {
84
- value(val) {
85
- if (val !== this.currentValue) {
86
- this.currentValue = this.format(val);
87
- }
88
- },
89
-
90
- currentValue(val) {
91
- this.$emit('input', val);
92
- this.$emit('change', val);
93
- }
94
- },
95
- methods: {
96
- format(value) {
97
- value = String(value).replace(/[^0-9.-]/g, '');
98
- return value === '' ? 0 : this.integer ? Math.floor(value) : +value;
99
- },
100
-
101
- // limit value range
102
- range(value) {
103
- return Math.max(Math.min(this.max, this.format(value)), this.min);
104
- },
105
-
106
- onInput(event) {
107
- const { value } = event.target;
108
- const formatted = this.format(value);
109
- if (+value !== formatted) {
110
- event.target.value = formatted;
111
- }
112
- this.currentValue = formatted;
113
- },
114
-
115
- onChange(type) {
116
- if (this[`${type}Disabled`]) {
117
- this.$emit('overlimit', type);
118
- return;
119
- }
120
- const diff = type === 'minus' ? -this.step : +this.step;
121
- const value = Math.round((this.currentValue + diff) * 100) / 100;
122
- this.currentValue = this.range(value);
123
-
124
- this.$emit(type);
125
- },
126
-
127
- onBlur(event) {
128
- this.currentValue = this.range(this.currentValue);
129
- this.$emit('blur', event);
130
- },
131
- isDef(value) {
132
- return value !== undefined && value !== null;
133
- }
134
- }
135
- }
136
- </script>