glib-web 0.5.71 → 0.5.72

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 (185) 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 -8
  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.rb +140 -140
  21. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  22. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  23. data/app/helpers/glib/json_ui/action_builder/panels.rb +14 -14
  24. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
  25. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
  26. data/app/helpers/glib/json_ui/action_builder/windows.rb +33 -33
  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.rb +240 -240
  38. data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
  39. data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
  40. data/app/helpers/glib/json_ui/view_builder/fields.rb +278 -279
  41. data/app/helpers/glib/json_ui/view_builder/panels.rb +256 -256
  42. data/app/helpers/glib/urls_helper.rb +12 -12
  43. data/app/models/glib/active_storage/attachment.rb +9 -9
  44. data/app/models/glib/active_storage/blob.rb +9 -9
  45. data/app/models/glib/application_record.rb +18 -18
  46. data/app/models/glib/dynamic_text_record.rb +9 -9
  47. data/app/models/glib/text.rb +95 -95
  48. data/app/policies/glib/application_policy.rb +161 -161
  49. data/app/validators/email_typo_validator.rb +38 -38
  50. data/app/validators/email_validator.rb +7 -7
  51. data/app/validators/url_validator.rb +20 -20
  52. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
  53. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  54. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  55. data/app/views/json_ui/garage/actions/_panels.json.jbuilder +18 -18
  56. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  57. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  58. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  59. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +24 -24
  60. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  61. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  62. data/app/views/json_ui/garage/actions/index.json.jbuilder +24 -24
  63. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +6 -6
  64. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  65. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  66. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
  67. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
  68. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
  69. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +24 -22
  70. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  71. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +32 -37
  72. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
  73. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  74. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
  75. data/app/views/json_ui/garage/forms/index.json.jbuilder +113 -113
  76. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +39 -39
  77. data/app/views/json_ui/garage/forms/online_participant1.json.jbuilder +25 -25
  78. data/app/views/json_ui/garage/forms/online_participant2.json.jbuilder +25 -25
  79. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +81 -81
  80. data/app/views/json_ui/garage/forms/ratings.json.jbuilder +49 -49
  81. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  82. data/app/views/json_ui/garage/forms/selects.json.jbuilder +91 -84
  83. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +130 -130
  84. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +35 -35
  85. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  86. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +26 -26
  87. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  88. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  89. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +81 -81
  90. data/app/views/json_ui/garage/forms/timers.json.jbuilder +120 -120
  91. data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
  92. data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
  93. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  94. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
  95. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  96. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  97. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
  98. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
  99. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  100. data/app/views/json_ui/garage/lists/index.json.jbuilder +38 -38
  101. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  102. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  103. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -114
  104. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  105. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  106. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  107. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  108. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  109. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  110. data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
  111. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  112. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
  113. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  114. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  115. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  116. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +31 -31
  117. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  118. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  119. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
  120. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  121. data/app/views/json_ui/garage/panels/flow.json.jbuilder +59 -59
  122. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
  123. data/app/views/json_ui/garage/panels/index.json.jbuilder +138 -134
  124. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  125. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  126. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  127. data/app/views/json_ui/garage/panels/ul.json.jbuilder +33 -0
  128. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
  129. data/app/views/json_ui/garage/panels/web.json.jbuilder +15 -15
  130. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  131. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  132. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  133. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  134. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  135. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  136. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  137. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  138. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  139. data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
  140. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  141. data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
  142. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  143. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
  144. data/app/views/json_ui/garage/views/controls.json.jbuilder +37 -37
  145. data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
  146. data/app/views/json_ui/garage/views/icons.json.jbuilder +15 -14
  147. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  148. data/app/views/json_ui/garage/views/index.json.jbuilder +67 -67
  149. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  150. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  151. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  152. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  153. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  154. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  155. data/app/views/json_ui/garage/views/texts.json.jbuilder +35 -35
  156. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  157. data/config/routes.rb +7 -7
  158. data/lib/generators/glib/install_generator.rb +24 -24
  159. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  160. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  161. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  162. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  163. data/lib/generators/templates/database.yml +107 -107
  164. data/lib/generators/templates/dynamic_text.rb +2 -2
  165. data/lib/glib-web.rb +9 -9
  166. data/lib/glib/crypt/utils.rb +26 -26
  167. data/lib/glib/dynamic_text/config.rb +21 -21
  168. data/lib/glib/engine.rb +7 -7
  169. data/lib/glib/json_crawler.rb +11 -11
  170. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  171. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  172. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  173. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  174. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  175. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  176. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  177. data/lib/glib/json_crawler/coverage.rb +20 -20
  178. data/lib/glib/json_crawler/http.rb +120 -120
  179. data/lib/glib/json_crawler/router.rb +98 -98
  180. data/lib/glib/mailer_tester.rb +36 -36
  181. data/lib/glib/test_helpers.rb +52 -52
  182. data/lib/glib/value.rb +7 -7
  183. data/lib/glib/version.rb +5 -5
  184. data/lib/tasks/db.rake +95 -95
  185. metadata +3 -3
@@ -1,38 +1,38 @@
1
- class EmailTypoValidator < ActiveModel::EachValidator
2
- COMMON_FORMAT = {
3
- '\.\.' => '.',
4
- '\.con\z' => '.com',
5
- '\.coj\z' => '.com',
6
- '\.vom\z' => '.com',
7
- '\.xom\z' => '.com',
8
- '\.com[a-z]\z' => '.com',
9
- '\.con\.' => '.com.',
10
- '\.orf\z' => '.org',
11
- '\.orf\.' => '.org.',
12
- '@hitmail\.' => '@hotmail.',
13
- '@htomail\.' => '@hotmail.',
14
- '@hotnail\.' => '@hotmail.',
15
- '@hotmil\.' => '@hotmail.',
16
- '@hotmal\.' => '@hotmail.',
17
- '@hoymail\.' => '@hotmail.',
18
- '@hormail\.' => '@hotmail.',
19
- '@hotmsil\.' => '@hotmail.',
20
- '@gail\.' => '@gmail.',
21
- '@gnail\.' => '@gmail.',
22
- '@gmil\.' => '@gmail.',
23
- '@gmal\.' => '@gmail.',
24
- '@gmai\.' => '@gmail.',
25
- '@yahho\.' => '@yahoo.',
26
- '@yaho\.' => '@yahoo.',
27
- }
28
-
29
- def validate_each(record, attribute, value)
30
- COMMON_FORMAT.keys.each do |format_key|
31
- regex = Regexp.new(format_key)
32
- if match = regex.match(value)
33
- record.errors.add(attribute, "Invalid, replace #{match[0]} with #{COMMON_FORMAT[format_key]}")
34
- break
35
- end
36
- end
37
- end
38
- end
1
+ class EmailTypoValidator < ActiveModel::EachValidator
2
+ COMMON_FORMAT = {
3
+ '\.\.' => '.',
4
+ '\.con\z' => '.com',
5
+ '\.coj\z' => '.com',
6
+ '\.vom\z' => '.com',
7
+ '\.xom\z' => '.com',
8
+ '\.com[a-z]\z' => '.com',
9
+ '\.con\.' => '.com.',
10
+ '\.orf\z' => '.org',
11
+ '\.orf\.' => '.org.',
12
+ '@hitmail\.' => '@hotmail.',
13
+ '@htomail\.' => '@hotmail.',
14
+ '@hotnail\.' => '@hotmail.',
15
+ '@hotmil\.' => '@hotmail.',
16
+ '@hotmal\.' => '@hotmail.',
17
+ '@hoymail\.' => '@hotmail.',
18
+ '@hormail\.' => '@hotmail.',
19
+ '@hotmsil\.' => '@hotmail.',
20
+ '@gail\.' => '@gmail.',
21
+ '@gnail\.' => '@gmail.',
22
+ '@gmil\.' => '@gmail.',
23
+ '@gmal\.' => '@gmail.',
24
+ '@gmai\.' => '@gmail.',
25
+ '@yahho\.' => '@yahoo.',
26
+ '@yaho\.' => '@yahoo.',
27
+ }
28
+
29
+ def validate_each(record, attribute, value)
30
+ COMMON_FORMAT.keys.each do |format_key|
31
+ regex = Regexp.new(format_key)
32
+ if match = regex.match(value)
33
+ record.errors.add(attribute, "Invalid, replace #{match[0]} with #{COMMON_FORMAT[format_key]}")
34
+ break
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,7 +1,7 @@
1
- class EmailValidator < ActiveModel::EachValidator
2
- def validate_each(record, attribute, value)
3
- unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
4
- record.errors.add(attribute, :invalid)
5
- end
6
- end
7
- end
1
+ class EmailValidator < ActiveModel::EachValidator
2
+ def validate_each(record, attribute, value)
3
+ unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
4
+ record.errors.add(attribute, :invalid)
5
+ end
6
+ end
7
+ end
@@ -1,20 +1,20 @@
1
- class UrlValidator < ActiveModel::EachValidator
2
- def validate_each(record, attribute, value)
3
- schemes = ['https', 'http']
4
-
5
- begin
6
- uri = URI.parse(value)
7
- host = uri && uri.host
8
- scheme = uri && uri.scheme
9
-
10
- valid_scheme = host && scheme && schemes.include?(scheme)
11
- valid_raw_url = scheme && value.match?(URI::regexp([scheme]))
12
-
13
- unless valid_raw_url && valid_scheme
14
- record.errors.add(attribute, :invalid)
15
- end
16
- rescue URI::InvalidURIError
17
- record.errors.add(attribute, :invalid)
18
- end
19
- end
20
- end
1
+ class UrlValidator < ActiveModel::EachValidator
2
+ def validate_each(record, attribute, value)
3
+ schemes = ['https', 'http']
4
+
5
+ begin
6
+ uri = URI.parse(value)
7
+ host = uri && uri.host
8
+ scheme = uri && uri.scheme
9
+
10
+ valid_scheme = host && scheme && schemes.include?(scheme)
11
+ valid_raw_url = scheme && value.match?(URI::regexp([scheme]))
12
+
13
+ unless valid_raw_url && valid_scheme
14
+ record.errors.add(attribute, :invalid)
15
+ end
16
+ rescue URI::InvalidURIError
17
+ record.errors.add(attribute, :invalid)
18
+ end
19
+ end
20
+ end
@@ -1,70 +1,70 @@
1
-
2
- if local_assigns[:top_nav] || json_ui_app_is_web?
3
- page.leftDrawer content: ->(drawer) do
4
- drawer.header childViews: ->(header) do
5
- header.button text: 'App', styleClasses: ['link', 'logo'], onClick: ->(action) do
6
- action.windows_open url: root_url
7
- end
8
- end
9
-
10
- drawer.rows builder: ->(menu) do
11
-
12
- menu.button text: 'Pages', onClick: ->(action) do
13
- action.windows_open url: json_ui_garage_url(path: 'pages/index')
14
- end
15
-
16
- menu.button text: 'Panels', onClick: ->(action) do
17
- action.windows_open url: json_ui_garage_url(path: 'panels/index')
18
- end
19
-
20
- menu.button text: 'Lists', onClick: ->(action) do
21
- action.windows_open url: json_ui_garage_url(path: 'lists/index')
22
- end
23
-
24
- menu.button text: 'Forms', onClick: ->(action) do
25
- action.windows_open url: json_ui_garage_url(path: 'forms/index')
26
- end
27
-
28
- menu.button text: 'Views', onClick: ->(action) do
29
- action.windows_open url: json_ui_garage_url(path: 'views/index')
30
- end
31
-
32
- menu.button text: 'Actions', onClick: ->(action) do
33
- action.windows_open url: json_ui_garage_url(path: 'actions/index')
34
- end
35
-
36
- menu.button text: 'Tables (Web Only)', onClick: ->(action) do
37
- action.windows_open url: json_ui_garage_url(path: 'tables/index')
38
- end
39
-
40
- menu.button text: 'Services', onClick: ->(action) do
41
- action.windows_open url: json_ui_garage_url(path: 'services/index')
42
- end
43
-
44
- menu.divider
45
- menu.label text: 'Misc Menu'
46
-
47
- menu.button icon: 'notifications', text: 'Notifications', onClick: ->(action) do
48
- action.windows_open url: json_ui_garage_url(path: 'notifications/index')
49
- end
50
-
51
- menu.button icon: 'list', text: 'UI Elements', onClick: ->(action) do
52
- action.windows_open url: json_ui_garage_url
53
- end
54
-
55
- menu.button icon: 'refresh', text: 'Reload', onClick: ->(action) do
56
- action.windows_reload
57
- end
58
-
59
- menu.button icon: { name: 'zoom_in', badge: '!' }, text: 'Diagnostics', onClick: ->(action) do
60
- action.dialogs_alert message: %{
61
- Bundle ID: #{json_ui_app_bundle_id || '<unknown>'}
62
- App Version: #{json_ui_app_build_version || '<unknown>'}
63
- Device OS: #{json_ui_app_device_os}
64
- }
65
- end
66
-
67
- end
68
- end
69
-
70
- end
1
+
2
+ if local_assigns[:top_nav] || json_ui_app_is_web?
3
+ page.leftDrawer content: ->(drawer) do
4
+ drawer.header childViews: ->(header) do
5
+ header.button text: 'App', styleClasses: ['link', 'logo'], onClick: ->(action) do
6
+ action.windows_open url: root_url
7
+ end
8
+ end
9
+
10
+ drawer.rows builder: ->(menu) do
11
+
12
+ menu.button text: 'Pages', onClick: ->(action) do
13
+ action.windows_open url: json_ui_garage_url(path: 'pages/index')
14
+ end
15
+
16
+ menu.button text: 'Panels', onClick: ->(action) do
17
+ action.windows_open url: json_ui_garage_url(path: 'panels/index')
18
+ end
19
+
20
+ menu.button text: 'Lists', onClick: ->(action) do
21
+ action.windows_open url: json_ui_garage_url(path: 'lists/index')
22
+ end
23
+
24
+ menu.button text: 'Forms', onClick: ->(action) do
25
+ action.windows_open url: json_ui_garage_url(path: 'forms/index')
26
+ end
27
+
28
+ menu.button text: 'Views', onClick: ->(action) do
29
+ action.windows_open url: json_ui_garage_url(path: 'views/index')
30
+ end
31
+
32
+ menu.button text: 'Actions', onClick: ->(action) do
33
+ action.windows_open url: json_ui_garage_url(path: 'actions/index')
34
+ end
35
+
36
+ menu.button text: 'Tables (Web Only)', onClick: ->(action) do
37
+ action.windows_open url: json_ui_garage_url(path: 'tables/index')
38
+ end
39
+
40
+ menu.button text: 'Services', onClick: ->(action) do
41
+ action.windows_open url: json_ui_garage_url(path: 'services/index')
42
+ end
43
+
44
+ menu.divider
45
+ menu.label text: 'Misc Menu'
46
+
47
+ menu.button icon: 'notifications', text: 'Notifications', onClick: ->(action) do
48
+ action.windows_open url: json_ui_garage_url(path: 'notifications/index')
49
+ end
50
+
51
+ menu.button icon: 'list', text: 'UI Elements', onClick: ->(action) do
52
+ action.windows_open url: json_ui_garage_url
53
+ end
54
+
55
+ menu.button icon: 'refresh', text: 'Reload', onClick: ->(action) do
56
+ action.windows_reload
57
+ end
58
+
59
+ menu.button icon: { name: 'zoom_in', badge: '!' }, text: 'Diagnostics', onClick: ->(action) do
60
+ action.dialogs_alert message: %{
61
+ Bundle ID: #{json_ui_app_bundle_id || '<unknown>'}
62
+ App Version: #{json_ui_app_build_version || '<unknown>'}
63
+ Device OS: #{json_ui_app_device_os}
64
+ }
65
+ end
66
+
67
+ end
68
+ end
69
+
70
+ end
@@ -1,104 +1,104 @@
1
-
2
- section.header padding: glib_json_padding_list, childViews: ->(header) do
3
- header.h3 text: 'Dialogs'
4
- end
5
-
6
- section.rows builder: ->(template) do
7
- template.thumbnail title: 'dialogs/alert', onClick: ->(action) do
8
- action.dialogs_alert message: 'This is an alert dialog', onClose: ->(action) do
9
- action.snackbars_alert message: 'Closed'
10
- end
11
- end
12
-
13
- # markdown = '# h1 Heading' + "\n" +
14
- # '## h2 Heading' + "\n" +
15
- # '### h3 Heading' + "\n" +
16
- # '#### h4 Heading' + "\n" +
17
- # '##### h5 Heading' + "\n" +
18
- # '###### h6 Heading' + "\n" +
19
- # "\n" +
20
- # '## Emphasis' + "\n" +
21
- # "\n" +
22
- # '**This is bold text**' + "\n" +
23
- # "\n" +
24
- # '__This is bold text__' + "\n" +
25
- # "\n" +
26
- # '*This is italic text*' + "\n" +
27
- # "\n" +
28
- # '_This is italic text_' + "\n" +
29
- # "\n" +
30
- # '~~Strikethrough~~' + "\n"
31
- # template.thumbnail title: 'dialogs/alert with markdown', onClick: ->(action) do
32
- # action.dialogs_alert message: markdown, message_format: 'markdown'
33
- # end
34
-
35
- # template.thumbnail title: 'dialogs/confirm (Experimental)', onClick: ->(action) do
36
- # action.dialogs_confirm message: 'This is a confirm dialog', onCancel: ->(action) do
37
- # action.snackbars_alert message: 'Canceled'
38
- # end, onConfirm: ->(action) do
39
- # action.snackbars_alert message: 'Confirmed'
40
- # end
41
- # end
42
-
43
- # TODO: Deprecate
44
- template.thumbnail title: 'dialogs/option (Deprecated)', onClick: ->(action) do
45
- # TODO: Rename to `dialogs/menu`
46
- action.dialogs_options message: 'Select one', buttons: ->(menu) do
47
- menu.button text: 'Option1', onClick: ->(action) do
48
- action.dialogs_alert message: 'Option 1'
49
- end
50
- menu.button text: 'Option2', onClick: ->(action) do
51
- action.dialogs_alert message: 'Option 2'
52
- end
53
- menu.button text: 'Cancel'
54
- end
55
- end
56
-
57
- markdown = '## Emphasis' + "\n" +
58
- '**This is bold text**' + "\n" +
59
- "\n" +
60
- '*This is italic text*' + "\n" +
61
- "\n" +
62
- '~~Strikethrough~~' + "\n"
63
- template.thumbnail title: 'dialogs/show', onClick: ->(action) do
64
- action.dialogs_show content: ->(dialog) do
65
- dialog.body padding: glib_json_padding_body, childViews: ->(body) do
66
- body.markdown text: markdown
67
-
68
- body.panels_split width: 'matchParent', content: ->(split) do
69
- split.right childViews: ->(right) do
70
- right.button text: 'OK', onClick: ->(subaction) { subaction.dialogs_close }
71
- end
72
- end
73
- end
74
- end
75
- end
76
-
77
- template.thumbnail title: 'dialogs/open', onClick: ->(action) do
78
- action.dialogs_open url: json_ui_garage_url(path: 'forms/basic', mode: 'dialog')
79
- end
80
-
81
- template.thumbnail title: 'dialogs/oauth', onClick: ->(action) do
82
- if respond_to?(:user_facebook_omniauth_authorize_url)
83
- provider = {
84
- name: 'facebook',
85
- webRequestUrl: user_facebook_omniauth_authorize_url(format: nil, _render: nil),
86
- requestUrl: user_facebook_omniauth_authorize_url(format: nil),
87
- clientId: Devise.omniauth_configs[:facebook].strategy[:client_id],
88
- permissions: Devise.omniauth_configs[:facebook].strategy[:scope],
89
- redirectUrl: user_facebook_omniauth_callback_url(format: nil)
90
- }
91
- action.dialogs_oauth provider: provider, providerParamName: 'session[oauth_provider]', callbackUrlParamName: 'session[[oauth_callback_url]', onSuccess: ->(subaction) do
92
- subaction.http_post url: json_ui_garage_url(path: 'actions/dialogs_oauth_post'), formData: {
93
- authenticity_token: form_authenticity_token
94
- }
95
- end
96
- else
97
- action.dialogs_alert message: 'To enable this, set up omniauth using devise'
98
- # E.g.
99
- # Add `devise :omniauthable, omniauth_providers: %i[facebook]` to user.rb
100
- # Add `gem 'omniauth-facebook'` to Gemfile
101
- # Add `config.omniauth :facebook` to devise.rb
102
- end
103
- end
104
- end
1
+
2
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
3
+ header.h3 text: 'Dialogs'
4
+ end
5
+
6
+ section.rows builder: ->(template) do
7
+ template.thumbnail title: 'dialogs/alert', onClick: ->(action) do
8
+ action.dialogs_alert message: 'This is an alert dialog', onClose: ->(action) do
9
+ action.snackbars_alert message: 'Closed'
10
+ end
11
+ end
12
+
13
+ # markdown = '# h1 Heading' + "\n" +
14
+ # '## h2 Heading' + "\n" +
15
+ # '### h3 Heading' + "\n" +
16
+ # '#### h4 Heading' + "\n" +
17
+ # '##### h5 Heading' + "\n" +
18
+ # '###### h6 Heading' + "\n" +
19
+ # "\n" +
20
+ # '## Emphasis' + "\n" +
21
+ # "\n" +
22
+ # '**This is bold text**' + "\n" +
23
+ # "\n" +
24
+ # '__This is bold text__' + "\n" +
25
+ # "\n" +
26
+ # '*This is italic text*' + "\n" +
27
+ # "\n" +
28
+ # '_This is italic text_' + "\n" +
29
+ # "\n" +
30
+ # '~~Strikethrough~~' + "\n"
31
+ # template.thumbnail title: 'dialogs/alert with markdown', onClick: ->(action) do
32
+ # action.dialogs_alert message: markdown, message_format: 'markdown'
33
+ # end
34
+
35
+ # template.thumbnail title: 'dialogs/confirm (Experimental)', onClick: ->(action) do
36
+ # action.dialogs_confirm message: 'This is a confirm dialog', onCancel: ->(action) do
37
+ # action.snackbars_alert message: 'Canceled'
38
+ # end, onConfirm: ->(action) do
39
+ # action.snackbars_alert message: 'Confirmed'
40
+ # end
41
+ # end
42
+
43
+ # TODO: Deprecate
44
+ template.thumbnail title: 'dialogs/option (Deprecated)', onClick: ->(action) do
45
+ # TODO: Rename to `dialogs/menu`
46
+ action.dialogs_options message: 'Select one', buttons: ->(menu) do
47
+ menu.button text: 'Option1', onClick: ->(action) do
48
+ action.dialogs_alert message: 'Option 1'
49
+ end
50
+ menu.button text: 'Option2', onClick: ->(action) do
51
+ action.dialogs_alert message: 'Option 2'
52
+ end
53
+ menu.button text: 'Cancel'
54
+ end
55
+ end
56
+
57
+ markdown = '## Emphasis' + "\n" +
58
+ '**This is bold text**' + "\n" +
59
+ "\n" +
60
+ '*This is italic text*' + "\n" +
61
+ "\n" +
62
+ '~~Strikethrough~~' + "\n"
63
+ template.thumbnail title: 'dialogs/show', onClick: ->(action) do
64
+ action.dialogs_show content: ->(dialog) do
65
+ dialog.body padding: glib_json_padding_body, childViews: ->(body) do
66
+ body.markdown text: markdown
67
+
68
+ body.panels_split width: 'matchParent', content: ->(split) do
69
+ split.right childViews: ->(right) do
70
+ right.button text: 'OK', onClick: ->(subaction) { subaction.dialogs_close }
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ template.thumbnail title: 'dialogs/open', onClick: ->(action) do
78
+ action.dialogs_open url: json_ui_garage_url(path: 'forms/basic', mode: 'dialog')
79
+ end
80
+
81
+ template.thumbnail title: 'dialogs/oauth', onClick: ->(action) do
82
+ if respond_to?(:user_facebook_omniauth_authorize_url)
83
+ provider = {
84
+ name: 'facebook',
85
+ webRequestUrl: user_facebook_omniauth_authorize_url(format: nil, _render: nil),
86
+ requestUrl: user_facebook_omniauth_authorize_url(format: nil),
87
+ clientId: Devise.omniauth_configs[:facebook].strategy[:client_id],
88
+ permissions: Devise.omniauth_configs[:facebook].strategy[:scope],
89
+ redirectUrl: user_facebook_omniauth_callback_url(format: nil)
90
+ }
91
+ action.dialogs_oauth provider: provider, providerParamName: 'session[oauth_provider]', callbackUrlParamName: 'session[[oauth_callback_url]', onSuccess: ->(subaction) do
92
+ subaction.http_post url: json_ui_garage_url(path: 'actions/dialogs_oauth_post'), formData: {
93
+ authenticity_token: form_authenticity_token
94
+ }
95
+ end
96
+ else
97
+ action.dialogs_alert message: 'To enable this, set up omniauth using devise'
98
+ # E.g.
99
+ # Add `devise :omniauthable, omniauth_providers: %i[facebook]` to user.rb
100
+ # Add `gem 'omniauth-facebook'` to Gemfile
101
+ # Add `config.omniauth :facebook` to devise.rb
102
+ end
103
+ end
104
+ end