formstrap 0.3.3 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/app/assets/javascripts/formstrap/controllers/redactor_controller.js +18 -0
  4. data/app/assets/javascripts/formstrap/controllers/select_controller.js +22 -18
  5. data/app/assets/javascripts/formstrap/index.js +5 -2
  6. data/app/assets/javascripts/formstrap/vendor/redactor/i18n/de.js +214 -0
  7. data/app/assets/javascripts/formstrap/vendor/redactor/i18n/en.js +214 -0
  8. data/app/assets/javascripts/formstrap/vendor/redactor/i18n/fr.js +214 -0
  9. data/app/assets/javascripts/formstrap/vendor/redactor/i18n/nl.js +214 -0
  10. data/app/assets/javascripts/formstrap/vendor/redactor/index.js +5 -0
  11. data/app/assets/javascripts/formstrap/vendor/redactor/plugins/emoji.js +332 -0
  12. data/app/assets/javascripts/formstrap/vendor/redactor/plugins/linkstyles.js +124 -0
  13. data/app/assets/javascripts/formstrap.js +1295 -148
  14. data/app/assets/stylesheets/formstrap/general.scss +0 -6
  15. data/app/assets/stylesheets/formstrap/vendor/overrides/redactor.scss +151 -0
  16. data/app/assets/stylesheets/formstrap/vendor/redactor.css +2535 -0
  17. data/app/assets/stylesheets/formstrap.css +2650 -5
  18. data/app/assets/stylesheets/formstrap.scss +4 -0
  19. data/app/models/formstrap/redactor_view.rb +57 -0
  20. data/app/models/formstrap/wysiwyg_view.rb +9 -1
  21. data/app/views/formstrap/{_redactorx.html.erb → _redactor.html.erb} +4 -7
  22. data/app/views/formstrap/_wysiwyg.html.erb +3 -5
  23. data/lib/formstrap/form_builder.rb +12 -4
  24. data/lib/formstrap/version.rb +1 -1
  25. data/package.json +2 -2
  26. data/yarn.lock +4 -4
  27. metadata +14 -5
  28. data/app/assets/javascripts/formstrap/controllers/redactorx_controller.js +0 -40
  29. data/app/models/formstrap/redactorx_view.rb +0 -57
@@ -4,6 +4,10 @@
4
4
  // Flatpickr
5
5
  @import "formstrap/vendor/flatpickr";
6
6
 
7
+ // Redactor
8
+ @import "formstrap/vendor/redactor";
9
+ @import "formstrap/vendor/overrides/redactor";
10
+
7
11
  // Formstrap
8
12
  @import "formstrap/general";
9
13
  @import "formstrap/utilities";
@@ -0,0 +1,57 @@
1
+ module Formstrap
2
+ class RedactorView < ViewModel
3
+ def options
4
+ default_options.deep_merge(to_h)
5
+ end
6
+
7
+ private
8
+
9
+ def default_options
10
+ {
11
+ data: {
12
+ controller: "redactor",
13
+ "redactor-options": redactor_options
14
+ }
15
+ }
16
+ end
17
+
18
+ def redactor_options
19
+ default_redactor_options.deep_merge(redactor || {})
20
+ end
21
+
22
+ def default_redactor_options
23
+ {
24
+ lang: I18n.locale,
25
+ # button to control a block/line in the editor
26
+ control: false,
27
+ minHeight: '57px',
28
+ theme: "light",
29
+ # Popup when highlighting text
30
+ context: false,
31
+ # Top toolbar
32
+ toolbar: true,
33
+ popups: {
34
+ # Options in addbar popup (press + button)
35
+ addbar: %w[format bold italic deleted list table link embed],
36
+ # Options in block/line popup
37
+ control: [],
38
+ # Options in format popup
39
+ format: %w[text h1 h2 h3 h4],
40
+ },
41
+ block: {
42
+ # Outline block/line in the editor
43
+ outline: false,
44
+ },
45
+ buttons: {
46
+ # Options when highlighting text
47
+ context: %w[bold underline italic],
48
+ # Options in toolbar on the right
49
+ extrabar: %w[],
50
+ # Options in toolbar on the left
51
+ toolbar: %w[format bold italic deleted list table link html],
52
+ },
53
+ plugins: %w[emoji linkstyles],
54
+ }.delete_if { |k, v| v.nil? }
55
+ end
56
+ end
57
+ end
@@ -6,9 +6,17 @@ module Formstrap
6
6
 
7
7
  private
8
8
 
9
+ def toolbar
10
+ @toolbar != false
11
+ end
12
+
9
13
  def default_options
10
14
  {
11
- hybrid: toolbar == false
15
+ redactor: {
16
+ context: !toolbar,
17
+ extrabar: toolbar,
18
+ toolbar: toolbar
19
+ }
12
20
  }
13
21
  end
14
22
  end
@@ -1,5 +1,5 @@
1
1
  <%
2
- # formstrap/redactorx
2
+ # formstrap/redactor
3
3
  #
4
4
  # ==== Required parameters
5
5
  # * +attribute+ - Name of the attribute of the form model
@@ -8,24 +8,21 @@
8
8
  # ==== Optional parameters
9
9
  # * +append+ - Display as input group with text on the right-hand side
10
10
  # * +hint+ - Informative text to assist with data input. HTML markup is allowed.
11
- # * +hybrid+ - Enables hybrid mode when set to true (default = false)
12
11
  # * +label+ - Text to display inside label tag. Defaults to the attribute name. Set to false if you don"t want to show a label.
13
12
  # * +prepend+ - Display as input group with text on the left-hand side
14
13
  # * +redactor+ - Hash with all options you can pass to redactor JS config
15
14
  # * +wrapper+ - Hash with all options for the surrounding html tag
16
15
  #
17
16
  # ==== References
18
- # https://headmin.dev/docs/forms/redactorx
19
- # https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea
20
- # https://apidock.com/rails/ActionView/Helpers/FormHelper/text_area
17
+ # https://imperavi.com/redactor/docs
21
18
  #
22
19
  # ==== Examples
23
20
  # Basic version
24
21
  # <%= form_with do |form| %#>
25
- # <%= render "formstrap/redactorx", form: form, attribute: :text %#>
22
+ # <%= render "formstrap/redactor", form: form, attribute: :text %#>
26
23
  # <% end %#>
27
24
 
28
- redactor = Formstrap::RedactorxView.new(local_assigns)
25
+ redactor = Formstrap::RedactorView.new(local_assigns)
29
26
  %>
30
27
 
31
28
  <%= render "formstrap/textarea", redactor.options %>
@@ -12,17 +12,15 @@
12
12
  # * +wrapper+ - Hash with all options for the surrounding html tag
13
13
  #
14
14
  # ==== References
15
- # https://headmin.dev/docs/forms/redactorx
16
- # https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea
17
- # https://apidock.com/rails/ActionView/Helpers/FormHelper/text_area
15
+ # https://imperavi.com/redactor/docs
18
16
  #
19
17
  # ==== Examples
20
18
  # Basic version
21
19
  # <%= form_with do |form| %#>
22
- # <%= render "formstrap/redactorx", form: form, attribute: :text %#>
20
+ # <%= render "formstrap/wysiwyg", form: form, attribute: :text %#>
23
21
  # <% end %#>
24
22
 
25
23
  wysiwyg = Formstrap::WysiwygView.new(local_assigns)
26
24
  %>
27
25
 
28
- <%= render "formstrap/redactorx", wysiwyg.options %>
26
+ <%= render "formstrap/redactor", wysiwyg.options %>
@@ -118,8 +118,12 @@ module Formstrap
118
118
  @template.render("formstrap/repeater", form: self, attribute: attribute, **options, &block)
119
119
  end
120
120
 
121
- def redactorx(attribute, options = {})
122
- render_input(:redactorx, attribute, options)
121
+ def redactor(attribute, formstrap: true, **options)
122
+ if formstrap
123
+ render_input(:redactor, attribute, options)
124
+ else
125
+ text_area attribute, options
126
+ end
123
127
  end
124
128
 
125
129
  def search(attribute, options = {})
@@ -162,8 +166,12 @@ module Formstrap
162
166
  end
163
167
  end
164
168
 
165
- def wysiwyg(attribute, options = {})
166
- render_input(:wysiwyg, attribute, options)
169
+ def wysiwyg(attribute, formstrap: true, **options)
170
+ if formstrap
171
+ render_input(:wysiwyg, attribute, options)
172
+ else
173
+ text_area attribute, options
174
+ end
167
175
  end
168
176
 
169
177
  def render_input(name, attribute, options)
@@ -1,3 +1,3 @@
1
1
  module Formstrap
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.4"
3
3
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontierdotbe/formstrap",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "Bootstrap-powered Form Helpers",
5
5
  "module": "app/assets/javascripts/formstrap.js",
6
6
  "main": "app/assets/javascripts/formstrap.js",
@@ -28,7 +28,7 @@
28
28
  "flatpickr": "^4.6.9",
29
29
  "sass": "^1.58.3",
30
30
  "sortablejs": "^1.14.0",
31
- "tom-select": "^2.0.0",
31
+ "tom-select": "^2.3.1",
32
32
  "yarn": "^1.22.18"
33
33
  },
34
34
  "devDependencies": {
data/yarn.lock CHANGED
@@ -1710,10 +1710,10 @@ to-regex-range@^5.0.1:
1710
1710
  dependencies:
1711
1711
  is-number "^7.0.0"
1712
1712
 
1713
- tom-select@^2.0.0:
1714
- version "2.2.2"
1715
- resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.2.2.tgz#8e5f9296e6d80254feccb57f0986bd6c44d126e2"
1716
- integrity sha512-igGah1yY6yhrnN2h/Ky8I5muw/nE/YQxIsEZoYu5qaA4bsRibvKto3s8QZZosKpOd0uO8fNYhRfAwgHB4IAYew==
1713
+ tom-select@^2.3.1:
1714
+ version "2.3.1"
1715
+ resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.3.1.tgz#df338d9082874cd0bceb3bee87ed0184447c47f1"
1716
+ integrity sha512-QS4vnOcB6StNGqX4sGboGXL2fkhBF2gIBB+8Hwv30FZXYPn0CyYO8kkdATRvwfCTThxiR4WcXwKJZ3cOmtI9eg==
1717
1717
  dependencies:
1718
1718
  "@orchidjs/sifter" "^1.0.3"
1719
1719
  "@orchidjs/unicode-variants" "^1.0.4"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jef Vlamings
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-02 00:00:00.000000000 Z
11
+ date: 2024-04-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: An extensive Bootstrap form library to power your Ruby On Rails application.
14
14
  email:
@@ -47,11 +47,18 @@ files:
47
47
  - app/assets/javascripts/formstrap/controllers/nested_preview_controller.js
48
48
  - app/assets/javascripts/formstrap/controllers/popup_controller.js
49
49
  - app/assets/javascripts/formstrap/controllers/preview_controller.js
50
- - app/assets/javascripts/formstrap/controllers/redactorx_controller.js
50
+ - app/assets/javascripts/formstrap/controllers/redactor_controller.js
51
51
  - app/assets/javascripts/formstrap/controllers/repeater_controller.js
52
52
  - app/assets/javascripts/formstrap/controllers/select_controller.js
53
53
  - app/assets/javascripts/formstrap/controllers/textarea_controller.js
54
54
  - app/assets/javascripts/formstrap/index.js
55
+ - app/assets/javascripts/formstrap/vendor/redactor/i18n/de.js
56
+ - app/assets/javascripts/formstrap/vendor/redactor/i18n/en.js
57
+ - app/assets/javascripts/formstrap/vendor/redactor/i18n/fr.js
58
+ - app/assets/javascripts/formstrap/vendor/redactor/i18n/nl.js
59
+ - app/assets/javascripts/formstrap/vendor/redactor/index.js
60
+ - app/assets/javascripts/formstrap/vendor/redactor/plugins/emoji.js
61
+ - app/assets/javascripts/formstrap/vendor/redactor/plugins/linkstyles.js
55
62
  - app/assets/stylesheets/formstrap.css
56
63
  - app/assets/stylesheets/formstrap.scss
57
64
  - app/assets/stylesheets/formstrap/autocomplete.scss
@@ -69,6 +76,8 @@ files:
69
76
  - app/assets/stylesheets/formstrap/utilities.scss
70
77
  - app/assets/stylesheets/formstrap/utilities/dropzone.scss
71
78
  - app/assets/stylesheets/formstrap/vendor/flatpickr.css
79
+ - app/assets/stylesheets/formstrap/vendor/overrides/redactor.scss
80
+ - app/assets/stylesheets/formstrap/vendor/redactor.css
72
81
  - app/assets/stylesheets/formstrap/vendor/tom-select-bootstrap.scss
73
82
  - app/controllers/concerns/formstrap/pagination.rb
74
83
  - app/controllers/formstrap/media_controller.rb
@@ -104,7 +113,7 @@ files:
104
113
  - app/models/formstrap/media_view.rb
105
114
  - app/models/formstrap/number_view.rb
106
115
  - app/models/formstrap/password_view.rb
107
- - app/models/formstrap/redactorx_view.rb
116
+ - app/models/formstrap/redactor_view.rb
108
117
  - app/models/formstrap/search_view.rb
109
118
  - app/models/formstrap/select_view.rb
110
119
  - app/models/formstrap/switch_view.rb
@@ -137,7 +146,7 @@ files:
137
146
  - app/views/formstrap/_media.html.erb
138
147
  - app/views/formstrap/_number.html.erb
139
148
  - app/views/formstrap/_password.html.erb
140
- - app/views/formstrap/_redactorx.html.erb
149
+ - app/views/formstrap/_redactor.html.erb
141
150
  - app/views/formstrap/_repeater.html.erb
142
151
  - app/views/formstrap/_search.html.erb
143
152
  - app/views/formstrap/_select.html.erb
@@ -1,40 +0,0 @@
1
- /* global RedactorX */
2
- import { Controller } from '@hotwired/stimulus'
3
-
4
- export default class extends Controller {
5
- connect () {
6
- this.initRedactor()
7
- }
8
-
9
- initRedactor () {
10
- if (typeof RedactorX === 'undefined') {
11
- console.error('RedactorX is a paid module and is not included in Headmin. Please purchase it and import it as a JS module')
12
- return false
13
- }
14
-
15
- const defaultOptions = {
16
- editor: {
17
- minHeight: '57px'
18
- },
19
- subscribe: {
20
- 'app.start': () => {
21
- this.stylize()
22
- }
23
- }
24
- }
25
- const options = JSON.parse(this.element.getAttribute('data-redactor-options'))
26
- RedactorX(this.element, { ...defaultOptions, ...options })
27
- }
28
-
29
- stylize () {
30
- const container = this.element.nextElementSibling
31
-
32
- // Copy textarea classes
33
- const inputClasses = this.element.classList
34
- container.classList.add(...inputClasses)
35
-
36
- // Add top margin to input group
37
- // const inputGroup = container.closest('.input-group')
38
- // inputGroup.classList.add('mt-4')
39
- }
40
- }
@@ -1,57 +0,0 @@
1
- module Formstrap
2
- class RedactorxView < ViewModel
3
- def options
4
- default_options.deep_merge(to_h)
5
- end
6
-
7
- private
8
-
9
- def default_options
10
- {
11
- data: {
12
- controller: "redactorx",
13
- "redactor-options": redactor_options
14
- }
15
- }
16
- end
17
-
18
- def control
19
- @control || (hybrid ? true : nil)
20
- end
21
-
22
- def context
23
- @context || (hybrid ? true : nil)
24
- end
25
-
26
- def toolbar
27
- @toolbar || (hybrid ? false : nil)
28
- end
29
-
30
- def addbar
31
- @addbar || %w[paragraph image embed table quote pre line]
32
- end
33
-
34
- def plugins
35
- @plugins || %w[shortcut]
36
- end
37
-
38
- attr_reader :topbar
39
-
40
- def redactor_options
41
- default_redactor_options.deep_merge(redactor || {})
42
- end
43
-
44
- def default_redactor_options
45
- {
46
- control: control,
47
- context: context,
48
- toolbar: toolbar,
49
- buttons: {
50
- addbar: addbar,
51
- plugins: plugins,
52
- topbar: topbar
53
- }
54
- }.delete_if { |k, v| v.nil? }
55
- end
56
- end
57
- end