Sha256: a1b19154d26728000798ad03063f281f80c7fed59c375f12939162d9b781d457

Contents?: true

Size: 1.68 KB

Versions: 36

Compression:

Stored size: 1.68 KB

Contents

# frozen_string_literal: true

module Satis
  module DateTimePicker
    class Component < Satis::ApplicationComponent
      attr_reader :form, :attribute, :inline, :options, :clearable, :format, :time_picker, :multiple, :range

      def initialize(form:, attribute:, **options, &block)
        super

        @form = form
        @attribute = attribute
        @options = options
        @block = block
        options[:input_html] ||= {}
        @time_picker = options.key?(:time_picker) ? options[:time_picker] : true
        @inline = options.key?(:inline) ? options[:inline] : false
        @clearable = options.key?(:clearable) ? options[:clearable] : true
        @multiple = options.key?(:multiple) ? options[:multiple] : false
        @range = options.key?(:range) ? options[:range] : false

        @format = if options.key?(:format)
          options[:format]
        else
          {weekday: "long", month: "short", year: "numeric", day: "numeric",
           hour: "numeric", minute: "numeric", hour12: false}
        end

        options[:input_html].merge!("data-satis-date-time-picker-target" => "hiddenInput", "data-action" => "change->satis-date-time-picker#hiddenInputChanged")

        # FIXME: deal with ranges and multiples
        hidden_value = options[:input_html][:value]
        hidden_value ||= @form.object.send(attribute)
        hidden_value = if hidden_value.is_a?(String)
          hidden_value&.split(" - ")&.map { |d| Time.parse(d).iso8601 }&.join(" - ")
        else
          hidden_value&.iso8601
        end

        options[:input_html][:value] = hidden_value
      end

      def week_start
        Date::DAYS_INTO_WEEK[Date.beginning_of_week] || 1
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
satis-2.1.43 app/components/satis/date_time_picker/component.rb
satis-2.1.42 app/components/satis/date_time_picker/component.rb
satis-2.1.41 app/components/satis/date_time_picker/component.rb
satis-2.1.40 app/components/satis/date_time_picker/component.rb
satis-2.1.39 app/components/satis/date_time_picker/component.rb
satis-2.1.38 app/components/satis/date_time_picker/component.rb
satis-2.1.37 app/components/satis/date_time_picker/component.rb
satis-2.1.36 app/components/satis/date_time_picker/component.rb
satis-2.1.35 app/components/satis/date_time_picker/component.rb
satis-2.1.33 app/components/satis/date_time_picker/component.rb
satis-2.1.31 app/components/satis/date_time_picker/component.rb
satis-2.1.30 app/components/satis/date_time_picker/component.rb
satis-2.1.29 app/components/satis/date_time_picker/component.rb
satis-2.1.28 app/components/satis/date_time_picker/component.rb
satis-2.1.27 app/components/satis/date_time_picker/component.rb
satis-2.1.26 app/components/satis/date_time_picker/component.rb
satis-2.1.24 app/components/satis/date_time_picker/component.rb
satis-2.1.23 app/components/satis/date_time_picker/component.rb
satis-2.1.22 app/components/satis/date_time_picker/component.rb
satis-2.1.21 app/components/satis/date_time_picker/component.rb