glib-web 3.24.2 → 3.24.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/concerns/glib/json/new_dynamic_text.rb +0 -0
- data/app/controllers/glib/home_controller.rb +1 -1
- data/app/helpers/glib/app_feature_support_helper.rb +0 -0
- data/app/helpers/glib/dynamic_texts_helper.rb +0 -0
- data/app/helpers/glib/json_ui/action_builder/sheets.rb +0 -0
- data/app/helpers/glib/json_ui/action_builder/windows.rb +0 -7
- data/app/helpers/glib/json_ui/analytics_helper.rb +0 -0
- data/app/helpers/glib/json_ui/generic_builders.rb +0 -0
- data/app/models/glib/active_storage/attachment.rb +0 -0
- data/app/models/glib/active_storage/blob.rb +0 -0
- data/app/models/glib/dynamic_text_record.rb +0 -0
- data/app/models/glib/text.rb +0 -0
- data/app/validators/email_typo_validator.rb +0 -0
- data/app/validators/email_validator.rb +0 -0
- data/app/validators/url_validator.rb +0 -0
- data/app/views/json_ui/garage/actions/_components.json.jbuilder +18 -0
- data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +8 -0
- data/app/views/json_ui/garage/actions/_fields.json.jbuilder +10 -0
- data/app/views/json_ui/garage/actions/_list.json.jbuilder +4 -0
- data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/dialogs_form.json.jbuilder +40 -0
- data/app/views/json_ui/garage/forms/dialogs_subform.json.jbuilder +21 -0
- data/app/views/json_ui/garage/forms/dialogs_subform_post.json.jbuilder +13 -0
- data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/home/blank.json.jbuilder +0 -0
- data/app/views/json_ui/garage/home/slow.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/fab.json.jbuilder +0 -0
- data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/custom_style_class.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/full_width.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/layout.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/redirect_onload.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/_styled.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/card.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/custom.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/outlined.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/image.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/index.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/export_import.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/index.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/components_set.json.jbuilder +37 -0
- data/app/views/json_ui/garage/views/components_update.json.jbuilder +148 -0
- data/app/views/json_ui/garage/views/fields_focus.json.jbuilder +47 -0
- data/app/views/json_ui/garage/views/links.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/map_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/multimedia.json.jbuilder +0 -0
- data/app/views/layouts/json_ui/no_custom.html.erb +0 -0
- data/lib/generators/glib/install_generator.rb +0 -0
- data/lib/generators/templates/20191017062519_create_texts.rb +0 -0
- data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +0 -0
- data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +0 -0
- data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +0 -0
- data/lib/generators/templates/database.yml +0 -0
- data/lib/generators/templates/dynamic_text.rb +0 -0
- data/lib/glib/dynamic_text/config.rb +0 -0
- data/lib/glib/dynamic_text.rb +0 -0
- data/lib/glib/json_crawler/action_crawler.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/action_http.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/dialogs_alert.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/menu.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/windows_open.rb +0 -0
- data/lib/glib/json_crawler/coverage.rb +0 -0
- data/lib/glib/value.rb +0 -0
- data/lib/glib/version.rb +0 -0
- data/lib/glib-web.rb +0 -1
- metadata +10 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aba0dc03db2778a7a62e6222b3024ace73faa22c47d158a9088ed334db9515b0
|
4
|
+
data.tar.gz: 2aa5ad7d865b21b3ae466aec5213af9553b118ac73db120a8def60aa624bee0a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2798441528eaab4548b034b65f79704daf77295ef8ed6751f2e1ea3f1719e9df12308d823fb251a0427d012e6bc5298bcbaf232ba47ada41128738bd8feee6a1
|
7
|
+
data.tar.gz: c83bbb97e419a24350383d4a6ad3e83322a5a153f4da1437f028437aef50987721a494d58e9cf20ad5ae5efc356d757eb16112c2716bb82e931ce40063157290
|
File without changes
|
@@ -35,7 +35,7 @@ module Glib
|
|
35
35
|
eos
|
36
36
|
|
37
37
|
# We can't use prepend_view_path because it affects the app, not the gem
|
38
|
-
path = "#{@path_prefix}/#{params[:path] || 'home/index'}"
|
38
|
+
path = "#{@path_prefix}/#{params[:override_path] || params[:path] || 'home/index'}"
|
39
39
|
render path
|
40
40
|
end
|
41
41
|
|
File without changes
|
File without changes
|
File without changes
|
@@ -30,13 +30,6 @@ class Glib::JsonUi::ActionBuilder
|
|
30
30
|
required :fallbackUrl
|
31
31
|
end
|
32
32
|
|
33
|
-
class CloseWithOpen < Action
|
34
|
-
string :url
|
35
|
-
action :onOpen
|
36
|
-
|
37
|
-
required :url
|
38
|
-
end
|
39
|
-
|
40
33
|
# Any component can listen to the refresh_state event and react appropriately.
|
41
34
|
# E.g. Stripe credit card component can refresh its token to make sure it is not stale.
|
42
35
|
class RefreshState < Action
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/app/models/glib/text.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
section.header padding: glib_json_padding_list, childViews: ->(header) do
|
3
|
+
header.h3 text: 'Components'
|
4
|
+
end
|
5
|
+
|
6
|
+
section.rows builder: ->(template) do
|
7
|
+
template.thumbnail title: 'components/update (Deprecated)', onClick: ->(action) do
|
8
|
+
action.windows_open url: json_ui_garage_url(path: 'views/components_update')
|
9
|
+
end
|
10
|
+
|
11
|
+
# template.thumbnail title: 'components/replace', onClick: ->(action) do
|
12
|
+
# action.windows_open url: json_ui_garage_url(path: 'views/components')
|
13
|
+
# end
|
14
|
+
|
15
|
+
template.thumbnail title: 'components/set', onClick: ->(action) do
|
16
|
+
action.windows_open url: json_ui_garage_url(path: 'views/components_set')
|
17
|
+
end
|
18
|
+
end
|
@@ -84,10 +84,18 @@ section.rows builder: ->(template) do
|
|
84
84
|
action.dialogs_open url: json_ui_garage_url(path: 'forms/dialogs_update2')
|
85
85
|
end
|
86
86
|
|
87
|
+
template.thumbnail title: 'dialogs/open (update form inside dialog)', onClick: ->(action) do
|
88
|
+
action.dialogs_open url: json_ui_garage_url(path: 'forms/dialogs_form')
|
89
|
+
end
|
90
|
+
|
87
91
|
template.thumbnail title: 'dialogs/open (with filePaster)', onClick: ->(action) do
|
88
92
|
action.dialogs_open url: json_ui_garage_url(path: 'forms/dialogs_update3')
|
89
93
|
end
|
90
94
|
|
95
|
+
template.thumbnail title: 'dialogs/open (update form inside dialog)', onClick: ->(action) do
|
96
|
+
action.dialogs_open url: json_ui_garage_url(path: 'forms/dialogs_form')
|
97
|
+
end
|
98
|
+
|
91
99
|
template.thumbnail title: 'dialogs/oauth', onClick: ->(action) do
|
92
100
|
if respond_to?(:user_facebook_omniauth_authorize_url)
|
93
101
|
provider = {
|
@@ -0,0 +1,10 @@
|
|
1
|
+
|
2
|
+
section.header padding: glib_json_padding_list, childViews: ->(header) do
|
3
|
+
header.h3 text: 'Fields'
|
4
|
+
end
|
5
|
+
|
6
|
+
section.rows builder: ->(template) do
|
7
|
+
template.thumbnail title: 'fields/focus, fields/blur, fields/reset', onClick: ->(action) do
|
8
|
+
action.windows_open url: json_ui_garage_url(path: 'views/fields_focus')
|
9
|
+
end
|
10
|
+
end
|
@@ -19,5 +19,9 @@ panel.panels_list id: 'action_list', sections: [
|
|
19
19
|
render "#{@path_prefix}/actions/commands", section: section
|
20
20
|
end, ->(section) do
|
21
21
|
render "#{@path_prefix}/actions/tours", section: section
|
22
|
+
end, ->(section) do
|
23
|
+
render "#{@path_prefix}/actions/components", section: section
|
24
|
+
end, ->(section) do
|
25
|
+
render "#{@path_prefix}/actions/fields", section: section
|
22
26
|
end
|
23
27
|
]
|
File without changes
|
@@ -0,0 +1,40 @@
|
|
1
|
+
json.title 'Forms'
|
2
|
+
|
3
|
+
page = json_ui_page json
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page
|
5
|
+
|
6
|
+
data = params[:user] || { cities: [] }
|
7
|
+
|
8
|
+
page.scroll childViews: ->(scroll) do
|
9
|
+
cities = {
|
10
|
+
'Brisbane' => 'Brisbane',
|
11
|
+
'Canberra' => 'Canberra',
|
12
|
+
'Melbourne' => 'Melbourne',
|
13
|
+
'Sydney' => 'Sydney',
|
14
|
+
}
|
15
|
+
scroll.panels_form \
|
16
|
+
url: json_ui_garage_url(path: 'forms/generic_post'),
|
17
|
+
method: 'post',
|
18
|
+
width: 'matchParent',
|
19
|
+
id: 'dialogs_form',
|
20
|
+
padding: glib_json_padding_body,
|
21
|
+
childViews: ->(form) do
|
22
|
+
form.fields_select \
|
23
|
+
name: 'user[cities][]',
|
24
|
+
width: 'matchParent',
|
25
|
+
label: 'Cities',
|
26
|
+
options: cities.map { |k, v| { value: k, text: v } },
|
27
|
+
value: data[:cities] + [params[:new_city]],
|
28
|
+
multiple: true,
|
29
|
+
accessory: ->(accessory) do
|
30
|
+
accessory.footer padding: { all: 20 }, childViews: ->(footer) do
|
31
|
+
footer.label text: 'Can\'t find a city? Enter a new one', onClick: ->(action) do
|
32
|
+
action.dialogs_open url: json_ui_garage_url(path: 'forms/dialogs_subform')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
form.spacer height: 20
|
38
|
+
form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
json.title 'Forms'
|
2
|
+
|
3
|
+
page = json_ui_page json
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page
|
5
|
+
|
6
|
+
page.scroll childViews: ->(scroll) do
|
7
|
+
scroll.panels_form \
|
8
|
+
url: json_ui_garage_url(path: 'forms/dialogs_subform_post'),
|
9
|
+
method: 'post',
|
10
|
+
width: 'matchParent',
|
11
|
+
padding: glib_json_padding_body,
|
12
|
+
childViews: ->(form) do
|
13
|
+
form.fields_text \
|
14
|
+
name: 'user[city]',
|
15
|
+
width: 'matchParent',
|
16
|
+
label: 'City'
|
17
|
+
|
18
|
+
form.spacer height: 20
|
19
|
+
form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
data = params[:user] || {}
|
2
|
+
|
3
|
+
json_ui_response json do |action|
|
4
|
+
action.dialogs_close onClose: ->(subaction) do
|
5
|
+
subaction.components_find targetId: 'dialogs_form', onFind: ->(subsubaction) do
|
6
|
+
# Use `override_path` to override the form's original form, which gets submitted in form data,
|
7
|
+
# so it needs to be explicitly overriden using a different param name.
|
8
|
+
subsubaction.forms_submit \
|
9
|
+
overrideUrl: json_ui_garage_url(override_path: 'forms/dialogs_form', new_city: data[:city]),
|
10
|
+
overrideMethod: :get
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,37 @@
|
|
1
|
+
json.title 'Component set'
|
2
|
+
|
3
|
+
page = json_ui_page json
|
4
|
+
|
5
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
|
6
|
+
|
7
|
+
page.body padding: glib_json_padding_body, childViews: ->(body) do
|
8
|
+
body.panels_responsive width: 'matchParent', childViews: ->(res) do
|
9
|
+
res.label id: 'label', text: 'Hello world!'
|
10
|
+
res.spacer height: 8
|
11
|
+
res.button text: 'set', onClick: ->(action) do
|
12
|
+
action.components_set targetId: 'label', data: { text: 'Hello too!' }, onSet: ->(saction) do
|
13
|
+
saction.snackbars_alert styleClasses: ['success'], message: 'Changed!'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
res.spacer height: 16
|
17
|
+
|
18
|
+
res.panels_form \
|
19
|
+
url: json_ui_garage_url(path: 'forms/generic_post'),
|
20
|
+
method: 'post',
|
21
|
+
childViews: ->(form) do
|
22
|
+
res.fields_text id: 'ftext', name: 'user[full_name]', value: 'John Doe', label: 'Full name', placeholder: 'Full name', width: 300
|
23
|
+
res.spacer height: 8
|
24
|
+
res.panels_horizontal childViews: ->(hori) do
|
25
|
+
res.button text: 'set', onClick: ->(action) do
|
26
|
+
action.components_set targetId: 'ftext', data: { name: 'user[city]', value: 'Taipei', label: 'City', placeholder: 'City' }
|
27
|
+
end
|
28
|
+
res.spacer width: 4
|
29
|
+
res.fields_submit text: 'submit'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
res.spacer height: 16
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
json.title 'Component update'
|
2
|
+
|
3
|
+
page = json_ui_page json
|
4
|
+
|
5
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
|
6
|
+
|
7
|
+
panels_ids = {
|
8
|
+
'pres' => 'panels_responsive',
|
9
|
+
'pcol' => 'panels_column',
|
10
|
+
'phor' => 'panels_horizontal',
|
11
|
+
'pver' => 'panels_vertical',
|
12
|
+
'pflow' => 'panels_flow',
|
13
|
+
'psplit' => 'panels_split',
|
14
|
+
}
|
15
|
+
other_ids = {
|
16
|
+
'paragraph' => 'p',
|
17
|
+
'label' => 'label'
|
18
|
+
}
|
19
|
+
comp_ids = panels_ids.merge(other_ids)
|
20
|
+
cities = [{ text: 'Bali', value: 'bali' }, { text: 'Jakarta', value: 'jakarta' }]
|
21
|
+
|
22
|
+
small_image_url = 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSGQpSWjtELISLBlmugOZ6wzl1JamYXQvbFeYywpfg3E8b8DrO0Kg&s'
|
23
|
+
|
24
|
+
page.body padding: glib_json_padding_body, childViews: ->(body) do
|
25
|
+
body.panels_responsive width: 'matchParent', childViews: ->(res) do
|
26
|
+
res.panels_column lg: { cols: 3 }, childViews: ->(col) do
|
27
|
+
res.h3 text: 'Props changes'
|
28
|
+
res.spacer height: 8
|
29
|
+
res.panels_flow innerPadding: { top: 4, right: 4, bottom: 4, left: 4 }, childViews: ->(hori) do
|
30
|
+
hori.button text: 'change bgcolor', onClick: ->(action) do
|
31
|
+
action.runMultiple childActions: ->(saction) do
|
32
|
+
comp_ids.each do |id, method|
|
33
|
+
saction.components_update targetId: id, views: ->(view) do
|
34
|
+
if id == 'pflow'
|
35
|
+
view.public_send(method, { backgroundColor: '#00FFFF', innerPadding: { bottom: 0 } })
|
36
|
+
else
|
37
|
+
view.public_send(method, { backgroundColor: '#00FFFF' })
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
hori.button text: 'change text (p & label)', onClick: ->(action) do
|
45
|
+
action.runMultiple childActions: ->(saction) do
|
46
|
+
saction.components_update targetId: 'paragraph', views: ->(view) do
|
47
|
+
view.p text: 'changed!'
|
48
|
+
end
|
49
|
+
saction.components_update targetId: 'label', views: ->(view) do
|
50
|
+
view.label text: 'changed!'
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
hori.button text: 'Change fields text', onClick: ->(action) do
|
56
|
+
action.components_update targetId: 'inp-text', views: ->(view) do
|
57
|
+
view.fields_text name: 'user[city]', value: 'Jakarta', placeholder: 'City', label: 'City'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
hori.button text: 'Change fields select', onClick: ->(action) do
|
62
|
+
action.components_update targetId: 'inp-select', views: ->(view) do
|
63
|
+
view.fields_select options: cities + [{ text: 'Taipei', value: 'taipei' }]
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
res.spacer height: 16
|
68
|
+
res.h3 text: 'Childviews changes'
|
69
|
+
res.spacer height: 8
|
70
|
+
res.panels_flow innerPadding: { top: 4, right: 4, bottom: 4, left: 4 }, childViews: ->(hori) do
|
71
|
+
hori.button text: 'Add child to panel', onClick: ->(action) do
|
72
|
+
action.runMultiple childActions: ->(saction) do
|
73
|
+
panels_ids.each do |id, method|
|
74
|
+
saction.components_update targetId: id, views: ->(view) do
|
75
|
+
props = {
|
76
|
+
childViews: ->(sview) do
|
77
|
+
sview.label text: method
|
78
|
+
sview.image url: small_image_url, width: 'matchParent', height: 'matchParent'
|
79
|
+
end
|
80
|
+
}
|
81
|
+
props.merge!({ innerPadding: { bottom: 0 } }) if id == 'pflow'
|
82
|
+
if id == 'psplit'
|
83
|
+
props.delete(:childViews)
|
84
|
+
props.merge({
|
85
|
+
content: ->(split) do
|
86
|
+
split.left childViews: ->(sview) do
|
87
|
+
sview.label text: method
|
88
|
+
end
|
89
|
+
split.right childViews: ->(sview) do
|
90
|
+
sview.image url: small_image_url, width: 'matchParent', height: 'matchParent'
|
91
|
+
end
|
92
|
+
end
|
93
|
+
})
|
94
|
+
end
|
95
|
+
view.public_send(method, props)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
res.spacer height: 16
|
102
|
+
end
|
103
|
+
|
104
|
+
res.panels_column lg: { cols: 9 }, childViews: ->(col) do
|
105
|
+
col.panels_responsive id: 'pres', width: 200, childViews: ->(cview) do
|
106
|
+
cview.label text: 'Panels responsive'
|
107
|
+
end
|
108
|
+
col.spacer height: 4
|
109
|
+
col.panels_column id: 'pcol', lg: { cols: 6 }, childViews: ->(cview) do
|
110
|
+
cview.label text: 'Panels column'
|
111
|
+
end
|
112
|
+
col.spacer height: 4
|
113
|
+
col.panels_horizontal id: 'phor', width: 200, childViews: ->(cview) do
|
114
|
+
cview.label text: 'Panels horizontal'
|
115
|
+
end
|
116
|
+
col.spacer height: 4
|
117
|
+
col.panels_vertical id: 'pver', width: 200, childViews: ->(cview) do
|
118
|
+
cview.label text: 'Panels vertical'
|
119
|
+
end
|
120
|
+
col.spacer height: 4
|
121
|
+
col.panels_flow innerPadding: { bottom: 0 }, id: 'pflow', width: 200, childViews: ->(cview) do
|
122
|
+
cview.label text: 'Panels flow'
|
123
|
+
end
|
124
|
+
col.spacer height: 4
|
125
|
+
col.panels_split id: 'psplit', width: 200, content: ->(cview) do
|
126
|
+
cview.left childViews: ->(ccview) do
|
127
|
+
ccview.label text: 'Panels split (not supported)'
|
128
|
+
end
|
129
|
+
end
|
130
|
+
col.spacer height: 4
|
131
|
+
col.p id: 'paragraph', width: 500, text: 'In publishing and graphic design, Lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document or a typeface without relying on meaningful content.'
|
132
|
+
col.spacer height: 4
|
133
|
+
col.label id: 'label', text: 'birds flying'
|
134
|
+
col.spacer height: 8
|
135
|
+
col.panels_form \
|
136
|
+
url: json_ui_garage_url(path: 'forms/generic_post'),
|
137
|
+
method: 'post',
|
138
|
+
childViews: ->(form) do
|
139
|
+
col.fields_text id: 'inp-text', name: 'user[full_name]', width: 300, label: 'Full name', placeholder: 'Full name'
|
140
|
+
col.spacer height: 4
|
141
|
+
|
142
|
+
col.fields_select id: 'inp-select', options: cities, width: 300, name: 'user[city]'
|
143
|
+
col.spacer height: 4
|
144
|
+
col.fields_submit text: 'Submit'
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
json.title 'Field focus'
|
2
|
+
|
3
|
+
page = json_ui_page json
|
4
|
+
|
5
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
|
6
|
+
|
7
|
+
page.body padding: glib_json_padding_body, childViews: ->(body) do
|
8
|
+
body.panels_responsive width: 'matchParent', childViews: ->(res) do
|
9
|
+
res.panels_form \
|
10
|
+
url: json_ui_garage_url(path: 'forms/generic_post'),
|
11
|
+
method: 'post',
|
12
|
+
width: 300,
|
13
|
+
childViews: ->(form) do
|
14
|
+
res.fields_text id: 'first', name: 'user[full_name]', label: 'Full name', placeholder: 'Full name', width: 'matchParent'
|
15
|
+
res.spacer height: 8
|
16
|
+
res.fields_number id: 'second', name: 'user[age]', label: 'Age', placeholder: 'Age', width: 'matchParent'
|
17
|
+
res.spacer height: 4
|
18
|
+
res.panels_horizontal childViews: ->(hori) do
|
19
|
+
res.button text: 'focus1', onClick: ->(action) do
|
20
|
+
action.fields_focus targetId: 'first'
|
21
|
+
end
|
22
|
+
res.spacer width: 4
|
23
|
+
res.button text: 'focus2', onClick: ->(action) do
|
24
|
+
action.fields_focus targetId: 'second'
|
25
|
+
end
|
26
|
+
res.spacer width: 4
|
27
|
+
res.button text: 'blur', onClick: ->(action) do
|
28
|
+
action.fields_focus targetId: 'first', onFocus: ->(saction) do
|
29
|
+
saction.timeouts_set interval: 1000, onTimeout: ->(ssaction) { ssaction.fields_blur }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
res.spacer width: 4
|
33
|
+
res.button text: 'reset', onClick: ->(action) do
|
34
|
+
action.fields_reset targetId: 'first', onReset: ->(saction) do
|
35
|
+
saction.snackbars_alert styleClasses: ['success'], message: 'Reset full name!'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
res.spacer width: 4
|
39
|
+
res.fields_submit text: 'submit'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
res.spacer height: 16
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/glib/dynamic_text.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/glib/value.rb
CHANGED
File without changes
|
data/lib/glib/version.rb
CHANGED
File without changes
|
data/lib/glib-web.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glib-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.24.
|
4
|
+
version: 3.24.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ''
|
@@ -139,8 +139,10 @@ files:
|
|
139
139
|
- app/validators/url_validator.rb
|
140
140
|
- app/views/json_ui/garage/_nav_menu.json.jbuilder
|
141
141
|
- app/views/json_ui/garage/actions/_commands.json.jbuilder
|
142
|
+
- app/views/json_ui/garage/actions/_components.json.jbuilder
|
142
143
|
- app/views/json_ui/garage/actions/_dialogs.json.jbuilder
|
143
144
|
- app/views/json_ui/garage/actions/_dialogs_show.json.jbuilder
|
145
|
+
- app/views/json_ui/garage/actions/_fields.json.jbuilder
|
144
146
|
- app/views/json_ui/garage/actions/_http.json.jbuilder
|
145
147
|
- app/views/json_ui/garage/actions/_list.json.jbuilder
|
146
148
|
- app/views/json_ui/garage/actions/_panels.json.jbuilder
|
@@ -164,6 +166,9 @@ files:
|
|
164
166
|
- app/views/json_ui/garage/forms/chip_group.json.jbuilder
|
165
167
|
- app/views/json_ui/garage/forms/conditional_value.json.jbuilder
|
166
168
|
- app/views/json_ui/garage/forms/dialogs_close.json.jbuilder
|
169
|
+
- app/views/json_ui/garage/forms/dialogs_form.json.jbuilder
|
170
|
+
- app/views/json_ui/garage/forms/dialogs_subform.json.jbuilder
|
171
|
+
- app/views/json_ui/garage/forms/dialogs_subform_post.json.jbuilder
|
167
172
|
- app/views/json_ui/garage/forms/dialogs_update.json.jbuilder
|
168
173
|
- app/views/json_ui/garage/forms/dialogs_update2.json.jbuilder
|
169
174
|
- app/views/json_ui/garage/forms/dialogs_update3.json.jbuilder
|
@@ -264,7 +269,10 @@ files:
|
|
264
269
|
- app/views/json_ui/garage/views/banners.json.jbuilder
|
265
270
|
- app/views/json_ui/garage/views/calendar_data.json.jbuilder
|
266
271
|
- app/views/json_ui/garage/views/charts.json.jbuilder
|
272
|
+
- app/views/json_ui/garage/views/components_set.json.jbuilder
|
273
|
+
- app/views/json_ui/garage/views/components_update.json.jbuilder
|
267
274
|
- app/views/json_ui/garage/views/controls.json.jbuilder
|
275
|
+
- app/views/json_ui/garage/views/fields_focus.json.jbuilder
|
268
276
|
- app/views/json_ui/garage/views/iap.json.jbuilder
|
269
277
|
- app/views/json_ui/garage/views/icon_names.json.jbuilder
|
270
278
|
- app/views/json_ui/garage/views/icons.json.jbuilder
|
@@ -337,8 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
337
345
|
- !ruby/object:Gem::Version
|
338
346
|
version: '0'
|
339
347
|
requirements: []
|
340
|
-
|
341
|
-
rubygems_version: 2.7.6
|
348
|
+
rubygems_version: 3.4.6
|
342
349
|
signing_key:
|
343
350
|
specification_version: 4
|
344
351
|
summary: ''
|