katalyst-govuk-formbuilder 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 55dbcc46de912ec5d085cec6a9012f2c9519fab9faac2e75dc4db78b9fb11c8b
4
- data.tar.gz: 33c0503e13126fdf81e7bc749d51137793e56c264b5866ff22416cc135cf1eb4
3
+ metadata.gz: c6480175ffd7ac7e718126f6b3e41314693c56cf87614d8691fb180adc7048fb
4
+ data.tar.gz: 67d870ab5c506e5dcfb9e85a599f1940085457963d04f114f8db11571eba0b9f
5
5
  SHA512:
6
- metadata.gz: 26f134d6a93f1cf1c1569037a667818ffda1471d5ab5c1a1a71a0a026ed2361d6576556522d6c1902a59e55cbb4373ecef6c874c7a09bdab7d858511973f9e7e
7
- data.tar.gz: 79abd30427a6b08a18bdff4254d9e95749ca3021a9071ae68d3f9a79c46954c3d8204c8a5064efb4e89957917e40886111757505111ec0da6549474dd81bead2
6
+ metadata.gz: e6b24e8b2adbd0415313a030d1362b0b8739525ef1c0996dfb0d3f8dc4f18e040cb380ac9f4de090a4e9c22b961b6f2e2cd02701e3a5370df0c280b08b151f6a
7
+ data.tar.gz: 7bfea8bff24edd542f4a786becbefc587f3ba50e529c8a08f5d8469a12c404b75206cfeaf8ca33e4a0dd7d619741d7403da4324fe34efdf0a1a6fcd8c0854291
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "govuk_design_system_formbuilder"
4
+
5
+ module GOVUKDesignSystemFormBuilder
6
+ module Elements
7
+ class RichTextArea < Base
8
+ using PrefixableArray
9
+
10
+ include Traits::Error
11
+ include Traits::Hint
12
+ include Traits::Label
13
+ include Traits::Supplemental
14
+ include Traits::HTMLAttributes
15
+ include Traits::HTMLClasses
16
+
17
+ def initialize(builder, object_name, attribute_name, hint:, label:, caption:, form_group:, **kwargs, &block)
18
+ super(builder, object_name, attribute_name, &block)
19
+
20
+ @label = label
21
+ @caption = caption
22
+ @hint = hint
23
+ @form_group = form_group
24
+ @html_attributes = kwargs
25
+ end
26
+
27
+ def html
28
+ Containers::FormGroup.new(*bound, **@form_group).html do
29
+ safe_join([label_element, supplemental_content, hint_element, error_element, rich_text_area])
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def rich_text_area
36
+ @builder.rich_text_area(@attribute_name, **attributes(@html_attributes))
37
+ end
38
+
39
+ def classes
40
+ build_classes(%(richtextarea), %(richtextarea--error) => has_errors?).prefix(brand)
41
+ end
42
+
43
+ def options
44
+ {
45
+ id: field_id(link_errors: true),
46
+ class: classes,
47
+ aria: { describedby: combine_references(hint_id, error_id, supplemental_id) },
48
+ }
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ module GOVUKDesignSystemFormBuilder
55
+ module Builder
56
+ delegate :config, to: GOVUKDesignSystemFormBuilder
57
+
58
+ # Generates a pair of +trix-toolbar+ and +trix-editor+ elements with a label, optional hint. Requires action-text to
59
+ # be correctly setup in the application
60
+ #
61
+ # @param attribute_name [Symbol] The name of the attribute
62
+ # @param hint [Hash,Proc] The content of the hint. No hint will be added if 'text' is left +nil+. When a +Proc+ is
63
+ # supplied the hint will be wrapped in a +div+ instead of a +span+
64
+ # @option hint text [String] the hint text
65
+ # @option hint kwargs [Hash] additional arguments are applied as attributes to the hint
66
+ # @param label [Hash,Proc] configures or sets the associated label content
67
+ # @option label text [String] the label text
68
+ # @option label size [String] the size of the label font, can be +xl+, +l+, +m+, +s+ or nil
69
+ # @option label tag [Symbol,String] the label's wrapper tag, intended to allow labels to act as page headings
70
+ # @option label hidden [Boolean] control the visibility of the label. Hidden labels will still be read by screen
71
+ # readers
72
+ # @option label kwargs [Hash] additional arguments are applied as attributes on the +label+ element
73
+ # @param caption [Hash] configures or sets the caption content which is inserted above the label
74
+ # @option caption text [String] the caption text
75
+ # @option caption size [String] the size of the caption, can be +xl+, +l+ or +m+. Defaults to +m+
76
+ # @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
77
+ # @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +trix-editor+ element. This is
78
+ # picked up and handled by the action-text gem
79
+ # @param form_group [Hash] configures the form group
80
+ # @option form_group classes [Array,String] sets the form group's classes
81
+ # @option form_group kwargs [Hash] additional attributes added to the form group
82
+ # @param block [Block] arbitrary HTML that will be rendered between the hint and the input
83
+ # @return [ActiveSupport::SafeBuffer] HTML output
84
+ #
85
+ # @example A rich text area with injected content
86
+ # = f.govuk_rich_text_area :description,
87
+ # label: { text: 'Where did the incident take place?' } do
88
+ #
89
+ # p.govuk-inset-text
90
+ # | If you don't know exactly leave this section blank
91
+ #
92
+ # @example A rich text area with the label supplied as a proc
93
+ # = f.govuk_rich_text_area :instructions,
94
+ # label: -> { tag.h3("How do you set it up?") }
95
+ #
96
+ # @example A rich text area with a custom direct upload url and a custom stimulus controller
97
+ # = f.govuk_rich_text_area :description,
98
+ # data: {
99
+ # direct_upload_url: direct_uploads_url,
100
+ # controller: "content--editor--trix",
101
+ # action: "trix-initialize->content--editor--trix#trixInitialize",
102
+ # }
103
+ #
104
+ def govuk_rich_text_area(attribute_name, hint: {}, label: {}, caption: {}, form_group: {}, **kwargs, &block)
105
+ Elements::RichTextArea.new(self, object_name, attribute_name, hint: hint, label: label, caption: caption, form_group: form_group, **kwargs, &block).html
106
+ end
107
+ end
108
+ end
@@ -1,7 +1,7 @@
1
1
  module Katalyst
2
2
  module GOVUK
3
3
  module Formbuilder
4
- VERSION = "1.1.1"
4
+ VERSION = "1.2.0"
5
5
  end
6
6
  end
7
7
  end
@@ -1,4 +1,5 @@
1
1
  require "govuk_design_system_formbuilder"
2
+ require "govuk_design_system_formbuilder/elements/rich_text_area"
2
3
 
3
4
  require "katalyst/govuk/formbuilder/engine"
4
5
  require "katalyst/govuk/formbuilder/frontend"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: katalyst-govuk-formbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katalyst Interactive
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-28 00:00:00.000000000 Z
11
+ date: 2022-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder
@@ -38,6 +38,7 @@ files:
38
38
  - app/assets/javascripts/katalyst/govuk/formbuilder.js
39
39
  - app/assets/javascripts/katalyst/govuk/formbuilder.min.js
40
40
  - config/importmap.rb
41
+ - lib/govuk_design_system_formbuilder/elements/rich_text_area.rb
41
42
  - lib/katalyst/govuk/formbuilder.rb
42
43
  - lib/katalyst/govuk/formbuilder/engine.rb
43
44
  - lib/katalyst/govuk/formbuilder/frontend.rb