@govtechsg/sgds-web-component 3.3.3-rc.0 → 3.3.3-rc.2

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 (47) hide show
  1. package/components/Breadcrumb/index.umd.js +1 -1
  2. package/components/Card/index.umd.js +4023 -4074
  3. package/components/Card/index.umd.js.map +1 -1
  4. package/components/Card/sgds-card.d.ts +1 -5
  5. package/components/Card/sgds-card.js +21 -27
  6. package/components/Card/sgds-card.js.map +1 -1
  7. package/components/Dropdown/dropdown-item.js +1 -1
  8. package/components/Dropdown/index.umd.js +1 -1
  9. package/components/Mainnav/index.umd.js +42 -9
  10. package/components/Mainnav/index.umd.js.map +1 -1
  11. package/components/Mainnav/sgds-mainnav-dropdown.js +24 -7
  12. package/components/Mainnav/sgds-mainnav-dropdown.js.map +1 -1
  13. package/components/Mainnav/sgds-mainnav-item.js +4 -0
  14. package/components/Mainnav/sgds-mainnav-item.js.map +1 -1
  15. package/components/Mainnav/sgds-mainnav.js +13 -1
  16. package/components/Mainnav/sgds-mainnav.js.map +1 -1
  17. package/components/OverflowMenu/index.umd.js +1 -1
  18. package/components/Subnav/index.umd.js +2 -2
  19. package/components/Subnav/subnav-item.js +1 -1
  20. package/components/Subnav/subnav.js +1 -1
  21. package/components/index.umd.js +62 -35
  22. package/components/index.umd.js.map +1 -1
  23. package/index.umd.js +63 -36
  24. package/index.umd.js.map +1 -1
  25. package/package.json +1 -1
  26. package/react/components/Card/sgds-card.cjs.js +20 -26
  27. package/react/components/Card/sgds-card.cjs.js.map +1 -1
  28. package/react/components/Card/sgds-card.js +21 -27
  29. package/react/components/Card/sgds-card.js.map +1 -1
  30. package/react/components/Dropdown/dropdown-item.cjs.js +1 -1
  31. package/react/components/Dropdown/dropdown-item.js +1 -1
  32. package/react/components/Mainnav/sgds-mainnav-dropdown.cjs.js +24 -7
  33. package/react/components/Mainnav/sgds-mainnav-dropdown.cjs.js.map +1 -1
  34. package/react/components/Mainnav/sgds-mainnav-dropdown.js +24 -7
  35. package/react/components/Mainnav/sgds-mainnav-dropdown.js.map +1 -1
  36. package/react/components/Mainnav/sgds-mainnav-item.cjs.js +4 -0
  37. package/react/components/Mainnav/sgds-mainnav-item.cjs.js.map +1 -1
  38. package/react/components/Mainnav/sgds-mainnav-item.js +4 -0
  39. package/react/components/Mainnav/sgds-mainnav-item.js.map +1 -1
  40. package/react/components/Mainnav/sgds-mainnav.cjs.js +13 -1
  41. package/react/components/Mainnav/sgds-mainnav.cjs.js.map +1 -1
  42. package/react/components/Mainnav/sgds-mainnav.js +13 -1
  43. package/react/components/Mainnav/sgds-mainnav.js.map +1 -1
  44. package/react/components/Subnav/subnav-item.cjs.js +1 -1
  45. package/react/components/Subnav/subnav-item.js +1 -1
  46. package/react/components/Subnav/subnav.cjs.js +1 -1
  47. package/react/components/Subnav/subnav.js +1 -1
@@ -4,6 +4,7 @@ import { CardImageAdjustment, CardImagePosition } from "./types";
4
4
  * @summary Cards can be used for headers and footers, a wide variety of content, contain contextual background colors and images.
5
5
  * @slot default - The content area of the card, placed directly under the title. Accepts any HTML or custom elements.
6
6
  * @slot menu - Accepts an element for an overflow or contextual menu, positioned at the top-right corner of the card. Typically used for action menus or dropdowns.
7
+ * @slot upper - Accepts an element to be displayed above the card content. When used, it overrides image and icon slot content.
7
8
  * @slot image - Accepts an image or svg element of the card. Only a single element is allowed to be passed in.
8
9
  * @slot icon - Accepts an icon element to visually represent the card. Only a single element is allowed to be passed in.
9
10
  * @slot subtitle - The subtitle of the card
@@ -14,16 +15,11 @@ import { CardImageAdjustment, CardImagePosition } from "./types";
14
15
  */
15
16
  export declare class SgdsCard extends CardElement {
16
17
  static styles: import("lit").CSSResult[];
17
- /** @internal */
18
- _imageNode: Array<Node>;
19
- /** @internal */
20
- _iconNode: Array<Node>;
21
18
  /** Sets the image position of the card. Available options: `before`, `after` */
22
19
  imagePosition: CardImagePosition;
23
20
  /** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */
24
21
  imageAdjustment: CardImageAdjustment;
25
22
  private readonly hasSlotController;
26
- protected firstUpdated(): void;
27
23
  handleImgSlotChange(e: Event): void;
28
24
  render(): import("lit-html").TemplateResult;
29
25
  }
@@ -1,16 +1,17 @@
1
1
  import { __decorate } from 'tslib';
2
- import { nothing } from 'lit';
3
2
  import { literal, html } from 'lit/static-html.js';
4
- import { queryAssignedNodes, property } from 'lit/decorators.js';
3
+ import { property } from 'lit/decorators.js';
5
4
  import { classMap } from 'lit/directives/class-map.js';
6
5
  import { CardElement } from '../../base/card-element.js';
7
6
  import { HasSlotController } from '../../utils/slot.js';
8
7
  import css_248z from './card.js';
8
+ import { nothing } from 'lit';
9
9
 
10
10
  /**
11
11
  * @summary Cards can be used for headers and footers, a wide variety of content, contain contextual background colors and images.
12
12
  * @slot default - The content area of the card, placed directly under the title. Accepts any HTML or custom elements.
13
13
  * @slot menu - Accepts an element for an overflow or contextual menu, positioned at the top-right corner of the card. Typically used for action menus or dropdowns.
14
+ * @slot upper - Accepts an element to be displayed above the card content. When used, it overrides image and icon slot content.
14
15
  * @slot image - Accepts an image or svg element of the card. Only a single element is allowed to be passed in.
15
16
  * @slot icon - Accepts an icon element to visually represent the card. Only a single element is allowed to be passed in.
16
17
  * @slot subtitle - The subtitle of the card
@@ -26,43 +27,42 @@ class SgdsCard extends CardElement {
26
27
  this.imagePosition = "before";
27
28
  /** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */
28
29
  this.imageAdjustment = "default";
29
- this.hasSlotController = new HasSlotController(this, "description");
30
- }
31
- firstUpdated() {
32
- if (this._imageNode.length === 0) {
33
- const icon = this.shadowRoot.querySelector(".card-image");
34
- icon.style.display = "none";
35
- }
36
- if (this._iconNode.length === 0) {
37
- const media = this.shadowRoot.querySelector(".card-media");
38
- media.style.display = "none";
39
- }
30
+ this.hasSlotController = new HasSlotController(this, "image", "icon", "menu", "description");
40
31
  }
41
32
  handleImgSlotChange(e) {
42
33
  const childNodes = e.target.assignedNodes({ flatten: true });
43
34
  if (childNodes.length > 1) {
44
- return console.error("Multiple elements passed into SgdsCard's image slot");
35
+ console.error("Multiple elements passed into SgdsCard's image slot");
36
+ }
37
+ if (this.hasSlotController.test("icon") && this.hasSlotController.test("icon")) {
38
+ console.error("Both image and icon slots cannot be used together in SgdsCard");
45
39
  }
46
40
  }
47
41
  render() {
48
42
  const tag = this.stretchedLink ? literal `a` : literal `div`;
49
43
  const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;
50
44
  const hasDescriptionSlot = this.hasSlotController.test("description");
45
+ const hasImageSlot = this.hasSlotController.test("image");
46
+ const hasIconSlot = this.hasSlotController.test("icon");
47
+ const hasMenuSlot = this.hasSlotController.test("menu");
48
+ const hasUpperSlot = this.hasSlotController.test("upper");
51
49
  return html `
52
- <${tag}
50
+ <${tag}
53
51
  class="card ${classMap({
54
52
  disabled: this.disabled
55
53
  })}"
56
54
  tabindex=${cardTabIndex}
57
55
  >
58
56
  <div class="card-tinted-bg"></div>
59
- <slot name="menu"></slot>
60
- <div class="card-image">
61
- <slot name="image" @slotchange=${this.handleImgSlotChange}></slot>
62
- </div>
63
- <div class="card-media">
64
- <slot name="icon"></slot>
57
+
58
+ ${hasMenuSlot ? html ` <slot name="menu"></slot> ` : nothing}
59
+ <div class=${classMap({ "card-image": hasImageSlot, "card-media": hasIconSlot || hasUpperSlot })}>
60
+ <slot name="upper">
61
+ ${hasImageSlot ? html ` <slot name="image" @slotchange=${this.handleImgSlotChange}></slot> ` : nothing}
62
+ ${hasIconSlot ? html ` <slot name="icon"></slot> ` : nothing}
63
+ </slot>
65
64
  </div>
65
+
66
66
  <div class="card-body">
67
67
  <div class="card-header-container">
68
68
  <div class="card-header">
@@ -84,12 +84,6 @@ class SgdsCard extends CardElement {
84
84
  }
85
85
  }
86
86
  SgdsCard.styles = [...CardElement.styles, css_248z];
87
- __decorate([
88
- queryAssignedNodes({ slot: "image", flatten: true })
89
- ], SgdsCard.prototype, "_imageNode", void 0);
90
- __decorate([
91
- queryAssignedNodes({ slot: "icon", flatten: true })
92
- ], SgdsCard.prototype, "_iconNode", void 0);
93
87
  __decorate([
94
88
  property({ type: String, reflect: true })
95
89
  ], SgdsCard.prototype, "imagePosition", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-card.js","sources":["../../../src/components/Card/sgds-card.ts"],"sourcesContent":["import { nothing } from \"lit\";\nimport { html, literal } from \"lit/static-html.js\";\nimport { property, queryAssignedNodes } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { CardElement } from \"../../base/card-element\";\nimport { HasSlotController } from \"../../utils/slot\";\nimport { CardImageAdjustment, CardImagePosition } from \"./types\";\nimport cardStyle from \"./card.css\";\n\n/**\n * @summary Cards can be used for headers and footers, a wide variety of content, contain contextual background colors and images.\n * @slot default - The content area of the card, placed directly under the title. Accepts any HTML or custom elements.\n * @slot menu - Accepts an element for an overflow or contextual menu, positioned at the top-right corner of the card. Typically used for action menus or dropdowns.\n * @slot image - Accepts an image or svg element of the card. Only a single element is allowed to be passed in.\n * @slot icon - Accepts an icon element to visually represent the card. Only a single element is allowed to be passed in.\n * @slot subtitle - The subtitle of the card\n * @slot title - The title of the card\n * @slot description - The paragrapher text of the card\n * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.\n * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.\n */\nexport class SgdsCard extends CardElement {\n static styles = [...CardElement.styles, cardStyle];\n\n /** @internal */\n @queryAssignedNodes({ slot: \"image\", flatten: true })\n _imageNode!: Array<Node>;\n /** @internal */\n @queryAssignedNodes({ slot: \"icon\", flatten: true })\n _iconNode!: Array<Node>;\n\n /** Sets the image position of the card. Available options: `before`, `after` */\n @property({ type: String, reflect: true }) imagePosition: CardImagePosition = \"before\";\n\n /** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */\n @property({ type: String, reflect: true }) imageAdjustment: CardImageAdjustment = \"default\";\n\n private readonly hasSlotController = new HasSlotController(this, \"description\");\n\n protected firstUpdated() {\n if (this._imageNode.length === 0) {\n const icon = this.shadowRoot.querySelector(\".card-image\") as HTMLDivElement;\n icon.style.display = \"none\";\n }\n if (this._iconNode.length === 0) {\n const media = this.shadowRoot.querySelector(\".card-media\") as HTMLDivElement;\n media.style.display = \"none\";\n }\n }\n\n handleImgSlotChange(e: Event) {\n const childNodes = (e.target as HTMLSlotElement).assignedNodes({ flatten: true }) as Array<HTMLOrSVGImageElement>;\n\n if (childNodes.length > 1) {\n return console.error(\"Multiple elements passed into SgdsCard's image slot\");\n }\n }\n\n render() {\n const tag = this.stretchedLink ? literal`a` : literal`div`;\n const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;\n const hasDescriptionSlot = this.hasSlotController.test(\"description\");\n\n return html`\n <${tag} \n class=\"card ${classMap({\n disabled: this.disabled\n })}\"\n tabindex=${cardTabIndex}\n >\n <div class=\"card-tinted-bg\"></div>\n <slot name=\"menu\"></slot>\n <div class=\"card-image\">\n <slot name=\"image\" @slotchange=${this.handleImgSlotChange}></slot>\n </div>\n <div class=\"card-media\">\n <slot name=\"icon\"></slot>\n </div>\n <div class=\"card-body\">\n <div class=\"card-header-container\">\n <div class=\"card-header\">\n <slot name=\"subtitle\"></slot>\n <h3 class=\"card-title\"><slot name=\"title\" @slotchange=${this.handleTitleSlotChange}></slot></h3>\n </div>\n <slot></slot>\n </div>\n ${\n hasDescriptionSlot\n ? html`<p class=\"card-text\">\n <slot name=\"description\"></slot>\n </p>`\n : nothing\n }\n <slot name=\"lower\"></slot>\n <slot name=\"link\" @slotchange=${this.handleLinkSlotChange}></slot>\n </div>\n </${tag}>\n `;\n }\n}\n\nexport default SgdsCard;\n"],"names":["cardStyle"],"mappings":"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"}
1
+ {"version":3,"file":"sgds-card.js","sources":["../../../src/components/Card/sgds-card.ts"],"sourcesContent":["import { html, literal } from \"lit/static-html.js\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { CardElement } from \"../../base/card-element\";\nimport { HasSlotController } from \"../../utils/slot\";\nimport { CardImageAdjustment, CardImagePosition } from \"./types\";\nimport cardStyle from \"./card.css\";\nimport { nothing } from \"lit\";\n\n/**\n * @summary Cards can be used for headers and footers, a wide variety of content, contain contextual background colors and images.\n * @slot default - The content area of the card, placed directly under the title. Accepts any HTML or custom elements.\n * @slot menu - Accepts an element for an overflow or contextual menu, positioned at the top-right corner of the card. Typically used for action menus or dropdowns.\n * @slot upper - Accepts an element to be displayed above the card content. When used, it overrides image and icon slot content.\n * @slot image - Accepts an image or svg element of the card. Only a single element is allowed to be passed in.\n * @slot icon - Accepts an icon element to visually represent the card. Only a single element is allowed to be passed in.\n * @slot subtitle - The subtitle of the card\n * @slot title - The title of the card\n * @slot description - The paragrapher text of the card\n * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.\n * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.\n */\nexport class SgdsCard extends CardElement {\n static styles = [...CardElement.styles, cardStyle];\n\n /** Sets the image position of the card. Available options: `before`, `after` */\n @property({ type: String, reflect: true }) imagePosition: CardImagePosition = \"before\";\n\n /** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */\n @property({ type: String, reflect: true }) imageAdjustment: CardImageAdjustment = \"default\";\n\n private readonly hasSlotController = new HasSlotController(this, \"image\", \"icon\", \"menu\", \"description\");\n\n handleImgSlotChange(e: Event) {\n const childNodes = (e.target as HTMLSlotElement).assignedNodes({ flatten: true }) as Array<HTMLOrSVGImageElement>;\n\n if (childNodes.length > 1) {\n console.error(\"Multiple elements passed into SgdsCard's image slot\");\n }\n\n if (this.hasSlotController.test(\"icon\") && this.hasSlotController.test(\"icon\")) {\n console.error(\"Both image and icon slots cannot be used together in SgdsCard\");\n }\n }\n\n render() {\n const tag = this.stretchedLink ? literal`a` : literal`div`;\n const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;\n const hasDescriptionSlot = this.hasSlotController.test(\"description\");\n\n const hasImageSlot = this.hasSlotController.test(\"image\");\n const hasIconSlot = this.hasSlotController.test(\"icon\");\n const hasMenuSlot = this.hasSlotController.test(\"menu\");\n const hasUpperSlot = this.hasSlotController.test(\"upper\");\n return html`\n <${tag}\n class=\"card ${classMap({\n disabled: this.disabled\n })}\"\n tabindex=${cardTabIndex}\n >\n <div class=\"card-tinted-bg\"></div>\n \n ${hasMenuSlot ? html` <slot name=\"menu\"></slot> ` : nothing}\n <div class=${classMap({ \"card-image\": hasImageSlot, \"card-media\": hasIconSlot || hasUpperSlot })}>\n <slot name=\"upper\">\n ${hasImageSlot ? html` <slot name=\"image\" @slotchange=${this.handleImgSlotChange}></slot> ` : nothing}\n ${hasIconSlot ? html` <slot name=\"icon\"></slot> ` : nothing}\n </slot>\n </div>\n\n <div class=\"card-body\">\n <div class=\"card-header-container\">\n <div class=\"card-header\">\n <slot name=\"subtitle\"></slot>\n <h3 class=\"card-title\"><slot name=\"title\" @slotchange=${this.handleTitleSlotChange}></slot></h3>\n </div>\n <slot></slot>\n </div>\n ${\n hasDescriptionSlot\n ? html`<p class=\"card-text\">\n <slot name=\"description\"></slot>\n </p>`\n : nothing\n }\n <slot name=\"lower\"></slot>\n <slot name=\"link\" @slotchange=${this.handleLinkSlotChange}></slot>\n </div>\n </${tag}>\n `;\n }\n}\n\nexport default SgdsCard;\n"],"names":["cardStyle"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { css } from 'lit';
2
2
 
3
- var css_248z = css`.dropdown-item{align-items:center;background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;display:flex;gap:var(--sgds-gap-sm);padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item:not(.nav-link):hover{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:not(.nav-link):focus,.dropdown-item:not(.nav-link):focus-visible{background-color:var(--sgds-bg-translucent-subtle);box-shadow:inset var(--sgds-form-box-shadow-focus);outline:0}.dropdown-item:not(.nav-link).active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{opacity:var(--sgds-opacity-50);pointer-events:none}::slotted(*){color:inherit!important;display:flex;gap:var(--sgds-gap-sm);text-decoration:none!important}.nav-link{gap:var(--sgds-gap-xs);padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}.nav-link:hover{color:var(--sgds-primary-color-default)}.nav-link:focus,.nav-link:focus-visible{outline:0}.nav-link:focus-visible{box-shadow:var(--sgds-box-shadow-focus) inset;color:var(--sgds-primary-color-default)}.nav-link.active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default)}`;
3
+ var css_248z = css`:host([disabled]){cursor:not-allowed}.dropdown-item{align-items:center;background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;display:flex;gap:var(--sgds-gap-sm);padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item:not(.nav-link):hover{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:not(.nav-link):focus,.dropdown-item:not(.nav-link):focus-visible{background-color:var(--sgds-bg-translucent-subtle);box-shadow:inset var(--sgds-form-box-shadow-focus);outline:0}.dropdown-item:not(.nav-link).active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{opacity:var(--sgds-opacity-50);pointer-events:none}::slotted(*){color:inherit!important;display:flex;gap:var(--sgds-gap-sm);text-decoration:none!important}.nav-link{gap:var(--sgds-gap-xs);padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}.nav-link:hover{color:var(--sgds-primary-color-default)}.nav-link:focus,.nav-link:focus-visible{outline:0}.nav-link:focus-visible{box-shadow:var(--sgds-box-shadow-focus) inset;color:var(--sgds-primary-color-default)}.nav-link.active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default)}`;
4
4
 
5
5
  export { css_248z as default };
6
6
  //# sourceMappingURL=dropdown-item.js.map
@@ -11025,7 +11025,7 @@
11025
11025
  property({ type: String, reflect: true })
11026
11026
  ], SgdsIcon.prototype, "size", void 0);
11027
11027
 
11028
- var css_248z = css`.dropdown-item{align-items:center;background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;display:flex;gap:var(--sgds-gap-sm);padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item:not(.nav-link):hover{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:not(.nav-link):focus,.dropdown-item:not(.nav-link):focus-visible{background-color:var(--sgds-bg-translucent-subtle);box-shadow:inset var(--sgds-form-box-shadow-focus);outline:0}.dropdown-item:not(.nav-link).active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{opacity:var(--sgds-opacity-50);pointer-events:none}::slotted(*){color:inherit!important;display:flex;gap:var(--sgds-gap-sm);text-decoration:none!important}.nav-link{gap:var(--sgds-gap-xs);padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}.nav-link:hover{color:var(--sgds-primary-color-default)}.nav-link:focus,.nav-link:focus-visible{outline:0}.nav-link:focus-visible{box-shadow:var(--sgds-box-shadow-focus) inset;color:var(--sgds-primary-color-default)}.nav-link.active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default)}`;
11028
+ var css_248z = css`:host([disabled]){cursor:not-allowed}.dropdown-item{align-items:center;background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;display:flex;gap:var(--sgds-gap-sm);padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item:not(.nav-link):hover{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:not(.nav-link):focus,.dropdown-item:not(.nav-link):focus-visible{background-color:var(--sgds-bg-translucent-subtle);box-shadow:inset var(--sgds-form-box-shadow-focus);outline:0}.dropdown-item:not(.nav-link).active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{opacity:var(--sgds-opacity-50);pointer-events:none}::slotted(*){color:inherit!important;display:flex;gap:var(--sgds-gap-sm);text-decoration:none!important}.nav-link{gap:var(--sgds-gap-xs);padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}.nav-link:hover{color:var(--sgds-primary-color-default)}.nav-link:focus,.nav-link:focus-visible{outline:0}.nav-link:focus-visible{box-shadow:var(--sgds-box-shadow-focus) inset;color:var(--sgds-primary-color-default)}.nav-link.active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default)}`;
11029
11029
 
11030
11030
  /**
11031
11031
  * @summary `SgdsDropdownItem` are navigation links built with `HTMLAnchorElement`. It should be used in the default slot of `SgdsDropdown`
@@ -7907,10 +7907,20 @@
7907
7907
  connectedCallback() {
7908
7908
  super.connectedCallback();
7909
7909
  this.addEventListener("click", (event) => this._handleClickOutOfElement(event, this.body));
7910
+ this.addEventListener("sgds-mainnav-close", () => {
7911
+ if (this.breakpointReached) {
7912
+ this.hide();
7913
+ }
7914
+ });
7910
7915
  }
7911
7916
  disconnectedCallback() {
7912
7917
  super.disconnectedCallback();
7913
7918
  this.removeEventListener("click", (event) => this._handleClickOutOfElement(event, this.body));
7919
+ this.removeEventListener("sgds-mainnav-close", () => {
7920
+ if (this.breakpointReached) {
7921
+ this.hide();
7922
+ }
7923
+ });
7914
7924
  }
7915
7925
  firstUpdated() {
7916
7926
  if (this.breakpointReached && this.body) {
@@ -8005,7 +8015,9 @@
8005
8015
  }
8006
8016
  this.expanded = false;
8007
8017
  document.querySelector("body").style.removeProperty("overflow");
8008
- this.emit("close-dropdown-menu");
8018
+ setTimeout(() => {
8019
+ this.emit("close-dropdown-menu");
8020
+ }, 200);
8009
8021
  return waitForEvent(this, "sgds-after-hide");
8010
8022
  }
8011
8023
  // assigning name attribute to elements added in slot="end", to use wildcard css selector to assign styles only to *-mainnav-item
@@ -12149,7 +12161,7 @@
12149
12161
  watch("disabled", { waitUntilFirstUpdate: true })
12150
12162
  ], SgdsDropdown.prototype, "_handleDisabled", null);
12151
12163
 
12152
- var css_248z$1 = css`.dropdown-item{align-items:center;background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;display:flex;gap:var(--sgds-gap-sm);padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item:not(.nav-link):hover{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:not(.nav-link):focus,.dropdown-item:not(.nav-link):focus-visible{background-color:var(--sgds-bg-translucent-subtle);box-shadow:inset var(--sgds-form-box-shadow-focus);outline:0}.dropdown-item:not(.nav-link).active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{opacity:var(--sgds-opacity-50);pointer-events:none}::slotted(*){color:inherit!important;display:flex;gap:var(--sgds-gap-sm);text-decoration:none!important}.nav-link{gap:var(--sgds-gap-xs);padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}.nav-link:hover{color:var(--sgds-primary-color-default)}.nav-link:focus,.nav-link:focus-visible{outline:0}.nav-link:focus-visible{box-shadow:var(--sgds-box-shadow-focus) inset;color:var(--sgds-primary-color-default)}.nav-link.active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default)}`;
12164
+ var css_248z$1 = css`:host([disabled]){cursor:not-allowed}.dropdown-item{align-items:center;background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;display:flex;gap:var(--sgds-gap-sm);padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item:not(.nav-link):hover{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:not(.nav-link):focus,.dropdown-item:not(.nav-link):focus-visible{background-color:var(--sgds-bg-translucent-subtle);box-shadow:inset var(--sgds-form-box-shadow-focus);outline:0}.dropdown-item:not(.nav-link).active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{opacity:var(--sgds-opacity-50);pointer-events:none}::slotted(*){color:inherit!important;display:flex;gap:var(--sgds-gap-sm);text-decoration:none!important}.nav-link{gap:var(--sgds-gap-xs);padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}.nav-link:hover{color:var(--sgds-primary-color-default)}.nav-link:focus,.nav-link:focus-visible{outline:0}.nav-link:focus-visible{box-shadow:var(--sgds-box-shadow-focus) inset;color:var(--sgds-primary-color-default)}.nav-link.active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default)}`;
12153
12165
 
12154
12166
  /**
12155
12167
  * @summary `SgdsDropdownItem` are navigation links built with `HTMLAnchorElement`. It should be used in the default slot of `SgdsDropdown`
@@ -12259,15 +12271,21 @@
12259
12271
  _handleSlotChange(e) {
12260
12272
  const items = e.target.assignedElements({ flatten: true });
12261
12273
  items.forEach(item => {
12274
+ var _a;
12262
12275
  item.addEventListener("keydown", this._handleKeyboardMenuItemsEvent.bind(this));
12263
12276
  const dropdownItem = item.shadowRoot.querySelector(".dropdown-item");
12264
12277
  dropdownItem.classList.add("nav-link");
12265
- const slottedItem = item.shadowRoot.querySelector(".dropdown-item slot").assignedElements({
12266
- flatten: true
12267
- });
12268
- slottedItem.forEach(item => {
12269
- item.tabIndex = -1;
12270
- });
12278
+ const link = ((_a = item.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector("a")) || item.querySelector("a");
12279
+ link.tabIndex = -1;
12280
+ if (dropdownItem.classList.contains("disabled")) {
12281
+ link.setAttribute("href", "javascript:void(0)");
12282
+ link.setAttribute("tabindex", "-1");
12283
+ }
12284
+ else {
12285
+ link.addEventListener("click", () => {
12286
+ this.emit("sgds-mainnav-close");
12287
+ });
12288
+ }
12271
12289
  });
12272
12290
  }
12273
12291
  _handleDesktopSlotChange(e) {
@@ -12275,6 +12293,15 @@
12275
12293
  items.forEach(item => {
12276
12294
  const dropdownItem = item.shadowRoot.querySelector(".dropdown-item");
12277
12295
  dropdownItem.classList.remove("nav-link");
12296
+ const slottedItem = item.shadowRoot.querySelector(".dropdown-item slot").assignedElements({
12297
+ flatten: true
12298
+ });
12299
+ slottedItem.forEach(item => {
12300
+ if (dropdownItem.classList.contains("disabled")) {
12301
+ item.setAttribute("href", "javascript:void(0)");
12302
+ item.setAttribute("tabindex", "-1");
12303
+ }
12304
+ });
12278
12305
  });
12279
12306
  }
12280
12307
  _handleKeyboardMenuItemsEvent(e) {
@@ -12325,7 +12352,9 @@
12325
12352
  }
12326
12353
  _resetDropdownMenu() {
12327
12354
  const navbarBody = this._getNavbarBody();
12328
- navbarBody.style.removeProperty("transform");
12355
+ if (navbarBody) {
12356
+ navbarBody.style.removeProperty("transform");
12357
+ }
12329
12358
  }
12330
12359
  _handleKeyboardOpen(event) {
12331
12360
  if (this.disabled) {
@@ -12515,7 +12544,11 @@
12515
12544
  if (this.disabled) {
12516
12545
  anchor.setAttribute("href", "javascript:void(0)");
12517
12546
  anchor.setAttribute("tabindex", "-1");
12547
+ return;
12518
12548
  }
12549
+ anchor.addEventListener("click", () => {
12550
+ this.emit("sgds-mainnav-close");
12551
+ });
12519
12552
  }
12520
12553
  }
12521
12554
  render() {