glib-web 4.9.0 → 4.10.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +0 -0
  3. data/app/controllers/concerns/glib/json/traversal.rb +4 -2
  4. data/app/controllers/glib/errors_controller.rb +7 -0
  5. data/app/helpers/glib/app_feature_support_helper.rb +0 -0
  6. data/app/helpers/glib/dynamic_texts_helper.rb +0 -0
  7. data/app/helpers/glib/json_ui/abstract_builder.rb +1 -1
  8. data/app/helpers/glib/json_ui/action_builder/sheets.rb +0 -0
  9. data/app/helpers/glib/json_ui/analytics_helper.rb +0 -0
  10. data/app/helpers/glib/json_ui/generic_builders.rb +0 -0
  11. data/app/helpers/glib/json_ui/view_builder/panels.rb +8 -7
  12. data/app/models/glib/active_storage/attachment.rb +0 -0
  13. data/app/models/glib/active_storage/blob.rb +0 -0
  14. data/app/models/glib/dynamic_text_record.rb +0 -0
  15. data/app/models/glib/text.rb +0 -0
  16. data/app/validators/email_typo_validator.rb +0 -0
  17. data/app/validators/email_validator.rb +0 -0
  18. data/app/validators/url_validator.rb +0 -0
  19. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +0 -0
  20. data/app/views/json_ui/garage/forms/_partial_update_execute.json.jbuilder +1 -1
  21. data/app/views/json_ui/garage/forms/bulk_edit_post.json.jbuilder +0 -0
  22. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +3 -1
  23. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +0 -0
  24. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +0 -0
  25. data/app/views/json_ui/garage/forms/partial_update.json.jbuilder +3 -0
  26. data/app/views/json_ui/garage/forms/partial_update_response.json.jbuilder +4 -0
  27. data/app/views/json_ui/garage/forms/selects.json.jbuilder +21 -0
  28. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +79 -9
  29. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +0 -0
  30. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +0 -0
  31. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +0 -0
  32. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +0 -0
  33. data/app/views/json_ui/garage/forms/update_options.json.jbuilder +13 -0
  34. data/app/views/json_ui/garage/home/blank.json.jbuilder +0 -0
  35. data/app/views/json_ui/garage/home/slow.json.jbuilder +0 -0
  36. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +0 -0
  37. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +0 -0
  38. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +0 -0
  39. data/app/views/json_ui/garage/lists/fab.json.jbuilder +0 -0
  40. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +0 -0
  41. data/app/views/json_ui/garage/pages/custom_style_class.json.jbuilder +0 -0
  42. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +0 -0
  43. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +0 -0
  44. data/app/views/json_ui/garage/pages/layout.json.jbuilder +0 -0
  45. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +0 -0
  46. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +0 -0
  47. data/app/views/json_ui/garage/pages/redirect_onload.json.jbuilder +0 -0
  48. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +0 -0
  49. data/app/views/json_ui/garage/panels/card.json.jbuilder +0 -0
  50. data/app/views/json_ui/garage/panels/custom.json.jbuilder +0 -0
  51. data/app/views/json_ui/garage/panels/flow.json.jbuilder +22 -14
  52. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +0 -0
  53. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +0 -0
  54. data/app/views/json_ui/garage/services/image.json.jbuilder +0 -0
  55. data/app/views/json_ui/garage/services/index.json.jbuilder +0 -0
  56. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +0 -0
  57. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +0 -0
  58. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +0 -0
  59. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +0 -0
  60. data/app/views/json_ui/garage/tables/index.json.jbuilder +0 -0
  61. data/app/views/json_ui/garage/tables/panel_content.json.jbuilder +25 -57
  62. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +0 -0
  63. data/app/views/json_ui/garage/views/controls.json.jbuilder +1 -1
  64. data/app/views/json_ui/garage/views/map_data.json.jbuilder +0 -0
  65. data/app/views/json_ui/garage/views/multimedia.json.jbuilder +0 -0
  66. data/app/views/layouts/json_ui/no_custom.html.erb +0 -0
  67. data/config/routes.rb +1 -0
  68. data/lib/generators/glib/install_generator.rb +0 -0
  69. data/lib/generators/templates/20191017062519_create_texts.rb +0 -0
  70. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +0 -0
  71. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +0 -0
  72. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +0 -0
  73. data/lib/generators/templates/database.yml +0 -0
  74. data/lib/generators/templates/dynamic_text.rb +0 -0
  75. data/lib/glib/dynamic_text/config.rb +0 -0
  76. data/lib/glib/dynamic_text.rb +0 -0
  77. data/lib/glib/json_crawler/action_crawler.rb +0 -0
  78. data/lib/glib/json_crawler/action_crawlers/action_http.rb +0 -0
  79. data/lib/glib/json_crawler/action_crawlers/dialogs_alert.rb +0 -0
  80. data/lib/glib/json_crawler/action_crawlers/menu.rb +0 -0
  81. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +0 -0
  82. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +0 -0
  83. data/lib/glib/json_crawler/coverage.rb +0 -0
  84. data/lib/glib/value.rb +0 -0
  85. data/lib/glib/version.rb +0 -0
  86. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4bc560f6e7a39207eccdf57d1824992450c6ff9032cbb1598164c5a1fceac013
4
- data.tar.gz: 33fc04d6d58545ed3951d942ed8d5002a772bc164442ba73bb4f27c409342fe1
3
+ metadata.gz: ddb48299bbf1685aed5b8fd994ca3ffc8eba555e097cc77dbd38cb7b48707e6c
4
+ data.tar.gz: 8569bc0e88d99f4dae7e1d2be733168e2ee7f0acd499e565a5fef0cca2a50ca9
5
5
  SHA512:
6
- metadata.gz: 5e78cc53ddcde671449504a62d1ccb33b746df252f1807d357a8665b764c4330de15a394eee3baf0e715b96eba81ad00a7dcc98c0e15d6da73d2e7e8e050ae05
7
- data.tar.gz: c4352064bfb0d6d402f43b4d128c24e215406700bd79e5b63e584b30a3888b1e078271cffb7a886c4a08467bfc9790455a19f47ca0d12240e10f059cc2989549
6
+ metadata.gz: 328b8d4f45b8cd8a0e99029f5edfe0e20469e860a27282cf26a7173a7538b8bfb2310ba8b877c53ac05ac963c395f32767c69e25f568a7c67db262ea58ccc144
7
+ data.tar.gz: 5f1b8c282c4c82aa77474304f584e22426188b04135af2387da8ee0099cc2eef85e527333966d439fa511aa14ef5a32d6bf3301d040ed9eb38e9f79066fe4991
@@ -99,11 +99,13 @@ module Glib::Json::Traversal
99
99
  end
100
100
 
101
101
  def current_deferred_actions
102
- @deferred_actions.last
102
+ # Add "|| []" because it broke on hz
103
+ @deferred_actions.last || []
103
104
  end
104
105
 
105
106
  def current_component_registry
106
- @component_registries.last
107
+ # Add "|| {}" because it broke on hz
108
+ @component_registries.last || {}
107
109
  end
108
110
 
109
111
  def defer_action(action_crawler, target_id)
@@ -0,0 +1,7 @@
1
+ module Glib
2
+ class ErrorsController < ::ActionController::Base
3
+ def create
4
+ Rollbar.error(params[:stack], params[:message])
5
+ end
6
+ end
7
+ end
File without changes
File without changes
@@ -314,7 +314,7 @@ module Glib
314
314
  array arrayName
315
315
 
316
316
  define_method(singletonName) do |value|
317
- json.set! arrayName, [value]
317
+ json.set! arrayName, value.to_s.split(' ').compact_blank
318
318
  end
319
319
  end
320
320
 
File without changes
File without changes
File without changes
@@ -494,6 +494,14 @@ class Glib::JsonUi::ViewBuilder
494
494
 
495
495
  class Flow < View
496
496
  hash :innerPadding, optional: [:top, :right, :bottom, :left, :x, :y]
497
+
498
+ hash :xxl, optional: [:gap, :padding]
499
+ hash :xl, optional: [:gap, :padding]
500
+ hash :lg, optional: [:gap, :padding]
501
+ hash :md, optional: [:gap, :padding]
502
+ hash :sm, optional: [:gap, :padding]
503
+ hash :xs, optional: [:gap, :padding]
504
+
497
505
  views :childViews
498
506
 
499
507
  required :innerPadding
@@ -564,13 +572,6 @@ class Glib::JsonUi::ViewBuilder
564
572
  # end
565
573
  end
566
574
 
567
- class Pagination < View
568
- int :length
569
- int :value
570
- action :onChange
571
- string :paramNameForFieldName
572
- end
573
-
574
575
  module ModelPanel
575
576
  attr_reader :model_name # See Panels::Form.field_name
576
577
  attr_reader :assoc_order_index
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,5 +1,5 @@
1
1
  name = params[:name]
2
- action.components_replace targetId: 'greeting', views: ->(update) do
2
+ action.components_replace targetId: 'greeting', newView: ->(update) do
3
3
  update.panels_vertical childViews: ->(vertical) do
4
4
  name = params[:name]
5
5
  vertical.fields_hidden name: 'name', value: name
@@ -35,7 +35,9 @@ page.scroll childViews: ->(scroll) do
35
35
  form.spacer height: 20
36
36
  form.h2 text: 'Check without group'
37
37
  form.spacer height: 4
38
- form.fields_check name: 'user[driver]', label: 'Do you have driver license?'
38
+ form.fields_check name: 'user[choice][]', label: 'Choice 1', checkValue: 'choice_1'
39
+ form.fields_check name: 'user[choice][]', label: 'Choice 2', checkValue: 'choice_2'
40
+
39
41
 
40
42
  form.spacer height: 20
41
43
  form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
@@ -38,6 +38,9 @@ page.scroll childViews: ->(scroll) do
38
38
  vertical.button text: 'Update', onClick: ->(action) do
39
39
  action.http_get url: json_ui_garage_url(path: 'forms/partial_update_response'), formData: { name: 'John' }, historyUrl: json_ui_garage_url(path: 'forms/partial_update', name: 'John')
40
40
  end
41
+ vertical.button text: 'Update with retry', onClick: ->(action) do
42
+ action.http_get url: json_ui_garage_url(path: 'forms/partial_update_response', error: true)
43
+ end
41
44
  vertical.spacer height: 18
42
45
  end
43
46
 
@@ -1,3 +1,7 @@
1
+ if params[:error].present?
2
+ abort 'Sorry, something went wrong.'
3
+ end
4
+
1
5
  json_ui_response_with_view json do |action|
2
6
  render "#{@path_prefix}/forms/partial_update_execute", action: action
3
7
  end
@@ -129,6 +129,27 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
129
129
  value: ['ja', 'de'],
130
130
  multiple: true
131
131
 
132
+ form.spacer height: 6
133
+ form.label text: 'Options from http/get'
134
+ form.spacer height: 6
135
+
136
+ form.fields_select \
137
+ name: 'user[animal_or_plant]',
138
+ width: 'matchParent',
139
+ label: 'Animal or Plant',
140
+ options: [{ text: 'Animal', value: 'animal' }, { text: 'Plant', value: 'plant' }],
141
+ value: 'animal',
142
+ onChangeAndLoad: ->(action) do
143
+ action.http_get url: json_ui_garage_url(path: 'forms/update_options')
144
+ end
145
+
146
+ form.fields_select \
147
+ id: 'options',
148
+ name: 'user[choose_animal_or_plant]',
149
+ width: 'matchParent',
150
+ label: 'Choose',
151
+ options: []
152
+
132
153
  form.spacer height: 20
133
154
  form.h2 text: 'Select fields with empty values'
134
155
  form.spacer height: 6
@@ -93,6 +93,72 @@ page.form \
93
93
  form.spacer height: 10
94
94
  form.label id: 'label22', text: 'Is Checked22'
95
95
 
96
+ form.spacer height: 20
97
+ form.h1 text: 'Radio inside panels'
98
+
99
+ form.fields_radioGroup \
100
+ name: 'user[radio9]',
101
+ value: 'no',
102
+ width: 'matchParent',
103
+ onChangeAndLoad: ->(action) do
104
+ action.runMultiple childActions: ->(saction) do
105
+ saction.logics_set targetId: 'radiolabel1', conditionalData: {
106
+ displayed: {
107
+ "==": [
108
+ {
109
+ "var": 'user[radio9]'
110
+ },
111
+ 'yes'
112
+ ]
113
+ }
114
+ }
115
+ saction.logics_set targetId: 'radiolabel2', conditionalData: {
116
+ displayed: {
117
+ "==": [
118
+ {
119
+ "var": 'user[radio9]'
120
+ },
121
+ 'no'
122
+ ]
123
+ }
124
+ }
125
+ end
126
+ end,
127
+ childViews: ->(group) do
128
+ group.panels_responsive width: 'matchParent', childViews: ->(res) do
129
+
130
+ res.panels_column width: 'matchParent', lg: { cols: 4 }, childViews: ->(column) do
131
+ column.fields_radio\
132
+ width: 350,
133
+ value: 'yes', label: 'Yes', icon: { template: 'featured', name: 'edit', size: 40, color: '#d1d1d1' },
134
+ onClick: ->(action) do
135
+ action.windows_openWeb url: 'http://www.google.com'
136
+ end
137
+ end
138
+ res.panels_column width: 'matchParent', lg: { cols: 4 }, childViews: ->(column) do
139
+ column.fields_radio\
140
+ width: 350,
141
+ value: 'no', label: 'No',
142
+ image: { template: 'featured', url: 'https://cdn.pixabay.com/photo/2020/08/05/13/12/eco-5465432_1280.png', width: 80, height: 80 },
143
+ onClick: ->(action) do
144
+ action.windows_openWeb url: 'http://www.google.com'
145
+ end
146
+ end
147
+ res.panels_column width: 'matchParent', lg: { cols: 4 }, childViews: ->(column) do
148
+ column.fields_radio\
149
+ value: 'idk', label: 'Not Sure',
150
+ image: { template: 'thumbnail', url: 'https://cdn.pixabay.com/photo/2020/08/05/13/12/eco-5465432_1280.png', width: 24, height: 24 }
151
+ column.fields_radio value: '', label: 'Empty'
152
+ end
153
+
154
+ end
155
+ end
156
+
157
+
158
+ form.spacer height: 10
159
+ form.label id: 'radiolabel1', text: 'Yes'
160
+ form.label id: 'radiolabel2', text: 'No'
161
+
96
162
  form.spacer height: 20
97
163
  form.h1 text: 'Radio Group'
98
164
  form.fields_radioGroup \
@@ -123,15 +189,19 @@ page.form \
123
189
  end
124
190
  end,
125
191
  childViews: ->(group) do
126
- group.fields_radio\
127
- value: 'show', label: 'Show', icon: { template: 'featured', name: 'edit', size: 40, color: '#d1d1d1' }
128
- group.fields_radio\
129
- value: 'hide', label: 'Hide',
130
- image: { template: 'featured', url: 'https://cdn.pixabay.com/photo/2020/08/05/13/12/eco-5465432_1280.png', width: 80, height: 80 }
131
- group.fields_radio\
132
- value: 'no', label: 'No',
133
- image: { template: 'thumbnail', url: 'https://cdn.pixabay.com/photo/2020/08/05/13/12/eco-5465432_1280.png', width: 24, height: 24 }
134
- group.fields_radio value: '', label: 'Empty'
192
+ # TODO: Fix a bug where if the fields_radio is wrapped in panels_horizontal,
193
+ # it cannot be selected.
194
+ group.panels_horizontal childViews: ->(horizontal) do
195
+ horizontal.fields_radio\
196
+ value: 'show', label: 'Show', icon: { template: 'featured', name: 'edit', size: 40, color: '#d1d1d1' }
197
+ horizontal.fields_radio\
198
+ value: 'hide', label: 'Hide',
199
+ image: { template: 'featured', url: 'https://cdn.pixabay.com/photo/2020/08/05/13/12/eco-5465432_1280.png', width: 80, height: 80 }
200
+ horizontal.fields_radio\
201
+ value: 'no', label: 'No',
202
+ image: { template: 'thumbnail', url: 'https://cdn.pixabay.com/photo/2020/08/05/13/12/eco-5465432_1280.png', width: 24, height: 24 }
203
+ horizontal.fields_radio value: '', label: 'Empty'
204
+ end
135
205
  end
136
206
  form.spacer height: 10
137
207
  form.label id: 'label6', text: 'Chosen'
@@ -0,0 +1,13 @@
1
+ sleep 0.5
2
+
3
+ value = params.require(:user).to_unsafe_h['animal_or_plant']
4
+ options = {
5
+ 'animal' => ['cat', 'dog', 'bird'].map { |v| { text: v.humanize, value: v } },
6
+ 'plant' => ['herb', 'rice', 'vegetable'].map { |v| { text: v.humanize, value: v } }
7
+ }[value]
8
+
9
+ json_ui_response_with_view json do |action|
10
+ action.components_set targetId: 'options', data: {
11
+ options: options
12
+ }
13
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -5,11 +5,17 @@ render "#{@path_prefix}/nav_menu", json: json, page: page
5
5
 
6
6
  page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
7
7
  scroll.h1 text: 'Show/hide'
8
- scroll.panels_flow id: 'flow1', width: 300, innerPadding: { top: 0 }, backgroundColor: '#b3bac2', childViews: ->(panel) do
9
- panel.button text: '1'
10
- panel.button text: '2'
11
- panel.button text: '3'
12
- end
8
+ scroll.panels_flow\
9
+ sm: { gap: { y: 4, x: 6 }, padding: { all: 16 } },
10
+ md: { gap: { y: 8, x: 8 }, padding: { x: 30, y: 30 } },
11
+ xs: { gap: { y: 2, x: 2 }, padding: { left: 10, bottom: 8 } },
12
+ lg: { gap: { all: 32 } },
13
+ id: 'flow1', width: 300,
14
+ innerPadding: { top: 0 }, backgroundColor: '#b3bac2', childViews: ->(panel) do
15
+ panel.button text: '1'
16
+ panel.button text: '2'
17
+ panel.button text: '3'
18
+ end
13
19
  scroll.button text: 'show', onClick: ->(action) do
14
20
  action.components_set targetId: 'flow1', data: { displayed: true }
15
21
  end
@@ -18,15 +24,17 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
18
24
  end
19
25
 
20
26
  scroll.h1 text: 'Basic'
21
- scroll.panels_flow width: 300, innerPadding: { top: 0 }, backgroundColor: '#b3bac2', childViews: ->(panel) do
22
- panel.button text: '1'
23
- panel.button text: '2'
24
- panel.button text: '3'
25
- panel.button text: '4'
26
- panel.button text: '5'
27
- panel.button text: '6'
28
- panel.button text: '7'
29
- end
27
+ scroll.panels_flow\
28
+ md: { padding: { all: 8 } },
29
+ width: 300, innerPadding: { top: 0 }, backgroundColor: '#b3bac2', childViews: ->(panel) do
30
+ panel.button text: '1'
31
+ panel.button text: '2'
32
+ panel.button text: '3'
33
+ panel.button text: '4'
34
+ panel.button text: '5'
35
+ panel.button text: '6'
36
+ panel.button text: '7'
37
+ end
30
38
 
31
39
  scroll.label text: "\n"
32
40
  scroll.h1 text: 'Spacers'
File without changes
@@ -3,66 +3,34 @@ json.title 'Tables'
3
3
  page = json_ui_page json
4
4
  render "#{@path_prefix}/nav_menu", json: json, page: page
5
5
 
6
- page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
7
- scroll.panels_form childViews: ->(form) do
8
- form.panels_table styleClass: 'table--grid', sections: [
9
- ->(section) do
10
- section.header cellViews: ->(header) do
11
- header.panels_horizontal childViews: ->(horizontal) do
12
- horizontal.fields_check name: 'check_all', checkValue: 1, value: 0, onChange: ->(action) do
13
- check_ids = (0..2).map { |i| "item_#{i}" }
14
- action.logics_set targetIds: check_ids, conditionalData: {
15
- value: { 'var': 'check_all' }
16
- }
17
- end
18
- end
19
- header.label text: 'Vertical'
20
- header.label text: 'Horizontal'
21
- header.label text: 'Unordered List'
22
- end
23
-
24
- items = [1, 2, 3]
25
- section.rows objects: items, builder: ->(row, item, index) do
26
- row.default colStyles: [{ width: 200, backgroundColor: '#eeeeee' }], cellViews: ->(cell) do
27
- cell.panels_horizontal childViews: ->(horizontal) do
28
- horizontal.fields_check \
29
- id: "item_#{index}",
30
- name: 'user[items][]',
31
- checkValue: index, # In the real-world, this is going to be the ID of a DB record.
32
- onChange: ->(action) do
33
- # TODO: Fix fields_check so it can support arrays
34
- action.logics_set targetId: 'submit_button', conditionalData: {
35
- text: {
36
- 'printf': [
37
- 'Submit {0} items',
38
- { 'countNonNull': [{ 'var': 'user[items]' }] }
39
- ]
40
- }
41
- }
42
- end
43
- end
6
+ page.table styleClass: 'table--grid', sections: [
7
+ ->(section) do
8
+ section.header cellViews: ->(header) do
9
+ header.label text: 'Vertical'
10
+ header.label text: 'Horizontal'
11
+ header.label text: 'Unordered List'
12
+ end
44
13
 
45
- cell.panels_vertical childViews: ->(vertical) do
46
- vertical.h3 text: "Title #{item}"
47
- vertical.spacer height: 4
48
- vertical.label text: "Subtitle #{item}"
49
- end
14
+ items = [1, 2, 3]
15
+ section.rows objects: items, builder: ->(row, item, index) do
16
+ row.default colStyles: [{ width: 200, backgroundColor: '#eeeeee' }], cellViews: ->(cell) do
17
+ cell.panels_vertical childViews: ->(vertical) do
18
+ vertical.h3 text: "Title #{item}"
19
+ vertical.spacer height: 4
20
+ vertical.label text: "Subtitle #{item}"
21
+ end
50
22
 
51
- cell.panels_horizontal childViews: ->(vertical) do
52
- vertical.label text: "Left #{item}"
53
- vertical.spacer width: 10
54
- vertical.label text: "Right #{item}"
55
- end
23
+ cell.panels_horizontal childViews: ->(vertical) do
24
+ vertical.label text: "Left #{item}"
25
+ vertical.spacer width: 10
26
+ vertical.label text: "Right #{item}"
27
+ end
56
28
 
57
- cell.panels_ul childViews: ->(ul) do
58
- ul.label text: "Item A#{item}"
59
- ul.label text: "Item B#{item}"
60
- end
61
- end
29
+ cell.panels_ul childViews: ->(ul) do
30
+ ul.label text: "Item A#{item}"
31
+ ul.label text: "Item B#{item}"
62
32
  end
63
33
  end
64
- ]
65
-
66
- form.fields_submit id: 'submit_button', text: 'Submit'
34
+ end
67
35
  end
68
- end
36
+ ]
@@ -39,7 +39,7 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
39
39
  dialog.body padding: glib_json_padding_body, childViews: ->(view) do
40
40
  view.panels_responsive styleClass: 'popover-menu', width: 200, childViews: ->(res) do
41
41
  res.label text: 'Item 1', styleClass: 'popover-menu-item', onClick: ->(saction) do
42
- saction.popovers_close key: 'menu'
42
+ saction.windows_open url: 'http://localhost:3000/glib/json_ui_garage?path=pages%2Findex'
43
43
  end
44
44
  res.label text: 'Item 2', styleClass: 'popover-menu-item', onClick: ->(saction) do
45
45
  saction.popovers_close key: 'menu'
File without changes
data/config/routes.rb CHANGED
@@ -7,5 +7,6 @@ Glib::Web::Engine.routes.draw do
7
7
  post 'chat', to: 'home#chat'
8
8
 
9
9
  resources :glib_direct_uploads, only: [:create]
10
+ resources :errors, only: [:create]
10
11
  end
11
12
  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
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: 4.9.0
4
+ version: 4.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -100,6 +100,7 @@ files:
100
100
  - app/controllers/concerns/glib/json/traversal.rb
101
101
  - app/controllers/concerns/glib/json/ui.rb
102
102
  - app/controllers/concerns/glib/json/validation.rb
103
+ - app/controllers/glib/errors_controller.rb
103
104
  - app/controllers/glib/glib_direct_uploads_controller.rb
104
105
  - app/controllers/glib/home_controller.rb
105
106
  - app/helpers/glib/app_feature_support_helper.rb
@@ -234,6 +235,7 @@ files:
234
235
  - app/views/json_ui/garage/forms/submit_on_change.json.jbuilder
235
236
  - app/views/json_ui/garage/forms/text_validation.json.jbuilder
236
237
  - app/views/json_ui/garage/forms/timers.json.jbuilder
238
+ - app/views/json_ui/garage/forms/update_options.json.jbuilder
237
239
  - app/views/json_ui/garage/home/blank.json.jbuilder
238
240
  - app/views/json_ui/garage/home/index.json.jbuilder
239
241
  - app/views/json_ui/garage/home/slow.json.jbuilder
@@ -386,8 +388,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
386
388
  - !ruby/object:Gem::Version
387
389
  version: '0'
388
390
  requirements: []
389
- rubyforge_project:
390
- rubygems_version: 2.7.6
391
+ rubygems_version: 3.4.6
391
392
  signing_key:
392
393
  specification_version: 4
393
394
  summary: ''