encre_css/plugins/interactivity/
mod.rs1pub mod accent_color;
3pub mod appearance;
4pub mod caret_color;
5pub mod cursor;
6pub mod pointer_events;
7pub mod resize;
8pub mod scroll_behavior;
9pub mod scroll_margin;
10pub mod scroll_padding;
11pub mod scroll_snap_align;
12pub mod scroll_snap_stop;
13pub mod scroll_snap_type;
14pub mod touch_action;
15pub mod user_select;
16pub mod will_change;
17
18#[cfg(test)]
19mod tests {
20 use crate::{generate, utils::testing::base_config};
21
22 use pretty_assertions::assert_eq;
23
24 #[test]
25 fn accent_color() {
26 assert_eq!(
27 generate(["accent-red-400"], &base_config()),
28 ".accent-red-400 {
29 accent-color: oklch(70.4% .191 22.216);
30}"
31 );
32 assert_eq!(
33 generate(["accent-[rgb(12,12,12)]"], &base_config()),
34 r".accent-\[rgb\(12\,12\,12\)\] {
35 accent-color: rgb(12,12,12);
36}"
37 );
38 }
39
40 #[test]
41 fn appearance() {
42 assert_eq!(
43 generate(["appearance-none"], &base_config()),
44 ".appearance-none {
45 -webkit-appearance: none;
46 -moz-appearance: none;
47 appearance: none;
48}"
49 );
50 }
51
52 #[test]
53 fn caret_color() {
54 assert_eq!(
55 generate(["caret-red-400"], &base_config()),
56 ".caret-red-400 {
57 caret-color: oklch(70.4% .191 22.216);
58}"
59 );
60 assert_eq!(
61 generate(["caret-[rgb(12,12,12)]"], &base_config()),
62 r".caret-\[rgb\(12\,12\,12\)\] {
63 caret-color: rgb(12,12,12);
64}"
65 );
66 }
67
68 #[test]
69 fn cursor() {
70 assert_eq!(
71 generate(["cursor-auto"], &base_config()),
72 ".cursor-auto {
73 cursor: auto;
74}"
75 );
76 assert_eq!(
77 generate(["cursor-zoom-out"], &base_config()),
78 ".cursor-zoom-out {
79 cursor: zoom-out;
80}"
81 );
82 assert_eq!(
83 generate(["cursor-[url(spinner.svg)_4_5,_progress]"], &base_config()),
84 r".cursor-\[url\(spinner\.svg\)_4_5\,_progress\] {
85 cursor: url(spinner.svg) 4 5, progress;
86}"
87 );
88 }
89
90 #[test]
91 fn pointer_events() {
92 assert_eq!(
93 generate(["pointer-events-none"], &base_config()),
94 ".pointer-events-none {
95 pointer-events: none;
96}"
97 );
98 }
99
100 #[test]
101 fn resize() {
102 assert_eq!(
103 generate(["resize"], &base_config()),
104 ".resize {
105 resize: both;
106}"
107 );
108 assert_eq!(
109 generate(["resize-y"], &base_config()),
110 ".resize-y {
111 resize: vertical;
112}"
113 );
114 }
115
116 #[test]
117 fn scroll_behavior() {
118 assert_eq!(
119 generate(["scroll-smooth"], &base_config()),
120 ".scroll-smooth {
121 scroll-behavior: smooth;
122}"
123 );
124 }
125
126 #[test]
127 fn margin() {
128 assert_eq!(
129 generate(["scroll-m-2"], &base_config()),
130 ".scroll-m-2 {
131 scroll-margin: 0.5rem;
132}"
133 );
134 assert_eq!(
135 generate(["scroll-mx-[2px]"], &base_config()),
136 r".scroll-mx-\[2px\] {
137 scroll-margin-inline: 2px;
138}"
139 );
140 }
141
142 #[test]
143 fn padding() {
144 assert_eq!(
145 generate(["scroll-p-2"], &base_config()),
146 ".scroll-p-2 {
147 scroll-padding: 0.5rem;
148}"
149 );
150 assert_eq!(
151 generate(["scroll-px-[2px]"], &base_config()),
152 r".scroll-px-\[2px\] {
153 scroll-padding-inline: 2px;
154}"
155 );
156 }
157
158 #[test]
159 fn scroll_snap_align() {
160 assert_eq!(
161 generate(["snap-center"], &base_config()),
162 ".snap-center {
163 scroll-snap-align: center;
164}"
165 );
166 assert_eq!(
167 generate(["snap-align-none"], &base_config()),
168 ".snap-align-none {
169 scroll-snap-align: none;
170}"
171 );
172 }
173
174 #[test]
175 fn scroll_snap_stop() {
176 assert_eq!(
177 generate(["snap-always"], &base_config()),
178 ".snap-always {
179 scroll-snap-stop: always;
180}"
181 );
182 }
183
184 #[test]
185 fn scroll_snap_type() {
186 assert_eq!(
187 generate(["snap-none"], &base_config()),
188 ".snap-none {
189 -ms-scroll-snap-type: none;
190 scroll-snap-type: none;
191}"
192 );
193 assert_eq!(
194 generate(["snap-both"], &base_config()),
195 ".snap-both {
196 -ms-scroll-snap-type: both var(--en-scroll-snap-strictness);
197 scroll-snap-type: both var(--en-scroll-snap-strictness);
198}"
199 );
200 assert_eq!(
201 generate(["snap-mandatory"], &base_config()),
202 ".snap-mandatory {
203 --en-scroll-snap-strictness: mandatory;
204}"
205 );
206 }
207
208 #[test]
209 fn touch_action() {
210 assert_eq!(
211 generate(["touch-pan-right"], &base_config()),
212 ".touch-pan-right {
213 touch-action: pan-right;
214}"
215 );
216 assert_eq!(
217 generate(["touch-none"], &base_config()),
218 ".touch-none {
219 touch-action: none;
220}"
221 );
222 }
223
224 #[test]
225 fn user_select() {
226 assert_eq!(
227 generate(["select-all"], &base_config()),
228 ".select-all {
229 user-select: all;
230}"
231 );
232 }
233
234 #[test]
235 fn will_change() {
236 assert_eq!(
237 generate(["will-change-contents"], &base_config()),
238 ".will-change-contents {
239 will-change: contents;
240}"
241 );
242 }
243}