openproject-primer_view_components 0.69.1 → 0.69.2
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/CHANGELOG.md +10 -0
- data/app/assets/styles/primer_view_components.css +1 -1
- data/app/assets/styles/primer_view_components.css.map +1 -1
- data/app/components/primer/alpha/segmented_control.css +1 -1
- data/app/components/primer/alpha/segmented_control.css.map +1 -1
- data/app/components/primer/beta/button.css +1 -1
- data/app/components/primer/beta/button.css.map +1 -1
- data/app/components/primer/beta/truncate.css +1 -1
- data/app/components/primer/beta/truncate.css.map +1 -1
- data/app/components/primer/open_project/flex_layout.rb +0 -2
- data/app/components/primer/open_project/grid_layout.rb +0 -2
- data/app/components/primer/open_project/tree_view.rb +1 -1
- data/app/controllers/primer/view_components/action_menu_controller.rb +52 -0
- data/app/controllers/primer/view_components/application_controller.rb +10 -0
- data/app/controllers/primer/view_components/auto_check_controller.rb +41 -0
- data/app/controllers/primer/view_components/auto_complete_test_controller.rb +55 -0
- data/app/controllers/primer/view_components/form_handler_controller.rb +31 -0
- data/app/controllers/primer/view_components/include_fragment_controller.rb +17 -0
- data/app/controllers/primer/view_components/multi_controller.rb +15 -0
- data/app/controllers/primer/view_components/nav_list_items_controller.rb +28 -0
- data/app/controllers/primer/view_components/select_panel_items_controller.rb +122 -0
- data/app/controllers/primer/view_components/toggle_switch_controller.rb +48 -0
- data/app/controllers/primer/view_components/tree_view_items.json +293 -0
- data/app/controllers/primer/view_components/tree_view_items_controller.rb +55 -0
- data/app/forms/auto_complete_form.rb +1 -1
- data/app/forms/immediate_validation_form.rb +3 -3
- data/app/lib/primer/forms/dsl/text_field_input.rb +1 -1
- data/app/views/primer/view_components/action_menu/deferred.html.erb +13 -0
- data/app/views/primer/view_components/action_menu/deferred_preload.html.erb +5 -0
- data/app/views/primer/view_components/action_menu/form_action.html.erb +2 -0
- data/app/views/primer/view_components/action_menu/landing.html.erb +3 -0
- data/app/views/primer/view_components/auto_check/_error_message.html.erb +1 -0
- data/app/views/primer/view_components/auto_check/_success_message.html.erb +1 -0
- data/app/views/primer/view_components/auto_check/_warning_message.html.erb +4 -0
- data/app/views/primer/view_components/auto_complete_test/index.html.erb +15 -0
- data/app/views/primer/view_components/auto_complete_test/no_results.html.erb +16 -0
- data/app/views/primer/view_components/form_handler/form_action.html.erb +1 -0
- data/app/views/primer/view_components/include_fragment/deferred.html.erb +3 -0
- data/app/views/primer/view_components/nav_list_items/index.html.erb +3 -0
- data/app/views/primer/view_components/select_panel_items/index.html.erb +15 -0
- data/app/views/primer/view_components/tree_view_items/async_alpha.html_fragment.erb +23 -0
- data/app/views/primer/view_components/tree_view_items/index.html_fragment.erb +24 -0
- data/lib/primer/view_components/engine.rb +4 -0
- data/lib/primer/view_components/version.rb +1 -1
- data/previews/primer/alpha/action_menu_preview/multiple_select_form.html.erb +1 -1
- data/previews/primer/alpha/action_menu_preview/single_select_form.html.erb +1 -1
- data/previews/primer/alpha/action_menu_preview/single_select_form_items.html.erb +2 -2
- data/previews/primer/alpha/action_menu_preview/with_actions.html.erb +2 -2
- data/previews/primer/alpha/action_menu_preview/with_deferred_content.html.erb +2 -2
- data/previews/primer/alpha/action_menu_preview.rb +1 -1
- data/previews/primer/alpha/auto_complete_preview.rb +6 -6
- data/previews/primer/alpha/dialog_preview.rb +1 -1
- data/previews/primer/alpha/include_fragment_preview.rb +2 -2
- data/previews/primer/alpha/select_panel_preview/custom_loading_description.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/custom_loading_label.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/eventually_local_fetch.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/eventually_local_fetch_initial_failure.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/eventually_local_fetch_no_results.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/multiselect_form.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/playground.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/remote_fetch.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/remote_fetch_filter_failure.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/remote_fetch_form.html.erb +2 -2
- data/previews/primer/alpha/select_panel_preview/remote_fetch_initial_failure.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/remote_fetch_no_results.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/single_select_form.html.erb +1 -1
- data/previews/primer/alpha/text_field_preview/input_group_leading_action_menu.html.erb +1 -1
- data/previews/primer/alpha/text_field_preview.rb +3 -3
- data/previews/primer/alpha/toggle_switch_preview.rb +11 -11
- data/previews/primer/beta/auto_complete_preview/with_submit_button.html.erb +1 -1
- data/previews/primer/beta/auto_complete_preview.rb +18 -18
- data/previews/primer/beta/nav_list_preview.rb +2 -2
- data/previews/primer/forms_preview/action_menu_form.html.erb +1 -1
- data/previews/primer/forms_preview/auto_complete_form.html.erb +1 -1
- data/previews/primer/forms_preview/example_toggle_switch_form.html.erb +2 -2
- data/previews/primer/forms_preview/multi_input_form.html.erb +1 -1
- data/previews/primer/forms_preview/select_form.html.erb +1 -1
- data/previews/primer/open_project/danger_dialog_preview/with_form_builder_form_test.html.erb +1 -1
- data/previews/primer/open_project/danger_dialog_preview/with_form_test.html.erb +1 -1
- data/previews/primer/open_project/file_tree_view_preview/playground.html.erb +1 -1
- data/previews/primer/open_project/tree_view_preview/async_alpha.html.erb +1 -1
- data/previews/primer/open_project/tree_view_preview/loading_failure.html.erb +1 -1
- data/previews/primer/open_project/tree_view_preview/loading_skeleton.html.erb +1 -1
- data/previews/primer/open_project/tree_view_preview/loading_spinner.html.erb +1 -1
- data/previews/primer/open_project/tree_view_preview/playground.html.erb +1 -1
- data/previews/primer/url_helpers.rb +1 -0
- data/static/arguments.json +16 -48
- data/static/info_arch.json +728 -2182
- metadata +29 -2
@@ -0,0 +1,293 @@
|
|
1
|
+
{
|
2
|
+
"children": {
|
3
|
+
"primer": {
|
4
|
+
"children": {
|
5
|
+
"alpha": {
|
6
|
+
"children": {
|
7
|
+
"action_bar": {
|
8
|
+
"children": {},
|
9
|
+
"files": [
|
10
|
+
"divider.rb",
|
11
|
+
"item.rb"
|
12
|
+
]
|
13
|
+
},
|
14
|
+
"action_list": {
|
15
|
+
"children": {},
|
16
|
+
"files": [
|
17
|
+
"divider.rb",
|
18
|
+
"form_wrapper.rb",
|
19
|
+
"heading.rb",
|
20
|
+
"item.rb"
|
21
|
+
]
|
22
|
+
},
|
23
|
+
"action_menu": {
|
24
|
+
"children": {},
|
25
|
+
"files": [
|
26
|
+
"action_menu_element.ts",
|
27
|
+
"group.rb",
|
28
|
+
"heading.rb",
|
29
|
+
"list.rb",
|
30
|
+
"list_wrapper.rb"
|
31
|
+
]
|
32
|
+
},
|
33
|
+
"auto_complete": {
|
34
|
+
"children": {},
|
35
|
+
"files": [
|
36
|
+
"item.rb"
|
37
|
+
]
|
38
|
+
},
|
39
|
+
"dialog": {
|
40
|
+
"children": {},
|
41
|
+
"files": [
|
42
|
+
"body.rb",
|
43
|
+
"footer.rb",
|
44
|
+
"header.rb"
|
45
|
+
]
|
46
|
+
},
|
47
|
+
"dropdown": {
|
48
|
+
"children": {},
|
49
|
+
"files": [
|
50
|
+
"menu.rb",
|
51
|
+
"menu.ts"
|
52
|
+
]
|
53
|
+
},
|
54
|
+
"file_tree_view": {
|
55
|
+
"children": {},
|
56
|
+
"files": [
|
57
|
+
"directory_item.rb",
|
58
|
+
"file_item.rb"
|
59
|
+
]
|
60
|
+
},
|
61
|
+
"nav_list": {
|
62
|
+
"children": {},
|
63
|
+
"files": [
|
64
|
+
"divider.rb",
|
65
|
+
"group.rb",
|
66
|
+
"heading.rb",
|
67
|
+
"item.rb"
|
68
|
+
]
|
69
|
+
},
|
70
|
+
"navigation": {
|
71
|
+
"children": {},
|
72
|
+
"files": [
|
73
|
+
"tab.rb"
|
74
|
+
]
|
75
|
+
},
|
76
|
+
"overlay": {
|
77
|
+
"children": {},
|
78
|
+
"files": [
|
79
|
+
"body.rb",
|
80
|
+
"footer.rb",
|
81
|
+
"header.rb"
|
82
|
+
]
|
83
|
+
},
|
84
|
+
"segmented_control": {
|
85
|
+
"children": {},
|
86
|
+
"files": [
|
87
|
+
"item.rb"
|
88
|
+
]
|
89
|
+
},
|
90
|
+
"tree_view": {
|
91
|
+
"children": {},
|
92
|
+
"files": [
|
93
|
+
"icon.rb",
|
94
|
+
"icon_pair.rb",
|
95
|
+
"item.rb",
|
96
|
+
"leaf_item.rb",
|
97
|
+
"spinner_loader.rb",
|
98
|
+
"sub_tree.rb",
|
99
|
+
"sub_tree_container.rb",
|
100
|
+
"sub_tree_item.rb",
|
101
|
+
"tree_view_icon_pair_element.ts",
|
102
|
+
"tree_view_sub_tree_item_element.ts",
|
103
|
+
"visual.rb"
|
104
|
+
]
|
105
|
+
}
|
106
|
+
},
|
107
|
+
"files": [
|
108
|
+
"action_bar.pcss",
|
109
|
+
"action_bar.rb",
|
110
|
+
"action_bar_element.ts",
|
111
|
+
"action_list.pcss",
|
112
|
+
"action_list.rb",
|
113
|
+
"action_list.ts",
|
114
|
+
"action_menu.rb",
|
115
|
+
"auto_complete.pcss",
|
116
|
+
"auto_complete.rb",
|
117
|
+
"banner.pcss",
|
118
|
+
"banner.rb",
|
119
|
+
"button_marketing.pcss",
|
120
|
+
"button_marketing.rb",
|
121
|
+
"check_box.rb",
|
122
|
+
"check_box_group.rb",
|
123
|
+
"dialog.pcss",
|
124
|
+
"dialog.rb",
|
125
|
+
"dropdown.pcss",
|
126
|
+
"dropdown.rb",
|
127
|
+
"dropdown.ts",
|
128
|
+
"file_tree_view.rb",
|
129
|
+
"form_button.rb",
|
130
|
+
"form_control.rb",
|
131
|
+
"hellip_button.rb",
|
132
|
+
"hidden_text_expander.rb",
|
133
|
+
"image.rb",
|
134
|
+
"layout.pcss",
|
135
|
+
"layout.rb",
|
136
|
+
"menu.pcss",
|
137
|
+
"menu.rb",
|
138
|
+
"modal_dialog.ts",
|
139
|
+
"multi_input.rb",
|
140
|
+
"nav_list.rb",
|
141
|
+
"octicon_symbols.rb",
|
142
|
+
"overlay.pcss",
|
143
|
+
"overlay.rb",
|
144
|
+
"radio_button.rb",
|
145
|
+
"radio_button_group.rb",
|
146
|
+
"segmented_control.pcss",
|
147
|
+
"segmented_control.rb",
|
148
|
+
"segmented_control.ts",
|
149
|
+
"select.rb",
|
150
|
+
"select_panel.pcss",
|
151
|
+
"select_panel.rb",
|
152
|
+
"select_panel_element.ts",
|
153
|
+
"stack.pcss",
|
154
|
+
"stack.rb",
|
155
|
+
"stack_item.pcss",
|
156
|
+
"stack_item.rb",
|
157
|
+
"submit_button.rb",
|
158
|
+
"tab_container.rb",
|
159
|
+
"tab_container.ts",
|
160
|
+
"tab_nav.pcss",
|
161
|
+
"tab_nav.rb",
|
162
|
+
"tab_panels.rb",
|
163
|
+
"text_area.rb",
|
164
|
+
"text_field.pcss",
|
165
|
+
"text_field.rb",
|
166
|
+
"toggle_switch.pcss",
|
167
|
+
"toggle_switch.rb",
|
168
|
+
"toggle_switch.ts",
|
169
|
+
"tool_tip.ts",
|
170
|
+
"tooltip.rb",
|
171
|
+
"tree_view.pcss",
|
172
|
+
"tree_view.rb",
|
173
|
+
"underline_nav.pcss",
|
174
|
+
"underline_nav.rb",
|
175
|
+
"underline_panels.rb",
|
176
|
+
"x_banner.ts"
|
177
|
+
]
|
178
|
+
},
|
179
|
+
"beta": {
|
180
|
+
"children": {
|
181
|
+
"auto_complete": {
|
182
|
+
"children": {},
|
183
|
+
"files": [
|
184
|
+
"auto_complete.ts",
|
185
|
+
"item.rb",
|
186
|
+
"no_result_item.rb"
|
187
|
+
]
|
188
|
+
},
|
189
|
+
"border_box": {
|
190
|
+
"children": {},
|
191
|
+
"files": [
|
192
|
+
"header.rb"
|
193
|
+
]
|
194
|
+
},
|
195
|
+
"nav_list": {
|
196
|
+
"children": {},
|
197
|
+
"files": [
|
198
|
+
"divider.rb",
|
199
|
+
"group.rb",
|
200
|
+
"heading.rb",
|
201
|
+
"item.rb"
|
202
|
+
]
|
203
|
+
}
|
204
|
+
},
|
205
|
+
"files": [
|
206
|
+
"auto_complete.rb",
|
207
|
+
"avatar.pcss",
|
208
|
+
"avatar.rb",
|
209
|
+
"avatar_stack.pcss",
|
210
|
+
"avatar_stack.rb",
|
211
|
+
"base_button.rb",
|
212
|
+
"blankslate.pcss",
|
213
|
+
"blankslate.rb",
|
214
|
+
"border_box.pcss",
|
215
|
+
"border_box.rb",
|
216
|
+
"breadcrumbs.pcss",
|
217
|
+
"breadcrumbs.rb",
|
218
|
+
"button.pcss",
|
219
|
+
"button.rb",
|
220
|
+
"button_group.pcss",
|
221
|
+
"button_group.rb",
|
222
|
+
"clipboard_copy.rb",
|
223
|
+
"clipboard_copy.ts",
|
224
|
+
"clipboard_copy_button.rb",
|
225
|
+
"close_button.rb",
|
226
|
+
"counter.pcss",
|
227
|
+
"counter.rb",
|
228
|
+
"details.rb",
|
229
|
+
"details_toggle_element.ts",
|
230
|
+
"flash.pcss",
|
231
|
+
"flash.rb",
|
232
|
+
"heading.rb",
|
233
|
+
"icon_button.rb",
|
234
|
+
"label.pcss",
|
235
|
+
"label.rb",
|
236
|
+
"link.pcss",
|
237
|
+
"link.rb",
|
238
|
+
"markdown.rb",
|
239
|
+
"nav_list.rb",
|
240
|
+
"nav_list.ts",
|
241
|
+
"nav_list_group_element.ts",
|
242
|
+
"octicon.rb",
|
243
|
+
"popover.pcss",
|
244
|
+
"popover.rb",
|
245
|
+
"progress_bar.pcss",
|
246
|
+
"progress_bar.rb",
|
247
|
+
"relative_time.rb",
|
248
|
+
"relative_time.ts",
|
249
|
+
"spinner.rb",
|
250
|
+
"state.pcss",
|
251
|
+
"state.rb",
|
252
|
+
"subhead.pcss",
|
253
|
+
"subhead.rb",
|
254
|
+
"text.rb",
|
255
|
+
"timeline_item.pcss",
|
256
|
+
"timeline_item.rb",
|
257
|
+
"truncate.pcss",
|
258
|
+
"truncate.rb"
|
259
|
+
]
|
260
|
+
},
|
261
|
+
"navigation": {
|
262
|
+
"children": {},
|
263
|
+
"files": [
|
264
|
+
"tab_component.rb"
|
265
|
+
]
|
266
|
+
}
|
267
|
+
},
|
268
|
+
"files": [
|
269
|
+
"anchored_position.ts",
|
270
|
+
"base_component.rb",
|
271
|
+
"blankslate_component.rb",
|
272
|
+
"box.rb",
|
273
|
+
"button_component.rb",
|
274
|
+
"component.rb",
|
275
|
+
"conditional_wrapper.rb",
|
276
|
+
"content.rb",
|
277
|
+
"dialog_helper.ts",
|
278
|
+
"focus_group.ts",
|
279
|
+
"icon_button.rb",
|
280
|
+
"layout_component.rb",
|
281
|
+
"primer.pcss",
|
282
|
+
"primer.ts",
|
283
|
+
"responsive_arg.rb",
|
284
|
+
"scrollable_region.ts",
|
285
|
+
"shared_events.ts",
|
286
|
+
"tooltip.rb",
|
287
|
+
"truncate.pcss",
|
288
|
+
"truncate.rb",
|
289
|
+
"utils.ts"
|
290
|
+
]
|
291
|
+
}
|
292
|
+
}
|
293
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "json"
|
4
|
+
|
5
|
+
|
6
|
+
module Primer
|
7
|
+
module ViewComponents
|
8
|
+
# :nodoc:
|
9
|
+
# :nocov:
|
10
|
+
class TreeViewItemsController < ApplicationController
|
11
|
+
TREE = JSON.parse(File.read(File.join(__dir__, "tree_view_items.json"))).freeze
|
12
|
+
|
13
|
+
def index
|
14
|
+
# delay a bit so loading spinners, etc can be seen
|
15
|
+
sleep 1
|
16
|
+
|
17
|
+
if params[:fail] == "true"
|
18
|
+
head :internal_server_error and return
|
19
|
+
end
|
20
|
+
|
21
|
+
path = JSON.parse(params[:path])
|
22
|
+
node = path.inject(TREE) do |current, segment|
|
23
|
+
current["children"][segment]
|
24
|
+
end
|
25
|
+
|
26
|
+
entries = (
|
27
|
+
node["children"].keys.map { |label| [label, :directory] } +
|
28
|
+
node["files"].map { |label| [label, :file] }
|
29
|
+
)
|
30
|
+
|
31
|
+
entries.sort_by!(&:first)
|
32
|
+
|
33
|
+
render(
|
34
|
+
locals: {
|
35
|
+
entries: entries,
|
36
|
+
path: path,
|
37
|
+
loader: (params[:loader] || :spinner).to_sym,
|
38
|
+
select_variant: (params[:select_variant] || :none).to_sym
|
39
|
+
}
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
def async_alpha
|
44
|
+
# delay a bit so loading spinners, etc can be seen
|
45
|
+
sleep 1
|
46
|
+
|
47
|
+
render(
|
48
|
+
locals: {
|
49
|
+
action_menu_expanded: params[:action_menu_expanded] == "true"
|
50
|
+
}
|
51
|
+
)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -9,7 +9,7 @@ class AutoCompleteForm < ApplicationForm
|
|
9
9
|
name: :fruit,
|
10
10
|
label: "Fruit",
|
11
11
|
caption: "Please enter your favorite fruit",
|
12
|
-
src: Primer::UrlHelpers.autocomplete_index_path,
|
12
|
+
src: Primer::UrlHelpers.primer_view_components.autocomplete_index_path,
|
13
13
|
validation_message: "Something went wrong"
|
14
14
|
)
|
15
15
|
|
@@ -8,14 +8,14 @@ class ImmediateValidationForm < ApplicationForm
|
|
8
8
|
name: :has_error,
|
9
9
|
label: "Will have error",
|
10
10
|
caption: "Every time this checks with the server, it returns an error",
|
11
|
-
auto_check_src: @view_context.example_check_error_path
|
11
|
+
auto_check_src: @view_context.primer_view_components.example_check_error_path
|
12
12
|
)
|
13
13
|
|
14
14
|
validation_form.text_field(
|
15
15
|
name: :no_error,
|
16
16
|
label: "Will not error",
|
17
17
|
caption: "Will not have an error when it checks the server",
|
18
|
-
auto_check_src: @view_context.example_check_ok_path,
|
18
|
+
auto_check_src: @view_context.primer_view_components.example_check_ok_path,
|
19
19
|
validation_message: "This message will go away once you type something"
|
20
20
|
)
|
21
21
|
|
@@ -23,7 +23,7 @@ class ImmediateValidationForm < ApplicationForm
|
|
23
23
|
name: :random_error,
|
24
24
|
label: "Random error or success",
|
25
25
|
caption: "Server checks will randomly respond with errors or success",
|
26
|
-
auto_check_src: @view_context.example_check_random_path
|
26
|
+
auto_check_src: @view_context.primer_view_components.example_check_random_path
|
27
27
|
)
|
28
28
|
end
|
29
29
|
end
|
@@ -20,7 +20,7 @@ module Primer
|
|
20
20
|
@leading_visual = system_arguments.delete(:leading_visual)
|
21
21
|
@trailing_visual = system_arguments.delete(:trailing_visual)
|
22
22
|
@leading_spinner = !!system_arguments.delete(:leading_spinner)
|
23
|
-
@clear_button_id = system_arguments.delete(:clear_button_id)
|
23
|
+
@clear_button_id = system_arguments.delete(:clear_button_id) || SecureRandom.uuid
|
24
24
|
@inset = system_arguments.delete(:inset)
|
25
25
|
@monospace = system_arguments.delete(:monospace)
|
26
26
|
@auto_check_src = system_arguments.delete(:auto_check_src)
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= render(Primer::Alpha::ActionMenu::List.new(menu_id: "deferred")) do |list| %>
|
2
|
+
<% list.with_item(label: "Copy link", value: "", autofocus: true) %>
|
3
|
+
<% list.with_item(label: "Quote reply", value: "") %>
|
4
|
+
<% list.with_item(label: "Reference in new issue", value: "") %>
|
5
|
+
<% list.with_item(
|
6
|
+
label: "Show dialog",
|
7
|
+
tag: :button,
|
8
|
+
# this dialog is rendered by demo/app/views/action_menu/deferred.html.erb
|
9
|
+
content_arguments: { "data-show-dialog-id": "my-dialog" },
|
10
|
+
value: "",
|
11
|
+
scheme: :danger
|
12
|
+
) %>
|
13
|
+
<% end %>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%= render(Primer::Alpha::ActionMenu::List.new(menu_id: "deferred-preload")) do |list| %>
|
2
|
+
<% list.with_item(label: "Copy link", value: "", autofocus: true) %>
|
3
|
+
<% list.with_item(label: "Quote reply", value: "") %>
|
4
|
+
<% list.with_item(label: "Reference in new issue", value: "") %>
|
5
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
The name <code><%= input_value %></code> is already taken.
|
@@ -0,0 +1 @@
|
|
1
|
+
The name <code><%= input_value %></code> is available.
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%# erblint:counter DeprecatedComponentsCounter 2 %>
|
2
|
+
<% @fruit_list.each do |fruit| %>
|
3
|
+
<% if params['version'] == "alpha" %>
|
4
|
+
<%= render(Primer::Alpha::AutoComplete::Item.new(value: fruit)) { fruit } %>
|
5
|
+
<% else %>
|
6
|
+
<%= render(Primer::Beta::AutoComplete::Item.new(value: fruit)) do |component| %>
|
7
|
+
<% if @visual_type == "leading" %>
|
8
|
+
<% component.with_leading_visual_icon(icon: :"mark-github") %>
|
9
|
+
<% elsif @visual_type == "trailing" %>
|
10
|
+
<% component.with_trailing_visual_icon(icon: :"mark-github") %>
|
11
|
+
<% end %>
|
12
|
+
<%= fruit %>
|
13
|
+
<% end %>
|
14
|
+
<% end %>
|
15
|
+
<% end %>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<% if @fruit_list.length > 0 %>
|
2
|
+
<% @fruit_list.each do |fruit| %>
|
3
|
+
<%= render(Primer::Beta::AutoComplete::Item.new(value: fruit)) do |component| %>
|
4
|
+
<% if @visual_type == "leading" %>
|
5
|
+
<% component.with_leading_visual_icon(icon: :"mark-github") %>
|
6
|
+
<% elsif @visual_type == "trailing" %>
|
7
|
+
<% component.with_trailing_visual_icon(icon: :"mark-github") %>
|
8
|
+
<% end %>
|
9
|
+
<%= fruit %>
|
10
|
+
<% end %>
|
11
|
+
<% end %>
|
12
|
+
<% else %>
|
13
|
+
<%= render(Primer::Beta::AutoComplete::NoResultItem.new) do %>
|
14
|
+
No results!
|
15
|
+
<% end %>
|
16
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
Params sent to server: <%= @form_params.inspect %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<% unless results.empty? %>
|
2
|
+
<%= render(Primer::Alpha::SelectPanel::ItemList.new(
|
3
|
+
select_variant: (params[:select_variant] || :multiple).to_sym,
|
4
|
+
aria: {
|
5
|
+
label: "options",
|
6
|
+
},
|
7
|
+
)) do |list| %>
|
8
|
+
<% results.each do |result| %>
|
9
|
+
<% list.with_item(content_arguments: { data: { value: result[:value] } }, active: result[:selected] || false) do |item| %>
|
10
|
+
<% item.with_description { result[:description] } %>
|
11
|
+
<%= result[:title] %>
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
14
|
+
<% end %>
|
15
|
+
<% end %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<%= render(Primer::OpenProject::TreeView::SubTree.new(path: ["primer"], node_variant: :div)) do |tree| %>
|
2
|
+
<% tree.with_sub_tree(label: "alpha") do |sub_tree| %>
|
3
|
+
<% sub_tree.with_leading_visual_icons do |icons| %>
|
4
|
+
<% icons.with_expanded_icon(icon: :"file-directory-open-fill", color: :accent) %>
|
5
|
+
<% icons.with_collapsed_icon(icon: :"file-directory-fill", color: :accent) %>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
<% sub_tree.with_sub_tree(label: "action_menu", expanded: action_menu_expanded) do |sub_tree| %>
|
9
|
+
<% sub_tree.with_leading_visual_icons do |icons| %>
|
10
|
+
<% icons.with_expanded_icon(icon: :"file-directory-open-fill", color: :accent) %>
|
11
|
+
<% icons.with_collapsed_icon(icon: :"file-directory-fill", color: :accent) %>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<% sub_tree.with_leaf(label: "group.rb") do |item| %>
|
15
|
+
<% item.with_leading_visual_icon(icon: :file) %>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<% sub_tree.with_leaf(label: "heading.rb") do |item| %>
|
19
|
+
<% item.with_leading_visual_icon(icon: :file) %>
|
20
|
+
<% end %>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<%= render(Primer::OpenProject::TreeView::SubTree.new(path: path, select_variant: select_variant, node_variant: :div)) do |tree| %>
|
2
|
+
<% next if params[:empty] == "true" %>
|
3
|
+
<% entries.each do |label, type| %>
|
4
|
+
<% case type %>
|
5
|
+
<% when :directory %>
|
6
|
+
<% tree.with_sub_tree(label: label, select_variant: select_variant) do |sub_tree| %>
|
7
|
+
<% sub_tree.with_leading_visual_icons do |icons| %>
|
8
|
+
<% icons.with_expanded_icon(icon: :"file-directory-open-fill", color: :accent) %>
|
9
|
+
<% icons.with_collapsed_icon(icon: :"file-directory-fill", color: :accent) %>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
<% if loader == :skeleton %>
|
13
|
+
<% sub_tree.with_loading_skeleton(src: primer_view_components.tree_view_items_path(loader: "skeleton", select_variant: select_variant)) %>
|
14
|
+
<% else %>
|
15
|
+
<% sub_tree.with_loading_spinner(src: primer_view_components.tree_view_items_path(loader: "spinner", select_variant: select_variant)) %>
|
16
|
+
<% end %>
|
17
|
+
<% end %>
|
18
|
+
<% when :file %>
|
19
|
+
<% tree.with_leaf(label: label, select_variant: select_variant) do |item| %>
|
20
|
+
<% item.with_leading_visual_icon(icon: :file) %>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
<% end %>
|
@@ -27,6 +27,10 @@ module Primer
|
|
27
27
|
config.primer_view_components.validate_class_names = !Rails.env.production?
|
28
28
|
config.primer_view_components.raise_on_invalid_aria = false
|
29
29
|
|
30
|
+
initializer "primer_view_components.mime_types" do
|
31
|
+
Mime::Type.register "text/fragment+html", :html_fragment
|
32
|
+
end
|
33
|
+
|
30
34
|
initializer "primer_view_components.assets" do |app|
|
31
35
|
app.config.assets.precompile += %w[primer_view_components] if app.config.respond_to?(:assets)
|
32
36
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= form_with(url: action_menu_form_action_path(format: route_format)) do |f| %>
|
1
|
+
<%= form_with(url: primer_view_components.action_menu_form_action_path(format: route_format)) do |f| %>
|
2
2
|
<% content = -> (base) do %>
|
3
3
|
<% base.with_item(label: "Fast forward", data: { value: "fast_forward" }) %>
|
4
4
|
<% base.with_item(label: "Recursive", data: { value: "recursive" }) %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= form_with(url: action_menu_form_action_path(format: route_format)) do |f| %>
|
1
|
+
<%= form_with(url: primer_view_components.action_menu_form_action_path(format: route_format)) do |f| %>
|
2
2
|
<%= render(Primer::Alpha::ActionMenu.new(select_variant: :single, dynamic_label: true, dynamic_label_prefix: "Strategy", form_arguments: { builder: f, name: "foo" })) do |menu| %>
|
3
3
|
<% menu.with_show_button { "Strategy" } %>
|
4
4
|
<% menu.with_item(label: "Fast forward", data: { value: "fast_forward" }) %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<% contents = -> (menu) do %>
|
2
2
|
<% menu.with_item(
|
3
3
|
label: "Repository",
|
4
|
-
href: action_menu_form_action_path(format: route_format),
|
4
|
+
href: primer_view_components.action_menu_form_action_path(format: route_format),
|
5
5
|
form_arguments: {
|
6
6
|
method: :post,
|
7
7
|
inputs: [{
|
@@ -15,7 +15,7 @@
|
|
15
15
|
) %>
|
16
16
|
<% menu.with_item(
|
17
17
|
label: "Date",
|
18
|
-
href: action_menu_form_action_path(format: route_format),
|
18
|
+
href: primer_view_components.action_menu_form_action_path(format: route_format),
|
19
19
|
form_arguments: {
|
20
20
|
method: :post,
|
21
21
|
inputs: [{
|
@@ -10,11 +10,11 @@
|
|
10
10
|
<% component.with_show_button { "Trigger" } %>
|
11
11
|
<% contents = -> (base) do %>
|
12
12
|
<% base.with_item(label: "Alert", tag: :button, id: "alert-item", disabled: disable_items) %>
|
13
|
-
<% base.with_item(label: "Navigate", tag: :a, content_arguments: { href: action_menu_landing_path }, disabled: disable_items) %>
|
13
|
+
<% base.with_item(label: "Navigate", tag: :a, content_arguments: { href: primer_view_components.action_menu_landing_path }, disabled: disable_items) %>
|
14
14
|
<% base.with_item(label: "Copy text", tag: :"clipboard-copy", content_arguments: { value: "Text to copy" }, disabled: disable_items) %>
|
15
15
|
<% base.with_item(
|
16
16
|
label: "Submit form",
|
17
|
-
href: action_menu_form_action_path(format: route_format),
|
17
|
+
href: primer_view_components.action_menu_form_action_path(format: route_format),
|
18
18
|
form_arguments: {
|
19
19
|
name: "foo", value: "bar", method: :post
|
20
20
|
},
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<% if nest_in_sub_menu %>
|
2
2
|
<%= render(Primer::Alpha::ActionMenu.new) do |menu| %>
|
3
3
|
<% menu.with_show_button { "Menu with deferred content" } %>
|
4
|
-
<% menu.with_sub_menu_item(label: "Sub-menu", menu_id: "deferred", src: action_menu_deferred_path) %>
|
4
|
+
<% menu.with_sub_menu_item(label: "Sub-menu", menu_id: "deferred", src: primer_view_components.action_menu_deferred_path) %>
|
5
5
|
<% end %>
|
6
6
|
<% else %>
|
7
|
-
<%= render(Primer::Alpha::ActionMenu.new(menu_id: "deferred", src: action_menu_deferred_path)) do |menu| %>
|
7
|
+
<%= render(Primer::Alpha::ActionMenu.new(menu_id: "deferred", src: primer_view_components.action_menu_deferred_path)) do |menu| %>
|
8
8
|
<% menu.with_show_button { "Menu with deferred content" } %>
|
9
9
|
<% end %>
|
10
10
|
<% end %>
|
@@ -310,7 +310,7 @@ module Primer
|
|
310
310
|
# @label With deferred preloaded content
|
311
311
|
#
|
312
312
|
def with_deferred_preloaded_content
|
313
|
-
render(Primer::Alpha::ActionMenu.new(menu_id: "deferred-preload", preload: true, src: UrlHelpers.action_menu_deferred_preload_path)) do |menu|
|
313
|
+
render(Primer::Alpha::ActionMenu.new(menu_id: "deferred-preload", preload: true, src: UrlHelpers.primer_view_components.action_menu_deferred_preload_path)) do |menu|
|
314
314
|
menu.with_show_button { "Menu with deferred and preloaded content" }
|
315
315
|
end
|
316
316
|
end
|