@telus-uds/components-base 1.8.0 → 1.8.1
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/CHANGELOG.md +13 -2
- package/package.json +4 -4
- package/.storybook/main.js +0 -11
- package/.storybook/preview.js +0 -37
- package/.turbo/turbo-build.log +0 -8
- package/.turbo/turbo-lint.log +0 -3
- package/CHANGELOG.json +0 -311
- package/__fixtures__/Accessible.js +0 -34
- package/__fixtures__/Accessible.native.js +0 -34
- package/__fixtures__/Theme.jsx +0 -13
- package/__fixtures__/Viewport.jsx +0 -17
- package/__fixtures__/test-utils.js +0 -25
- package/__fixtures__/testTheme.js +0 -1830
- package/__tests__/A11yText/A11yText.test.jsx +0 -34
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
- package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -287
- package/__tests__/Box/Box.test.jsx +0 -111
- package/__tests__/Button/Button.test.jsx +0 -86
- package/__tests__/Button/ButtonBase.test.jsx +0 -82
- package/__tests__/Button/ButtonGroup.test.jsx +0 -347
- package/__tests__/Button/ButtonLink.test.jsx +0 -61
- package/__tests__/Card/Card.test.jsx +0 -63
- package/__tests__/Checkbox/Checkbox.test.jsx +0 -94
- package/__tests__/Checkbox/CheckboxGroup.test.jsx +0 -246
- package/__tests__/Divider/Divider.test.jsx +0 -91
- package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
- package/__tests__/Feedback/Feedback.test.jsx +0 -42
- package/__tests__/FlexGrid/Col.test.jsx +0 -261
- package/__tests__/FlexGrid/FlexGrid.test.jsx +0 -136
- package/__tests__/FlexGrid/Row.test.jsx +0 -273
- package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
- package/__tests__/Icon/Icon.test.jsx +0 -61
- package/__tests__/IconButton/IconButton.test.jsx +0 -52
- package/__tests__/InputLabel/InputLabel.test.jsx +0 -28
- package/__tests__/InputLabel/__snapshots__/InputLabel.test.jsx.snap +0 -3
- package/__tests__/InputSupports/InputSupports.test.jsx +0 -60
- package/__tests__/Link/Link.test.jsx +0 -63
- package/__tests__/Link/TextButton.test.jsx +0 -35
- package/__tests__/List/List.test.jsx +0 -60
- package/__tests__/Modal/Modal.test.jsx +0 -47
- package/__tests__/Notification/Notification.test.jsx +0 -20
- package/__tests__/Pagination/Pagination.test.jsx +0 -160
- package/__tests__/Progress/Progress.test.jsx +0 -79
- package/__tests__/Radio/Radio.test.jsx +0 -87
- package/__tests__/Radio/RadioGroup.test.jsx +0 -220
- package/__tests__/RadioCard/RadioCard.test.jsx +0 -87
- package/__tests__/RadioCard/RadioCardGroup.test.jsx +0 -246
- package/__tests__/Search/Search.test.jsx +0 -73
- package/__tests__/Select/Select.test.jsx +0 -94
- package/__tests__/SideNav/SideNav.test.jsx +0 -110
- package/__tests__/Skeleton/Skeleton.test.jsx +0 -61
- package/__tests__/Spacer/Spacer.test.jsx +0 -63
- package/__tests__/StackView/StackView.test.jsx +0 -216
- package/__tests__/StackView/StackWrap.test.jsx +0 -47
- package/__tests__/StackView/getStackedContent.test.jsx +0 -295
- package/__tests__/StepTracker/StepTracker.test.jsx +0 -94
- package/__tests__/Tabs/Tabs.test.jsx +0 -40
- package/__tests__/Tags/Tags.test.jsx +0 -327
- package/__tests__/TextInput/TextArea.test.jsx +0 -35
- package/__tests__/TextInput/TextInputBase.test.jsx +0 -125
- package/__tests__/ThemeProvider/ThemeProvider.test.jsx +0 -77
- package/__tests__/ThemeProvider/useThemeTokens.test.jsx +0 -514
- package/__tests__/ThemeProvider/utils/theme-tokens.test.js +0 -41
- package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
- package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
- package/__tests__/Tooltip/Tooltip.test.jsx +0 -65
- package/__tests__/Tooltip/getTooltipPosition.test.js +0 -79
- package/__tests__/Typography/typography.test.jsx +0 -90
- package/__tests__/utils/children.test.jsx +0 -128
- package/__tests__/utils/containUniqueFields.test.js +0 -25
- package/__tests__/utils/input.test.js +0 -375
- package/__tests__/utils/props.test.js +0 -36
- package/__tests__/utils/semantics.test.jsx +0 -34
- package/__tests__/utils/useCopy.test.js +0 -42
- package/__tests__/utils/useResponsiveProp.test.jsx +0 -202
- package/__tests__/utils/useSpacingScale.test.jsx +0 -273
- package/__tests__/utils/useUniqueId.test.js +0 -31
- package/babel.config.js +0 -35
- package/generate-component-docs.js +0 -72
- package/jest.config.js +0 -32
- package/stories/A11yText/A11yText.stories.jsx +0 -71
- package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +0 -22
- package/stories/Box/Box.stories.jsx +0 -143
- package/stories/Button/Button.stories.jsx +0 -72
- package/stories/Button/ButtonGroup.stories.jsx +0 -81
- package/stories/Button/ButtonLink.stories.jsx +0 -30
- package/stories/Card/Card.stories.jsx +0 -62
- package/stories/Checkbox/Checkbox.stories.jsx +0 -94
- package/stories/Divider/Divider.stories.jsx +0 -68
- package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +0 -112
- package/stories/Feedback/Feedback.stories.jsx +0 -96
- package/stories/FlexGrid/01 FlexGrid.stories.jsx +0 -54
- package/stories/FlexGrid/02 Row.stories.jsx +0 -41
- package/stories/FlexGrid/03 Col.stories.jsx +0 -141
- package/stories/Icon/Icon.stories.jsx +0 -79
- package/stories/IconButton/IconButton.stories.jsx +0 -50
- package/stories/InputLabel/InputLabel.stories.jsx +0 -39
- package/stories/Link/ChevronLink.stories.jsx +0 -48
- package/stories/Link/Link.stories.jsx +0 -90
- package/stories/Link/TextButton.stories.jsx +0 -79
- package/stories/List/List.stories.jsx +0 -117
- package/stories/Modal/Modal.stories.jsx +0 -54
- package/stories/Notification/Notification.stories.jsx +0 -82
- package/stories/Pagination/Pagination.stories.jsx +0 -64
- package/stories/Progress/Progress.stories.jsx +0 -93
- package/stories/Radio/Radio.stories.jsx +0 -100
- package/stories/RadioCard/RadioCard.stories.jsx +0 -98
- package/stories/Search/Search.stories.jsx +0 -66
- package/stories/Select/Select.stories.jsx +0 -55
- package/stories/SideNav/SideNav.stories.jsx +0 -42
- package/stories/SideNav/SideNavItem.stories.jsx +0 -9
- package/stories/SideNav/SideNavItemsGroup.stories.jsx +0 -17
- package/stories/Skeleton/Skeleton.stories.jsx +0 -36
- package/stories/Spacer/Spacer.stories.jsx +0 -38
- package/stories/StackView/StackView.stories.jsx +0 -75
- package/stories/StackView/StackWrap.stories.jsx +0 -64
- package/stories/StepTracker/StepTracker.stories.jsx +0 -71
- package/stories/Tabs/Tabs.stories.jsx +0 -98
- package/stories/Tags/Tags.stories.jsx +0 -69
- package/stories/TextInput/TextArea.stories.jsx +0 -101
- package/stories/TextInput/TextInput.stories.jsx +0 -141
- package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +0 -64
- package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +0 -81
- package/stories/Tooltip/Tooltip.stories.jsx +0 -81
- package/stories/TooltipButton/TooltipButton.stories.jsx +0 -11
- package/stories/Typography/Typography.stories.jsx +0 -49
- package/stories/platform-supports.jsx +0 -32
- package/stories/platform-supports.native.jsx +0 -3
- package/stories/supports.jsx +0 -236
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react'
|
|
2
|
-
|
|
3
|
-
import { Button, Modal, Spacer, Typography } from '../../src'
|
|
4
|
-
|
|
5
|
-
export default {
|
|
6
|
-
title: 'Modal',
|
|
7
|
-
component: Modal
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const Default = (args) => {
|
|
11
|
-
const [isOpen, setIsOpen] = useState(false)
|
|
12
|
-
const [isMaxWidthOpen, setIsMaxWidthOpen] = useState(false)
|
|
13
|
-
const [isCustomCloseOpen, setIsCustomCloseOpen] = useState(false)
|
|
14
|
-
const [isNoCloseOpen, setIsNoCloseOpen] = useState(false)
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
<>
|
|
18
|
-
<Button onPress={() => setIsOpen(true)}>Open modal</Button>
|
|
19
|
-
<Modal {...args} isOpen={isOpen} onClose={() => setIsOpen(false)}>
|
|
20
|
-
<Typography>Test content</Typography>
|
|
21
|
-
</Modal>
|
|
22
|
-
<Spacer space={3} />
|
|
23
|
-
<Button onPress={() => setIsMaxWidthOpen(true)}>Open maxWidth modal</Button>
|
|
24
|
-
<Modal {...args} isOpen={isMaxWidthOpen} onClose={() => setIsMaxWidthOpen(false)} maxWidth>
|
|
25
|
-
<Typography variant={{ size: 'h2' }}>Test heading</Typography>
|
|
26
|
-
<Typography>Test content</Typography>
|
|
27
|
-
</Modal>
|
|
28
|
-
<Spacer space={3} />
|
|
29
|
-
<Button onPress={() => setIsCustomCloseOpen(true)}>Open custom close button modal</Button>
|
|
30
|
-
<Modal
|
|
31
|
-
{...args}
|
|
32
|
-
isOpen={isCustomCloseOpen}
|
|
33
|
-
onClose={() => setIsCustomCloseOpen(false)}
|
|
34
|
-
closeButton={<Button onPress={() => setIsCustomCloseOpen(false)}>Close</Button>}
|
|
35
|
-
>
|
|
36
|
-
<Typography variant={{ size: 'h2' }}>Test heading</Typography>
|
|
37
|
-
<Typography>Test content</Typography>
|
|
38
|
-
</Modal>
|
|
39
|
-
<Spacer space={3} />
|
|
40
|
-
<Button onPress={() => setIsNoCloseOpen(true)}>Open modal without close button</Button>
|
|
41
|
-
<Modal
|
|
42
|
-
{...args}
|
|
43
|
-
isOpen={isNoCloseOpen}
|
|
44
|
-
onClose={() => setIsNoCloseOpen(false)}
|
|
45
|
-
closeButton={null}
|
|
46
|
-
>
|
|
47
|
-
<Typography variant={{ size: 'h2' }}>Test heading</Typography>
|
|
48
|
-
<Typography>A custom close button is added in the modal content.</Typography>
|
|
49
|
-
<Button onPress={() => setIsNoCloseOpen(false)}>Close</Button>
|
|
50
|
-
</Modal>
|
|
51
|
-
</>
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
Default.storyName = 'Modal'
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/* eslint-disable react/no-multi-comp */
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import { Text } from 'react-native'
|
|
4
|
-
|
|
5
|
-
import { Link, Notification, Typography } from '../../src'
|
|
6
|
-
import { Container } from '../supports'
|
|
7
|
-
|
|
8
|
-
export default {
|
|
9
|
-
title: 'Notification',
|
|
10
|
-
component: Notification
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const Template = (args) => <Notification {...args} />
|
|
14
|
-
|
|
15
|
-
export const Default = Template.bind({})
|
|
16
|
-
Default.args = {
|
|
17
|
-
children: 'Your password was updated successfully.'
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export const Variants = () => {
|
|
21
|
-
const variants = [{}, { style: 'success' }, { style: 'warning' }, { style: 'error' }]
|
|
22
|
-
const propSets = [
|
|
23
|
-
{},
|
|
24
|
-
{ system: true },
|
|
25
|
-
{ dismissible: true },
|
|
26
|
-
{ system: true, dismissible: true }
|
|
27
|
-
]
|
|
28
|
-
|
|
29
|
-
const combinations = variants.flatMap((variant) => {
|
|
30
|
-
return propSets.map((propSet) => ({ variant, ...propSet }))
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
return combinations.map((props) => {
|
|
34
|
-
const label = [
|
|
35
|
-
props.variant.style ?? 'default',
|
|
36
|
-
props.system && 'system',
|
|
37
|
-
props.dismissible && 'dismissible'
|
|
38
|
-
]
|
|
39
|
-
.filter((value) => value)
|
|
40
|
-
.join(' ')
|
|
41
|
-
|
|
42
|
-
return (
|
|
43
|
-
<Container key={label}>
|
|
44
|
-
<Text>{label}</Text>
|
|
45
|
-
<Notification {...props}>
|
|
46
|
-
Tip: These services are best suited for large business organizations. Order products and
|
|
47
|
-
services at TELUS.com.
|
|
48
|
-
</Notification>
|
|
49
|
-
</Container>
|
|
50
|
-
)
|
|
51
|
-
})
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export const ContentTypes = () => {
|
|
55
|
-
return (
|
|
56
|
-
<>
|
|
57
|
-
<Container>
|
|
58
|
-
<Notification>A regular string content.</Notification>
|
|
59
|
-
</Container>
|
|
60
|
-
<Container>
|
|
61
|
-
<Notification>
|
|
62
|
-
<Typography>
|
|
63
|
-
Text components content. <Link href="https://telus.com/uds">Combined with a link.</Link>
|
|
64
|
-
</Typography>
|
|
65
|
-
</Notification>
|
|
66
|
-
</Container>
|
|
67
|
-
<Container>
|
|
68
|
-
<Notification variant={{ customVariant: true }}>
|
|
69
|
-
{({ textStyles, variant }) => (
|
|
70
|
-
<Text style={textStyles}>
|
|
71
|
-
A render function, to apply component styles and variant ({Object.keys(variant)[0]})
|
|
72
|
-
to Text and{' '}
|
|
73
|
-
<Link href="https://telus.com/uds" tokens={{ color: textStyles.color }}>
|
|
74
|
-
Link
|
|
75
|
-
</Link>
|
|
76
|
-
</Text>
|
|
77
|
-
)}
|
|
78
|
-
</Notification>
|
|
79
|
-
</Container>
|
|
80
|
-
</>
|
|
81
|
-
)
|
|
82
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/* eslint-disable react/no-multi-comp */
|
|
2
|
-
import React, { useState } from 'react'
|
|
3
|
-
import PropTypes from 'prop-types'
|
|
4
|
-
|
|
5
|
-
import { Pagination, Typography } from '../../src'
|
|
6
|
-
import { Container, EachParentType, parentTypesParams } from '../supports'
|
|
7
|
-
|
|
8
|
-
export default {
|
|
9
|
-
title: 'Pagination',
|
|
10
|
-
component: Pagination
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const Default = (args) => (
|
|
14
|
-
<Pagination {...args}>
|
|
15
|
-
<Pagination.PageButton href="#test" hrefAttrs={{ target: '_blank' }} />
|
|
16
|
-
<Pagination.PageButton onPress={() => {}} isActive />
|
|
17
|
-
<Pagination.PageButton onPress={() => {}} />
|
|
18
|
-
<Pagination.PageButton onPress={() => {}} />
|
|
19
|
-
</Pagination>
|
|
20
|
-
)
|
|
21
|
-
Default.storyName = 'Pagination'
|
|
22
|
-
|
|
23
|
-
export const LocalTabs = ({ label, ...args }) => {
|
|
24
|
-
const [activeItemIndex, setActiveItemIndex] = useState(0)
|
|
25
|
-
|
|
26
|
-
const items = []
|
|
27
|
-
|
|
28
|
-
for (let i = 0; i < 7; i += 1) {
|
|
29
|
-
items.push(`Panel ${i + 1}`)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const activeItem = items[activeItemIndex]
|
|
33
|
-
const labelText = label ? `${activeItem} (${label}). ` : activeItem
|
|
34
|
-
|
|
35
|
-
/* eslint-disable react/no-array-index-key */
|
|
36
|
-
return (
|
|
37
|
-
<>
|
|
38
|
-
<Container>
|
|
39
|
-
<Typography>{labelText}</Typography>
|
|
40
|
-
</Container>
|
|
41
|
-
<Pagination {...args}>
|
|
42
|
-
{items.map((item, index) => (
|
|
43
|
-
<Pagination.PageButton
|
|
44
|
-
key={index}
|
|
45
|
-
onPress={() => setActiveItemIndex(index)}
|
|
46
|
-
isActive={index === activeItemIndex}
|
|
47
|
-
/>
|
|
48
|
-
))}
|
|
49
|
-
</Pagination>
|
|
50
|
-
</>
|
|
51
|
-
)
|
|
52
|
-
/* eslint-enable react/no-array-index-key */
|
|
53
|
-
}
|
|
54
|
-
LocalTabs.propTypes = {
|
|
55
|
-
...Pagination.propTypes,
|
|
56
|
-
label: PropTypes.string
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export const ParentTypes = (args) => (
|
|
60
|
-
<EachParentType componentThemeName="Pagination" {...args}>
|
|
61
|
-
{({ label, variant }) => <LocalTabs {...args} variant={variant} label={label} />}
|
|
62
|
-
</EachParentType>
|
|
63
|
-
)
|
|
64
|
-
ParentTypes.parameters = parentTypesParams
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/* eslint-disable react/no-multi-comp */
|
|
2
|
-
import React from 'react'
|
|
3
|
-
|
|
4
|
-
import { Progress, StackView, Typography } from '../../src'
|
|
5
|
-
import { Container, EachParentType, parentTypesParams } from '../supports'
|
|
6
|
-
|
|
7
|
-
export default {
|
|
8
|
-
title: 'Progress',
|
|
9
|
-
component: Progress.Bar,
|
|
10
|
-
args: { accessibilityLabel: 'Progress Bar' }
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const Default = (args) => (
|
|
14
|
-
<Progress>
|
|
15
|
-
<Progress.Bar {...args} />
|
|
16
|
-
</Progress>
|
|
17
|
-
)
|
|
18
|
-
Default.storyName = 'Example'
|
|
19
|
-
Default.args = { percentage: 50 }
|
|
20
|
-
Default.argTypes = {
|
|
21
|
-
percentage: { control: { type: 'range', min: 0, max: 100 } }
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export const Variants = () => (
|
|
25
|
-
<Container>
|
|
26
|
-
<StackView>
|
|
27
|
-
<Progress>
|
|
28
|
-
<Progress.Bar
|
|
29
|
-
percentage={25}
|
|
30
|
-
variant={{ inactive: true }}
|
|
31
|
-
accessibilityLabel="Inactive progress bar"
|
|
32
|
-
/>
|
|
33
|
-
</Progress>
|
|
34
|
-
<Progress>
|
|
35
|
-
<Progress.Bar
|
|
36
|
-
percentage={50}
|
|
37
|
-
variant={{ negative: true }}
|
|
38
|
-
accessibilityLabel="Negative progress bar"
|
|
39
|
-
/>
|
|
40
|
-
</Progress>
|
|
41
|
-
<Progress>
|
|
42
|
-
<Progress.Bar percentage={75} accessibilityLabel="Progress bar" />
|
|
43
|
-
</Progress>
|
|
44
|
-
<Progress variant={{ size: 'mini' }}>
|
|
45
|
-
<Progress.Bar
|
|
46
|
-
percentage={25}
|
|
47
|
-
variant={{ inactive: true }}
|
|
48
|
-
accessibilityLabel="Inactive progress bar"
|
|
49
|
-
/>
|
|
50
|
-
</Progress>
|
|
51
|
-
<Progress variant={{ size: 'mini' }}>
|
|
52
|
-
<Progress.Bar
|
|
53
|
-
percentage={50}
|
|
54
|
-
variant={{ negative: true }}
|
|
55
|
-
accessibilityLabel="Negative progress bar"
|
|
56
|
-
/>
|
|
57
|
-
</Progress>
|
|
58
|
-
<Progress variant={{ size: 'mini' }}>
|
|
59
|
-
<Progress.Bar
|
|
60
|
-
percentage={75}
|
|
61
|
-
variant={{ size: 'mini' }}
|
|
62
|
-
accessibilityLabel="Minimal progress bar"
|
|
63
|
-
/>
|
|
64
|
-
</Progress>
|
|
65
|
-
</StackView>
|
|
66
|
-
</Container>
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
export const StackedBars = () => (
|
|
70
|
-
<Progress>
|
|
71
|
-
<Progress.Bar
|
|
72
|
-
percentage={75}
|
|
73
|
-
variant={{ inactive: true }}
|
|
74
|
-
accessibilityLabel="Stacked inactive progress bar"
|
|
75
|
-
/>
|
|
76
|
-
<Progress.Bar percentage={50} accessibilityLabel="Stacked progress bar" />
|
|
77
|
-
</Progress>
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
export const ParentTypes = (args) => (
|
|
81
|
-
<EachParentType componentThemeName="ProgressBar" {...args}>
|
|
82
|
-
{({ label, variant }) => (
|
|
83
|
-
<Container key={label}>
|
|
84
|
-
<Typography>{`${label} `}</Typography>
|
|
85
|
-
<Progress>
|
|
86
|
-
<Progress.Bar {...args} variant={variant} accessibilityLabel={label} />
|
|
87
|
-
</Progress>
|
|
88
|
-
</Container>
|
|
89
|
-
)}
|
|
90
|
-
</EachParentType>
|
|
91
|
-
)
|
|
92
|
-
ParentTypes.parameters = parentTypesParams
|
|
93
|
-
ParentTypes.args = { percentage: 75 }
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/* eslint-disable react/no-multi-comp */
|
|
2
|
-
import React from 'react'
|
|
3
|
-
|
|
4
|
-
import { Radio, RadioGroup, Typography } from '../../src'
|
|
5
|
-
import { Container, EachParentType, parentTypesParams } from '../supports'
|
|
6
|
-
|
|
7
|
-
export default {
|
|
8
|
-
title: 'Radio',
|
|
9
|
-
component: Radio,
|
|
10
|
-
argTypes: {
|
|
11
|
-
checked: {
|
|
12
|
-
control: { type: 'radio' },
|
|
13
|
-
options: [true, false, undefined]
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
args: {
|
|
17
|
-
label: 'Radio',
|
|
18
|
-
checked: undefined
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const Template = (args) => (
|
|
23
|
-
<Container>
|
|
24
|
-
<Radio {...args} />
|
|
25
|
-
</Container>
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
export const Default = Template.bind({})
|
|
29
|
-
Default.argTypes = {
|
|
30
|
-
checked: { table: { disable: true } }
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export const Controlled = Template.bind({})
|
|
34
|
-
Controlled.argTypes = {
|
|
35
|
-
defaultChecked: { table: { disable: true } }
|
|
36
|
-
}
|
|
37
|
-
Controlled.args = {
|
|
38
|
-
checked: false,
|
|
39
|
-
defaultChecked: undefined
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export const Inactive = Template.bind({})
|
|
43
|
-
Inactive.argTypes = {
|
|
44
|
-
inactive: { table: { disable: true } }
|
|
45
|
-
}
|
|
46
|
-
Inactive.args = {
|
|
47
|
-
inactive: true
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export const WithDescription = Template.bind({})
|
|
51
|
-
WithDescription.argTypes = {
|
|
52
|
-
description: { table: { disable: true } }
|
|
53
|
-
}
|
|
54
|
-
WithDescription.args = {
|
|
55
|
-
description: 'This is a description'
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export const RadioGroupStory = (args) => <RadioGroup {...args} />
|
|
59
|
-
RadioGroupStory.storyName = 'RadioGroup'
|
|
60
|
-
RadioGroupStory.args = {
|
|
61
|
-
items: [
|
|
62
|
-
{
|
|
63
|
-
label: 'Radio Card 1'
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
label: 'Radio Card 2'
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
label: 'Radio Card 3'
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
label: 'Radio Card 4'
|
|
73
|
-
}
|
|
74
|
-
],
|
|
75
|
-
legend: 'Choose a radio button.',
|
|
76
|
-
hint: 'Of the radio buttons below, choose one.',
|
|
77
|
-
tooltip: 'Decide which radio button you like best, then press it.',
|
|
78
|
-
name: 'example'
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export const ParentTypes = (args) => (
|
|
82
|
-
<EachParentType componentThemeName="Radio" {...args}>
|
|
83
|
-
{({ label, variant }) => (
|
|
84
|
-
<Container key={label}>
|
|
85
|
-
<Typography>{`${label} `}</Typography>
|
|
86
|
-
<Radio
|
|
87
|
-
{...args}
|
|
88
|
-
defaultChecked={false}
|
|
89
|
-
name="parentTypes"
|
|
90
|
-
value={label}
|
|
91
|
-
variant={variant}
|
|
92
|
-
/>
|
|
93
|
-
</Container>
|
|
94
|
-
)}
|
|
95
|
-
</EachParentType>
|
|
96
|
-
)
|
|
97
|
-
ParentTypes.parameters = parentTypesParams
|
|
98
|
-
ParentTypes.args = {
|
|
99
|
-
defaultChecked: undefined
|
|
100
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/* eslint-disable react/no-multi-comp */
|
|
2
|
-
import React from 'react'
|
|
3
|
-
|
|
4
|
-
import { RadioCard, RadioCardGroup, Typography } from '../../src'
|
|
5
|
-
import { Container, EachParentType, parentTypesParams } from '../supports'
|
|
6
|
-
|
|
7
|
-
export default {
|
|
8
|
-
title: 'RadioCard',
|
|
9
|
-
component: RadioCard
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const additionalContent = (
|
|
13
|
-
<>
|
|
14
|
-
<Typography>First line</Typography>
|
|
15
|
-
<Typography>Second line</Typography>
|
|
16
|
-
</>
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
export const Default = (args) => <RadioCard {...args} />
|
|
20
|
-
Default.args = {
|
|
21
|
-
title: 'Radio card',
|
|
22
|
-
children: additionalContent
|
|
23
|
-
}
|
|
24
|
-
Default.storyName = 'RadioCard'
|
|
25
|
-
|
|
26
|
-
export const RadioCardGroupStory = (args) => <RadioCardGroup {...args} />
|
|
27
|
-
RadioCardGroupStory.storyName = 'RadioCardGroup'
|
|
28
|
-
RadioCardGroupStory.args = {
|
|
29
|
-
items: [
|
|
30
|
-
{
|
|
31
|
-
title: 'Radio Card 1',
|
|
32
|
-
content: (
|
|
33
|
-
<>
|
|
34
|
-
<Typography>First line</Typography>
|
|
35
|
-
</>
|
|
36
|
-
)
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
title: 'Radio Card 2',
|
|
40
|
-
content: (
|
|
41
|
-
<>
|
|
42
|
-
<Typography>First line</Typography>
|
|
43
|
-
<Typography>Second line</Typography>
|
|
44
|
-
</>
|
|
45
|
-
)
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
title: 'Radio Card 3',
|
|
49
|
-
content: (
|
|
50
|
-
<>
|
|
51
|
-
<Typography>First line</Typography>
|
|
52
|
-
<Typography>Second line</Typography>
|
|
53
|
-
<Typography>Third line</Typography>
|
|
54
|
-
</>
|
|
55
|
-
)
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
title: 'Radio Card 4',
|
|
59
|
-
content: (
|
|
60
|
-
<>
|
|
61
|
-
<Typography>First line</Typography>
|
|
62
|
-
<Typography>Second line</Typography>
|
|
63
|
-
</>
|
|
64
|
-
)
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
title: 'Radio Card 5',
|
|
68
|
-
content: (
|
|
69
|
-
<>
|
|
70
|
-
<Typography>First line</Typography>
|
|
71
|
-
<Typography>Second line</Typography>
|
|
72
|
-
<Typography>Third line</Typography>
|
|
73
|
-
<Typography>Fourth line</Typography>
|
|
74
|
-
</>
|
|
75
|
-
)
|
|
76
|
-
}
|
|
77
|
-
],
|
|
78
|
-
legend: 'Choose a radio card.',
|
|
79
|
-
hint: 'Of the radio cards below, choose one.',
|
|
80
|
-
tooltip: 'Decide which radio card you like best, then press it.',
|
|
81
|
-
name: 'example'
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export const ParentTypes = (args) => (
|
|
85
|
-
<EachParentType componentThemeName="Radio" {...args}>
|
|
86
|
-
{({ label, variant }) => (
|
|
87
|
-
<Container key={label}>
|
|
88
|
-
<RadioCard {...args} variant={variant} title={label}>
|
|
89
|
-
{additionalContent}
|
|
90
|
-
</RadioCard>
|
|
91
|
-
</Container>
|
|
92
|
-
)}
|
|
93
|
-
</EachParentType>
|
|
94
|
-
)
|
|
95
|
-
ParentTypes.parameters = parentTypesParams
|
|
96
|
-
ParentTypes.args = {
|
|
97
|
-
defaultChecked: undefined
|
|
98
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/* eslint-disable react/no-multi-comp */
|
|
2
|
-
import React, { useRef, useState } from 'react'
|
|
3
|
-
|
|
4
|
-
import { Search, StackView, TextButton, Typography, List, ListItem } from '../../src'
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
title: 'Search',
|
|
8
|
-
component: Search,
|
|
9
|
-
argTypes: {
|
|
10
|
-
onSubmit: { action: 'submitted' }
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const Template = (args) => <Search {...args} />
|
|
15
|
-
|
|
16
|
-
export const Default = Template.bind({})
|
|
17
|
-
Default.args = {}
|
|
18
|
-
|
|
19
|
-
export const Inactive = Template.bind({})
|
|
20
|
-
Inactive.args = { inactive: true }
|
|
21
|
-
|
|
22
|
-
// Lots of smartphone brands. No need to make the file really long, let them sit on one line.
|
|
23
|
-
// eslint-disable-next-line prettier/prettier
|
|
24
|
-
const options = ['Acer', 'Aermoo', 'AGM', 'Alcatel', 'Allcall', 'Allview', 'Amigoo', 'Amoi', 'Apple', 'Archos', 'Asus', 'Axgio', 'Black Shark', 'BlackBerry', 'Blackview', 'BLU', 'Bluboo', 'BQ', 'Bsimb', 'Cagabi', 'Cat', 'Caterpillar', 'Centric', 'China Mobile', 'Cong', 'Coolpad', 'Cubot', 'Dakele', 'Doogee', 'Doopro', 'E&L', 'Ecoo', 'Elephone', 'Energizer', 'Energy', 'Essential', 'EStar', 'Faea', 'Fairphone', 'Geotel', 'Gigabyte', 'Gigaset', 'Gionee', 'Gome', 'Google', 'Goophone', 'Gretel', 'Hafury', 'Haier', 'Hike', 'HiSense', 'HomTom', 'Honor', 'HP', 'HTC', 'Huawei', 'I Kall', 'iiiF150', 'iLA', 'iMan', 'iNew', 'Infinix', 'InFocus', 'InnJoo', 'Innos', 'Intex', 'iOcean', 'iRULU', 'IUNI', 'iVooMi', 'Jesy', 'Jiake', 'Jiayu', 'Karbonn', 'Kazam', 'Keecoo', 'Kenxinda', 'KingSing', 'KingZone', 'Kodak', 'Kolina', 'Koolnee', 'Landvo', 'Laude', 'Lava', 'Leagoo', 'LeEco (LeTV)', 'Lenovo', 'Leotec', 'LeRee', 'LG', 'Ly', 'Lyf', 'M-Horse', 'M-Net', 'Mann', 'Maze', 'Meiigoo', 'Meitu', 'Meizu', 'Micromax', 'Microsoft', 'Mijue', 'Milai', 'Mlais', 'Morefine', 'Motorola', 'Mpie', 'Mstar', 'MyWigo', 'Neken', 'Neo', 'Newman', 'NO.1', 'Noa', 'Nokia', 'Nomu', 'Nubia', 'Nubia Red Magic', 'NZone', 'OnePlus', 'Oppo', 'Otium', 'Oukitel', 'Palm', 'Panasonic', 'Pantech', 'Pepsi', 'Phicomm', 'Philips', 'Phonemax', 'Plunk', 'POCO', 'Pomp', 'Poptel', 'PPTV', 'Prestigio', 'Qiku', 'Ramos', 'Razer', 'realme', 'Runbo', 'Samsung', 'Sharp', 'Silent Circle', 'Siswoo', 'Smartisan', 'Snopow', 'Sony', 'Sony Ericsson', 'Star', 'Swipe', 'TCL', 'Tengda', 'THL', 'Tianhe', 'Timmy', 'TP-Link', 'Ubro', 'Uhans', 'Uhappy', 'Uimi', 'Ukozi', 'Ulefone', 'UMi', 'UMiDIGI', 'Vargo', 'Vernee', 'ViewSonic', 'Vivo', 'VKworld', 'Voto', 'VPhone', 'Vsmart', 'Weimei', 'Wico', 'Wiko', 'Wileyfox', 'Wolder', 'Woxter', 'Xiaomi', 'Xolo', 'Yota Devices', 'YU', 'Zoji', 'Zopo', 'ZTE', 'Zuk']
|
|
25
|
-
|
|
26
|
-
export const Controlled = (args) => {
|
|
27
|
-
const [value, setValue] = useState('')
|
|
28
|
-
const [searchedValue, setSearchedValue] = useState(null)
|
|
29
|
-
const searchRef = useRef()
|
|
30
|
-
const selectOption = (option) => {
|
|
31
|
-
setValue(option)
|
|
32
|
-
if (searchRef.current?.focus) searchRef.current?.focus()
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return (
|
|
36
|
-
<StackView space={4}>
|
|
37
|
-
{searchedValue ? (
|
|
38
|
-
<>
|
|
39
|
-
<Typography>Search results page for {searchedValue}.</Typography>
|
|
40
|
-
<Typography>{searchedValue} phones are really good. You should buy one.</Typography>
|
|
41
|
-
<TextButton onPress={() => setSearchedValue(null)}>Go back</TextButton>
|
|
42
|
-
</>
|
|
43
|
-
) : (
|
|
44
|
-
<>
|
|
45
|
-
<Search
|
|
46
|
-
{...args}
|
|
47
|
-
value={value}
|
|
48
|
-
onChange={setValue}
|
|
49
|
-
ref={searchRef}
|
|
50
|
-
onSubmit={setSearchedValue}
|
|
51
|
-
/>
|
|
52
|
-
<List>
|
|
53
|
-
{options
|
|
54
|
-
.filter((option) => !value || option.toLowerCase().match(value.toLowerCase()))
|
|
55
|
-
.map((option) => (
|
|
56
|
-
<ListItem key={option}>
|
|
57
|
-
<TextButton onPress={() => selectOption(option)}>{option}</TextButton>
|
|
58
|
-
</ListItem>
|
|
59
|
-
))}
|
|
60
|
-
</List>
|
|
61
|
-
</>
|
|
62
|
-
)}
|
|
63
|
-
</StackView>
|
|
64
|
-
)
|
|
65
|
-
}
|
|
66
|
-
Controlled.args = {}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react'
|
|
2
|
-
import { Text } from 'react-native'
|
|
3
|
-
|
|
4
|
-
import { Select } from '../../src'
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
title: 'Select',
|
|
8
|
-
component: Select
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const Template = (args) => (
|
|
12
|
-
<Select {...args}>
|
|
13
|
-
<Select.Item value="root-item-1">Root item 1</Select.Item>
|
|
14
|
-
<Select.Item value="root-item-2">Root item 2</Select.Item>
|
|
15
|
-
<Select.Group label="Group label">
|
|
16
|
-
<Select.Item value="group-item-1">Group item 1</Select.Item>
|
|
17
|
-
<Select.Item value="group-item-2">Group item 2</Select.Item>
|
|
18
|
-
</Select.Group>
|
|
19
|
-
<Select.Item value="root-item-3">Root item 3</Select.Item>
|
|
20
|
-
</Select>
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
export const Default = Template.bind({})
|
|
24
|
-
Default.args = {
|
|
25
|
-
label: 'Label',
|
|
26
|
-
hint: 'This is the hint (below)',
|
|
27
|
-
hintPosition: 'below',
|
|
28
|
-
tooltip: 'This is the tooltip content',
|
|
29
|
-
feedback: 'Some instructional feedback'
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export const Inactive = Template.bind({})
|
|
33
|
-
Inactive.args = { inactive: true }
|
|
34
|
-
|
|
35
|
-
export const Placeholder = Template.bind({})
|
|
36
|
-
Placeholder.args = { placeholder: 'Please select an item...' }
|
|
37
|
-
|
|
38
|
-
export const Error = Template.bind({})
|
|
39
|
-
Error.args = { validation: 'error' }
|
|
40
|
-
export const Success = Template.bind({})
|
|
41
|
-
Success.args = { validation: 'success' }
|
|
42
|
-
|
|
43
|
-
export const Uncontrolled = Template.bind({})
|
|
44
|
-
Uncontrolled.args = { initialValue: 'root-item-3' }
|
|
45
|
-
|
|
46
|
-
// eslint-disable-next-line react/no-multi-comp
|
|
47
|
-
export const Controlled = () => {
|
|
48
|
-
const [value, setValue] = useState('root-item-3')
|
|
49
|
-
return (
|
|
50
|
-
<>
|
|
51
|
-
<Template value={value} onChange={setValue} />
|
|
52
|
-
<Text>Value is: {value}</Text>
|
|
53
|
-
</>
|
|
54
|
-
)
|
|
55
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/* eslint-disable react/no-multi-comp */
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import PropTypes from 'prop-types'
|
|
4
|
-
import { SideNav } from '../../src'
|
|
5
|
-
import { EachParentType, parentTypesParams } from '../supports'
|
|
6
|
-
|
|
7
|
-
export default {
|
|
8
|
-
title: 'SideNav',
|
|
9
|
-
component: SideNav
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const Template = ({ label = 'Level 1 - 1', ...args }) => (
|
|
13
|
-
<SideNav {...args}>
|
|
14
|
-
<SideNav.Item href="#level-1-1">{label}</SideNav.Item>
|
|
15
|
-
<SideNav.ItemsGroup label="Group 1">
|
|
16
|
-
<SideNav.Item href="#level-2-1">Level 2 - 1</SideNav.Item>
|
|
17
|
-
<SideNav.Item href="#level-2-2">Level 2 - 2</SideNav.Item>
|
|
18
|
-
<SideNav.Item href="#level-2-3">Level 2 - 3</SideNav.Item>
|
|
19
|
-
</SideNav.ItemsGroup>
|
|
20
|
-
<SideNav.Item href="#level-1-2">Level 1 - 2</SideNav.Item>
|
|
21
|
-
<SideNav.ItemsGroup label="Group 2">
|
|
22
|
-
<SideNav.Item href="#level-2-4">Level 2 - 4</SideNav.Item>
|
|
23
|
-
</SideNav.ItemsGroup>
|
|
24
|
-
</SideNav>
|
|
25
|
-
)
|
|
26
|
-
Template.propTypes = {
|
|
27
|
-
...SideNav.propTypes,
|
|
28
|
-
label: PropTypes.string
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export const Default = Template.bind({})
|
|
32
|
-
Default.storyName = 'SideNav'
|
|
33
|
-
|
|
34
|
-
export const NonAccordion = Template.bind({})
|
|
35
|
-
NonAccordion.args = { accordion: false }
|
|
36
|
-
|
|
37
|
-
export const ParentTypes = (args) => (
|
|
38
|
-
<EachParentType componentThemeName="SideNav" {...args}>
|
|
39
|
-
{({ label, variant }) => <Template {...args} variant={variant} label={label} />}
|
|
40
|
-
</EachParentType>
|
|
41
|
-
)
|
|
42
|
-
ParentTypes.parameters = parentTypesParams
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { SideNav } from '../../src'
|
|
3
|
-
|
|
4
|
-
export default {
|
|
5
|
-
title: 'SideNav/Items Group',
|
|
6
|
-
component: SideNav.ItemsGroup
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export const ItemsGroup = () => (
|
|
10
|
-
<SideNav>
|
|
11
|
-
<SideNav.ItemsGroup label="Group 1">
|
|
12
|
-
<SideNav.Item href="#level-2-1">Level 2 - 1</SideNav.Item>
|
|
13
|
-
<SideNav.Item href="#level-2-2">Level 2 - 2</SideNav.Item>
|
|
14
|
-
<SideNav.Item href="#level-2-3">Level 2 - 3</SideNav.Item>
|
|
15
|
-
</SideNav.ItemsGroup>
|
|
16
|
-
</SideNav>
|
|
17
|
-
)
|