@veltra/desktop 1.1.35 → 1.1.36

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.
@@ -9,8 +9,8 @@ declare const __VLS_base: import("vue").DefineComponent<ActionGroupProps, _Actio
9
9
  type: import("@veltra/utils").ColorType;
10
10
  text: boolean;
11
11
  size: "small" | "default" | "large";
12
- circle: boolean;
13
12
  max: number;
13
+ circle: boolean;
14
14
  loading: boolean;
15
15
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
16
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -18,8 +18,8 @@ declare const __VLS_export: import("vue").DefineComponent<CascadeProps, {}, {},
18
18
  filterable: boolean;
19
19
  disabled: boolean;
20
20
  readonly: boolean;
21
- visibilityLimit: number;
22
21
  separator: string;
22
+ visibilityLimit: number;
23
23
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
24
  declare const _default: typeof __VLS_export;
25
25
  //#endregion
@@ -5,11 +5,14 @@ import { removeStyles, setStyles } from "@veltra/utils";
5
5
  function useMaximum(options) {
6
6
  const { dialogRef } = options;
7
7
  const maximized = shallowRef(false);
8
+ let needRmoveHeight = false;
8
9
  const maximizeTransition = useTransition("css", {
9
10
  target: dialogRef,
10
11
  name: "dialog-maximize",
11
12
  keepEnterTo: true,
12
13
  afterLeave() {
14
+ if (!maximized.value || !needRmoveHeight) return;
15
+ needRmoveHeight = false;
13
16
  dialogRef.value && removeStyles(dialogRef.value, ["height"]);
14
17
  }
15
18
  });
@@ -19,7 +22,10 @@ function useMaximum(options) {
19
22
  const dom = dialogRef.value;
20
23
  if (!dom) return;
21
24
  if (maxim) {
22
- setStyles(dom, { height: `${dom.offsetHeight}px` });
25
+ if (!dom.style.height) {
26
+ needRmoveHeight = true;
27
+ setStyles(dom, { height: `${dom.offsetHeight}px` });
28
+ }
23
29
  maximizeTransition.enter();
24
30
  } else maximizeTransition.leave();
25
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-maximum.js","names":[],"sources":["../../../src/components/dialog/use-maximum.ts"],"sourcesContent":["import { useTransition } from '@veltra/compositions'\nimport { type BEM, removeStyles, setStyles } from '@veltra/utils'\nimport { shallowRef, type ShallowRef } from 'vue'\n\ninterface Options {\n cls: BEM<'dialog'>\n dialogRef: ShallowRef<HTMLDivElement | undefined>\n}\n\ninterface Returned {\n /** 是否为最大状态 */\n maximized: ShallowRef<boolean>\n /** 切换最大状态 */\n toggleMaximize: (maxim: boolean) => void\n}\n\n// 最大化过程\n// 1. 先设置一个高度才会有过渡动画\n// 2. 在下一个帧应用最大化时的类名\n// 3. 在进入动画结束时移除高度\n\nexport function useMaximum(options: Options): Returned {\n const { dialogRef } = options\n\n const maximized = shallowRef(false)\n\n const maximizeTransition = useTransition('css', {\n target: dialogRef,\n name: 'dialog-maximize',\n keepEnterTo: true,\n afterLeave() {\n dialogRef.value && removeStyles(dialogRef.value, ['height'])\n }\n })\n\n /** 切换最大化 */\n const toggleMaximize = (maxim: boolean): void => {\n maximized.value = maxim\n const dom = dialogRef.value\n if (!dom) return\n if (maxim) {\n // 先设置一个高度才会有过渡动画\n setStyles(dom, { height: `${dom.offsetHeight}px` })\n maximizeTransition.enter()\n } else {\n maximizeTransition.leave()\n }\n }\n\n return { maximized, toggleMaximize }\n}\n"],"mappings":";;;;AAqBA,SAAgB,WAAW,SAA4B;CACrD,MAAM,EAAE,cAAc;CAEtB,MAAM,YAAY,WAAW,KAAK;CAElC,MAAM,qBAAqB,cAAc,OAAO;EAC9C,QAAQ;EACR,MAAM;EACN,aAAa;EACb,aAAa;GACX,UAAU,SAAS,aAAa,UAAU,OAAO,CAAC,QAAQ,CAAC;EAC7D;CACF,CAAC;;CAGD,MAAM,kBAAkB,UAAyB;EAC/C,UAAU,QAAQ;EAClB,MAAM,MAAM,UAAU;EACtB,IAAI,CAAC,KAAK;EACV,IAAI,OAAO;GAET,UAAU,KAAK,EAAE,QAAQ,GAAG,IAAI,aAAa,IAAI,CAAC;GAClD,mBAAmB,MAAM;EAC3B,OACE,mBAAmB,MAAM;CAE7B;CAEA,OAAO;EAAE;EAAW;CAAe;AACrC"}
1
+ {"version":3,"file":"use-maximum.js","names":[],"sources":["../../../src/components/dialog/use-maximum.ts"],"sourcesContent":["import { useTransition } from '@veltra/compositions'\nimport { type BEM, removeStyles, setStyles } from '@veltra/utils'\nimport { shallowRef, type ShallowRef } from 'vue'\n\ninterface Options {\n cls: BEM<'dialog'>\n dialogRef: ShallowRef<HTMLDivElement | undefined>\n}\n\ninterface Returned {\n /** 是否为最大状态 */\n maximized: ShallowRef<boolean>\n /** 切换最大状态 */\n toggleMaximize: (maxim: boolean) => void\n}\n\n// 最大化过程\n// 1. 先设置一个高度才会有过渡动画\n// 2. 在下一个帧应用最大化时的类名\n// 3. 在进入动画结束时移除高度\n\nexport function useMaximum(options: Options): Returned {\n const { dialogRef } = options\n\n const maximized = shallowRef(false)\n\n let needRmoveHeight = false\n\n const maximizeTransition = useTransition('css', {\n target: dialogRef,\n name: 'dialog-maximize',\n keepEnterTo: true,\n afterLeave() {\n if (!maximized.value || !needRmoveHeight) return\n needRmoveHeight = false\n dialogRef.value && removeStyles(dialogRef.value, ['height'])\n }\n })\n\n /** 切换最大化 */\n const toggleMaximize = (maxim: boolean): void => {\n maximized.value = maxim\n const dom = dialogRef.value\n if (!dom) return\n if (maxim) {\n // 先设置一个高度才会有过渡动画\n if (!dom.style.height) {\n needRmoveHeight = true\n setStyles(dom, { height: `${dom.offsetHeight}px` })\n }\n maximizeTransition.enter()\n } else {\n maximizeTransition.leave()\n }\n }\n\n return { maximized, toggleMaximize }\n}\n"],"mappings":";;;;AAqBA,SAAgB,WAAW,SAA4B;CACrD,MAAM,EAAE,cAAc;CAEtB,MAAM,YAAY,WAAW,KAAK;CAElC,IAAI,kBAAkB;CAEtB,MAAM,qBAAqB,cAAc,OAAO;EAC9C,QAAQ;EACR,MAAM;EACN,aAAa;EACb,aAAa;GACX,IAAI,CAAC,UAAU,SAAS,CAAC,iBAAiB;GAC1C,kBAAkB;GAClB,UAAU,SAAS,aAAa,UAAU,OAAO,CAAC,QAAQ,CAAC;EAC7D;CACF,CAAC;;CAGD,MAAM,kBAAkB,UAAyB;EAC/C,UAAU,QAAQ;EAClB,MAAM,MAAM,UAAU;EACtB,IAAI,CAAC,KAAK;EACV,IAAI,OAAO;GAET,IAAI,CAAC,IAAI,MAAM,QAAQ;IACrB,kBAAkB;IAClB,UAAU,KAAK,EAAE,QAAQ,GAAG,IAAI,aAAa,IAAI,CAAC;GACpD;GACA,mBAAmB,MAAM;EAC3B,OACE,mBAAmB,MAAM;CAE7B;CAEA,OAAO;EAAE;EAAW;CAAe;AACrC"}
@@ -17,19 +17,19 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, _Inpu
17
17
  "update:modelValue": (value: string) => any;
18
18
  clear: () => any;
19
19
  change: (value: string) => any;
20
- "suffix:click": (value?: string | undefined) => any;
21
- "prefix:click": (value?: string | undefined) => any;
22
20
  focus: (value?: string | undefined) => any;
23
21
  blur: (value?: string | undefined) => any;
22
+ "suffix:click": (value?: string | undefined) => any;
23
+ "prefix:click": (value?: string | undefined) => any;
24
24
  "native:input": (ev: Event) => any;
25
25
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
26
26
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
27
27
  onClear?: (() => any) | undefined;
28
28
  onChange?: ((value: string) => any) | undefined;
29
- "onSuffix:click"?: ((value?: string | undefined) => any) | undefined;
30
- "onPrefix:click"?: ((value?: string | undefined) => any) | undefined;
31
29
  onFocus?: ((value?: string | undefined) => any) | undefined;
32
30
  onBlur?: ((value?: string | undefined) => any) | undefined;
31
+ "onSuffix:click"?: ((value?: string | undefined) => any) | undefined;
32
+ "onPrefix:click"?: ((value?: string | undefined) => any) | undefined;
33
33
  "onNative:input"?: ((ev: Event) => any) | undefined;
34
34
  }>, {
35
35
  placeholder: string;
@@ -29,196 +29,127 @@
29
29
  .u-loading__container {
30
30
  position: relative;
31
31
  }
32
- .u-loading__line .u-loading__loader {
33
- width: 40px;
34
- aspect-ratio: 1;
35
- display: grid;
36
- }
37
- .u-loading__line .u-loading__loader::before, .u-loading__line .u-loading__loader::after {
38
- content: "";
39
- grid-area: 1/1;
40
- background: no-repeat linear-gradient(var(--u-text-color-main) 0 0) 0 0, no-repeat linear-gradient(var(--u-text-color-main) 0 0) 100% 0, no-repeat linear-gradient(var(--u-text-color-main) 0 0) 100% 100%, no-repeat linear-gradient(var(--u-text-color-main) 0 0) 0 100%;
41
- animation: line-1 2s infinite linear, line-2 2s infinite linear;
42
- }
43
- .u-loading__line .u-loading__loader::after {
44
- margin: 25%;
45
- transform: scale(-1);
46
- }
47
32
  .u-loading__spinner .u-loading__loader {
48
- width: 50px;
33
+ width: 42px;
49
34
  aspect-ratio: 1;
50
- display: grid;
51
- }
52
- .u-loading__spinner .u-loading__loader::before, .u-loading__spinner .u-loading__loader::after {
53
- content: "";
54
- grid-area: 1/1;
55
- background: no-repeat radial-gradient(farthest-side, var(--u-text-color-main) 92%, rgba(0, 0, 0, 0)) 50% 0, no-repeat radial-gradient(farthest-side, var(--u-text-color-main) 92%, rgba(0, 0, 0, 0)) 50% 100%, no-repeat radial-gradient(farthest-side, var(--u-text-color-main) 92%, rgba(0, 0, 0, 0)) 100% 50%, no-repeat radial-gradient(farthest-side, var(--u-text-color-main) 92%, rgba(0, 0, 0, 0)) 0 50%;
56
- background-size: 12px 12px;
57
- animation: spinner 1s infinite;
58
- }
59
- .u-loading__spinner .u-loading__loader::before {
60
- margin: 4px;
61
- filter: hue-rotate(45deg);
62
- background-size: 8px 8px;
63
- animation-timing-function: linear;
35
+ border-radius: 50%;
36
+ background: conic-gradient(from 0deg, transparent 25%, currentColor 70%, transparent 100%);
37
+ mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 0);
38
+ animation: loading-spin 0.85s linear infinite;
64
39
  }
65
40
  .u-loading__dot .u-loading__loader {
66
- width: 40px;
67
- height: 20px;
68
- background: no-repeat radial-gradient(farthest-side, var(--u-text-color-main) 93%, rgba(0, 0, 0, 0)) 0 0, no-repeat radial-gradient(farthest-side, var(--u-text-color-main) 93%, rgba(0, 0, 0, 0)) 50% 0;
69
- background-size: 8px 8px;
41
+ width: 10px;
42
+ height: 10px;
43
+ border-radius: 50%;
44
+ background: currentColor;
70
45
  position: relative;
71
- clip-path: inset(-200% -100% 0 0);
72
- animation: dot-0 1.5s linear infinite;
46
+ animation: loading-dot 1.4s ease-in-out infinite;
73
47
  }
74
- .u-loading__dot .u-loading__loader:before {
48
+ .u-loading__dot .u-loading__loader::before, .u-loading__dot .u-loading__loader::after {
75
49
  content: "";
76
50
  position: absolute;
77
- width: 8px;
78
- height: 12px;
79
- background: var(--u-text-color-main);
80
- left: -16px;
81
51
  top: 0;
82
- animation: dot-1 1.5s linear infinite, dot-2 0.5s cubic-bezier(0, 200, 0.8, 200) infinite;
52
+ width: 10px;
53
+ height: 10px;
54
+ border-radius: 50%;
55
+ background: currentColor;
56
+ }
57
+ .u-loading__dot .u-loading__loader::before {
58
+ left: -20px;
59
+ animation: loading-dot 1.4s ease-in-out infinite;
60
+ animation-delay: 0.2s;
61
+ }
62
+ .u-loading__dot .u-loading__loader::after {
63
+ right: -20px;
64
+ animation: loading-dot 1.4s ease-in-out infinite;
65
+ animation-delay: 0.4s;
66
+ }
67
+ .u-loading__line .u-loading__loader {
68
+ width: 160px;
69
+ height: 3px;
70
+ border-radius: 1.5px;
71
+ background: var(--u-bg-color-hover);
72
+ overflow: hidden;
73
+ position: relative;
83
74
  }
84
- .u-loading__dot .u-loading__loader:after {
75
+ .u-loading__line .u-loading__loader::after {
85
76
  content: "";
86
77
  position: absolute;
87
- inset: 0 0 auto auto;
88
- width: 8px;
89
- height: 8px;
90
- border-radius: 50%;
91
- background: var(--u-text-color-main);
92
- animation: dot-3 1.5s linear infinite;
78
+ inset: 0;
79
+ background: linear-gradient(90deg, transparent 0%, currentColor 40%, currentColor 60%, transparent 100%);
80
+ animation: loading-shimmer 1.4s ease-in-out infinite;
93
81
  }
94
82
  .u-loading__classic .u-loading__loader {
95
- font-size: var(--u-font-size-title-default);
96
- line-height: 1.4em;
97
- letter-spacing: 6ch;
98
- width: 6ch;
99
- overflow: hidden;
100
- white-space: nowrap;
101
- color: rgba(0, 0, 0, 0);
102
- text-shadow: 0ch 0 var(--u-text-color-main), -6ch 0 var(--u-text-color-main), -12ch 0 var(--u-text-color-main), -18ch 0 var(--u-text-color-main), -24ch 0 var(--u-text-color-main), -30ch 0 var(--u-text-color-main);
103
- animation: classic 2s infinite linear;
83
+ width: 44px;
84
+ aspect-ratio: 1;
85
+ position: relative;
104
86
  }
105
- .u-loading__classic .u-loading__loader::before {
106
- content: "加载中...";
87
+ .u-loading__classic .u-loading__loader::before, .u-loading__classic .u-loading__loader::after {
88
+ content: "";
89
+ position: absolute;
90
+ inset: 0;
91
+ border-radius: 50%;
92
+ border: 3px solid currentColor;
93
+ animation: loading-pulse 1.6s ease-out infinite;
107
94
  }
108
-
109
- @keyframes line-1 {
110
- 0% {
111
- background-size: 0 4px, 4px 0, 0 4px, 4px 0;
112
- }
113
- 12.5% {
114
- background-size: 100% 4px, 4px 0, 0 4px, 4px 0;
115
- }
116
- 25% {
117
- background-size: 100% 4px, 4px 100%, 0 4px, 4px 0;
118
- }
119
- 37.5% {
120
- background-size: 100% 4px, 4px 100%, 100% 4px, 4px 0;
121
- }
122
- 45%, 55% {
123
- background-size: 100% 4px, 4px 100%, 100% 4px, 4px 100%;
124
- }
125
- 62.5% {
126
- background-size: 0 4px, 4px 100%, 100% 4px, 4px 100%;
127
- }
128
- 75% {
129
- background-size: 0 4px, 4px 0, 100% 4px, 4px 100%;
130
- }
131
- 87.5% {
132
- background-size: 0 4px, 4px 0, 0 4px, 4px 100%;
133
- }
134
- 100% {
135
- background-size: 0 4px, 4px 0, 0 4px, 4px 0;
136
- }
95
+ .u-loading__classic .u-loading__loader::after {
96
+ animation-delay: 0.8s;
137
97
  }
138
- @keyframes line-2 {
139
- 0%, 49.9% {
140
- background-position: 0 0, 100% 0, 100% 100%, 0 100%;
141
- }
142
- 50%, 100% {
143
- background-position: 100% 0, 100% 100%, 0 100%, 0 0;
144
- }
98
+ .u-loading__morph .u-loading__loader {
99
+ width: 34px;
100
+ aspect-ratio: 1;
101
+ background: currentColor;
102
+ animation: loading-morph 2.4s ease-in-out infinite;
145
103
  }
146
- @keyframes spinner {
147
- 100% {
148
- transform: rotate(0.5turn);
104
+
105
+ @keyframes loading-spin {
106
+ to {
107
+ transform: rotate(1turn);
149
108
  }
150
109
  }
151
- @keyframes classic {
152
- 9.09% {
153
- text-shadow: 0ch -10px var(--u-text-color-main), -6ch 0 var(--u-text-color-main), -12ch 0 var(--u-text-color-main), -18ch 0 var(--u-text-color-main), -24ch 0 var(--u-text-color-main), -30ch 0 var(--u-text-color-main);
154
- }
155
- 18.18% {
156
- text-shadow: 0ch 0 var(--u-text-color-main), -6ch -10px var(--u-text-color-main), -12ch 0 var(--u-text-color-main), -18ch 0 var(--u-text-color-main), -24ch 0 var(--u-text-color-main), -30ch 0 var(--u-text-color-main);
157
- }
158
- 27.27% {
159
- text-shadow: 0ch 0 var(--u-text-color-main), -6ch 0 var(--u-text-color-main), -12ch -10px var(--u-text-color-main), -18ch 0 var(--u-text-color-main), -24ch 0 var(--u-text-color-main), -30ch 0 var(--u-text-color-main);
160
- }
161
- 36.36% {
162
- text-shadow: 0ch 0 var(--u-text-color-main), -6ch 0 var(--u-text-color-main), -12ch 0 var(--u-text-color-main), -18ch -10px var(--u-text-color-main), -24ch 0 var(--u-text-color-main), -30ch 0 var(--u-text-color-main);
163
- }
164
- 45.45% {
165
- text-shadow: 0ch 0 var(--u-text-color-main), -6ch 0 var(--u-text-color-main), -12ch 0 var(--u-text-color-main), -18ch 0 var(--u-text-color-main), -24ch -10px var(--u-text-color-main), -30ch 0 var(--u-text-color-main);
166
- }
167
- 54.54% {
168
- text-shadow: 0ch 0 var(--u-text-color-main), -6ch 0 var(--u-text-color-main), -12ch 0 var(--u-text-color-main), -18ch 0 var(--u-text-color-main), -24ch 0 var(--u-text-color-main), -30ch -10px var(--u-text-color-main);
169
- }
170
- 63.63% {
171
- text-shadow: 0ch 0 var(--u-text-color-main), -6ch 0 var(--u-text-color-main), -12ch 0 var(--u-text-color-main), -18ch 0 var(--u-text-color-main), -24ch 0 var(--u-text-color-main), -30ch 0 var(--u-text-color-main);
172
- }
173
- 72.72% {
174
- text-shadow: 0ch 0 var(--u-text-color-main), -6ch 0 var(--u-text-color-main), -12ch 0 var(--u-text-color-main), -18ch 0 var(--u-text-color-main), -24ch 0 var(--u-text-color-main), -30ch 0 var(--u-text-color-main);
175
- }
176
- 81.81% {
177
- text-shadow: 0ch 0 var(--u-text-color-main), -6ch 0 var(--u-text-color-main), -12ch 0 var(--u-text-color-main), -18ch 0 var(--u-text-color-main), -24ch 0 var(--u-text-color-main), -30ch 0 var(--u-text-color-main);
110
+ @keyframes loading-dot {
111
+ 0%, 80%, 100% {
112
+ transform: scale(0.4);
113
+ opacity: 0.25;
178
114
  }
179
- 90.90% {
180
- text-shadow: 0ch 0 var(--u-text-color-main), -6ch 0 var(--u-text-color-main), -12ch 0 var(--u-text-color-main), -18ch 0 var(--u-text-color-main), -24ch 0 var(--u-text-color-main), -30ch 0 var(--u-text-color-main);
115
+ 40% {
116
+ transform: scale(1);
117
+ opacity: 1;
181
118
  }
182
119
  }
183
- @keyframes dot-0 {
184
- 0%, 30% {
185
- background-position: 0 0, 50% 0;
186
- }
187
- 33% {
188
- background-position: 0 100%, 50% 0;
189
- }
190
- 41%, 63% {
191
- background-position: 0 0, 50% 0;
192
- }
193
- 66% {
194
- background-position: 0 0, 50% 100%;
120
+ @keyframes loading-shimmer {
121
+ 0% {
122
+ transform: translateX(-100%);
195
123
  }
196
- 74%, 100% {
197
- background-position: 0 0, 50% 0;
124
+ 100% {
125
+ transform: translateX(100%);
198
126
  }
199
127
  }
200
- @keyframes dot-1 {
201
- 90% {
202
- transform: translateY(0);
203
- }
204
- 95% {
205
- transform: translateY(15px);
128
+ @keyframes loading-pulse {
129
+ 0% {
130
+ transform: scale(0.2);
131
+ opacity: 1;
206
132
  }
207
133
  100% {
208
- transform: translateY(15px);
209
- left: calc(100% - 8px);
134
+ transform: scale(1.35);
135
+ opacity: 0;
210
136
  }
211
137
  }
212
- @keyframes dot-2 {
213
- 100% {
214
- top: -0.1px;
138
+ @keyframes loading-morph {
139
+ 0%, 100% {
140
+ border-radius: 50%;
141
+ transform: rotate(0deg) scale(1);
215
142
  }
216
- }
217
- @keyframes dot-3 {
218
- 0%, 80%, 100% {
219
- transform: translate(0);
143
+ 25% {
144
+ border-radius: 8px;
145
+ transform: rotate(45deg) scale(0.7);
220
146
  }
221
- 90% {
222
- transform: translate(26px);
147
+ 50% {
148
+ border-radius: 2px;
149
+ transform: rotate(90deg) scale(1);
150
+ }
151
+ 75% {
152
+ border-radius: 8px;
153
+ transform: rotate(135deg) scale(0.7);
223
154
  }
224
155
  }
@@ -25,9 +25,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
25
25
  clearable: boolean;
26
26
  disabled: boolean;
27
27
  readonly: boolean;
28
+ separator: string;
28
29
  startPlaceholder: string;
29
30
  endPlaceholder: string;
30
- separator: string;
31
31
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
32
32
  declare const _default: typeof __VLS_export;
33
33
  //#endregion
@@ -12,8 +12,8 @@ declare const __VLS_base: import("vue").DefineComponent<PopConfirmProps, {}, {},
12
12
  onConfirm?: (() => any) | undefined;
13
13
  onCancel?: (() => any) | undefined;
14
14
  }>, {
15
- direction: TipDirection;
16
15
  trigger: "hover" | "click";
16
+ direction: TipDirection;
17
17
  icon: import("vue").Component;
18
18
  iconColor: string;
19
19
  confirmText: string;
@@ -12,8 +12,8 @@ declare const __VLS_base: import("vue").DefineComponent<StepsProps, {}, {}, {},
12
12
  "onUpdate:current"?: ((value?: string | number | undefined) => any) | undefined;
13
13
  "onItem-click"?: ((item: Record<string, any>, index: number) => any) | undefined;
14
14
  }>, {
15
- direction: "horizontal" | "vertical";
16
15
  labelKey: string;
16
+ direction: "horizontal" | "vertical";
17
17
  finishedStepType: import("@veltra/utils").ColorType;
18
18
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
19
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -113,8 +113,10 @@
113
113
  z-index: 1;
114
114
  user-select: none;
115
115
  }
116
- .u-table__head:hover .u-table__cell {
117
- box-shadow: -1px 0px var(--u-table-border-color) inset, 0px -1px var(--u-table-border-color) inset;
116
+ .u-table__head .u-table__cell {
117
+ background-color: var(--u-table-header-bg);
118
+ font-weight: 500;
119
+ color: var(--u-table-header-color);
118
120
  }
119
121
  .u-table__head.is-multistage .u-table__cell {
120
122
  border-right: 1px solid var(--u-table-border-color);
@@ -122,11 +124,6 @@
122
124
  border-bottom: 1px solid var(--u-table-border-color);
123
125
  margin-bottom: -1px;
124
126
  }
125
- .u-table__head .u-table__cell {
126
- background-color: var(--u-table-header-bg);
127
- font-weight: normal;
128
- color: var(--u-table-header-color);
129
- }
130
127
  .u-table__resize-handle {
131
128
  position: absolute;
132
129
  width: 4px;
@@ -15,12 +15,12 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
15
15
  "update:modelValue": (value: string | undefined) => any;
16
16
  } & {
17
17
  "update:modelValue": (value: string) => any;
18
- close: (item: TabItem, index: number) => any;
19
18
  click: (item: TabItem, index: number) => any;
19
+ close: (item: TabItem, index: number) => any;
20
20
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
21
21
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
22
- onClose?: ((item: TabItem, index: number) => any) | undefined;
23
22
  onClick?: ((item: TabItem, index: number) => any) | undefined;
23
+ onClose?: ((item: TabItem, index: number) => any) | undefined;
24
24
  }>, {
25
25
  closable: boolean;
26
26
  position: "top" | "bottom";
@@ -15,12 +15,12 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
15
15
  "update:modelValue": (value: string | undefined) => any;
16
16
  } & {
17
17
  "update:modelValue": (value: string) => any;
18
- close: (item: TabItem, index: number) => any;
19
18
  click: (item: TabItem, index: number) => any;
19
+ close: (item: TabItem, index: number) => any;
20
20
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
21
21
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
22
- onClose?: ((item: TabItem, index: number) => any) | undefined;
23
22
  onClick?: ((item: TabItem, index: number) => any) | undefined;
23
+ onClose?: ((item: TabItem, index: number) => any) | undefined;
24
24
  }>, {
25
25
  closable: boolean;
26
26
  position: "left" | "right";
@@ -10,12 +10,12 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
10
10
  "update:modelValue": (value: string | undefined) => any;
11
11
  } & {
12
12
  "update:modelValue": (value: string) => any;
13
- close: (item: TabItem, index: number) => any;
14
13
  click: (item: TabItem, index: number) => any;
14
+ close: (item: TabItem, index: number) => any;
15
15
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
16
16
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
17
- onClose?: ((item: TabItem, index: number) => any) | undefined;
18
17
  onClick?: ((item: TabItem, index: number) => any) | undefined;
18
+ onClose?: ((item: TabItem, index: number) => any) | undefined;
19
19
  }>, {
20
20
  closable: boolean;
21
21
  position: "left" | "right" | "top" | "bottom";
@@ -9,12 +9,12 @@ declare const __VLS_base: import("vue").DefineComponent<TipProps, {}, {}, {}, {}
9
9
  }, string, import("vue").PublicProps, Readonly<TipProps> & Readonly<{
10
10
  "onUpdate:visible"?: ((value: boolean) => any) | undefined;
11
11
  }>, {
12
- direction: TipDirection;
13
- trigger: "hover" | "click";
14
- contentTag: string;
15
- visible: boolean;
16
12
  content: string;
13
+ visible: boolean;
14
+ trigger: "hover" | "click";
15
+ direction: TipDirection;
17
16
  alignment: TipAlign;
17
+ contentTag: string;
18
18
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
19
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
20
20
  declare const _default: typeof __VLS_export;
@@ -5,8 +5,8 @@ type __VLS_Slots = {} & {
5
5
  default?: (props: typeof __VLS_7) => any;
6
6
  };
7
7
  declare const __VLS_base: import("vue").DefineComponent<WatermarkProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<WatermarkProps> & Readonly<{}>, {
8
- fontSize: number;
9
8
  route: number;
9
+ fontSize: number;
10
10
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
11
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
12
  declare const _default: typeof __VLS_export;
@@ -1,7 +1,7 @@
1
1
  import { DeconstructValue } from "@veltra/utils";
2
2
 
3
3
  //#region src/types/loading.d.ts
4
- type LoadingType = 'classic' | 'line' | 'dot' | 'spinner';
4
+ type LoadingType = 'classic' | 'line' | 'dot' | 'spinner' | 'morph';
5
5
  /** loading组件属性 */
6
6
  interface LoadingProps {
7
7
  /** 加载类型 */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veltra/desktop",
3
- "version": "1.1.35",
3
+ "version": "1.1.36",
4
4
  "files": [
5
5
  "dist",
6
6
  "src"
@@ -68,11 +68,11 @@
68
68
  "@cat-kit/core": ">=1.1.6",
69
69
  "@cat-kit/excel": ">=1.0.0",
70
70
  "@cat-kit/fe": "^1.1.6",
71
- "@veltra/compositions": "1.1.35",
72
- "@veltra/directives": "1.1.35",
73
- "@veltra/icons": "1.1.35",
74
- "@veltra/styles": "1.1.35",
75
- "@veltra/utils": "1.1.35",
71
+ "@veltra/compositions": "1.1.36",
72
+ "@veltra/directives": "1.1.36",
73
+ "@veltra/icons": "1.1.36",
74
+ "@veltra/styles": "1.1.36",
75
+ "@veltra/utils": "1.1.36",
76
76
  "vue": ">=3.5.0"
77
77
  }
78
78
  }
@@ -24,11 +24,15 @@ export function useMaximum(options: Options): Returned {
24
24
 
25
25
  const maximized = shallowRef(false)
26
26
 
27
+ let needRmoveHeight = false
28
+
27
29
  const maximizeTransition = useTransition('css', {
28
30
  target: dialogRef,
29
31
  name: 'dialog-maximize',
30
32
  keepEnterTo: true,
31
33
  afterLeave() {
34
+ if (!maximized.value || !needRmoveHeight) return
35
+ needRmoveHeight = false
32
36
  dialogRef.value && removeStyles(dialogRef.value, ['height'])
33
37
  }
34
38
  })
@@ -40,7 +44,10 @@ export function useMaximum(options: Options): Returned {
40
44
  if (!dom) return
41
45
  if (maxim) {
42
46
  // 先设置一个高度才会有过渡动画
43
- setStyles(dom, { height: `${dom.offsetHeight}px` })
47
+ if (!dom.style.height) {
48
+ needRmoveHeight = true
49
+ setStyles(dom, { height: `${dom.offsetHeight}px` })
50
+ }
44
51
  maximizeTransition.enter()
45
52
  } else {
46
53
  maximizeTransition.leave()
@@ -2,7 +2,6 @@
2
2
  @use 'pkg:@veltra/styles/functions' as fn;
3
3
  @use 'pkg:@veltra/styles/vars';
4
4
 
5
- // 方便拼接
6
5
  $root-name: loading;
7
6
 
8
7
  @include m.b($root-name) {
@@ -17,415 +16,187 @@ $root-name: loading;
17
16
  position: relative;
18
17
  }
19
18
 
20
- // line
21
- @include m.e(line) {
19
+ // ============================================================
20
+ // spinner — 渐变圆弧旋转
21
+ // 使用 conic-gradient + mask 实现缺口圆环旋转
22
+ // ============================================================
23
+ @include m.e(spinner) {
22
24
  @include m.bem($root-name, loader) {
23
- $c: no-repeat linear-gradient(#{fn.use-var(text-color, main)} 0 0);
24
- width: 40px;
25
+ width: 42px;
25
26
  aspect-ratio: 1;
26
- display: grid;
27
+ border-radius: 50%;
28
+ background: conic-gradient(from 0deg, transparent 25%, currentColor 70%, transparent 100%);
29
+ mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 0);
30
+ animation: loading-spin 0.85s linear infinite;
31
+ }
32
+ }
33
+
34
+ // ============================================================
35
+ // dot — 三点波浪弹跳
36
+ // 元素自身 + 两个伪元素,交错弹跳
37
+ // ============================================================
38
+ @include m.e(dot) {
39
+ @include m.bem($root-name, loader) {
40
+ width: 10px;
41
+ height: 10px;
42
+ border-radius: 50%;
43
+ background: currentColor;
44
+ position: relative;
45
+ animation: loading-dot 1.4s ease-in-out infinite;
27
46
 
28
47
  &::before,
29
48
  &::after {
30
49
  content: '';
31
- grid-area: 1/1;
32
- background:
33
- #{$c} 0 0,
34
- #{$c} 100% 0,
35
- #{$c} 100% 100%,
36
- #{$c} 0 100%;
37
- animation:
38
- line-1 2s infinite linear,
39
- line-2 2s infinite linear;
50
+ position: absolute;
51
+ top: 0;
52
+ width: 10px;
53
+ height: 10px;
54
+ border-radius: 50%;
55
+ background: currentColor;
40
56
  }
57
+
58
+ &::before {
59
+ left: -20px;
60
+ animation: loading-dot 1.4s ease-in-out infinite;
61
+ animation-delay: 0.2s;
62
+ }
63
+
41
64
  &::after {
42
- margin: 25%;
43
- transform: scale(-1);
65
+ right: -20px;
66
+ animation: loading-dot 1.4s ease-in-out infinite;
67
+ animation-delay: 0.4s;
44
68
  }
45
69
  }
46
70
  }
47
71
 
48
- // spinner
49
- @include m.e(spinner) {
72
+ // ============================================================
73
+ // line — 流光扫过
74
+ // 半透明底轨 + 渐变光条水平扫过
75
+ // ============================================================
76
+ @include m.e(line) {
50
77
  @include m.bem($root-name, loader) {
51
- $c: no-repeat radial-gradient(farthest-side, #{fn.use-var(text-color, main)} 92%, #0000);
52
- width: 50px;
53
- aspect-ratio: 1;
54
- display: grid;
78
+ width: 160px;
79
+ height: 3px;
80
+ border-radius: 1.5px;
81
+ background: fn.use-var(bg-color, hover);
82
+ overflow: hidden;
83
+ position: relative;
55
84
 
56
- &::before,
57
85
  &::after {
58
86
  content: '';
59
- grid-area: 1/1;
60
-
61
- background:
62
- #{$c} 50% 0,
63
- #{$c} 50% 100%,
64
- #{$c} 100% 50%,
65
- #{$c} 0 50%;
66
- background-size: 12px 12px;
67
- animation: spinner 1s infinite;
68
- }
69
- &::before {
70
- margin: 4px;
71
- filter: hue-rotate(45deg);
72
- background-size: 8px 8px;
73
- animation-timing-function: linear;
87
+ position: absolute;
88
+ inset: 0;
89
+ background: linear-gradient(
90
+ 90deg,
91
+ transparent 0%,
92
+ currentColor 40%,
93
+ currentColor 60%,
94
+ transparent 100%
95
+ );
96
+ animation: loading-shimmer 1.4s ease-in-out infinite;
74
97
  }
75
98
  }
76
99
  }
77
100
 
78
- // dot
79
- @include m.e(dot) {
101
+ // ============================================================
102
+ // classic — 雷达波纹扩散
103
+ // 两个同心圆环交替向外扩散并淡出
104
+ // ============================================================
105
+ @include m.e(classic) {
80
106
  @include m.bem($root-name, loader) {
81
- $c: no-repeat radial-gradient(farthest-side, #{fn.use-var(text-color, main)} 93%, #0000);
82
- width: 40px;
83
- height: 20px;
84
- background:
85
- #{$c} 0 0,
86
- #{$c} 50% 0;
87
- background-size: 8px 8px;
107
+ width: 44px;
108
+ aspect-ratio: 1;
88
109
  position: relative;
89
- clip-path: inset(-200% -100% 0 0);
90
- animation: dot-0 1.5s linear infinite;
91
110
 
92
- &:before {
93
- content: '';
94
- position: absolute;
95
- width: 8px;
96
- height: 12px;
97
- background: fn.use-var(text-color, main);
98
- left: -16px;
99
- top: 0;
100
- animation:
101
- dot-1 1.5s linear infinite,
102
- dot-2 0.5s cubic-bezier(0, 200, 0.8, 200) infinite;
103
- }
104
- &:after {
111
+ &::before,
112
+ &::after {
105
113
  content: '';
106
114
  position: absolute;
107
- inset: 0 0 auto auto;
108
- width: 8px;
109
- height: 8px;
115
+ inset: 0;
110
116
  border-radius: 50%;
111
- background: fn.use-var(text-color, main);
112
- animation: dot-3 1.5s linear infinite;
117
+ border: 3px solid currentColor;
118
+ animation: loading-pulse 1.6s ease-out infinite;
119
+ }
120
+
121
+ &::after {
122
+ animation-delay: 0.8s;
113
123
  }
114
124
  }
115
125
  }
116
126
 
117
- // classic
118
- @include m.e(classic) {
127
+ // ============================================================
128
+ // morph — 形态变换
129
+ // 方块 ⟷ 圆形 来回变换,配合旋转
130
+ // ============================================================
131
+ @include m.e(morph) {
119
132
  @include m.bem($root-name, loader) {
120
- font-size: fn.use-var(font-size, title, default);
121
- line-height: 1.4em;
122
- letter-spacing: 6ch;
123
- width: 6ch;
124
- overflow: hidden;
125
- white-space: nowrap;
126
- color: #0000;
127
- text-shadow:
128
- calc(0 * 6ch) 0 #{fn.use-var(text-color, main)},
129
- calc(-1 * 6ch) 0 #{fn.use-var(text-color, main)},
130
- calc(-2 * 6ch) 0 #{fn.use-var(text-color, main)},
131
- calc(-3 * 6ch) 0 #{fn.use-var(text-color, main)},
132
- calc(-4 * 6ch) 0 #{fn.use-var(text-color, main)},
133
- calc(-5 * 6ch) 0 #{fn.use-var(text-color, main)};
134
- // calc(-6 * 6ch) 0 #{fn.use-var(text-color, main)},
135
- // calc(-7 * 6ch) 0 #{fn.use-var(text-color, main)},
136
- // calc(-8 * 6ch) 0 #{fn.use-var(text-color, main)},
137
- // calc(-9 * 6ch) 0 #{fn.use-var(text-color, main)};
138
- animation: classic 2s infinite linear;
139
-
140
- &::before {
141
- content: '加载中...';
142
- }
133
+ width: 34px;
134
+ aspect-ratio: 1;
135
+ background: currentColor;
136
+ animation: loading-morph 2.4s ease-in-out infinite;
143
137
  }
144
138
  }
145
139
  }
146
140
 
147
- // 线条
148
- @keyframes line-1 {
149
- 0% {
150
- background-size:
151
- 0 4px,
152
- 4px 0,
153
- 0 4px,
154
- 4px 0;
155
- }
156
- 12.5% {
157
- background-size:
158
- 100% 4px,
159
- 4px 0,
160
- 0 4px,
161
- 4px 0;
162
- }
163
- 25% {
164
- background-size:
165
- 100% 4px,
166
- 4px 100%,
167
- 0 4px,
168
- 4px 0;
169
- }
170
- 37.5% {
171
- background-size:
172
- 100% 4px,
173
- 4px 100%,
174
- 100% 4px,
175
- 4px 0;
176
- }
177
- 45%,
178
- 55% {
179
- background-size:
180
- 100% 4px,
181
- 4px 100%,
182
- 100% 4px,
183
- 4px 100%;
184
- }
185
- 62.5% {
186
- background-size:
187
- 0 4px,
188
- 4px 100%,
189
- 100% 4px,
190
- 4px 100%;
191
- }
192
- 75% {
193
- background-size:
194
- 0 4px,
195
- 4px 0,
196
- 100% 4px,
197
- 4px 100%;
198
- }
199
- 87.5% {
200
- background-size:
201
- 0 4px,
202
- 4px 0,
203
- 0 4px,
204
- 4px 100%;
205
- }
206
- 100% {
207
- background-size:
208
- 0 4px,
209
- 4px 0,
210
- 0 4px,
211
- 4px 0;
141
+ // ================================================================
142
+ // 关键帧
143
+ // ================================================================
144
+
145
+ @keyframes loading-spin {
146
+ to {
147
+ transform: rotate(1turn);
212
148
  }
213
149
  }
214
150
 
215
- @keyframes line-2 {
151
+ @keyframes loading-dot {
216
152
  0%,
217
- 49.9% {
218
- background-position:
219
- 0 0,
220
- 100% 0,
221
- 100% 100%,
222
- 0 100%;
223
- }
224
- 50%,
153
+ 80%,
225
154
  100% {
226
- background-position:
227
- 100% 0,
228
- 100% 100%,
229
- 0 100%,
230
- 0 0;
155
+ transform: scale(0.4);
156
+ opacity: 0.25;
231
157
  }
232
- }
233
-
234
- // 旋转
235
- @keyframes spinner {
236
- 100% {
237
- transform: rotate(0.5turn);
158
+ 40% {
159
+ transform: scale(1);
160
+ opacity: 1;
238
161
  }
239
162
  }
240
163
 
241
- // classic
242
- @keyframes classic {
243
- 9.09% {
244
- text-shadow:
245
- calc(0 * 6ch) -10px #{fn.use-var(text-color, main)},
246
- calc(-1 * 6ch) 0 #{fn.use-var(text-color, main)},
247
- calc(-2 * 6ch) 0 #{fn.use-var(text-color, main)},
248
- calc(-3 * 6ch) 0 #{fn.use-var(text-color, main)},
249
- calc(-4 * 6ch) 0 #{fn.use-var(text-color, main)},
250
- calc(-5 * 6ch) 0 #{fn.use-var(text-color, main)};
251
- // calc(-6 * 6ch) 0 #{fn.use-var(text-color, main)},
252
- // calc(-7 * 6ch) 0 #{fn.use-var(text-color, main)},
253
- // calc(-8 * 6ch) 0 #{fn.use-var(text-color, main)},
254
- // calc(-9 * 6ch) 0 #{fn.use-var(text-color, main)};
255
- }
256
- 18.18% {
257
- text-shadow:
258
- calc(0 * 6ch) 0 #{fn.use-var(text-color, main)},
259
- calc(-1 * 6ch) -10px #{fn.use-var(text-color, main)},
260
- calc(-2 * 6ch) 0 #{fn.use-var(text-color, main)},
261
- calc(-3 * 6ch) 0 #{fn.use-var(text-color, main)},
262
- calc(-4 * 6ch) 0 #{fn.use-var(text-color, main)},
263
- calc(-5 * 6ch) 0 #{fn.use-var(text-color, main)};
264
- // calc(-6 * 6ch) 0 #{fn.use-var(text-color, main)},
265
- // calc(-7 * 6ch) 0 #{fn.use-var(text-color, main)},
266
- // calc(-8 * 6ch) 0 #{fn.use-var(text-color, main)},
267
- // calc(-9 * 6ch) 0 #{fn.use-var(text-color, main)};
268
- }
269
- 27.27% {
270
- text-shadow:
271
- calc(0 * 6ch) 0 #{fn.use-var(text-color, main)},
272
- calc(-1 * 6ch) 0 #{fn.use-var(text-color, main)},
273
- calc(-2 * 6ch) -10px #{fn.use-var(text-color, main)},
274
- calc(-3 * 6ch) 0 #{fn.use-var(text-color, main)},
275
- calc(-4 * 6ch) 0 #{fn.use-var(text-color, main)},
276
- calc(-5 * 6ch) 0 #{fn.use-var(text-color, main)};
277
- // calc(-6 * 6ch) 0 #{fn.use-var(text-color, main)},
278
- // calc(-7 * 6ch) 0 #{fn.use-var(text-color, main)},
279
- // calc(-8 * 6ch) 0 #{fn.use-var(text-color, main)},
280
- // calc(-9 * 6ch) 0 #{fn.use-var(text-color, main)};
281
- }
282
- 36.36% {
283
- text-shadow:
284
- calc(0 * 6ch) 0 #{fn.use-var(text-color, main)},
285
- calc(-1 * 6ch) 0 #{fn.use-var(text-color, main)},
286
- calc(-2 * 6ch) 0 #{fn.use-var(text-color, main)},
287
- calc(-3 * 6ch) -10px #{fn.use-var(text-color, main)},
288
- calc(-4 * 6ch) 0 #{fn.use-var(text-color, main)},
289
- calc(-5 * 6ch) 0 #{fn.use-var(text-color, main)};
290
- // calc(-6 * 6ch) 0 #{fn.use-var(text-color, main)},
291
- // calc(-7 * 6ch) 0 #{fn.use-var(text-color, main)},
292
- // calc(-8 * 6ch) 0 #{fn.use-var(text-color, main)},
293
- // calc(-9 * 6ch) 0 #{fn.use-var(text-color, main)};
294
- }
295
- 45.45% {
296
- text-shadow:
297
- calc(0 * 6ch) 0 #{fn.use-var(text-color, main)},
298
- calc(-1 * 6ch) 0 #{fn.use-var(text-color, main)},
299
- calc(-2 * 6ch) 0 #{fn.use-var(text-color, main)},
300
- calc(-3 * 6ch) 0 #{fn.use-var(text-color, main)},
301
- calc(-4 * 6ch) -10px #{fn.use-var(text-color, main)},
302
- calc(-5 * 6ch) 0 #{fn.use-var(text-color, main)};
303
- // calc(-6 * 6ch) 0 #{fn.use-var(text-color, main)},
304
- // calc(-7 * 6ch) 0 #{fn.use-var(text-color, main)},
305
- // calc(-8 * 6ch) 0 #{fn.use-var(text-color, main)},
306
- // calc(-9 * 6ch) 0 #{fn.use-var(text-color, main)};
307
- }
308
- 54.54% {
309
- text-shadow:
310
- calc(0 * 6ch) 0 #{fn.use-var(text-color, main)},
311
- calc(-1 * 6ch) 0 #{fn.use-var(text-color, main)},
312
- calc(-2 * 6ch) 0 #{fn.use-var(text-color, main)},
313
- calc(-3 * 6ch) 0 #{fn.use-var(text-color, main)},
314
- calc(-4 * 6ch) 0 #{fn.use-var(text-color, main)},
315
- calc(-5 * 6ch) -10px #{fn.use-var(text-color, main)};
316
- // calc(-6 * 6ch) 0 #{fn.use-var(text-color, main)},
317
- // calc(-7 * 6ch) 0 #{fn.use-var(text-color, main)},
318
- // calc(-8 * 6ch) 0 #{fn.use-var(text-color, main)},
319
- // calc(-9 * 6ch) 0 #{fn.use-var(text-color, main)};
320
- }
321
- 63.63% {
322
- text-shadow:
323
- calc(0 * 6ch) 0 #{fn.use-var(text-color, main)},
324
- calc(-1 * 6ch) 0 #{fn.use-var(text-color, main)},
325
- calc(-2 * 6ch) 0 #{fn.use-var(text-color, main)},
326
- calc(-3 * 6ch) 0 #{fn.use-var(text-color, main)},
327
- calc(-4 * 6ch) 0 #{fn.use-var(text-color, main)},
328
- calc(-5 * 6ch) 0 #{fn.use-var(text-color, main)};
329
- // calc(-6 * 6ch) -10px #{fn.use-var(text-color, main)},
330
- // calc(-7 * 6ch) 0 #{fn.use-var(text-color, main)},
331
- // calc(-8 * 6ch) 0 #{fn.use-var(text-color, main)},
332
- // calc(-9 * 6ch) 0 #{fn.use-var(text-color, main)};
333
- }
334
- 72.72% {
335
- text-shadow:
336
- calc(0 * 6ch) 0 #{fn.use-var(text-color, main)},
337
- calc(-1 * 6ch) 0 #{fn.use-var(text-color, main)},
338
- calc(-2 * 6ch) 0 #{fn.use-var(text-color, main)},
339
- calc(-3 * 6ch) 0 #{fn.use-var(text-color, main)},
340
- calc(-4 * 6ch) 0 #{fn.use-var(text-color, main)},
341
- calc(-5 * 6ch) 0 #{fn.use-var(text-color, main)};
342
- // calc(-6 * 6ch) 0 #{fn.use-var(text-color, main)},
343
- // calc(-7 * 6ch) -10px #{fn.use-var(text-color, main)},
344
- // calc(-8 * 6ch) 0 #{fn.use-var(text-color, main)},
345
- // calc(-9 * 6ch) 0 #{fn.use-var(text-color, main)};
346
- }
347
- 81.81% {
348
- text-shadow:
349
- calc(0 * 6ch) 0 #{fn.use-var(text-color, main)},
350
- calc(-1 * 6ch) 0 #{fn.use-var(text-color, main)},
351
- calc(-2 * 6ch) 0 #{fn.use-var(text-color, main)},
352
- calc(-3 * 6ch) 0 #{fn.use-var(text-color, main)},
353
- calc(-4 * 6ch) 0 #{fn.use-var(text-color, main)},
354
- calc(-5 * 6ch) 0 #{fn.use-var(text-color, main)};
355
- // calc(-6 * 6ch) 0 #{fn.use-var(text-color, main)},
356
- // calc(-7 * 6ch) 0 #{fn.use-var(text-color, main)},
357
- // calc(-8 * 6ch) -10px #{fn.use-var(text-color, main)},
358
- // calc(-9 * 6ch) 0 #{fn.use-var(text-color, main)};
164
+ @keyframes loading-shimmer {
165
+ 0% {
166
+ transform: translateX(-100%);
359
167
  }
360
- 90.90% {
361
- text-shadow:
362
- calc(0 * 6ch) 0 #{fn.use-var(text-color, main)},
363
- calc(-1 * 6ch) 0 #{fn.use-var(text-color, main)},
364
- calc(-2 * 6ch) 0 #{fn.use-var(text-color, main)},
365
- calc(-3 * 6ch) 0 #{fn.use-var(text-color, main)},
366
- calc(-4 * 6ch) 0 #{fn.use-var(text-color, main)},
367
- calc(-5 * 6ch) 0 #{fn.use-var(text-color, main)};
368
- // calc(-6 * 6ch) 0 #{fn.use-var(text-color, main)},
369
- // calc(-7 * 6ch) 0 #{fn.use-var(text-color, main)},
370
- // calc(-8 * 6ch) 0 #{fn.use-var(text-color, main)},
371
- // calc(-9 * 6ch) -10px #{fn.use-var(text-color, main)};
168
+ 100% {
169
+ transform: translateX(100%);
372
170
  }
373
171
  }
374
172
 
375
- @keyframes dot-0 {
376
- 0%,
377
- 30% {
378
- background-position:
379
- 0 0,
380
- 50% 0;
381
- }
382
- 33% {
383
- background-position:
384
- 0 100%,
385
- 50% 0;
386
- }
387
- 41%,
388
- 63% {
389
- background-position:
390
- 0 0,
391
- 50% 0;
392
- }
393
- 66% {
394
- background-position:
395
- 0 0,
396
- 50% 100%;
173
+ @keyframes loading-pulse {
174
+ 0% {
175
+ transform: scale(0.2);
176
+ opacity: 1;
397
177
  }
398
- 74%,
399
178
  100% {
400
- background-position:
401
- 0 0,
402
- 50% 0;
179
+ transform: scale(1.35);
180
+ opacity: 0;
403
181
  }
404
182
  }
405
- @keyframes dot-1 {
406
- 90% {
407
- transform: translateY(0);
408
- }
409
- 95% {
410
- transform: translateY(15px);
411
- }
183
+
184
+ @keyframes loading-morph {
185
+ 0%,
412
186
  100% {
413
- transform: translateY(15px);
414
- left: calc(100% - 8px);
187
+ border-radius: 50%;
188
+ transform: rotate(0deg) scale(1);
415
189
  }
416
- }
417
- @keyframes dot-2 {
418
- 100% {
419
- top: -0.1px;
190
+ 25% {
191
+ border-radius: 8px;
192
+ transform: rotate(45deg) scale(0.7);
420
193
  }
421
- }
422
- @keyframes dot-3 {
423
- 0%,
424
- 80%,
425
- 100% {
426
- transform: translate(0);
194
+ 50% {
195
+ border-radius: 2px;
196
+ transform: rotate(90deg) scale(1);
427
197
  }
428
- 90% {
429
- transform: translate(26px);
198
+ 75% {
199
+ border-radius: 8px;
200
+ transform: rotate(135deg) scale(0.7);
430
201
  }
431
202
  }
@@ -124,12 +124,10 @@ $root-name: table;
124
124
  z-index: 1;
125
125
  user-select: none;
126
126
 
127
- &:hover {
128
- @include m.bem($root-name, cell) {
129
- box-shadow:
130
- -1px 0px var(--u-table-border-color) inset,
131
- 0px -1px var(--u-table-border-color) inset;
132
- }
127
+ @include m.bem($root-name, cell) {
128
+ background-color: var(--u-table-header-bg);
129
+ font-weight: 500;
130
+ color: var(--u-table-header-color);
133
131
  }
134
132
 
135
133
  @include m.is(multistage) {
@@ -142,14 +140,6 @@ $root-name: table;
142
140
  }
143
141
  }
144
142
 
145
- @include m.e(head) {
146
- @include m.bem($root-name, cell) {
147
- background-color: var(--u-table-header-bg);
148
- font-weight: normal;
149
- color: var(--u-table-header-color);
150
- }
151
- }
152
-
153
143
  @include m.e(resize-handle) {
154
144
  position: absolute;
155
145
  width: 4px;
@@ -1,6 +1,6 @@
1
1
  import type { DeconstructValue } from '@veltra/utils'
2
2
 
3
- export type LoadingType = 'classic' | 'line' | 'dot' | 'spinner'
3
+ export type LoadingType = 'classic' | 'line' | 'dot' | 'spinner' | 'morph'
4
4
 
5
5
  /** loading组件属性 */
6
6
  export interface LoadingProps {