glib-web 4.1.0 → 4.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|