glib-web 2.3.0 → 2.4.0
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.
- checksums.yaml +4 -4
- data/app/controllers/glib/home_controller.rb +9 -0
- data/app/helpers/glib/json_ui/menu_builder.rb +1 -0
- data/app/helpers/glib/json_ui/view_builder/panels.rb +4 -0
- data/app/helpers/glib/json_ui/view_builder.rb +7 -1
- data/app/models/concerns/glib/soft_deletable.rb +5 -0
- data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +16 -6
- data/app/views/json_ui/garage/panels/responsive.json.jbuilder +1 -0
- data/app/views/json_ui/garage/panels/timeline.json.jbuilder +17 -7
- data/app/views/json_ui/garage/panels/ul.json.jbuilder +22 -2
- data/app/views/json_ui/garage/views/controls.json.jbuilder +15 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 416ab4888b4ca5e16220519fb9f1dc56999d91be403a2f14c464386f4b586604
|
4
|
+
data.tar.gz: b6e8f65a85f9542b9a3a8e865d52a36860d7acb95cdc930918e379b290ba0e66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2705c8939f81dcd503c8d7c77c5f70d157df9645123b4ca1f56fefe351bbafdeee4485cfaa31838a2e001f18cd05ae8776c44a7569b8c1c892838f17eace3ed
|
7
|
+
data.tar.gz: 1dcb659e7c9587137eef9aebfa1743e62edf6c427855a653fd6b12d71c827d5a32fb2e6131011cd80914f505bd6d140c07f61aaa9c4b60d301cb7f729772a1f5
|
@@ -18,6 +18,15 @@ module Glib
|
|
18
18
|
margin-right: auto;
|
19
19
|
margin-left: auto;
|
20
20
|
}
|
21
|
+
|
22
|
+
.rounded-corner {
|
23
|
+
border-radius: 16px;
|
24
|
+
}
|
25
|
+
|
26
|
+
/* Make sure the hover highlight effect also has rounded corners */
|
27
|
+
.rounded-corner:hover:after {
|
28
|
+
border-radius: 16px;
|
29
|
+
}
|
21
30
|
</style>
|
22
31
|
eos
|
23
32
|
|
@@ -5,6 +5,10 @@ class Glib::JsonUi::ViewBuilder
|
|
5
5
|
string :paramNameForFormData
|
6
6
|
bool :local
|
7
7
|
|
8
|
+
# TODO: Enable this when we know it won't break existing apps.
|
9
|
+
# Even for pure client-side apps, this is required because form.validate() requires a URL to construct form data.
|
10
|
+
# required :url
|
11
|
+
|
8
12
|
def is_array_association?(prop)
|
9
13
|
# # Not all model is ActiveRecord
|
10
14
|
# if @model.class.respond_to?(:reflect_on_association)
|
@@ -192,6 +192,12 @@ module Glib
|
|
192
192
|
action :onClick
|
193
193
|
color :color
|
194
194
|
bool :disabled
|
195
|
+
|
196
|
+
def childButtons(block)
|
197
|
+
json.childButtons do
|
198
|
+
block.call page.menu_builder
|
199
|
+
end
|
200
|
+
end
|
195
201
|
end
|
196
202
|
|
197
203
|
class Fab < View
|
@@ -279,7 +285,7 @@ module Glib
|
|
279
285
|
|
280
286
|
class ProgressCircle < View
|
281
287
|
int :rotate # from 0 to 360
|
282
|
-
int :size
|
288
|
+
int :size
|
283
289
|
int :value # from 0 to 100
|
284
290
|
color :color
|
285
291
|
string :text
|
@@ -22,6 +22,11 @@ module Glib
|
|
22
22
|
soft_destroy_record
|
23
23
|
end
|
24
24
|
|
25
|
+
# More explicit naming which is sometimes useful for readability.
|
26
|
+
def soft_destroy
|
27
|
+
soft_destroy_record
|
28
|
+
end
|
29
|
+
|
25
30
|
# Revive a soft-deleted record and associated records if soft-deleted,
|
26
31
|
# otherwise return self
|
27
32
|
def revive
|
@@ -17,12 +17,22 @@ page.list firstSection: ->(section) do
|
|
17
17
|
subaction.dialogs_alert message: 'Tick/untick'
|
18
18
|
end
|
19
19
|
end, rightButtons: ->(menu) do
|
20
|
-
menu.button
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
menu.button \
|
21
|
+
styleClass: 'icon',
|
22
|
+
icon: 'share',
|
23
|
+
tooltip: { text: 'Share' },
|
24
|
+
childButtons: ->(submenu) do
|
25
|
+
submenu.button text: 'Dropdown item 1'
|
26
|
+
submenu.button text: 'Dropdown item 2'
|
27
|
+
submenu.button text: 'Dropdown item 3'
|
28
|
+
end
|
29
|
+
menu.button \
|
30
|
+
styleClass: 'icon',
|
31
|
+
icon: 'open_in_new',
|
32
|
+
tooltip: { text: 'Open in new window' },
|
33
|
+
onClick: ->(subaction) do
|
34
|
+
subaction.dialogs_alert message: 'Open'
|
35
|
+
end
|
26
36
|
end, editButtons: ->(menu) do
|
27
37
|
menu.button text: "Edit (ID: #{page_index})", onClick: ->(action) do
|
28
38
|
action.dialogs_alert message: 'Perform Edit action'
|
@@ -123,6 +123,7 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
123
123
|
scroll.spacer height: 8
|
124
124
|
scroll.panels_responsive \
|
125
125
|
backgroundColor: '#c3cad2',
|
126
|
+
styleClasses: ['rounded-corner'],
|
126
127
|
padding: { left: 20, right: 20, top: 10, bottom: 10 },
|
127
128
|
tooltip: { text: 'Tooltip text' },
|
128
129
|
childViews: ->(responsive) do
|
@@ -7,7 +7,7 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
7
7
|
timeline_items = [
|
8
8
|
{ icon: 'place', color: '#4BB543' },
|
9
9
|
{ icon: 'check_circle', color: 'blue' },
|
10
|
-
{ icon: 'hourglass_empty', color: 'blue',
|
10
|
+
{ icon: 'hourglass_empty', color: 'blue', text: 'Pending' },
|
11
11
|
{ icon: 'radio_button_unchecked' },
|
12
12
|
{ icon: 'radio_button_unchecked' },
|
13
13
|
]
|
@@ -32,16 +32,15 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
timeline_items = [
|
35
|
-
{ icon: 'place', color: '#4BB543' },
|
36
|
-
{ icon: 'check_circle', color: 'blue' },
|
37
|
-
{ icon: 'check_circle', color: 'blue' },
|
38
|
-
{ icon: 'check_circle', color: 'blue' },
|
39
|
-
{ icon: 'flag', color: '#FFA500' },
|
35
|
+
{ icon: 'place', color: '#4BB543', styleClasses: ['outlined'] },
|
36
|
+
{ icon: 'check_circle', color: 'blue', styleClasses: ['outlined'] },
|
37
|
+
{ icon: 'check_circle', color: 'blue', styleClasses: ['outlined'] },
|
38
|
+
{ icon: 'check_circle', color: 'blue', styleClasses: ['outlined'] },
|
39
|
+
{ icon: 'flag', color: '#FFA500', styleClasses: ['outlined'] },
|
40
40
|
]
|
41
41
|
|
42
42
|
scroll.h2 text: 'Timeline with outlined dots'
|
43
43
|
scroll.panels_timeline \
|
44
|
-
styleClasses: ['outlined', 'icon-on-mdAndUp'],
|
45
44
|
events: timeline_items,
|
46
45
|
childViews: ->(timeline) do
|
47
46
|
timeline.panels_vertical childViews: ->(vertical) do
|
@@ -74,4 +73,15 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
74
73
|
timeline.label text: '1 minute ago'
|
75
74
|
end
|
76
75
|
end
|
76
|
+
|
77
|
+
timeline_items = [
|
78
|
+
{ backgroundColor: 'blue', styleClasses: ['small'] },
|
79
|
+
{ backgroundColor: 'blue', styleClasses: ['small'] },
|
80
|
+
{ backgroundColor: 'blue', color: 'white', text: '3' },
|
81
|
+
{ backgroundColor: 'white', icon: 'radio_button_unchecked', styleClasses: ['small'] },
|
82
|
+
{ backgroundColor: 'white', icon: 'radio_button_unchecked', styleClasses: ['small'] },
|
83
|
+
]
|
84
|
+
|
85
|
+
scroll.h2 text: 'Timeline without content'
|
86
|
+
scroll.panels_timeline events: timeline_items
|
77
87
|
end
|
@@ -37,9 +37,29 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
37
37
|
ul.button text: 'Level 1', styleClass: 'link', onClick: ->(action) do
|
38
38
|
action.windows_open url: json_ui_garage_url(path: 'home/blank')
|
39
39
|
end
|
40
|
-
ul.button text: 'Level 2', styleClass: 'link',
|
41
|
-
|
40
|
+
# ul.button text: 'Level 2', styleClass: 'link', childButtons: ->(menu) do
|
41
|
+
# menu.button text: 'Dropdown item 1'
|
42
|
+
# menu.button text: 'Dropdown item 2'
|
43
|
+
# menu.button text: 'Dropdown item 3'
|
44
|
+
# end
|
45
|
+
|
46
|
+
ul.button icon: 'keyboard_arrow_down', text: 'Level 2', styleClass: 'link', childButtons: ->(menu) do
|
47
|
+
menu.button text: 'Dropdown item 1'
|
48
|
+
menu.button text: 'Dropdown item 2'
|
49
|
+
menu.button text: 'Dropdown item 3'
|
42
50
|
end
|
51
|
+
# , onClick: ->(action) do
|
52
|
+
# action.windows_open url: json_ui_garage_url(path: 'home/blank')
|
53
|
+
# end
|
43
54
|
ul.label text: 'Level 3'
|
44
55
|
end
|
56
|
+
|
57
|
+
scroll.button icon: 'keyboard_arrow_down', text: 'Sign in', styleClasses: ['link'], onClick: ->(action) do
|
58
|
+
action.windows_open url: json_ui_garage_url(path: 'home/blank')
|
59
|
+
end
|
60
|
+
scroll.button icon: 'keyboard_arrow_down', text: 'Sign in', styleClass: 'link', childButtons: ->(menu) do
|
61
|
+
menu.button text: 'Dropdown item 1'
|
62
|
+
menu.button text: 'Dropdown item 2'
|
63
|
+
menu.button text: 'Dropdown item 3'
|
64
|
+
end
|
45
65
|
end
|
@@ -25,8 +25,22 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
25
25
|
onClick: ->(action) do
|
26
26
|
action.dialogs_alert message: 'Perform action'
|
27
27
|
end
|
28
|
-
scroll.spacer height: 20
|
29
28
|
|
29
|
+
scroll.spacer height: 10
|
30
|
+
scroll.button text: 'Button with dropdown', childButtons: ->(menu) do
|
31
|
+
menu.button text: 'Dropdown item 1'
|
32
|
+
menu.button text: 'Dropdown item 2'
|
33
|
+
menu.button text: 'Dropdown item 3'
|
34
|
+
end
|
35
|
+
|
36
|
+
scroll.spacer height: 10
|
37
|
+
scroll.button text: 'Button with tooltip and dropdown', tooltip: { text: 'Tooltip text' }, childButtons: ->(menu) do
|
38
|
+
menu.button text: 'Dropdown item 1'
|
39
|
+
menu.button text: 'Dropdown item 2'
|
40
|
+
menu.button text: 'Dropdown item 3'
|
41
|
+
end
|
42
|
+
|
43
|
+
scroll.spacer height: 20
|
30
44
|
scroll.button \
|
31
45
|
icon: 'info',
|
32
46
|
styleClass: 'icon',
|