glib-web 0.5.58 → 0.5.63

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0530acf902c8752058a734963723a16e5811befbe70266998c69a8f4aaa848d1
4
- data.tar.gz: 78382d21966ea3f149afc4b8ce1dc31505909756011979351b50359f49877bc2
3
+ metadata.gz: dacfeeb7446f91959b4e0ac4ac86bb5e8fbc80e5bce79794bfbcf98ee37398a2
4
+ data.tar.gz: 95e67ccbd12f6cea3799fbd2a378f29c6b0059e03daf813ad832c5c28605ca9a
5
5
  SHA512:
6
- metadata.gz: 8828097d8d8d4959888bbdd7634d8cbf676ddd31183b98fa16440535ace50cdde2a8f6230ca9eb0d22ef1fc8bf9e5358642b3a2652ab1b9014dcbcc3c78fca17
7
- data.tar.gz: 8d2c328743536269527adac29527b00ec2cae739cdef6c9d1ac645c041e73aa56ab5d13aeec7ec72505f813b45d96d54d1351ffc78b3eee92e0c9355dd17be1e
6
+ metadata.gz: 427e9cb5d7385eb33e3e93e71717fcd9c5318671d0f9957ca8fb0a5766beb55e1bd61e2b28516a40c2d89a04c621f08b262795594e530741d67d31d57ef921e2
7
+ data.tar.gz: f42ef59f998e58b5b2bf1a8ae8dc565261b3999d4e82d33567ba0b716f4859abcf9d3ee18916f69808a8a47c58ae7fe7273577cb7767b28348e5330142dbe8bc
@@ -0,0 +1,29 @@
1
+ module Glib
2
+ module Channel
3
+ class OnlineChannel < ApplicationCable::Channel
4
+ class << self
5
+ attr_accessor :channel_name
6
+ end
7
+
8
+ def channel_name
9
+ self.class.channel_name
10
+ end
11
+
12
+ def subscribed
13
+ stream_from "#{self.class.channel_name}_#{params['conversation_id']}"
14
+ end
15
+
16
+ def online_status(data)
17
+ ActionCable.server.broadcast \
18
+ "#{self.class.channel_name}_#{params['conversation_id']}",
19
+ action: {
20
+ action: 'component/set',
21
+ name: User.find(data['user_id']).full_name,
22
+ status: data['status'],
23
+ user_id: data['user_id'],
24
+ event: 'online_status'
25
+ }
26
+ end
27
+ end
28
+ end
29
+ end
@@ -123,13 +123,35 @@ module Glib
123
123
  end
124
124
 
125
125
  class Avatar < View
126
+ int :size
126
127
  string :url
127
128
  action :onClick
128
129
  end
129
130
 
130
131
  class Icon < View
132
+ # TODO: Remove later. Deprecated.
131
133
  icon :spec
134
+
132
135
  action :onClick
136
+ color :color
137
+
138
+ def name(value)
139
+ @name = value
140
+ end
141
+
142
+ def size(value)
143
+ @size = value
144
+ end
145
+
146
+ # Override
147
+ def created
148
+ if @name
149
+ json.material do
150
+ json.name @name
151
+ json.size @size if @size
152
+ end
153
+ end
154
+ end
133
155
  end
134
156
 
135
157
  # class Banner < View
@@ -241,6 +241,11 @@ class Glib::JsonUi::ViewBuilder
241
241
  string :currency
242
242
  end
243
243
 
244
+ class Phone < AbstractField
245
+ string :defaultCountry
246
+ bool :disableAutoDetect
247
+ end
248
+
244
249
  class CreditCard < AbstractField
245
250
  string :publicKey
246
251
  end
@@ -9,6 +9,12 @@ section.rows builder: ->(template) do
9
9
  subaction.snackbars_alert message: 'Timeout elapsed'
10
10
  end
11
11
  end
12
+
13
+ template.thumbnail title: 'timeouts/set with repeat', onClick: ->(action) do
14
+ action.timeouts_set interval: 1000, repeat: true, onTimeout: ->(subaction) do
15
+ subaction.snackbars_alert message: 'Timeout elapsed every 1 second'
16
+ end
17
+ end
12
18
  end
13
19
 
14
20
  # section.rows builder: ->(template) do
@@ -5,7 +5,7 @@ render "#{@path_prefix}/nav_menu", json: json, page: page
5
5
 
6
6
  page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
7
7
  form.h1 text: 'Text'
8
- form.fields_password name: 'user[text1]', width: 'matchParent', label: 'Type "show"'
8
+ form.fields_password name: 'user[text1]', width: 'matchParent', label: 'Type "show"', value: ''
9
9
  form.label text: 'Typed', showIf: {
10
10
  "==": [
11
11
  {
@@ -14,6 +14,14 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
14
14
  'show'
15
15
  ]
16
16
  }
17
+ form.label text: 'Type something', showIf: {
18
+ "==": [
19
+ {
20
+ "var": 'user[text1]'
21
+ },
22
+ ''
23
+ ]
24
+ }
17
25
 
18
26
  form.spacer height: 20
19
27
  form.h1 text: 'Textarea'
@@ -45,6 +53,7 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
45
53
  form.fields_radioGroup name: 'user[radio1]', value: 'F', childViews: ->(group) do
46
54
  group.fields_radio value: 'show', label: 'Show'
47
55
  group.fields_radio value: 'hide', label: 'Hide'
56
+ group.fields_radio value: '', label: 'Empty'
48
57
  end
49
58
  form.spacer height: 10
50
59
  form.label text: 'Chosen', showIf: {
@@ -55,11 +64,19 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
55
64
  'show'
56
65
  ]
57
66
  }
67
+ form.label text: 'Unspecified', showIf: {
68
+ "==": [
69
+ {
70
+ "var": 'user[radio1]'
71
+ },
72
+ ''
73
+ ]
74
+ }
58
75
 
59
76
  form.spacer height: 20
60
77
  form.h1 text: 'Select'
61
- options = ['show', 'hide']
62
- form.fields_select name: 'user[select1]', width: 'matchParent', label: 'Select "show"', options: options
78
+ options = ['', 'show', 'hide']
79
+ form.fields_select name: 'user[select1]', width: 'matchParent', label: 'Select "show"', options: options, value: ''
63
80
  form.label text: 'Selected', showIf: {
64
81
  "==": [
65
82
  {
@@ -68,6 +85,14 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
68
85
  'show'
69
86
  ]
70
87
  }
88
+ form.label text: 'Unspecified', showIf: {
89
+ "==": [
90
+ {
91
+ "var": 'user[select1]'
92
+ },
93
+ ''
94
+ ]
95
+ }
71
96
 
72
97
  form.spacer height: 20
73
98
  form.h1 text: 'Combined conditions'
@@ -90,7 +115,7 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
90
115
  form.spacer height: 10
91
116
  form.fields_check name: 'user[check2]', checkValue: 'on', label: 'Show field'
92
117
  form.spacer height: 10
93
- form.fields_text width: 'matchParent', label: 'Comment (optional)', name: 'user[comment]', value: 'This field can be submitted when it is hidden, but it is not necessary (i.e. up to the app)', showIf: {
118
+ form.fields_text width: 'matchParent', label: 'Comment (optional)', name: 'user[comment]', value: 'This field should be submitted even when it is hidden', showIf: {
94
119
  "==": [
95
120
  {
96
121
  "var": 'user[check2]'
@@ -26,6 +26,18 @@ page.form \
26
26
  leftText: 'USD',
27
27
  rightText: '.00'
28
28
 
29
+ form.fields_phone \
30
+ name: 'user[phone1]',
31
+ width: 'matchParent',
32
+ label: 'Phone field'
33
+
34
+ form.fields_phone \
35
+ name: 'user[phone2]',
36
+ width: 'matchParent',
37
+ label: "Phone field with Australia as the default country",
38
+ disableAutoDetect: true, # Disable country auto detect by user IP
39
+ defaultCountry: 'AU' # ISO Country code, see: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
40
+
29
41
  form.fields_password \
30
42
  name: 'user[password]',
31
43
  width: 'matchParent',
@@ -1,11 +1,15 @@
1
1
  json.title 'Lists'
2
2
 
3
- json_ui_page json do |page|
4
- render "#{@path_prefix}/nav_menu", json: json, page: page
3
+ page_index = params[:page].to_i
4
+ page = json_ui_page json
5
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
6
 
6
- page.list firstSection: ->(section) do
7
- section.rows builder: ->(template) do
8
- template.thumbnail title: 'Click menu (web) or swipe left (Android/iOS)', leftButtons: ->(menu) do
7
+ page.list firstSection: ->(section) do
8
+ section.rows builder: ->(template) do
9
+ template.thumbnail \
10
+ title: 'Click menu (web) or swipe left (Android/iOS)',
11
+ subtitle: "Page index: #{page_index}",
12
+ leftButtons: ->(menu) do
9
13
  menu.button styleClass: 'icon', icon: 'check_box', onClick: ->(subaction) do
10
14
  subaction.dialogs_alert message: 'Tick/untick'
11
15
  end
@@ -17,38 +21,39 @@ json_ui_page json do |page|
17
21
  subaction.dialogs_alert message: 'Open'
18
22
  end
19
23
  end, editButtons: ->(menu) do
20
- menu.button text: 'Edit', onClick: ->(action) do
21
- action.dialogs_alert message: 'Perform action'
24
+ menu.button text: "Edit (ID: #{page_index})", onClick: ->(action) do
25
+ action.dialogs_alert message: 'Perform Edit action'
22
26
  end
23
27
  menu.button text: 'Delete', onClick: ->(action) do
24
- action.dialogs_alert message: 'Perform action'
28
+ action.dialogs_alert message: 'Perform Delete action'
25
29
  end
30
+ end, onClick: ->(action) do
31
+ action.windows_open url: json_ui_garage_url(path: 'lists/edit_actions', page: page_index + 1)
26
32
  end
27
33
 
28
- template.thumbnail title: 'Long press to get an alert', onLongPress: ->(action) do
29
- action.dialogs_alert message: 'This is an alert'
30
- end
34
+ template.thumbnail title: 'Long press to get an alert', onLongPress: ->(action) do
35
+ action.dialogs_alert message: 'This is an alert'
36
+ end
31
37
 
32
- template.thumbnail title: 'Long press to see menu', onLongPress: ->(action) do
33
- action.sheets_select message: 'Context Menu', buttons: ->(menu) do
34
- menu.button icon: 'edit', text: 'Edit', onClick: ->(subaction) do
35
- subaction.dialogs_alert message: 'Perform action'
36
- end
37
- menu.button icon: 'delete', text: 'Delete', onClick: ->(subaction) do
38
- subaction.dialogs_alert message: 'Perform action'
39
- end
38
+ template.thumbnail title: 'Long press to see menu', onLongPress: ->(action) do
39
+ action.sheets_select message: 'Context Menu', buttons: ->(menu) do
40
+ menu.button icon: 'edit', text: 'Edit', onClick: ->(subaction) do
41
+ subaction.dialogs_alert message: 'Perform action'
42
+ end
43
+ menu.button icon: 'delete', text: 'Delete', onClick: ->(subaction) do
44
+ subaction.dialogs_alert message: 'Perform action'
40
45
  end
41
46
  end
42
-
43
- # template.thumbnail title: 'Long press to see menu', contextButtons: ->(menu) do
44
- # menu.button text: 'Edit', onClick: ->(action) do
45
- # action.dialogs_alert message: 'Perform action'
46
- # end
47
- # menu.button text: 'Delete', onClick: ->(action) do
48
- # action.dialogs_alert message: 'Perform action'
49
- # end
50
- # end
51
47
  end
52
48
 
49
+ # template.thumbnail title: 'Long press to see menu', contextButtons: ->(menu) do
50
+ # menu.button text: 'Edit', onClick: ->(action) do
51
+ # action.dialogs_alert message: 'Perform action'
52
+ # end
53
+ # menu.button text: 'Delete', onClick: ->(action) do
54
+ # action.dialogs_alert message: 'Perform action'
55
+ # end
56
+ # end
53
57
  end
58
+
54
59
  end
@@ -1,6 +1,10 @@
1
1
  json.title 'ActionCable Real-time Update'
2
2
  page = json_ui_page json
3
3
 
4
+ online_channel = 'OnlineChannel'
5
+ typing_channel = 'IsTypingChannel'
6
+ first_user = User.first
7
+ second_user = User.offset(1).first
4
8
  # Implement a page that shows how ActionCable works in json_ui
5
9
 
6
10
  # 1. Example for list
@@ -21,13 +25,19 @@ page = json_ui_page json
21
25
 
22
26
 
23
27
  # 3. Example for online status
24
- # - TODO: Implement "repeat: true" in glib-web-npm
25
- # page.on load: ->(action) do
26
- # action.timeouts_set interval: 10000, repeat: true, onTimeout: ->(subaction) do
27
- # subaction.cables_push channel: 'message', event: 'online'
28
- # end
28
+
29
+ # put on app/channels/online_channel.rb
30
+ # class OnlineChannel < Glib::Channel::OnlineChannel
31
+ # self.channel_name = 'OnlineChannel'
29
32
  # end
30
33
 
34
+ page.on load: ->(action) do
35
+ action.timeouts_set interval: 1000, repeat: true, onTimeout: ->(subaction) do
36
+ subaction.cables_push channel: online_channel, event: 'online_status', payload: { status: true, user_id: first_user.id }
37
+ end
38
+ end
39
+
40
+ # 4. Example for typing status
31
41
 
32
42
  # put on app/channels/is_typing_channel.rb
33
43
  # class IsTypingChannel < Glib::Channel::IsTypingChannel
@@ -36,30 +46,35 @@ page = json_ui_page json
36
46
 
37
47
  page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
38
48
 
39
- channel = 'IsTypingChannel'
40
- first_user = User.first
41
- second_user = User.offset(1).first
42
-
43
49
  scroll.panels_split width: 'matchParent', content: ->(content) do
44
50
  content.left childViews: ->(left) do
51
+ online_socket_config = {
52
+ channel: online_channel,
53
+ filterKey: second_user.id,
54
+ params: {
55
+ conversation: 2
56
+ }
57
+ }
58
+ left.label actionCable: online_socket_config, text: ' '
59
+
45
60
  left.fields_textarea \
46
61
  width: 440,
47
62
  label: "Messages from #{first_user.full_name}",
48
63
  onTypeStart: lambda { |action|
49
64
  action.cables_push \
50
- channel: channel, event: 'typing',
65
+ channel: typing_channel, event: 'typing',
51
66
  payload: { status: true, user_id: first_user.id }
52
67
  },
53
68
  onTypeEnd: lambda { |action|
54
69
  action.cables_push \
55
- channel: channel,
70
+ channel: typing_channel,
56
71
  event: 'typing',
57
72
  payload: { status: false, user_id: first_user.id }
58
73
  }
59
74
  left.spacer height: 10
60
75
 
61
76
  socket_config = {
62
- channel: channel,
77
+ channel: typing_channel,
63
78
  filterKey: first_user.id,
64
79
  params: {
65
80
  conversation: 2
@@ -67,25 +82,26 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
67
82
  }
68
83
  left.label actionCable: socket_config, text: ' '
69
84
  end
85
+
70
86
  content.right childViews: ->(right) do
71
87
  right.fields_textarea \
72
88
  width: 440,
73
89
  label: "Messages from #{second_user.full_name}",
74
90
  onTypeStart: lambda { |action|
75
91
  action.cables_push \
76
- channel: channel, event: 'typing',
92
+ channel: typing_channel, event: 'typing',
77
93
  payload: { status: true, user_id: second_user.id }
78
94
  },
79
95
  onTypeEnd: lambda { |action|
80
96
  action.cables_push \
81
- channel: channel,
97
+ channel: typing_channel,
82
98
  event: 'typing',
83
99
  payload: { status: false, user_id: second_user.id }
84
100
  }
85
101
  right.spacer height: 10
86
102
 
87
103
  socket_config = {
88
- channel: channel,
104
+ channel: typing_channel,
89
105
  filterKey: second_user.id,
90
106
  params: {
91
107
  conversation: 2
@@ -0,0 +1,1450 @@
1
+ json.title 'Views'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
7
+ # From https://material.io/resources/icons
8
+ #
9
+ # To scrape, run this on JS console:
10
+ #
11
+ # function download(content, fileName, contentType) {
12
+ # var a = document.createElement("a");
13
+ # var file = new Blob([JSON.stringify(content)], { type: contentType });
14
+ # a.href = URL.createObjectURL(file);
15
+ # a.download = fileName;
16
+ # a.click();
17
+ # }
18
+ #
19
+ # let sections = [];
20
+ # let containersNode = document.querySelectorAll(".category-container");
21
+ # for (const containerNode of containersNode) {
22
+ # let titleNode = containerNode.querySelector(".category-name");
23
+ # let iconsNode = Array.from(
24
+ # containerNode.querySelectorAll(".icon-image-preview")
25
+ # );
26
+ # let section = {
27
+ # title: titleNode.textContent,
28
+ # icons: iconsNode.map(function(iconNode) {
29
+ # return iconNode.textContent;
30
+ # })
31
+ # };
32
+ # sections.push(section);
33
+ # }
34
+ # download(sections, "json.txt", "text/plain");
35
+ #
36
+ categories = [
37
+ {
38
+ "title": "action",
39
+ "icons": [
40
+ "3d_rotation",
41
+ "accessibility",
42
+ "accessibility_new",
43
+ "accessible",
44
+ "accessible_forward",
45
+ "account_balance",
46
+ "account_balance_wallet",
47
+ "account_box",
48
+ "account_circle",
49
+ "add_shopping_cart",
50
+ "add_task",
51
+ "addchart",
52
+ "admin_panel_settings",
53
+ "alarm",
54
+ "alarm_add",
55
+ "alarm_off",
56
+ "alarm_on",
57
+ "all_inbox",
58
+ "all_out",
59
+ "analytics",
60
+ "anchor",
61
+ "android",
62
+ "announcement",
63
+ "api",
64
+ "app_blocking",
65
+ "arrow_circle_down",
66
+ "arrow_circle_up",
67
+ "arrow_right_alt",
68
+ "article",
69
+ "aspect_ratio",
70
+ "assessment",
71
+ "assignment",
72
+ "assignment_ind",
73
+ "assignment_late",
74
+ "assignment_return",
75
+ "assignment_returned",
76
+ "assignment_turned_in",
77
+ "autorenew",
78
+ "backup",
79
+ "backup_table",
80
+ "batch_prediction",
81
+ "book",
82
+ "book_online",
83
+ "bookmark",
84
+ "bookmark_border",
85
+ "bookmarks",
86
+ "bug_report",
87
+ "build",
88
+ "build_circle",
89
+ "cached",
90
+ "calendar_today",
91
+ "calendar_view_day",
92
+ "camera_enhance",
93
+ "cancel_schedule_send",
94
+ "card_giftcard",
95
+ "card_membership",
96
+ "card_travel",
97
+ "change_history",
98
+ "check_circle",
99
+ "check_circle_outline",
100
+ "chrome_reader_mode",
101
+ "class",
102
+ "close_fullscreen",
103
+ "code",
104
+ "comment_bank",
105
+ "commute",
106
+ "compare_arrows",
107
+ "contact_page",
108
+ "contact_support",
109
+ "contactless",
110
+ "copyright",
111
+ "credit_card",
112
+ "dashboard",
113
+ "date_range",
114
+ "delete",
115
+ "delete_forever",
116
+ "delete_outline",
117
+ "description",
118
+ "disabled_by_default",
119
+ "dns",
120
+ "done",
121
+ "done_all",
122
+ "done_outline",
123
+ "donut_large",
124
+ "donut_small",
125
+ "drag_indicator",
126
+ "dynamic_form",
127
+ "eco",
128
+ "eject",
129
+ "euro_symbol",
130
+ "event",
131
+ "event_seat",
132
+ "exit_to_app",
133
+ "explore",
134
+ "explore_off",
135
+ "extension",
136
+ "face",
137
+ "fact_check",
138
+ "favorite",
139
+ "favorite_border",
140
+ "feedback",
141
+ "filter_alt",
142
+ "find_in_page",
143
+ "find_replace",
144
+ "fingerprint",
145
+ "flaky",
146
+ "flight_land",
147
+ "flight_takeoff",
148
+ "flip_to_back",
149
+ "flip_to_front",
150
+ "g_translate",
151
+ "gavel",
152
+ "get_app",
153
+ "gif",
154
+ "grade",
155
+ "grading",
156
+ "group_work",
157
+ "help",
158
+ "help_center",
159
+ "help_outline",
160
+ "highlight_alt",
161
+ "highlight_off",
162
+ "history",
163
+ "history_toggle_off",
164
+ "home",
165
+ "horizontal_split",
166
+ "hourglass_disabled",
167
+ "hourglass_empty",
168
+ "hourglass_full",
169
+ "http",
170
+ "https",
171
+ "important_devices",
172
+ "info",
173
+ "input",
174
+ "integration_instructions",
175
+ "invert_colors",
176
+ "label",
177
+ "label_important",
178
+ "label_off",
179
+ "language",
180
+ "launch",
181
+ "leaderboard",
182
+ "line_style",
183
+ "line_weight",
184
+ "list",
185
+ "lock",
186
+ "lock_open",
187
+ "login",
188
+ "loyalty",
189
+ "markunread_mailbox",
190
+ "maximize",
191
+ "mediation",
192
+ "minimize",
193
+ "model_training",
194
+ "next_plan",
195
+ "not_accessible",
196
+ "not_started",
197
+ "note_add",
198
+ "offline_bolt",
199
+ "offline_pin",
200
+ "online_prediction",
201
+ "opacity",
202
+ "open_in_browser",
203
+ "open_in_full",
204
+ "open_in_new",
205
+ "open_with",
206
+ "outbond",
207
+ "outlet",
208
+ "pageview",
209
+ "pan_tool",
210
+ "payment",
211
+ "pending",
212
+ "pending_actions",
213
+ "perm_camera_mic",
214
+ "perm_contact_calendar",
215
+ "perm_data_setting",
216
+ "perm_device_information",
217
+ "perm_identity",
218
+ "perm_media",
219
+ "perm_phone_msg",
220
+ "perm_scan_wifi",
221
+ "pets",
222
+ "picture_in_picture",
223
+ "picture_in_picture_alt",
224
+ "plagiarism",
225
+ "play_for_work",
226
+ "polymer",
227
+ "power_settings_new",
228
+ "pregnant_woman",
229
+ "preview",
230
+ "print",
231
+ "privacy_tip",
232
+ "published_with_changes",
233
+ "query_builder",
234
+ "question_answer",
235
+ "quickreply",
236
+ "receipt",
237
+ "record_voice_over",
238
+ "redeem",
239
+ "remove_shopping_cart",
240
+ "reorder",
241
+ "report_problem",
242
+ "request_page",
243
+ "restore",
244
+ "restore_from_trash",
245
+ "restore_page",
246
+ "room",
247
+ "rounded_corner",
248
+ "rowing",
249
+ "rule",
250
+ "schedule",
251
+ "search",
252
+ "search_off",
253
+ "settings",
254
+ "settings_applications",
255
+ "settings_backup_restore",
256
+ "settings_bluetooth",
257
+ "settings_brightness",
258
+ "settings_cell",
259
+ "settings_ethernet",
260
+ "settings_input_antenna",
261
+ "settings_input_component",
262
+ "settings_input_composite",
263
+ "settings_input_hdmi",
264
+ "settings_input_svideo",
265
+ "settings_overscan",
266
+ "settings_phone",
267
+ "settings_power",
268
+ "settings_remote",
269
+ "settings_voice",
270
+ "shop",
271
+ "shop_two",
272
+ "shopping_bag",
273
+ "shopping_basket",
274
+ "shopping_cart",
275
+ "smart_button",
276
+ "source",
277
+ "speaker_notes",
278
+ "speaker_notes_off",
279
+ "spellcheck",
280
+ "star_rate",
281
+ "stars",
282
+ "sticky_note_2",
283
+ "store",
284
+ "subject",
285
+ "subtitles_off",
286
+ "supervised_user_circle",
287
+ "supervisor_account",
288
+ "support",
289
+ "swap_horiz",
290
+ "swap_horizontal_circle",
291
+ "swap_vert",
292
+ "swap_vertical_circle",
293
+ "sync_alt",
294
+ "system_update_alt",
295
+ "tab",
296
+ "tab_unselected",
297
+ "table_view",
298
+ "text_rotate_up",
299
+ "text_rotate_vertical",
300
+ "text_rotation_angledown",
301
+ "text_rotation_angleup",
302
+ "text_rotation_down",
303
+ "text_rotation_none",
304
+ "theaters",
305
+ "thumb_down",
306
+ "thumb_up",
307
+ "thumbs_up_down",
308
+ "timeline",
309
+ "toc",
310
+ "today",
311
+ "toll",
312
+ "touch_app",
313
+ "tour",
314
+ "track_changes",
315
+ "translate",
316
+ "trending_down",
317
+ "trending_flat",
318
+ "trending_up",
319
+ "turned_in",
320
+ "turned_in_not",
321
+ "unpublished",
322
+ "update",
323
+ "upgrade",
324
+ "verified",
325
+ "verified_user",
326
+ "vertical_split",
327
+ "view_agenda",
328
+ "view_array",
329
+ "view_carousel",
330
+ "view_column",
331
+ "view_day",
332
+ "view_headline",
333
+ "view_list",
334
+ "view_module",
335
+ "view_quilt",
336
+ "view_sidebar",
337
+ "view_stream",
338
+ "view_week",
339
+ "visibility",
340
+ "visibility_off",
341
+ "voice_over_off",
342
+ "watch_later",
343
+ "wifi_protected_setup",
344
+ "work",
345
+ "work_off",
346
+ "work_outline",
347
+ "wysiwyg",
348
+ "youtube_searched_for",
349
+ "zoom_in",
350
+ "zoom_out"
351
+ ]
352
+ },
353
+ {
354
+ "title": "alert",
355
+ "icons": [
356
+ "add_alert",
357
+ "auto_delete",
358
+ "error",
359
+ "error_outline",
360
+ "notification_important",
361
+ "warning"
362
+ ]
363
+ },
364
+ {
365
+ "title": "av",
366
+ "icons": [
367
+ "4k",
368
+ "5g",
369
+ "add_to_queue",
370
+ "airplay",
371
+ "album",
372
+ "art_track",
373
+ "av_timer",
374
+ "branding_watermark",
375
+ "call_to_action",
376
+ "closed_caption",
377
+ "closed_caption_disabled",
378
+ "control_camera",
379
+ "equalizer",
380
+ "explicit",
381
+ "fast_forward",
382
+ "fast_rewind",
383
+ "featured_play_list",
384
+ "featured_video",
385
+ "fiber_dvr",
386
+ "fiber_manual_record",
387
+ "fiber_new",
388
+ "fiber_pin",
389
+ "fiber_smart_record",
390
+ "forward_10",
391
+ "forward_30",
392
+ "forward_5",
393
+ "games",
394
+ "hd",
395
+ "hearing",
396
+ "hearing_disabled",
397
+ "high_quality",
398
+ "library_add",
399
+ "library_add_check",
400
+ "library_books",
401
+ "library_music",
402
+ "loop",
403
+ "mic",
404
+ "mic_none",
405
+ "mic_off",
406
+ "missed_video_call",
407
+ "movie",
408
+ "music_video",
409
+ "new_releases",
410
+ "not_interested",
411
+ "note",
412
+ "pause",
413
+ "pause_circle_filled",
414
+ "pause_circle_outline",
415
+ "play_arrow",
416
+ "play_circle_filled",
417
+ "play_circle_outline",
418
+ "playlist_add",
419
+ "playlist_add_check",
420
+ "playlist_play",
421
+ "queue",
422
+ "queue_music",
423
+ "queue_play_next",
424
+ "radio",
425
+ "recent_actors",
426
+ "remove_from_queue",
427
+ "repeat",
428
+ "repeat_one",
429
+ "replay",
430
+ "replay_10",
431
+ "replay_30",
432
+ "replay_5",
433
+ "shuffle",
434
+ "skip_next",
435
+ "skip_previous",
436
+ "slow_motion_video",
437
+ "snooze",
438
+ "sort_by_alpha",
439
+ "speed",
440
+ "stop",
441
+ "stop_circle",
442
+ "subscriptions",
443
+ "subtitles",
444
+ "surround_sound",
445
+ "video_call",
446
+ "video_label",
447
+ "video_library",
448
+ "video_settings",
449
+ "videocam",
450
+ "videocam_off",
451
+ "volume_down",
452
+ "volume_mute",
453
+ "volume_off",
454
+ "volume_up",
455
+ "web",
456
+ "web_asset"
457
+ ]
458
+ },
459
+ {
460
+ "title": "communication",
461
+ "icons": [
462
+ "add_ic_call",
463
+ "alternate_email",
464
+ "business",
465
+ "call",
466
+ "call_end",
467
+ "call_made",
468
+ "call_merge",
469
+ "call_missed",
470
+ "call_missed_outgoing",
471
+ "call_received",
472
+ "call_split",
473
+ "cancel_presentation",
474
+ "chat",
475
+ "chat_bubble",
476
+ "chat_bubble_outline",
477
+ "clear_all",
478
+ "comment",
479
+ "contact_mail",
480
+ "contact_phone",
481
+ "contacts",
482
+ "desktop_access_disabled",
483
+ "dialer_sip",
484
+ "dialpad",
485
+ "domain_disabled",
486
+ "domain_verification",
487
+ "duo",
488
+ "email",
489
+ "forum",
490
+ "forward_to_inbox",
491
+ "hourglass_bottom",
492
+ "hourglass_top",
493
+ "import_contacts",
494
+ "import_export",
495
+ "invert_colors_off",
496
+ "list_alt",
497
+ "live_help",
498
+ "location_off",
499
+ "location_on",
500
+ "mail_outline",
501
+ "mark_chat_read",
502
+ "mark_chat_unread",
503
+ "mark_email_read",
504
+ "mark_email_unread",
505
+ "message",
506
+ "mobile_screen_share",
507
+ "more_time",
508
+ "nat",
509
+ "no_sim",
510
+ "pause_presentation",
511
+ "person_add_disabled",
512
+ "person_search",
513
+ "phone",
514
+ "phone_disabled",
515
+ "phone_enabled",
516
+ "phonelink_erase",
517
+ "phonelink_lock",
518
+ "phonelink_ring",
519
+ "phonelink_setup",
520
+ "portable_wifi_off",
521
+ "present_to_all",
522
+ "print_disabled",
523
+ "qr_code",
524
+ "qr_code_scanner",
525
+ "read_more",
526
+ "ring_volume",
527
+ "rss_feed",
528
+ "screen_share",
529
+ "sentiment_satisfied_alt",
530
+ "speaker_phone",
531
+ "stay_current_landscape",
532
+ "stay_current_portrait",
533
+ "stay_primary_landscape",
534
+ "stay_primary_portrait",
535
+ "stop_screen_share",
536
+ "swap_calls",
537
+ "textsms",
538
+ "unsubscribe",
539
+ "voicemail",
540
+ "vpn_key",
541
+ "wifi_calling"
542
+ ]
543
+ },
544
+ {
545
+ "title": "content",
546
+ "icons": [
547
+ "add",
548
+ "add_box",
549
+ "add_circle",
550
+ "add_circle_outline",
551
+ "amp_stories",
552
+ "archive",
553
+ "backspace",
554
+ "ballot",
555
+ "biotech",
556
+ "block",
557
+ "calculate",
558
+ "clear",
559
+ "content_copy",
560
+ "content_cut",
561
+ "content_paste",
562
+ "create",
563
+ "delete_sweep",
564
+ "drafts",
565
+ "dynamic_feed",
566
+ "file_copy",
567
+ "filter_list",
568
+ "flag",
569
+ "font_download",
570
+ "forward",
571
+ "gesture",
572
+ "how_to_reg",
573
+ "how_to_vote",
574
+ "inbox",
575
+ "insights",
576
+ "link",
577
+ "link_off",
578
+ "low_priority",
579
+ "mail",
580
+ "markunread",
581
+ "move_to_inbox",
582
+ "next_week",
583
+ "outlined_flag",
584
+ "policy",
585
+ "push_pin",
586
+ "redo",
587
+ "remove",
588
+ "remove_circle",
589
+ "remove_circle_outline",
590
+ "reply",
591
+ "reply_all",
592
+ "report",
593
+ "report_off",
594
+ "save",
595
+ "save_alt",
596
+ "select_all",
597
+ "send",
598
+ "sort",
599
+ "square_foot",
600
+ "text_format",
601
+ "unarchive",
602
+ "undo",
603
+ "waves",
604
+ "weekend",
605
+ "where_to_vote"
606
+ ]
607
+ },
608
+ {
609
+ "title": "device",
610
+ "icons": [
611
+ "access_alarm",
612
+ "access_alarms",
613
+ "access_time",
614
+ "ad_units",
615
+ "add_alarm",
616
+ "add_to_home_screen",
617
+ "airplanemode_active",
618
+ "airplanemode_inactive",
619
+ "battery_alert",
620
+ "battery_charging_full",
621
+ "battery_full",
622
+ "battery_std",
623
+ "battery_unknown",
624
+ "bluetooth",
625
+ "bluetooth_connected",
626
+ "bluetooth_disabled",
627
+ "bluetooth_searching",
628
+ "brightness_auto",
629
+ "brightness_high",
630
+ "brightness_low",
631
+ "brightness_medium",
632
+ "data_usage",
633
+ "developer_mode",
634
+ "devices",
635
+ "dvr",
636
+ "gps_fixed",
637
+ "gps_not_fixed",
638
+ "gps_off",
639
+ "graphic_eq",
640
+ "location_disabled",
641
+ "location_searching",
642
+ "mobile_friendly",
643
+ "mobile_off",
644
+ "nfc",
645
+ "screen_lock_landscape",
646
+ "screen_lock_portrait",
647
+ "screen_lock_rotation",
648
+ "screen_rotation",
649
+ "sd_storage",
650
+ "settings_system_daydream",
651
+ "signal_cellular_4_bar",
652
+ "signal_cellular_alt",
653
+ "signal_cellular_connected_no_internet_4_bar",
654
+ "signal_cellular_no_sim",
655
+ "signal_cellular_null",
656
+ "signal_cellular_off",
657
+ "signal_wifi_4_bar",
658
+ "signal_wifi_4_bar_lock",
659
+ "signal_wifi_off",
660
+ "storage",
661
+ "usb",
662
+ "wallpaper",
663
+ "widgets",
664
+ "wifi_lock",
665
+ "wifi_tethering"
666
+ ]
667
+ },
668
+ {
669
+ "title": "editor",
670
+ "icons": [
671
+ "add_comment",
672
+ "attach_file",
673
+ "attach_money",
674
+ "bar_chart",
675
+ "border_all",
676
+ "border_bottom",
677
+ "border_clear",
678
+ "border_horizontal",
679
+ "border_inner",
680
+ "border_left",
681
+ "border_outer",
682
+ "border_right",
683
+ "border_style",
684
+ "border_top",
685
+ "border_vertical",
686
+ "bubble_chart",
687
+ "drag_handle",
688
+ "format_align_center",
689
+ "format_align_justify",
690
+ "format_align_left",
691
+ "format_align_right",
692
+ "format_bold",
693
+ "format_clear",
694
+ "format_color_reset",
695
+ "format_indent_decrease",
696
+ "format_indent_increase",
697
+ "format_italic",
698
+ "format_line_spacing",
699
+ "format_list_bulleted",
700
+ "format_list_numbered",
701
+ "format_list_numbered_rtl",
702
+ "format_paint",
703
+ "format_quote",
704
+ "format_shapes",
705
+ "format_size",
706
+ "format_strikethrough",
707
+ "format_textdirection_l_to_r",
708
+ "format_textdirection_r_to_l",
709
+ "format_underlined",
710
+ "functions",
711
+ "height",
712
+ "highlight",
713
+ "horizontal_rule",
714
+ "insert_chart",
715
+ "insert_chart_outlined",
716
+ "insert_comment",
717
+ "insert_drive_file",
718
+ "insert_emoticon",
719
+ "insert_invitation",
720
+ "insert_link",
721
+ "insert_photo",
722
+ "linear_scale",
723
+ "merge_type",
724
+ "mode_comment",
725
+ "monetization_on",
726
+ "money_off",
727
+ "multiline_chart",
728
+ "notes",
729
+ "pie_chart",
730
+ "post_add",
731
+ "publish",
732
+ "scatter_plot",
733
+ "score",
734
+ "short_text",
735
+ "show_chart",
736
+ "space_bar",
737
+ "stacked_line_chart",
738
+ "strikethrough_s",
739
+ "subscript",
740
+ "superscript",
741
+ "table_chart",
742
+ "table_rows",
743
+ "text_fields",
744
+ "title",
745
+ "vertical_align_bottom",
746
+ "vertical_align_center",
747
+ "vertical_align_top",
748
+ "wrap_text"
749
+ ]
750
+ },
751
+ {
752
+ "title": "file",
753
+ "icons": [
754
+ "attach_email",
755
+ "attachment",
756
+ "cloud",
757
+ "cloud_circle",
758
+ "cloud_done",
759
+ "cloud_download",
760
+ "cloud_off",
761
+ "cloud_queue",
762
+ "cloud_upload",
763
+ "create_new_folder",
764
+ "folder",
765
+ "folder_open",
766
+ "folder_shared",
767
+ "request_quote",
768
+ "rule_folder",
769
+ "snippet_folder",
770
+ "text_snippet",
771
+ "topic"
772
+ ]
773
+ },
774
+ {
775
+ "title": "hardware",
776
+ "icons": [
777
+ "browser_not_supported",
778
+ "cast",
779
+ "cast_connected",
780
+ "cast_for_education",
781
+ "computer",
782
+ "desktop_mac",
783
+ "desktop_windows",
784
+ "developer_board",
785
+ "device_hub",
786
+ "device_unknown",
787
+ "devices_other",
788
+ "dock",
789
+ "gamepad",
790
+ "headset",
791
+ "headset_mic",
792
+ "keyboard",
793
+ "keyboard_arrow_down",
794
+ "keyboard_arrow_left",
795
+ "keyboard_arrow_right",
796
+ "keyboard_arrow_up",
797
+ "keyboard_backspace",
798
+ "keyboard_capslock",
799
+ "keyboard_hide",
800
+ "keyboard_return",
801
+ "keyboard_tab",
802
+ "keyboard_voice",
803
+ "laptop",
804
+ "laptop_chromebook",
805
+ "laptop_mac",
806
+ "laptop_windows",
807
+ "memory",
808
+ "mouse",
809
+ "phone_android",
810
+ "phone_iphone",
811
+ "phonelink",
812
+ "phonelink_off",
813
+ "point_of_sale",
814
+ "power_input",
815
+ "router",
816
+ "scanner",
817
+ "security",
818
+ "sim_card",
819
+ "smartphone",
820
+ "speaker",
821
+ "speaker_group",
822
+ "tablet",
823
+ "tablet_android",
824
+ "tablet_mac",
825
+ "toys",
826
+ "tv",
827
+ "videogame_asset",
828
+ "watch"
829
+ ]
830
+ },
831
+ {
832
+ "title": "home",
833
+ "icons": [
834
+ "sensor_door",
835
+ "sensor_window"
836
+ ]
837
+ },
838
+ {
839
+ "title": "image",
840
+ "icons": [
841
+ "add_a_photo",
842
+ "add_photo_alternate",
843
+ "add_to_photos",
844
+ "adjust",
845
+ "assistant",
846
+ "assistant_photo",
847
+ "audiotrack",
848
+ "bedtime",
849
+ "blur_circular",
850
+ "blur_linear",
851
+ "blur_off",
852
+ "blur_on",
853
+ "brightness_1",
854
+ "brightness_2",
855
+ "brightness_3",
856
+ "brightness_4",
857
+ "brightness_5",
858
+ "brightness_6",
859
+ "brightness_7",
860
+ "broken_image",
861
+ "brush",
862
+ "burst_mode",
863
+ "camera",
864
+ "camera_alt",
865
+ "camera_front",
866
+ "camera_rear",
867
+ "camera_roll",
868
+ "center_focus_strong",
869
+ "center_focus_weak",
870
+ "collections",
871
+ "collections_bookmark",
872
+ "color_lens",
873
+ "colorize",
874
+ "compare",
875
+ "control_point",
876
+ "control_point_duplicate",
877
+ "crop",
878
+ "crop_16_9",
879
+ "crop_3_2",
880
+ "crop_5_4",
881
+ "crop_7_5",
882
+ "crop_din",
883
+ "crop_free",
884
+ "crop_landscape",
885
+ "crop_original",
886
+ "crop_portrait",
887
+ "crop_rotate",
888
+ "crop_square",
889
+ "dehaze",
890
+ "details",
891
+ "edit",
892
+ "euro",
893
+ "exposure",
894
+ "exposure_neg_1",
895
+ "exposure_neg_2",
896
+ "exposure_plus_1",
897
+ "exposure_plus_2",
898
+ "exposure_zero",
899
+ "filter",
900
+ "filter_1",
901
+ "filter_2",
902
+ "filter_3",
903
+ "filter_4",
904
+ "filter_5",
905
+ "filter_6",
906
+ "filter_7",
907
+ "filter_8",
908
+ "filter_9",
909
+ "filter_9_plus",
910
+ "filter_b_and_w",
911
+ "filter_center_focus",
912
+ "filter_drama",
913
+ "filter_frames",
914
+ "filter_hdr",
915
+ "filter_none",
916
+ "filter_tilt_shift",
917
+ "filter_vintage",
918
+ "flare",
919
+ "flash_auto",
920
+ "flash_off",
921
+ "flash_on",
922
+ "flip",
923
+ "flip_camera_android",
924
+ "flip_camera_ios",
925
+ "gradient",
926
+ "grain",
927
+ "grid_off",
928
+ "grid_on",
929
+ "hdr_off",
930
+ "hdr_on",
931
+ "hdr_strong",
932
+ "hdr_weak",
933
+ "healing",
934
+ "image",
935
+ "image_aspect_ratio",
936
+ "image_not_supported",
937
+ "image_search",
938
+ "iso",
939
+ "landscape",
940
+ "leak_add",
941
+ "leak_remove",
942
+ "lens",
943
+ "linked_camera",
944
+ "looks",
945
+ "looks_3",
946
+ "looks_4",
947
+ "looks_5",
948
+ "looks_6",
949
+ "looks_one",
950
+ "looks_two",
951
+ "loupe",
952
+ "monochrome_photos",
953
+ "motion_photos_on",
954
+ "motion_photos_pause",
955
+ "motion_photos_paused",
956
+ "movie_creation",
957
+ "movie_filter",
958
+ "music_note",
959
+ "music_off",
960
+ "nature",
961
+ "nature_people",
962
+ "navigate_before",
963
+ "navigate_next",
964
+ "palette",
965
+ "panorama",
966
+ "panorama_fish_eye",
967
+ "panorama_horizontal",
968
+ "panorama_vertical",
969
+ "panorama_wide_angle",
970
+ "photo",
971
+ "photo_album",
972
+ "photo_camera",
973
+ "photo_filter",
974
+ "photo_library",
975
+ "photo_size_select_actual",
976
+ "photo_size_select_large",
977
+ "photo_size_select_small",
978
+ "picture_as_pdf",
979
+ "portrait",
980
+ "receipt_long",
981
+ "remove_red_eye",
982
+ "rotate_90_degrees_ccw",
983
+ "rotate_left",
984
+ "rotate_right",
985
+ "shutter_speed",
986
+ "slideshow",
987
+ "straighten",
988
+ "style",
989
+ "switch_camera",
990
+ "switch_video",
991
+ "tag_faces",
992
+ "texture",
993
+ "timelapse",
994
+ "timer",
995
+ "timer_10",
996
+ "timer_3",
997
+ "timer_off",
998
+ "tonality",
999
+ "transform",
1000
+ "tune",
1001
+ "view_comfy",
1002
+ "view_compact",
1003
+ "vignette",
1004
+ "wb_auto",
1005
+ "wb_cloudy",
1006
+ "wb_incandescent",
1007
+ "wb_iridescent",
1008
+ "wb_sunny"
1009
+ ]
1010
+ },
1011
+ {
1012
+ "title": "maps",
1013
+ "icons": [
1014
+ "360",
1015
+ "add_business",
1016
+ "add_location",
1017
+ "add_location_alt",
1018
+ "add_road",
1019
+ "agriculture",
1020
+ "alt_route",
1021
+ "atm",
1022
+ "beenhere",
1023
+ "bike_scooter",
1024
+ "category",
1025
+ "cleaning_services",
1026
+ "compass_calibration",
1027
+ "departure_board",
1028
+ "design_services",
1029
+ "directions",
1030
+ "directions_bike",
1031
+ "directions_boat",
1032
+ "directions_bus",
1033
+ "directions_car",
1034
+ "directions_railway",
1035
+ "directions_run",
1036
+ "directions_subway",
1037
+ "directions_transit",
1038
+ "directions_walk",
1039
+ "edit_attributes",
1040
+ "edit_location",
1041
+ "edit_road",
1042
+ "electric_bike",
1043
+ "electric_car",
1044
+ "electric_moped",
1045
+ "electric_scooter",
1046
+ "electrical_services",
1047
+ "ev_station",
1048
+ "fastfood",
1049
+ "flight",
1050
+ "handyman",
1051
+ "home_repair_service",
1052
+ "hotel",
1053
+ "hvac",
1054
+ "layers",
1055
+ "layers_clear",
1056
+ "local_activity",
1057
+ "local_airport",
1058
+ "local_atm",
1059
+ "local_bar",
1060
+ "local_cafe",
1061
+ "local_car_wash",
1062
+ "local_convenience_store",
1063
+ "local_dining",
1064
+ "local_drink",
1065
+ "local_fire_department",
1066
+ "local_florist",
1067
+ "local_gas_station",
1068
+ "local_grocery_store",
1069
+ "local_hospital",
1070
+ "local_hotel",
1071
+ "local_laundry_service",
1072
+ "local_library",
1073
+ "local_mall",
1074
+ "local_movies",
1075
+ "local_offer",
1076
+ "local_parking",
1077
+ "local_pharmacy",
1078
+ "local_phone",
1079
+ "local_pizza",
1080
+ "local_play",
1081
+ "local_police",
1082
+ "local_post_office",
1083
+ "local_printshop",
1084
+ "local_see",
1085
+ "local_shipping",
1086
+ "local_taxi",
1087
+ "map",
1088
+ "maps_ugc",
1089
+ "medical_services",
1090
+ "menu_book",
1091
+ "miscellaneous_services",
1092
+ "money",
1093
+ "moped",
1094
+ "multiple_stop",
1095
+ "museum",
1096
+ "my_location",
1097
+ "navigation",
1098
+ "near_me",
1099
+ "near_me_disabled",
1100
+ "no_meals",
1101
+ "no_transfer",
1102
+ "not_listed_location",
1103
+ "pedal_bike",
1104
+ "person_pin",
1105
+ "person_pin_circle",
1106
+ "pest_control",
1107
+ "pest_control_rodent",
1108
+ "pin_drop",
1109
+ "place",
1110
+ "plumbing",
1111
+ "rate_review",
1112
+ "restaurant",
1113
+ "restaurant_menu",
1114
+ "run_circle",
1115
+ "satellite",
1116
+ "set_meal",
1117
+ "store_mall_directory",
1118
+ "streetview",
1119
+ "subway",
1120
+ "terrain",
1121
+ "traffic",
1122
+ "train",
1123
+ "tram",
1124
+ "transfer_within_a_station",
1125
+ "transit_enterexit",
1126
+ "trip_origin",
1127
+ "two_wheeler",
1128
+ "wine_bar",
1129
+ "wrong_location",
1130
+ "zoom_out_map"
1131
+ ]
1132
+ },
1133
+ {
1134
+ "title": "navigation",
1135
+ "icons": [
1136
+ "app_settings_alt",
1137
+ "apps",
1138
+ "arrow_back",
1139
+ "arrow_back_ios",
1140
+ "arrow_downward",
1141
+ "arrow_drop_down",
1142
+ "arrow_drop_down_circle",
1143
+ "arrow_drop_up",
1144
+ "arrow_forward",
1145
+ "arrow_forward_ios",
1146
+ "arrow_left",
1147
+ "arrow_right",
1148
+ "arrow_upward",
1149
+ "campaign",
1150
+ "cancel",
1151
+ "check",
1152
+ "chevron_left",
1153
+ "chevron_right",
1154
+ "close",
1155
+ "double_arrow",
1156
+ "east",
1157
+ "expand_less",
1158
+ "expand_more",
1159
+ "first_page",
1160
+ "fullscreen",
1161
+ "fullscreen_exit",
1162
+ "home_work",
1163
+ "last_page",
1164
+ "legend_toggle",
1165
+ "menu",
1166
+ "menu_open",
1167
+ "more_horiz",
1168
+ "more_vert",
1169
+ "north",
1170
+ "north_east",
1171
+ "north_west",
1172
+ "payments",
1173
+ "refresh",
1174
+ "south",
1175
+ "south_east",
1176
+ "south_west",
1177
+ "subdirectory_arrow_left",
1178
+ "subdirectory_arrow_right",
1179
+ "switch_left",
1180
+ "switch_right",
1181
+ "unfold_less",
1182
+ "unfold_more",
1183
+ "west"
1184
+ ]
1185
+ },
1186
+ {
1187
+ "title": "notification",
1188
+ "icons": [
1189
+ "account_tree",
1190
+ "adb",
1191
+ "airline_seat_flat",
1192
+ "airline_seat_flat_angled",
1193
+ "airline_seat_individual_suite",
1194
+ "airline_seat_legroom_extra",
1195
+ "airline_seat_legroom_normal",
1196
+ "airline_seat_legroom_reduced",
1197
+ "airline_seat_recline_extra",
1198
+ "airline_seat_recline_normal",
1199
+ "bluetooth_audio",
1200
+ "confirmation_number",
1201
+ "directions_off",
1202
+ "disc_full",
1203
+ "drive_eta",
1204
+ "enhanced_encryption",
1205
+ "event_available",
1206
+ "event_busy",
1207
+ "event_note",
1208
+ "folder_special",
1209
+ "live_tv",
1210
+ "mms",
1211
+ "more",
1212
+ "network_check",
1213
+ "network_locked",
1214
+ "no_encryption",
1215
+ "ondemand_video",
1216
+ "personal_video",
1217
+ "phone_bluetooth_speaker",
1218
+ "phone_callback",
1219
+ "phone_forwarded",
1220
+ "phone_in_talk",
1221
+ "phone_locked",
1222
+ "phone_missed",
1223
+ "phone_paused",
1224
+ "power",
1225
+ "power_off",
1226
+ "priority_high",
1227
+ "sd_card",
1228
+ "sms",
1229
+ "sms_failed",
1230
+ "support_agent",
1231
+ "sync",
1232
+ "sync_disabled",
1233
+ "sync_problem",
1234
+ "system_update",
1235
+ "tap_and_play",
1236
+ "time_to_leave",
1237
+ "tv_off",
1238
+ "vibration",
1239
+ "voice_chat",
1240
+ "vpn_lock",
1241
+ "wc",
1242
+ "wifi",
1243
+ "wifi_off"
1244
+ ]
1245
+ },
1246
+ {
1247
+ "title": "places",
1248
+ "icons": [
1249
+ "ac_unit",
1250
+ "airport_shuttle",
1251
+ "all_inclusive",
1252
+ "apartment",
1253
+ "baby_changing_station",
1254
+ "backpack",
1255
+ "bathtub",
1256
+ "beach_access",
1257
+ "bento",
1258
+ "business_center",
1259
+ "carpenter",
1260
+ "casino",
1261
+ "charging_station",
1262
+ "checkroom",
1263
+ "child_care",
1264
+ "child_friendly",
1265
+ "corporate_fare",
1266
+ "countertops",
1267
+ "do_not_step",
1268
+ "do_not_touch",
1269
+ "dry",
1270
+ "elevator",
1271
+ "escalator",
1272
+ "escalator_warning",
1273
+ "family_restroom",
1274
+ "fence",
1275
+ "fire_extinguisher",
1276
+ "fitness_center",
1277
+ "food_bank",
1278
+ "foundation",
1279
+ "free_breakfast",
1280
+ "golf_course",
1281
+ "grass",
1282
+ "hot_tub",
1283
+ "house",
1284
+ "house_siding",
1285
+ "kitchen",
1286
+ "meeting_room",
1287
+ "microwave",
1288
+ "night_shelter",
1289
+ "no_backpack",
1290
+ "no_cell",
1291
+ "no_drinks",
1292
+ "no_flash",
1293
+ "no_food",
1294
+ "no_meeting_room",
1295
+ "no_photography",
1296
+ "no_stroller",
1297
+ "pool",
1298
+ "rice_bowl",
1299
+ "roofing",
1300
+ "room_preferences",
1301
+ "room_service",
1302
+ "rv_hookup",
1303
+ "smoke_free",
1304
+ "smoking_rooms",
1305
+ "soap",
1306
+ "spa",
1307
+ "sports_bar",
1308
+ "stairs",
1309
+ "storefront",
1310
+ "stroller",
1311
+ "tapas",
1312
+ "tty",
1313
+ "umbrella",
1314
+ "wash",
1315
+ "water_damage",
1316
+ "wheelchair_pickup"
1317
+ ]
1318
+ },
1319
+ {
1320
+ "title": "social",
1321
+ "icons": [
1322
+ "6_ft_apart",
1323
+ "architecture",
1324
+ "cake",
1325
+ "clean_hands",
1326
+ "connect_without_contact",
1327
+ "construction",
1328
+ "coronavirus",
1329
+ "deck",
1330
+ "domain",
1331
+ "elderly",
1332
+ "emoji_emotions",
1333
+ "emoji_events",
1334
+ "emoji_flags",
1335
+ "emoji_food_beverage",
1336
+ "emoji_nature",
1337
+ "emoji_objects",
1338
+ "emoji_people",
1339
+ "emoji_symbols",
1340
+ "emoji_transportation",
1341
+ "engineering",
1342
+ "facebook",
1343
+ "fireplace",
1344
+ "follow_the_signs",
1345
+ "group",
1346
+ "group_add",
1347
+ "groups",
1348
+ "history_edu",
1349
+ "king_bed",
1350
+ "location_city",
1351
+ "luggage",
1352
+ "masks",
1353
+ "military_tech",
1354
+ "mood",
1355
+ "mood_bad",
1356
+ "nights_stay",
1357
+ "no_luggage",
1358
+ "notifications",
1359
+ "notifications_active",
1360
+ "notifications_none",
1361
+ "notifications_off",
1362
+ "notifications_paused",
1363
+ "outdoor_grill",
1364
+ "pages",
1365
+ "party_mode",
1366
+ "people",
1367
+ "people_alt",
1368
+ "people_outline",
1369
+ "person",
1370
+ "person_add",
1371
+ "person_add_alt_1",
1372
+ "person_outline",
1373
+ "person_remove",
1374
+ "person_remove_alt_1",
1375
+ "plus_one",
1376
+ "poll",
1377
+ "psychology",
1378
+ "public",
1379
+ "public_off",
1380
+ "reduce_capacity",
1381
+ "sanitizer",
1382
+ "school",
1383
+ "science",
1384
+ "self_improvement",
1385
+ "sentiment_dissatisfied",
1386
+ "sentiment_satisfied",
1387
+ "sentiment_very_dissatisfied",
1388
+ "sentiment_very_satisfied",
1389
+ "share",
1390
+ "sick",
1391
+ "single_bed",
1392
+ "sports",
1393
+ "sports_baseball",
1394
+ "sports_basketball",
1395
+ "sports_cricket",
1396
+ "sports_esports",
1397
+ "sports_football",
1398
+ "sports_golf",
1399
+ "sports_handball",
1400
+ "sports_hockey",
1401
+ "sports_kabaddi",
1402
+ "sports_mma",
1403
+ "sports_motorsports",
1404
+ "sports_rugby",
1405
+ "sports_soccer",
1406
+ "sports_tennis",
1407
+ "sports_volleyball",
1408
+ "thumb_down_alt",
1409
+ "thumb_up_alt",
1410
+ "whatshot"
1411
+ ]
1412
+ },
1413
+ {
1414
+ "title": "toggle",
1415
+ "icons": [
1416
+ "check_box",
1417
+ "check_box_outline_blank",
1418
+ "indeterminate_check_box",
1419
+ "radio_button_checked",
1420
+ "radio_button_unchecked",
1421
+ "star",
1422
+ "star_border",
1423
+ "star_half",
1424
+ "star_outline",
1425
+ "toggle_off",
1426
+ "toggle_on"
1427
+ ]
1428
+ }
1429
+ ]
1430
+
1431
+ categories.each do |category|
1432
+ scroll.h3 text: category[:title]
1433
+ scroll.spacer height: 6
1434
+
1435
+ icon_names = category[:icons]
1436
+ icon_names.each do |icon_name|
1437
+ scroll.panels_column lg: { cols: 4 }, childViews: ->(column) do
1438
+ column.panels_horizontal align: 'middle', childViews: ->(horizontal) do
1439
+ horizontal.icon spec: icon_name
1440
+ horizontal.spacer width: 6
1441
+ horizontal.label text: icon_name
1442
+
1443
+ # horizontal.button icon: icon_name, text: icon_name
1444
+ end
1445
+ end
1446
+ end
1447
+
1448
+ scroll.spacer height: 20
1449
+ end
1450
+ end