@basic-ui/material 0.1.6 → 0.1.9
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/build/cjs/index.js +12 -9
- package/build/cjs/index.js.map +1 -1
- package/build/esm/Alert/Alert.d.ts +1 -1
- package/build/esm/AppBar/AppBar.d.ts +1 -1
- package/build/esm/AppBar/AppBarButton.d.ts +1 -1
- package/build/esm/Badge/Badge.d.ts +1 -1
- package/build/esm/Button/BaseButton.d.ts +1 -1
- package/build/esm/Button/FilledButton.d.ts +1 -1
- package/build/esm/Button/OutlinedButton.d.ts +1 -1
- package/build/esm/Button/TransparentButton.d.ts +1 -1
- package/build/esm/CheckBox/CheckBoxIcon.d.ts +1 -1
- package/build/esm/Chip/ChipBase.d.ts +1 -1
- package/build/esm/Dialog/DialogContainer.d.ts +1 -1
- package/build/esm/Dialog/Scrim.d.ts +1 -1
- package/build/esm/Divider/Divider.d.ts +1 -1
- package/build/esm/LineRipple/LineRipple.d.ts +1 -1
- package/build/esm/Link/Link.d.ts +1 -1
- package/build/esm/List/List.d.ts +2 -1
- package/build/esm/List/List.js +3 -2
- package/build/esm/List/List.js.map +1 -1
- package/build/esm/ListItem/ListItem.d.ts +2 -1
- package/build/esm/ListItem/ListItem.js +3 -2
- package/build/esm/ListItem/ListItem.js.map +1 -1
- package/build/esm/Paper/Paper.d.ts +1 -1
- package/build/esm/ProgressSpinner/ProgressSpinner.d.ts +1 -1
- package/build/esm/Select/Select.d.ts +1 -1
- package/build/esm/Select/Select.js +1 -1
- package/build/esm/Select/Select.js.map +1 -1
- package/build/esm/Select/SelectIcon.d.ts +1 -1
- package/build/esm/Select/defaultRender.d.ts +1 -1
- package/build/esm/Select/defaultRender.js +1 -1
- package/build/esm/Select/defaultRender.js.map +1 -1
- package/build/esm/SelectItem/SelectItem.js +4 -3
- package/build/esm/SelectItem/SelectItem.js.map +1 -1
- package/build/esm/SelectionControl/SelectionControlLabel.d.ts +1 -1
- package/build/esm/SelectionControl/SelectionControlText.d.ts +1 -1
- package/build/esm/Skeleton/DelayAppearance.d.ts +1 -1
- package/build/esm/Skeleton/Skeleton.d.ts +1 -1
- package/build/esm/Table/Table.d.ts +1 -1
- package/build/esm/Table/TableBody.d.ts +1 -1
- package/build/esm/Table/TableCell.d.ts +1 -1
- package/build/esm/Table/TableRow.d.ts +1 -1
- package/build/esm/Text/Text.d.ts +1 -1
- package/build/esm/TextField/FilledContainer.d.ts +1 -1
- package/build/esm/TextField/HelperText.d.ts +1 -1
- package/build/esm/TextField/Input.d.ts +1 -1
- package/build/esm/TextField/OutlinedContainer.d.ts +1 -1
- package/build/esm/theme/useTheme.d.ts +425 -1
- package/build/tsconfig.tsbuildinfo +669 -669
- package/package.json +4 -5
- package/src/List/List.tsx +3 -1
- package/src/ListItem/ListItem.tsx +3 -1
- package/src/Menu/Menu.story.tsx +27 -3
- package/src/Select/Select.story.tsx +45 -2
- package/src/Select/Select.tsx +3 -4
- package/src/Select/defaultRender.ts +2 -2
- package/src/SelectItem/SelectItem.tsx +6 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@basic-ui/material",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Accessible React Components used as building blocks for UI patterns",
|
|
5
5
|
"author": "Lucas Terra <lucasterra7@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@basic-ui/core": "^0.0.
|
|
28
|
+
"@basic-ui/core": "^0.0.34",
|
|
29
29
|
"@styled-system/should-forward-prop": "5.1.5",
|
|
30
30
|
"@types/styled-system": "^5.1.10",
|
|
31
31
|
"@types/styled-system__css": "^5.0.14",
|
|
@@ -35,8 +35,7 @@
|
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@emotion/react": "11.1.5",
|
|
37
37
|
"@emotion/styled": "11.1.5",
|
|
38
|
-
"polished": "^4.1.1"
|
|
39
|
-
"react-spring": "9.0.0-rc.3"
|
|
38
|
+
"polished": "^4.1.1"
|
|
40
39
|
},
|
|
41
40
|
"peerDependencies": {
|
|
42
41
|
"@babel/runtime": "^7.0.0",
|
|
@@ -49,5 +48,5 @@
|
|
|
49
48
|
"react-dom": ">=16.14.0 || >=17.0.0",
|
|
50
49
|
"react-spring": "^9.0.0"
|
|
51
50
|
},
|
|
52
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "010fcc15ed96213f5532c44442039805530ec0c4"
|
|
53
52
|
}
|
package/src/List/List.tsx
CHANGED
|
@@ -4,6 +4,7 @@ import { Paper, PaperProps } from '../Paper';
|
|
|
4
4
|
|
|
5
5
|
export interface ListProps extends PaperProps {
|
|
6
6
|
as?: React.ElementType<any>;
|
|
7
|
+
innerAs?: React.ElementType<any>;
|
|
7
8
|
children?: React.ReactNode;
|
|
8
9
|
}
|
|
9
10
|
|
|
@@ -13,6 +14,7 @@ export const List = forwardRef<HTMLDivElement, ListProps>(function List(
|
|
|
13
14
|
) {
|
|
14
15
|
const {
|
|
15
16
|
as = 'div',
|
|
17
|
+
innerAs,
|
|
16
18
|
elevation = 0,
|
|
17
19
|
py = 2,
|
|
18
20
|
px = 0,
|
|
@@ -24,7 +26,7 @@ export const List = forwardRef<HTMLDivElement, ListProps>(function List(
|
|
|
24
26
|
|
|
25
27
|
return (
|
|
26
28
|
<Paper
|
|
27
|
-
as={as}
|
|
29
|
+
as={innerAs || as}
|
|
28
30
|
ref={forwardedRef}
|
|
29
31
|
py={py}
|
|
30
32
|
px={px}
|
|
@@ -10,6 +10,7 @@ import { alpha } from '../color';
|
|
|
10
10
|
|
|
11
11
|
export interface ListItemProps extends BoxProps {
|
|
12
12
|
as?: React.ElementType<any>;
|
|
13
|
+
innerAs?: React.ElementType<any>;
|
|
13
14
|
children?: React.ReactNode;
|
|
14
15
|
disabled?: boolean;
|
|
15
16
|
selected?: boolean;
|
|
@@ -21,6 +22,7 @@ export const ListItem = forwardRef<HTMLDivElement, ListItemProps>(
|
|
|
21
22
|
function ListItem(props, forwardedRef) {
|
|
22
23
|
const {
|
|
23
24
|
as = 'div',
|
|
25
|
+
innerAs,
|
|
24
26
|
children,
|
|
25
27
|
selected: selectedProp = false,
|
|
26
28
|
'aria-selected': ariaSelectedProp = false,
|
|
@@ -38,7 +40,7 @@ export const ListItem = forwardRef<HTMLDivElement, ListItemProps>(
|
|
|
38
40
|
<ListItemProvider value={{ color, disabled }}>
|
|
39
41
|
<RippleBox
|
|
40
42
|
ref={forwardedRef}
|
|
41
|
-
as={as}
|
|
43
|
+
as={innerAs || as}
|
|
42
44
|
theme={theme}
|
|
43
45
|
display="flex"
|
|
44
46
|
data-disabled={disabled ? '' : undefined}
|
package/src/Menu/Menu.story.tsx
CHANGED
|
@@ -4,7 +4,7 @@ import { storiesOf } from '@storybook/react';
|
|
|
4
4
|
import { Box } from '../Box';
|
|
5
5
|
// import './styles.css';
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const MenuUncontrolled = ({ disabled }) => {
|
|
8
8
|
return (
|
|
9
9
|
<Box px={5}>
|
|
10
10
|
<Menu>
|
|
@@ -23,7 +23,31 @@ const MenuControlled = ({ disabled }) => {
|
|
|
23
23
|
);
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
+
const MenuUncontrolledWithLinks = ({ disabled }) => {
|
|
27
|
+
return (
|
|
28
|
+
<Box px={5}>
|
|
29
|
+
<Menu>
|
|
30
|
+
<MenuButton disabled={disabled}> Click me</MenuButton>
|
|
31
|
+
<MenuPopover>
|
|
32
|
+
<MenuList>
|
|
33
|
+
<MenuItem as="a" href="/">
|
|
34
|
+
Dog
|
|
35
|
+
</MenuItem>
|
|
36
|
+
<MenuItem>Lion</MenuItem>
|
|
37
|
+
<MenuItem disabled={true}>Cat</MenuItem>
|
|
38
|
+
<Divider />
|
|
39
|
+
<MenuItem>Bear</MenuItem>
|
|
40
|
+
</MenuList>
|
|
41
|
+
</MenuPopover>
|
|
42
|
+
</Menu>
|
|
43
|
+
</Box>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
|
|
26
47
|
const stories = storiesOf('Components/Menu', module);
|
|
27
48
|
|
|
28
|
-
stories.add('
|
|
29
|
-
stories.add('
|
|
49
|
+
stories.add('uncontrolled', () => <MenuUncontrolled disabled={undefined} />);
|
|
50
|
+
stories.add('uncontrolled, with links', () => (
|
|
51
|
+
<MenuUncontrolledWithLinks disabled={undefined} />
|
|
52
|
+
));
|
|
53
|
+
stories.add('disabled', () => <MenuUncontrolled disabled={true} />);
|
|
@@ -12,7 +12,7 @@ const Example = ({ variant, native = false }) => {
|
|
|
12
12
|
|
|
13
13
|
/* eslint-disable react/no-children-prop */
|
|
14
14
|
const children = [
|
|
15
|
-
<SelectItem key={0}
|
|
15
|
+
<SelectItem key={0} aria-label="None" value=""></SelectItem>,
|
|
16
16
|
<SelectItem key={1} value={10}>
|
|
17
17
|
Ten
|
|
18
18
|
</SelectItem>,
|
|
@@ -67,13 +67,55 @@ const Example = ({ variant, native = false }) => {
|
|
|
67
67
|
<Box width={230} display="inline-block">
|
|
68
68
|
<Select
|
|
69
69
|
value={color}
|
|
70
|
-
onChange={(e, value
|
|
70
|
+
onChange={(e, value) => setColor(value as 'primary' | 'secondary')}
|
|
71
71
|
label="Color"
|
|
72
72
|
>
|
|
73
73
|
<SelectItem value="primary">Primary</SelectItem>
|
|
74
74
|
<SelectItem value="secondary">Secondary</SelectItem>
|
|
75
75
|
</Select>
|
|
76
76
|
</Box>
|
|
77
|
+
<select defaultValue="">
|
|
78
|
+
<option key={0} aria-label="None" value="" disabled />
|
|
79
|
+
<option key={1} value={10}>
|
|
80
|
+
Ten
|
|
81
|
+
</option>
|
|
82
|
+
<option key={2} value={20}>
|
|
83
|
+
Twenty
|
|
84
|
+
</option>
|
|
85
|
+
<option key={3} value={30}>
|
|
86
|
+
Thirty
|
|
87
|
+
</option>
|
|
88
|
+
<option key={4} value={40}>
|
|
89
|
+
Fourty
|
|
90
|
+
</option>
|
|
91
|
+
<option key={5} value={50}>
|
|
92
|
+
Fifty
|
|
93
|
+
</option>
|
|
94
|
+
<option key={6} value={60}>
|
|
95
|
+
Sixty
|
|
96
|
+
</option>
|
|
97
|
+
<option key={7} value={70}>
|
|
98
|
+
Seventy
|
|
99
|
+
</option>
|
|
100
|
+
<option key={8} value={80}>
|
|
101
|
+
Eighty
|
|
102
|
+
</option>
|
|
103
|
+
<option key={9} value={90}>
|
|
104
|
+
Ninety
|
|
105
|
+
</option>
|
|
106
|
+
<option key={10} value={100}>
|
|
107
|
+
One Hundred
|
|
108
|
+
</option>
|
|
109
|
+
<option key={11} value={110}>
|
|
110
|
+
One Hundred Ten
|
|
111
|
+
</option>
|
|
112
|
+
<option key={12} value={120}>
|
|
113
|
+
One Hundred Twenty
|
|
114
|
+
</option>
|
|
115
|
+
<option key={13} value={130}>
|
|
116
|
+
One Hundred Thirty
|
|
117
|
+
</option>
|
|
118
|
+
</select>
|
|
77
119
|
<Box m={3} bg="surface">
|
|
78
120
|
<Box mb={3} width={230}>
|
|
79
121
|
<Select
|
|
@@ -84,6 +126,7 @@ const Example = ({ variant, native = false }) => {
|
|
|
84
126
|
label="Standard"
|
|
85
127
|
helperText="Helper text"
|
|
86
128
|
children={children}
|
|
129
|
+
placeholder="Empty"
|
|
87
130
|
/>
|
|
88
131
|
</Box>
|
|
89
132
|
<Box mb={3} width={230}>
|
package/src/Select/Select.tsx
CHANGED
|
@@ -50,7 +50,7 @@ export interface SelectProps
|
|
|
50
50
|
theme?: Theme;
|
|
51
51
|
error?: boolean | string;
|
|
52
52
|
onChange?: (e: React.ChangeEvent<HTMLSelectElement>, value: string) => void;
|
|
53
|
-
renderValue?: (value?: string) => string;
|
|
53
|
+
renderValue?: (value?: string) => string | undefined;
|
|
54
54
|
leadingIcon?: React.ReactNode;
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -118,11 +118,10 @@ export const Select = forwardRef<
|
|
|
118
118
|
const inputId = `${id}-text-field`;
|
|
119
119
|
const helperTextId = helperText ? `${id}-helper-text` : undefined;
|
|
120
120
|
|
|
121
|
-
const labelIsFloating =
|
|
122
|
-
hasFocus || open || (typeof value === 'string' && value.length > 0);
|
|
123
|
-
|
|
124
121
|
const renderValue = renderValueProp || makeDefaultRender(children);
|
|
125
122
|
|
|
123
|
+
const labelIsFloating = hasFocus || open || renderValue(value) !== undefined;
|
|
124
|
+
|
|
126
125
|
const Comp: ForwardRefExoticComponent<
|
|
127
126
|
BaseSelectProps & RefAttributes<HTMLSelectElement | HTMLButtonElement>
|
|
128
127
|
> = native ? SelectComp : (SelectButton as any);
|
|
@@ -2,7 +2,7 @@ import { Children, isValidElement } from 'react';
|
|
|
2
2
|
|
|
3
3
|
export const makeDefaultRender = (children?: React.ReactNode) => (
|
|
4
4
|
val?: string
|
|
5
|
-
): string => {
|
|
5
|
+
): string | undefined => {
|
|
6
6
|
if (children && val !== undefined) {
|
|
7
7
|
const allChildren = Children.toArray(children);
|
|
8
8
|
for (let i = 0; i < allChildren.length; i++) {
|
|
@@ -14,5 +14,5 @@ export const makeDefaultRender = (children?: React.ReactNode) => (
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
return val ||
|
|
17
|
+
return val || undefined;
|
|
18
18
|
};
|
|
@@ -5,6 +5,7 @@ import { wrapEvent } from '@basic-ui/core';
|
|
|
5
5
|
|
|
6
6
|
export type SelectItemProps = MenuItemProps;
|
|
7
7
|
|
|
8
|
+
const ZERO_WIDTH_SPACE = '\u200b';
|
|
8
9
|
export const SelectItem = forwardRef<HTMLLIElement, MenuItemProps>(
|
|
9
10
|
function SelectItem(props, forwardedRef) {
|
|
10
11
|
const {
|
|
@@ -17,7 +18,9 @@ export const SelectItem = forwardRef<HTMLLIElement, MenuItemProps>(
|
|
|
17
18
|
} = props;
|
|
18
19
|
const { native, onSelect, value: selectedValue } = useSelectContext();
|
|
19
20
|
const value =
|
|
20
|
-
valueProp !== undefined
|
|
21
|
+
valueProp !== undefined && valueProp !== null
|
|
22
|
+
? String(valueProp)
|
|
23
|
+
: (children as string);
|
|
21
24
|
|
|
22
25
|
if (native) {
|
|
23
26
|
return (
|
|
@@ -32,12 +35,11 @@ export const SelectItem = forwardRef<HTMLLIElement, MenuItemProps>(
|
|
|
32
35
|
);
|
|
33
36
|
}
|
|
34
37
|
|
|
35
|
-
if (
|
|
38
|
+
if (children === undefined && disabled) {
|
|
36
39
|
return null;
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
const selected = value === String(selectedValue);
|
|
40
|
-
|
|
41
43
|
return (
|
|
42
44
|
<Comp
|
|
43
45
|
as={MenuItem}
|
|
@@ -49,7 +51,7 @@ export const SelectItem = forwardRef<HTMLLIElement, MenuItemProps>(
|
|
|
49
51
|
selected={selected}
|
|
50
52
|
{...otherProps}
|
|
51
53
|
>
|
|
52
|
-
{children}
|
|
54
|
+
{children || ZERO_WIDTH_SPACE}
|
|
53
55
|
</Comp>
|
|
54
56
|
);
|
|
55
57
|
}
|