module Playbook::PbFormsHelper

def pb_form_with(data: {}, validate: false, loading: false, **kwargs, &block)

Other tags:
    See: [#form_with] - for other options

Parameters:
  • validate (Boolean) -- whether validation should be triggered or not
  • data (Hash) -- hash of data attributes
def pb_form_with(data: {}, validate: false, loading: false, **kwargs, &block)
  global_props, form_options = extract_all_props(kwargs)
  classnames = ["pb-form"]
  classnames << form_options[:class] if form_options[:class].present?
  classnames << "pb_form_loading" if loading
  classnames.concat(generate_prop_classes(global_props))
  data = data.merge("pb-form-validation" => validate)
  options = form_options.merge(
    class: classnames.compact.join(" "),
    data: data,
    builder: ::Playbook::Forms::Builder
  )
  content_for(:pb_js, javascript_tag(<<~JS))
    window.addEventListener("DOMContentLoaded", function() { PbFormValidation.start() })
    window.addEventListener("DOMContentLoaded", () => formHelper())
  JS
  form_with(**options, &block)
end