@govtechsg/sgds-web-component 3.27.0-rc.3 → 3.27.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.
Files changed (202) hide show
  1. package/base/dropdown-list-element.js +2 -9
  2. package/base/dropdown-list-element.js.map +1 -1
  3. package/components/Breadcrumb/index.umd.min.js +5 -5
  4. package/components/Breadcrumb/index.umd.min.js.map +1 -1
  5. package/components/ComboBox/index.umd.min.js +1 -1
  6. package/components/ComboBox/index.umd.min.js.map +1 -1
  7. package/components/DataTable/data-table.js +1 -1
  8. package/components/DataTable/index.umd.min.js +49 -42
  9. package/components/DataTable/index.umd.min.js.map +1 -1
  10. package/components/DataTable/sgds-data-table-cell.d.ts +2 -2
  11. package/components/DataTable/sgds-data-table-cell.js.map +1 -1
  12. package/components/DataTable/sgds-data-table-head.d.ts +2 -2
  13. package/components/DataTable/sgds-data-table-head.js.map +1 -1
  14. package/components/DataTable/sgds-data-table-row.d.ts +0 -3
  15. package/components/DataTable/sgds-data-table-row.js +0 -13
  16. package/components/DataTable/sgds-data-table-row.js.map +1 -1
  17. package/components/DataTable/sgds-data-table.d.ts +7 -4
  18. package/components/DataTable/sgds-data-table.js +49 -38
  19. package/components/DataTable/sgds-data-table.js.map +1 -1
  20. package/components/DataTable/types.d.ts +7 -0
  21. package/components/Datepicker/index.umd.min.js +1 -1
  22. package/components/Dropdown/dropdown-item.js +1 -1
  23. package/components/Dropdown/index.umd.min.js +5 -5
  24. package/components/Dropdown/index.umd.min.js.map +1 -1
  25. package/components/Dropdown/sgds-dropdown-item.d.ts +0 -2
  26. package/components/Dropdown/sgds-dropdown-item.js +2 -8
  27. package/components/Dropdown/sgds-dropdown-item.js.map +1 -1
  28. package/components/Footer/index.umd.min.js +1 -1
  29. package/components/Footer/index.umd.min.js.map +1 -1
  30. package/components/Footer/sgds-footer.js +1 -1
  31. package/components/Footer/sgds-footer.js.map +1 -1
  32. package/components/Input/index.umd.min.js +1 -1
  33. package/components/Mainnav/index.d.ts +0 -2
  34. package/components/Mainnav/index.js +0 -2
  35. package/components/Mainnav/index.js.map +1 -1
  36. package/components/Mainnav/index.umd.min.js +285 -338
  37. package/components/Mainnav/index.umd.min.js.map +1 -1
  38. package/components/Mainnav/mainnav-dropdown.js +1 -1
  39. package/components/Mainnav/mainnav-item.js +1 -1
  40. package/components/Mainnav/mainnav.js +1 -1
  41. package/components/Mainnav/sgds-mainnav.d.ts +51 -8
  42. package/components/Mainnav/sgds-mainnav.js +238 -40
  43. package/components/Mainnav/sgds-mainnav.js.map +1 -1
  44. package/components/OverflowMenu/index.umd.min.js +5 -5
  45. package/components/OverflowMenu/index.umd.min.js.map +1 -1
  46. package/components/QuantityToggle/index.umd.min.js +1 -1
  47. package/components/Select/index.umd.min.js +21 -21
  48. package/components/Select/index.umd.min.js.map +1 -1
  49. package/components/Tab/index.umd.min.js +1 -1
  50. package/components/Tab/index.umd.min.js.map +1 -1
  51. package/components/Tab/tab-panel.js +1 -1
  52. package/components/Textarea/index.umd.min.js +1 -1
  53. package/components/index.d.ts +0 -3
  54. package/components/index.js +0 -3
  55. package/components/index.js.map +1 -1
  56. package/components/index.umd.min.js +587 -665
  57. package/components/index.umd.min.js.map +1 -1
  58. package/css/fouc.css +5 -8
  59. package/custom-elements.json +15246 -17418
  60. package/index.d.ts +0 -1
  61. package/index.js +0 -1
  62. package/index.js.map +1 -1
  63. package/index.umd.min.js +353 -441
  64. package/index.umd.min.js.map +1 -1
  65. package/package.json +1 -1
  66. package/react/base/dropdown-list-element.cjs.js +2 -9
  67. package/react/base/dropdown-list-element.cjs.js.map +1 -1
  68. package/react/base/dropdown-list-element.js +2 -9
  69. package/react/base/dropdown-list-element.js.map +1 -1
  70. package/react/components/DataTable/data-table.cjs.js +1 -1
  71. package/react/components/DataTable/data-table.js +1 -1
  72. package/react/components/DataTable/sgds-data-table-cell.cjs.js.map +1 -1
  73. package/react/components/DataTable/sgds-data-table-cell.js.map +1 -1
  74. package/react/components/DataTable/sgds-data-table-head.cjs.js.map +1 -1
  75. package/react/components/DataTable/sgds-data-table-head.js.map +1 -1
  76. package/react/components/DataTable/sgds-data-table-row.cjs.js +0 -13
  77. package/react/components/DataTable/sgds-data-table-row.cjs.js.map +1 -1
  78. package/react/components/DataTable/sgds-data-table-row.js +0 -13
  79. package/react/components/DataTable/sgds-data-table-row.js.map +1 -1
  80. package/react/components/DataTable/sgds-data-table.cjs.js +49 -38
  81. package/react/components/DataTable/sgds-data-table.cjs.js.map +1 -1
  82. package/react/components/DataTable/sgds-data-table.js +49 -38
  83. package/react/components/DataTable/sgds-data-table.js.map +1 -1
  84. package/react/components/Dropdown/dropdown-item.cjs.js +1 -1
  85. package/react/components/Dropdown/dropdown-item.js +1 -1
  86. package/react/components/Dropdown/sgds-dropdown-item.cjs.js +2 -8
  87. package/react/components/Dropdown/sgds-dropdown-item.cjs.js.map +1 -1
  88. package/react/components/Dropdown/sgds-dropdown-item.js +2 -8
  89. package/react/components/Dropdown/sgds-dropdown-item.js.map +1 -1
  90. package/react/components/Footer/sgds-footer.cjs.js +1 -1
  91. package/react/components/Footer/sgds-footer.cjs.js.map +1 -1
  92. package/react/components/Footer/sgds-footer.js +1 -1
  93. package/react/components/Footer/sgds-footer.js.map +1 -1
  94. package/react/components/Mainnav/mainnav-dropdown.cjs.js +1 -1
  95. package/react/components/Mainnav/mainnav-dropdown.js +1 -1
  96. package/react/components/Mainnav/mainnav-item.cjs.js +1 -1
  97. package/react/components/Mainnav/mainnav-item.js +1 -1
  98. package/react/components/Mainnav/mainnav.cjs.js +1 -1
  99. package/react/components/Mainnav/mainnav.js +1 -1
  100. package/react/components/Mainnav/sgds-mainnav.cjs.js +237 -39
  101. package/react/components/Mainnav/sgds-mainnav.cjs.js.map +1 -1
  102. package/react/components/Mainnav/sgds-mainnav.js +238 -40
  103. package/react/components/Mainnav/sgds-mainnav.js.map +1 -1
  104. package/react/components/Tab/tab-panel.cjs.js +1 -1
  105. package/react/components/Tab/tab-panel.js +1 -1
  106. package/react/index.cjs.js +146 -152
  107. package/react/index.cjs.js.map +1 -1
  108. package/react/index.d.ts +5 -8
  109. package/react/index.js +5 -8
  110. package/react/index.js.map +1 -1
  111. package/react/styles/form-text-control.cjs.js +1 -1
  112. package/react/styles/form-text-control.js +1 -1
  113. package/styles/form-text-control.js +1 -1
  114. package/themes/blue.css +11 -11
  115. package/themes/cyan.css +10 -10
  116. package/themes/day.css +1 -1
  117. package/themes/gt/blue.css +11 -11
  118. package/themes/gt/cyan.css +10 -10
  119. package/themes/gt/magenta.css +11 -11
  120. package/themes/gt/pink.css +11 -11
  121. package/themes/gt/purple.css +11 -11
  122. package/themes/gt/red.css +11 -11
  123. package/themes/magenta.css +11 -11
  124. package/themes/pink.css +11 -11
  125. package/themes/purple.css +11 -11
  126. package/themes/red.css +11 -11
  127. package/themes/root.css +0 -5
  128. package/types/react.d.ts +97 -148
  129. package/base/nav-element.d.ts +0 -64
  130. package/base/nav-element.js +0 -263
  131. package/base/nav-element.js.map +0 -1
  132. package/base/nav-profile-element.d.ts +0 -47
  133. package/base/nav-profile-element.js +0 -191
  134. package/base/nav-profile-element.js.map +0 -1
  135. package/base/nav-profile.js +0 -6
  136. package/base/nav-profile.js.map +0 -1
  137. package/components/Appnav/appnav-context.d.ts +0 -6
  138. package/components/Appnav/appnav-context.js +0 -7
  139. package/components/Appnav/appnav-context.js.map +0 -1
  140. package/components/Appnav/appnav.js +0 -6
  141. package/components/Appnav/appnav.js.map +0 -1
  142. package/components/Appnav/index.d.ts +0 -9
  143. package/components/Appnav/index.js +0 -8
  144. package/components/Appnav/index.js.map +0 -1
  145. package/components/Appnav/index.umd.min.js +0 -2535
  146. package/components/Appnav/index.umd.min.js.map +0 -1
  147. package/components/Appnav/sgds-appnav-profile.d.ts +0 -17
  148. package/components/Appnav/sgds-appnav-profile.js +0 -31
  149. package/components/Appnav/sgds-appnav-profile.js.map +0 -1
  150. package/components/Appnav/sgds-appnav.d.ts +0 -44
  151. package/components/Appnav/sgds-appnav.js +0 -183
  152. package/components/Appnav/sgds-appnav.js.map +0 -1
  153. package/components/Mainnav/sgds-mainnav-profile.d.ts +0 -15
  154. package/components/Mainnav/sgds-mainnav-profile.js +0 -29
  155. package/components/Mainnav/sgds-mainnav-profile.js.map +0 -1
  156. package/react/appnav/index.cjs.js +0 -45
  157. package/react/appnav/index.cjs.js.map +0 -1
  158. package/react/appnav/index.d.ts +0 -4
  159. package/react/appnav/index.js +0 -21
  160. package/react/appnav/index.js.map +0 -1
  161. package/react/appnav-profile/index.cjs.js +0 -40
  162. package/react/appnav-profile/index.cjs.js.map +0 -1
  163. package/react/appnav-profile/index.d.ts +0 -4
  164. package/react/appnav-profile/index.js +0 -16
  165. package/react/appnav-profile/index.js.map +0 -1
  166. package/react/base/nav-element.cjs.js +0 -268
  167. package/react/base/nav-element.cjs.js.map +0 -1
  168. package/react/base/nav-element.js +0 -264
  169. package/react/base/nav-element.js.map +0 -1
  170. package/react/base/nav-profile-element.cjs.js +0 -196
  171. package/react/base/nav-profile-element.cjs.js.map +0 -1
  172. package/react/base/nav-profile-element.js +0 -192
  173. package/react/base/nav-profile-element.js.map +0 -1
  174. package/react/base/nav-profile.cjs.js +0 -11
  175. package/react/base/nav-profile.cjs.js.map +0 -1
  176. package/react/base/nav-profile.js +0 -7
  177. package/react/base/nav-profile.js.map +0 -1
  178. package/react/components/Appnav/appnav-context.cjs.js +0 -13
  179. package/react/components/Appnav/appnav-context.cjs.js.map +0 -1
  180. package/react/components/Appnav/appnav-context.js +0 -8
  181. package/react/components/Appnav/appnav-context.js.map +0 -1
  182. package/react/components/Appnav/appnav.cjs.js +0 -11
  183. package/react/components/Appnav/appnav.cjs.js.map +0 -1
  184. package/react/components/Appnav/appnav.js +0 -7
  185. package/react/components/Appnav/appnav.js.map +0 -1
  186. package/react/components/Appnav/sgds-appnav-profile.cjs.js +0 -37
  187. package/react/components/Appnav/sgds-appnav-profile.cjs.js.map +0 -1
  188. package/react/components/Appnav/sgds-appnav-profile.js +0 -32
  189. package/react/components/Appnav/sgds-appnav-profile.js.map +0 -1
  190. package/react/components/Appnav/sgds-appnav.cjs.js +0 -189
  191. package/react/components/Appnav/sgds-appnav.cjs.js.map +0 -1
  192. package/react/components/Appnav/sgds-appnav.js +0 -184
  193. package/react/components/Appnav/sgds-appnav.js.map +0 -1
  194. package/react/components/Mainnav/sgds-mainnav-profile.cjs.js +0 -35
  195. package/react/components/Mainnav/sgds-mainnav-profile.cjs.js.map +0 -1
  196. package/react/components/Mainnav/sgds-mainnav-profile.js +0 -30
  197. package/react/components/Mainnav/sgds-mainnav-profile.js.map +0 -1
  198. package/react/mainnav-profile/index.cjs.js +0 -40
  199. package/react/mainnav-profile/index.cjs.js.map +0 -1
  200. package/react/mainnav-profile/index.d.ts +0 -4
  201. package/react/mainnav-profile/index.js +0 -16
  202. package/react/mainnav-profile/index.js.map +0 -1
@@ -1,32 +0,0 @@
1
- 'use client';
2
- import { __decorate } from 'tslib';
3
- import { consume } from '@lit/context';
4
- import { state } from 'lit/decorators.js';
5
- import NavProfileElement from '../../base/nav-profile-element.js';
6
- import { AppnavBreakpointContext } from './appnav-context.js';
7
-
8
- /**
9
- * @summary `SgdsAppnavProfile` is a profile component for the appnav that shows a full dropdown in desktop and handles its own mobile menu.
10
- * In desktop: renders avatar + label + secondaryText with a dropdown.
11
- * In mobile: renders the avatar as a toggler that opens a self-contained mobile panel with profile items.
12
- * When no dropdown items are slotted, renders as a non-interactive read-only element (no caret, no pointer cursor, not focusable).
13
- * When present, it disables the appnav's default hamburger toggler.
14
- *
15
- * @storyOrder 2
16
- *
17
- * @slot avatar - Avatar element displayed in both desktop (before label) and mobile (as toggler)
18
- * @slot default - Profile menu items (sgds-dropdown-item elements). When empty, the component becomes read-only.
19
- */
20
- class SgdsAppnavProfile extends NavProfileElement {
21
- constructor() {
22
- super(...arguments);
23
- this._breakpointReached = true;
24
- }
25
- }
26
- __decorate([
27
- consume({ context: AppnavBreakpointContext, subscribe: true }),
28
- state()
29
- ], SgdsAppnavProfile.prototype, "_breakpointReached", void 0);
30
-
31
- export { SgdsAppnavProfile, SgdsAppnavProfile as default };
32
- //# sourceMappingURL=sgds-appnav-profile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sgds-appnav-profile.js","sources":["../../../../src/components/Appnav/sgds-appnav-profile.ts"],"sourcesContent":["import { consume } from \"@lit/context\";\nimport { state } from \"lit/decorators.js\";\nimport NavProfileElement from \"../../base/nav-profile-element\";\nimport { AppnavBreakpointContext } from \"./appnav-context\";\n\n/**\n * @summary `SgdsAppnavProfile` is a profile component for the appnav that shows a full dropdown in desktop and handles its own mobile menu.\n * In desktop: renders avatar + label + secondaryText with a dropdown.\n * In mobile: renders the avatar as a toggler that opens a self-contained mobile panel with profile items.\n * When no dropdown items are slotted, renders as a non-interactive read-only element (no caret, no pointer cursor, not focusable).\n * When present, it disables the appnav's default hamburger toggler.\n *\n * @storyOrder 2\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 class SgdsAppnavProfile extends NavProfileElement {\n @consume({ context: AppnavBreakpointContext, subscribe: true })\n @state()\n protected override _breakpointReached = true;\n}\n\nexport default SgdsAppnavProfile;\n"],"names":[],"mappings":";;;;;;;AAKA;;;;;;;;;;;AAWG;AACG,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AAAxD,IAAA,WAAA,GAAA;;QAGqB,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;KAC9C;AAAA,CAAA;AADoB,UAAA,CAAA;IAFlB,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC9D,IAAA,KAAK,EAAE;AACqC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
@@ -1,189 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
- var tslib = require('tslib');
7
- var context = require('@lit/context');
8
- var lit = require('lit');
9
- var decorators_js = require('lit/decorators.js');
10
- var classMap_js = require('lit/directives/class-map.js');
11
- var navElement = require('../../base/nav-element.cjs.js');
12
- var slot = require('../../utils/slot.cjs.js');
13
- var appnavContext = require('./appnav-context.cjs.js');
14
- var appnav = require('./appnav.cjs.js');
15
-
16
- /**
17
- * @summary `SgdsAppnav` is a application navigation bar for operational apps. Accepts icon-buttons and profile in a fluid layout with collapse/expand behavior.
18
- *
19
- * @storyOrder 1
20
- *
21
- * @event sgds-show - Emitted on show. Only for collapsed menu.
22
- * @event sgds-after-show - Emitted on show after animation has completed. Only for collapsed menu.
23
- * @event sgds-hide - Emitted on hide. Only for collapsed menu.
24
- * @event sgds-after-hide - Emitted on hide after animation has completed. Only for collapsed menu.
25
- *
26
- * @slot default - Elements in this slot collapse into the mobile menu as text items. Accepts sgds-icon-button and other elements. Uses ariaLabel as menu item text.
27
- * @slot start - Elements in this slot will be positioned to the left of the brand.
28
- * @slot brand - Brand slot of SgdsAppnav. Pass in brand logo img here
29
- * @slot profile - Profile slot. sgds-appnav-profile goes here. Positioned to the right of the toggler.
30
- *
31
- */
32
- class SgdsAppnav extends navElement["default"] {
33
- constructor() {
34
- super(...arguments);
35
- this._breakpointReached = false;
36
- this._expanded = false;
37
- /** Sets the visual tone of the navigation bar */
38
- this.tone = "brand";
39
- /** Used only for SSR to indicate the presence of the `start` slot. */
40
- this.hasStartSlot = false;
41
- this.hasSlotController = new slot.HasSlotController(this, "start");
42
- /** @internal Whether the default slot has assigned elements */
43
- this._hasDefaultSlotItems = false;
44
- /** @internal Whether the profile slot has assigned elements */
45
- this._hasProfileSlotItems = false;
46
- /** @internal Stored default slot items for mobile menu rendering */
47
- this._defaultSlotItems = [];
48
- }
49
- updated() {
50
- if (!this.hasStartSlot)
51
- this.hasStartSlot = this.hasSlotController.test("start");
52
- this._expanded = this.expanded;
53
- }
54
- _onBreakpointReached(reached) {
55
- this._breakpointReached = reached;
56
- }
57
- _isBreakpointReached() {
58
- return this._breakpointReached;
59
- }
60
- _handleTogglerKeydown(e) {
61
- var _a;
62
- if (e.key === "Tab" && !e.shiftKey && this.expanded) {
63
- e.preventDefault();
64
- const firstItem = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(".appnav-menu-item");
65
- firstItem === null || firstItem === void 0 ? void 0 : firstItem.focus();
66
- }
67
- }
68
- _handleDefaultSlotChange(e) {
69
- const childElements = e.target.assignedElements({ flatten: true });
70
- this._hasDefaultSlotItems = childElements.length > 0;
71
- this._defaultSlotItems = childElements
72
- .filter(el => typeof el.tagName !== "undefined")
73
- .map(el => {
74
- var _a;
75
- return ({
76
- label: el.getAttribute("ariaLabel") || el.getAttribute("aria-label") || ((_a = el.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || "",
77
- element: el
78
- });
79
- });
80
- childElements.forEach(el => {
81
- el.setAttribute("expand", this.expand);
82
- });
83
- }
84
- _handleMobileItemClick(item) {
85
- item.element.click();
86
- this.hide();
87
- }
88
- _renderAppnavToggler() {
89
- return lit.html `<sgds-icon-button
90
- name="three-dots-vertical"
91
- variant="ghost"
92
- size="sm"
93
- tone="fixed-light"
94
- class="navbar-toggler"
95
- @click=${this._handleSummaryClick}
96
- @keydown=${this._handleTogglerKeydown}
97
- aria-controls="${this.collapseId}"
98
- aria-expanded="${this.expanded}"
99
- .ariaLabel=${"Toggle navigation"}
100
- ></sgds-icon-button>`;
101
- }
102
- _handleProfileSlotChange(e) {
103
- const childElements = e.target.assignedElements({ flatten: true });
104
- this._hasProfileSlotItems = childElements.length > 0;
105
- childElements.forEach(el => {
106
- el.setAttribute("expand", this.expand);
107
- el.setAttribute("tone", this.tone);
108
- });
109
- }
110
- render() {
111
- this.breakpointReached =
112
- window.innerWidth <
113
- (this.expand === "always"
114
- ? -1
115
- : this.expand === "never"
116
- ? Infinity
117
- : { sm: 512, md: 768, lg: 1024, xl: 1280, xxl: 1440 }[this.expand]);
118
- return lit.html `
119
- <nav>
120
- <div class="navbar ${this._expandClass()}">
121
- <slot name="start" class=${classMap_js.classMap({ "slot-empty": !this.hasStartSlot })}></slot>
122
- <a class="navbar-brand" href=${this.brandHref} aria-label="brand-link">
123
- <slot name="brand"></slot>
124
- </a>
125
- <div class="navbar-body navbar-collapse" id=${this.collapseId}>
126
- <div class="navbar-nav navbar-nav-scroll">
127
- <slot
128
- class=${classMap_js.classMap({ "slot-desktop-only": this.breakpointReached })}
129
- @slotchange=${this._handleDefaultSlotChange}
130
- ></slot>
131
- ${this.breakpointReached
132
- ? this._defaultSlotItems.map(item => lit.html `<a
133
- class="appnav-menu-item"
134
- role="button"
135
- tabindex="0"
136
- @click=${() => this._handleMobileItemClick(item)}
137
- @keydown=${(e) => {
138
- if (e.key === "Enter" || e.key === " ") {
139
- e.preventDefault();
140
- this._handleMobileItemClick(item);
141
- }
142
- }}
143
- >${item.label}</a
144
- >`)
145
- : lit.nothing}
146
- </div>
147
- </div>
148
- <div
149
- class="navbar-end ${this._hasProfileSlotItems || (this._hasDefaultSlotItems && this.breakpointReached)
150
- ? ""
151
- : "slot-empty"}"
152
- >
153
- ${this._hasDefaultSlotItems && this.breakpointReached ? this._renderAppnavToggler() : lit.nothing}
154
- <slot name="profile" @slotchange=${this._handleProfileSlotChange}></slot>
155
- </div>
156
- </div>
157
- </nav>
158
- `;
159
- }
160
- }
161
- SgdsAppnav.styles = [...navElement["default"].styles, appnav["default"]];
162
- tslib.__decorate([
163
- context.provide({ context: appnavContext.AppnavBreakpointContext }),
164
- decorators_js.state()
165
- ], SgdsAppnav.prototype, "_breakpointReached", void 0);
166
- tslib.__decorate([
167
- context.provide({ context: appnavContext.AppnavExpandedContext }),
168
- decorators_js.state()
169
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
170
- ], SgdsAppnav.prototype, "_expanded", void 0);
171
- tslib.__decorate([
172
- decorators_js.property({ type: String, reflect: true })
173
- ], SgdsAppnav.prototype, "tone", void 0);
174
- tslib.__decorate([
175
- decorators_js.property({ type: Boolean })
176
- ], SgdsAppnav.prototype, "hasStartSlot", void 0);
177
- tslib.__decorate([
178
- decorators_js.state()
179
- ], SgdsAppnav.prototype, "_hasDefaultSlotItems", void 0);
180
- tslib.__decorate([
181
- decorators_js.state()
182
- ], SgdsAppnav.prototype, "_hasProfileSlotItems", void 0);
183
- tslib.__decorate([
184
- decorators_js.state()
185
- ], SgdsAppnav.prototype, "_defaultSlotItems", void 0);
186
-
187
- exports.SgdsAppnav = SgdsAppnav;
188
- exports["default"] = SgdsAppnav;
189
- //# sourceMappingURL=sgds-appnav.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sgds-appnav.cjs.js","sources":["../../../../src/components/Appnav/sgds-appnav.ts"],"sourcesContent":["import { provide } from \"@lit/context\";\nimport { html, nothing } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport NavElement from \"../../base/nav-element\";\nimport { HasSlotController } from \"../../utils/slot\";\nimport { AppnavBreakpointContext, AppnavExpandedContext } from \"./appnav-context\";\nimport appnavStyle from \"./appnav.css\";\n\nexport type AppnavTone = \"brand\" | \"gradient-1\" | \"gradient-2\" | \"gradient-3\" | \"gradient-4\";\n\ninterface DefaultSlotItem {\n label: string;\n element: HTMLElement;\n}\n\n/**\n * @summary `SgdsAppnav` is a application navigation bar for operational apps. Accepts icon-buttons and profile in a fluid layout with collapse/expand behavior.\n *\n * @storyOrder 1\n *\n * @event sgds-show - Emitted on show. Only for collapsed menu.\n * @event sgds-after-show - Emitted on show after animation has completed. Only for collapsed menu.\n * @event sgds-hide - Emitted on hide. Only for collapsed menu.\n * @event sgds-after-hide - Emitted on hide after animation has completed. Only for collapsed menu.\n *\n * @slot default - Elements in this slot collapse into the mobile menu as text items. Accepts sgds-icon-button and other elements. Uses ariaLabel as menu item text.\n * @slot start - Elements in this slot will be positioned to the left of the brand.\n * @slot brand - Brand slot of SgdsAppnav. Pass in brand logo img here\n * @slot profile - Profile slot. sgds-appnav-profile goes here. Positioned to the right of the toggler.\n *\n */\nexport class SgdsAppnav extends NavElement {\n static styles = [...NavElement.styles, appnavStyle];\n\n @provide({ context: AppnavBreakpointContext })\n @state()\n private _breakpointReached = false;\n\n @provide({ context: AppnavExpandedContext })\n @state()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private _expanded = false;\n\n /** Sets the visual tone of the navigation bar */\n @property({ type: String, reflect: true })\n tone: AppnavTone = \"brand\";\n\n /** Used only for SSR to indicate the presence of the `start` slot. */\n @property({ type: Boolean }) hasStartSlot = false;\n\n private readonly hasSlotController = new HasSlotController(this, \"start\");\n\n /** @internal Whether the default slot has assigned elements */\n @state()\n private _hasDefaultSlotItems = false;\n\n /** @internal Whether the profile slot has assigned elements */\n @state()\n private _hasProfileSlotItems = false;\n\n /** @internal Stored default slot items for mobile menu rendering */\n @state()\n private _defaultSlotItems: DefaultSlotItem[] = [];\n\n updated() {\n if (!this.hasStartSlot) this.hasStartSlot = this.hasSlotController.test(\"start\");\n this._expanded = this.expanded;\n }\n\n protected _onBreakpointReached(reached: boolean): void {\n this._breakpointReached = reached;\n }\n\n protected _isBreakpointReached(): boolean {\n return this._breakpointReached;\n }\n\n private _handleTogglerKeydown(e: KeyboardEvent) {\n if (e.key === \"Tab\" && !e.shiftKey && this.expanded) {\n e.preventDefault();\n const firstItem = this.shadowRoot?.querySelector(\".appnav-menu-item\") as HTMLElement | null;\n firstItem?.focus();\n }\n }\n\n private _handleDefaultSlotChange(e: Event) {\n const childElements = (e.target as HTMLSlotElement).assignedElements({ flatten: true }) as HTMLElement[];\n this._hasDefaultSlotItems = childElements.length > 0;\n this._defaultSlotItems = childElements\n .filter(el => typeof el.tagName !== \"undefined\")\n .map(el => ({\n label: el.getAttribute(\"ariaLabel\") || el.getAttribute(\"aria-label\") || el.textContent?.trim() || \"\",\n element: el\n }));\n childElements.forEach(el => {\n el.setAttribute(\"expand\", this.expand);\n });\n }\n\n private _handleMobileItemClick(item: DefaultSlotItem) {\n item.element.click();\n this.hide();\n }\n\n private _renderAppnavToggler() {\n return html`<sgds-icon-button\n name=\"three-dots-vertical\"\n variant=\"ghost\"\n size=\"sm\"\n tone=\"fixed-light\"\n class=\"navbar-toggler\"\n @click=${this._handleSummaryClick}\n @keydown=${this._handleTogglerKeydown}\n aria-controls=\"${this.collapseId}\"\n aria-expanded=\"${this.expanded}\"\n .ariaLabel=${\"Toggle navigation\"}\n ></sgds-icon-button>`;\n }\n\n private _handleProfileSlotChange(e: Event) {\n const childElements = (e.target as HTMLSlotElement).assignedElements({ flatten: true });\n this._hasProfileSlotItems = childElements.length > 0;\n childElements.forEach(el => {\n el.setAttribute(\"expand\", this.expand);\n el.setAttribute(\"tone\", this.tone);\n });\n }\n\n render() {\n this.breakpointReached =\n window.innerWidth <\n (this.expand === \"always\"\n ? -1\n : this.expand === \"never\"\n ? Infinity\n : { sm: 512, md: 768, lg: 1024, xl: 1280, xxl: 1440 }[this.expand]);\n\n return html`\n <nav>\n <div class=\"navbar ${this._expandClass()}\">\n <slot name=\"start\" class=${classMap({ \"slot-empty\": !this.hasStartSlot })}></slot>\n <a class=\"navbar-brand\" href=${this.brandHref} aria-label=\"brand-link\">\n <slot name=\"brand\"></slot>\n </a>\n <div class=\"navbar-body navbar-collapse\" id=${this.collapseId}>\n <div class=\"navbar-nav navbar-nav-scroll\">\n <slot\n class=${classMap({ \"slot-desktop-only\": this.breakpointReached })}\n @slotchange=${this._handleDefaultSlotChange}\n ></slot>\n ${this.breakpointReached\n ? this._defaultSlotItems.map(\n item => html`<a\n class=\"appnav-menu-item\"\n role=\"button\"\n tabindex=\"0\"\n @click=${() => this._handleMobileItemClick(item)}\n @keydown=${(e: KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n this._handleMobileItemClick(item);\n }\n }}\n >${item.label}</a\n >`\n )\n : nothing}\n </div>\n </div>\n <div\n class=\"navbar-end ${this._hasProfileSlotItems || (this._hasDefaultSlotItems && this.breakpointReached)\n ? \"\"\n : \"slot-empty\"}\"\n >\n ${this._hasDefaultSlotItems && this.breakpointReached ? this._renderAppnavToggler() : nothing}\n <slot name=\"profile\" @slotchange=${this._handleProfileSlotChange}></slot>\n </div>\n </div>\n </nav>\n `;\n }\n}\n\nexport default SgdsAppnav;\n"],"names":["NavElement","HasSlotController","html","classMap","nothing","appnavStyle","__decorate","provide","AppnavBreakpointContext","state","AppnavExpandedContext","property"],"mappings":"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"}
@@ -1,184 +0,0 @@
1
- 'use client';
2
- import { __decorate } from 'tslib';
3
- import { provide } from '@lit/context';
4
- import { html, nothing } from 'lit';
5
- import { state, property } from 'lit/decorators.js';
6
- import { classMap } from 'lit/directives/class-map.js';
7
- import NavElement from '../../base/nav-element.js';
8
- import { HasSlotController } from '../../utils/slot.js';
9
- import { AppnavBreakpointContext, AppnavExpandedContext } from './appnav-context.js';
10
- import css_248z from './appnav.js';
11
-
12
- /**
13
- * @summary `SgdsAppnav` is a application navigation bar for operational apps. Accepts icon-buttons and profile in a fluid layout with collapse/expand behavior.
14
- *
15
- * @storyOrder 1
16
- *
17
- * @event sgds-show - Emitted on show. Only for collapsed menu.
18
- * @event sgds-after-show - Emitted on show after animation has completed. Only for collapsed menu.
19
- * @event sgds-hide - Emitted on hide. Only for collapsed menu.
20
- * @event sgds-after-hide - Emitted on hide after animation has completed. Only for collapsed menu.
21
- *
22
- * @slot default - Elements in this slot collapse into the mobile menu as text items. Accepts sgds-icon-button and other elements. Uses ariaLabel as menu item text.
23
- * @slot start - Elements in this slot will be positioned to the left of the brand.
24
- * @slot brand - Brand slot of SgdsAppnav. Pass in brand logo img here
25
- * @slot profile - Profile slot. sgds-appnav-profile goes here. Positioned to the right of the toggler.
26
- *
27
- */
28
- class SgdsAppnav extends NavElement {
29
- constructor() {
30
- super(...arguments);
31
- this._breakpointReached = false;
32
- this._expanded = false;
33
- /** Sets the visual tone of the navigation bar */
34
- this.tone = "brand";
35
- /** Used only for SSR to indicate the presence of the `start` slot. */
36
- this.hasStartSlot = false;
37
- this.hasSlotController = new HasSlotController(this, "start");
38
- /** @internal Whether the default slot has assigned elements */
39
- this._hasDefaultSlotItems = false;
40
- /** @internal Whether the profile slot has assigned elements */
41
- this._hasProfileSlotItems = false;
42
- /** @internal Stored default slot items for mobile menu rendering */
43
- this._defaultSlotItems = [];
44
- }
45
- updated() {
46
- if (!this.hasStartSlot)
47
- this.hasStartSlot = this.hasSlotController.test("start");
48
- this._expanded = this.expanded;
49
- }
50
- _onBreakpointReached(reached) {
51
- this._breakpointReached = reached;
52
- }
53
- _isBreakpointReached() {
54
- return this._breakpointReached;
55
- }
56
- _handleTogglerKeydown(e) {
57
- var _a;
58
- if (e.key === "Tab" && !e.shiftKey && this.expanded) {
59
- e.preventDefault();
60
- const firstItem = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(".appnav-menu-item");
61
- firstItem === null || firstItem === void 0 ? void 0 : firstItem.focus();
62
- }
63
- }
64
- _handleDefaultSlotChange(e) {
65
- const childElements = e.target.assignedElements({ flatten: true });
66
- this._hasDefaultSlotItems = childElements.length > 0;
67
- this._defaultSlotItems = childElements
68
- .filter(el => typeof el.tagName !== "undefined")
69
- .map(el => {
70
- var _a;
71
- return ({
72
- label: el.getAttribute("ariaLabel") || el.getAttribute("aria-label") || ((_a = el.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || "",
73
- element: el
74
- });
75
- });
76
- childElements.forEach(el => {
77
- el.setAttribute("expand", this.expand);
78
- });
79
- }
80
- _handleMobileItemClick(item) {
81
- item.element.click();
82
- this.hide();
83
- }
84
- _renderAppnavToggler() {
85
- return html `<sgds-icon-button
86
- name="three-dots-vertical"
87
- variant="ghost"
88
- size="sm"
89
- tone="fixed-light"
90
- class="navbar-toggler"
91
- @click=${this._handleSummaryClick}
92
- @keydown=${this._handleTogglerKeydown}
93
- aria-controls="${this.collapseId}"
94
- aria-expanded="${this.expanded}"
95
- .ariaLabel=${"Toggle navigation"}
96
- ></sgds-icon-button>`;
97
- }
98
- _handleProfileSlotChange(e) {
99
- const childElements = e.target.assignedElements({ flatten: true });
100
- this._hasProfileSlotItems = childElements.length > 0;
101
- childElements.forEach(el => {
102
- el.setAttribute("expand", this.expand);
103
- el.setAttribute("tone", this.tone);
104
- });
105
- }
106
- render() {
107
- this.breakpointReached =
108
- window.innerWidth <
109
- (this.expand === "always"
110
- ? -1
111
- : this.expand === "never"
112
- ? Infinity
113
- : { sm: 512, md: 768, lg: 1024, xl: 1280, xxl: 1440 }[this.expand]);
114
- return html `
115
- <nav>
116
- <div class="navbar ${this._expandClass()}">
117
- <slot name="start" class=${classMap({ "slot-empty": !this.hasStartSlot })}></slot>
118
- <a class="navbar-brand" href=${this.brandHref} aria-label="brand-link">
119
- <slot name="brand"></slot>
120
- </a>
121
- <div class="navbar-body navbar-collapse" id=${this.collapseId}>
122
- <div class="navbar-nav navbar-nav-scroll">
123
- <slot
124
- class=${classMap({ "slot-desktop-only": this.breakpointReached })}
125
- @slotchange=${this._handleDefaultSlotChange}
126
- ></slot>
127
- ${this.breakpointReached
128
- ? this._defaultSlotItems.map(item => html `<a
129
- class="appnav-menu-item"
130
- role="button"
131
- tabindex="0"
132
- @click=${() => this._handleMobileItemClick(item)}
133
- @keydown=${(e) => {
134
- if (e.key === "Enter" || e.key === " ") {
135
- e.preventDefault();
136
- this._handleMobileItemClick(item);
137
- }
138
- }}
139
- >${item.label}</a
140
- >`)
141
- : nothing}
142
- </div>
143
- </div>
144
- <div
145
- class="navbar-end ${this._hasProfileSlotItems || (this._hasDefaultSlotItems && this.breakpointReached)
146
- ? ""
147
- : "slot-empty"}"
148
- >
149
- ${this._hasDefaultSlotItems && this.breakpointReached ? this._renderAppnavToggler() : nothing}
150
- <slot name="profile" @slotchange=${this._handleProfileSlotChange}></slot>
151
- </div>
152
- </div>
153
- </nav>
154
- `;
155
- }
156
- }
157
- SgdsAppnav.styles = [...NavElement.styles, css_248z];
158
- __decorate([
159
- provide({ context: AppnavBreakpointContext }),
160
- state()
161
- ], SgdsAppnav.prototype, "_breakpointReached", void 0);
162
- __decorate([
163
- provide({ context: AppnavExpandedContext }),
164
- state()
165
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
166
- ], SgdsAppnav.prototype, "_expanded", void 0);
167
- __decorate([
168
- property({ type: String, reflect: true })
169
- ], SgdsAppnav.prototype, "tone", void 0);
170
- __decorate([
171
- property({ type: Boolean })
172
- ], SgdsAppnav.prototype, "hasStartSlot", void 0);
173
- __decorate([
174
- state()
175
- ], SgdsAppnav.prototype, "_hasDefaultSlotItems", void 0);
176
- __decorate([
177
- state()
178
- ], SgdsAppnav.prototype, "_hasProfileSlotItems", void 0);
179
- __decorate([
180
- state()
181
- ], SgdsAppnav.prototype, "_defaultSlotItems", void 0);
182
-
183
- export { SgdsAppnav, SgdsAppnav as default };
184
- //# sourceMappingURL=sgds-appnav.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sgds-appnav.js","sources":["../../../../src/components/Appnav/sgds-appnav.ts"],"sourcesContent":["import { provide } from \"@lit/context\";\nimport { html, nothing } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport NavElement from \"../../base/nav-element\";\nimport { HasSlotController } from \"../../utils/slot\";\nimport { AppnavBreakpointContext, AppnavExpandedContext } from \"./appnav-context\";\nimport appnavStyle from \"./appnav.css\";\n\nexport type AppnavTone = \"brand\" | \"gradient-1\" | \"gradient-2\" | \"gradient-3\" | \"gradient-4\";\n\ninterface DefaultSlotItem {\n label: string;\n element: HTMLElement;\n}\n\n/**\n * @summary `SgdsAppnav` is a application navigation bar for operational apps. Accepts icon-buttons and profile in a fluid layout with collapse/expand behavior.\n *\n * @storyOrder 1\n *\n * @event sgds-show - Emitted on show. Only for collapsed menu.\n * @event sgds-after-show - Emitted on show after animation has completed. Only for collapsed menu.\n * @event sgds-hide - Emitted on hide. Only for collapsed menu.\n * @event sgds-after-hide - Emitted on hide after animation has completed. Only for collapsed menu.\n *\n * @slot default - Elements in this slot collapse into the mobile menu as text items. Accepts sgds-icon-button and other elements. Uses ariaLabel as menu item text.\n * @slot start - Elements in this slot will be positioned to the left of the brand.\n * @slot brand - Brand slot of SgdsAppnav. Pass in brand logo img here\n * @slot profile - Profile slot. sgds-appnav-profile goes here. Positioned to the right of the toggler.\n *\n */\nexport class SgdsAppnav extends NavElement {\n static styles = [...NavElement.styles, appnavStyle];\n\n @provide({ context: AppnavBreakpointContext })\n @state()\n private _breakpointReached = false;\n\n @provide({ context: AppnavExpandedContext })\n @state()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private _expanded = false;\n\n /** Sets the visual tone of the navigation bar */\n @property({ type: String, reflect: true })\n tone: AppnavTone = \"brand\";\n\n /** Used only for SSR to indicate the presence of the `start` slot. */\n @property({ type: Boolean }) hasStartSlot = false;\n\n private readonly hasSlotController = new HasSlotController(this, \"start\");\n\n /** @internal Whether the default slot has assigned elements */\n @state()\n private _hasDefaultSlotItems = false;\n\n /** @internal Whether the profile slot has assigned elements */\n @state()\n private _hasProfileSlotItems = false;\n\n /** @internal Stored default slot items for mobile menu rendering */\n @state()\n private _defaultSlotItems: DefaultSlotItem[] = [];\n\n updated() {\n if (!this.hasStartSlot) this.hasStartSlot = this.hasSlotController.test(\"start\");\n this._expanded = this.expanded;\n }\n\n protected _onBreakpointReached(reached: boolean): void {\n this._breakpointReached = reached;\n }\n\n protected _isBreakpointReached(): boolean {\n return this._breakpointReached;\n }\n\n private _handleTogglerKeydown(e: KeyboardEvent) {\n if (e.key === \"Tab\" && !e.shiftKey && this.expanded) {\n e.preventDefault();\n const firstItem = this.shadowRoot?.querySelector(\".appnav-menu-item\") as HTMLElement | null;\n firstItem?.focus();\n }\n }\n\n private _handleDefaultSlotChange(e: Event) {\n const childElements = (e.target as HTMLSlotElement).assignedElements({ flatten: true }) as HTMLElement[];\n this._hasDefaultSlotItems = childElements.length > 0;\n this._defaultSlotItems = childElements\n .filter(el => typeof el.tagName !== \"undefined\")\n .map(el => ({\n label: el.getAttribute(\"ariaLabel\") || el.getAttribute(\"aria-label\") || el.textContent?.trim() || \"\",\n element: el\n }));\n childElements.forEach(el => {\n el.setAttribute(\"expand\", this.expand);\n });\n }\n\n private _handleMobileItemClick(item: DefaultSlotItem) {\n item.element.click();\n this.hide();\n }\n\n private _renderAppnavToggler() {\n return html`<sgds-icon-button\n name=\"three-dots-vertical\"\n variant=\"ghost\"\n size=\"sm\"\n tone=\"fixed-light\"\n class=\"navbar-toggler\"\n @click=${this._handleSummaryClick}\n @keydown=${this._handleTogglerKeydown}\n aria-controls=\"${this.collapseId}\"\n aria-expanded=\"${this.expanded}\"\n .ariaLabel=${\"Toggle navigation\"}\n ></sgds-icon-button>`;\n }\n\n private _handleProfileSlotChange(e: Event) {\n const childElements = (e.target as HTMLSlotElement).assignedElements({ flatten: true });\n this._hasProfileSlotItems = childElements.length > 0;\n childElements.forEach(el => {\n el.setAttribute(\"expand\", this.expand);\n el.setAttribute(\"tone\", this.tone);\n });\n }\n\n render() {\n this.breakpointReached =\n window.innerWidth <\n (this.expand === \"always\"\n ? -1\n : this.expand === \"never\"\n ? Infinity\n : { sm: 512, md: 768, lg: 1024, xl: 1280, xxl: 1440 }[this.expand]);\n\n return html`\n <nav>\n <div class=\"navbar ${this._expandClass()}\">\n <slot name=\"start\" class=${classMap({ \"slot-empty\": !this.hasStartSlot })}></slot>\n <a class=\"navbar-brand\" href=${this.brandHref} aria-label=\"brand-link\">\n <slot name=\"brand\"></slot>\n </a>\n <div class=\"navbar-body navbar-collapse\" id=${this.collapseId}>\n <div class=\"navbar-nav navbar-nav-scroll\">\n <slot\n class=${classMap({ \"slot-desktop-only\": this.breakpointReached })}\n @slotchange=${this._handleDefaultSlotChange}\n ></slot>\n ${this.breakpointReached\n ? this._defaultSlotItems.map(\n item => html`<a\n class=\"appnav-menu-item\"\n role=\"button\"\n tabindex=\"0\"\n @click=${() => this._handleMobileItemClick(item)}\n @keydown=${(e: KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n this._handleMobileItemClick(item);\n }\n }}\n >${item.label}</a\n >`\n )\n : nothing}\n </div>\n </div>\n <div\n class=\"navbar-end ${this._hasProfileSlotItems || (this._hasDefaultSlotItems && this.breakpointReached)\n ? \"\"\n : \"slot-empty\"}\"\n >\n ${this._hasDefaultSlotItems && this.breakpointReached ? this._renderAppnavToggler() : nothing}\n <slot name=\"profile\" @slotchange=${this._handleProfileSlotChange}></slot>\n </div>\n </div>\n </nav>\n `;\n }\n}\n\nexport default SgdsAppnav;\n"],"names":["appnavStyle"],"mappings":";;;;;;;;;;;AAgBA;;;;;;;;;;;;;;;AAeG;AACG,MAAO,UAAW,SAAQ,UAAU,CAAA;AAA1C,IAAA,WAAA,GAAA;;QAKU,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAK3B,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;;QAI1B,IAAI,CAAA,IAAA,GAAe,OAAO,CAAC;;QAGE,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QAEjC,IAAiB,CAAA,iBAAA,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;QAIlE,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;;QAI7B,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;;QAI7B,IAAiB,CAAA,iBAAA,GAAsB,EAAE,CAAC;KAuHnD;IArHC,OAAO,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;KAChC;AAES,IAAA,oBAAoB,CAAC,OAAgB,EAAA;AAC7C,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;KACnC;IAES,oBAAoB,GAAA;QAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;AAEO,IAAA,qBAAqB,CAAC,CAAgB,EAAA;;AAC5C,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC,mBAAmB,CAAuB,CAAC;AAC5F,YAAA,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,KAAK,EAAE,CAAC;SACpB;KACF;AAEO,IAAA,wBAAwB,CAAC,CAAQ,EAAA;AACvC,QAAA,MAAM,aAAa,GAAI,CAAC,CAAC,MAA0B,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAkB,CAAC;QACzG,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,iBAAiB,GAAG,aAAa;aACnC,MAAM,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,OAAO,KAAK,WAAW,CAAC;aAC/C,GAAG,CAAC,EAAE,IAAG;;AAAC,YAAA,QAAC;gBACV,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,KAAI,CAAA,EAAA,GAAA,EAAE,CAAC,WAAW,0CAAE,IAAI,EAAE,CAAA,IAAI,EAAE;AACpG,gBAAA,OAAO,EAAE,EAAE;AACZ,aAAA,EAAC;AAAA,SAAA,CAAC,CAAC;AACN,QAAA,aAAa,CAAC,OAAO,CAAC,EAAE,IAAG;YACzB,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,sBAAsB,CAAC,IAAqB,EAAA;AAClD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IAEO,oBAAoB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAA,CAAA;;;;;;AAMA,aAAA,EAAA,IAAI,CAAC,mBAAmB,CAAA;AACtB,eAAA,EAAA,IAAI,CAAC,qBAAqB,CAAA;AACpB,qBAAA,EAAA,IAAI,CAAC,UAAU,CAAA;AACf,qBAAA,EAAA,IAAI,CAAC,QAAQ,CAAA;mBACjB,mBAAmB,CAAA;yBACb,CAAC;KACvB;AAEO,IAAA,wBAAwB,CAAC,CAAQ,EAAA;AACvC,QAAA,MAAM,aAAa,GAAI,CAAC,CAAC,MAA0B,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AACrD,QAAA,aAAa,CAAC,OAAO,CAAC,EAAE,IAAG;YACzB,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;KACJ;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,iBAAiB;AACpB,YAAA,MAAM,CAAC,UAAU;AACjB,iBAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;sBACrB,CAAC,CAAC;AACJ,sBAAE,IAAI,CAAC,MAAM,KAAK,OAAO;AACzB,0BAAE,QAAQ;AACV,0BAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAExE,QAAA,OAAO,IAAI,CAAA,CAAA;;6BAEc,IAAI,CAAC,YAAY,EAAE,CAAA;qCACX,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;AAC1C,uCAAA,EAAA,IAAI,CAAC,SAAS,CAAA;;;AAGC,sDAAA,EAAA,IAAI,CAAC,UAAU,CAAA;;;wBAG/C,QAAQ,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;AACnD,4BAAA,EAAA,IAAI,CAAC,wBAAwB,CAAA;;AAE3C,cAAA,EAAA,IAAI,CAAC,iBAAiB;AACtB,cAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACxB,IAAI,IAAI,IAAI,CAAA,CAAA;;;;AAID,6BAAA,EAAA,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAA;iCACrC,CAAC,CAAgB,KAAI;AAC9B,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;oBACtC,CAAC,CAAC,cAAc,EAAE,CAAC;AACnB,oBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;iBACnC;aACF,CAAA;AACE,uBAAA,EAAA,IAAI,CAAC,KAAK,CAAA;sBACb,CACH;AACH,cAAE,OAAO,CAAA;;;;gCAIO,IAAI,CAAC,oBAAoB,KAAK,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,iBAAiB,CAAC;AACpG,cAAE,EAAE;AACJ,cAAE,YAAY,CAAA;;AAEd,YAAA,EAAA,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,OAAO,CAAA;AAC1D,6CAAA,EAAA,IAAI,CAAC,wBAAwB,CAAA;;;;KAIvE,CAAC;KACH;;AApJM,UAAM,CAAA,MAAA,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAEA,QAAW,CAArC,CAAuC;AAI5C,UAAA,CAAA;AAFP,IAAA,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAC7C,IAAA,KAAK,EAAE;AAC2B,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAK3B,UAAA,CAAA;AAHP,IAAA,OAAO,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAC3C,IAAA,KAAK,EAAE;;AAEkB,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI1B,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACf,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,UAAA,CAAA;AAA5B,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAAsB,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAM1C,UAAA,CAAA;AADP,IAAA,KAAK,EAAE;AAC6B,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI7B,UAAA,CAAA;AADP,IAAA,KAAK,EAAE;AAC6B,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI7B,UAAA,CAAA;AADP,IAAA,KAAK,EAAE;AAC0C,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
@@ -1,35 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
- var tslib = require('tslib');
7
- var context = require('@lit/context');
8
- var decorators_js = require('lit/decorators.js');
9
- var navProfileElement = require('../../base/nav-profile-element.cjs.js');
10
- var mainnavContext = require('./mainnav-context.cjs.js');
11
-
12
- /**
13
- * @summary A profile component for the mainnav that shows a full dropdown in desktop and handles its own mobile menu.
14
- * In desktop: renders avatar + label + secondaryText with a dropdown.
15
- * In mobile: renders the avatar as a toggler that opens a self-contained mobile panel with profile items.
16
- * When no dropdown items are slotted, renders as a non-interactive read-only element (no caret, no pointer cursor, not focusable).
17
- * When present, it disables the mainnav's default hamburger toggler.
18
- *
19
- * @slot avatar - Avatar element displayed in both desktop (before label) and mobile (as toggler)
20
- * @slot default - Profile menu items (sgds-dropdown-item elements). When empty, the component becomes read-only.
21
- */
22
- class SgdsMainnavProfile extends navProfileElement["default"] {
23
- constructor() {
24
- super(...arguments);
25
- this._breakpointReached = true;
26
- }
27
- }
28
- tslib.__decorate([
29
- context.consume({ context: mainnavContext.MainnavBreakpointContext, subscribe: true }),
30
- decorators_js.state()
31
- ], SgdsMainnavProfile.prototype, "_breakpointReached", void 0);
32
-
33
- exports.SgdsMainnavProfile = SgdsMainnavProfile;
34
- exports["default"] = SgdsMainnavProfile;
35
- //# sourceMappingURL=sgds-mainnav-profile.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sgds-mainnav-profile.cjs.js","sources":["../../../../src/components/Mainnav/sgds-mainnav-profile.ts"],"sourcesContent":["import { consume } from \"@lit/context\";\nimport { state } from \"lit/decorators.js\";\nimport NavProfileElement from \"../../base/nav-profile-element\";\nimport { MainnavBreakpointContext } from \"./mainnav-context\";\n\n/**\n * @summary A profile component for the mainnav that shows a full dropdown in desktop and handles its own mobile menu.\n * In desktop: renders avatar + label + secondaryText with a dropdown.\n * In mobile: renders the avatar as a toggler that opens a self-contained mobile panel with profile items.\n * When no dropdown items are slotted, renders as a non-interactive read-only element (no caret, no pointer cursor, not focusable).\n * When present, it disables the mainnav's default hamburger toggler.\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 class SgdsMainnavProfile extends NavProfileElement {\n @consume({ context: MainnavBreakpointContext, subscribe: true })\n @state()\n protected override _breakpointReached = true;\n}\n\nexport default SgdsMainnavProfile;\n"],"names":["NavProfileElement","__decorate","consume","MainnavBreakpointContext","state"],"mappings":";;;;;;;;;;;AAKA;;;;;;;;;AASG;AACG,MAAO,kBAAmB,SAAQA,4BAAiB,CAAA;AAAzD,IAAA,WAAA,GAAA;;QAGqB,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;KAC9C;AAAA,CAAA;AADoBC,gBAAA,CAAA;IAFlBC,eAAO,CAAC,EAAE,OAAO,EAAEC,uCAAwB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC/D,IAAAC,mBAAK,EAAE;AACqC,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,CAAA;;;;;"}
@@ -1,30 +0,0 @@
1
- 'use client';
2
- import { __decorate } from 'tslib';
3
- import { consume } from '@lit/context';
4
- import { state } from 'lit/decorators.js';
5
- import NavProfileElement from '../../base/nav-profile-element.js';
6
- import { MainnavBreakpointContext } from './mainnav-context.js';
7
-
8
- /**
9
- * @summary A profile component for the mainnav that shows a full dropdown in desktop and handles its own mobile menu.
10
- * In desktop: renders avatar + label + secondaryText with a dropdown.
11
- * In mobile: renders the avatar as a toggler that opens a self-contained mobile panel with profile items.
12
- * When no dropdown items are slotted, renders as a non-interactive read-only element (no caret, no pointer cursor, not focusable).
13
- * When present, it disables the mainnav's default hamburger toggler.
14
- *
15
- * @slot avatar - Avatar element displayed in both desktop (before label) and mobile (as toggler)
16
- * @slot default - Profile menu items (sgds-dropdown-item elements). When empty, the component becomes read-only.
17
- */
18
- class SgdsMainnavProfile extends NavProfileElement {
19
- constructor() {
20
- super(...arguments);
21
- this._breakpointReached = true;
22
- }
23
- }
24
- __decorate([
25
- consume({ context: MainnavBreakpointContext, subscribe: true }),
26
- state()
27
- ], SgdsMainnavProfile.prototype, "_breakpointReached", void 0);
28
-
29
- export { SgdsMainnavProfile, SgdsMainnavProfile as default };
30
- //# sourceMappingURL=sgds-mainnav-profile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sgds-mainnav-profile.js","sources":["../../../../src/components/Mainnav/sgds-mainnav-profile.ts"],"sourcesContent":["import { consume } from \"@lit/context\";\nimport { state } from \"lit/decorators.js\";\nimport NavProfileElement from \"../../base/nav-profile-element\";\nimport { MainnavBreakpointContext } from \"./mainnav-context\";\n\n/**\n * @summary A profile component for the mainnav that shows a full dropdown in desktop and handles its own mobile menu.\n * In desktop: renders avatar + label + secondaryText with a dropdown.\n * In mobile: renders the avatar as a toggler that opens a self-contained mobile panel with profile items.\n * When no dropdown items are slotted, renders as a non-interactive read-only element (no caret, no pointer cursor, not focusable).\n * When present, it disables the mainnav's default hamburger toggler.\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 class SgdsMainnavProfile extends NavProfileElement {\n @consume({ context: MainnavBreakpointContext, subscribe: true })\n @state()\n protected override _breakpointReached = true;\n}\n\nexport default SgdsMainnavProfile;\n"],"names":[],"mappings":";;;;;;;AAKA;;;;;;;;;AASG;AACG,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AAAzD,IAAA,WAAA,GAAA;;QAGqB,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;KAC9C;AAAA,CAAA;AADoB,UAAA,CAAA;IAFlB,OAAO,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC/D,IAAA,KAAK,EAAE;AACqC,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
@@ -1,40 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
- var React = require('react');
7
- var react = require('@lit/react');
8
- var sgdsMainnavProfile = require('../components/Mainnav/sgds-mainnav-profile.cjs.js');
9
- var ceRegistry = require('../utils/ce-registry.cjs.js');
10
-
11
- function _interopNamespace(e) {
12
- if (e && e.__esModule) return e;
13
- var n = Object.create(null);
14
- if (e) {
15
- Object.keys(e).forEach(function (k) {
16
- if (k !== 'default') {
17
- var d = Object.getOwnPropertyDescriptor(e, k);
18
- Object.defineProperty(n, k, d.get ? d : {
19
- enumerable: true,
20
- get: function () { return e[k]; }
21
- });
22
- }
23
- });
24
- }
25
- n["default"] = e;
26
- return Object.freeze(n);
27
- }
28
-
29
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
-
31
- ceRegistry.register("sgds-mainnav-profile", sgdsMainnavProfile.SgdsMainnavProfile);
32
- var index = react.createComponent({
33
- react: React__namespace,
34
- tagName: "sgds-mainnav-profile",
35
- elementClass: sgdsMainnavProfile.SgdsMainnavProfile,
36
- events: {}
37
- });
38
-
39
- exports["default"] = index;
40
- //# sourceMappingURL=index.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../src/react/mainnav-profile/index.ts"],"sourcesContent":["import * as React from \"react\";\nimport { createComponent } from \"@lit/react\";\nimport Component from \"../../components/Mainnav/sgds-mainnav-profile\";\nimport { register } from \"../../utils/ce-registry\";\n\nregister(\"sgds-mainnav-profile\", Component);\n\nexport default createComponent({\n react: React,\n tagName: \"sgds-mainnav-profile\",\n elementClass: Component,\n events: {}\n});\n"],"names":["register","Component","createComponent","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKAA,mBAAQ,CAAC,sBAAsB,EAAEC,qCAAS,CAAC,CAAC;AAE5C,YAAeC,qBAAe,CAAC;AAC7B,IAAA,KAAK,EAAEC,gBAAK;AACZ,IAAA,OAAO,EAAE,sBAAsB;AAC/B,IAAA,YAAY,EAAEF,qCAAS;AACvB,IAAA,MAAM,EAAE,EAAE;AACX,CAAA,CAAC;;;;"}
@@ -1,4 +0,0 @@
1
- import type { SgdsMainnavProfileProps } from '../../types/react';
2
- import * as React from 'react';
3
- declare const _default: React.ForwardRefExoticComponent<React.PropsWithChildren<SgdsMainnavProfileProps> & React.RefAttributes<HTMLElement>>;
4
- export default _default;
@@ -1,16 +0,0 @@
1
- 'use client';
2
- import * as React from 'react';
3
- import { createComponent } from '@lit/react';
4
- import { SgdsMainnavProfile } from '../components/Mainnav/sgds-mainnav-profile.js';
5
- import { register } from '../utils/ce-registry.js';
6
-
7
- register("sgds-mainnav-profile", SgdsMainnavProfile);
8
- var index = createComponent({
9
- react: React,
10
- tagName: "sgds-mainnav-profile",
11
- elementClass: SgdsMainnavProfile,
12
- events: {}
13
- });
14
-
15
- export { index as default };
16
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/react/mainnav-profile/index.ts"],"sourcesContent":["import * as React from \"react\";\nimport { createComponent } from \"@lit/react\";\nimport Component from \"../../components/Mainnav/sgds-mainnav-profile\";\nimport { register } from \"../../utils/ce-registry\";\n\nregister(\"sgds-mainnav-profile\", Component);\n\nexport default createComponent({\n react: React,\n tagName: \"sgds-mainnav-profile\",\n elementClass: Component,\n events: {}\n});\n"],"names":["Component"],"mappings":";;;;;;AAKA,QAAQ,CAAC,sBAAsB,EAAEA,kBAAS,CAAC,CAAC;AAE5C,YAAe,eAAe,CAAC;AAC7B,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,OAAO,EAAE,sBAAsB;AAC/B,IAAA,YAAY,EAAEA,kBAAS;AACvB,IAAA,MAAM,EAAE,EAAE;AACX,CAAA,CAAC;;;;"}