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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +0 -0
  3. data/app/controllers/glib/home_controller.rb +1 -1
  4. data/app/helpers/glib/app_feature_support_helper.rb +0 -0
  5. data/app/helpers/glib/dynamic_texts_helper.rb +0 -0
  6. data/app/helpers/glib/json_ui/action_builder/sheets.rb +0 -0
  7. data/app/helpers/glib/json_ui/action_builder/windows.rb +0 -7
  8. data/app/helpers/glib/json_ui/analytics_helper.rb +0 -0
  9. data/app/helpers/glib/json_ui/generic_builders.rb +0 -0
  10. data/app/models/glib/active_storage/attachment.rb +0 -0
  11. data/app/models/glib/active_storage/blob.rb +0 -0
  12. data/app/models/glib/dynamic_text_record.rb +0 -0
  13. data/app/models/glib/text.rb +0 -0
  14. data/app/validators/email_typo_validator.rb +0 -0
  15. data/app/validators/email_validator.rb +0 -0
  16. data/app/validators/url_validator.rb +0 -0
  17. data/app/views/json_ui/garage/actions/_components.json.jbuilder +18 -0
  18. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +8 -0
  19. data/app/views/json_ui/garage/actions/_fields.json.jbuilder +10 -0
  20. data/app/views/json_ui/garage/actions/_list.json.jbuilder +4 -0
  21. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +0 -0
  22. data/app/views/json_ui/garage/forms/dialogs_form.json.jbuilder +40 -0
  23. data/app/views/json_ui/garage/forms/dialogs_subform.json.jbuilder +21 -0
  24. data/app/views/json_ui/garage/forms/dialogs_subform_post.json.jbuilder +13 -0
  25. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +0 -0
  26. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +0 -0
  27. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +0 -0
  28. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +0 -0
  29. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +0 -0
  30. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +0 -0
  31. data/app/views/json_ui/garage/home/blank.json.jbuilder +0 -0
  32. data/app/views/json_ui/garage/home/slow.json.jbuilder +0 -0
  33. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +0 -0
  34. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +0 -0
  35. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +0 -0
  36. data/app/views/json_ui/garage/lists/fab.json.jbuilder +0 -0
  37. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +0 -0
  38. data/app/views/json_ui/garage/pages/custom_style_class.json.jbuilder +0 -0
  39. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +0 -0
  40. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +0 -0
  41. data/app/views/json_ui/garage/pages/layout.json.jbuilder +0 -0
  42. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +0 -0
  43. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +0 -0
  44. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +0 -0
  45. data/app/views/json_ui/garage/pages/redirect_onload.json.jbuilder +0 -0
  46. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +0 -0
  47. data/app/views/json_ui/garage/panels/card.json.jbuilder +0 -0
  48. data/app/views/json_ui/garage/panels/custom.json.jbuilder +0 -0
  49. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +0 -0
  50. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +0 -0
  51. data/app/views/json_ui/garage/services/image.json.jbuilder +0 -0
  52. data/app/views/json_ui/garage/services/index.json.jbuilder +0 -0
  53. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +0 -0
  54. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +0 -0
  55. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +0 -0
  56. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +0 -0
  57. data/app/views/json_ui/garage/tables/index.json.jbuilder +0 -0
  58. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +0 -0
  59. data/app/views/json_ui/garage/views/components_set.json.jbuilder +37 -0
  60. data/app/views/json_ui/garage/views/components_update.json.jbuilder +148 -0
  61. data/app/views/json_ui/garage/views/fields_focus.json.jbuilder +47 -0
  62. data/app/views/json_ui/garage/views/links.json.jbuilder +0 -0
  63. data/app/views/json_ui/garage/views/map_data.json.jbuilder +0 -0
  64. data/app/views/json_ui/garage/views/multimedia.json.jbuilder +0 -0
  65. data/app/views/layouts/json_ui/no_custom.html.erb +0 -0
  66. data/lib/generators/glib/install_generator.rb +0 -0
  67. data/lib/generators/templates/20191017062519_create_texts.rb +0 -0
  68. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +0 -0
  69. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +0 -0
  70. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +0 -0
  71. data/lib/generators/templates/database.yml +0 -0
  72. data/lib/generators/templates/dynamic_text.rb +0 -0
  73. data/lib/glib/dynamic_text/config.rb +0 -0
  74. data/lib/glib/dynamic_text.rb +0 -0
  75. data/lib/glib/json_crawler/action_crawler.rb +0 -0
  76. data/lib/glib/json_crawler/action_crawlers/action_http.rb +0 -0
  77. data/lib/glib/json_crawler/action_crawlers/dialogs_alert.rb +0 -0
  78. data/lib/glib/json_crawler/action_crawlers/menu.rb +0 -0
  79. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +0 -0
  80. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +0 -0
  81. data/lib/glib/json_crawler/coverage.rb +0 -0
  82. data/lib/glib/value.rb +0 -0
  83. data/lib/glib/version.rb +0 -0
  84. data/lib/glib-web.rb +0 -1
  85. metadata +10 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a9b476d1e7ef1dc93819822ba3e2091c534d99fc7395246309f2224e522ca45b
4
- data.tar.gz: fbd474cc63d4e30796ae43b2754bfdb0bf07416f923f90a7ec74d75f4924209a
3
+ metadata.gz: aba0dc03db2778a7a62e6222b3024ace73faa22c47d158a9088ed334db9515b0
4
+ data.tar.gz: 2aa5ad7d865b21b3ae466aec5213af9553b118ac73db120a8def60aa624bee0a
5
5
  SHA512:
6
- metadata.gz: 11e24fdad3d1538bda9d6c386053d54c6808e2ee1b1a239ea5839186faf5f097b56b04a5212572da8b11592bb07fa71200dc7f503b9e89ee59c3c9e6c9001d77
7
- data.tar.gz: 3b7f3f4b4d4205d463410a87814018e1fcd482a69c8768609d9a87117ffb4d50ffaff22bf2b9f2cff5771b98bf6189cc598b48a200f3cb4692e16a50a05f088f
6
+ metadata.gz: 2798441528eaab4548b034b65f79704daf77295ef8ed6751f2e1ea3f1719e9df12308d823fb251a0427d012e6bc5298bcbaf232ba47ada41128738bd8feee6a1
7
+ data.tar.gz: c83bbb97e419a24350383d4a6ad3e83322a5a153f4da1437f028437aef50987721a494d58e9cf20ad5ae5efc356d757eb16112c2716bb82e931ce40063157290
@@ -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
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
  ]
@@ -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
@@ -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
data/lib/glib/value.rb CHANGED
File without changes
data/lib/glib/version.rb CHANGED
File without changes
data/lib/glib-web.rb CHANGED
@@ -4,7 +4,6 @@ require 'glib/value'
4
4
  require 'glib/json_crawler'
5
5
 
6
6
  require 'glib/dynamic_text'
7
- require 'glib/crypt'
8
7
  require 'glib/test_helpers'
9
8
 
10
9
  require 'glib/time_freezable_mailer'
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.2
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
- rubyforge_project:
341
- rubygems_version: 2.7.6
348
+ rubygems_version: 3.4.6
342
349
  signing_key:
343
350
  specification_version: 4
344
351
  summary: ''