@@ -20,6 +20,9 @@ class CSSRulesHolderState : CSSRulesHolder {
20
20
/* *
21
21
* Represents a collection of the css style rules.
22
22
* StyleSheet needs to be mounted.
23
+ *
24
+ * @param customPrefix Will be used as prefix with current style. Pass `null` to use default value (classname of realization)
25
+ *
23
26
* @see [Style]
24
27
*
25
28
* Example:
@@ -38,12 +41,22 @@ class CSSRulesHolderState : CSSRulesHolder {
38
41
* ```
39
42
*/
40
43
open class StyleSheet (
44
+ customPrefix : String? ,
41
45
private val rulesHolder : CSSRulesHolder = CSSRulesHolderState (),
42
- val usePrefix : Boolean = true ,
43
46
) : StyleSheetBuilder, CSSRulesHolder by rulesHolder {
44
47
private val boundClasses = mutableMapOf<String , CSSRuleDeclarationList >()
48
+ protected val prefix: String = customPrefix ? : " ${this ::class .simpleName} -"
49
+
50
+ val usePrefix: Boolean = customPrefix == null
51
+ constructor (
52
+ rulesHolder: CSSRulesHolder = CSSRulesHolderState (),
53
+ usePrefix: Boolean = true
54
+ ) : this (
55
+ if (usePrefix) null else " " ,
56
+ rulesHolder
57
+ )
45
58
46
- protected fun style (cssRule : CSSBuilder .() -> Unit ) = CSSHolder (usePrefix , cssRule)
59
+ protected fun style (cssRule : CSSBuilder .() -> Unit ) = CSSHolder (prefix , cssRule)
47
60
48
61
/* *
49
62
* Example:
@@ -69,7 +82,7 @@ open class StyleSheet(
69
82
* }
70
83
* ```
71
84
*/
72
- protected fun keyframes (cssKeyframes : CSSKeyframesBuilder .() -> Unit ) = CSSKeyframesHolder (usePrefix , cssKeyframes)
85
+ protected fun keyframes (cssKeyframes : CSSKeyframesBuilder .() -> Unit ) = CSSKeyframesHolder (prefix , cssKeyframes)
73
86
74
87
companion object {
75
88
private var counter = 0
@@ -88,13 +101,12 @@ open class StyleSheet(
88
101
}
89
102
}
90
103
91
- protected class CSSHolder (private val usePrefix : Boolean , private val cssBuilder : CSSBuilder .() -> Unit ) {
104
+ protected class CSSHolder (private val prefix : String , private val cssBuilder : CSSBuilder .() -> Unit ) {
92
105
operator fun provideDelegate (
93
106
sheet : StyleSheet ,
94
107
property : KProperty <* >
95
108
): ReadOnlyProperty <Any ?, String > {
96
- val sheetName = if (usePrefix) " ${sheet::class .simpleName} -" else " "
97
- val className = " $sheetName${property.name} "
109
+ val className = " $prefix${property.name} "
98
110
val selector = object : CSSSelector () {
99
111
override fun asString () = " .${className} "
100
112
}
@@ -110,15 +122,14 @@ open class StyleSheet(
110
122
* See [keyframes]
111
123
*/
112
124
protected class CSSKeyframesHolder (
113
- private val usePrefix : Boolean ,
125
+ private val prefix : String ,
114
126
private val keyframesBuilder : CSSKeyframesBuilder .() -> Unit
115
127
) {
116
128
operator fun provideDelegate (
117
129
sheet : StyleSheet ,
118
130
property : KProperty <* >
119
131
): ReadOnlyProperty <Any ?, CSSNamedKeyframes > {
120
- val sheetName = if (usePrefix) " ${sheet::class .simpleName} -" else " "
121
- val keyframesName = " $sheetName${property.name} "
132
+ val keyframesName = " $prefix${property.name} "
122
133
val rule = buildKeyframes(keyframesName, keyframesBuilder)
123
134
sheet.add(rule)
124
135
0 commit comments