All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.raquo.laminar.shoelace.sl.CommonKeys.scala Maven / Gradle / Ivy

package com.raquo.laminar.shoelace.sl

import com.raquo.ew.JsArray
import com.raquo.laminar.DomApi
import com.raquo.laminar.codecs.StringAsIsCodec
import com.raquo.laminar.inputs.InputController.InputControllerConfig
import com.raquo.laminar.keys.{EventProp, HtmlAttr, HtmlProp}
import com.raquo.laminar.modifiers.KeySetter.HtmlAttrSetter
import org.scalajs.dom

import scala.scalajs.js

/** Typical events / properties / etc. defined on Shoelace web components.
  * We selectively export them from this object into individual components
  * that define them.
  */
object CommonKeys extends CommonTypes {

  /** Emitted when the control’s "state" changes, similar to the browser's `change` event. */
  //lazy val onChange: EventProp[dom.Event] = eventProp("sl-change")
  //
  ///** Emitted when the control receives input, similar to the browser's `input` event */
  //lazy val onInput: EventProp[dom.Event] = eventProp("sl-input")
  //
  ///** Emitted when the component loses focus. */
  //lazy val onBlur: EventProp[dom.Event] = eventProp("sl-blur")
  //
  ///** Emitted when the component obtains focus. */
  //lazy val onFocus: EventProp[dom.Event] = eventProp("sl-focus")
  //
  ///** Emitted when the form control has been checked for validity and its constraints aren’t satisfied. */
  //lazy val onInvalid: EventProp[dom.Event] = eventProp("sl-invalid")

  object autoCapitalize extends HtmlAttr[String]("autocapitalize", StringAsIsCodec) {

    lazy val off: HtmlAttrSetter[String] = autoCapitalize("off")

    lazy val none: HtmlAttrSetter[String] = autoCapitalize("none")

    lazy val on: HtmlAttrSetter[String] = autoCapitalize("on")

    lazy val sentences: HtmlAttrSetter[String] = autoCapitalize("sentences")

    lazy val words: HtmlAttrSetter[String] = autoCapitalize("words")

    lazy val characters: HtmlAttrSetter[String] = autoCapitalize("characters")
  }

  object inputMode extends HtmlAttr[String]("inputmode", StringAsIsCodec) {

    lazy val none: HtmlAttrSetter[String] = inputMode("none")

    lazy val text: HtmlAttrSetter[String] = inputMode("text")

    lazy val decimal: HtmlAttrSetter[String] = inputMode("decimal")

    lazy val numeric: HtmlAttrSetter[String] = inputMode("numeric")

    lazy val tel: HtmlAttrSetter[String] = inputMode("tel")

    lazy val search: HtmlAttrSetter[String] = inputMode("search")

    lazy val email: HtmlAttrSetter[String] = inputMode("email")

    lazy val url: HtmlAttrSetter[String] = inputMode("url")
  }

  object placement extends HtmlAttr[String]("placement", StringAsIsCodec) {

    lazy val top: HtmlAttrSetter[String] = placement("top")

    lazy val topStart: HtmlAttrSetter[String] = placement("top-start")

    lazy val topEnd: HtmlAttrSetter[String] = placement("top-end")

    lazy val bottom: HtmlAttrSetter[String] = placement("bottom")

    lazy val bottomStart: HtmlAttrSetter[String] = placement("bottom-start")

    lazy val bottomEnd: HtmlAttrSetter[String] = placement("bottom-end")

    lazy val right: HtmlAttrSetter[String] = placement("right")

    lazy val rightStart: HtmlAttrSetter[String] = placement("right-start")

    lazy val rightEnd: HtmlAttrSetter[String] = placement("right-end")

    lazy val left: HtmlAttrSetter[String] = placement("left")

    lazy val leftStart: HtmlAttrSetter[String] = placement("left-start")

    lazy val leftEnd: HtmlAttrSetter[String] = placement("left-end")
  }

  /** Standard sizes */
  object size extends HtmlAttr[String]("size", StringAsIsCodec) {

    lazy val small: HtmlAttrSetter[String] = size("small")

    lazy val medium: HtmlAttrSetter[String] = size("medium")

    lazy val large: HtmlAttrSetter[String] = size("large")
  }

  /** Which window to open the url in */
  object target extends HtmlAttr[String]("target", StringAsIsCodec) {

    lazy val _blank: HtmlAttrSetter[String] = target("blank")

    lazy val _parent: HtmlAttrSetter[String] = target("parent")

    lazy val _self: HtmlAttrSetter[String] = target("self")

    lazy val _top: HtmlAttrSetter[String] = target("top")
  }

  /** Theme variant – changes the colors */
  abstract class Variant extends HtmlAttr[String]("variant", StringAsIsCodec) {

    lazy val default: HtmlAttrSetter[String] = this := "default"

    lazy val primary: HtmlAttrSetter[String] = this := "primary"

    lazy val success: HtmlAttrSetter[String] = this := "success"

    lazy val neutral: HtmlAttrSetter[String] = this := "neutral"

    lazy val warning: HtmlAttrSetter[String] = this := "warning"

    lazy val danger: HtmlAttrSetter[String] = this := "danger"
  }

  object variant extends Variant

  object buttonVariant extends Variant {

    lazy val text: HtmlAttrSetter[String] = this := "text"
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy