Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab_ui_form_builder.rb « form_builders « gitlab « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ea98f6b2eec453752989eab8c4a71873aebdf2ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# frozen_string_literal: true

module Gitlab
  module FormBuilders
    class GitlabUiFormBuilder < ActionView::Helpers::FormBuilder
      def submit(value = nil, options = {})
        if options[:pajamas_button]
          @template.render Pajamas::ButtonComponent.new(
            variant: :confirm,
            type: :submit,
            button_options: options.except(:pajamas_button)
          ) do
            value
          end
        else
          super
        end
      end

      def gitlab_ui_checkbox_component(
        method,
        label = nil,
        help_text: nil,
        checkbox_options: {},
        checked_value: '1',
        unchecked_value: '0',
        label_options: {},
        &block
      )
        Pajamas::CheckboxComponent.new(
          form: self,
          method: method,
          label: label,
          help_text: help_text,
          checkbox_options: format_options(checkbox_options),
          checked_value: checked_value,
          unchecked_value: unchecked_value,
          label_options: format_options(label_options)
        ).render_in(@template, &block)
      end

      def gitlab_ui_radio_component(
        method,
        value,
        label = nil,
        help_text: nil,
        radio_options: {},
        label_options: {},
        &block
      )
        Pajamas::RadioComponent.new(
          form: self,
          method: method,
          value: value,
          label: label,
          help_text: help_text,
          radio_options: format_options(radio_options),
          label_options: format_options(label_options)
        ).render_in(@template, &block)
      end

      def gitlab_ui_datepicker(method, options = {})
        @template.text_field @object_name, method, options.merge(class: "datepicker form-control gl-form-input")
      end

      private

      def format_options(options)
        objectify_options(options)
      end
    end
  end
end