@primer/view-components 0.31.0-rc.3d628ecc → 0.31.0-rc.40a4bff6
Sign up to get free protection for your applications and to get access to all the features.
- package/app/assets/javascripts/app/components/primer/alpha/select_panel_element.d.ts +0 -1
- package/app/assets/javascripts/primer_view_components.js +1 -1
- package/app/assets/javascripts/primer_view_components.js.map +1 -1
- package/app/components/primer/alpha/select_panel_element.d.ts +0 -1
- package/app/components/primer/alpha/select_panel_element.js +16 -7
- package/package.json +1 -1
- package/static/info_arch.json +13 -0
- package/static/previews.json +13 -0
@@ -6,7 +6,6 @@ type SelectedItem = {
|
|
6
6
|
label: string | null | undefined;
|
7
7
|
value: string | null | undefined;
|
8
8
|
inputName: string | null | undefined;
|
9
|
-
element: SelectPanelItem;
|
10
9
|
};
|
11
10
|
export type SelectPanelItem = HTMLLIElement;
|
12
11
|
export type FilterFn = (item: SelectPanelItem, query: string) => boolean;
|
@@ -55,6 +55,7 @@ const updateWhenVisible = (() => {
|
|
55
55
|
}));
|
56
56
|
resizeObserver.observe(el.ownerDocument.documentElement);
|
57
57
|
el.addEventListener('dialog:close', () => {
|
58
|
+
el.invokerElement?.setAttribute('aria-expanded', 'false');
|
58
59
|
anchors.delete(el);
|
59
60
|
});
|
60
61
|
el.addEventListener('dialog:open', () => {
|
@@ -252,6 +253,7 @@ let SelectPanelElement = class SelectPanelElement extends HTMLElement {
|
|
252
253
|
if (event.target === this.dialog && event.type === 'close') {
|
253
254
|
// Remove data-ready so it can be set the next time the panel is opened
|
254
255
|
this.dialog.removeAttribute('data-ready');
|
256
|
+
this.invokerElement?.setAttribute('aria-expanded', 'false');
|
255
257
|
this.dispatchEvent(new CustomEvent('panelClosed', {
|
256
258
|
detail: { panel: this },
|
257
259
|
bubbles: true,
|
@@ -301,6 +303,7 @@ let SelectPanelElement = class SelectPanelElement extends HTMLElement {
|
|
301
303
|
show() {
|
302
304
|
this.updateAnchorPosition();
|
303
305
|
this.dialog.showModal();
|
306
|
+
this.invokerElement?.setAttribute('aria-expanded', 'true');
|
304
307
|
const event = new CustomEvent('dialog:open', {
|
305
308
|
detail: { dialog: this.dialog },
|
306
309
|
});
|
@@ -499,7 +502,6 @@ _SelectPanelElement_addSelectedItem = function _SelectPanelElement_addSelectedIt
|
|
499
502
|
value,
|
500
503
|
label: itemContent.querySelector('.ActionListItem-label')?.textContent?.trim(),
|
501
504
|
inputName: itemContent.getAttribute('data-input-name'),
|
502
|
-
element: item,
|
503
505
|
});
|
504
506
|
}
|
505
507
|
};
|
@@ -609,7 +611,9 @@ _SelectPanelElement_handleSearchFieldEvent = function _SelectPanelElement_handle
|
|
609
611
|
if (key === 'Enter') {
|
610
612
|
const item = this.visibleItems[0];
|
611
613
|
if (item) {
|
612
|
-
__classPrivateFieldGet(this, _SelectPanelElement_instances, "m",
|
614
|
+
const itemContent = __classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_getItemContent).call(this, item);
|
615
|
+
if (itemContent)
|
616
|
+
itemContent.click();
|
613
617
|
}
|
614
618
|
}
|
615
619
|
else if (key === 'ArrowDown') {
|
@@ -622,14 +626,18 @@ _SelectPanelElement_handleSearchFieldEvent = function _SelectPanelElement_handle
|
|
622
626
|
else if (key === 'Home') {
|
623
627
|
const item = this.visibleItems[0];
|
624
628
|
if (item) {
|
625
|
-
__classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_getItemContent).call(this, item)
|
629
|
+
const itemContent = __classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_getItemContent).call(this, item);
|
630
|
+
if (itemContent)
|
631
|
+
itemContent.focus();
|
626
632
|
event.preventDefault();
|
627
633
|
}
|
628
634
|
}
|
629
635
|
else if (key === 'End') {
|
630
636
|
if (this.visibleItems.length > 0) {
|
631
637
|
const item = this.visibleItems[this.visibleItems.length - 1];
|
632
|
-
__classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_getItemContent).call(this, item)
|
638
|
+
const itemContent = __classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_getItemContent).call(this, item);
|
639
|
+
if (itemContent)
|
640
|
+
itemContent.focus();
|
633
641
|
event.preventDefault();
|
634
642
|
}
|
635
643
|
}
|
@@ -797,7 +805,7 @@ _SelectPanelElement_handleDialogItemActivated = function _SelectPanelElement_han
|
|
797
805
|
dialog.addEventListener('close', handleDialogClose, { signal });
|
798
806
|
dialog.addEventListener('cancel', handleDialogClose, { signal });
|
799
807
|
};
|
800
|
-
_SelectPanelElement_handleItemActivated = function _SelectPanelElement_handleItemActivated(item
|
808
|
+
_SelectPanelElement_handleItemActivated = function _SelectPanelElement_handleItemActivated(item) {
|
801
809
|
// Hide popover after current event loop to prevent changes in focus from
|
802
810
|
// altering the target of the event. Not doing this specifically affects
|
803
811
|
// <a> tags. It causes the event to be sent to the currently focused element
|
@@ -806,7 +814,7 @@ _SelectPanelElement_handleItemActivated = function _SelectPanelElement_handleIte
|
|
806
814
|
// works fine.
|
807
815
|
if (this.selectVariant !== 'multiple') {
|
808
816
|
setTimeout(() => {
|
809
|
-
if (this.open
|
817
|
+
if (this.open) {
|
810
818
|
this.hide();
|
811
819
|
}
|
812
820
|
});
|
@@ -825,7 +833,8 @@ _SelectPanelElement_handleItemActivated = function _SelectPanelElement_handleIte
|
|
825
833
|
return;
|
826
834
|
const itemContent = __classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_getItemContent).call(this, item);
|
827
835
|
if (this.selectVariant === 'single') {
|
828
|
-
const
|
836
|
+
const value = this.selectedItems[0]?.value;
|
837
|
+
const element = this.visibleItems.find(el => __classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_getItemContent).call(this, el)?.getAttribute('data-value') === value);
|
829
838
|
if (element) {
|
830
839
|
__classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_getItemContent).call(this, element)?.setAttribute(this.ariaSelectionType, 'false');
|
831
840
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@primer/view-components",
|
3
|
-
"version": "0.31.0-rc.
|
3
|
+
"version": "0.31.0-rc.40a4bff6",
|
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",
|
package/static/info_arch.json
CHANGED
@@ -8105,6 +8105,19 @@
|
|
8105
8105
|
"color-contrast"
|
8106
8106
|
]
|
8107
8107
|
}
|
8108
|
+
},
|
8109
|
+
{
|
8110
|
+
"preview_path": "primer/alpha/select_panel/list_of_links",
|
8111
|
+
"name": "list_of_links",
|
8112
|
+
"snapshot": "interactive",
|
8113
|
+
"skip_rules": {
|
8114
|
+
"wont_fix": [
|
8115
|
+
"region"
|
8116
|
+
],
|
8117
|
+
"will_fix": [
|
8118
|
+
"color-contrast"
|
8119
|
+
]
|
8120
|
+
}
|
8108
8121
|
}
|
8109
8122
|
],
|
8110
8123
|
"subcomponents": [
|
package/static/previews.json
CHANGED
@@ -6160,6 +6160,19 @@
|
|
6160
6160
|
"color-contrast"
|
6161
6161
|
]
|
6162
6162
|
}
|
6163
|
+
},
|
6164
|
+
{
|
6165
|
+
"preview_path": "primer/alpha/select_panel/list_of_links",
|
6166
|
+
"name": "list_of_links",
|
6167
|
+
"snapshot": "interactive",
|
6168
|
+
"skip_rules": {
|
6169
|
+
"wont_fix": [
|
6170
|
+
"region"
|
6171
|
+
],
|
6172
|
+
"will_fix": [
|
6173
|
+
"color-contrast"
|
6174
|
+
]
|
6175
|
+
}
|
6163
6176
|
}
|
6164
6177
|
]
|
6165
6178
|
},
|