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);
        }
    }
}
/* global moment