@triptease/tt-navbar 0.0.36 → 0.0.38

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @triptease/tt-navbar v0.0.36
2
+ * @triptease/tt-navbar v0.0.38
3
3
  */
4
4
 
5
5
  // src/urlMappings.ts
@@ -10,7 +10,12 @@ var urlMappings = {
10
10
  "/messages/$CLIENT_KEY/messages": "/channels",
11
11
  "/$CLIENT_KEY/email": "/channels",
12
12
  "/pricematch/$CLIENT_KEY/performance": "/channels",
13
- "/chat/insights/$CLIENT_KEY": "/channels"
13
+ "/chat/insights/$CLIENT_KEY": "/channels",
14
+ "/settings/$CLIENT_KEY/branding": "/settings/$CLIENT_KEY/guides",
15
+ "/settings/$CLIENT_KEY/price-check": "/settings/$CLIENT_KEY/guides",
16
+ "/settings/$CLIENT_KEY/price-config": "/settings/$CLIENT_KEY/guides",
17
+ "/settings/$CLIENT_KEY/hotel-details-finder": "/settings/$CLIENT_KEY/guides",
18
+ "/settings/$CLIENT_KEY/deactivation-center": "/settings/$CLIENT_KEY/guides"
14
19
  };
15
20
  export {
16
21
  urlMappings
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/urlMappings.ts"],
4
- "sourcesContent": ["type UrlMapping = Record<string, string>;\n\nconst urlMappings: UrlMapping = {\n '/paidsearch/$CLIENT_KEY/performance': '/channels',\n '/meta/$CLIENT_KEY/performance': '/channels',\n '/retargeting/$CLIENT_KEY/performance': '/channels',\n '/messages/$CLIENT_KEY/messages': '/channels',\n '/$CLIENT_KEY/email': '/channels',\n '/pricematch/$CLIENT_KEY/performance': '/channels',\n '/chat/insights/$CLIENT_KEY': '/channels',\n};\n\nexport { urlMappings };\n"],
5
- "mappings": ";;;;;AAEA,IAAM,cAA0B;AAAA,EAC9B,uCAAuC;AAAA,EACvC,iCAAiC;AAAA,EACjC,wCAAwC;AAAA,EACxC,kCAAkC;AAAA,EAClC,sBAAsB;AAAA,EACtB,uCAAuC;AAAA,EACvC,8BAA8B;AAChC;",
4
+ "sourcesContent": ["type UrlMapping = Record<string, string>;\n\nconst urlMappings: UrlMapping = {\n '/paidsearch/$CLIENT_KEY/performance': '/channels',\n '/meta/$CLIENT_KEY/performance': '/channels',\n '/retargeting/$CLIENT_KEY/performance': '/channels',\n '/messages/$CLIENT_KEY/messages': '/channels',\n '/$CLIENT_KEY/email': '/channels',\n '/pricematch/$CLIENT_KEY/performance': '/channels',\n '/chat/insights/$CLIENT_KEY': '/channels',\n '/settings/$CLIENT_KEY/branding': '/settings/$CLIENT_KEY/guides',\n '/settings/$CLIENT_KEY/price-check': '/settings/$CLIENT_KEY/guides',\n '/settings/$CLIENT_KEY/price-config': '/settings/$CLIENT_KEY/guides',\n '/settings/$CLIENT_KEY/hotel-details-finder': '/settings/$CLIENT_KEY/guides',\n '/settings/$CLIENT_KEY/deactivation-center': '/settings/$CLIENT_KEY/guides',\n};\n\nexport { urlMappings };\n"],
5
+ "mappings": ";;;;;AAEA,IAAM,cAA0B;AAAA,EAC9B,uCAAuC;AAAA,EACvC,iCAAiC;AAAA,EACjC,wCAAwC;AAAA,EACxC,kCAAkC;AAAA,EAClC,sBAAsB;AAAA,EACtB,uCAAuC;AAAA,EACvC,8BAA8B;AAAA,EAC9B,kCAAkC;AAAA,EAClC,qCAAqC;AAAA,EACrC,sCAAsC;AAAA,EACtC,8CAA8C;AAAA,EAC9C,6CAA6C;AAC/C;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent tt-navbar following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "tt-navbar",
6
- "version": "0.0.36",
6
+ "version": "0.0.38",
7
7
  "type": "module",
8
8
  "main": "dist/src/index.js",
9
9
  "module": "dist/src/index.js",
@@ -31,7 +31,16 @@ export class NavbarController implements ReactiveController {
31
31
 
32
32
  if (window.Clerk) {
33
33
  await window.Clerk.user?.update({
34
- unsafeMetadata: { preferences: { ui: { navigationOpen: newState } } },
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: newState,
41
+ },
42
+ },
43
+ },
35
44
  });
36
45
  }
37
46
 
package/src/TtNavbar.ts CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  logout,
13
13
  sidebarCollapsed,
14
14
  user,
15
- wallet,
15
+ wallet
16
16
  } from '@triptease/icons';
17
17
  import '@triptease/tt-combobox';
18
18
  import { styles } from './styles.js';
@@ -117,14 +117,13 @@ export class TtNavbar extends LitElement {
117
117
  const links = Object.values(this.allNavLinks);
118
118
  bestMatch = links.find(link => link.id === Routes.CampaignManager);
119
119
  }
120
-
121
120
  if (!bestMatch && this.clientKey) {
122
121
  const parsedPath = currentPath.replace(this.clientKey, '$CLIENT_KEY');
123
122
  const mappedUrl = urlMappings[parsedPath];
124
-
125
123
  if (mappedUrl) {
124
+ const clientSpecificUrl = mappedUrl.includes('$CLIENT_KEY') ? mappedUrl.replace('$CLIENT_KEY', this.clientKey) : mappedUrl;
126
125
  const links = Object.values(this.allNavLinks);
127
- bestMatch = links.find(link => link.href.includes(mappedUrl));
126
+ bestMatch = links.find(link => link.href.includes(clientSpecificUrl));
128
127
  }
129
128
  }
130
129
 
@@ -379,26 +378,26 @@ export class TtNavbar extends LitElement {
379
378
  ${
380
379
  this.clients.length > 1
381
380
  ? html`
382
- <tt-combobox
383
- .openUpward=${true}
384
- .value=${this.clientKey ? [this.clientKey] : []}
385
- @change=${this.handleClientChange}
386
- >
387
- ${this.clients.map(
388
- client => html`
389
- <option slot="option" value=${client.clientKey}>
390
- ${client.displayName}
391
- </option>
392
- `,
393
- )}
394
- </tt-combobox>
395
- `
381
+ <tt-combobox
382
+ .openUpward=${true}
383
+ .value=${this.clientKey ? [this.clientKey] : []}
384
+ @change=${this.handleClientChange}
385
+ >
386
+ ${this.clients.map(
387
+ client => html`
388
+ <option slot="option" value=${client.clientKey}>
389
+ ${client.displayName}
390
+ </option>
391
+ `
392
+ )}
393
+ </tt-combobox>
394
+ `
396
395
  : html`
397
- <div class="single-client-name">
398
- ${this.clients.find(m => m.clientKey === this.clientKey)
399
- ?.displayName}
400
- </div>
401
- `
396
+ <div class="single-client-name">
397
+ ${this.clients.find(m => m.clientKey === this.clientKey)
398
+ ?.displayName}
399
+ </div>
400
+ `
402
401
  }
403
402
  </div>
404
403
  <a
@@ -8,6 +8,11 @@ const urlMappings: UrlMapping = {
8
8
  '/$CLIENT_KEY/email': '/channels',
9
9
  '/pricematch/$CLIENT_KEY/performance': '/channels',
10
10
  '/chat/insights/$CLIENT_KEY': '/channels',
11
+ '/settings/$CLIENT_KEY/branding': '/settings/$CLIENT_KEY/guides',
12
+ '/settings/$CLIENT_KEY/price-check': '/settings/$CLIENT_KEY/guides',
13
+ '/settings/$CLIENT_KEY/price-config': '/settings/$CLIENT_KEY/guides',
14
+ '/settings/$CLIENT_KEY/hotel-details-finder': '/settings/$CLIENT_KEY/guides',
15
+ '/settings/$CLIENT_KEY/deactivation-center': '/settings/$CLIENT_KEY/guides',
11
16
  };
12
17
 
13
18
  export { urlMappings };
@@ -287,10 +287,11 @@ describe('TtNavbar', () => {
287
287
  [`/meta/${CLIENT_KEY}/performance`, 'Channels'],
288
288
  [`/chat/insights/${CLIENT_KEY}`, 'Channels'],
289
289
  [`/${CLIENT_KEY}/email`, 'Channels'],
290
+ [`/settings/${CLIENT_KEY}/branding`, 'Group settings'],
290
291
  ];
291
292
 
292
293
  URLs.forEach(([route, text]) => {
293
- it(`should show the current page as active when link is ${route}`, async () => {
294
+ it.only(`should show the current page as active when link is ${route}`, async () => {
294
295
  // eslint-disable-next-line no-restricted-globals
295
296
  history.pushState({}, '', route); // 👈 mock URL
296
297
 
@@ -430,15 +431,23 @@ describe('TtNavbar', () => {
430
431
 
431
432
  it('should update Clerk state when toggling if Clerk is available', async () => {
432
433
  let timesCalled = 0;
434
+ let calledWith: unknown;
433
435
 
434
- const mockUpdate = () => {
436
+ const mockUpdate = (args: unknown) => {
435
437
  timesCalled += 1;
438
+ calledWith = args;
436
439
  };
437
440
 
438
441
  window.Clerk = {
439
442
  user: {
440
443
  update: mockUpdate,
441
- unsafeMetadata: { preferences: { ui: { navigationOpen: false } } },
444
+ unsafeMetadata: {
445
+ foo: 'foo',
446
+ preferences: {
447
+ bar: 'bar',
448
+ ui: { duck: 'duck', navigationOpen: false },
449
+ },
450
+ },
442
451
  },
443
452
  } as unknown as Clerk;
444
453
 
@@ -453,6 +462,18 @@ describe('TtNavbar', () => {
453
462
  navbarToggleBtn.click();
454
463
 
455
464
  await expect(timesCalled).to.equal(1);
465
+ expect(calledWith).to.deep.equal({
466
+ unsafeMetadata: {
467
+ foo: 'foo',
468
+ preferences: {
469
+ bar: 'bar',
470
+ ui: {
471
+ duck: 'duck',
472
+ navigationOpen: true,
473
+ },
474
+ },
475
+ },
476
+ });
456
477
 
457
478
  window.Clerk = undefined; // Cleanup
458
479
  });