Sha256: 0c0f1cc98cd44ca6154e6d503c612e997106c88ff9ae4602a9dfefcdc5584de1

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module Phlexi
  module Table
    module Components
      class DateTime < Base
        include Concerns::TablesValue

        # Renders the date time value
        #
        # @param value [String, Date, Time, DateTime] The value to be rendered
        # @return [void]
        def render_value(value)
          formatted_value = format_date_time(value)
          p(**attributes) { formatted_value }
        end

        protected

        def build_attributes
          super

          @options = {
            format: default_format
          }.merge(attributes.delete(:options) || {}).compact
        end

        private

        def format_date_time(value)
          I18n.l(value, **@options)
        end

        def default_format
          :long
        end

        def normalize_value(value)
          case value
          when Date, DateTime, Time, nil
            value
          else
            raise ArgumentError, "Value must be a Date, DateTime or Time object. #{value.inspect} given."
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
phlexi-table-0.0.1 lib/phlexi/table/components/date_time.rb