@triptease/tt-navbar 0.0.62 → 0.0.65
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.
- package/CHANGELOG.md +11 -0
- package/README.md +11 -15
- package/demo/index.html +3 -6
- package/dist/src/Config.js.map +1 -1
- package/dist/src/TtNavbar.js +9 -16
- package/dist/src/TtNavbar.js.map +1 -1
- package/dist/src/getInitialNavbarState.js +2 -5
- package/dist/src/getInitialNavbarState.js.map +1 -1
- package/dist/src/styles.js +1 -3
- package/dist/src/styles.js.map +1 -1
- package/dist/src/triptease-logo.js.map +1 -1
- package/dist/test/tt-navbar.test.js +11 -29
- package/dist/test/tt-navbar.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/web/Config.js +1 -1
- package/dist/web/Config.js.map +1 -1
- package/dist/web/Routes.js +1 -1
- package/dist/web/TtNavbar.js +323 -225
- package/dist/web/TtNavbar.js.map +4 -4
- package/dist/web/getInitialNavbarState.js +1 -1
- package/dist/web/getInitialNavbarState.js.map +2 -2
- package/dist/web/global.d.js +1 -1
- package/dist/web/index.js +323 -225
- package/dist/web/index.js.map +4 -4
- package/dist/web/styles.js +2 -4
- package/dist/web/styles.js.map +2 -2
- package/dist/web/triptease-logo.js +1 -1
- package/dist/web/triptease-logo.js.map +2 -2
- package/dist/web/tt-navbar.js +323 -225
- package/dist/web/tt-navbar.js.map +4 -4
- package/dist/web/urlMappings.js +1 -1
- package/package.json +7 -52
- package/src/Config.ts +2 -2
- package/src/TtNavbar.ts +16 -23
- package/src/getInitialNavbarState.ts +2 -7
- package/src/styles.ts +1 -3
- package/src/triptease-logo.ts +2 -2
- package/test/tt-navbar.test.ts +52 -137
- package/web-test-runner.config.js +1 -1
- package/.husky/pre-commit +0 -1
- package/.storybook/main.js +0 -8
- package/.storybook/preview-head.html +0 -7
package/test/tt-navbar.test.ts
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
import '../src/tt-navbar.js';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
expect,
|
|
5
|
-
fixture,
|
|
6
|
-
nextFrame,
|
|
7
|
-
waitUntil,
|
|
8
|
-
} from '@open-wc/testing';
|
|
2
|
+
import { elementUpdated, expect, fixture, nextFrame, waitUntil } from '@open-wc/testing';
|
|
3
|
+
import { TtOption } from '@triptease/tt-combobox/tt-option.js';
|
|
9
4
|
import { Config, getInitialNavbarState, TtNavbar } from '../src/index.js';
|
|
10
5
|
import { Routes } from '../src/Routes.js';
|
|
11
6
|
|
|
12
|
-
// eslint-disable-next-line no-undef
|
|
13
7
|
const getLinkByHref = (links: NodeListOf<HTMLAnchorElement>, href: string) => {
|
|
14
8
|
for (const link of links) {
|
|
15
9
|
if (link.getAttribute('href') === href) {
|
|
@@ -21,16 +15,12 @@ const getLinkByHref = (links: NodeListOf<HTMLAnchorElement>, href: string) => {
|
|
|
21
15
|
};
|
|
22
16
|
|
|
23
17
|
const selectComboboxOption = async (combobox: Element, value: string) => {
|
|
24
|
-
const input = combobox.shadowRoot!.querySelector(
|
|
25
|
-
'[role="combobox"]',
|
|
26
|
-
) as HTMLInputElement;
|
|
18
|
+
const input = combobox.shadowRoot!.querySelector('[role="combobox"]') as HTMLInputElement;
|
|
27
19
|
input.click();
|
|
28
20
|
|
|
29
21
|
await elementUpdated(combobox);
|
|
30
22
|
|
|
31
|
-
const option = combobox.shadowRoot!.querySelector(
|
|
32
|
-
`[role="option"][data-value="${value}"]`,
|
|
33
|
-
) as HTMLLIElement;
|
|
23
|
+
const option = combobox.shadowRoot!.querySelector(`tt-option[value="${value}"]`) as TtOption;
|
|
34
24
|
option.click();
|
|
35
25
|
};
|
|
36
26
|
|
|
@@ -47,7 +37,7 @@ const isVisuallyHidden = (element: Element) => {
|
|
|
47
37
|
style.overflow === 'hidden' &&
|
|
48
38
|
style.clip === 'rect(0px, 0px, 0px, 0px)' &&
|
|
49
39
|
style.clipPath === 'inset(50%)' &&
|
|
50
|
-
style.whiteSpace === 'nowrap'
|
|
40
|
+
style.whiteSpace === 'nowrap'
|
|
51
41
|
);
|
|
52
42
|
};
|
|
53
43
|
|
|
@@ -62,27 +52,22 @@ describe('TtNavbar', () => {
|
|
|
62
52
|
}
|
|
63
53
|
});
|
|
64
54
|
it('should render with the default links', async () => {
|
|
65
|
-
const navbar = await fixture<TtNavbar>(
|
|
66
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
67
|
-
);
|
|
55
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
68
56
|
const links = navbar.shadowRoot?.querySelectorAll('a');
|
|
69
57
|
|
|
70
58
|
if (links) {
|
|
71
59
|
expect(getLinkByHref(links, '/')).to.exist;
|
|
72
|
-
expect(getLinkByHref(links, 'https://app.campaign-manager.triptease.io'))
|
|
73
|
-
.to.exist;
|
|
60
|
+
expect(getLinkByHref(links, 'https://app.campaign-manager.triptease.io')).to.exist;
|
|
74
61
|
expect(getLinkByHref(links, `/${CLIENT_KEY}/channels`)).to.exist;
|
|
75
62
|
expect(getLinkByHref(links, `/parity/${CLIENT_KEY}`)).to.exist;
|
|
76
63
|
expect(getLinkByHref(links, `/guest-insights/${CLIENT_KEY}`)).to.exist;
|
|
77
|
-
expect(getLinkByHref(links, `/${CLIENT_KEY}/guest-behavioural-data`)).to
|
|
78
|
-
.exist;
|
|
64
|
+
expect(getLinkByHref(links, `/${CLIENT_KEY}/guest-behavioural-data`)).to.exist;
|
|
79
65
|
expect(getLinkByHref(links, `/${CLIENT_KEY}/crm-config`)).to.exist;
|
|
80
66
|
expect(getLinkByHref(links, `/settings/${CLIENT_KEY}/guides`)).to.exist;
|
|
81
67
|
expect(getLinkByHref(links, `/settings/${CLIENT_KEY}/hotels`)).to.exist;
|
|
82
68
|
expect(getLinkByHref(links, `/account`)).to.exist;
|
|
83
69
|
expect(getLinkByHref(links, `/account/team/${CLIENT_KEY}`)).to.exist;
|
|
84
|
-
expect(getLinkByHref(links, `/account/billing-management/${CLIENT_KEY}`))
|
|
85
|
-
.to.exist;
|
|
70
|
+
expect(getLinkByHref(links, `/account/billing-management/${CLIENT_KEY}`)).to.exist;
|
|
86
71
|
expect(getLinkByHref(links, `/subscriptions/${CLIENT_KEY}`)).to.exist;
|
|
87
72
|
}
|
|
88
73
|
});
|
|
@@ -90,16 +75,14 @@ describe('TtNavbar', () => {
|
|
|
90
75
|
it('should render platform URLs against the base URL when it is defined', async () => {
|
|
91
76
|
const platformUrl = 'https://app.triptease.io';
|
|
92
77
|
const navbar = await fixture<TtNavbar>(
|
|
93
|
-
`<tt-navbar client-key=${CLIENT_KEY} platform-url="${platformUrl}"></tt-navbar
|
|
78
|
+
`<tt-navbar client-key=${CLIENT_KEY} platform-url="${platformUrl}"></tt-navbar>`
|
|
94
79
|
);
|
|
95
80
|
const links = navbar.shadowRoot?.querySelectorAll('a');
|
|
96
81
|
|
|
97
82
|
if (links) {
|
|
98
83
|
expect(getLinkByHref(links, `${platformUrl}/`)).to.exist;
|
|
99
|
-
expect(getLinkByHref(links, 'https://app.campaign-manager.triptease.io'))
|
|
100
|
-
|
|
101
|
-
expect(getLinkByHref(links, `${platformUrl}/${CLIENT_KEY}/channels`)).to
|
|
102
|
-
.exist;
|
|
84
|
+
expect(getLinkByHref(links, 'https://app.campaign-manager.triptease.io')).to.exist; // This shouldn't change
|
|
85
|
+
expect(getLinkByHref(links, `${platformUrl}/${CLIENT_KEY}/channels`)).to.exist;
|
|
103
86
|
}
|
|
104
87
|
});
|
|
105
88
|
|
|
@@ -111,25 +94,18 @@ describe('TtNavbar', () => {
|
|
|
111
94
|
navigateEventCount += 1;
|
|
112
95
|
};
|
|
113
96
|
|
|
114
|
-
const navbar = await fixture<TtNavbar>(
|
|
115
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
116
|
-
);
|
|
97
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
117
98
|
navbar.navigate = onNavigate;
|
|
118
99
|
await navbar.updateComplete;
|
|
119
100
|
|
|
120
101
|
const links = navbar.shadowRoot?.querySelectorAll('a');
|
|
121
|
-
links?.forEach(l => l.click());
|
|
102
|
+
links?.forEach((l) => l.click());
|
|
122
103
|
|
|
123
|
-
await waitUntil(
|
|
124
|
-
() => expect(navigateEventCount).to.equal(13),
|
|
125
|
-
'navigate event did not fire',
|
|
126
|
-
);
|
|
104
|
+
await waitUntil(() => expect(navigateEventCount).to.equal(13), 'navigate event did not fire');
|
|
127
105
|
});
|
|
128
106
|
|
|
129
107
|
it('should render a combobox when multiple clients are provided', async () => {
|
|
130
|
-
const navbar = await fixture<TtNavbar>(
|
|
131
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
132
|
-
);
|
|
108
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
133
109
|
navbar.clients = [
|
|
134
110
|
{ clientKey: CLIENT_KEY, displayName: 'Client One' },
|
|
135
111
|
{ clientKey: 'abc123', displayName: 'Client Two' },
|
|
@@ -137,9 +113,7 @@ describe('TtNavbar', () => {
|
|
|
137
113
|
await navbar.updateComplete;
|
|
138
114
|
|
|
139
115
|
const combobox = navbar.shadowRoot?.querySelector('tt-combobox');
|
|
140
|
-
const singleClientName = navbar.shadowRoot?.querySelector(
|
|
141
|
-
'.single-client-name',
|
|
142
|
-
);
|
|
116
|
+
const singleClientName = navbar.shadowRoot?.querySelector('.single-client-name');
|
|
143
117
|
|
|
144
118
|
expect(combobox).to.exist;
|
|
145
119
|
expect(singleClientName).to.not.exist;
|
|
@@ -147,15 +121,11 @@ describe('TtNavbar', () => {
|
|
|
147
121
|
});
|
|
148
122
|
|
|
149
123
|
it('should render the client name when only one client is provided', async () => {
|
|
150
|
-
const navbar = await fixture<TtNavbar>(
|
|
151
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
152
|
-
);
|
|
124
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
153
125
|
navbar.clients = [{ clientKey: CLIENT_KEY, displayName: 'Single Client' }];
|
|
154
126
|
await navbar.updateComplete;
|
|
155
127
|
|
|
156
|
-
const singleClientName = navbar.shadowRoot?.querySelector(
|
|
157
|
-
'.single-client-name',
|
|
158
|
-
);
|
|
128
|
+
const singleClientName = navbar.shadowRoot?.querySelector('.single-client-name');
|
|
159
129
|
const combobox = navbar.shadowRoot?.querySelector('tt-combobox');
|
|
160
130
|
|
|
161
131
|
expect(singleClientName).to.exist;
|
|
@@ -164,9 +134,7 @@ describe('TtNavbar', () => {
|
|
|
164
134
|
});
|
|
165
135
|
|
|
166
136
|
it('should render the logout link', async () => {
|
|
167
|
-
const navbar = await fixture<TtNavbar>(
|
|
168
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
169
|
-
);
|
|
137
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
170
138
|
|
|
171
139
|
const links = navbar.shadowRoot?.querySelectorAll('a');
|
|
172
140
|
const logoutLink = getLinkByHref(links!, '/logout');
|
|
@@ -175,9 +143,7 @@ describe('TtNavbar', () => {
|
|
|
175
143
|
});
|
|
176
144
|
|
|
177
145
|
it('should close other details when one is being opened', async () => {
|
|
178
|
-
const navbar = await fixture<TtNavbar>(
|
|
179
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
180
|
-
);
|
|
146
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
181
147
|
|
|
182
148
|
const allDetails = navbar.shadowRoot!.querySelectorAll('summary');
|
|
183
149
|
const [marketInsights, settings] = allDetails;
|
|
@@ -201,24 +167,17 @@ describe('TtNavbar', () => {
|
|
|
201
167
|
});
|
|
202
168
|
|
|
203
169
|
it('should collapse the navbar when toggle clicked', async () => {
|
|
204
|
-
const navbar = await fixture<TtNavbar>(
|
|
205
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
206
|
-
);
|
|
170
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
207
171
|
|
|
208
|
-
const navbarToggleBtn = navbar.shadowRoot!.querySelector(
|
|
209
|
-
'#navbar-toggle-btn',
|
|
210
|
-
) as HTMLButtonElement;
|
|
172
|
+
const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;
|
|
211
173
|
|
|
212
174
|
navbarToggleBtn.click();
|
|
213
175
|
await elementUpdated(navbar);
|
|
214
176
|
|
|
215
177
|
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
216
|
-
const rootLinksHiddenElements =
|
|
217
|
-
|
|
218
|
-
const
|
|
219
|
-
navbar.shadowRoot!.querySelectorAll('nav summary span');
|
|
220
|
-
const externalLinks =
|
|
221
|
-
navbar.shadowRoot!.querySelectorAll('#external-links a');
|
|
178
|
+
const rootLinksHiddenElements = navbar.shadowRoot!.querySelectorAll('nav a span');
|
|
179
|
+
const summaryHiddenElements = navbar.shadowRoot!.querySelectorAll('nav summary span');
|
|
180
|
+
const externalLinks = navbar.shadowRoot!.querySelectorAll('#external-links a');
|
|
222
181
|
const logoutLink = navbar.shadowRoot!.querySelector('#logout-link span');
|
|
223
182
|
const clientSelector = navbar.shadowRoot!.querySelector('#client-selector');
|
|
224
183
|
|
|
@@ -233,30 +192,17 @@ describe('TtNavbar', () => {
|
|
|
233
192
|
expect(logoutLink).to.exist;
|
|
234
193
|
expect(rootLinksHiddenElements.length).to.be.greaterThan(1);
|
|
235
194
|
expect(summaryHiddenElements.length).to.be.greaterThan(1);
|
|
236
|
-
for (const element of [
|
|
237
|
-
...rootLinksHiddenElements,
|
|
238
|
-
...summaryHiddenElements,
|
|
239
|
-
logoutLink!,
|
|
240
|
-
]) {
|
|
195
|
+
for (const element of [...rootLinksHiddenElements, ...summaryHiddenElements, logoutLink!]) {
|
|
241
196
|
expect(isVisuallyHidden(element)).to.be.true;
|
|
242
197
|
}
|
|
243
198
|
});
|
|
244
199
|
|
|
245
|
-
const collapsibleIds: string[] = [
|
|
246
|
-
|
|
247
|
-
'settings',
|
|
248
|
-
'account',
|
|
249
|
-
'billing-routes',
|
|
250
|
-
];
|
|
251
|
-
collapsibleIds.forEach(id => {
|
|
200
|
+
const collapsibleIds: string[] = ['market-insights', 'settings', 'account', 'billing-routes'];
|
|
201
|
+
collapsibleIds.forEach((id) => {
|
|
252
202
|
it(`should open the nav bar when the ${id} collapsible is clicked`, async () => {
|
|
253
|
-
const navbar = await fixture<TtNavbar>(
|
|
254
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
255
|
-
);
|
|
203
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
256
204
|
|
|
257
|
-
const navbarToggleBtn = navbar.shadowRoot!.querySelector(
|
|
258
|
-
'#navbar-toggle-btn',
|
|
259
|
-
) as HTMLButtonElement;
|
|
205
|
+
const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;
|
|
260
206
|
|
|
261
207
|
navbarToggleBtn.click();
|
|
262
208
|
await elementUpdated(navbar);
|
|
@@ -264,8 +210,7 @@ describe('TtNavbar', () => {
|
|
|
264
210
|
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
265
211
|
expect(logo?.checkVisibility()).to.be.false;
|
|
266
212
|
|
|
267
|
-
const element: HTMLDetailsElement | null =
|
|
268
|
-
navbar.shadowRoot!.querySelector(`#${id} summary`);
|
|
213
|
+
const element: HTMLDetailsElement | null = navbar.shadowRoot!.querySelector(`#${id} summary`);
|
|
269
214
|
|
|
270
215
|
expect(element).to.exist;
|
|
271
216
|
|
|
@@ -308,12 +253,9 @@ describe('TtNavbar', () => {
|
|
|
308
253
|
|
|
309
254
|
URLs.forEach(([route, text]) => {
|
|
310
255
|
it(`should show the current page as active when link is ${route}`, async () => {
|
|
311
|
-
// eslint-disable-next-line no-restricted-globals
|
|
312
256
|
history.pushState({}, '', route); // 👈 mock URL
|
|
313
257
|
|
|
314
|
-
const navbar = await fixture<TtNavbar>(
|
|
315
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
316
|
-
);
|
|
258
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
317
259
|
|
|
318
260
|
const anchor = navbar.shadowRoot!.querySelector('a[aria-current="page"]');
|
|
319
261
|
|
|
@@ -327,7 +269,7 @@ describe('TtNavbar', () => {
|
|
|
327
269
|
const campaignManagerUrl = 'http://localhost:8000';
|
|
328
270
|
|
|
329
271
|
const navbar = await fixture<TtNavbar>(
|
|
330
|
-
`<tt-navbar client-key=${CLIENT_KEY} platform-url=${platformUrl} campaign-manager-url=${campaignManagerUrl} active-route="${Routes.CampaignManager}"></tt-navbar
|
|
272
|
+
`<tt-navbar client-key=${CLIENT_KEY} platform-url=${platformUrl} campaign-manager-url=${campaignManagerUrl} active-route="${Routes.CampaignManager}"></tt-navbar>`
|
|
331
273
|
);
|
|
332
274
|
const anchor = navbar.shadowRoot!.querySelector('a[aria-current="page"]');
|
|
333
275
|
expect(anchor).to.exist;
|
|
@@ -340,9 +282,7 @@ describe('TtNavbar', () => {
|
|
|
340
282
|
selectedClientKey = clientKey;
|
|
341
283
|
};
|
|
342
284
|
|
|
343
|
-
const navbar = await fixture<TtNavbar>(
|
|
344
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
345
|
-
);
|
|
285
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
346
286
|
navbar.clients = [
|
|
347
287
|
{ clientKey: CLIENT_KEY, displayName: 'Client One' },
|
|
348
288
|
{ clientKey: 'abc123', displayName: 'Client Two' },
|
|
@@ -360,47 +300,32 @@ describe('TtNavbar', () => {
|
|
|
360
300
|
});
|
|
361
301
|
|
|
362
302
|
it('should set the --nav-bar-width css variable when collapsed', async () => {
|
|
363
|
-
const navbar = await fixture<TtNavbar>(
|
|
364
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
365
|
-
);
|
|
303
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
366
304
|
|
|
367
|
-
await expect(
|
|
368
|
-
getComputedStyle(navbar).getPropertyValue('--nav-bar-width').trim(),
|
|
369
|
-
).to.equal('260px');
|
|
305
|
+
await expect(getComputedStyle(navbar).getPropertyValue('--nav-bar-width').trim()).to.equal('260px');
|
|
370
306
|
|
|
371
|
-
const navbarToggleBtn = navbar.shadowRoot!.querySelector(
|
|
372
|
-
'#navbar-toggle-btn',
|
|
373
|
-
) as HTMLButtonElement;
|
|
307
|
+
const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;
|
|
374
308
|
|
|
375
309
|
navbarToggleBtn.click();
|
|
376
310
|
await elementUpdated(navbar);
|
|
377
311
|
|
|
378
|
-
await expect(
|
|
379
|
-
getComputedStyle(navbar).getPropertyValue('--nav-bar-width').trim(),
|
|
380
|
-
).to.equal('fit-content');
|
|
312
|
+
await expect(getComputedStyle(navbar).getPropertyValue('--nav-bar-width').trim()).to.equal('fit-content');
|
|
381
313
|
});
|
|
382
314
|
|
|
383
315
|
it('should expand the details when the current page is within that section', async () => {
|
|
384
|
-
// eslint-disable-next-line no-restricted-globals
|
|
385
316
|
history.pushState({}, '', `/parity/${CLIENT_KEY}`);
|
|
386
317
|
|
|
387
|
-
const navbar = await fixture<TtNavbar>(
|
|
388
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
389
|
-
);
|
|
318
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
390
319
|
|
|
391
|
-
const marketInsightsDetails = navbar.shadowRoot!.querySelector(
|
|
392
|
-
'#market-insights',
|
|
393
|
-
) as HTMLDetailsElement;
|
|
320
|
+
const marketInsightsDetails = navbar.shadowRoot!.querySelector('#market-insights') as HTMLDetailsElement;
|
|
394
321
|
|
|
395
322
|
expect(marketInsightsDetails).to.exist;
|
|
396
323
|
expect(marketInsightsDetails.open).to.be.true;
|
|
397
324
|
});
|
|
398
325
|
|
|
399
326
|
it('should set the active route when receives `tetris:navigate` event', async () => {
|
|
400
|
-
const navbar = await fixture<TtNavbar>(
|
|
401
|
-
|
|
402
|
-
);
|
|
403
|
-
// eslint-disable-next-line no-restricted-globals
|
|
327
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
328
|
+
|
|
404
329
|
history.pushState({}, '', `/account/billing-management/${CLIENT_KEY}`);
|
|
405
330
|
|
|
406
331
|
// Dispatch the event to change to Channels route
|
|
@@ -415,9 +340,7 @@ describe('TtNavbar', () => {
|
|
|
415
340
|
});
|
|
416
341
|
|
|
417
342
|
it("should default to 'open' when the 'initial-state' attribute is not provided", async () => {
|
|
418
|
-
const navbar = await fixture<TtNavbar>(
|
|
419
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
420
|
-
);
|
|
343
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
421
344
|
|
|
422
345
|
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
423
346
|
|
|
@@ -427,7 +350,7 @@ describe('TtNavbar', () => {
|
|
|
427
350
|
|
|
428
351
|
it("should default to 'open' when the 'initial-state' attribute is 'open", async () => {
|
|
429
352
|
const navbar = await fixture<TtNavbar>(
|
|
430
|
-
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieOpenValue}></tt-navbar
|
|
353
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieOpenValue}></tt-navbar>`
|
|
431
354
|
);
|
|
432
355
|
|
|
433
356
|
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
@@ -438,7 +361,7 @@ describe('TtNavbar', () => {
|
|
|
438
361
|
|
|
439
362
|
it("should default to 'closed' when the 'initial-state' attribute is 'closed", async () => {
|
|
440
363
|
const navbar = await fixture<TtNavbar>(
|
|
441
|
-
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieClosedValue}></tt-navbar
|
|
364
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieClosedValue}></tt-navbar>`
|
|
442
365
|
);
|
|
443
366
|
|
|
444
367
|
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
@@ -453,12 +376,8 @@ describe('TtNavbar', () => {
|
|
|
453
376
|
|
|
454
377
|
expect(startingCookieValue).to.be.undefined;
|
|
455
378
|
|
|
456
|
-
const navbar = await fixture<TtNavbar>(
|
|
457
|
-
|
|
458
|
-
);
|
|
459
|
-
const navbarToggleBtn = navbar.shadowRoot!.querySelector(
|
|
460
|
-
'#navbar-toggle-btn',
|
|
461
|
-
) as HTMLButtonElement;
|
|
379
|
+
const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);
|
|
380
|
+
const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;
|
|
462
381
|
|
|
463
382
|
navbarToggleBtn.click();
|
|
464
383
|
await elementUpdated(navbar);
|
|
@@ -470,11 +389,9 @@ describe('TtNavbar', () => {
|
|
|
470
389
|
|
|
471
390
|
it('should update the cookie value when navbar is expanded', async () => {
|
|
472
391
|
const navbar = await fixture<TtNavbar>(
|
|
473
|
-
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieClosedValue}></tt-navbar
|
|
392
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieClosedValue}></tt-navbar>`
|
|
474
393
|
);
|
|
475
|
-
const navbarToggleBtn = navbar.shadowRoot!.querySelector(
|
|
476
|
-
'#navbar-toggle-btn',
|
|
477
|
-
) as HTMLButtonElement;
|
|
394
|
+
const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;
|
|
478
395
|
|
|
479
396
|
navbarToggleBtn.click();
|
|
480
397
|
await elementUpdated(navbar);
|
|
@@ -486,11 +403,9 @@ describe('TtNavbar', () => {
|
|
|
486
403
|
|
|
487
404
|
it('should update the cookie value when navbar is collapsed', async () => {
|
|
488
405
|
const navbar = await fixture<TtNavbar>(
|
|
489
|
-
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieOpenValue}></tt-navbar
|
|
406
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieOpenValue}></tt-navbar>`
|
|
490
407
|
);
|
|
491
|
-
const navbarToggleBtn = navbar.shadowRoot!.querySelector(
|
|
492
|
-
'#navbar-toggle-btn',
|
|
493
|
-
) as HTMLButtonElement;
|
|
408
|
+
const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;
|
|
494
409
|
|
|
495
410
|
navbarToggleBtn.click();
|
|
496
411
|
await elementUpdated(navbar);
|
|
@@ -14,7 +14,7 @@ export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
|
|
|
14
14
|
/** Filter out lit dev mode logs */
|
|
15
15
|
filterBrowserLogs(log) {
|
|
16
16
|
for (const arg of log.args) {
|
|
17
|
-
if (typeof arg === 'string' && filteredLogs.some(l => arg.includes(l))) {
|
|
17
|
+
if (typeof arg === 'string' && filteredLogs.some((l) => arg.includes(l))) {
|
|
18
18
|
return false;
|
|
19
19
|
}
|
|
20
20
|
}
|
package/.husky/pre-commit
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
./node_modules/.bin/lint-staged
|
package/.storybook/main.js
DELETED