Skip to content

Commit

Permalink
fix(react): fix z-index issues with DateField inside a Drawer (#181)
Browse files Browse the repository at this point in the history
* fix(react): fix z-index issues with DateField inside a Drawer

* chore(change): add change
  • Loading branch information
jonambas authored Nov 17, 2023
1 parent e446be0 commit 02ab2d2
Show file tree
Hide file tree
Showing 5 changed files with 244 additions and 24 deletions.
5 changes: 5 additions & 0 deletions .changeset/metal-students-add.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@sweatpants/react': patch
---

Fix DateField z-index when rendered inside a Drawer
14 changes: 13 additions & 1 deletion libra/components/Drawer.libra.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
import { Button, Text, Drawer, Stack } from '../../packages/react/src';
import {
Button,
Text,
Drawer,
Stack,
DateField,
Select
} from '../../packages/react/src';

directory('Drawer', () => {
add('Default', () => {
Expand All @@ -8,6 +15,11 @@ directory('Drawer', () => {
<Text looksLike="h4" element="h2">
Drawer
</Text>
<DateField id="date" />
<Select id="select">
<Select.Item value="foo">Foo</Select.Item>
<Select.Item value="bar">Bar</Select.Item>
</Select>
<Button>Button</Button>
</Stack>
</Drawer>
Expand Down
196 changes: 194 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions packages/react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@
"@types/date-fns": "2.6.0"
},
"dependencies": {
"@radix-ui/react-dialog": "1.0.4",
"@radix-ui/react-dialog": "1.0.5",
"@radix-ui/react-popover": "1.0.7",
"@radix-ui/react-select": "1.2.2",
"@radix-ui/react-select": "2.0.0",
"@radix-ui/react-slot": "1.0.2",
"@react-hook/resize-observer": "1.2.6",
"date-fns": "2.30.0",
Expand Down
49 changes: 30 additions & 19 deletions packages/react/src/date-field/DateField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,14 @@ export type DateFieldProps = Omit<
onValueChange?: (value: Date) => void;
fromDate?: Date;
toDate?: Date;
className?: string;
};

const DateField = forwardRef<HTMLInputElement, DateFieldProps>(
(props, userRef) => {
const {
align = 'left',
className,
id,
defaultValue,
value,
Expand All @@ -45,6 +47,8 @@ const DateField = forwardRef<HTMLInputElement, DateFieldProps>(
toDate = addYears(new Date(), 20)
} = props;

const [open, setOpen] = useState(false);

const dayToString = (day: Date) => {
return format(day, 'MM/dd/yyyy');
};
Expand Down Expand Up @@ -106,11 +110,12 @@ const DateField = forwardRef<HTMLInputElement, DateFieldProps>(
};

return (
<Popover.Root>
<Popover.Trigger>
<Popover.Root open={open} onOpenChange={setOpen}>
<Popover.Trigger asChild>
<TextField
align={align}
autoComplete="off"
className={className}
size={size}
id={id}
type="text"
Expand All @@ -119,26 +124,32 @@ const DateField = forwardRef<HTMLInputElement, DateFieldProps>(
hideLabel={hideLabel}
placeholder="MM/DD/YYYY"
value={internalValue}
onChange={handleFieldOnChange}
onChange={(e) => {
if (!open) {
setOpen(true);
}
handleFieldOnChange(e);
}}
ref={userRef}
/>
</Popover.Trigger>
<Popover.Portal>
<Popover.Content asChild onOpenAutoFocus={(e) => e.preventDefault()}>
<Card kind="elevated" className={css({ m: '3' })}>
<DatePicker
onMonthChange={(d) => {
setDisplayMonth(d);
}}
month={displayMonth}
selected={datePickerValue}
onSelect={onDatePickerSelect}
fromDate={fromDate}
toDate={toDate}
/>
</Card>
</Popover.Content>
</Popover.Portal>
<Popover.Content asChild onOpenAutoFocus={(e) => e.preventDefault()}>
<Card
kind="elevated"
className={css({ position: 'relative', m: '3', zIndex: '20' })}
>
<DatePicker
onMonthChange={(d) => {
setDisplayMonth(d);
}}
month={displayMonth}
selected={datePickerValue}
onSelect={onDatePickerSelect}
fromDate={fromDate}
toDate={toDate}
/>
</Card>
</Popover.Content>
</Popover.Root>
);
}
Expand Down

0 comments on commit 02ab2d2

Please sign in to comment.