@primer/view-components 0.31.0-rc.1e5f6225 → 0.31.0-rc.40a4bff6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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", _SelectPanelElement_handleItemActivated).call(this, item, false);
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).focus();
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).focus();
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, shouldClose = true) {
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 && shouldClose) {
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 element = this.selectedItems[0]?.element;
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.1e5f6225",
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",
@@ -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": [
@@ -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
  },