Skip to content

Latest commit

 

History

History
56 lines (50 loc) · 1.08 KB

forms.md

File metadata and controls

56 lines (50 loc) · 1.08 KB

Forms

button-group.js

export class ButtonGroup extends HTMLElement {
  constructor() {
    super()
    this.attachShadow({mode: 'open'})
  }

  connectedCallback() {
    const style = document.createElement('style')
    style.textContent = `
      :host {
        display: flex;
        flex-direction: row-reverse;
        gap: 5px;
      }
      button {
        font-size: 16px;
        font-family: sans-serif;
        font-weight: normal;
        background: #111;
        color: #eee;
        margin: 0;
        border: none;
        padding: 5px 10px;
        border-radius: 3px;
      }
    `
    this.shadowRoot.appendChild(style)
  }

  addButton(text, cls, handler) {
    const el = document.createElement('button')
    el.innerText = text
    el.classList.add(cls)
    el.addEventListener('click', handler)
    this.shadowRoot.appendChild(el)
    return el
  }

  addPrimary(text, handler) {
    this.primary = this.addButton(
      text, 'primary', handler
    )
  }

  addCancel(text, handler) {
    this.cancel = this.addButton(
      text, 'cancel', handler
    )
  }
}