@varlet/ui 2.8.4-alpha.1676992435486 → 2.8.4-alpha.1677149827451

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.
@@ -0,0 +1,154 @@
1
+ import { isFunction, camelize } from '@varlet/shared';
2
+
3
+ function shouldDisabled(arg) {
4
+ if (!arg) {
5
+ return false;
6
+ }
7
+
8
+ var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
9
+
10
+ if (arg === 'desktop' && isMobile) {
11
+ return true;
12
+ }
13
+
14
+ if (arg === 'mobile' && !isMobile) {
15
+ return true;
16
+ }
17
+
18
+ return false;
19
+ }
20
+
21
+ function getStyle(element) {
22
+ var style = element.getAttribute('style');
23
+ if (!style) return {};
24
+ return style.split(';').filter(Boolean).reduce((style, item) => {
25
+ var [key, value] = item.split(':').map(item => item.trim());
26
+ style[camelize(key)] = value;
27
+ return style;
28
+ }, {});
29
+ }
30
+
31
+ function updateRawStyle(element) {
32
+ var {
33
+ value
34
+ } = element._hover;
35
+ var style = getStyle(element);
36
+ Object.keys(value).forEach(key => {
37
+ var camelizedKey = camelize(key);
38
+ var styleValue = value[camelizedKey];
39
+
40
+ if (styleValue != null && style[camelizedKey]) {
41
+ element._hover.rawStyle[camelizedKey] = style[camelizedKey];
42
+ }
43
+ });
44
+ }
45
+
46
+ function updateStyle(element, styleValue) {
47
+ Object.keys(styleValue).forEach(key => {
48
+ var value = styleValue[key];
49
+
50
+ if (value != null) {
51
+ element.style[key] = value;
52
+ }
53
+ });
54
+ }
55
+
56
+ function clearStyle(element) {
57
+ Object.keys(element._hover.value).forEach(key => {
58
+ element.style[key] = '';
59
+ });
60
+ }
61
+
62
+ function restoreStyle(element) {
63
+ clearStyle(element);
64
+ updateStyle(element, element._hover.rawStyle);
65
+ element._hover.rawStyle = {};
66
+ }
67
+
68
+ function createHover() {
69
+ var {
70
+ value
71
+ } = this._hover;
72
+ this._hover.hovering = true;
73
+
74
+ if (isFunction(value)) {
75
+ value(this._hover.hovering);
76
+ return;
77
+ }
78
+
79
+ updateStyle(this, value);
80
+ }
81
+
82
+ function removeHover() {
83
+ this._hover.hovering = false;
84
+
85
+ if (isFunction(this._hover.value)) {
86
+ this._hover.value(this._hover.hovering);
87
+
88
+ return;
89
+ }
90
+
91
+ restoreStyle(this);
92
+ }
93
+
94
+ function mounted(element, binding) {
95
+ var _element$_hover$hover, _element$_hover;
96
+
97
+ var {
98
+ arg,
99
+ value
100
+ } = binding;
101
+
102
+ if (shouldDisabled(arg)) {
103
+ return;
104
+ }
105
+
106
+ element._hover = {
107
+ value,
108
+ hovering: (_element$_hover$hover = (_element$_hover = element._hover) == null ? void 0 : _element$_hover.hovering) != null ? _element$_hover$hover : false,
109
+ rawStyle: {}
110
+ };
111
+ updateRawStyle(element);
112
+ element.addEventListener('mouseenter', createHover);
113
+ element.addEventListener('mouseleave', removeHover);
114
+ }
115
+
116
+ function unmounted(element, binding) {
117
+ if (shouldDisabled(binding.arg)) {
118
+ return;
119
+ }
120
+
121
+ restoreStyle(element);
122
+ element.removeEventListener('mouseenter', createHover);
123
+ element.removeEventListener('mouseleave', removeHover);
124
+ }
125
+
126
+ function beforeUpdate(element, binding) {
127
+ unmounted(element, binding);
128
+ }
129
+
130
+ function shouldUpdateStyle(element, binding) {
131
+ return !isFunction(binding.value) && element._hover.hovering;
132
+ }
133
+
134
+ function updated(element, binding) {
135
+ mounted(element, binding);
136
+
137
+ if (shouldUpdateStyle(element, binding)) {
138
+ updateStyle(element, binding.value);
139
+ }
140
+ }
141
+
142
+ var Hover = {
143
+ mounted,
144
+ unmounted,
145
+ beforeUpdate,
146
+ updated,
147
+
148
+ install(app) {
149
+ app.directive('hover', this);
150
+ }
151
+
152
+ };
153
+ export var _HoverComponent = Hover;
154
+ export default Hover;
File without changes
@@ -27,6 +27,7 @@ import Divider from './divider/index.mjs'
27
27
  import Ellipsis from './ellipsis/index.mjs'
28
28
  import Form from './form/index.mjs'
29
29
  import FormDetails from './form-details/index.mjs'
30
+ import Hover from './hover/index.mjs'
30
31
  import Icon from './icon/index.mjs'
31
32
  import Image from './image/index.mjs'
32
33
  import ImagePreview from './image-preview/index.mjs'
@@ -105,6 +106,7 @@ export * from './divider/index.mjs'
105
106
  export * from './ellipsis/index.mjs'
106
107
  export * from './form/index.mjs'
107
108
  export * from './form-details/index.mjs'
109
+ export * from './hover/index.mjs'
108
110
  export * from './icon/index.mjs'
109
111
  export * from './image/index.mjs'
110
112
  export * from './image-preview/index.mjs'
@@ -183,6 +185,7 @@ import './divider/style/index.mjs'
183
185
  import './ellipsis/style/index.mjs'
184
186
  import './form/style/index.mjs'
185
187
  import './form-details/style/index.mjs'
188
+ import './hover/style/index.mjs'
186
189
  import './icon/style/index.mjs'
187
190
  import './image/style/index.mjs'
188
191
  import './image-preview/style/index.mjs'
@@ -232,7 +235,7 @@ import './time-picker/style/index.mjs'
232
235
  import './tooltip/style/index.mjs'
233
236
  import './uploader/style/index.mjs'
234
237
 
235
- const version = '2.8.4-alpha.1676992435486'
238
+ const version = '2.8.4-alpha.1677149827451'
236
239
 
237
240
  function install(app) {
238
241
  ActionSheet.install && app.use(ActionSheet)
@@ -264,6 +267,7 @@ function install(app) {
264
267
  Ellipsis.install && app.use(Ellipsis)
265
268
  Form.install && app.use(Form)
266
269
  FormDetails.install && app.use(FormDetails)
270
+ Hover.install && app.use(Hover)
267
271
  Icon.install && app.use(Icon)
268
272
  Image.install && app.use(Image)
269
273
  ImagePreview.install && app.use(ImagePreview)
@@ -346,6 +350,7 @@ export {
346
350
  Ellipsis,
347
351
  Form,
348
352
  FormDetails,
353
+ Hover,
349
354
  Icon,
350
355
  Image,
351
356
  ImagePreview,
@@ -428,6 +433,7 @@ export default {
428
433
  Ellipsis,
429
434
  Form,
430
435
  FormDetails,
436
+ Hover,
431
437
  Icon,
432
438
  Image,
433
439
  ImagePreview,
package/es/index.mjs CHANGED
@@ -27,6 +27,7 @@ import Divider from './divider/index.mjs'
27
27
  import Ellipsis from './ellipsis/index.mjs'
28
28
  import Form from './form/index.mjs'
29
29
  import FormDetails from './form-details/index.mjs'
30
+ import Hover from './hover/index.mjs'
30
31
  import Icon from './icon/index.mjs'
31
32
  import Image from './image/index.mjs'
32
33
  import ImagePreview from './image-preview/index.mjs'
@@ -105,6 +106,7 @@ export * from './divider/index.mjs'
105
106
  export * from './ellipsis/index.mjs'
106
107
  export * from './form/index.mjs'
107
108
  export * from './form-details/index.mjs'
109
+ export * from './hover/index.mjs'
108
110
  export * from './icon/index.mjs'
109
111
  export * from './image/index.mjs'
110
112
  export * from './image-preview/index.mjs'
@@ -154,7 +156,7 @@ export * from './time-picker/index.mjs'
154
156
  export * from './tooltip/index.mjs'
155
157
  export * from './uploader/index.mjs'
156
158
 
157
- const version = '2.8.4-alpha.1676992435486'
159
+ const version = '2.8.4-alpha.1677149827451'
158
160
 
159
161
  function install(app) {
160
162
  ActionSheet.install && app.use(ActionSheet)
@@ -186,6 +188,7 @@ function install(app) {
186
188
  Ellipsis.install && app.use(Ellipsis)
187
189
  Form.install && app.use(Form)
188
190
  FormDetails.install && app.use(FormDetails)
191
+ Hover.install && app.use(Hover)
189
192
  Icon.install && app.use(Icon)
190
193
  Image.install && app.use(Image)
191
194
  ImagePreview.install && app.use(ImagePreview)
@@ -268,6 +271,7 @@ export {
268
271
  Ellipsis,
269
272
  Form,
270
273
  FormDetails,
274
+ Hover,
271
275
  Icon,
272
276
  Image,
273
277
  ImagePreview,
@@ -350,6 +354,7 @@ export default {
350
354
  Ellipsis,
351
355
  Form,
352
356
  FormDetails,
357
+ Hover,
353
358
  Icon,
354
359
  Image,
355
360
  ImagePreview,
@@ -124,7 +124,6 @@ function __render__(_ctx, _cache) {
124
124
  class: _normalizeClass(_ctx.n('clear-icon')),
125
125
  "var-input-cover": "",
126
126
  name: "close-circle",
127
- size: "14px",
128
127
  onClick: _ctx.handleClear
129
128
  }, null, 8
130
129
  /* PROPS */
@@ -169,6 +168,13 @@ var __sfc__ = defineComponent({
169
168
  var id = ref("var-input-" + getCurrentInstance().uid);
170
169
  var el = ref(null);
171
170
  var isFocus = ref(false);
171
+ var type = computed(() => {
172
+ if (props.type === 'number') {
173
+ return 'text';
174
+ }
175
+
176
+ return props.type;
177
+ });
172
178
  var maxlengthText = computed(() => {
173
179
  var {
174
180
  maxlength,
@@ -240,6 +246,11 @@ var __sfc__ = defineComponent({
240
246
  var {
241
247
  value
242
248
  } = target;
249
+
250
+ if (props.type === 'number') {
251
+ value = formatNumber(value);
252
+ }
253
+
243
254
  value = withMaxlength(withTrim(value));
244
255
  target.value = value;
245
256
  call(props['onUpdate:modelValue'], value);
@@ -252,6 +263,12 @@ var __sfc__ = defineComponent({
252
263
  var {
253
264
  value
254
265
  } = target;
266
+
267
+ if (props.type === 'number') {
268
+ value = toNumber(value).toString();
269
+ call(props['onUpdate:modelValue'], value);
270
+ }
271
+
255
272
  value = withMaxlength(withTrim(value));
256
273
  target.value = value;
257
274
  call(props.onChange, value, e);
@@ -289,6 +306,21 @@ var __sfc__ = defineComponent({
289
306
  validateWithTrigger('onClick');
290
307
  };
291
308
 
309
+ var formatNumber = value => {
310
+ var minusIndex = value.indexOf('-');
311
+ var dotIndex = value.indexOf('.');
312
+
313
+ if (minusIndex > -1) {
314
+ value = minusIndex === 0 ? '-' + value.replace(/-/g, '') : value.replace(/-/g, '');
315
+ }
316
+
317
+ if (dotIndex > -1) {
318
+ value = value.slice(0, dotIndex + 1) + value.slice(dotIndex).replace(/\./g, '');
319
+ }
320
+
321
+ return value.replace(/[^-0-9.]/g, '');
322
+ };
323
+
292
324
  var withTrim = value => props.modelModifiers.trim ? value.trim() : value;
293
325
 
294
326
  var withMaxlength = value => props.maxlength ? value.slice(0, toNumber(props.maxlength)) : value;
@@ -345,6 +377,7 @@ var __sfc__ = defineComponent({
345
377
  id,
346
378
  isFocus,
347
379
  errorMessage,
380
+ type,
348
381
  maxlengthText,
349
382
  formDisabled: form == null ? void 0 : form.disabled,
350
383
  formReadonly: form == null ? void 0 : form.readonly,
@@ -1 +1 @@
1
- :root { --input-input-text-color: #555; --input-error-color: var(--color-danger); --input-blur-color: #888; --input-focus-color: var(--color-primary); --input-placeholder-size: 16px; --input-textarea-height: auto; --input-textarea-padding-top: 8px; --input-icon-padding: 16px 0 0; --input-icon-size: 20px; --input-line-size: 1px; --input-line-spread-size: 2px; --input-disabled-color: var(--color-text-disabled);}.var-input-footer-margin-enter-from,.var-input-footer-margin-leave-to { opacity: 0; margin-top: 2px !important;}.var-input-footer-margin-enter-active,.var-input-footer-margin-leave-active { transition: 0.2s all var(--cubic-bezier);}.var-input { width: 100%; color: var(--input-input-text-color); overflow: hidden;}.var-input__controller { width: 100%; display: flex; position: relative;}.var-input__wrap { position: relative; flex-grow: 1; display: flex; flex-direction: column; padding-top: var(--input-placeholder-size);}.var-input__icon { display: flex; align-items: center; padding: var(--input-icon-padding); font-size: 20px;}.var-input__placeholder { position: absolute; top: 50%; left: 0; width: 100%; transform-origin: left; transition: top 0.3s, transform 0.3s, width 0.3s, color 0.25s; transform: translate(0, calc(-50% + var(--input-placeholder-size) / 2)) scale(1); font-size: var(--input-placeholder-size); color: var(--input-blur-color); cursor: inherit;}.var-input__textarea-placeholder { position: absolute; top: 0; left: 0; width: 100%; transform-origin: left; transition: transform 0.3s, width 0.3s, color 0.25s; transform: translate(0, calc(var(--input-textarea-padding-top) + var(--input-placeholder-size))) scale(1); font-size: var(--input-placeholder-size); color: var(--input-blur-color); cursor: inherit;}.var-input__autocomplete { width: 0; height: 0; padding: 0; border: none; outline: none; font-size: 0;}.var-input__input { width: 100%; height: 32px; padding: 0; outline: none; border: none; background: transparent; color: var(--input-input-text-color); caret-color: var(--input-focus-color); transition: color 0.25s; font: inherit;}.var-input__line { width: 100%; height: var(--input-line-size); background: var(--input-blur-color); transition: background-color 0.25s;}.var-input__dot { width: 100%; height: var(--input-line-spread-size); background: var(--input-focus-color); transform: scaleX(0); transform-origin: center; transition: transform 0.3s var(--cubic-bezier), background-color 0.25s;}.var-input__clear-icon[var-input-cover] { display: flex; margin-left: 4px;}.var-input--textarea { padding-top: var(--input-textarea-padding-top); height: var(--input-textarea-height);}.var-input--placeholder-hint { top: 0; width: 133.33%; transform: translate(0, 0) scale(0.75);}.var-input--placeholder-non-hint { top: 50%; transform: translate(0, -50%) scale(1);}.var-input--non-hint { padding-top: 0;}.var-input--placeholder-hidden { visibility: hidden;}.var-input--focus { color: var(--input-focus-color);}.var-input--spread { transform: scaleX(1);}.var-input--disabled { color: var(--input-disabled-color); cursor: not-allowed;}.var-input--error { color: var(--input-error-color);}.var-input--line-disabled { background: var(--input-disabled-color);}.var-input--line-error { background: var(--input-error-color);}.var-input--caret-error { caret-color: var(--input-error-color);}
1
+ :root { --input-input-text-color: #555; --input-error-color: var(--color-danger); --input-blur-color: #888; --input-focus-color: var(--color-primary); --input-placeholder-size: 16px; --input-textarea-height: auto; --input-textarea-padding-top: 8px; --input-icon-padding: 16px 0 0; --input-icon-size: 20px; --input-line-size: 1px; --input-line-spread-size: 2px; --input-disabled-color: var(--color-text-disabled);}.var-input-footer-margin-enter-from,.var-input-footer-margin-leave-to { opacity: 0; margin-top: 2px !important;}.var-input-footer-margin-enter-active,.var-input-footer-margin-leave-active { transition: 0.2s all var(--cubic-bezier);}.var-input { width: 100%; color: var(--input-input-text-color); overflow: hidden;}.var-input__controller { width: 100%; display: flex; position: relative;}.var-input__wrap { position: relative; flex-grow: 1; display: flex; flex-direction: column; padding-top: var(--input-placeholder-size);}.var-input__icon { display: flex; align-items: center; padding: var(--input-icon-padding); font-size: 20px;}.var-input__placeholder { position: absolute; top: 50%; left: 0; width: 100%; transform-origin: left; transition: top 0.3s, transform 0.3s, width 0.3s, color 0.25s; transform: translate(0, calc(-50% + var(--input-placeholder-size) / 2)) scale(1); font-size: var(--input-placeholder-size); color: var(--input-blur-color); cursor: inherit;}.var-input__textarea-placeholder { position: absolute; top: 0; left: 0; width: 100%; transform-origin: left; transition: transform 0.3s, width 0.3s, color 0.25s; transform: translate(0, calc(var(--input-textarea-padding-top) + var(--input-placeholder-size))) scale(1); font-size: var(--input-placeholder-size); color: var(--input-blur-color); cursor: inherit;}.var-input__autocomplete { width: 0; height: 0; padding: 0; border: none; outline: none; font-size: 0;}.var-input__input { width: 100%; height: 32px; padding: 0; outline: none; border: none; background: transparent; color: var(--input-input-text-color); caret-color: var(--input-focus-color); transition: color 0.25s; font: inherit;}.var-input__line { width: 100%; height: var(--input-line-size); background: var(--input-blur-color); transition: background-color 0.25s;}.var-input__dot { width: 100%; height: var(--input-line-spread-size); background: var(--input-focus-color); transform: scaleX(0); transform-origin: center; transition: transform 0.3s var(--cubic-bezier), background-color 0.25s;}.var-input__clear-icon[var-input-cover] { display: flex; font-size: 15px; margin-left: 4px;}.var-input--textarea { padding-top: var(--input-textarea-padding-top); height: var(--input-textarea-height);}.var-input--placeholder-hint { top: 0; width: 133.33%; transform: translate(0, 0) scale(0.75);}.var-input--placeholder-non-hint { top: 50%; transform: translate(0, -50%) scale(1);}.var-input--non-hint { padding-top: 0;}.var-input--placeholder-hidden { visibility: hidden;}.var-input--focus { color: var(--input-focus-color);}.var-input--spread { transform: scaleX(1);}.var-input--disabled { color: var(--input-disabled-color); cursor: not-allowed;}.var-input--error { color: var(--input-error-color);}.var-input--line-disabled { background: var(--input-disabled-color);}.var-input--line-error { background: var(--input-error-color);}.var-input--caret-error { caret-color: var(--input-error-color);}
@@ -1 +1 @@
1
- :root { --space-size-mini-y: 4px; --space-size-mini-x: 4px; --space-size-small-y: 6px; --space-size-small-x: 6px; --space-size-normal-y: 8px; --space-size-normal-x: 12px; --space-size-large-y: 12px; --space-size-large-x: 20px;}.var-space { display: flex;}.var-space--line { display: inline-flex;}
1
+ :root { --space-size-mini-y: 4px; --space-size-mini-x: 4px; --space-size-small-y: 6px; --space-size-small-x: 6px; --space-size-normal-y: 8px; --space-size-normal-x: 12px; --space-size-large-y: 12px; --space-size-large-x: 20px;}.var-space { display: flex;}.var-space--inline { display: inline-flex;}