compony 0.5.1 → 0.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/README.md +33 -0
- data/VERSION +1 -1
- data/compony.gemspec +4 -4
- data/config/routes.rb +9 -6
- data/doc/ComponentGenerator.html +3 -3
- data/doc/Components.html +3 -3
- data/doc/ComponentsGenerator.html +3 -3
- data/doc/Compony/Component.html +3 -3
- data/doc/Compony/ComponentMixins/Default/Labelling.html +3 -3
- data/doc/Compony/ComponentMixins/Default/Standalone/ResourcefulVerbDsl.html +3 -3
- data/doc/Compony/ComponentMixins/Default/Standalone/StandaloneDsl.html +40 -28
- data/doc/Compony/ComponentMixins/Default/Standalone/VerbDsl.html +3 -3
- data/doc/Compony/ComponentMixins/Default/Standalone.html +3 -3
- data/doc/Compony/ComponentMixins/Default.html +3 -3
- data/doc/Compony/ComponentMixins/Resourceful.html +3 -3
- data/doc/Compony/ComponentMixins.html +3 -3
- data/doc/Compony/Components/Button.html +11 -7
- data/doc/Compony/Components/Destroy.html +3 -3
- data/doc/Compony/Components/Edit.html +3 -3
- data/doc/Compony/Components/Form.html +148 -77
- data/doc/Compony/Components/New.html +3 -3
- data/doc/Compony/Components/WithForm.html +3 -3
- data/doc/Compony/Components.html +3 -3
- data/doc/Compony/ControllerMixin.html +3 -3
- data/doc/Compony/Engine.html +3 -3
- data/doc/Compony/MethodAccessibleHash.html +3 -3
- data/doc/Compony/ModelFields/Anchormodel.html +3 -3
- data/doc/Compony/ModelFields/Association.html +4 -4
- data/doc/Compony/ModelFields/Attachment.html +3 -3
- data/doc/Compony/ModelFields/Base.html +3 -3
- data/doc/Compony/ModelFields/Boolean.html +3 -3
- data/doc/Compony/ModelFields/Color.html +3 -3
- data/doc/Compony/ModelFields/Currency.html +3 -3
- data/doc/Compony/ModelFields/Date.html +3 -3
- data/doc/Compony/ModelFields/Datetime.html +3 -3
- data/doc/Compony/ModelFields/Decimal.html +3 -3
- data/doc/Compony/ModelFields/Email.html +3 -3
- data/doc/Compony/ModelFields/Float.html +3 -3
- data/doc/Compony/ModelFields/Integer.html +3 -3
- data/doc/Compony/ModelFields/Percentage.html +3 -3
- data/doc/Compony/ModelFields/Phone.html +3 -3
- data/doc/Compony/ModelFields/RichText.html +3 -3
- data/doc/Compony/ModelFields/String.html +3 -3
- data/doc/Compony/ModelFields/Text.html +3 -3
- data/doc/Compony/ModelFields/Time.html +3 -3
- data/doc/Compony/ModelFields/Url.html +3 -3
- data/doc/Compony/ModelFields.html +3 -3
- data/doc/Compony/ModelMixin.html +3 -3
- data/doc/Compony/NaturalOrdering.html +3 -3
- data/doc/Compony/RequestContext.html +3 -3
- data/doc/Compony/Version.html +3 -3
- data/doc/Compony/ViewHelpers.html +32 -14
- data/doc/Compony.html +4 -4
- data/doc/ComponyController.html +3 -3
- data/doc/_index.html +4 -4
- data/doc/class_list.html +6 -3
- data/doc/css/full_list.css +3 -3
- data/doc/css/style.css +6 -0
- data/doc/file.README.html +36 -3
- data/doc/file_list.html +5 -2
- data/doc/frames.html +10 -5
- data/doc/index.html +36 -3
- data/doc/js/app.js +294 -264
- data/doc/js/full_list.js +30 -4
- data/doc/method_list.html +152 -141
- data/doc/top-level-namespace.html +3 -3
- data/lib/compony/component_mixins/default/standalone/standalone_dsl.rb +7 -1
- data/lib/compony/components/button.rb +5 -3
- data/lib/compony/components/form.rb +9 -1
- data/lib/compony/model_fields/association.rb +1 -1
- data/lib/compony/view_helpers.rb +12 -4
- data/lib/compony.rb +1 -1
- metadata +3 -3
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Top Level Namespace
|
8
8
|
|
9
|
-
— Documentation by YARD 0.9.
|
9
|
+
— Documentation by YARD 0.9.37
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -102,9 +102,9 @@
|
|
102
102
|
</div>
|
103
103
|
|
104
104
|
<div id="footer">
|
105
|
-
Generated on
|
105
|
+
Generated on Fri Dec 20 13:46:32 2024 by
|
106
106
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
107
|
-
0.9.
|
107
|
+
0.9.37 (ruby-3.3.5).
|
108
108
|
</div>
|
109
109
|
|
110
110
|
</div>
|
@@ -6,12 +6,15 @@ module Compony
|
|
6
6
|
# Wrapper and DSL helper for component's standalone config
|
7
7
|
# Pass `provide_defaults` true if this is the first standalone DSL of a component. Pass false if it is a subsequent one (e.g. if subclassed comp)
|
8
8
|
class StandaloneDsl < Dslblend::Base
|
9
|
-
def initialize(component, name = nil, provide_defaults:, path: nil)
|
9
|
+
def initialize(component, name = nil, provide_defaults:, path: nil, constraints: nil, scope: nil, scope_args: {})
|
10
10
|
super()
|
11
11
|
@component = component
|
12
12
|
@name = name&.to_sym
|
13
13
|
@provide_defaults = provide_defaults
|
14
14
|
@path = path
|
15
|
+
@constraints = constraints
|
16
|
+
@scope = scope
|
17
|
+
@scope_args = scope_args
|
15
18
|
@verbs = {}
|
16
19
|
@skip_authentication = false
|
17
20
|
@layout = true # can be overriden by false or a string
|
@@ -24,6 +27,9 @@ module Compony
|
|
24
27
|
return {
|
25
28
|
name: @name,
|
26
29
|
path: @path,
|
30
|
+
constraints: @constraints,
|
31
|
+
scope: @scope,
|
32
|
+
scope_args: @scope_args,
|
27
33
|
verbs: @verbs,
|
28
34
|
rails_action_name: Compony.rails_action_name(comp_name, family_name, @name),
|
29
35
|
path_helper_name: Compony.path_helper_name(comp_name, family_name, @name),
|
@@ -7,7 +7,7 @@ module Compony
|
|
7
7
|
|
8
8
|
# path: If given a block, it will be evaluated in the helpers context when rendering
|
9
9
|
# enabled: If given a block, it will be evaluated in the helpers context when rendering
|
10
|
-
def initialize(*, label: nil, path: nil, method: nil, type: nil, enabled: nil, visible: nil, title: nil, **, &)
|
10
|
+
def initialize(*, label: nil, path: nil, method: nil, type: nil, enabled: nil, visible: nil, title: nil, button_params: nil, value: nil, **, &)
|
11
11
|
@label = label || Compony.button_defaults[:label]
|
12
12
|
@type = type&.to_sym || Compony.button_defaults[:type] || :button
|
13
13
|
@path = path || Compony.button_defaults[:path] || 'javascript:void(0)'
|
@@ -23,6 +23,8 @@ module Compony
|
|
23
23
|
@visible = Compony.button_defaults[:visible] if @visible.nil?
|
24
24
|
@visible = true if @visible.nil?
|
25
25
|
@title = title || Compony.button_defaults[:title]
|
26
|
+
@button_params = button_params
|
27
|
+
@value = value
|
26
28
|
|
27
29
|
fail "Unsupported button type #{@type}, use on of: #{SUPPORTED_TYPES.inspect}" unless SUPPORTED_TYPES.include?(@type)
|
28
30
|
|
@@ -47,9 +49,9 @@ module Compony
|
|
47
49
|
if @visible
|
48
50
|
case @type
|
49
51
|
when :button
|
50
|
-
concat button_to(@label, @path, method: @method, disabled: !@enabled, title: @title)
|
52
|
+
concat button_to(@label, @path, method: @method, disabled: !@enabled, title: @title, params: @button_params)
|
51
53
|
when :submit
|
52
|
-
concat button_tag(@label, type: :submit, disabled: !@enabled, title: @title)
|
54
|
+
concat button_tag(@label, type: :submit, disabled: !@enabled, title: @title, value: @value)
|
53
55
|
end
|
54
56
|
end
|
55
57
|
end
|
@@ -3,9 +3,10 @@ module Compony
|
|
3
3
|
# @api description
|
4
4
|
# This component is used for the _form partial in the Rails paradigm.
|
5
5
|
class Form < Component
|
6
|
-
def initialize(*args, cancancan_action: :missing, **kwargs)
|
6
|
+
def initialize(*args, cancancan_action: :missing, disabled: false, **kwargs)
|
7
7
|
@schema_lines_for_data = [] # Array of procs taking data returning a Schemacop proc
|
8
8
|
@cancancan_action = cancancan_action
|
9
|
+
@form_disabled = disabled
|
9
10
|
super
|
10
11
|
end
|
11
12
|
|
@@ -98,6 +99,8 @@ module Compony
|
|
98
99
|
fail("The `field` method may only be called inside `form_fields` for #{inspect}.") unless @simpleform
|
99
100
|
name = name.to_sym
|
100
101
|
|
102
|
+
input_opts.merge!(disabled: true) if @form_disabled
|
103
|
+
|
101
104
|
# Check per-field authorization
|
102
105
|
if @cancancan_action.present? && @controller.current_ability.permitted_attributes(@cancancan_action, @simpleform.object).exclude?(name)
|
103
106
|
Rails.logger.debug do
|
@@ -155,6 +158,11 @@ module Compony
|
|
155
158
|
Compony::ModelFields::Anchormodel.collect(...)
|
156
159
|
end
|
157
160
|
|
161
|
+
# DSL method, disables all inputs
|
162
|
+
def disable!
|
163
|
+
@form_disabled = true
|
164
|
+
end
|
165
|
+
|
158
166
|
protected
|
159
167
|
|
160
168
|
# DSL method, adds a new line to the schema whitelisting a single param inside the schema's wrapper
|
@@ -44,7 +44,7 @@ module Compony
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def simpleform_input(form, _component, name: nil, **input_opts)
|
47
|
-
return form.association name || @name, **input_opts
|
47
|
+
return form.association name || @name, **{ label_method: :label }.deep_merge(input_opts)
|
48
48
|
end
|
49
49
|
|
50
50
|
def simpleform_input_hidden(form, _component, name: nil, **input_opts)
|
data/lib/compony/view_helpers.rb
CHANGED
@@ -19,11 +19,19 @@ module Compony
|
|
19
19
|
# @param link_args [Array] Positional arguments that will be passed to the Rails `link_to` helper
|
20
20
|
# @param label_opts [Hash] Options hash that will be passed to the label method (see {Compony::ComponentMixins::Default::Labelling#label})
|
21
21
|
# @param link_kwargs [Hash] Named arguments that will be passed to the Rails `link_to` helper
|
22
|
-
def compony_link(
|
22
|
+
def compony_link(comp_name_or_cst_or_class, model_or_family_name_or_cst = nil, *link_args, label_opts: {}, params: {}, standalone_name: nil, **link_kwargs)
|
23
23
|
model = model_or_family_name_or_cst.respond_to?(:model_name) ? model_or_family_name_or_cst : nil
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
if comp_name_or_cst_or_class.is_a?(Class) && (comp_name_or_cst_or_class <= Compony::Component)
|
25
|
+
target_comp_instance = comp_name_or_cst_or_class.new(data: model)
|
26
|
+
else
|
27
|
+
target_comp_instance = Compony.comp_class_for!(comp_name_or_cst_or_class, model_or_family_name_or_cst).new(data: model)
|
28
|
+
end
|
29
|
+
return unless target_comp_instance.standalone_access_permitted_for?(self, standalone_name:)
|
30
|
+
return helpers.link_to(
|
31
|
+
target_comp_instance.label(model, **label_opts),
|
32
|
+
Compony.path(target_comp_instance.comp_name, target_comp_instance.family_name, model, standalone_name:, **params),
|
33
|
+
*link_args, **link_kwargs
|
34
|
+
)
|
27
35
|
end
|
28
36
|
|
29
37
|
# Given a component and a family/model, this instanciates and renders a button component.
|
data/lib/compony.rb
CHANGED
@@ -198,7 +198,7 @@ module Compony
|
|
198
198
|
color: target_comp_instance.color,
|
199
199
|
path: Compony.path(target_comp_instance.comp_name, target_comp_instance.family_name, model, standalone_name:, **params),
|
200
200
|
method:,
|
201
|
-
visible: ->(controller) { target_comp_instance.standalone_access_permitted_for?(controller, verb: method) }
|
201
|
+
visible: ->(controller) { target_comp_instance.standalone_access_permitted_for?(controller, standalone_name:, verb: method) }
|
202
202
|
}
|
203
203
|
if feasibility_target
|
204
204
|
options.merge!({
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: compony
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sandro Kalbermatter
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-12-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: yard
|
@@ -330,7 +330,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
330
330
|
- !ruby/object:Gem::Version
|
331
331
|
version: '0'
|
332
332
|
requirements: []
|
333
|
-
rubygems_version: 3.5.
|
333
|
+
rubygems_version: 3.5.22
|
334
334
|
signing_key:
|
335
335
|
specification_version: 4
|
336
336
|
summary: Compony is a Gem that allows you to write your Rails application in component-style
|