Angular Moment Picker is a native AngularJS directive for date and time picker that uses Moment.js and does not require jQuery. It is awesome date, time and range picker for angular which you can use in your angular project with lot’s of customization options.
Installation
Get Angular Moment Picker from npm, bower or git:
npm install angular-moment-picker
bower install moment-picker
git clone https://github.com/indrimuska/angular-moment-picker.git
Include style and script in your page:
Add moment-picker dependency to your module:
var myApp = angular.module('myApp', ['moment-picker']);
Provide the attribute to your element:
{{ myDate }}
The views
Additional themes
Angular Moment Picker provides the following additional themes. Each theme has a dedicate stylesheet to be included in the application the overrides the default style.
A preview of the each theme is available here.
Options
To configure Angular Moment Picker you have to add to your element or your input the attribute relative to the options you want to set.
Mon anniversaire est le {{ ctrl.birthday }}
Property | Default | Description | Sample |
---|---|---|---|
moment-picker | Two-way bindable property as formatted datetime string. | Plunker | |
ng-model | Two-way bindable property as Moment.js object. | Plunker | |
locale | "en" |
Locale code. 1 | Plunker |
format | "L LTS" |
Format of the output value and min/max date. 1 | Plunker |
min-view | "decade" |
Minimum navigable view. | Plunker |
max-view | "minute" |
Maximum navigable view. | Plunker |
start-view | "year" |
Initial view when the picker is open. | Plunker |
min-date | Two-way bindable property representing the minimum selectable date (as String in the same format of the value, or as a Moment.js object). | Plunker | |
max-date | Two-way bindable property representing the maximum selectable date (as String in the same format of the value, or as a Moment.js object). | Plunker | |
start-date | Two-way bindable property representing the initial date to be shown in picker (as String in the same format of the value, or as a Moment.js object). | Plunker | |
disable | false |
Disables the picker if truly. | Plunker |
position | Sets a fixed position for the picker. Available values are "top left" , "top right" , "bottom left" , "bottom right" . |
Plunker | |
inline | false |
Views the picker inline. | Plunker |
validate | true |
Forces picker value between the range minDate and maxDate . |
Plunker |
autoclose | true |
Closes the picker after selecting a date. | Plunker |
set-on-select | false |
Updates picker model after selecting a date in each view. | Plunker |
is-open | Open/closes the picker when set to true or false . |
Plunker | |
today | false |
Highlights the current day. | Plunker |
keyboard | false |
Allows using the keyboard to navigate the picker. | Plunker |
show-header | true |
Shows the header in the view. | Plunker |
additions | { top: undefined, bottom: undefined } |
Template url for custom contents above and below each picker views (inside the dialog). | Plunker |
Methods
Append your method to your element and define its behavior in the controller.
Next exhibition is on {{ ctrl.exhibition }}.
ctrl.isSelectable = function (date, type) {
// disable all Sundays in the Month View
return type != 'day' || date.format('dddd') != 'Sunday';
};
Method | Parameters | Description | Sample |
---|---|---|---|
selectable | date , type |
Return true if the given date can be selected in the current view. Please note that this method is called for every date in the view, every time a view is rendered, so be careful, it may affect performances. |
Plunker |
Events
As for methods, to bind an event you only need to attach the right property to your picker.
The meeting starts at {{ ctrl.meeting }}.
ctrl.onChange = function (newValue, oldValue) {
$log.log('Meeting changed from ' + oldValue + ' to ' + newValue);
};
Event | Parameters | Description | Sample |
---|---|---|---|
change | newValue , oldValue |
Function fired upon change in picker value. | Plunker |
momentPickerProvider
Angular Moment Picker comes out with its own provider, in order to define your own configuration for all the pickers in your app.
angular
.module('myApp', ['moment-picker'])
.config(['momentPickerProvider', function (momentPickerProvider) {
momentPickerProvider.options({
/* ... */
});
}]);
Property | Default | Description |
---|---|---|
locale | "en" |
Locale code. 1 |
format | "L LTS" |
Format of the output value and min/max date. 1 |
min-view | "decade" |
Minimum navigable view. |
max-view | "minute" |
Maximum navigable view. |
start-view | "year" |
Initial view after picker opening. |
position | Sets a fixed position for the picker. Available values are "top left" , "top right" , "bottom left" , "bottom right" . |
|
inline | false |
Views the picker inline. |
validate | true |
Forces picker value between the range minDate and maxDate . |
autoclose | true |
Closes the picker after selecting a date. |
set-on-select | false |
Updates picker model after selecting a date in each view. |
today | false |
Highlights the current day. |
keyboard | false |
Allows using the keyboard to navigate the picker. |
show-header | true |
Shows the header in the view. |
left-arrow | "←" |
Left arrow string (HTML allowed). |
right-arrow | "→" |
Right arrow string (HTML allowed). |
additions | { top: undefined, bottom: undefined } |
Template url for custom contents above and below each picker views (inside the dialog). |
years-format | "YYYY" |
Years format in decade view. |
months-format | "MMM" |
Months format in year view. |
days-format | "D" |
Days format in month view. |
hours-format | "HH:[00]" |
Hours format in day view. |
hours-start | 0 |
First rendered hour in day view (24h format). |
hours-end | 23 |
Last rendered hour in day view (24h format). |
minutes-format | 2 | Minutes format in hour view. |
minutes-step | 5 |
Step between each visible minute in hour view. |
minutes-start | 0 |
First rendered minute in hour view. |
minutes-end | 59 |
Last rendered minute in hour view. |
seconds-format | "ss" |
Seconds format in minute view. |
seconds-step | 1 |
Step between each visible second in minute view. |
seconds-start | 0 |
First rendered second in minute view. |
seconds-end | 59 |
Last rendered second in minute view. |
See live demo and download source code.
This awesome script developed by indrimuska. Visit their official repository for more information and follow for future updates.