Skip to content

Commit

Permalink
[YDS] StoryBook 기본 틀 추가 & YDSL 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
islandparadise14 committed Sep 28, 2021
1 parent 676828e commit a848f61
Show file tree
Hide file tree
Showing 26 changed files with 552 additions and 48 deletions.
31 changes: 7 additions & 24 deletions DesignSystem/src/main/java/com/yourssu/design/system/atom/Badge.kt
Original file line number Diff line number Diff line change
Expand Up @@ -42,40 +42,28 @@ class Badge : LinearLayout {
)
}

private var hasIcon: Boolean = false
var text: String = ""
set(value) {
field = value
setBadgeInfo()
requestLayout()
}

private var text: String = ""
set(value) {
field = value
setBadgeInfo()
requestLayout()
}

private var color: ItemColor = ItemColor.Mono
var color: ItemColor = ItemColor.Mono
set(color) {
field = color
setBadgeInfo()
requestLayout()
}

@Icon.Iconography
private var icon: Int = Icon.ic_adbadge_filled
var icon: Int? = null
set(icon) {
field = icon
setBadgeInfo()
requestLayout()
}

fun setBadgeIcon(@Icon.Iconography value: Int) {
hasIcon = true
icon = value
}

private fun setBadgeInfo() {
val color = getBadgeColor(color)

Expand All @@ -86,11 +74,11 @@ class Badge : LinearLayout {

binding.badgeContent.text = text

if (hasIcon) {
icon?.let {
binding.badgeFrame.setPadding(context.dpToIntPx(8F), 0, context.dpToIntPx(8F), 0)
binding.badgeIcon.visibility = View.VISIBLE
binding.badgeIcon.setIconResource(icon)
} else {
binding.badgeIcon.setIconResource(it)
} ?: run {
binding.badgeFrame.setPadding(context.dpToIntPx(12F), 0, context.dpToIntPx(12F), 0)
binding.badgeIcon.visibility = View.GONE
}
Expand All @@ -107,12 +95,7 @@ class Badge : LinearLayout {
@JvmStatic
@BindingAdapter("icon")
fun setIcon(badge: Badge, @Icon.Iconography icon: Int?) {
if (icon == null) {
badge.hasIcon = false
} else {
badge.hasIcon = true
badge.icon = icon
}
badge.icon = icon
}

@JvmStatic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,24 +127,6 @@ class CheckBox @JvmOverloads constructor(
private const val MARGIN_SMALL = 4f
private const val MARGIN_MEDIUM = 8f
private const val MARGIN_LARGE = 8f

fun Context.checkBox(block: CheckBox.() -> Unit) = CheckBox(this).run {
block.invoke(this)
this
}

fun ViewGroup.checkBox(block: CheckBox.() -> Unit) = CheckBox(this.context).run {
block.invoke(this)
this@checkBox.addView(this)
this
}

fun ComponentGroup.checkBox(block: CheckBox.() -> Unit) =
CheckBox(this.componentContext).run {
block.invoke(this)
this@checkBox.addComponent(this)
this
}
}

// change means will access to binding
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import android.widget.TextView
import com.yourssu.design.R
import com.yourssu.design.databinding.LayoutPasswordTextFieldBinding
import com.yourssu.design.system.foundation.Icon
import com.yourssu.design.undercarriage.base.TextField

class PasswordTextField @JvmOverloads constructor(
context: Context,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import android.view.LayoutInflater
import android.widget.TextView
import com.yourssu.design.R
import com.yourssu.design.databinding.LayoutSimpleTextFieldBinding
import com.yourssu.design.undercarriage.base.TextField

class SimpleTextField @JvmOverloads constructor(
context: Context,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import android.widget.TextView
import androidx.databinding.BindingAdapter
import com.yourssu.design.R
import com.yourssu.design.databinding.LayoutSuffixTextFieldBinding
import com.yourssu.design.undercarriage.base.TextField

class SuffixTextField @JvmOverloads constructor(
context: Context,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.yourssu.design.system.language

import android.view.View
import android.view.ViewGroup
import androidx.annotation.ColorRes
import androidx.appcompat.app.AppCompatActivity

fun AppCompatActivity.setContentView(block: () -> View) {
this.setContentView(block.invoke())
}

const val WRAP_CONTENT = ViewGroup.LayoutParams.WRAP_CONTENT
const val MATCH_PARENT = ViewGroup.LayoutParams.MATCH_PARENT

fun View.setLayout(
width: Int? = null,
height: Int? = null,
leftMarginPx: Int? = null,
rightMarginPx: Int? = null,
topMarginPx: Int? = null,
bottomMarginPx: Int? = null,
leftPaddingPx: Int? = null,
rightPaddingPx: Int? = null,
topPaddingPx: Int? = null,
bottomPaddingPx: Int? = null,
) {
this.layoutParams = ViewGroup.MarginLayoutParams(
width ?: WRAP_CONTENT,
height ?: WRAP_CONTENT)
.apply {
leftMarginPx?.let { this.leftMargin = it }
rightMarginPx?.let { this.rightMargin = it }
topMarginPx?.let { this.topMargin = it }
bottomMarginPx?.let { this.bottomMargin = it }
}
this.setPadding(leftPaddingPx ?: 0, topPaddingPx ?: 0, rightPaddingPx ?: 0, bottomPaddingPx ?: 0)
}

fun View.backgroundColor(@ColorRes color: Int) {
this.setBackgroundColor(this.context.getColor(color))
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.yourssu.design.system.language

import android.content.Context
import android.view.ViewGroup
import com.yourssu.design.system.atom.Badge

fun Context.badge(block: Badge.() -> Unit) = Badge(this).run {
block.invoke(this)
this
}

fun ViewGroup.badge(block: Badge.() -> Unit) = Badge(this.context).run {
block.invoke(this)
this@badge.addView(this)
this
}

fun ComponentGroup.badge(block: Badge.() -> Unit) = Badge(this.componentContext).run {
block.invoke(this)
this@badge.addComponent(this)
this
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.yourssu.design.system.language

import android.content.Context
import android.view.ViewGroup
import com.yourssu.design.system.atom.CheckBox

fun Context.checkBox(block: CheckBox.() -> Unit) = CheckBox(this).run {
block.invoke(this)
this
}

fun ViewGroup.checkBox(block: CheckBox.() -> Unit) = CheckBox(this.context).run {
block.invoke(this)
this@checkBox.addView(this)
this
}

fun ComponentGroup.checkBox(block: CheckBox.() -> Unit) =
CheckBox(this.componentContext).run {
block.invoke(this)
this@checkBox.addComponent(this)
this
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.yourssu.design.system.language

import android.content.Context
import android.view.ViewGroup
import com.yourssu.design.system.atom.IconView

fun Context.iconView(block: IconView.() -> Unit) = IconView(this).run {
block.invoke(this)
this
}

fun ViewGroup.iconView(block: IconView.() -> Unit) = IconView(this.context).run {
block.invoke(this)
this@iconView.addView(this)
this
}

fun ComponentGroup.iconView(block: IconView.() -> Unit) = IconView(this.componentContext).run {
block.invoke(this)
this@iconView.addComponent(this)
this
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.yourssu.design.system.language

import android.content.Context
import android.view.ViewGroup
import com.yourssu.design.system.atom.Picker

fun Context.picker(block: Picker.() -> Unit) = Picker(this).run {
block.invoke(this)
this
}

fun ViewGroup.picker(block: Picker.() -> Unit) = Picker(this.context).run {
block.invoke(this)
this@picker.addView(this)
this
}

fun ComponentGroup.picker(block: Picker.() -> Unit) = Picker(this.componentContext).run {
block.invoke(this)
this@picker.addComponent(this)
this
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.yourssu.design.system.language

import android.content.Context
import android.view.ViewGroup
import com.yourssu.design.system.atom.ProfileImageView

fun Context.profileImageView(block: ProfileImageView.() -> Unit) = ProfileImageView(this).run {
block.invoke(this)
this
}

fun ViewGroup.profileImageView(block: ProfileImageView.() -> Unit) = ProfileImageView(this.context).run {
block.invoke(this)
this@profileImageView.addView(this)
this
}

fun ComponentGroup.profileImageView(block: ProfileImageView.() -> Unit) = ProfileImageView(this.componentContext).run {
block.invoke(this)
this@profileImageView.addComponent(this)
this
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.yourssu.design.system.language

import android.content.Context
import android.view.ViewGroup
import androidx.annotation.ColorRes
import com.yourssu.design.system.atom.Text

fun Context.text(block: Text.() -> Unit) = Text(this).run {
Expand All @@ -19,4 +20,8 @@ fun ComponentGroup.text(block: Text.() -> Unit) = Text(this.componentContext).ru
block.invoke(this)
this@text.addComponent(this)
this
}

fun Text.textColor(@ColorRes color: Int) {
setTextColor(this.context.getColor(color))
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.yourssu.design.system.language

import android.content.Context
import android.view.ViewGroup
import com.yourssu.design.system.atom.PasswordTextField
import com.yourssu.design.system.atom.SearchTextField
import com.yourssu.design.system.atom.SimpleTextField
import com.yourssu.design.system.atom.SuffixTextField

fun Context.passwordTextField(block: PasswordTextField.() -> Unit) = PasswordTextField(this).run {
block.invoke(this)
this
}

fun ViewGroup.passwordTextField(block: PasswordTextField.() -> Unit) = PasswordTextField(this.context).run {
block.invoke(this)
this@passwordTextField.addView(this)
this
}

fun ComponentGroup.passwordTextField(block: PasswordTextField.() -> Unit) = PasswordTextField(this.componentContext).run {
block.invoke(this)
this@passwordTextField.addComponent(this)
this
}

fun Context.searchTextField(block: SearchTextField.() -> Unit) = SearchTextField(this).run {
block.invoke(this)
this
}

fun ViewGroup.searchTextField(block: SearchTextField.() -> Unit) = SearchTextField(this.context).run {
block.invoke(this)
this@searchTextField.addView(this)
this
}

fun ComponentGroup.searchTextField(block: SearchTextField.() -> Unit) = SearchTextField(this.componentContext).run {
block.invoke(this)
this@searchTextField.addComponent(this)
this
}

fun Context.simpleTextField(block: SimpleTextField.() -> Unit) = SimpleTextField(this).run {
block.invoke(this)
this
}

fun ViewGroup.simpleTextField(block: SimpleTextField.() -> Unit) = SimpleTextField(this.context).run {
block.invoke(this)
this@simpleTextField.addView(this)
this
}

fun ComponentGroup.simpleTextField(block: SimpleTextField.() -> Unit) = SimpleTextField(this.componentContext).run {
block.invoke(this)
this@simpleTextField.addComponent(this)
this
}

fun Context.suffixTextField(block: SuffixTextField.() -> Unit) = SuffixTextField(this).run {
block.invoke(this)
this
}

fun ViewGroup.suffixTextField(block: SuffixTextField.() -> Unit) = SuffixTextField(this.context).run {
block.invoke(this)
this@suffixTextField.addView(this)
this
}

fun ComponentGroup.suffixTextField(block: SuffixTextField.() -> Unit) = SuffixTextField(this.componentContext).run {
block.invoke(this)
this@suffixTextField.addComponent(this)
this
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.yourssu.design.system.atom
package com.yourssu.design.undercarriage.base

import android.content.Context
import android.text.Editable
Expand Down
1 change: 1 addition & 0 deletions app/storybook/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
Loading

0 comments on commit a848f61

Please sign in to comment.