@primer/view-components 0.26.0-rc.fa97526e → 0.26.0
Sign up to get free protection for your applications and to get access to all the features.
- package/app/assets/javascripts/lib/primer/forms/primer_text_field.d.ts +27 -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_menu/action_menu_element.js +13 -43
- package/app/components/primer/alpha/tab_nav.css +1 -1
- package/lib/primer/forms/primer_text_field.d.ts +27 -0
- package/lib/primer/forms/primer_text_field.js +17 -5
- package/package.json +5 -5
- package/static/arguments.json +6 -0
- package/static/info_arch.json +6 -0
@@ -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,
|
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;
|
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,18 +152,13 @@ let ActionMenuElement = class ActionMenuElement extends HTMLElement {
|
|
152
152
|
return;
|
153
153
|
}
|
154
154
|
}
|
155
|
-
|
156
|
-
|
157
|
-
|
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)) {
|
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)) {
|
162
158
|
event.preventDefault();
|
163
|
-
|
164
|
-
item.closest('form')?.submit();
|
165
|
-
}
|
159
|
+
item.click();
|
166
160
|
}
|
161
|
+
__classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_handleItemActivated).call(this, item);
|
167
162
|
return;
|
168
163
|
}
|
169
164
|
if (event.type === 'include-fragment-replaced') {
|
@@ -269,26 +264,18 @@ _ActionMenuElement_potentiallyDisallowActivation = function _ActionMenuElement_p
|
|
269
264
|
}
|
270
265
|
return false;
|
271
266
|
};
|
272
|
-
|
273
|
-
return
|
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 &&
|
267
|
+
_ActionMenuElement_isAnchorActivationViaSpace = function _ActionMenuElement_isAnchorActivationViaSpace(event) {
|
268
|
+
return (event.target instanceof HTMLAnchorElement &&
|
269
|
+
event instanceof KeyboardEvent &&
|
283
270
|
event.type === 'keydown' &&
|
284
271
|
!(event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) &&
|
285
272
|
event.key === ' ');
|
286
273
|
};
|
287
|
-
_ActionMenuElement_isMouseActivation = function _ActionMenuElement_isMouseActivation(event) {
|
288
|
-
return event instanceof MouseEvent && event.type === 'click';
|
289
|
-
};
|
290
274
|
_ActionMenuElement_isActivation = function _ActionMenuElement_isActivation(event) {
|
291
|
-
|
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);
|
292
279
|
};
|
293
280
|
_ActionMenuElement_handleInvokerActivated = function _ActionMenuElement_handleInvokerActivated(event) {
|
294
281
|
event.preventDefault();
|
@@ -363,23 +350,6 @@ _ActionMenuElement_handleItemActivated = function _ActionMenuElement_handleItemA
|
|
363
350
|
detail: { item: item.parentElement, checked: this.isItemChecked(item.parentElement) },
|
364
351
|
}));
|
365
352
|
};
|
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
|
-
};
|
383
353
|
_ActionMenuElement_handleIncludeFragmentReplaced = function _ActionMenuElement_handleIncludeFragmentReplaced() {
|
384
354
|
if (__classPrivateFieldGet(this, _ActionMenuElement_instances, "a", _ActionMenuElement_firstItem_get))
|
385
355
|
__classPrivateFieldGet(this, _ActionMenuElement_instances, "a", _ActionMenuElement_firstItem_get).focus();
|
@@ -1 +1 @@
|
|
1
|
-
.tabnav{border-bottom:var(--borderWidth-thin) solid var(--borderColor-default);margin-bottom:var(--stack-gap-normal);margin-top:0}.tabnav-tabs{display:flex;margin-bottom:calc(var(--borderWidth-thin)*-1);overflow:
|
1
|
+
.tabnav{border-bottom:var(--borderWidth-thin) solid var(--borderColor-default);margin-bottom:var(--stack-gap-normal);margin-top:0}.tabnav-tabs{display:flex;margin-bottom:calc(var(--borderWidth-thin)*-1);overflow:hidden}.tabnav::part(tablist-wrapper){border-bottom:var(--borderWidth-thin) solid var(--borderColor-default);margin-bottom:var(--stack-gap-normal)}.tabnav-tab{background-color:initial;border:var(--borderWidth-thin) solid #0000;border-bottom:0;color:var(--fgColor-muted);display:inline-block;flex-shrink:0;font-size:var(--text-body-size-medium);line-height:23px;padding:var(--base-size-8) var(--control-medium-paddingInline-spacious);-webkit-text-decoration:none;text-decoration:none;transition:color .2s cubic-bezier(.3,0,.5,1)}.tabnav-tab.selected,.tabnav-tab[aria-current]:not([aria-current=false]),.tabnav-tab[aria-selected=true]{background-color:var(--bgColor-default);border-color:var(--borderColor-default);border-radius:var(--borderRadius-medium) var(--borderRadius-medium) 0 0;color:var(--fgColor-default)}.tabnav-tab.selected .octicon,.tabnav-tab[aria-current]:not([aria-current=false]) .octicon,.tabnav-tab[aria-selected=true] .octicon{color:inherit}.tabnav-tab:hover{color:var(--fgColor-default);-webkit-text-decoration:none;text-decoration:none;transition-duration:.1s}.tabnav-tab:focus,.tabnav-tab:focus-visible{border-radius:var(--borderRadius-medium) var(--borderRadius-medium) 0 0!important;outline-offset:-6px}.tabnav-tab .octicon,.tabnav-tab:active{color:var(--fgColor-muted)}.tabnav-tab .octicon{margin-right:var(--control-small-gap)}.tabnav-tab .Counter{color:inherit;margin-left:var(--control-small-gap)}tab-container .tabnav-tab{margin-bottom:-1px}.tabnav-extra{color:var(--fgColor-muted);display:inline-block;font-size:var(--text-body-size-small);margin-left:10px;padding-top:10px}.tabnav-extra>.octicon{margin-right:2px}a.tabnav-extra:hover{color:var(--fgColor-accent);-webkit-text-decoration:none;text-decoration:none}.tabnav-btn{margin-left:var(--controlStack-medium-gap-condensed)}
|
@@ -1 +1,28 @@
|
|
1
1
|
import '@github/auto-check-element';
|
2
|
+
import type { AutoCheckErrorEvent, AutoCheckSuccessEvent } from '@github/auto-check-element';
|
3
|
+
declare global {
|
4
|
+
interface HTMLElementEventMap {
|
5
|
+
'auto-check-success': AutoCheckSuccessEvent;
|
6
|
+
'auto-check-error': AutoCheckErrorEvent;
|
7
|
+
}
|
8
|
+
}
|
9
|
+
export declare class PrimerTextFieldElement extends HTMLElement {
|
10
|
+
#private;
|
11
|
+
inputElement: HTMLInputElement;
|
12
|
+
validationElement: HTMLElement;
|
13
|
+
validationMessageElement: HTMLElement;
|
14
|
+
validationSuccessIcon: HTMLElement;
|
15
|
+
validationErrorIcon: HTMLElement;
|
16
|
+
leadingVisual: HTMLElement;
|
17
|
+
leadingSpinner: HTMLElement;
|
18
|
+
connectedCallback(): void;
|
19
|
+
disconnectedCallback(): void;
|
20
|
+
clearContents(): void;
|
21
|
+
clearError(): void;
|
22
|
+
setValidationMessage(message: string): void;
|
23
|
+
toggleValidationStyling(isError: boolean): void;
|
24
|
+
setSuccess(message: string): void;
|
25
|
+
setError(message: string): void;
|
26
|
+
showLeadingSpinner(): void;
|
27
|
+
hideLeadingSpinner(): void;
|
28
|
+
}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
/* eslint-disable custom-elements/expose-class-on-global */
|
1
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
2
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
@@ -18,10 +19,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
18
19
|
var _PrimerTextFieldElement_abortController;
|
19
20
|
import '@github/auto-check-element';
|
20
21
|
import { controller, target } from '@github/catalyst';
|
21
|
-
|
22
|
-
let PrimerTextFieldElement =
|
23
|
-
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
24
|
-
class PrimerTextFieldElement extends HTMLElement {
|
22
|
+
let PrimerTextFieldElement = class PrimerTextFieldElement extends HTMLElement {
|
25
23
|
constructor() {
|
26
24
|
super(...arguments);
|
27
25
|
_PrimerTextFieldElement_abortController.set(this, void 0);
|
@@ -83,6 +81,14 @@ class PrimerTextFieldElement extends HTMLElement {
|
|
83
81
|
this.setValidationMessage(message);
|
84
82
|
this.validationElement.hidden = false;
|
85
83
|
}
|
84
|
+
showLeadingSpinner() {
|
85
|
+
this.leadingSpinner?.removeAttribute('hidden');
|
86
|
+
this.leadingVisual?.setAttribute('hidden', '');
|
87
|
+
}
|
88
|
+
hideLeadingSpinner() {
|
89
|
+
this.leadingSpinner?.setAttribute('hidden', '');
|
90
|
+
this.leadingVisual?.removeAttribute('hidden');
|
91
|
+
}
|
86
92
|
};
|
87
93
|
_PrimerTextFieldElement_abortController = new WeakMap();
|
88
94
|
__decorate([
|
@@ -100,7 +106,13 @@ __decorate([
|
|
100
106
|
__decorate([
|
101
107
|
target
|
102
108
|
], PrimerTextFieldElement.prototype, "validationErrorIcon", void 0);
|
109
|
+
__decorate([
|
110
|
+
target
|
111
|
+
], PrimerTextFieldElement.prototype, "leadingVisual", void 0);
|
112
|
+
__decorate([
|
113
|
+
target
|
114
|
+
], PrimerTextFieldElement.prototype, "leadingSpinner", void 0);
|
103
115
|
PrimerTextFieldElement = __decorate([
|
104
116
|
controller
|
105
|
-
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
106
117
|
], PrimerTextFieldElement);
|
118
|
+
export { PrimerTextFieldElement };
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@primer/view-components",
|
3
|
-
"version": "0.26.0
|
3
|
+
"version": "0.26.0",
|
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",
|
@@ -67,14 +67,14 @@
|
|
67
67
|
"@primer/stylelint-config": "^12.7.2",
|
68
68
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
69
69
|
"@rollup/plugin-typescript": "^8.3.3",
|
70
|
-
"@typescript-eslint/eslint-plugin": "^7.0.
|
71
|
-
"@typescript-eslint/parser": "^
|
70
|
+
"@typescript-eslint/eslint-plugin": "^7.0.1",
|
71
|
+
"@typescript-eslint/parser": "^7.0.1",
|
72
72
|
"axe-core": "^4.7.1",
|
73
73
|
"chokidar-cli": "^3.0.0",
|
74
74
|
"cssnano": "^7.0.1",
|
75
75
|
"eslint": "^8.23.1",
|
76
76
|
"eslint-plugin-custom-elements": "^0.0.8",
|
77
|
-
"eslint-plugin-github": "^
|
77
|
+
"eslint-plugin-github": "^5.0.1",
|
78
78
|
"eslint-plugin-prettier": "^5.0.0",
|
79
79
|
"markdownlint-cli2": "^0.13.0",
|
80
80
|
"mocha": "^10.0.0",
|
@@ -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.
|
87
|
+
"prettier": "^3.3.2",
|
88
88
|
"rollup": "^2.79.1",
|
89
89
|
"rollup-plugin-terser": "^7.0.2",
|
90
90
|
"stylelint": "^16.1.0",
|
package/static/arguments.json
CHANGED
@@ -2752,6 +2752,12 @@
|
|
2752
2752
|
"default": "N/A",
|
2753
2753
|
"description": "Renders a leading visual icon before the text field's cursor. The hash will be passed to Primer's [Octicon](/components/beta/octicon) component."
|
2754
2754
|
},
|
2755
|
+
{
|
2756
|
+
"name": "leading_spinner",
|
2757
|
+
"type": "Boolean",
|
2758
|
+
"default": "N/A",
|
2759
|
+
"description": "If `true`, a leading spinner will be included in the markup. The spinner can be shown via the `showLeadingSpinner()` JavaScript method, and hidden via `hideLeadingSpinner()`. If this argument is `true`, a leading visual must also be provided."
|
2760
|
+
},
|
2755
2761
|
{
|
2756
2762
|
"name": "show_clear_button",
|
2757
2763
|
"type": "Boolean",
|
package/static/info_arch.json
CHANGED
@@ -8143,6 +8143,12 @@
|
|
8143
8143
|
"default": "N/A",
|
8144
8144
|
"description": "Renders a leading visual icon before the text field's cursor. The hash will be passed to Primer's {{#link_to_component}}Primer::Beta::Octicon{{/link_to_component}} component."
|
8145
8145
|
},
|
8146
|
+
{
|
8147
|
+
"name": "leading_spinner",
|
8148
|
+
"type": "Boolean",
|
8149
|
+
"default": "N/A",
|
8150
|
+
"description": "If `true`, a leading spinner will be included in the markup. The spinner can be shown via the `showLeadingSpinner()` JavaScript method, and hidden via `hideLeadingSpinner()`. If this argument is `true`, a leading visual must also be provided."
|
8151
|
+
},
|
8146
8152
|
{
|
8147
8153
|
"name": "show_clear_button",
|
8148
8154
|
"type": "Boolean",
|