@triptease/tt-navbar 0.0.45 → 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.d.ts +3 -3
- package/dist/src/TtNavbar.js +26 -18
- 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 +32 -53
- 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 +35 -66
- package/dist/web/TtNavbar.js.map +4 -4
- 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 +55 -67
- 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 +35 -66
- package/dist/web/tt-navbar.js.map +4 -4
- package/dist/web/urlMappings.js +1 -1
- package/package.json +1 -1
- package/src/Config.ts +7 -0
- package/src/TtNavbar.ts +31 -18
- package/src/getInitialNavbarState.ts +30 -0
- package/src/index.ts +2 -0
- package/test/tt-navbar.test.ts +47 -58
- package/dist/src/NavbarController.d.ts +0 -12
- package/dist/src/NavbarController.js +0 -49
- package/dist/src/NavbarController.js.map +0 -1
- package/dist/web/NavbarController.js +0 -57
- package/dist/web/NavbarController.js.map +0 -7
- package/src/NavbarController.ts +0 -66
package/dist/web/urlMappings.js
CHANGED
package/package.json
CHANGED
package/src/Config.ts
ADDED
package/src/TtNavbar.ts
CHANGED
|
@@ -19,7 +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 {
|
|
22
|
+
import { Config } from './Config.js';
|
|
23
23
|
|
|
24
24
|
const jsonArrayConverter = (value: string | null) => {
|
|
25
25
|
if (!value) return [];
|
|
@@ -51,6 +51,12 @@ export class TtNavbar extends LitElement {
|
|
|
51
51
|
@property({ type: Array, converter: jsonArrayConverter })
|
|
52
52
|
clients: { clientKey: string; displayName: string }[] = [];
|
|
53
53
|
|
|
54
|
+
@property({ type: String, attribute: 'initial-state' })
|
|
55
|
+
initialState: 'open' | 'closed' | undefined = undefined;
|
|
56
|
+
|
|
57
|
+
@state()
|
|
58
|
+
isOpen: boolean = true;
|
|
59
|
+
|
|
54
60
|
@property({ type: Object })
|
|
55
61
|
onClientChange: ((clientKeySelected: string) => void) | undefined;
|
|
56
62
|
|
|
@@ -60,11 +66,6 @@ export class TtNavbar extends LitElement {
|
|
|
60
66
|
@queryAll('a')
|
|
61
67
|
protected allNavLinks!: Array<HTMLAnchorElement>;
|
|
62
68
|
|
|
63
|
-
@state()
|
|
64
|
-
private sidebarOpen = true;
|
|
65
|
-
|
|
66
|
-
private navbarController = new NavbarController(this);
|
|
67
|
-
|
|
68
69
|
protected firstUpdated() {
|
|
69
70
|
this.setActiveState();
|
|
70
71
|
}
|
|
@@ -77,6 +78,10 @@ export class TtNavbar extends LitElement {
|
|
|
77
78
|
window.addEventListener('tetris:navigate', this.setActiveState);
|
|
78
79
|
|
|
79
80
|
super.connectedCallback();
|
|
81
|
+
|
|
82
|
+
if (this.initialState) {
|
|
83
|
+
this.isOpen = this.initialState === 'open';
|
|
84
|
+
}
|
|
80
85
|
}
|
|
81
86
|
|
|
82
87
|
public disconnectedCallback() {
|
|
@@ -173,16 +178,24 @@ export class TtNavbar extends LitElement {
|
|
|
173
178
|
|
|
174
179
|
private toggleSidebar = () => {
|
|
175
180
|
this.closeAllDetails();
|
|
176
|
-
this.
|
|
181
|
+
this.isOpen = !this.isOpen;
|
|
182
|
+
|
|
183
|
+
const {
|
|
184
|
+
NavbarStateCookieName,
|
|
185
|
+
NavbarStateCookieOpenValue,
|
|
186
|
+
NavbarStateCookieClosedValue,
|
|
187
|
+
} = Config;
|
|
188
|
+
|
|
189
|
+
document.cookie = `${NavbarStateCookieName}=${this.isOpen ? NavbarStateCookieOpenValue : NavbarStateCookieClosedValue}; path=/; max-age=31536000`;
|
|
177
190
|
};
|
|
178
191
|
|
|
179
|
-
private
|
|
192
|
+
private handleDetailsToggle = (e: ToggleEvent) => {
|
|
180
193
|
const { newState } = e;
|
|
181
194
|
const target = e.currentTarget as HTMLDetailsElement;
|
|
182
195
|
|
|
183
196
|
if (newState === 'open') {
|
|
184
|
-
if (!this.
|
|
185
|
-
this.
|
|
197
|
+
if (!this.isOpen) {
|
|
198
|
+
this.toggleSidebar();
|
|
186
199
|
}
|
|
187
200
|
|
|
188
201
|
this.closeAllDetails(target);
|
|
@@ -216,8 +229,8 @@ export class TtNavbar extends LitElement {
|
|
|
216
229
|
|
|
217
230
|
render() {
|
|
218
231
|
return html`
|
|
219
|
-
<nav id=${this.id} class="${this.
|
|
220
|
-
<div class="sidebar-header ${this.
|
|
232
|
+
<nav id=${this.id} class="${this.isOpen ? '' : 'sidebar-closed'}">
|
|
233
|
+
<div class="sidebar-header ${this.isOpen ? '' : 'sidebar-closed'}">
|
|
221
234
|
<div class="logo">
|
|
222
235
|
${unsafeSVG(tripteaseLogo)}
|
|
223
236
|
</div>
|
|
@@ -230,7 +243,7 @@ export class TtNavbar extends LitElement {
|
|
|
230
243
|
</button>
|
|
231
244
|
</div>
|
|
232
245
|
|
|
233
|
-
<div class="nav-items ${this.
|
|
246
|
+
<div class="nav-items ${this.isOpen ? '' : 'sidebar-closed'}">
|
|
234
247
|
<a
|
|
235
248
|
class="nav-item"
|
|
236
249
|
href=${this.buildUrl('/')}
|
|
@@ -249,7 +262,7 @@ export class TtNavbar extends LitElement {
|
|
|
249
262
|
data-intercom-target="channels"
|
|
250
263
|
>${unsafeSVG(channels)}<span>Channels</span></a
|
|
251
264
|
>
|
|
252
|
-
<details id="market-insights" @toggle=${this.
|
|
265
|
+
<details id="market-insights" @toggle=${this.handleDetailsToggle} data-intercom-target="market-insights">
|
|
253
266
|
<summary>
|
|
254
267
|
${unsafeSVG(graph)}
|
|
255
268
|
<span>Market Insights</span>
|
|
@@ -272,7 +285,7 @@ export class TtNavbar extends LitElement {
|
|
|
272
285
|
>
|
|
273
286
|
</div>
|
|
274
287
|
</details>
|
|
275
|
-
<details id="settings" @toggle=${this.
|
|
288
|
+
<details id="settings" @toggle=${this.handleDetailsToggle} data-intercom-target="settings">
|
|
276
289
|
<summary>
|
|
277
290
|
${unsafeSVG(gear)}
|
|
278
291
|
<span>Settings</span>
|
|
@@ -310,7 +323,7 @@ export class TtNavbar extends LitElement {
|
|
|
310
323
|
</div>
|
|
311
324
|
</details>
|
|
312
325
|
<hr />
|
|
313
|
-
<details id="account" @toggle=${this.
|
|
326
|
+
<details id="account" @toggle=${this.handleDetailsToggle} data-intercom-target="account">
|
|
314
327
|
<summary>
|
|
315
328
|
${unsafeSVG(user)}
|
|
316
329
|
<span>Account</span>
|
|
@@ -333,7 +346,7 @@ export class TtNavbar extends LitElement {
|
|
|
333
346
|
>
|
|
334
347
|
</div>
|
|
335
348
|
</details>
|
|
336
|
-
<details id="billing-routes" @toggle=${this.
|
|
349
|
+
<details id="billing-routes" @toggle=${this.handleDetailsToggle} data-intercom-target="billing">
|
|
337
350
|
<summary>
|
|
338
351
|
${unsafeSVG(wallet)}
|
|
339
352
|
<span>Billing</span>
|
|
@@ -357,7 +370,7 @@ export class TtNavbar extends LitElement {
|
|
|
357
370
|
</div>
|
|
358
371
|
</details>
|
|
359
372
|
</div>
|
|
360
|
-
<div class="tertiary-nav ${this.
|
|
373
|
+
<div class="tertiary-nav ${this.isOpen ? '' : 'sidebar-closed'}">
|
|
361
374
|
<div id="external-links" class="nav-items">
|
|
362
375
|
<a
|
|
363
376
|
class="nav-item external-link"
|
|
@@ -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
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Clerk } from '@clerk/clerk-js';
|
|
2
1
|
import '../src/tt-navbar.js';
|
|
3
2
|
import {
|
|
4
3
|
elementUpdated,
|
|
@@ -7,8 +6,7 @@ import {
|
|
|
7
6
|
nextFrame,
|
|
8
7
|
waitUntil,
|
|
9
8
|
} from '@open-wc/testing';
|
|
10
|
-
import {
|
|
11
|
-
import { TtNavbar } from '../src/index.js';
|
|
9
|
+
import { Config, getInitialNavbarState, TtNavbar } from '../src/index.js';
|
|
12
10
|
import { Routes } from '../src/Routes.js';
|
|
13
11
|
|
|
14
12
|
// eslint-disable-next-line no-undef
|
|
@@ -400,77 +398,80 @@ describe('TtNavbar', () => {
|
|
|
400
398
|
expect(anchor!.textContent).to.include('Booking reconciliation');
|
|
401
399
|
});
|
|
402
400
|
|
|
403
|
-
it(
|
|
401
|
+
it("should default to 'open' when the 'initial-state' attribute is not provided", async () => {
|
|
404
402
|
const navbar = await fixture<TtNavbar>(
|
|
405
403
|
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
406
404
|
);
|
|
407
405
|
|
|
408
406
|
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
409
407
|
|
|
410
|
-
expect(window.Clerk).to.be.undefined;
|
|
411
408
|
expect(logo).to.exist;
|
|
412
409
|
expect(logo!.checkVisibility()).to.be.true;
|
|
413
410
|
});
|
|
414
411
|
|
|
415
|
-
it(
|
|
416
|
-
const
|
|
417
|
-
|
|
418
|
-
|
|
412
|
+
it("should default to 'open' when the 'initial-state' attribute is 'open", async () => {
|
|
413
|
+
const navbar = await fixture<TtNavbar>(
|
|
414
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieOpenValue}></tt-navbar>`,
|
|
415
|
+
);
|
|
419
416
|
|
|
420
|
-
const
|
|
421
|
-
func({ user: mockUser } as unknown as Resources);
|
|
422
|
-
};
|
|
417
|
+
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
423
418
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
} as Clerk;
|
|
419
|
+
expect(logo).to.exist;
|
|
420
|
+
expect(logo!.checkVisibility()).to.be.true;
|
|
421
|
+
});
|
|
428
422
|
|
|
423
|
+
it("should default to 'closed' when the 'initial-state' attribute is 'closed", async () => {
|
|
429
424
|
const navbar = await fixture<TtNavbar>(
|
|
430
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
425
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieClosedValue}></tt-navbar>`,
|
|
431
426
|
);
|
|
432
427
|
|
|
433
428
|
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
434
429
|
|
|
435
430
|
expect(logo).to.exist;
|
|
436
431
|
expect(logo!.checkVisibility()).to.be.false;
|
|
437
|
-
|
|
438
|
-
window.Clerk = undefined; // Cleanup
|
|
439
432
|
});
|
|
440
433
|
|
|
441
|
-
it('should
|
|
442
|
-
|
|
443
|
-
|
|
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();
|
|
444
437
|
|
|
445
|
-
|
|
446
|
-
timesCalled += 1;
|
|
447
|
-
calledWith = args;
|
|
448
|
-
};
|
|
438
|
+
expect(startingCookieValue).to.be.undefined;
|
|
449
439
|
|
|
450
|
-
const
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
ui: { duck: 'duck', navigationOpen: false },
|
|
457
|
-
},
|
|
458
|
-
},
|
|
459
|
-
};
|
|
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;
|
|
460
446
|
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
};
|
|
447
|
+
navbarToggleBtn.click();
|
|
448
|
+
await elementUpdated(navbar);
|
|
464
449
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
450
|
+
const newState = getInitialNavbarState();
|
|
451
|
+
|
|
452
|
+
await expect(newState).to.equal(Config.NavbarStateCookieClosedValue);
|
|
453
|
+
});
|
|
469
454
|
|
|
455
|
+
it('should update the cookie value when navbar is expanded', async () => {
|
|
470
456
|
const navbar = await fixture<TtNavbar>(
|
|
471
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
457
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieClosedValue}></tt-navbar>`,
|
|
472
458
|
);
|
|
459
|
+
const navbarToggleBtn = navbar.shadowRoot!.querySelector(
|
|
460
|
+
'#navbar-toggle-btn',
|
|
461
|
+
) as HTMLButtonElement;
|
|
473
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
|
+
);
|
|
474
475
|
const navbarToggleBtn = navbar.shadowRoot!.querySelector(
|
|
475
476
|
'#navbar-toggle-btn',
|
|
476
477
|
) as HTMLButtonElement;
|
|
@@ -478,20 +479,8 @@ describe('TtNavbar', () => {
|
|
|
478
479
|
navbarToggleBtn.click();
|
|
479
480
|
await elementUpdated(navbar);
|
|
480
481
|
|
|
481
|
-
|
|
482
|
-
expect(calledWith).to.deep.equal({
|
|
483
|
-
unsafeMetadata: {
|
|
484
|
-
foo: 'foo',
|
|
485
|
-
preferences: {
|
|
486
|
-
bar: 'bar',
|
|
487
|
-
ui: {
|
|
488
|
-
duck: 'duck',
|
|
489
|
-
navigationOpen: true,
|
|
490
|
-
},
|
|
491
|
-
},
|
|
492
|
-
},
|
|
493
|
-
});
|
|
482
|
+
const newState = getInitialNavbarState();
|
|
494
483
|
|
|
495
|
-
|
|
484
|
+
await expect(newState).to.equal(Config.NavbarStateCookieClosedValue);
|
|
496
485
|
});
|
|
497
486
|
});
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
2
|
-
export declare class NavbarController implements ReactiveController {
|
|
3
|
-
host: ReactiveControllerHost;
|
|
4
|
-
private _isOpen;
|
|
5
|
-
private _hasInitialized;
|
|
6
|
-
private _removeClerkListener?;
|
|
7
|
-
constructor(host: ReactiveControllerHost);
|
|
8
|
-
get isOpen(): boolean;
|
|
9
|
-
hostUpdate(): void;
|
|
10
|
-
hostDisconnected(): void;
|
|
11
|
-
toggle(): Promise<void>;
|
|
12
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
export class NavbarController {
|
|
2
|
-
constructor(host) {
|
|
3
|
-
this._isOpen = true;
|
|
4
|
-
this._hasInitialized = false;
|
|
5
|
-
(this.host = host).addController(this);
|
|
6
|
-
}
|
|
7
|
-
get isOpen() {
|
|
8
|
-
return this._isOpen;
|
|
9
|
-
}
|
|
10
|
-
hostUpdate() {
|
|
11
|
-
if (!this._hasInitialized && window.Clerk) {
|
|
12
|
-
this._removeClerkListener = window.Clerk.addListener(resources => {
|
|
13
|
-
const { user } = resources;
|
|
14
|
-
if (user && !this._hasInitialized) {
|
|
15
|
-
const navigationOpen = user.unsafeMetadata?.preferences?.ui?.navigationOpen;
|
|
16
|
-
if (navigationOpen !== undefined) {
|
|
17
|
-
this._isOpen = navigationOpen;
|
|
18
|
-
this.host.requestUpdate();
|
|
19
|
-
}
|
|
20
|
-
this._hasInitialized = true;
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
hostDisconnected() {
|
|
26
|
-
if (this._removeClerkListener) {
|
|
27
|
-
this._removeClerkListener();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
async toggle() {
|
|
31
|
-
this._isOpen = !this._isOpen;
|
|
32
|
-
if (window.Clerk) {
|
|
33
|
-
window.Clerk.user?.update({
|
|
34
|
-
unsafeMetadata: {
|
|
35
|
-
...window.Clerk.user?.unsafeMetadata,
|
|
36
|
-
preferences: {
|
|
37
|
-
...window.Clerk.user?.unsafeMetadata?.preferences,
|
|
38
|
-
ui: {
|
|
39
|
-
...window.Clerk.user?.unsafeMetadata?.preferences?.ui,
|
|
40
|
-
navigationOpen: this.isOpen,
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
this.host.requestUpdate();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=NavbarController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NavbarController.js","sourceRoot":"","sources":["../../src/NavbarController.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IAS3B,YAAY,IAA4B;QANhC,YAAO,GAAG,IAAI,CAAC;QAEf,oBAAe,GAAG,KAAK,CAAC;QAK9B,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;gBAC/D,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;gBAC3B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;oBAClC,MAAM,cAAc,GAClB,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,cAAc,CAAC;oBAEvD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;wBACjC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;wBAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC5B,CAAC;oBAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAE7B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;gBACxB,cAAc,EAAE;oBACd,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc;oBACpC,WAAW,EAAE;wBACX,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW;wBACjD,EAAE,EAAE;4BACF,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE;4BACrD,cAAc,EAAE,IAAI,CAAC,MAAM;yBAC5B;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;CACF","sourcesContent":["import { ReactiveController, ReactiveControllerHost } from 'lit';\nimport { UnsubscribeCallback } from '@clerk/types';\n\nexport class NavbarController implements ReactiveController {\n host: ReactiveControllerHost;\n\n private _isOpen = true;\n\n private _hasInitialized = false;\n\n private _removeClerkListener?: UnsubscribeCallback;\n\n constructor(host: ReactiveControllerHost) {\n (this.host = host).addController(this);\n }\n\n get isOpen() {\n return this._isOpen;\n }\n\n hostUpdate() {\n if (!this._hasInitialized && window.Clerk) {\n this._removeClerkListener = window.Clerk.addListener(resources => {\n const { user } = resources;\n if (user && !this._hasInitialized) {\n const navigationOpen =\n user.unsafeMetadata?.preferences?.ui?.navigationOpen;\n\n if (navigationOpen !== undefined) {\n this._isOpen = navigationOpen;\n this.host.requestUpdate();\n }\n\n this._hasInitialized = true;\n }\n });\n }\n }\n\n hostDisconnected() {\n if (this._removeClerkListener) {\n this._removeClerkListener();\n }\n }\n\n async toggle() {\n this._isOpen = !this._isOpen;\n\n if (window.Clerk) {\n window.Clerk.user?.update({\n unsafeMetadata: {\n ...window.Clerk.user?.unsafeMetadata,\n preferences: {\n ...window.Clerk.user?.unsafeMetadata?.preferences,\n ui: {\n ...window.Clerk.user?.unsafeMetadata?.preferences?.ui,\n navigationOpen: this.isOpen,\n },\n },\n },\n });\n }\n\n this.host.requestUpdate();\n }\n}\n"]}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @triptease/tt-navbar v0.0.45
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
// src/NavbarController.ts
|
|
6
|
-
var NavbarController = class {
|
|
7
|
-
constructor(host) {
|
|
8
|
-
this._isOpen = true;
|
|
9
|
-
this._hasInitialized = false;
|
|
10
|
-
(this.host = host).addController(this);
|
|
11
|
-
}
|
|
12
|
-
get isOpen() {
|
|
13
|
-
return this._isOpen;
|
|
14
|
-
}
|
|
15
|
-
hostUpdate() {
|
|
16
|
-
if (!this._hasInitialized && window.Clerk) {
|
|
17
|
-
this._removeClerkListener = window.Clerk.addListener((resources) => {
|
|
18
|
-
const { user } = resources;
|
|
19
|
-
if (user && !this._hasInitialized) {
|
|
20
|
-
const navigationOpen = user.unsafeMetadata?.preferences?.ui?.navigationOpen;
|
|
21
|
-
if (navigationOpen !== void 0) {
|
|
22
|
-
this._isOpen = navigationOpen;
|
|
23
|
-
this.host.requestUpdate();
|
|
24
|
-
}
|
|
25
|
-
this._hasInitialized = true;
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
hostDisconnected() {
|
|
31
|
-
if (this._removeClerkListener) {
|
|
32
|
-
this._removeClerkListener();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
async toggle() {
|
|
36
|
-
this._isOpen = !this._isOpen;
|
|
37
|
-
if (window.Clerk) {
|
|
38
|
-
window.Clerk.user?.update({
|
|
39
|
-
unsafeMetadata: {
|
|
40
|
-
...window.Clerk.user?.unsafeMetadata,
|
|
41
|
-
preferences: {
|
|
42
|
-
...window.Clerk.user?.unsafeMetadata?.preferences,
|
|
43
|
-
ui: {
|
|
44
|
-
...window.Clerk.user?.unsafeMetadata?.preferences?.ui,
|
|
45
|
-
navigationOpen: this.isOpen
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
this.host.requestUpdate();
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
export {
|
|
55
|
-
NavbarController
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=NavbarController.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/NavbarController.ts"],
|
|
4
|
-
"sourcesContent": ["import { ReactiveController, ReactiveControllerHost } from 'lit';\nimport { UnsubscribeCallback } from '@clerk/types';\n\nexport class NavbarController implements ReactiveController {\n host: ReactiveControllerHost;\n\n private _isOpen = true;\n\n private _hasInitialized = false;\n\n private _removeClerkListener?: UnsubscribeCallback;\n\n constructor(host: ReactiveControllerHost) {\n (this.host = host).addController(this);\n }\n\n get isOpen() {\n return this._isOpen;\n }\n\n hostUpdate() {\n if (!this._hasInitialized && window.Clerk) {\n this._removeClerkListener = window.Clerk.addListener(resources => {\n const { user } = resources;\n if (user && !this._hasInitialized) {\n const navigationOpen =\n user.unsafeMetadata?.preferences?.ui?.navigationOpen;\n\n if (navigationOpen !== undefined) {\n this._isOpen = navigationOpen;\n this.host.requestUpdate();\n }\n\n this._hasInitialized = true;\n }\n });\n }\n }\n\n hostDisconnected() {\n if (this._removeClerkListener) {\n this._removeClerkListener();\n }\n }\n\n async toggle() {\n this._isOpen = !this._isOpen;\n\n if (window.Clerk) {\n window.Clerk.user?.update({\n unsafeMetadata: {\n ...window.Clerk.user?.unsafeMetadata,\n preferences: {\n ...window.Clerk.user?.unsafeMetadata?.preferences,\n ui: {\n ...window.Clerk.user?.unsafeMetadata?.preferences?.ui,\n navigationOpen: this.isOpen,\n },\n },\n },\n });\n }\n\n this.host.requestUpdate();\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;AAGO,IAAM,mBAAN,MAAqD;AAAA,EAS1D,YAAY,MAA8B;AAN1C,SAAQ,UAAU;AAElB,SAAQ,kBAAkB;AAKxB,KAAC,KAAK,OAAO,MAAM,cAAc,IAAI;AAAA,EACvC;AAAA,EAEA,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,aAAa;AACX,QAAI,CAAC,KAAK,mBAAmB,OAAO,OAAO;AACzC,WAAK,uBAAuB,OAAO,MAAM,YAAY,eAAa;AAChE,cAAM,EAAE,KAAK,IAAI;AACjB,YAAI,QAAQ,CAAC,KAAK,iBAAiB;AACjC,gBAAM,iBACJ,KAAK,gBAAgB,aAAa,IAAI;AAExC,cAAI,mBAAmB,QAAW;AAChC,iBAAK,UAAU;AACf,iBAAK,KAAK,cAAc;AAAA,UAC1B;AAEA,eAAK,kBAAkB;AAAA,QACzB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,mBAAmB;AACjB,QAAI,KAAK,sBAAsB;AAC7B,WAAK,qBAAqB;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,MAAM,SAAS;AACb,SAAK,UAAU,CAAC,KAAK;AAErB,QAAI,OAAO,OAAO;AAChB,aAAO,MAAM,MAAM,OAAO;AAAA,QACxB,gBAAgB;AAAA,UACd,GAAG,OAAO,MAAM,MAAM;AAAA,UACtB,aAAa;AAAA,YACX,GAAG,OAAO,MAAM,MAAM,gBAAgB;AAAA,YACtC,IAAI;AAAA,cACF,GAAG,OAAO,MAAM,MAAM,gBAAgB,aAAa;AAAA,cACnD,gBAAgB,KAAK;AAAA,YACvB;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,SAAK,KAAK,cAAc;AAAA,EAC1B;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/src/NavbarController.ts
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
2
|
-
import { UnsubscribeCallback } from '@clerk/types';
|
|
3
|
-
|
|
4
|
-
export class NavbarController implements ReactiveController {
|
|
5
|
-
host: ReactiveControllerHost;
|
|
6
|
-
|
|
7
|
-
private _isOpen = true;
|
|
8
|
-
|
|
9
|
-
private _hasInitialized = false;
|
|
10
|
-
|
|
11
|
-
private _removeClerkListener?: UnsubscribeCallback;
|
|
12
|
-
|
|
13
|
-
constructor(host: ReactiveControllerHost) {
|
|
14
|
-
(this.host = host).addController(this);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
get isOpen() {
|
|
18
|
-
return this._isOpen;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
hostUpdate() {
|
|
22
|
-
if (!this._hasInitialized && window.Clerk) {
|
|
23
|
-
this._removeClerkListener = window.Clerk.addListener(resources => {
|
|
24
|
-
const { user } = resources;
|
|
25
|
-
if (user && !this._hasInitialized) {
|
|
26
|
-
const navigationOpen =
|
|
27
|
-
user.unsafeMetadata?.preferences?.ui?.navigationOpen;
|
|
28
|
-
|
|
29
|
-
if (navigationOpen !== undefined) {
|
|
30
|
-
this._isOpen = navigationOpen;
|
|
31
|
-
this.host.requestUpdate();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
this._hasInitialized = true;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
hostDisconnected() {
|
|
41
|
-
if (this._removeClerkListener) {
|
|
42
|
-
this._removeClerkListener();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
async toggle() {
|
|
47
|
-
this._isOpen = !this._isOpen;
|
|
48
|
-
|
|
49
|
-
if (window.Clerk) {
|
|
50
|
-
window.Clerk.user?.update({
|
|
51
|
-
unsafeMetadata: {
|
|
52
|
-
...window.Clerk.user?.unsafeMetadata,
|
|
53
|
-
preferences: {
|
|
54
|
-
...window.Clerk.user?.unsafeMetadata?.preferences,
|
|
55
|
-
ui: {
|
|
56
|
-
...window.Clerk.user?.unsafeMetadata?.preferences?.ui,
|
|
57
|
-
navigationOpen: this.isOpen,
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
this.host.requestUpdate();
|
|
65
|
-
}
|
|
66
|
-
}
|