@govtechsg/sgds-web-component 3.26.1 → 3.27.0-rc.1

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 (239) hide show
  1. package/base/dropdown-list-element.js +9 -2
  2. package/base/dropdown-list-element.js.map +1 -1
  3. package/base/nav-element.d.ts +64 -0
  4. package/base/nav-element.js +263 -0
  5. package/base/nav-element.js.map +1 -0
  6. package/base/nav-profile-element.d.ts +47 -0
  7. package/base/nav-profile-element.js +191 -0
  8. package/base/nav-profile-element.js.map +1 -0
  9. package/base/nav-profile.js +6 -0
  10. package/base/nav-profile.js.map +1 -0
  11. package/components/Appnav/appnav-context.d.ts +6 -0
  12. package/components/Appnav/appnav-context.js +7 -0
  13. package/components/Appnav/appnav-context.js.map +1 -0
  14. package/components/Appnav/appnav.js +6 -0
  15. package/components/Appnav/appnav.js.map +1 -0
  16. package/components/Appnav/index.d.ts +9 -0
  17. package/components/Appnav/index.js +8 -0
  18. package/components/Appnav/index.js.map +1 -0
  19. package/components/Appnav/index.umd.min.js +2542 -0
  20. package/components/Appnav/index.umd.min.js.map +1 -0
  21. package/components/Appnav/sgds-appnav-profile.d.ts +17 -0
  22. package/components/Appnav/sgds-appnav-profile.js +31 -0
  23. package/components/Appnav/sgds-appnav-profile.js.map +1 -0
  24. package/components/Appnav/sgds-appnav.d.ts +44 -0
  25. package/components/Appnav/sgds-appnav.js +183 -0
  26. package/components/Appnav/sgds-appnav.js.map +1 -0
  27. package/components/Breadcrumb/index.umd.min.js +25 -25
  28. package/components/Breadcrumb/index.umd.min.js.map +1 -1
  29. package/components/Checkbox/index.umd.min.js +233 -233
  30. package/components/Checkbox/index.umd.min.js.map +1 -1
  31. package/components/Checkbox/sgds-checkbox.d.ts +1 -0
  32. package/components/Checkbox/sgds-checkbox.js +6 -1
  33. package/components/Checkbox/sgds-checkbox.js.map +1 -1
  34. package/components/ComboBox/index.umd.min.js +254 -254
  35. package/components/ComboBox/index.umd.min.js.map +1 -1
  36. package/components/DataTable/data-table.js +6 -0
  37. package/components/DataTable/data-table.js.map +1 -0
  38. package/components/DataTable/index.d.ts +12 -0
  39. package/components/DataTable/index.js +11 -0
  40. package/components/DataTable/index.js.map +1 -0
  41. package/components/DataTable/index.umd.min.js +2649 -0
  42. package/components/DataTable/index.umd.min.js.map +1 -0
  43. package/components/DataTable/sgds-data-table-cell.d.ts +15 -0
  44. package/components/DataTable/sgds-data-table-cell.js +32 -0
  45. package/components/DataTable/sgds-data-table-cell.js.map +1 -0
  46. package/components/DataTable/sgds-data-table-head.d.ts +28 -0
  47. package/components/DataTable/sgds-data-table-head.js +69 -0
  48. package/components/DataTable/sgds-data-table-head.js.map +1 -0
  49. package/components/DataTable/sgds-data-table-row.d.ts +76 -0
  50. package/components/DataTable/sgds-data-table-row.js +333 -0
  51. package/components/DataTable/sgds-data-table-row.js.map +1 -0
  52. package/components/DataTable/sgds-data-table.d.ts +84 -0
  53. package/components/DataTable/sgds-data-table.js +438 -0
  54. package/components/DataTable/sgds-data-table.js.map +1 -0
  55. package/components/Datepicker/index.umd.min.js +86 -86
  56. package/components/Datepicker/index.umd.min.js.map +1 -1
  57. package/components/Dropdown/dropdown-item.js +1 -1
  58. package/components/Dropdown/index.umd.min.js +5 -5
  59. package/components/Dropdown/index.umd.min.js.map +1 -1
  60. package/components/Dropdown/sgds-dropdown-item.d.ts +2 -0
  61. package/components/Dropdown/sgds-dropdown-item.js +8 -2
  62. package/components/Dropdown/sgds-dropdown-item.js.map +1 -1
  63. package/components/Input/index.umd.min.js +2 -2
  64. package/components/Input/index.umd.min.js.map +1 -1
  65. package/components/Input/input.js +1 -1
  66. package/components/Mainnav/index.d.ts +2 -0
  67. package/components/Mainnav/index.js +2 -0
  68. package/components/Mainnav/index.js.map +1 -1
  69. package/components/Mainnav/index.umd.min.js +339 -286
  70. package/components/Mainnav/index.umd.min.js.map +1 -1
  71. package/components/Mainnav/mainnav-dropdown.js +1 -1
  72. package/components/Mainnav/mainnav-item.js +1 -1
  73. package/components/Mainnav/mainnav.js +1 -1
  74. package/components/Mainnav/sgds-mainnav-profile.d.ts +15 -0
  75. package/components/Mainnav/sgds-mainnav-profile.js +29 -0
  76. package/components/Mainnav/sgds-mainnav-profile.js.map +1 -0
  77. package/components/Mainnav/sgds-mainnav.d.ts +8 -51
  78. package/components/Mainnav/sgds-mainnav.js +40 -238
  79. package/components/Mainnav/sgds-mainnav.js.map +1 -1
  80. package/components/OverflowMenu/index.umd.min.js +25 -25
  81. package/components/OverflowMenu/index.umd.min.js.map +1 -1
  82. package/components/QuantityToggle/index.umd.min.js +1 -1
  83. package/components/QuantityToggle/index.umd.min.js.map +1 -1
  84. package/components/Select/index.umd.min.js +1 -1
  85. package/components/Select/index.umd.min.js.map +1 -1
  86. package/components/Tab/index.umd.min.js +1 -1
  87. package/components/Tab/index.umd.min.js.map +1 -1
  88. package/components/Tab/tab-panel.js +1 -1
  89. package/components/Textarea/index.umd.min.js +1 -1
  90. package/components/index.d.ts +7 -0
  91. package/components/index.js +7 -0
  92. package/components/index.js.map +1 -1
  93. package/components/index.umd.min.js +851 -662
  94. package/components/index.umd.min.js.map +1 -1
  95. package/css/fouc.css +7 -0
  96. package/custom-elements.json +11304 -7831
  97. package/index.d.ts +2 -0
  98. package/index.js +2 -0
  99. package/index.js.map +1 -1
  100. package/index.umd.min.js +705 -511
  101. package/index.umd.min.js.map +1 -1
  102. package/package.json +1 -1
  103. package/react/appnav/index.cjs.js +45 -0
  104. package/react/appnav/index.cjs.js.map +1 -0
  105. package/react/appnav/index.d.ts +4 -0
  106. package/react/appnav/index.js +21 -0
  107. package/react/appnav/index.js.map +1 -0
  108. package/react/appnav-profile/index.cjs.js +40 -0
  109. package/react/appnav-profile/index.cjs.js.map +1 -0
  110. package/react/appnav-profile/index.d.ts +4 -0
  111. package/react/appnav-profile/index.js +16 -0
  112. package/react/appnav-profile/index.js.map +1 -0
  113. package/react/base/dropdown-list-element.cjs.js +9 -2
  114. package/react/base/dropdown-list-element.cjs.js.map +1 -1
  115. package/react/base/dropdown-list-element.js +9 -2
  116. package/react/base/dropdown-list-element.js.map +1 -1
  117. package/react/base/nav-element.cjs.js +268 -0
  118. package/react/base/nav-element.cjs.js.map +1 -0
  119. package/react/base/nav-element.js +264 -0
  120. package/react/base/nav-element.js.map +1 -0
  121. package/react/base/nav-profile-element.cjs.js +196 -0
  122. package/react/base/nav-profile-element.cjs.js.map +1 -0
  123. package/react/base/nav-profile-element.js +192 -0
  124. package/react/base/nav-profile-element.js.map +1 -0
  125. package/react/base/nav-profile.cjs.js +11 -0
  126. package/react/base/nav-profile.cjs.js.map +1 -0
  127. package/react/base/nav-profile.js +7 -0
  128. package/react/base/nav-profile.js.map +1 -0
  129. package/react/components/Appnav/appnav-context.cjs.js +13 -0
  130. package/react/components/Appnav/appnav-context.cjs.js.map +1 -0
  131. package/react/components/Appnav/appnav-context.js +8 -0
  132. package/react/components/Appnav/appnav-context.js.map +1 -0
  133. package/react/components/Appnav/appnav.cjs.js +11 -0
  134. package/react/components/Appnav/appnav.cjs.js.map +1 -0
  135. package/react/components/Appnav/appnav.js +7 -0
  136. package/react/components/Appnav/appnav.js.map +1 -0
  137. package/react/components/Appnav/sgds-appnav-profile.cjs.js +37 -0
  138. package/react/components/Appnav/sgds-appnav-profile.cjs.js.map +1 -0
  139. package/react/components/Appnav/sgds-appnav-profile.js +32 -0
  140. package/react/components/Appnav/sgds-appnav-profile.js.map +1 -0
  141. package/react/components/Appnav/sgds-appnav.cjs.js +189 -0
  142. package/react/components/Appnav/sgds-appnav.cjs.js.map +1 -0
  143. package/react/components/Appnav/sgds-appnav.js +184 -0
  144. package/react/components/Appnav/sgds-appnav.js.map +1 -0
  145. package/react/components/Checkbox/sgds-checkbox.cjs.js +6 -1
  146. package/react/components/Checkbox/sgds-checkbox.cjs.js.map +1 -1
  147. package/react/components/Checkbox/sgds-checkbox.js +6 -1
  148. package/react/components/Checkbox/sgds-checkbox.js.map +1 -1
  149. package/react/components/DataTable/data-table.cjs.js +11 -0
  150. package/react/components/DataTable/data-table.cjs.js.map +1 -0
  151. package/react/components/DataTable/data-table.js +7 -0
  152. package/react/components/DataTable/data-table.js.map +1 -0
  153. package/react/components/DataTable/sgds-data-table-cell.cjs.js +38 -0
  154. package/react/components/DataTable/sgds-data-table-cell.cjs.js.map +1 -0
  155. package/react/components/DataTable/sgds-data-table-cell.js +33 -0
  156. package/react/components/DataTable/sgds-data-table-cell.js.map +1 -0
  157. package/react/components/DataTable/sgds-data-table-head.cjs.js +75 -0
  158. package/react/components/DataTable/sgds-data-table-head.cjs.js.map +1 -0
  159. package/react/components/DataTable/sgds-data-table-head.js +70 -0
  160. package/react/components/DataTable/sgds-data-table-head.js.map +1 -0
  161. package/react/components/DataTable/sgds-data-table-row.cjs.js +339 -0
  162. package/react/components/DataTable/sgds-data-table-row.cjs.js.map +1 -0
  163. package/react/components/DataTable/sgds-data-table-row.js +334 -0
  164. package/react/components/DataTable/sgds-data-table-row.js.map +1 -0
  165. package/react/components/DataTable/sgds-data-table.cjs.js +444 -0
  166. package/react/components/DataTable/sgds-data-table.cjs.js.map +1 -0
  167. package/react/components/DataTable/sgds-data-table.js +439 -0
  168. package/react/components/DataTable/sgds-data-table.js.map +1 -0
  169. package/react/components/Dropdown/dropdown-item.cjs.js +1 -1
  170. package/react/components/Dropdown/dropdown-item.js +1 -1
  171. package/react/components/Dropdown/sgds-dropdown-item.cjs.js +8 -2
  172. package/react/components/Dropdown/sgds-dropdown-item.cjs.js.map +1 -1
  173. package/react/components/Dropdown/sgds-dropdown-item.js +8 -2
  174. package/react/components/Dropdown/sgds-dropdown-item.js.map +1 -1
  175. package/react/components/Input/input.cjs.js +1 -1
  176. package/react/components/Input/input.js +1 -1
  177. package/react/components/Mainnav/mainnav-dropdown.cjs.js +1 -1
  178. package/react/components/Mainnav/mainnav-dropdown.js +1 -1
  179. package/react/components/Mainnav/mainnav-item.cjs.js +1 -1
  180. package/react/components/Mainnav/mainnav-item.js +1 -1
  181. package/react/components/Mainnav/mainnav.cjs.js +1 -1
  182. package/react/components/Mainnav/mainnav.js +1 -1
  183. package/react/components/Mainnav/sgds-mainnav-profile.cjs.js +35 -0
  184. package/react/components/Mainnav/sgds-mainnav-profile.cjs.js.map +1 -0
  185. package/react/components/Mainnav/sgds-mainnav-profile.js +30 -0
  186. package/react/components/Mainnav/sgds-mainnav-profile.js.map +1 -0
  187. package/react/components/Mainnav/sgds-mainnav.cjs.js +39 -237
  188. package/react/components/Mainnav/sgds-mainnav.cjs.js.map +1 -1
  189. package/react/components/Mainnav/sgds-mainnav.js +40 -238
  190. package/react/components/Mainnav/sgds-mainnav.js.map +1 -1
  191. package/react/components/Tab/tab-panel.cjs.js +1 -1
  192. package/react/components/Tab/tab-panel.js +1 -1
  193. package/react/data-table/index.cjs.js +44 -0
  194. package/react/data-table/index.cjs.js.map +1 -0
  195. package/react/data-table/index.d.ts +4 -0
  196. package/react/data-table/index.js +20 -0
  197. package/react/data-table/index.js.map +1 -0
  198. package/react/data-table-cell/index.cjs.js +40 -0
  199. package/react/data-table-cell/index.cjs.js.map +1 -0
  200. package/react/data-table-cell/index.d.ts +4 -0
  201. package/react/data-table-cell/index.js +16 -0
  202. package/react/data-table-cell/index.js.map +1 -0
  203. package/react/data-table-head/index.cjs.js +40 -0
  204. package/react/data-table-head/index.cjs.js.map +1 -0
  205. package/react/data-table-head/index.d.ts +4 -0
  206. package/react/data-table-head/index.js +16 -0
  207. package/react/data-table-head/index.js.map +1 -0
  208. package/react/data-table-row/index.cjs.js +45 -0
  209. package/react/data-table-row/index.cjs.js.map +1 -0
  210. package/react/data-table-row/index.d.ts +4 -0
  211. package/react/data-table-row/index.js +21 -0
  212. package/react/data-table-row/index.js.map +1 -0
  213. package/react/index.cjs.js +152 -138
  214. package/react/index.cjs.js.map +1 -1
  215. package/react/index.d.ts +7 -0
  216. package/react/index.js +7 -0
  217. package/react/index.js.map +1 -1
  218. package/react/mainnav-profile/index.cjs.js +40 -0
  219. package/react/mainnav-profile/index.cjs.js.map +1 -0
  220. package/react/mainnav-profile/index.d.ts +4 -0
  221. package/react/mainnav-profile/index.js +16 -0
  222. package/react/mainnav-profile/index.js.map +1 -0
  223. package/react/styles/form-text-control.cjs.js +1 -1
  224. package/react/styles/form-text-control.js +1 -1
  225. package/styles/form-text-control.js +1 -1
  226. package/themes/blue.css +11 -11
  227. package/themes/cyan.css +10 -10
  228. package/themes/gt/blue.css +11 -11
  229. package/themes/gt/cyan.css +10 -10
  230. package/themes/gt/magenta.css +11 -11
  231. package/themes/gt/pink.css +11 -11
  232. package/themes/gt/purple.css +11 -11
  233. package/themes/gt/red.css +11 -11
  234. package/themes/magenta.css +11 -11
  235. package/themes/pink.css +11 -11
  236. package/themes/purple.css +11 -11
  237. package/themes/red.css +11 -11
  238. package/themes/root.css +5 -0
  239. package/types/react.d.ts +146 -2
@@ -2,29 +2,13 @@
2
2
  import { __decorate } from 'tslib';
3
3
  import { provide } from '@lit/context';
4
4
  import { html } from 'lit';
5
- import { state, query, property, queryAssignedElements } from 'lit/decorators.js';
5
+ import { state, property, queryAssignedElements } from 'lit/decorators.js';
6
6
  import { classMap } from 'lit/directives/class-map.js';
7
- import SgdsElement from '../../base/sgds-element.js';
8
- import { stopAnimations, animateTo, shimKeyframesHeightAuto } from '../../utils/animate.js';
9
- import { setDefaultAnimation, getAnimation } from '../../utils/animation-registry.js';
10
- import { SM_BREAKPOINT, MD_BREAKPOINT, LG_BREAKPOINT, XL_BREAKPOINT, XXL_BREAKPOINT } from '../../utils/breakpoints.js';
11
- import { waitForEvent } from '../../utils/event.js';
12
- import genId from '../../utils/generateId.js';
13
- import { watch } from '../../utils/watch.js';
14
- import { SgdsIconButton } from '../IconButton/sgds-icon-button.js';
7
+ import NavElement from '../../base/nav-element.js';
8
+ import { HasSlotController } from '../../utils/slot.js';
15
9
  import { MainnavBreakpointContext, MainnavExpandedContext } from './mainnav-context.js';
16
10
  import css_248z from './mainnav.js';
17
- import { HasSlotController } from '../../utils/slot.js';
18
11
 
19
- const SIZES = {
20
- sm: SM_BREAKPOINT,
21
- md: MD_BREAKPOINT,
22
- lg: LG_BREAKPOINT,
23
- xl: XL_BREAKPOINT,
24
- xxl: XXL_BREAKPOINT,
25
- never: Infinity,
26
- always: -1
27
- };
28
12
  /**
29
13
  * @summary This component is the primary means that your users will use to navigate through your portal. It includes horizontal navigation and branding to identify your site.
30
14
  *
@@ -34,32 +18,23 @@ const SIZES = {
34
18
  * @event sgds-after-hide - Emitted on hide after animation has completed. Only for collapsed menu.
35
19
  *
36
20
  * @slot default - Default slot of SgdsMainnav. Pass in SgdsMainnavItem elements here.
21
+ * @slot start - Elements in this slot will be positioned to the left of the brand.
37
22
  * @slot end - Elements in this slot will be positioned to the right end of .navbar-nav. Elements in this slot will also be included in collapsed menu.
38
23
  * @slot brand - Brand slot of SgdsMainnav. Pass in brand logo img here
24
+ * @slot profile - Profile slot positioned at the far right in desktop. In mobile, moves into the collapsed menu as the first item.
39
25
  * @slot non-collapsible - Elements in this slot will not be collapsed
40
26
  *
41
27
  */
42
- class SgdsMainnav extends SgdsElement {
28
+ class SgdsMainnav extends NavElement {
43
29
  constructor() {
44
30
  super(...arguments);
45
31
  this._breakpointReached = false;
46
- /** Indicates if mobile menu is open or closed */
47
- this.expanded = false;
48
- /** Denotes the transition state of mobile mainnav menu opening */
49
- this.expanding = false;
32
+ this._expanded = false;
50
33
  /** Used only for SSR to indicate the presence of the `non-collapsible` slot. */
51
34
  this.hasNonCollapsibleSlot = false;
52
- /** The href link for brand logo */
53
- this.brandHref = "";
54
- this.collapseId = genId("mainnav", "collapse");
55
- /** The breakpoint, below which, the Navbar will collapse. When always the Navbar will always be expanded regardless of screen size. When never, the Navbar will always be collapsed */
56
- this.expand = "lg";
57
35
  /** When true, removes max-width constraint to allow content to stretch full screen width */
58
36
  this.fluid = false;
59
- /** @internal */
60
- this.breakpointReached = false;
61
37
  this.hasSlotController = new HasSlotController(this, "non-collapsible");
62
- this._handleMobileNavBound = this._handleMobileNav.bind(this);
63
38
  }
64
39
  /** @internal */
65
40
  get defaultSlotItems() {
@@ -69,146 +44,29 @@ class SgdsMainnav extends SgdsElement {
69
44
  get endSlotItems() {
70
45
  return [...(this.endNodes || [])].filter((node) => typeof node.tagName !== "undefined");
71
46
  }
72
- connectedCallback() {
73
- super.connectedCallback();
74
- this._handleResize();
75
- window.addEventListener("click", (event) => this._handleClickOutOfElement(event, this.body));
76
- window.addEventListener("resize", this._handleResize.bind(this));
77
- }
78
- disconnectedCallback() {
79
- super.disconnectedCallback();
80
- window.removeEventListener("click", (event) => this._handleClickOutOfElement(event, this.body));
81
- window.removeEventListener("resize", this._handleResize.bind(this));
82
- }
83
- firstUpdated(changedProperties) {
84
- super.firstUpdated(changedProperties);
85
- if (this.breakpointReached && this.body) {
86
- this.expanded = false;
87
- this.body.hidden = true;
88
- this._handleMobileNav();
89
- this._breakpointReached = true;
90
- }
91
- }
92
47
  updated() {
93
48
  if (!this.hasNonCollapsibleSlot)
94
49
  this.hasNonCollapsibleSlot = this.hasSlotController.test("non-collapsible");
50
+ // Sync expanded state to context
51
+ this._expanded = this.expanded;
95
52
  }
96
- _handleClickOutOfElement(e, self) {
97
- if (!e.composedPath().includes(self) && !e.composedPath().includes(this.header)) {
98
- this.hide();
99
- }
100
- }
101
- _handleSummaryClick() {
102
- if (this.expanded) {
103
- this.hide();
104
- }
105
- else {
106
- document.body.style.overflow = "hidden";
107
- this.show();
108
- }
109
- }
110
- _handleResize() {
111
- const newBreakpointReachedValue = window.innerWidth < SIZES[this.expand];
112
- if (newBreakpointReachedValue !== this.breakpointReached) {
113
- this.requestUpdate();
114
- }
115
- else {
116
- this.body ? (this.body.hidden = true) : null;
117
- // this.expanded = false;
118
- this.expanding = false;
119
- }
120
- if (newBreakpointReachedValue) {
121
- this._handleMobileNav();
122
- if (!this._breakpointReached) {
123
- this._breakpointReached = true;
124
- window.addEventListener("scrollend", this._handleMobileNavBound);
125
- }
126
- }
127
- else {
128
- this._handleDesktopNav();
129
- this._breakpointReached = false;
130
- window.removeEventListener("scrollend", this._handleMobileNavBound);
131
- }
132
- }
133
- async _handleMobileNav() {
134
- if (!this.nav)
135
- return;
136
- this.nav.appendChild(this.body);
137
- await customElements.whenDefined("sgds-masthead");
138
- const { bottom } = this.nav.getBoundingClientRect();
139
- const navBodyPaddingY = parseFloat(getComputedStyle(this.body).paddingTop) + parseFloat(getComputedStyle(this.body).paddingBottom);
140
- this.navScroll.style.maxHeight = `calc(100dvh - ${bottom}px - ${navBodyPaddingY}px)`;
141
- }
142
- _handleDesktopNav() {
143
- var _a;
144
- (_a = this.navbar) === null || _a === void 0 ? void 0 : _a.insertBefore(this.body, this.nonCollapsibleSlot);
145
- }
146
- async _animateToShow() {
147
- const sgdsShow = this.emit("sgds-show", { cancelable: true });
148
- if (sgdsShow.defaultPrevented) {
149
- this.expanding = false;
150
- this.expanded = false;
151
- return;
152
- }
153
- await stopAnimations(this.body);
154
- this.body.hidden = false;
155
- const { keyframes, options } = getAnimation(this, "mainnav.show");
156
- await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);
157
- this.body.style.height = "auto";
158
- this.emit("sgds-after-show");
159
- }
160
- async _animateToHide() {
161
- const slHide = this.emit("sgds-hide", { cancelable: true });
162
- if (slHide.defaultPrevented) {
163
- this.expanding = false;
164
- this.expanded = true;
165
- return;
166
- }
167
- await stopAnimations(this.body);
168
- const { keyframes, options } = getAnimation(this, "mainnav.hide");
169
- await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);
170
- this.body.hidden = true;
171
- this.body.style.height = "auto";
172
- this.emit("sgds-after-hide");
173
- }
174
- /** @internal */
175
- async handleOpenChange() {
176
- if (this.expanding) {
177
- // Show
178
- await this._animateToShow();
179
- this.expanded = true;
180
- }
181
- else {
182
- this.header.focus();
183
- // Hide
184
- await this._animateToHide();
185
- this.expanded = false;
186
- }
187
- }
188
- /** Shows the menu. For when mainnav is in the collapsed form */
189
- async show() {
190
- if (this.expanded) {
191
- return;
192
- }
193
- this.expanding = true;
194
- return waitForEvent(this, "sgds-after-show");
53
+ _onBreakpointReached(reached) {
54
+ this._breakpointReached = reached;
195
55
  }
196
- /** Hide the menu. For when mainnav is in the collapsed form */
197
- async hide() {
198
- if (!this.expanded) {
199
- return;
200
- }
201
- this.expanding = false;
202
- document.body.style.removeProperty("overflow");
203
- return waitForEvent(this, "sgds-after-hide");
56
+ _isBreakpointReached() {
57
+ return this._breakpointReached;
204
58
  }
205
59
  _handleDefaultSlotChange(e) {
206
60
  const childElements = e.target.assignedElements({ flatten: true });
207
61
  childElements.forEach(el => {
208
62
  el.setAttribute("expand", this.expand);
209
63
  });
64
+ if (this._hasProfileComponent && childElements.length > 0) {
65
+ console.warn("[sgds-mainnav] Using <sgds-mainnav-item> alongside <sgds-mainnav-profile> is not recommended. " +
66
+ "The profile component disables the mainnav hamburger menu, so nav items will have no mobile menu. " +
67
+ "Use a sidebar for navigation in operational apps.");
68
+ }
210
69
  }
211
- // assigning name attribute to elements added in slot="end", to use wildcard css selector to assign styles only to *-mainnav-item
212
70
  _handleSlotChange(e) {
213
71
  const childElements = e.target.assignedElements({ flatten: true });
214
72
  childElements.forEach(e => {
@@ -216,11 +74,24 @@ class SgdsMainnav extends SgdsElement {
216
74
  e.setAttribute("expand", this.expand);
217
75
  });
218
76
  }
77
+ _handleProfileSlotChange(e) {
78
+ const childElements = e.target.assignedElements({ flatten: true });
79
+ childElements.forEach(el => {
80
+ el.setAttribute("expand", this.expand);
81
+ });
82
+ }
219
83
  render() {
220
- this.breakpointReached = window.innerWidth < SIZES[this.expand];
84
+ this.breakpointReached =
85
+ window.innerWidth <
86
+ (this.expand === "always"
87
+ ? -1
88
+ : this.expand === "never"
89
+ ? Infinity
90
+ : { sm: 512, md: 768, lg: 1024, xl: 1280, xxl: 1440 }[this.expand]);
221
91
  return html `
222
92
  <nav>
223
93
  <div class="navbar ${this._expandClass()}">
94
+ <slot name="start"></slot>
224
95
  <a class="navbar-brand" href=${this.brandHref} aria-label="brand-link">
225
96
  <slot name="brand"></slot>
226
97
  </a>
@@ -234,40 +105,17 @@ class SgdsMainnav extends SgdsElement {
234
105
  ></slot>
235
106
  </div>
236
107
  </div>
237
- <slot
238
- name="non-collapsible"
239
- class=${classMap({ "non-collapsible-empty": !this.hasNonCollapsibleSlot })}
240
- ></slot>
241
- <sgds-icon-button
242
- name=${this.expanded ? "cross" : "menu"}
243
- variant="ghost"
244
- size="sm"
245
- class="navbar-toggler"
246
- @click=${this._handleSummaryClick}
247
- aria-controls="${this.collapseId}"
248
- aria-expanded="${this.expanded}"
249
- .ariaLabel=${"Toggle navigation"}
250
- ></sgds-icon-button>
108
+ <div class="navbar-end">
109
+ <slot name="non-collapsible" class=${classMap({ "slot-empty": !this.hasNonCollapsibleSlot })}></slot>
110
+ <slot name="profile" @slotchange=${this._handleProfileSlotChange}></slot>
111
+ ${this._renderToggler()}
112
+ </div>
251
113
  </div>
252
114
  </nav>
253
115
  `;
254
116
  }
255
- _expandClass() {
256
- switch (this.expand) {
257
- case "always":
258
- return "navbar-expand";
259
- case "never":
260
- break;
261
- default:
262
- return `navbar-expand-${this.expand}`;
263
- }
264
- }
265
117
  }
266
- SgdsMainnav.styles = [...SgdsElement.styles, css_248z];
267
- /** @internal */
268
- SgdsMainnav.dependencies = {
269
- "sgds-icon-button": SgdsIconButton
270
- };
118
+ SgdsMainnav.styles = [...NavElement.styles, css_248z];
271
119
  __decorate([
272
120
  provide({ context: MainnavBreakpointContext }),
273
121
  state()
@@ -275,66 +123,20 @@ __decorate([
275
123
  __decorate([
276
124
  provide({ context: MainnavExpandedContext }),
277
125
  state()
278
- ], SgdsMainnav.prototype, "expanded", void 0);
279
- __decorate([
280
- state()
281
- ], SgdsMainnav.prototype, "expanding", void 0);
282
- __decorate([
283
- query("nav")
284
- ], SgdsMainnav.prototype, "nav", void 0);
285
- __decorate([
286
- query(".navbar")
287
- ], SgdsMainnav.prototype, "navbar", void 0);
288
- __decorate([
289
- query(".navbar-toggler")
290
- ], SgdsMainnav.prototype, "header", void 0);
291
- __decorate([
292
- query(".navbar-body")
293
- ], SgdsMainnav.prototype, "body", void 0);
294
- __decorate([
295
- query(".navbar-nav-scroll")
296
- ], SgdsMainnav.prototype, "navScroll", void 0);
297
- __decorate([
298
- query("slot[name='non-collapsible']")
299
- ], SgdsMainnav.prototype, "nonCollapsibleSlot", void 0);
126
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
127
+ ], SgdsMainnav.prototype, "_expanded", void 0);
300
128
  __decorate([
301
129
  property({ type: Boolean })
302
130
  ], SgdsMainnav.prototype, "hasNonCollapsibleSlot", void 0);
303
- __decorate([
304
- property({ type: String })
305
- ], SgdsMainnav.prototype, "brandHref", void 0);
306
- __decorate([
307
- property({ type: String })
308
- ], SgdsMainnav.prototype, "expand", void 0);
309
131
  __decorate([
310
132
  property({ type: Boolean, reflect: true })
311
133
  ], SgdsMainnav.prototype, "fluid", void 0);
312
- __decorate([
313
- state()
314
- ], SgdsMainnav.prototype, "breakpointReached", void 0);
315
134
  __decorate([
316
135
  queryAssignedElements()
317
136
  ], SgdsMainnav.prototype, "defaultNodes", void 0);
318
137
  __decorate([
319
138
  queryAssignedElements({ slot: "end" })
320
139
  ], SgdsMainnav.prototype, "endNodes", void 0);
321
- __decorate([
322
- watch("expanding", { waitUntilFirstUpdate: true })
323
- ], SgdsMainnav.prototype, "handleOpenChange", null);
324
- setDefaultAnimation("mainnav.show", {
325
- keyframes: [
326
- { height: "0", opacity: "0" },
327
- { height: "auto", opacity: "1" }
328
- ],
329
- options: { duration: 200, easing: "ease-in-out" }
330
- });
331
- setDefaultAnimation("mainnav.hide", {
332
- keyframes: [
333
- { height: "auto", opacity: "1" },
334
- { height: "0", opacity: "0" }
335
- ],
336
- options: { duration: 200, easing: "ease-in-out" }
337
- });
338
140
 
339
141
  export { SgdsMainnav, SgdsMainnav as default };
340
142
  //# sourceMappingURL=sgds-mainnav.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-mainnav.js","sources":["../../../../src/components/Mainnav/sgds-mainnav.ts"],"sourcesContent":["import { provide } from \"@lit/context\";\nimport { html, PropertyValueMap } from \"lit\";\nimport { property, query, queryAssignedElements, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport { animateTo, shimKeyframesHeightAuto, stopAnimations } from \"../../utils/animate\";\nimport { getAnimation, setDefaultAnimation } from \"../../utils/animation-registry\";\nimport { LG_BREAKPOINT, MD_BREAKPOINT, SM_BREAKPOINT, XL_BREAKPOINT, XXL_BREAKPOINT } from \"../../utils/breakpoints\";\nimport { waitForEvent } from \"../../utils/event\";\nimport genId from \"../../utils/generateId\";\nimport { watch } from \"../../utils/watch\";\nimport SgdsIconButton from \"../IconButton/sgds-icon-button\";\nimport { MainnavBreakpointContext, MainnavExpandedContext } from \"./mainnav-context\";\nimport mainnavStyle from \"./mainnav.css\";\nimport SgdsMainnavDropdown from \"./sgds-mainnav-dropdown\";\nimport SgdsMainnavItem from \"./sgds-mainnav-item\";\nimport { HasSlotController } from \"../../utils/slot\";\nexport type MainnavExpandSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\" | \"always\" | \"never\";\n\nconst SIZES = {\n sm: SM_BREAKPOINT,\n md: MD_BREAKPOINT,\n lg: LG_BREAKPOINT,\n xl: XL_BREAKPOINT,\n xxl: XXL_BREAKPOINT,\n never: Infinity,\n always: -1\n};\n\n/**\n * @summary This component is the primary means that your users will use to navigate through your portal. It includes horizontal navigation and branding to identify your site.\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 - Default slot of SgdsMainnav. Pass in SgdsMainnavItem elements here.\n * @slot end - Elements in this slot will be positioned to the right end of .navbar-nav. Elements in this slot will also be included in collapsed menu.\n * @slot brand - Brand slot of SgdsMainnav. Pass in brand logo img here\n * @slot non-collapsible - Elements in this slot will not be collapsed\n *\n */\nexport class SgdsMainnav extends SgdsElement {\n static styles = [...SgdsElement.styles, mainnavStyle];\n /** @internal */\n static dependencies = {\n \"sgds-icon-button\": SgdsIconButton\n };\n\n @provide({ context: MainnavBreakpointContext })\n @state()\n private _breakpointReached = false;\n /** Indicates if mobile menu is open or closed */\n @provide({ context: MainnavExpandedContext })\n @state()\n private expanded = false;\n /** Denotes the transition state of mobile mainnav menu opening */\n @state()\n private expanding = false;\n\n /** @internal */\n @query(\"nav\") nav: HTMLElement;\n /** @internal */\n @query(\".navbar\") navbar: HTMLElement;\n /** @internal */\n @query(\".navbar-toggler\") header: HTMLElement;\n /** @internal */\n @query(\".navbar-body\") body: HTMLElement;\n /** @internal */\n @query(\".navbar-nav-scroll\") navScroll: HTMLElement;\n /** @internal */\n @query(\"slot[name='non-collapsible']\") nonCollapsibleSlot: HTMLSlotElement;\n\n /** Used only for SSR to indicate the presence of the `non-collapsible` slot. */\n @property({ type: Boolean }) hasNonCollapsibleSlot = false;\n\n /** The href link for brand logo */\n @property({ type: String })\n brandHref = \"\";\n\n private collapseId = genId(\"mainnav\", \"collapse\");\n\n /** The breakpoint, below which, the Navbar will collapse. When always the Navbar will always be expanded regardless of screen size. When never, the Navbar will always be collapsed */\n @property({ type: String })\n expand: MainnavExpandSize = \"lg\";\n\n /** When true, removes max-width constraint to allow content to stretch full screen width */\n @property({ type: Boolean, reflect: true })\n fluid = false;\n\n /** @internal */\n @state()\n breakpointReached = false;\n\n /** @internal */\n @queryAssignedElements() private defaultNodes!: SgdsMainnavItem[] | SgdsMainnavDropdown[];\n\n /** @internal */\n @queryAssignedElements({ slot: \"end\" }) private endNodes!: SgdsMainnavItem[] | SgdsMainnavDropdown[];\n\n /** @internal */\n get defaultSlotItems(): SgdsMainnavItem[] | SgdsMainnavDropdown[] {\n return [...(this.defaultNodes || [])].filter((node: HTMLElement) => typeof node.tagName !== \"undefined\") as\n | SgdsMainnavItem[]\n | SgdsMainnavDropdown[];\n }\n\n /** @internal */\n get endSlotItems(): SgdsMainnavItem[] | SgdsMainnavDropdown[] {\n return [...(this.endNodes || [])].filter((node: HTMLElement) => typeof node.tagName !== \"undefined\") as\n | SgdsMainnavItem[]\n | SgdsMainnavDropdown[];\n }\n\n private readonly hasSlotController = new HasSlotController(this, \"non-collapsible\");\n\n connectedCallback() {\n super.connectedCallback();\n\n this._handleResize();\n\n window.addEventListener(\"click\", (event: MouseEvent) => this._handleClickOutOfElement(event, this.body));\n window.addEventListener(\"resize\", this._handleResize.bind(this));\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n window.removeEventListener(\"click\", (event: MouseEvent) => this._handleClickOutOfElement(event, this.body));\n window.removeEventListener(\"resize\", this._handleResize.bind(this));\n }\n\n firstUpdated(changedProperties: PropertyValueMap<this>) {\n super.firstUpdated(changedProperties);\n\n if (this.breakpointReached && this.body) {\n this.expanded = false;\n this.body.hidden = true;\n this._handleMobileNav();\n this._breakpointReached = true;\n }\n }\n\n updated() {\n if (!this.hasNonCollapsibleSlot) this.hasNonCollapsibleSlot = this.hasSlotController.test(\"non-collapsible\");\n }\n\n private _handleClickOutOfElement(e: MouseEvent, self: HTMLElement) {\n if (!e.composedPath().includes(self) && !e.composedPath().includes(this.header)) {\n this.hide();\n }\n }\n\n private _handleSummaryClick() {\n if (this.expanded) {\n this.hide();\n } else {\n document.body.style.overflow = \"hidden\";\n this.show();\n }\n }\n\n private _handleResize() {\n const newBreakpointReachedValue = window.innerWidth < SIZES[this.expand];\n if (newBreakpointReachedValue !== this.breakpointReached) {\n this.requestUpdate();\n } else {\n this.body ? (this.body.hidden = true) : null;\n // this.expanded = false;\n this.expanding = false;\n }\n\n if (newBreakpointReachedValue) {\n this._handleMobileNav();\n\n if (!this._breakpointReached) {\n this._breakpointReached = true;\n\n window.addEventListener(\"scrollend\", this._handleMobileNavBound);\n }\n } else {\n this._handleDesktopNav();\n this._breakpointReached = false;\n window.removeEventListener(\"scrollend\", this._handleMobileNavBound);\n }\n }\n\n private _handleMobileNavBound = this._handleMobileNav.bind(this);\n\n private async _handleMobileNav() {\n if (!this.nav) return;\n\n this.nav.appendChild(this.body);\n await customElements.whenDefined(\"sgds-masthead\");\n\n const { bottom } = this.nav.getBoundingClientRect();\n const navBodyPaddingY =\n parseFloat(getComputedStyle(this.body).paddingTop) + parseFloat(getComputedStyle(this.body).paddingBottom);\n\n this.navScroll.style.maxHeight = `calc(100dvh - ${bottom}px - ${navBodyPaddingY}px)`;\n }\n\n private _handleDesktopNav() {\n this.navbar?.insertBefore(this.body, this.nonCollapsibleSlot);\n }\n\n private async _animateToShow() {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.expanding = false;\n this.expanded = false;\n return;\n }\n\n await stopAnimations(this.body);\n this.body.hidden = false;\n\n const { keyframes, options } = getAnimation(this, \"mainnav.show\");\n await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);\n this.body.style.height = \"auto\";\n\n this.emit(\"sgds-after-show\");\n }\n\n private async _animateToHide() {\n const slHide = this.emit(\"sgds-hide\", { cancelable: true });\n if (slHide.defaultPrevented) {\n this.expanding = false;\n this.expanded = true;\n return;\n }\n\n await stopAnimations(this.body);\n\n const { keyframes, options } = getAnimation(this, \"mainnav.hide\");\n await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);\n this.body.hidden = true;\n this.body.style.height = \"auto\";\n this.emit(\"sgds-after-hide\");\n }\n /** @internal */\n @watch(\"expanding\", { waitUntilFirstUpdate: true })\n async handleOpenChange() {\n if (this.expanding) {\n // Show\n await this._animateToShow();\n this.expanded = true;\n } else {\n this.header.focus();\n // Hide\n await this._animateToHide();\n this.expanded = false;\n }\n }\n\n /** Shows the menu. For when mainnav is in the collapsed form */\n public async show() {\n if (this.expanded) {\n return;\n }\n\n this.expanding = true;\n return waitForEvent(this, \"sgds-after-show\");\n }\n\n /** Hide the menu. For when mainnav is in the collapsed form */\n public async hide() {\n if (!this.expanded) {\n return;\n }\n\n this.expanding = false;\n document.body.style.removeProperty(\"overflow\");\n\n return waitForEvent(this, \"sgds-after-hide\");\n }\n\n private _handleDefaultSlotChange(e: Event) {\n const childElements = (e.target as HTMLSlotElement).assignedElements({ flatten: true });\n childElements.forEach(el => {\n el.setAttribute(\"expand\", this.expand);\n });\n }\n\n // assigning name attribute to elements added in slot=\"end\", to use wildcard css selector to assign styles only to *-mainnav-item\n private _handleSlotChange(e: Event) {\n const childElements = (e.target as HTMLSlotElement).assignedElements({ flatten: true });\n\n childElements.forEach(e => {\n e.setAttribute(\"name\", e.tagName.toLowerCase());\n e.setAttribute(\"expand\", this.expand);\n });\n }\n\n render() {\n this.breakpointReached = window.innerWidth < SIZES[this.expand];\n\n return html`\n <nav>\n <div class=\"navbar ${this._expandClass()}\">\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 @slotchange=${this._handleDefaultSlotChange}></slot>\n <slot\n name=\"end\"\n class=${classMap({ \"slot-end\": !this.breakpointReached })}\n @slotchange=${this._handleSlotChange}\n ></slot>\n </div>\n </div>\n <slot\n name=\"non-collapsible\"\n class=${classMap({ \"non-collapsible-empty\": !this.hasNonCollapsibleSlot })}\n ></slot>\n <sgds-icon-button\n name=${this.expanded ? \"cross\" : \"menu\"}\n variant=\"ghost\"\n size=\"sm\"\n class=\"navbar-toggler\"\n @click=${this._handleSummaryClick}\n aria-controls=\"${this.collapseId}\"\n aria-expanded=\"${this.expanded}\"\n .ariaLabel=${\"Toggle navigation\"}\n ></sgds-icon-button>\n </div>\n </nav>\n `;\n }\n _expandClass() {\n switch (this.expand) {\n case \"always\":\n return \"navbar-expand\";\n case \"never\":\n break;\n default:\n return `navbar-expand-${this.expand}`;\n }\n }\n}\nsetDefaultAnimation(\"mainnav.show\", {\n keyframes: [\n { height: \"0\", opacity: \"0\" },\n { height: \"auto\", opacity: \"1\" }\n ],\n options: { duration: 200, easing: \"ease-in-out\" }\n});\n\nsetDefaultAnimation(\"mainnav.hide\", {\n keyframes: [\n { height: \"auto\", opacity: \"1\" },\n { height: \"0\", opacity: \"0\" }\n ],\n options: { duration: 200, easing: \"ease-in-out\" }\n});\n\nexport default SgdsMainnav;\n"],"names":["mainnavStyle"],"mappings":"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"}
1
+ {"version":3,"file":"sgds-mainnav.js","sources":["../../../../src/components/Mainnav/sgds-mainnav.ts"],"sourcesContent":["import { provide } from \"@lit/context\";\nimport { html } from \"lit\";\nimport { property, queryAssignedElements, 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 { MainnavBreakpointContext, MainnavExpandedContext } from \"./mainnav-context\";\nimport mainnavStyle from \"./mainnav.css\";\nimport SgdsMainnavDropdown from \"./sgds-mainnav-dropdown\";\nimport SgdsMainnavItem from \"./sgds-mainnav-item\";\n\nexport type MainnavExpandSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\" | \"always\" | \"never\";\n\n/**\n * @summary This component is the primary means that your users will use to navigate through your portal. It includes horizontal navigation and branding to identify your site.\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 - Default slot of SgdsMainnav. Pass in SgdsMainnavItem elements here.\n * @slot start - Elements in this slot will be positioned to the left of the brand.\n * @slot end - Elements in this slot will be positioned to the right end of .navbar-nav. Elements in this slot will also be included in collapsed menu.\n * @slot brand - Brand slot of SgdsMainnav. Pass in brand logo img here\n * @slot profile - Profile slot positioned at the far right in desktop. In mobile, moves into the collapsed menu as the first item.\n * @slot non-collapsible - Elements in this slot will not be collapsed\n *\n */\nexport class SgdsMainnav extends NavElement {\n static styles = [...NavElement.styles, mainnavStyle];\n\n @provide({ context: MainnavBreakpointContext })\n @state()\n private _breakpointReached = false;\n\n @provide({ context: MainnavExpandedContext })\n @state()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private _expanded = false;\n\n /** Used only for SSR to indicate the presence of the `non-collapsible` slot. */\n @property({ type: Boolean }) hasNonCollapsibleSlot = false;\n\n /** When true, removes max-width constraint to allow content to stretch full screen width */\n @property({ type: Boolean, reflect: true })\n fluid = false;\n\n @queryAssignedElements() private defaultNodes!: SgdsMainnavItem[] | SgdsMainnavDropdown[];\n\n @queryAssignedElements({ slot: \"end\" }) private endNodes!: SgdsMainnavItem[] | SgdsMainnavDropdown[];\n\n /** @internal */\n get defaultSlotItems(): SgdsMainnavItem[] | SgdsMainnavDropdown[] {\n return [...(this.defaultNodes || [])].filter((node: HTMLElement) => typeof node.tagName !== \"undefined\") as\n | SgdsMainnavItem[]\n | SgdsMainnavDropdown[];\n }\n\n /** @internal */\n get endSlotItems(): SgdsMainnavItem[] | SgdsMainnavDropdown[] {\n return [...(this.endNodes || [])].filter((node: HTMLElement) => typeof node.tagName !== \"undefined\") as\n | SgdsMainnavItem[]\n | SgdsMainnavDropdown[];\n }\n\n private readonly hasSlotController = new HasSlotController(this, \"non-collapsible\");\n\n updated() {\n if (!this.hasNonCollapsibleSlot) this.hasNonCollapsibleSlot = this.hasSlotController.test(\"non-collapsible\");\n // Sync expanded state to context\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 _handleDefaultSlotChange(e: Event) {\n const childElements = (e.target as HTMLSlotElement).assignedElements({ flatten: true });\n childElements.forEach(el => {\n el.setAttribute(\"expand\", this.expand);\n });\n\n if (this._hasProfileComponent && childElements.length > 0) {\n console.warn(\n \"[sgds-mainnav] Using <sgds-mainnav-item> alongside <sgds-mainnav-profile> is not recommended. \" +\n \"The profile component disables the mainnav hamburger menu, so nav items will have no mobile menu. \" +\n \"Use a sidebar for navigation in operational apps.\"\n );\n }\n }\n\n private _handleSlotChange(e: Event) {\n const childElements = (e.target as HTMLSlotElement).assignedElements({ flatten: true });\n childElements.forEach(e => {\n e.setAttribute(\"name\", e.tagName.toLowerCase());\n e.setAttribute(\"expand\", this.expand);\n });\n }\n\n private _handleProfileSlotChange(e: Event) {\n const childElements = (e.target as HTMLSlotElement).assignedElements({ flatten: true });\n childElements.forEach(el => {\n el.setAttribute(\"expand\", this.expand);\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\"></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 @slotchange=${this._handleDefaultSlotChange}></slot>\n <slot\n name=\"end\"\n class=${classMap({ \"slot-end\": !this.breakpointReached })}\n @slotchange=${this._handleSlotChange}\n ></slot>\n </div>\n </div>\n <div class=\"navbar-end\">\n <slot name=\"non-collapsible\" class=${classMap({ \"slot-empty\": !this.hasNonCollapsibleSlot })}></slot>\n <slot name=\"profile\" @slotchange=${this._handleProfileSlotChange}></slot>\n ${this._renderToggler()}\n </div>\n </div>\n </nav>\n `;\n }\n}\n\nexport default SgdsMainnav;\n"],"names":["mainnavStyle"],"mappings":"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"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var lit = require('lit');
7
7
 
8
- var css_248z = lit.css`.tab-panel{display:block}.tab-panel:not(.tab-panel--active){display:none}`;
8
+ var css_248z = lit.css`:host(:not([active])){display:none}.tab-panel{display:block}.tab-panel:not(.tab-panel--active){display:none}`;
9
9
 
10
10
  exports["default"] = css_248z;
11
11
  //# sourceMappingURL=tab-panel.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { css } from 'lit';
3
3
 
4
- var css_248z = css`.tab-panel{display:block}.tab-panel:not(.tab-panel--active){display:none}`;
4
+ var css_248z = css`:host(:not([active])){display:none}.tab-panel{display:block}.tab-panel:not(.tab-panel--active){display:none}`;
5
5
 
6
6
  export { css_248z as default };
7
7
  //# sourceMappingURL=tab-panel.js.map
@@ -0,0 +1,44 @@
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 sgdsDataTable = require('../components/DataTable/sgds-data-table.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-data-table", sgdsDataTable.SgdsDataTable);
32
+ var index = react.createComponent({
33
+ react: React__namespace,
34
+ tagName: "sgds-data-table",
35
+ elementClass: sgdsDataTable.SgdsDataTable,
36
+ events: {
37
+ onSgdsRowSelect: "sgds-row-select",
38
+ onSgdsSort: "sgds-sort",
39
+ onSgdsPageChange: "sgds-page-change"
40
+ }
41
+ });
42
+
43
+ exports["default"] = index;
44
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../src/react/data-table/index.ts"],"sourcesContent":["import * as React from \"react\";\nimport { createComponent } from \"@lit/react\";\nimport Component from \"../../components/DataTable/sgds-data-table\";\nimport { register } from \"../../utils/ce-registry\";\n\nregister(\"sgds-data-table\", Component);\n\nexport default createComponent({\n react: React,\n tagName: \"sgds-data-table\",\n elementClass: Component,\n events: {\n onSgdsRowSelect: \"sgds-row-select\",\n onSgdsSort: \"sgds-sort\",\n onSgdsPageChange: \"sgds-page-change\"\n }\n});\n"],"names":["register","Component","createComponent","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKAA,mBAAQ,CAAC,iBAAiB,EAAEC,2BAAS,CAAC,CAAC;AAEvC,YAAeC,qBAAe,CAAC;AAC7B,IAAA,KAAK,EAAEC,gBAAK;AACZ,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,YAAY,EAAEF,2BAAS;AACvB,IAAA,MAAM,EAAE;AACN,QAAA,eAAe,EAAE,iBAAiB;AAClC,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,gBAAgB,EAAE,kBAAkB;AACrC,KAAA;AACF,CAAA,CAAC;;;;"}
@@ -0,0 +1,4 @@
1
+ import type { SgdsDataTableProps } from '../../types/react';
2
+ import * as React from 'react';
3
+ declare const _default: React.ForwardRefExoticComponent<React.PropsWithChildren<SgdsDataTableProps> & React.RefAttributes<HTMLElement>>;
4
+ export default _default;
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+ import * as React from 'react';
3
+ import { createComponent } from '@lit/react';
4
+ import { SgdsDataTable } from '../components/DataTable/sgds-data-table.js';
5
+ import { register } from '../utils/ce-registry.js';
6
+
7
+ register("sgds-data-table", SgdsDataTable);
8
+ var index = createComponent({
9
+ react: React,
10
+ tagName: "sgds-data-table",
11
+ elementClass: SgdsDataTable,
12
+ events: {
13
+ onSgdsRowSelect: "sgds-row-select",
14
+ onSgdsSort: "sgds-sort",
15
+ onSgdsPageChange: "sgds-page-change"
16
+ }
17
+ });
18
+
19
+ export { index as default };
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/react/data-table/index.ts"],"sourcesContent":["import * as React from \"react\";\nimport { createComponent } from \"@lit/react\";\nimport Component from \"../../components/DataTable/sgds-data-table\";\nimport { register } from \"../../utils/ce-registry\";\n\nregister(\"sgds-data-table\", Component);\n\nexport default createComponent({\n react: React,\n tagName: \"sgds-data-table\",\n elementClass: Component,\n events: {\n onSgdsRowSelect: \"sgds-row-select\",\n onSgdsSort: \"sgds-sort\",\n onSgdsPageChange: \"sgds-page-change\"\n }\n});\n"],"names":["Component"],"mappings":";;;;;;AAKA,QAAQ,CAAC,iBAAiB,EAAEA,aAAS,CAAC,CAAC;AAEvC,YAAe,eAAe,CAAC;AAC7B,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,YAAY,EAAEA,aAAS;AACvB,IAAA,MAAM,EAAE;AACN,QAAA,eAAe,EAAE,iBAAiB;AAClC,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,gBAAgB,EAAE,kBAAkB;AACrC,KAAA;AACF,CAAA,CAAC;;;;"}
@@ -0,0 +1,40 @@
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 sgdsDataTableCell = require('../components/DataTable/sgds-data-table-cell.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-data-table-cell", sgdsDataTableCell.SgdsDataTableCell);
32
+ var index = react.createComponent({
33
+ react: React__namespace,
34
+ tagName: "sgds-data-table-cell",
35
+ elementClass: sgdsDataTableCell.SgdsDataTableCell,
36
+ events: {}
37
+ });
38
+
39
+ exports["default"] = index;
40
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../src/react/data-table-cell/index.ts"],"sourcesContent":["import * as React from \"react\";\nimport { createComponent } from \"@lit/react\";\nimport Component from \"../../components/DataTable/sgds-data-table-cell\";\nimport { register } from \"../../utils/ce-registry\";\n\nregister(\"sgds-data-table-cell\", Component);\n\nexport default createComponent({\n react: React,\n tagName: \"sgds-data-table-cell\",\n elementClass: Component,\n events: {}\n});\n"],"names":["register","Component","createComponent","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKAA,mBAAQ,CAAC,sBAAsB,EAAEC,mCAAS,CAAC,CAAC;AAE5C,YAAeC,qBAAe,CAAC;AAC7B,IAAA,KAAK,EAAEC,gBAAK;AACZ,IAAA,OAAO,EAAE,sBAAsB;AAC/B,IAAA,YAAY,EAAEF,mCAAS;AACvB,IAAA,MAAM,EAAE,EAAE;AACX,CAAA,CAAC;;;;"}
@@ -0,0 +1,4 @@
1
+ import type { SgdsDataTableCellProps } from '../../types/react';
2
+ import * as React from 'react';
3
+ declare const _default: React.ForwardRefExoticComponent<React.PropsWithChildren<SgdsDataTableCellProps> & React.RefAttributes<HTMLElement>>;
4
+ export default _default;
@@ -0,0 +1,16 @@
1
+ 'use client';
2
+ import * as React from 'react';
3
+ import { createComponent } from '@lit/react';
4
+ import { SgdsDataTableCell } from '../components/DataTable/sgds-data-table-cell.js';
5
+ import { register } from '../utils/ce-registry.js';
6
+
7
+ register("sgds-data-table-cell", SgdsDataTableCell);
8
+ var index = createComponent({
9
+ react: React,
10
+ tagName: "sgds-data-table-cell",
11
+ elementClass: SgdsDataTableCell,
12
+ events: {}
13
+ });
14
+
15
+ export { index as default };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/react/data-table-cell/index.ts"],"sourcesContent":["import * as React from \"react\";\nimport { createComponent } from \"@lit/react\";\nimport Component from \"../../components/DataTable/sgds-data-table-cell\";\nimport { register } from \"../../utils/ce-registry\";\n\nregister(\"sgds-data-table-cell\", Component);\n\nexport default createComponent({\n react: React,\n tagName: \"sgds-data-table-cell\",\n elementClass: Component,\n events: {}\n});\n"],"names":["Component"],"mappings":";;;;;;AAKA,QAAQ,CAAC,sBAAsB,EAAEA,iBAAS,CAAC,CAAC;AAE5C,YAAe,eAAe,CAAC;AAC7B,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,OAAO,EAAE,sBAAsB;AAC/B,IAAA,YAAY,EAAEA,iBAAS;AACvB,IAAA,MAAM,EAAE,EAAE;AACX,CAAA,CAAC;;;;"}