TimeInput
TimeInput
사용자로부터 시간을 입력받는 컴포넌트예요. 네이티브 input[type="time"] 요소를 기반으로 해요.
출처: 문서
본문
사용법 (Usage)
TimeInput 컴포넌트는 Input과 Input.Wrapper 컴포넌트의 기능과 모든 input 요소 props를 지원해요. TimeInput 문서에는 컴포넌트가 지원하는 모든 기능이 포함되어 있지 않아요. 사용 가능한 모든 기능은 Input 문서에서 확인할 수 있어요.
import { TimeInput } from '@mantine/dates';
function Demo() {
return <TimeInput label="Input label" description="Input description" />;
}
TimePicker 컴포넌트
TimeInput 컴포넌트는 네이티브 input[type="time"] 요소를 기반으로 하며, 시간 형식 선택이나 커스텀 시간 select 드롭다운 같은 대부분의 고급 기능을 지원하지 않아요. 더 많은 기능이 필요하면 TimePicker 컴포넌트를 대신 사용해요.
TimeInput의 기능/제한:
- 네이티브
input[type="time"]요소 - 모바일 기기의 시간 선택을 위한 네이티브 브라우저 컨트롤
- 시간 형식은 사용자의 locale에 따라 달라져요
- 시간/분/초가 있는 네이티브 드롭다운만 사용 가능하고, Firefox에서는 동작하지 않아요
- 모바일 Safari는 초(seconds) 선택 옵션을 제공하지 않아요
제어 컴포넌트 (Controlled)
import { useState } from 'react';
import { TimeInput } from '@mantine/dates';
function Demo() {
const [value, setValue] = useState('');
return (
<TimeInput
value={value}
onChange={(event) => setValue(event.currentTarget.value)}
/>
);
}
브라우저 피커 표시 (Show browser picker)
입력 요소의 showPicker 메서드를 호출해 브라우저 피커를 표시할 수 있어요. 일부 브라우저(데스크톱 Safari)는 이 기능을 지원하지 않아 메서드가 아무것도 하지 않는다는 점에 주의해요.
import { useRef } from 'react';
import { ActionIcon } from '@mantine/core';
import { TimeInput } from '@mantine/dates';
import { ClockIcon } from '@phosphor-icons/react';
function Demo() {
const ref = useRef<HTMLInputElement>(null);
const pickerControl = (
<ActionIcon variant="subtle" color="gray" onClick={() => ref.current?.showPicker()}>
<ClockIcon size={16} />
</ActionIcon>
);
return <TimeInput ref={ref} rightSection={pickerControl} />;
}
초 포함 (With seconds)
import { TimeInput } from '@mantine/dates';
function Demo() {
return <TimeInput withSeconds />;
}
아이콘 포함 (With icon)
import { ClockIcon } from '@phosphor-icons/react';
import { TimeInput } from '@mantine/dates';
function Demo() {
return <TimeInput leftSection={<ClockIcon size={16} />} />;
}
비활성 상태 (Disabled state)
import { TimeInput } from '@mantine/dates';
function Demo() {
return <TimeInput disabled />;
}
요소 ref 가져오기 (Get element ref)
import { useRef } from 'react';
import { TimeInput } from '@mantine/dates';
function Demo() {
const ref = useRef<HTMLInputElement>(null);
return <TimeInput ref={ref} />;
}
접근성 (Accessibility)
TimeInput을 label prop 없이 사용하면 화면 판독기가 제대로 알려주지 못해요. aria-label을 설정하면 라벨이 보이지 않아도 화면 판독기가 알려줘요. label prop을 설정하면 별도로 aria-label을 지정할 필요 없이 접근성이 확보돼요.
import { TimeInput } from '@mantine/dates';
function Demo() {
return <TimeInput aria-label="Pick a time" />;
}