@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.
- package/components/Breadcrumb/index.umd.js +1 -1
- package/components/Card/index.umd.js +4023 -4074
- package/components/Card/index.umd.js.map +1 -1
- package/components/Card/sgds-card.d.ts +1 -5
- package/components/Card/sgds-card.js +21 -27
- package/components/Card/sgds-card.js.map +1 -1
- package/components/Dropdown/dropdown-item.js +1 -1
- package/components/Dropdown/index.umd.js +1 -1
- package/components/Mainnav/index.umd.js +42 -9
- package/components/Mainnav/index.umd.js.map +1 -1
- package/components/Mainnav/sgds-mainnav-dropdown.js +24 -7
- package/components/Mainnav/sgds-mainnav-dropdown.js.map +1 -1
- package/components/Mainnav/sgds-mainnav-item.js +4 -0
- package/components/Mainnav/sgds-mainnav-item.js.map +1 -1
- package/components/Mainnav/sgds-mainnav.js +13 -1
- package/components/Mainnav/sgds-mainnav.js.map +1 -1
- package/components/OverflowMenu/index.umd.js +1 -1
- package/components/Subnav/index.umd.js +2 -2
- package/components/Subnav/subnav-item.js +1 -1
- package/components/Subnav/subnav.js +1 -1
- package/components/index.umd.js +62 -35
- package/components/index.umd.js.map +1 -1
- package/index.umd.js +63 -36
- package/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/react/components/Card/sgds-card.cjs.js +20 -26
- package/react/components/Card/sgds-card.cjs.js.map +1 -1
- package/react/components/Card/sgds-card.js +21 -27
- package/react/components/Card/sgds-card.js.map +1 -1
- package/react/components/Dropdown/dropdown-item.cjs.js +1 -1
- package/react/components/Dropdown/dropdown-item.js +1 -1
- package/react/components/Mainnav/sgds-mainnav-dropdown.cjs.js +24 -7
- package/react/components/Mainnav/sgds-mainnav-dropdown.cjs.js.map +1 -1
- package/react/components/Mainnav/sgds-mainnav-dropdown.js +24 -7
- package/react/components/Mainnav/sgds-mainnav-dropdown.js.map +1 -1
- package/react/components/Mainnav/sgds-mainnav-item.cjs.js +4 -0
- package/react/components/Mainnav/sgds-mainnav-item.cjs.js.map +1 -1
- package/react/components/Mainnav/sgds-mainnav-item.js +4 -0
- package/react/components/Mainnav/sgds-mainnav-item.js.map +1 -1
- package/react/components/Mainnav/sgds-mainnav.cjs.js +13 -1
- package/react/components/Mainnav/sgds-mainnav.cjs.js.map +1 -1
- package/react/components/Mainnav/sgds-mainnav.js +13 -1
- package/react/components/Mainnav/sgds-mainnav.js.map +1 -1
- package/react/components/Subnav/subnav-item.cjs.js +1 -1
- package/react/components/Subnav/subnav-item.js +1 -1
- package/react/components/Subnav/subnav.cjs.js +1 -1
- 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 {
|
|
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
|
-
|
|
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
|
-
|
|
60
|
-
<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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 {
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
12266
|
-
|
|
12267
|
-
|
|
12268
|
-
|
|
12269
|
-
|
|
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
|
|
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() {
|