SVGElementAttrsScope

abstract class SVGElementAttrsScope<E : SVGElement> : AttrsScope<E> (source)

Our own SVG-specific extensions on top of AttrsScope<SVGElement>.

At the time of writing this, the SVG APIs for Compose HTML are still underbaked. They are missing a lot of type-safe APIs for various SVG attributes.

We originally thought we would fix this by a liberal use of extension methods (e.g. fun AttrsScope<SVGCircleElement>.cx(value: Number)), but this approach was fairly inconvenient as doing even the most basic things with SVG elements required a bunch of imports and code completions were slow.

As a compromise, we create our own subclasses of AttrsScope<SVGElement> and layer our own methods on top of them directly. This approach is basically invisible to users of our APIs while providing a much better developer experience. For example, this approaches uses our Circle extensions seamlessly:

Svg {
Circle {
cx(25)
cy(25)
}
}

Inheritors

Functions

Link copied to clipboard
open override fun <T : SyntheticEvent<out EventTarget>> addEventListener(eventName: String, listener: (T) -> Unit)
open override fun addEventListener(eventName: String, listener: (SyntheticEvent<EventTarget>) -> Unit)
Link copied to clipboard
fun AttrsScope<*>.ariaDisabled(value: Boolean = true)
Link copied to clipboard
fun AttrsScope<*>.ariaHidden(value: Boolean = true)
Link copied to clipboard
fun AttrsScope<*>.ariaInvalid(value: Boolean = true)
Link copied to clipboard
fun AttrsScope<*>.ariaLabel(value: String)
Link copied to clipboard
fun AttrsScope<*>.ariaRequired(value: Boolean = true)
Link copied to clipboard
open override fun attr(attr: String, value: String): AttrsScope<E>
Link copied to clipboard
open override fun classes(vararg classes: String)
open override fun classes(classes: Collection<String>)
Link copied to clipboard
open override fun contentEditable(value: Boolean): AttrsScope<E>
Link copied to clipboard
open override fun dir(value: DirType): AttrsScope<E>
Link copied to clipboard
fun AttrsScope<*>.disabled(value: Boolean = true)
Link copied to clipboard
open override fun draggable(value: Draggable): AttrsScope<E>
Link copied to clipboard
fun AttrsScope<*>.height(height: Int)
Link copied to clipboard
open override fun hidden(): AttrsScope<E>
Link copied to clipboard
open override fun id(value: String): AttrsScope<E>
Link copied to clipboard
open override fun inputMode(value: String): AttrsScope<E>
open override fun inputMode(value: InputMode): AttrsScope<E>
Link copied to clipboard
open override fun lang(value: String): AttrsScope<E>
Link copied to clipboard
open override fun onAnimationEnd(listener: (SyntheticAnimationEvent) -> Unit)
Link copied to clipboard
open override fun onAnimationIteration(listener: (SyntheticAnimationEvent) -> Unit)
Link copied to clipboard
open override fun onAnimationStart(listener: (SyntheticAnimationEvent) -> Unit)
Link copied to clipboard
open override fun onBlur(listener: (SyntheticFocusEvent) -> Unit)
Link copied to clipboard
open override fun onClick(listener: SyntheticMouseEventListener)
Link copied to clipboard
open override fun onContextMenu(listener: SyntheticMouseEventListener)
Link copied to clipboard
open override fun onCopy(listener: (SyntheticClipboardEvent) -> Unit)
Link copied to clipboard
open override fun onCut(listener: (SyntheticClipboardEvent) -> Unit)
Link copied to clipboard
open override fun onDoubleClick(listener: SyntheticMouseEventListener)
Link copied to clipboard
open override fun onDrag(listener: SyntheticDragEventListener)
Link copied to clipboard
open override fun onDragEnd(listener: SyntheticDragEventListener)
Link copied to clipboard
open override fun onDragEnter(listener: SyntheticDragEventListener)
Link copied to clipboard
open override fun onDragLeave(listener: SyntheticDragEventListener)
Link copied to clipboard
open override fun onDragOver(listener: SyntheticDragEventListener)
Link copied to clipboard
open override fun onDragStart(listener: SyntheticDragEventListener)
Link copied to clipboard
open override fun onDrop(listener: SyntheticDragEventListener)
Link copied to clipboard
open override fun onFocus(listener: (SyntheticFocusEvent) -> Unit)
Link copied to clipboard
open override fun onFocusIn(listener: (SyntheticFocusEvent) -> Unit)
Link copied to clipboard
open override fun onFocusOut(listener: (SyntheticFocusEvent) -> Unit)
Link copied to clipboard
open override fun onKeyDown(listener: (SyntheticKeyboardEvent) -> Unit)
Link copied to clipboard
open override fun onKeyUp(listener: (SyntheticKeyboardEvent) -> Unit)
Link copied to clipboard
open override fun onMouseDown(listener: SyntheticMouseEventListener)
Link copied to clipboard
open override fun onMouseEnter(listener: SyntheticMouseEventListener)
Link copied to clipboard
open override fun onMouseLeave(listener: SyntheticMouseEventListener)
Link copied to clipboard
open override fun onMouseMove(listener: SyntheticMouseEventListener)
Link copied to clipboard
open override fun onMouseOut(listener: SyntheticMouseEventListener)
Link copied to clipboard
open override fun onMouseOver(listener: SyntheticMouseEventListener)
Link copied to clipboard
open override fun onMouseUp(listener: SyntheticMouseEventListener)
Link copied to clipboard
open override fun onPaste(listener: (SyntheticClipboardEvent) -> Unit)
Link copied to clipboard
open override fun onScroll(listener: (SyntheticEvent<EventTarget>) -> Unit)
Link copied to clipboard
open override fun onTouchCancel(listener: (SyntheticTouchEvent) -> Unit)
Link copied to clipboard
open override fun onTouchEnd(listener: (SyntheticTouchEvent) -> Unit)
Link copied to clipboard
open override fun onTouchMove(listener: (SyntheticTouchEvent) -> Unit)
Link copied to clipboard
open override fun onTouchStart(listener: (SyntheticTouchEvent) -> Unit)
Link copied to clipboard
fun EventsListenerScope.onTransitionCancel(listener: (SyntheticTransitionEvent) -> Unit)
Link copied to clipboard
fun EventsListenerScope.onTransitionEnd(listener: (SyntheticTransitionEvent) -> Unit)
Link copied to clipboard
fun EventsListenerScope.onTransitionRun(listener: (SyntheticTransitionEvent) -> Unit)
Link copied to clipboard
fun EventsListenerScope.onTransitionStart(listener: (SyntheticTransitionEvent) -> Unit)
Link copied to clipboard
open override fun onWheel(listener: SyntheticWheelEventListener)
Link copied to clipboard
open override fun <E : HTMLElement, V> prop(update: (E, V) -> Unit, value: V)
Link copied to clipboard
open override fun ref(effect: DisposableEffectScope.(E) -> DisposableEffectResult)
Link copied to clipboard
open override fun registerEventListener(listener: SyntheticEventListener<*>)
Link copied to clipboard
fun AttrsScope<*>.role(value: String)
Link copied to clipboard
open override fun spellCheck(value: Boolean): AttrsScope<E>
Link copied to clipboard
open override fun style(builder: StyleScope.() -> Unit)
Link copied to clipboard
open override fun tabIndex(value: Int): AttrsScope<E>
Link copied to clipboard
open override fun title(value: String): AttrsScope<E>
Link copied to clipboard
fun transform(transformScope: SVGTransformScope.() -> Unit)
Link copied to clipboard
fun AttrsScope<*>.width(width: Int)