A date and time picker module for SilverStripe v4 which adds flatpickr to
standard SilverStripe DateField
, DatetimeField
and TimeField
instances.
Installation is via Composer:
$ composer require silverware/calendar
Note: forms on the website will automatically make use of the datepicker if the app is using SilverWare. If you are using a vanilla SilverStripe project, you'll need to load the module script and styles in your app bundle (jQuery is required):
silverware/calendar: client/dist/js/bundle.js
silverware/calendar: client/dist/styles/bundle.css
As with all SilverStripe modules, configuration is via YAML. Extensions to LeftAndMain
and
ContentController
are applied via config.yml
.
The module supports a custom highlight color for both the CMS and forms on the website. To define the highlight color, use the following YAML configuration:
# Custom highlight color for CMS:
SilverStripe\Admin\LeftAndMain:
calendar_highlight_color: '#abc'
# Custom highlight color for website forms:
SilverStripe\CMS\Controllers\ContentController:
calendar_highlight_color: '#cba'
SilverStripe will not apply it's own JavaScript to form fields which have a certain datepicker class. To prevent conflicts, use the following configuration to define the class which SilverStripe will detect:
SilverStripe\Forms\FormField:
calendar_datepicker_class: 'hasDatepicker'
If you need to disable the datepicker for all instances of a certain form field, use the following configuration:
# Disable for all date fields:
SilverStripe\Forms\DateField:
calendar_disabled: true
Out of the box, the module will automatically add a flatpickr to
all DateField
, DatetimeField
and TimeField
instances. Each field will
be configured automatically with default settings for each use case.
If you need to apply additional options supported by flatpickr, you
can do so by using the setCalendarConfig()
method:
use SilverStripe\Forms\DateField;
$field = DateField::create('Date', 'Date');
$field->setCalendarConfig([
'minDate' => date('Y-m-d'),
'shorthandCurrentMonth' => true
]);
In addition to accepting an array, the setCalendarConfig()
method also supports
the setting of individual config settings:
$field->setCalendarConfig('weekNumbers', true);
To see a full list of the supported options, please refer to the flatpickr documentation.
If you need to disable the datepicker for a particular field instance,
as opposed to all instances, you may call the setCalendarDisabled()
method
on the field:
$field->setCalendarDisabled(true);
Please use the GitHub issue tracker for bug reports and feature requests.
Your contributions are gladly welcomed to help make this project better. Please see contributing for more information.
- Makes use of flatpickr by Gregory Petrosyan and others.
Colin Tucker | Praxis Interactive |
BSD-3-Clause © Praxis Interactive