@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.
- package/.github/workflows/publish-latest.yml +22 -0
- package/.github/workflows/publish-pr.yml +28 -0
- package/.husky/commit-msg +4 -0
- package/.husky/prepare-commit-msg +8 -0
- package/.storybook/main.js +16 -0
- package/.storybook/preview-head.html +11 -0
- package/.storybook/preview.js +9 -0
- package/.vscode/settings.json +7 -0
- package/CONTRIBUTING.md +56 -0
- package/LICENSE +20 -0
- package/amplify.yml +22 -0
- package/commitlint.config.js +1 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/button-element.scss.html +112 -0
- package/coverage/lcov-report/button-element.ts.html +145 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +116 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov.info +32 -0
- package/index.html +430 -0
- package/{Button → lib/Button}/index.d.ts +0 -0
- package/{Button → lib/Button}/index.js +304 -39
- package/lib/Button/index.js.map +1 -0
- package/{Button → lib/Button}/package.json +0 -0
- package/lib/Button/sgds-button.d.ts +48 -0
- package/lib/Card/index.d.ts +1 -0
- package/lib/Card/index.js +6150 -0
- package/lib/Card/index.js.map +1 -0
- package/lib/Card/package.json +7 -0
- package/lib/Card/sgds-action-card.d.ts +20 -0
- package/lib/Checkbox/index.d.ts +1 -0
- package/lib/Checkbox/index.js +6366 -0
- package/lib/Checkbox/index.js.map +1 -0
- package/lib/Checkbox/package.json +7 -0
- package/lib/Checkbox/sgds-checkbox.d.ts +36 -0
- package/lib/Dropdown/index.d.ts +3 -0
- package/{Mainnav → lib/Dropdown}/index.js +2786 -9258
- package/lib/Dropdown/index.js.map +1 -0
- package/lib/Dropdown/package.json +7 -0
- package/lib/Dropdown/sgds-dropdown-item.d.ts +7 -0
- package/lib/Dropdown/sgds-dropdown.d.ts +7 -0
- package/{Footer → lib/Footer}/index.d.ts +0 -0
- package/{Footer → lib/Footer}/index.js +111 -95
- package/lib/Footer/index.js.map +1 -0
- package/{Footer → lib/Footer}/package.json +0 -0
- package/{Footer → lib/Footer}/sgds-footer.d.ts +2 -2
- package/lib/Input/index.d.ts +1 -0
- package/lib/Input/index.js +6656 -0
- package/lib/Input/index.js.map +1 -0
- package/lib/Input/package.json +7 -0
- package/lib/Input/sgds-input.d.ts +42 -0
- package/{Mainnav → lib/Mainnav}/index.d.ts +1 -0
- package/{index.js → lib/Mainnav/index.js} +3876 -23415
- package/lib/Mainnav/index.js.map +1 -0
- package/{Mainnav → lib/Mainnav}/package.json +0 -0
- package/lib/Mainnav/sgds-mainnav-dropdown.d.ts +5 -0
- package/lib/Mainnav/sgds-mainnav-item.d.ts +4 -0
- package/{Mainnav → lib/Mainnav}/sgds-mainnav.d.ts +3 -2
- package/{Masthead → lib/Masthead}/index.d.ts +0 -0
- package/{Masthead → lib/Masthead}/index.js +140 -114
- package/lib/Masthead/index.js.map +1 -0
- package/{Masthead → lib/Masthead}/package.json +0 -0
- package/{Masthead → lib/Masthead}/sgds-masthead.d.ts +1 -1
- package/lib/Modal/index.d.ts +1 -0
- package/lib/Modal/index.js +6432 -0
- package/lib/Modal/index.js.map +1 -0
- package/lib/Modal/package.json +7 -0
- package/lib/Modal/sgds-modal.d.ts +28 -0
- package/lib/QuantityToggle/index.d.ts +1 -0
- package/lib/QuantityToggle/index.js +7049 -0
- package/lib/QuantityToggle/index.js.map +1 -0
- package/lib/QuantityToggle/package.json +7 -0
- package/lib/QuantityToggle/sgds-quantitytoggle.d.ts +30 -0
- package/lib/Radio/index.d.ts +2 -0
- package/lib/Radio/index.js +12607 -0
- package/lib/Radio/index.js.map +1 -0
- package/lib/Radio/package.json +7 -0
- package/lib/Radio/sgds-radio.d.ts +31 -0
- package/lib/Radio/sgds-radiogroup.d.ts +41 -0
- package/{Sidenav → lib/Sidenav}/index.d.ts +0 -0
- package/{Sidenav → lib/Sidenav}/index.js +2266 -2171
- package/lib/Sidenav/index.js.map +1 -0
- package/{Sidenav → lib/Sidenav}/package.json +0 -0
- package/{Sidenav → lib/Sidenav}/sgds-sidenav-item.d.ts +2 -1
- package/lib/Sidenav/sgds-sidenav-link.d.ts +4 -0
- package/{Sidenav → lib/Sidenav}/sgds-sidenav.d.ts +1 -1
- package/lib/Tab/index.d.ts +3 -0
- package/lib/Tab/index.js +13557 -0
- package/lib/Tab/index.js.map +1 -0
- package/lib/Tab/package.json +7 -0
- package/lib/Tab/sgds-tab.d.ts +26 -0
- package/lib/Tab/sgds-tabgroup.d.ts +47 -0
- package/lib/Tab/sgds-tabpanel.d.ts +25 -0
- package/lib/Textarea/index.d.ts +1 -0
- package/lib/Textarea/index.js +6696 -0
- package/lib/Textarea/index.js.map +1 -0
- package/lib/Textarea/package.json +7 -0
- package/lib/Textarea/sgds-textarea.d.ts +53 -0
- package/lib/index.d.ts +16 -0
- package/lib/index.js +134580 -0
- package/lib/index.js.map +1 -0
- package/lib/umd/index.js +134587 -0
- package/lib/umd/index.js.map +1 -0
- package/lib/utils/animate.d.ts +10 -0
- package/lib/utils/animation-registry.d.ts +18 -0
- package/{utils → lib/utils}/breakpoints.d.ts +0 -0
- package/lib/utils/card-element.d.ts +11 -0
- package/lib/utils/defaultvalue.d.ts +2 -0
- package/lib/utils/dropdown-element.d.ts +37 -0
- package/lib/utils/event.d.ts +2 -0
- package/lib/utils/form.d.ts +38 -0
- package/{utils → lib/utils}/generateId.d.ts +0 -0
- package/lib/utils/link-element.d.ts +7 -0
- package/lib/utils/mergeDeep.d.ts +2 -0
- package/lib/utils/modal.d.ts +12 -0
- package/lib/utils/object.d.ts +2 -0
- package/lib/utils/offset.d.ts +4 -0
- package/lib/utils/scroll.d.ts +13 -0
- package/{utils → lib/utils}/sgds-element.d.ts +0 -0
- package/lib/utils/slot.d.ts +22 -0
- package/lib/utils/tabbable.d.ts +8 -0
- package/lib/utils/watch.d.ts +14 -0
- package/mocks/dropdown.d.ts +4 -0
- package/mocks/dropdown.ts +27 -0
- package/mocks/link.d.ts +3 -0
- package/mocks/link.ts +6 -0
- package/package.json +65 -10
- package/rollup.config.js +73 -0
- package/rollup.test.config.js +42 -0
- package/scripts/buildUtils.js +30 -0
- package/scripts/frankBuild.js +49 -0
- package/src/Button/index.ts +1 -0
- package/src/Button/sgds-button.scss +28 -0
- package/src/Button/sgds-button.ts +153 -0
- package/src/Card/index.ts +1 -0
- package/src/Card/sgds-action-card.scss +27 -0
- package/src/Card/sgds-action-card.ts +115 -0
- package/src/Checkbox/index.ts +1 -0
- package/src/Checkbox/sgds-checkbox.scss +4 -0
- package/src/Checkbox/sgds-checkbox.ts +149 -0
- package/src/Dropdown/index.ts +3 -0
- package/src/Dropdown/sgds-dropdown-item.ts +39 -0
- package/src/Dropdown/sgds-dropdown.scss +5 -0
- package/src/Dropdown/sgds-dropdown.ts +54 -0
- package/src/Footer/index.ts +3 -0
- package/src/Footer/sgds-footer.scss +5 -0
- package/src/Footer/sgds-footer.ts +121 -0
- package/src/Input/index.ts +1 -0
- package/src/Input/sgds-input.scss +20 -0
- package/src/Input/sgds-input.ts +178 -0
- package/src/Mainnav/index.ts +4 -0
- package/src/Mainnav/sgds-mainnav-dropdown.scss +13 -0
- package/src/Mainnav/sgds-mainnav-dropdown.ts +45 -0
- package/src/Mainnav/sgds-mainnav-item.scss +24 -0
- package/src/Mainnav/sgds-mainnav-item.ts +8 -0
- package/src/Mainnav/sgds-mainnav.scss +39 -0
- package/src/Mainnav/sgds-mainnav.ts +183 -0
- package/src/Masthead/index.ts +1 -0
- package/src/Masthead/sgds-masthead.scss +217 -0
- package/src/Masthead/sgds-masthead.ts +189 -0
- package/src/Modal/index.ts +1 -0
- package/src/Modal/sgds-modal.scss +128 -0
- package/src/Modal/sgds-modal.ts +309 -0
- package/src/QuantityToggle/index.ts +1 -0
- package/src/QuantityToggle/sgds-quantitytoggle.scss +10 -0
- package/src/QuantityToggle/sgds-quantitytoggle.ts +130 -0
- package/src/Radio/index.ts +2 -0
- package/src/Radio/sgds-radio.scss +5 -0
- package/src/Radio/sgds-radio.ts +120 -0
- package/src/Radio/sgds-radiogroup.scss +22 -0
- package/src/Radio/sgds-radiogroup.ts +221 -0
- package/src/Sidenav/index.ts +4 -0
- package/src/Sidenav/sgds-sidenav-item.scss +73 -0
- package/src/Sidenav/sgds-sidenav-item.ts +145 -0
- package/src/Sidenav/sgds-sidenav-link.scss +25 -0
- package/src/Sidenav/sgds-sidenav-link.ts +8 -0
- package/src/Sidenav/sgds-sidenav.scss +6 -0
- package/src/Sidenav/sgds-sidenav.ts +33 -0
- package/src/Tab/index.ts +3 -0
- package/src/Tab/sgds-tab.scss +84 -0
- package/src/Tab/sgds-tab.ts +87 -0
- package/src/Tab/sgds-tabgroup.scss +198 -0
- package/src/Tab/sgds-tabgroup.ts +295 -0
- package/src/Tab/sgds-tabpanel.scss +12 -0
- package/src/Tab/sgds-tabpanel.ts +55 -0
- package/src/Textarea/index.ts +1 -0
- package/src/Textarea/sgds-textarea.scss +23 -0
- package/src/Textarea/sgds-textarea.ts +201 -0
- package/src/index.ts +16 -0
- package/src/utils/animate.ts +69 -0
- package/src/utils/animation-registry.ts +71 -0
- package/src/utils/base.scss +14 -0
- package/src/utils/breakpoints.ts +5 -0
- package/src/utils/card-element.ts +42 -0
- package/src/utils/components.style.scss +531 -0
- package/src/utils/defaultvalue.ts +51 -0
- package/src/utils/dropdown-element.ts +244 -0
- package/src/utils/event.ts +13 -0
- package/src/utils/form.ts +183 -0
- package/src/utils/generateId.ts +4 -0
- package/src/utils/link-element.ts +34 -0
- package/src/utils/mergeDeep.ts +22 -0
- package/src/utils/modal.ts +64 -0
- package/src/utils/object.ts +2 -0
- package/src/utils/offset.ts +6 -0
- package/src/utils/scroll.ts +57 -0
- package/src/utils/sgds-element.ts +18 -0
- package/src/utils/slot.ts +102 -0
- package/src/utils/tabbable.ts +81 -0
- package/src/utils/watch.ts +62 -0
- package/stories/ActionCard.stories.mdx +199 -0
- package/stories/Button.stories.mdx +194 -0
- package/stories/Checkbox.stories.mdx +196 -0
- package/stories/Dropdown.stories.mdx +152 -0
- package/stories/Footer.stories.mdx +261 -0
- package/stories/Input.stories.mdx +236 -0
- package/stories/MainNav.stories.mdx +169 -0
- package/stories/Masthead.stories.mdx +112 -0
- package/stories/Modal.stories.mdx +103 -0
- package/stories/QuantityToggle.stories.mdx +97 -0
- package/stories/Radio.stories.mdx +262 -0
- package/stories/Sample.stories.js +29 -0
- package/stories/Sample.stories.mdx +33 -0
- package/stories/SideNav.stories.mdx +245 -0
- package/stories/common.js +185 -0
- package/stories/textarea.stories.mdx +253 -0
- package/test/button.element.test.ts +185 -0
- package/test/checkbox.test.ts +240 -0
- package/test/dropdown.test.ts +637 -0
- package/test/footer.test.ts +181 -0
- package/test/generateId.test.ts +18 -0
- package/test/input.element.test.ts +316 -0
- package/test/link-element.test.ts +38 -0
- package/test/mainnav.test.ts +313 -0
- package/test/masthead.test.ts +116 -0
- package/test/modal.test.ts +149 -0
- package/test/quantitytoggle.test.ts +76 -0
- package/test/radio.test.ts +310 -0
- package/test/selectable-card.test.ts +159 -0
- package/test/sidenav.test.ts +390 -0
- package/test/tab.test.ts +76 -0
- package/test/textarea.test.ts +126 -0
- package/tsconfig.json +26 -0
- package/tsconfig.test.json +24 -0
- package/typings/scss.d.ts +5 -0
- package/web-dev-server.config.mjs +7 -0
- package/web-test-runner.config.mjs +47 -0
- package/Button/index.js.map +0 -1
- package/Button/sgds-button.d.ts +0 -23
- package/Footer/index.js.map +0 -1
- package/Mainnav/index.js.map +0 -1
- package/Mainnav/sgds-mainnav-item.d.ts +0 -7
- package/Masthead/index.js.map +0 -1
- package/Sidenav/index.js.map +0 -1
- package/Sidenav/sgds-sidenav-link.d.ts +0 -7
- package/index.d.ts +0 -5
- package/index.js.map +0 -1
- package/umd/index.js +0 -52092
- 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). |
|