openproject-primer_view_components 0.35.1 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/app/assets/javascripts/primer_view_components.js +1 -1
- data/app/assets/javascripts/primer_view_components.js.map +1 -1
- 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/action_list/item.rb +5 -3
- data/app/components/primer/alpha/action_list.rb +14 -2
- data/app/components/primer/alpha/action_menu.rb +4 -1
- data/app/components/primer/alpha/tab_nav.css +1 -1
- data/app/components/primer/alpha/tab_nav.css.json +0 -2
- data/app/components/primer/alpha/tab_nav.css.map +1 -1
- data/app/components/primer/alpha/tab_nav.pcss +0 -10
- data/app/components/primer/alpha/tab_panels.html.erb +9 -5
- data/app/components/primer/alpha/tab_panels.rb +13 -4
- data/app/components/primer/alpha/text_field.css +1 -1
- data/app/components/primer/alpha/text_field.css.map +1 -1
- data/app/components/primer/alpha/underline_nav.css +1 -1
- data/app/components/primer/alpha/underline_nav.css.json +0 -2
- data/app/components/primer/alpha/underline_nav.css.map +1 -1
- data/app/components/primer/alpha/underline_nav.pcss +1 -7
- data/app/components/primer/alpha/underline_panels.html.erb +8 -6
- data/app/components/primer/alpha/underline_panels.rb +14 -6
- data/app/components/primer/focus_group.js +1 -1
- data/app/components/primer/focus_group.ts +1 -1
- data/app/components/primer/primer.pcss +0 -1
- data/lib/primer/classify/utilities.rb +13 -13
- data/lib/primer/view_components/version.rb +2 -2
- data/previews/primer/alpha/action_list_preview.rb +19 -0
- data/static/arguments.json +30 -0
- data/static/constants.json +6 -0
- data/static/info_arch.json +50 -0
- data/static/previews.json +13 -0
- metadata +4 -8
- data/app/components/primer/alpha/underline_panels.css +0 -1
- data/app/components/primer/alpha/underline_panels.css.json +0 -6
- data/app/components/primer/alpha/underline_panels.css.map +0 -1
- data/app/components/primer/alpha/underline_panels.pcss +0 -4
@@ -18,7 +18,7 @@ module Primer
|
|
18
18
|
Primer::Alpha::Navigation::Tab.new(
|
19
19
|
selected: selected,
|
20
20
|
with_panel: true,
|
21
|
-
list:
|
21
|
+
list: true,
|
22
22
|
icon_classes: "UnderlineNav-octicon",
|
23
23
|
panel_id: "panel-#{id}",
|
24
24
|
**system_arguments
|
@@ -43,16 +43,24 @@ module Primer
|
|
43
43
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
44
44
|
def initialize(label:, align: ALIGN_DEFAULT, body_arguments: {}, wrapper_arguments: {}, **system_arguments)
|
45
45
|
@align = fetch_or_fallback(ALIGN_OPTIONS, align, ALIGN_DEFAULT)
|
46
|
-
@wrapper_arguments =
|
47
|
-
@wrapper_arguments[:tag] = :div
|
46
|
+
@wrapper_arguments = wrapper_arguments
|
48
47
|
|
49
48
|
@system_arguments = deny_tag_argument(**system_arguments)
|
50
|
-
@system_arguments[:tag] = :
|
49
|
+
@system_arguments[:tag] = :div
|
51
50
|
@system_arguments[:classes] = underline_nav_classes(@system_arguments[:classes], @align)
|
52
|
-
@system_arguments[:"aria-label"] = label
|
53
51
|
|
54
52
|
@body_arguments = deny_tag_argument(**body_arguments)
|
55
|
-
@body_arguments[:tag] = :
|
53
|
+
@body_arguments[:tag] = :ul
|
54
|
+
@body_arguments[:classes] = underline_nav_body_classes(@body_arguments[:classes])
|
55
|
+
|
56
|
+
@body_arguments[:role] = :tablist
|
57
|
+
@body_arguments[:"aria-label"] = label
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def body
|
63
|
+
Primer::BaseComponent.new(**@body_arguments)
|
56
64
|
end
|
57
65
|
end
|
58
66
|
end
|
@@ -11,7 +11,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
11
11
|
};
|
12
12
|
var _FocusGroupElement_instances, _FocusGroupElement_retainSignal, _FocusGroupElement_abortController, _FocusGroupElement_items_get;
|
13
13
|
import '@oddbird/popover-polyfill';
|
14
|
-
const validSelectors = ['[role="menuitem"]', '[role="menuitemcheckbox"]', '[role="menuitemradio"]'];
|
14
|
+
const validSelectors = ['[role="menuitem"]', '[role="menuitemcheckbox"]', '[role="menuitemradio"]', '[role="option"]'];
|
15
15
|
const menuItemSelector = validSelectors.map(selector => `:not([hidden]) > ${selector}`).join(', ');
|
16
16
|
const getMnemonicFor = (item) => item.textContent?.trim()[0].toLowerCase();
|
17
17
|
const printable = /^\S$/;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import '@oddbird/popover-polyfill'
|
2
2
|
|
3
|
-
const validSelectors = ['[role="menuitem"]', '[role="menuitemcheckbox"]', '[role="menuitemradio"]']
|
3
|
+
const validSelectors = ['[role="menuitem"]', '[role="menuitemcheckbox"]', '[role="menuitemradio"]', '[role="option"]']
|
4
4
|
const menuItemSelector = validSelectors.map(selector => `:not([hidden]) > ${selector}`).join(', ')
|
5
5
|
|
6
6
|
const getMnemonicFor = (item: Element) => item.textContent?.trim()[0].toLowerCase()
|
@@ -18,18 +18,18 @@ module Primer
|
|
18
18
|
|
19
19
|
# Replacements for some classnames that end up being a different argument key
|
20
20
|
REPLACEMENT_KEYS = {
|
21
|
-
"^f" => "font_size",
|
22
|
-
"^anim" => "animation",
|
23
|
-
"^v-align" => "vertical_align",
|
24
|
-
"^d" => "display",
|
25
|
-
"^wb" => "word_break",
|
26
|
-
"^v" => "visibility",
|
27
|
-
"^width" => "w",
|
28
|
-
"^height" => "h",
|
29
|
-
"^color-bg" => "bg",
|
30
|
-
"^color-border" => "border_color",
|
31
|
-
"^color-fg" => "color",
|
32
|
-
"^rounded" => "border_radius"
|
21
|
+
Regexp.new("^f") => "font_size",
|
22
|
+
Regexp.new("^anim") => "animation",
|
23
|
+
Regexp.new("^v-align") => "vertical_align",
|
24
|
+
Regexp.new("^d") => "display",
|
25
|
+
Regexp.new("^wb") => "word_break",
|
26
|
+
Regexp.new("^v") => "visibility",
|
27
|
+
Regexp.new("^width") => "w",
|
28
|
+
Regexp.new("^height") => "h",
|
29
|
+
Regexp.new("^color-bg") => "bg",
|
30
|
+
Regexp.new("^color-border") => "border_color",
|
31
|
+
Regexp.new("^color-fg") => "color",
|
32
|
+
Regexp.new("^rounded") => "border_radius"
|
33
33
|
}.freeze
|
34
34
|
|
35
35
|
SUPPORTED_KEY_CACHE = Hash.new { |h, k| h[k] = !UTILITIES[k].nil? }
|
@@ -190,7 +190,7 @@ module Primer
|
|
190
190
|
|
191
191
|
def infer_selector_key(selector)
|
192
192
|
REPLACEMENT_KEYS.each do |k, v|
|
193
|
-
return v.to_sym if selector.match?(
|
193
|
+
return v.to_sym if selector.match?(k)
|
194
194
|
end
|
195
195
|
selector.split("-").first.to_sym
|
196
196
|
end
|
@@ -519,6 +519,25 @@ module Primer
|
|
519
519
|
end
|
520
520
|
end
|
521
521
|
end
|
522
|
+
|
523
|
+
# @label Listbox
|
524
|
+
def listbox(
|
525
|
+
role: "listbox",
|
526
|
+
aria_selection_variant: :selected,
|
527
|
+
scheme: Primer::Alpha::ActionList::DEFAULT_SCHEME,
|
528
|
+
show_dividers: false
|
529
|
+
)
|
530
|
+
render(Primer::Alpha::ActionList.new(
|
531
|
+
role: role,
|
532
|
+
scheme: scheme,
|
533
|
+
show_dividers: show_dividers
|
534
|
+
)) do |component|
|
535
|
+
component.with_heading(title: "Action List")
|
536
|
+
component.with_item(label: "Item one", href: "/", active: true)
|
537
|
+
component.with_item(label: "Item two", href: "/")
|
538
|
+
component.with_item(label: "Item three", href: "/")
|
539
|
+
end
|
540
|
+
end
|
522
541
|
end
|
523
542
|
end
|
524
543
|
end
|
data/static/arguments.json
CHANGED
@@ -104,6 +104,12 @@
|
|
104
104
|
"default": "`:none`",
|
105
105
|
"description": "How items may be selected in the list. One of `:multiple`, `:multiple_checkbox`, `:none`, or `:single`."
|
106
106
|
},
|
107
|
+
{
|
108
|
+
"name": "aria_selection_variant",
|
109
|
+
"type": "Symbol",
|
110
|
+
"default": "`:checked`",
|
111
|
+
"description": "Specifies which aria selection to use. <%= one_of(Primer::Alpha::ActionList::ARIA_SELECTION_VARIANT_OPTIONS) %?"
|
112
|
+
},
|
107
113
|
{
|
108
114
|
"name": "form_arguments",
|
109
115
|
"type": "Hash",
|
@@ -383,6 +389,12 @@
|
|
383
389
|
"default": "`{}`",
|
384
390
|
"description": "Allows an `ActionMenu` to act as a select list in multi- and single-select modes. Pass the `builder:` and `name:` options to this hash. `builder:` should be an instance of `ActionView::Helpers::FormBuilder`, which are created by the standard Rails `#form_with` and `#form_for` helpers. The `name:` option is the desired name of the field that will be included in the params sent to the server on form submission."
|
385
391
|
},
|
392
|
+
{
|
393
|
+
"name": "overlay_arguments",
|
394
|
+
"type": "Hash",
|
395
|
+
"default": "`{}`",
|
396
|
+
"description": "Arguments to pass to the underlying [Overlay](/components/alpha/overlay)"
|
397
|
+
},
|
386
398
|
{
|
387
399
|
"name": "system_arguments",
|
388
400
|
"type": "Hash",
|
@@ -435,6 +447,12 @@
|
|
435
447
|
"default": "`:none`",
|
436
448
|
"description": "How items may be selected in the list. One of `:multiple`, `:multiple_checkbox`, `:none`, or `:single`."
|
437
449
|
},
|
450
|
+
{
|
451
|
+
"name": "aria_selection_variant",
|
452
|
+
"type": "Symbol",
|
453
|
+
"default": "`:checked`",
|
454
|
+
"description": "Specifies which aria selection to use. <%= one_of(Primer::Alpha::ActionList::ARIA_SELECTION_VARIANT_OPTIONS) %?"
|
455
|
+
},
|
438
456
|
{
|
439
457
|
"name": "form_arguments",
|
440
458
|
"type": "Hash",
|
@@ -2462,6 +2480,18 @@
|
|
2462
2480
|
"default": "N/A",
|
2463
2481
|
"description": "One of `:left` or `:right`. - Defaults to left"
|
2464
2482
|
},
|
2483
|
+
{
|
2484
|
+
"name": "body_arguments",
|
2485
|
+
"type": "Hash",
|
2486
|
+
"default": "`{}`",
|
2487
|
+
"description": "[System arguments](/system-arguments) for the body wrapper."
|
2488
|
+
},
|
2489
|
+
{
|
2490
|
+
"name": "wrapper_arguments",
|
2491
|
+
"type": "Hash",
|
2492
|
+
"default": "`{}`",
|
2493
|
+
"description": "[System arguments](/system-arguments) for the `TabContainer` wrapper."
|
2494
|
+
},
|
2465
2495
|
{
|
2466
2496
|
"name": "system_arguments",
|
2467
2497
|
"type": "Hash",
|
data/static/constants.json
CHANGED
@@ -19,6 +19,11 @@
|
|
19
19
|
"Primer::Alpha::ActionBar::Item": {
|
20
20
|
},
|
21
21
|
"Primer::Alpha::ActionList": {
|
22
|
+
"ARIA_SELECTION_VARIANT_OPTIONS": [
|
23
|
+
"selected",
|
24
|
+
"checked"
|
25
|
+
],
|
26
|
+
"DEFAULT_ARIA_SELECTION_VARIANT": "checked",
|
22
27
|
"DEFAULT_MENU_ITEM_ROLE": "menuitem",
|
23
28
|
"DEFAULT_ROLE": "list",
|
24
29
|
"DEFAULT_SCHEME": "full",
|
@@ -27,6 +32,7 @@
|
|
27
32
|
"FormWrapper": "Primer::Alpha::ActionList::FormWrapper",
|
28
33
|
"Heading": "Primer::Alpha::ActionList::Heading",
|
29
34
|
"Item": "Primer::Alpha::ActionList::Item",
|
35
|
+
"LIST_BOX_ITEM_ROLE": "option",
|
30
36
|
"MENU_ROLE": "menu",
|
31
37
|
"SCHEME_MAPPINGS": {
|
32
38
|
"full": null,
|
data/static/info_arch.json
CHANGED
@@ -246,6 +246,12 @@
|
|
246
246
|
"default": "`:none`",
|
247
247
|
"description": "How items may be selected in the list. One of `:multiple`, `:multiple_checkbox`, `:none`, or `:single`."
|
248
248
|
},
|
249
|
+
{
|
250
|
+
"name": "aria_selection_variant",
|
251
|
+
"type": "Symbol",
|
252
|
+
"default": "`:checked`",
|
253
|
+
"description": "Specifies which aria selection to use. <%= one_of(Primer::Alpha::ActionList::ARIA_SELECTION_VARIANT_OPTIONS) %?"
|
254
|
+
},
|
249
255
|
{
|
250
256
|
"name": "form_arguments",
|
251
257
|
"type": "Hash",
|
@@ -386,6 +392,13 @@
|
|
386
392
|
|
387
393
|
]
|
388
394
|
},
|
395
|
+
{
|
396
|
+
"name": "aria_selection_variant",
|
397
|
+
"description": "Returns the value of attribute aria_selection_variant.",
|
398
|
+
"parameters": [
|
399
|
+
|
400
|
+
]
|
401
|
+
},
|
389
402
|
{
|
390
403
|
"name": "build_item",
|
391
404
|
"description": "Builds a new item but does not add it to the list. Use this method\ninstead of the `#with_item` slot if you need to render an item outside\nthe context of a list, eg. if rendering additional items to append to\nan existing list, perhaps via a separate HTTP request.",
|
@@ -798,6 +811,19 @@
|
|
798
811
|
"color-contrast"
|
799
812
|
]
|
800
813
|
}
|
814
|
+
},
|
815
|
+
{
|
816
|
+
"preview_path": "primer/alpha/action_list/listbox",
|
817
|
+
"name": "listbox",
|
818
|
+
"snapshot": "false",
|
819
|
+
"skip_rules": {
|
820
|
+
"wont_fix": [
|
821
|
+
"region"
|
822
|
+
],
|
823
|
+
"will_fix": [
|
824
|
+
"color-contrast"
|
825
|
+
]
|
826
|
+
}
|
801
827
|
}
|
802
828
|
],
|
803
829
|
"subcomponents": [
|
@@ -1271,6 +1297,12 @@
|
|
1271
1297
|
"default": "`{}`",
|
1272
1298
|
"description": "Allows an `ActionMenu` to act as a select list in multi- and single-select modes. Pass the `builder:` and `name:` options to this hash. `builder:` should be an instance of `ActionView::Helpers::FormBuilder`, which are created by the standard Rails `#form_with` and `#form_for` helpers. The `name:` option is the desired name of the field that will be included in the params sent to the server on form submission."
|
1273
1299
|
},
|
1300
|
+
{
|
1301
|
+
"name": "overlay_arguments",
|
1302
|
+
"type": "Hash",
|
1303
|
+
"default": "`{}`",
|
1304
|
+
"description": "Arguments to pass to the underlying {{#link_to_component}}Primer::Alpha::Overlay{{/link_to_component}}"
|
1305
|
+
},
|
1274
1306
|
{
|
1275
1307
|
"name": "system_arguments",
|
1276
1308
|
"type": "Hash",
|
@@ -1968,6 +2000,12 @@
|
|
1968
2000
|
"default": "`:none`",
|
1969
2001
|
"description": "How items may be selected in the list. One of `:multiple`, `:multiple_checkbox`, `:none`, or `:single`."
|
1970
2002
|
},
|
2003
|
+
{
|
2004
|
+
"name": "aria_selection_variant",
|
2005
|
+
"type": "Symbol",
|
2006
|
+
"default": "`:checked`",
|
2007
|
+
"description": "Specifies which aria selection to use. <%= one_of(Primer::Alpha::ActionList::ARIA_SELECTION_VARIANT_OPTIONS) %?"
|
2008
|
+
},
|
1971
2009
|
{
|
1972
2010
|
"name": "form_arguments",
|
1973
2011
|
"type": "Hash",
|
@@ -7628,6 +7666,18 @@
|
|
7628
7666
|
"default": "N/A",
|
7629
7667
|
"description": "One of `:left` or `:right`. - Defaults to left"
|
7630
7668
|
},
|
7669
|
+
{
|
7670
|
+
"name": "body_arguments",
|
7671
|
+
"type": "Hash",
|
7672
|
+
"default": "`{}`",
|
7673
|
+
"description": "{{link_to_system_arguments_docs}} for the body wrapper."
|
7674
|
+
},
|
7675
|
+
{
|
7676
|
+
"name": "wrapper_arguments",
|
7677
|
+
"type": "Hash",
|
7678
|
+
"default": "`{}`",
|
7679
|
+
"description": "{{link_to_system_arguments_docs}} for the `TabContainer` wrapper."
|
7680
|
+
},
|
7631
7681
|
{
|
7632
7682
|
"name": "system_arguments",
|
7633
7683
|
"type": "Hash",
|
data/static/previews.json
CHANGED
@@ -428,6 +428,19 @@
|
|
428
428
|
"color-contrast"
|
429
429
|
]
|
430
430
|
}
|
431
|
+
},
|
432
|
+
{
|
433
|
+
"preview_path": "primer/alpha/action_list/listbox",
|
434
|
+
"name": "listbox",
|
435
|
+
"snapshot": "false",
|
436
|
+
"skip_rules": {
|
437
|
+
"wont_fix": [
|
438
|
+
"region"
|
439
|
+
],
|
440
|
+
"will_fix": [
|
441
|
+
"color-contrast"
|
442
|
+
]
|
443
|
+
}
|
431
444
|
}
|
432
445
|
]
|
433
446
|
},
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openproject-primer_view_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.36.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub Open Source
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-07-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionview
|
@@ -45,14 +45,14 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 19.
|
48
|
+
version: 19.15.0
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 19.
|
55
|
+
version: 19.15.0
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: view_component
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -293,11 +293,7 @@ files:
|
|
293
293
|
- app/components/primer/alpha/underline_nav.html.erb
|
294
294
|
- app/components/primer/alpha/underline_nav.pcss
|
295
295
|
- app/components/primer/alpha/underline_nav.rb
|
296
|
-
- app/components/primer/alpha/underline_panels.css
|
297
|
-
- app/components/primer/alpha/underline_panels.css.json
|
298
|
-
- app/components/primer/alpha/underline_panels.css.map
|
299
296
|
- app/components/primer/alpha/underline_panels.html.erb
|
300
|
-
- app/components/primer/alpha/underline_panels.pcss
|
301
297
|
- app/components/primer/alpha/underline_panels.rb
|
302
298
|
- app/components/primer/alpha/x_banner.d.ts
|
303
299
|
- app/components/primer/alpha/x_banner.js
|
@@ -1 +0,0 @@
|
|
1
|
-
tab-container.UnderlineNav{box-shadow:none;flex-direction:column}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["underline_panels.pcss"],"names":[],"mappings":"AAAA,2BACE,eAAgB,CAChB,qBACF","file":"underline_panels.css","sourcesContent":["tab-container.UnderlineNav {\n box-shadow: none;\n flex-direction: column;\n}\n"]}
|