Advertisement
leomaster

ng bootstrap datetimepicker

Jun 19th, 2017
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function() {
  2.   angular
  3.     .module('ng.bootstrap.datetimepicker', [])
  4.     .directive('datetimepicker', [
  5.       '$timeout',
  6.       function($timeout) {
  7.         return {
  8.           restrict: 'EA',
  9.           require: 'ngModel',
  10.           scope: {
  11.             options: '<?',
  12.             onChange: '&?',
  13.             onClick: '&?',
  14.             ngModel: '='
  15.           },
  16.           link: function(scope, element, attrs, ctrl) {
  17.  
  18.             element.datetimepicker(Object
  19.               .entries(scope.options)
  20.               .filter(([key, value]) =>
  21.                 !['modelFormat', 'silentInit']
  22.                 .includes(key))
  23.               .reduce((wrap, pair) =>
  24.                 ({
  25.                   ...wrap,
  26.                   ...{
  27.                     [pair[+[]]]: pair[-~[]]
  28.                   }
  29.                 }), {}));
  30.  
  31.             ctrl.$render = () =>
  32.               element.data('DateTimePicker')
  33.               .date(moment(Date.parse(ctrl.$viewValue)));
  34.  
  35.             [
  36.               ['click', () =>
  37.                 ['function'].includes(typeof scope.onClick) &&
  38.                   $timeout(() => scope.onClick())
  39.               ],
  40.               ['dp.change', (
  41.                 (event) =>
  42.                   event.date &&
  43.                     ctrl.$setViewValue(moment(new Date(event.date))
  44.                       .format(scope.options.modelFormat)) &&
  45.                   event.oldDate &&
  46.                     ['function'].includes(typeof scope.onChange()) &&
  47.                       $scope.onChange()
  48.               )]
  49.             ].map(([key, value]) => element.on(key, value));
  50.           }
  51.         };
  52.       }
  53.     ]);
  54. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement