(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("jquery"), require("angular"), require("jquery-ui/datepicker")); else if(typeof define === 'function' && define.amd) define(["jquery", "angular", "jquery-ui/datepicker"], factory); else if(typeof exports === 'object') exports["angularUiDate"] = factory(require("jquery"), require("angular"), require("jquery-ui/datepicker")); else root["angularUiDate"] = factory(root["jQuery"], root["angular"], root["jquery-ui/datepicker"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "assets"; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _jquery = __webpack_require__(1); var _jquery2 = _interopRequireDefault(_jquery); var _angular = __webpack_require__(2); var _angular2 = _interopRequireDefault(_angular); var _datepicker = __webpack_require__(3); var _datepicker2 = _interopRequireDefault(_datepicker); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // sets up jQuery with the datepicker plugin exports.default = _angular2.default.module('ui.date', []).constant('uiDateConfig', {}).constant('uiDateFormatConfig', '').factory('uiDateConverter', ['uiDateFormatConfig', function (uiDateFormatConfig) { return { stringToDate: stringToDate, dateToString: dateToString }; function dateToString(dateFormat, value) { dateFormat = dateFormat || uiDateFormatConfig; if (value) { if (dateFormat) { try { return _jquery2.default.datepicker.formatDate(dateFormat, value); } catch (formatException) { return undefined; } } if (value.toISOString) { return value.toISOString(); } } return null; } function stringToDate(dateFormat, valueToParse) { dateFormat = dateFormat || uiDateFormatConfig; if (_angular2.default.isDate(valueToParse) && !isNaN(valueToParse)) { return valueToParse; } if (_angular2.default.isString(valueToParse)) { if (dateFormat) { return _jquery2.default.datepicker.parseDate(dateFormat, valueToParse); } var isoDate = new Date(valueToParse); return isNaN(isoDate.getTime()) ? null : isoDate; } if (_angular2.default.isNumber(valueToParse)) { // presumably timestamp to date object return new Date(valueToParse); } return null; } }]).directive('uiDate', ['uiDateConfig', 'uiDateConverter', function uiDateDirective(uiDateConfig, uiDateConverter) { return { require: '?ngModel', link: function link(scope, element, attrs, controller) { var $element = (0, _jquery2.default)(element); var getOptions = function getOptions() { return _angular2.default.extend({}, uiDateConfig, scope.$eval(attrs.uiDate)); }; var initDateWidget = function initDateWidget() { var showing = false; var opts = getOptions(); function setVal() { var keys = ['Hours', 'Minutes', 'Seconds', 'Milliseconds']; var isDate = _angular2.default.isDate(controller.$modelValue); var preserve = {}; if (isDate && controller.$modelValue.toDateString() === $element.datepicker('getDate').toDateString()) { return; } if (isDate) { _angular2.default.forEach(keys, function (key) { preserve[key] = controller.$modelValue['get' + key](); }); } var newViewValue = $element.datepicker('getDate'); if (isDate) { _angular2.default.forEach(keys, function (key) { newViewValue['set' + key](preserve[key]); }); } controller.$setViewValue(newViewValue); } // If we have a controller (i.e. ngModelController) then wire it up if (controller) { // Set the view value in a $apply block when users selects // (calling directive user's function too if provided) var _onSelect = opts.onSelect || _angular2.default.noop; opts.onSelect = function (value, picker) { scope.$apply(function () { showing = true; setVal(); _onSelect(value, picker); $element.blur(); }); }; var _beforeShow = opts.beforeShow || _angular2.default.noop; opts.beforeShow = function (input, picker) { showing = true; _beforeShow(input, picker); }; var _onClose = opts.onClose || _angular2.default.noop; opts.onClose = function (value, picker) { showing = false; _onClose(value, picker); }; $element.off('blur.datepicker').on('blur.datepicker', function () { if (!showing) { scope.$apply(function () { $element.datepicker('setDate', $element.datepicker('getDate')); setVal(); }); } }); controller.$validators.uiDateValidator = function uiDateValidator(modelValue, viewValue) { return _angular2.default.isDate(uiDateConverter.stringToDate(attrs.uiDateFormat, viewValue)); }; controller.$parsers.push(function uiDateParser(valueToParse) { return uiDateConverter.stringToDate(attrs.uiDateFormat, valueToParse); }); // Update the date picker when the model changes controller.$render = function () { $element.datepicker('setDate', controller.$modelValue); }; } // Check if the $element already has a datepicker. // if ($element.data('datepicker')) { // Updates the datepicker options $element.datepicker('option', opts); $element.datepicker('refresh'); } else { // Creates the new datepicker widget $element.datepicker(opts); // Cleanup on destroy, prevent memory leaking $element.on('$destroy', function () { $element.datepicker('hide'); $element.datepicker('destroy'); }); } if (controller) { // Force a render to override whatever is in the input text box controller.$render(); } }; // Watch for changes to the directives options scope.$watch(getOptions, initDateWidget, true); } }; }]).directive('uiDateFormat', ['uiDateConverter', function (uiDateConverter) { return { require: 'ngModel', link: function link(scope, element, attrs, modelCtrl) { var dateFormat = attrs.uiDateFormat; // Use the datepicker with the attribute value as the dateFormat string to convert to and from a string modelCtrl.$formatters.unshift(function (value) { return uiDateConverter.stringToDate(dateFormat, value); }); modelCtrl.$parsers.push(function (value) { return uiDateConverter.dateToString(dateFormat, value); }); } }; }]); /***/ }, /* 1 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_1__; /***/ }, /* 2 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_2__; /***/ }, /* 3 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_3__; /***/ } /******/ ]) }); ; //# sourceMappingURL=date.js.map