@govtechsg/sgds-web-component 3.26.1 → 3.27.0-rc.0
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/base/dropdown-list-element.js +9 -2
- package/base/dropdown-list-element.js.map +1 -1
- package/base/nav-element.d.ts +64 -0
- package/base/nav-element.js +263 -0
- package/base/nav-element.js.map +1 -0
- package/base/nav-profile-element.d.ts +47 -0
- package/base/nav-profile-element.js +191 -0
- package/base/nav-profile-element.js.map +1 -0
- package/base/nav-profile.js +6 -0
- package/base/nav-profile.js.map +1 -0
- package/components/Appnav/appnav-context.d.ts +6 -0
- package/components/Appnav/appnav-context.js +7 -0
- package/components/Appnav/appnav-context.js.map +1 -0
- package/components/Appnav/appnav.js +6 -0
- package/components/Appnav/appnav.js.map +1 -0
- package/components/Appnav/index.d.ts +9 -0
- package/components/Appnav/index.js +8 -0
- package/components/Appnav/index.js.map +1 -0
- package/components/Appnav/index.umd.min.js +2542 -0
- package/components/Appnav/index.umd.min.js.map +1 -0
- package/components/Appnav/sgds-appnav-profile.d.ts +17 -0
- package/components/Appnav/sgds-appnav-profile.js +31 -0
- package/components/Appnav/sgds-appnav-profile.js.map +1 -0
- package/components/Appnav/sgds-appnav.d.ts +44 -0
- package/components/Appnav/sgds-appnav.js +183 -0
- package/components/Appnav/sgds-appnav.js.map +1 -0
- package/components/Breadcrumb/index.umd.min.js +25 -25
- package/components/Breadcrumb/index.umd.min.js.map +1 -1
- package/components/Checkbox/index.umd.min.js +233 -233
- package/components/Checkbox/index.umd.min.js.map +1 -1
- package/components/Checkbox/sgds-checkbox.d.ts +1 -0
- package/components/Checkbox/sgds-checkbox.js +6 -1
- package/components/Checkbox/sgds-checkbox.js.map +1 -1
- package/components/ComboBox/index.umd.min.js +254 -254
- package/components/ComboBox/index.umd.min.js.map +1 -1
- package/components/DataTable/data-table.js +6 -0
- package/components/DataTable/data-table.js.map +1 -0
- package/components/DataTable/index.d.ts +12 -0
- package/components/DataTable/index.js +11 -0
- package/components/DataTable/index.js.map +1 -0
- package/components/DataTable/index.umd.min.js +2634 -0
- package/components/DataTable/index.umd.min.js.map +1 -0
- package/components/DataTable/sgds-data-table-cell.d.ts +15 -0
- package/components/DataTable/sgds-data-table-cell.js +32 -0
- package/components/DataTable/sgds-data-table-cell.js.map +1 -0
- package/components/DataTable/sgds-data-table-head.d.ts +28 -0
- package/components/DataTable/sgds-data-table-head.js +69 -0
- package/components/DataTable/sgds-data-table-head.js.map +1 -0
- package/components/DataTable/sgds-data-table-row.d.ts +76 -0
- package/components/DataTable/sgds-data-table-row.js +333 -0
- package/components/DataTable/sgds-data-table-row.js.map +1 -0
- package/components/DataTable/sgds-data-table.d.ts +82 -0
- package/components/DataTable/sgds-data-table.js +405 -0
- package/components/DataTable/sgds-data-table.js.map +1 -0
- package/components/Datepicker/index.umd.min.js +86 -86
- package/components/Datepicker/index.umd.min.js.map +1 -1
- package/components/Dropdown/dropdown-item.js +1 -1
- package/components/Dropdown/index.umd.min.js +5 -5
- package/components/Dropdown/index.umd.min.js.map +1 -1
- package/components/Dropdown/sgds-dropdown-item.d.ts +2 -0
- package/components/Dropdown/sgds-dropdown-item.js +8 -2
- package/components/Dropdown/sgds-dropdown-item.js.map +1 -1
- package/components/Input/index.umd.min.js +2 -2
- package/components/Input/index.umd.min.js.map +1 -1
- package/components/Input/input.js +1 -1
- package/components/Mainnav/index.d.ts +2 -0
- package/components/Mainnav/index.js +2 -0
- package/components/Mainnav/index.js.map +1 -1
- package/components/Mainnav/index.umd.min.js +339 -286
- package/components/Mainnav/index.umd.min.js.map +1 -1
- package/components/Mainnav/mainnav-dropdown.js +1 -1
- package/components/Mainnav/mainnav-item.js +1 -1
- package/components/Mainnav/mainnav.js +1 -1
- package/components/Mainnav/sgds-mainnav-profile.d.ts +15 -0
- package/components/Mainnav/sgds-mainnav-profile.js +29 -0
- package/components/Mainnav/sgds-mainnav-profile.js.map +1 -0
- package/components/Mainnav/sgds-mainnav.d.ts +8 -51
- package/components/Mainnav/sgds-mainnav.js +40 -238
- package/components/Mainnav/sgds-mainnav.js.map +1 -1
- package/components/OverflowMenu/index.umd.min.js +25 -25
- package/components/OverflowMenu/index.umd.min.js.map +1 -1
- package/components/QuantityToggle/index.umd.min.js +1 -1
- package/components/QuantityToggle/index.umd.min.js.map +1 -1
- package/components/Select/index.umd.min.js +1 -1
- package/components/Select/index.umd.min.js.map +1 -1
- package/components/Tab/index.umd.min.js +1 -1
- package/components/Tab/index.umd.min.js.map +1 -1
- package/components/Tab/tab-panel.js +1 -1
- package/components/Textarea/index.umd.min.js +1 -1
- package/components/Textarea/index.umd.min.js.map +1 -1
- package/components/Textarea/textarea.js +1 -1
- package/components/index.d.ts +7 -0
- package/components/index.js +7 -0
- package/components/index.js.map +1 -1
- package/components/index.umd.min.js +812 -628
- package/components/index.umd.min.js.map +1 -1
- package/css/fouc.css +9 -2
- package/custom-elements.json +11501 -7967
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/index.umd.min.js +699 -510
- package/index.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/react/appnav/index.cjs.js +45 -0
- package/react/appnav/index.cjs.js.map +1 -0
- package/react/appnav/index.d.ts +4 -0
- package/react/appnav/index.js +21 -0
- package/react/appnav/index.js.map +1 -0
- package/react/appnav-profile/index.cjs.js +40 -0
- package/react/appnav-profile/index.cjs.js.map +1 -0
- package/react/appnav-profile/index.d.ts +4 -0
- package/react/appnav-profile/index.js +16 -0
- package/react/appnav-profile/index.js.map +1 -0
- package/react/base/dropdown-list-element.cjs.js +9 -2
- package/react/base/dropdown-list-element.cjs.js.map +1 -1
- package/react/base/dropdown-list-element.js +9 -2
- package/react/base/dropdown-list-element.js.map +1 -1
- package/react/base/nav-element.cjs.js +268 -0
- package/react/base/nav-element.cjs.js.map +1 -0
- package/react/base/nav-element.js +264 -0
- package/react/base/nav-element.js.map +1 -0
- package/react/base/nav-profile-element.cjs.js +196 -0
- package/react/base/nav-profile-element.cjs.js.map +1 -0
- package/react/base/nav-profile-element.js +192 -0
- package/react/base/nav-profile-element.js.map +1 -0
- package/react/base/nav-profile.cjs.js +11 -0
- package/react/base/nav-profile.cjs.js.map +1 -0
- package/react/base/nav-profile.js +7 -0
- package/react/base/nav-profile.js.map +1 -0
- package/react/components/Appnav/appnav-context.cjs.js +13 -0
- package/react/components/Appnav/appnav-context.cjs.js.map +1 -0
- package/react/components/Appnav/appnav-context.js +8 -0
- package/react/components/Appnav/appnav-context.js.map +1 -0
- package/react/components/Appnav/appnav.cjs.js +11 -0
- package/react/components/Appnav/appnav.cjs.js.map +1 -0
- package/react/components/Appnav/appnav.js +7 -0
- package/react/components/Appnav/appnav.js.map +1 -0
- package/react/components/Appnav/sgds-appnav-profile.cjs.js +37 -0
- package/react/components/Appnav/sgds-appnav-profile.cjs.js.map +1 -0
- package/react/components/Appnav/sgds-appnav-profile.js +32 -0
- package/react/components/Appnav/sgds-appnav-profile.js.map +1 -0
- package/react/components/Appnav/sgds-appnav.cjs.js +189 -0
- package/react/components/Appnav/sgds-appnav.cjs.js.map +1 -0
- package/react/components/Appnav/sgds-appnav.js +184 -0
- package/react/components/Appnav/sgds-appnav.js.map +1 -0
- package/react/components/Checkbox/sgds-checkbox.cjs.js +6 -1
- package/react/components/Checkbox/sgds-checkbox.cjs.js.map +1 -1
- package/react/components/Checkbox/sgds-checkbox.js +6 -1
- package/react/components/Checkbox/sgds-checkbox.js.map +1 -1
- package/react/components/DataTable/data-table.cjs.js +11 -0
- package/react/components/DataTable/data-table.cjs.js.map +1 -0
- package/react/components/DataTable/data-table.js +7 -0
- package/react/components/DataTable/data-table.js.map +1 -0
- package/react/components/DataTable/sgds-data-table-cell.cjs.js +38 -0
- package/react/components/DataTable/sgds-data-table-cell.cjs.js.map +1 -0
- package/react/components/DataTable/sgds-data-table-cell.js +33 -0
- package/react/components/DataTable/sgds-data-table-cell.js.map +1 -0
- package/react/components/DataTable/sgds-data-table-head.cjs.js +75 -0
- package/react/components/DataTable/sgds-data-table-head.cjs.js.map +1 -0
- package/react/components/DataTable/sgds-data-table-head.js +70 -0
- package/react/components/DataTable/sgds-data-table-head.js.map +1 -0
- package/react/components/DataTable/sgds-data-table-row.cjs.js +339 -0
- package/react/components/DataTable/sgds-data-table-row.cjs.js.map +1 -0
- package/react/components/DataTable/sgds-data-table-row.js +334 -0
- package/react/components/DataTable/sgds-data-table-row.js.map +1 -0
- package/react/components/DataTable/sgds-data-table.cjs.js +411 -0
- package/react/components/DataTable/sgds-data-table.cjs.js.map +1 -0
- package/react/components/DataTable/sgds-data-table.js +406 -0
- package/react/components/DataTable/sgds-data-table.js.map +1 -0
- package/react/components/Dropdown/dropdown-item.cjs.js +1 -1
- package/react/components/Dropdown/dropdown-item.js +1 -1
- package/react/components/Dropdown/sgds-dropdown-item.cjs.js +8 -2
- package/react/components/Dropdown/sgds-dropdown-item.cjs.js.map +1 -1
- package/react/components/Dropdown/sgds-dropdown-item.js +8 -2
- package/react/components/Dropdown/sgds-dropdown-item.js.map +1 -1
- package/react/components/Input/input.cjs.js +1 -1
- package/react/components/Input/input.js +1 -1
- package/react/components/Mainnav/mainnav-dropdown.cjs.js +1 -1
- package/react/components/Mainnav/mainnav-dropdown.js +1 -1
- package/react/components/Mainnav/mainnav-item.cjs.js +1 -1
- package/react/components/Mainnav/mainnav-item.js +1 -1
- package/react/components/Mainnav/mainnav.cjs.js +1 -1
- package/react/components/Mainnav/mainnav.js +1 -1
- package/react/components/Mainnav/sgds-mainnav-profile.cjs.js +35 -0
- package/react/components/Mainnav/sgds-mainnav-profile.cjs.js.map +1 -0
- package/react/components/Mainnav/sgds-mainnav-profile.js +30 -0
- package/react/components/Mainnav/sgds-mainnav-profile.js.map +1 -0
- package/react/components/Mainnav/sgds-mainnav.cjs.js +39 -237
- package/react/components/Mainnav/sgds-mainnav.cjs.js.map +1 -1
- package/react/components/Mainnav/sgds-mainnav.js +40 -238
- package/react/components/Mainnav/sgds-mainnav.js.map +1 -1
- package/react/components/Tab/tab-panel.cjs.js +1 -1
- package/react/components/Tab/tab-panel.js +1 -1
- package/react/components/Textarea/textarea.cjs.js +1 -1
- package/react/components/Textarea/textarea.js +1 -1
- package/react/data-table/index.cjs.js +44 -0
- package/react/data-table/index.cjs.js.map +1 -0
- package/react/data-table/index.d.ts +4 -0
- package/react/data-table/index.js +20 -0
- package/react/data-table/index.js.map +1 -0
- package/react/data-table-cell/index.cjs.js +40 -0
- package/react/data-table-cell/index.cjs.js.map +1 -0
- package/react/data-table-cell/index.d.ts +4 -0
- package/react/data-table-cell/index.js +16 -0
- package/react/data-table-cell/index.js.map +1 -0
- package/react/data-table-head/index.cjs.js +40 -0
- package/react/data-table-head/index.cjs.js.map +1 -0
- package/react/data-table-head/index.d.ts +4 -0
- package/react/data-table-head/index.js +16 -0
- package/react/data-table-head/index.js.map +1 -0
- package/react/data-table-row/index.cjs.js +45 -0
- package/react/data-table-row/index.cjs.js.map +1 -0
- package/react/data-table-row/index.d.ts +4 -0
- package/react/data-table-row/index.js +21 -0
- package/react/data-table-row/index.js.map +1 -0
- package/react/index.cjs.js +152 -138
- package/react/index.cjs.js.map +1 -1
- package/react/index.d.ts +9 -2
- package/react/index.js +9 -2
- package/react/index.js.map +1 -1
- package/react/mainnav-profile/index.cjs.js +40 -0
- package/react/mainnav-profile/index.cjs.js.map +1 -0
- package/react/mainnav-profile/index.d.ts +4 -0
- package/react/mainnav-profile/index.js +16 -0
- package/react/mainnav-profile/index.js.map +1 -0
- package/react/styles/form-text-control.cjs.js +1 -1
- package/react/styles/form-text-control.js +1 -1
- package/styles/form-text-control.js +1 -1
- package/themes/blue.css +11 -11
- package/themes/cyan.css +10 -10
- package/themes/gt/blue.css +11 -11
- package/themes/gt/cyan.css +10 -10
- package/themes/gt/magenta.css +11 -11
- package/themes/gt/pink.css +11 -11
- package/themes/gt/purple.css +11 -11
- package/themes/gt/red.css +11 -11
- package/themes/magenta.css +11 -11
- package/themes/pink.css +11 -11
- package/themes/purple.css +11 -11
- package/themes/red.css +11 -11
- package/themes/root.css +5 -0
- package/types/react.d.ts +244 -92
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
|
+
import { html, nothing } from 'lit';
|
|
3
|
+
import { state, queryAssignedElements, property } from 'lit/decorators.js';
|
|
4
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
5
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
6
|
+
import { offset } from '@floating-ui/dom';
|
|
7
|
+
import SgdsElement from './sgds-element.js';
|
|
8
|
+
import { SgdsDropdown } from '../components/Dropdown/sgds-dropdown.js';
|
|
9
|
+
import { SgdsIcon } from '../components/Icon/sgds-icon.js';
|
|
10
|
+
import css_248z from './nav-profile.js';
|
|
11
|
+
import genId from '../utils/generateId.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Base class for navigation profile components (sgds-mainnav-profile and sgds-appnav-profile).
|
|
15
|
+
* Provides the full profile dropdown (desktop) and mobile panel behavior.
|
|
16
|
+
* When no dropdown items are slotted into the default slot, renders as a non-interactive
|
|
17
|
+
* read-only element (no dropdown menu, no caret icon, cursor default, not focusable by keyboard or mouse).
|
|
18
|
+
* Subclasses must consume the appropriate breakpoint context and set `_breakpointReached`.
|
|
19
|
+
*
|
|
20
|
+
* @slot avatar - Avatar element displayed in both desktop (before label) and mobile (as toggler)
|
|
21
|
+
* @slot default - Profile menu items (sgds-dropdown-item elements). When empty, the component becomes read-only.
|
|
22
|
+
*/
|
|
23
|
+
class NavProfileElement extends SgdsElement {
|
|
24
|
+
constructor() {
|
|
25
|
+
super(...arguments);
|
|
26
|
+
/** @internal Whether the breakpoint is reached (mobile mode). Subclasses set this via context consumption. */
|
|
27
|
+
this._breakpointReached = true;
|
|
28
|
+
/** @internal Whether the mobile menu is open */
|
|
29
|
+
this._mobileMenuOpen = false;
|
|
30
|
+
/** @internal Whether dropdown items are slotted */
|
|
31
|
+
this._hasDropdownItems = false;
|
|
32
|
+
/** Primary text displayed next to the avatar in desktop (e.g. user name) */
|
|
33
|
+
this.label = "";
|
|
34
|
+
/** Secondary text displayed below the label in desktop (e.g. agency or role) */
|
|
35
|
+
this.secondaryText = "";
|
|
36
|
+
/** When true, disables the profile dropdown */
|
|
37
|
+
this.disabled = false;
|
|
38
|
+
/** Accessible label for the profile toggle button */
|
|
39
|
+
this.ariaLabel = "";
|
|
40
|
+
/** Controls dropdown close behavior. "default" auto-closes on item/outside click, "outside" closes only on outside click, "inside" prevents auto-close. */
|
|
41
|
+
this.close = "default";
|
|
42
|
+
/** @internal */
|
|
43
|
+
this.togglerId = genId("profile", "button");
|
|
44
|
+
this._handleMobileToggle = () => {
|
|
45
|
+
this._mobileMenuOpen = !this._mobileMenuOpen;
|
|
46
|
+
};
|
|
47
|
+
this._handleClickOutside = (e) => {
|
|
48
|
+
if (!this._mobileMenuOpen)
|
|
49
|
+
return;
|
|
50
|
+
if (this.close === "inside")
|
|
51
|
+
return;
|
|
52
|
+
if (!e.composedPath().includes(this)) {
|
|
53
|
+
this._mobileMenuOpen = false;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
this._handleSlotChange = () => {
|
|
57
|
+
this._hasDropdownItems = this._defaultSlotElements.length > 0;
|
|
58
|
+
};
|
|
59
|
+
this._handleKeydown = (e) => {
|
|
60
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
61
|
+
e.preventDefault();
|
|
62
|
+
this._handleMobileToggle();
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
connectedCallback() {
|
|
67
|
+
super.connectedCallback();
|
|
68
|
+
window.addEventListener("click", this._handleClickOutside);
|
|
69
|
+
}
|
|
70
|
+
disconnectedCallback() {
|
|
71
|
+
super.disconnectedCallback();
|
|
72
|
+
window.removeEventListener("click", this._handleClickOutside);
|
|
73
|
+
}
|
|
74
|
+
render() {
|
|
75
|
+
if (!this._breakpointReached) {
|
|
76
|
+
// Desktop: read-only (no dropdown items)
|
|
77
|
+
if (!this._hasDropdownItems) {
|
|
78
|
+
return html `
|
|
79
|
+
<div
|
|
80
|
+
class="${classMap({
|
|
81
|
+
"nav-link": true,
|
|
82
|
+
"read-only": true
|
|
83
|
+
})}"
|
|
84
|
+
aria-label=${ifDefined(this.ariaLabel)}
|
|
85
|
+
>
|
|
86
|
+
<slot name="avatar"></slot>
|
|
87
|
+
${this.label || this.secondaryText
|
|
88
|
+
? html `<div class="profile-text">
|
|
89
|
+
${this.label ? html `<span class="profile-label">${this.label}</span>` : nothing}
|
|
90
|
+
${this.secondaryText
|
|
91
|
+
? html `<span class="profile-secondary-text">${this.secondaryText}</span>`
|
|
92
|
+
: nothing}
|
|
93
|
+
</div>`
|
|
94
|
+
: nothing}
|
|
95
|
+
</div>
|
|
96
|
+
<slot @slotchange=${this._handleSlotChange}></slot>
|
|
97
|
+
`;
|
|
98
|
+
}
|
|
99
|
+
// Desktop: dropdown with avatar + label + secondaryText
|
|
100
|
+
return html `
|
|
101
|
+
<sgds-dropdown .floatingOpts=${{ middleware: [offset(0)] }} ?disabled=${this.disabled} close=${this.close}>
|
|
102
|
+
<button
|
|
103
|
+
class="${classMap({
|
|
104
|
+
"nav-link": true,
|
|
105
|
+
disabled: this.disabled
|
|
106
|
+
})}"
|
|
107
|
+
aria-disabled=${this.disabled ? "true" : "false"}
|
|
108
|
+
aria-label=${ifDefined(this.ariaLabel)}
|
|
109
|
+
id=${this.togglerId}
|
|
110
|
+
tabindex=${this.disabled ? "-1" : "0"}
|
|
111
|
+
slot="toggler"
|
|
112
|
+
>
|
|
113
|
+
<slot name="avatar"></slot>
|
|
114
|
+
${this.label || this.secondaryText
|
|
115
|
+
? html `<div class="profile-text">
|
|
116
|
+
${this.label ? html `<span class="profile-label">${this.label}</span>` : nothing}
|
|
117
|
+
${this.secondaryText
|
|
118
|
+
? html `<span class="profile-secondary-text">${this.secondaryText}</span>`
|
|
119
|
+
: nothing}
|
|
120
|
+
</div>`
|
|
121
|
+
: nothing}
|
|
122
|
+
<sgds-icon name="chevron-down" size="md"></sgds-icon>
|
|
123
|
+
</button>
|
|
124
|
+
<slot @slotchange=${this._handleSlotChange}></slot>
|
|
125
|
+
</sgds-dropdown>
|
|
126
|
+
`;
|
|
127
|
+
}
|
|
128
|
+
// Mobile: read-only (no dropdown items)
|
|
129
|
+
if (!this._hasDropdownItems) {
|
|
130
|
+
return html `
|
|
131
|
+
<div class="profile-avatar-mobile read-only">
|
|
132
|
+
<slot name="avatar"></slot>
|
|
133
|
+
</div>
|
|
134
|
+
<slot @slotchange=${this._handleSlotChange}></slot>
|
|
135
|
+
`;
|
|
136
|
+
}
|
|
137
|
+
// Mobile: avatar toggler + self-contained mobile panel
|
|
138
|
+
return html `
|
|
139
|
+
<button
|
|
140
|
+
class="profile-avatar-mobile"
|
|
141
|
+
aria-label=${this.ariaLabel || "Toggle navigation"}
|
|
142
|
+
aria-expanded=${this._mobileMenuOpen ? "true" : "false"}
|
|
143
|
+
@click=${this._handleMobileToggle}
|
|
144
|
+
@keydown=${this._handleKeydown}
|
|
145
|
+
>
|
|
146
|
+
<slot name="avatar"></slot>
|
|
147
|
+
</button>
|
|
148
|
+
<div class="profile-mobile-panel" ?hidden=${!this._mobileMenuOpen}>
|
|
149
|
+
<div class="profile-mobile-items">
|
|
150
|
+
<slot @slotchange=${this._handleSlotChange}></slot>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
`;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
NavProfileElement.styles = [...SgdsElement.styles, css_248z];
|
|
157
|
+
/** @internal */
|
|
158
|
+
NavProfileElement.dependencies = {
|
|
159
|
+
"sgds-dropdown": SgdsDropdown,
|
|
160
|
+
"sgds-icon": SgdsIcon
|
|
161
|
+
};
|
|
162
|
+
__decorate([
|
|
163
|
+
state()
|
|
164
|
+
], NavProfileElement.prototype, "_breakpointReached", void 0);
|
|
165
|
+
__decorate([
|
|
166
|
+
state()
|
|
167
|
+
], NavProfileElement.prototype, "_mobileMenuOpen", void 0);
|
|
168
|
+
__decorate([
|
|
169
|
+
state()
|
|
170
|
+
], NavProfileElement.prototype, "_hasDropdownItems", void 0);
|
|
171
|
+
__decorate([
|
|
172
|
+
queryAssignedElements({ flatten: true })
|
|
173
|
+
], NavProfileElement.prototype, "_defaultSlotElements", void 0);
|
|
174
|
+
__decorate([
|
|
175
|
+
property({ type: String, reflect: true })
|
|
176
|
+
], NavProfileElement.prototype, "label", void 0);
|
|
177
|
+
__decorate([
|
|
178
|
+
property({ type: String, reflect: true })
|
|
179
|
+
], NavProfileElement.prototype, "secondaryText", void 0);
|
|
180
|
+
__decorate([
|
|
181
|
+
property({ type: Boolean })
|
|
182
|
+
], NavProfileElement.prototype, "disabled", void 0);
|
|
183
|
+
__decorate([
|
|
184
|
+
property({ type: String })
|
|
185
|
+
], NavProfileElement.prototype, "ariaLabel", void 0);
|
|
186
|
+
__decorate([
|
|
187
|
+
property({ type: String })
|
|
188
|
+
], NavProfileElement.prototype, "close", void 0);
|
|
189
|
+
|
|
190
|
+
export { NavProfileElement as default };
|
|
191
|
+
//# sourceMappingURL=nav-profile-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-profile-element.js","sources":["../../src/base/nav-profile-element.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, queryAssignedElements, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { offset } from \"@floating-ui/dom\";\nimport SgdsElement from \"./sgds-element\";\nimport SgdsDropdown from \"../components/Dropdown/sgds-dropdown\";\nimport SgdsIcon from \"../components/Icon/sgds-icon\";\nimport navProfileStyle from \"./nav-profile.css\";\nimport genId from \"../utils/generateId\";\n\n/**\n * Base class for navigation profile components (sgds-mainnav-profile and sgds-appnav-profile).\n * Provides the full profile dropdown (desktop) and mobile panel behavior.\n * When no dropdown items are slotted into the default slot, renders as a non-interactive\n * read-only element (no dropdown menu, no caret icon, cursor default, not focusable by keyboard or mouse).\n * Subclasses must consume the appropriate breakpoint context and set `_breakpointReached`.\n *\n * @slot avatar - Avatar element displayed in both desktop (before label) and mobile (as toggler)\n * @slot default - Profile menu items (sgds-dropdown-item elements). When empty, the component becomes read-only.\n */\nexport default abstract class NavProfileElement extends SgdsElement {\n static styles = [...SgdsElement.styles, navProfileStyle];\n /** @internal */\n static dependencies = {\n \"sgds-dropdown\": SgdsDropdown,\n \"sgds-icon\": SgdsIcon\n };\n\n /** @internal Whether the breakpoint is reached (mobile mode). Subclasses set this via context consumption. */\n @state()\n protected _breakpointReached = true;\n\n /** @internal Whether the mobile menu is open */\n @state()\n private _mobileMenuOpen = false;\n\n /** @internal Whether dropdown items are slotted */\n @state()\n private _hasDropdownItems = false;\n\n @queryAssignedElements({ flatten: true })\n private _defaultSlotElements!: HTMLElement[];\n\n /** Primary text displayed next to the avatar in desktop (e.g. user name) */\n @property({ type: String, reflect: true })\n label = \"\";\n\n /** Secondary text displayed below the label in desktop (e.g. agency or role) */\n @property({ type: String, reflect: true })\n secondaryText = \"\";\n\n /** When true, disables the profile dropdown */\n @property({ type: Boolean })\n disabled = false;\n\n /** Accessible label for the profile toggle button */\n @property({ type: String })\n ariaLabel = \"\";\n\n /** Controls dropdown close behavior. \"default\" auto-closes on item/outside click, \"outside\" closes only on outside click, \"inside\" prevents auto-close. */\n @property({ type: String })\n close: \"default\" | \"outside\" | \"inside\" = \"default\";\n\n /** @internal */\n private togglerId: string = genId(\"profile\", \"button\");\n\n private _handleMobileToggle = () => {\n this._mobileMenuOpen = !this._mobileMenuOpen;\n };\n\n private _handleClickOutside = (e: MouseEvent) => {\n if (!this._mobileMenuOpen) return;\n if (this.close === \"inside\") return;\n if (!e.composedPath().includes(this)) {\n this._mobileMenuOpen = false;\n }\n };\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(\"click\", this._handleClickOutside);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener(\"click\", this._handleClickOutside);\n }\n\n private _handleSlotChange = () => {\n this._hasDropdownItems = this._defaultSlotElements.length > 0;\n };\n\n private _handleKeydown = (e: KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n this._handleMobileToggle();\n }\n };\n\n render() {\n if (!this._breakpointReached) {\n // Desktop: read-only (no dropdown items)\n if (!this._hasDropdownItems) {\n return html`\n <div\n class=\"${classMap({\n \"nav-link\": true,\n \"read-only\": true\n })}\"\n aria-label=${ifDefined(this.ariaLabel)}\n >\n <slot name=\"avatar\"></slot>\n ${this.label || this.secondaryText\n ? html`<div class=\"profile-text\">\n ${this.label ? html`<span class=\"profile-label\">${this.label}</span>` : nothing}\n ${this.secondaryText\n ? html`<span class=\"profile-secondary-text\">${this.secondaryText}</span>`\n : nothing}\n </div>`\n : nothing}\n </div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n `;\n }\n\n // Desktop: dropdown with avatar + label + secondaryText\n return html`\n <sgds-dropdown .floatingOpts=${{ middleware: [offset(0)] }} ?disabled=${this.disabled} close=${this.close}>\n <button\n class=\"${classMap({\n \"nav-link\": true,\n disabled: this.disabled\n })}\"\n aria-disabled=${this.disabled ? \"true\" : \"false\"}\n aria-label=${ifDefined(this.ariaLabel)}\n id=${this.togglerId}\n tabindex=${this.disabled ? \"-1\" : \"0\"}\n slot=\"toggler\"\n >\n <slot name=\"avatar\"></slot>\n ${this.label || this.secondaryText\n ? html`<div class=\"profile-text\">\n ${this.label ? html`<span class=\"profile-label\">${this.label}</span>` : nothing}\n ${this.secondaryText\n ? html`<span class=\"profile-secondary-text\">${this.secondaryText}</span>`\n : nothing}\n </div>`\n : nothing}\n <sgds-icon name=\"chevron-down\" size=\"md\"></sgds-icon>\n </button>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </sgds-dropdown>\n `;\n }\n\n // Mobile: read-only (no dropdown items)\n if (!this._hasDropdownItems) {\n return html`\n <div class=\"profile-avatar-mobile read-only\">\n <slot name=\"avatar\"></slot>\n </div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n `;\n }\n\n // Mobile: avatar toggler + self-contained mobile panel\n return html`\n <button\n class=\"profile-avatar-mobile\"\n aria-label=${this.ariaLabel || \"Toggle navigation\"}\n aria-expanded=${this._mobileMenuOpen ? \"true\" : \"false\"}\n @click=${this._handleMobileToggle}\n @keydown=${this._handleKeydown}\n >\n <slot name=\"avatar\"></slot>\n </button>\n <div class=\"profile-mobile-panel\" ?hidden=${!this._mobileMenuOpen}>\n <div class=\"profile-mobile-items\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </div>\n `;\n }\n}\n"],"names":["navProfileStyle"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
|
|
3
|
+
var css_248z = css`:host([expand=always]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}@media (min-width:512px){:host([expand=sm]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}}@media (min-width:768px){:host([expand=md]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}}@media (min-width:1024px){:host(:not([expand])) .nav-link,:host([expand=lg]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}}@media (min-width:1280px){:host([expand=xl]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}}@media (min-width:1440px){:host([expand=xxl]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}}button.nav-link{appearance:none;background:none;border:none;font-family:inherit}.nav-link{align-items:center;box-sizing:border-box;color:var(--sgds-color-default);cursor:pointer;display:flex;font-size:var(--sgds-font-size-label-sm);gap:var(--sgds-gap-xs);line-height:var(--sgds-line-height-2-xs,20px);padding:var(--sgds-padding-sm) var(--sgds-mainnav-mobile-padding-x);text-decoration:none}.nav-link:not(.disabled):hover{color:var(--sgds-primary-color-default)}.nav-link:not(.disabled):focus-visible{color:var(--sgds-primary-color-default);outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}.nav-link.disabled{cursor:not-allowed;opacity:var(--sgds-opacity-40)}.nav-link.read-only,.profile-avatar-mobile.read-only{cursor:default;pointer-events:none}:host([tone=brand][expand=always]) .nav-link,:host([tone^=gradient][expand=always]) .nav-link{color:var(--sgds-color-fixed-light)}@media screen and (min-width:512px){:host([tone=brand][expand=sm]) .nav-link,:host([tone^=gradient][expand=sm]) .nav-link{color:var(--sgds-color-fixed-light)}}@media screen and (min-width:768px){:host([tone=brand][expand=md]) .nav-link,:host([tone^=gradient][expand=md]) .nav-link{color:var(--sgds-color-fixed-light)}}@media screen and (min-width:1024px){:host([tone=brand][expand=lg]) .nav-link,:host([tone^=gradient][expand=lg]) .nav-link{color:var(--sgds-color-fixed-light)}}@media screen and (min-width:1280px){:host([tone=brand][expand=xl]) .nav-link,:host([tone^=gradient][expand=xl]) .nav-link{color:var(--sgds-color-fixed-light)}}@media screen and (min-width:1440px){:host([tone=brand][expand=xxl]) .nav-link,:host([tone^=gradient][expand=xxl]) .nav-link{color:var(--sgds-color-fixed-light)}}.profile-text{display:flex;flex:1;flex-direction:column;gap:var(--sgds-gap-text-2-xs,2px);text-align:left}.profile-label{font-weight:var(--sgds-font-weight-semibold)}.profile-label,.profile-secondary-text{font-size:var(--sgds-font-size-body-xs);line-height:var(--sgds-line-height-3-xs,16px)}sgds-dropdown{display:block;height:100%}.profile-avatar-mobile{align-items:center;background:none;border:none;border-radius:var(--sgds-border-radius-full);color:inherit;cursor:pointer;display:flex;font:inherit;height:100%;margin:0;padding:0}.profile-avatar-mobile:focus-visible{outline:none}.profile-avatar-mobile:focus-visible ::slotted(*){border-radius:var(--sgds-border-radius-full);outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}.profile-mobile-panel{animation:profile-panel-show .2s ease-in-out;background-color:var(--sgds-surface-default);border-top:var(--sgds-border-width-1) solid var(--sgds-border-color-translucent);box-shadow:0 2px 4px 0 hsla(0,0%,5%,.08);left:0;padding:var(--sgds-padding-md) 0;position:absolute;top:100%;width:100%;z-index:var(--sgds-z-index-floating)}.profile-mobile-panel[hidden]{display:none}@keyframes profile-panel-show{0%{max-height:0;opacity:0}to{max-height:100dvh;opacity:1}}.profile-mobile-items{display:flex;flex-direction:column;height:100dvh;margin:auto;max-width:var(--sgds-mainnav-max-width,1440px);overflow-y:auto;width:100%}@media screen and (min-width:1024px){.nav-link{padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}}`;
|
|
4
|
+
|
|
5
|
+
export { css_248z as default };
|
|
6
|
+
//# sourceMappingURL=nav-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-profile.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createContext } from '@lit/context';
|
|
2
|
+
|
|
3
|
+
const AppnavBreakpointContext = createContext("appnav-context");
|
|
4
|
+
const AppnavExpandedContext = createContext("appnav-expanded-context");
|
|
5
|
+
|
|
6
|
+
export { AppnavBreakpointContext, AppnavExpandedContext };
|
|
7
|
+
//# sourceMappingURL=appnav-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appnav-context.js","sources":["../../../src/components/Appnav/appnav-context.ts"],"sourcesContent":["import { createContext } from \"@lit/context\";\n\nexport const AppnavBreakpointContext = createContext<boolean>(\"appnav-context\");\n\nexport const AppnavExpandedContext = createContext<boolean>(\"appnav-expanded-context\");\n"],"names":[],"mappings":";;MAEa,uBAAuB,GAAG,aAAa,CAAU,gBAAgB,EAAE;MAEnE,qBAAqB,GAAG,aAAa,CAAU,yBAAyB;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
|
|
3
|
+
var css_248z = css`:host{display:block}nav{box-shadow:0 2px 4px 0 hsla(0,0%,5%,.08);position:relative;z-index:var(--sgds-z-index-floating)}:host([tone=brand]) nav{background-color:var(--sgds-primary-surface-default)}:host([tone=gradient-1]) nav{background:var(--sgds-gradient-1)}:host([tone=gradient-2]) nav{background:var(--sgds-gradient-2)}:host([tone=gradient-3]) nav{background:var(--sgds-gradient-3)}:host([tone=gradient-4]) nav{background:var(--sgds-gradient-4)}.navbar{align-items:stretch;display:flex;flex-wrap:wrap;font-size:var(--sgds-font-size-label-sm);gap:var(--sgds-gap-xs);justify-content:flex-start;margin:auto;min-height:var(--sgds-mainnav-height,72px);padding:0 var(--sgds-mainnav-mobile-padding-x);width:100%}.navbar-brand{align-items:center;color:var(--sgds-color-fixed-light);display:flex;text-decoration:none;white-space:nowrap}.navbar-brand:focus-visible{outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}.navbar-nav{align-items:flex-start;display:flex;flex-direction:column;gap:var(--sgds-gap-xs);height:100%;margin-bottom:0;margin-left:auto;margin-top:0}nav>.navbar-body{background-color:var(--sgds-surface-default);border-top:var(--sgds-border-width-1) solid var(--sgds-border-color-translucent);box-shadow:0 2px 4px 0 hsla(0,0%,5%,.08);padding:var(--sgds-padding-md) 0;position:absolute;transition:transform .2s ease-in-out;width:100%;z-index:var(--sgds-z-index-floating)}nav>.navbar-body .navbar-nav{height:100dvh;margin:auto}nav>.navbar-body slot::slotted(*){padding:var(--sgds-padding-sm) var(--sgds-mainnav-mobile-padding-x)}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{align-self:center}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-nav-scroll{overflow-y:auto}@media (min-width:512px){.navbar-expand-sm{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-sm .navbar-nav{align-items:center;flex-direction:row}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-md .navbar-nav{align-items:center;flex-direction:row}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:1024px){.navbar{padding:0 var(--sgds-mainnav-padding-x)}.navbar-expand-lg{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-lg .navbar-nav{align-items:center;flex-direction:row}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1280px){.navbar-expand-xl{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-xl .navbar-nav{align-items:center;flex-direction:row}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1440px){.navbar-expand-xxl{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-xxl .navbar-nav{align-items:center;flex-direction:row}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand .navbar-nav{align-items:center;flex-direction:row}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-end{margin-left:auto}.navbar-end,slot[name=start]{align-items:center;display:flex;gap:var(--sgds-gap-xs)}slot[name=start].slot-empty{display:none}slot[name=profile]{align-self:stretch;display:flex}slot[name=start]::slotted(*){color:var(--sgds-color-fixed-light)}.navbar-end.slot-empty,.slot-desktop-only{display:none}.appnav-menu-item{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--sgds-font-size-label-sm);line-height:var(--sgds-line-height-2-xs,20px);padding:var(--sgds-padding-sm) var(--sgds-mainnav-mobile-padding-x);text-decoration:none;width:100%}.appnav-menu-item,.appnav-menu-item:hover{color:var(--sgds-color-default)}.appnav-menu-item:focus-visible{color:var(--sgds-primary-color-default);outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}`;
|
|
4
|
+
|
|
5
|
+
export { css_248z as default };
|
|
6
|
+
//# sourceMappingURL=appnav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appnav.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SgdsAppnav } from "./sgds-appnav";
|
|
2
|
+
import { SgdsAppnavProfile } from "./sgds-appnav-profile";
|
|
3
|
+
export { SgdsAppnav, SgdsAppnavProfile };
|
|
4
|
+
declare global {
|
|
5
|
+
interface HTMLElementTagNameMap {
|
|
6
|
+
"sgds-appnav": SgdsAppnav;
|
|
7
|
+
"sgds-appnav-profile": SgdsAppnavProfile;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SgdsAppnav } from './sgds-appnav.js';
|
|
2
|
+
export { SgdsAppnav } from './sgds-appnav.js';
|
|
3
|
+
import { SgdsAppnavProfile } from './sgds-appnav-profile.js';
|
|
4
|
+
export { SgdsAppnavProfile } from './sgds-appnav-profile.js';
|
|
5
|
+
|
|
6
|
+
customElements.define("sgds-appnav", SgdsAppnav);
|
|
7
|
+
customElements.define("sgds-appnav-profile", SgdsAppnavProfile);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Appnav/index.ts"],"sourcesContent":["import { SgdsAppnav } from \"./sgds-appnav\";\nimport { SgdsAppnavProfile } from \"./sgds-appnav-profile\";\n\nexport { SgdsAppnav, SgdsAppnavProfile };\n\ncustomElements.define(\"sgds-appnav\", SgdsAppnav);\ncustomElements.define(\"sgds-appnav-profile\", SgdsAppnavProfile);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"sgds-appnav\": SgdsAppnav;\n \"sgds-appnav-profile\": SgdsAppnavProfile;\n }\n}\n"],"names":[],"mappings":";;;;;AAKA,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACjD,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,CAAC"}
|