@12-apps/ui 6.74.1 → 6.75.0
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/NATIVE.md +1 -1
- package/dist/_internal/components/index.js +4 -4
- package/dist/_internal/components/layout/Drawer/Drawer.js +1 -1
- package/dist/_internal/components/layout/index.js +1 -1
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +3 -3
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +2 -2
- package/dist/_internal/components/navigation/index.js +4 -4
- package/dist/{chunk-27F2VXS4.js → chunk-7IXXASQ6.js} +2 -2
- package/dist/{chunk-UALPKKAY.js → chunk-F742IMLQ.js} +5 -2
- package/dist/{chunk-UALPKKAY.js.map → chunk-F742IMLQ.js.map} +1 -1
- package/dist/{chunk-NM46HQSW.js → chunk-J26ZWYQI.js} +2 -2
- package/dist/{chunk-URSYEHPU.js → chunk-PMRLFNBT.js} +2 -2
- package/dist/layout/Drawer.js +1 -1
- package/dist/native/layout/Screen.js +4 -1
- package/dist/native/layout/Screen.js.map +1 -1
- package/dist/navigation/SectionNav.js +4 -4
- package/dist/types/components/layout/Drawer/Drawer.d.ts.map +1 -1
- package/dist/types-native/components/layout/Screen/Screen.native.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/layout/Drawer/Drawer.tsx +4 -1
- package/src/components/layout/Screen/Screen.md +3 -1
- package/src/components/layout/Screen/Screen.native.tsx +11 -1
- /package/dist/{chunk-27F2VXS4.js.map → chunk-7IXXASQ6.js.map} +0 -0
- /package/dist/{chunk-NM46HQSW.js.map → chunk-J26ZWYQI.js.map} +0 -0
- /package/dist/{chunk-URSYEHPU.js.map → chunk-PMRLFNBT.js.map} +0 -0
package/NATIVE.md
CHANGED
|
@@ -113,5 +113,5 @@ Ported: **28 of 149** public subpaths carry a `react-native` condition.
|
|
|
113
113
|
| `@12-apps/ui/typography/Heading` | 26 | 1 | `gradient` paints the gradient's first stop as a flat colour: React Native has no `background-clip: text` and no gradient fill in core. A host wanting the real thing adds a masked-gradient library. |
|
|
114
114
|
| `@12-apps/ui/typography/Paragraph` | 17 | 1 | — |
|
|
115
115
|
| `@12-apps/ui/typography/Text` | 26 | 3 | — |
|
|
116
|
-
| `@12-apps/ui/layout/Screen` |
|
|
116
|
+
| `@12-apps/ui/layout/Screen` | 11 | 0 | Keyboard geometry uses React Native KeyboardAvoidingView; react-native-web unit/story lanes verify its wiring, not a real Android/iOS keyboard. Device keyboard/rotation QA remains explicit.; Web safe-area values come from CSS environment variables; native values come from the existing navigator or an internal safe-area provider. Browser keyboard resizing remains browser-managed. |
|
|
117
117
|
<!-- native-parity:end -->
|
|
@@ -130,13 +130,13 @@ import "../../chunk-3AIRFAI3.js";
|
|
|
130
130
|
import "../../chunk-R26KYJHK.js";
|
|
131
131
|
import {
|
|
132
132
|
SectionNav
|
|
133
|
-
} from "../../chunk-
|
|
133
|
+
} from "../../chunk-7IXXASQ6.js";
|
|
134
134
|
import "../../chunk-SNWCT6JN.js";
|
|
135
135
|
import "../../chunk-ILJ3FXIC.js";
|
|
136
136
|
import {
|
|
137
137
|
sectionNavBarInset
|
|
138
|
-
} from "../../chunk-
|
|
139
|
-
import "../../chunk-
|
|
138
|
+
} from "../../chunk-PMRLFNBT.js";
|
|
139
|
+
import "../../chunk-J26ZWYQI.js";
|
|
140
140
|
import {
|
|
141
141
|
RaisedActionButton
|
|
142
142
|
} from "../../chunk-UKUGSU3Y.js";
|
|
@@ -201,7 +201,7 @@ import {
|
|
|
201
201
|
Drawer,
|
|
202
202
|
DrawerContent,
|
|
203
203
|
DrawerHeader
|
|
204
|
-
} from "../../chunk-
|
|
204
|
+
} from "../../chunk-F742IMLQ.js";
|
|
205
205
|
import "../../chunk-ENORM6S2.js";
|
|
206
206
|
import {
|
|
207
207
|
Resizable
|
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
SectionNavBar,
|
|
3
3
|
sectionNavBarInset,
|
|
4
4
|
sectionNavSheetOffset
|
|
5
|
-
} from "../../../../chunk-
|
|
6
|
-
import "../../../../chunk-
|
|
5
|
+
} from "../../../../chunk-PMRLFNBT.js";
|
|
6
|
+
import "../../../../chunk-J26ZWYQI.js";
|
|
7
7
|
import "../../../../chunk-UKUGSU3Y.js";
|
|
8
8
|
import "../../../../chunk-24HHUCWB.js";
|
|
9
9
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
10
10
|
import "../../../../chunk-TMSWLFL4.js";
|
|
11
|
-
import "../../../../chunk-
|
|
11
|
+
import "../../../../chunk-F742IMLQ.js";
|
|
12
12
|
import "../../../../chunk-PUFA7FQ7.js";
|
|
13
13
|
import "../../../../chunk-5AK2EZG5.js";
|
|
14
14
|
import "../../../../chunk-N5PVD4J5.js";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNav
|
|
3
|
-
} from "../../../../chunk-
|
|
3
|
+
} from "../../../../chunk-7IXXASQ6.js";
|
|
4
4
|
import "../../../../chunk-SNWCT6JN.js";
|
|
5
5
|
import "../../../../chunk-ILJ3FXIC.js";
|
|
6
|
-
import "../../../../chunk-
|
|
7
|
-
import "../../../../chunk-
|
|
6
|
+
import "../../../../chunk-PMRLFNBT.js";
|
|
7
|
+
import "../../../../chunk-J26ZWYQI.js";
|
|
8
8
|
import "../../../../chunk-UKUGSU3Y.js";
|
|
9
9
|
import "../../../../chunk-24HHUCWB.js";
|
|
10
10
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
11
11
|
import "../../../../chunk-TMSWLFL4.js";
|
|
12
|
-
import "../../../../chunk-
|
|
12
|
+
import "../../../../chunk-F742IMLQ.js";
|
|
13
13
|
import "../../../../chunk-PUFA7FQ7.js";
|
|
14
14
|
import "../../../../chunk-5AK2EZG5.js";
|
|
15
15
|
import "../../../../chunk-N5PVD4J5.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNavSheet
|
|
3
|
-
} from "../../../../chunk-
|
|
3
|
+
} from "../../../../chunk-J26ZWYQI.js";
|
|
4
4
|
import "../../../../chunk-24HHUCWB.js";
|
|
5
5
|
import "../../../../chunk-YCCWJ5XQ.js";
|
|
6
6
|
import "../../../../chunk-TMSWLFL4.js";
|
|
7
|
-
import "../../../../chunk-
|
|
7
|
+
import "../../../../chunk-F742IMLQ.js";
|
|
8
8
|
import "../../../../chunk-PUFA7FQ7.js";
|
|
9
9
|
import "../../../../chunk-5AK2EZG5.js";
|
|
10
10
|
import "../../../../chunk-N5PVD4J5.js";
|
|
@@ -54,20 +54,20 @@ import "../../../chunk-3AIRFAI3.js";
|
|
|
54
54
|
import "../../../chunk-R26KYJHK.js";
|
|
55
55
|
import {
|
|
56
56
|
SectionNav
|
|
57
|
-
} from "../../../chunk-
|
|
57
|
+
} from "../../../chunk-7IXXASQ6.js";
|
|
58
58
|
import "../../../chunk-SNWCT6JN.js";
|
|
59
59
|
import "../../../chunk-ILJ3FXIC.js";
|
|
60
60
|
import {
|
|
61
61
|
sectionNavBarInset
|
|
62
|
-
} from "../../../chunk-
|
|
63
|
-
import "../../../chunk-
|
|
62
|
+
} from "../../../chunk-PMRLFNBT.js";
|
|
63
|
+
import "../../../chunk-J26ZWYQI.js";
|
|
64
64
|
import {
|
|
65
65
|
RaisedActionButton
|
|
66
66
|
} from "../../../chunk-UKUGSU3Y.js";
|
|
67
67
|
import "../../../chunk-24HHUCWB.js";
|
|
68
68
|
import "../../../chunk-YCCWJ5XQ.js";
|
|
69
69
|
import "../../../chunk-TMSWLFL4.js";
|
|
70
|
-
import "../../../chunk-
|
|
70
|
+
import "../../../chunk-F742IMLQ.js";
|
|
71
71
|
import "../../../chunk-7K23NEZO.js";
|
|
72
72
|
import "../../../chunk-5MMAV7XK.js";
|
|
73
73
|
import "../../../chunk-3ROCD7XF.js";
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-SNWCT6JN.js";
|
|
4
4
|
import {
|
|
5
5
|
SectionNavBar
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PMRLFNBT.js";
|
|
7
7
|
|
|
8
8
|
// src/components/navigation/SectionNav/SectionNav.tsx
|
|
9
9
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -55,4 +55,4 @@ function SectionNav({
|
|
|
55
55
|
export {
|
|
56
56
|
SectionNav
|
|
57
57
|
};
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-7IXXASQ6.js.map
|
|
@@ -122,7 +122,10 @@ var DrawerHeader = ({
|
|
|
122
122
|
sx: {
|
|
123
123
|
display: "flex",
|
|
124
124
|
alignItems: "center",
|
|
125
|
-
|
|
125
|
+
// 12px above and below: the close button is 40px tall, so the header lands on
|
|
126
|
+
// its own 64px minimum instead of 72 — the height of the page header beside
|
|
127
|
+
// a docked drawer (FUT-3476).
|
|
128
|
+
padding: theme.spacing(1.5, 2),
|
|
126
129
|
borderBottom: `1px solid ${theme.palette.divider}`,
|
|
127
130
|
minHeight: rem(theme, 64),
|
|
128
131
|
justifyContent: "space-between"
|
|
@@ -164,4 +167,4 @@ export {
|
|
|
164
167
|
DrawerHeader,
|
|
165
168
|
DrawerContent
|
|
166
169
|
};
|
|
167
|
-
//# sourceMappingURL=chunk-
|
|
170
|
+
//# sourceMappingURL=chunk-F742IMLQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/layout/Drawer/Drawer.tsx"],"sourcesContent":["import Close from '@mui/icons-material/Close';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport MuiDrawer from '@mui/material/Drawer/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { DrawerContentProps,DrawerHeaderProps, DrawerProps } from './Drawer.types';\nimport { shadowInk } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\n\ntype DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';\n\n/**\n * A `width`/`height` prop as CSS. `sx` reads a number of 1 or less as a\n * fraction of the parent, and that stays so; any other number is design px,\n * through the type scale; a string is as given.\n */\nconst drawerLength = (theme: Theme, value: number | string | undefined): string | undefined => {\n if (typeof value !== 'number') return value;\n return value <= 1 && value !== 0 ? `${value * 100}%` : rem(theme, value);\n};\n\n// `variant` doubles as a position preset, but an explicit `anchor` always wins.\nconst resolveAnchor = (\n anchor: DrawerProps['anchor'],\n variant: DrawerProps['variant'],\n): DrawerAnchor => {\n if (anchor) return anchor;\n\n // Map variant to anchor position\n switch (variant) {\n case 'right':\n return 'right';\n case 'top':\n return 'top';\n case 'bottom':\n return 'bottom';\n case 'glass':\n return 'right';\n case 'left':\n default:\n return 'left';\n }\n};\n\nconst buildDrawerStyles = (\n theme: Theme,\n anchor: DrawerAnchor,\n variant: DrawerProps['variant'],\n width: DrawerProps['width'],\n height: DrawerProps['height'],\n // Merged LAST into the surface's own rules, so a caller can shape the sliding\n // surface itself (rounded corners on a bottom sheet, a docked panel's offset)\n // without reaching for the MUI paper class from outside. Undefined by default:\n // omit it and the drawer styles exactly as it always has.\n paperSx?: DrawerProps['paperSx'],\n) => {\n const widthCss = drawerLength(theme, width);\n const heightCss = drawerLength(theme, height);\n const baseStyles = {\n width: ['left', 'right'].includes(anchor) ? widthCss : '100%',\n height: ['top', 'bottom'].includes(anchor) ? heightCss : '100%',\n flexShrink: 0,\n };\n\n if (variant === 'glass') {\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width: widthCss,\n height: '100%',\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\n boxShadow: `${rems(theme, 0, 8, 32)} ${shadowInk(theme, 0.1)}`,\n ...paperSx,\n },\n };\n }\n\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width: ['left', 'right'].includes(anchor) ? widthCss : '100%',\n height: ['top', 'bottom'].includes(anchor) ? heightCss : '100%',\n boxSizing: 'border-box',\n ...paperSx,\n },\n };\n};\n\nexport const Drawer: React.FC<DrawerProps> = ({\n children,\n open,\n onClose,\n variant = 'left',\n anchor,\n width,\n height = '100%',\n persistent = false,\n backdrop = true,\n hideBackdrop = false,\n keepMounted = false,\n paperSx,\n className,\n dataTestId,\n ...rest\n}) => {\n const theme = useTheme();\n const drawerAnchor = resolveAnchor(anchor, variant);\n\n return (\n <MuiDrawer\n anchor={drawerAnchor}\n open={open}\n onClose={onClose}\n variant={persistent ? 'persistent' : 'temporary'}\n ModalProps={{\n keepMounted,\n hideBackdrop,\n BackdropProps: {\n invisible: !backdrop,\n },\n }}\n sx={buildDrawerStyles(theme, drawerAnchor, variant, width ?? 280, height, paperSx)}\n className={className}\n data-testid={dataTestId || 'drawer'}\n {...rest}\n >\n {children}\n </MuiDrawer>\n );\n};\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n children,\n onClose,\n showCloseButton = true,\n closeLabel,\n dataTestId,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-header'}\n sx={{\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2),\n borderBottom: `1px solid ${theme.palette.divider}`,\n minHeight: rem(theme, 64),\n justifyContent: 'space-between',\n }}\n >\n <Box sx={{ flex: 1 }} data-testid={dataTestId ? `${dataTestId}-title` : 'drawer-title'}>\n {typeof children === 'string' ? <Typography variant=\"h6\">{children}</Typography> : children}\n </Box>\n {showCloseButton && onClose && (\n <IconButton\n onClick={onClose}\n edge=\"end\"\n aria-label={closeLabel ?? 'Close drawer'}\n data-testid={dataTestId ? `${dataTestId}-close` : 'drawer-close'}\n >\n <Close />\n </IconButton>\n )}\n </Box>\n );\n};\n\nexport const DrawerContent: React.FC<DrawerContentProps> = ({ children, padding = true, dataTestId }) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-content'}\n sx={{\n flex: 1,\n overflow: 'auto',\n padding: padding ? theme.spacing(2) : 0,\n }}\n >\n {children}\n </Box>\n );\n};\n"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/Drawer/Drawer.tsx"],"sourcesContent":["import Close from '@mui/icons-material/Close';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport MuiDrawer from '@mui/material/Drawer/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { DrawerContentProps,DrawerHeaderProps, DrawerProps } from './Drawer.types';\nimport { shadowInk } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\n\ntype DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';\n\n/**\n * A `width`/`height` prop as CSS. `sx` reads a number of 1 or less as a\n * fraction of the parent, and that stays so; any other number is design px,\n * through the type scale; a string is as given.\n */\nconst drawerLength = (theme: Theme, value: number | string | undefined): string | undefined => {\n if (typeof value !== 'number') return value;\n return value <= 1 && value !== 0 ? `${value * 100}%` : rem(theme, value);\n};\n\n// `variant` doubles as a position preset, but an explicit `anchor` always wins.\nconst resolveAnchor = (\n anchor: DrawerProps['anchor'],\n variant: DrawerProps['variant'],\n): DrawerAnchor => {\n if (anchor) return anchor;\n\n // Map variant to anchor position\n switch (variant) {\n case 'right':\n return 'right';\n case 'top':\n return 'top';\n case 'bottom':\n return 'bottom';\n case 'glass':\n return 'right';\n case 'left':\n default:\n return 'left';\n }\n};\n\nconst buildDrawerStyles = (\n theme: Theme,\n anchor: DrawerAnchor,\n variant: DrawerProps['variant'],\n width: DrawerProps['width'],\n height: DrawerProps['height'],\n // Merged LAST into the surface's own rules, so a caller can shape the sliding\n // surface itself (rounded corners on a bottom sheet, a docked panel's offset)\n // without reaching for the MUI paper class from outside. Undefined by default:\n // omit it and the drawer styles exactly as it always has.\n paperSx?: DrawerProps['paperSx'],\n) => {\n const widthCss = drawerLength(theme, width);\n const heightCss = drawerLength(theme, height);\n const baseStyles = {\n width: ['left', 'right'].includes(anchor) ? widthCss : '100%',\n height: ['top', 'bottom'].includes(anchor) ? heightCss : '100%',\n flexShrink: 0,\n };\n\n if (variant === 'glass') {\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width: widthCss,\n height: '100%',\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\n boxShadow: `${rems(theme, 0, 8, 32)} ${shadowInk(theme, 0.1)}`,\n ...paperSx,\n },\n };\n }\n\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width: ['left', 'right'].includes(anchor) ? widthCss : '100%',\n height: ['top', 'bottom'].includes(anchor) ? heightCss : '100%',\n boxSizing: 'border-box',\n ...paperSx,\n },\n };\n};\n\nexport const Drawer: React.FC<DrawerProps> = ({\n children,\n open,\n onClose,\n variant = 'left',\n anchor,\n width,\n height = '100%',\n persistent = false,\n backdrop = true,\n hideBackdrop = false,\n keepMounted = false,\n paperSx,\n className,\n dataTestId,\n ...rest\n}) => {\n const theme = useTheme();\n const drawerAnchor = resolveAnchor(anchor, variant);\n\n return (\n <MuiDrawer\n anchor={drawerAnchor}\n open={open}\n onClose={onClose}\n variant={persistent ? 'persistent' : 'temporary'}\n ModalProps={{\n keepMounted,\n hideBackdrop,\n BackdropProps: {\n invisible: !backdrop,\n },\n }}\n sx={buildDrawerStyles(theme, drawerAnchor, variant, width ?? 280, height, paperSx)}\n className={className}\n data-testid={dataTestId || 'drawer'}\n {...rest}\n >\n {children}\n </MuiDrawer>\n );\n};\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n children,\n onClose,\n showCloseButton = true,\n closeLabel,\n dataTestId,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-header'}\n sx={{\n display: 'flex',\n alignItems: 'center',\n // 12px above and below: the close button is 40px tall, so the header lands on\n // its own 64px minimum instead of 72 — the height of the page header beside\n // a docked drawer (FUT-3476).\n padding: theme.spacing(1.5, 2),\n borderBottom: `1px solid ${theme.palette.divider}`,\n minHeight: rem(theme, 64),\n justifyContent: 'space-between',\n }}\n >\n <Box sx={{ flex: 1 }} data-testid={dataTestId ? `${dataTestId}-title` : 'drawer-title'}>\n {typeof children === 'string' ? <Typography variant=\"h6\">{children}</Typography> : children}\n </Box>\n {showCloseButton && onClose && (\n <IconButton\n onClick={onClose}\n edge=\"end\"\n aria-label={closeLabel ?? 'Close drawer'}\n data-testid={dataTestId ? `${dataTestId}-close` : 'drawer-close'}\n >\n <Close />\n </IconButton>\n )}\n </Box>\n );\n};\n\nexport const DrawerContent: React.FC<DrawerContentProps> = ({ children, padding = true, dataTestId }) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-content'}\n sx={{\n flex: 1,\n overflow: 'auto',\n padding: padding ? theme.spacing(2) : 0,\n }}\n >\n {children}\n </Box>\n );\n};\n"],"mappings":"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","names":[]}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
Drawer,
|
|
10
10
|
DrawerContent,
|
|
11
11
|
DrawerHeader
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-F742IMLQ.js";
|
|
13
13
|
import {
|
|
14
14
|
rem
|
|
15
15
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -175,4 +175,4 @@ function SectionNavSheet({
|
|
|
175
175
|
export {
|
|
176
176
|
SectionNavSheet
|
|
177
177
|
};
|
|
178
|
-
//# sourceMappingURL=chunk-
|
|
178
|
+
//# sourceMappingURL=chunk-J26ZWYQI.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNavSheet
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-J26ZWYQI.js";
|
|
4
4
|
import {
|
|
5
5
|
RaisedActionButton,
|
|
6
6
|
raisedLift
|
|
@@ -327,4 +327,4 @@ export {
|
|
|
327
327
|
sectionNavSheetOffset,
|
|
328
328
|
SectionNavBar
|
|
329
329
|
};
|
|
330
|
-
//# sourceMappingURL=chunk-
|
|
330
|
+
//# sourceMappingURL=chunk-PMRLFNBT.js.map
|
package/dist/layout/Drawer.js
CHANGED
|
@@ -25,6 +25,9 @@ function keyboardBehavior(enabled) {
|
|
|
25
25
|
if (!enabled) return void 0;
|
|
26
26
|
return Platform.OS === "ios" ? "padding" : "height";
|
|
27
27
|
}
|
|
28
|
+
function keyboardDismissMode() {
|
|
29
|
+
return Platform.OS === "web" ? "none" : "on-drag";
|
|
30
|
+
}
|
|
28
31
|
function ScreenBoundary({ children }) {
|
|
29
32
|
const insets = React.useContext(SafeAreaInsetsContext);
|
|
30
33
|
return insets === null ? /* @__PURE__ */ jsx(SafeAreaProvider, { style: styles.fill, children }) : /* @__PURE__ */ jsx(Fragment, { children });
|
|
@@ -56,7 +59,7 @@ var Screen = React.forwardRef(({
|
|
|
56
59
|
ScrollView,
|
|
57
60
|
{
|
|
58
61
|
keyboardShouldPersistTaps: "handled",
|
|
59
|
-
keyboardDismissMode:
|
|
62
|
+
keyboardDismissMode: keyboardDismissMode(),
|
|
60
63
|
...scrollViewProps,
|
|
61
64
|
testID: scrollViewProps?.testID ?? (testID ? `${testID}-viewport` : void 0),
|
|
62
65
|
style: styles.fill,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Screen/Screen.native.tsx","../../../src/components/layout/Screen/Screen.base.ts"],"sourcesContent":["import * as React from 'react';\nimport { KeyboardAvoidingView, Platform, ScrollView, StyleSheet, View } from 'react-native';\nimport { SafeAreaInsetsContext, SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';\n\nimport { SCREEN_EDGES } from './Screen.base';\nimport type { ScreenProps } from './Screen.types.native';\nimport { resolveBoxLayout, splitBoxProps } from '../Box/box-layout';\nimport { resolveTestId } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\n\nconst styles = StyleSheet.create({ fill: { flex: 1 }, content: { flexGrow: 1 } });\n\nfunction keyboardBehavior(enabled: boolean): 'padding' | 'height' | undefined {\n if (!enabled) return undefined;\n return Platform.OS === 'ios' ? 'padding' : 'height';\n}\n\n/** Reuse a navigator's context, or own one outside the scrolling view. */\nfunction ScreenBoundary({ children }: { children: React.ReactNode }): React.JSX.Element {\n const insets = React.useContext(SafeAreaInsetsContext);\n return insets === null\n ? <SafeAreaProvider style={styles.fill}>{children}</SafeAreaProvider>\n : <>{children}</>;\n}\n\nexport const Screen = React.forwardRef<View, ScreenProps>(({\n children, scroll = true, safeAreaEdges = SCREEN_EDGES,\n keyboardAvoiding = true, keyboardVerticalOffset = 0, bg = 'default',\n style, contentContainerStyle, scrollViewProps, ...props\n}, ref) => {\n const theme = useUiTheme();\n const { layout, rest } = splitBoxProps(props);\n const testID = resolveTestId(layout);\n const contentStyle = [styles.content, resolveBoxLayout({ ...layout, direction: 'column' }, theme), contentContainerStyle];\n return (\n <ScreenBoundary>\n <View ref={ref} testID={testID} {...rest} style={[styles.fill, resolveBoxLayout({ bg }, theme), style]}>\n <SafeAreaView edges={safeAreaEdges} style={styles.fill}>\n <KeyboardAvoidingView style={styles.fill} enabled={keyboardAvoiding}\n behavior={keyboardBehavior(keyboardAvoiding)} keyboardVerticalOffset={keyboardVerticalOffset}>\n {scroll ? (\n <ScrollView keyboardShouldPersistTaps=\"handled\" keyboardDismissMode
|
|
1
|
+
{"version":3,"sources":["../../../src/components/layout/Screen/Screen.native.tsx","../../../src/components/layout/Screen/Screen.base.ts"],"sourcesContent":["import * as React from 'react';\nimport { KeyboardAvoidingView, Platform, ScrollView, StyleSheet, View } from 'react-native';\nimport { SafeAreaInsetsContext, SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';\n\nimport { SCREEN_EDGES } from './Screen.base';\nimport type { ScreenProps } from './Screen.types.native';\nimport { resolveBoxLayout, splitBoxProps } from '../Box/box-layout';\nimport { resolveTestId } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\n\nconst styles = StyleSheet.create({ fill: { flex: 1 }, content: { flexGrow: 1 } });\n\nfunction keyboardBehavior(enabled: boolean): 'padding' | 'height' | undefined {\n if (!enabled) return undefined;\n return Platform.OS === 'ios' ? 'padding' : 'height';\n}\n\n/**\n * Drag-to-dismiss on a device only. react-native-web runs `dismissKeyboard()`\n * on EVERY scroll event of an `on-drag` ScrollView, including the one the\n * browser fires to bring a just-focused field into view, so on the web the\n * field the user tapped lost focus as soon as the viewport moved.\n */\nfunction keyboardDismissMode(): 'on-drag' | 'none' {\n return Platform.OS === 'web' ? 'none' : 'on-drag';\n}\n\n/** Reuse a navigator's context, or own one outside the scrolling view. */\nfunction ScreenBoundary({ children }: { children: React.ReactNode }): React.JSX.Element {\n const insets = React.useContext(SafeAreaInsetsContext);\n return insets === null\n ? <SafeAreaProvider style={styles.fill}>{children}</SafeAreaProvider>\n : <>{children}</>;\n}\n\nexport const Screen = React.forwardRef<View, ScreenProps>(({\n children, scroll = true, safeAreaEdges = SCREEN_EDGES,\n keyboardAvoiding = true, keyboardVerticalOffset = 0, bg = 'default',\n style, contentContainerStyle, scrollViewProps, ...props\n}, ref) => {\n const theme = useUiTheme();\n const { layout, rest } = splitBoxProps(props);\n const testID = resolveTestId(layout);\n const contentStyle = [styles.content, resolveBoxLayout({ ...layout, direction: 'column' }, theme), contentContainerStyle];\n return (\n <ScreenBoundary>\n <View ref={ref} testID={testID} {...rest} style={[styles.fill, resolveBoxLayout({ bg }, theme), style]}>\n <SafeAreaView edges={safeAreaEdges} style={styles.fill}>\n <KeyboardAvoidingView style={styles.fill} enabled={keyboardAvoiding}\n behavior={keyboardBehavior(keyboardAvoiding)} keyboardVerticalOffset={keyboardVerticalOffset}>\n {scroll ? (\n <ScrollView keyboardShouldPersistTaps=\"handled\" keyboardDismissMode={keyboardDismissMode()} {...scrollViewProps}\n testID={scrollViewProps?.testID ?? (testID ? `${testID}-viewport` : undefined)}\n style={styles.fill} contentContainerStyle={contentStyle}\n horizontal={false} automaticallyAdjustKeyboardInsets={false}\n automaticallyAdjustContentInsets={false} contentInsetAdjustmentBehavior=\"never\">\n {children}\n </ScrollView>\n ) : <View style={[styles.fill, contentStyle]}>{children}</View>}\n </KeyboardAvoidingView>\n </SafeAreaView>\n </View>\n </ScreenBoundary>\n );\n});\nScreen.displayName = 'Screen';\n","import type { BoxBaseProps } from '../Box/Box.base';\n\n/** Physical screen edges, independent of a native dependency. */\nexport type ScreenEdge = 'top' | 'right' | 'bottom' | 'left';\nexport const SCREEN_EDGES: readonly ScreenEdge[] = ['top', 'right', 'bottom', 'left'];\n\n/** Padding and gap apply to the content, inside the selected safe-area edges. */\nexport interface ScreenBaseProps extends Pick<\n BoxBaseProps,\n 'children' | 'p' | 'px' | 'py' | 'pt' | 'pr' | 'pb' | 'pl' | 'gap' | 'bg' | 'testID' | 'dataTestId'\n> {\n /** Vertical scrolling; turn off when a child owns scrolling. Default true. */\n scroll?: boolean;\n /** Omit bottom when a navigator's tab bar already owns that inset. */\n safeAreaEdges?: readonly ScreenEdge[];\n /** Lift the native viewport above the soft keyboard. Default true. */\n keyboardAvoiding?: boolean;\n /** Native distance from the window top to the screen's parent, in dp. */\n keyboardVerticalOffset?: number;\n}\n"],"mappings":";;;;;;;;;;;;;AAAA,YAAY,WAAW;AACvB,SAAS,sBAAsB,UAAU,YAAY,YAAY,YAAY;AAC7E,SAAS,uBAAuB,kBAAkB,oBAAoB;;;ACE/D,IAAM,eAAsC,CAAC,OAAO,SAAS,UAAU,MAAM;;;AD2B9E,SACA,UADA;AArBN,IAAM,SAAS,WAAW,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC;AAEhF,SAAS,iBAAiB,SAAoD;AAC5E,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,SAAS,OAAO,QAAQ,YAAY;AAC7C;AAQA,SAAS,sBAA0C;AACjD,SAAO,SAAS,OAAO,QAAQ,SAAS;AAC1C;AAGA,SAAS,eAAe,EAAE,SAAS,GAAqD;AACtF,QAAM,SAAe,iBAAW,qBAAqB;AACrD,SAAO,WAAW,OACd,oBAAC,oBAAiB,OAAO,OAAO,MAAO,UAAS,IAChD,gCAAG,UAAS;AAClB;AAEO,IAAM,SAAe,iBAA8B,CAAC;AAAA,EACzD;AAAA,EAAU,SAAS;AAAA,EAAM,gBAAgB;AAAA,EACzC,mBAAmB;AAAA,EAAM,yBAAyB;AAAA,EAAG,KAAK;AAAA,EAC1D;AAAA,EAAO;AAAA,EAAuB;AAAA,EAAiB,GAAG;AACpD,GAAG,QAAQ;AACT,QAAM,QAAQ,WAAW;AACzB,QAAM,EAAE,QAAQ,KAAK,IAAI,cAAc,KAAK;AAC5C,QAAM,SAAS,cAAc,MAAM;AACnC,QAAM,eAAe,CAAC,OAAO,SAAS,iBAAiB,EAAE,GAAG,QAAQ,WAAW,SAAS,GAAG,KAAK,GAAG,qBAAqB;AACxH,SACE,oBAAC,kBACC,8BAAC,QAAK,KAAU,QAAiB,GAAG,MAAM,OAAO,CAAC,OAAO,MAAM,iBAAiB,EAAE,GAAG,GAAG,KAAK,GAAG,KAAK,GACnG,8BAAC,gBAAa,OAAO,eAAe,OAAO,OAAO,MAChD;AAAA,IAAC;AAAA;AAAA,MAAqB,OAAO,OAAO;AAAA,MAAM,SAAS;AAAA,MACjD,UAAU,iBAAiB,gBAAgB;AAAA,MAAG;AAAA,MAC7C,mBACC;AAAA,QAAC;AAAA;AAAA,UAAW,2BAA0B;AAAA,UAAU,qBAAqB,oBAAoB;AAAA,UAAI,GAAG;AAAA,UAC9F,QAAQ,iBAAiB,WAAW,SAAS,GAAG,MAAM,cAAc;AAAA,UACpE,OAAO,OAAO;AAAA,UAAM,uBAAuB;AAAA,UAC3C,YAAY;AAAA,UAAO,mCAAmC;AAAA,UACtD,kCAAkC;AAAA,UAAO,gCAA+B;AAAA,UACvE;AAAA;AAAA,MACH,IACE,oBAAC,QAAK,OAAO,CAAC,OAAO,MAAM,YAAY,GAAI,UAAS;AAAA;AAAA,EAC1D,GACF,GACF,GACF;AAEJ,CAAC;AACD,OAAO,cAAc;","names":[]}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import "../chunk-R26KYJHK.js";
|
|
2
2
|
import {
|
|
3
3
|
SectionNav
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-7IXXASQ6.js";
|
|
5
5
|
import "../chunk-SNWCT6JN.js";
|
|
6
6
|
import "../chunk-ILJ3FXIC.js";
|
|
7
7
|
import {
|
|
8
8
|
sectionNavBarInset
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-PMRLFNBT.js";
|
|
10
|
+
import "../chunk-J26ZWYQI.js";
|
|
11
11
|
import {
|
|
12
12
|
RaisedActionButton
|
|
13
13
|
} from "../chunk-UKUGSU3Y.js";
|
|
14
14
|
import "../chunk-24HHUCWB.js";
|
|
15
15
|
import "../chunk-YCCWJ5XQ.js";
|
|
16
16
|
import "../chunk-TMSWLFL4.js";
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-F742IMLQ.js";
|
|
18
18
|
import "../chunk-PUFA7FQ7.js";
|
|
19
19
|
import "../chunk-5AK2EZG5.js";
|
|
20
20
|
import "../chunk-N5PVD4J5.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/Drawer/Drawer.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,kBAAkB,EAAC,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAqFxF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAyCxC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/Drawer/Drawer.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,kBAAkB,EAAC,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAqFxF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAyCxC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuCpD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAetD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screen.native.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/Screen/Screen.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA0D,IAAI,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Screen.native.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/Screen/Screen.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA0D,IAAI,EAAE,MAAM,cAAc,CAAC;AAkC5F,eAAO,MAAM,MAAM;;;8BA6BjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -150,7 +150,10 @@ export const DrawerHeader: React.FC<DrawerHeaderProps> = ({
|
|
|
150
150
|
sx={{
|
|
151
151
|
display: 'flex',
|
|
152
152
|
alignItems: 'center',
|
|
153
|
-
|
|
153
|
+
// 12px above and below: the close button is 40px tall, so the header lands on
|
|
154
|
+
// its own 64px minimum instead of 72 — the height of the page header beside
|
|
155
|
+
// a docked drawer (FUT-3476).
|
|
156
|
+
padding: theme.spacing(1.5, 2),
|
|
154
157
|
borderBottom: `1px solid ${theme.palette.divider}`,
|
|
155
158
|
minHeight: rem(theme, 64),
|
|
156
159
|
justifyContent: 'space-between',
|
|
@@ -45,7 +45,9 @@ on iOS and height on Android. Its measured viewport already excludes the bottom
|
|
|
45
45
|
safe area, so the home-indicator inset is not added again above the keyboard.
|
|
46
46
|
ScrollView automatic keyboard and content insets are off so those owners do not
|
|
47
47
|
also apply the same lift/insets. Handled child taps remain usable with the
|
|
48
|
-
keyboard open; dragging dismisses it.
|
|
48
|
+
keyboard open; on a device, dragging dismisses it. On the web nothing is dismissed
|
|
49
|
+
on scroll: react-native-web would blur the focused field on every scroll event,
|
|
50
|
+
including the browser's own scroll to a just-focused field. `scrollViewProps` can change tap/dismiss
|
|
49
51
|
policy, but cannot override the viewport geometry or automatic inset ownership.
|
|
50
52
|
|
|
51
53
|
## Layout and accessibility
|
|
@@ -15,6 +15,16 @@ function keyboardBehavior(enabled: boolean): 'padding' | 'height' | undefined {
|
|
|
15
15
|
return Platform.OS === 'ios' ? 'padding' : 'height';
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Drag-to-dismiss on a device only. react-native-web runs `dismissKeyboard()`
|
|
20
|
+
* on EVERY scroll event of an `on-drag` ScrollView, including the one the
|
|
21
|
+
* browser fires to bring a just-focused field into view, so on the web the
|
|
22
|
+
* field the user tapped lost focus as soon as the viewport moved.
|
|
23
|
+
*/
|
|
24
|
+
function keyboardDismissMode(): 'on-drag' | 'none' {
|
|
25
|
+
return Platform.OS === 'web' ? 'none' : 'on-drag';
|
|
26
|
+
}
|
|
27
|
+
|
|
18
28
|
/** Reuse a navigator's context, or own one outside the scrolling view. */
|
|
19
29
|
function ScreenBoundary({ children }: { children: React.ReactNode }): React.JSX.Element {
|
|
20
30
|
const insets = React.useContext(SafeAreaInsetsContext);
|
|
@@ -39,7 +49,7 @@ export const Screen = React.forwardRef<View, ScreenProps>(({
|
|
|
39
49
|
<KeyboardAvoidingView style={styles.fill} enabled={keyboardAvoiding}
|
|
40
50
|
behavior={keyboardBehavior(keyboardAvoiding)} keyboardVerticalOffset={keyboardVerticalOffset}>
|
|
41
51
|
{scroll ? (
|
|
42
|
-
<ScrollView keyboardShouldPersistTaps="handled" keyboardDismissMode=
|
|
52
|
+
<ScrollView keyboardShouldPersistTaps="handled" keyboardDismissMode={keyboardDismissMode()} {...scrollViewProps}
|
|
43
53
|
testID={scrollViewProps?.testID ?? (testID ? `${testID}-viewport` : undefined)}
|
|
44
54
|
style={styles.fill} contentContainerStyle={contentStyle}
|
|
45
55
|
horizontal={false} automaticallyAdjustKeyboardInsets={false}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|