dist/scripts/script.min.js
function DateTimePicker($mdUtil, $mdMedia, $document, picker) {
    return {
        restrict: 'E',
        require: ['^ngModel', 'smDateTimePicker'],
        scope: {
            weekStartDay: '@',
            startView: '@',
            mode: '@',
            format: '@',
            minDate: '@',
            maxDate: '@',
            fname: '@',
            label: '@',
            isRequired: '@',
            disable: '=',
            noFloatingLabel: '=',
            disableYearSelection: '@',
            closeOnSelect: '@',
            onDateSelectedCall: '&'
        },
        controller: ['$scope', '$element', '$mdUtil', '$mdMedia', '$document','$parse', SMDateTimePickerCtrl],
        controllerAs: 'vm',
        bindToController:true,
        template: function (element, attributes){
            var inputType = '';
            if(attributes.hasOwnProperty('onFocus')) {
                inputType = '<input name="{{vm.fname}}" ng-model="vm.value" '
                            + 'type="text" placeholder="{{vm.label}}"'
                            + ' aria-label="{{vm.fname}}" ng-focus="vm.show()" data-ng-required="vm.isRequired"  ng-disabled="vm.disable"'
                            + ' server-error class="sm-input-container" />' ;
            } else {
                inputType = 
                    '<input class="" name="{{vm.fname}}" ng-model="vm.value" '
                    + '             type="text" placeholder="{{vm.label}}" '
                    + '             aria-label="{{vm.fname}}" aria-hidden="true" data-ng-required="vm.isRequired" ng-disabled="vm.disable"/>'
                    + '     <md-button tabindex="-1" class="sm-picker-icon md-icon-button" aria-label="showCalender" ng-disabled="vm.disable" aria-hidden="true" type="button" ng-click="vm.show()">'
                    + '         <svg  fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10l5 5 5-5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>'
                    + '     </md-button>' ;
            }

            return '<md-input-container class="sm-input-container md-icon-float md-block" md-no-float="vm.noFloatingLabel">' +
                    inputType +
                    '     <div id="picker" class="sm-calender-pane md-whiteframe-z2">' +
                    '          <sm-date-picker ' +
                    '              id="{{vm.fname}}Picker" ' +
                    '              initial-date="vm.initialDate"' +
                    '              ng-model="vm.value"' +
                    '              mode="{{vm.mode || \'date\'}}" ' +
                    '              disable-year-selection={{vm.disableYearSelection}}' +
                    '              close-on-select="{{vm.closeOnSelect}}"' +
                    '              start-view="{{vm.startView}}" ' +
                    '              data-min-date="vm.minDate" ' +
                    '              data-max-date="vm.maxDate"  ' +
                    '              data-format="{{vm.format}}"  ' +
                    '              data-on-select-call="vm.onDateSelected(date)"' +
                    '              data-week-start-day="{{vm.weekStartDay}}" > ' +
                    '         </sm-date-picker>' +
                    '     </div>' +
                    '     <div></div>'
                    ' </md-input-container>';
        },
        link: function(scope, $element, attr, ctrl) {
            var ngModelCtrl = ctrl[0];
            var pickerCtrl = ctrl[1];
            pickerCtrl.configureNgModel(ngModelCtrl);
        }
    }
}
function DateTimePicker($mdUtil, $mdMedia, $document, picker) {
    return {
        restrict: 'E',
        require: ['^ngModel', 'smDateTimePicker'],
        scope: {
            weekStartDay: '@',
            startView: '@',
            mode: '@',
            format: '@',
            minDate: '@',
            maxDate: '@',
            fname: '@',
            label: '@',
            isRequired: '@',
            disable: '=',
            noFloatingLabel: '=',
            disableYearSelection: '@',
            closeOnSelect: '@',
            onDateSelectedCall: '&'
        },
        controller: ['$scope', '$element', '$mdUtil', '$mdMedia', '$document','$parse', SMDateTimePickerCtrl],
        controllerAs: 'vm',
        bindToController:true,
        template: function (element, attributes){
            var inputType = '';
            if(attributes.hasOwnProperty('onFocus')) {
                inputType = '<input name="{{vm.fname}}" ng-model="vm.value" '
                            + 'type="text" placeholder="{{vm.label}}"'
                            + ' aria-label="{{vm.fname}}" ng-focus="vm.show()" data-ng-required="vm.isRequired"  ng-disabled="vm.disable"'
                            + ' server-error class="sm-input-container" />' ;
            } else {
                inputType = 
                    '<input class="" name="{{vm.fname}}" ng-model="vm.value" '
                    + '             type="text" placeholder="{{vm.label}}" '
                    + '             aria-label="{{vm.fname}}" aria-hidden="true" data-ng-required="vm.isRequired" ng-disabled="vm.disable"/>'
                    + '     <md-button tabindex="-1" class="sm-picker-icon md-icon-button" aria-label="showCalender" ng-disabled="vm.disable" aria-hidden="true" type="button" ng-click="vm.show()">'
                    + '         <svg  fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10l5 5 5-5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>'
                    + '     </md-button>' ;
            }

            return '<md-input-container class="sm-input-container md-icon-float md-block" md-no-float="vm.noFloatingLabel">' +
                    inputType +
                    '     <div id="picker" class="sm-calender-pane md-whiteframe-z2">' +
                    '          <sm-date-picker ' +
                    '              id="{{vm.fname}}Picker" ' +
                    '              initial-date="vm.initialDate"' +
                    '              ng-model="vm.value"' +
                    '              mode="{{vm.mode || \'date\'}}" ' +
                    '              disable-year-selection={{vm.disableYearSelection}}' +
                    '              close-on-select="{{vm.closeOnSelect}}"' +
                    '              start-view="{{vm.startView}}" ' +
                    '              data-min-date="vm.minDate" ' +
                    '              data-max-date="vm.maxDate"  ' +
                    '              data-format="{{vm.format}}"  ' +
                    '              data-on-select-call="vm.onDateSelected(date)"' +
                    '              data-week-start-day="{{vm.weekStartDay}}" > ' +
                    '         </sm-date-picker>' +
                    '     </div>' +
                    '     <div></div>'
                    ' </md-input-container>';
        },
        link: function(scope, $element, attr, ctrl) {
            var ngModelCtrl = ctrl[0];
            var pickerCtrl = ctrl[1];
            pickerCtrl.configureNgModel(ngModelCtrl);
        }
    }
}
function DateTimePicker ( $mdUtil , $mdMedia , $document , picker ) { return { restrict : 'E' , require : [ '^ngModel' , 'smDateTimePicker' ] , scope : { weekStartDay : '@' , startView : '@' , mode : '@' , format : '@' , minDate : '@' , maxDate : '@' , fname : '@' , label : '@' , isRequired : '@' , disable : '=' , noFloatingLabel : '=' , disableYearSelection : '@' , closeOnSelect : '@' , onDateSelectedCall : '&' } , controller : [ '$scope' , '$element' , '$mdUtil' , '$mdMedia' , '$document' , '$parse' , SMDateTimePickerCtrl ] , controllerAs : 'vm' , bindToController : true , template : function ( element , attributes ) { var inputType = '' ; if ( attributes . hasOwnProperty ( 'onFocus' ) ) { inputType = '<input name="{{vm.fname}}" ng-model="vm.value" ' + 'type="text" placeholder="{{vm.label}}"' + ' aria-label="{{vm.fname}}" ng-focus="vm.show()" data-ng-required="vm.isRequired"  ng-disabled="vm.disable"' + ' server-error class="sm-input-container" />' ; } else { inputType = '<input class="" name="{{vm.fname}}" ng-model="vm.value" ' + '             type="text" placeholder="{{vm.label}}" ' + '             aria-label="{{vm.fname}}" aria-hidden="true" data-ng-required="vm.isRequired" ng-disabled="vm.disable"/>' + '     <md-button tabindex="-1" class="sm-picker-icon md-icon-button" aria-label="showCalender" ng-disabled="vm.disable" aria-hidden="true" type="button" ng-click="vm.show()">' + '         <svg  fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10l5 5 5-5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>' + '     </md-button>' ; } return '<md-input-container class="sm-input-container md-icon-float md-block" md-no-float="vm.noFloatingLabel">' + inputType + '     <div id="picker" class="sm-calender-pane md-whiteframe-z2">' + '          <sm-date-picker ' + '              id="{{vm.fname}}Picker" ' + '              initial-date="vm.initialDate"' + '              ng-model="vm.value"' + '              mode="{{vm.mode || \'date\'}}" ' + '              disable-year-selection={{vm.disableYearSelection}}' + '              close-on-select="{{vm.closeOnSelect}}"' + '              start-view="{{vm.startView}}" ' + '              data-min-date="vm.minDate" ' + '              data-max-date="vm.maxDate"  ' + '              data-format="{{vm.format}}"  ' + '              data-on-select-call="vm.onDateSelected(date)"' + '              data-week-start-day="{{vm.weekStartDay}}" > ' + '         </sm-date-picker>' + '     </div>' + '     <div></div>' ' </md-input-container>' ; } , link : function ( scope , $element , attr , ctrl ) { var ngModelCtrl = ctrl [ 0 ] ; var pickerCtrl = ctrl [ 1 ] ; pickerCtrl . configureNgModel ( ngModelCtrl ) ; } } }
/* global moment
/ * global moment