glib-web 0.5.75 → 0.5.76

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.
Files changed (188) hide show
  1. checksums.yaml +4 -4
  2. data/app/channels/glib/channel/is_typing_channel.rb +34 -34
  3. data/app/channels/glib/channel/online_channel.rb +36 -36
  4. data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
  5. data/app/controllers/concerns/glib/auth/policy.rb +148 -148
  6. data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
  7. data/app/controllers/concerns/glib/json/libs.rb +149 -149
  8. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
  9. data/app/controllers/concerns/glib/json/transformation.rb +11 -11
  10. data/app/controllers/concerns/glib/json/traversal.rb +92 -92
  11. data/app/controllers/concerns/glib/json/ui.rb +88 -88
  12. data/app/controllers/concerns/glib/json/validation.rb +13 -13
  13. data/app/controllers/glib/home_controller.rb +54 -54
  14. data/app/helpers/glib/app_feature_support_helper.rb +16 -16
  15. data/app/helpers/glib/dynamic_images_helper.rb +55 -55
  16. data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
  17. data/app/helpers/glib/enum_helper.rb +18 -18
  18. data/app/helpers/glib/forms_helper.rb +15 -15
  19. data/app/helpers/glib/json_ui/abstract_builder.rb +309 -309
  20. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  21. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  22. data/app/helpers/glib/json_ui/action_builder/panels.rb +14 -14
  23. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
  24. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
  25. data/app/helpers/glib/json_ui/action_builder/windows.rb +33 -33
  26. data/app/helpers/glib/json_ui/action_builder.rb +140 -140
  27. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  28. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  29. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  30. data/app/helpers/glib/json_ui/list_builders.rb +110 -110
  31. data/app/helpers/glib/json_ui/menu_builder.rb +94 -94
  32. data/app/helpers/glib/json_ui/page_helper.rb +221 -221
  33. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  34. data/app/helpers/glib/json_ui/split_builders.rb +32 -32
  35. data/app/helpers/glib/json_ui/styling_helper.rb +55 -55
  36. data/app/helpers/glib/json_ui/table_builders.rb +74 -74
  37. data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
  38. data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
  39. data/app/helpers/glib/json_ui/view_builder/fields.rb +278 -278
  40. data/app/helpers/glib/json_ui/view_builder/panels.rb +256 -256
  41. data/app/helpers/glib/json_ui/view_builder.rb +240 -240
  42. data/app/helpers/glib/urls_helper.rb +12 -12
  43. data/app/models/concerns/glib/soft_deletable.rb +68 -68
  44. data/app/models/glib/active_storage/attachment.rb +9 -9
  45. data/app/models/glib/active_storage/blob.rb +9 -9
  46. data/app/models/glib/application_record.rb +18 -18
  47. data/app/models/glib/dynamic_text_record.rb +9 -9
  48. data/app/models/glib/text.rb +95 -95
  49. data/app/policies/glib/application_policy.rb +161 -161
  50. data/app/validators/email_typo_validator.rb +38 -38
  51. data/app/validators/email_validator.rb +7 -7
  52. data/app/validators/url_validator.rb +20 -20
  53. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
  54. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  55. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  56. data/app/views/json_ui/garage/actions/_panels.json.jbuilder +18 -18
  57. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  58. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  59. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  60. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +24 -24
  61. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  62. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  63. data/app/views/json_ui/garage/actions/index.json.jbuilder +24 -24
  64. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +6 -6
  65. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  66. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  67. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
  68. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
  69. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
  70. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +24 -24
  71. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  72. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +32 -32
  73. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
  74. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  75. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
  76. data/app/views/json_ui/garage/forms/index.json.jbuilder +113 -113
  77. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +39 -39
  78. data/app/views/json_ui/garage/forms/online_participant1.json.jbuilder +25 -25
  79. data/app/views/json_ui/garage/forms/online_participant2.json.jbuilder +25 -25
  80. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +81 -81
  81. data/app/views/json_ui/garage/forms/ratings.json.jbuilder +49 -49
  82. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  83. data/app/views/json_ui/garage/forms/selects.json.jbuilder +91 -91
  84. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +130 -130
  85. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +35 -35
  86. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  87. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +26 -26
  88. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  89. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  90. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +81 -81
  91. data/app/views/json_ui/garage/forms/timers.json.jbuilder +120 -120
  92. data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
  93. data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
  94. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  95. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
  96. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  97. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  98. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
  99. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
  100. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  101. data/app/views/json_ui/garage/lists/index.json.jbuilder +38 -38
  102. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  103. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  104. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -114
  105. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  106. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  107. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  108. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  109. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  110. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  111. data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
  112. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  113. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
  114. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  115. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  116. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  117. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +31 -31
  118. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  119. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  120. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
  121. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  122. data/app/views/json_ui/garage/panels/flow.json.jbuilder +59 -59
  123. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
  124. data/app/views/json_ui/garage/panels/index.json.jbuilder +138 -138
  125. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  126. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  127. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  128. data/app/views/json_ui/garage/panels/ul.json.jbuilder +33 -33
  129. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
  130. data/app/views/json_ui/garage/panels/web.json.jbuilder +15 -15
  131. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  132. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  133. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  134. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  135. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  136. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  137. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  138. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  139. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  140. data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
  141. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  142. data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
  143. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  144. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
  145. data/app/views/json_ui/garage/views/controls.json.jbuilder +37 -37
  146. data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
  147. data/app/views/json_ui/garage/views/icons.json.jbuilder +15 -15
  148. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  149. data/app/views/json_ui/garage/views/index.json.jbuilder +67 -67
  150. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  151. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  152. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  153. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  154. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  155. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  156. data/app/views/json_ui/garage/views/texts.json.jbuilder +35 -35
  157. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  158. data/config/routes.rb +7 -7
  159. data/lib/generators/glib/install_generator.rb +24 -24
  160. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  161. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  162. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  163. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  164. data/lib/generators/templates/database.yml +107 -107
  165. data/lib/generators/templates/dynamic_text.rb +2 -2
  166. data/lib/glib/crypt/utils.rb +26 -26
  167. data/lib/glib/crypt.rb +0 -0
  168. data/lib/glib/dynamic_text/config.rb +21 -21
  169. data/lib/glib/dynamic_text.rb +0 -0
  170. data/lib/glib/engine.rb +7 -7
  171. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  172. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  173. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  174. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  175. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  176. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  177. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  178. data/lib/glib/json_crawler/coverage.rb +20 -20
  179. data/lib/glib/json_crawler/http.rb +120 -120
  180. data/lib/glib/json_crawler/router.rb +90 -98
  181. data/lib/glib/json_crawler.rb +11 -11
  182. data/lib/glib/mailer_tester.rb +36 -36
  183. data/lib/glib/test_helpers.rb +52 -52
  184. data/lib/glib/value.rb +7 -7
  185. data/lib/glib/version.rb +5 -5
  186. data/lib/glib-web.rb +9 -9
  187. data/lib/tasks/db.rake +95 -95
  188. metadata +1 -1
@@ -1,17 +1,17 @@
1
- json.title 'Forms'
2
-
3
- page = json_ui_page json
4
-
5
- render "#{@path_prefix}/nav_menu", json: json, page: page
6
-
7
- page.form url: json_ui_garage_url(path: 'forms/submission_flow_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
8
- form.fields_radioGroup name: 'user[flow]', childViews: ->(group) do
9
- group.h3 text: 'Flow'
10
- group.spacer height: 6
11
- group.fields_radio value: 'open', label: 'open - useful for form create'
12
- group.fields_radio value: 'close_with_reload', label: 'closeWithReload - useful for form update'
13
- group.fields_radio value: 'close_alert', label: 'close+alert - useful for non-model form (e.g. contact us)'
14
- group.fields_radio value: 'alert_close', label: 'alert+close - useful for non-model form (e.g. contact us)'
15
- end
16
- form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
17
- end
1
+ json.title 'Forms'
2
+
3
+ page = json_ui_page json
4
+
5
+ render "#{@path_prefix}/nav_menu", json: json, page: page
6
+
7
+ page.form url: json_ui_garage_url(path: 'forms/submission_flow_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
8
+ form.fields_radioGroup name: 'user[flow]', childViews: ->(group) do
9
+ group.h3 text: 'Flow'
10
+ group.spacer height: 6
11
+ group.fields_radio value: 'open', label: 'open - useful for form create'
12
+ group.fields_radio value: 'close_with_reload', label: 'closeWithReload - useful for form update'
13
+ group.fields_radio value: 'close_alert', label: 'close+alert - useful for non-model form (e.g. contact us)'
14
+ group.fields_radio value: 'alert_close', label: 'alert+close - useful for non-model form (e.g. contact us)'
15
+ end
16
+ form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
17
+ end
@@ -1,26 +1,26 @@
1
-
2
- flow = params.require(:user)[:flow] if params[:user]
3
- json_ui_response json do |action|
4
- if !flow.present?
5
- action.dialogs_alert message: 'Please enter all required information'
6
- else
7
- case flow
8
- when 'close_with_reload'
9
- # action.windows_close onClose: ->(action) do
10
- # action.windows_reload
11
- # end
12
-
13
- action.windows_closeWithReload fallbackUrl: json_ui_garage_url(path: 'forms/index')
14
- when 'close_alert'
15
- action.windows_close onClose: ->(action) do
16
- action.dialogs_alert message: 'Thanks for the submission!'
17
- end
18
- when 'alert_close'
19
- action.dialogs_alert message: 'Thanks for the submission!', onClose: ->(action) do
20
- action.windows_close
21
- end
22
- when 'open'
23
- action.windows_open url: json_ui_garage_url(path: 'forms/index')
24
- end
25
- end
26
- end
1
+
2
+ flow = params.require(:user)[:flow] if params[:user]
3
+ json_ui_response json do |action|
4
+ if !flow.present?
5
+ action.dialogs_alert message: 'Please enter all required information'
6
+ else
7
+ case flow
8
+ when 'close_with_reload'
9
+ # action.windows_close onClose: ->(action) do
10
+ # action.windows_reload
11
+ # end
12
+
13
+ action.windows_closeWithReload fallbackUrl: json_ui_garage_url(path: 'forms/index')
14
+ when 'close_alert'
15
+ action.windows_close onClose: ->(action) do
16
+ action.dialogs_alert message: 'Thanks for the submission!'
17
+ end
18
+ when 'alert_close'
19
+ action.dialogs_alert message: 'Thanks for the submission!', onClose: ->(action) do
20
+ action.windows_close
21
+ end
22
+ when 'open'
23
+ action.windows_open url: json_ui_garage_url(path: 'forms/index')
24
+ end
25
+ end
26
+ end
@@ -1,63 +1,63 @@
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 padding: glib_json_padding_body, childViews: ->(scroll) do
7
- scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post'), method: 'post', childViews: ->(form) do
8
- form.label text: 'These buttons get disabled on submit'
9
- form.spacer height: 14
10
- form.button text: 'Normal Button', onClick: ->(action) { action.forms_submit }
11
- form.spacer height: 14
12
- form.fields_submit text: 'Submit Button'
13
-
14
- form.fab icon: 'send', onClick: ->(action) { action.forms_submit }
15
- end
16
-
17
- scroll.spacer height: 14
18
-
19
- scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'slow_open'), method: 'post', childViews: ->(form) do
20
- form.fields_submit text: 'Submit button with slow window/open'
21
- end
22
-
23
- scroll.spacer height: 14
24
-
25
- scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'slow_openWeb'), method: 'post', childViews: ->(form) do
26
- form.fields_submit text: 'Submit button with slow window/openWeb'
27
- end
28
-
29
- scroll.spacer height: 14
30
-
31
- scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_once'), method: 'post', childViews: ->(form) do
32
- form.fields_submit text: 'Submit Button with timeouts/set once'
33
- end
34
-
35
- scroll.spacer height: 14
36
-
37
- scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_chain', count: 0), method: 'post', childViews: ->(form) do
38
- form.fields_submit text: 'Submit Button with timeouts/set chain'
39
- end
40
-
41
- # This needs to be long enough that the FAB is roughly at the bottom of a mobile screen.
42
- # Ideally the spacer can expand dynamically depending on available space.
43
- scroll.spacer height: 400
44
-
45
- end
46
-
47
- # page.form url: json_ui_garage_url(path: 'forms/submission_indicator_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
48
- # form.label text: 'These buttons get disabled on submit'
49
- # form.spacer height: 10
50
- # form.button text: 'Normal Button', onClick: ->(action) { action.forms_submit }
51
- # form.spacer height: 10
52
- # form.fields_submit text: 'Submit Button'
53
-
54
- # # This needs to be long enough that the FAB is roughly at the bottom of a mobile screen.
55
- # # Ideally the spacer can expand dynamically depending on available space.
56
- # form.spacer height: 400
57
-
58
- # form.fab icon: 'send', onClick: ->(action) { action.forms_submit }
59
- # end
60
-
61
- # page.form url: json_ui_garage_url(path: 'forms/submission_indicator_post', timeout: true), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
62
- # form.fields_submit text: 'Submit Button with Timeout'
63
- # end
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 padding: glib_json_padding_body, childViews: ->(scroll) do
7
+ scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post'), method: 'post', childViews: ->(form) do
8
+ form.label text: 'These buttons get disabled on submit'
9
+ form.spacer height: 14
10
+ form.button text: 'Normal Button', onClick: ->(action) { action.forms_submit }
11
+ form.spacer height: 14
12
+ form.fields_submit text: 'Submit Button'
13
+
14
+ form.fab icon: 'send', onClick: ->(action) { action.forms_submit }
15
+ end
16
+
17
+ scroll.spacer height: 14
18
+
19
+ scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'slow_open'), method: 'post', childViews: ->(form) do
20
+ form.fields_submit text: 'Submit button with slow window/open'
21
+ end
22
+
23
+ scroll.spacer height: 14
24
+
25
+ scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'slow_openWeb'), method: 'post', childViews: ->(form) do
26
+ form.fields_submit text: 'Submit button with slow window/openWeb'
27
+ end
28
+
29
+ scroll.spacer height: 14
30
+
31
+ scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_once'), method: 'post', childViews: ->(form) do
32
+ form.fields_submit text: 'Submit Button with timeouts/set once'
33
+ end
34
+
35
+ scroll.spacer height: 14
36
+
37
+ scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_chain', count: 0), method: 'post', childViews: ->(form) do
38
+ form.fields_submit text: 'Submit Button with timeouts/set chain'
39
+ end
40
+
41
+ # This needs to be long enough that the FAB is roughly at the bottom of a mobile screen.
42
+ # Ideally the spacer can expand dynamically depending on available space.
43
+ scroll.spacer height: 400
44
+
45
+ end
46
+
47
+ # page.form url: json_ui_garage_url(path: 'forms/submission_indicator_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
48
+ # form.label text: 'These buttons get disabled on submit'
49
+ # form.spacer height: 10
50
+ # form.button text: 'Normal Button', onClick: ->(action) { action.forms_submit }
51
+ # form.spacer height: 10
52
+ # form.fields_submit text: 'Submit Button'
53
+
54
+ # # This needs to be long enough that the FAB is roughly at the bottom of a mobile screen.
55
+ # # Ideally the spacer can expand dynamically depending on available space.
56
+ # form.spacer height: 400
57
+
58
+ # form.fab icon: 'send', onClick: ->(action) { action.forms_submit }
59
+ # end
60
+
61
+ # page.form url: json_ui_garage_url(path: 'forms/submission_indicator_post', timeout: true), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
62
+ # form.fields_submit text: 'Submit Button with Timeout'
63
+ # end
@@ -1,25 +1,25 @@
1
- sleep 0.5
2
-
3
- json_ui_response json do |action|
4
- case params[:mode]
5
- when 'timeout_once'
6
- action.timeouts_set interval: 2000, onTimeout: ->(subaction) do
7
- subaction.dialogs_alert message: 'Success!'
8
- end
9
- when 'timeout_chain'
10
- count = params[:count].to_i
11
- if count > 3
12
- action.dialogs_alert message: 'Success!'
13
- else
14
- action.timeouts_set interval: 500, onTimeout: ->(subaction) do
15
- subaction.http_post url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_chain', count: count + 1)
16
- end
17
- end
18
- when 'slow_open'
19
- action.windows_open url: json_ui_garage_url(path: 'home/slow')
20
- when 'slow_openWeb'
21
- action.windows_openWeb url: 'https://www.google.com'
22
- else
23
- action.dialogs_alert message: 'Success!'
24
- end
25
- end
1
+ sleep 0.5
2
+
3
+ json_ui_response json do |action|
4
+ case params[:mode]
5
+ when 'timeout_once'
6
+ action.timeouts_set interval: 2000, onTimeout: ->(subaction) do
7
+ subaction.dialogs_alert message: 'Success!'
8
+ end
9
+ when 'timeout_chain'
10
+ count = params[:count].to_i
11
+ if count > 3
12
+ action.dialogs_alert message: 'Success!'
13
+ else
14
+ action.timeouts_set interval: 500, onTimeout: ->(subaction) do
15
+ subaction.http_post url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_chain', count: count + 1)
16
+ end
17
+ end
18
+ when 'slow_open'
19
+ action.windows_open url: json_ui_garage_url(path: 'home/slow')
20
+ when 'slow_openWeb'
21
+ action.windows_openWeb url: 'https://www.google.com'
22
+ else
23
+ action.dialogs_alert message: 'Success!'
24
+ end
25
+ end
@@ -1,81 +1,81 @@
1
- json.title 'Forms'
2
-
3
- page = json_ui_page json
4
- render "#{@path_prefix}/nav_menu", json: json, page: page
5
-
6
- page.form \
7
- url: json_ui_garage_url(path: 'forms/generic_post'),
8
- method: 'post',
9
- padding: glib_json_padding_body,
10
- childViews: ->(form) do
11
- form.fields_email \
12
- name: 'user[email]',
13
- width: 'matchParent',
14
- label: 'Email'
15
-
16
- form.fields_url \
17
- name: 'user[url]',
18
- width: 'matchParent',
19
- label: 'URL'
20
-
21
- form.fields_number \
22
- name: 'user[number]',
23
- width: 'matchParent',
24
- label: 'Number',
25
- validation: { required: { message: 'Required' } },
26
- leftText: 'USD',
27
- rightText: '.00'
28
-
29
- form.fields_phone \
30
- name: 'user[phone1]',
31
- width: 'matchParent',
32
- label: 'Phone field'
33
-
34
- form.fields_phone \
35
- name: 'user[phone2]',
36
- width: 'matchParent',
37
- label: "Phone field with Australia as the default country",
38
- disableAutoDetect: true, # Disable country auto detect by user IP
39
- defaultCountry: 'AU' # ISO Country code, see: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
40
-
41
- form.fields_password \
42
- name: 'user[password]',
43
- width: 'matchParent',
44
- label: 'Password',
45
- hint: 'Should contain at least 6 characters',
46
- leftIcon: 'lock'
47
-
48
- form.fields_textarea \
49
- name: 'user[textarea]',
50
- width: 'matchParent',
51
- label: 'Textarea with maxLength',
52
- maxLength: 50,
53
- validation: { required: { message: 'Required' } }
54
-
55
- options = ['male', 'female'].map { |i| { text: i.humanize, value: i } }
56
- form.fields_select \
57
- name: 'user[gender]',
58
- width: 'matchParent',
59
- label: 'Gender',
60
- validation: { required: { message: 'Required' } },
61
- options: options
62
-
63
- form.spacer height: 20
64
- form.fields_stripeToken \
65
- name: 'user[stripe_token]',
66
- width: 'matchParent',
67
- publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx'
68
-
69
- form.spacer height: 20
70
- form.fields_stripeExternalAccount \
71
- name: 'user[stripe_external_account]',
72
- width: 'matchParent',
73
- publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx',
74
- accountHolderName: 'John Doe',
75
- accountHolderType: 'individual',
76
- country: 'AU',
77
- currency: 'AUD'
78
-
79
- form.spacer height: 30
80
- form.fields_submit text: 'Submit'
81
- end
1
+ json.title 'Forms'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.form \
7
+ url: json_ui_garage_url(path: 'forms/generic_post'),
8
+ method: 'post',
9
+ padding: glib_json_padding_body,
10
+ childViews: ->(form) do
11
+ form.fields_email \
12
+ name: 'user[email]',
13
+ width: 'matchParent',
14
+ label: 'Email'
15
+
16
+ form.fields_url \
17
+ name: 'user[url]',
18
+ width: 'matchParent',
19
+ label: 'URL'
20
+
21
+ form.fields_number \
22
+ name: 'user[number]',
23
+ width: 'matchParent',
24
+ label: 'Number',
25
+ validation: { required: { message: 'Required' } },
26
+ leftText: 'USD',
27
+ rightText: '.00'
28
+
29
+ form.fields_phone \
30
+ name: 'user[phone1]',
31
+ width: 'matchParent',
32
+ label: 'Phone field'
33
+
34
+ form.fields_phone \
35
+ name: 'user[phone2]',
36
+ width: 'matchParent',
37
+ label: "Phone field with Australia as the default country",
38
+ disableAutoDetect: true, # Disable country auto detect by user IP
39
+ defaultCountry: 'AU' # ISO Country code, see: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
40
+
41
+ form.fields_password \
42
+ name: 'user[password]',
43
+ width: 'matchParent',
44
+ label: 'Password',
45
+ hint: 'Should contain at least 6 characters',
46
+ leftIcon: 'lock'
47
+
48
+ form.fields_textarea \
49
+ name: 'user[textarea]',
50
+ width: 'matchParent',
51
+ label: 'Textarea with maxLength',
52
+ maxLength: 50,
53
+ validation: { required: { message: 'Required' } }
54
+
55
+ options = ['male', 'female'].map { |i| { text: i.humanize, value: i } }
56
+ form.fields_select \
57
+ name: 'user[gender]',
58
+ width: 'matchParent',
59
+ label: 'Gender',
60
+ validation: { required: { message: 'Required' } },
61
+ options: options
62
+
63
+ form.spacer height: 20
64
+ form.fields_stripeToken \
65
+ name: 'user[stripe_token]',
66
+ width: 'matchParent',
67
+ publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx'
68
+
69
+ form.spacer height: 20
70
+ form.fields_stripeExternalAccount \
71
+ name: 'user[stripe_external_account]',
72
+ width: 'matchParent',
73
+ publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx',
74
+ accountHolderName: 'John Doe',
75
+ accountHolderType: 'individual',
76
+ country: 'AU',
77
+ currency: 'AUD'
78
+
79
+ form.spacer height: 30
80
+ form.fields_submit text: 'Submit'
81
+ end
@@ -1,120 +1,120 @@
1
- json.title 'Forms'
2
-
3
- page = json_ui_page json
4
- render "#{@path_prefix}/nav_menu", json: json, page: page
5
-
6
- online_channel = 'OnlineChannel'
7
- first_user = User.first
8
- second_user = User.second
9
-
10
- page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
11
- form.spacer height: 20
12
- form.h2 text: 'Standard (Backward)'
13
- form.spacer height: 6
14
- form.fields_timer \
15
- width: 160,
16
- styleClasses: ['outlined'],
17
- label: 'Timer',
18
- name: 'user[timer]',
19
- value: 60,
20
- min: 30
21
-
22
- form.spacer height: 20
23
- form.h2 text: 'Stop Watch (Forward)'
24
- form.spacer height: 6
25
- form.fields_timer \
26
- width: 160,
27
- styleClasses: ['outlined'],
28
- label: 'Stop Watch',
29
- name: 'user[stop_watch]',
30
- value: 10,
31
- max: 20,
32
- forward: true
33
-
34
- form.spacer height: 20
35
- form.h2 text: 'Reset timer by ActionCable'
36
- online_participant1_config = {
37
- channel: online_channel,
38
- filterKey: first_user.id
39
- }
40
-
41
- form.fields_timer \
42
- width: 120,
43
- actionCable: online_participant1_config,
44
- name: 'user[online_timer1]',
45
- value: 3,
46
- min: 0
47
-
48
- form.label \
49
- text: 'Participant One is online',
50
- color: glib_color_success,
51
- showIf: {
52
- ">": [
53
- {
54
- "var": 'user[online_timer1]'
55
- },
56
- 0
57
- ]
58
- }
59
-
60
- form.label \
61
- text: 'Participant One is offline',
62
- color: glib_color_error,
63
- showIf: {
64
- "<=": [
65
- {
66
- "var": 'user[online_timer1]'
67
- },
68
- 0
69
- ]
70
- }
71
-
72
- form.spacer height: 10
73
- form.label text: 'Open Participant One', onClick: ->(action) do
74
- action.windows_openWeb url: json_ui_garage_url(path: 'forms/online_participant1')
75
- end
76
- form.spacer height: 20
77
-
78
- online_participant2_config = {
79
- channel: online_channel,
80
- filterKey: second_user.id
81
- }
82
- form.fields_timer \
83
- width: 120,
84
- actionCable: online_participant2_config,
85
- name: 'user[online_timer2]',
86
- value: 3,
87
- min: 0
88
-
89
- form.label \
90
- text: 'Participant Two is online',
91
- color: glib_color_success,
92
- showIf: {
93
- ">": [
94
- {
95
- "var": 'user[online_timer2]'
96
- },
97
- 0
98
- ]
99
- }
100
-
101
- form.label \
102
- text: 'Participant Two is offline',
103
- color: glib_color_error,
104
- showIf: {
105
- "<=": [
106
- {
107
- "var": 'user[online_timer2]'
108
- },
109
- 0
110
- ]
111
- }
112
-
113
- form.spacer height: 10
114
- form.label text: 'Open Participant Two', onClick: ->(action) do
115
- action.windows_openWeb url: json_ui_garage_url(path: 'forms/online_participant2')
116
- end
117
-
118
- form.spacer height: 40
119
- form.fields_submit text: 'Submit'
120
- end
1
+ json.title 'Forms'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ online_channel = 'OnlineChannel'
7
+ first_user = User.first
8
+ second_user = User.second
9
+
10
+ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
11
+ form.spacer height: 20
12
+ form.h2 text: 'Standard (Backward)'
13
+ form.spacer height: 6
14
+ form.fields_timer \
15
+ width: 160,
16
+ styleClasses: ['outlined'],
17
+ label: 'Timer',
18
+ name: 'user[timer]',
19
+ value: 60,
20
+ min: 30
21
+
22
+ form.spacer height: 20
23
+ form.h2 text: 'Stop Watch (Forward)'
24
+ form.spacer height: 6
25
+ form.fields_timer \
26
+ width: 160,
27
+ styleClasses: ['outlined'],
28
+ label: 'Stop Watch',
29
+ name: 'user[stop_watch]',
30
+ value: 10,
31
+ max: 20,
32
+ forward: true
33
+
34
+ form.spacer height: 20
35
+ form.h2 text: 'Reset timer by ActionCable'
36
+ online_participant1_config = {
37
+ channel: online_channel,
38
+ filterKey: first_user.id
39
+ }
40
+
41
+ form.fields_timer \
42
+ width: 120,
43
+ actionCable: online_participant1_config,
44
+ name: 'user[online_timer1]',
45
+ value: 3,
46
+ min: 0
47
+
48
+ form.label \
49
+ text: 'Participant One is online',
50
+ color: glib_color_success,
51
+ showIf: {
52
+ ">": [
53
+ {
54
+ "var": 'user[online_timer1]'
55
+ },
56
+ 0
57
+ ]
58
+ }
59
+
60
+ form.label \
61
+ text: 'Participant One is offline',
62
+ color: glib_color_error,
63
+ showIf: {
64
+ "<=": [
65
+ {
66
+ "var": 'user[online_timer1]'
67
+ },
68
+ 0
69
+ ]
70
+ }
71
+
72
+ form.spacer height: 10
73
+ form.label text: 'Open Participant One', onClick: ->(action) do
74
+ action.windows_openWeb url: json_ui_garage_url(path: 'forms/online_participant1')
75
+ end
76
+ form.spacer height: 20
77
+
78
+ online_participant2_config = {
79
+ channel: online_channel,
80
+ filterKey: second_user.id
81
+ }
82
+ form.fields_timer \
83
+ width: 120,
84
+ actionCable: online_participant2_config,
85
+ name: 'user[online_timer2]',
86
+ value: 3,
87
+ min: 0
88
+
89
+ form.label \
90
+ text: 'Participant Two is online',
91
+ color: glib_color_success,
92
+ showIf: {
93
+ ">": [
94
+ {
95
+ "var": 'user[online_timer2]'
96
+ },
97
+ 0
98
+ ]
99
+ }
100
+
101
+ form.label \
102
+ text: 'Participant Two is offline',
103
+ color: glib_color_error,
104
+ showIf: {
105
+ "<=": [
106
+ {
107
+ "var": 'user[online_timer2]'
108
+ },
109
+ 0
110
+ ]
111
+ }
112
+
113
+ form.spacer height: 10
114
+ form.label text: 'Open Participant Two', onClick: ->(action) do
115
+ action.windows_openWeb url: json_ui_garage_url(path: 'forms/online_participant2')
116
+ end
117
+
118
+ form.spacer height: 40
119
+ form.fields_submit text: 'Submit'
120
+ end