Sha256: 9e33b46237fae94bf1dfad450013c8f9f2e1332d4f87688c70c7636232b51e57

Contents?: true

Size: 1.09 KB

Versions: 15

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

# rubocop:disable Style/ClassAndModuleChildren
class Maglev::Theme::StyleSetting
  ## concerns ##
  include ActiveModel::Model

  ## attributes ##
  attr_accessor :id, :label, :type, :default, :options

  ## validations ##
  validates :id, :label, :type, :default, 'maglev/presence': true
  validates :type, inclusion: { in: %w[text color select checkbox] }

  ## methods ##

  # NOTE: any modification to that method must be reflected to the JS editor
  def build_default_content(custom_default = nil)
    default = custom_default || self.default
    case type.to_sym
    when :checkbox then build_default_checkbox_content(default)
    else
      default || label
    end
  end

  def build_default_checkbox_content(default)
    !default.nil?
  end

  ## class methods ##
  def self.build(hash)
    attributes = hash.slice('id', 'label', 'type', 'default')
    options = hash.except('id', 'label', 'type', 'default')

    new(attributes.merge(options: options))
  end

  def self.build_many(list)
    list.map { |hash| build(hash) }
  end
end
# rubocop:enable Style/ClassAndModuleChildren

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
maglevcms-1.2.2 app/models/maglev/theme/style_setting.rb
maglevcms-1.2.1 app/models/maglev/theme/style_setting.rb
maglevcms-1.2.0 app/models/maglev/theme/style_setting.rb
maglevcms-1.1.7 app/models/maglev/theme/style_setting.rb
maglevcms-1.1.6 app/models/maglev/theme/style_setting.rb
maglevcms-1.1.5 app/models/maglev/theme/style_setting.rb
maglevcms-1.1.4 app/models/maglev/theme/style_setting.rb
maglevcms-1.1.3 app/models/maglev/theme/style_setting.rb
maglevcms-1.1.2 app/models/maglev/theme/style_setting.rb
maglevcms-1.1.1 app/models/maglev/theme/style_setting.rb
maglevcms-1.1.0 app/models/maglev/theme/style_setting.rb
maglevcms-1.0.0 app/models/maglev/theme/style_setting.rb
maglevcms-1.0.0.rc3 app/models/maglev/theme/style_setting.rb
maglevcms-1.0.0.rc2 app/models/maglev/theme/style_setting.rb
maglevcms-1.0.0.rc1 app/models/maglev/theme/style_setting.rb