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