glib-web 3.24.3 → 3.24.4
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/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
- 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
|
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: ''
|