Sha256: 019c0a31537de7cd9ec5853946937cf2b1db2e9c942d159896e34ea59d607d4e

Contents?: true

Size: 1.07 KB

Versions: 2

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

module Phlexi
  module Display
    module Components
      class DateTime < Base
        include Concerns::DisplaysValue

        # 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

2 entries across 2 versions & 1 rubygems

Version Path
phlexi-display-0.0.3 lib/phlexi/display/components/date_time.rb
phlexi-display-0.0.2 lib/phlexi/display/components/date_time.rb