@govtechsg/sgds-web-component 0.0.7 → 0.0.10

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 (263) hide show
  1. package/.github/workflows/publish-latest.yml +22 -0
  2. package/.github/workflows/publish-pr.yml +28 -0
  3. package/.husky/commit-msg +4 -0
  4. package/.husky/prepare-commit-msg +8 -0
  5. package/.storybook/main.js +16 -0
  6. package/.storybook/preview-head.html +11 -0
  7. package/.storybook/preview.js +9 -0
  8. package/.vscode/settings.json +7 -0
  9. package/CONTRIBUTING.md +56 -0
  10. package/LICENSE +20 -0
  11. package/amplify.yml +22 -0
  12. package/commitlint.config.js +1 -0
  13. package/coverage/lcov-report/base.css +224 -0
  14. package/coverage/lcov-report/block-navigation.js +87 -0
  15. package/coverage/lcov-report/button-element.scss.html +112 -0
  16. package/coverage/lcov-report/button-element.ts.html +145 -0
  17. package/coverage/lcov-report/favicon.png +0 -0
  18. package/coverage/lcov-report/index.html +116 -0
  19. package/coverage/lcov-report/prettify.css +1 -0
  20. package/coverage/lcov-report/prettify.js +2 -0
  21. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  22. package/coverage/lcov-report/sorter.js +196 -0
  23. package/coverage/lcov.info +32 -0
  24. package/index.html +430 -0
  25. package/{Button → lib/Button}/index.d.ts +0 -0
  26. package/{Button → lib/Button}/index.js +304 -39
  27. package/lib/Button/index.js.map +1 -0
  28. package/{Button → lib/Button}/package.json +0 -0
  29. package/lib/Button/sgds-button.d.ts +48 -0
  30. package/lib/Card/index.d.ts +1 -0
  31. package/lib/Card/index.js +6150 -0
  32. package/lib/Card/index.js.map +1 -0
  33. package/lib/Card/package.json +7 -0
  34. package/lib/Card/sgds-action-card.d.ts +20 -0
  35. package/lib/Checkbox/index.d.ts +1 -0
  36. package/lib/Checkbox/index.js +6366 -0
  37. package/lib/Checkbox/index.js.map +1 -0
  38. package/lib/Checkbox/package.json +7 -0
  39. package/lib/Checkbox/sgds-checkbox.d.ts +36 -0
  40. package/lib/Dropdown/index.d.ts +3 -0
  41. package/{Mainnav → lib/Dropdown}/index.js +2786 -9258
  42. package/lib/Dropdown/index.js.map +1 -0
  43. package/lib/Dropdown/package.json +7 -0
  44. package/lib/Dropdown/sgds-dropdown-item.d.ts +7 -0
  45. package/lib/Dropdown/sgds-dropdown.d.ts +7 -0
  46. package/{Footer → lib/Footer}/index.d.ts +0 -0
  47. package/{Footer → lib/Footer}/index.js +111 -95
  48. package/lib/Footer/index.js.map +1 -0
  49. package/{Footer → lib/Footer}/package.json +0 -0
  50. package/{Footer → lib/Footer}/sgds-footer.d.ts +2 -2
  51. package/lib/Input/index.d.ts +1 -0
  52. package/lib/Input/index.js +6656 -0
  53. package/lib/Input/index.js.map +1 -0
  54. package/lib/Input/package.json +7 -0
  55. package/lib/Input/sgds-input.d.ts +42 -0
  56. package/{Mainnav → lib/Mainnav}/index.d.ts +1 -0
  57. package/{index.js → lib/Mainnav/index.js} +3876 -23415
  58. package/lib/Mainnav/index.js.map +1 -0
  59. package/{Mainnav → lib/Mainnav}/package.json +0 -0
  60. package/lib/Mainnav/sgds-mainnav-dropdown.d.ts +5 -0
  61. package/lib/Mainnav/sgds-mainnav-item.d.ts +4 -0
  62. package/{Mainnav → lib/Mainnav}/sgds-mainnav.d.ts +3 -2
  63. package/{Masthead → lib/Masthead}/index.d.ts +0 -0
  64. package/{Masthead → lib/Masthead}/index.js +140 -114
  65. package/lib/Masthead/index.js.map +1 -0
  66. package/{Masthead → lib/Masthead}/package.json +0 -0
  67. package/{Masthead → lib/Masthead}/sgds-masthead.d.ts +1 -1
  68. package/lib/Modal/index.d.ts +1 -0
  69. package/lib/Modal/index.js +6432 -0
  70. package/lib/Modal/index.js.map +1 -0
  71. package/lib/Modal/package.json +7 -0
  72. package/lib/Modal/sgds-modal.d.ts +28 -0
  73. package/lib/QuantityToggle/index.d.ts +1 -0
  74. package/lib/QuantityToggle/index.js +7049 -0
  75. package/lib/QuantityToggle/index.js.map +1 -0
  76. package/lib/QuantityToggle/package.json +7 -0
  77. package/lib/QuantityToggle/sgds-quantitytoggle.d.ts +30 -0
  78. package/lib/Radio/index.d.ts +2 -0
  79. package/lib/Radio/index.js +12607 -0
  80. package/lib/Radio/index.js.map +1 -0
  81. package/lib/Radio/package.json +7 -0
  82. package/lib/Radio/sgds-radio.d.ts +31 -0
  83. package/lib/Radio/sgds-radiogroup.d.ts +41 -0
  84. package/{Sidenav → lib/Sidenav}/index.d.ts +0 -0
  85. package/{Sidenav → lib/Sidenav}/index.js +2266 -2171
  86. package/lib/Sidenav/index.js.map +1 -0
  87. package/{Sidenav → lib/Sidenav}/package.json +0 -0
  88. package/{Sidenav → lib/Sidenav}/sgds-sidenav-item.d.ts +2 -1
  89. package/lib/Sidenav/sgds-sidenav-link.d.ts +4 -0
  90. package/{Sidenav → lib/Sidenav}/sgds-sidenav.d.ts +1 -1
  91. package/lib/Tab/index.d.ts +3 -0
  92. package/lib/Tab/index.js +13557 -0
  93. package/lib/Tab/index.js.map +1 -0
  94. package/lib/Tab/package.json +7 -0
  95. package/lib/Tab/sgds-tab.d.ts +26 -0
  96. package/lib/Tab/sgds-tabgroup.d.ts +47 -0
  97. package/lib/Tab/sgds-tabpanel.d.ts +25 -0
  98. package/lib/Textarea/index.d.ts +1 -0
  99. package/lib/Textarea/index.js +6696 -0
  100. package/lib/Textarea/index.js.map +1 -0
  101. package/lib/Textarea/package.json +7 -0
  102. package/lib/Textarea/sgds-textarea.d.ts +53 -0
  103. package/lib/index.d.ts +16 -0
  104. package/lib/index.js +134580 -0
  105. package/lib/index.js.map +1 -0
  106. package/lib/umd/index.js +134587 -0
  107. package/lib/umd/index.js.map +1 -0
  108. package/lib/utils/animate.d.ts +10 -0
  109. package/lib/utils/animation-registry.d.ts +18 -0
  110. package/{utils → lib/utils}/breakpoints.d.ts +0 -0
  111. package/lib/utils/card-element.d.ts +11 -0
  112. package/lib/utils/defaultvalue.d.ts +2 -0
  113. package/lib/utils/dropdown-element.d.ts +37 -0
  114. package/lib/utils/event.d.ts +2 -0
  115. package/lib/utils/form.d.ts +38 -0
  116. package/{utils → lib/utils}/generateId.d.ts +0 -0
  117. package/lib/utils/link-element.d.ts +7 -0
  118. package/lib/utils/mergeDeep.d.ts +2 -0
  119. package/lib/utils/modal.d.ts +12 -0
  120. package/lib/utils/object.d.ts +2 -0
  121. package/lib/utils/offset.d.ts +4 -0
  122. package/lib/utils/scroll.d.ts +13 -0
  123. package/{utils → lib/utils}/sgds-element.d.ts +0 -0
  124. package/lib/utils/slot.d.ts +22 -0
  125. package/lib/utils/tabbable.d.ts +8 -0
  126. package/lib/utils/watch.d.ts +14 -0
  127. package/mocks/dropdown.d.ts +4 -0
  128. package/mocks/dropdown.ts +27 -0
  129. package/mocks/link.d.ts +3 -0
  130. package/mocks/link.ts +6 -0
  131. package/package.json +65 -10
  132. package/rollup.config.js +73 -0
  133. package/rollup.test.config.js +42 -0
  134. package/scripts/buildUtils.js +30 -0
  135. package/scripts/frankBuild.js +49 -0
  136. package/src/Button/index.ts +1 -0
  137. package/src/Button/sgds-button.scss +28 -0
  138. package/src/Button/sgds-button.ts +153 -0
  139. package/src/Card/index.ts +1 -0
  140. package/src/Card/sgds-action-card.scss +27 -0
  141. package/src/Card/sgds-action-card.ts +115 -0
  142. package/src/Checkbox/index.ts +1 -0
  143. package/src/Checkbox/sgds-checkbox.scss +4 -0
  144. package/src/Checkbox/sgds-checkbox.ts +149 -0
  145. package/src/Dropdown/index.ts +3 -0
  146. package/src/Dropdown/sgds-dropdown-item.ts +39 -0
  147. package/src/Dropdown/sgds-dropdown.scss +5 -0
  148. package/src/Dropdown/sgds-dropdown.ts +54 -0
  149. package/src/Footer/index.ts +3 -0
  150. package/src/Footer/sgds-footer.scss +5 -0
  151. package/src/Footer/sgds-footer.ts +121 -0
  152. package/src/Input/index.ts +1 -0
  153. package/src/Input/sgds-input.scss +20 -0
  154. package/src/Input/sgds-input.ts +178 -0
  155. package/src/Mainnav/index.ts +4 -0
  156. package/src/Mainnav/sgds-mainnav-dropdown.scss +13 -0
  157. package/src/Mainnav/sgds-mainnav-dropdown.ts +45 -0
  158. package/src/Mainnav/sgds-mainnav-item.scss +24 -0
  159. package/src/Mainnav/sgds-mainnav-item.ts +8 -0
  160. package/src/Mainnav/sgds-mainnav.scss +39 -0
  161. package/src/Mainnav/sgds-mainnav.ts +183 -0
  162. package/src/Masthead/index.ts +1 -0
  163. package/src/Masthead/sgds-masthead.scss +217 -0
  164. package/src/Masthead/sgds-masthead.ts +189 -0
  165. package/src/Modal/index.ts +1 -0
  166. package/src/Modal/sgds-modal.scss +128 -0
  167. package/src/Modal/sgds-modal.ts +309 -0
  168. package/src/QuantityToggle/index.ts +1 -0
  169. package/src/QuantityToggle/sgds-quantitytoggle.scss +10 -0
  170. package/src/QuantityToggle/sgds-quantitytoggle.ts +130 -0
  171. package/src/Radio/index.ts +2 -0
  172. package/src/Radio/sgds-radio.scss +5 -0
  173. package/src/Radio/sgds-radio.ts +120 -0
  174. package/src/Radio/sgds-radiogroup.scss +22 -0
  175. package/src/Radio/sgds-radiogroup.ts +221 -0
  176. package/src/Sidenav/index.ts +4 -0
  177. package/src/Sidenav/sgds-sidenav-item.scss +73 -0
  178. package/src/Sidenav/sgds-sidenav-item.ts +145 -0
  179. package/src/Sidenav/sgds-sidenav-link.scss +25 -0
  180. package/src/Sidenav/sgds-sidenav-link.ts +8 -0
  181. package/src/Sidenav/sgds-sidenav.scss +6 -0
  182. package/src/Sidenav/sgds-sidenav.ts +33 -0
  183. package/src/Tab/index.ts +3 -0
  184. package/src/Tab/sgds-tab.scss +84 -0
  185. package/src/Tab/sgds-tab.ts +87 -0
  186. package/src/Tab/sgds-tabgroup.scss +198 -0
  187. package/src/Tab/sgds-tabgroup.ts +295 -0
  188. package/src/Tab/sgds-tabpanel.scss +12 -0
  189. package/src/Tab/sgds-tabpanel.ts +55 -0
  190. package/src/Textarea/index.ts +1 -0
  191. package/src/Textarea/sgds-textarea.scss +23 -0
  192. package/src/Textarea/sgds-textarea.ts +201 -0
  193. package/src/index.ts +16 -0
  194. package/src/utils/animate.ts +69 -0
  195. package/src/utils/animation-registry.ts +71 -0
  196. package/src/utils/base.scss +14 -0
  197. package/src/utils/breakpoints.ts +5 -0
  198. package/src/utils/card-element.ts +42 -0
  199. package/src/utils/components.style.scss +531 -0
  200. package/src/utils/defaultvalue.ts +51 -0
  201. package/src/utils/dropdown-element.ts +244 -0
  202. package/src/utils/event.ts +13 -0
  203. package/src/utils/form.ts +183 -0
  204. package/src/utils/generateId.ts +4 -0
  205. package/src/utils/link-element.ts +34 -0
  206. package/src/utils/mergeDeep.ts +22 -0
  207. package/src/utils/modal.ts +64 -0
  208. package/src/utils/object.ts +2 -0
  209. package/src/utils/offset.ts +6 -0
  210. package/src/utils/scroll.ts +57 -0
  211. package/src/utils/sgds-element.ts +18 -0
  212. package/src/utils/slot.ts +102 -0
  213. package/src/utils/tabbable.ts +81 -0
  214. package/src/utils/watch.ts +62 -0
  215. package/stories/ActionCard.stories.mdx +199 -0
  216. package/stories/Button.stories.mdx +194 -0
  217. package/stories/Checkbox.stories.mdx +196 -0
  218. package/stories/Dropdown.stories.mdx +152 -0
  219. package/stories/Footer.stories.mdx +261 -0
  220. package/stories/Input.stories.mdx +236 -0
  221. package/stories/MainNav.stories.mdx +169 -0
  222. package/stories/Masthead.stories.mdx +112 -0
  223. package/stories/Modal.stories.mdx +103 -0
  224. package/stories/QuantityToggle.stories.mdx +97 -0
  225. package/stories/Radio.stories.mdx +262 -0
  226. package/stories/Sample.stories.js +29 -0
  227. package/stories/Sample.stories.mdx +33 -0
  228. package/stories/SideNav.stories.mdx +245 -0
  229. package/stories/common.js +185 -0
  230. package/stories/textarea.stories.mdx +253 -0
  231. package/test/button.element.test.ts +185 -0
  232. package/test/checkbox.test.ts +240 -0
  233. package/test/dropdown.test.ts +637 -0
  234. package/test/footer.test.ts +181 -0
  235. package/test/generateId.test.ts +18 -0
  236. package/test/input.element.test.ts +316 -0
  237. package/test/link-element.test.ts +38 -0
  238. package/test/mainnav.test.ts +313 -0
  239. package/test/masthead.test.ts +116 -0
  240. package/test/modal.test.ts +149 -0
  241. package/test/quantitytoggle.test.ts +76 -0
  242. package/test/radio.test.ts +310 -0
  243. package/test/selectable-card.test.ts +159 -0
  244. package/test/sidenav.test.ts +390 -0
  245. package/test/tab.test.ts +76 -0
  246. package/test/textarea.test.ts +126 -0
  247. package/tsconfig.json +26 -0
  248. package/tsconfig.test.json +24 -0
  249. package/typings/scss.d.ts +5 -0
  250. package/web-dev-server.config.mjs +7 -0
  251. package/web-test-runner.config.mjs +47 -0
  252. package/Button/index.js.map +0 -1
  253. package/Button/sgds-button.d.ts +0 -23
  254. package/Footer/index.js.map +0 -1
  255. package/Mainnav/index.js.map +0 -1
  256. package/Mainnav/sgds-mainnav-item.d.ts +0 -7
  257. package/Masthead/index.js.map +0 -1
  258. package/Sidenav/index.js.map +0 -1
  259. package/Sidenav/sgds-sidenav-link.d.ts +0 -7
  260. package/index.d.ts +0 -5
  261. package/index.js.map +0 -1
  262. package/umd/index.js +0 -52092
  263. package/umd/index.js.map +0 -1
@@ -0,0 +1,97 @@
1
+ import { Canvas, Meta, Story, ArgsTable } from "@storybook/addon-docs";
2
+ import { html } from "lit-html";
3
+ import "../lib/QuantityToggle";
4
+
5
+ <Meta
6
+ title="Components/QuantityToggle"
7
+ argTypes={{
8
+ quantityToggleClasses: {
9
+ control: "text" ,
10
+ table: { category: "props" },
11
+ description: 'Optional. Can be used to insert any utility classes such as `me-auto`'
12
+ },
13
+ count: {
14
+ control: "text" ,
15
+ defaultValue: "0",
16
+ table: { category: "props" },
17
+ type: { summary: "String" },
18
+ description: 'Optional. Can be used to insert any utility classes such as `me-auto`'
19
+ },
20
+ step: {
21
+ control: "text" ,
22
+ defaultValue: "1",
23
+ table: { category: "props" },
24
+ type: { summary: "String" },
25
+ description: 'Optional. Can be used to insert any utility classes such as `me-auto`'
26
+ },
27
+ size:{
28
+ control: 'select',
29
+ options:['sm','lg'],
30
+ type: { summary: "String" },
31
+ defaultValue: 'sm',
32
+ description:'Specifies a large or small button',
33
+ table: { category: "props" },
34
+ },
35
+ disabled:{
36
+ control: "boolean",
37
+ defaultValue: false,
38
+ table: { category: "props" },
39
+ description:'The disabled state of the component'
40
+ },
41
+ blur:{
42
+ table: {
43
+ category: "Method",
44
+ type: { summary: "Method" },
45
+ },
46
+ description: 'Removes focus from the button.'
47
+ },
48
+ focus:{
49
+ table: {
50
+ category: "Method",
51
+ type: { summary: "Method" },
52
+ },
53
+ description: 'Sets focus on the button.'
54
+ },
55
+ 'sgds-blur':{
56
+ table: {
57
+ category: "Events",
58
+ type: { summary: "Event" },
59
+ },
60
+ description: 'Removes focus from the button.'
61
+ },
62
+ 'sgds-focus':{
63
+ table: {
64
+ category: "Events",
65
+ type: { summary: "Event" },
66
+ },
67
+ description: 'Sets focus on the button.'
68
+ }
69
+ }}
70
+ />
71
+
72
+ export const Template = (args) =>
73
+ html`
74
+ <sgds-quantitytoggle
75
+ .count=${args.count}
76
+ .step=${args.step}
77
+ .quantityToggleClasses=${args.quantityToggleClasses}
78
+ .disabled=${args.disabled}
79
+ .size=${args.size}
80
+ ></sgds-quantitytoggle>
81
+ `;
82
+
83
+ # SgdsFooter
84
+
85
+ <Canvas>
86
+ <Story name="Basic">
87
+ {Template.bind({})}
88
+ </Story>
89
+ </Canvas>
90
+
91
+ ## API
92
+
93
+ ```jsx
94
+ import { SgdsFooter, ColumnLinks } from "@govtechsg/sgds-web-component";
95
+ ```
96
+
97
+ <ArgsTable story="Basic" />
@@ -0,0 +1,262 @@
1
+ import { Canvas, Meta, Story, ArgsTable } from "@storybook/addon-docs";
2
+ import { html } from "lit-html";
3
+ import "../lib/Radio";
4
+
5
+ <Meta
6
+ title='Components/Radio'
7
+ argTypes={{
8
+ radioId: {
9
+ control: "text",
10
+ description:
11
+ "Forwards value to id/for pair attribute of each of the SgdsRadio input. A unique id generated by default",
12
+ table: {
13
+ category: "props: SgdsRadio",
14
+ defaultValue: { summary: "" },
15
+ type: {
16
+ summary: "string",
17
+ },
18
+ },
19
+ },
20
+ name: {
21
+ control: "text",
22
+ description: "The name assigned to the radio controls wrapper fieldset",
23
+ table: {
24
+ category: "props: SgdsRadioGroup",
25
+ defaultValue: { summary: "" },
26
+ type: {
27
+ summary: "string",
28
+ },
29
+ },
30
+ },
31
+ defaultValue: {
32
+ name: "value",
33
+ control: "text",
34
+ description: "The selected value of the control",
35
+ table: {
36
+ category: "props: SgdsRadioGroup",
37
+ defaultValue: { summary: "" },
38
+ type: {
39
+ summary: "string",
40
+ },
41
+ },
42
+ },
43
+ disabled: {
44
+ control: "boolean",
45
+ description: "Disables the radio",
46
+ table: {
47
+ category: "props: SgdsRadio",
48
+ defaultValue: { summary: false },
49
+ type: {
50
+ summary: "boolean",
51
+ },
52
+ },
53
+ },
54
+ invalid: {
55
+ control: "boolean",
56
+ description:
57
+ "toggles the invalid state to true and shows the invalid feedback",
58
+ table: {
59
+ category: "props: SgdsRadioGroup",
60
+ defaultValue: { summary: false },
61
+ type: {
62
+ summary: "boolean",
63
+ },
64
+ },
65
+ },
66
+ invalidFeedback: {
67
+ control: "text",
68
+ description: "Sets a text to the invalid feedback div",
69
+ table: {
70
+ category: "props: SgdsRadioGroup",
71
+ defaultValue: { summary: "" },
72
+ type: {
73
+ summary: "string",
74
+ },
75
+ },
76
+ },
77
+ required: {
78
+ defaultValue: "radioLabel",
79
+ control: "boolean",
80
+ description:
81
+ "specifies the radio input to be check before submitting the form.",
82
+ table: {
83
+ category: "props: SgdsRadioGroup",
84
+ defaultValue: { summary: false },
85
+ type: {
86
+ summary: "boolean",
87
+ },
88
+ },
89
+ },
90
+ isInline: {
91
+ control: "boolean",
92
+ description: "Sets SgdsRadio elements to be horizontally align",
93
+ table: {
94
+ category: "props: SgdsRadio",
95
+ defaultValue: { summary: false },
96
+ type: {
97
+ summary: "boolean",
98
+ },
99
+ },
100
+ },
101
+ radioValue: {
102
+ name: "value",
103
+ control: "text",
104
+ description: "The radio's value attribute.",
105
+ table: {
106
+ category: "props: SgdsRadio",
107
+ defaultValue: { summary: "" },
108
+ type: {
109
+ summary: "string",
110
+ },
111
+ },
112
+ },
113
+ radioSlot: {
114
+ name: "default-radio",
115
+ control: "text",
116
+ defaultValue: "Option 1",
117
+ description:
118
+ "default slot for SgdsRadio element, for labelling SgdsRadio element",
119
+ table: {
120
+ category: "slot: SgdsRadio",
121
+ },
122
+ },
123
+ defaultRadioGroupSlot: {
124
+ name: "default-radioGroup",
125
+ control: "disabled",
126
+ defaultValue: "disabled",
127
+ description: "default slot for inserting SgdsRadio elements",
128
+ table: {
129
+ category: "slot: SgdsRadioGroup",
130
+ },
131
+ },
132
+ radioGroupSlot: {
133
+ name: "slot[name='label']",
134
+ defaultValue: "Select an option",
135
+ control: "text",
136
+ description: "label named slot for SgdsRadioGroup wrapper",
137
+ table: {
138
+ category: "slot: SgdsRadioGroup",
139
+ },
140
+ },
141
+ ariaLabel: {
142
+ defaultValue: "radioLabel",
143
+ control: "text",
144
+ description: "Aria-label attribute text",
145
+ table: {
146
+ category: "props: SgdsRadio",
147
+ defaultValue: { summary: "" },
148
+ type: {
149
+ summary: "string",
150
+ },
151
+ },
152
+ },
153
+ event: {
154
+ name: "sgds-change",
155
+ description:
156
+ "emitted when there is a change in value in SgdsRadioGroup el",
157
+ table: {
158
+ category: "event: SgdsRadioGroup",
159
+ },
160
+ },
161
+ baseRadio: {
162
+ name: "base",
163
+ description: "SgdsRadio component's internal wrapper.",
164
+ table: {
165
+ category: "Css Parts: SgdsRadio",
166
+ },
167
+ },
168
+ controlRadio: {
169
+ name: "control",
170
+ description: "SgdsRadio component's radio control.",
171
+ table: {
172
+ category: "Css Parts: SgdsRadio",
173
+ },
174
+ },
175
+ labelRadio: {
176
+ name: "label",
177
+ description: "SgdsRadio component's radio label.",
178
+ table: {
179
+ category: "Css Parts: SgdsRadio",
180
+ },
181
+ },
182
+ baseRadioGroup: {
183
+ name: "base",
184
+ description: "SgdsRadioGroup component's internal wrapper.",
185
+ table: {
186
+ category: "Css Parts: SgdsRadioGroup",
187
+ },
188
+ },
189
+ controlRadioGroup: {
190
+ name: "control",
191
+ description: "SgdsRadioGroup component's radiogroup control.",
192
+ table: {
193
+ category: "Css Parts: SgdsRadioGroup",
194
+ },
195
+ },
196
+ labelRadioGroup: {
197
+ name: "label",
198
+ description: "SgdsRadioGroup component's radiogroup label.",
199
+ table: {
200
+ category: "Css Parts: SgdsRadioGroup",
201
+ },
202
+ },
203
+ invalidFeedbackRadioGroup: {
204
+ name: "invalidFeedback",
205
+ description: "SgdsRadioGroup component's radiogroup invalid feedback.",
206
+ table: {
207
+ category: "Css Parts: SgdsRadioGroup",
208
+ },
209
+ },
210
+ }}
211
+ />
212
+
213
+ export const Template = ({
214
+ name,
215
+ defaultValue,
216
+ disabled,
217
+ isInline,
218
+ radioValue,
219
+ radioId,
220
+ radioSlot,
221
+ radioGroupSlot,
222
+ ariaLabel,
223
+ required,
224
+ invalid,
225
+ invalidFeedback,
226
+ }) => {
227
+ return html`
228
+ <sgds-radiogroup
229
+ .name=${name}
230
+ .value=${defaultValue}
231
+ .required=${required}
232
+ .invalid=${invalid}
233
+ .invalidFeedback=${invalidFeedback}
234
+ >
235
+ <span slot="label">${radioGroupSlot}</span>
236
+ <sgds-radio
237
+ .value=${radioValue}
238
+ .disabled=${disabled}
239
+ .radioId=${radioId}
240
+ .ariaLabel=${ariaLabel}
241
+ .isInline=${isInline}
242
+ >${radioSlot}</sgds-radio
243
+ >
244
+ <sgds-radio value="2" .isInline=${isInline}>Option 2</sgds-radio>
245
+ <sgds-radio value="3" .isInline=${isInline}>Option 3</sgds-radio>
246
+ </sgds-radiogroup>
247
+ `;
248
+ };
249
+
250
+ # SgdsRadio
251
+
252
+ <Canvas>
253
+ <Story name='Basic'>{Template.bind({})}</Story>
254
+ </Canvas>
255
+
256
+ ## API
257
+
258
+ ```jsx
259
+ import { SgdsRadioGroup, SgdsRadio } from "@govtechsg/sgds-web-component/Radio";
260
+ ```
261
+
262
+ <ArgsTable story='Basic' />
@@ -0,0 +1,29 @@
1
+ import { Story, Meta } from '@storybook/web-components';
2
+ import '../lib/Button'
3
+ import {html } from 'lit'
4
+ import { state, property} from "lit/decorators.js";
5
+
6
+
7
+ export default {
8
+ title: 'Components/Sample-js',
9
+ // More on argTypes: https://storybook.js.org/docs/web-components/api/argtypes
10
+ argTypes: {
11
+ variant: { control: 'text' },
12
+ classes: { control: "text" },
13
+ },
14
+ };
15
+
16
+ const Template = ({variant, classes}) => {
17
+
18
+ return html`
19
+ <button-element .variant=${variant} .classes=${classes}>
20
+ Blaze it
21
+ </button-element>
22
+ `;
23
+ }
24
+
25
+
26
+ export const Primary = Template.bind({})
27
+ Primary.args = {
28
+ variant : "secondary"
29
+ }
@@ -0,0 +1,33 @@
1
+ import { Canvas, Meta, Story, ArgsTable } from "@storybook/addon-docs";
2
+ import { html } from "lit-html";
3
+ import { ButtonElement } from "../lib/Button";
4
+
5
+ <Meta
6
+ title="Components/Sample-mdx"
7
+ argTypes={{
8
+ variant: { control: "text" },
9
+ classes: { control: "text" },
10
+ }}
11
+ />
12
+
13
+ export const Template = (args) => {
14
+ return html`
15
+ <button-element .variant=${args.variant} .classes=${args.classes}>
16
+ Blaze it
17
+ </button-element>
18
+ `;
19
+ }
20
+
21
+
22
+ # Sample
23
+
24
+ This is the sample file for MDX
25
+
26
+ <Canvas>
27
+ <Story name="Basic" args={{ variant: "primary" }}>
28
+ {Template.bind({})}
29
+ </Story>
30
+ </Canvas>
31
+
32
+ <ArgsTable story="Basic" />
33
+
@@ -0,0 +1,245 @@
1
+ import { Canvas, Meta, Story, ArgsTable } from "@storybook/addon-docs";
2
+ import { html } from "lit-html";
3
+ import "../lib/Sidenav";
4
+ import { SgdsSidenavItem, SgdsSidenav } from "../lib/Sidenav";
5
+ import { partDescription } from "./common";
6
+
7
+ <Meta
8
+ title="Components/Sidenav"
9
+ argTypes={{
10
+ // SgdsSidenav
11
+ alwaysOpen: {
12
+ control: "boolean",
13
+ defaultValue: false,
14
+ description:
15
+ "Allow sidenav items to stay open when another item is opened",
16
+ table: {
17
+ category: "props: SgdsSidenav",
18
+ defaultValue: { summary: false },
19
+ type: {
20
+ summary: "boolean",
21
+ },
22
+ },
23
+ },
24
+ default: {
25
+ description:
26
+ "default slot of SgdsSidenavItem. Pass in SideNavItem elements here",
27
+ table: {
28
+ category: "slot: SgdsSidenav",
29
+ },
30
+ },
31
+ //SgdsSidenavItem
32
+ active: {
33
+ control: "boolean",
34
+ description:
35
+ "when true, toggles the sgds-sidenav-item to open on first load and set the active stylings",
36
+ table: {
37
+ category: "props: SgdsSidenavItem",
38
+ defaultValue: { summary: false },
39
+ type: {
40
+ summary: "boolean",
41
+ },
42
+ },
43
+ },
44
+ collapseId: {
45
+ control: "text",
46
+ description:
47
+ "Forwards to id attribute of div.collapse and aria-controls attribute of button in SgdsSidenavItem. By default, SgdsSidenavItem auto-generates a unique id. Override the default id by specifiying your own",
48
+ table: {
49
+ category: "props: SgdsSidenavItem",
50
+ type: {
51
+ summary: "string",
52
+ },
53
+ },
54
+ },
55
+ buttonId: {
56
+ control: "text",
57
+ description:
58
+ "Forwards to id attribute of button and aria-labelledby attribute of ul.sidenav-list in SgdsSidenavItem. By default, SgdsSidenavItem auto-generates a unique id. Override the default id by specifiying your own",
59
+ table: {
60
+ category: "props: SgdsSidenavItem",
61
+ type: {
62
+ summary: "string",
63
+ },
64
+ },
65
+ },
66
+ href: {
67
+ control: "text",
68
+ description:
69
+ "When defined, converts SgdsSidenavItem from a button element to an Anchor element",
70
+ table: {
71
+ defaultValue: { summary: "" },
72
+ category: "props: SgdsSidenavItem",
73
+ type: {
74
+ summary: "string",
75
+ },
76
+ },
77
+ },
78
+ disabledSNI: {
79
+ name: "disabled",
80
+ control: "boolean",
81
+ description: "Disables the SgdsSidenavItem",
82
+ table: {
83
+ category: "props: SgdsSidenavItem",
84
+ defaultValue: { summary: "false" },
85
+ },
86
+ },
87
+ openItem: {
88
+ control: "disable",
89
+ description: "When invoked, opens the SgdsSidenavItem",
90
+ table: {
91
+ category: "methods: SgdsSidenavItem",
92
+ type: {
93
+ summary: "function",
94
+ },
95
+ },
96
+ },
97
+ closeItem: {
98
+ control: "disable",
99
+ description: "When invoked, closes the SgdsSidenavItem",
100
+ table: {
101
+ category: "methods: SgdsSidenavItem",
102
+ type: {
103
+ summary: "function",
104
+ },
105
+ },
106
+ },
107
+ defaultSNI: {
108
+ name: "default",
109
+ description: "default slot for SgdsSidenavLink element",
110
+ table: {
111
+ category: "slot: SgdsSidenavItem",
112
+ },
113
+ },
114
+ title: {
115
+ description:
116
+ "title slot for the content of SgdsSidenavItem's button / anchor element",
117
+ table: {
118
+ category: "slot: SgdsSidenavItem",
119
+ },
120
+ },
121
+ // SgdsSidenavLink
122
+ activeSNL: {
123
+ name: "active",
124
+ control: "boolean",
125
+ description: "When true, sets the active styling of SgdsSidenavLink",
126
+ table: { category: "props: SgdsSidenavLink" },
127
+ },
128
+ hrefSNL: {
129
+ name: "href",
130
+ control: "text",
131
+ description: "href link for SgdsSidenavLink",
132
+ table: { category: "props: SgdsSidenavLink" },
133
+ },
134
+ defaultSNL: {
135
+ name: "default",
136
+ description: "default slot for the title of SgdsSidenavLink",
137
+ table: {
138
+ category: "slot: SgdsSidenavLink",
139
+ },
140
+ },
141
+ disabledSNL: {
142
+ name: "disabled",
143
+ control: "boolean",
144
+ description: "Disables the SgdsSidenavLink",
145
+ table: {
146
+ category: "props: SgdsSidenavLink",
147
+ defaultValue: { summary: "false" },
148
+ },
149
+ },
150
+ }}
151
+ />
152
+
153
+ export const Template = ({
154
+ alwaysOpen,
155
+ active,
156
+ href,
157
+ activeSNL,
158
+ hrefSNL,
159
+ collapseId,
160
+ buttonId,
161
+ disabledSNL,
162
+ disabledSNI,
163
+ }) => {
164
+ return html`
165
+ <sgds-sidenav .alwaysOpen=${alwaysOpen}>
166
+ <sgds-sidenav-item
167
+ .active=${active}
168
+ .href=${href}
169
+ .collapseId=${collapseId}
170
+ .buttonId=${buttonId}
171
+ .disabled=${disabledSNI}
172
+ >
173
+ <span slot="title">
174
+ <sl-icon name="stack"></sl-icon> SideNav Item #1 (control by
175
+ Argstable)
176
+ </span>
177
+ <sgds-sidenav-link
178
+ .href=${hrefSNL}
179
+ .active=${activeSNL}
180
+ .disabled=${disabledSNL}
181
+ >sgds-sidenav-link (control by Argstable)</sgds-sidenav-link
182
+ >
183
+ <sgds-sidenav-link href="#">sgds-sidenav-link</sgds-sidenav-link>
184
+ <sgds-sidenav-link href="#">sgds-sidenav-link</sgds-sidenav-link>
185
+ </sgds-sidenav-item>
186
+ <sgds-sidenav-item>
187
+ <span slot="title">
188
+ <sl-icon name="stack"></sl-icon>SideNav Item #2</span
189
+ >
190
+ <sgds-sidenav-link href="#">sgds-sidenav-link</sgds-sidenav-link>
191
+ <sgds-sidenav-link href="#">sgds-sidenav-link</sgds-sidenav-link>
192
+ <sgds-sidenav-link href="#">sgds-sidenav-link</sgds-sidenav-link>
193
+ </sgds-sidenav-item>
194
+ <sgds-sidenav-item href="#">
195
+ <span slot="title">SideNav Item #3</span>
196
+ </sgds-sidenav-item>
197
+ </sgds-sidenav>
198
+ `;
199
+ };
200
+
201
+ # SgdsSidenav, SgdsSidenavItem, SgdsSgdsSidenavLink
202
+
203
+ <Canvas>
204
+ <Story name="Basic">{Template.bind({})}</Story>
205
+ </Canvas>
206
+
207
+ _Example is using shoelace's icon. See [here](https://shoelace.style/components/icon)_
208
+
209
+ ## API
210
+
211
+ ```jsx
212
+ import {
213
+ SgdsSidenav,
214
+ SgdsSidenavLink,
215
+ SgdsSidenavItem,
216
+ } from "@govtechsg/sgds-web-component/Sidenav";
217
+ ```
218
+
219
+ <ArgsTable story="Basic" />
220
+
221
+ ## SgdsSidenavItem methods
222
+
223
+ `openItem()` and `closeItem()` are public methods exposed by SgdsSidenavItem component for user to customize the opening and closing of SgdsSidenavItems when required.
224
+
225
+ ```jsx
226
+ // class method
227
+
228
+ const SgdsSidenavItem = new SgdsSidenavItem();
229
+ SgdsSidenavItem.openItem();
230
+ SgdsSidenavItem.closeItem();
231
+
232
+ //dom method
233
+
234
+ const SgdsSidenavItemEl = document.querySelector(
235
+ "sgds-sidenav-item#specificId"
236
+ );
237
+ SgdsSidenavItemEl.openItem();
238
+ SgdsSidenavItemEl.closeItem();
239
+ ```
240
+
241
+ ## CSS Custom Properties
242
+
243
+ | Name | Description |
244
+ | ----------------------- | ------------------------------------------------------------------------------------------- |
245
+ | `--sidenav-theme-color` | Sets color of all text and left-border of sidenav. Default to sgds primary color (#5925DC). |