mirror of
				https://github.com/InsanusMokrassar/JSUIKitKBindings.git
				synced 2025-10-30 19:50:14 +00:00 
			
		
		
		
	| @@ -1,5 +1,10 @@ | |||||||
| # Changelog | # Changelog | ||||||
|  |  | ||||||
|  | ## 0.0.53 | ||||||
|  |  | ||||||
|  | * Improvements in `UIKitPadding` | ||||||
|  | * Add support of UIKit lists | ||||||
|  |  | ||||||
| ## 0.0.52 | ## 0.0.52 | ||||||
|  |  | ||||||
| * Improve work with UIKitModifiers | * Improve work with UIKitModifiers | ||||||
|   | |||||||
| @@ -9,4 +9,4 @@ android.enableJetifier=true | |||||||
| # Project data | # Project data | ||||||
|  |  | ||||||
| group=dev.inmo | group=dev.inmo | ||||||
| version=0.0.52 | version=0.0.53 | ||||||
|   | |||||||
| @@ -2,14 +2,32 @@ package dev.inmo.jsuikit.elements | |||||||
|  |  | ||||||
| import androidx.compose.runtime.Composable | import androidx.compose.runtime.Composable | ||||||
| import androidx.compose.runtime.snapshots.SnapshotStateList | import androidx.compose.runtime.snapshots.SnapshotStateList | ||||||
| import dev.inmo.jsuikit.modifiers.UIKitModifier | import dev.inmo.jsuikit.modifiers.* | ||||||
| import dev.inmo.jsuikit.modifiers.include | import dev.inmo.jsuikit.utils.Attrs | ||||||
| import org.jetbrains.compose.web.dom.* | import org.jetbrains.compose.web.dom.* | ||||||
| import org.w3c.dom.HTMLHeadingElement | import org.w3c.dom.HTMLHeadingElement | ||||||
| import org.w3c.dom.HTMLUListElement | import org.w3c.dom.HTMLUListElement | ||||||
|  |  | ||||||
| @Composable | @Composable | ||||||
| fun <T> List( | fun <T> List( | ||||||
|  |     data: SnapshotStateList<T>, | ||||||
|  |     ukAttrs: Attrs<HTMLUListElement> = Attrs.empty(), | ||||||
|  |     elementAllocator: @Composable ElementScope<HTMLUListElement>.(T) -> Unit | ||||||
|  | ) { | ||||||
|  |     Ul( | ||||||
|  |         { | ||||||
|  |             include(UIKitList) | ||||||
|  |             ukAttrs.builder(this) | ||||||
|  |         } | ||||||
|  |     ) { | ||||||
|  |         data.forEach { | ||||||
|  |             elementAllocator(it) | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @Composable | ||||||
|  | fun <T> ListWithTitle( | ||||||
|     title: String, |     title: String, | ||||||
|     data: SnapshotStateList<T>, |     data: SnapshotStateList<T>, | ||||||
|     vararg titleModifiers: UIKitModifier, |     vararg titleModifiers: UIKitModifier, | ||||||
| @@ -23,15 +41,27 @@ fun <T> List( | |||||||
|         Text(title) |         Text(title) | ||||||
|     } |     } | ||||||
|     besidesTitleAndList ?.invoke() |     besidesTitleAndList ?.invoke() | ||||||
|     Ul( |     List(data, Attrs(*ulModifiers) { ulCustomizer(this) }, elementAllocator) | ||||||
|         { |  | ||||||
|             classes("uk-list") |  | ||||||
|             include(*ulModifiers) |  | ||||||
|             ulCustomizer() |  | ||||||
|         } |  | ||||||
|     ) { |  | ||||||
|         data.forEach { |  | ||||||
|             elementAllocator(it) |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @Deprecated("Renamed", ReplaceWith("ListWithTitle", "dev.inmo.jsuikit.elements.ListWithTitle")) | ||||||
|  | @Composable | ||||||
|  | fun <T> List( | ||||||
|  |     title: String, | ||||||
|  |     data: SnapshotStateList<T>, | ||||||
|  |     vararg titleModifiers: UIKitModifier, | ||||||
|  |     ulModifiers: Array<UIKitModifier> = emptyArray(), | ||||||
|  |     besidesTitleAndList: (@Composable () -> Unit)? = null, | ||||||
|  |     titleCustomizer: AttrBuilderContext<HTMLHeadingElement> = {}, | ||||||
|  |     ulCustomizer: AttrBuilderContext<HTMLUListElement> = {}, | ||||||
|  |     elementAllocator: @Composable ElementScope<HTMLUListElement>.(T) -> Unit | ||||||
|  | ) = ListWithTitle( | ||||||
|  |     title, | ||||||
|  |     data, | ||||||
|  |     *titleModifiers, | ||||||
|  |     ulModifiers = ulModifiers, | ||||||
|  |     besidesTitleAndList = besidesTitleAndList, | ||||||
|  |     titleCustomizer = titleCustomizer, | ||||||
|  |     ulCustomizer = ulCustomizer, | ||||||
|  |     elementAllocator = elementAllocator | ||||||
|  | ) | ||||||
|   | |||||||
							
								
								
									
										46
									
								
								src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitList.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/jsMain/kotlin/dev/inmo/jsuikit/modifiers/UIKitList.kt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | package dev.inmo.jsuikit.modifiers | ||||||
|  |  | ||||||
|  | sealed class UIKitList( | ||||||
|  |     vararg classes: String, | ||||||
|  |     override val otherAttrs: Map<String, String> = emptyMap() | ||||||
|  | ) : UIKitModifier { | ||||||
|  |     @Suppress("UNCHECKED_CAST") | ||||||
|  |     override val classes: Array<String> = classes as Array<String> | ||||||
|  |  | ||||||
|  |     sealed class Style(vararg classes: String) : UIKitList(*classes) { | ||||||
|  |  | ||||||
|  |         object Disc : Style("uk-list-disc") | ||||||
|  |         object Circle : Style("uk-list-circle") | ||||||
|  |         object Square : Style("uk-list-square") | ||||||
|  |         object Decimal : Style("uk-list-decimal") | ||||||
|  |         object Hyphen : Style("uk-list-hyphen") | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     sealed class Size(vararg classes: String) : UIKitList(*classes) { | ||||||
|  |  | ||||||
|  |         object Large : Size("uk-list-large") | ||||||
|  |         object Collapse : Size("uk-list-collapse") | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     sealed class Color(vararg classes: String) : UIKitList(*classes) { | ||||||
|  |  | ||||||
|  |         object Muted : Color("uk-list-muted") | ||||||
|  |         object Emphasis : Color("uk-list-emphasis") | ||||||
|  |         object Primary : Color("uk-list-primary") | ||||||
|  |         object Secondary : Color("uk-list-secondary") | ||||||
|  |         companion object { | ||||||
|  |             val Bullet = UIKitList.Bullet | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     object Bullet: UIKitList("uk-list-bullet") | ||||||
|  |  | ||||||
|  |     object Divider: UIKitList("uk-list-divider") | ||||||
|  |  | ||||||
|  |     object Striped: UIKitList("uk-list-striped") | ||||||
|  |  | ||||||
|  |     companion object : UIKitList("uk-list") | ||||||
|  | } | ||||||
| @@ -8,7 +8,10 @@ sealed class UIKitPadding(suffix: String?) : UIKitModifier { | |||||||
|         object Small : Size("small") |         object Small : Size("small") | ||||||
|         object Large : Size("large") |         object Large : Size("large") | ||||||
|  |  | ||||||
|         companion object : Size(null) |         companion object : Size(null) { | ||||||
|  |             val Default | ||||||
|  |                 get() = this | ||||||
|  |         } | ||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -25,5 +28,6 @@ sealed class UIKitPadding(suffix: String?) : UIKitModifier { | |||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     companion object : Size(null) | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user