pg_rails 7.6.3 → 7.6.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/pg_engine/app/assets/stylesheets/pg_rails_b5.scss +50 -3
- data/pg_engine/app/components/inline_edit/inline_component.rb +27 -0
- data/pg_engine/app/components/inline_edit/inline_edit_component.html.slim +10 -10
- data/pg_engine/app/components/inline_edit/inline_edit_component.rb +3 -13
- data/pg_engine/app/components/inline_edit/inline_show_component.html.slim +3 -3
- data/pg_engine/app/components/inline_edit/inline_show_component.rb +1 -14
- data/pg_engine/app/lib/pg_form_builder.rb +2 -0
- data/pg_engine/config/simple_form/simple_form_bootstrap.rb +15 -0
- data/pg_rails/lib/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d093a397aa4021d053313ee524475eb24295290e56974623fdf03b0ab14691ee
|
4
|
+
data.tar.gz: b0ae6c35558a26ff88d59e4949341a2d1046bd0ff81ff83279961b70d20813dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c1d7f92c914bf3ca632cfcb04cdcb9a52870e69a057085df1b68bc7e402a4831f7ce1b008f9aa3a6e50bd3436ce192225f795f52841b939bb0733024c4c98fa
|
7
|
+
data.tar.gz: 87b8d08575eca14e090029038176c1dcf352047a340f41b3f908bfaf21b06614e952d5543a595e02503f25bb47d0dd45cb5ba86d74c089f0d4c35cde4b23db96
|
@@ -204,9 +204,18 @@ input[type=datetime-local], input[type=datetime] {
|
|
204
204
|
// Inline edit
|
205
205
|
|
206
206
|
.inline-edit {
|
207
|
-
|
208
|
-
|
209
|
-
|
207
|
+
border-bottom: 1px dotted #333;
|
208
|
+
padding-bottom: 1px;
|
209
|
+
|
210
|
+
&:not(:has(.trix-content)) .edit-link {
|
211
|
+
margin-right: 0.25em;
|
212
|
+
}
|
213
|
+
|
214
|
+
&:has(.trix-content) .edit-link {
|
215
|
+
margin-bottom: 0.55em;
|
216
|
+
display: inline-block;
|
217
|
+
border-bottom: 1px dotted #333;
|
218
|
+
}
|
210
219
|
|
211
220
|
a:hover {
|
212
221
|
i {
|
@@ -214,7 +223,45 @@ input[type=datetime-local], input[type=datetime] {
|
|
214
223
|
}
|
215
224
|
}
|
216
225
|
|
226
|
+
form {
|
227
|
+
display: flex;
|
228
|
+
align-items: start;
|
229
|
+
gap: 0.25rem;
|
230
|
+
|
231
|
+
&:has(trix-editor) {
|
232
|
+
display: block;
|
233
|
+
|
234
|
+
.actions {
|
235
|
+
margin-top: 0.25rem;
|
236
|
+
}
|
237
|
+
}
|
238
|
+
}
|
239
|
+
|
217
240
|
input[type=text] {
|
218
241
|
min-width: 22em;
|
219
242
|
}
|
243
|
+
|
244
|
+
select {
|
245
|
+
max-width: 45em;
|
246
|
+
}
|
247
|
+
|
248
|
+
// To display correctly in tables with fixed witdh columns
|
249
|
+
.form-select {
|
250
|
+
width: initial;
|
251
|
+
}
|
252
|
+
}
|
253
|
+
|
254
|
+
// WIP, inline rich text en listados
|
255
|
+
.listado {
|
256
|
+
.inline-edit {
|
257
|
+
display: flex!important;
|
258
|
+
align-items: center;
|
259
|
+
gap: 0.25em;
|
260
|
+
|
261
|
+
&:has(.trix-content) .edit-link {
|
262
|
+
margin-bottom: 0;
|
263
|
+
display: inline;
|
264
|
+
border-bottom: none;
|
265
|
+
}
|
266
|
+
}
|
220
267
|
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class InlineComponent < ViewComponent::Base
|
2
|
+
def initialize(model, attribute)
|
3
|
+
@model = model
|
4
|
+
@attribute = attribute
|
5
|
+
@unsuffixed_attribute = unsuffixed(attribute)
|
6
|
+
@frame_id = dom_id(model, "#{attribute}_inline_edit")
|
7
|
+
|
8
|
+
super
|
9
|
+
end
|
10
|
+
|
11
|
+
def before_render
|
12
|
+
return unless controller.in_modal?
|
13
|
+
|
14
|
+
controller.instance_variable_set(:@using_modal, true)
|
15
|
+
end
|
16
|
+
|
17
|
+
SUFIJOS = %i[f text].freeze
|
18
|
+
def unsuffixed(attribute)
|
19
|
+
ret = attribute.to_s.dup
|
20
|
+
|
21
|
+
SUFIJOS.each do |sufijo|
|
22
|
+
ret.gsub!(/_#{sufijo}$/, '')
|
23
|
+
end
|
24
|
+
|
25
|
+
ret
|
26
|
+
end
|
27
|
+
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
= helpers.turbo_frame_tag(@frame_id, class: 'inline-edit')
|
2
|
-
= helpers.pg_form_for(@model, render_errors: false, wrapper_mappings: @wrapper_mappings
|
3
|
-
html: { class: 'd-flex align-items-start gap-1' }) do |f|
|
2
|
+
= helpers.pg_form_for(@model, render_errors: false, wrapper_mappings: @wrapper_mappings) do |f|
|
4
3
|
= hidden_field_tag :inline_attribute, @attribute
|
5
4
|
|
6
|
-
= f.field @
|
5
|
+
= f.field @unsuffixed_attribute, label: false, html5: true
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
7
|
+
.actions.d-flex.gap-1
|
8
|
+
= button_tag class: 'btn btn-sm btn-primary',
|
9
|
+
data: { controller: 'tooltip', 'bs-title': 'Guardar' } do
|
10
|
+
i.bi.bi-check-lg
|
11
|
+
= link_to users_inline_show_path(model: @model.to_gid, attribute: @attribute),
|
12
|
+
class: 'btn btn-sm btn-secondary',
|
13
|
+
data: { controller: 'tooltip', 'bs-title': 'Cancelar' } do
|
14
|
+
i.bi.bi-x-lg
|
@@ -1,11 +1,7 @@
|
|
1
|
-
class InlineEditComponent <
|
2
|
-
def initialize(
|
3
|
-
@model = model
|
4
|
-
@attribute = attribute
|
5
|
-
@frame_id = dom_id(model, "#{attribute}_inline_edit")
|
6
|
-
|
1
|
+
class InlineEditComponent < InlineComponent
|
2
|
+
def initialize(*)
|
7
3
|
@wrapper_mappings = {
|
8
|
-
string: :
|
4
|
+
string: :inline_form_grow,
|
9
5
|
pg_associable: :inline_form_control,
|
10
6
|
date: :inline_form_control,
|
11
7
|
datetime: :inline_form_control,
|
@@ -14,10 +10,4 @@ class InlineEditComponent < ViewComponent::Base
|
|
14
10
|
|
15
11
|
super
|
16
12
|
end
|
17
|
-
|
18
|
-
def before_render
|
19
|
-
return unless controller.in_modal?
|
20
|
-
|
21
|
-
controller.instance_variable_set(:@using_modal, true)
|
22
|
-
end
|
23
13
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
- if @model.class.inline_editable?(@
|
1
|
+
- if @model.class.inline_editable?(@unsuffixed_attribute) && helpers.policy(@model).edit?
|
2
2
|
= helpers.turbo_frame_tag(@frame_id, class: 'inline-edit')
|
3
|
-
span = @model.decorate.send(@attribute)
|
4
3
|
= link_to users_inline_edit_path(model: @model.to_gid, attribute: @attribute),
|
5
|
-
class: 'text-body-tertiary
|
4
|
+
class: 'text-body-tertiary edit-link', style: 'font-size: 0.8em' do
|
6
5
|
i.bi.bi-pencil
|
6
|
+
span = @model.decorate.send(@attribute)
|
7
7
|
- else
|
8
8
|
= @model.decorate.send(@attribute)
|
@@ -1,15 +1,2 @@
|
|
1
|
-
class InlineShowComponent <
|
2
|
-
def initialize(model, attribute)
|
3
|
-
@model = model
|
4
|
-
@attribute = attribute
|
5
|
-
@frame_id = dom_id(model, "#{attribute}_inline_edit")
|
6
|
-
|
7
|
-
super
|
8
|
-
end
|
9
|
-
|
10
|
-
def before_render
|
11
|
-
return unless controller.in_modal?
|
12
|
-
|
13
|
-
controller.instance_variable_set(:@using_modal, true)
|
14
|
-
end
|
1
|
+
class InlineShowComponent < InlineComponent
|
15
2
|
end
|
@@ -31,6 +31,8 @@ class PgFormBuilder < SimpleForm::FormBuilder
|
|
31
31
|
|
32
32
|
if find_on_all_associations(model.class, attribute_name).present?
|
33
33
|
pg_associable(attribute_name, options)
|
34
|
+
elsif model.respond_to?("rich_text_#{attribute_name}")
|
35
|
+
rich_text_area attribute_name
|
34
36
|
else
|
35
37
|
input(attribute_name, options, &)
|
36
38
|
end
|
@@ -270,6 +270,21 @@ SimpleForm.setup do |config|
|
|
270
270
|
# inline forms
|
271
271
|
#
|
272
272
|
# inline default_wrapper
|
273
|
+
config.wrappers :inline_form_grow, class: 'flex-grow-1' do |b|
|
274
|
+
b.use :html5
|
275
|
+
b.use :placeholder
|
276
|
+
b.optional :maxlength
|
277
|
+
b.optional :minlength
|
278
|
+
b.optional :pattern
|
279
|
+
b.optional :min_max
|
280
|
+
b.optional :readonly
|
281
|
+
b.use :label, class: 'visually-hidden'
|
282
|
+
|
283
|
+
b.use :input, class: 'form-control form-control-sm', error_class: 'is-invalid'
|
284
|
+
b.use :error, wrap_with: { class: 'invalid-feedback' }
|
285
|
+
b.optional :hint, wrap_with: { class: 'form-text' }
|
286
|
+
end
|
287
|
+
|
273
288
|
config.wrappers :inline_form_control, class: '' do |b|
|
274
289
|
b.use :html5
|
275
290
|
b.use :placeholder
|
data/pg_rails/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.6.
|
4
|
+
version: 7.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martín Rosso
|
@@ -674,6 +674,7 @@ files:
|
|
674
674
|
- pg_engine/app/components/date_selector_component.html.slim
|
675
675
|
- pg_engine/app/components/date_selector_component.rb
|
676
676
|
- pg_engine/app/components/flash_container_component.rb
|
677
|
+
- pg_engine/app/components/inline_edit/inline_component.rb
|
677
678
|
- pg_engine/app/components/inline_edit/inline_edit_component.html.slim
|
678
679
|
- pg_engine/app/components/inline_edit/inline_edit_component.rb
|
679
680
|
- pg_engine/app/components/inline_edit/inline_show_component.html.slim
|