glib-web 4.1.0 → 4.1.1
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 +4 -4
- data/app/helpers/glib/json_ui/view_builder/fields.rb +7 -2
- data/app/helpers/glib/json_ui/view_builder/panels.rb +32 -2
- data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +5 -0
- data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +1 -0
- data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +1 -1
- data/app/views/json_ui/garage/panels/ul.json.jbuilder +19 -4
- data/app/views/json_ui/garage/views/links.json.jbuilder +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5022fe611c19e51340f145ab4bb5577c208211186b575a2e784f8f50de06860c
|
4
|
+
data.tar.gz: c1fc17633202ac17023f5040129165779283654334212168933608ed7df12e4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d42b359a6e270fcdadfb8592af408974defc48bbd632d9cf91116f3a37fba4c47ac4bd54f53417c07ccb36afc883b1cbb72cd4afc1e0378b7a7dff283079c365
|
7
|
+
data.tar.gz: 2b96d286b67a6e6faa900a474ea93d34a060eef45c0c1d85a493993757497ba8c0a14a624ba3e0764ad9c599bf35518c761f3c061af7a9ec20fa22c6948fd8ae
|
@@ -53,6 +53,10 @@ class Glib::JsonUi::ViewBuilder
|
|
53
53
|
@prop = prop
|
54
54
|
end
|
55
55
|
|
56
|
+
def autoValidate(autoValidate)
|
57
|
+
@autoValidate = autoValidate
|
58
|
+
end
|
59
|
+
|
56
60
|
# Override
|
57
61
|
def created
|
58
62
|
if @prop && (form = page.current_form)
|
@@ -79,8 +83,7 @@ class Glib::JsonUi::ViewBuilder
|
|
79
83
|
# - Placeholder competes with label for space
|
80
84
|
json.placeholder @placeholder if @placeholder
|
81
85
|
|
82
|
-
|
83
|
-
# json.validation @validation if @validation
|
86
|
+
json.validation @validation if @autoValidate
|
84
87
|
end
|
85
88
|
|
86
89
|
# To be overridden
|
@@ -139,6 +142,7 @@ class Glib::JsonUi::ViewBuilder
|
|
139
142
|
string :text
|
140
143
|
color :color
|
141
144
|
icon :icon
|
145
|
+
bool :disableIfFormInvalid
|
142
146
|
end
|
143
147
|
|
144
148
|
class CheckGroup < AbstractField
|
@@ -317,6 +321,7 @@ class Glib::JsonUi::ViewBuilder
|
|
317
321
|
|
318
322
|
string :storagePrefix
|
319
323
|
hash :metadata
|
324
|
+
hash :tags
|
320
325
|
|
321
326
|
required :accepts, :directUploadUrl
|
322
327
|
|
@@ -121,10 +121,40 @@ class Glib::JsonUi::ViewBuilder
|
|
121
121
|
def self.field_validation(model, prop)
|
122
122
|
validations = {}
|
123
123
|
model.class.validators_on(prop).each do |validator|
|
124
|
-
|
125
|
-
|
124
|
+
validations[validator.kind] = validator.options.except(:if, :unless)
|
125
|
+
validations[validator.kind][:message] = validator.options[:message]
|
126
|
+
case validator.kind
|
127
|
+
when :presence
|
128
|
+
validations[validator.kind][:message] ||= I18n.t('errors.messages.present')
|
129
|
+
when :acceptance
|
130
|
+
validations[validator.kind][:message] ||= I18n.t('errors.messages.accepted')
|
131
|
+
when :confirmation
|
132
|
+
# raise NotImplemented
|
133
|
+
when :numericality
|
134
|
+
# raise NotImplemented
|
135
|
+
when :comparison
|
136
|
+
comparison = validator.options.first[0]
|
137
|
+
validations[validator.kind][:message] ||= I18n.t("errors.messages.#{comparison}")
|
138
|
+
when :format
|
139
|
+
validations[validator.kind][:message] ||= I18n.t('errors.messages.invalid')
|
140
|
+
when :inclusion
|
141
|
+
validations[validator.kind][:message] ||= I18n.t('errors.messages.inclusion')
|
142
|
+
when :exclusion
|
143
|
+
validations[validator.kind][:message] ||= I18n.t('errors.messages.exclusion')
|
144
|
+
when :length
|
145
|
+
validations[validator.kind][:message] = {
|
146
|
+
too_long: I18n.t('errors.messages.too_long'),
|
147
|
+
wrong_length: I18n.t('errors.messages.wrong_length'),
|
148
|
+
too_short: I18n.t('errors.messages.too_short')
|
149
|
+
}
|
126
150
|
end
|
127
151
|
end
|
152
|
+
|
153
|
+
if validations[:presence].present?
|
154
|
+
validations[:required] = validations[:presence]
|
155
|
+
validations.delete(:presence)
|
156
|
+
end
|
157
|
+
|
128
158
|
validations
|
129
159
|
end
|
130
160
|
|
@@ -32,6 +32,11 @@ page.scroll childViews: ->(scroll) do
|
|
32
32
|
group.fields_check checkValue: 4, label: 'Photography'
|
33
33
|
end
|
34
34
|
|
35
|
+
form.spacer height: 20
|
36
|
+
form.h2 text: 'Check without group'
|
37
|
+
form.spacer height: 4
|
38
|
+
form.fields_check name: 'user[driver]', label: 'Do you have driver license?'
|
39
|
+
|
35
40
|
form.spacer height: 20
|
36
41
|
form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
|
37
42
|
end
|
@@ -11,7 +11,7 @@ section.rows builder: ->(row) do
|
|
11
11
|
array.each do |i|
|
12
12
|
index = page_index * batch_count + i
|
13
13
|
if local_assigns[:reorder]
|
14
|
-
row.thumbnail title: "Item #{index}"
|
14
|
+
row.thumbnail title: "Item #{index}"
|
15
15
|
else
|
16
16
|
row.thumbnail title: "Item #{index}", subtitle: "Sub Item #{index}", subsubtitle: "Sub Sub Item #{index}"
|
17
17
|
end
|
@@ -38,10 +38,25 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
38
38
|
action.windows_open url: json_ui_garage_url(path: 'home/blank')
|
39
39
|
end
|
40
40
|
|
41
|
-
ul.button icon: 'keyboard_arrow_down', text: 'Level 2', styleClass: 'link',
|
42
|
-
|
43
|
-
|
44
|
-
|
41
|
+
ul.button icon: 'keyboard_arrow_down', text: 'Level 2', styleClass: 'link', onClick: ->(action) do
|
42
|
+
action.popovers_show \
|
43
|
+
key: 'menu',
|
44
|
+
placement: 'bottom-start',
|
45
|
+
content: ->(dialog) do
|
46
|
+
dialog.body childViews: ->(view) do
|
47
|
+
view.panels_responsive styleClass: 'popover-menu', width: 200, childViews: ->(res) do
|
48
|
+
res.label text: 'Item 1', styleClass: 'popover-menu-item', onClick: ->(saction) do
|
49
|
+
saction.popovers_close key: 'menu'
|
50
|
+
end
|
51
|
+
res.label text: 'Item 2', styleClass: 'popover-menu-item', onClick: ->(saction) do
|
52
|
+
saction.popovers_close key: 'menu'
|
53
|
+
end
|
54
|
+
res.label text: 'Item 3', styleClass: 'popover-menu-item', onClick: ->(saction) do
|
55
|
+
saction.popovers_close key: 'menu'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
45
60
|
end
|
46
61
|
ul.label text: 'Level 3'
|
47
62
|
end
|
@@ -58,7 +58,7 @@ json_ui_page json do |page|
|
|
58
58
|
scroll.spacer height: 20
|
59
59
|
scroll.h2 text: 'Icon with onClick'
|
60
60
|
scroll.spacer height: 6
|
61
|
-
scroll.icon
|
61
|
+
scroll.icon name: 'info', onClick: ->(action) do
|
62
62
|
action.windows_open url: json_ui_garage_url(path: 'home/blank')
|
63
63
|
end
|
64
64
|
|