From 48e5a519b157cb7f11c372d5988b3cab2110a335 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 18 Jun 2014 14:53:17 +0200 Subject: [PATCH] Add tags input directive. --- app/coffee/modules/base/tags.coffee | 50 +++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 app/coffee/modules/base/tags.coffee diff --git a/app/coffee/modules/base/tags.coffee b/app/coffee/modules/base/tags.coffee new file mode 100644 index 00000000..314a2076 --- /dev/null +++ b/app/coffee/modules/base/tags.coffee @@ -0,0 +1,50 @@ +### +# Copyright (C) 2014 Andrey Antukh +# Copyright (C) 2014 Jesús Espino Garcia +# Copyright (C) 2014 David Barragán Merino +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +# File: modules/base/tags.coffee +### + +taiga = @.taiga + +# Directive that parses/format tags inputfield. + +TagsDirective = -> + formatter = (v) -> + if _.isArray(v) + return v.join(", ") + return "" + + parser = (v) -> + return [] if not v + result = _(v.split(",")).map((x) -> _.str.trim(x)) + .map((x) -> x.replace(/\s+/, "-")) + + return result.value() + + link = ($scope, $el, $attrs, $ctrl) -> + $ctrl.$formatters.push(formatter) + $ctrl.$parsers.push(parser) + + return { + require: "ngModel" + link: link + } + + +module = angular.module("taigaBase") +module.directive("tgTags", TagsDirective)