@primer/view-components 0.27.1-rc.f35adaba → 0.28.0-rc.4d641547
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.
- package/app/assets/javascripts/app/components/primer/alpha/action_menu/action_menu_element.d.ts +0 -9
- package/app/assets/javascripts/app/components/primer/alpha/select_panel_element.d.ts +64 -0
- package/app/assets/javascripts/app/components/primer/aria_live.d.ts +8 -0
- package/app/assets/javascripts/app/components/primer/primer.d.ts +4 -0
- package/app/assets/javascripts/app/components/primer/shared_events.d.ts +9 -0
- package/app/assets/javascripts/primer_view_components.js +1 -1
- package/app/assets/javascripts/primer_view_components.js.map +1 -1
- package/app/assets/styles/primer_view_components.css +1 -1
- package/app/assets/styles/primer_view_components.css.map +1 -1
- package/app/components/primer/alpha/action_list.css +1 -1
- package/app/components/primer/alpha/action_menu/action_menu_element.d.ts +0 -9
- package/app/components/primer/alpha/select_panel_element.d.ts +64 -0
- package/app/components/primer/alpha/select_panel_element.js +922 -0
- package/app/components/primer/aria_live.d.ts +8 -0
- package/app/components/primer/aria_live.js +38 -0
- package/app/components/primer/primer.d.ts +4 -0
- package/app/components/primer/primer.js +4 -0
- package/app/components/primer/shared_events.d.ts +9 -0
- package/app/components/primer/shared_events.js +1 -0
- package/package.json +2 -1
- package/static/arguments.json +118 -0
- package/static/audited_at.json +1 -0
- package/static/constants.json +16 -0
- package/static/info_arch.json +830 -75
- package/static/previews.json +268 -0
- package/static/statuses.json +1 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
const safeDocument = typeof document === 'undefined' ? undefined : document;
|
2
|
+
// Announce an element's text to the screen reader.
|
3
|
+
export function announceFromElement(el, options) {
|
4
|
+
announce(getTextContent(el), options);
|
5
|
+
}
|
6
|
+
// Announce message update to screen reader.
|
7
|
+
// Note: Use caution when using this function while a dialog is active.
|
8
|
+
// If the message is updated while the dialog is open, the screen reader may not announce the live region.
|
9
|
+
export function announce(message, options) {
|
10
|
+
const { assertive, element } = options ?? {};
|
11
|
+
setContainerContent(message, assertive, element);
|
12
|
+
}
|
13
|
+
// Set aria-live container to message.
|
14
|
+
function setContainerContent(message, assertive, element) {
|
15
|
+
const getQuerySelector = () => {
|
16
|
+
return assertive ? '#js-global-screen-reader-notice-assertive' : '#js-global-screen-reader-notice';
|
17
|
+
};
|
18
|
+
const container = element ?? safeDocument?.querySelector(getQuerySelector());
|
19
|
+
if (!container)
|
20
|
+
return;
|
21
|
+
if (container.textContent === message) {
|
22
|
+
/* This is a hack due to the way the aria live API works.
|
23
|
+
A screen reader will not read a live region again
|
24
|
+
if the text is the same. Adding a space character tells
|
25
|
+
the browser that the live region has updated,
|
26
|
+
which will cause it to read again, but with no audible difference. */
|
27
|
+
container.textContent = `${message}\u00A0`;
|
28
|
+
}
|
29
|
+
else {
|
30
|
+
container.textContent = message;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
// Gets the trimmed text content of an element.
|
34
|
+
function getTextContent(el) {
|
35
|
+
// innerText does not contain hidden text
|
36
|
+
/* eslint-disable-next-line github/no-innerText */
|
37
|
+
return (el.getAttribute('aria-label') || el.innerText || '').trim();
|
38
|
+
}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import '@github/include-fragment-element';
|
2
|
+
import '@github/remote-input-element';
|
2
3
|
import './alpha/action_list';
|
3
4
|
import './alpha/action_bar_element';
|
4
5
|
import './alpha/dropdown';
|
@@ -6,6 +7,8 @@ import './anchored_position';
|
|
6
7
|
import './dialog_helper';
|
7
8
|
import './focus_group';
|
8
9
|
import './scrollable_region';
|
10
|
+
import './aria_live';
|
11
|
+
import './shared_events';
|
9
12
|
import './alpha/image_crop';
|
10
13
|
import './alpha/modal_dialog';
|
11
14
|
import './beta/nav_list';
|
@@ -22,3 +25,4 @@ import '../../../lib/primer/forms/primer_multi_input';
|
|
22
25
|
import '../../../lib/primer/forms/primer_text_field';
|
23
26
|
import '../../../lib/primer/forms/toggle_switch_input';
|
24
27
|
import './alpha/action_menu/action_menu_element';
|
28
|
+
import './alpha/select_panel_element';
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import '@github/include-fragment-element';
|
2
|
+
import '@github/remote-input-element';
|
2
3
|
import './alpha/action_list';
|
3
4
|
import './alpha/action_bar_element';
|
4
5
|
import './alpha/dropdown';
|
@@ -6,6 +7,8 @@ import './anchored_position';
|
|
6
7
|
import './dialog_helper';
|
7
8
|
import './focus_group';
|
8
9
|
import './scrollable_region';
|
10
|
+
import './aria_live';
|
11
|
+
import './shared_events';
|
9
12
|
import './alpha/image_crop';
|
10
13
|
import './alpha/modal_dialog';
|
11
14
|
import './beta/nav_list';
|
@@ -22,3 +25,4 @@ import '../../../lib/primer/forms/primer_multi_input';
|
|
22
25
|
import '../../../lib/primer/forms/primer_text_field';
|
23
26
|
import '../../../lib/primer/forms/toggle_switch_input';
|
24
27
|
import './alpha/action_menu/action_menu_element';
|
28
|
+
import './alpha/select_panel_element';
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@primer/view-components",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.28.0-rc.4d641547",
|
4
4
|
"description": "ViewComponents for the Primer Design System",
|
5
5
|
"main": "app/assets/javascripts/primer_view_components.js",
|
6
6
|
"module": "app/components/primer/primer.js",
|
@@ -50,6 +50,7 @@
|
|
50
50
|
"@github/image-crop-element": "^5.0.0",
|
51
51
|
"@github/include-fragment-element": "^6.1.1",
|
52
52
|
"@github/relative-time-element": "^4.0.0",
|
53
|
+
"@github/remote-input-element": "^0.4.0",
|
53
54
|
"@github/tab-container-element": "^3.1.2",
|
54
55
|
"@oddbird/popover-polyfill": "^0.4.0",
|
55
56
|
"@primer/behaviors": "^1.3.4"
|
package/static/arguments.json
CHANGED
@@ -2352,6 +2352,124 @@
|
|
2352
2352
|
}
|
2353
2353
|
]
|
2354
2354
|
},
|
2355
|
+
{
|
2356
|
+
"component": "SelectPanel",
|
2357
|
+
"status": "alpha",
|
2358
|
+
"a11y_reviewed": false,
|
2359
|
+
"short_name": "SelectPanel",
|
2360
|
+
"source": "https://github.com/primer/view_components/tree/main/app/components/primer/alpha/select_panel.rb",
|
2361
|
+
"lookbook": "https://primer.style/view-components/lookbook/inspect/primer/alpha/select_panel/default/",
|
2362
|
+
"parameters": [
|
2363
|
+
{
|
2364
|
+
"name": "src",
|
2365
|
+
"type": "String",
|
2366
|
+
"default": "`nil`",
|
2367
|
+
"description": "The URL to fetch search results from."
|
2368
|
+
},
|
2369
|
+
{
|
2370
|
+
"name": "title",
|
2371
|
+
"type": "String",
|
2372
|
+
"default": "`\"Menu\"`",
|
2373
|
+
"description": "The title that appears at the top of the panel."
|
2374
|
+
},
|
2375
|
+
{
|
2376
|
+
"name": "id",
|
2377
|
+
"type": "String",
|
2378
|
+
"default": "`self.class.generate_id`",
|
2379
|
+
"description": "The unique ID of the panel."
|
2380
|
+
},
|
2381
|
+
{
|
2382
|
+
"name": "size",
|
2383
|
+
"type": "Symbol",
|
2384
|
+
"default": "`:small`",
|
2385
|
+
"description": "The size of the panel. One of `:auto`, `:large`, `:medium`, `:medium_portrait`, `:small`, or `:xlarge`."
|
2386
|
+
},
|
2387
|
+
{
|
2388
|
+
"name": "select_variant",
|
2389
|
+
"type": "Symbol",
|
2390
|
+
"default": "`:single`",
|
2391
|
+
"description": "One of `:multiple`, `:multiple_checkbox`, `:none`, or `:single`."
|
2392
|
+
},
|
2393
|
+
{
|
2394
|
+
"name": "fetch_strategy",
|
2395
|
+
"type": "Symbol",
|
2396
|
+
"default": "`:remote`",
|
2397
|
+
"description": "One of `:eventually_local`, `:local`, or `:remote`."
|
2398
|
+
},
|
2399
|
+
{
|
2400
|
+
"name": "no_results_label",
|
2401
|
+
"type": "String",
|
2402
|
+
"default": "`\"No results found\"`",
|
2403
|
+
"description": "The label to display when no results are found."
|
2404
|
+
},
|
2405
|
+
{
|
2406
|
+
"name": "preload",
|
2407
|
+
"type": "Boolean",
|
2408
|
+
"default": "`false`",
|
2409
|
+
"description": "Whether to preload search results when the page loads. If this option is false, results are loaded when the panel is opened."
|
2410
|
+
},
|
2411
|
+
{
|
2412
|
+
"name": "dynamic_label",
|
2413
|
+
"type": "Boolean",
|
2414
|
+
"default": "`false`",
|
2415
|
+
"description": "Whether or not to display the text of the currently selected item in the show button."
|
2416
|
+
},
|
2417
|
+
{
|
2418
|
+
"name": "dynamic_label_prefix",
|
2419
|
+
"type": "String",
|
2420
|
+
"default": "`nil`",
|
2421
|
+
"description": "If provided, the prefix is prepended to the dynamic label and displayed in the show button."
|
2422
|
+
},
|
2423
|
+
{
|
2424
|
+
"name": "dynamic_aria_label_prefix",
|
2425
|
+
"type": "String",
|
2426
|
+
"default": "`nil`",
|
2427
|
+
"description": "If provided, the prefix is prepended to the dynamic label and set as the value of the `aria-label` attribute on the show button."
|
2428
|
+
},
|
2429
|
+
{
|
2430
|
+
"name": "body_id",
|
2431
|
+
"type": "String",
|
2432
|
+
"default": "`nil`",
|
2433
|
+
"description": "The unique ID of the panel body. If not provided, the body ID will be set to the panel ID with a \"-body\" suffix."
|
2434
|
+
},
|
2435
|
+
{
|
2436
|
+
"name": "list_arguments",
|
2437
|
+
"type": "Hash",
|
2438
|
+
"default": "`{}`",
|
2439
|
+
"description": "Arguments to pass to the underlying [ActionList](/components/alpha/actionlist) component. Only has an effect for the local fetch strategy."
|
2440
|
+
},
|
2441
|
+
{
|
2442
|
+
"name": "form_arguments",
|
2443
|
+
"type": "Hash",
|
2444
|
+
"default": "`{}`",
|
2445
|
+
"description": "Form arguments to pass to the underlying [ActionList](/components/alpha/actionlist) component. Only has an effect for the local fetch strategy."
|
2446
|
+
},
|
2447
|
+
{
|
2448
|
+
"name": "show_filter",
|
2449
|
+
"type": "Boolean",
|
2450
|
+
"default": "`true`",
|
2451
|
+
"description": "Whether or not to show the filter input."
|
2452
|
+
},
|
2453
|
+
{
|
2454
|
+
"name": "open_on_load",
|
2455
|
+
"type": "Boolean",
|
2456
|
+
"default": "`false`",
|
2457
|
+
"description": "Open the panel when the page loads."
|
2458
|
+
},
|
2459
|
+
{
|
2460
|
+
"name": "anchor_align",
|
2461
|
+
"type": "Symbol",
|
2462
|
+
"default": "`:start`",
|
2463
|
+
"description": "The anchor alignment of the Overlay. One of `:center`, `:end`, or `:start`."
|
2464
|
+
},
|
2465
|
+
{
|
2466
|
+
"name": "anchor_side",
|
2467
|
+
"type": "Symbol",
|
2468
|
+
"default": "`:outside_bottom`",
|
2469
|
+
"description": "The side to anchor the Overlay to. One of `:inside_bottom`, `:inside_center`, `:inside_left`, `:inside_right`, `:inside_top`, `:outside_bottom`, `:outside_left`, `:outside_right`, or `:outside_top`."
|
2470
|
+
}
|
2471
|
+
]
|
2472
|
+
},
|
2355
2473
|
{
|
2356
2474
|
"component": "SubmitButton",
|
2357
2475
|
"status": "alpha",
|
package/static/audited_at.json
CHANGED
@@ -52,6 +52,7 @@
|
|
52
52
|
"Primer::Alpha::SegmentedControl": "2023-02-01",
|
53
53
|
"Primer::Alpha::SegmentedControl::Item": "2023-02-01",
|
54
54
|
"Primer::Alpha::Select": "",
|
55
|
+
"Primer::Alpha::SelectPanel": "",
|
55
56
|
"Primer::Alpha::SubmitButton": "",
|
56
57
|
"Primer::Alpha::TabContainer": "",
|
57
58
|
"Primer::Alpha::TabNav": "",
|
package/static/constants.json
CHANGED
@@ -597,6 +597,22 @@
|
|
597
597
|
},
|
598
598
|
"Primer::Alpha::Select": {
|
599
599
|
},
|
600
|
+
"Primer::Alpha::SelectPanel": {
|
601
|
+
"DEFAULT_FETCH_STRATEGY": "remote",
|
602
|
+
"DEFAULT_PRELOAD": false,
|
603
|
+
"DEFAULT_SELECT_VARIANT": "single",
|
604
|
+
"FETCH_STRATEGIES": [
|
605
|
+
"remote",
|
606
|
+
"eventually_local",
|
607
|
+
"local"
|
608
|
+
],
|
609
|
+
"ItemList": "Primer::Alpha::ActionList",
|
610
|
+
"SELECT_VARIANT_OPTIONS": [
|
611
|
+
"single",
|
612
|
+
"multiple",
|
613
|
+
"none"
|
614
|
+
]
|
615
|
+
},
|
600
616
|
"Primer::Alpha::SubmitButton": {
|
601
617
|
},
|
602
618
|
"Primer::Alpha::TabContainer": {
|