Sha256: 717e947932411ebf650aa893f60177e67d6072e0ca6c98f3ec6165c0ecb4a9f4

Contents?: true

Size: 1.59 KB

Versions: 75

Compression:

Stored size: 1.59 KB

Contents

import { Controller } from 'stimulus'
import { DateTime } from 'luxon'
import { castBoolean } from '@/js/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

75 entries across 75 versions & 1 rubygems

Version Path
avo-1.19.1.pre.3 app/packs/js/controllers/fields/date_field_controller.js
avo-1.19.1.pre.2 app/packs/js/controllers/fields/date_field_controller.js
avo-1.19.1.pre.1 app/packs/js/controllers/fields/date_field_controller.js
avo-1.19.0 app/packs/js/controllers/fields/date_field_controller.js
avo-1.18.2 app/packs/js/controllers/fields/date_field_controller.js
avo-1.18.2.pre.0 app/packs/js/controllers/fields/date_field_controller.js
avo-1.18.1 app/packs/js/controllers/fields/date_field_controller.js
avo-1.18.0 app/packs/js/controllers/fields/date_field_controller.js
avo-1.18.0.pre.3 app/packs/js/controllers/fields/date_field_controller.js
avo-1.18.0.pre.2 app/packs/js/controllers/fields/date_field_controller.js
avo-1.18.0.pre.1 app/packs/js/controllers/fields/date_field_controller.js
avo-1.17.1 app/packs/js/controllers/fields/date_field_controller.js
avo-1.17.0 app/packs/js/controllers/fields/date_field_controller.js
avo-1.16.4 app/packs/js/controllers/fields/date_field_controller.js
avo-1.16.3 app/packs/js/controllers/fields/date_field_controller.js
avo-1.16.2 app/packs/js/controllers/fields/date_field_controller.js
avo-1.16.1 app/packs/js/controllers/fields/date_field_controller.js
avo-1.16.0 app/packs/js/controllers/fields/date_field_controller.js
avo-1.15.0 app/packs/js/controllers/fields/date_field_controller.js
avo-1.15.0.pre.1 app/packs/js/controllers/fields/date_field_controller.js