@primer/view-components 0.0.122 → 0.0.123-rc.aafb6945
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.
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
declare class NavListElement extends HTMLElement {
|
|
1
|
+
export declare class NavListElement extends HTMLElement {
|
|
2
|
+
#private;
|
|
2
3
|
list: HTMLElement;
|
|
4
|
+
items: HTMLElement[];
|
|
3
5
|
showMoreItem: HTMLElement;
|
|
4
6
|
focusMarkers: HTMLElement[];
|
|
5
7
|
connectedCallback(): void;
|
|
@@ -9,17 +11,18 @@ declare class NavListElement extends HTMLElement {
|
|
|
9
11
|
get currentPage(): number;
|
|
10
12
|
get totalPages(): number;
|
|
11
13
|
get paginationSrc(): string;
|
|
14
|
+
selectItemById(itemId: string | null): boolean;
|
|
15
|
+
selectItemByHref(href: string | null): boolean;
|
|
16
|
+
selectItemByCurrentLocation(): boolean;
|
|
12
17
|
expandItem(item: HTMLElement): void;
|
|
13
18
|
collapseItem(item: HTMLElement): void;
|
|
14
19
|
itemIsExpanded(item: HTMLElement | null): boolean;
|
|
15
20
|
handleItemWithSubItemClick(e: Event): void;
|
|
16
21
|
private showMore;
|
|
17
22
|
private setShowMoreItemState;
|
|
18
|
-
private parseHTML;
|
|
19
23
|
}
|
|
20
24
|
declare global {
|
|
21
25
|
interface Window {
|
|
22
26
|
NavListElement: typeof NavListElement;
|
|
23
27
|
}
|
|
24
28
|
}
|
|
25
|
-
export {};
|
|
@@ -4,9 +4,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
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");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _NavListElement_instances, _NavListElement_parseHTML, _NavListElement_findSelectedNavItemById, _NavListElement_findSelectedNavItemByHref, _NavListElement_findSelectedNavItemByCurrentLocation, _NavListElement_select, _NavListElement_deselect, _NavListElement_findParentMenu;
|
|
7
13
|
/* eslint-disable custom-elements/expose-class-on-global */
|
|
8
14
|
import { controller, target, targets } from '@github/catalyst';
|
|
9
15
|
let NavListElement = class NavListElement extends HTMLElement {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
_NavListElement_instances.add(this);
|
|
19
|
+
}
|
|
10
20
|
connectedCallback() {
|
|
11
21
|
this.setShowMoreItemState();
|
|
12
22
|
}
|
|
@@ -34,6 +44,34 @@ let NavListElement = class NavListElement extends HTMLElement {
|
|
|
34
44
|
get paginationSrc() {
|
|
35
45
|
return this.showMoreItem.getAttribute('src') || '';
|
|
36
46
|
}
|
|
47
|
+
selectItemById(itemId) {
|
|
48
|
+
if (!itemId)
|
|
49
|
+
return false;
|
|
50
|
+
const selectedItem = __classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_findSelectedNavItemById).call(this, itemId);
|
|
51
|
+
if (selectedItem) {
|
|
52
|
+
__classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_select).call(this, selectedItem);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
selectItemByHref(href) {
|
|
58
|
+
if (!href)
|
|
59
|
+
return false;
|
|
60
|
+
const selectedItem = __classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_findSelectedNavItemByHref).call(this, href);
|
|
61
|
+
if (selectedItem) {
|
|
62
|
+
__classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_select).call(this, selectedItem);
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
selectItemByCurrentLocation() {
|
|
68
|
+
const selectedItem = __classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_findSelectedNavItemByCurrentLocation).call(this);
|
|
69
|
+
if (selectedItem) {
|
|
70
|
+
__classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_select).call(this, selectedItem);
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
37
75
|
// expand collapsible item onClick
|
|
38
76
|
expandItem(item) {
|
|
39
77
|
var _a;
|
|
@@ -92,7 +130,7 @@ let NavListElement = class NavListElement extends HTMLElement {
|
|
|
92
130
|
this.currentPage--;
|
|
93
131
|
return;
|
|
94
132
|
}
|
|
95
|
-
const fragment = this.
|
|
133
|
+
const fragment = __classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_parseHTML).call(this, document, html);
|
|
96
134
|
(_a = fragment === null || fragment === void 0 ? void 0 : fragment.querySelector('li > a')) === null || _a === void 0 ? void 0 : _a.setAttribute('data-targets', 'nav-list.focusMarkers');
|
|
97
135
|
this.list.insertBefore(fragment, this.showMoreItem);
|
|
98
136
|
(_b = this.focusMarkers.pop()) === null || _b === void 0 ? void 0 : _b.focus();
|
|
@@ -109,16 +147,66 @@ let NavListElement = class NavListElement extends HTMLElement {
|
|
|
109
147
|
this.showMoreItem.hidden = true;
|
|
110
148
|
}
|
|
111
149
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
150
|
+
};
|
|
151
|
+
_NavListElement_instances = new WeakSet(), _NavListElement_parseHTML = function _NavListElement_parseHTML(document, html) {
|
|
152
|
+
const template = document.createElement('template');
|
|
153
|
+
// eslint-disable-next-line github/no-inner-html
|
|
154
|
+
template.innerHTML = html;
|
|
155
|
+
return document.importNode(template.content, true);
|
|
156
|
+
}, _NavListElement_findSelectedNavItemById = function _NavListElement_findSelectedNavItemById(itemId) {
|
|
157
|
+
var _a;
|
|
158
|
+
// First we compare the selected link to data-item-id for each nav item
|
|
159
|
+
for (const navItem of this.items) {
|
|
160
|
+
const keys = ((_a = navItem.getAttribute('data-item-id')) === null || _a === void 0 ? void 0 : _a.split(' ')) || [];
|
|
161
|
+
if (keys.includes(itemId)) {
|
|
162
|
+
return navItem;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
166
|
+
}, _NavListElement_findSelectedNavItemByHref = function _NavListElement_findSelectedNavItemByHref(href) {
|
|
167
|
+
// If we didn't find a match, we compare the selected link to the href of each nav item
|
|
168
|
+
const selectedNavItem = this.querySelector(`.ActionListContent[href="${href}"]`);
|
|
169
|
+
if (selectedNavItem) {
|
|
170
|
+
return selectedNavItem.closest('.ActionListItem');
|
|
171
|
+
}
|
|
172
|
+
return null;
|
|
173
|
+
}, _NavListElement_findSelectedNavItemByCurrentLocation = function _NavListElement_findSelectedNavItemByCurrentLocation() {
|
|
174
|
+
return __classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_findSelectedNavItemByHref).call(this, window.location.pathname);
|
|
175
|
+
}, _NavListElement_select = function _NavListElement_select(navItem) {
|
|
176
|
+
const currentlySelectedItem = this.querySelector('.ActionListItem--navActive');
|
|
177
|
+
if (currentlySelectedItem)
|
|
178
|
+
__classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_deselect).call(this, currentlySelectedItem);
|
|
179
|
+
navItem.classList.add('ActionListItem--navActive');
|
|
180
|
+
const parentMenu = __classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_findParentMenu).call(this, navItem);
|
|
181
|
+
if (parentMenu) {
|
|
182
|
+
this.expandItem(parentMenu);
|
|
183
|
+
parentMenu.classList.add('ActionListContent--hasActiveSubItem');
|
|
184
|
+
}
|
|
185
|
+
}, _NavListElement_deselect = function _NavListElement_deselect(navItem) {
|
|
186
|
+
navItem.classList.remove('ActionListItem--navActive');
|
|
187
|
+
const parentMenu = __classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_findParentMenu).call(this, navItem);
|
|
188
|
+
if (parentMenu) {
|
|
189
|
+
this.collapseItem(parentMenu);
|
|
190
|
+
parentMenu.classList.remove('ActionListContent--hasActiveSubItem');
|
|
191
|
+
}
|
|
192
|
+
}, _NavListElement_findParentMenu = function _NavListElement_findParentMenu(navItem) {
|
|
193
|
+
var _a;
|
|
194
|
+
if (!navItem.classList.contains('ActionListItem--subItem'))
|
|
195
|
+
return null;
|
|
196
|
+
const parent = (_a = navItem.closest('li.ActionListItem--hasSubItem')) === null || _a === void 0 ? void 0 : _a.querySelector('button.ActionListContent');
|
|
197
|
+
if (parent) {
|
|
198
|
+
return parent;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
return null;
|
|
117
202
|
}
|
|
118
203
|
};
|
|
119
204
|
__decorate([
|
|
120
205
|
target
|
|
121
206
|
], NavListElement.prototype, "list", void 0);
|
|
207
|
+
__decorate([
|
|
208
|
+
targets
|
|
209
|
+
], NavListElement.prototype, "items", void 0);
|
|
122
210
|
__decorate([
|
|
123
211
|
target
|
|
124
212
|
], NavListElement.prototype, "showMoreItem", void 0);
|
|
@@ -128,3 +216,4 @@ __decorate([
|
|
|
128
216
|
NavListElement = __decorate([
|
|
129
217
|
controller
|
|
130
218
|
], NavListElement);
|
|
219
|
+
export { NavListElement };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@primer/view-components",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.123-rc.aafb6945",
|
|
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",
|