Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/angular-ui/ui-date
jQuery UI Datepicker for AngularJS
https://github.com/angular-ui/ui-date
Last synced: 7 days ago
JSON representation
jQuery UI Datepicker for AngularJS
- Host: GitHub
- URL: https://github.com/angular-ui/ui-date
- Owner: angular-ui
- License: mit
- Archived: true
- Created: 2013-02-25T22:38:31.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2017-04-26T18:11:16.000Z (over 7 years ago)
- Last Synced: 2024-10-07T23:49:24.225Z (about 1 month ago)
- Language: JavaScript
- Homepage: http://angular-ui.github.io/ui-date/
- Size: 2.4 MB
- Stars: 266
- Watchers: 37
- Forks: 207
- Open Issues: 34
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# ui-date directive [![Build Status](https://travis-ci.org/angular-ui/ui-date.svg)](https://travis-ci.org/angular-ui/ui-date)
This directive allows you to add a date-picker to your form elements.
# Alternatives
We recommend using the excellent [ui-bootstrap](https://angular-ui.github.io/bootstrap/) date-picker which is maintained by a larger team.
WARNING: Support for this module may eventually be phased out as angular 2.0 arrives as there are no plans to move this to angular 2 at this time.
# Requirements
- JQuery
- JQueryUI
- AngularJS# Bower Usage
You may use [bower](http://bower.io/) for dependency management but would recommend using webpack or browserify for modules.
Install and save to bower.json by running:
bower install angular-ui-date --save
This will copy the ui-date files into your `bower_components` folder, along with its dependencies.
Add the css:
```html
```
Load the script files in your application:
```html
```
Add the date module as a dependency to your application module:
```js
angular.module('MyApp', ['ui.date'])
```Apply the directive to your form elements:
```html
```
## Options
All the [jQueryUI DatePicker options](http://api.jqueryui.com/datepicker/) can be passed through the directive including minDate, maxDate, yearRange etc.
```js
myAppModule.controller('MyController', function($scope) {
$scope.dateOptions = {
changeYear: true,
changeMonth: true,
yearRange: '1900:-0',
};
});
```then pass through your options:
```html
```## Static Inline Picker
If you want a static picker then simply apply the directive to a div rather than an input element.
```html
```## Working with ng-model
The ui-date directive plays nicely with ng-model and validation directives such as ng-required.
If you add the ng-model directive to same the element as ui-date then the picked date is automatically synchronized with the model value.
_The ui-date directive stores and expects the model value to be a standard javascript Date object._
## ui-date-format directive
The ui-date directive only works with Date objects.
If you want to pass date strings to and from the date directive via ng-model then you must use the ui-date-format directive.
This directive specifies the format of the date string that will be expected in the ng-model.
The format string syntax is that defined by the JQueryUI Date picker. For example```html
```
Now you can set myDate in the controller.
```js
$scope.myDate = "Thursday, 11 October, 2012";
```## ng-required directive
If you apply the required directive to element then the form element is invalid until a date is picked.
Note: Remember that the ng-required directive must be explictly set, i.e. to "true". This is especially true on divs:
```html
```## focusing the next element for tabbing
There is a problem with IE that re-opens the datepicker on focus(). However, this breaks tabbing. If tabbing is more
important than IE for your use cases, pass in the onClose option.```javascript
myAppModule.controller('MyController', function($scope) {
$scope.dateOptions = {
onClose: (value, picker, $element) => {
$element.focus()
}
};
});
```## Usage with webpack
Install with npm:
npm install --save-dev jquery jquery-ui angular angular-ui-date
Use in your app:
```javascript
import angular from 'angular';
import uiDate from 'angular-ui-date';require('jquery-ui/themes/base/minified/jquery-ui.min.css');
angular.module('MyTest', [uiDate.name])
.controller('MyCtrl', ['$scope', function($scope) {
$scope.myDate = new Date('2015-11-17');
}]);
```It is also good to ensure that jQuery is available so that angular and jquery ui can attach to it.
```javascript
webpack: {
plugins: [
new webpack.ProvidePlugin({
'window.jQuery': 'jquery',
}),
]
}
```another method of making jQuery recognized is to use the webpack expose-loader to expose it both as $ and jQuery
```javascript
webpack: {
module: {
loaders: [
// it helps angular to have jQuery exposed so that it uses $ instead of jqLite
{
test: require.resolve('jquery'),
loader: 'expose?$!expose?jQuery',
},
]
}
}
```
## Need help?
Need help using UI date?* Ask a question in [StackOverflow](http://stackoverflow.com/) under the [angular-ui-date](http://stackoverflow.com/questions/tagged/angular-ui-date) tag.
**Please do not create new issues in this repository to ask questions about using UI date**
## Found a bug?
Please take a look at [CONTRIBUTING.md](CONTRIBUTING.md#you-think-youve-found-a-bug).# Contributing to the project
We are always looking for the quality contributions! Please check the [CONTRIBUTING.md](CONTRIBUTING.md) for the contribution guidelines.