Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions apps/docs/content/components/time-input/controlled.raw.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import {TimeInput} from "@nextui-org/react";
import {parseAbsoluteToLocal, Time, ZonedDateTime} from "@internationalized/date";
import {useDateFormatter} from "@react-aria/i18n";

export default function App() {
let [value, setValue] = React.useState(parseAbsoluteToLocal("2024-04-08T18:45:22Z"));

let formatter = useDateFormatter({dateStyle: "short", timeStyle: "long"});

return (
<div className="w-full flex flex-row gap-2">
<div className="w-full flex flex-col gap-y-2">
<TimeInput label="Time (controlled)" value={value} onChange={setValue} />
<p className="text-default-500 text-sm">
{value instanceof ZonedDateTime
? (value.toDate && formatter.format(value.toDate())) ||
(value && value.toString()) ||
"--"
: ""}
</p>
</div>

<TimeInput defaultValue={new Time(11, 45)} label="Time (uncontrolled)" />
</div>
);
}
31 changes: 31 additions & 0 deletions apps/docs/content/components/time-input/controlled.raw.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import type {TimeInputValue} from "@nextui-org/react";

import React from "react";
import {TimeInput} from "@nextui-org/react";
import {parseAbsoluteToLocal, Time, ZonedDateTime} from "@internationalized/date";
import {useDateFormatter} from "@react-aria/i18n";

export default function App() {
let [value, setValue] = React.useState<TimeInputValue>(
parseAbsoluteToLocal("2024-04-08T18:45:22Z"),
);

let formatter = useDateFormatter({dateStyle: "short", timeStyle: "long"});

return (
<div className="w-full flex flex-row gap-2">
<div className="w-full flex flex-col gap-y-2">
<TimeInput label="Time (controlled)" value={value} onChange={setValue} />
<p className="text-default-500 text-sm">
{value instanceof ZonedDateTime
? (value.toDate && formatter.format(value.toDate())) ||
(value && value.toString()) ||
"--"
: ""}
</p>
</div>

<TimeInput defaultValue={new Time(11, 45)} label="Time (uncontrolled)" />
</div>
);
}
60 changes: 6 additions & 54 deletions apps/docs/content/components/time-input/controlled.ts
Original file line number Diff line number Diff line change
@@ -1,63 +1,15 @@
const App = `import {TimeInput} from "@nextui-org/react";
import {parseAbsoluteToLocal, Time, ZonedDateTime} from "@internationalized/date";
import {useDateFormatter} from "@react-aria/i18n";

export default function App() {
let [value, setValue] = React.useState(parseAbsoluteToLocal("2024-04-08T18:45:22Z"));

let formatter = useDateFormatter({dateStyle: "short", timeStyle: "long"});

return (
<div className="w-full flex flex-row gap-2">
<div className="w-full flex flex-col gap-y-2">
<TimeInput label="Time (controlled)" value={value} onChange={setValue} />
<p className="text-default-500 text-sm">
{value instanceof ZonedDateTime
? (value.toDate && formatter.format(value.toDate())) ||
(value && value.toString()) ||
"--"
: ""}
</p>
</div>

<TimeInput defaultValue={new Time(11, 45)} label="Time (uncontrolled)" />
</div>
);
}`;

const AppTs = `import {TimeInput} from "@nextui-org/react";
import type {TimeValue} from "@react-types/datepicker";
import {parseAbsoluteToLocal, Time, ZonedDateTime} from "@internationalized/date";
import {useDateFormatter} from "@react-aria/i18n";

export default function App() {
let [value, setValue] = React.useState<TimeInputValue>(parseAbsoluteToLocal("2024-04-08T18:45:22Z"));

let formatter = useDateFormatter({dateStyle: "short", timeStyle: "long"});

return (
<div className="w-full flex flex-row gap-2">
<div className="w-full flex flex-col gap-y-2">
<TimeInput label="Time (controlled)" value={value} onChange={setValue} />
<p className="text-default-500 text-sm">
{value instanceof ZonedDateTime
? (value.toDate && formatter.format(value.toDate())) ||
(value && value.toString()) ||
"--"
: ""}
</p>
</div>

<TimeInput defaultValue={new Time(11, 45)} label="Time (uncontrolled)" />
</div>
);
}`;
import App from "./controlled.raw.jsx?raw";
import AppTs from "./controlled.raw.tsx?raw";

const react = {
"/App.jsx": App,
};

const reactTs = {
"/App.tsx": AppTs,
};

export default {
...react,
...reactTs,
};
6 changes: 6 additions & 0 deletions apps/docs/content/components/time-input/disabled.raw.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import {TimeInput} from "@nextui-org/react";
import {Time} from "@internationalized/date";

export default function App() {
return <TimeInput isDisabled defaultValue={new Time(11, 45)} label="Event Time" />;
}
13 changes: 1 addition & 12 deletions apps/docs/content/components/time-input/disabled.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,4 @@
const App = `import {TimeInput} from "@nextui-org/react";
import {Time} from "@internationalized/date";

export default function App() {
return (
<TimeInput
isDisabled
label="Event Time"
defaultValue={new Time(11, 45)}
/>
);
}`;
import App from "./disabled.raw.jsx?raw";

const react = {
"/App.jsx": App,
Expand Down
35 changes: 35 additions & 0 deletions apps/docs/content/components/time-input/end-content.raw.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import {TimeInput} from "@nextui-org/react";
import {Time} from "@internationalized/date";

export const ClockCircleLinearIcon = (props) => {
return (
<svg
aria-hidden="true"
fill="none"
focusable="false"
height="1em"
role="presentation"
viewBox="0 0 24 24"
width="1em"
{...props}
>
<g fill="none" stroke="currentColor" strokeWidth="1.5">
<circle cx="12" cy="12" r="10" />
<path d="M12 8v4l2.5 2.5" strokeLinecap="round" strokeLinejoin="round" />
</g>
</svg>
);
};

export default function App() {
return (
<TimeInput
defaultValue={new Time(11, 45)}
endContent={
<ClockCircleLinearIcon className="text-xl text-default-400 pointer-events-none flex-shrink-0" />
}
label="Event Time"
labelPlacement="outside"
/>
);
}
36 changes: 1 addition & 35 deletions apps/docs/content/components/time-input/end-content.ts
Original file line number Diff line number Diff line change
@@ -1,41 +1,7 @@
const ClockCircleLinearIcon = `export const ClockCircleLinearIcon = (props) => (
<svg
aria-hidden="true"
fill="none"
focusable="false"
height="1em"
role="presentation"
viewBox="0 0 24 24"
width="1em"
{...props}
>
<g fill="none" stroke="currentColor" strokeWidth="1.5">
<circle cx="12" cy="12" r="10" />
<path d="M12 8v4l2.5 2.5" strokeLinecap="round" strokeLinejoin="round" />
</g>
</svg>
);`;

const App = `import {TimeInput} from "@nextui-org/react";
import {ClockCircleLinearIcon} from './ClockCircleLinearIcon';
import {Time} from "@internationalized/date";

export default function App() {
return (
<TimeInput
label="Event Time"
labelPlacement="outside"
defaultValue={new Time(11, 45)}
endContent={(
<ClockCircleLinearIcon className="text-xl text-default-400 pointer-events-none flex-shrink-0" />
)}
/>
);
}`;
import App from "./end-content.raw.jsx?raw";

const react = {
"/App.jsx": App,
"/ClockCircleLinearIcon.jsx": ClockCircleLinearIcon,
};

export default {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import {TimeInput} from "@nextui-org/react";

export default function App() {
return (
<TimeInput
isInvalid
errorMessage={(value) => {
if (value.isInvalid) {
return "Please enter a valid time";
}
}}
label="Event Time"
/>
);
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,4 @@
const App = `import {TimeInput} from "@nextui-org/react";

export default function App() {
return (
<TimeInput
label="Event Time"
isInvalid
errorMessage={(value) => {
if (value.isInvalid) {
return "Please enter a valid time";
}
}}
/>
);
}`;
import App from "./error-message-function.raw.jsx?raw";

const react = {
"/App.jsx": App,
Expand Down
5 changes: 5 additions & 0 deletions apps/docs/content/components/time-input/error-message.raw.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import {TimeInput} from "@nextui-org/react";

export default function App() {
return <TimeInput isInvalid errorMessage="Please enter a valid time" label="Event Time" />;
}
12 changes: 1 addition & 11 deletions apps/docs/content/components/time-input/error-message.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
const App = `import {TimeInput} from "@nextui-org/react";

export default function App() {
return (
<TimeInput
label="Event Time"
isInvalid
errorMessage="Please enter a valid time"
/>
);
}`;
import App from "./error-message.raw.jsx?raw";

const react = {
"/App.jsx": App,
Expand Down
14 changes: 14 additions & 0 deletions apps/docs/content/components/time-input/granularity.raw.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import {TimeInput} from "@nextui-org/react";
import {parseAbsoluteToLocal} from "@internationalized/date";

export default function App() {
let [date, setDate] = React.useState(parseAbsoluteToLocal("2021-04-07T18:45:22Z"));

return (
<div className="w-full max-w-xl flex flex-col items-start gap-4">
<TimeInput granularity="hour" label="Hour" value={date} onChange={setDate} />
<TimeInput granularity="minute" label="Minute" value={date} onChange={setDate} />
<TimeInput granularity="second" label="Second" value={date} onChange={setDate} />
</div>
);
}
19 changes: 19 additions & 0 deletions apps/docs/content/components/time-input/granularity.raw.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import type {TimeInputValue} from "@nextui-org/react";

import React from "react";
import {TimeInput} from "@nextui-org/react";
import {parseAbsoluteToLocal} from "@internationalized/date";

export default function App() {
let [date, setDate] = React.useState<TimeInputValue>(
parseAbsoluteToLocal("2021-04-07T18:45:22Z"),
);

return (
<div className="w-full max-w-xl flex flex-col items-start gap-4">
<TimeInput granularity="hour" label="Hour" value={date} onChange={setDate} />
<TimeInput granularity="minute" label="Minute" value={date} onChange={setDate} />
<TimeInput granularity="second" label="Second" value={date} onChange={setDate} />
</div>
);
}
36 changes: 6 additions & 30 deletions apps/docs/content/components/time-input/granularity.ts
Original file line number Diff line number Diff line change
@@ -1,39 +1,15 @@
const App = `import {TimeInput} from "@nextui-org/react";
import {Time, parseAbsoluteToLocal} from "@internationalized/date";

export default function App() {
let [date, setDate] = React.useState(parseAbsoluteToLocal("2021-04-07T18:45:22Z"));

return (
<div className="w-full max-w-xl flex flex-col items-start gap-4">
<TimeInput granularity="hour" label="Hour" value={date} onChange={setDate} />
<TimeInput granularity="minute" label="Minute" value={date} onChange={setDate} />
<TimeInput granularity="second" label="Second" value={date} onChange={setDate} />
</div>
);
}`;

const AppTs = `import {TimeInput} from "@nextui-org/react";
import type {TimeValue} from "@react-types/datepicker";
import {Time, parseAbsoluteToLocal} from "@internationalized/date";

export default function App() {
let [date, setDate] = React.useState<TimeInputValue>(parseAbsoluteToLocal("2021-04-07T18:45:22Z"));

return (
<div className="w-full max-w-xl flex flex-col items-start gap-4">
<TimeInput granularity="hour" label="Hour" value={date} onChange={setDate} />
<TimeInput granularity="minute" label="Minute" value={date} onChange={setDate} />
<TimeInput granularity="second" label="Second" value={date} onChange={setDate} />
</div>
);
}`;
import App from "./granularity.raw.jsx?raw";
import AppTs from "./granularity.raw.tsx?raw";

const react = {
"/App.jsx": App,
};

const reactTs = {
"/App.tsx": AppTs,
};

export default {
...react,
...reactTs,
};
12 changes: 12 additions & 0 deletions apps/docs/content/components/time-input/hide-timezone.raw.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {TimeInput} from "@nextui-org/react";
import {parseZonedDateTime} from "@internationalized/date";

export default function App() {
return (
<TimeInput
hideTimeZone
defaultValue={parseZonedDateTime("2022-11-07T10:45[America/Los_Angeles]")}
label="Meeting time"
/>
);
}
Loading