Sha256: 6db5da4f5f127cc457072e18ccbdcfcce19e51783fedb06deb9c4c7303dbab0a

Contents?: true

Size: 1.61 KB

Versions: 118

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

require_relative "pb_forms_global_props_helper"

module Playbook
  module PbFormsHelper
    include Playbook::PbFormsGlobalPropsHelper
    # Renders a pb form with ::Playbook::Forms::Builder, that can render
    # Playbook kits in the most railsie way.
    #
    # I.e.:
    #
    #   pb_form_with model: @user do |f|
    #     f.text_field :name
    #   end
    #
    # The form can also validate the fields, and trigger the validation automatically:
    #
    # I.e.:
    #
    #   pb_form_with model: @user, validate: true do |f|
    #     f.text_field :name, required: true
    #   end
    #
    # @param data [Hash] hash of data attributes
    # @param validate [Boolean] whether validation should be triggered or not
    # @see [#form_with] for other options
    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
  end
end

Version data entries

118 entries across 118 versions & 1 rubygems

Version Path
playbook_ui-14.15.0.pre.alpha.play1907passglobalpropstotooltiprails6706 lib/playbook/pb_forms_helper.rb
playbook_ui-14.16.0.pre.rc.3 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.PBNTR617addgriddisplayglobalprop6700 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.play1910emptystatekitreactbeta6685 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.play1757pbcontenttag6677 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.PLAY1756pbcontenttagpt76661 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.play1757pbcontenttag6658 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.play1757pbcontenttag6644 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.PLAY1871speedupvitebuildwatch6643 lib/playbook/pb_forms_helper.rb
playbook_ui-14.16.0.pre.rc.2 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.PBNTR900phonenumberinputhidden6620 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.play1917lodashremoval2of36615 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.play1917lodashremoval2of36613 lib/playbook/pb_forms_helper.rb
playbook_ui-14.16.0.pre.rc.1 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.PBNTR900phonenumberinputhidden6593 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.PBNTR902multilevelselecthiddeninputbug6580 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.play1910emptystatekitreactbeta6579 lib/playbook/pb_forms_helper.rb
playbook_ui-14.15.0.pre.alpha.play1854reacthookmultilvlselect6572 lib/playbook/pb_forms_helper.rb
playbook_ui-14.16.0.pre.rc.0 lib/playbook/pb_forms_helper.rb
playbook_ui-14.14.0.pre.alpha.PBNTR907reactfilterpopoverpropswidthbug6557 lib/playbook/pb_forms_helper.rb