/* * @ngdoc fbFormTextarea * @name fasit.directives.#fbFormTextarea * @fbFormTextarea * * @description * Directive som skapar en div med class-namnet "form-group" och en label med tillhörande textarea under den. */ fbDeprecatedFile('fbFormTextarea'); angular.module('fasit') .directive('fbFormTextarea', ['logService', 'fbFormService', '$timeout', function (logService: fb.ILogService, fbFormService: fb.IFbFormService, $timeout: ng.ITimeoutService) { 'use strict'; var compile, link, removeLabel; link = function (scope: fb.IFbFormTextareaScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes) { fbDeprecated('fbFormTextarea'); fbFormService.functions.preLink(scope, element, attrs); // IE10 stödjer inte pointer events i css-en så vi måste skicka vidare klicket manuellt. Ta bort detta då IE10 inte längre ska stödjas. element.bind('click', function() { element.find('textarea')[0].focus(); }); if (attrs['autofocus']) { $timeout(function () { element.find('textarea')[0].focus(); },0,true); } fbFormService.functions.postLink(scope, element, attrs); }; compile = function (element: fb.IRootElementService, attrs: any) { fbFormService.functions.preCompile(element, attrs); /* istanbul ignore next */ if (!attrs.name) { attrs.name = attrs.model; attrs.name = attrs.name.replace(/ /g, '-').toLowerCase(); } if (!attrs.label) { attrs.label = attrs.name; } if (angular.isDefined(attrs.required)) { angular.element(element).find('textarea').attr('required', "true"); } if (angular.isDefined(attrs.autofocus)) { angular.element(element).find('textarea').attr('autofocus', "true"); } if (angular.isDefined(attrs.maxlength)) { angular.element(element).find('textarea').attr('maxlength', attrs.maxlength); } if (angular.isDefined(attrs.readonly)) { angular.element(element).find('textarea').attr('readonly', "true"); } if (angular.isDefined(attrs.rows)) { angular.element(element).find('textarea').attr('rows', attrs.rows); } if (angular.isDefined(attrs.spellcheck)) { angular.element(element).find('textarea').attr('spellcheck', "true"); } if (angular.isDefined(attrs.wrap)) { angular.element(element).find('textarea').attr('wrap', attrs.wrap); } if (angular.isDefined(attrs.noLabel)) { attrs.noLabel = "true"; } if (angular.isDefined(attrs.largeLabel)) { element.find('.form-group').addClass('large-label'); } if (angular.isDefined(attrs.elastic)){ angular.element(element).find('textarea').attr('fb-elastic', ''); } fbFormService.functions.postCompile(element, attrs); return link; }; return { restrict: 'E', scope: fbFormService.getScopeObject({ label: '@', name: '@', placeholder: '@', required: '@', autofocus: '@', disable: '=?', maxlength: '@', rows: '@', spellcheck: '@', wrap: '@', noLabel: '@', adaptiveLabel: '@', tight: '@' }), compile: compile, templateUrl: 'app/Directives/fbFormTextarea/fbFormTextarea.html' }; }]);