@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,196 @@
1
+ import { Canvas, Meta, Story, ArgsTable } from "@storybook/addon-docs";
2
+ import { html } from "lit-html";
3
+ import "../lib/Checkbox";
4
+
5
+ <Meta
6
+ title='Components/Checkbox'
7
+ //handles format: ['eventName', 'selector']
8
+ parameters={{
9
+ actions: {
10
+ handles: ["sgds-change", "sgds-checkbox"],
11
+ },
12
+ }}
13
+ argTypes={{
14
+ value: {
15
+ control: "text",
16
+ table: {
17
+ category: "props",
18
+ type: {
19
+ summary: "string",
20
+ },
21
+ },
22
+ description:
23
+ "Value of the HTML form control. Primarily used to differentiate a list of related checkboxes that have the same name.",
24
+ },
25
+ checkboxId: {
26
+ control: "text",
27
+ description: "For label/input value pair",
28
+ table: {
29
+ category: "props",
30
+ type: {
31
+ summary: "string",
32
+ },
33
+ },
34
+ },
35
+ name: {
36
+ control: "text",
37
+ table: {
38
+ category: "props",
39
+ type: {
40
+ summary: "string",
41
+ },
42
+ },
43
+ description:
44
+ "Name of the HTML form control. Submitted with the form as part of a name/value pair.",
45
+ },
46
+ disabled: {
47
+ control: "boolean",
48
+ defaultValue: false,
49
+ description:
50
+ "Disables the checkbox",
51
+ table: {
52
+ category: "props",
53
+ defaultValue: { summary: false },
54
+ type: {
55
+ summary: "boolean",
56
+ },
57
+ },
58
+ },
59
+ required: {
60
+ control: "boolean",
61
+ defaultValue: false,
62
+ description: "Makes the checkbox a required field. Only renders validation state ontouch or upon form submission ",
63
+ table: {
64
+ category: "props",
65
+ defaultValue: { summary: false },
66
+ type: {
67
+ summary: "boolean",
68
+ },
69
+ },
70
+ },
71
+ checked: {
72
+ control: "boolean",
73
+ defaultValue: false,
74
+ description:
75
+ "Draws the checkbox in a checked state, which toggles input aria-checked to true",
76
+ table: {
77
+ category: "props",
78
+ defaultValue: { summary: false },
79
+ type: {
80
+ summary: "boolean",
81
+ },
82
+ },
83
+ },
84
+ invalid: {
85
+ control: "boolean",
86
+ defaultValue: false,
87
+ description:
88
+ "Manually style the input as invalid.",
89
+ table: {
90
+ category: "props",
91
+ defaultValue: { summary: false },
92
+ type: {
93
+ summary: "boolean",
94
+ },
95
+ },
96
+ },
97
+ valid: {
98
+ control: "boolean",
99
+ defaultValue: false,
100
+ description:
101
+ "Manually style the input as valid.",
102
+ table: {
103
+ category: "props",
104
+ defaultValue: { summary: false },
105
+ type: {
106
+ summary: "boolean",
107
+ },
108
+ },
109
+ },
110
+ defaultSlot: {
111
+ name: "default",
112
+ control: "text",
113
+ defaultValue: "Default text here",
114
+ description: "default slot for label element",
115
+ table: {
116
+ category: "slots",
117
+ type: {
118
+ summary: "string",
119
+ },
120
+ },
121
+ },
122
+ feedbackSlot: {
123
+ control: "text",
124
+ defaultValue: "Feedback text here",
125
+ description: "feedback slot for invalid state",
126
+ table: {
127
+ category: "slots",
128
+ type: {
129
+ summary: "string",
130
+ },
131
+ },
132
+ },
133
+ Event: {
134
+ name: "sgds-change",
135
+ control: "disable",
136
+ description:
137
+ "Emitted when checkbox is checked/unchecked. Refer to canvas mode to view event handler in action.",
138
+ table: {
139
+ category: "events",
140
+ },
141
+ },
142
+ base: {
143
+ name: "base",
144
+ description: "The component's internal wrapper div",
145
+ table: {
146
+ category: "CSS Parts",
147
+ },
148
+ },
149
+ control: {
150
+ name: "control",
151
+ description: "The checkbox control input",
152
+ table: {
153
+ category: "CSS Parts",
154
+ },
155
+ },
156
+ label: {
157
+ name: "label",
158
+ description: "The checkbox label.",
159
+ table: {
160
+ category: "CSS Parts",
161
+ },
162
+ },
163
+ }}
164
+ />
165
+
166
+ export const Template = (args) => {
167
+ return html`
168
+ <sgds-checkbox
169
+ .name=${args.name}
170
+ ?disabled=${args.disabled}
171
+ value=${args.value}
172
+ ?required=${args.required}
173
+ .checked=${args.checked}
174
+ .invalid=${args.invalid}
175
+ .valid=${args.valid}
176
+ .checkboxId=${args.checkboxId}
177
+ >${args.defaultSlot}<span slot="feedback">${args.feedbackSlot}<span></sgds-checkbox
178
+ >
179
+ `;
180
+ };
181
+
182
+ # Checkbox
183
+
184
+ ## Basic
185
+
186
+ <Canvas>
187
+ <Story name='Basic'>{Template.bind({})}</Story>
188
+ </Canvas>
189
+
190
+ ## API
191
+
192
+ ```jsx
193
+ import { SgdsCheckbox } from "@govtechsg/sgds-web-component/Checkbox";
194
+ ```
195
+
196
+ <ArgsTable story='Basic' />
@@ -0,0 +1,152 @@
1
+ import { Canvas, Meta, Story, ArgsTable } from "@storybook/addon-docs";
2
+ import { html } from "lit-html";
3
+ import "../lib/Dropdown";
4
+ import { partDescription, dropdownElementProps } from "./common";
5
+
6
+ <Meta
7
+ title="Components/Dropdown"
8
+ argTypes={{
9
+ ...dropdownElementProps("SgdsDropdown"),
10
+ default: {
11
+ description: "default slot for SgdsDropdownItem element",
12
+ table: {
13
+ category: "slot: SgdsDropdown",
14
+ },
15
+ },
16
+ menu: {
17
+ table: { category: "part: SgdsDropdown" },
18
+ description: partDescription,
19
+ },
20
+ showMenu: {
21
+ control: "disable",
22
+ description: "When invoked, opens the dropdown menu",
23
+ table: {
24
+ category: "methods: SgdsDropdown",
25
+ type: {
26
+ summary: "function",
27
+ },
28
+ },
29
+ },
30
+ hideMenu: {
31
+ control: "disable",
32
+ description: "When invoked, hides the dropdown menu",
33
+ table: {
34
+ category: "methods: SgdsDropdown",
35
+ type: {
36
+ summary: "function",
37
+ },
38
+ },
39
+ },
40
+ // sgds-dropdown-item
41
+ active: {
42
+ control: "boolean",
43
+ description: "when true, sets the active stylings of .dropdown-item",
44
+ table: {
45
+ category: "props: SgdsDropdownItem",
46
+ defaultValue: { summary: false },
47
+ type: {
48
+ summary: "boolean",
49
+ },
50
+ },
51
+ },
52
+ href: {
53
+ control: "text",
54
+ description: "Href attribute for anchor element in SgdsDropdownItem",
55
+ table: {
56
+ defaultValue: { summary: "" },
57
+ category: "props: SgdsDropdownItem",
58
+ type: {
59
+ summary: "string",
60
+ },
61
+ },
62
+ },
63
+ disabledDI: {
64
+ name: "disabled",
65
+ control: "boolean",
66
+ description: "Disables the dropdown item when true",
67
+ table: {
68
+ defaultValue: { summary: "false" },
69
+ category: "props: SgdsDropdownItem",
70
+ type: {
71
+ summary: "string",
72
+ },
73
+ },
74
+ },
75
+ }}
76
+ />
77
+
78
+ export const Template = ({
79
+ noFlip,
80
+ menuAlignRight,
81
+ drop,
82
+ popperOpts,
83
+ togglerId,
84
+ togglerText,
85
+ variant,
86
+ active,
87
+ href,
88
+ disabledDI,
89
+ close,
90
+ menuIsOpen,
91
+ dropdownDisabled,
92
+ }) => {
93
+ return html`
94
+ <sgds-dropdown
95
+ .togglerText=${togglerText}
96
+ .noFlip=${noFlip}
97
+ .drop=${drop}
98
+ .menuAlignRight=${menuAlignRight}
99
+ .popperOpts=${popperOpts}
100
+ .togglerId=${togglerId}
101
+ .variant=${variant}
102
+ .close=${close}
103
+ .menuIsOpen=${menuIsOpen}
104
+ .disabled=${dropdownDisabled}
105
+ >
106
+ <sgds-dropdown-item
107
+ .href=${href}
108
+ .active=${active}
109
+ .disabled=${disabledDI}
110
+ >item #1 (argsTable controlled)</sgds-dropdown-item
111
+ >
112
+ <sgds-dropdown-item href="https://google.com">item #2</sgds-dropdown-item>
113
+ <sgds-dropdown-item href="#" disabled>item #3</sgds-dropdown-item>
114
+ </sgds-dropdown>
115
+ `;
116
+ };
117
+
118
+ # SgdsDropdown, SgdsDropdownItem
119
+
120
+
121
+ <Story
122
+ name="Basic"
123
+ args={{
124
+ togglerText: "Dropdown",
125
+ variant: "secondary",
126
+ href: "#",
127
+ }}
128
+ >
129
+ {Template.bind({})}
130
+ </Story>
131
+
132
+ ```jsx
133
+ import {
134
+ SgdsDropdown,
135
+ SgdsDropdownItem,
136
+ } from "@govtechsg/sgds-web-component/Dropdown";
137
+ // SgdsDropdown uses SgdsButton under the hood
138
+ import { SgdsButton } from "@govtechsg/sgds-web-component/Button"
139
+ ```
140
+
141
+ <ArgsTable story="Basic" />
142
+
143
+
144
+ ```jsx
145
+ <sgds-dropdown>
146
+ <sgds-dropdown-item>item #1 (argsTable controlled)</sgds-dropdown-item>
147
+ <sgds-dropdown-item href="https://google.com">item #2</sgds-dropdown-item>
148
+ <sgds-dropdown-item href="#" disabled>
149
+ item #3
150
+ </sgds-dropdown-item>
151
+ </sgds-dropdown>
152
+ ```
@@ -0,0 +1,261 @@
1
+ import { Canvas, Meta, Story, ArgsTable } from "@storybook/addon-docs";
2
+ import { html } from "lit-html";
3
+ import "../lib/Footer";
4
+ import { partDescription } from "./common";
5
+
6
+ <Meta
7
+ title="Components/Footer"
8
+ argTypes={{
9
+ title: {
10
+ control: "text",
11
+ description: "Sets title of SgdsFooter",
12
+ table: { category: "props" },
13
+ },
14
+ description: {
15
+ control: "text",
16
+ description: "Sets description of SgdsFooter",
17
+ table: { category: "props" },
18
+ },
19
+ links: {
20
+ control: "object",
21
+ description: "Array of type `ColumnLinks`",
22
+ table: {
23
+ defaultValue: "[]",
24
+ category: "props",
25
+ type: {
26
+ summary: `
27
+ interface ColumnLinks {
28
+ title: string;
29
+ links : Links[]
30
+ }
31
+ interface Links {
32
+ href: string;
33
+ label: string;
34
+ }
35
+ `,
36
+ },
37
+ },
38
+ },
39
+ lastUpdatedDate: {
40
+ control: "text",
41
+ description: "String date for last updated date",
42
+ table: { category: "props" },
43
+ },
44
+ contactHref: {
45
+ control: "text",
46
+ description: "href link for contacts",
47
+ table: { category: "props" },
48
+ },
49
+ feedbackHref: {
50
+ control: "text",
51
+ description: "href link for feedback",
52
+ table: { category: "props" },
53
+ },
54
+ vulnerabilityHref: {
55
+ control: "text",
56
+ description: "href link for vulnerability",
57
+ table: { category: "props" },
58
+ },
59
+ privacyHref: {
60
+ control: "text",
61
+ description: "href link for privacy",
62
+ table: { category: "props" },
63
+ },
64
+ termsOfUseHref: {
65
+ control: "text",
66
+ description: "href link for terms of use",
67
+ table: { category: "props" },
68
+ },
69
+ "footer-top": {
70
+ table: { category: "part" },
71
+ description: partDescription,
72
+ },
73
+ "footer-bottom": {
74
+ table: { category: "part" },
75
+ description: partDescription,
76
+ },
77
+ }}
78
+ />
79
+
80
+ export const Template = ({
81
+ title,
82
+ description,
83
+ links,
84
+ lastUpdatedDate,
85
+ contactHref,
86
+ feedbackHref,
87
+ vulnerabilityHref,
88
+ privacyHref,
89
+ termsOfUseHref,
90
+ }) =>
91
+ html`
92
+ <sgds-footer
93
+ .title=${title}
94
+ .description=${description}
95
+ .lastUpdatedDate=${lastUpdatedDate}
96
+ .contactHref=${contactHref}
97
+ .feedbackHref=${feedbackHref}
98
+ .vulnerabilityHref=${vulnerabilityHref}
99
+ .privacyHref=${privacyHref}
100
+ .termsOfUseHref=${termsOfUseHref}
101
+ .links=${links}
102
+ >
103
+ </sgds-footer>
104
+ `;
105
+
106
+ # SgdsFooter
107
+
108
+ <Canvas>
109
+ <Story
110
+ name="Basic"
111
+ args={{
112
+ title: "Singapore Government Design System",
113
+ description:
114
+ "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Earum illo delectus laborum libero id ratione quibusdam tempora assumenda quas, pariatur cum minus, aliquid molestiae et nisi dolorem vitae molestias! Voluptate commodi aliquid iusto sequi sit eligendi, quod numquam nihil consectetur eaque error earum laudantium! Temporibus accusamus pariatur quod totam quia.",
115
+ lastUpdatedDate: "01 Sep 2020",
116
+ contactHref: "https://form.gov.sg/",
117
+ feedbackHref: "https://form.gov.sg/",
118
+ vulnerabilityHref: "https://www.tech.gov.sg/report_vulnerability",
119
+ privacyHref: "https://www.designsystem.tech.gov.sg/privacy/",
120
+ termsOfUseHref: "https://www.designsystem.tech.gov.sg/terms-of-use/",
121
+ links: [
122
+ {
123
+ title: "Column 1",
124
+ links: [
125
+ {
126
+ href: "#1",
127
+ label: "About Us",
128
+ },
129
+ {
130
+ href: "#2",
131
+ label: "This is a super long link",
132
+ },
133
+ {
134
+ href: "#3",
135
+ label: "Test",
136
+ },
137
+ {
138
+ href: "#4",
139
+ label: "Test",
140
+ },
141
+ ],
142
+ },
143
+ {
144
+ title: "Column 2",
145
+ links: [
146
+ {
147
+ href: "#1",
148
+ label: "About Us",
149
+ },
150
+ {
151
+ href: "#2",
152
+ label: "This is a super long link",
153
+ },
154
+ {
155
+ href: "#3",
156
+ label: "Test",
157
+ },
158
+ {
159
+ href: "#4",
160
+ label: "Test",
161
+ },
162
+ ],
163
+ },
164
+ {
165
+ title: "Column 3",
166
+ links: [
167
+ {
168
+ href: "#1",
169
+ label: "About Us",
170
+ },
171
+ {
172
+ href: "#2",
173
+ label: "This is a super long link",
174
+ },
175
+ {
176
+ href: "#3",
177
+ label: "Test",
178
+ },
179
+ {
180
+ href: "#4",
181
+ label: "Test",
182
+ },
183
+ ],
184
+ },
185
+ {
186
+ title: "Column 4",
187
+ links: [
188
+ {
189
+ href: "#1",
190
+ label: "About Us",
191
+ },
192
+ {
193
+ href: "#2",
194
+ label: "This is a super long link",
195
+ },
196
+ {
197
+ href: "#3",
198
+ label: "Test",
199
+ },
200
+ {
201
+ href: "#4",
202
+ label: "Test",
203
+ },
204
+ ],
205
+ },
206
+ {
207
+ title: "Column 5",
208
+ links: [
209
+ {
210
+ href: "#1",
211
+ label: "About Us",
212
+ },
213
+ {
214
+ href: "#2",
215
+ label: "This is a super long link",
216
+ },
217
+ {
218
+ href: "#3",
219
+ label: "Test",
220
+ },
221
+ {
222
+ href: "#4",
223
+ label: "Test",
224
+ },
225
+ ],
226
+ },
227
+ {
228
+ title: "Column 6",
229
+ links: [
230
+ {
231
+ href: "#1",
232
+ label: "About Us",
233
+ },
234
+ {
235
+ href: "#2",
236
+ label: "This is a super long link",
237
+ },
238
+ {
239
+ href: "#3",
240
+ label: "Test",
241
+ },
242
+ {
243
+ href: "#4",
244
+ label: "Test",
245
+ },
246
+ ],
247
+ },
248
+ ],
249
+ }}
250
+ >
251
+ {Template.bind({})}
252
+ </Story>
253
+ </Canvas>
254
+
255
+ ## API
256
+
257
+ ```jsx
258
+ import { SgdsFooter, ColumnLinks } from "@govtechsg/sgds-web-component";
259
+ ```
260
+
261
+ <ArgsTable story="Basic" />