Class: HakumiComponents::ComponentHandler

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
app/services/hakumi_components/component_handler.rb

Constant Summary collapse

InputParams =
T.type_alias { T.any(ActionController::Parameters, Types::HtmlAttributes) }
LocalsHash =

T.untyped values: locals are passed as Rails view locals, which accept any object. The coerce_local_value method ensures only safe primitive values and containers pass through.

T.type_alias { T::Hash[Symbol, T.untyped] }
UnsafeLocalValue =
T.let(Object.new.freeze, Object)
COMPONENT_CLASSES =
T.let({
  admin_panel: HakumiComponents::AdminPanel::Component,
  affix: HakumiComponents::Affix::Component,
  alert: HakumiComponents::Alert::Component,
  calendar: HakumiComponents::Calendar::Component,
  confirm: HakumiComponents::Modal::Confirm::Component,
  drawer: HakumiComponents::Drawer::Component,
  message: HakumiComponents::Message::Component,
  modal: HakumiComponents::Modal::Component,
  notification: HakumiComponents::Notification::Component,
  popconfirm: HakumiComponents::Popconfirm::Component,
  popover: HakumiComponents::Popover::Component,
  progress: HakumiComponents::Progress::Component,
  qr_code: HakumiComponents::QrCode::Component,
  result: HakumiComponents::Result::Component,
  segmented: HakumiComponents::Segmented::Component,
  skeleton: HakumiComponents::Skeleton::Component,
  spin: HakumiComponents::Spin::Component,
  statistic: HakumiComponents::Statistic::Component,
  table: HakumiComponents::Table::Component,
  tag: HakumiComponents::Tag::Component,
  timeline: HakumiComponents::Timeline::Component,
  transfer: HakumiComponents::Transfer::Component,
  tree: HakumiComponents::Tree::Component
}.freeze, T::Hash[Symbol, T.class_of(ViewComponent::Base)])

Instance Method Summary collapse

Constructor Details

#initialize(component, params) ⇒ ComponentHandler

Returns a new instance of ComponentHandler.



41
42
43
44
# File 'app/services/hakumi_components/component_handler.rb', line 41

def initialize(component, params)
  @component = T.let(component.to_sym, Symbol)
  @params = T.let(params, InputParams)
end

Instance Method Details

#localsObject



47
48
49
# File 'app/services/hakumi_components/component_handler.rb', line 47

def locals
  base_locals.merge(specific_locals)
end