@neatui/css 4.5.0 → 4.7.0

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 (32) hide show
  1. package/components/anim/am-view-aa.scss +17 -39
  2. package/components/anim/am-view-ab.scss +10 -50
  3. package/components/anim/am-view-ac.scss +27 -66
  4. package/components/anim/am-view-ad.scss +12 -62
  5. package/components/anim/am-view-ae.scss +10 -60
  6. package/components/anim/am-view-af.scss +23 -64
  7. package/components/anim/am-view-ag.scss +12 -293
  8. package/components/anim/am-view-ah.scss +7 -70
  9. package/components/anim/am-view-ai.scss +10 -67
  10. package/components/anim/am-view-aj.scss +9 -60
  11. package/components/anim/am-view-ak.scss +18 -59
  12. package/components/anim/am-view-al.scss +11 -50
  13. package/components/anim/am-view-am.scss +11 -49
  14. package/components/anim/am-view-an.scss +12 -62
  15. package/components/anim/am-view-ao.scss +21 -68
  16. package/components/anim/am-view-ap.scss +16 -47
  17. package/components/anim/am-view-aq.scss +14 -47
  18. package/components/anim/am-view-ar.scss +13 -63
  19. package/components/anim/am-view-as.scss +10 -50
  20. package/components/anim/am-view-at.scss +10 -54
  21. package/components/anim/am-view-core.scss +36 -0
  22. package/components/form/form@a/textarea.scss +2 -59
  23. package/components/form/form@b/textarea.scss +2 -59
  24. package/components/form/form@c/textarea.scss +5 -61
  25. package/components/form/form@d/textarea.scss +2 -59
  26. package/components/form/vars.scss +101 -0
  27. package/components/table/table@d.scss +7 -0
  28. package/dist/neatui.css +589 -860
  29. package/dist/neatui.min.css +13 -1
  30. package/dist/neatui.preview.css +589 -860
  31. package/dist/neatui.preview.min.css +13 -1
  32. package/package.json +1 -1
@@ -1,7 +1,8 @@
1
- // 显示动画
1
+ @use './am-view-core' as *;
2
+
2
3
  @keyframes am-show-aq {
3
4
  0% {
4
- transform: scale3d(0.8, 0.8, 1);
5
+ transform: scale3d(0.838, 0.838, 1);
5
6
  opacity: 0;
6
7
  }
7
8
  30% {
@@ -9,11 +10,11 @@
9
10
  opacity: 1;
10
11
  }
11
12
  50% {
12
- transform: scale3d(0.95, 0.95, 1);
13
+ transform: scale3d(0.99, 0.99, 1);
13
14
  opacity: 1;
14
15
  }
15
16
  70% {
16
- transform: scale3d(1.01, 1.01, 1);
17
+ transform: scale3d(1.004, 1.004, 1);
17
18
  opacity: 1;
18
19
  }
19
20
  100% {
@@ -22,57 +23,47 @@
22
23
  }
23
24
  }
24
25
 
25
- // 隐藏动画
26
26
  @keyframes am-hide-aq {
27
27
  0% {
28
28
  transform: scale3d(1, 1, 1);
29
+ opacity: 1;
29
30
  }
30
31
  40%,
31
32
  50% {
32
- transform: scale3d(1.05, 1.05, 1);
33
- }
34
- 70% {
35
- opacity: 1;
33
+ transform: scale3d(1.04, 1.04, 1);
36
34
  }
37
35
  100% {
38
- transform: scale3d(0.8, 0.8, 1);
36
+ transform: scale3d(0.838, 0.838, 1);
39
37
  opacity: 0;
40
38
  }
41
39
  }
42
40
 
43
- // 引用显示
44
41
  %am-show-aq {
45
- transform: scale3d(0.8, 0.8, 1);
42
+ transform: scale3d(0.838, 0.838, 1);
46
43
  opacity: 0;
47
- transform-style: preserve-3d;
48
44
  }
49
45
 
50
- // 引用隐藏
51
46
  %am-hide-aq {
52
47
  transform: scale3d(1, 1, 1);
53
48
  opacity: 1;
54
- transform-style: preserve-3d;
55
49
  }
56
50
 
57
- // 传参调用
58
51
  @mixin am-view-aq() {
59
52
  &.show,
60
53
  &[view='2'] {
61
- & > * {
54
+ & > * > * {
62
55
  @extend %am-show-aq;
63
- animation: am-show-aq 350ms 100ms both;
56
+ animation: am-show-aq 350ms ease both;
64
57
  }
65
58
  }
66
59
 
67
60
  &.hide,
68
61
  &[view='1'] {
69
- opacity: 0;
70
- transition: (350ms + 100ms) * (4 * 0.1) (350ms + 100ms) * (6 * 0.1);
71
62
  pointer-events: none;
72
63
 
73
- & > * {
64
+ & > * > * {
74
65
  @extend %am-hide-aq;
75
- animation: am-hide-aq 350ms 100ms both;
66
+ animation: am-hide-aq $am-hide-time $am-hide-ease both;
76
67
  }
77
68
  }
78
69
 
@@ -82,30 +73,6 @@
82
73
  }
83
74
  }
84
75
 
85
- // 全套引用
86
76
  [am-view='aq'] {
87
- &.show,
88
- &[view='2'] {
89
- & > * {
90
- @extend %am-show-aq;
91
- animation: am-show-aq 350ms 100ms both;
92
- }
93
- }
94
-
95
- &.hide,
96
- &[view='1'] {
97
- opacity: 0;
98
- transition: (350ms + 100ms) * (4 * 0.1) (350ms + 100ms) * (6 * 0.1);
99
- pointer-events: none;
100
-
101
- & > * {
102
- @extend %am-hide-aq;
103
- animation: am-hide-aq 350ms 100ms both;
104
- }
105
- }
106
-
107
- &.none,
108
- &[view='0'] {
109
- display: none;
110
- }
77
+ @include am-view-aq();
111
78
  }
@@ -1,109 +1,59 @@
1
- // 显示动画
1
+ @use './am-view-core' as *;
2
+
2
3
  @keyframes am-show-ar {
3
4
  0% {
4
- transform: scale3d(1, 1, 1) translateY(30%);
5
5
  opacity: 0;
6
+ transform: translate3d(0, 14px, 0);
6
7
  }
7
- 30% {
8
- transform: scale3d(1, 1, 1) translateY(-2%);
9
- opacity: 0.8;
10
- }
11
- 50% {
12
- transform: scale3d(1, 1, 1) translateY(1%);
13
- }
14
- 75% {
15
- transform: scale3d(1, 1, 1) translateY(-0.5%);
8
+ 68% {
16
9
  opacity: 1;
10
+ transform: translate3d(0, -2px, 0);
17
11
  }
18
12
  100% {
19
- transform: scale3d(1, 1, 1) translateY(0%);
20
13
  opacity: 1;
14
+ transform: translate3d(0, 0, 0);
21
15
  }
22
16
  }
23
17
 
24
- // 隐藏动画
25
18
  @keyframes am-hide-ar {
26
19
  0% {
27
- transform: scale3d(1, 1, 1) translateY(0%);
28
- opacity: 1;
29
- }
30
- 50%,
31
- 60% {
32
- transform: scale3d(1, 1, 1) translateY(5%);
33
20
  opacity: 1;
21
+ transform: translate3d(0, 0, 0);
34
22
  }
35
23
  100% {
36
- transform: scale3d(1, 1, 1) translateY(-30%);
37
24
  opacity: 0;
25
+ transform: translate3d(0, -12px, 0);
38
26
  }
39
27
  }
40
28
 
41
- // 引用显示
42
29
  %am-show-ar {
43
- transform: scale(0.8, 0.8) translateY(100%);
44
- opacity: 0.8;
45
- transform-style: preserve-3d;
30
+ opacity: 0;
31
+ transform: translate3d(0, 14px, 0);
46
32
  }
47
33
 
48
- // 引用隐藏
49
34
  %am-hide-ar {
50
- transform: scale(1, 1) translateY(0);
51
35
  opacity: 1;
52
- transform-style: preserve-3d;
36
+ transform: translate3d(0, 0, 0);
53
37
  }
54
38
 
55
- // 传参调用
56
39
  @mixin am-view-ar() {
57
40
  &.show,
58
41
  &[view='2'] {
59
42
  & > * {
60
43
  @extend %am-show-ar;
61
- animation: am-show-ar 350ms 100ms both;
62
44
  }
63
45
  }
64
46
 
65
47
  &.hide,
66
48
  &[view='1'] {
67
- opacity: 0;
68
- transition: (350ms + 100ms) * (4 * 0.1) (350ms + 100ms) * (6 * 0.1);
69
- pointer-events: none;
70
-
71
49
  & > * {
72
50
  @extend %am-hide-ar;
73
- animation: am-hide-ar 350ms 100ms both;
74
51
  }
75
52
  }
76
53
 
77
- &.none,
78
- &[view='0'] {
79
- display: none;
80
- }
54
+ @include am-view-bind(am-show-ar, am-hide-ar);
81
55
  }
82
56
 
83
- // 全套引用
84
57
  [am-view='ar'] {
85
- &.show,
86
- &[view='2'] {
87
- & > * {
88
- @extend %am-show-ar;
89
- animation: am-show-ar 350ms 100ms both;
90
- }
91
- }
92
-
93
- &.hide,
94
- &[view='1'] {
95
- opacity: 0;
96
- transition: (350ms + 100ms) * (4 * 0.1) (350ms + 100ms) * (6 * 0.1);
97
- pointer-events: none;
98
-
99
- & > * {
100
- @extend %am-hide-ar;
101
- animation: am-hide-ar 350ms 100ms both;
102
- }
103
- }
104
-
105
- &.none,
106
- &[view='0'] {
107
- display: none;
108
- }
58
+ @include am-view-ar();
109
59
  }
@@ -1,95 +1,55 @@
1
- // 显示动画
1
+ @use './am-view-core' as *;
2
+
2
3
  @keyframes am-show-as {
3
4
  0% {
4
- transform: translateY(-15px);
5
5
  opacity: 0;
6
+ transform: translate3d(0, -20px, 0);
6
7
  }
7
8
  100% {
8
- transform: translateY(0);
9
9
  opacity: 1;
10
+ transform: translate3d(0, 0, 0);
10
11
  }
11
12
  }
12
13
 
13
- // 隐藏动画
14
14
  @keyframes am-hide-as {
15
15
  0% {
16
- transform: translateY(0);
17
16
  opacity: 1;
17
+ transform: translate3d(0, 0, 0);
18
18
  }
19
-
20
19
  100% {
21
- transform: translateY(-15px);
22
20
  opacity: 0;
21
+ transform: translate3d(0, -20px, 0);
23
22
  }
24
23
  }
25
24
 
26
- // 引用显示
27
25
  %am-show-as {
28
- transform: translateY(-15px);
29
26
  opacity: 0;
30
- transform-style: preserve-3d;
27
+ transform: translate3d(0, -20px, 0);
31
28
  }
32
29
 
33
- // 引用隐藏
34
30
  %am-hide-as {
35
- transform: translateY(0);
36
31
  opacity: 1;
37
- transform-style: preserve-3d;
32
+ transform: translate3d(0, 0, 0);
38
33
  }
39
34
 
40
- // 传参调用
41
35
  @mixin am-view-as() {
42
36
  &.show,
43
37
  &[view='2'] {
44
38
  & > * {
45
39
  @extend %am-show-as;
46
- animation: am-show-as 350ms 100ms both;
47
40
  }
48
41
  }
49
42
 
50
43
  &.hide,
51
44
  &[view='1'] {
52
- opacity: 0;
53
- transition: (350ms + 100ms) * (5/10) (350ms + 100ms) * (5/10);
54
- // transition: 100ms 350ms;
55
- pointer-events: none;
56
-
57
45
  & > * {
58
46
  @extend %am-hide-as;
59
- animation: am-hide-as 350ms 100ms both;
60
47
  }
61
48
  }
62
49
 
63
- &.none,
64
- &[view='0'] {
65
- display: none;
66
- }
50
+ @include am-view-bind(am-show-as, am-hide-as);
67
51
  }
68
52
 
69
- // 全套引用
70
53
  [am-view='as'] {
71
- &.show,
72
- &[view='2'] {
73
- & > * {
74
- @extend %am-show-as;
75
- animation: am-show-as 350ms 100ms both;
76
- }
77
- }
78
-
79
- &.hide,
80
- &[view='1'] {
81
- opacity: 0;
82
- transition: (350ms + 100ms) * (4 * 0.1) (350ms + 100ms) * (6 * 0.1);
83
- pointer-events: none;
84
-
85
- & > * {
86
- @extend %am-hide-as;
87
- animation: am-hide-as 350ms 100ms both;
88
- }
89
- }
90
-
91
- &.none,
92
- &[view='0'] {
93
- display: none;
94
- }
54
+ @include am-view-as();
95
55
  }
@@ -1,99 +1,55 @@
1
- // 显示动画
1
+ @use './am-view-core' as *;
2
+
2
3
  @keyframes am-show-at {
3
4
  0% {
4
5
  opacity: 0;
5
- transform: scale(0.9);
6
- }
7
- 25% {
8
- transform: scale(0.9);
6
+ transform: scale3d(0.96, 0.96, 1);
9
7
  }
10
8
  100% {
11
- transform: scale(1);
12
9
  opacity: 1;
10
+ transform: scale3d(1, 1, 1);
13
11
  }
14
12
  }
15
13
 
16
- // 隐藏动画
17
14
  @keyframes am-hide-at {
18
15
  0% {
19
- transform: scale(1);
20
16
  opacity: 1;
21
- }
22
- 50% {
23
- transform: scale(0.9);
17
+ transform: scale3d(1, 1, 1);
24
18
  }
25
19
  100% {
26
20
  opacity: 0;
21
+ transform: scale3d(0.96, 0.96, 1);
27
22
  }
28
23
  }
29
24
 
30
- // 引用显示
31
25
  %am-show-at {
32
- transform: translateY(-15px);
33
26
  opacity: 0;
34
- transform-style: preserve-3d;
27
+ transform: scale3d(0.96, 0.96, 1);
35
28
  }
36
29
 
37
- // 引用隐藏
38
30
  %am-hide-at {
39
- transform: translateY(0);
40
31
  opacity: 1;
41
- transform-style: preserve-3d;
32
+ transform: scale3d(1, 1, 1);
42
33
  }
43
34
 
44
- // 传参调用
45
35
  @mixin am-view-at() {
46
36
  &.show,
47
37
  &[view='2'] {
48
38
  & > * {
49
39
  @extend %am-show-at;
50
- animation: am-show-at 350ms cubic-bezier(0.25, 0.1, 0.25, 1) 100ms 1 both;
51
40
  }
52
41
  }
53
42
 
54
43
  &.hide,
55
44
  &[view='1'] {
56
- opacity: 0;
57
- transition: (350ms + 100ms) * (5/10) (350ms + 100ms) * (5/10);
58
- // transition: 100ms 350ms;
59
- pointer-events: none;
60
-
61
45
  & > * {
62
46
  @extend %am-hide-at;
63
- animation: am-hide-at 350ms 100ms both;
64
47
  }
65
48
  }
66
49
 
67
- &.none,
68
- &[view='0'] {
69
- display: none;
70
- }
50
+ @include am-view-bind(am-show-at, am-hide-at);
71
51
  }
72
52
 
73
- // 全套引用
74
53
  [am-view='at'] {
75
- &.show,
76
- &[view='2'] {
77
- & > * {
78
- @extend %am-show-at;
79
- animation: am-show-at 350ms cubic-bezier(0.25, 0.1, 0.25, 1) 100ms 1 both;
80
- }
81
- }
82
-
83
- &.hide,
84
- &[view='1'] {
85
- opacity: 0;
86
- transition: (350ms + 100ms) * (4 * 0.1) (350ms + 100ms) * (6 * 0.1);
87
- pointer-events: none;
88
-
89
- & > * {
90
- @extend %am-hide-at;
91
- animation: am-hide-at 350ms 100ms both;
92
- }
93
- }
94
-
95
- &.none,
96
- &[view='0'] {
97
- display: none;
98
- }
54
+ @include am-view-at();
99
55
  }
@@ -0,0 +1,36 @@
1
+ // Shared Layer / am-view motion.
2
+ // Never fade the overlay host: host opacity multiplies into the panel and flashes.
3
+ $am-show-ease: cubic-bezier(0.22, 0.82, 0.24, 1);
4
+ $am-hide-ease: cubic-bezier(0.4, 0, 0.2, 1);
5
+ $am-show-time: 380ms;
6
+ $am-hide-time: 280ms;
7
+
8
+ @mixin am-view-bind(
9
+ $show-anim,
10
+ $hide-anim,
11
+ $show-time: $am-show-time,
12
+ $hide-time: $am-hide-time,
13
+ $show-ease: $am-show-ease,
14
+ $hide-ease: $am-hide-ease
15
+ ) {
16
+ &.show,
17
+ &[view='2'] {
18
+ & > * {
19
+ animation: $show-anim $show-time $show-ease both;
20
+ }
21
+ }
22
+
23
+ &.hide,
24
+ &[view='1'] {
25
+ pointer-events: none;
26
+
27
+ & > * {
28
+ animation: $hide-anim $hide-time $hide-ease both;
29
+ }
30
+ }
31
+
32
+ &.none,
33
+ &[view='0'] {
34
+ display: none;
35
+ }
36
+ }
@@ -11,17 +11,11 @@ size 规定输入字段的宽度(以字符计)。
11
11
  step 规定输入字段的合法数字间隔。
12
12
  value 规定输入字段的默认值。
13
13
  */
14
- @use 'sass:math';
15
14
  @use '../vars.scss' as *;
16
15
 
17
16
  [ui-form~='@a'] {
18
17
  &[ui-form~='type:textarea'] {
19
- position: relative;
20
- min-width: 2.5em;
21
- line-height: 1.5em;
22
- padding: 0.5em;
23
- border-radius: 0.35em;
24
- transition: all 0.5s;
18
+ @include textarea-structure(0.25em, 0.25em);
25
19
 
26
20
  // @include theme {
27
21
  border: 1px solid var(--co-case);
@@ -73,7 +67,7 @@ value 规定输入字段的默认值。
73
67
  }
74
68
 
75
69
  &,
76
- textarea {
70
+ > textarea {
77
71
  &:-webkit-autofill {
78
72
  box-shadow: 0 0 0 1000px var(--co-fore) inset;
79
73
  color: var(--co-read);
@@ -85,56 +79,5 @@ value 规定输入字段的默认值。
85
79
  }
86
80
  }
87
81
 
88
- textarea {
89
- width: 100%;
90
- }
91
-
92
- &[ui-form~='disabled'] {
93
- cursor: not-allowed;
94
- opacity: 0.5;
95
- textarea {
96
- cursor: not-allowed;
97
- }
98
- }
99
-
100
- &[ui-form~='readonly'] {
101
- cursor: text;
102
- textarea {
103
- cursor: text;
104
- }
105
- }
106
-
107
- &[ui-form~=':block'] {
108
- display: flex;
109
- width: 100%;
110
- flex-grow: 1;
111
- flex-shrink: 1;
112
- }
113
-
114
- &[ui-form~='preview'] {
115
- &,
116
- &:hover,
117
- &:focus-within {
118
- cursor: default;
119
- border-color: transparent !important;
120
- background-color: transparent !important;
121
- box-shadow: none !important;
122
- }
123
-
124
- textarea {
125
- cursor: default;
126
- }
127
- }
128
-
129
- $sz_base: 1.5em;
130
- @each $s in $form-sz {
131
- &[ui-form~='sz:#{$s}'] {
132
- textarea {
133
- height: $sz_base;
134
- min-height: $sz_base;
135
- }
136
- }
137
- $sz_base: $sz_base + 0.5;
138
- }
139
82
  }
140
83
  }
@@ -11,17 +11,11 @@ size 规定输入字段的宽度(以字符计)。
11
11
  step 规定输入字段的合法数字间隔。
12
12
  value 规定输入字段的默认值。
13
13
  */
14
- @use 'sass:math';
15
14
  @use '../vars.scss' as *;
16
15
 
17
16
  [ui-form~='@b'] {
18
17
  &[ui-form~='type:textarea'] {
19
- position: relative;
20
- min-width: 2.5em;
21
- line-height: 1.5em;
22
- padding: 0.5em;
23
- border-radius: 0.35em;
24
- transition: all 0.5s;
18
+ @include textarea-structure(0, 0);
25
19
 
26
20
  border: 1px solid var(--co-case);
27
21
  background-color: var(--co-fore);
@@ -69,7 +63,7 @@ value 规定输入字段的默认值。
69
63
  }
70
64
 
71
65
  &,
72
- textarea {
66
+ > textarea {
73
67
  &:-webkit-autofill {
74
68
  box-shadow: 0 0 0 1000px var(--co-fore) inset;
75
69
  color: var(--co-read);
@@ -81,56 +75,5 @@ value 规定输入字段的默认值。
81
75
  }
82
76
  }
83
77
 
84
- textarea {
85
- width: 100%;
86
- }
87
-
88
- &[ui-form~='disabled'] {
89
- cursor: not-allowed;
90
- opacity: 0.5;
91
- textarea {
92
- cursor: not-allowed;
93
- }
94
- }
95
-
96
- &[ui-form~='readonly'] {
97
- cursor: text;
98
- textarea {
99
- cursor: text;
100
- }
101
- }
102
-
103
- &[ui-form~=':block'] {
104
- display: flex;
105
- width: 100%;
106
- flex-grow: 1;
107
- flex-shrink: 1;
108
- }
109
-
110
- &[ui-form~='preview'] {
111
- &,
112
- &:hover,
113
- &:focus-within {
114
- cursor: default;
115
- border-color: transparent !important;
116
- background-color: transparent !important;
117
- box-shadow: none !important;
118
- }
119
-
120
- textarea {
121
- cursor: default;
122
- }
123
- }
124
-
125
- $sz_base: 1.5em;
126
- @each $s in $form-sz {
127
- &[ui-form~='sz:#{$s}'] {
128
- textarea {
129
- height: $sz_base;
130
- min-height: $sz_base;
131
- }
132
- }
133
- $sz_base: $sz_base + 0.5;
134
- }
135
78
  }
136
79
  }