@govtechsg/sgds-web-component 3.14.1-rc.1 → 3.15.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 (154) hide show
  1. package/base/dropdown-element.d.ts +2 -0
  2. package/base/dropdown-element.js +8 -2
  3. package/base/dropdown-element.js.map +1 -1
  4. package/components/Breadcrumb/index.umd.min.js +1 -1
  5. package/components/Breadcrumb/index.umd.min.js.map +1 -1
  6. package/components/ComboBox/index.umd.min.js +24 -24
  7. package/components/ComboBox/index.umd.min.js.map +1 -1
  8. package/components/ComboBox/sgds-combo-box.js +2 -2
  9. package/components/ComboBox/sgds-combo-box.js.map +1 -1
  10. package/components/Datepicker/datepicker.js +1 -1
  11. package/components/Datepicker/index.umd.min.js +3 -3
  12. package/components/Datepicker/index.umd.min.js.map +1 -1
  13. package/components/Datepicker/sgds-datepicker.js +1 -1
  14. package/components/Datepicker/sgds-datepicker.js.map +1 -1
  15. package/components/Dropdown/dropdown-menu.js +1 -1
  16. package/components/Dropdown/index.umd.min.js +1 -1
  17. package/components/Dropdown/index.umd.min.js.map +1 -1
  18. package/components/Dropdown/sgds-dropdown.js +1 -1
  19. package/components/Dropdown/sgds-dropdown.js.map +1 -1
  20. package/components/Mainnav/index.umd.min.js +2 -2
  21. package/components/Mainnav/index.umd.min.js.map +1 -1
  22. package/components/OverflowMenu/index.umd.min.js +1 -1
  23. package/components/OverflowMenu/index.umd.min.js.map +1 -1
  24. package/components/Select/index.umd.min.js +7 -7
  25. package/components/Select/index.umd.min.js.map +1 -1
  26. package/components/Select/sgds-select.js +2 -2
  27. package/components/Select/sgds-select.js.map +1 -1
  28. package/components/index.d.ts +0 -1
  29. package/components/index.js +0 -1
  30. package/components/index.js.map +1 -1
  31. package/components/index.umd.min.js +75 -128
  32. package/components/index.umd.min.js.map +1 -1
  33. package/css/fouc.css +0 -4
  34. package/css/utility.css +25 -18
  35. package/index.d.ts +0 -1
  36. package/index.js +0 -1
  37. package/index.js.map +1 -1
  38. package/index.umd.min.js +63 -194
  39. package/index.umd.min.js.map +1 -1
  40. package/package.json +1 -1
  41. package/react/base/dropdown-element.cjs.js +8 -2
  42. package/react/base/dropdown-element.cjs.js.map +1 -1
  43. package/react/base/dropdown-element.js +8 -2
  44. package/react/base/dropdown-element.js.map +1 -1
  45. package/react/components/ComboBox/sgds-combo-box.cjs.js +2 -2
  46. package/react/components/ComboBox/sgds-combo-box.cjs.js.map +1 -1
  47. package/react/components/ComboBox/sgds-combo-box.js +2 -2
  48. package/react/components/ComboBox/sgds-combo-box.js.map +1 -1
  49. package/react/components/Datepicker/datepicker.cjs.js +1 -1
  50. package/react/components/Datepicker/datepicker.js +1 -1
  51. package/react/components/Datepicker/sgds-datepicker.cjs.js +1 -1
  52. package/react/components/Datepicker/sgds-datepicker.cjs.js.map +1 -1
  53. package/react/components/Datepicker/sgds-datepicker.js +1 -1
  54. package/react/components/Datepicker/sgds-datepicker.js.map +1 -1
  55. package/react/components/Dropdown/dropdown-menu.cjs.js +1 -1
  56. package/react/components/Dropdown/dropdown-menu.js +1 -1
  57. package/react/components/Dropdown/sgds-dropdown.cjs.js +1 -1
  58. package/react/components/Dropdown/sgds-dropdown.cjs.js.map +1 -1
  59. package/react/components/Dropdown/sgds-dropdown.js +1 -1
  60. package/react/components/Dropdown/sgds-dropdown.js.map +1 -1
  61. package/react/components/Select/sgds-select.cjs.js +2 -2
  62. package/react/components/Select/sgds-select.cjs.js.map +1 -1
  63. package/react/components/Select/sgds-select.js +2 -2
  64. package/react/components/Select/sgds-select.js.map +1 -1
  65. package/react/index.cjs.js +48 -56
  66. package/react/index.cjs.js.map +1 -1
  67. package/react/index.d.ts +0 -4
  68. package/react/index.js +0 -4
  69. package/react/index.js.map +1 -1
  70. package/base/sidebar-element.d.ts +0 -112
  71. package/base/sidebar-element.js +0 -281
  72. package/base/sidebar-element.js.map +0 -1
  73. package/components/Sidebar/index.d.ts +0 -16
  74. package/components/Sidebar/index.js +0 -10
  75. package/components/Sidebar/index.js.map +0 -1
  76. package/components/Sidebar/index.umd.min.js +0 -2501
  77. package/components/Sidebar/index.umd.min.js.map +0 -1
  78. package/components/Sidebar/sgds-sidebar-group.d.ts +0 -51
  79. package/components/Sidebar/sgds-sidebar-group.js +0 -124
  80. package/components/Sidebar/sgds-sidebar-group.js.map +0 -1
  81. package/components/Sidebar/sgds-sidebar-item.d.ts +0 -25
  82. package/components/Sidebar/sgds-sidebar-item.js +0 -73
  83. package/components/Sidebar/sgds-sidebar-item.js.map +0 -1
  84. package/components/Sidebar/sgds-sidebar-section.d.ts +0 -56
  85. package/components/Sidebar/sgds-sidebar-section.js +0 -125
  86. package/components/Sidebar/sgds-sidebar-section.js.map +0 -1
  87. package/components/Sidebar/sgds-sidebar.d.ts +0 -156
  88. package/components/Sidebar/sgds-sidebar.js +0 -412
  89. package/components/Sidebar/sgds-sidebar.js.map +0 -1
  90. package/components/Sidebar/sidebar-context.d.ts +0 -51
  91. package/components/Sidebar/sidebar-context.js +0 -45
  92. package/components/Sidebar/sidebar-context.js.map +0 -1
  93. package/components/Sidebar/sidebar-item.js +0 -6
  94. package/components/Sidebar/sidebar-item.js.map +0 -1
  95. package/components/Sidebar/sidebar-section.js +0 -6
  96. package/components/Sidebar/sidebar-section.js.map +0 -1
  97. package/components/Sidebar/sidebar.js +0 -6
  98. package/components/Sidebar/sidebar.js.map +0 -1
  99. package/react/base/sidebar-element.cjs.js +0 -286
  100. package/react/base/sidebar-element.cjs.js.map +0 -1
  101. package/react/base/sidebar-element.js +0 -282
  102. package/react/base/sidebar-element.js.map +0 -1
  103. package/react/components/Sidebar/sgds-sidebar-group.cjs.js +0 -130
  104. package/react/components/Sidebar/sgds-sidebar-group.cjs.js.map +0 -1
  105. package/react/components/Sidebar/sgds-sidebar-group.js +0 -125
  106. package/react/components/Sidebar/sgds-sidebar-group.js.map +0 -1
  107. package/react/components/Sidebar/sgds-sidebar-item.cjs.js +0 -79
  108. package/react/components/Sidebar/sgds-sidebar-item.cjs.js.map +0 -1
  109. package/react/components/Sidebar/sgds-sidebar-item.js +0 -74
  110. package/react/components/Sidebar/sgds-sidebar-item.js.map +0 -1
  111. package/react/components/Sidebar/sgds-sidebar-section.cjs.js +0 -131
  112. package/react/components/Sidebar/sgds-sidebar-section.cjs.js.map +0 -1
  113. package/react/components/Sidebar/sgds-sidebar-section.js +0 -126
  114. package/react/components/Sidebar/sgds-sidebar-section.js.map +0 -1
  115. package/react/components/Sidebar/sgds-sidebar.cjs.js +0 -418
  116. package/react/components/Sidebar/sgds-sidebar.cjs.js.map +0 -1
  117. package/react/components/Sidebar/sgds-sidebar.js +0 -413
  118. package/react/components/Sidebar/sgds-sidebar.js.map +0 -1
  119. package/react/components/Sidebar/sidebar-context.cjs.js +0 -54
  120. package/react/components/Sidebar/sidebar-context.cjs.js.map +0 -1
  121. package/react/components/Sidebar/sidebar-context.js +0 -46
  122. package/react/components/Sidebar/sidebar-context.js.map +0 -1
  123. package/react/components/Sidebar/sidebar-item.cjs.js +0 -11
  124. package/react/components/Sidebar/sidebar-item.cjs.js.map +0 -1
  125. package/react/components/Sidebar/sidebar-item.js +0 -7
  126. package/react/components/Sidebar/sidebar-item.js.map +0 -1
  127. package/react/components/Sidebar/sidebar-section.cjs.js +0 -11
  128. package/react/components/Sidebar/sidebar-section.cjs.js.map +0 -1
  129. package/react/components/Sidebar/sidebar-section.js +0 -7
  130. package/react/components/Sidebar/sidebar-section.js.map +0 -1
  131. package/react/components/Sidebar/sidebar.cjs.js +0 -11
  132. package/react/components/Sidebar/sidebar.cjs.js.map +0 -1
  133. package/react/components/Sidebar/sidebar.js +0 -7
  134. package/react/components/Sidebar/sidebar.js.map +0 -1
  135. package/react/sidebar/index.cjs.js +0 -42
  136. package/react/sidebar/index.cjs.js.map +0 -1
  137. package/react/sidebar/index.d.ts +0 -2
  138. package/react/sidebar/index.js +0 -18
  139. package/react/sidebar/index.js.map +0 -1
  140. package/react/sidebar-group/index.cjs.js +0 -40
  141. package/react/sidebar-group/index.cjs.js.map +0 -1
  142. package/react/sidebar-group/index.d.ts +0 -2
  143. package/react/sidebar-group/index.js +0 -16
  144. package/react/sidebar-group/index.js.map +0 -1
  145. package/react/sidebar-item/index.cjs.js +0 -40
  146. package/react/sidebar-item/index.cjs.js.map +0 -1
  147. package/react/sidebar-item/index.d.ts +0 -2
  148. package/react/sidebar-item/index.js +0 -16
  149. package/react/sidebar-item/index.js.map +0 -1
  150. package/react/sidebar-section/index.cjs.js +0 -40
  151. package/react/sidebar-section/index.cjs.js.map +0 -1
  152. package/react/sidebar-section/index.d.ts +0 -2
  153. package/react/sidebar-section/index.js +0 -16
  154. package/react/sidebar-section/index.js.map +0 -1
@@ -1,130 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
- var tslib = require('tslib');
7
- var lit = require('lit');
8
- var decorators_js = require('lit/decorators.js');
9
- var classMap_js = require('lit/directives/class-map.js');
10
- var sgdsElement = require('../../base/sgds-element.cjs.js');
11
- var sidebarItem = require('./sidebar-item.cjs.js');
12
- var sgdsIcon = require('../Icon/sgds-icon.cjs.js');
13
- var sidebarElement = require('../../base/sidebar-element.cjs.js');
14
-
15
- /**
16
- * @summary Sidebar group represents a navigable parent item within the sidebar that can have nested children.
17
- * Groups support multiple levels of nesting and show nested items in a drawer overlay or submenu.
18
- * Groups can be used to organize related sidebar items into expanding/collapsing sections.
19
- *
20
- * Behavior varies by nesting level:
21
- * - Level 0 (root): Clicking opens drawer overlay showing all nested children. Keyboard: ArrowRight opens drawer.
22
- * - Level 1+ (nested): Clicking toggles submenu visibility. Keyboard: ArrowRight toggles submenu.
23
- *
24
- * @slot default - Insert sgds-sidebar-group or sgds-sidebar-item elements as nested children
25
- * @slot trailingIcon - Icon to display after the label text. A chevron is auto-appended.
26
- *
27
- */
28
- class SgdsSidebarGroup extends sidebarElement.SidebarElement {
29
- constructor() {
30
- super(...arguments);
31
- /**
32
- * Manages submenu visibility state for nested groups.
33
- * When true, the submenu is displayed showing nested children.
34
- * When false, the submenu is hidden.
35
- * Only used for nested groups (level 1+). Root-level groups use drawer overlay instead.
36
- * @internal
37
- */
38
- this._showMenu = false;
39
- }
40
- /**
41
- * Reports the visibility state of the submenu for nested groups.
42
- * Returns true when the submenu is displayed showing child items, false when hidden.
43
- * Only applicable for nested groups (level 1+). Root-level groups use drawer overlay instead.
44
- * @readonly
45
- * @type {boolean}
46
- */
47
- get showMenu() {
48
- return this._showMenu;
49
- }
50
- /** @internal */
51
- _handleClick() {
52
- if (this._childLevel !== 0) {
53
- this._showMenu = !this._showMenu;
54
- this._childElements.forEach(v => {
55
- v._hidden = !this._showMenu;
56
- });
57
- }
58
- else {
59
- super._handleClick();
60
- }
61
- }
62
- /**
63
- * Determines the appropriate chevron icon based on nesting level and menu visibility.
64
- * Icon changes provide visual feedback on expandable/collapsible state:
65
- * - Level 0: chevron-right (closed drawer) or chevron-right (no change - drawer controlled by parent)
66
- * - Level 1+: chevron-down (submenu open) or chevron-up (submenu closed)
67
- * @private
68
- * @returns {string} The icon name to display (e.g., 'chevron-right', 'chevron-down')
69
- */
70
- getIcon() {
71
- if (this._childLevel === 0) {
72
- return "chevron-right";
73
- }
74
- else {
75
- return this._showMenu ? "chevron-down" : "chevron-up";
76
- }
77
- }
78
- render() {
79
- return lit.html `
80
- <div
81
- class=${classMap_js.classMap({
82
- "sidebar-item": true,
83
- "sidebar-item--collapsed": this._sidebarCollapsed && this._childLevel === 0,
84
- active: this._selected
85
- })}
86
- @click=${() => this._handleClick()}
87
- aria-level=${this._childLevel}
88
- .aria-expanded=${this._showMenu}
89
- aria-label=${this.title || this.name}
90
- tabindex=${this._childLevel > 1 && !this._showMenu ? -1 : 0}
91
- >
92
- <div class="sidebar-item-label-wrapper">
93
- <div>
94
- <slot name="leadingIcon"></slot>
95
- <span class="sidebar-item-label">${this.title}</span>
96
- </div>
97
-
98
- <span class="sidebar-item-trailingIcon">
99
- <slot name="trailingIcon"></slot>
100
- <sgds-icon name=${this.getIcon()} size="sm"></sgds-icon>
101
- </span>
102
- </div>
103
- </div>
104
-
105
- <div
106
- class=${classMap_js.classMap({
107
- "sidebar-submenu": true,
108
- "sidebar-submenu--collapsed": this._sidebarCollapsed && this._childLevel == 0,
109
- show: this._showMenu
110
- })}
111
- >
112
- <div>
113
- <slot @slotchange=${this._handleSlotChange}></slot>
114
- </div>
115
- </div>
116
- `;
117
- }
118
- }
119
- SgdsSidebarGroup.styles = [...sgdsElement["default"].styles, sidebarItem["default"]];
120
- /** @internal */
121
- SgdsSidebarGroup.dependencies = {
122
- "sgds-icon": sgdsIcon.SgdsIcon
123
- };
124
- tslib.__decorate([
125
- decorators_js.state()
126
- ], SgdsSidebarGroup.prototype, "_showMenu", void 0);
127
-
128
- exports.SgdsSidebarGroup = SgdsSidebarGroup;
129
- exports["default"] = SgdsSidebarGroup;
130
- //# sourceMappingURL=sgds-sidebar-group.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sgds-sidebar-group.cjs.js","sources":["../../../../src/components/Sidebar/sgds-sidebar-group.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport sidebarOptionStyle from \"./sidebar-item.css\";\nimport SgdsIcon from \"../Icon/sgds-icon\";\n\nimport { SidebarElement } from \"../../base/sidebar-element\";\n\n/**\n * @summary Sidebar group represents a navigable parent item within the sidebar that can have nested children.\n * Groups support multiple levels of nesting and show nested items in a drawer overlay or submenu.\n * Groups can be used to organize related sidebar items into expanding/collapsing sections.\n *\n * Behavior varies by nesting level:\n * - Level 0 (root): Clicking opens drawer overlay showing all nested children. Keyboard: ArrowRight opens drawer.\n * - Level 1+ (nested): Clicking toggles submenu visibility. Keyboard: ArrowRight toggles submenu.\n *\n * @slot default - Insert sgds-sidebar-group or sgds-sidebar-item elements as nested children\n * @slot trailingIcon - Icon to display after the label text. A chevron is auto-appended.\n *\n */\nexport class SgdsSidebarGroup extends SidebarElement {\n static styles = [...SgdsElement.styles, sidebarOptionStyle];\n\n /** @internal */\n static dependencies = {\n \"sgds-icon\": SgdsIcon\n };\n\n /**\n * Manages submenu visibility state for nested groups.\n * When true, the submenu is displayed showing nested children.\n * When false, the submenu is hidden.\n * Only used for nested groups (level 1+). Root-level groups use drawer overlay instead.\n * @internal\n */\n @state() _showMenu = false;\n\n /**\n * Reports the visibility state of the submenu for nested groups.\n * Returns true when the submenu is displayed showing child items, false when hidden.\n * Only applicable for nested groups (level 1+). Root-level groups use drawer overlay instead.\n * @readonly\n * @type {boolean}\n */\n get showMenu(): boolean {\n return this._showMenu;\n }\n\n /** @internal */\n _handleClick(): void {\n if (this._childLevel !== 0) {\n this._showMenu = !this._showMenu;\n this._childElements.forEach(v => {\n v._hidden = !this._showMenu;\n });\n } else {\n super._handleClick();\n }\n }\n /**\n * Determines the appropriate chevron icon based on nesting level and menu visibility.\n * Icon changes provide visual feedback on expandable/collapsible state:\n * - Level 0: chevron-right (closed drawer) or chevron-right (no change - drawer controlled by parent)\n * - Level 1+: chevron-down (submenu open) or chevron-up (submenu closed)\n * @private\n * @returns {string} The icon name to display (e.g., 'chevron-right', 'chevron-down')\n */\n private getIcon() {\n if (this._childLevel === 0) {\n return \"chevron-right\";\n } else {\n return this._showMenu ? \"chevron-down\" : \"chevron-up\";\n }\n }\n\n render() {\n return html`\n <div\n class=${classMap({\n \"sidebar-item\": true,\n \"sidebar-item--collapsed\": this._sidebarCollapsed && this._childLevel === 0,\n active: this._selected\n })}\n @click=${() => this._handleClick()}\n aria-level=${this._childLevel}\n .aria-expanded=${this._showMenu}\n aria-label=${this.title || this.name}\n tabindex=${this._childLevel > 1 && !this._showMenu ? -1 : 0}\n >\n <div class=\"sidebar-item-label-wrapper\">\n <div>\n <slot name=\"leadingIcon\"></slot>\n <span class=\"sidebar-item-label\">${this.title}</span>\n </div>\n\n <span class=\"sidebar-item-trailingIcon\">\n <slot name=\"trailingIcon\"></slot>\n <sgds-icon name=${this.getIcon()} size=\"sm\"></sgds-icon>\n </span>\n </div>\n </div>\n\n <div\n class=${classMap({\n \"sidebar-submenu\": true,\n \"sidebar-submenu--collapsed\": this._sidebarCollapsed && this._childLevel == 0,\n show: this._showMenu\n })}\n >\n <div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </div>\n `;\n }\n}\n\nexport default SgdsSidebarGroup;\n"],"names":["SidebarElement","html","classMap","SgdsElement","sidebarOptionStyle","SgdsIcon","__decorate","state"],"mappings":";;;;;;;;;;;;;;AASA;;;;;;;;;;;;AAYG;AACG,MAAO,gBAAiB,SAAQA,6BAAc,CAAA;AAApD,IAAA,WAAA,GAAA;;AAQE;;;;;;AAMG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAgF5B;AA9EC;;;;;;AAMG;AACH,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;;IAGD,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;AAC9B,gBAAA,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,aAAC,CAAC,CAAC;SACJ;aAAM;YACL,KAAK,CAAC,YAAY,EAAE,CAAC;SACtB;KACF;AACD;;;;;;;AAOG;IACK,OAAO,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,eAAe,CAAC;SACxB;aAAM;YACL,OAAO,IAAI,CAAC,SAAS,GAAG,cAAc,GAAG,YAAY,CAAC;SACvD;KACF;IAED,MAAM,GAAA;AACJ,QAAA,OAAOC,QAAI,CAAA,CAAA;;AAEC,cAAA,EAAAC,oBAAQ,CAAC;AACf,YAAA,cAAc,EAAE,IAAI;YACpB,yBAAyB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC;YAC3E,MAAM,EAAE,IAAI,CAAC,SAAS;SACvB,CAAC,CAAA;AACO,eAAA,EAAA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;AACrB,mBAAA,EAAA,IAAI,CAAC,WAAW,CAAA;AACZ,uBAAA,EAAA,IAAI,CAAC,SAAS,CAAA;AAClB,mBAAA,EAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAA;AACzB,iBAAA,EAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;;;;;AAKpB,6CAAA,EAAA,IAAI,CAAC,KAAK,CAAA;;;;;8BAK3B,IAAI,CAAC,OAAO,EAAE,CAAA;;;;;;AAM5B,cAAA,EAAAA,oBAAQ,CAAC;AACf,YAAA,iBAAiB,EAAE,IAAI;YACvB,4BAA4B,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC;YAC7E,IAAI,EAAE,IAAI,CAAC,SAAS;SACrB,CAAC,CAAA;;;AAGoB,4BAAA,EAAA,IAAI,CAAC,iBAAiB,CAAA;;;KAG/C,CAAC;KACH;;AA7FM,gBAAM,CAAA,MAAA,GAAG,CAAC,GAAGC,sBAAW,CAAC,MAAM,EAAEC,sBAAkB,CAA7C,CAA+C;AAE5D;AACO,gBAAA,CAAA,YAAY,GAAG;AACpB,IAAA,WAAW,EAAEC,iBAAQ;AACtB,CAFkB,CAEjB;AASOC,gBAAA,CAAA;AAAR,IAAAC,mBAAK,EAAE;AAAmB,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;;;;"}
@@ -1,125 +0,0 @@
1
- 'use client';
2
- import { __decorate } from 'tslib';
3
- import { html } from 'lit';
4
- import { state } from 'lit/decorators.js';
5
- import { classMap } from 'lit/directives/class-map.js';
6
- import SgdsElement from '../../base/sgds-element.js';
7
- import css_248z from './sidebar-item.js';
8
- import { SgdsIcon } from '../Icon/sgds-icon.js';
9
- import { SidebarElement } from '../../base/sidebar-element.js';
10
-
11
- /**
12
- * @summary Sidebar group represents a navigable parent item within the sidebar that can have nested children.
13
- * Groups support multiple levels of nesting and show nested items in a drawer overlay or submenu.
14
- * Groups can be used to organize related sidebar items into expanding/collapsing sections.
15
- *
16
- * Behavior varies by nesting level:
17
- * - Level 0 (root): Clicking opens drawer overlay showing all nested children. Keyboard: ArrowRight opens drawer.
18
- * - Level 1+ (nested): Clicking toggles submenu visibility. Keyboard: ArrowRight toggles submenu.
19
- *
20
- * @slot default - Insert sgds-sidebar-group or sgds-sidebar-item elements as nested children
21
- * @slot trailingIcon - Icon to display after the label text. A chevron is auto-appended.
22
- *
23
- */
24
- class SgdsSidebarGroup extends SidebarElement {
25
- constructor() {
26
- super(...arguments);
27
- /**
28
- * Manages submenu visibility state for nested groups.
29
- * When true, the submenu is displayed showing nested children.
30
- * When false, the submenu is hidden.
31
- * Only used for nested groups (level 1+). Root-level groups use drawer overlay instead.
32
- * @internal
33
- */
34
- this._showMenu = false;
35
- }
36
- /**
37
- * Reports the visibility state of the submenu for nested groups.
38
- * Returns true when the submenu is displayed showing child items, false when hidden.
39
- * Only applicable for nested groups (level 1+). Root-level groups use drawer overlay instead.
40
- * @readonly
41
- * @type {boolean}
42
- */
43
- get showMenu() {
44
- return this._showMenu;
45
- }
46
- /** @internal */
47
- _handleClick() {
48
- if (this._childLevel !== 0) {
49
- this._showMenu = !this._showMenu;
50
- this._childElements.forEach(v => {
51
- v._hidden = !this._showMenu;
52
- });
53
- }
54
- else {
55
- super._handleClick();
56
- }
57
- }
58
- /**
59
- * Determines the appropriate chevron icon based on nesting level and menu visibility.
60
- * Icon changes provide visual feedback on expandable/collapsible state:
61
- * - Level 0: chevron-right (closed drawer) or chevron-right (no change - drawer controlled by parent)
62
- * - Level 1+: chevron-down (submenu open) or chevron-up (submenu closed)
63
- * @private
64
- * @returns {string} The icon name to display (e.g., 'chevron-right', 'chevron-down')
65
- */
66
- getIcon() {
67
- if (this._childLevel === 0) {
68
- return "chevron-right";
69
- }
70
- else {
71
- return this._showMenu ? "chevron-down" : "chevron-up";
72
- }
73
- }
74
- render() {
75
- return html `
76
- <div
77
- class=${classMap({
78
- "sidebar-item": true,
79
- "sidebar-item--collapsed": this._sidebarCollapsed && this._childLevel === 0,
80
- active: this._selected
81
- })}
82
- @click=${() => this._handleClick()}
83
- aria-level=${this._childLevel}
84
- .aria-expanded=${this._showMenu}
85
- aria-label=${this.title || this.name}
86
- tabindex=${this._childLevel > 1 && !this._showMenu ? -1 : 0}
87
- >
88
- <div class="sidebar-item-label-wrapper">
89
- <div>
90
- <slot name="leadingIcon"></slot>
91
- <span class="sidebar-item-label">${this.title}</span>
92
- </div>
93
-
94
- <span class="sidebar-item-trailingIcon">
95
- <slot name="trailingIcon"></slot>
96
- <sgds-icon name=${this.getIcon()} size="sm"></sgds-icon>
97
- </span>
98
- </div>
99
- </div>
100
-
101
- <div
102
- class=${classMap({
103
- "sidebar-submenu": true,
104
- "sidebar-submenu--collapsed": this._sidebarCollapsed && this._childLevel == 0,
105
- show: this._showMenu
106
- })}
107
- >
108
- <div>
109
- <slot @slotchange=${this._handleSlotChange}></slot>
110
- </div>
111
- </div>
112
- `;
113
- }
114
- }
115
- SgdsSidebarGroup.styles = [...SgdsElement.styles, css_248z];
116
- /** @internal */
117
- SgdsSidebarGroup.dependencies = {
118
- "sgds-icon": SgdsIcon
119
- };
120
- __decorate([
121
- state()
122
- ], SgdsSidebarGroup.prototype, "_showMenu", void 0);
123
-
124
- export { SgdsSidebarGroup, SgdsSidebarGroup as default };
125
- //# sourceMappingURL=sgds-sidebar-group.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sgds-sidebar-group.js","sources":["../../../../src/components/Sidebar/sgds-sidebar-group.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport sidebarOptionStyle from \"./sidebar-item.css\";\nimport SgdsIcon from \"../Icon/sgds-icon\";\n\nimport { SidebarElement } from \"../../base/sidebar-element\";\n\n/**\n * @summary Sidebar group represents a navigable parent item within the sidebar that can have nested children.\n * Groups support multiple levels of nesting and show nested items in a drawer overlay or submenu.\n * Groups can be used to organize related sidebar items into expanding/collapsing sections.\n *\n * Behavior varies by nesting level:\n * - Level 0 (root): Clicking opens drawer overlay showing all nested children. Keyboard: ArrowRight opens drawer.\n * - Level 1+ (nested): Clicking toggles submenu visibility. Keyboard: ArrowRight toggles submenu.\n *\n * @slot default - Insert sgds-sidebar-group or sgds-sidebar-item elements as nested children\n * @slot trailingIcon - Icon to display after the label text. A chevron is auto-appended.\n *\n */\nexport class SgdsSidebarGroup extends SidebarElement {\n static styles = [...SgdsElement.styles, sidebarOptionStyle];\n\n /** @internal */\n static dependencies = {\n \"sgds-icon\": SgdsIcon\n };\n\n /**\n * Manages submenu visibility state for nested groups.\n * When true, the submenu is displayed showing nested children.\n * When false, the submenu is hidden.\n * Only used for nested groups (level 1+). Root-level groups use drawer overlay instead.\n * @internal\n */\n @state() _showMenu = false;\n\n /**\n * Reports the visibility state of the submenu for nested groups.\n * Returns true when the submenu is displayed showing child items, false when hidden.\n * Only applicable for nested groups (level 1+). Root-level groups use drawer overlay instead.\n * @readonly\n * @type {boolean}\n */\n get showMenu(): boolean {\n return this._showMenu;\n }\n\n /** @internal */\n _handleClick(): void {\n if (this._childLevel !== 0) {\n this._showMenu = !this._showMenu;\n this._childElements.forEach(v => {\n v._hidden = !this._showMenu;\n });\n } else {\n super._handleClick();\n }\n }\n /**\n * Determines the appropriate chevron icon based on nesting level and menu visibility.\n * Icon changes provide visual feedback on expandable/collapsible state:\n * - Level 0: chevron-right (closed drawer) or chevron-right (no change - drawer controlled by parent)\n * - Level 1+: chevron-down (submenu open) or chevron-up (submenu closed)\n * @private\n * @returns {string} The icon name to display (e.g., 'chevron-right', 'chevron-down')\n */\n private getIcon() {\n if (this._childLevel === 0) {\n return \"chevron-right\";\n } else {\n return this._showMenu ? \"chevron-down\" : \"chevron-up\";\n }\n }\n\n render() {\n return html`\n <div\n class=${classMap({\n \"sidebar-item\": true,\n \"sidebar-item--collapsed\": this._sidebarCollapsed && this._childLevel === 0,\n active: this._selected\n })}\n @click=${() => this._handleClick()}\n aria-level=${this._childLevel}\n .aria-expanded=${this._showMenu}\n aria-label=${this.title || this.name}\n tabindex=${this._childLevel > 1 && !this._showMenu ? -1 : 0}\n >\n <div class=\"sidebar-item-label-wrapper\">\n <div>\n <slot name=\"leadingIcon\"></slot>\n <span class=\"sidebar-item-label\">${this.title}</span>\n </div>\n\n <span class=\"sidebar-item-trailingIcon\">\n <slot name=\"trailingIcon\"></slot>\n <sgds-icon name=${this.getIcon()} size=\"sm\"></sgds-icon>\n </span>\n </div>\n </div>\n\n <div\n class=${classMap({\n \"sidebar-submenu\": true,\n \"sidebar-submenu--collapsed\": this._sidebarCollapsed && this._childLevel == 0,\n show: this._showMenu\n })}\n >\n <div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </div>\n `;\n }\n}\n\nexport default SgdsSidebarGroup;\n"],"names":["sidebarOptionStyle"],"mappings":";;;;;;;;;;AASA;;;;;;;;;;;;AAYG;AACG,MAAO,gBAAiB,SAAQ,cAAc,CAAA;AAApD,IAAA,WAAA,GAAA;;AAQE;;;;;;AAMG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAgF5B;AA9EC;;;;;;AAMG;AACH,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;;IAGD,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;AAC9B,gBAAA,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,aAAC,CAAC,CAAC;SACJ;aAAM;YACL,KAAK,CAAC,YAAY,EAAE,CAAC;SACtB;KACF;AACD;;;;;;;AAOG;IACK,OAAO,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,eAAe,CAAC;SACxB;aAAM;YACL,OAAO,IAAI,CAAC,SAAS,GAAG,cAAc,GAAG,YAAY,CAAC;SACvD;KACF;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAA,CAAA;;AAEC,cAAA,EAAA,QAAQ,CAAC;AACf,YAAA,cAAc,EAAE,IAAI;YACpB,yBAAyB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC;YAC3E,MAAM,EAAE,IAAI,CAAC,SAAS;SACvB,CAAC,CAAA;AACO,eAAA,EAAA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;AACrB,mBAAA,EAAA,IAAI,CAAC,WAAW,CAAA;AACZ,uBAAA,EAAA,IAAI,CAAC,SAAS,CAAA;AAClB,mBAAA,EAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAA;AACzB,iBAAA,EAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;;;;;AAKpB,6CAAA,EAAA,IAAI,CAAC,KAAK,CAAA;;;;;8BAK3B,IAAI,CAAC,OAAO,EAAE,CAAA;;;;;;AAM5B,cAAA,EAAA,QAAQ,CAAC;AACf,YAAA,iBAAiB,EAAE,IAAI;YACvB,4BAA4B,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC;YAC7E,IAAI,EAAE,IAAI,CAAC,SAAS;SACrB,CAAC,CAAA;;;AAGoB,4BAAA,EAAA,IAAI,CAAC,iBAAiB,CAAA;;;KAG/C,CAAC;KACH;;AA7FM,gBAAM,CAAA,MAAA,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAEA,QAAkB,CAA7C,CAA+C;AAE5D;AACO,gBAAA,CAAA,YAAY,GAAG;AACpB,IAAA,WAAW,EAAE,QAAQ;AACtB,CAFkB,CAEjB;AASO,UAAA,CAAA;AAAR,IAAA,KAAK,EAAE;AAAmB,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
@@ -1,79 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
- var tslib = require('tslib');
7
- var lit = require('lit');
8
- var decorators_js = require('lit/decorators.js');
9
- var classMap_js = require('lit/directives/class-map.js');
10
- var sgdsElement = require('../../base/sgds-element.cjs.js');
11
- var sidebarItem = require('./sidebar-item.cjs.js');
12
- var sidebarElement = require('../../base/sidebar-element.cjs.js');
13
-
14
- /**
15
- * @summary Sidebar item is a selectable navigation item within the sidebar component.
16
- * It can be used as a terminal leaf node in the navigation hierarchy (does not support nested children).
17
- * Items can optionally wrap anchor links for programmatic navigation to external URLs or routes.
18
- *
19
- * @slot default - Text content for the item label
20
- * @slot trailingIcon - Icon to display after the label text
21
- *
22
- * See SgdsSidebar for parent component usage and selection events.
23
- */
24
- class SgdsSidebarItem extends sidebarElement.SidebarElement {
25
- constructor() {
26
- super(...arguments);
27
- /**
28
- * The name of the icon to display before the item label.
29
- * Icon name corresponds to sgds-icon component icons.
30
- * When empty, no icon is displayed and spacing is adjusted.
31
- * @attribute icon
32
- * @type {string}
33
- * @default ""
34
- */
35
- this.icon = "";
36
- }
37
- render() {
38
- return lit.html `
39
- <div
40
- class=${classMap_js.classMap({
41
- "sidebar-item": true,
42
- "sidebar-item--collapsed": this._sidebarCollapsed && this._childLevel === 0,
43
- active: this._selected
44
- })}
45
- @click=${() => this._handleClick()}
46
- aria-level=${this._childLevel}
47
- aria-label=${this.title || this.name}
48
- name=${this.name}
49
- tabindex=${this._hidden ? -1 : 0}
50
- role="button"
51
- >
52
- <div class="sidebar-item-label-wrapper">
53
- <div>
54
- ${this._childLevel <= 1 ? lit.html `<slot name="leadingIcon"></slot>` : lit.nothing}
55
- <span
56
- class=${classMap_js.classMap({
57
- "sidebar-item-label": true,
58
- offset: this._childLevel > 1
59
- })}
60
- >${this.title}</span
61
- >
62
- </div>
63
-
64
- <span class="sidebar-item-trailingIcon">
65
- <slot name="trailingIcon"></slot>
66
- </span>
67
- </div>
68
- </div>
69
- `;
70
- }
71
- }
72
- SgdsSidebarItem.styles = [...sgdsElement["default"].styles, sidebarItem["default"]];
73
- tslib.__decorate([
74
- decorators_js.property({ type: String, reflect: true })
75
- ], SgdsSidebarItem.prototype, "icon", void 0);
76
-
77
- exports.SgdsSidebarItem = SgdsSidebarItem;
78
- exports["default"] = SgdsSidebarItem;
79
- //# sourceMappingURL=sgds-sidebar-item.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sgds-sidebar-item.cjs.js","sources":["../../../../src/components/Sidebar/sgds-sidebar-item.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport sidebarOptionStyle from \"./sidebar-item.css\";\n\nimport SgdsIcon from \"../Icon/sgds-icon\";\n\nimport { SidebarElement } from \"../../base/sidebar-element\";\n\n/**\n * @summary Sidebar item is a selectable navigation item within the sidebar component.\n * It can be used as a terminal leaf node in the navigation hierarchy (does not support nested children).\n * Items can optionally wrap anchor links for programmatic navigation to external URLs or routes.\n *\n * @slot default - Text content for the item label\n * @slot trailingIcon - Icon to display after the label text\n *\n * See SgdsSidebar for parent component usage and selection events.\n */\nexport class SgdsSidebarItem extends SidebarElement {\n static styles = [...SgdsElement.styles, sidebarOptionStyle];\n\n /**\n * The name of the icon to display before the item label.\n * Icon name corresponds to sgds-icon component icons.\n * When empty, no icon is displayed and spacing is adjusted.\n * @attribute icon\n * @type {string}\n * @default \"\"\n */\n @property({ type: String, reflect: true }) icon = \"\";\n\n render() {\n return html`\n <div\n class=${classMap({\n \"sidebar-item\": true,\n \"sidebar-item--collapsed\": this._sidebarCollapsed && this._childLevel === 0,\n active: this._selected\n })}\n @click=${() => this._handleClick()}\n aria-level=${this._childLevel}\n aria-label=${this.title || this.name}\n name=${this.name}\n tabindex=${this._hidden ? -1 : 0}\n role=\"button\"\n >\n <div class=\"sidebar-item-label-wrapper\">\n <div>\n ${this._childLevel <= 1 ? html`<slot name=\"leadingIcon\"></slot>` : nothing}\n <span\n class=${classMap({\n \"sidebar-item-label\": true,\n offset: this._childLevel > 1\n })}\n >${this.title}</span\n >\n </div>\n\n <span class=\"sidebar-item-trailingIcon\">\n <slot name=\"trailingIcon\"></slot>\n </span>\n </div>\n </div>\n `;\n }\n}\n\nexport default SgdsSidebarItem;\n"],"names":["SidebarElement","html","classMap","nothing","SgdsElement","sidebarOptionStyle","__decorate","property"],"mappings":";;;;;;;;;;;;;AAUA;;;;;;;;;AASG;AACG,MAAO,eAAgB,SAAQA,6BAAc,CAAA;AAAnD,IAAA,WAAA,GAAA;;AAGE;;;;;;;AAOG;QACwC,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;KAoCtD;IAlCC,MAAM,GAAA;AACJ,QAAA,OAAOC,QAAI,CAAA,CAAA;;AAEC,cAAA,EAAAC,oBAAQ,CAAC;AACf,YAAA,cAAc,EAAE,IAAI;YACpB,yBAAyB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC;YAC3E,MAAM,EAAE,IAAI,CAAC,SAAS;SACvB,CAAC,CAAA;AACO,eAAA,EAAA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;AACrB,mBAAA,EAAA,IAAI,CAAC,WAAW,CAAA;AAChB,mBAAA,EAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAA;AAC7B,aAAA,EAAA,IAAI,CAAC,IAAI,CAAA;mBACL,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;;;;;AAK1B,YAAA,EAAA,IAAI,CAAC,WAAW,IAAI,CAAC,GAAGD,QAAI,CAAA,CAAA,gCAAA,CAAkC,GAAGE,WAAO,CAAA;;AAEhE,oBAAA,EAAAD,oBAAQ,CAAC;AACf,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC;SAC7B,CAAC,CAAA;AACC,eAAA,EAAA,IAAI,CAAC,KAAK,CAAA;;;;;;;;;KAStB,CAAC;KACH;;AA7CM,eAAM,CAAA,MAAA,GAAG,CAAC,GAAGE,sBAAW,CAAC,MAAM,EAAEC,sBAAkB,CAA7C,CAA+C;AAUjBC,gBAAA,CAAA;IAA1CC,sBAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAW,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;;;;"}
@@ -1,74 +0,0 @@
1
- 'use client';
2
- import { __decorate } from 'tslib';
3
- import { html, nothing } from 'lit';
4
- import { property } from 'lit/decorators.js';
5
- import { classMap } from 'lit/directives/class-map.js';
6
- import SgdsElement from '../../base/sgds-element.js';
7
- import css_248z from './sidebar-item.js';
8
- import { SidebarElement } from '../../base/sidebar-element.js';
9
-
10
- /**
11
- * @summary Sidebar item is a selectable navigation item within the sidebar component.
12
- * It can be used as a terminal leaf node in the navigation hierarchy (does not support nested children).
13
- * Items can optionally wrap anchor links for programmatic navigation to external URLs or routes.
14
- *
15
- * @slot default - Text content for the item label
16
- * @slot trailingIcon - Icon to display after the label text
17
- *
18
- * See SgdsSidebar for parent component usage and selection events.
19
- */
20
- class SgdsSidebarItem extends SidebarElement {
21
- constructor() {
22
- super(...arguments);
23
- /**
24
- * The name of the icon to display before the item label.
25
- * Icon name corresponds to sgds-icon component icons.
26
- * When empty, no icon is displayed and spacing is adjusted.
27
- * @attribute icon
28
- * @type {string}
29
- * @default ""
30
- */
31
- this.icon = "";
32
- }
33
- render() {
34
- return html `
35
- <div
36
- class=${classMap({
37
- "sidebar-item": true,
38
- "sidebar-item--collapsed": this._sidebarCollapsed && this._childLevel === 0,
39
- active: this._selected
40
- })}
41
- @click=${() => this._handleClick()}
42
- aria-level=${this._childLevel}
43
- aria-label=${this.title || this.name}
44
- name=${this.name}
45
- tabindex=${this._hidden ? -1 : 0}
46
- role="button"
47
- >
48
- <div class="sidebar-item-label-wrapper">
49
- <div>
50
- ${this._childLevel <= 1 ? html `<slot name="leadingIcon"></slot>` : nothing}
51
- <span
52
- class=${classMap({
53
- "sidebar-item-label": true,
54
- offset: this._childLevel > 1
55
- })}
56
- >${this.title}</span
57
- >
58
- </div>
59
-
60
- <span class="sidebar-item-trailingIcon">
61
- <slot name="trailingIcon"></slot>
62
- </span>
63
- </div>
64
- </div>
65
- `;
66
- }
67
- }
68
- SgdsSidebarItem.styles = [...SgdsElement.styles, css_248z];
69
- __decorate([
70
- property({ type: String, reflect: true })
71
- ], SgdsSidebarItem.prototype, "icon", void 0);
72
-
73
- export { SgdsSidebarItem, SgdsSidebarItem as default };
74
- //# sourceMappingURL=sgds-sidebar-item.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sgds-sidebar-item.js","sources":["../../../../src/components/Sidebar/sgds-sidebar-item.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport sidebarOptionStyle from \"./sidebar-item.css\";\n\nimport SgdsIcon from \"../Icon/sgds-icon\";\n\nimport { SidebarElement } from \"../../base/sidebar-element\";\n\n/**\n * @summary Sidebar item is a selectable navigation item within the sidebar component.\n * It can be used as a terminal leaf node in the navigation hierarchy (does not support nested children).\n * Items can optionally wrap anchor links for programmatic navigation to external URLs or routes.\n *\n * @slot default - Text content for the item label\n * @slot trailingIcon - Icon to display after the label text\n *\n * See SgdsSidebar for parent component usage and selection events.\n */\nexport class SgdsSidebarItem extends SidebarElement {\n static styles = [...SgdsElement.styles, sidebarOptionStyle];\n\n /**\n * The name of the icon to display before the item label.\n * Icon name corresponds to sgds-icon component icons.\n * When empty, no icon is displayed and spacing is adjusted.\n * @attribute icon\n * @type {string}\n * @default \"\"\n */\n @property({ type: String, reflect: true }) icon = \"\";\n\n render() {\n return html`\n <div\n class=${classMap({\n \"sidebar-item\": true,\n \"sidebar-item--collapsed\": this._sidebarCollapsed && this._childLevel === 0,\n active: this._selected\n })}\n @click=${() => this._handleClick()}\n aria-level=${this._childLevel}\n aria-label=${this.title || this.name}\n name=${this.name}\n tabindex=${this._hidden ? -1 : 0}\n role=\"button\"\n >\n <div class=\"sidebar-item-label-wrapper\">\n <div>\n ${this._childLevel <= 1 ? html`<slot name=\"leadingIcon\"></slot>` : nothing}\n <span\n class=${classMap({\n \"sidebar-item-label\": true,\n offset: this._childLevel > 1\n })}\n >${this.title}</span\n >\n </div>\n\n <span class=\"sidebar-item-trailingIcon\">\n <slot name=\"trailingIcon\"></slot>\n </span>\n </div>\n </div>\n `;\n }\n}\n\nexport default SgdsSidebarItem;\n"],"names":["sidebarOptionStyle"],"mappings":";;;;;;;;;AAUA;;;;;;;;;AASG;AACG,MAAO,eAAgB,SAAQ,cAAc,CAAA;AAAnD,IAAA,WAAA,GAAA;;AAGE;;;;;;;AAOG;QACwC,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;KAoCtD;IAlCC,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAA,CAAA;;AAEC,cAAA,EAAA,QAAQ,CAAC;AACf,YAAA,cAAc,EAAE,IAAI;YACpB,yBAAyB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC;YAC3E,MAAM,EAAE,IAAI,CAAC,SAAS;SACvB,CAAC,CAAA;AACO,eAAA,EAAA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;AACrB,mBAAA,EAAA,IAAI,CAAC,WAAW,CAAA;AAChB,mBAAA,EAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAA;AAC7B,aAAA,EAAA,IAAI,CAAC,IAAI,CAAA;mBACL,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;;;;;AAK1B,YAAA,EAAA,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,IAAI,CAAA,CAAA,gCAAA,CAAkC,GAAG,OAAO,CAAA;;AAEhE,oBAAA,EAAA,QAAQ,CAAC;AACf,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC;SAC7B,CAAC,CAAA;AACC,eAAA,EAAA,IAAI,CAAC,KAAK,CAAA;;;;;;;;;KAStB,CAAC;KACH;;AA7CM,eAAM,CAAA,MAAA,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAEA,QAAkB,CAA7C,CAA+C;AAUjB,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAW,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
@@ -1,131 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
- var tslib = require('tslib');
7
- var lit = require('lit');
8
- var decorators_js = require('lit/decorators.js');
9
- var classMap_js = require('lit/directives/class-map.js');
10
- var sgdsElement = require('../../base/sgds-element.cjs.js');
11
- var sidebarSection = require('./sidebar-section.cjs.js');
12
- var sidebarElement = require('../../base/sidebar-element.cjs.js');
13
- var sgdsIcon = require('../Icon/sgds-icon.cjs.js');
14
- var sgdsDivider = require('../Divider/sgds-divider.cjs.js');
15
-
16
- /**
17
- * @summary Sidebar section is a container component that groups related sidebar items into organized sections.
18
- * It displays a section header/title and can optionally be collapsible. Sections help organize navigation
19
- * items hierarchically within the sidebar, providing visual separation between different areas of functionality.
20
- *
21
- * @slot - Insert sgds-sidebar-item and sgds-sidebar-group elements to be grouped within this section
22
- */
23
- class SgdsSidebarSection extends sidebarElement.SidebarElement {
24
- constructor() {
25
- super(...arguments);
26
- /**
27
- * The display title/label for the sidebar section header.
28
- * Always visible in the sidebar, used to group related items.
29
- * @attribute title
30
- * @type {string}
31
- * @default ""
32
- */
33
- this.title = "";
34
- /**
35
- * Controls whether the section content is expanded or collapsed.
36
- * When true, the section content is hidden but the section header remains visible.
37
- * Only applicable when the section is collapsible.
38
- * @attribute collapsed
39
- * @type {boolean}
40
- * @default false
41
- */
42
- this.collapsed = false;
43
- /**
44
- * Enables a collapsible section header with expand/collapse toggle functionality.
45
- * When true, users can click the header to toggle section visibility.
46
- * When false, the section header is display-only and not interactive.
47
- * @attribute collapsible
48
- * @type {boolean}
49
- * @default false
50
- */
51
- this.collapsible = false;
52
- this.seperator = false;
53
- }
54
- connectedCallback() {
55
- super.connectedCallback();
56
- this.setAttribute("role", "region");
57
- this._childLevel = null;
58
- }
59
- /**
60
- * Handles click events on the section label.
61
- * Toggles the collapsed state to show/hide section content.
62
- * Only called if the section is collapsible (collapsible prop is true).
63
- * @private
64
- * @returns {void}
65
- */
66
- _handleClick() {
67
- if (this.collapsible)
68
- this.collapsed = !this.collapsed;
69
- }
70
- render() {
71
- return lit.html `
72
- <div
73
- class=${classMap_js.classMap({
74
- "sidebar-section": true,
75
- "sidebar-section--collapsed": this._sidebarCollapsed
76
- })}
77
- >
78
- ${this.title !== ""
79
- ? lit.html `<div
80
- class="sidebar-section-label"
81
- @click=${this._handleClick}
82
- aria-expanded=${!this.collapsed}
83
- aria-disabled=${!this.collapsible}
84
- tabindex="0"
85
- >
86
- <span>${this.title}</span>
87
- ${this.collapsible
88
- ? lit.html `<sgds-icon name=${this.collapsed ? "chevron-down" : "chevron-up"} size="sm"></sgds-icon>`
89
- : lit.nothing}
90
- </div>`
91
- : lit.nothing}
92
-
93
- <div
94
- class=${classMap_js.classMap({
95
- "sidebar-section-content": true,
96
- "sidebar-section-content--collapsed": this.collapsed && this.collapsible,
97
- "sidebar-section-seperator": this.seperator
98
- })}
99
- >
100
- <div>
101
- <slot @slotchange=${this._handleSlotChange}></slot>
102
- </div>
103
- </div>
104
-
105
- ${this.seperator ? lit.html `<sgds-divider></sgds-divider>` : lit.nothing}
106
- </div>
107
- `;
108
- }
109
- }
110
- SgdsSidebarSection.styles = [...sgdsElement["default"].styles, sidebarSection["default"]];
111
- /** @internal */
112
- SgdsSidebarSection.dependencies = {
113
- "sgds-icon": sgdsIcon.SgdsIcon,
114
- "sgds-divider": sgdsDivider.SgdsDivider
115
- };
116
- tslib.__decorate([
117
- decorators_js.property({ type: String, reflect: true })
118
- ], SgdsSidebarSection.prototype, "title", void 0);
119
- tslib.__decorate([
120
- decorators_js.property({ type: Boolean, reflect: true })
121
- ], SgdsSidebarSection.prototype, "collapsed", void 0);
122
- tslib.__decorate([
123
- decorators_js.property({ type: Boolean, reflect: true })
124
- ], SgdsSidebarSection.prototype, "collapsible", void 0);
125
- tslib.__decorate([
126
- decorators_js.property({ type: Boolean, reflect: true })
127
- ], SgdsSidebarSection.prototype, "seperator", void 0);
128
-
129
- exports.SgdsSidebarSection = SgdsSidebarSection;
130
- exports["default"] = SgdsSidebarSection;
131
- //# sourceMappingURL=sgds-sidebar-section.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sgds-sidebar-section.cjs.js","sources":["../../../../src/components/Sidebar/sgds-sidebar-section.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport sidebarSectionStyle from \"./sidebar-section.css\";\n\nimport { SidebarElement } from \"../../base/sidebar-element\";\nimport SgdsIcon from \"../Icon/sgds-icon\";\nimport SgdsDivider from \"../Divider/sgds-divider\";\n\n/**\n * @summary Sidebar section is a container component that groups related sidebar items into organized sections.\n * It displays a section header/title and can optionally be collapsible. Sections help organize navigation\n * items hierarchically within the sidebar, providing visual separation between different areas of functionality.\n *\n * @slot - Insert sgds-sidebar-item and sgds-sidebar-group elements to be grouped within this section\n */\nexport class SgdsSidebarSection extends SidebarElement {\n static styles = [...SgdsElement.styles, sidebarSectionStyle];\n\n /** @internal */\n static dependencies = {\n \"sgds-icon\": SgdsIcon,\n \"sgds-divider\": SgdsDivider\n };\n\n /**\n * The display title/label for the sidebar section header.\n * Always visible in the sidebar, used to group related items.\n * @attribute title\n * @type {string}\n * @default \"\"\n */\n @property({ type: String, reflect: true }) title = \"\";\n\n /**\n * Controls whether the section content is expanded or collapsed.\n * When true, the section content is hidden but the section header remains visible.\n * Only applicable when the section is collapsible.\n * @attribute collapsed\n * @type {boolean}\n * @default false\n */\n @property({ type: Boolean, reflect: true }) collapsed = false;\n\n /**\n * Enables a collapsible section header with expand/collapse toggle functionality.\n * When true, users can click the header to toggle section visibility.\n * When false, the section header is display-only and not interactive.\n * @attribute collapsible\n * @type {boolean}\n * @default false\n */\n @property({ type: Boolean, reflect: true }) collapsible = false;\n @property({ type: Boolean, reflect: true }) seperator = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute(\"role\", \"region\");\n this._childLevel = null;\n }\n\n /**\n * Handles click events on the section label.\n * Toggles the collapsed state to show/hide section content.\n * Only called if the section is collapsible (collapsible prop is true).\n * @private\n * @returns {void}\n */\n override _handleClick() {\n if (this.collapsible) this.collapsed = !this.collapsed;\n }\n\n render() {\n return html`\n <div\n class=${classMap({\n \"sidebar-section\": true,\n \"sidebar-section--collapsed\": this._sidebarCollapsed\n })}\n >\n ${this.title !== \"\"\n ? html`<div\n class=\"sidebar-section-label\"\n @click=${this._handleClick}\n aria-expanded=${!this.collapsed}\n aria-disabled=${!this.collapsible}\n tabindex=\"0\"\n >\n <span>${this.title}</span>\n ${this.collapsible\n ? html`<sgds-icon name=${this.collapsed ? \"chevron-down\" : \"chevron-up\"} size=\"sm\"></sgds-icon>`\n : nothing}\n </div>`\n : nothing}\n\n <div\n class=${classMap({\n \"sidebar-section-content\": true,\n \"sidebar-section-content--collapsed\": this.collapsed && this.collapsible,\n \"sidebar-section-seperator\": this.seperator\n })}\n >\n <div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </div>\n\n ${this.seperator ? html`<sgds-divider></sgds-divider>` : nothing}\n </div>\n `;\n }\n}\n\nexport default SgdsSidebarSection;\n"],"names":["SidebarElement","html","classMap","nothing","SgdsElement","sidebarSectionStyle","SgdsIcon","SgdsDivider","__decorate","property"],"mappings":"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"}