@triptease/tt-navbar 0.0.45 → 0.0.46
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/TtNavbar.d.ts +3 -3
- package/dist/src/TtNavbar.js +24 -18
- package/dist/src/TtNavbar.js.map +1 -1
- package/dist/test/tt-navbar.test.js +9 -58
- package/dist/test/tt-navbar.test.js.map +1 -1
- package/dist/web/Routes.js +1 -1
- package/dist/web/TtNavbar.js +24 -68
- package/dist/web/TtNavbar.js.map +4 -4
- package/dist/web/global.d.js +1 -1
- package/dist/web/index.js +24 -68
- 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 +24 -68
- package/dist/web/tt-navbar.js.map +4 -4
- package/dist/web/urlMappings.js +1 -1
- package/package.json +1 -1
- package/src/TtNavbar.ts +24 -18
- package/test/tt-navbar.test.ts +9 -73
- 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/TtNavbar.ts
CHANGED
|
@@ -19,7 +19,6 @@ 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 { NavbarController } from './NavbarController.js';
|
|
23
22
|
|
|
24
23
|
const jsonArrayConverter = (value: string | null) => {
|
|
25
24
|
if (!value) return [];
|
|
@@ -51,6 +50,12 @@ export class TtNavbar extends LitElement {
|
|
|
51
50
|
@property({ type: Array, converter: jsonArrayConverter })
|
|
52
51
|
clients: { clientKey: string; displayName: string }[] = [];
|
|
53
52
|
|
|
53
|
+
@property({ type: String, attribute: 'initial-state' })
|
|
54
|
+
initialState: 'open' | 'closed' | undefined = undefined;
|
|
55
|
+
|
|
56
|
+
@state()
|
|
57
|
+
isOpen: boolean = true;
|
|
58
|
+
|
|
54
59
|
@property({ type: Object })
|
|
55
60
|
onClientChange: ((clientKeySelected: string) => void) | undefined;
|
|
56
61
|
|
|
@@ -60,11 +65,6 @@ export class TtNavbar extends LitElement {
|
|
|
60
65
|
@queryAll('a')
|
|
61
66
|
protected allNavLinks!: Array<HTMLAnchorElement>;
|
|
62
67
|
|
|
63
|
-
@state()
|
|
64
|
-
private sidebarOpen = true;
|
|
65
|
-
|
|
66
|
-
private navbarController = new NavbarController(this);
|
|
67
|
-
|
|
68
68
|
protected firstUpdated() {
|
|
69
69
|
this.setActiveState();
|
|
70
70
|
}
|
|
@@ -77,6 +77,10 @@ export class TtNavbar extends LitElement {
|
|
|
77
77
|
window.addEventListener('tetris:navigate', this.setActiveState);
|
|
78
78
|
|
|
79
79
|
super.connectedCallback();
|
|
80
|
+
|
|
81
|
+
if (this.initialState) {
|
|
82
|
+
this.isOpen = this.initialState === 'open';
|
|
83
|
+
}
|
|
80
84
|
}
|
|
81
85
|
|
|
82
86
|
public disconnectedCallback() {
|
|
@@ -173,16 +177,18 @@ export class TtNavbar extends LitElement {
|
|
|
173
177
|
|
|
174
178
|
private toggleSidebar = () => {
|
|
175
179
|
this.closeAllDetails();
|
|
176
|
-
this.
|
|
180
|
+
this.isOpen = !this.isOpen;
|
|
181
|
+
|
|
182
|
+
// TODO - Set cookie
|
|
177
183
|
};
|
|
178
184
|
|
|
179
|
-
private
|
|
185
|
+
private handleDetailsToggle = (e: ToggleEvent) => {
|
|
180
186
|
const { newState } = e;
|
|
181
187
|
const target = e.currentTarget as HTMLDetailsElement;
|
|
182
188
|
|
|
183
189
|
if (newState === 'open') {
|
|
184
|
-
if (!this.
|
|
185
|
-
this.
|
|
190
|
+
if (!this.isOpen) {
|
|
191
|
+
this.toggleSidebar();
|
|
186
192
|
}
|
|
187
193
|
|
|
188
194
|
this.closeAllDetails(target);
|
|
@@ -216,8 +222,8 @@ export class TtNavbar extends LitElement {
|
|
|
216
222
|
|
|
217
223
|
render() {
|
|
218
224
|
return html`
|
|
219
|
-
<nav id=${this.id} class="${this.
|
|
220
|
-
<div class="sidebar-header ${this.
|
|
225
|
+
<nav id=${this.id} class="${this.isOpen ? '' : 'sidebar-closed'}">
|
|
226
|
+
<div class="sidebar-header ${this.isOpen ? '' : 'sidebar-closed'}">
|
|
221
227
|
<div class="logo">
|
|
222
228
|
${unsafeSVG(tripteaseLogo)}
|
|
223
229
|
</div>
|
|
@@ -230,7 +236,7 @@ export class TtNavbar extends LitElement {
|
|
|
230
236
|
</button>
|
|
231
237
|
</div>
|
|
232
238
|
|
|
233
|
-
<div class="nav-items ${this.
|
|
239
|
+
<div class="nav-items ${this.isOpen ? '' : 'sidebar-closed'}">
|
|
234
240
|
<a
|
|
235
241
|
class="nav-item"
|
|
236
242
|
href=${this.buildUrl('/')}
|
|
@@ -249,7 +255,7 @@ export class TtNavbar extends LitElement {
|
|
|
249
255
|
data-intercom-target="channels"
|
|
250
256
|
>${unsafeSVG(channels)}<span>Channels</span></a
|
|
251
257
|
>
|
|
252
|
-
<details id="market-insights" @toggle=${this.
|
|
258
|
+
<details id="market-insights" @toggle=${this.handleDetailsToggle} data-intercom-target="market-insights">
|
|
253
259
|
<summary>
|
|
254
260
|
${unsafeSVG(graph)}
|
|
255
261
|
<span>Market Insights</span>
|
|
@@ -272,7 +278,7 @@ export class TtNavbar extends LitElement {
|
|
|
272
278
|
>
|
|
273
279
|
</div>
|
|
274
280
|
</details>
|
|
275
|
-
<details id="settings" @toggle=${this.
|
|
281
|
+
<details id="settings" @toggle=${this.handleDetailsToggle} data-intercom-target="settings">
|
|
276
282
|
<summary>
|
|
277
283
|
${unsafeSVG(gear)}
|
|
278
284
|
<span>Settings</span>
|
|
@@ -310,7 +316,7 @@ export class TtNavbar extends LitElement {
|
|
|
310
316
|
</div>
|
|
311
317
|
</details>
|
|
312
318
|
<hr />
|
|
313
|
-
<details id="account" @toggle=${this.
|
|
319
|
+
<details id="account" @toggle=${this.handleDetailsToggle} data-intercom-target="account">
|
|
314
320
|
<summary>
|
|
315
321
|
${unsafeSVG(user)}
|
|
316
322
|
<span>Account</span>
|
|
@@ -333,7 +339,7 @@ export class TtNavbar extends LitElement {
|
|
|
333
339
|
>
|
|
334
340
|
</div>
|
|
335
341
|
</details>
|
|
336
|
-
<details id="billing-routes" @toggle=${this.
|
|
342
|
+
<details id="billing-routes" @toggle=${this.handleDetailsToggle} data-intercom-target="billing">
|
|
337
343
|
<summary>
|
|
338
344
|
${unsafeSVG(wallet)}
|
|
339
345
|
<span>Billing</span>
|
|
@@ -357,7 +363,7 @@ export class TtNavbar extends LitElement {
|
|
|
357
363
|
</div>
|
|
358
364
|
</details>
|
|
359
365
|
</div>
|
|
360
|
-
<div class="tertiary-nav ${this.
|
|
366
|
+
<div class="tertiary-nav ${this.isOpen ? '' : 'sidebar-closed'}">
|
|
361
367
|
<div id="external-links" class="nav-items">
|
|
362
368
|
<a
|
|
363
369
|
class="nav-item external-link"
|
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,7 +6,6 @@ import {
|
|
|
7
6
|
nextFrame,
|
|
8
7
|
waitUntil,
|
|
9
8
|
} from '@open-wc/testing';
|
|
10
|
-
import { Resources } from '@clerk/types';
|
|
11
9
|
import { TtNavbar } from '../src/index.js';
|
|
12
10
|
import { Routes } from '../src/Routes.js';
|
|
13
11
|
|
|
@@ -400,98 +398,36 @@ 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 mockUser = {
|
|
417
|
-
unsafeMetadata: { preferences: { ui: { navigationOpen: false } } },
|
|
418
|
-
};
|
|
419
|
-
|
|
420
|
-
const mockAddListener = (func: (resources: Resources) => void) => {
|
|
421
|
-
func({ user: mockUser } as unknown as Resources);
|
|
422
|
-
};
|
|
423
|
-
|
|
424
|
-
window.Clerk = {
|
|
425
|
-
addListener: mockAddListener,
|
|
426
|
-
user: mockUser,
|
|
427
|
-
} as Clerk;
|
|
428
|
-
|
|
412
|
+
it("should default to 'open' when the 'initial-state' attribute is 'open", async () => {
|
|
429
413
|
const navbar = await fixture<TtNavbar>(
|
|
430
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
414
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state="open"></tt-navbar>`,
|
|
431
415
|
);
|
|
432
416
|
|
|
433
417
|
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
434
418
|
|
|
435
419
|
expect(logo).to.exist;
|
|
436
|
-
expect(logo!.checkVisibility()).to.be.
|
|
437
|
-
|
|
438
|
-
window.Clerk = undefined; // Cleanup
|
|
420
|
+
expect(logo!.checkVisibility()).to.be.true;
|
|
439
421
|
});
|
|
440
422
|
|
|
441
|
-
it(
|
|
442
|
-
let timesCalled = 0;
|
|
443
|
-
let calledWith: unknown;
|
|
444
|
-
|
|
445
|
-
const mockUpdate = (args: unknown) => {
|
|
446
|
-
timesCalled += 1;
|
|
447
|
-
calledWith = args;
|
|
448
|
-
};
|
|
449
|
-
|
|
450
|
-
const mockUser = {
|
|
451
|
-
update: mockUpdate,
|
|
452
|
-
unsafeMetadata: {
|
|
453
|
-
foo: 'foo',
|
|
454
|
-
preferences: {
|
|
455
|
-
bar: 'bar',
|
|
456
|
-
ui: { duck: 'duck', navigationOpen: false },
|
|
457
|
-
},
|
|
458
|
-
},
|
|
459
|
-
};
|
|
460
|
-
|
|
461
|
-
const mockAddListener = (func: (resources: Resources) => void) => {
|
|
462
|
-
func({ user: mockUser } as unknown as Resources);
|
|
463
|
-
};
|
|
464
|
-
|
|
465
|
-
window.Clerk = {
|
|
466
|
-
addListener: mockAddListener,
|
|
467
|
-
user: mockUser,
|
|
468
|
-
} as unknown as Clerk;
|
|
469
|
-
|
|
423
|
+
it("should default to 'closed' when the 'initial-state' attribute is 'closed", async () => {
|
|
470
424
|
const navbar = await fixture<TtNavbar>(
|
|
471
|
-
`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`,
|
|
425
|
+
`<tt-navbar client-key=${CLIENT_KEY} initial-state="closed"></tt-navbar>`,
|
|
472
426
|
);
|
|
473
427
|
|
|
474
|
-
const
|
|
475
|
-
'#navbar-toggle-btn',
|
|
476
|
-
) as HTMLButtonElement;
|
|
477
|
-
|
|
478
|
-
navbarToggleBtn.click();
|
|
479
|
-
await elementUpdated(navbar);
|
|
480
|
-
|
|
481
|
-
await expect(timesCalled).to.equal(1);
|
|
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
|
-
});
|
|
428
|
+
const logo = navbar.shadowRoot!.querySelector('.logo');
|
|
494
429
|
|
|
495
|
-
|
|
430
|
+
expect(logo).to.exist;
|
|
431
|
+
expect(logo!.checkVisibility()).to.be.false;
|
|
496
432
|
});
|
|
497
433
|
});
|
|
@@ -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
|
-
}
|