@triptease/tt-navbar 0.0.46 → 0.0.47
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/dist/src/Config.d.ts +6 -0
- package/dist/src/Config.js +7 -0
- package/dist/src/Config.js.map +1 -0
- package/dist/src/TtNavbar.js +3 -1
- package/dist/src/TtNavbar.js.map +1 -1
- package/dist/src/getInitialNavbarState.d.ts +2 -0
- package/dist/src/getInitialNavbarState.js +21 -0
- package/dist/src/getInitialNavbarState.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/test/tt-navbar.test.js +30 -2
- package/dist/test/tt-navbar.test.js.map +1 -1
- package/dist/web/Config.js +14 -0
- package/dist/web/Config.js.map +7 -0
- package/dist/web/Routes.js +1 -1
- package/dist/web/TtNavbar.js +14 -1
- package/dist/web/TtNavbar.js.map +3 -3
- package/dist/web/getInitialNavbarState.js +31 -0
- package/dist/web/getInitialNavbarState.js.map +7 -0
- package/dist/web/global.d.js +1 -1
- package/dist/web/index.js +34 -2
- package/dist/web/index.js.map +4 -4
- package/dist/web/styles.js +1 -1
- package/dist/web/triptease-logo.js +1 -1
- package/dist/web/tt-navbar.js +14 -1
- package/dist/web/tt-navbar.js.map +3 -3
- package/dist/web/urlMappings.js +1 -1
- package/package.json +1 -1
- package/src/Config.ts +7 -0
- package/src/TtNavbar.ts +8 -1
- package/src/getInitialNavbarState.ts +30 -0
- package/src/index.ts +2 -0
- package/test/tt-navbar.test.ts +56 -3
package/dist/web/urlMappings.js
CHANGED
package/package.json
CHANGED
package/src/Config.ts
ADDED
package/src/TtNavbar.ts
CHANGED
|
@@ -19,6 +19,7 @@ import { styles } from './styles.js';
|
|
|
19
19
|
import { tripteaseLogo } from './triptease-logo.js';
|
|
20
20
|
import { urlMappings } from './urlMappings.js';
|
|
21
21
|
import { Routes } from './Routes.js';
|
|
22
|
+
import { Config } from './Config.js';
|
|
22
23
|
|
|
23
24
|
const jsonArrayConverter = (value: string | null) => {
|
|
24
25
|
if (!value) return [];
|
|
@@ -179,7 +180,13 @@ export class TtNavbar extends LitElement {
|
|
|
179
180
|
this.closeAllDetails();
|
|
180
181
|
this.isOpen = !this.isOpen;
|
|
181
182
|
|
|
182
|
-
|
|
183
|
+
const {
|
|
184
|
+
NavbarStateCookieName,
|
|
185
|
+
NavbarStateCookieOpenValue,
|
|
186
|
+
NavbarStateCookieClosedValue,
|
|
187
|
+
} = Config;
|
|
188
|
+
|
|
189
|
+
document.cookie = `${NavbarStateCookieName}=${this.isOpen ? NavbarStateCookieOpenValue : NavbarStateCookieClosedValue}; path=/; max-age=31536000`;
|
|
183
190
|
};
|
|
184
191
|
|
|
185
192
|
private handleDetailsToggle = (e: ToggleEvent) => {
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Config } from './Config.js';
|
|
2
|
+
|
|
3
|
+
const getInitialNavbarState = (cookieString?: string) => {
|
|
4
|
+
const cookies = cookieString || document.cookie;
|
|
5
|
+
|
|
6
|
+
if (!cookies) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const stateCookie = cookies
|
|
11
|
+
.split(';')
|
|
12
|
+
.find(c => c.trim().startsWith(`${Config.NavbarStateCookieName}`));
|
|
13
|
+
|
|
14
|
+
if (!stateCookie) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const value = stateCookie.split('=')[1];
|
|
19
|
+
|
|
20
|
+
if (
|
|
21
|
+
value !== Config.NavbarStateCookieOpenValue &&
|
|
22
|
+
value !== Config.NavbarStateCookieClosedValue
|
|
23
|
+
) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return value;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { getInitialNavbarState };
|
package/src/index.ts
CHANGED
package/test/tt-navbar.test.ts
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
nextFrame,
|
|
7
7
|
waitUntil,
|
|
8
8
|
} from '@open-wc/testing';
|
|
9
|
-
import { TtNavbar } from '../src/index.js';
|
|
9
|
+
import { Config, getInitialNavbarState, TtNavbar } from '../src/index.js';
|
|
10
10
|
import { Routes } from '../src/Routes.js';
|
|
11
11
|
|
|
12
12
|
// eslint-disable-next-line no-undef
|
|
@@ -411,7 +411,7 @@ describe('TtNavbar', () => {
|
|
|
411
411
|
|
|
412
412
|
it("should default to 'open' when the 'initial-state' attribute is 'open", async () => {
|
|
413
413
|
const navbar = await fixture<TtNavbar>(
|
|
414
|
-
`<tt-navbar client-key=${CLIENT_KEY} initial-state
|
|
414
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieOpenValue}></tt-navbar>`,
|
|
415
415
|
);
|
|
416
416
|
|
|
417
417
|
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
@@ -422,7 +422,7 @@ describe('TtNavbar', () => {
|
|
|
422
422
|
|
|
423
423
|
it("should default to 'closed' when the 'initial-state' attribute is 'closed", async () => {
|
|
424
424
|
const navbar = await fixture<TtNavbar>(
|
|
425
|
-
`<tt-navbar client-key=${CLIENT_KEY} initial-state
|
|
425
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieClosedValue}></tt-navbar>`,
|
|
426
426
|
);
|
|
427
427
|
|
|
428
428
|
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
@@ -430,4 +430,57 @@ describe('TtNavbar', () => {
|
|
|
430
430
|
expect(logo).to.exist;
|
|
431
431
|
expect(logo!.checkVisibility()).to.be.false;
|
|
432
432
|
});
|
|
433
|
+
|
|
434
|
+
it('should create cookie containing navbar state onToggle if it is missing', async () => {
|
|
435
|
+
document.cookie = `${Config.NavbarStateCookieName}=; max-age=0; path=/;`;
|
|
436
|
+
const startingCookieValue = getInitialNavbarState();
|
|
437
|
+
|
|
438
|
+
expect(startingCookieValue).to.be.undefined;
|
|
439
|
+
|
|
440
|
+
const navbar = await fixture<TtNavbar>(
|
|
441
|
+
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
442
|
+
);
|
|
443
|
+
const navbarToggleBtn = navbar.shadowRoot!.querySelector(
|
|
444
|
+
'#navbar-toggle-btn',
|
|
445
|
+
) as HTMLButtonElement;
|
|
446
|
+
|
|
447
|
+
navbarToggleBtn.click();
|
|
448
|
+
await elementUpdated(navbar);
|
|
449
|
+
|
|
450
|
+
const newState = getInitialNavbarState();
|
|
451
|
+
|
|
452
|
+
await expect(newState).to.equal(Config.NavbarStateCookieClosedValue);
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
it('should update the cookie value when navbar is expanded', async () => {
|
|
456
|
+
const navbar = await fixture<TtNavbar>(
|
|
457
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieClosedValue}></tt-navbar>`,
|
|
458
|
+
);
|
|
459
|
+
const navbarToggleBtn = navbar.shadowRoot!.querySelector(
|
|
460
|
+
'#navbar-toggle-btn',
|
|
461
|
+
) as HTMLButtonElement;
|
|
462
|
+
|
|
463
|
+
navbarToggleBtn.click();
|
|
464
|
+
await elementUpdated(navbar);
|
|
465
|
+
|
|
466
|
+
const newState = getInitialNavbarState();
|
|
467
|
+
|
|
468
|
+
await expect(newState).to.equal(Config.NavbarStateCookieOpenValue);
|
|
469
|
+
});
|
|
470
|
+
|
|
471
|
+
it('should update the cookie value when navbar is collapsed', async () => {
|
|
472
|
+
const navbar = await fixture<TtNavbar>(
|
|
473
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieOpenValue}></tt-navbar>`,
|
|
474
|
+
);
|
|
475
|
+
const navbarToggleBtn = navbar.shadowRoot!.querySelector(
|
|
476
|
+
'#navbar-toggle-btn',
|
|
477
|
+
) as HTMLButtonElement;
|
|
478
|
+
|
|
479
|
+
navbarToggleBtn.click();
|
|
480
|
+
await elementUpdated(navbar);
|
|
481
|
+
|
|
482
|
+
const newState = getInitialNavbarState();
|
|
483
|
+
|
|
484
|
+
await expect(newState).to.equal(Config.NavbarStateCookieClosedValue);
|
|
485
|
+
});
|
|
433
486
|
});
|