glib-web 4.11.3 → 4.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +0 -0
  3. data/app/helpers/glib/app_feature_support_helper.rb +0 -0
  4. data/app/helpers/glib/dynamic_texts_helper.rb +0 -0
  5. data/app/helpers/glib/json_ui/action_builder/popovers.rb +1 -0
  6. data/app/helpers/glib/json_ui/action_builder/sheets.rb +0 -0
  7. data/app/helpers/glib/json_ui/analytics_helper.rb +0 -0
  8. data/app/helpers/glib/json_ui/generic_builders.rb +0 -0
  9. data/app/helpers/glib/json_ui/menu_builder.rb +1 -1
  10. data/app/helpers/glib/json_ui/view_builder/fields.rb +4 -3
  11. data/app/models/glib/active_storage/attachment.rb +0 -0
  12. data/app/models/glib/active_storage/blob.rb +0 -0
  13. data/app/models/glib/dynamic_text_record.rb +0 -0
  14. data/app/models/glib/text.rb +0 -0
  15. data/app/validators/email_typo_validator.rb +0 -0
  16. data/app/validators/email_validator.rb +0 -0
  17. data/app/validators/url_validator.rb +0 -0
  18. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +0 -0
  19. data/app/views/json_ui/garage/forms/bulk_edit_post.json.jbuilder +0 -0
  20. data/app/views/json_ui/garage/forms/bulk_edit_post2.json.jbuilder +1 -1
  21. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +66 -45
  22. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +4 -2
  23. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +17 -12
  24. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +0 -0
  25. data/app/views/json_ui/garage/forms/selects.json.jbuilder +1 -1
  26. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +2 -2
  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/loading_indicator.json.jbuilder +0 -0
  43. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +0 -0
  44. data/app/views/json_ui/garage/pages/redirect_onload.json.jbuilder +0 -0
  45. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +0 -0
  46. data/app/views/json_ui/garage/panels/card.json.jbuilder +0 -0
  47. data/app/views/json_ui/garage/panels/custom.json.jbuilder +0 -0
  48. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +0 -0
  49. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +0 -0
  50. data/app/views/json_ui/garage/services/image.json.jbuilder +0 -0
  51. data/app/views/json_ui/garage/services/index.json.jbuilder +0 -0
  52. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +0 -0
  53. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +0 -0
  54. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +0 -0
  55. data/app/views/json_ui/garage/tables/bulk_edit.json.jbuilder +4 -5
  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/icons.json.jbuilder +31 -3
  60. data/app/views/json_ui/garage/views/map_data.json.jbuilder +0 -0
  61. data/app/views/json_ui/garage/views/multimedia.json.jbuilder +0 -0
  62. data/app/views/layouts/json_ui/no_custom.html.erb +0 -0
  63. data/lib/generators/glib/install_generator.rb +0 -0
  64. data/lib/generators/templates/20191017062519_create_texts.rb +0 -0
  65. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +0 -0
  66. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +0 -0
  67. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +0 -0
  68. data/lib/generators/templates/database.yml +0 -0
  69. data/lib/generators/templates/dynamic_text.rb +0 -0
  70. data/lib/glib/dynamic_text/config.rb +0 -0
  71. data/lib/glib/dynamic_text.rb +0 -0
  72. data/lib/glib/json_crawler/action_crawler.rb +0 -0
  73. data/lib/glib/json_crawler/action_crawlers/action_http.rb +0 -0
  74. data/lib/glib/json_crawler/action_crawlers/dialogs_alert.rb +0 -0
  75. data/lib/glib/json_crawler/action_crawlers/menu.rb +0 -0
  76. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +0 -0
  77. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +0 -0
  78. data/lib/glib/json_crawler/coverage.rb +0 -0
  79. data/lib/glib/value.rb +0 -0
  80. data/lib/glib/version.rb +0 -0
  81. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 909f15289f876cff26ef1f742d864fd58291b7e2b775ada6a946bd9d0335e5f6
4
- data.tar.gz: 4de45fc74a77622b05d3cd957d00c3af2f625948b3f82c48e050f951a3f8049e
3
+ metadata.gz: fea0c9ca22e2cd6a190a3be52be84ed1a79ec94bfec2c17ee766793adb3941d1
4
+ data.tar.gz: 3a19e361ff4609642e13f2c616af927d40f7094eb25c0aa9174609d19a3aa4a9
5
5
  SHA512:
6
- metadata.gz: 72e7c7106e83e247cba86d588ecbdfec6e67eeb4831009b88c1d008771bcbea319d1a5f3db8f910eca9a8d84ca72cb87528828f944dee6775630945cca7208e6
7
- data.tar.gz: f4543608557ee088e0271b856bb50d0e61096837daf2bda6f9c84b968921e5855659fbd857bad33585adc23b69ef22a0dc362aa2c0f68629ea7536595a3fc777
6
+ metadata.gz: d2fc7867a17b4aa08b5a37068f50315c726725e47b82a6dd8b9feff0271a0dac1476c4c1b01588f44bb649ca86a17e2a26340c52143357ef978276dccc22d939
7
+ data.tar.gz: 20c3582468ce979b149fa170980f0aa2c4c575595d714427bb922548aa975a3a12d5f6d624b90c26afaa45f95abea3dd7586fb380ca9f744cc7409ea29c7a17c
File without changes
File without changes
@@ -9,6 +9,7 @@ class Glib::JsonUi::ActionBuilder
9
9
  string :placement
10
10
  int :offset
11
11
  int :width
12
+ bool :persistent
12
13
  # singleton_array :styleClass, :styleClasses
13
14
  end
14
15
 
File without changes
File without changes
File without changes
@@ -8,7 +8,7 @@ module Glib
8
8
  class MenuItem < JsonUiElement
9
9
  include Builder::MouseEvents
10
10
 
11
- hash :analytics, optional: [:featured, :disabled]
11
+ hash :analytics, optional: [:featured, :disabled, :group, :action]
12
12
  hash :tooltip, required: [:text], optional: [:placement, :position]
13
13
  end
14
14
 
@@ -7,6 +7,7 @@ class Glib::JsonUi::ViewBuilder
7
7
  bool :readOnly
8
8
  bool :disabled
9
9
  bool :disableDirtyCheck
10
+ bool :clearable
10
11
  action :onChange
11
12
  action :onChangeAndLoad
12
13
  string :paramNameForFormData
@@ -201,7 +202,7 @@ class Glib::JsonUi::ViewBuilder
201
202
 
202
203
  panels_builder :accessory, :header, :footer
203
204
  bool :clearable
204
- bool :csvMode
205
+ # bool :csvMode
205
206
 
206
207
  def options(value)
207
208
  @_options = value
@@ -294,8 +295,8 @@ class Glib::JsonUi::ViewBuilder
294
295
  action :onClick
295
296
  string :offIcon
296
297
  string :onIcon
297
- hash :image, required: [:url, :template], optional: [:width, :height]
298
- hash :icon, required: [:name, :template], optional: [:color, :size]
298
+ hash :image, required: [:url, :template], optional: [:width, :height, :subtitle]
299
+ hash :icon, required: [:name, :template], optional: [:color, :size, :subtitle]
299
300
 
300
301
  views :childViews
301
302
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -2,7 +2,7 @@ sleep 1
2
2
  row_id = params[:user]['row_id']
3
3
  status = [:succeeded, :failed][rand(0..1)]
4
4
  # status = :succeeded
5
- #status = :failed
5
+ # status = :failed
6
6
 
7
7
  json_ui_response json do |action|
8
8
  action.components_invoke \
@@ -22,73 +22,80 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
22
22
  { name: 'type', value: 'yes_no' },
23
23
  ]
24
24
  ]
25
- form.fields_dynamicGroup width: 'matchParent', name: 'user[evaluation]', groupFieldProperties: properties, titlePrefix: 'Entry', content: ->(group) do
25
+ form.fields_dynamicGroup id: 'form_dynamic_group', width: 'matchParent', name: 'user[evaluation]', groupFieldProperties: properties, titlePrefix: 'Entry', content: ->(group) do
26
26
  group.template padding: { left: 32 }, childViews: ->(template) do
27
27
  template.spacer height: 10
28
28
  template.fields_text width: 'matchParent', name: 'question', label: 'Question', placeholder: 'Question'
29
29
 
30
30
  form.panels_responsive id: 'responsive_{{entry_index}}', childViews: ->(column) do
31
- options = [:rating, :yes_no, :choices]
32
- template.fields_select \
33
- width: 'matchParent',
34
- name: 'type',
35
- label: 'Answer Type',
36
- placeholder: 'Answer Type',
37
- options: options.map { |o| { text: o.to_s.humanize, value: o } },
38
- onChangeAndLoad: ->(action) do
39
- action.runMultiple childActions: ->(multiple) do
40
- multiple.logics_set \
41
- cacheData: true, # This is so that the the new data is retained when the `dynamicGroup` gets re-rendered.
42
- debug: true,
43
- targetId: 'responsive_{{entry_index}}', dataBuilder: ->(set) do
44
- set.panels_responsive width: 'matchParent', accessory: ->(accessory) do
45
- accessory.footer childViews: ->(footer) do
46
- footer.fields_check \
47
- width: 'matchParent',
48
- id: 'check_{{entry_index}}',
49
- name: 'enabled',
50
- label: 'Enable',
51
- checkValue: true
31
+ options = [:rating, :yes_no, :choices]
32
+ template.fields_select \
33
+ width: 'matchParent',
34
+ name: 'type',
35
+ label: 'Answer Type',
36
+ placeholder: 'Answer Type',
37
+ options: options.map { |o| { text: o.to_s.humanize, value: o } },
38
+ onChangeAndLoad: ->(action) do
39
+ action.runMultiple childActions: ->(multiple) do
40
+ multiple.logics_set \
41
+ cacheData: true, # This is so that the the new data is retained when the `dynamicGroup` gets re-rendered.
42
+ debug: true,
43
+ targetId: 'responsive_{{entry_index}}', dataBuilder: ->(set) do
44
+ set.panels_responsive width: 'matchParent', accessory: ->(accessory) do
45
+ accessory.footer childViews: ->(footer) do
46
+ footer.fields_check \
47
+ width: 'matchParent',
48
+ id: 'check_{{entry_index}}',
49
+ name: 'enabled',
50
+ label: 'Enable',
51
+ checkValue: true
52
52
 
53
- footer.panels_split width: 'matchParent', content: ->(split) do
54
- split.right childViews: ->(right) do
55
- right.label text: 'This should be right-aligned'
53
+ footer.panels_split width: 'matchParent', content: ->(split) do
54
+ split.right childViews: ->(right) do
55
+ right.label text: 'This should be right-aligned'
56
+ end
56
57
  end
57
58
  end
58
59
  end
59
- end
60
- end, onSet: ->(subaction) do
61
- subaction.logics_set \
62
- targetId: 'check_{{entry_index}}',
63
- conditionalData: {
64
- value: {
65
- "==": [{ "var": 'user[evaluation][{{entry_index}}][type]' }, 'rating']
60
+ end, onSet: ->(subaction) do
61
+ subaction.logics_set \
62
+ targetId: 'check_{{entry_index}}',
63
+ conditionalData: {
64
+ value: {
65
+ "==": [{ "var": 'user[evaluation][{{entry_index}}][type]' }, 'rating']
66
+ }
66
67
  }
67
- }
68
- end
68
+ end
69
69
 
70
- multiple.logics_set \
71
- targetId: 'choices_panel',
72
- debug: true,
73
- conditionalData: {
74
- displayed: {
75
- "==": [{ "var": 'user[evaluation][{{entry_index}}][type]' }, 'choices']
70
+ multiple.logics_set \
71
+ targetId: 'choices_panel_{{entry_index}}',
72
+ debug: true,
73
+ conditionalData: {
74
+ displayed: {
75
+ "==": [{ "var": 'user[evaluation][{{entry_index}}][type]' }, 'choices']
76
+ }
76
77
  }
77
- }
78
+ end
78
79
  end
79
- end
80
80
  end, accessory: ->(accessory) do
81
81
  accessory.footer childViews: ->(footer) do
82
82
 
83
83
  end
84
84
  end
85
85
 
86
- template.panels_vertical id: 'choices_panel', childViews: ->(vertical) do
86
+ template.panels_vertical id: 'choices_panel_{{entry_index}}', childViews: ->(vertical) do
87
87
  (1..5).each do |i|
88
88
  vertical.fields_text \
89
+ id: "input_choice_{{entry_index}}_#{i}",
89
90
  width: 'matchParent',
90
- name: "choices[#{i}]",
91
- label: "Choice #{i}"
91
+ name: "choices_#{i}",
92
+ label: "Choice #{i}",
93
+ displayed: i <= 1,
94
+ onChange: ->(action) do
95
+ action.logics_set targetId: "input_choice_{{entry_index}}_#{i + 1}", conditionalData: {
96
+ displayed: { "isPresent": [{ "var": "user[evaluation][{{entry_index}}][choices_#{i}]" }] }
97
+ }
98
+ end
92
99
  end
93
100
  end
94
101
 
@@ -96,6 +103,20 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
96
103
  end
97
104
  end
98
105
 
106
+ form.panels_horizontal \
107
+ align: 'middle',
108
+ childViews: ->(horizontal) do
109
+ horizontal.icon \
110
+ name: 'add_circle',
111
+ styleClasses: ['success']
112
+
113
+ horizontal.spacer width: 10
114
+ horizontal.h4 text: 'Add item'
115
+ end,
116
+ onClick: ->(action) do
117
+ action.components_invoke targetId: 'form_dynamic_group', name: 'addGroup'
118
+ end
119
+
99
120
  form.spacer height: 20
100
121
  form.fields_submit text: 'Submit'
101
122
  end
@@ -11,13 +11,15 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
11
11
 
12
12
  form.fields_dynamicSelect name: 'user[primary_language]', width: 'matchParent', label: 'Primary Language',
13
13
  selectedOptions: [ { value: 'id3', text: 'Item 3' } ],
14
- url: json_ui_garage_url(path: 'forms/dynamic_select_data')
14
+ url: json_ui_garage_url(path: 'forms/dynamic_select_data'),
15
+ placeholder: 'Start typing'
15
16
 
16
17
  form.spacer height: 14
17
18
  form.fields_dynamicSelect name: 'user[preferred_languages][]', width: 'matchParent', label: 'Preferred Languages',
18
19
  selectedOptions: [ { value: 'id3', text: 'Item 3' }, { value: 'id5', text: 'Item 5' } ],
19
20
  url: json_ui_garage_url(path: 'forms/dynamic_select_data'),
20
- multiple: true
21
+ multiple: true,
22
+ placeholder: 'Start typing'
21
23
 
22
24
  form.spacer height: 14
23
25
  form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
@@ -22,17 +22,22 @@ end
22
22
  # end
23
23
  # end
24
24
 
25
- section = json_ui_section json
26
- section.rows builder: ->(row) do
27
- count_per_page = 20
28
- count_per_page.times do |i|
29
- index = page * count_per_page + i
30
- row.custom title: "City #{index} (#{params[:q]})",
31
- subtitle: "State #{index}",
32
- subsubtitle: "Country #{index}",
33
- extra: {
34
- value: "id#{index}",
35
- text: "Item #{index}"
36
- }
25
+ if (query_keyword = params[:q]).present?
26
+ section = json_ui_section json
27
+ section.rows builder: ->(row) do
28
+ count_per_page = 20
29
+ count_per_page.times do |i|
30
+ index = page * count_per_page + i
31
+ # title: "City #{index} (#{query_keyword})",
32
+ row.custom \
33
+ subtitle: "State #{index}",
34
+ subsubtitle: "Country #{index}",
35
+ extra: {
36
+ value: "id#{index}",
37
+ text: "City #{index} (#{query_keyword})"
38
+ }
39
+ end
37
40
  end
41
+ else
42
+ json.rows []
38
43
  end
@@ -142,7 +142,7 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
142
142
  name: 'user[animal_or_plant]',
143
143
  width: 'matchParent',
144
144
  label: 'Animal or Plant',
145
- options: [{ text: 'Animal', value: 'animal' }, { text: 'Plant', value: 'plant' }],
145
+ options: [{ icon: { name: 'pets' }, text: 'Animal', value: 'animal' }, { icon: { name: 'forest' }, text: 'Plant', value: 'plant' }],
146
146
  value: 'animal',
147
147
  onChangeAndLoad: ->(action) do
148
148
  action.http_get url: json_ui_garage_url(path: 'forms/update_options')
@@ -129,7 +129,7 @@ page.form \
129
129
 
130
130
  res.panels_column width: 'matchParent', lg: { cols: 4 }, childViews: ->(column) do
131
131
  column.fields_radio\
132
- width: 350,
132
+ width: 'matchParent',
133
133
  value: 'yes', label: 'Yes', icon: { template: 'featured', name: 'edit', size: 40, color: '#d1d1d1' },
134
134
  onClick: ->(action) do
135
135
  action.windows_openWeb url: 'http://www.google.com'
@@ -137,7 +137,7 @@ page.form \
137
137
  end
138
138
  res.panels_column width: 'matchParent', lg: { cols: 4 }, childViews: ->(column) do
139
139
  column.fields_radio\
140
- width: 350,
140
+ width: 'matchParent',
141
141
  value: 'no', label: 'No',
142
142
  image: { template: 'featured', url: 'https://cdn.pixabay.com/photo/2020/08/05/13/12/eco-5465432_1280.png', width: 80, height: 80 },
143
143
  onClick: ->(action) do
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -48,12 +48,12 @@ page.scroll childViews: ->(scroll) do
48
48
  horizontal.label text: 'Total: '
49
49
  horizontal.label id: 'loaded_count', text: '0'
50
50
 
51
- horizontal.label text: " #{symbol_horizontal_separator} "
51
+ # horizontal.label text: " #{symbol_horizontal_separator} "
52
52
 
53
53
  horizontal.label text: 'Selected: '
54
54
  horizontal.label id: 'selected_count', text: '0'
55
55
 
56
- horizontal.label text: " #{symbol_horizontal_separator} "
56
+ # horizontal.label text: " #{symbol_horizontal_separator} "
57
57
  horizontal.chip \
58
58
  id: 'succeeded_count',
59
59
  styleClass: 'success',
@@ -64,11 +64,10 @@ page.scroll childViews: ->(scroll) do
64
64
  scroll.panels_bulkEdit2 \
65
65
  id: 'import_table',
66
66
  width: 'matchParent',
67
- backgroundColor: '#e2e2e2',
68
67
  paramNameForRowId: 'row_id',
69
68
  import: { submitUrl: json_ui_garage_url(path: 'forms/bulk_edit_post2'), paramName: 'user' },
70
69
  viewHeaders: [
71
- { text: 'Month', id: 'month', importable: true },
70
+ { text: 'Month', id: 'month', importable: true, tooltip: { text: 'Month' } },
72
71
  { text: 'Electricity usage', id: 'electricity_usage', importable: true },
73
72
  { text: 'Gas usage', id: 'gas_usage', importable: true },
74
73
  { text: 'Sources', id: 'sources', importable: true },
@@ -142,7 +141,7 @@ page.scroll childViews: ->(scroll) do
142
141
  conditionalData: {
143
142
  text: {
144
143
  "printf": [
145
- "Uploaded: {0}",
144
+ 'Uploaded: {0}',
146
145
  { "count": [{ "var": 'data.succeededRows' }] }
147
146
  ]
148
147
  },
File without changes
@@ -3,14 +3,28 @@ json.title 'Views'
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
6
+ page.form padding: glib_json_padding_body, childViews: ->(scroll) do
7
7
  scroll.h2 text: 'Icon'
8
8
  # scroll.icon spec: { name: 'home' }
9
9
  scroll.icon name: 'home'
10
10
 
11
11
  scroll.spacer height: 20
12
12
  scroll.h2 text: 'Icon with color'
13
- scroll.icon name: 'home', color: '#9370DB'
13
+ scroll.fields_select \
14
+ name: 'input_icon',
15
+ value: 'verified',
16
+ options: ['pending', 'verified', 'cancel'].map { |icon_name| { text: icon_name, value: icon_name } }
17
+ scroll.button text: 'update', onClick: ->(action) do
18
+ action.logics_set \
19
+ targetId: 'icon1',
20
+ conditionalData: {
21
+ 'material.name': { "var": 'input_icon' }
22
+ },
23
+ data: {
24
+ 'tooltip.text': 'TEST123'
25
+ }
26
+ end
27
+ scroll.icon id: 'icon1', name: 'home', color: '#9370DB'
14
28
  scroll.icon name: 'home', color: '#9370DB80'
15
29
 
16
30
  scroll.spacer height: 20
@@ -19,5 +33,19 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
19
33
 
20
34
  scroll.spacer height: 20
21
35
  scroll.h2 text: 'Icon with styleClasses'
22
- scroll.icon name: 'home', styleClasses: ['small']
36
+ scroll.icon id: 'icon2', name: 'home', styleClasses: ['small']
37
+
38
+ scroll.button text: 'Hide icon', onClick: ->(action) do
39
+ action.logics_set targetId: 'icon2', data: {
40
+ displayed: false
41
+ }
42
+ end
43
+
44
+ scroll.spacer height: 20
45
+ scroll.h2 text: 'Icon with onLoad'
46
+ scroll.icon id: 'icon3', name: 'home', onLoad: ->(action) do
47
+ action.logics_set targetId: 'icon3', data: {
48
+ 'material.name': 'info'
49
+ }
50
+ end
23
51
  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
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.11.3
4
+ version: 4.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -403,7 +403,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
403
403
  - !ruby/object:Gem::Version
404
404
  version: '0'
405
405
  requirements: []
406
- rubygems_version: 3.4.6
406
+ rubyforge_project:
407
+ rubygems_version: 2.7.6
407
408
  signing_key:
408
409
  specification_version: 4
409
410
  summary: ''