@salesforcedevs/dx-components 1.2.19-lightdom → 1.2.20-lightdom-6

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.
Files changed (55) hide show
  1. package/package.json +1 -1
  2. package/src/modules/dx/banner/banner.css +32 -0
  3. package/src/modules/dx/banner/banner.html +2 -2
  4. package/src/modules/dx/banner/banner.ts +1 -3
  5. package/src/modules/dx/brandThemeProvider/brandThemeProvider.ts +1 -1
  6. package/src/modules/dx/button/button.html +7 -5
  7. package/src/modules/dx/button/{button.css → button.scoped.css} +1 -2
  8. package/src/modules/dx/button/button.ts +16 -8
  9. package/src/modules/dx/cardCallout/cardCallout.css +44 -4
  10. package/src/modules/dx/cardCallout/cardCallout.html +1 -1
  11. package/src/modules/dx/cardCallout/cardCallout.ts +0 -2
  12. package/src/modules/dx/cardPodcastEpisode/{cardPodcastEpisode.scoped.css → cardPodcastEpisode.css} +4 -0
  13. package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.html +1 -1
  14. package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.ts +0 -2
  15. package/src/modules/dx/cardTitle/cardTitle.css +24 -2
  16. package/src/modules/dx/cardTitle/cardTitle.html +3 -7
  17. package/src/modules/dx/cardTitle/cardTitle.ts +0 -1
  18. package/src/modules/dx/dropdown/dropdown.css +6 -11
  19. package/src/modules/dx/dropdown/dropdown.html +1 -0
  20. package/src/modules/dx/featuredContentHeader/featuredContentHeader.css +8 -8
  21. package/src/modules/dx/header/header.css +0 -11
  22. package/src/modules/dx/header/header.scoped.css +5 -0
  23. package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.css +146 -1
  24. package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.html +4 -12
  25. package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.ts +5 -5
  26. package/src/modules/dx/headerNav/{headerNav.scoped.css → headerNav.css} +2 -0
  27. package/src/modules/dx/headerNav/headerNav.html +2 -5
  28. package/src/modules/dx/headerNav/headerNav.ts +0 -2
  29. package/src/modules/dx/headerSearch/headerSearch.css +60 -1
  30. package/src/modules/dx/headerSearch/headerSearch.html +1 -1
  31. package/src/modules/dx/headerSearch/headerSearch.ts +0 -2
  32. package/src/modules/dx/icon/icon.css +4 -2
  33. package/src/modules/dx/icon/icon.html +1 -1
  34. package/src/modules/dx/icon/icon.scoped.css +5 -0
  35. package/src/modules/dx/icon/icon.ts +0 -2
  36. package/src/modules/dx/logo/{logo.scoped.css → logo.css} +3 -0
  37. package/src/modules/dx/logo/logo.html +1 -1
  38. package/src/modules/dx/logo/logo.ts +0 -2
  39. package/src/modules/dx/popover/popover.html +2 -2
  40. package/src/modules/dx/popover/{popover.css → popover.scoped.css} +0 -2
  41. package/src/modules/dx/popover/popover.ts +33 -19
  42. package/src/modules/dx/relativeDateTime/relativeDateTime.html +1 -1
  43. package/src/modules/dx/relativeDateTime/relativeDateTime.ts +0 -1
  44. package/src/modules/dx/skipNavLink/{skipNavLink.scoped.css → skipNavLink.css} +2 -0
  45. package/src/modules/dx/skipNavLink/skipNavLink.html +1 -1
  46. package/src/modules/dx/skipNavLink/skipNavLink.ts +1 -3
  47. package/src/modules/dxHelpers/card/card.css +0 -10
  48. package/src/modules/dxHelpers/commonSidebar/commonSidebar.css +3 -3
  49. package/src/modules/dx/banner/banner.scoped.css +0 -28
  50. package/src/modules/dx/cardCallout/cardCallout.scoped.css +0 -45
  51. package/src/modules/dx/cardTitle/cardTitle.scoped.css +0 -25
  52. package/src/modules/dx/checkbox/checkbox.scoped.css +0 -169
  53. package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.scoped.css +0 -142
  54. package/src/modules/dx/headerSearch/headerSearch.scoped.css +0 -56
  55. package/src/modules/dx/relativeDateTime/relativeDateTime.scoped.css +0 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/dx-components",
3
- "version": "1.2.19-lightdom",
3
+ "version": "1.2.20-lightdom-6",
4
4
  "description": "DX Lightning web components",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -1,3 +1,35 @@
1
+ @import "dxHelpers/reset";
2
+ @import "dxHelpers/text";
3
+
4
+ .container {
5
+ --primary-color: var(--dx-g-cloud-blue-vibrant-50);
6
+ --secondary-color: var(--dx-g-cloud-blue-vibrant-40);
7
+
8
+ width: 100%;
9
+ display: flex;
10
+ flex-direction: row;
11
+ align-items: center;
12
+ justify-content: center;
13
+ min-height: 24px;
14
+ padding: 0 var(--dx-g-page-padding-horizontal);
15
+ background: repeating-linear-gradient(
16
+ 45deg,
17
+ var(--primary-color),
18
+ var(--primary-color) 20px,
19
+ var(--secondary-color) 20px,
20
+ var(--secondary-color) 40px
21
+ );
22
+ }
23
+
24
+ .container_inner {
25
+ height: 100%;
26
+ display: flex;
27
+ background: var(--primary-color);
28
+ padding: var(--dx-g-spacing-xs) var(--dx-g-spacing-sm);
29
+ color: white;
30
+ font-weight: bold;
31
+ }
32
+
1
33
  .container a {
2
34
  text-decoration: underline;
3
35
  transition: var(--dx-g-transition-hue-1x);
@@ -1,4 +1,4 @@
1
- <template lwc:render-mode="light">
1
+ <template>
2
2
  <div class="container">
3
3
  <div class="container_inner dx-text-body-4">
4
4
  <dx-icon symbol="announcement"></dx-icon>
@@ -7,7 +7,7 @@
7
7
  option instead of slots because the html markup will come as a
8
8
  property to the component from a configuration
9
9
  -->
10
- <div class="info-container"></div>
10
+ <div lwc:dom="manual" class="info-container"></div>
11
11
  </div>
12
12
  </div>
13
13
  </template>
@@ -2,13 +2,11 @@ import { LightningElement, api } from "lwc";
2
2
  import { setContainerInnerHtml } from "dxUtils/lwc";
3
3
 
4
4
  export default class Banner extends LightningElement {
5
- static renderMode = "light";
6
-
7
5
  @api bannerMarkup =
8
6
  'Thank you for visiting the Salesforce Developers website! <span><a href="https://forms.gle/oWYTbH9RvGyt9uxx7" target="blank">We value your feedback</a></span>';
9
7
 
10
8
  renderedCallback() {
11
- const container = this.querySelector(".info-container");
9
+ const container = this.template.querySelector(".info-container");
12
10
  setContainerInnerHtml(container, this.bannerMarkup);
13
11
  }
14
12
  }
@@ -3,7 +3,7 @@ import brandCssVars from "./brandCssVars";
3
3
  import { Brand } from "typings/custom";
4
4
 
5
5
  export const toCss = (brand: Brand | null) => `
6
- body, header, dx-card-small {
6
+ body, header, dx-card-small {
7
7
  ${brandCssVars.reduce(
8
8
  (acc, v) => `
9
9
  ${acc}
@@ -1,4 +1,4 @@
1
- <template>
1
+ <template lwc:render-mode="light">
2
2
  <button
3
3
  if:false={href}
4
4
  class={className}
@@ -7,8 +7,9 @@
7
7
  aria-label={ariaLabel}
8
8
  part="container"
9
9
  >
10
- <span if:false={loading}>
11
- <slot onslotchange={onSlotChange}></slot>
10
+ <span if:false={loading} class="button-content">
11
+ {buttonText}
12
+ <slot></slot>
12
13
  </span>
13
14
  <dx-icon
14
15
  if:true={showIcon}
@@ -29,8 +30,9 @@
29
30
  aria-label={ariaLabel}
30
31
  part="container"
31
32
  >
32
- <span if:false={loading}>
33
- <slot onslotchange={onSlotChange}></slot>
33
+ <span if:false={loading} class="button-content">
34
+ {buttonText}
35
+ <slot></slot>
34
36
  </span>
35
37
  <dx-icon
36
38
  if:true={showIcon}
@@ -1,9 +1,8 @@
1
- @import "dxHelpers/reset";
2
-
3
1
  :host {
4
2
  width: min-content;
5
3
  font-size: inherit;
6
4
 
5
+ --dx-c-button-background-color: transparent;
7
6
  --dx-c-button-primary-color: var(--dx-g-blue-vibrant-50);
8
7
  --dx-c-button-primary-color-hover: var(--dx-g-blue-vibrant-40);
9
8
  --dx-c-button-secondary-color-hover: var(--dx-g-cloud-blue-vibrant-90);
@@ -5,11 +5,12 @@ import {
5
5
  ButtonVariant,
6
6
  IconSprite,
7
7
  IconSize,
8
- IconSymbol,
9
- LightningSlotElement
8
+ IconSymbol
10
9
  } from "typings/custom";
11
10
 
12
11
  export default class Button extends LightningElement {
12
+ static renderMode = "light";
13
+
13
14
  @api ariaLabel: string = "";
14
15
  @api disabled: boolean | null = null;
15
16
  @api iconSize?: IconSize = "small";
@@ -23,6 +24,7 @@ export default class Button extends LightningElement {
23
24
  @api font: "display" | "sans" = "display";
24
25
  @api name?: string;
25
26
  @api value?: any;
27
+ @api buttonText?: string;
26
28
 
27
29
  // button props
28
30
  @api type: "submit" | "reset" | "button" = "button";
@@ -34,13 +36,17 @@ export default class Button extends LightningElement {
34
36
  @api rel: string | null = null;
35
37
 
36
38
  @api focus() {
37
- const button = this.template.querySelector(".button");
39
+ const button = this.querySelector(".button");
38
40
  if (button) {
39
41
  button.focus();
40
42
  }
41
43
  }
42
44
 
43
- private isSlotEmpty: boolean = true;
45
+ _isSlotEmpty: boolean = true;
46
+
47
+ renderedCallback(): void {
48
+ this._isSlotEmpty = this.isSlotEmpty();
49
+ }
44
50
 
45
51
  private get showIcon(): boolean {
46
52
  return !!this.iconSymbol && !this.loading;
@@ -55,14 +61,16 @@ export default class Button extends LightningElement {
55
61
  this.loading && "state-loading",
56
62
  `size-${this.size}`,
57
63
  !!this.iconSymbol && "style-icon",
58
- this.isSlotEmpty && "slot-empty",
64
+ this._isSlotEmpty && "slot-empty",
59
65
  `font-${this.font}`,
60
66
  this.iconPosition === "right" ? "icon-right" : "icon-left"
61
67
  );
62
68
  }
63
69
 
64
- private onSlotChange(e: LightningSlotElement) {
65
- const slot = e.target;
66
- this.isSlotEmpty = slot.assignedElements().length !== 0;
70
+ private isSlotEmpty() {
71
+ return (
72
+ !this.querySelector(".button-content")?.childElementCount &&
73
+ !this.querySelector(".button-content")?.textContent
74
+ );
67
75
  }
68
76
  }
@@ -1,17 +1,57 @@
1
- dx-card-callout dx-icon {
1
+ @import "dxHelpers/reset";
2
+ @import "dxHelpers/text";
3
+ @import "dxHelpers/card";
4
+
5
+ .card-callout {
6
+ position: relative;
7
+ display: flex;
8
+ flex-direction: column;
9
+ }
10
+
11
+ /* in the callout card's case it needs to be subservient to the other items in the grid */
12
+ .dx-card-base_override-width {
13
+ height: 100% !important;
14
+ min-height: unset !important;
15
+ }
16
+
17
+ /* title */
18
+
19
+ .dx-text-heading-3 {
20
+ color: inherit;
21
+ margin-bottom: var(--dx-g-spacing-3xl);
22
+ overflow-wrap: hyphenate-word;
23
+ hyphens: overflow;
24
+ }
25
+
26
+ /* label */
27
+
28
+ .dx-text-button-light {
29
+ color: inherit;
30
+ margin-top: auto;
31
+ }
32
+
33
+ /* callout arrow */
34
+
35
+ dx-icon {
2
36
  display: inline;
3
37
  color: inherit;
4
38
  margin-left: var(--dx-g-spacing-sm);
5
39
  }
6
40
 
7
- dx-card-callout dx-icon svg {
41
+ dx-icon::part(svg) {
8
42
  transition: var(--dx-g-transition-transform-2x);
9
43
  }
10
44
 
11
- .card-callout:hover dx-icon svg {
45
+ .card-callout:hover dx-icon::part(svg) {
12
46
  transform: translate(var(--dx-g-spacing-xs));
13
47
  }
14
48
 
15
- .card-callout:active dx-icon svg {
49
+ .card-callout:active dx-icon::part(svg) {
16
50
  transform: translate(var(--dx-g-spacing-2xs));
17
51
  }
52
+
53
+ @media screen and (max-width: 1024px) {
54
+ .dx-text-heading-3 {
55
+ margin-bottom: var(--dx-g-spacing-xl);
56
+ }
57
+ }
@@ -1,4 +1,4 @@
1
- <template lwc:render-mode="light">
1
+ <template>
2
2
  <a
3
3
  class={className}
4
4
  href={href}
@@ -6,8 +6,6 @@ import { track } from "dxUtils/analytics";
6
6
  export const ANALYTICS_EVENT_NAME = "custEv_ctaLinkClick";
7
7
 
8
8
  export default class CardCallout extends LightningElement {
9
- static renderMode = "light";
10
-
11
9
  @api backgroundColor: string = "indigo-vibrant-40";
12
10
  @api color: string = "white";
13
11
  @api href!: string;
@@ -1,3 +1,7 @@
1
+ @import "dxHelpers/reset";
2
+ @import "dxHelpers/text";
3
+ @import "dxHelpers/card";
4
+
1
5
  .card-podcast-episode {
2
6
  display: flex;
3
7
  flex-direction: row;
@@ -1,4 +1,4 @@
1
- <template lwc:render-mode="light">
1
+ <template>
2
2
  <div class={className}>
3
3
  <div class="dx-card-base_section-horizontal">
4
4
  <a
@@ -2,7 +2,6 @@ import { LightningElement, api } from "lwc";
2
2
  import cx from "classnames";
3
3
 
4
4
  export default class CardPodcastEpisode extends LightningElement {
5
- static renderMode = "light";
6
5
  @api body!: string;
7
6
  @api datetime!: string;
8
7
  @api dateTime?: string | null = null;
@@ -22,7 +21,6 @@ export default class CardPodcastEpisode extends LightningElement {
22
21
  private get className() {
23
22
  return cx(
24
23
  "card-podcast-episode",
25
- "base-card",
26
24
  "dx-card-base_borderless",
27
25
  this.isLinkHovered && "dx-card-base_link-hovered"
28
26
  );
@@ -1,4 +1,7 @@
1
- dx-card-title {
1
+ @import "dxHelpers/reset";
2
+ @import "dxHelpers/text";
3
+
4
+ :host {
2
5
  --dx-c-card-title-color: var(--dx-g-text-heading-color);
3
6
  --dx-c-card-title-font-size: var(--dx-g-text-xl);
4
7
  --dx-c-card-title-line-height: 28px;
@@ -6,7 +9,21 @@ dx-card-title {
6
9
  --dx-c-card-title-icon-size: 22px;
7
10
  }
8
11
 
9
- dx-card-title dx-icon {
12
+ h3.dx-text-heading-4 {
13
+ color: var(--dx-c-card-title-color);
14
+ transition: var(--dx-g-transition-hue-1x);
15
+ font-size: var(--dx-c-card-title-font-size);
16
+ line-height: var(--dx-c-card-title-line-height);
17
+ letter-spacing: var(--dx-c-card-title-letter-spacing);
18
+ word-break: break-word;
19
+ hyphens: auto;
20
+ }
21
+
22
+ .nowrap {
23
+ white-space: nowrap;
24
+ }
25
+
26
+ dx-icon {
10
27
  --dx-c-icon-size: var(--dx-c-card-title-icon-size);
11
28
 
12
29
  display: inline-flex;
@@ -15,6 +32,11 @@ dx-card-title dx-icon {
15
32
  }
16
33
 
17
34
  @media screen and (max-width: 1024px) {
35
+ .dx-text-heading-4 {
36
+ font-size: 20px;
37
+ line-height: 24px;
38
+ }
39
+
18
40
  dx-icon {
19
41
  --dx-c-card-title-icon-size: 20px;
20
42
  }
@@ -1,10 +1,8 @@
1
- <template lwc:render-mode="light">
1
+ <template>
2
2
  <h3 class="dx-text-heading-4">
3
3
  <a if:true={href} href={href} target={target}>
4
4
  {titleToWrap}
5
- <template if:true={needsSpace}>
6
- &#32;
7
- </template>
5
+ <template if:true={needsSpace}>&#32;</template>
8
6
  <span class="nowrap" if:true={isExternal}>
9
7
  {titleNoWrap}&nbsp;
10
8
  <dx-icon symbol="new_window" size="override"></dx-icon>
@@ -12,9 +10,7 @@
12
10
  </a>
13
11
  <template if:false={href}>
14
12
  {titleToWrap}
15
- <template if:true={needsSpace}>
16
- &#32;
17
- </template>
13
+ <template if:true={needsSpace}>&#32;</template>
18
14
  <span class="nowrap" if:true={isExternal}>
19
15
  {titleNoWrap}&nbsp;
20
16
  <dx-icon symbol="new_window" size="override"></dx-icon>
@@ -1,7 +1,6 @@
1
1
  import { LightningElement, api } from "lwc";
2
2
 
3
3
  export default class CardTitle extends LightningElement {
4
- static renderMode = "light";
5
4
  @api href!: string;
6
5
  @api target?: string | null = null;
7
6
  @api title!: string;
@@ -1,12 +1,5 @@
1
- dx-dropdown dx-button {
2
- --dx-c-button-primary-color: var(--button-primary-color);
3
- --dx-c-button-primary-color-hover: var(--button-primary-color-hover);
4
- --border-color: var(--button-primary-color);
5
-
6
- border-bottom: 1px dashed var(--border-color);
7
- }
8
-
9
- .menu-nested::part(content) {
1
+ .menu-nested::part(content),
2
+ .menu-nested .popover.popover-content {
10
3
  padding-top: var(--dx-g-spacing-sm);
11
4
  width: 354px;
12
5
  }
@@ -17,7 +10,8 @@ dx-dropdown dx-button {
17
10
  flex-wrap: nowrap;
18
11
  }
19
12
 
20
- .menu-hidden::part(content) {
13
+ .menu-hidden::part(content),
14
+ .menu-hidden .popover.popover-content {
21
15
  display: none;
22
16
  }
23
17
 
@@ -30,7 +24,8 @@ dx-dropdown dx-button {
30
24
  }
31
25
 
32
26
  @media screen and (min-width: 1000px) {
33
- .menu-nested-2-col::part(content) {
27
+ .menu-nested-2-col::part(content),
28
+ .menu-nested-2-col .popover.popover-content {
34
29
  width: 592px;
35
30
  }
36
31
 
@@ -15,6 +15,7 @@
15
15
  <div slot="control">
16
16
  <slot></slot>
17
17
  </div>
18
+
18
19
  <div
19
20
  class="menu_list"
20
21
  if:false={areOptionsEmpty}
@@ -6,9 +6,7 @@
6
6
  :host {
7
7
  width: 100%;
8
8
 
9
- --dx-c-featured-content-header-background-color: var(
10
- --dx-g-indigo-vibrant-90
11
- );
9
+ /* --dx-c-featured-content-header-background-color */
12
10
  --dx-c-tree-graphic-color: var(--dx-g-indigo-vibrant-40);
13
11
  --dx-c-featured-content-header-padding-horizontal: var(
14
12
  --dx-g-page-padding-horizontal
@@ -42,7 +40,10 @@
42
40
  position: relative;
43
41
  padding: var(--dx-c-featured-content-header-padding-vertical)
44
42
  var(--dx-c-featured-content-header-padding-horizontal);
45
- background-color: var(--dx-c-featured-content-header-background-color);
43
+ background-color: var(
44
+ --dx-c-featured-content-header-background-color,
45
+ --dx-g-indigo-vibrant-90
46
+ );
46
47
  }
47
48
 
48
49
  /* LAYOUTS */
@@ -380,10 +381,9 @@ dx-image-and-label {
380
381
 
381
382
  /* DARK VARIANT */
382
383
  .variant_dark {
383
- background: linear-gradient(
384
- -180deg,
385
- rgb(40, 23, 153) 0%,
386
- rgb(46, 43, 182) 100%
384
+ background: var(
385
+ --dx-c-featured-content-header-background-color,
386
+ linear-gradient(-180deg, rgb(40, 23, 153) 0%, rgb(46, 43, 182) 100%)
387
387
  );
388
388
  }
389
389
 
@@ -1,12 +1 @@
1
1
  @import "dxHelpers/commonHeader";
2
- @import "dxHelpers/text";
3
- @import "dxHelpers/reset";
4
- @import "dxHelpers/card";
5
-
6
- dx-header {
7
- /* TODO: these variables definitely aren't getting picked up correctly */
8
- z-index: var(--dx-g-z-index-500);
9
-
10
- --dx-c-header-search-width: 316px;
11
- --dx-g-text-xs: 14px;
12
- }
@@ -1,3 +1,8 @@
1
+ :host {
2
+ --dx-c-header-search-width: 316px;
3
+ --dx-g-text-xs: 14px;
4
+ }
5
+
1
6
  dx-header-mobile-nav-menu {
2
7
  --dx-c-color-background: var(--dx-g-brand-current-color-background);
3
8
  --dx-c-button-color-background-inactive: var(
@@ -1,4 +1,6 @@
1
- header-mobile-nav-menu {
1
+ @import "dxHelpers/reset";
2
+
3
+ :host {
2
4
  --dx-c-color-background: var(--dx-g-brand-default-color-background);
3
5
  --dx-c-button-color-background-inactive: var(
4
6
  --dx-g-brand-default-button-color-background-inactive
@@ -14,3 +16,146 @@ header-mobile-nav-menu {
14
16
  );
15
17
  --dx-c-color-border-2: var(--dx-g-brand-default-color-border-2);
16
18
  }
19
+
20
+ .nav-menu {
21
+ position: absolute;
22
+ top: 100%;
23
+ left: 0;
24
+ width: 100%;
25
+ max-height: 56vh;
26
+ overflow-y: auto;
27
+ padding: 0 var(--dx-g-spacing-sm) var(--dx-g-spacing-sm)
28
+ var(--dx-g-spacing-sm);
29
+ background: var(--dx-c-color-background);
30
+ box-shadow: 0 20px 28px 0 rgba(0, 20, 45, 0.08);
31
+ transform: translateY(0);
32
+ border-top: 1px solid transparent;
33
+ transition: var(--dx-g-transition-transform-2x),
34
+ var(--dx-g-transition-hue-1x);
35
+ z-index: 1000;
36
+ }
37
+
38
+ .nav-menu.has-scrollshadow {
39
+ border-color: var(--dx-c-color-border-2);
40
+ }
41
+
42
+ .nav-menu.state-closed {
43
+ opacity: 0;
44
+ visibility: hidden;
45
+ transform: translateY(-16px);
46
+ pointer-events: none;
47
+ }
48
+
49
+ .nav-menu ul {
50
+ display: flex;
51
+ flex-direction: column;
52
+ width: 100%;
53
+ }
54
+
55
+ .nav-menu_item {
56
+ display: flex;
57
+ flex-direction: column;
58
+ }
59
+
60
+ .nav-menu_item,
61
+ .nav-menu_item_cta-main {
62
+ transition: var(--dx-g-transition-hue-1x);
63
+ border-radius: var(--dx-g-spacing-xs);
64
+ }
65
+
66
+ .nav-menu_item_cta-main {
67
+ justify-content: space-between;
68
+ font-family: var(--dx-g-font-display);
69
+ font-size: var(--dx-g-text-base);
70
+ color: var(--dx-g-blue-vibrant-20);
71
+ line-height: 20px;
72
+ padding: var(--dx-g-spacing-sm) var(--dx-g-spacing-md);
73
+ width: 100%;
74
+ display: flex;
75
+ align-items: center;
76
+ }
77
+
78
+ .nav-menu ul > .nav-menu_item:not(:last-of-type) {
79
+ margin-bottom: var(--dx-g-spacing-xs);
80
+ }
81
+
82
+ .nav-menu_item.state-open {
83
+ background: var(--dx-c-button-color-background-inactive);
84
+ }
85
+
86
+ .nav-menu_item_cta-main:not(.state-active):hover {
87
+ background: var(--dx-c-button-color-background-inactive);
88
+ }
89
+
90
+ .nav-menu_item.state-open .nav-menu_item_cta-main:hover {
91
+ background: var(--dx-c-button-color-background-inactive-hover);
92
+ }
93
+
94
+ .nav-menu_item.state-open .chevrondown {
95
+ transform: rotateX(180deg);
96
+ }
97
+
98
+ .nav-menu_item_cta-options {
99
+ position: relative;
100
+ display: none;
101
+ flex-direction: column;
102
+ width: 100%;
103
+ }
104
+
105
+ .nav-menu_item.state-open > .nav-menu_item_cta-options {
106
+ display: flex;
107
+ }
108
+
109
+ .nav-menu_item_cta {
110
+ height: var(--dx-g-spacing-3xl);
111
+ }
112
+
113
+ .nav-menu_item_cta-main.state-active {
114
+ background: var(--dx-c-button-color-background-active);
115
+ color: var(--dx-c-color);
116
+ }
117
+
118
+ .nav-menu_item_cta-main > span {
119
+ transform: translateY(3px); /* ghost padding */
120
+ }
121
+
122
+ .nav-menu_item_cta-sub {
123
+ --dx-c-button-secondary-color-hover: var(
124
+ --dx-c-button-color-background-inactive-hover
125
+ );
126
+
127
+ font-size: var(--dx-g-text-sm);
128
+ width: 100%;
129
+ }
130
+
131
+ .nav-menu_item_cta-sub::part(container) {
132
+ justify-content: flex-start;
133
+ }
134
+
135
+ .nav-menu_item_cta-sub.state-active {
136
+ text-decoration: underline;
137
+ }
138
+
139
+ .nav-menu_item > .nav-menu_item_cta-options:not(:first-of-type) {
140
+ padding-top: var(--dx-g-spacing-xs);
141
+ margin-top: var(--dx-g-spacing-xs);
142
+ }
143
+
144
+ .nav-menu_item > .nav-menu_item_cta-options:not(:first-of-type)::after {
145
+ content: "";
146
+ position: absolute;
147
+ top: 0;
148
+ left: var(--dx-g-spacing-md);
149
+ width: calc(100% - var(--dx-g-spacing-xl));
150
+ height: 1px;
151
+ background: var(--dx-c-color-border-2);
152
+ }
153
+
154
+ .backdrop {
155
+ position: fixed;
156
+ top: 0;
157
+ left: 0;
158
+ height: 100vh;
159
+ width: 100vw;
160
+ z-index: -1;
161
+ }
@@ -1,4 +1,4 @@
1
- <template lwc:render-mode="light">
1
+ <template>
2
2
  <nav
3
3
  aria-label="Navigation Menu"
4
4
  class={className}
@@ -6,10 +6,7 @@
6
6
  onscroll={onScroll}
7
7
  >
8
8
  <ul>
9
- <template
10
- for:each={navItems}
11
- for:item="navItem"
12
- >
9
+ <template for:each={navItems} for:item="navItem">
13
10
  <li
14
11
  class={navItem.liClassName}
15
12
  key={navItem.id}
@@ -42,17 +39,12 @@
42
39
  ></dx-icon>
43
40
  </button>
44
41
  <template if:true={navItem.options}>
45
- <template
46
- for:each={navItem.options}
47
- for:item="options"
48
- >
42
+ <template for:each={navItem.options} for:item="options">
49
43
  <div
50
44
  class="nav-menu_item_cta-options"
51
45
  key={options.id}
52
46
  >
53
- <template
54
- if:true={options.options}
55
- >
47
+ <template if:true={options.options}>
56
48
  <template
57
49
  for:each={options.options}
58
50
  for:item="navSubItem"