glib-web 3.0.0 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/glib/home_controller.rb +1 -1
  3. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +2 -0
  4. data/app/helpers/glib/json_ui/action_builder/http.rb +1 -0
  5. data/app/helpers/glib/json_ui/action_builder/popovers.rb +3 -1
  6. data/app/helpers/glib/json_ui/builder/mouse_events.rb +29 -0
  7. data/app/helpers/glib/json_ui/list_builders.rb +3 -1
  8. data/app/helpers/glib/json_ui/menu_builder.rb +3 -30
  9. data/app/helpers/glib/json_ui/view_builder/banners.rb +2 -0
  10. data/app/helpers/glib/json_ui/view_builder/charts.rb +21 -21
  11. data/app/helpers/glib/json_ui/view_builder/fields.rb +1 -0
  12. data/app/helpers/glib/json_ui/view_builder.rb +3 -4
  13. data/app/views/json_ui/garage/actions/_list.json.jbuilder +23 -0
  14. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +5 -0
  15. data/app/views/json_ui/garage/actions/index.json.jbuilder +3 -23
  16. data/app/views/json_ui/garage/actions/partial_update.json.jbuilder +5 -0
  17. data/app/views/json_ui/garage/forms/_partial_update_execute.json.jbuilder +23 -0
  18. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +40 -27
  19. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +1 -1
  20. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +19 -12
  21. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +1 -1
  22. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +26 -17
  23. data/app/views/json_ui/garage/panels/index.json.jbuilder +3 -3
  24. data/app/views/json_ui/garage/views/banners.json.jbuilder +42 -22
  25. data/app/views/json_ui/garage/views/charts.json.jbuilder +25 -15
  26. data/app/views/json_ui/garage/views/controls.json.jbuilder +36 -27
  27. data/app/views/json_ui/garage/views/index.json.jbuilder +2 -1
  28. data/app/views/json_ui/garage/views/shareButton.json.jbuilder +10 -0
  29. data/app/views/json_ui/garage/views/steppers.json.jbuilder +40 -0
  30. metadata +5 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1893d7f9752d6b6fa88f44c3cf3992aafff393b4b10638ca989b82859c47c716
4
- data.tar.gz: 7c19f36849c4ff6d58f1e53657c7f639b1a6d69fb1d4810c1a3a4d71ad652f8b
3
+ metadata.gz: f9f3512d884ca3fac7a8f0fa5022d65f256416b884bc457db8d9e93e050a622e
4
+ data.tar.gz: 07cc381dff74eb7bc55749fb715f5a416f4d14eb53d73b380c44a0e9c7e3949e
5
5
  SHA512:
6
- metadata.gz: 45a1be444dc544ac2957134c50cc8035ebd1a114b2eb724fbb3f2bc9d8cb845beca2f370670a6c74f46dcdd9892e4ac1b033c73ba20704a8ee2bd243733c4b94
7
- data.tar.gz: 0f31ccbe16452d786d71c0c314753c03cd7d92476b0a392b9231d3b07110a01db1c2788a1937ddf073489656a00f2fb73c92b81e6e3f6b108c97e9c4281c08d1
6
+ metadata.gz: c500d6e5efeb141d1c2765c17847b99acb6030366c381f136712ca954dfa6cc059b3e1c6fa2c1d3865d5d6e1d86bcd57c1ab4bfc8e0edc4f2e5361d2370febfa
7
+ data.tar.gz: d66702989b6708278973b8446006acef18fc746de0b1a019fed36e4a3d9306ebe09abb21daa072ec2525c7440be60c4a58060ef056170300bc9642883b9af188
@@ -24,7 +24,7 @@ module Glib
24
24
  }
25
25
 
26
26
  /* Make sure the hover highlight effect also has rounded corners */
27
- .rounded-corner:hover:after {
27
+ .rounded-corner:hover:before {
28
28
  border-radius: 16px;
29
29
  }
30
30
  </style>
@@ -29,6 +29,7 @@ class Glib::JsonUi::ActionBuilder
29
29
  bool :showClose
30
30
  string :fullscreen # mobile, always
31
31
  length :width
32
+ bool :closeOnBlur
32
33
 
33
34
  # def initialize(json, page)
34
35
  # @json = json
@@ -46,6 +47,7 @@ class Glib::JsonUi::ActionBuilder
46
47
  string :fullscreen
47
48
  length :width
48
49
  length :height
50
+ bool :closeOnBlur
49
51
  end
50
52
 
51
53
  class Reload < Action
@@ -2,6 +2,7 @@ class Glib::JsonUi::ActionBuilder
2
2
  module Http
3
3
  class AbstractHttp < Action
4
4
  string :url, cache: true
5
+ bool :silent
5
6
 
6
7
  def formData(hash)
7
8
  form_data = {}
@@ -3,8 +3,10 @@ class Glib::JsonUi::ActionBuilder
3
3
  class Open < Action
4
4
  string :key
5
5
  views :childViews
6
- string :location
6
+ string :placement
7
7
  int :offset
8
+ int :width
9
+ singleton_array :styleClass, :styleClasses
8
10
  end
9
11
 
10
12
  class Close < Action
@@ -0,0 +1,29 @@
1
+ module Glib
2
+ module JsonUi
3
+ module Builder::MouseEvents
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ action :onMouseEnter
8
+ action :onMouseLeave
9
+ end
10
+
11
+ def tooltip(options)
12
+ key = "tooltip_#{SecureRandom.uuid}"
13
+ onMouseEnter ->(action) do
14
+ action.popovers_open(
15
+ key: key,
16
+ placement: options[:placement] || 'top',
17
+ childViews: ->(view) {
18
+ view.p styleClass: 'tooltip', text: options[:text]
19
+ }
20
+ )
21
+ end
22
+
23
+ onMouseLeave ->(action) do
24
+ action.popovers_close key: key
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -53,8 +53,10 @@ module Glib
53
53
  end
54
54
 
55
55
  class Thumbnail < Standard
56
- menu :leftOuterButtons
56
+ # menu :leftOuterButtons
57
57
  int :imageSize
58
+
59
+ panels_builder :content, :header, :footer, :right
58
60
  end
59
61
 
60
62
  class CommentOutgoing < Standard
@@ -6,36 +6,9 @@ module Glib
6
6
  end
7
7
 
8
8
  class MenuItem < JsonUiElement
9
- hash :analytics
10
-
11
- # def initialize(json, page)
12
- # super(json, page)
13
-
14
- # # Can be improved by making it configurable site-wide.
15
- # @analyticsEnabled = true
16
- # end
9
+ include Builder::MouseEvents
17
10
 
18
- # def analytics(value)
19
- # if value.is_a?(Hash)
20
- # @analyticsEnabled = true
21
- # @analyticsId = value
22
- # else
23
- # @analyticsEnabled = value == true
24
- # end
25
- # end
26
-
27
- # # Override
28
- # def created
29
- # json.analytics do
30
- # if @analyticsEnabled
31
- # if @analyticsId
32
- # json.placement @analyticsId
33
- # end
34
- # else
35
- # json.disabled true
36
- # end
37
- # end
38
- # end
11
+ hash :analytics
39
12
  end
40
13
 
41
14
  class Button < MenuItem
@@ -45,7 +18,7 @@ module Glib
45
18
  icon :icon
46
19
  action :onClick
47
20
  bool :disabled
48
- hash :tooltip
21
+ # hash :tooltip
49
22
  singleton_array :styleClass, :styleClasses
50
23
 
51
24
  def childButtons(block)
@@ -3,6 +3,7 @@ class Glib::JsonUi::ViewBuilder
3
3
 
4
4
  class Alert < View
5
5
  icon :icon
6
+ string :title
6
7
  string :message
7
8
  # string :message_format
8
9
  singleton_array :styleClass, :styleClasses
@@ -11,6 +12,7 @@ class Glib::JsonUi::ViewBuilder
11
12
  class Select < View
12
13
  string :id
13
14
  icon :icon
15
+ string :title
14
16
  string :message
15
17
  singleton_array :styleClass, :styleClasses
16
18
  color :color
@@ -12,11 +12,7 @@ class Glib::JsonUi::ViewBuilder
12
12
  end
13
13
  end
14
14
 
15
- class Line < View
16
- include ReleaseDateIndicator
17
-
18
- hash :nextPage
19
-
15
+ module Series
20
16
  def dataSeries(blocks)
21
17
  json.dataSeries do
22
18
  blocks.each do |block|
@@ -27,13 +23,6 @@ class Glib::JsonUi::ViewBuilder
27
23
  end
28
24
  end
29
25
 
30
- end
31
-
32
- class Column < View
33
- include ReleaseDateIndicator
34
-
35
- bool :stacked
36
-
37
26
  def dataGroups(blocks)
38
27
  json.dataGroups do
39
28
  blocks.each do |block|
@@ -45,16 +34,27 @@ class Glib::JsonUi::ViewBuilder
45
34
  end
46
35
  end
47
36
 
37
+ class Line < View
38
+ include Series
39
+
40
+ # idea for the future
41
+ # hash :nextPage
42
+ end
43
+
44
+ class Column < View
45
+ include Series
46
+
47
+ bool :stacked
48
+ end
49
+
48
50
  class Pie < View
49
- def dataSeries(blocks)
50
- json.dataSeries do
51
- blocks.each do |block|
52
- json.child! do
53
- block.call
54
- end
55
- end
56
- end
57
- end
51
+ include Series
52
+
58
53
  end
54
+
55
+ class Area < View
56
+ include Series
57
+ end
58
+
59
59
  end
60
60
  end
@@ -3,6 +3,7 @@ class Glib::JsonUi::ViewBuilder
3
3
 
4
4
  class AbstractField < View
5
5
  bool :readOnly
6
+ bool :disabled
6
7
  hash :validation
7
8
  bool :disableDirtyCheck
8
9
  action :onChange
@@ -32,6 +32,8 @@ module Glib
32
32
  end
33
33
 
34
34
  class View < JsonUiElement
35
+ include Builder::MouseEvents
36
+
35
37
  string :id
36
38
  length :width
37
39
  length :height
@@ -41,12 +43,9 @@ module Glib
41
43
  hash :showIf
42
44
  hash :valueIf
43
45
  hash :analytics
44
- hash :tooltip
46
+ # hash :tooltip
45
47
  array :extensions
46
48
 
47
- action :onMouseEnter
48
- action :onMouseLeave
49
-
50
49
 
51
50
  # def initialize(json, page)
52
51
  # super(json, page)
@@ -0,0 +1,23 @@
1
+ panel.panels_list id: 'action_list', sections: [
2
+ ->(section) do
3
+ render "#{@path_prefix}/actions/reload", section: section
4
+ end, ->(section) do
5
+ render "#{@path_prefix}/actions/panels", section: section
6
+ end, ->(section) do
7
+ render "#{@path_prefix}/actions/dialogs", section: section
8
+ end, ->(section) do
9
+ render "#{@path_prefix}/actions/snackbars", section: section
10
+ end, ->(section) do
11
+ render "#{@path_prefix}/actions/sheets", section: section
12
+ end, ->(section) do
13
+ render "#{@path_prefix}/actions/windows", section: section
14
+ end, ->(section) do
15
+ render "#{@path_prefix}/actions/timeouts", section: section
16
+ end, ->(section) do
17
+ render "#{@path_prefix}/actions/http", section: section
18
+ end, ->(section) do
19
+ render "#{@path_prefix}/actions/commands", section: section
20
+ end, ->(section) do
21
+ render "#{@path_prefix}/actions/tours", section: section
22
+ end
23
+ ]
@@ -11,7 +11,12 @@ section.rows builder: ->(template) do
11
11
 
12
12
  reload_counter = params[:reload_counter].to_i
13
13
  reload_counter = 0 if reload_counter > 5
14
+
14
15
  template.thumbnail title: "windows/reload with URL (counter: #{reload_counter})", onClick: ->(action) do
15
16
  action.windows_reload url: json_ui_garage_url(path: 'actions/index', reload_counter: reload_counter + 1)
16
17
  end
18
+
19
+ template.thumbnail title: "components/update (counter: #{reload_counter})", onClick: ->(action) do
20
+ action.http_get url: json_ui_garage_url(path: 'actions/partial_update', reload_counter: reload_counter + 1)
21
+ end
17
22
  end
@@ -3,26 +3,6 @@ json.title 'Actions'
3
3
  page = json_ui_page json
4
4
  render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
5
5
 
6
- page.list sections: [
7
- ->(section) do
8
- render "#{@path_prefix}/actions/reload", section: section
9
- end, ->(section) do
10
- render "#{@path_prefix}/actions/panels", section: section
11
- end, ->(section) do
12
- render "#{@path_prefix}/actions/dialogs", section: section
13
- end, ->(section) do
14
- render "#{@path_prefix}/actions/snackbars", section: section
15
- end, ->(section) do
16
- render "#{@path_prefix}/actions/sheets", section: section
17
- end, ->(section) do
18
- render "#{@path_prefix}/actions/windows", section: section
19
- end, ->(section) do
20
- render "#{@path_prefix}/actions/timeouts", section: section
21
- end, ->(section) do
22
- render "#{@path_prefix}/actions/http", section: section
23
- end, ->(section) do
24
- render "#{@path_prefix}/actions/commands", section: section
25
- end, ->(section) do
26
- render "#{@path_prefix}/actions/tours", section: section
27
- end
28
- ]
6
+ page.scroll childViews: ->(scroll) do
7
+ render "#{@path_prefix}/actions/list", panel: scroll
8
+ end
@@ -0,0 +1,5 @@
1
+ json_ui_response_with_view json do |action|
2
+ action.components_update targetId: 'action_list', views: ->(update) do
3
+ render "#{@path_prefix}/actions/list", panel: update
4
+ end
5
+ end
@@ -4,5 +4,28 @@ action.components_update targetId: 'greeting', views: ->(update) do
4
4
  vertical.label text: "Hello #{name},"
5
5
  vertical.spacer height: 8
6
6
  vertical.label text: 'Nice to meet you'
7
+
8
+ vertical.spacer height: 8
9
+ vertical.panels_horizontal childViews: ->(horizontal) do
10
+ horizontal.label text: "Column1 #{DateTime.current.to_i}"
11
+ horizontal.spacer width: 8
12
+
13
+ horizontal.panels_vertical childViews: ->(inner_vertical) do
14
+ inner_vertical.label text: "Row1 #{DateTime.current.to_i}"
15
+ inner_vertical.label text: "Row2 #{DateTime.current.to_i}"
16
+
17
+ inner_vertical.panels_split content: ->(split) do
18
+ split.left childViews: ->(left) do
19
+ left.label text: "Left1 #{DateTime.current.to_i}"
20
+ left.label text: "Left2 #{DateTime.current.to_i}"
21
+ end
22
+
23
+ split.right childViews: ->(right) do
24
+ right.label text: "Right1 #{DateTime.current.to_i}"
25
+ right.label text: "Right2 #{DateTime.current.to_i}"
26
+ end
27
+ end
28
+ end
29
+ end
7
30
  end
8
31
  end
@@ -4,32 +4,45 @@ page = json_ui_page json
4
4
 
5
5
  render "#{@path_prefix}/nav_menu", json: json, page: page
6
6
 
7
- page.form url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
8
- form.fields_text name: 'user[name]', width: 'matchParent', label: 'Search', placeholder: 'Enter a keyword', styleClasses: ['outlined', 'rounded']
9
-
10
- form.spacer height: 14
11
- form.fields_password name: 'user[password]', width: 'matchParent', label: 'Password', placeholder: 'Type your password', styleClass: 'outlined'
12
-
13
- form.spacer height: 14
14
- form.fields_textarea name: 'user[bio]', width: 'matchParent', label: 'Bio', placeholder: 'Enter your bio', styleClasses: ['outlined']
15
-
16
- # form.spacer height: 14
17
- # form.fields_stripeToken name: 'user[stripe_token_outlined]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'outlined'
18
-
19
- # form.spacer height: 14
20
- # form.fields_stripeToken name: 'user[stripe_token_individual]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'individual'
21
-
22
- form.spacer height: 14
23
- form.fields_creditCard name: 'user[stripe_token_outlined]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'outlined'
24
-
25
- form.spacer height: 14
26
- form.fields_creditCard name: 'user[stripe_token_individual]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'individual'
27
-
28
- form.spacer height: 14
29
- form.panels_split width: 'matchParent', content: ->(split) do
30
- split.right childViews: ->(right) do
31
- right.fields_submit text: 'Submit'
7
+ page.form \
8
+ url: json_ui_garage_url(path: 'forms/basic_post'),
9
+ method: 'post',
10
+ padding: glib_json_padding_body,
11
+ childViews: ->(form) do
12
+ form.fields_text \
13
+ name: 'user[name]',
14
+ width: 'matchParent',
15
+ label: 'Search',
16
+ placeholder: 'Enter a keyword',
17
+ styleClasses: ['outlined', 'rounded']
18
+
19
+ form.spacer height: 14
20
+ form.fields_password \
21
+ name: 'user[password]',
22
+ width: 'matchParent',
23
+ label: 'Password',
24
+ placeholder: 'Type your password',
25
+ styleClasses: ['outlined', 'compact']
26
+
27
+ form.spacer height: 14
28
+ form.fields_textarea name: 'user[bio]', width: 'matchParent', label: 'Bio', placeholder: 'Enter your bio', styleClasses: ['outlined']
29
+
30
+ # form.spacer height: 14
31
+ # form.fields_stripeToken name: 'user[stripe_token_outlined]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'outlined'
32
+
33
+ # form.spacer height: 14
34
+ # form.fields_stripeToken name: 'user[stripe_token_individual]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'individual'
35
+
36
+ form.spacer height: 14
37
+ form.fields_creditCard name: 'user[stripe_token_outlined]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'outlined'
38
+
39
+ form.spacer height: 14
40
+ form.fields_creditCard name: 'user[stripe_token_individual]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'individual'
41
+
42
+ form.spacer height: 14
43
+ form.panels_split width: 'matchParent', content: ->(split) do
44
+ split.right childViews: ->(right) do
45
+ right.fields_submit text: 'Submit'
46
+ end
32
47
  end
33
48
  end
34
-
35
- end
@@ -11,7 +11,7 @@ section.rows builder: ->(row) do
11
11
  array.each do |i|
12
12
  index = page_index * batch_count + i
13
13
  if local_assigns[:reorder]
14
- row.thumbnail title: "Item #{index}"
14
+ row.thumbnail title: "Item #{index}", id: "item_#{index}"
15
15
  else
16
16
  row.thumbnail title: "Item #{index}", subtitle: "Sub Item #{index}", subsubtitle: "Sub Sub Item #{index}"
17
17
  end
@@ -2,7 +2,7 @@ json.title 'Lists'
2
2
 
3
3
  page_index = params[:page].to_i
4
4
  if page_index > 2
5
- page_index = 2
5
+ page_index = 0
6
6
  end
7
7
  page = json_ui_page json
8
8
  render "#{@path_prefix}/nav_menu", json: json, page: page
@@ -13,26 +13,33 @@ page.list firstSection: ->(section) do
13
13
  title: 'Click menu (web) or swipe left (Android/iOS)',
14
14
  subtitle: "Page index: #{page_index}",
15
15
  leftButtons: ->(menu) do
16
- menu.button styleClass: 'icon', icon: 'check_box', onClick: ->(subaction) do
17
- subaction.dialogs_alert message: 'Tick/untick'
18
- end
16
+ menu.button \
17
+ styleClasses: ['icon', 'text', 'x-small'],
18
+ icon: 'check_box',
19
+ onClick: ->(subaction) do
20
+ subaction.dialogs_alert message: 'Tick/untick'
21
+ end
19
22
  end, rightButtons: ->(menu) do
20
23
  menu.button \
21
- styleClass: 'icon',
24
+ styleClasses: ['icon', 'text', 'x-small'],
22
25
  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
26
+ tooltip: { text: 'Share', location: 'left' }
27
+
28
+ # TODO: Use popoever
29
+ # childButtons: ->(submenu) do
30
+ # submenu.button text: 'Dropdown item 1'
31
+ # submenu.button text: 'Dropdown item 2'
32
+ # submenu.button text: 'Dropdown item 3'
33
+ # end
34
+
29
35
  menu.button \
30
- styleClass: 'icon',
36
+ styleClasses: ['icon', 'text', 'x-small'],
31
37
  icon: 'open_in_new',
32
38
  tooltip: { text: 'Open in new window' },
33
39
  onClick: ->(subaction) do
34
40
  subaction.dialogs_alert message: 'Open'
35
41
  end
42
+
36
43
  end, editButtons: ->(menu) do
37
44
  menu.button text: "Edit (ID: #{page_index})", onClick: ->(action) do
38
45
  action.dialogs_alert message: 'Perform Edit action'
@@ -18,7 +18,7 @@ else
18
18
 
19
19
  render "#{@path_prefix}/nav_menu", json: json, page: page
20
20
 
21
- page.list nextPage: next_page, sections: [
21
+ page.list id: 'orderable_list', nextPage: next_page, sections: [
22
22
  ->(section) do
23
23
  section.header padding: glib_json_padding_list, childViews: ->(header) do
24
24
  header.h3 text: 'Section One'
@@ -119,26 +119,35 @@ json_ui_page json do |page|
119
119
 
120
120
  scroll.spacer height: 20
121
121
  scroll.h1 text: 'Label combo (with onClick)'
122
- scroll.panels_horizontal childViews: ->(panel) do
123
- panel.label backgroundColor: '#b3bac2', text: 'Label 1'
124
- panel.label text: 'Label 2'
125
- panel.label backgroundColor: '#b3bac2', text: 'Label 3'
126
- end, onClick: ->(action) do
127
- action.windows_open url: json_ui_garage_url(path: 'home/blank')
128
- end
122
+ scroll.panels_horizontal \
123
+ padding: { left: 20, right: 20, top: 10, bottom: 10 },
124
+ styleClasses: ['rounded-corner'],
125
+ backgroundColor: '#b3bac2',
126
+ childViews: ->(panel) do
127
+ panel.label text: 'Label 1'
128
+ panel.label backgroundColor: '#ffffff', text: 'Label 2'
129
+ panel.label text: 'Label 3'
130
+ end, onClick: ->(action) do
131
+ action.windows_open url: json_ui_garage_url(path: 'home/blank')
132
+ end
129
133
 
130
134
  scroll.spacer height: 20
131
135
  scroll.h1 text: 'Drag-and-drop support'
132
- scroll.panels_horizontal backgroundColor: '#b3bac2', width: 300, distribution: 'spaceEqually', childViews: ->(panel) do
133
- panel.button id: 'button1', text: '1'
134
- panel.button id: 'button2', text: '2'
135
- panel.button id: 'button3', text: '3'
136
- end, dragSupport: {
137
- onDrop: {
138
- action: 'dialogs/alert',
139
- },
140
- paramNameForFormData: 'message'
141
- }
136
+ scroll.panels_horizontal \
137
+ backgroundColor: '#b3bac2',
138
+ id: 'orderable_panel',
139
+ width: 300,
140
+ distribution: 'spaceEqually',
141
+ childViews: ->(panel) do
142
+ panel.button id: 'button1', text: '1'
143
+ panel.button id: 'button2', text: '2'
144
+ panel.button id: 'button3', text: '3'
145
+ end, dragSupport: {
146
+ onDrop: {
147
+ action: 'dialogs/alert',
148
+ },
149
+ paramNameForFormData: 'message'
150
+ }
142
151
 
143
152
  scroll.label text: "\n"
144
153
  end
@@ -30,9 +30,9 @@ json_ui_page json do |page|
30
30
  template.thumbnail title: 'Unordered List', subtitle: 'Bullet points similar to HTML\'s <ul> tag', onClick: ->(action) do
31
31
  action.windows_open url: json_ui_garage_url(path: 'panels/ul')
32
32
  end
33
- # template.thumbnail title: 'Timeline', subtitle: 'Timeline component with responsive panel as the childviews', onClick: ->(action) do
34
- # action.windows_open url: json_ui_garage_url(path: 'panels/timeline')
35
- # end
33
+ template.thumbnail title: 'Timeline', subtitle: 'Timeline component with responsive panel as the childviews', onClick: ->(action) do
34
+ action.windows_open url: json_ui_garage_url(path: 'panels/timeline')
35
+ end
36
36
  end
37
37
  end, ->(section) do
38
38
  section.header padding: glib_json_padding_list, childViews: ->(header) do
@@ -8,43 +8,63 @@ json_ui_page json do |page|
8
8
  scroll.spacer height: 20
9
9
  scroll.h2 text: 'Basic'
10
10
  scroll.spacer height: 6
11
- scroll.banners_alert width: 'matchParent', icon: 'info', message: 'This is an alert banner'
11
+ scroll.banners_alert \
12
+ width: 'matchParent',
13
+ icon: 'info',
14
+ title: 'Title',
15
+ message: 'This is an alert banner'
12
16
 
13
17
  scroll.spacer height: 20
14
18
  scroll.h2 text: 'With color styling'
15
19
  scroll.spacer height: 6
16
- scroll.banners_alert width: 'matchParent', icon: 'info', message: 'This is an alert banner', styleClass: 'success'
20
+ scroll.banners_alert \
21
+ width: 'matchParent',
22
+ icon: 'info',
23
+ message: 'This is an alert banner',
24
+ styleClass: 'success'
25
+
26
+ # scroll.banners_alert \
27
+ # width: 'matchParent',
28
+ # icon: 'info',
29
+ # message: 'This is an alert banner',
30
+ # styleClass: 'warning'
17
31
 
18
32
  scroll.spacer height: 20
19
33
  scroll.h2 text: 'With select options'
20
34
  scroll.spacer height: 6
21
- scroll.banners_select width: 'matchParent', icon: 'info', message: 'This is a select banner', buttons: ->(menu) do
22
- menu.button icon: 'add', text: 'Add', badge: { text: 80 }, onClick: ->(action) do
23
- action.windows_open url: json_ui_garage_url(path: 'home/blank')
24
- end
25
- menu.button icon: 'edit', text: 'Edit', onClick: ->(action) do
26
- action.windows_open url: json_ui_garage_url(path: 'home/slow')
27
- end
28
- menu.button icon: 'delete', text: 'Delete', onClick: ->(action) do
29
- action.dialogs_alert message: 'Alert'
30
- end
31
-
32
- menu.button icon: 'more_vert', childButtons: ->(submenu) do
33
- submenu.button \
34
- icon: 'add',
35
- text: 'Option1',
36
- badge: { text: 3 },
37
- onClick: ->(action) do
35
+ scroll.banners_select \
36
+ styleClass: 'warning',
37
+ width: 'matchParent',
38
+ icon: 'info',
39
+ title: 'Title',
40
+ message: 'This is a select banner',
41
+ buttons: ->(menu) do
42
+ menu.button icon: 'add', text: 'Add', badge: { text: 80 }, onClick: ->(action) do
38
43
  action.windows_open url: json_ui_garage_url(path: 'home/blank')
39
44
  end
40
- submenu.button icon: 'edit', text: 'Option2', onClick: ->(action) do
45
+ menu.button icon: 'edit', text: 'Edit', onClick: ->(action) do
41
46
  action.windows_open url: json_ui_garage_url(path: 'home/slow')
42
47
  end
43
- submenu.button icon: 'delete', text: 'Long Option3', onClick: ->(action) do
48
+ menu.button icon: 'delete', text: 'Delete', onClick: ->(action) do
44
49
  action.dialogs_alert message: 'Alert'
45
50
  end
51
+
52
+ menu.button icon: 'more_vert', childButtons: ->(submenu) do
53
+ submenu.button \
54
+ icon: 'add',
55
+ text: 'Option1',
56
+ badge: { text: 3 },
57
+ onClick: ->(action) do
58
+ action.windows_open url: json_ui_garage_url(path: 'home/blank')
59
+ end
60
+ submenu.button icon: 'edit', text: 'Option2', onClick: ->(action) do
61
+ action.windows_open url: json_ui_garage_url(path: 'home/slow')
62
+ end
63
+ submenu.button icon: 'delete', text: 'Long Option3', onClick: ->(action) do
64
+ action.dialogs_alert message: 'Alert'
65
+ end
66
+ end
46
67
  end
47
- end
48
68
 
49
69
  scroll.spacer height: 20
50
70
  scroll.h2 text: 'Alert banner with frameless styling (Experimental)'
@@ -12,18 +12,8 @@ else
12
12
  render "#{@path_prefix}/nav_menu", json: json, page: page
13
13
 
14
14
  page.scroll padding: { top: 20, left: 20, right: 20, bottom: 20 }, childViews: ->(scroll) do
15
- scroll.h1 text: 'Line chart'
16
- scroll.charts_line lineVertical: [
17
- -> do
18
- json.text 'A feature released'
19
- json.x Date.new(2018, 11, 15)
20
- end,
21
- -> do
22
- json.text 'A feature released'
23
- json.x Date.new(2018, 11, 13)
24
- end
25
- ],
26
- dataSeries: [
15
+ scroll.h2 text: 'Line chart'
16
+ scroll.charts_line dataSeries: [
27
17
  -> do
28
18
  json.title 'Line 1'
29
19
 
@@ -54,9 +44,9 @@ else
54
44
  end
55
45
  ]
56
46
 
57
- scroll.spacer height: 20
58
- scroll.h1 text: 'Line chart using remote data'
59
- render "#{@path_prefix}/views/chart_data", json: json, builder: scroll
47
+ # scroll.spacer height: 20
48
+ # scroll.h1 text: 'Line chart using remote data'
49
+ # render "#{@path_prefix}/views/chart_data", json: json, builder: scroll
60
50
 
61
51
  scroll.h2 text: 'Column chart (Clustered)'
62
52
  scroll.charts_column dataGroups: [
@@ -131,6 +121,26 @@ else
131
121
  json.value 25
132
122
  end
133
123
  ]
124
+
125
+ scroll.h2 text: 'Area chart'
126
+ scroll.charts_area dataSeries: [
127
+ -> do
128
+ json.title 'Jan'
129
+ json.value 25
130
+ end,
131
+ -> do
132
+ json.title 'Feb'
133
+ json.value 55
134
+ end,
135
+ -> do
136
+ json.title 'Mar'
137
+ json.value 60
138
+ end,
139
+ -> do
140
+ json.title 'June'
141
+ json.value 20
142
+ end
143
+ ]
134
144
  end
135
145
  end
136
146
 
@@ -12,9 +12,12 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
12
12
  end
13
13
 
14
14
  scroll.spacer height: 10
15
- scroll.button text: 'Button with built-in classes', styleClasses: ['rounded', 'outlined', 'tile', 'depressed'], onClick: ->(action) do
16
- action.dialogs_alert message: 'Perform action'
17
- end
15
+ scroll.button \
16
+ text: 'Button with built-in classes',
17
+ styleClasses: ['rounded', 'outlined', 'tile', 'depressed', 'small'],
18
+ onClick: ->(action) do
19
+ action.dialogs_alert message: 'Perform action'
20
+ end
18
21
 
19
22
  scroll.spacer height: 10
20
23
  scroll.button \
@@ -30,7 +33,7 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
30
33
  scroll.button text: 'Button with dropdown', onClick: ->(action) do
31
34
  action.popovers_open \
32
35
  key: 'menu',
33
- location: 'bottom',
36
+ placement: 'left',
34
37
  childViews: ->(view) do
35
38
  view.panels_responsive styleClass: 'popover-menu', width: 200, childViews: ->(res) do
36
39
  res.label text: 'Item 1', styleClass: 'popover-menu-item', onClick: ->(saction) do
@@ -49,28 +52,22 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
49
52
  scroll.spacer height: 10
50
53
  scroll.button \
51
54
  text: 'Button with tooltip and dropdown',
52
- onMouseEnter: ->(action) {
53
- action.popovers_open \
54
- key: 'tooltip',
55
- location: 'top',
56
- childViews: ->(view) { view.p styleClass: 'tooltip', text: 'Tooltip 1' }
57
- },
58
- onMouseLeave: ->(action) { action.popovers_close key: 'tooltip' },
55
+ tooltip: { text: 'Tooltip 1' },
59
56
  onClick: ->(action) do
60
57
  action.popovers_open \
61
58
  key: 'menu',
62
- location: 'right',
63
- childViews: ->(view) do
64
- view.panels_responsive styleClass: 'popover-menu', width: 200, childViews: ->(res) do
65
- res.label text: 'Item 1', styleClass: 'popover-menu-item', onClick: ->(saction) do
66
- saction.popovers_close key: 'menu'
67
- end
68
- res.label text: 'Item 2', styleClass: 'popover-menu-item', onClick: ->(saction) do
69
- saction.popovers_close key: 'menu'
70
- end
71
- res.label text: 'Item 3', styleClass: 'popover-menu-item', onClick: ->(saction) do
72
- saction.popovers_close key: 'menu'
73
- end
59
+ placement: 'bottom-start',
60
+ styleClass: 'popover-menu',
61
+ width: 200,
62
+ childViews: ->(res) do
63
+ res.label text: 'Item 1', styleClass: 'popover-menu-item', onClick: ->(saction) do
64
+ saction.popovers_close key: 'menu'
65
+ end
66
+ res.label text: 'Item 2', styleClass: 'popover-menu-item', onClick: ->(saction) do
67
+ saction.popovers_close key: 'menu'
68
+ end
69
+ res.label text: 'Item 3 with very very very very very long name', styleClass: 'popover-menu-item', onClick: ->(saction) do
70
+ saction.popovers_close key: 'menu'
74
71
  end
75
72
  end
76
73
  end
@@ -81,7 +78,14 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
81
78
  styleClasses: ['icon', 'plain'],
82
79
  tooltip: { text: 'Disabled Icon button with tooltip text and custom tooltip position', position: 'right' },
83
80
  disabled: true
81
+
84
82
  scroll.spacer height: 20
83
+ scroll.button \
84
+ icon: 'info',
85
+ styleClasses: ['icon', 'text'],
86
+ onClick: ->(action) do
87
+ action.dialogs_alert message: 'Perform action'
88
+ end
85
89
 
86
90
 
87
91
 
@@ -93,11 +97,16 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
93
97
  text: 'Success',
94
98
  tooltip: { text: 'Tooltip text' }
95
99
  scroll.spacer height: 10
96
- scroll.chip text: 'With Action', onClick: ->(action) do
97
- action.dialogs_alert message: 'Perform action'
98
- end
100
+ scroll.chip \
101
+ text: 'With Action',
102
+ onClick: ->(action) do
103
+ action.dialogs_alert message: 'Perform action'
104
+ end
99
105
  scroll.spacer height: 10
100
- scroll.chip text: 'With Badge', badge: { text: '99' }
106
+ scroll.chip \
107
+ text: 'With Badge',
108
+ styleClasses: ['compact'],
109
+ badge: { text: '99' }
101
110
 
102
111
  scroll.spacer height: 20
103
112
  scroll.h2 text: 'Switch'
@@ -10,7 +10,8 @@ json_ui_page json do |page|
10
10
  end
11
11
 
12
12
  section.rows builder: ->(template) do
13
- ['texts', 'controls', 'images', 'multimedia', 'charts', 'banners', 'maps', 'misc', 'icons', 'progress', 'shareButton'].each do |component|
13
+ ['texts', 'controls', 'images', 'multimedia', 'charts', 'banners',
14
+ 'maps', 'misc', 'icons', 'progress', 'shareButton', 'steppers'].each do |component|
14
15
  template.thumbnail title: component.humanize, onClick: ->(action) do
15
16
  action.windows_open url: json_ui_garage_url(path: "views/#{component}")
16
17
  end
@@ -21,6 +21,16 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
21
21
 
22
22
  f.spacer width: 10
23
23
 
24
+ f.shareButton \
25
+ network: 'email',
26
+ url: '',
27
+ text: 'Email',
28
+ onClick: ->(action) do
29
+ action.windows_openWeb url: 'mailto://test@email.com'
30
+ end
31
+
32
+ f.spacer width: 10
33
+
24
34
  # For testing: https://developers.facebook.com/tools/debug/
25
35
  f.shareButton \
26
36
  network: 'facebook',
@@ -0,0 +1,40 @@
1
+ json.title 'Views'
2
+
3
+ page = json_ui_page json
4
+
5
+ render "#{@path_prefix}/nav_menu", json: json, page: page
6
+
7
+ page.scroll padding: { top: 20, left: 20, right: 20, bottom: 20 }, childViews: ->(scroll) do
8
+ scroll.h1 text: 'Steppers'
9
+
10
+ # scroll.spacer height: 20
11
+ # scroll.h1 text: 'Line chart using remote data'
12
+ # render "#{@path_prefix}/views/chart_data", json: json, builder: scroll
13
+
14
+ # data = {
15
+ # divider_icon: 'arrow_forward',
16
+ # steps: [*1..5].map do |index|
17
+ # {
18
+ # detail: "Item #{index}",
19
+ # url: root_url
20
+ # }
21
+ # end,
22
+ # show_numbers: true,
23
+ # small: true
24
+ # }
25
+
26
+ # # scroll.h2 text: 'Pie chart'
27
+ # scroll.stepper dataSeries: [
28
+ # -> do
29
+ # json.title 'Straberry'
30
+ # json.value 25
31
+
32
+ # # json.title 'Straberry'
33
+ # # json.value 25
34
+ # end,
35
+ # -> do
36
+ # json.title 'Banana'
37
+ # json.value 25
38
+ # end
39
+ # ]
40
+ end
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: 3.0.0
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -104,6 +104,7 @@ files:
104
104
  - app/helpers/glib/json_ui/action_builder/tours.rb
105
105
  - app/helpers/glib/json_ui/action_builder/windows.rb
106
106
  - app/helpers/glib/json_ui/analytics_helper.rb
107
+ - app/helpers/glib/json_ui/builder/mouse_events.rb
107
108
  - app/helpers/glib/json_ui/dynamic_field_builders.rb
108
109
  - app/helpers/glib/json_ui/generic_builders.rb
109
110
  - app/helpers/glib/json_ui/list_builders.rb
@@ -135,6 +136,7 @@ files:
135
136
  - app/views/json_ui/garage/actions/_dialogs.json.jbuilder
136
137
  - app/views/json_ui/garage/actions/_dialogs_show.json.jbuilder
137
138
  - app/views/json_ui/garage/actions/_http.json.jbuilder
139
+ - app/views/json_ui/garage/actions/_list.json.jbuilder
138
140
  - app/views/json_ui/garage/actions/_panels.json.jbuilder
139
141
  - app/views/json_ui/garage/actions/_reload.json.jbuilder
140
142
  - app/views/json_ui/garage/actions/_sheets.json.jbuilder
@@ -144,6 +146,7 @@ files:
144
146
  - app/views/json_ui/garage/actions/_windows.json.jbuilder
145
147
  - app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder
146
148
  - app/views/json_ui/garage/actions/index.json.jbuilder
149
+ - app/views/json_ui/garage/actions/partial_update.json.jbuilder
147
150
  - app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder
148
151
  - app/views/json_ui/garage/forms/_conditional_banner.json.jbuilder
149
152
  - app/views/json_ui/garage/forms/_partial_update_execute.json.jbuilder
@@ -263,6 +266,7 @@ files:
263
266
  - app/views/json_ui/garage/views/multimedia.json.jbuilder
264
267
  - app/views/json_ui/garage/views/progress.json.jbuilder
265
268
  - app/views/json_ui/garage/views/shareButton.json.jbuilder
269
+ - app/views/json_ui/garage/views/steppers.json.jbuilder
266
270
  - app/views/json_ui/garage/views/texts.json.jbuilder
267
271
  - app/views/layouts/json_ui/renderer.html.erb
268
272
  - config/routes.rb