ckeditor5 1.5.2 → 1.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1fd62e59f6152397ca06404b956ee4b89452eff91679fd8c87436ab620c511f8
4
- data.tar.gz: 0b740379678382ab910743ec7041f0b284db0a0c4f377eba52c609eaa705cf4f
3
+ metadata.gz: 482179142a7c42597ead0126fe8eedb8c2ca1ae5e33427e7c2438feea952cc40
4
+ data.tar.gz: 7fa425d5018e6a804e05780958a040cc03b946853f84fe666e1d0fe6df8b0512
5
5
  SHA512:
6
- metadata.gz: 9e359270ad4714fa0a080d70cee7f43ebf874670dddc191c1ee2d6233ea85a0e45e0df975ed89de36fd323d978e371d8751807eee32caf34ff545e04fe41c2ba
7
- data.tar.gz: 701d19ceae2a64fa455ec46456c6af2d921393606ddb7b2565862f1b20524d9dda58d77800774f300bb294d9c620400506772fcd850309d0078e2abb354f8955
6
+ metadata.gz: 5922019eda63b05842228e06acc45d016d4489a568b5f023a756b5fc6c7355ff58f02523101b44b9066f077fe820d336ca9314a8404ad6282763d71dde4b99af
7
+ data.tar.gz: a91192a64da0d0c20f8ee8e5125e2c1b3a6e1e44c58a6fad76bc1dc9e1ef60a5e91b023f6cac551d4a615ae692cf6ced42ebf966e9ddbaae6caf64002a505361
data/README.md CHANGED
@@ -30,6 +30,22 @@ CKEditor5::Rails.configure do
30
30
  end
31
31
  ```
32
32
 
33
+ In your layout:
34
+
35
+ ```erb
36
+ <!-- app/views/layouts/application.html.erb -->
37
+
38
+ <!DOCTYPE html>
39
+ <html>
40
+ <head>
41
+ <%= yield :head %>
42
+ </head>
43
+ <body>
44
+ <%= yield %>
45
+ </body>
46
+ </html>
47
+ ```
48
+
33
49
  In your view:
34
50
 
35
51
  ```erb
@@ -980,7 +996,7 @@ The example below shows how to define a custom plugin that allows toggling the h
980
996
  ```rb
981
997
  # config/initializers/ckeditor5.rb
982
998
 
983
- config.presets.define :custom do
999
+ CKEditor5::Rails.configure do
984
1000
  # ... other configuration
985
1001
 
986
1002
  # 1. You can also use "window_name" option to import plugin from window object:
@@ -2,22 +2,56 @@
2
2
 
3
3
  module CKEditor5::Rails::Hooks
4
4
  module Form
5
- module FormBuilderExtension
6
- def ckeditor5(method, options = {})
7
- value = if object.respond_to?(method)
8
- object.send(method)
9
- else
10
- options[:initial_data]
11
- end
12
-
13
- html_options = options.merge(
14
- name: object_name,
15
- required: options.delete(:required),
16
- initial_data: value
17
- )
5
+ class EditorInputBuilder
6
+ def initialize(object_name, object, template)
7
+ @object_name = object_name
8
+ @object = object
9
+ @template = template
10
+ end
18
11
 
12
+ def build_editor(method, options = {})
13
+ html_options = build_html_options(method, options)
14
+ add_validation_classes!(method, html_options)
19
15
  @template.ckeditor5_editor(**html_options)
20
16
  end
17
+
18
+ private
19
+
20
+ attr_reader :object_name, :object, :template
21
+
22
+ def build_html_options(method, options)
23
+ {
24
+ name: build_field_name(method, options),
25
+ initial_data: fetch_initial_data(method, options),
26
+ id: options[:id] || "#{object_name}_#{method}".parameterize,
27
+ **options
28
+ }
29
+ end
30
+
31
+ def build_field_name(method, options)
32
+ return options[:as] || method.to_s if object_name.blank?
33
+
34
+ "#{object_name}[#{options[:as] || method}]"
35
+ end
36
+
37
+ def fetch_initial_data(method, options)
38
+ return object.send(method) if object.respond_to?(method)
39
+
40
+ options[:initial_data]
41
+ end
42
+
43
+ def add_validation_classes!(method, html_options)
44
+ return unless object.respond_to?(:errors) && object.errors[method].present?
45
+
46
+ html_options[:class] = [html_options[:class], 'is-invalid'].compact.join(' ')
47
+ end
48
+ end
49
+
50
+ module FormBuilderExtension
51
+ def ckeditor5(method, options = {})
52
+ EditorInputBuilder.new(object_name, object, @template)
53
+ .build_editor(method, options)
54
+ end
21
55
  end
22
56
  end
23
57
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module CKEditor5::Rails
4
- VERSION = '1.5.2'
3
+ module CKEditor5
4
+ module Rails
5
+ VERSION = '1.5.4'
6
+ end
5
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ckeditor5
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mateusz Bagiński
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-11-05 00:00:00.000000000 Z
12
+ date: 2024-11-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -20,7 +20,7 @@ dependencies:
20
20
  version: '6.0'
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: '8.0'
23
+ version: '9.0'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
@@ -30,7 +30,7 @@ dependencies:
30
30
  version: '6.0'
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '8.0'
33
+ version: '9.0'
34
34
  description:
35
35
  email: cziken58@gmail.com
36
36
  executables: []