generated from mpetuska/template-kmp-library
-
-
Notifications
You must be signed in to change notification settings - Fork 11
/
MDCTooltip.kt
77 lines (73 loc) · 1.97 KB
/
MDCTooltip.kt
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
package showcases
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import dev.petuska.katalog.runtime.Showcase
import dev.petuska.katalog.runtime.layout.InteractiveShowcase
import dev.petuska.katalog.runtime.util.LoremIpsum
import dev.petuska.katalog.runtime.util.RickRollUrl
import dev.petuska.kmdc.button.MDCButton
import dev.petuska.kmdc.button.MDCButtonType
import dev.petuska.kmdc.tooltip.*
import org.jetbrains.compose.web.attributes.ATarget
import org.jetbrains.compose.web.attributes.target
import org.jetbrains.compose.web.dom.Text
import sandbox.control.BooleanControl
import sandbox.util.NamedBlock
private class MDCTooltipVM {
var interactive by mutableStateOf(false)
var persistent by mutableStateOf(false)
val baseTooltipId = "kmdc-tooltip-id-"
}
@Composable
@Showcase(id = "MDCTooltip")
fun MDCTooltip() = InteractiveShowcase(
viewModel = { MDCTooltipVM() },
controls = {
BooleanControl("Persistent", ::persistent)
BooleanControl("Interactive", ::interactive)
},
) {
NamedBlock("Simple") {
val tid = "$baseTooltipId-simple"
AnchorButton(tid, "Hover over me")
MDCTooltip(
id = tid,
persistent = persistent,
text = LoremIpsum
)
}
NamedBlock("Rich") {
val tid = "$baseTooltipId-rich"
MDCRichTooltip(
id = tid,
interactive = interactive,
persistent = persistent,
anchorContent = {
AnchorButton(tid, if (persistent) "Click me" else "Hover over me")
}
) {
Title("Lorem Ipsum")
Content {
Text(LoremIpsum)
Link("link", RickRollUrl, attrs = {
target(ATarget.Blank)
})
}
MDCTooltipActions {
MDCTooltipAction("action")
}
}
}
}
@Composable
private fun AnchorButton(tid: String, text: String) {
MDCButton(
text = text,
type = MDCButtonType.Raised,
attrs = {
tooltipId(tid)
}
)
}