The Input Component can be used for all kinds of input, like texts, emails, passwords and dates. The type
attribute defaults to text
.
<x-splade-form :default="$user">
<x-splade-input name="username" />
<x-splade-input name="job_title" label="Your Job Title" />
<x-splade-input name="email" type="email" placeholder="Your Email Address" />
</x-splade-form>
The Flatpickr integration comes with a default stylesheet which you should import into the main JavaScript file. If you've used the automatic installer, it has already done this for you.
import "@protonemedia/laravel-splade/dist/style.css";
import { renderSpladeApp, SpladePlugin } from "@protonemedia/laravel-splade";
To enable the date picker, add the date
attribute to the Input component. You don't have to set the type
attribute to date
.
<x-splade-input name="published_at" date />
To enable the time picker, add the time
attribute to the Input component.
<x-splade-input name="scheduled_at" time />
If you want a date + time picker, add both attributes.
<x-splade-input name="scheduled_at" date time />
If you want to select a date range, add the range
attribute.
<x-splade-input name="scheduled_period" date range />
You can instantiate Flatpickr with a custom set of options by passing a JavaScript object to either the date
or time
attribute. To pass a PHP array, you may use the :date
or :time
attribute (note the colon).
<x-splade-input name="published_at" date="{ showMonths: 2 }" />
<x-splade-input name="published_at" :date="['showMonths' => 2]" />
<x-splade-input name="scheduled_at" time="{ time_24hr: false }" />
<x-splade-input name="scheduled_at" :time="['time_24hr' => false]" />
You may set the default formatting by using static methods on the Input
class, for example, in the AppServiceProvider
class:
use ProtoneMedia\Splade\Components\Form\Input;
Input::defaultDateFormat('d-m-Y H:i');
Input::defaultTimeFormat('H:i');
Input::defaultDatetimeFormat('d-m-Y H:i');
If you want to use Flatpickr for every input element by default, you may use the static defaultFlatpickr
method:
Input::defaultFlatpickr();
You may even pass an array with default options to the method:
Input::defaultFlatpickr([
'showMonths' => 2
]);
Flatpickr uses a Stylus stylesheet to style the library. Our stylesheet extends the vendor stylesheet (of Flatpickr) and adds some Tailwind-specific tweaks. Make sure your bundler handles Stylus stylesheets correctly, for example, by installing stylus
. The splade:publish-form-stylesheets
Artisan command copies the stylesheet to the resources
directory of your app.
npm install stylus -D
php artisan splade:publish-form-stylesheets
Then import the stylesheet in your main JavaScript file (instead of the default @protonemedia/laravel-splade/dist/style.css
stylesheet):
import "../css/flatpickr.styl"
In a future Splade release, we'll work on migrating the Stylus stylesheet to a more Tailwind-friendly preprocessor (or plain CSS).