@govtechsg/sgds-web-component 3.1.0-rc.6 → 3.1.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 (210) hide show
  1. package/base/button.js +1 -1
  2. package/base/select-element.d.ts +80 -0
  3. package/base/select-element.js +201 -0
  4. package/base/select-element.js.map +1 -0
  5. package/components/Accordion/index.umd.js +7 -5
  6. package/components/Accordion/index.umd.js.map +1 -1
  7. package/components/Accordion/sgds-accordion-item.d.ts +0 -1
  8. package/components/Accordion/sgds-accordion-item.js +7 -5
  9. package/components/Accordion/sgds-accordion-item.js.map +1 -1
  10. package/components/Breadcrumb/index.umd.js +5 -2
  11. package/components/Breadcrumb/index.umd.js.map +1 -1
  12. package/components/Button/button.js +1 -1
  13. package/components/Button/index.umd.js +3 -6
  14. package/components/Button/index.umd.js.map +1 -1
  15. package/components/Button/sgds-button.js +1 -4
  16. package/components/Button/sgds-button.js.map +1 -1
  17. package/components/Checkbox/checkbox.js +1 -1
  18. package/components/Checkbox/index.umd.js +42 -34
  19. package/components/Checkbox/index.umd.js.map +1 -1
  20. package/components/Checkbox/sgds-checkbox-group.d.ts +6 -4
  21. package/components/Checkbox/sgds-checkbox-group.js +34 -17
  22. package/components/Checkbox/sgds-checkbox-group.js.map +1 -1
  23. package/components/Checkbox/sgds-checkbox.d.ts +2 -3
  24. package/components/Checkbox/sgds-checkbox.js +9 -21
  25. package/components/Checkbox/sgds-checkbox.js.map +1 -1
  26. package/components/ComboBox/combo-box.js +1 -1
  27. package/components/ComboBox/index.umd.js +492 -500
  28. package/components/ComboBox/index.umd.js.map +1 -1
  29. package/components/ComboBox/sgds-combo-box.d.ts +9 -82
  30. package/components/ComboBox/sgds-combo-box.js +13 -202
  31. package/components/ComboBox/sgds-combo-box.js.map +1 -1
  32. package/components/Datepicker/index.umd.js +4 -7
  33. package/components/Datepicker/index.umd.js.map +1 -1
  34. package/components/Dropdown/dropdown-menu.js +1 -1
  35. package/components/Dropdown/dropdown.js +1 -1
  36. package/components/Dropdown/index.umd.js +5 -2
  37. package/components/Dropdown/index.umd.js.map +1 -1
  38. package/components/Dropdown/sgds-dropdown-item.js +3 -0
  39. package/components/Dropdown/sgds-dropdown-item.js.map +1 -1
  40. package/components/FileUpload/index.umd.js +3 -6
  41. package/components/FileUpload/index.umd.js.map +1 -1
  42. package/components/IconButton/index.umd.js +1 -1
  43. package/components/Mainnav/index.umd.js +13 -10
  44. package/components/Mainnav/index.umd.js.map +1 -1
  45. package/components/Mainnav/mainnav-dropdown.js +1 -1
  46. package/components/Mainnav/mainnav-item.js +1 -1
  47. package/components/Mainnav/mainnav.js +1 -1
  48. package/components/Pagination/index.umd.js +3 -6
  49. package/components/Pagination/index.umd.js.map +1 -1
  50. package/components/QuantityToggle/index.umd.js +1 -1
  51. package/components/Select/index.d.ts +6 -0
  52. package/components/Select/index.js +4 -0
  53. package/components/Select/index.js.map +1 -0
  54. package/components/Select/index.umd.js +10317 -0
  55. package/components/Select/index.umd.js.map +1 -0
  56. package/components/Select/select-item.d.ts +17 -0
  57. package/components/Select/select-item.js +61 -0
  58. package/components/Select/select-item.js.map +1 -0
  59. package/components/Select/select-item2.js +6 -0
  60. package/components/Select/select-item2.js.map +1 -0
  61. package/components/Select/select.js +6 -0
  62. package/components/Select/select.js.map +1 -0
  63. package/components/Select/sgds-select.d.ts +27 -0
  64. package/components/Select/sgds-select.js +158 -0
  65. package/components/Select/sgds-select.js.map +1 -0
  66. package/components/Subnav/index.d.ts +8 -0
  67. package/components/Subnav/index.js +6 -0
  68. package/components/Subnav/index.js.map +1 -0
  69. package/components/Subnav/index.umd.js +6074 -0
  70. package/components/Subnav/index.umd.js.map +1 -0
  71. package/components/Subnav/sgds-subnav-item.d.ts +16 -0
  72. package/components/Subnav/sgds-subnav-item.js +68 -0
  73. package/components/Subnav/sgds-subnav-item.js.map +1 -0
  74. package/components/Subnav/sgds-subnav.d.ts +47 -0
  75. package/components/Subnav/sgds-subnav.js +253 -0
  76. package/components/Subnav/sgds-subnav.js.map +1 -0
  77. package/components/Subnav/subnav-item.js +6 -0
  78. package/components/Subnav/subnav-item.js.map +1 -0
  79. package/components/Subnav/subnav.js +6 -0
  80. package/components/Subnav/subnav.js.map +1 -0
  81. package/components/index.d.ts +2 -0
  82. package/components/index.js +2 -0
  83. package/components/index.js.map +1 -1
  84. package/components/index.umd.js +812 -355
  85. package/components/index.umd.js.map +1 -1
  86. package/css/grid.js +6 -0
  87. package/css/grid.js.map +1 -0
  88. package/index.d.ts +2 -0
  89. package/index.js +2 -0
  90. package/index.js.map +1 -1
  91. package/index.umd.js +897 -376
  92. package/index.umd.js.map +1 -1
  93. package/package.json +1 -1
  94. package/react/base/button.cjs.js +1 -1
  95. package/react/base/button.js +1 -1
  96. package/react/base/select-element.cjs.js +206 -0
  97. package/react/base/select-element.cjs.js.map +1 -0
  98. package/react/base/select-element.js +202 -0
  99. package/react/base/select-element.js.map +1 -0
  100. package/react/checkbox/index.cjs.js +2 -1
  101. package/react/checkbox/index.cjs.js.map +1 -1
  102. package/react/checkbox/index.js +2 -1
  103. package/react/checkbox/index.js.map +1 -1
  104. package/react/checkbox-group/index.cjs.js +3 -1
  105. package/react/checkbox-group/index.cjs.js.map +1 -1
  106. package/react/checkbox-group/index.js +3 -1
  107. package/react/checkbox-group/index.js.map +1 -1
  108. package/react/components/Accordion/sgds-accordion-item.cjs.js +7 -5
  109. package/react/components/Accordion/sgds-accordion-item.cjs.js.map +1 -1
  110. package/react/components/Accordion/sgds-accordion-item.js +7 -5
  111. package/react/components/Accordion/sgds-accordion-item.js.map +1 -1
  112. package/react/components/Button/button.cjs.js +1 -1
  113. package/react/components/Button/button.js +1 -1
  114. package/react/components/Button/sgds-button.cjs.js +1 -4
  115. package/react/components/Button/sgds-button.cjs.js.map +1 -1
  116. package/react/components/Button/sgds-button.js +1 -4
  117. package/react/components/Button/sgds-button.js.map +1 -1
  118. package/react/components/Checkbox/checkbox.cjs.js +1 -1
  119. package/react/components/Checkbox/checkbox.js +1 -1
  120. package/react/components/Checkbox/sgds-checkbox-group.cjs.js +33 -16
  121. package/react/components/Checkbox/sgds-checkbox-group.cjs.js.map +1 -1
  122. package/react/components/Checkbox/sgds-checkbox-group.js +34 -17
  123. package/react/components/Checkbox/sgds-checkbox-group.js.map +1 -1
  124. package/react/components/Checkbox/sgds-checkbox.cjs.js +9 -21
  125. package/react/components/Checkbox/sgds-checkbox.cjs.js.map +1 -1
  126. package/react/components/Checkbox/sgds-checkbox.js +9 -21
  127. package/react/components/Checkbox/sgds-checkbox.js.map +1 -1
  128. package/react/components/ComboBox/combo-box.cjs.js +1 -1
  129. package/react/components/ComboBox/combo-box.js +1 -1
  130. package/react/components/ComboBox/sgds-combo-box.cjs.js +12 -201
  131. package/react/components/ComboBox/sgds-combo-box.cjs.js.map +1 -1
  132. package/react/components/ComboBox/sgds-combo-box.js +13 -202
  133. package/react/components/ComboBox/sgds-combo-box.js.map +1 -1
  134. package/react/components/Dropdown/dropdown-menu.cjs.js +1 -1
  135. package/react/components/Dropdown/dropdown-menu.js +1 -1
  136. package/react/components/Dropdown/dropdown.cjs.js +1 -1
  137. package/react/components/Dropdown/dropdown.js +1 -1
  138. package/react/components/Dropdown/sgds-dropdown-item.cjs.js +3 -0
  139. package/react/components/Dropdown/sgds-dropdown-item.cjs.js.map +1 -1
  140. package/react/components/Dropdown/sgds-dropdown-item.js +3 -0
  141. package/react/components/Dropdown/sgds-dropdown-item.js.map +1 -1
  142. package/react/components/Mainnav/mainnav-dropdown.cjs.js +1 -1
  143. package/react/components/Mainnav/mainnav-dropdown.js +1 -1
  144. package/react/components/Mainnav/mainnav-item.cjs.js +1 -1
  145. package/react/components/Mainnav/mainnav-item.js +1 -1
  146. package/react/components/Mainnav/mainnav.cjs.js +1 -1
  147. package/react/components/Mainnav/mainnav.js +1 -1
  148. package/react/components/Select/select-item.cjs.js +67 -0
  149. package/react/components/Select/select-item.cjs.js.map +1 -0
  150. package/react/components/Select/select-item.cjs2.js +11 -0
  151. package/react/components/Select/select-item.cjs2.js.map +1 -0
  152. package/react/components/Select/select-item.js +62 -0
  153. package/react/components/Select/select-item.js.map +1 -0
  154. package/react/components/Select/select-item2.js +7 -0
  155. package/react/components/Select/select-item2.js.map +1 -0
  156. package/react/components/Select/select.cjs.js +11 -0
  157. package/react/components/Select/select.cjs.js.map +1 -0
  158. package/react/components/Select/select.js +7 -0
  159. package/react/components/Select/select.js.map +1 -0
  160. package/react/components/Select/sgds-select.cjs.js +164 -0
  161. package/react/components/Select/sgds-select.cjs.js.map +1 -0
  162. package/react/components/Select/sgds-select.js +159 -0
  163. package/react/components/Select/sgds-select.js.map +1 -0
  164. package/react/components/Subnav/sgds-subnav-item.cjs.js +74 -0
  165. package/react/components/Subnav/sgds-subnav-item.cjs.js.map +1 -0
  166. package/react/components/Subnav/sgds-subnav-item.js +69 -0
  167. package/react/components/Subnav/sgds-subnav-item.js.map +1 -0
  168. package/react/components/Subnav/sgds-subnav.cjs.js +259 -0
  169. package/react/components/Subnav/sgds-subnav.cjs.js.map +1 -0
  170. package/react/components/Subnav/sgds-subnav.js +254 -0
  171. package/react/components/Subnav/sgds-subnav.js.map +1 -0
  172. package/react/components/Subnav/subnav-item.cjs.js +11 -0
  173. package/react/components/Subnav/subnav-item.cjs.js.map +1 -0
  174. package/react/components/Subnav/subnav-item.js +7 -0
  175. package/react/components/Subnav/subnav-item.js.map +1 -0
  176. package/react/components/Subnav/subnav.cjs.js +11 -0
  177. package/react/components/Subnav/subnav.cjs.js.map +1 -0
  178. package/react/components/Subnav/subnav.js +7 -0
  179. package/react/components/Subnav/subnav.js.map +1 -0
  180. package/react/css/grid.cjs.js +11 -0
  181. package/react/css/grid.cjs.js.map +1 -0
  182. package/react/css/grid.js +7 -0
  183. package/react/css/grid.js.map +1 -0
  184. package/react/index.cjs.js +38 -32
  185. package/react/index.cjs.js.map +1 -1
  186. package/react/index.d.ts +3 -0
  187. package/react/index.js +3 -0
  188. package/react/index.js.map +1 -1
  189. package/react/select/index.cjs.js +46 -0
  190. package/react/select/index.cjs.js.map +1 -0
  191. package/react/select/index.d.ts +2 -0
  192. package/react/select/index.js +22 -0
  193. package/react/select/index.js.map +1 -0
  194. package/react/subnav/index.cjs.js +45 -0
  195. package/react/subnav/index.cjs.js.map +1 -0
  196. package/react/subnav/index.d.ts +2 -0
  197. package/react/subnav/index.js +21 -0
  198. package/react/subnav/index.js.map +1 -0
  199. package/react/subnav-item/index.cjs.js +40 -0
  200. package/react/subnav-item/index.cjs.js.map +1 -0
  201. package/react/subnav-item/index.d.ts +2 -0
  202. package/react/subnav-item/index.js +16 -0
  203. package/react/subnav-item/index.js.map +1 -0
  204. package/react/utils/breakpoints.cjs.js +4 -4
  205. package/react/utils/breakpoints.cjs.js.map +1 -1
  206. package/react/utils/breakpoints.js +4 -4
  207. package/react/utils/breakpoints.js.map +1 -1
  208. package/utils/breakpoints.d.ts +4 -4
  209. package/utils/breakpoints.js +4 -4
  210. package/utils/breakpoints.js.map +1 -1
@@ -0,0 +1,16 @@
1
+ import SgdsElement from "../../base/sgds-element";
2
+ /**
3
+ * @slot default - slot for SgdsSubnavItem element.
4
+ *
5
+ * */
6
+ export declare class SgdsSubnavItem extends SgdsElement {
7
+ static styles: import("lit").CSSResult[];
8
+ /** when true, sets the active stylings of .nav-link */
9
+ active: boolean;
10
+ /** Disables the SgdsSubnavItem */
11
+ disabled: boolean;
12
+ _handleDisabled(): void;
13
+ private _handleSlotChange;
14
+ render(): import("lit-html").TemplateResult<1>;
15
+ }
16
+ export default SgdsSubnavItem;
@@ -0,0 +1,68 @@
1
+ import { __decorate } from 'tslib';
2
+ import { html } from 'lit';
3
+ import { property } from 'lit/decorators.js';
4
+ import { watch } from '../../utils/watch.js';
5
+ import SgdsElement from '../../base/sgds-element.js';
6
+ import css_248z from './subnav-item.js';
7
+
8
+ /**
9
+ * @slot default - slot for SgdsSubnavItem element.
10
+ *
11
+ * */
12
+ class SgdsSubnavItem extends SgdsElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ /** when true, sets the active stylings of .nav-link */
16
+ this.active = false;
17
+ /** Disables the SgdsSubnavItem */
18
+ this.disabled = false;
19
+ }
20
+ _handleDisabled() {
21
+ this.setAttribute("aria-disabled", `${this.disabled}`);
22
+ }
23
+ _handleSlotChange(e) {
24
+ const slot = e.target;
25
+ const assignedElements = slot.assignedElements({ flatten: true });
26
+ const anchorItems = assignedElements.filter(item => item.tagName.toLowerCase() === "a" || item.tagName.toLowerCase() === "sgds-link");
27
+ if (anchorItems.length > 1) {
28
+ console.error("More than one anchor tag is added to sgds-subnav-item");
29
+ return;
30
+ }
31
+ if (anchorItems.length === 0) {
32
+ const nodes = slot.assignedNodes({ flatten: true });
33
+ nodes.forEach(node => {
34
+ if (node.nodeType === Node.TEXT_NODE) {
35
+ const hyperlink = document.createElement("a");
36
+ hyperlink.textContent = node.textContent;
37
+ node.parentNode.replaceChild(hyperlink, node);
38
+ }
39
+ });
40
+ }
41
+ if (anchorItems.length === 1) {
42
+ const anchor = anchorItems[0];
43
+ if (this.active) {
44
+ anchor.setAttribute("aria-current", "true");
45
+ }
46
+ if (this.disabled) {
47
+ anchor.setAttribute("href", "javascript:void(0)");
48
+ anchor.setAttribute("tabindex", "-1");
49
+ }
50
+ }
51
+ }
52
+ render() {
53
+ return html `<slot @slotchange=${this._handleSlotChange}></slot>`;
54
+ }
55
+ }
56
+ SgdsSubnavItem.styles = [...SgdsElement.styles, css_248z];
57
+ __decorate([
58
+ property({ type: Boolean })
59
+ ], SgdsSubnavItem.prototype, "active", void 0);
60
+ __decorate([
61
+ property({ type: Boolean, reflect: true })
62
+ ], SgdsSubnavItem.prototype, "disabled", void 0);
63
+ __decorate([
64
+ watch("disabled")
65
+ ], SgdsSubnavItem.prototype, "_handleDisabled", null);
66
+
67
+ export { SgdsSubnavItem, SgdsSubnavItem as default };
68
+ //# sourceMappingURL=sgds-subnav-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sgds-subnav-item.js","sources":["../../../src/components/Subnav/sgds-subnav-item.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { watch } from \"../../utils/watch\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport subnavItemStyle from \"./subnav-item.css\";\n\n/**\n * @slot default - slot for SgdsSubnavItem element.\n *\n * */\nexport class SgdsSubnavItem extends SgdsElement {\n static styles = [...SgdsElement.styles, subnavItemStyle];\n\n /** when true, sets the active stylings of .nav-link */\n @property({ type: Boolean })\n active = false;\n\n /** Disables the SgdsSubnavItem */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @watch(\"disabled\")\n _handleDisabled() {\n this.setAttribute(\"aria-disabled\", `${this.disabled}`);\n }\n\n private _handleSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n const assignedElements = slot.assignedElements({ flatten: true });\n const anchorItems = assignedElements.filter(\n item => item.tagName.toLowerCase() === \"a\" || item.tagName.toLowerCase() === \"sgds-link\"\n );\n\n if (anchorItems.length > 1) {\n console.error(\"More than one anchor tag is added to sgds-subnav-item\");\n return;\n }\n\n if (anchorItems.length === 0) {\n const nodes = slot.assignedNodes({ flatten: true });\n nodes.forEach(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n const hyperlink = document.createElement(\"a\");\n hyperlink.textContent = node.textContent;\n node.parentNode.replaceChild(hyperlink, node);\n }\n });\n }\n\n if (anchorItems.length === 1) {\n const anchor = anchorItems[0] as HTMLAnchorElement;\n\n if (this.active) {\n anchor.setAttribute(\"aria-current\", \"true\");\n }\n\n if (this.disabled) {\n anchor.setAttribute(\"href\", \"javascript:void(0)\");\n anchor.setAttribute(\"tabindex\", \"-1\");\n }\n }\n }\n\n render() {\n return html`<slot @slotchange=${this._handleSlotChange}></slot>`;\n }\n}\n\nexport default SgdsSubnavItem;\n"],"names":["subnavItemStyle"],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import SgdsElement from "../../base/sgds-element";
2
+ import SgdsIcon from "../Icon/sgds-icon";
3
+ /**
4
+ * @summary This component provides secondary navigation within a specific section or page. It typically appears below the main navigation and offers context-specific links or actions to help users explore related content.
5
+ *
6
+ * @event sgds-show - Emitted on show. Only for collapsed menu.
7
+ * @event sgds-after-show - Emitted on show after animation has completed. Only for collapsed menu.
8
+ * @event sgds-hide - Emitted on hide. Only for collapsed menu.
9
+ * @event sgds-after-hide - Emitted on hide after animation has completed. Only for collapsed menu.
10
+ *
11
+ * @slot default - Default slot of SgdsSubnav. Pass in SgdsSubnavItem elements here.
12
+ * @slot header - Slot for rendering the sub-navigation header or section title.
13
+ * @slot actions - Slot for inserting contextual action elements such as buttons, filters, or other controls aligned with the sub-navigation.
14
+ *
15
+ */
16
+ export declare class SgdsSubnav extends SgdsElement {
17
+ static styles: import("lit").CSSResult[];
18
+ /** @internal */
19
+ static dependencies: {
20
+ "sgds-icon": typeof SgdsIcon;
21
+ };
22
+ private nav;
23
+ private subnav;
24
+ private mobileNav;
25
+ private toggler;
26
+ private body;
27
+ private mobileActions;
28
+ private isCollapsed;
29
+ private isMenuOpen;
30
+ connectedCallback(): void;
31
+ disconnectedCallback(): void;
32
+ firstUpdated(): void;
33
+ private _handleResize;
34
+ private _updateMobileNavMaxHeight;
35
+ private _handleSlotChange;
36
+ private _handleClickOutOfElement;
37
+ private _toggleMenu;
38
+ /** Shows the menu. For when subnav is in the collapsed form */
39
+ show(): Promise<void>;
40
+ /** Hide the menu. For when subnav is in the collapsed form */
41
+ hide(): Promise<void>;
42
+ private _animateToShow;
43
+ private _animateToHide;
44
+ handleOpenChange(): Promise<void>;
45
+ render(): import("lit-html").TemplateResult<1>;
46
+ }
47
+ export default SgdsSubnav;
@@ -0,0 +1,253 @@
1
+ import { __decorate } from 'tslib';
2
+ import SgdsElement from '../../base/sgds-element.js';
3
+ import { html, nothing } from 'lit';
4
+ import { query, state } from 'lit/decorators.js';
5
+ import { classMap } from 'lit/directives/class-map.js';
6
+ import { watch } from '../../utils/watch.js';
7
+ import { waitForEvent } from '../../utils/event.js';
8
+ import { stopAnimations, animateTo, shimKeyframesHeightAuto } from '../../utils/animate.js';
9
+ import { setDefaultAnimation, getAnimation } from '../../utils/animation-registry.js';
10
+ import { LG_BREAKPOINT } from '../../utils/breakpoints.js';
11
+ import { SgdsIcon } from '../Icon/sgds-icon.js';
12
+ import css_248z from './subnav.js';
13
+ import css_248z$1 from '../../css/grid.js';
14
+
15
+ /**
16
+ * @summary This component provides secondary navigation within a specific section or page. It typically appears below the main navigation and offers context-specific links or actions to help users explore related content.
17
+ *
18
+ * @event sgds-show - Emitted on show. Only for collapsed menu.
19
+ * @event sgds-after-show - Emitted on show after animation has completed. Only for collapsed menu.
20
+ * @event sgds-hide - Emitted on hide. Only for collapsed menu.
21
+ * @event sgds-after-hide - Emitted on hide after animation has completed. Only for collapsed menu.
22
+ *
23
+ * @slot default - Default slot of SgdsSubnav. Pass in SgdsSubnavItem elements here.
24
+ * @slot header - Slot for rendering the sub-navigation header or section title.
25
+ * @slot actions - Slot for inserting contextual action elements such as buttons, filters, or other controls aligned with the sub-navigation.
26
+ *
27
+ */
28
+ class SgdsSubnav extends SgdsElement {
29
+ constructor() {
30
+ super(...arguments);
31
+ this.isCollapsed = false;
32
+ this.isMenuOpen = false;
33
+ this._handleResize = () => {
34
+ this.isCollapsed = window.innerWidth < LG_BREAKPOINT;
35
+ if (!this.isCollapsed) {
36
+ this.isMenuOpen = false;
37
+ }
38
+ this._updateMobileNavMaxHeight();
39
+ };
40
+ this._updateMobileNavMaxHeight = () => {
41
+ if (!this.nav || !this.subnav || !this.mobileActions || !this.mobileNav)
42
+ return;
43
+ const { top: subnavTop } = this.nav.getBoundingClientRect();
44
+ const headerHeight = this.subnav.clientHeight;
45
+ const actionsButtonHeight = this.mobileActions.clientHeight;
46
+ const offset = subnavTop + headerHeight + actionsButtonHeight;
47
+ this.mobileNav.style.maxHeight = `calc(100dvh - ${offset}px)`;
48
+ };
49
+ this._toggleMenu = () => {
50
+ var _a;
51
+ if (this.isMenuOpen) {
52
+ this.hide();
53
+ }
54
+ else {
55
+ document.querySelector("body").style.overflow = "hidden";
56
+ this.show();
57
+ }
58
+ (_a = this.toggler) === null || _a === void 0 ? void 0 : _a.focus();
59
+ };
60
+ }
61
+ connectedCallback() {
62
+ super.connectedCallback();
63
+ this._handleResize();
64
+ window.addEventListener("resize", this._handleResize);
65
+ window.addEventListener("click", (event) => this._handleClickOutOfElement(event, this.body));
66
+ }
67
+ disconnectedCallback() {
68
+ super.disconnectedCallback();
69
+ window.removeEventListener("resize", this._handleResize);
70
+ window.removeEventListener("click", (event) => this._handleClickOutOfElement(event, this.body));
71
+ }
72
+ firstUpdated() {
73
+ this._updateMobileNavMaxHeight();
74
+ }
75
+ _handleSlotChange(e) {
76
+ const childElements = e.target.assignedElements({ flatten: true });
77
+ if (this.isCollapsed) {
78
+ childElements.forEach(element => {
79
+ element.setAttribute("isCollapsed", `${this.isCollapsed}`);
80
+ });
81
+ }
82
+ else {
83
+ childElements.forEach(element => {
84
+ element.removeAttribute("isCollapsed");
85
+ });
86
+ }
87
+ }
88
+ _handleClickOutOfElement(e, self) {
89
+ if (!e.composedPath().includes(self) && !e.composedPath().includes(this.toggler)) {
90
+ this.hide();
91
+ }
92
+ }
93
+ /** Shows the menu. For when subnav is in the collapsed form */
94
+ async show() {
95
+ if (this.isMenuOpen) {
96
+ return;
97
+ }
98
+ this.isMenuOpen = true;
99
+ return waitForEvent(this, "sgds-after-show");
100
+ }
101
+ /** Hide the menu. For when subnav is in the collapsed form */
102
+ async hide() {
103
+ if (!this.isMenuOpen) {
104
+ return;
105
+ }
106
+ this.isMenuOpen = false;
107
+ document.querySelector("body").style.removeProperty("overflow");
108
+ return waitForEvent(this, "sgds-after-hide");
109
+ }
110
+ async _animateToShow() {
111
+ const sgdsShow = this.emit("sgds-show", { cancelable: true });
112
+ if (sgdsShow.defaultPrevented) {
113
+ this.isMenuOpen = false;
114
+ return;
115
+ }
116
+ await stopAnimations(this.mobileNav);
117
+ this.mobileNav.classList.remove("hidden");
118
+ const { keyframes, options } = getAnimation(this, "subnav.show");
119
+ await animateTo(this.mobileNav, shimKeyframesHeightAuto(keyframes, this.mobileNav.scrollHeight), options);
120
+ // this.mobileNav.style.height = "auto";
121
+ this.emit("sgds-after-show");
122
+ }
123
+ async _animateToHide() {
124
+ const slHide = this.emit("sgds-hide", { cancelable: true });
125
+ if (slHide.defaultPrevented) {
126
+ this.isMenuOpen = true;
127
+ return;
128
+ }
129
+ await stopAnimations(this.mobileNav);
130
+ const { keyframes, options } = getAnimation(this, "subnav.hide");
131
+ await animateTo(this.mobileNav, shimKeyframesHeightAuto(keyframes, this.mobileNav.scrollHeight), options);
132
+ this.mobileNav.classList.add("hidden");
133
+ // this.mobileNav.style.height = "auto";
134
+ this.emit("sgds-after-hide");
135
+ }
136
+ async handleOpenChange() {
137
+ if (this.isMenuOpen) {
138
+ // Show
139
+ this._animateToShow();
140
+ }
141
+ else {
142
+ // Hide
143
+ this._animateToHide();
144
+ }
145
+ }
146
+ render() {
147
+ const isHydrated = this.hasUpdated;
148
+ return html `
149
+ <nav
150
+ class=${classMap({
151
+ mobile: this.isCollapsed
152
+ })}
153
+ aria-label="Sub navigation"
154
+ >
155
+ <div
156
+ class=${classMap({
157
+ "sgds-container": !this.isCollapsed,
158
+ subnav: true,
159
+ mobile: this.isCollapsed,
160
+ collapsed: !this.isMenuOpen
161
+ })}
162
+ >
163
+ <slot name="header"></slot>
164
+ ${this.isCollapsed
165
+ ? html `
166
+ <sgds-icon
167
+ class="subnav-toggler"
168
+ name="chevron-down"
169
+ @click=${this._toggleMenu}
170
+ aria-label="Toggle sub navigation"
171
+ ></sgds-icon>
172
+ `
173
+ : html `
174
+ <div class="subnav-nav-group">
175
+ <div class="subnav-nav">
176
+ <slot @slotchange="${this._handleSlotChange}"></slot>
177
+ </div>
178
+ <div class="subnav-actions">
179
+ <slot name="actions"></slot>
180
+ </div>
181
+ </div>
182
+ `}
183
+ </div>
184
+ ${this.isCollapsed
185
+ ? html `
186
+ <div class="subnav-dropdown">
187
+ <div
188
+ class=${classMap({
189
+ "subnav-nav-mobile": true,
190
+ hidden: !this.isMenuOpen && !isHydrated
191
+ })}
192
+ >
193
+ <slot @slotchange="${this._handleSlotChange}"></slot>
194
+ </div>
195
+ <div class="subnav-actions-mobile">
196
+ <slot name="actions"></slot>
197
+ </div>
198
+ </div>
199
+ `
200
+ : nothing}
201
+ </nav>
202
+ `;
203
+ }
204
+ }
205
+ SgdsSubnav.styles = [...SgdsElement.styles, css_248z, css_248z$1];
206
+ /** @internal */
207
+ SgdsSubnav.dependencies = {
208
+ "sgds-icon": SgdsIcon
209
+ };
210
+ __decorate([
211
+ query("nav")
212
+ ], SgdsSubnav.prototype, "nav", void 0);
213
+ __decorate([
214
+ query(".subnav")
215
+ ], SgdsSubnav.prototype, "subnav", void 0);
216
+ __decorate([
217
+ query(".subnav-nav-mobile")
218
+ ], SgdsSubnav.prototype, "mobileNav", void 0);
219
+ __decorate([
220
+ query(".subnav-toggler")
221
+ ], SgdsSubnav.prototype, "toggler", void 0);
222
+ __decorate([
223
+ query(".subnav-dropdown")
224
+ ], SgdsSubnav.prototype, "body", void 0);
225
+ __decorate([
226
+ query(".subnav-actions-mobile")
227
+ ], SgdsSubnav.prototype, "mobileActions", void 0);
228
+ __decorate([
229
+ state()
230
+ ], SgdsSubnav.prototype, "isCollapsed", void 0);
231
+ __decorate([
232
+ state()
233
+ ], SgdsSubnav.prototype, "isMenuOpen", void 0);
234
+ __decorate([
235
+ watch("isMenuOpen", { waitUntilFirstUpdate: true })
236
+ ], SgdsSubnav.prototype, "handleOpenChange", null);
237
+ setDefaultAnimation("subnav.show", {
238
+ keyframes: [
239
+ { height: "0", opacity: "0" },
240
+ { height: "auto", opacity: "1" }
241
+ ],
242
+ options: { duration: 200, easing: "ease-in-out" }
243
+ });
244
+ setDefaultAnimation("subnav.hide", {
245
+ keyframes: [
246
+ { height: "auto", opacity: "1" },
247
+ { height: "0", opacity: "0" }
248
+ ],
249
+ options: { duration: 200, easing: "ease-in-out" }
250
+ });
251
+
252
+ export { SgdsSubnav, SgdsSubnav as default };
253
+ //# sourceMappingURL=sgds-subnav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sgds-subnav.js","sources":["../../../src/components/Subnav/sgds-subnav.ts"],"sourcesContent":["import SgdsElement from \"../../base/sgds-element\";\nimport { html, nothing } from \"lit\";\nimport { query, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { watch } from \"../../utils/watch\";\nimport { waitForEvent } from \"../../utils/event\";\nimport { animateTo, shimKeyframesHeightAuto, stopAnimations } from \"../../utils/animate\";\nimport { getAnimation, setDefaultAnimation } from \"../../utils/animation-registry\";\nimport { LG_BREAKPOINT } from \"../../utils/breakpoints\";\nimport SgdsIcon from \"../Icon/sgds-icon\";\nimport subnavStyle from \"./subnav.css\";\nimport gridStyle from \"../../css/grid.css\";\n\n/**\n * @summary This component provides secondary navigation within a specific section or page. It typically appears below the main navigation and offers context-specific links or actions to help users explore related content.\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 SgdsSubnav. Pass in SgdsSubnavItem elements here.\n * @slot header - Slot for rendering the sub-navigation header or section title.\n * @slot actions - Slot for inserting contextual action elements such as buttons, filters, or other controls aligned with the sub-navigation.\n *\n */\n\nexport class SgdsSubnav extends SgdsElement {\n static styles = [...SgdsElement.styles, subnavStyle, gridStyle];\n /** @internal */\n static dependencies = {\n \"sgds-icon\": SgdsIcon\n };\n\n @query(\"nav\")\n private nav: HTMLElement;\n\n @query(\".subnav\")\n private subnav: HTMLElement;\n\n @query(\".subnav-nav-mobile\")\n private mobileNav: HTMLElement;\n\n @query(\".subnav-toggler\")\n private toggler: HTMLElement;\n\n @query(\".subnav-dropdown\")\n private body: HTMLElement;\n\n @query(\".subnav-actions-mobile\")\n private mobileActions: HTMLElement;\n\n @state()\n private isCollapsed = false;\n\n @state()\n private isMenuOpen = false;\n\n connectedCallback() {\n super.connectedCallback();\n this._handleResize();\n window.addEventListener(\"resize\", this._handleResize);\n window.addEventListener(\"click\", (event: MouseEvent) => this._handleClickOutOfElement(event, this.body));\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener(\"resize\", this._handleResize);\n window.removeEventListener(\"click\", (event: MouseEvent) => this._handleClickOutOfElement(event, this.body));\n }\n\n firstUpdated() {\n this._updateMobileNavMaxHeight();\n }\n\n private _handleResize = () => {\n this.isCollapsed = window.innerWidth < LG_BREAKPOINT;\n\n if (!this.isCollapsed) {\n this.isMenuOpen = false;\n }\n\n this._updateMobileNavMaxHeight();\n };\n\n private _updateMobileNavMaxHeight = () => {\n if (!this.nav || !this.subnav || !this.mobileActions || !this.mobileNav) return;\n const { top: subnavTop } = this.nav.getBoundingClientRect();\n const headerHeight = this.subnav.clientHeight;\n const actionsButtonHeight = this.mobileActions.clientHeight;\n const offset = subnavTop + headerHeight + actionsButtonHeight;\n this.mobileNav.style.maxHeight = `calc(100dvh - ${offset}px)`;\n };\n\n private _handleSlotChange(e: Event) {\n const childElements = (e.target as HTMLSlotElement).assignedElements({ flatten: true });\n\n if (this.isCollapsed) {\n childElements.forEach(element => {\n element.setAttribute(\"isCollapsed\", `${this.isCollapsed}`);\n });\n } else {\n childElements.forEach(element => {\n element.removeAttribute(\"isCollapsed\");\n });\n }\n }\n\n private _handleClickOutOfElement(e: MouseEvent, self: HTMLElement) {\n if (!e.composedPath().includes(self) && !e.composedPath().includes(this.toggler)) {\n this.hide();\n }\n }\n\n private _toggleMenu = () => {\n if (this.isMenuOpen) {\n this.hide();\n } else {\n document.querySelector(\"body\").style.overflow = \"hidden\";\n this.show();\n }\n\n this.toggler?.focus();\n };\n\n /** Shows the menu. For when subnav is in the collapsed form */\n public async show() {\n if (this.isMenuOpen) {\n return;\n }\n\n this.isMenuOpen = true;\n return waitForEvent(this, \"sgds-after-show\");\n }\n\n /** Hide the menu. For when subnav is in the collapsed form */\n public async hide() {\n if (!this.isMenuOpen) {\n return;\n }\n\n this.isMenuOpen = false;\n document.querySelector(\"body\").style.removeProperty(\"overflow\");\n\n return waitForEvent(this, \"sgds-after-hide\");\n }\n\n private async _animateToShow() {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.isMenuOpen = false;\n return;\n }\n\n await stopAnimations(this.mobileNav);\n this.mobileNav.classList.remove(\"hidden\");\n\n const { keyframes, options } = getAnimation(this, \"subnav.show\");\n await animateTo(this.mobileNav, shimKeyframesHeightAuto(keyframes, this.mobileNav.scrollHeight), options);\n // this.mobileNav.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.isMenuOpen = true;\n return;\n }\n\n await stopAnimations(this.mobileNav);\n\n const { keyframes, options } = getAnimation(this, \"subnav.hide\");\n await animateTo(this.mobileNav, shimKeyframesHeightAuto(keyframes, this.mobileNav.scrollHeight), options);\n this.mobileNav.classList.add(\"hidden\");\n // this.mobileNav.style.height = \"auto\";\n\n this.emit(\"sgds-after-hide\");\n }\n\n @watch(\"isMenuOpen\", { waitUntilFirstUpdate: true })\n async handleOpenChange() {\n if (this.isMenuOpen) {\n // Show\n this._animateToShow();\n } else {\n // Hide\n this._animateToHide();\n }\n }\n\n render() {\n const isHydrated = this.hasUpdated;\n\n return html`\n <nav\n class=${classMap({\n mobile: this.isCollapsed\n })}\n aria-label=\"Sub navigation\"\n >\n <div\n class=${classMap({\n \"sgds-container\": !this.isCollapsed,\n subnav: true,\n mobile: this.isCollapsed,\n collapsed: !this.isMenuOpen\n })}\n >\n <slot name=\"header\"></slot>\n ${this.isCollapsed\n ? html`\n <sgds-icon\n class=\"subnav-toggler\"\n name=\"chevron-down\"\n @click=${this._toggleMenu}\n aria-label=\"Toggle sub navigation\"\n ></sgds-icon>\n `\n : html`\n <div class=\"subnav-nav-group\">\n <div class=\"subnav-nav\">\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n </div>\n <div class=\"subnav-actions\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n `}\n </div>\n ${this.isCollapsed\n ? html`\n <div class=\"subnav-dropdown\">\n <div\n class=${classMap({\n \"subnav-nav-mobile\": true,\n hidden: !this.isMenuOpen && !isHydrated\n })}\n >\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n </div>\n <div class=\"subnav-actions-mobile\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n `\n : nothing}\n </nav>\n `;\n }\n}\n\nsetDefaultAnimation(\"subnav.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(\"subnav.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 SgdsSubnav;\n"],"names":["subnavStyle","gridStyle"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { css } from 'lit';
2
+
3
+ var css_248z = css`:host(:not([disabled])[active]) ::slotted(*){border-bottom:var(--sgds-border-width-2) solid var(--sgds-primary-border-color-default)}:host([isCollapsed]) ::slotted(*){padding:var(--sgds-padding-sm) var(--sgds-padding-lg)}:host(:not([disabled])[isCollapsed][active]) ::slotted(*){background-color:var(--sgds-bg-translucent-subtle);border-bottom:none}::slotted(*){--sgds-font-size-2:var(--sgds-font-size-1);--sgds-link-color-default:var(--sgds-color-default);box-sizing:border-box;color:var(--sgds-link-color-default,var(--sgds-color-default));cursor:pointer;display:flex;font-size:var(--sgds-font-size-2,var(--sgds-font-size-1));padding:var(--sgds-padding-lg) var(--sgds-padding-none);text-decoration:none!important;white-space:nowrap}:host(:not([disabled])[active]) ::slotted(*){--sgds-link-color-default:var(--sgds-primary-color-default);color:var(--sgds-link-color-default,var(--sgds-primary-color-default))}:host([disabled]) ::slotted(a:hover){--sgds-link-color-emphasis:var(--sgds-color-default);color:var(--sgds-link-color-emphasis,var(--sgds-color-default))}:host(:not([disabled])) ::slotted(a:hover){--sgds-link-color-emphasis:var(--sgds-primary-color-default);color:var(--sgds-link-color-emphasis,var(--sgds-primary-color-default))}::slotted(a:focus),::slotted(a:focus-visible){outline:0}::slotted(a:focus-visible){--sgds-link-color-emphasis:var(--sgds-primary-color-default);box-shadow:var(--sgds-box-shadow-focus) inset;color:var(--sgds-link-color-emphasis,var(--sgds-primary-color-default))}:host([disabled]) ::slotted(*){cursor:not-allowed;opacity:var(--sgds-opacity-50)}`;
4
+
5
+ export { css_248z as default };
6
+ //# sourceMappingURL=subnav-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subnav-item.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,6 @@
1
+ import { css } from 'lit';
2
+
3
+ var css_248z = css`:host{position:sticky;top:0;z-index:1000}nav{background-color:var(--sgds-surface-default);border-bottom:var(--sgds-border-width-1) solid var(--sgds-border-color-muted)}nav.mobile{border-bottom:none}.subnav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:var(--sgds-gap-xl);row-gap:var(--sgds-gap-none)}.subnav.mobile{gap:var(--sgds-gap-md);padding:var(--sgds-padding-md) var(--sgds-padding-lg)}slot[name=header]::slotted(*){--sgds-margin-3-xs:var(--sgds-margin-none);flex:1 1 auto;margin-bottom:var(--sgds-margin-3-xs,--sgds-margin-none);padding-top:var(--sgds-padding-lg)}.subnav.mobile slot[name=header]::slotted(*){padding-top:var(--sgds-padding-none)}.subnav-nav-group{flex:1 1 0;gap:var(--sgds-gap-xl);justify-content:space-between}.subnav-nav,.subnav-nav-group{align-items:center;display:flex}.subnav-nav{gap:var(--sgds-gap-lg)}.subnav-nav-mobile{display:flex;flex-direction:column;overflow-y:auto;transition:transform .2s ease-in-out}.subnav-actions{align-items:center;display:flex;gap:var(--sgds-gap-md)}.subnav-toggler{cursor:pointer;transition:transform .2s ease-in-out}.subnav:not(.collapsed) .subnav-toggler{transform:rotate(-180deg)}.subnav-dropdown{background-color:var(--sgds-surface-default);border-bottom:var(--sgds-border-width-1) solid var(--sgds-border-color-muted);width:100%}.subnav-actions-mobile{bottom:0;display:flex;flex-direction:column;gap:var(--sgds-gap-md);padding:var(--sgds-padding-md) var(--sgds-padding-lg);position:sticky}.hidden{display:none}`;
4
+
5
+ export { css_248z as default };
6
+ //# sourceMappingURL=subnav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subnav.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -34,12 +34,14 @@ export * from "./ProgressBar/sgds-progress-bar";
34
34
  export * from "./QuantityToggle/sgds-quantity-toggle";
35
35
  export * from "./Radio/sgds-radio";
36
36
  export * from "./Radio/sgds-radio-group";
37
+ export * from "./Select/sgds-select";
37
38
  export * from "./Sidenav/sgds-sidenav";
38
39
  export * from "./Sidenav/sgds-sidenav-item";
39
40
  export * from "./Sidenav/sgds-sidenav-link";
40
41
  export * from "./Skeleton/sgds-skeleton";
41
42
  export * from "./Spinner/sgds-spinner";
42
43
  export * from "./Stepper/sgds-stepper";
44
+ export * from "./Subnav/sgds-subnav";
43
45
  export * from "./Switch/sgds-switch";
44
46
  export * from "./Tab/sgds-tab";
45
47
  export * from "./Tab/sgds-tab-group";
@@ -34,12 +34,14 @@ export { SgdsProgressBar } from './ProgressBar/sgds-progress-bar.js';
34
34
  export { SgdsQuantityToggle } from './QuantityToggle/sgds-quantity-toggle.js';
35
35
  export { SgdsRadio } from './Radio/sgds-radio.js';
36
36
  export { SgdsRadioGroup } from './Radio/sgds-radio-group.js';
37
+ export { SgdsSelect } from './Select/sgds-select.js';
37
38
  export { SgdsSidenav } from './Sidenav/sgds-sidenav.js';
38
39
  export { SgdsSidenavItem } from './Sidenav/sgds-sidenav-item.js';
39
40
  export { SgdsSidenavLink } from './Sidenav/sgds-sidenav-link.js';
40
41
  export { SgdsSkeleton } from './Skeleton/sgds-skeleton.js';
41
42
  export { SgdsSpinner } from './Spinner/sgds-spinner.js';
42
43
  export { SgdsStepper } from './Stepper/sgds-stepper.js';
44
+ export { SgdsSubnav } from './Subnav/sgds-subnav.js';
43
45
  export { SgdsSwitch } from './Switch/sgds-switch.js';
44
46
  export { SgdsTab } from './Tab/sgds-tab.js';
45
47
  export { SgdsTabGroup } from './Tab/sgds-tab-group.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}