@primer/view-components 0.26.0-rc.4b9be17c → 0.26.0-rc.6d3138b7

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.
@@ -15,7 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
16
16
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
17
17
  };
18
- var _ActionMenuElement_instances, _ActionMenuElement_abortController, _ActionMenuElement_originalLabel, _ActionMenuElement_inputName, _ActionMenuElement_invokerBeingClicked, _ActionMenuElement_softDisableItems, _ActionMenuElement_potentiallyDisallowActivation, _ActionMenuElement_isAnchorActivationViaSpace, _ActionMenuElement_isActivation, _ActionMenuElement_handleInvokerActivated, _ActionMenuElement_handleDialogItemActivated, _ActionMenuElement_handleItemActivated, _ActionMenuElement_handleIncludeFragmentReplaced, _ActionMenuElement_handleFocusOut, _ActionMenuElement_show, _ActionMenuElement_hide, _ActionMenuElement_isOpen, _ActionMenuElement_setDynamicLabel, _ActionMenuElement_updateInput, _ActionMenuElement_firstItem_get;
18
+ var _ActionMenuElement_instances, _ActionMenuElement_abortController, _ActionMenuElement_originalLabel, _ActionMenuElement_inputName, _ActionMenuElement_invokerBeingClicked, _ActionMenuElement_softDisableItems, _ActionMenuElement_potentiallyDisallowActivation, _ActionMenuElement_isKeyboardActivation, _ActionMenuElement_isKeyboardActivationViaEnter, _ActionMenuElement_isKeyboardActivationViaSpace, _ActionMenuElement_isMouseActivation, _ActionMenuElement_isActivation, _ActionMenuElement_handleInvokerActivated, _ActionMenuElement_handleDialogItemActivated, _ActionMenuElement_handleItemActivated, _ActionMenuElement_activateItem, _ActionMenuElement_handleIncludeFragmentReplaced, _ActionMenuElement_handleFocusOut, _ActionMenuElement_show, _ActionMenuElement_hide, _ActionMenuElement_isOpen, _ActionMenuElement_setDynamicLabel, _ActionMenuElement_updateInput, _ActionMenuElement_firstItem_get;
19
19
  import { controller, target } from '@github/catalyst';
20
20
  import '@oddbird/popover-polyfill';
21
21
  const validSelectors = ['[role="menuitem"]', '[role="menuitemcheckbox"]', '[role="menuitemradio"]'];
@@ -152,13 +152,18 @@ let ActionMenuElement = class ActionMenuElement extends HTMLElement {
152
152
  return;
153
153
  }
154
154
  }
155
- // Pressing the space key on a link will cause the page to scroll unless preventDefault() is called.
156
- // We then click it manually to navigate.
157
- if (__classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_isAnchorActivationViaSpace).call(this, event)) {
155
+ __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_activateItem).call(this, event, item);
156
+ __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_handleItemActivated).call(this, item);
157
+ // Pressing the space key on a button or link will cause the page to scroll unless preventDefault()
158
+ // is called. While calling preventDefault() appears to have no effect on link navigation, it skips
159
+ // form submission. The code below therefore only calls preventDefault() if the button has been
160
+ // activated by the space key, and manually submits the form if the button is a submit button.
161
+ if (__classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_isKeyboardActivationViaSpace).call(this, event)) {
158
162
  event.preventDefault();
159
- item.click();
163
+ if (item.getAttribute('type') === 'submit') {
164
+ item.closest('form')?.submit();
165
+ }
160
166
  }
161
- __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_handleItemActivated).call(this, item);
162
167
  return;
163
168
  }
164
169
  if (event.type === 'include-fragment-replaced') {
@@ -264,18 +269,26 @@ _ActionMenuElement_potentiallyDisallowActivation = function _ActionMenuElement_p
264
269
  }
265
270
  return false;
266
271
  };
267
- _ActionMenuElement_isAnchorActivationViaSpace = function _ActionMenuElement_isAnchorActivationViaSpace(event) {
268
- return (event.target instanceof HTMLAnchorElement &&
269
- event instanceof KeyboardEvent &&
272
+ _ActionMenuElement_isKeyboardActivation = function _ActionMenuElement_isKeyboardActivation(event) {
273
+ return __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_isKeyboardActivationViaEnter).call(this, event) || __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_isKeyboardActivationViaSpace).call(this, event);
274
+ };
275
+ _ActionMenuElement_isKeyboardActivationViaEnter = function _ActionMenuElement_isKeyboardActivationViaEnter(event) {
276
+ return (event instanceof KeyboardEvent &&
277
+ event.type === 'keydown' &&
278
+ !(event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) &&
279
+ event.key === 'Enter');
280
+ };
281
+ _ActionMenuElement_isKeyboardActivationViaSpace = function _ActionMenuElement_isKeyboardActivationViaSpace(event) {
282
+ return (event instanceof KeyboardEvent &&
270
283
  event.type === 'keydown' &&
271
284
  !(event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) &&
272
285
  event.key === ' ');
273
286
  };
287
+ _ActionMenuElement_isMouseActivation = function _ActionMenuElement_isMouseActivation(event) {
288
+ return event instanceof MouseEvent && event.type === 'click';
289
+ };
274
290
  _ActionMenuElement_isActivation = function _ActionMenuElement_isActivation(event) {
275
- // Some browsers fire MouseEvents (Firefox) and others fire PointerEvents (Chrome). Activating an item via
276
- // enter or space counterintuitively fires one of these rather than a KeyboardEvent. Since PointerEvent
277
- // inherits from MouseEvent, it is enough to check for MouseEvent here.
278
- return (event instanceof MouseEvent && event.type === 'click') || __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_isAnchorActivationViaSpace).call(this, event);
291
+ return __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_isMouseActivation).call(this, event) || __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_isKeyboardActivation).call(this, event);
279
292
  };
280
293
  _ActionMenuElement_handleInvokerActivated = function _ActionMenuElement_handleInvokerActivated(event) {
281
294
  event.preventDefault();
@@ -350,6 +363,23 @@ _ActionMenuElement_handleItemActivated = function _ActionMenuElement_handleItemA
350
363
  detail: { item: item.parentElement, checked: this.isItemChecked(item.parentElement) },
351
364
  }));
352
365
  };
366
+ _ActionMenuElement_activateItem = function _ActionMenuElement_activateItem(event, item) {
367
+ const eventWillActivateByDefault = (event instanceof MouseEvent && event.type === 'click') ||
368
+ (event instanceof KeyboardEvent &&
369
+ event.type === 'keydown' &&
370
+ !(event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) &&
371
+ event.key === 'Enter');
372
+ // if the event will result in activating the current item by default, i.e. is a
373
+ // mouse click or keyboard enter, bail out
374
+ if (eventWillActivateByDefault)
375
+ return;
376
+ // otherwise, event will not result in activation by default, so we stop it and
377
+ // simulate a click
378
+ /* eslint-disable-next-line no-restricted-syntax */
379
+ event.stopPropagation();
380
+ const elem = item;
381
+ elem.click();
382
+ };
353
383
  _ActionMenuElement_handleIncludeFragmentReplaced = function _ActionMenuElement_handleIncludeFragmentReplaced() {
354
384
  if (__classPrivateFieldGet(this, _ActionMenuElement_instances, "a", _ActionMenuElement_firstItem_get))
355
385
  __classPrivateFieldGet(this, _ActionMenuElement_instances, "a", _ActionMenuElement_firstItem_get).focus();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/view-components",
3
- "version": "0.26.0-rc.4b9be17c",
3
+ "version": "0.26.0-rc.6d3138b7",
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",
@@ -84,7 +84,7 @@
84
84
  "postcss-import": "^16.0.0",
85
85
  "postcss-mixins": "^10.0.0",
86
86
  "postcss-preset-env": "^9.3.0",
87
- "prettier": "3.3.1",
87
+ "prettier": "3.3.0",
88
88
  "rollup": "^2.79.1",
89
89
  "rollup-plugin-terser": "^7.0.2",
90
90
  "stylelint": "^16.1.0",
@@ -2462,6 +2462,18 @@
2462
2462
  "default": "N/A",
2463
2463
  "description": "One of `:left` or `:right`. - Defaults to left"
2464
2464
  },
2465
+ {
2466
+ "name": "body_arguments",
2467
+ "type": "Hash",
2468
+ "default": "`{}`",
2469
+ "description": "[System arguments](/system-arguments) for the body wrapper."
2470
+ },
2471
+ {
2472
+ "name": "wrapper_arguments",
2473
+ "type": "Hash",
2474
+ "default": "`{}`",
2475
+ "description": "[System arguments](/system-arguments) for the `TabContainer` wrapper."
2476
+ },
2465
2477
  {
2466
2478
  "name": "system_arguments",
2467
2479
  "type": "Hash",
@@ -1220,7 +1220,6 @@
1220
1220
  },
1221
1221
  "Primer::Beta::Spinner": {
1222
1222
  "DEFAULT_SIZE": "medium",
1223
- "DEFAULT_SR_TEXT": "Loading",
1224
1223
  "DEFAULT_STYLE": "box-sizing: content-box; color: var(--color-icon-primary);",
1225
1224
  "SIZE_MAPPINGS": {
1226
1225
  "small": 16,
@@ -7628,6 +7628,18 @@
7628
7628
  "default": "N/A",
7629
7629
  "description": "One of `:left` or `:right`. - Defaults to left"
7630
7630
  },
7631
+ {
7632
+ "name": "body_arguments",
7633
+ "type": "Hash",
7634
+ "default": "`{}`",
7635
+ "description": "{{link_to_system_arguments_docs}} for the body wrapper."
7636
+ },
7637
+ {
7638
+ "name": "wrapper_arguments",
7639
+ "type": "Hash",
7640
+ "default": "`{}`",
7641
+ "description": "{{link_to_system_arguments_docs}} for the `TabContainer` wrapper."
7642
+ },
7631
7643
  {
7632
7644
  "name": "system_arguments",
7633
7645
  "type": "Hash",