@primer/view-components 0.0.122-rc.fd218ebc → 0.0.123-rc.731dae64

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.parseHTML(document, html);
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
- parseHTML(document, html) {
113
- const template = document.createElement('template');
114
- // eslint-disable-next-line github/no-inner-html
115
- template.innerHTML = html;
116
- return document.importNode(template.content, true);
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.122-rc.fd218ebc",
3
+ "version": "0.0.123-rc.731dae64",
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",