Basic example
Input with a modal for selecting a date and time.
<div
class="relative mb-3"
data-te-date-timepicker-init
data-te-input-wrapper-init>
<input
type="text"
class="peer block min-h-[auto] w-full rounded border-0 bg-transparent px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear focus:placeholder:opacity-100 peer-focus:text-primary data-[te-input-state-active]:placeholder:opacity-100 motion-reduce:transition-none dark:text-neutral-200 dark:placeholder:text-neutral-200 dark:peer-focus:text-primary [&:not([data-te-input-placeholder-active])]:placeholder:opacity-0"
id="form1" />
<label
for="form1"
class="pointer-events-none absolute left-3 top-0 mb-0 max-w-[90%] origin-[0_0] truncate pt-[0.37rem] leading-[1.6] text-neutral-500 transition-all duration-200 ease-out peer-focus:-translate-y-[0.9rem] peer-focus:scale-[0.8] peer-focus:text-primary peer-data-[te-input-state-active]:-translate-y-[0.9rem] peer-data-[te-input-state-active]:scale-[0.8] motion-reduce:transition-none dark:text-neutral-200 dark:peer-focus:text-primary"
>Select a time</label
>
</div>
// Initialization for ES Users
import {
Datetimepicker,
Input,
initTE,
} from "tw-elements";
initTE({ Datetimepicker, Input });
Hey there 👋 we want to make TW elements a community-driven project. It's open source and free, and we would like it to stay that way. If you enjoy it, help the project grow by sharing it with your peers. Every share counts, thank you!
Inline version
You can use inline version with option data-te-inline
.
<div
class="relative mb-3"
data-te-date-timepicker-init
data-te-input-wrapper-init
data-te-inline="true">
<input
type="text"
class="peer block min-h-[auto] w-full rounded border-0 bg-transparent px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear focus:placeholder:opacity-100 peer-focus:text-primary data-[te-input-state-active]:placeholder:opacity-100 motion-reduce:transition-none dark:text-neutral-200 dark:placeholder:text-neutral-200 dark:peer-focus:text-primary [&:not([data-te-input-placeholder-active])]:placeholder:opacity-0"
id="form2" />
<label
for="form2"
class="pointer-events-none absolute left-3 top-0 mb-0 max-w-[90%] origin-[0_0] truncate pt-[0.37rem] leading-[1.6] text-neutral-500 transition-all duration-200 ease-out peer-focus:-translate-y-[0.9rem] peer-focus:scale-[0.8] peer-focus:text-primary peer-data-[te-input-state-active]:-translate-y-[0.9rem] peer-data-[te-input-state-active]:scale-[0.8] motion-reduce:transition-none dark:text-neutral-200 dark:peer-focus:text-primary"
>Select a time</label
>
</div>
// Initialization for ES Users
import {
Datetimepicker,
Input,
initTE,
} from "tw-elements";
initTE({ Datetimepicker, Input });
Disabled
Use data-te-disabled="true"
attribute on Datetimepicker to
remove pointer events.
Add the disabled boolean attribute on an input with
bg-neutral-100
and dark:bg-neutral-700
classes to
give it a neutraled out appearance and remove pointer events and make it
unusable and un-clickable.
<div
class="relative mb-3"
data-te-date-timepicker-init
data-te-input-wrapper-init
data-te-disabled="true">
<input
type="text"
class="peer block min-h-[auto] w-full rounded border-0 bg-neutral-100 px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear focus:placeholder:opacity-100 peer-focus:text-primary data-[te-input-state-active]:placeholder:opacity-100 motion-reduce:transition-none dark:bg-neutral-700 dark:text-neutral-200 dark:placeholder:text-neutral-200 dark:peer-focus:text-primary [&:not([data-te-input-placeholder-active])]:placeholder:opacity-0"
id="form3" />
<label
for="form3"
class="pointer-events-none absolute left-3 top-0 mb-0 max-w-[90%] origin-[0_0] truncate pt-[0.37rem] leading-[1.6] text-neutral-500 transition-all duration-200 ease-out peer-focus:-translate-y-[0.9rem] peer-focus:scale-[0.8] peer-focus:text-primary peer-data-[te-input-state-active]:-translate-y-[0.9rem] peer-data-[te-input-state-active]:scale-[0.8] motion-reduce:transition-none dark:text-neutral-200 dark:peer-focus:text-primary"
>Select a time</label
>
</div>
// Initialization for ES Users
import {
Datetimepicker,
Input,
initTE,
} from "tw-elements";
initTE({ Datetimepicker, Input });
Disable past
Use data-te-disable-past="true"
attribute to disallow selecting
past dates.
<div
class="relative mb-3"
data-te-date-timepicker-init
data-te-input-wrapper-init
data-te-disable-past="true">
<input
type="text"
class="peer block min-h-[auto] w-full rounded border-0 bg-transparent px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear focus:placeholder:opacity-100 peer-focus:text-primary data-[te-input-state-active]:placeholder:opacity-100 motion-reduce:transition-none dark:text-neutral-200 dark:placeholder:text-neutral-200 dark:peer-focus:text-primary [&:not([data-te-input-placeholder-active])]:placeholder:opacity-0"
id="form4" />
<label
for="form4"
class="pointer-events-none absolute left-3 top-0 mb-0 max-w-[90%] origin-[0_0] truncate pt-[0.37rem] leading-[1.6] text-neutral-500 transition-all duration-200 ease-out peer-focus:-translate-y-[0.9rem] peer-focus:scale-[0.8] peer-focus:text-primary peer-data-[te-input-state-active]:-translate-y-[0.9rem] peer-data-[te-input-state-active]:scale-[0.8] motion-reduce:transition-none dark:text-neutral-200 dark:peer-focus:text-primary"
>Select a time</label
>
</div>
// Initialization for ES Users
import {
Datetimepicker,
Input,
initTE,
} from "tw-elements";
initTE({ Datetimepicker, Input });
Disable future
Use data-te-disable-future="true"
attribute to disallow
selecting future dates.
<div
class="relative mb-3"
data-te-date-timepicker-init
data-te-input-wrapper-init
data-te-disable-future="true">
<input
type="text"
class="peer block min-h-[auto] w-full rounded border-0 bg-transparent px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear focus:placeholder:opacity-100 peer-focus:text-primary data-[te-input-state-active]:placeholder:opacity-100 motion-reduce:transition-none dark:text-neutral-200 dark:placeholder:text-neutral-200 dark:peer-focus:text-primary [&:not([data-te-input-placeholder-active])]:placeholder:opacity-0"
id="form5" />
<label
for="form5"
class="pointer-events-none absolute left-3 top-0 mb-0 max-w-[90%] origin-[0_0] truncate pt-[0.37rem] leading-[1.6] text-neutral-500 transition-all duration-200 ease-out peer-focus:-translate-y-[0.9rem] peer-focus:scale-[0.8] peer-focus:text-primary peer-data-[te-input-state-active]:-translate-y-[0.9rem] peer-data-[te-input-state-active]:scale-[0.8] motion-reduce:transition-none dark:text-neutral-200 dark:peer-focus:text-primary"
>Select a time</label
>
</div>
// Initialization for ES Users
import {
Datetimepicker,
Input,
initTE,
} from "tw-elements";
initTE({ Datetimepicker, Input });
Default values
You can set default date and time with options defaultDate
and
defaultTime
.
<div
class="relative mb-3"
data-te-date-timepicker-init
data-te-input-wrapper-init
data-te-default-date="22/01/2019"
data-te-default-time="10:33 PM">
<input
type="text"
class="peer block min-h-[auto] w-full rounded border-0 bg-transparent px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear focus:placeholder:opacity-100 peer-focus:text-primary data-[te-input-state-active]:placeholder:opacity-100 motion-reduce:transition-none dark:text-neutral-200 dark:placeholder:text-neutral-200 dark:peer-focus:text-primary [&:not([data-te-input-placeholder-active])]:placeholder:opacity-0"
id="form6" />
<label
for="form6"
class="pointer-events-none absolute left-3 top-0 mb-0 max-w-[90%] origin-[0_0] truncate pt-[0.37rem] leading-[1.6] text-neutral-500 transition-all duration-200 ease-out peer-focus:-translate-y-[0.9rem] peer-focus:scale-[0.8] peer-focus:text-primary peer-data-[te-input-state-active]:-translate-y-[0.9rem] peer-data-[te-input-state-active]:scale-[0.8] motion-reduce:transition-none dark:text-neutral-200 dark:peer-focus:text-primary"
>Select a time</label
>
</div>
// Initialization for ES Users
import {
Datetimepicker,
Input,
initTE,
} from "tw-elements";
initTE({ Datetimepicker, Input });
Input toggle
Add data-te-date-timepicker-toggle-ref
to the input element to
enable toggling on input click. It is also possible to set
toggleButton
option to false
to remove the toggle
button.
<div
class="relative mb-3"
data-te-date-timepicker-init
data-te-input-wrapper-init
data-te-toggle-button="false">
<input
type="text"
class="peer block min-h-[auto] w-full rounded border-0 bg-transparent px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear focus:placeholder:opacity-100 peer-focus:text-primary data-[te-input-state-active]:placeholder:opacity-100 motion-reduce:transition-none dark:text-neutral-200 dark:placeholder:text-neutral-200 dark:peer-focus:text-primary [&:not([data-te-input-placeholder-active])]:placeholder:opacity-0"
id="form7"
data-te-date-timepicker-toggle-ref />
<label
for="form7"
class="pointer-events-none absolute left-3 top-0 mb-0 max-w-[90%] origin-[0_0] truncate pt-[0.37rem] leading-[1.6] text-neutral-500 transition-all duration-200 ease-out peer-focus:-translate-y-[0.9rem] peer-focus:scale-[0.8] peer-focus:text-primary peer-data-[te-input-state-active]:-translate-y-[0.9rem] peer-data-[te-input-state-active]:scale-[0.8] motion-reduce:transition-none dark:text-neutral-200 dark:peer-focus:text-primary"
>Select a time</label
>
</div>
// Initialization for ES Users
import {
Datetimepicker,
Input,
initTE,
} from "tw-elements";
initTE({ Datetimepicker, Input });
Custom date and time options
Use datepicker
or timepicker
option to set custom
options from our
Datepicker
and
Timepicker
components.
Datepicker options
<div
class="relative mb-3"
data-te-input-wrapper-init
id="datetimepicker-dateOptions">
<input
type="text"
class="peer block min-h-[auto] w-full rounded border-0 bg-transparent px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear focus:placeholder:opacity-100 peer-focus:text-primary data-[te-input-state-active]:placeholder:opacity-100 motion-reduce:transition-none dark:text-neutral-200 dark:placeholder:text-neutral-200 dark:peer-focus:text-primary [&:not([data-te-input-placeholder-active])]:placeholder:opacity-0"
id="form8" />
<label
for="form8"
class="pointer-events-none absolute left-3 top-0 mb-0 max-w-[90%] origin-[0_0] truncate pt-[0.37rem] leading-[1.6] text-neutral-500 transition-all duration-200 ease-out peer-focus:-translate-y-[0.9rem] peer-focus:scale-[0.8] peer-focus:text-primary peer-data-[te-input-state-active]:-translate-y-[0.9rem] peer-data-[te-input-state-active]:scale-[0.8] motion-reduce:transition-none dark:text-neutral-200 dark:peer-focus:text-primary"
>Select a time</label
>
</div>
// Initialization for ES Users
import {
Datetimepicker,
Input,
initTE,
} from "tw-elements";
initTE({ Input });
const pickerDateOptions = document.querySelector('#datetimepicker-dateOptions');
new Datetimepicker(pickerDateOptions, {
datepicker: { format: 'dd-mm-yyyy'},
});
const pickerDateOptions = document.querySelector('#datetimepicker-dateOptions');
new te.Datetimepicker(pickerDateOptions, {
datepicker: { format: 'dd-mm-yyyy'},
});
Timepicker options
<div
class="relative mb-3"
data-te-input-wrapper-init
id="datetimepicker-timeOptions">
<input
type="text"
class="peer block min-h-[auto] w-full rounded border-0 bg-transparent px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear focus:placeholder:opacity-100 peer-focus:text-primary data-[te-input-state-active]:placeholder:opacity-100 motion-reduce:transition-none dark:text-neutral-200 dark:placeholder:text-neutral-200 dark:peer-focus:text-primary [&:not([data-te-input-placeholder-active])]:placeholder:opacity-0"
id="form9" />
<label
for="form9"
class="pointer-events-none absolute left-3 top-0 mb-0 max-w-[90%] origin-[0_0] truncate pt-[0.37rem] leading-[1.6] text-neutral-500 transition-all duration-200 ease-out peer-focus:-translate-y-[0.9rem] peer-focus:scale-[0.8] peer-focus:text-primary peer-data-[te-input-state-active]:-translate-y-[0.9rem] peer-data-[te-input-state-active]:scale-[0.8] motion-reduce:transition-none dark:text-neutral-200 dark:peer-focus:text-primary"
>Select a time</label
>
</div>
import {
Datetimepicker,
Input,
initTE,
} from "tw-elements";
initTE({ Input });
const pickerTimeOptions = document.querySelector('#datetimepicker-timeOptions');
new Datetimepicker(pickerTimeOptions, {
timepicker: { format24: true },
});
const pickerTimeOptions = document.querySelector('#datetimepicker-timeOptions');
new te.Datetimepicker(pickerTimeOptions, {
timepicker: { format24: true },
});