@varlet/ui 1.27.8 → 1.27.10

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 (66) hide show
  1. package/es/badge/Badge.js +1 -1
  2. package/es/bottom-navigation-item/BottomNavigationItem.js +3 -1
  3. package/es/card/Card.js +228 -19
  4. package/es/card/card.css +1 -1
  5. package/es/card/card.less +108 -5
  6. package/es/card/props.js +25 -0
  7. package/es/index-bar/IndexBar.js +4 -4
  8. package/es/index-bar/props.js +1 -1
  9. package/es/loading/Loading.js +5 -14
  10. package/es/loading/loading.css +1 -1
  11. package/es/loading/loading.less +20 -0
  12. package/es/picker/Picker.js +2 -1
  13. package/es/progress/Progress.js +14 -11
  14. package/es/progress/progress.css +1 -1
  15. package/es/progress/progress.less +3 -0
  16. package/es/progress/props.js +1 -1
  17. package/es/rate/Rate.js +4 -2
  18. package/es/rate/props.js +2 -4
  19. package/es/rate/rate.css +1 -1
  20. package/es/rate/rate.less +7 -0
  21. package/es/select/Select.js +3 -1
  22. package/es/slider/Slider.js +10 -9
  23. package/es/style.css +1 -1
  24. package/es/switch/Switch.js +22 -19
  25. package/es/switch/props.js +1 -2
  26. package/es/switch/switch.css +1 -1
  27. package/es/switch/switch.less +18 -4
  28. package/es/utils/elements.js +13 -0
  29. package/es/utils/jest.js +19 -0
  30. package/es/varlet.esm.js +334 -96
  31. package/highlight/attributes.json +21 -5
  32. package/highlight/tags.json +6 -2
  33. package/highlight/web-types.json +50 -6
  34. package/lib/badge/Badge.js +1 -1
  35. package/lib/bottom-navigation-item/BottomNavigationItem.js +3 -1
  36. package/lib/card/Card.js +228 -15
  37. package/lib/card/card.css +1 -1
  38. package/lib/card/card.less +108 -5
  39. package/lib/card/props.js +25 -0
  40. package/lib/index-bar/IndexBar.js +3 -3
  41. package/lib/index-bar/props.js +1 -1
  42. package/lib/loading/Loading.js +6 -15
  43. package/lib/loading/loading.css +1 -1
  44. package/lib/loading/loading.less +20 -0
  45. package/lib/picker/Picker.js +2 -1
  46. package/lib/progress/Progress.js +15 -11
  47. package/lib/progress/progress.css +1 -1
  48. package/lib/progress/progress.less +3 -0
  49. package/lib/progress/props.js +1 -1
  50. package/lib/rate/Rate.js +3 -1
  51. package/lib/rate/props.js +2 -4
  52. package/lib/rate/rate.css +1 -1
  53. package/lib/rate/rate.less +7 -0
  54. package/lib/select/Select.js +3 -1
  55. package/lib/slider/Slider.js +9 -8
  56. package/lib/style.css +1 -1
  57. package/lib/switch/Switch.js +22 -19
  58. package/lib/switch/props.js +1 -2
  59. package/lib/switch/switch.css +1 -1
  60. package/lib/switch/switch.less +18 -4
  61. package/lib/utils/elements.js +17 -1
  62. package/lib/utils/jest.js +21 -0
  63. package/package.json +10 -9
  64. package/types/card.d.ts +9 -0
  65. package/types/indexBar.d.ts +1 -1
  66. package/umd/varlet.js +4 -4
package/es/badge/Badge.js CHANGED
@@ -66,7 +66,7 @@ export default defineComponent({
66
66
  icon
67
67
  } = props;
68
68
  var positionBasic = slots.default && n('position') + " " + n("--" + position);
69
- var dotClass = dot && n('dot');
69
+ var dotClass = dot ? n('dot') : null;
70
70
  var positionClass = getPositionClass();
71
71
  var iconClass = icon ? n('icon') : null;
72
72
  return [n("--" + type), positionBasic, dotClass, positionClass, iconClass];
@@ -96,7 +96,9 @@ export default defineComponent({
96
96
  };
97
97
 
98
98
  var handleClick = () => {
99
- var active = name.value || index.value;
99
+ var _name$value;
100
+
101
+ var active = (_name$value = name.value) != null ? _name$value : index.value;
100
102
  call(props.onClick, active);
101
103
  call(bottomNavigation.onToggle, active);
102
104
  };
package/es/card/Card.js CHANGED
@@ -1,37 +1,73 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2
+
3
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
4
+
1
5
  import Ripple from '../ripple';
2
- import { defineComponent } from 'vue';
6
+ import VarIcon from '../icon';
7
+ import VarButton from '../button';
8
+ import { ref, defineComponent, watch, computed, nextTick } from 'vue';
3
9
  import { props } from './props';
4
- import { toSizeUnit } from '../utils/elements';
5
- import { createNamespace } from '../utils/components';
10
+ import { doubleRaf, toSizeUnit } from '../utils/elements';
11
+ import { call, createNamespace } from '../utils/components';
12
+ import { useZIndex } from '../context/zIndex';
13
+ import { useLock } from '../context/lock';
6
14
  var {
7
15
  n,
8
16
  classes
9
17
  } = createNamespace('card');
10
- import { renderSlot as _renderSlot, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from "vue";
18
+ var RIPPLE_DELAY = 500;
19
+ import { renderSlot as _renderSlot, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withModifiers as _withModifiers, withCtx as _withCtx, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from "vue";
11
20
 
12
21
  var _withScopeId = n => (_pushScopeId(""), n = n(), _popScopeId(), n);
13
22
 
14
23
  var _hoisted_1 = ["src", "alt"];
15
24
  export function render(_ctx, _cache) {
25
+ var _component_var_icon = _resolveComponent("var-icon");
26
+
27
+ var _component_var_button = _resolveComponent("var-button");
28
+
16
29
  var _directive_ripple = _resolveDirective("ripple");
17
30
 
18
31
  return _withDirectives((_openBlock(), _createElementBlock("div", {
19
- class: _normalizeClass(_ctx.classes(_ctx.n(), [_ctx.elevation, "var-elevation--" + _ctx.elevation, 'var-elevation--2'])),
32
+ ref: "card",
33
+ class: _normalizeClass(_ctx.classes(_ctx.n(), [_ctx.isRow, _ctx.n('--layout-row')], [_ctx.elevation, "var-elevation--" + _ctx.elevation, 'var-elevation--1'])),
34
+ style: _normalizeStyle({
35
+ zIndex: _ctx.floated ? _ctx.zIndex : undefined
36
+ }),
20
37
  onClick: _cache[0] || (_cache[0] = function () {
21
38
  return _ctx.onClick && _ctx.onClick(...arguments);
22
39
  })
23
- }, [_renderSlot(_ctx.$slots, "image", {}, () => [_ctx.src ? (_openBlock(), _createElementBlock("img", {
24
- key: 0,
25
- class: _normalizeClass(_ctx.n('image')),
40
+ }, [_createElementVNode("div", {
41
+ ref: "cardFloater",
42
+ class: _normalizeClass(_ctx.classes(_ctx.n('floater'))),
26
43
  style: _normalizeStyle({
27
- objectFit: _ctx.fit,
28
- height: _ctx.toSizeUnit(_ctx.height)
29
- }),
30
- src: _ctx.src,
31
- alt: _ctx.alt
32
- }, null, 14
33
- /* CLASS, STYLE, PROPS */
34
- , _hoisted_1)) : _createCommentVNode("v-if", true)]), _renderSlot(_ctx.$slots, "title", {}, () => [_ctx.title ? (_openBlock(), _createElementBlock("div", {
44
+ width: _ctx.floaterWidth,
45
+ height: _ctx.floaterHeight,
46
+ top: _ctx.floaterTop,
47
+ left: _ctx.floaterLeft,
48
+ overflow: _ctx.floaterOverflow,
49
+ position: _ctx.floaterPosition,
50
+ transition: _ctx.floated ? "background-color " + _ctx.floatingDuration + "ms, width " + _ctx.floatingDuration + "ms, height " + _ctx.floatingDuration + "ms, top " + _ctx.floatingDuration + "ms, left " + _ctx.floatingDuration + "ms" : undefined
51
+ })
52
+ }, [_renderSlot(_ctx.$slots, "image", {}, () => {
53
+ var _ctx$imageHeight;
54
+
55
+ return [_ctx.src ? (_openBlock(), _createElementBlock("img", {
56
+ key: 0,
57
+ class: _normalizeClass(_ctx.n('image')),
58
+ style: _normalizeStyle({
59
+ objectFit: _ctx.fit,
60
+ height: _ctx.toSizeUnit((_ctx$imageHeight = _ctx.imageHeight) != null ? _ctx$imageHeight : _ctx.height),
61
+ width: _ctx.toSizeUnit(_ctx.imageWidth)
62
+ }),
63
+ src: _ctx.src,
64
+ alt: _ctx.alt
65
+ }, null, 14
66
+ /* CLASS, STYLE, PROPS */
67
+ , _hoisted_1)) : _createCommentVNode("v-if", true)];
68
+ }), _createElementVNode("div", {
69
+ class: _normalizeClass(_ctx.n('container'))
70
+ }, [_renderSlot(_ctx.$slots, "title", {}, () => [_ctx.title ? (_openBlock(), _createElementBlock("div", {
35
71
  key: 0,
36
72
  class: _normalizeClass(_ctx.n('title'))
37
73
  }, _toDisplayString(_ctx.title), 3
@@ -51,10 +87,60 @@ export function render(_ctx, _cache) {
51
87
  class: _normalizeClass(_ctx.n('footer'))
52
88
  }, [_renderSlot(_ctx.$slots, "extra")], 2
53
89
  /* CLASS */
90
+ )) : _createCommentVNode("v-if", true), _ctx.$slots.content && !_ctx.isRow ? (_openBlock(), _createElementBlock("div", {
91
+ key: 1,
92
+ class: _normalizeClass(_ctx.n('content')),
93
+ style: _normalizeStyle({
94
+ height: _ctx.contentHeight,
95
+ opacity: _ctx.opacity,
96
+ transition: "opacity " + _ctx.floatingDuration * 2 + "ms"
97
+ })
98
+ }, [_renderSlot(_ctx.$slots, "content")], 6
99
+ /* CLASS, STYLE */
54
100
  )) : _createCommentVNode("v-if", true)], 2
55
101
  /* CLASS */
102
+ ), _ctx.showFloatingButtons ? (_openBlock(), _createElementBlock("div", {
103
+ key: 0,
104
+ class: _normalizeClass(_ctx.classes(_ctx.n('floating-buttons'), 'var--box')),
105
+ style: _normalizeStyle({
106
+ zIndex: _ctx.zIndex,
107
+ opacity: _ctx.opacity,
108
+ transition: "opacity " + _ctx.floatingDuration * 2 + "ms"
109
+ })
110
+ }, [_renderSlot(_ctx.$slots, "close-button", {}, () => [_createVNode(_component_var_button, {
111
+ "var-card-cover": "",
112
+ round: "",
113
+ class: _normalizeClass(_ctx.classes(_ctx.n('close-button'), 'var-elevation--6')),
114
+ onClick: _withModifiers(_ctx.close, ["stop"])
115
+ }, {
116
+ default: _withCtx(() => [_createVNode(_component_var_icon, {
117
+ "var-card-cover": "",
118
+ name: "window-close",
119
+ class: _normalizeClass(_ctx.n('close-button-icon'))
120
+ }, null, 8
121
+ /* PROPS */
122
+ , ["class"])]),
123
+ _: 1
124
+ /* STABLE */
125
+
126
+ }, 8
127
+ /* PROPS */
128
+ , ["class", "onClick"])])], 6
129
+ /* CLASS, STYLE */
130
+ )) : _createCommentVNode("v-if", true)], 6
131
+ /* CLASS, STYLE */
132
+ ), _createElementVNode("div", {
133
+ class: _normalizeClass(_ctx.n('holder')),
134
+ style: _normalizeStyle({
135
+ width: _ctx.holderWidth,
136
+ height: _ctx.holderHeight
137
+ })
138
+ }, null, 6
139
+ /* CLASS, STYLE */
140
+ )], 6
141
+ /* CLASS, STYLE */
56
142
  )), [[_directive_ripple, {
57
- disabled: !_ctx.ripple
143
+ disabled: !_ctx.ripple || _ctx.floater
58
144
  }]]);
59
145
  }
60
146
  export default defineComponent({
@@ -63,13 +149,136 @@ export default defineComponent({
63
149
  directives: {
64
150
  Ripple
65
151
  },
152
+ components: {
153
+ VarIcon,
154
+ VarButton
155
+ },
66
156
  props,
67
157
 
68
- setup() {
158
+ setup(props) {
159
+ var card = ref(null);
160
+ var cardFloater = ref(null);
161
+ var holderWidth = ref('auto');
162
+ var holderHeight = ref('auto');
163
+ var floaterWidth = ref('100%');
164
+ var floaterHeight = ref('100%');
165
+ var floaterTop = ref('auto');
166
+ var floaterLeft = ref('auto');
167
+ var floaterPosition = ref(undefined);
168
+ var floaterOverflow = ref('hidden');
169
+ var contentHeight = ref('0px');
170
+ var opacity = ref('0');
171
+ var {
172
+ zIndex
173
+ } = useZIndex(() => props.floating, 1);
174
+ var isRow = computed(() => props.layout === 'row');
175
+ var showFloatingButtons = ref(false);
176
+ var floated = ref(false);
177
+ useLock(() => props.floating, () => isRow);
178
+ var dropdownFloaterTop = 'auto';
179
+ var dropdownFloaterLeft = 'auto';
180
+ var dropper = null;
181
+ var floater = ref(null);
182
+
183
+ var floating = /*#__PURE__*/function () {
184
+ var _ref = _asyncToGenerator(function* () {
185
+ clearTimeout(floater.value);
186
+ clearTimeout(dropper);
187
+ floater.value = null;
188
+ floater.value = setTimeout( /*#__PURE__*/_asyncToGenerator(function* () {
189
+ var {
190
+ width,
191
+ height,
192
+ left,
193
+ top
194
+ } = card.value.getBoundingClientRect();
195
+ holderWidth.value = toSizeUnit(width);
196
+ holderHeight.value = toSizeUnit(height);
197
+ floaterWidth.value = holderWidth.value;
198
+ floaterHeight.value = holderHeight.value;
199
+ floaterTop.value = toSizeUnit(top);
200
+ floaterLeft.value = toSizeUnit(left);
201
+ floaterPosition.value = 'fixed';
202
+ dropdownFloaterTop = floaterTop.value;
203
+ dropdownFloaterLeft = floaterLeft.value;
204
+ showFloatingButtons.value = true;
205
+ yield doubleRaf();
206
+ floaterTop.value = '0';
207
+ floaterLeft.value = '0';
208
+ floaterWidth.value = '100vw';
209
+ floaterHeight.value = '100vh';
210
+ contentHeight.value = 'auto';
211
+ opacity.value = '1';
212
+ floaterOverflow.value = 'auto';
213
+ floated.value = true;
214
+ }), props.ripple ? RIPPLE_DELAY : 0);
215
+ });
216
+
217
+ return function floating() {
218
+ return _ref.apply(this, arguments);
219
+ };
220
+ }();
221
+
222
+ var dropdown = () => {
223
+ clearTimeout(dropper);
224
+ clearTimeout(floater.value);
225
+ floater.value = null;
226
+ floaterWidth.value = holderWidth.value;
227
+ floaterHeight.value = holderHeight.value;
228
+ floaterTop.value = dropdownFloaterTop;
229
+ floaterLeft.value = dropdownFloaterLeft;
230
+ contentHeight.value = '0px';
231
+ opacity.value = '0';
232
+ showFloatingButtons.value = false;
233
+ dropper = setTimeout(() => {
234
+ holderWidth.value = 'auto';
235
+ holderHeight.value = 'auto';
236
+ floaterWidth.value = '100%';
237
+ floaterHeight.value = '100%';
238
+ floaterTop.value = 'auto';
239
+ floaterLeft.value = 'auto';
240
+ dropdownFloaterTop = 'auto';
241
+ dropdownFloaterLeft = 'auto';
242
+ floaterOverflow.value = 'hidden';
243
+ floaterPosition.value = undefined;
244
+ floated.value = false;
245
+ }, props.floatingDuration);
246
+ };
247
+
248
+ var close = () => {
249
+ call(props['onUpdate:floating'], false);
250
+ };
251
+
252
+ watch(() => props.floating, value => {
253
+ if (isRow.value) return;
254
+ nextTick(() => {
255
+ value ? floating() : dropdown();
256
+ });
257
+ }, {
258
+ immediate: true
259
+ });
69
260
  return {
70
261
  n,
71
262
  classes,
72
- toSizeUnit
263
+ toSizeUnit,
264
+ card,
265
+ cardFloater,
266
+ holderWidth,
267
+ holderHeight,
268
+ floater,
269
+ floaterWidth,
270
+ floaterHeight,
271
+ floaterTop,
272
+ floaterLeft,
273
+ floaterPosition,
274
+ floaterOverflow,
275
+ contentHeight,
276
+ opacity,
277
+ zIndex,
278
+ isRow,
279
+ close,
280
+ showFloatingButtons,
281
+ floated
73
282
  };
74
283
  }
75
284
 
package/es/card/card.css CHANGED
@@ -1 +1 @@
1
- :root { --card-padding: 0 0 15px 0; --card-background: #fff; --card-border-radius: 4px; --card-image-width: 100%; --card-image-height: 200px; --card-title-color: #333; --card-title-font-size: 20px; --card-title-padding: 0 12px; --card-title-margin: 15px 0 0 0; --card-subtitle-color: rgba(0, 0, 0, 0.6); --card-subtitle-font-size: 14px; --card-subtitle-padding: 0 13px; --card-subtitle-margin: 10px 0 0 0; --card-description-color: rgba(0, 0, 0, 0.6); --card-description-font-size: 14px; --card-description-margin: 20px 0 0 0; --card-description-padding: 0 13px; --card-footer-padding: 0 12px; --card-footer-margin: 30px 0 0px 0; --card-line-height: 22px;}.var-card { border-radius: var(--card-border-radius); overflow: hidden; padding: var(--card-padding); line-height: var(--card-line-height); background: var(--card-background); transition: background-color 0.25s;}.var-card__image { width: var(--card-image-width); height: var(--card-image-height); display: block;}.var-card__title { font-size: var(--card-title-font-size); padding: var(--card-title-padding); margin: var(--card-title-margin); color: var(--card-title-color);}.var-card__subtitle { font-size: var(--card-subtitle-font-size); color: var(--card-subtitle-color); padding: var(--card-subtitle-padding); margin: var(--card-subtitle-margin);}.var-card__description { font-size: var(--card-description-font-size); color: var(--card-description-color); margin: var(--card-description-margin); padding: var(--card-description-padding); word-break: break-all;}.var-card__footer { padding: var(--card-footer-padding); margin: var(--card-footer-margin);}
1
+ :root { --card-padding: 0 0 15px 0; --card-background: #fff; --card-border-radius: 4px; --card-image-width: 100%; --card-row-image-width: 140px; --card-image-height: 200px; --card-row-height: 140px; --card-title-color: #333; --card-title-font-size: 20px; --card-title-padding: 0 12px; --card-title-margin: 15px 0 0 0; --card-title-row-margin: 12px 0; --card-subtitle-color: rgba(0, 0, 0, 0.6); --card-subtitle-font-size: 14px; --card-subtitle-padding: 0 12px; --card-subtitle-margin: 10px 0 0 0; --card-subtitle-row-margin: -8px 0 0 0; --card-description-color: rgba(0, 0, 0, 0.6); --card-description-font-size: 14px; --card-description-margin: 20px 0 0 0; --card-description-padding: 0 13px; --card-footer-padding: 0 12px; --card-footer-right: 13px; --card-footer-bottom: 9px; --card-footer-margin: 30px 0 0px 0; --card-line-height: 22px; --card-row-line-height: 1.5; --card-floating-buttons-bottom: 16px; --card-floating-buttons-right: 16px; --card-floating-buttons-color: #fff; --card-close-button-icon-size: 24px; --card-close-button-size: 56px; --card-close-button-primary-color: #212121;}.var-card { border-radius: var(--card-border-radius); overflow: hidden;}.var-card__floater { display: flex; flex-direction: column; position: static; line-height: var(--card-line-height); background: var(--card-background); transition-timing-function: cubic-bezier(0.45, 0.19, 0.06, 0.89);}.var-card__container { padding: var(--card-padding); flex-grow: 1; min-width: 0;}.var-card--layout-row .var-card__floater { min-height: var(--card-row-height); height: 100%; flex-direction: row; position: relative; line-height: var(--card-row-line-height);}.var-card__image { width: var(--card-image-width); height: var(--card-image-height); display: block;}.var-card--layout-row .var-card__image { width: var(--card-row-image-width); height: auto; display: block; flex-shrink: 0;}.var-card__title { font-size: var(--card-title-font-size); padding: var(--card-title-padding); margin: var(--card-title-margin); color: var(--card-title-color); word-break: break-word;}.var-card--layout-row .var-card__title { max-width: 100%; overflow: hidden; margin: var(--card-title-row-margin); text-overflow: ellipsis; white-space: nowrap;}.var-card__subtitle { font-size: var(--card-subtitle-font-size); color: var(--card-subtitle-color); padding: var(--card-subtitle-padding); margin: var(--card-subtitle-margin); word-break: break-word;}.var-card--layout-row .var-card__subtitle { margin: var(--card-subtitle-row-margin); text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;}.var-card__description { font-size: var(--card-description-font-size); color: var(--card-description-color); margin: var(--card-description-margin); padding: var(--card-description-padding); word-break: break-all;}.var-card__footer { display: flex; justify-content: flex-end; padding: var(--card-footer-padding); margin: var(--card-footer-margin);}.var-card--layout-row .var-card__footer { position: absolute; padding: 0; right: var(--card-footer-right); bottom: var(--card-footer-bottom);}.var-card__content { overflow: hidden; transition-timing-function: cubic-bezier(0.45, 0.19, 0.06, 0.89);}.var-card__floating-buttons { position: fixed; bottom: var(--card-floating-buttons-bottom); right: var(--card-floating-buttons-right); color: var(--card-floating-buttons-color);}.var-card__close-button[var-card-cover] { padding: var(--card-close-button-padding); width: var(--card-close-button-size); height: var(--card-close-button-size); background-color: var(--card-close-button-primary-color);}.var-card__close-button-icon[var-card-cover] { font-size: var(--card-close-button-icon-size);}
package/es/card/card.less CHANGED
@@ -2,53 +2,98 @@
2
2
  @card-background: #fff;
3
3
  @card-border-radius: 4px;
4
4
  @card-image-width: 100%;
5
+ @card-row-image-width: 140px;
6
+ @card-row-height: 140px;
5
7
  @card-image-height: 200px;
6
8
  @card-title-color: #333;
7
9
  @card-title-font-size: 20px;
8
10
  @card-title-padding: 0 12px;
9
11
  @card-title-margin: 15px 0 0 0;
12
+ @card-title-row-margin: 12px 0;
10
13
  @card-subtitle-color: rgba(0, 0, 0, 0.6);
11
14
  @card-subtitle-font-size: 14px;
12
- @card-subtitle-padding: 0 13px;
15
+ @card-subtitle-padding: 0 12px;
16
+ @card-subtitle-row-margin: -8px 0 0 0;
13
17
  @card-subtitle-margin: 10px 0 0 0;
14
18
  @card-description-color: rgba(0, 0, 0, 0.6);
15
19
  @card-description-font-size: 14px;
16
20
  @card-description-margin: 20px 0 0 0;
17
21
  @card-description-padding: 0 13px;
18
22
  @card-footer-padding: 0 12px;
23
+ @card-footer-right: 13px;
24
+ @card-footer-bottom: 9px;
19
25
  @card-footer-margin: 30px 0 0px 0;
20
26
  @card-line-height: 22px;
27
+ @card-row-line-height: 1.5;
28
+ @card-floating-buttons-bottom: 16px;
29
+ @card-floating-buttons-right: 16px;
30
+ @card-floating-buttons-color: #fff;
31
+ @card-close-button-icon-size: 24px;
32
+ @card-close-button-size: 56px;
33
+ @card-close-button-primary-color: #212121;
21
34
 
22
35
  :root {
23
36
  --card-padding: @card-padding;
24
37
  --card-background: @card-background;
25
38
  --card-border-radius: @card-border-radius;
26
39
  --card-image-width: @card-image-width;
40
+ --card-row-image-width: @card-row-image-width;
27
41
  --card-image-height: @card-image-height;
42
+ --card-row-height: @card-row-height;
28
43
  --card-title-color: @card-title-color;
29
44
  --card-title-font-size: @card-title-font-size;
30
45
  --card-title-padding: @card-title-padding;
31
46
  --card-title-margin: @card-title-margin;
47
+ --card-title-row-margin: @card-title-row-margin;
32
48
  --card-subtitle-color: @card-subtitle-color;
33
49
  --card-subtitle-font-size: @card-subtitle-font-size;
34
50
  --card-subtitle-padding: @card-subtitle-padding;
35
51
  --card-subtitle-margin: @card-subtitle-margin;
52
+ --card-subtitle-row-margin: @card-subtitle-row-margin;
36
53
  --card-description-color: @card-description-color;
37
54
  --card-description-font-size: @card-description-font-size;
38
55
  --card-description-margin: @card-description-margin;
39
56
  --card-description-padding: @card-description-padding;
40
57
  --card-footer-padding: @card-footer-padding;
58
+ --card-footer-right: @card-footer-right;
59
+ --card-footer-bottom: @card-footer-bottom;
41
60
  --card-footer-margin: @card-footer-margin;
42
61
  --card-line-height: @card-line-height;
62
+ --card-row-line-height: @card-row-line-height;
63
+ --card-floating-buttons-bottom: @card-floating-buttons-bottom;
64
+ --card-floating-buttons-right: @card-floating-buttons-right;
65
+ --card-floating-buttons-color: @card-floating-buttons-color;
66
+ --card-close-button-icon-size: @card-close-button-icon-size;
67
+ --card-close-button-size: @card-close-button-size;
68
+ --card-close-button-primary-color: @card-close-button-primary-color;
43
69
  }
44
70
 
45
71
  .var-card {
46
72
  border-radius: var(--card-border-radius);
47
73
  overflow: hidden;
48
- padding: var(--card-padding);
49
- line-height: var(--card-line-height);
50
- background: var(--card-background);
51
- transition: background-color 0.25s;
74
+
75
+ &__floater {
76
+ display: flex;
77
+ flex-direction: column;
78
+ position: static;
79
+ line-height: var(--card-line-height);
80
+ background: var(--card-background);
81
+ transition-timing-function: cubic-bezier(0.45, 0.19, 0.06, 0.89);
82
+ }
83
+
84
+ &__container {
85
+ padding: var(--card-padding);
86
+ flex-grow: 1;
87
+ min-width: 0;
88
+ }
89
+
90
+ &--layout-row &__floater {
91
+ min-height: var(--card-row-height);
92
+ height: 100%;
93
+ flex-direction: row;
94
+ position: relative;
95
+ line-height: var(--card-row-line-height);
96
+ }
52
97
 
53
98
  &__image {
54
99
  width: var(--card-image-width);
@@ -56,11 +101,27 @@
56
101
  display: block;
57
102
  }
58
103
 
104
+ &--layout-row &__image {
105
+ width: var(--card-row-image-width);
106
+ height: auto;
107
+ display: block;
108
+ flex-shrink: 0;
109
+ }
110
+
59
111
  &__title {
60
112
  font-size: var(--card-title-font-size);
61
113
  padding: var(--card-title-padding);
62
114
  margin: var(--card-title-margin);
63
115
  color: var(--card-title-color);
116
+ word-break: break-word;
117
+ }
118
+
119
+ &--layout-row &__title {
120
+ max-width: 100%;
121
+ overflow: hidden;
122
+ margin: var(--card-title-row-margin);
123
+ text-overflow: ellipsis;
124
+ white-space: nowrap;
64
125
  }
65
126
 
66
127
  &__subtitle {
@@ -68,6 +129,16 @@
68
129
  color: var(--card-subtitle-color);
69
130
  padding: var(--card-subtitle-padding);
70
131
  margin: var(--card-subtitle-margin);
132
+ word-break: break-word;
133
+ }
134
+
135
+ &--layout-row &__subtitle {
136
+ margin: var(--card-subtitle-row-margin);
137
+ text-overflow: ellipsis;
138
+ display: -webkit-box;
139
+ -webkit-box-orient: vertical;
140
+ -webkit-line-clamp: 2;
141
+ overflow: hidden;
71
142
  }
72
143
 
73
144
  &__description {
@@ -79,7 +150,39 @@
79
150
  }
80
151
 
81
152
  &__footer {
153
+ display: flex;
154
+ justify-content: flex-end;
82
155
  padding: var(--card-footer-padding);
83
156
  margin: var(--card-footer-margin);
84
157
  }
158
+
159
+ &--layout-row &__footer {
160
+ position: absolute;
161
+ padding: 0;
162
+ right: var(--card-footer-right);
163
+ bottom: var(--card-footer-bottom);
164
+ }
165
+
166
+ &__content {
167
+ overflow: hidden;
168
+ transition-timing-function: cubic-bezier(0.45, 0.19, 0.06, 0.89);
169
+ }
170
+
171
+ &__floating-buttons {
172
+ position: fixed;
173
+ bottom: var(--card-floating-buttons-bottom);
174
+ right: var(--card-floating-buttons-right);
175
+ color: var(--card-floating-buttons-color);
176
+ }
177
+
178
+ &__close-button[var-card-cover] {
179
+ padding: var(--card-close-button-padding);
180
+ width: var(--card-close-button-size);
181
+ height: var(--card-close-button-size);
182
+ background-color: var(--card-close-button-primary-color);
183
+ }
184
+
185
+ &__close-button-icon[var-card-cover] {
186
+ font-size: var(--card-close-button-icon-size);
187
+ }
85
188
  }
package/es/card/props.js CHANGED
@@ -11,9 +11,34 @@ export var props = {
11
11
  validator: fitValidator,
12
12
  default: 'cover'
13
13
  },
14
+
15
+ /**
16
+ * @deprecated use imageHeight instead
17
+ */
14
18
  height: {
15
19
  type: [String, Number]
16
20
  },
21
+ imageHeight: {
22
+ type: [String, Number]
23
+ },
24
+ imageWidth: {
25
+ type: [String, Number]
26
+ },
27
+ layout: {
28
+ type: String,
29
+ default: 'column'
30
+ },
31
+ floating: {
32
+ type: Boolean,
33
+ default: false
34
+ },
35
+ 'onUpdate:floating': {
36
+ type: Function
37
+ },
38
+ floatingDuration: {
39
+ type: Number,
40
+ default: 250
41
+ },
17
42
  alt: {
18
43
  type: String
19
44
  },
@@ -4,7 +4,7 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar
4
4
 
5
5
  import { computed, defineComponent, ref, watch, onMounted, onBeforeUnmount } from 'vue';
6
6
  import { easeInOutCubic, isPlainObject, toNumber } from '../utils/shared';
7
- import { doubleRaf, getParentScroller, getScrollLeft, getScrollTop, nextTickFrame, requestAnimationFrame, scrollTo as varScrollTo } from '../utils/elements';
7
+ import { doubleRaf, getParentScroller, getScrollLeft, getScrollTop, nextTickFrame, requestAnimationFrame, scrollTo as varScrollTo, toPxNum } from '../utils/elements';
8
8
  import { useIndexAnchors } from './provide';
9
9
  import { props } from './props';
10
10
  import { createNamespace, call } from '../utils/components';
@@ -34,7 +34,7 @@ export function render(_ctx, _cache) {
34
34
  style: _normalizeStyle({
35
35
  color: _ctx.active === anchorName && _ctx.highlightColor ? _ctx.highlightColor : ''
36
36
  }),
37
- onClick: $event => _ctx.anchorClick(anchorName)
37
+ onClick: $event => _ctx.anchorClick(anchorName, true)
38
38
  }, _toDisplayString(anchorName), 15
39
39
  /* TEXT, CLASS, STYLE, PROPS */
40
40
  , _hoisted_1);
@@ -64,7 +64,7 @@ export default defineComponent({
64
64
  var active = ref();
65
65
  var sticky = computed(() => props.sticky);
66
66
  var cssMode = computed(() => props.cssMode);
67
- var stickyOffsetTop = computed(() => props.stickyOffsetTop);
67
+ var stickyOffsetTop = computed(() => toPxNum(props.stickyOffsetTop));
68
68
  var zIndex = computed(() => props.zIndex);
69
69
  var indexBarProvider = {
70
70
  active,
@@ -140,7 +140,7 @@ export default defineComponent({
140
140
 
141
141
 
142
142
  var scrollTo = index => {
143
- requestAnimationFrame(() => anchorClick(index, true));
143
+ requestAnimationFrame(() => anchorClick(index));
144
144
  };
145
145
 
146
146
  watch(() => length.value, /*#__PURE__*/_asyncToGenerator(function* () {
@@ -4,7 +4,7 @@ export var props = {
4
4
  default: true
5
5
  },
6
6
  stickyOffsetTop: {
7
- type: Number,
7
+ type: [String, Number],
8
8
  default: 0
9
9
  },
10
10
  cssMode: {
@@ -1,7 +1,7 @@
1
1
  import { computed, defineComponent } from 'vue';
2
2
  import { props } from './props';
3
- import { toNumber } from '../utils/shared';
4
3
  import { createNamespace, call } from '../utils/components';
4
+ import { multiplySizeUnit } from '../utils/elements';
5
5
  var {
6
6
  n,
7
7
  classes
@@ -42,10 +42,10 @@ export function render(_ctx, _cache) {
42
42
  key: 0,
43
43
  class: _normalizeClass(_ctx.n('circle'))
44
44
  }, [_createElementVNode("span", {
45
- class: _normalizeClass(_ctx.n('circle-block')),
45
+ class: _normalizeClass(_ctx.classes(_ctx.n('circle-block'), _ctx.n("circle-block--" + _ctx.size))),
46
46
  style: _normalizeStyle({
47
- width: _ctx.getRadius * 2 + 'px',
48
- height: _ctx.getRadius * 2 + 'px',
47
+ width: _ctx.multiplySizeUnit(_ctx.radius, 2),
48
+ height: _ctx.multiplySizeUnit(_ctx.radius, 2),
49
49
  color: _ctx.color
50
50
  })
51
51
  }, _hoisted_2, 6
@@ -108,15 +108,6 @@ export default defineComponent({
108
108
  rect: 8,
109
109
  disappear: 3
110
110
  };
111
- var sizeDict = {
112
- mini: 9,
113
- small: 12,
114
- normal: 15,
115
- large: 18
116
- };
117
- var getRadius = computed(() => {
118
- return props.radius ? toNumber(props.radius) : sizeDict[props.size];
119
- });
120
111
  var isShow = computed(() => {
121
112
  if (!call(slots.default)) return true;
122
113
  return props.loading;
@@ -124,8 +115,8 @@ export default defineComponent({
124
115
  return {
125
116
  n,
126
117
  classes,
118
+ multiplySizeUnit,
127
119
  loadingTypeDict,
128
- getRadius,
129
120
  isShow
130
121
  };
131
122
  }
@@ -1 +1 @@
1
- :root { --loading-opacity: 0.38; --loading-desc-margin: 8px 0 0;}.var-loading { position: relative;}.var-loading__content { position: relative; transition: opacity 0.3s; opacity: 1;}.var-loading__content--active { opacity: var(--loading-opacity);}.var-loading__content-mask { position: absolute; left: 0; right: 0; top: 0; bottom: 0;}.var-loading__body { display: flex; justify-content: center; align-items: center; height: 100%; flex-direction: column;}.var-loading__inside { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); z-index: 1;}.var-loading__description { color: currentColor; margin: var(--loading-desc-margin);}.var-loading__description--large { font-size: 16px;}.var-loading__description--normal { font-size: 14px;}.var-loading__description--small { font-size: 12px;}.var-loading__description--mini { font-size: 10px;}.var-loading__circle { display: flex;}.var-loading__circle-block { display: inline-block; animation: circle 1.8s linear infinite;}.var-loading__circle-block svg { display: block; width: 100%; height: 100%;}.var-loading__circle-block svg circle { animation: circular 1.5s ease-in-out infinite; stroke: currentColor; stroke-width: 3; stroke-linecap: round;}@keyframes circle { from { transform: rotate(0deg); } to { transform: rotate(360deg); }}@keyframes circular { 0% { stroke-dasharray: 1, 200; stroke-dashoffset: 0; } 50% { stroke-dasharray: 90, 150; stroke-dashoffset: -40; } 100% { stroke-dasharray: 90, 150; stroke-dashoffset: -120; }}.var-loading__wave { display: flex; align-items: center; justify-content: center;}.var-loading__wave--large { width: 64px; height: 18px;}.var-loading__wave--normal { width: 50px; height: 16px;}.var-loading__wave--small { width: 36px; height: 14px;}.var-loading__wave--mini { width: 22px; height: 12px;}.var-loading__wave-item { height: 100%; display: inline-block; animation: 1.2s ease-in-out infinite wave;}.var-loading__wave-item:nth-child(1) { animation-delay: -1.2s; margin-left: 0;}.var-loading__wave-item:nth-child(2) { animation-delay: -1.1s;}.var-loading__wave-item:nth-child(3) { animation-delay: -1s;}.var-loading__wave-item:nth-child(4) { animation-delay: -0.9s;}.var-loading__wave-item:nth-child(5) { animation-delay: -0.8s;}.var-loading__wave-item--large { width: 5px; margin-left: 5px;}.var-loading__wave-item--normal { width: 4px; margin-left: 4px;}.var-loading__wave-item--small { width: 3px; margin-left: 3px;}.var-loading__wave-item--mini { width: 2px; margin-left: 2px;}@keyframes wave { 0%, 40%, 100% { transform: scaleY(0.4); } 20% { transform: scaleY(1); }}.var-loading__cube { display: flex; align-items: center;}.var-loading__cube--large { width: 64px; height: 18px;}.var-loading__cube--normal { width: 50px; height: 16px;}.var-loading__cube--small { width: 36px; height: 14px;}.var-loading__cube--mini { width: 22px; height: 12px;}.var-loading__cube-item { display: inline-block; transform-origin: right bottom; animation: 1.5s ease infinite cube;}.var-loading__cube-item:nth-child(1) { animation-delay: 0.2s; margin-left: 0;}.var-loading__cube-item:nth-child(2) { animation-delay: 0.4s;}.var-loading__cube-item:nth-child(3) { animation-delay: 0.6s;}.var-loading__cube-item:nth-child(4) { animation-delay: 0.8s;}.var-loading__cube-item--large { height: 10px; width: 10px; margin-left: 5px;}.var-loading__cube-item--normal { height: 8px; width: 8px; margin-left: 4px;}.var-loading__cube-item--small { height: 6px; width: 6px; margin-left: 3px;}.var-loading__cube-item--mini { height: 4px; width: 4px; margin-left: 2px;}@keyframes cube { 0% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: rotate(90deg) scale(0.3); }}.var-loading__rect { display: flex; flex-wrap: nowrap; justify-content: center; align-items: center;}.var-loading__rect--large { width: 64px; height: 18px;}.var-loading__rect--normal { width: 50px; height: 16px;}.var-loading__rect--small { width: 36px; height: 14px;}.var-loading__rect--mini { width: 22px; height: 12px;}.var-loading__rect-item { animation: 2s ease-in-out infinite rect;}.var-loading__rect-item:nth-child(1) { animation-delay: 1.75s;}.var-loading__rect-item:nth-child(2) { animation-delay: 1.5s;}.var-loading__rect-item:nth-child(3) { animation-delay: 1.25s;}.var-loading__rect-item:nth-child(4) { animation-delay: 1s;}.var-loading__rect-item:nth-child(5) { animation-delay: 0.75s;}.var-loading__rect-item:nth-child(6) { animation-delay: 0.5s;}.var-loading__rect-item:nth-child(7) { animation-delay: 0.25s;}.var-loading__rect-item:nth-child(8) { animation-delay: 0s;}.var-loading__rect-item--large { height: 100%; width: 8px;}.var-loading__rect-item--normal { height: 90%; width: 6.4px;}.var-loading__rect-item--small { height: 80%; width: 4.8px;}.var-loading__rect-item--mini { height: 70%; width: 3.2px;}@keyframes rect { 0% { opacity: 0.3; } 25% { opacity: 1; } 50% { opacity: 0.3; } 65% { opacity: 1; } 100% { opacity: 0.3; }}.var-loading__disappear { display: flex; justify-content: space-around; align-items: center; flex-flow: nowrap;}.var-loading__disappear--large { width: 64px; height: 18px;}.var-loading__disappear--normal { width: 50px; height: 16px;}.var-loading__disappear--small { width: 36px; height: 14px;}.var-loading__disappear--mini { width: 22px; height: 12px;}.var-loading__disappear-item { border-radius: 50%; animation: 0.5s ease-in-out infinite alternate disappear;}.var-loading__disappear-item:nth-child(1) { animation-delay: -0.4s;}.var-loading__disappear-item:nth-child(2) { animation-delay: -0.2s;}.var-loading__disappear-item:nth-child(3) { animation-delay: 0s;}.var-loading__disappear-item--large { height: 15px; width: 15px;}.var-loading__disappear-item--normal { height: 12px; width: 12px;}.var-loading__disappear-item--small { height: 9px; width: 9px;}.var-loading__disappear-item--mini { height: 6px; width: 6px;}@keyframes disappear { 0% { opacity: 1; } 100% { opacity: 0; }}
1
+ :root { --loading-opacity: 0.38; --loading-desc-margin: 8px 0 0;}.var-loading { position: relative;}.var-loading__content { position: relative; transition: opacity 0.3s; opacity: 1;}.var-loading__content--active { opacity: var(--loading-opacity);}.var-loading__content-mask { position: absolute; left: 0; right: 0; top: 0; bottom: 0;}.var-loading__body { display: flex; justify-content: center; align-items: center; height: 100%; flex-direction: column;}.var-loading__inside { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); z-index: 1;}.var-loading__description { color: currentColor; margin: var(--loading-desc-margin);}.var-loading__description--large { font-size: 16px;}.var-loading__description--normal { font-size: 14px;}.var-loading__description--small { font-size: 12px;}.var-loading__description--mini { font-size: 10px;}.var-loading__circle { display: flex;}.var-loading__circle-block { display: inline-block; animation: circle 1.8s linear infinite;}.var-loading__circle-block--large { width: 36px; height: 36px;}.var-loading__circle-block--normal { width: 30px; height: 30px;}.var-loading__circle-block--small { width: 24px; height: 24px;}.var-loading__circle-block--mini { width: 18px; height: 18px;}.var-loading__circle-block svg { display: block; width: 100%; height: 100%;}.var-loading__circle-block svg circle { animation: circular 1.5s ease-in-out infinite; stroke: currentColor; stroke-width: 3; stroke-linecap: round;}@keyframes circle { from { transform: rotate(0deg); } to { transform: rotate(360deg); }}@keyframes circular { 0% { stroke-dasharray: 1, 200; stroke-dashoffset: 0; } 50% { stroke-dasharray: 90, 150; stroke-dashoffset: -40; } 100% { stroke-dasharray: 90, 150; stroke-dashoffset: -120; }}.var-loading__wave { display: flex; align-items: center; justify-content: center;}.var-loading__wave--large { width: 64px; height: 18px;}.var-loading__wave--normal { width: 50px; height: 16px;}.var-loading__wave--small { width: 36px; height: 14px;}.var-loading__wave--mini { width: 22px; height: 12px;}.var-loading__wave-item { height: 100%; display: inline-block; animation: 1.2s ease-in-out infinite wave;}.var-loading__wave-item:nth-child(1) { animation-delay: -1.2s; margin-left: 0;}.var-loading__wave-item:nth-child(2) { animation-delay: -1.1s;}.var-loading__wave-item:nth-child(3) { animation-delay: -1s;}.var-loading__wave-item:nth-child(4) { animation-delay: -0.9s;}.var-loading__wave-item:nth-child(5) { animation-delay: -0.8s;}.var-loading__wave-item--large { width: 5px; margin-left: 5px;}.var-loading__wave-item--normal { width: 4px; margin-left: 4px;}.var-loading__wave-item--small { width: 3px; margin-left: 3px;}.var-loading__wave-item--mini { width: 2px; margin-left: 2px;}@keyframes wave { 0%, 40%, 100% { transform: scaleY(0.4); } 20% { transform: scaleY(1); }}.var-loading__cube { display: flex; align-items: center;}.var-loading__cube--large { width: 64px; height: 18px;}.var-loading__cube--normal { width: 50px; height: 16px;}.var-loading__cube--small { width: 36px; height: 14px;}.var-loading__cube--mini { width: 22px; height: 12px;}.var-loading__cube-item { display: inline-block; transform-origin: right bottom; animation: 1.5s ease infinite cube;}.var-loading__cube-item:nth-child(1) { animation-delay: 0.2s; margin-left: 0;}.var-loading__cube-item:nth-child(2) { animation-delay: 0.4s;}.var-loading__cube-item:nth-child(3) { animation-delay: 0.6s;}.var-loading__cube-item:nth-child(4) { animation-delay: 0.8s;}.var-loading__cube-item--large { height: 10px; width: 10px; margin-left: 5px;}.var-loading__cube-item--normal { height: 8px; width: 8px; margin-left: 4px;}.var-loading__cube-item--small { height: 6px; width: 6px; margin-left: 3px;}.var-loading__cube-item--mini { height: 4px; width: 4px; margin-left: 2px;}@keyframes cube { 0% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: rotate(90deg) scale(0.3); }}.var-loading__rect { display: flex; flex-wrap: nowrap; justify-content: center; align-items: center;}.var-loading__rect--large { width: 64px; height: 18px;}.var-loading__rect--normal { width: 50px; height: 16px;}.var-loading__rect--small { width: 36px; height: 14px;}.var-loading__rect--mini { width: 22px; height: 12px;}.var-loading__rect-item { animation: 2s ease-in-out infinite rect;}.var-loading__rect-item:nth-child(1) { animation-delay: 1.75s;}.var-loading__rect-item:nth-child(2) { animation-delay: 1.5s;}.var-loading__rect-item:nth-child(3) { animation-delay: 1.25s;}.var-loading__rect-item:nth-child(4) { animation-delay: 1s;}.var-loading__rect-item:nth-child(5) { animation-delay: 0.75s;}.var-loading__rect-item:nth-child(6) { animation-delay: 0.5s;}.var-loading__rect-item:nth-child(7) { animation-delay: 0.25s;}.var-loading__rect-item:nth-child(8) { animation-delay: 0s;}.var-loading__rect-item--large { height: 100%; width: 8px;}.var-loading__rect-item--normal { height: 90%; width: 6.4px;}.var-loading__rect-item--small { height: 80%; width: 4.8px;}.var-loading__rect-item--mini { height: 70%; width: 3.2px;}@keyframes rect { 0% { opacity: 0.3; } 25% { opacity: 1; } 50% { opacity: 0.3; } 65% { opacity: 1; } 100% { opacity: 0.3; }}.var-loading__disappear { display: flex; justify-content: space-around; align-items: center; flex-flow: nowrap;}.var-loading__disappear--large { width: 64px; height: 18px;}.var-loading__disappear--normal { width: 50px; height: 16px;}.var-loading__disappear--small { width: 36px; height: 14px;}.var-loading__disappear--mini { width: 22px; height: 12px;}.var-loading__disappear-item { border-radius: 50%; animation: 0.5s ease-in-out infinite alternate disappear;}.var-loading__disappear-item:nth-child(1) { animation-delay: -0.4s;}.var-loading__disappear-item:nth-child(2) { animation-delay: -0.2s;}.var-loading__disappear-item:nth-child(3) { animation-delay: 0s;}.var-loading__disappear-item--large { height: 15px; width: 15px;}.var-loading__disappear-item--normal { height: 12px; width: 12px;}.var-loading__disappear-item--small { height: 9px; width: 9px;}.var-loading__disappear-item--mini { height: 6px; width: 6px;}@keyframes disappear { 0% { opacity: 1; } 100% { opacity: 0; }}