Sha256: 06432c9c0fb401e006eb7f8aa9297b57924f5c42485561b2b26637fe13eda72d

Contents?: true

Size: 1.13 KB

Versions: 9

Compression:

Stored size: 1.13 KB

Contents

import { AlchemyHTMLElement } from "alchemy_admin/components/alchemy_html_element"
import { translate, currentLocale } from "alchemy_admin/i18n"
import flatpickr from "flatpickr"

class Datepicker extends AlchemyHTMLElement {
  static properties = {
    inputType: { default: "date" }
  }

  constructor() {
    super()
    this.flatpickr = undefined
  }

  afterRender() {
    const options = {
      // alchemy_i18n supports `zh_CN` etc., but flatpickr only has two-letter codes (`zh`)
      locale: currentLocale().slice(0, 2),
      altInput: true,
      altFormat: translate(`formats.${this.inputType}`),
      altInputClass: "flatpickr-input",
      dateFormat: "Z",
      enableTime: /time/.test(this.inputType),
      noCalendar: this.inputType === "time",
      time_24hr: translate("formats.time_24hr"),
      onValueUpdate(_selectedDates, _dateStr, instance) {
        instance.element.closest("alchemy-element-editor")?.setDirty()
      }
    }

    this.flatpickr = flatpickr(this.getElementsByTagName("input")[0], options)
  }

  disconnected() {
    this.flatpickr.destroy()
  }
}

customElements.define("alchemy-datepicker", Datepicker)

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
alchemy_cms-7.1.5 app/javascript/alchemy_admin/components/datepicker.js
alchemy_cms-7.1.4 app/javascript/alchemy_admin/components/datepicker.js
alchemy_cms-7.1.3 app/javascript/alchemy_admin/components/datepicker.js
alchemy_cms-7.1.2 app/javascript/alchemy_admin/components/datepicker.js
alchemy_cms-7.1.1 app/javascript/alchemy_admin/components/datepicker.js
alchemy_cms-7.1.0 app/javascript/alchemy_admin/components/datepicker.js
alchemy_cms-7.1.0.pre.rc1 app/javascript/alchemy_admin/components/datepicker.js
alchemy_cms-7.1.0.pre.b2 app/javascript/alchemy_admin/components/datepicker.js
alchemy_cms-7.1.0.pre.b1 app/javascript/alchemy_admin/components/datepicker.js