Sha256: bd639297185f9d5d2f1ee434af2679126450c21ff503e001c6a5df3590f04ff2

Contents?: true

Size: 1.6 KB

Versions: 14

Compression:

Stored size: 1.6 KB

Contents

import { Controller } from 'stimulus'
import { DateTime } from 'luxon'
import { castBoolean } from '../../helpers/cast_boolean'
import flatpickr from 'flatpickr'

export default class extends Controller {
  static targets = ['input']

  connect() {
    const options = {
      enableTime: false,
      enableSeconds: false,
      // eslint-disable-next-line camelcase
      time_24hr: false,
      locale: {
        firstDayOfWeek: 0,
      },
      altInput: true,
    }
    const enableTime = castBoolean(this.inputTarget.dataset.enableTime)

    // Set the format of the displayed input field.
    options.altFormat = this.inputTarget.dataset.pickerFormat

    // Set first day of the week.
    options.locale.firstDayOfWeek = this.inputTarget.dataset.firstDayOfWeek

    // Enable time if needed.
    options.enableTime = enableTime
    options.enableSeconds = enableTime

    let currentValue

    // enable timezone display
    if (enableTime) {
      currentValue = DateTime.fromISO(this.inputTarget.value, { zone: window.Avo.configuration.timezone })
      currentValue = currentValue.setZone(this.inputTarget.dataset.timezone)
      currentValue = currentValue.toISO()

      options.dateFormat = 'Y-m-d H:i:S'
      // eslint-disable-next-line camelcase
      options.time_24hr = castBoolean(this.inputTarget.dataset.time24hr)
      // this.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone
      options.appTimezone = this.inputTarget.dataset.timezone
    } else {
      currentValue = new Date(this.inputTarget.value)
    }

    options.defaultDate = currentValue

    flatpickr(this.inputTarget, options)
  }
}

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
avo-1.21.1.pre.1 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.21.0 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.20.2.pre.2 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.20.2.pre.1 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.21.0.pre.1 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.20.1 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.19.1.pre.11 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.19.1.pre.10 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.19.1.pre.9 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.19.1.pre.8 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.19.1.pre.7 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.19.1.pre.6 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.19.1.pre.5 app/javascript/js/controllers/fields/date_field_controller.js
avo-1.19.1.pre.4 app/javascript/js/controllers/fields/date_field_controller.js