-
-
Notifications
You must be signed in to change notification settings - Fork 280
Expand file tree
/
Copy path_Unbounded.svelte
More file actions
105 lines (100 loc) · 2.59 KB
/
_Unbounded.svelte
File metadata and controls
105 lines (100 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<p>
<span
use:Ripple={{
surface: true,
unbounded: true,
// addClass and removeClass need to be provided, since
// we have a "class" attribute on this element. If we had
// a "style" attribute, we would also need addStyle.
addClass: (className) => {
if (!rippleClasses[className]) {
rippleClasses[className] = true;
}
},
removeClass: (className) => {
if (rippleClasses[className]) {
delete rippleClasses[className];
}
},
}}
tabindex="0"
role="button"
class="unbounded {Object.keys(rippleClasses).join(' ')}"
>
D
</span>
<span
use:Ripple={{
surface: true,
unbounded: true,
color: 'primary',
// addClass and removeClass need to be provided, since
// we have a "class" attribute on this element. If we had
// a "style" attribute, we would also need addStyle.
addClass: (className) => {
if (!primaryRippleClasses[className]) {
primaryRippleClasses[className] = true;
}
},
removeClass: (className) => {
if (primaryRippleClasses[className]) {
delete primaryRippleClasses[className];
}
},
}}
tabindex="0"
role="button"
class="unbounded {Object.keys(primaryRippleClasses).join(' ')}"
>
P
</span>
<span
use:Ripple={{
surface: true,
unbounded: true,
color: 'secondary',
// addClass and removeClass need to be provided, since
// we have a "class" attribute on this element. If we had
// a "style" attribute, we would also need addStyle.
addClass: (className) => {
if (!secondaryRippleClasses[className]) {
secondaryRippleClasses[className] = true;
}
},
removeClass: (className) => {
if (secondaryRippleClasses[className]) {
delete secondaryRippleClasses[className];
}
},
}}
tabindex="0"
role="button"
class="unbounded {Object.keys(secondaryRippleClasses).join(' ')}"
>
S
</span>
</p>
<script lang="ts">
import Ripple from '@smui/ripple';
let rippleClasses: { [k: string]: boolean } = $state({});
let primaryRippleClasses: { [k: string]: boolean } = $state({});
let secondaryRippleClasses: { [k: string]: boolean } = $state({});
</script>
<style>
p {
padding: 10px;
border-radius: 5px;
}
.unbounded {
display: inline-flex;
width: 50px;
height: 50px;
justify-content: center;
align-items: center;
border-radius: 50%;
font-size: 20px;
}
[tabindex='0'] {
cursor: pointer;
}
</style>