glib-web 4.20.0 → 4.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/concerns/glib/json/new_dynamic_text.rb +0 -0
- data/app/helpers/glib/app_feature_support_helper.rb +0 -0
- data/app/helpers/glib/dynamic_texts_helper.rb +0 -0
- data/app/helpers/glib/json_ui/action_builder/fields.rb +6 -1
- data/app/helpers/glib/json_ui/analytics_helper.rb +0 -0
- data/app/helpers/glib/json_ui/generic_builders.rb +0 -0
- data/app/models/glib/active_storage/attachment.rb +0 -0
- data/app/models/glib/active_storage/blob.rb +0 -0
- data/app/models/glib/dynamic_text_record.rb +0 -0
- data/app/models/glib/text.rb +0 -0
- data/app/validators/email_typo_validator.rb +0 -0
- data/app/validators/email_validator.rb +0 -0
- data/app/validators/url_validator.rb +0 -0
- data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/bulk_edit_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +50 -18
- data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/home/blank.json.jbuilder +0 -0
- data/app/views/json_ui/garage/home/slow.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/fab.json.jbuilder +0 -0
- data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/custom_style_class.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/full_width.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/layout.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/redirect_onload.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/_styled.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/card.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/custom.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/outlined.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/image.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/index.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/export_import.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/pagination.json.jbuilder +3 -3
- data/app/views/json_ui/garage/test_page/form.json.jbuilder +16 -0
- data/app/views/json_ui/garage/test_page/form_dynamic.json.jbuilder +20 -20
- data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/controls.json.jbuilder +13 -3
- data/app/views/json_ui/garage/views/map_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/multimedia.json.jbuilder +0 -0
- data/app/views/layouts/json_ui/no_custom.html.erb +0 -0
- data/lib/generators/glib/install_generator.rb +0 -0
- data/lib/generators/templates/20191017062519_create_texts.rb +0 -0
- data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +0 -0
- data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +0 -0
- data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +0 -0
- data/lib/generators/templates/database.yml +0 -0
- data/lib/generators/templates/dynamic_text.rb +0 -0
- data/lib/glib/dynamic_text/config.rb +0 -0
- data/lib/glib/dynamic_text.rb +0 -0
- data/lib/glib/json_crawler/action_crawler.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/action_http.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/dialogs_alert.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/menu.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/windows_open.rb +0 -0
- data/lib/glib/json_crawler/coverage.rb +0 -0
- data/lib/glib/value.rb +0 -0
- data/lib/glib/version.rb +0 -0
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d78202b475738a29ed66ed9ab23374b4ccebdbd9d58554e60273d41fa99acf8a
|
4
|
+
data.tar.gz: b51e17878e5274b4955a2784a8c28f1fd739668ecea83a216b73380f4aa75d48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a70cb51681f41ee739ff26fc4551b85ed5a7518267d9c911fcc0c5822261a7b0daa51bf25eab87868fba4206567355448cea1bf241bca10a903b3f6b2d603259
|
7
|
+
data.tar.gz: dfa00b2574d73744bf31643d1e71db360772c79eebae88e2e1bc6ce9c6fae18a999f0caee5756dba83b5081f698a52753693a5300e6ca9d0e80709281be795fe
|
File without changes
|
File without changes
|
File without changes
|
@@ -14,10 +14,15 @@ class Glib::JsonUi::ActionBuilder
|
|
14
14
|
action :onReset
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
# deprecated
|
18
18
|
class GetDynamicGroupEntryValues < Action
|
19
19
|
array :names
|
20
20
|
action :onGet
|
21
21
|
end
|
22
|
+
|
23
|
+
class GetValues < Action
|
24
|
+
hash :fieldNames
|
25
|
+
action :onGet
|
26
|
+
end
|
22
27
|
end
|
23
28
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/app/models/glib/text.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -30,8 +30,8 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
|
|
30
30
|
template.fields_hidden name: 'error_message'
|
31
31
|
template.fields_text width: 'matchParent', name: 'question', label: 'Question', placeholder: 'Question'
|
32
32
|
|
33
|
-
form.panels_responsive id: 'responsive_{{
|
34
|
-
options = [:rating, :yes_no, :choices]
|
33
|
+
form.panels_responsive id: 'responsive_{{entryIndex}}', childViews: ->(column) do
|
34
|
+
options = [:rating, :yes_no, :choices, :unspecified]
|
35
35
|
template.fields_select \
|
36
36
|
width: 'matchParent',
|
37
37
|
name: 'type',
|
@@ -41,16 +41,48 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
|
|
41
41
|
options: options.map { |o| { text: o.to_s.humanize, value: o } },
|
42
42
|
onChangeAndLoad: ->(action) do
|
43
43
|
action.runMultiple childActions: ->(multiple) do
|
44
|
+
multiple.fields_getValues \
|
45
|
+
fieldNames: {
|
46
|
+
'{{entryPrefix}}[type]' => nil,
|
47
|
+
'{{entryPrefix}}[question]' => 'question'
|
48
|
+
},
|
49
|
+
onGet: ->(get) do
|
50
|
+
# get.snackbars_alert paramName: 'message', fieldName: 'entry-{{entryIndex}}'
|
51
|
+
|
52
|
+
get.http_get \
|
53
|
+
fieldName: 'entry',
|
54
|
+
url: json_ui_garage_current_url(entry: {
|
55
|
+
index: '{{entryIndex}}'
|
56
|
+
}).gsub('%7B%7B', '{{').gsub('%7D%7D', '}}') # manually change url because rails escape {{entryIndex}}
|
57
|
+
end
|
58
|
+
|
59
|
+
# multiple.logics_run \
|
60
|
+
# condition: { "==": [{ "var": "user[evaluation][{{entryIndex}}][type]" }, 'unspecified'] },
|
61
|
+
# onTrue: ->(subaction) do
|
62
|
+
# subaction.dialogs_alert message: 'Please select a valid type'
|
63
|
+
# end
|
64
|
+
|
65
|
+
# multiple.logics_run \
|
66
|
+
# condition: { "==": [{ "var": "[{{entryIndex}}][type]" }, 'unspecified'] },
|
67
|
+
# onTrue: ->(subaction) do
|
68
|
+
# subaction.dialogs_alert message: 'Please select a valid type'
|
69
|
+
# end
|
70
|
+
|
71
|
+
multiple.logics_run \
|
72
|
+
condition: { "==": [{ "var": '{{entryPrefix}}[type]' }, 'unspecified'] },
|
73
|
+
onTrue: ->(subaction) do
|
74
|
+
subaction.dialogs_alert message: 'Please select a valid type'
|
75
|
+
end
|
76
|
+
|
44
77
|
multiple.logics_set \
|
45
|
-
cacheData: true, # This is so that the the new data is retained when the `dynamicGroup` gets re-rendered.
|
46
78
|
debug: true,
|
47
|
-
targetId: 'responsive_{{
|
79
|
+
targetId: 'responsive_{{entryIndex}}', dataBuilder: ->(set) do
|
48
80
|
set.panels_responsive width: 'matchParent', accessory: ->(accessory) do
|
49
81
|
accessory.footer childViews: ->(footer) do
|
50
82
|
footer.fields_check \
|
51
83
|
width: 'matchParent',
|
52
|
-
id: 'check_{{
|
53
|
-
name: 'enabled',
|
84
|
+
id: 'check_{{entryIndex}}',
|
85
|
+
name: '{{entryPrefix}}[enabled]',
|
54
86
|
label: 'Enable',
|
55
87
|
checkValue: true
|
56
88
|
|
@@ -63,20 +95,20 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
|
|
63
95
|
end
|
64
96
|
end, onSet: ->(subaction) do
|
65
97
|
subaction.logics_set \
|
66
|
-
targetId: 'check_{{
|
98
|
+
targetId: 'check_{{entryIndex}}',
|
67
99
|
conditionalData: {
|
68
100
|
value: {
|
69
|
-
"==": [{ "var": 'user[evaluation][{{
|
101
|
+
"==": [{ "var": 'user[evaluation][{{entryIndex}}][type]' }, 'rating']
|
70
102
|
}
|
71
103
|
}
|
72
104
|
end
|
73
105
|
|
74
106
|
multiple.logics_set \
|
75
|
-
targetId: 'choices_panel_{{
|
107
|
+
targetId: 'choices_panel_{{entryIndex}}',
|
76
108
|
debug: true,
|
77
109
|
conditionalData: {
|
78
110
|
displayed: {
|
79
|
-
"==": [{ "var": 'user[evaluation][{{
|
111
|
+
"==": [{ "var": 'user[evaluation][{{entryIndex}}][type]' }, 'choices']
|
80
112
|
}
|
81
113
|
}
|
82
114
|
end
|
@@ -88,29 +120,29 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
|
|
88
120
|
end
|
89
121
|
|
90
122
|
template.icon \
|
91
|
-
id: 'error_icon_{{
|
123
|
+
id: 'error_icon_{{entryIndex}}',
|
92
124
|
name: 'error',
|
93
125
|
onLoad: ->(action) do
|
94
|
-
action.logics_set debug: true, targetId: 'error_icon_{{
|
126
|
+
action.logics_set debug: true, targetId: 'error_icon_{{entryIndex}}', conditionalData: {
|
95
127
|
displayed: {
|
96
128
|
"!!": [
|
97
|
-
{ 'var': '{{
|
129
|
+
{ 'var': '{{entryPrefix}}[error_message]' }
|
98
130
|
]
|
99
131
|
},
|
100
|
-
'tooltip.text': { 'var': '{{
|
132
|
+
'tooltip.text': { 'var': '{{entryPrefix}}[error_message]' }
|
101
133
|
}
|
102
134
|
end
|
103
|
-
template.panels_vertical id: 'choices_panel_{{
|
135
|
+
template.panels_vertical id: 'choices_panel_{{entryIndex}}', childViews: ->(vertical) do
|
104
136
|
(1..5).each do |i|
|
105
137
|
vertical.fields_text \
|
106
|
-
id: "input_choice_{{
|
138
|
+
id: "input_choice_{{entryIndex}}_#{i}",
|
107
139
|
width: 'matchParent',
|
108
140
|
name: "choices_#{i}",
|
109
141
|
label: "Choice #{i}",
|
110
142
|
displayed: i <= 1,
|
111
143
|
onChange: ->(action) do
|
112
|
-
action.logics_set targetId: "input_choice_{{
|
113
|
-
displayed: { "isPresent": [{ "var": "user[evaluation][{{
|
144
|
+
action.logics_set targetId: "input_choice_{{entryIndex}}_#{i + 1}", conditionalData: {
|
145
|
+
displayed: { "isPresent": [{ "var": "user[evaluation][{{entryIndex}}][choices_#{i}]" }] }
|
114
146
|
}
|
115
147
|
end
|
116
148
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -9,10 +9,10 @@ per_page = 20
|
|
9
9
|
page_index = params[:page]&.to_i || 1
|
10
10
|
|
11
11
|
page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
12
|
-
scroll.panels_table firstSection: ->(section) do
|
12
|
+
scroll.panels_table key: params[:page], firstSection: ->(section) do
|
13
13
|
section.header cellViews: ->(header) do
|
14
|
-
header.label text:
|
15
|
-
header.label text:
|
14
|
+
header.label text: 'Name'
|
15
|
+
header.label text: 'Status'
|
16
16
|
end
|
17
17
|
|
18
18
|
items = (1..per_page).map do |index|
|
@@ -118,6 +118,22 @@ page.body childViews: ->(body) do
|
|
118
118
|
|
119
119
|
form.fields_textarea width: 'matchParent', name: 'user[textarea]', id: 'textarea', value: 'Lorem ipsum et dumet bla bla bla...'
|
120
120
|
|
121
|
+
form.hr width: 'matchParent'
|
122
|
+
|
123
|
+
form.hr width: 'matchParent'
|
124
|
+
|
125
|
+
form.fields_check label: 'show nested panel', name: 'not_user[nested_panel]', checkValue: true, onChange: ->(action) do
|
126
|
+
action.logics_set targetId: 'nested_panel', conditionalData: { displayed: { "var": 'not_user[nested_panel]' } }
|
127
|
+
end
|
128
|
+
form.panels_responsive backgroundColor: '#FF0000', padding: { all: 8 }, displayed: false, id: 'nested_panel', width: 'matchParent', childViews: ->(xres) do
|
129
|
+
xres.panels_horizontal backgroundColor: '#00FF00', padding: { all: 8 }, width: 'matchParent', childViews: ->(ver) do
|
130
|
+
ver.panels_vertical width: 'matchParent', childViews: ->(hori) do
|
131
|
+
hori.fields_text width: 300, name: 'user[should_not_submitted]', value: ''
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
form.fields_text width: 300, name: 'user[should_submitted]', displayed: false, value: 'Should be submitted even if not visible', submitWhenNotDisplayed: true
|
136
|
+
|
121
137
|
form.hr width: 'matchParent'
|
122
138
|
form.fields_submit text: 'submit'
|
123
139
|
form.spacer height: 2
|
@@ -36,7 +36,7 @@ page.body childViews: ->(body) do
|
|
36
36
|
template.fields_hidden name: 'error_message'
|
37
37
|
template.fields_text width: 'matchParent', name: 'question', label: 'Question', placeholder: 'Question', styleClass: 'question'
|
38
38
|
|
39
|
-
form.panels_responsive id: 'responsive_{{
|
39
|
+
form.panels_responsive id: 'responsive_{{entryIndex}}', childViews: ->(column) do
|
40
40
|
options = [:rating, :yes_no, :choices]
|
41
41
|
template.fields_select \
|
42
42
|
width: 'matchParent',
|
@@ -48,16 +48,17 @@ page.body childViews: ->(body) do
|
|
48
48
|
options: options.map { |o| { text: o.to_s.humanize, value: o } },
|
49
49
|
onChangeAndLoad: ->(action) do
|
50
50
|
action.runMultiple childActions: ->(multiple) do
|
51
|
+
multiple.fields_getValues fieldNames: { '{{entryPrefix}}[type]' => nil, '{{entryPrefix}}[question]' => nil }, onGet: ->(get) do
|
52
|
+
get.snackbars_alert paramName: 'message', fieldName: 'entry-{{entryIndex}}'
|
53
|
+
end
|
51
54
|
multiple.logics_set \
|
52
|
-
|
53
|
-
debug: true,
|
54
|
-
targetId: 'responsive_{{entry_index}}', dataBuilder: ->(set) do
|
55
|
+
targetId: 'responsive_{{entryIndex}}', dataBuilder: ->(set) do
|
55
56
|
set.panels_responsive width: 'matchParent', accessory: ->(accessory) do
|
56
57
|
accessory.footer childViews: ->(footer) do
|
57
58
|
footer.fields_check \
|
58
59
|
width: 'matchParent',
|
59
|
-
id: 'check_{{
|
60
|
-
name: 'enabled',
|
60
|
+
id: 'check_{{entryIndex}}',
|
61
|
+
name: '{{entryPrefix}}[enabled]',
|
61
62
|
label: 'Enable',
|
62
63
|
styleClass: 'enable',
|
63
64
|
checkValue: true
|
@@ -71,20 +72,19 @@ page.body childViews: ->(body) do
|
|
71
72
|
end
|
72
73
|
end, onSet: ->(subaction) do
|
73
74
|
subaction.logics_set \
|
74
|
-
targetId: 'check_{{
|
75
|
+
targetId: 'check_{{entryIndex}}',
|
75
76
|
conditionalData: {
|
76
77
|
value: {
|
77
|
-
"==": [{ "var": 'user[evaluation][{{
|
78
|
+
"==": [{ "var": 'user[evaluation][{{entryIndex}}][type]' }, 'rating']
|
78
79
|
}
|
79
80
|
}
|
80
81
|
end
|
81
82
|
|
82
83
|
multiple.logics_set \
|
83
|
-
targetId: 'choices_panel_{{
|
84
|
-
debug: true,
|
84
|
+
targetId: 'choices_panel_{{entryIndex}}',
|
85
85
|
conditionalData: {
|
86
86
|
displayed: {
|
87
|
-
"==": [{ "var": 'user[evaluation][{{
|
87
|
+
"==": [{ "var": 'user[evaluation][{{entryIndex}}][type]' }, 'choices']
|
88
88
|
}
|
89
89
|
}
|
90
90
|
end
|
@@ -96,29 +96,29 @@ page.body childViews: ->(body) do
|
|
96
96
|
end
|
97
97
|
|
98
98
|
template.icon \
|
99
|
-
id: 'error_icon_{{
|
99
|
+
id: 'error_icon_{{entryIndex}}',
|
100
100
|
name: 'error',
|
101
101
|
onLoad: ->(action) do
|
102
|
-
action.logics_set
|
102
|
+
action.logics_set targetId: 'error_icon_{{entryIndex}}', conditionalData: {
|
103
103
|
displayed: {
|
104
104
|
"!!": [
|
105
|
-
{ 'var': '{{
|
105
|
+
{ 'var': '{{entryPrefix}}[error_message]' }
|
106
106
|
]
|
107
107
|
},
|
108
|
-
'tooltip.text': { 'var': '{{
|
108
|
+
'tooltip.text': { 'var': '{{entryPrefix}}[error_message]' }
|
109
109
|
}
|
110
110
|
end
|
111
|
-
template.panels_vertical id: 'choices_panel_{{
|
111
|
+
template.panels_vertical id: 'choices_panel_{{entryIndex}}', childViews: ->(vertical) do
|
112
112
|
(1..5).each do |i|
|
113
113
|
vertical.fields_text \
|
114
|
-
id: "input_choice_{{
|
114
|
+
id: "input_choice_{{entryIndex}}_#{i}",
|
115
115
|
width: 'matchParent',
|
116
|
-
name: "
|
116
|
+
name: "[choices][#{i}]",
|
117
117
|
label: "Choice #{i}",
|
118
118
|
displayed: i <= 1,
|
119
119
|
onChange: ->(action) do
|
120
|
-
action.logics_set targetId: "input_choice_{{
|
121
|
-
displayed: { "isPresent": [{ "var": "
|
120
|
+
action.logics_set targetId: "input_choice_{{entryIndex}}_#{i + 1}", conditionalData: {
|
121
|
+
displayed: { "isPresent": [{ "var": "{{entryPrefix}}[choices][#{i}]" }] }
|
122
122
|
}
|
123
123
|
end
|
124
124
|
end
|
File without changes
|
@@ -63,12 +63,12 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
63
63
|
onClick: ->(action) do
|
64
64
|
action.popovers_show \
|
65
65
|
key: 'menu2',
|
66
|
-
placement: '
|
66
|
+
placement: 'right-start',
|
67
67
|
width: 200,
|
68
68
|
content: ->(dialog) do
|
69
69
|
dialog.body styleClass: 'popover-menu', padding: glib_json_padding_body, childViews: ->(res) do
|
70
70
|
res.label text: 'Item 1', styleClass: 'popover-menu-item', onClick: ->(saction) do
|
71
|
-
saction.
|
71
|
+
saction.windows_open url: json_ui_garage_url(path: 'pages/index')
|
72
72
|
end
|
73
73
|
res.label text: 'Item 2', styleClass: 'popover-menu-item', onClick: ->(saction) do
|
74
74
|
saction.popovers_close key: 'menu2'
|
@@ -92,7 +92,17 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
92
92
|
icon: 'info',
|
93
93
|
styleClasses: ['icon', 'text'],
|
94
94
|
onClick: ->(action) do
|
95
|
-
action.dialogs_alert message: 'Perform action'
|
95
|
+
# action.dialogs_alert message: 'Perform action'
|
96
|
+
action.popovers_show \
|
97
|
+
key: 'menu2',
|
98
|
+
placement: 'bottom-start',
|
99
|
+
width: 200,
|
100
|
+
persistent: true,
|
101
|
+
content: ->(dialog) do
|
102
|
+
dialog.body styleClass: 'popover-menu', padding: glib_json_padding_body, childViews: ->(res) do
|
103
|
+
res.label text: 'This is a persistent popover'
|
104
|
+
end
|
105
|
+
end
|
96
106
|
end
|
97
107
|
|
98
108
|
scroll.spacer height: 20
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/glib/dynamic_text.rb
CHANGED
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.
|
4
|
+
version: 4.21.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ''
|
@@ -408,8 +408,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
408
408
|
- !ruby/object:Gem::Version
|
409
409
|
version: '0'
|
410
410
|
requirements: []
|
411
|
-
|
412
|
-
rubygems_version: 2.7.6
|
411
|
+
rubygems_version: 3.4.6
|
413
412
|
signing_key:
|
414
413
|
specification_version: 4
|
415
414
|
summary: ''
|