@superdispatch/ui 0.21.8 → 0.21.13
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/.babelrc.js +5 -0
- package/.turbo/turbo-version.log +28 -0
- package/package.json +65 -39
- package/pkg/README.md +30 -0
- package/{dist-types → pkg/dist-types}/index.d.ts +364 -364
- package/pkg/package.json +39 -0
- package/playroom.ts +31 -0
- package/src/__tests__/index.spec.ts +134 -0
- package/src/adaptive-toolbar/AdaptiveToolbar.stories.tsx +50 -0
- package/src/adaptive-toolbar/AdaptiveToolbar.tsx +199 -0
- package/src/adaptive-toolbar/__tests__/AdaptiveToolbar.spec.tsx +11 -0
- package/src/adaptive-vertical-toolbar/AdaptiveVerticalToolbar.stories.tsx +49 -0
- package/src/adaptive-vertical-toolbar/AdaptiveVerticalToolbar.tsx +171 -0
- package/src/app-bar/AppBar.stories.tsx +62 -0
- package/src/app-bar/AppBarOverrides.ts +9 -0
- package/src/app-bar/__tests__/AppBar.spec.tsx +86 -0
- package/src/autocomplete/Autocomplete.stories.tsx +76 -0
- package/src/autocomplete/AutocompleteOverrides.tsx +58 -0
- package/src/autocomplete/__tests__/Autocomplete.spec.tsx +323 -0
- package/src/avatar/Avatar.stories.tsx +17 -0
- package/src/avatar/AvatarOverrides.ts +24 -0
- package/src/avatar/__tests__/Avatar.spec.tsx +71 -0
- package/src/avatar-button/AvatarButton.stories.tsx +153 -0
- package/src/avatar-button/AvatarButton.tsx +223 -0
- package/src/avatar-button/__tests__/AvatarButton.spec.tsx +126 -0
- package/src/button/Button.tsx +51 -0
- package/src/button/ButtonOverrides.ts +375 -0
- package/src/button/__tests__/Button.spec.tsx +599 -0
- package/src/card/Card.stories.tsx +39 -0
- package/src/card/CardOverrides.ts +9 -0
- package/src/card/__tests__/Card.spec.tsx +68 -0
- package/src/card-button/CardButton.stories.tsx +36 -0
- package/src/card-button/CardButton.tsx +202 -0
- package/src/card-button/__tests__/CardButton.spec.tsx +95 -0
- package/src/checkbox/CheckboxField.stories.tsx +61 -0
- package/src/checkbox/CheckboxField.tsx +56 -0
- package/src/checkbox/CheckboxGroudField.tsx +53 -0
- package/src/checkbox/CheckboxOverrides.tsx +55 -0
- package/src/checkbox/__tests__/Checkbox.spec.tsx +105 -0
- package/src/chip/Chip.stories.tsx +26 -0
- package/src/chip/ChipOverrides.tsx +111 -0
- package/src/chip/__tests__/Chip.spec.tsx +308 -0
- package/src/columns/Column.tsx +124 -0
- package/src/columns/Columns.stories.tsx +426 -0
- package/src/columns/Columns.tsx +76 -0
- package/src/description-list/DescriptionList.spec.tsx +137 -0
- package/src/description-list/DescriptionList.stories.tsx +148 -0
- package/src/description-list/DescriptionList.tsx +170 -0
- package/src/dialog/Dialog.playroom.tsx +24 -0
- package/src/dialog/Dialog.stories.tsx +60 -0
- package/src/dialog/DialogOverrides.ts +39 -0
- package/src/dialog/__tests__/Dialog.spec.tsx +219 -0
- package/src/drawer/Drawer.playroom.tsx +22 -0
- package/src/drawer/Drawer.stories.tsx +194 -0
- package/src/drawer/DrawerActions.tsx +69 -0
- package/src/drawer/DrawerContent.tsx +30 -0
- package/src/drawer/DrawerList.tsx +60 -0
- package/src/drawer/DrawerOverrides.ts +19 -0
- package/src/drawer/DrawerTitle.tsx +143 -0
- package/src/drawer/__tests__/Drawer.spec.tsx +227 -0
- package/src/dropdown-button/DropdownButton.stories.tsx +15 -0
- package/src/dropdown-button/DropdownButton.tsx +131 -0
- package/src/grid/GridStack.tsx +45 -0
- package/src/grid/InlineGrid.tsx +56 -0
- package/src/icon-button/IconButton.stories.tsx +53 -0
- package/src/icon-button/IconButtonOverrides.ts +32 -0
- package/src/icon-button/__tests__/IconButton.spec.tsx +124 -0
- package/src/index.ts +47 -0
- package/src/info-card/InfoCard.stories.tsx +29 -0
- package/src/info-card/InfoCard.tsx +95 -0
- package/src/info-card/__tests__/InfoCard.spec.tsx +22 -0
- package/src/info-tooltip/InfoTooltip.stories.tsx +77 -0
- package/src/info-tooltip/InfoTooltip.tsx +72 -0
- package/src/info-tooltip/__tests__/InfoTooltip.spec.tsx +166 -0
- package/src/inline/Inline.stories.tsx +135 -0
- package/src/inline/Inline.tsx +144 -0
- package/src/link/Link.stories.tsx +41 -0
- package/src/link/LinkOverrides.ts +43 -0
- package/src/link/__tests__/Link.spec.tsx +98 -0
- package/src/list/ListOverrides.ts +11 -0
- package/src/list/__tests__/List.spec.tsx +182 -0
- package/src/menu/Menu.stories.tsx +35 -0
- package/src/menu/MenuOverrides.ts +17 -0
- package/src/menu/__tests__/Menu.spec.tsx +99 -0
- package/src/number-field/NumberField.stories.tsx +123 -0
- package/src/number-field/NumberField.tsx +98 -0
- package/src/overflow-text/OverflowText.stories.tsx +32 -0
- package/src/overflow-text/OverflowText.tsx +114 -0
- package/src/overflow-text/__tests__/OverflowText.spec.tsx +24 -0
- package/src/pagination/Pagination.stories.tsx +36 -0
- package/src/pagination/PaginationOverrides.ts +47 -0
- package/src/pagination/__tests__/Pagination.spec.tsx +228 -0
- package/src/paper/PaperOverrides.ts +10 -0
- package/src/paper/__tests__/Paper.spec.tsx +155 -0
- package/src/props/AlignProps.ts +22 -0
- package/src/props/CollapseProp.ts +13 -0
- package/src/props/ResponsiveProp.ts +65 -0
- package/src/props/SpaceProp.ts +40 -0
- package/src/radio/RadioField.stories.tsx +42 -0
- package/src/radio/RadioField.tsx +55 -0
- package/src/radio/RadioGroupField.tsx +64 -0
- package/src/radio/RadioOverrides.tsx +51 -0
- package/src/radio/__tests__/Radio.spec.tsx +90 -0
- package/src/responsive/CollapseBreakpoint.ts +21 -0
- package/src/responsive/MinBreakpoint.ts +21 -0
- package/src/responsive/ResponsiveContext.tsx +57 -0
- package/src/snackbar/Snackbar.stories.tsx +196 -0
- package/src/snackbar/Snackbar.tsx +83 -0
- package/src/snackbar/SnackbarContent.tsx +147 -0
- package/src/snackbar/SnackbarOverrides.ts +23 -0
- package/src/snackbar/SnackbarStack.tsx +160 -0
- package/src/snackbar/__tests__/Snackbar.spec.tsx +196 -0
- package/src/stack/Stack.stories.tsx +113 -0
- package/src/stack/Stack.tsx +86 -0
- package/src/svg-icon/SvgIcon.stories.tsx +29 -0
- package/src/svg-icon/SvgIconOverrides.ts +32 -0
- package/src/svg-icon/__tests__/SvgIcon.spec.tsx +67 -0
- package/src/switch/Switch.stories.tsx +60 -0
- package/src/switch/SwitchOverrides.ts +88 -0
- package/src/switch/__tests__/Switch.spec.tsx +204 -0
- package/src/tabs/Tabs.stories.tsx +40 -0
- package/src/tabs/TabsOverrides.ts +45 -0
- package/src/tabs/__tests__/Tabs.spec.tsx +226 -0
- package/src/tag/Tag.stories.tsx +53 -0
- package/src/tag/Tag.tsx +130 -0
- package/src/tag/__tests__/Tag.spec.tsx +82 -0
- package/src/text-field/TextField.stories.tsx +50 -0
- package/src/text-field/TextFieldOverrides.tsx +149 -0
- package/src/text-field/__tests__/TextField.spec.tsx +662 -0
- package/src/theme/Color.ts +117 -0
- package/src/theme/SuperDispatchTheme.ts +3 -0
- package/src/theme/ThemeProvider.tsx +179 -0
- package/src/theme/__tests__/CssBaseline.spec.tsx +49 -0
- package/src/theme/__tests__/ThemeProvider.spec.ts +40 -0
- package/src/theme/__tests__/__snapshots__/ThemeProvider.spec.ts.snap +204 -0
- package/src/tiles/Tiles.stories.tsx +69 -0
- package/src/tiles/Tiles.tsx +163 -0
- package/src/tiles/__tests__/Tiles.spec.tsx +221 -0
- package/src/toolbar/ToolbarOverrides.ts +14 -0
- package/src/toolbar/__tests__/Toolbar.spec.tsx +50 -0
- package/src/tooltip/Tooltip.stories.tsx +32 -0
- package/src/tooltip/TooltipOverrides.ts +34 -0
- package/src/tooltip/__tests__/Tooltip.spec.tsx +182 -0
- package/src/typography/Typography.stories.tsx +132 -0
- package/src/typography/TypographyOverrides.ts +125 -0
- package/src/typography/__tests__/Typography.spec.tsx +253 -0
- package/src/utils/ExitTransitionPlaceholder.tsx +22 -0
- package/src/utils/ResizeObserver.tsx +28 -0
- package/src/utils/VisibilityObserver.tsx +75 -0
- package/src/utils/__tests__/ExitTransitionPlaceholder.spec.tsx +34 -0
- package/src/utils/isEmptyReactNode.ts +11 -0
- package/src/utils/mergeRefs.ts +21 -0
- package/src/utils/renderChildren.ts +10 -0
- package/src/utils/useUID.ts +9 -0
- package/tsconfig.json +19 -0
- package/LICENSE +0 -21
- /package/{dist-node → pkg/dist-node}/index.js +0 -0
- /package/{dist-node → pkg/dist-node}/index.js.map +0 -0
- /package/{dist-src → pkg/dist-src}/adaptive-toolbar/AdaptiveToolbar.js +0 -0
- /package/{dist-src → pkg/dist-src}/adaptive-vertical-toolbar/AdaptiveVerticalToolbar.js +0 -0
- /package/{dist-src → pkg/dist-src}/app-bar/AppBarOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/autocomplete/AutocompleteOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/avatar/AvatarOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/avatar-button/AvatarButton.js +0 -0
- /package/{dist-src → pkg/dist-src}/button/Button.js +0 -0
- /package/{dist-src → pkg/dist-src}/button/ButtonOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/card/CardOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/card-button/CardButton.js +0 -0
- /package/{dist-src → pkg/dist-src}/checkbox/CheckboxField.js +0 -0
- /package/{dist-src → pkg/dist-src}/checkbox/CheckboxGroudField.js +0 -0
- /package/{dist-src → pkg/dist-src}/checkbox/CheckboxOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/chip/ChipOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/columns/Column.js +0 -0
- /package/{dist-src → pkg/dist-src}/columns/Columns.js +0 -0
- /package/{dist-src → pkg/dist-src}/description-list/DescriptionList.js +0 -0
- /package/{dist-src → pkg/dist-src}/dialog/DialogOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/drawer/DrawerActions.js +0 -0
- /package/{dist-src → pkg/dist-src}/drawer/DrawerContent.js +0 -0
- /package/{dist-src → pkg/dist-src}/drawer/DrawerList.js +0 -0
- /package/{dist-src → pkg/dist-src}/drawer/DrawerOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/drawer/DrawerTitle.js +0 -0
- /package/{dist-src → pkg/dist-src}/dropdown-button/DropdownButton.js +0 -0
- /package/{dist-src → pkg/dist-src}/grid/GridStack.js +0 -0
- /package/{dist-src → pkg/dist-src}/grid/InlineGrid.js +0 -0
- /package/{dist-src → pkg/dist-src}/icon-button/IconButtonOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/index.js +0 -0
- /package/{dist-src → pkg/dist-src}/info-card/InfoCard.js +0 -0
- /package/{dist-src → pkg/dist-src}/inline/Inline.js +0 -0
- /package/{dist-src → pkg/dist-src}/link/LinkOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/list/ListOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/menu/MenuOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/number-field/NumberField.js +0 -0
- /package/{dist-src → pkg/dist-src}/overflow-text/OverflowText.js +0 -0
- /package/{dist-src → pkg/dist-src}/pagination/PaginationOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/paper/PaperOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/props/AlignProps.js +0 -0
- /package/{dist-src → pkg/dist-src}/props/CollapseProp.js +0 -0
- /package/{dist-src → pkg/dist-src}/props/ResponsiveProp.js +0 -0
- /package/{dist-src → pkg/dist-src}/props/SpaceProp.js +0 -0
- /package/{dist-src → pkg/dist-src}/radio/RadioField.js +0 -0
- /package/{dist-src → pkg/dist-src}/radio/RadioGroupField.js +0 -0
- /package/{dist-src → pkg/dist-src}/radio/RadioOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/responsive/CollapseBreakpoint.js +0 -0
- /package/{dist-src → pkg/dist-src}/responsive/MinBreakpoint.js +0 -0
- /package/{dist-src → pkg/dist-src}/responsive/ResponsiveContext.js +0 -0
- /package/{dist-src → pkg/dist-src}/snackbar/Snackbar.js +0 -0
- /package/{dist-src → pkg/dist-src}/snackbar/SnackbarContent.js +0 -0
- /package/{dist-src → pkg/dist-src}/snackbar/SnackbarOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/snackbar/SnackbarStack.js +0 -0
- /package/{dist-src → pkg/dist-src}/stack/Stack.js +0 -0
- /package/{dist-src → pkg/dist-src}/svg-icon/SvgIconOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/switch/SwitchOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/tabs/TabsOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/tag/Tag.js +0 -0
- /package/{dist-src → pkg/dist-src}/text-field/TextFieldOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/theme/Color.js +0 -0
- /package/{dist-src → pkg/dist-src}/theme/SuperDispatchTheme.js +0 -0
- /package/{dist-src → pkg/dist-src}/theme/ThemeProvider.js +0 -0
- /package/{dist-src → pkg/dist-src}/tiles/Tiles.js +0 -0
- /package/{dist-src → pkg/dist-src}/toolbar/ToolbarOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/tooltip/TooltipOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/typography/TypographyOverrides.js +0 -0
- /package/{dist-src → pkg/dist-src}/utils/ExitTransitionPlaceholder.js +0 -0
- /package/{dist-src → pkg/dist-src}/utils/ResizeObserver.js +0 -0
- /package/{dist-src → pkg/dist-src}/utils/VisibilityObserver.js +0 -0
- /package/{dist-src → pkg/dist-src}/utils/isEmptyReactNode.js +0 -0
- /package/{dist-src → pkg/dist-src}/utils/mergeRefs.js +0 -0
- /package/{dist-src → pkg/dist-src}/utils/renderChildren.js +0 -0
- /package/{dist-src → pkg/dist-src}/utils/useUID.js +0 -0
- /package/{dist-web → pkg/dist-web}/index.js +0 -0
- /package/{dist-web → pkg/dist-web}/index.js.map +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Color } from '../theme/Color';
|
|
2
|
+
import { SuperDispatchTheme } from '../theme/SuperDispatchTheme';
|
|
3
|
+
|
|
4
|
+
export function overridePaper(theme: SuperDispatchTheme): void {
|
|
5
|
+
theme.props.MuiPaper = { elevation: 0 };
|
|
6
|
+
|
|
7
|
+
theme.overrides.MuiPaper = {
|
|
8
|
+
elevation0: { border: `1px solid ${Color.Silver400}` },
|
|
9
|
+
};
|
|
10
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Paper } from '@material-ui/core';
|
|
2
|
+
import { renderCSS, renderTheme } from '@superdispatch/ui-testutils';
|
|
3
|
+
|
|
4
|
+
it('checks default props', () => {
|
|
5
|
+
const { props } = renderTheme();
|
|
6
|
+
|
|
7
|
+
expect(props.MuiPaper).toMatchInlineSnapshot(`
|
|
8
|
+
Object {
|
|
9
|
+
"elevation": 0,
|
|
10
|
+
}
|
|
11
|
+
`);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('checks component css', () => {
|
|
15
|
+
expect(renderCSS(<Paper />, ['MuiPaper'])).toMatchInlineSnapshot(`
|
|
16
|
+
.MuiPaper-root {
|
|
17
|
+
color: Color.Dark500;
|
|
18
|
+
transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
|
|
19
|
+
background-color: Color.White;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.MuiPaper-rounded {
|
|
23
|
+
border-radius: 4px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.MuiPaper-outlined {
|
|
27
|
+
border: 1px solid Color.Silver400;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.MuiPaper-elevation0 {
|
|
31
|
+
border: 1px solid Color.Silver400;
|
|
32
|
+
box-shadow: none;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.MuiPaper-elevation1 {
|
|
36
|
+
box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2),
|
|
37
|
+
0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.MuiPaper-elevation2 {
|
|
41
|
+
box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
|
|
42
|
+
0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.MuiPaper-elevation3 {
|
|
46
|
+
box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2),
|
|
47
|
+
0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.MuiPaper-elevation4 {
|
|
51
|
+
box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
|
|
52
|
+
0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.MuiPaper-elevation5 {
|
|
56
|
+
box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2),
|
|
57
|
+
0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.MuiPaper-elevation6 {
|
|
61
|
+
box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2),
|
|
62
|
+
0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.MuiPaper-elevation7 {
|
|
66
|
+
box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2),
|
|
67
|
+
0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.MuiPaper-elevation8 {
|
|
71
|
+
box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2),
|
|
72
|
+
0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.MuiPaper-elevation9 {
|
|
76
|
+
box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2),
|
|
77
|
+
0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.MuiPaper-elevation10 {
|
|
81
|
+
box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2),
|
|
82
|
+
0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.MuiPaper-elevation11 {
|
|
86
|
+
box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2),
|
|
87
|
+
0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.MuiPaper-elevation12 {
|
|
91
|
+
box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2),
|
|
92
|
+
0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.MuiPaper-elevation13 {
|
|
96
|
+
box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2),
|
|
97
|
+
0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.MuiPaper-elevation14 {
|
|
101
|
+
box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2),
|
|
102
|
+
0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.MuiPaper-elevation15 {
|
|
106
|
+
box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2),
|
|
107
|
+
0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.MuiPaper-elevation16 {
|
|
111
|
+
box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2),
|
|
112
|
+
0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.MuiPaper-elevation17 {
|
|
116
|
+
box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2),
|
|
117
|
+
0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.MuiPaper-elevation18 {
|
|
121
|
+
box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2),
|
|
122
|
+
0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.MuiPaper-elevation19 {
|
|
126
|
+
box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2),
|
|
127
|
+
0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.MuiPaper-elevation20 {
|
|
131
|
+
box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2),
|
|
132
|
+
0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.MuiPaper-elevation21 {
|
|
136
|
+
box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2),
|
|
137
|
+
0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.MuiPaper-elevation22 {
|
|
141
|
+
box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2),
|
|
142
|
+
0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.MuiPaper-elevation23 {
|
|
146
|
+
box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2),
|
|
147
|
+
0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.MuiPaper-elevation24 {
|
|
151
|
+
box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2),
|
|
152
|
+
0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
|
|
153
|
+
}
|
|
154
|
+
`);
|
|
155
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Property } from 'csstype';
|
|
2
|
+
|
|
3
|
+
export type VerticalAlign = 'top' | 'center' | 'bottom';
|
|
4
|
+
export type HorizontalAlign = 'left' | 'center' | 'right';
|
|
5
|
+
|
|
6
|
+
export function parseAlignProp(
|
|
7
|
+
align: VerticalAlign | HorizontalAlign,
|
|
8
|
+
): Property.AlignItems {
|
|
9
|
+
switch (align) {
|
|
10
|
+
case 'top':
|
|
11
|
+
case 'left':
|
|
12
|
+
default:
|
|
13
|
+
return 'initial';
|
|
14
|
+
|
|
15
|
+
case 'center':
|
|
16
|
+
return 'center';
|
|
17
|
+
|
|
18
|
+
case 'right':
|
|
19
|
+
case 'bottom':
|
|
20
|
+
return 'flex-end';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ResponsivePropTuple } from './ResponsiveProp';
|
|
2
|
+
|
|
3
|
+
export type CollapseProp = 'tablet' | 'desktop';
|
|
4
|
+
|
|
5
|
+
export function parseCollapsedBelow(
|
|
6
|
+
collapsedBelow: undefined | CollapseProp,
|
|
7
|
+
): ResponsivePropTuple<boolean> {
|
|
8
|
+
return [
|
|
9
|
+
collapsedBelow === 'tablet' || collapsedBelow === 'desktop',
|
|
10
|
+
collapsedBelow === 'desktop',
|
|
11
|
+
false,
|
|
12
|
+
];
|
|
13
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { useDeepEqualValue } from '@superdispatch/hooks';
|
|
2
|
+
import { useResponsiveContext } from '../responsive/ResponsiveContext';
|
|
3
|
+
|
|
4
|
+
export type ResponsivePropPrimitive = boolean | number | string;
|
|
5
|
+
|
|
6
|
+
export type ResponsivePropTupleInit<T extends ResponsivePropPrimitive> =
|
|
7
|
+
readonly [mobile: T, tablet?: T, desktop?: T];
|
|
8
|
+
export type ResponsiveProp<T extends ResponsivePropPrimitive> =
|
|
9
|
+
| T
|
|
10
|
+
| ResponsivePropTupleInit<T>;
|
|
11
|
+
|
|
12
|
+
export type ResponsivePropTuple<T extends ResponsivePropPrimitive> = readonly [
|
|
13
|
+
mobile: T,
|
|
14
|
+
tablet: T,
|
|
15
|
+
desktop: T,
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
export function parseResponsiveProp<T extends ResponsivePropPrimitive>(
|
|
19
|
+
prop: ResponsiveProp<T>,
|
|
20
|
+
): ResponsivePropTuple<T> {
|
|
21
|
+
if (typeof prop != 'object') return [prop, prop, prop];
|
|
22
|
+
let [mobile, tablet, desktop] = prop;
|
|
23
|
+
|
|
24
|
+
tablet ??= mobile;
|
|
25
|
+
desktop ??= tablet;
|
|
26
|
+
|
|
27
|
+
return [mobile, tablet, desktop];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function useResponsiveProp<T extends ResponsivePropPrimitive>(
|
|
31
|
+
prop: ResponsiveProp<T>,
|
|
32
|
+
): ResponsivePropTuple<T> {
|
|
33
|
+
return useDeepEqualValue(parseResponsiveProp(prop));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface PartialResponsivePropRecord<T> {
|
|
37
|
+
xs: T;
|
|
38
|
+
sm?: T;
|
|
39
|
+
md?: T;
|
|
40
|
+
lg?: T;
|
|
41
|
+
xl?: T;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export type ResponsivePropRecord<T extends ResponsivePropPrimitive> =
|
|
45
|
+
| T
|
|
46
|
+
| PartialResponsivePropRecord<T>;
|
|
47
|
+
|
|
48
|
+
export function useResponsiveValue<T>(
|
|
49
|
+
xs: T,
|
|
50
|
+
sm: T,
|
|
51
|
+
md = sm,
|
|
52
|
+
lg = md,
|
|
53
|
+
xl = lg,
|
|
54
|
+
): T {
|
|
55
|
+
const { breakpoint = 'xs' } = useResponsiveContext();
|
|
56
|
+
return { xs, sm, md, lg, xl }[breakpoint];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function useResponsivePropRecord<T extends ResponsivePropPrimitive>(
|
|
60
|
+
prop: ResponsivePropRecord<T>,
|
|
61
|
+
): T {
|
|
62
|
+
if (typeof prop != 'object') prop = { xs: prop };
|
|
63
|
+
const { xs, sm, md, lg, xl } = prop;
|
|
64
|
+
return useResponsiveValue(xs, sm ?? xs, md, lg, xl);
|
|
65
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type SpaceProp =
|
|
2
|
+
| 'none'
|
|
3
|
+
| 'xxsmall'
|
|
4
|
+
| 'xsmall'
|
|
5
|
+
| 'small'
|
|
6
|
+
| 'medium'
|
|
7
|
+
| 'large'
|
|
8
|
+
| 'xlarge'
|
|
9
|
+
| 'xxlarge';
|
|
10
|
+
|
|
11
|
+
export type NegativeSpaceProp =
|
|
12
|
+
| '-xxsmall'
|
|
13
|
+
| '-xsmall'
|
|
14
|
+
| '-small'
|
|
15
|
+
| '-medium'
|
|
16
|
+
| '-large'
|
|
17
|
+
| '-xlarge'
|
|
18
|
+
| '-xxlarge';
|
|
19
|
+
|
|
20
|
+
export function parseSpaceProp(prop: SpaceProp): number {
|
|
21
|
+
switch (prop) {
|
|
22
|
+
case 'none':
|
|
23
|
+
default:
|
|
24
|
+
return 0;
|
|
25
|
+
case 'xxsmall':
|
|
26
|
+
return 4;
|
|
27
|
+
case 'xsmall':
|
|
28
|
+
return 8;
|
|
29
|
+
case 'small':
|
|
30
|
+
return 16;
|
|
31
|
+
case 'medium':
|
|
32
|
+
return 24;
|
|
33
|
+
case 'large':
|
|
34
|
+
return 32;
|
|
35
|
+
case 'xlarge':
|
|
36
|
+
return 40;
|
|
37
|
+
case 'xxlarge':
|
|
38
|
+
return 48;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FormControlLabel,
|
|
3
|
+
FormGroup,
|
|
4
|
+
Switch,
|
|
5
|
+
TextField,
|
|
6
|
+
} from '@material-ui/core';
|
|
7
|
+
import { CheckboxField, RadioField, RadioGroupField } from '..';
|
|
8
|
+
|
|
9
|
+
export default { title: 'Inputs/RadioField', component: RadioField };
|
|
10
|
+
|
|
11
|
+
export const basic = () => (
|
|
12
|
+
<RadioField label="Label" helperText="Helper Text" />
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
export const error = () => (
|
|
16
|
+
<RadioField label="Label" helperText="Error Text" error={true} />
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
export const disabled = () => (
|
|
20
|
+
<RadioGroupField label="Disabled">
|
|
21
|
+
<RadioField label="Checked" checked={true} disabled={true} />
|
|
22
|
+
<RadioField label="Unchecked" checked={false} disabled={true} />
|
|
23
|
+
</RadioGroupField>
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
export const labelPlacement = () => (
|
|
27
|
+
<RadioField
|
|
28
|
+
label="Label"
|
|
29
|
+
FormControlLabelProps={{ labelPlacement: 'start' }}
|
|
30
|
+
/>
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
export const inlineForm = () => (
|
|
34
|
+
<RadioGroupField RadioGroupProps={{ row: true }}>
|
|
35
|
+
<FormGroup row={true}>
|
|
36
|
+
<RadioField label="Radio" />
|
|
37
|
+
<CheckboxField label="Checkbox" />
|
|
38
|
+
<FormControlLabel label="Switch" control={<Switch />} />
|
|
39
|
+
<TextField placeholder="Text Field" />
|
|
40
|
+
</FormGroup>
|
|
41
|
+
</RadioGroupField>
|
|
42
|
+
);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FormControl,
|
|
3
|
+
FormControlLabel,
|
|
4
|
+
FormControlLabelProps,
|
|
5
|
+
FormHelperText,
|
|
6
|
+
Radio,
|
|
7
|
+
RadioProps,
|
|
8
|
+
} from '@material-ui/core';
|
|
9
|
+
import { forwardRef, ForwardRefExoticComponent, ReactNode } from 'react';
|
|
10
|
+
|
|
11
|
+
export interface RadioFieldProps
|
|
12
|
+
extends Omit<RadioProps, 'onBlur' | 'onChange'>,
|
|
13
|
+
Pick<FormControlLabelProps, 'label' | 'onBlur' | 'onChange'> {
|
|
14
|
+
error?: boolean;
|
|
15
|
+
helperText?: ReactNode;
|
|
16
|
+
FormControlLabelProps?: Omit<
|
|
17
|
+
FormControlLabelProps,
|
|
18
|
+
| 'label'
|
|
19
|
+
| 'error'
|
|
20
|
+
| 'checked'
|
|
21
|
+
| 'onBlur'
|
|
22
|
+
| 'onChange'
|
|
23
|
+
| 'helperText'
|
|
24
|
+
| 'control'
|
|
25
|
+
>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export const RadioField: ForwardRefExoticComponent<RadioFieldProps> =
|
|
29
|
+
forwardRef(
|
|
30
|
+
(
|
|
31
|
+
{
|
|
32
|
+
label,
|
|
33
|
+
error,
|
|
34
|
+
checked,
|
|
35
|
+
onBlur,
|
|
36
|
+
onChange,
|
|
37
|
+
helperText,
|
|
38
|
+
FormControlLabelProps: formControlLabelProps,
|
|
39
|
+
...props
|
|
40
|
+
},
|
|
41
|
+
ref,
|
|
42
|
+
) => (
|
|
43
|
+
<FormControl error={error}>
|
|
44
|
+
<FormControlLabel
|
|
45
|
+
{...formControlLabelProps}
|
|
46
|
+
label={label}
|
|
47
|
+
checked={checked}
|
|
48
|
+
onBlur={onBlur}
|
|
49
|
+
onChange={onChange}
|
|
50
|
+
control={<Radio ref={ref} color="primary" {...props} />}
|
|
51
|
+
/>
|
|
52
|
+
{helperText && <FormHelperText>{helperText}</FormHelperText>}
|
|
53
|
+
</FormControl>
|
|
54
|
+
),
|
|
55
|
+
);
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FormControl,
|
|
3
|
+
FormControlProps,
|
|
4
|
+
FormHelperText,
|
|
5
|
+
FormHelperTextProps,
|
|
6
|
+
FormLabel,
|
|
7
|
+
FormLabelProps,
|
|
8
|
+
RadioGroup,
|
|
9
|
+
RadioGroupProps,
|
|
10
|
+
} from '@material-ui/core';
|
|
11
|
+
import { forwardRef, ForwardRefExoticComponent, ReactNode } from 'react';
|
|
12
|
+
|
|
13
|
+
export interface RadioGroupFieldProps
|
|
14
|
+
extends Omit<FormControlProps, 'hiddenLabel' | 'onChange'>,
|
|
15
|
+
Pick<RadioGroupProps, 'name' | 'value' | 'onChange'> {
|
|
16
|
+
RadioGroupProps?: Omit<RadioGroupProps, 'value' | 'onChange' | 'children'>;
|
|
17
|
+
|
|
18
|
+
label?: ReactNode;
|
|
19
|
+
FormLabelProps?: Omit<FormLabelProps, 'children'>;
|
|
20
|
+
|
|
21
|
+
helperText?: ReactNode;
|
|
22
|
+
FormHelperTextProps?: Omit<FormHelperTextProps, 'children'>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const RadioGroupField: ForwardRefExoticComponent<RadioGroupFieldProps> =
|
|
26
|
+
forwardRef(
|
|
27
|
+
(
|
|
28
|
+
{
|
|
29
|
+
name,
|
|
30
|
+
value = '',
|
|
31
|
+
onChange,
|
|
32
|
+
RadioGroupProps: radioGroupProps,
|
|
33
|
+
|
|
34
|
+
label,
|
|
35
|
+
FormLabelProps: formLabelProps,
|
|
36
|
+
|
|
37
|
+
helperText,
|
|
38
|
+
FormHelperTextProps: formHelperTextProps,
|
|
39
|
+
|
|
40
|
+
children,
|
|
41
|
+
|
|
42
|
+
...formControlProps
|
|
43
|
+
},
|
|
44
|
+
ref,
|
|
45
|
+
) => (
|
|
46
|
+
<FormControl {...formControlProps} hiddenLabel={!label}>
|
|
47
|
+
{!!label && <FormLabel {...formLabelProps}>{label}</FormLabel>}
|
|
48
|
+
|
|
49
|
+
<RadioGroup
|
|
50
|
+
ref={ref}
|
|
51
|
+
{...radioGroupProps}
|
|
52
|
+
name={name}
|
|
53
|
+
value={value as unknown}
|
|
54
|
+
onChange={onChange}
|
|
55
|
+
>
|
|
56
|
+
{children}
|
|
57
|
+
</RadioGroup>
|
|
58
|
+
|
|
59
|
+
{!!helperText && (
|
|
60
|
+
<FormHelperText {...formHelperTextProps}>{helperText}</FormHelperText>
|
|
61
|
+
)}
|
|
62
|
+
</FormControl>
|
|
63
|
+
),
|
|
64
|
+
);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { SvgIcon } from '@material-ui/core';
|
|
2
|
+
import { Color } from '../theme/Color';
|
|
3
|
+
import { SuperDispatchTheme } from '../theme/SuperDispatchTheme';
|
|
4
|
+
|
|
5
|
+
export function overrideRadio(theme: SuperDispatchTheme): void {
|
|
6
|
+
theme.props.MuiRadio = {
|
|
7
|
+
color: 'primary',
|
|
8
|
+
icon: (
|
|
9
|
+
<SvgIcon>
|
|
10
|
+
<circle
|
|
11
|
+
cx="12"
|
|
12
|
+
cy="12"
|
|
13
|
+
r="8.5"
|
|
14
|
+
fill={Color.White}
|
|
15
|
+
stroke="currentColor"
|
|
16
|
+
/>
|
|
17
|
+
</SvgIcon>
|
|
18
|
+
),
|
|
19
|
+
checkedIcon: (
|
|
20
|
+
<SvgIcon>
|
|
21
|
+
<circle
|
|
22
|
+
cx="12"
|
|
23
|
+
cy="12"
|
|
24
|
+
r="8.5"
|
|
25
|
+
fill="currentColor"
|
|
26
|
+
stroke="currentColor"
|
|
27
|
+
/>
|
|
28
|
+
|
|
29
|
+
<circle cx="12" cy="12" r="4" fill={Color.White} />
|
|
30
|
+
</SvgIcon>
|
|
31
|
+
),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
theme.overrides.MuiRadio = {
|
|
35
|
+
root: {
|
|
36
|
+
color: Color.Dark100,
|
|
37
|
+
marginTop: theme.spacing(-0.625),
|
|
38
|
+
marginBottom: theme.spacing(-0.625),
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
colorPrimary: {
|
|
42
|
+
'&$checked$disabled': {
|
|
43
|
+
color: Color.Silver500,
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
'&:hover:not($checked)': {
|
|
47
|
+
color: Color.Dark100,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Radio } from '@material-ui/core';
|
|
2
|
+
import { renderCSS, renderTheme } from '@superdispatch/ui-testutils';
|
|
3
|
+
|
|
4
|
+
it('checks default props', () => {
|
|
5
|
+
const { props } = renderTheme();
|
|
6
|
+
|
|
7
|
+
expect(props.MuiRadio).toMatchInlineSnapshot(`
|
|
8
|
+
Object {
|
|
9
|
+
"checkedIcon": <WithStyles(ForwardRef(SvgIcon))>
|
|
10
|
+
<circle
|
|
11
|
+
cx="12"
|
|
12
|
+
cy="12"
|
|
13
|
+
fill="currentColor"
|
|
14
|
+
r="8.5"
|
|
15
|
+
stroke="currentColor"
|
|
16
|
+
/>
|
|
17
|
+
<circle
|
|
18
|
+
cx="12"
|
|
19
|
+
cy="12"
|
|
20
|
+
fill="#fff"
|
|
21
|
+
r="4"
|
|
22
|
+
/>
|
|
23
|
+
</WithStyles(ForwardRef(SvgIcon))>,
|
|
24
|
+
"color": "primary",
|
|
25
|
+
"icon": <WithStyles(ForwardRef(SvgIcon))>
|
|
26
|
+
<circle
|
|
27
|
+
cx="12"
|
|
28
|
+
cy="12"
|
|
29
|
+
fill="#fff"
|
|
30
|
+
r="8.5"
|
|
31
|
+
stroke="currentColor"
|
|
32
|
+
/>
|
|
33
|
+
</WithStyles(ForwardRef(SvgIcon))>,
|
|
34
|
+
}
|
|
35
|
+
`);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('checks component css', () => {
|
|
39
|
+
expect(renderCSS(<Radio />, ['MuiRadio'])).toMatchInlineSnapshot(`
|
|
40
|
+
.MuiRadio-root {
|
|
41
|
+
color: Color.Dark100;
|
|
42
|
+
margin-top: -5px;
|
|
43
|
+
margin-bottom: -5px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.MuiRadio-colorPrimary.Mui-checked {
|
|
47
|
+
color: Color.Blue300;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.MuiRadio-colorPrimary.Mui-disabled {
|
|
51
|
+
color: Color.Silver400;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.MuiRadio-colorPrimary.Mui-checked.Mui-disabled {
|
|
55
|
+
color: Color.Silver500;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.MuiRadio-colorPrimary:hover:not(.Mui-checked) {
|
|
59
|
+
color: Color.Dark100;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.MuiRadio-colorPrimary.Mui-checked:hover {
|
|
63
|
+
background-color: rgba(0, 117, 255, 0.04);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@media (hover: none) {
|
|
67
|
+
.MuiRadio-colorPrimary.Mui-checked:hover {
|
|
68
|
+
background-color: transparent;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.MuiRadio-colorSecondary.Mui-checked {
|
|
73
|
+
color: #f50057;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.MuiRadio-colorSecondary.Mui-disabled {
|
|
77
|
+
color: Color.Silver400;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.MuiRadio-colorSecondary.Mui-checked:hover {
|
|
81
|
+
background-color: rgba(245, 0, 87, 0.04);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@media (hover: none) {
|
|
85
|
+
.MuiRadio-colorSecondary.Mui-checked:hover {
|
|
86
|
+
background-color: transparent;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
`);
|
|
90
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Breakpoint } from '@material-ui/core/styles/createBreakpoints';
|
|
2
|
+
import { useResponsiveContext } from './ResponsiveContext';
|
|
3
|
+
|
|
4
|
+
export type CollapseBreakpoint = 'sm' | 'md' | 'lg' | 'xl';
|
|
5
|
+
|
|
6
|
+
const BREAKPOINTS: Breakpoint[] = ['xs', 'sm', 'md', 'lg', 'xl'];
|
|
7
|
+
|
|
8
|
+
export function useCollapseBreakpoint(
|
|
9
|
+
collapseBreakpoint: undefined | CollapseBreakpoint,
|
|
10
|
+
): boolean {
|
|
11
|
+
const { breakpoint = 'xs' } = useResponsiveContext();
|
|
12
|
+
|
|
13
|
+
if (collapseBreakpoint == null) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const breakpointIDX = BREAKPOINTS.indexOf(breakpoint);
|
|
18
|
+
const collapseBreakpointIDX = BREAKPOINTS.indexOf(collapseBreakpoint);
|
|
19
|
+
|
|
20
|
+
return breakpointIDX < collapseBreakpointIDX;
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Breakpoint } from '@material-ui/core/styles/createBreakpoints';
|
|
2
|
+
import { useResponsiveContext } from './ResponsiveContext';
|
|
3
|
+
|
|
4
|
+
export type MinBreakpoint = 'sm' | 'md' | 'lg' | 'xl';
|
|
5
|
+
|
|
6
|
+
const BREAKPOINTS: Breakpoint[] = ['xs', 'sm', 'md', 'lg', 'xl'];
|
|
7
|
+
|
|
8
|
+
export function useMinBreakpoint(
|
|
9
|
+
minBreakpoint: undefined | MinBreakpoint,
|
|
10
|
+
): boolean {
|
|
11
|
+
const { breakpoint = 'xs' } = useResponsiveContext();
|
|
12
|
+
|
|
13
|
+
if (minBreakpoint == null) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const breakpointIDX = BREAKPOINTS.indexOf(breakpoint);
|
|
18
|
+
const minBreakpointIDX = BREAKPOINTS.indexOf(minBreakpoint);
|
|
19
|
+
|
|
20
|
+
return minBreakpointIDX < breakpointIDX;
|
|
21
|
+
}
|