diff --git a/app/coffee/modules/admin/memberships.coffee b/app/coffee/modules/admin/memberships.coffee
index 4a1da796..e0404170 100644
--- a/app/coffee/modules/admin/memberships.coffee
+++ b/app/coffee/modules/admin/memberships.coffee
@@ -240,7 +240,7 @@ module.directive("tgMemberships", ["$tgTemplate", "$compile", MembershipsDirecti
## Member Avatar Directive
#############################################################################
-MembershipsRowAvatarDirective = ($log, $template, $translate) ->
+MembershipsRowAvatarDirective = ($log, $template, $translate, $compile) ->
template = $template.get("admin/memberships-row-avatar.html", true)
link = ($scope, $el, $attrs) ->
@@ -255,6 +255,8 @@ MembershipsRowAvatarDirective = ($log, $template, $translate) ->
}
html = template(ctx)
+ html = $compile(html)($scope)
+
$el.html(html)
if not $attrs.tgMembershipsRowAvatar?
@@ -269,7 +271,7 @@ MembershipsRowAvatarDirective = ($log, $template, $translate) ->
return {link: link}
-module.directive("tgMembershipsRowAvatar", ["$log", "$tgTemplate", '$translate', MembershipsRowAvatarDirective])
+module.directive("tgMembershipsRowAvatar", ["$log", "$tgTemplate", '$translate', "$compile", MembershipsRowAvatarDirective])
#############################################################################
@@ -393,9 +395,7 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $transla
-
+
'
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2')
@@ -222,6 +228,7 @@ patch = (oldImmutable, newImmutable) ->
return pathObj
taiga = @.taiga
+taiga.addClass = addClass
taiga.nl2br = nl2br
taiga.bindMethods = bindMethods
taiga.bindOnce = bindOnce
diff --git a/app/locales/taiga/locale-en.json b/app/locales/taiga/locale-en.json
index d2650ab2..dd95fec7 100644
--- a/app/locales/taiga/locale-en.json
+++ b/app/locales/taiga/locale-en.json
@@ -1413,6 +1413,7 @@
"PLACEHOLDER_PAGE": "Write your wiki page",
"REMOVE": "Remove this wiki page",
"DELETE_LIGHTBOX_TITLE": "Delete Wiki Page",
+ "DELETE_LINK_TITLE": "Delete Wiki link",
"NAVIGATION": {
"SECTION_NAME": "Links",
"ACTION_ADD_LINK": "Add link"
diff --git a/app/modules/attachments/attachment-list.scss b/app/modules/attachments/attachment-list.scss
index df533f2b..7d1b66ae 100644
--- a/app/modules/attachments/attachment-list.scss
+++ b/app/modules/attachments/attachment-list.scss
@@ -51,10 +51,12 @@
opacity: 0;
}
.editable-settings {
+ display: block;
opacity: 1;
}
svg {
fill: $gray-light;
+ pointer-events: none;
}
.icon-edit,
.icon-save {
diff --git a/app/modules/components/attachment/attachment-gallery.jade b/app/modules/components/attachment/attachment-gallery.jade
index b6c560a1..eda74610 100644
--- a/app/modules/components/attachment/attachment-gallery.jade
+++ b/app/modules/components/attachment/attachment-gallery.jade
@@ -34,5 +34,4 @@
title="{{'COMMON.DELETE' | translate}}"
ng-click="vm.delete()"
)
- svg.icon.icon-trash
- use(xlink:href="#icon-trash")
+ tg-svg(svg-icon="icon-trash")
diff --git a/app/modules/components/attachment/attachment.jade b/app/modules/components/attachment/attachment.jade
index b0207960..16c99d8f 100644
--- a/app/modules/components/attachment/attachment.jade
+++ b/app/modules/components/attachment/attachment.jade
@@ -12,8 +12,7 @@ form.single-attachment(
target="_blank"
download="{{::vm.attachment.getIn(['file', 'name'])}}"
)
- svg.icon.icon-attachment
- use(xlink:href="#icon-attachment")
+ tg-svg(svg-icon="icon-attachment")
span {{::vm.attachment.getIn(['file', 'name'])}}
.attachment-comments(ng-if="!vm.attachment.get('editable') && vm.attachment.getIn(['file', 'description'])")
@@ -52,8 +51,7 @@ form.single-attachment(
title="{{'COMMON.SAVE' | translate}}"
ng-click="vm.save()"
)
- svg.drag.icon.icon-save
- use(xlink:href="#icon-save")
+ tg-svg(svg-icon="icon-save")
div
a.editable-settings(
@@ -61,8 +59,7 @@ form.single-attachment(
title="{{'COMMON.CANCEL' | translate}}"
ng-click="vm.editMode(false)"
)
- svg.drag.icon.icon-close
- use(xlink:href="#icon-close")
+ tg-svg(svg-icon="icon-close")
.attachment-settings(
ng-if="!vm.attachment.get('editable')"
@@ -73,18 +70,15 @@ form.single-attachment(
title="{{'COMMON.EDIT' | translate}}"
ng-click="vm.editMode(true)"
)
- svg.drag.icon.icon-edit
- use(xlink:href="#icon-edit")
+ tg-svg.drag(svg-icon="icon-edit")
a.settings(
href=""
title="{{'COMMON.DELETE' | translate}}"
ng-click="vm.delete()"
)
- svg.drag.icon.icon-trash
- use(xlink:href="#icon-trash")
+ tg-svg.drag(svg-icon="icon-trash")
a.settings(
href=""
title="{{'COMMON.DRAG' | translate}}"
)
- svg.drag.icon.icon-drag
- use(xlink:href="#icon-drag")
+ tg-svg.drag(svg-icon="icon-drag")
diff --git a/app/modules/components/attachments-full/attachments-full.jade b/app/modules/components/attachments-full/attachments-full.jade
index 1e4e58aa..d441def1 100644
--- a/app/modules/components/attachments-full/attachments-full.jade
+++ b/app/modules/components/attachments-full/attachments-full.jade
@@ -11,24 +11,21 @@ section.attachments(
ng-click="vm.setMode('gallery')"
title="{{ 'ATTACHMENT.GALLERY_VIEW_MODE' | translate }}"
)
- svg.icon.icon-gallery
- use(xlink:href="#icon-gallery")
+ tg-svg(svg-icon="icon-gallery")
button.view-list(
ng-class="{'is-active': vm.mode == 'list'}"
ng-if="vm.attachments.size"
ng-click="vm.setMode('list')"
title="{{ 'ATTACHMENT.LIST_VIEW_MODE' | translate }}"
)
- svg.icon.icon-list
- use(xlink:href="#icon-list")
+ tg-svg(svg-icon="icon-list")
.add-attach(
tg-check-permission="modify_{{vm.type}}"
title!="{{'ATTACHMENT.ADD' | translate}}"
)
label.add-attachment-button(for="add-attach")
- svg.icon.icon-add
- use(xlink:href="#icon-add")
+ tg-svg(svg-icon="icon-add")
input(
id="add-attach",
@@ -55,8 +52,7 @@ section.attachments(
.single-attachment(ng-repeat="file in vm.uploadingAttachments()")
.attachment-name
- svg.icon.icon-attachment
- use(xlink:href="#icon-attachment")
+ tg-svg(svg-icon="icon-attachment")
span {{file.name}}
.attachment-size
span {{file.size | sizeFormat}}
diff --git a/app/modules/components/attachments-simple/attachments-simple.jade b/app/modules/components/attachments-simple/attachments-simple.jade
index 9b4cdcc7..ca458d4a 100644
--- a/app/modules/components/attachments-simple/attachments-simple.jade
+++ b/app/modules/components/attachments-simple/attachments-simple.jade
@@ -5,8 +5,7 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files)")
h3.attachments-title #[span.attachments-num {{vm.attachments.size}}] #[span.attachments-text(translate="ATTACHMENT.SECTION_NAME")]
.add-attach(title!="{{'ATTACHMENT.ADD' | translate}}")
label.add-attachment-button(for="add-attach")
- svg.icon.icon-add
- use(xlink:href="#icon-add")
+ tg-svg(svg-icon="icon-add")
input(
id="add-attach"
type="file"
@@ -19,8 +18,7 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files)")
.attachment-body.attachment-list
.single-attachment(tg-repeat="attachment in vm.attachments track by $index")
.attachment-name
- svg.icon.icon-attachment
- use(xlink:href="#icon-attachment")
+ tg-svg(svg-icon="icon-attachment")
span {{attachment.get('name')}}
.attachment-size
span {{attachment.get('size') | sizeFormat}}
@@ -31,5 +29,4 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files)")
title="{{'COMMON.DELETE' | translate}}"
ng-click="vm.deleteAttachment(attachment)"
)
- svg.icon.icon-trash
- use(xlink:href="#icon-trash")
+ tg-svg(svg-icon="icon-trash")
diff --git a/app/modules/components/live-announcement/live-announcement.jade b/app/modules/components/live-announcement/live-announcement.jade
index 1c2a4225..d740640b 100644
--- a/app/modules/components/live-announcement/live-announcement.jade
+++ b/app/modules/components/live-announcement/live-announcement.jade
@@ -7,7 +7,6 @@
a.close(
ng-click="vm.close()"
href=""
- title="{{ COMMON.CLOSE | translate }}"
+ ng-title="COMMON.CLOSE | translate"
)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+ tg-svg(svg-icon="icon-close")
diff --git a/app/modules/components/live-announcement/live-announcement.scss b/app/modules/components/live-announcement/live-announcement.scss
index d30cdd00..f1b7964e 100644
--- a/app/modules/components/live-announcement/live-announcement.scss
+++ b/app/modules/components/live-announcement/live-announcement.scss
@@ -56,13 +56,14 @@
}
}
.close {
- height: 2.5rem;
+ display: block;
position: absolute;
right: 0;
top: 1rem;
- width: 2.5rem;
svg {
+ @include svg-size(2rem);
fill: lighten($tribe-secondary, 15%);
+ pointer-events: none;
transition: fill .2s;
&:hover {
fill: $tribe-secondary;
diff --git a/app/modules/components/project-menu/project-menu.jade b/app/modules/components/project-menu/project-menu.jade
index 6b845c6e..ddb4e109 100644
--- a/app/modules/components/project-menu/project-menu.jade
+++ b/app/modules/components/project-menu/project-menu.jade
@@ -1,105 +1,96 @@
nav.menu(
ng-if="vm.project"
ng-class="{'menu-fixed': vm.fixed}",
-)
- div(class="menu-container")
- ul(class="main-nav")
- li(id="nav-search")
+)
+ .menu-container
+ ul.main-nav
+ li#nav-search
a(
href=""
ng-click="vm.search()"
ng-class="{active: vm.active == 'search'}"
aria-label="{{'PROJECT.SECTION.SEARCH' | translate}}"
tabindex="1"
- )
- svg.icon.icon-search
- use(xlink:href="#icon-search")
- span.helper(translate="PROJECT.SECTION.SEARCH")
+ )
+ tg-svg(svg-icon="icon-search")
+ span.helper(translate="PROJECT.SECTION.SEARCH")
- li(id="nav-timeline")
+ li#nav-timeline
a(
tg-nav="project:project=vm.project.get('slug')"
ng-class="{active: vm.active == 'project-timeline'}"
aria-label="{{'PROJECT.SECTION.TIMELINE' | translate}}"
tabindex="2"
)
- svg.icon.icon-timeline
- use(xlink:href="#icon-timeline")
+ tg-svg(svg-icon="icon-timeline")
span.helper(translate="PROJECT.SECTION.TIMELINE")
- li(id="nav-backlog", ng-if="vm.menu.get('backlog')")
+ li#nav-backlog(ng-if="vm.menu.get('backlog')")
a(
tg-nav="project-backlog:project=vm.project.get('slug')"
ng-class="{active: vm.active == 'backlog'}"
aria-label="{{'PROJECT.SECTION.BACKLOG' | translate}}"
tabindex="2"
)
- svg.icon.icon-scrum
- use(xlink:href="#icon-scrum")
+ tg-svg(svg-icon="icon-scrum")
span.helper(translate="PROJECT.SECTION.BACKLOG")
- li(id="nav-kanban", ng-if="vm.menu.get('kanban')")
+ li#nav-kanban(ng-if="vm.menu.get('kanban')")
a(
tg-nav="project-kanban:project=vm.project.get('slug')"
ng-class="{active: vm.active == 'kanban'}"
aria-label="{{'PROJECT.SECTION.KANBAN' | translate}}"
tabindex="3"
)
- svg.icon.icon-kanban
- use(xlink:href="#icon-kanban")
+ tg-svg(svg-icon="icon-kanban")
span.helper(translate="PROJECT.SECTION.KANBAN")
- li(id="nav-issues", ng-if="vm.menu.get('issues')")
+ li#nav-issues(ng-if="vm.menu.get('issues')")
a(
tg-nav="project-issues:project=vm.project.get('slug')"
ng-class="{active: vm.active == 'issues'}"
aria-label="{{'PROJECT.SECTION.ISSUES' | translate}}"
tabindex="4"
)
- svg.icon.icon-issues
- use(xlink:href="#icon-issues")
+ tg-svg(svg-icon="icon-issues")
span.helper(translate="PROJECT.SECTION.ISSUES")
- li(id="nav-wiki", ng-if="vm.menu.get('wiki')")
+ li#nav-wiki(ng-if="vm.menu.get('wiki')")
a(
tg-nav="project-wiki:project=vm.project.get('slug')"
ng-class="{active: vm.active == 'wiki'}"
aria-label="{{'PROJECT.SECTION.WIKI' | translate}}"
tabindex="5"
)
- svg.icon.icon-wiki
- use(xlink:href="#icon-wiki")
+ tg-svg(svg-icon="icon-wiki")
span.helper(translate="PROJECT.SECTION.WIKI")
- li(id="nav-team")
+ li#nav-team
a(
tg-nav="project-team:project=vm.project.get('slug')"
ng-class="{active: vm.active == 'team'}"
aria-label="{{'PROJECT.SECTION.TEAM' | translate}}"
tabindex="6"
)
- svg.icon.icon-team
- use(xlink:href="#icon-team")
+ tg-svg(svg-icon="icon-team")
span.helper(translate="PROJECT.SECTION.TEAM")
- li(id="nav-video", ng-if="vm.project.get('videoconferenceUrl')")
+ li#nav-video(ng-if="vm.project.get('videoconferenceUrl')")
a(
ng-href="{{vm.project.get('videoconferenceUrl')}}"
target="_blank"
aria-label="{{'PROJECT.SECTION.MEETUP' | translate}}"
tabindex="7"
)
- svg.icon.icon-bubble
- use(xlink:href="#icon-bubble")
+ tg-svg(svg-icon="icon-bubble")
span.helper(translate="PROJECT.SECTION.MEETUP")
- li(id="nav-admin", ng-if="vm.project.get('i_am_admin')")
+ li#nav-admin(ng-if="vm.project.get('i_am_admin')")
a(
tg-nav="project-admin-home:project=vm.project.get('slug')"
ng-class="{active: vm.active == 'admin'}"
aria-label="{{'PROJECT.SECTION.ADMIN' | translate}}"
tabindex="8"
)
- svg.icon.icon-settings
- use(xlink:href="#icon-settings")
+ tg-svg(svg-icon="icon-settings")
span.helper(translate="PROJECT.SECTION.ADMIN")
diff --git a/app/modules/components/vote-button/vote-button.jade b/app/modules/components/vote-button/vote-button.jade
index f0b07a4c..3ae180ac 100644
--- a/app/modules/components/vote-button/vote-button.jade
+++ b/app/modules/components/vote-button/vote-button.jade
@@ -9,8 +9,7 @@ a.vote-inner(
ng-mouseleave="vm.showTextWhenMouseIsLeave()"
)
span.track-icon
- svg.icon.icon-upvote
- use(xlink:href="#icon-upvote")
+ tg-svg(svg-icon="icon-upvote")
span.track-button-counter(
title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.total_voters||0}:'messageformat' }}",
tg-loading="vm.loading"
@@ -19,8 +18,7 @@ a.vote-inner(
//- Anonymous user button
span.vote-inner(ng-if="::!vm.user")
span.track-icon
- svg.icon.icon-upvote
- use(xlink:href="#icon-upvote")
+ tg-svg(svg-icon="icon-watch")
span.track-button-counter(
title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.total_voters||0}:'messageformat' }}"
) {{ ::vm.item.total_voters }}
diff --git a/app/modules/components/watch-button/watch-button-ticket.jade b/app/modules/components/watch-button/watch-button-ticket.jade
index 661be69b..0b802110 100644
--- a/app/modules/components/watch-button/watch-button-ticket.jade
+++ b/app/modules/components/watch-button/watch-button-ticket.jade
@@ -14,17 +14,14 @@ div.ticket-watch-inner
ng-mouseleave="vm.showTextWhenMouseIsLeave()"
)
span(ng-if="!vm.item.is_watcher")
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
- | {{'COMMON.WATCH_BUTTON.WATCH' | translate}}
+ tg-svg(svg-icon="icon-watch")
+ span {{'COMMON.WATCH_BUTTON.WATCH' | translate}}
span(ng-if="vm.item.is_watcher && !vm.isMouseOver",)
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
- | {{'COMMON.WATCH_BUTTON.WATCHING' | translate}}
+ tg-svg(svg-icon="icon-watch")
+ span {{'COMMON.WATCH_BUTTON.WATCHING' | translate}}
span(ng-if="vm.item.is_watcher && vm.isMouseOver")
- svg.icon.icon-unwatch
- use(xlink:href="#icon-unwatch")
- | {{'COMMON.WATCH_BUTTON.UNWATCH' | translate}}
+ tg-svg(svg-icon="icon-unwatch")
+ span {{'COMMON.WATCH_BUTTON.UNWATCH' | translate}}
a.add-watcher(
href=""
diff --git a/app/modules/components/watch-button/watch-button.jade b/app/modules/components/watch-button/watch-button.jade
index 842f0d60..36e550d3 100644
--- a/app/modules/components/watch-button/watch-button.jade
+++ b/app/modules/components/watch-button/watch-button.jade
@@ -16,8 +16,7 @@ a.track-button.watch-button.watch-container(
ng-mouseleave="vm.showTextWhenMouseIsLeave()"
)
span.track-inner
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
+ tg-svg(svg-icon="icon-watch")
span(
ng-if="!vm.item.is_watcher",
translate="COMMON.WATCH_BUTTON.WATCH"
@@ -38,7 +37,6 @@ span.track-button.watch-button.watch-container(
)
span.track-inner
span.track-icon
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
+ tg-svg(svg-icon="icon-watch")
span(translate="COMMON.WATCH_BUTTON.WATCHERS")
+counter
diff --git a/app/modules/discover/components/discover-home-order-by/discover-home-order-by.jade b/app/modules/discover/components/discover-home-order-by/discover-home-order-by.jade
index 9379c7d0..40405343 100644
--- a/app/modules/discover/components/discover-home-order-by/discover-home-order-by.jade
+++ b/app/modules/discover/components/discover-home-order-by/discover-home-order-by.jade
@@ -3,8 +3,7 @@
href="#"
ng-click="vm.open()"
) {{vm.currentText()}}
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
ul.filter-list(ng-if="vm.is_open")
li(ng-click="vm.orderBy('week')") {{ 'DISCOVER.FILTERS.WEEK' | translate }}
diff --git a/app/modules/discover/components/discover-search-bar/discover-search-bar.jade b/app/modules/discover/components/discover-search-bar/discover-search-bar.jade
index 436c92af..7fd4157e 100644
--- a/app/modules/discover/components/discover-search-bar/discover-search-bar.jade
+++ b/app/modules/discover/components/discover-search-bar/discover-search-bar.jade
@@ -18,12 +18,11 @@ div.discover-header
placeholder="{{ 'DISCOVER.SEARCH.INPUT_PLACEHOLDER' | translate }}"
ng-model="vm.q"
)
- svg.search-button.icon.icon-search(
+ tg-svg.search-button(
ng-click="vm.submitFilter()"
- href="#"
- title="{{ 'DISCOVER.SEARCH.ACTION_TITLE' | translate }}"
+ svg-icon="icon-search"
+ svg-title-translate="DISCOVER.SEARCH.ACTION_TITLE"
)
- use(xlink:href="#icon-search")
fieldset.searchbox-filters(ng-if="vm.filter")
input(
diff --git a/app/modules/discover/components/discover-search-list-header/discover-search-list-header.jade b/app/modules/discover/components/discover-search-list-header/discover-search-list-header.jade
index 42c854fb..123c0d84 100644
--- a/app/modules/discover/components/discover-search-list-header/discover-search-list-header.jade
+++ b/app/modules/discover/components/discover-search-list-header/discover-search-list-header.jade
@@ -1,8 +1,7 @@
.discover-results-header
.discover-results-header-inner
.title
- svg.icon.icon-search
- use(xlink:href="#icon-search")
+ tg-svg(svg-icon="icon-search")
h2 {{ 'DISCOVER.SEARCH.RESULTS' | translate }}
.filter-discover-search(ng-mouseleave="vm.toggleClose()")
@@ -11,16 +10,14 @@
ng-click="vm.openLike()"
ng-class="{active: vm.like_is_open}"
)
- svg.icon.icon-like
- use(xlink:href="#icon-like")
+ tg-svg(svg-icon="icon-like")
span {{ 'DISCOVER.MOST_LIKED' | translate }}
a.discover-search-filter(
href="#"
ng-click="vm.openActivity()"
ng-class="{active: vm.activity_is_open}"
)
- svg.icon.icon-activity
- use(xlink:href="#icon-activity")
+ tg-svg(svg-icon="icon-activity")
span {{ 'DISCOVER.MOST_ACTIVE' | translate }}
.discover-search-subfilter.most-liked-subfilter(ng-if="vm.like_is_open")
diff --git a/app/modules/discover/components/featured-projects/featured-projects.jade b/app/modules/discover/components/featured-projects/featured-projects.jade
index 6811847e..f2450bd2 100644
--- a/app/modules/discover/components/featured-projects/featured-projects.jade
+++ b/app/modules/discover/components/featured-projects/featured-projects.jade
@@ -26,31 +26,28 @@
tg-nav="project:project=project.get('slug')"
title="{{::project.get('name')}}"
) {{::project.get('name')}}
- svg.look-for-people.icon.icon-recruit(
+ tg-svg.look-for-people(
ng-if="project.get('is_looking_for_people')"
+ svg-icon="icon-recruit"
+ svg-title="{{ ::project.get('looking_for_people_note') }}"
)
- use(xlink:href="#icon-recruit")
- title="{{ ::project.get('looking_for_people_note') }}"
p.project-card-description {{ ::project.get('description') | limitTo:100 }}{{ ::project.get('description').length < 100 ? '' : '...'}}
.project-card-statistics
span.statistic(
ng-class="{'active': project.get('is_fan')}"
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
)
- svg.icon.icon-like
- use(xlink:href="#icon-like")
+ tg-svg(svg-icon="icon-like")
span {{::project.get('total_fans')}}
span.statistic(
ng-class="{'active': project.get('is_watcher')}"
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
)
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
+ tg-svg(svg-icon="icon-watch")
span {{::project.get('total_watchers')}}
span.statistic(
ng-class="{'active': project.get('i_am_member')}"
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
)
- svg.icon.icon-team
- use(xlink:href="#icon-team")
+ tg-svg(svg-icon="icon-team")
span.statistics-num {{ ::project.get('members').size }}
diff --git a/app/modules/discover/components/highlighted/highlighted.jade b/app/modules/discover/components/highlighted/highlighted.jade
index 3f29e101..08cd39a0 100644
--- a/app/modules/discover/components/highlighted/highlighted.jade
+++ b/app/modules/discover/components/highlighted/highlighted.jade
@@ -24,30 +24,29 @@
tg-nav="project:project=project.get('slug')"
title="{{::project.get('name')}}"
) {{::project.get('name')}}
- svg.look-for-people.icon.icon-recruit(ng-if="project.get('is_looking_for_people')")
- use(xlink:href="#icon-recruit")
- title="{{ ::project.get('looking_for_people_note') }}"
+ tg-svg.look-for-people(
+ ng-if="project.get('is_looking_for_people')"
+ svg-icon="icon-recruit"
+ svg-title="{{ ::project.get('looking_for_people_note') }}"
+ )
.project-statistics
span.statistic(
ng-class="{'active': project.get('is_fan')}"
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
)
- svg.icon.icon-like
- use(xlink:href="#icon-like")
+ tg-svg(svg-icon="icon-like")
span {{::project.get('total_fans')}}
span.statistic(
ng-class="{'active': project.get('is_watcher')}"
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
)
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
+ tg-svg(svg-icon="icon-watch")
span {{::project.get('total_watchers')}}
span.statistic(
ng-class="{'active': project.get('i_am_member')}"
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
)
- svg.icon.icon-team
- use(xlink:href="#icon-team")
+ tg-svg(svg-icon="icon-team")
span.statistics-num {{ ::project.get('members').size }}
p.project-description {{ ::project.get('description') | limitTo:150 }}{{ ::project.get('description').length < 150 ? '' : '...'}}
diff --git a/app/modules/discover/components/highlighted/highlighted.scss b/app/modules/discover/components/highlighted/highlighted.scss
index 8dced746..c54e6111 100644
--- a/app/modules/discover/components/highlighted/highlighted.scss
+++ b/app/modules/discover/components/highlighted/highlighted.scss
@@ -172,11 +172,6 @@
}
}
}
- .look-for-people {
- @include svg-size();
- fill: $gray-light;
- margin-left: .5rem;
- }
.project-description {
@extend %small;
color: $gray;
diff --git a/app/modules/discover/components/most-active/most-active.jade b/app/modules/discover/components/most-active/most-active.jade
index e90666af..c439f840 100644
--- a/app/modules/discover/components/most-active/most-active.jade
+++ b/app/modules/discover/components/most-active/most-active.jade
@@ -1,8 +1,7 @@
.most-active(ng-if="vm.highlighted.size")
.header
.title-wrapper
- svg.icon.icon-activity
- use(xlink:href="#icon-activity")
+ tg-svg(svg-icon="icon-activity")
h1.title {{ 'DISCOVER.MOST_ACTIVE' | translate }}
tg-discover-home-order-by(on-change="vm.orderBy(orderBy)", order-by="vm.currentOrderBy")
@@ -15,6 +14,5 @@
.empty-highlighted-project(
ng-if="!vm.highlighted.size"
)
- svg.icon.icon-activity
- use(xlink:href="#icon-activity")
+ tg-svg(svg-icon="icon-activity")
span {{ 'DISCOVER.MOST_ACTIVE_EMPTY' | translate }}
diff --git a/app/modules/discover/components/most-liked/most-liked.jade b/app/modules/discover/components/most-liked/most-liked.jade
index 031f35c3..daac385b 100644
--- a/app/modules/discover/components/most-liked/most-liked.jade
+++ b/app/modules/discover/components/most-liked/most-liked.jade
@@ -1,10 +1,12 @@
.most-liked(ng-if="vm.highlighted.size")
.header
.title-wrapper
- svg.icon.icon-like
- use(xlink:href="#icon-like")
+ tg-svg(svg-icon="icon-like")
h1.title {{ 'DISCOVER.MOST_LIKED' | translate }}
- tg-discover-home-order-by(on-change="vm.orderBy(orderBy)", order-by="vm.currentOrderBy")
+ tg-discover-home-order-by(
+ on-change="vm.orderBy(orderBy)"
+ order-by="vm.currentOrderBy"
+ )
tg-highlighted(
loading="vm.loading",
highlighted="vm.highlighted"
@@ -14,6 +16,5 @@
.empty-highlighted-project(
ng-if="!vm.highlighted.size"
)
- svg.icon.icon-like
- use(xlink:href="#icon-like")
+ tg-svg(svg-icon="icon-like")
span {{ 'DISCOVER.MOST_LIKED_EMPTY' | translate }}
diff --git a/app/modules/discover/discover-search/discover-search.jade b/app/modules/discover/discover-search/discover-search.jade
index 3422ad60..1290ab83 100644
--- a/app/modules/discover/discover-search/discover-search.jade
+++ b/app/modules/discover/discover-search/discover-search.jade
@@ -43,9 +43,11 @@ div(tg-discover-search)
tg-nav="project:project=project.get('slug')"
title="{{ ::project.get('name') }}"
) {{project.get('name')}}
- svg.look-for-people.icon.icon-recruit(ng-if="project.get('is_looking_for_people')")
- use(xlink:href="#icon-recruit")
- title="{{ ::project.get('looking_for_people_note') }}"
+ tg-svg.look-for-people(
+ ng-if="project.get('is_looking_for_people')"
+ svg-icon="icon-recruit"
+ svg-title="{{ ::project.get('looking_for_people_note') }}"
+ )
p {{ ::project.get('description') | limitTo:300 }}
span(ng-if="::project.get('description').length > 300") ...
.list-itemtype-project-right.project-statistics
@@ -53,22 +55,19 @@ div(tg-discover-search)
ng-class="{'active': project.get('is_fan')}"
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
)
- svg.icon.icon-like
- use(xlink:href="#icon-like")
+ tg-svg(svg-icon="icon-like")
span {{::project.get('total_fans')}}
span.statistic(
ng-class="{'active': project.get('is_watcher')}"
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
)
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
+ tg-svg(svg-icon="icon-watch")
span {{::project.get('total_watchers')}}
span.statistic(
ng-class="{'active': project.get('i_am_member')}"
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
)
- svg.icon.icon-team
- use(xlink:href="#icon-team")
+ tg-svg(svg-icon="icon-team")
span.statistics-num {{ ::project.get('members').size }}
a.button-green.more-results(
diff --git a/app/modules/discover/discover-search/discover-search.scss b/app/modules/discover/discover-search/discover-search.scss
index b97b58e8..d5d48788 100644
--- a/app/modules/discover/discover-search/discover-search.scss
+++ b/app/modules/discover/discover-search/discover-search.scss
@@ -71,10 +71,6 @@
flex: 1;
vertical-align: middle;
}
- .look-for-people {
- fill: $gray-light;
- margin-left: .5rem;
- }
.project-statistics {
display: flex;
flex-basis: 300px;
diff --git a/app/modules/home/duties/duty.jade b/app/modules/home/duties/duty.jade
index c0678e0a..fa3b5411 100644
--- a/app/modules/home/duties/duty.jade
+++ b/app/modules/home/duties/duty.jade
@@ -16,18 +16,21 @@ a.list-itemtype-ticket(
div.list-itemtype-ticket-data
p
span.ticket-project {{ ::vm.duty.get('projectName')}}
-
+
span.ticket-type {{ ::vm.getDutyType() }}
span.ticket-status(ng-style="{'color': vm.duty.get('status_extra_info').get('color')}") {{ ::vm.duty.get('status_extra_info').get('name') }}
- svg.icon.icon-blocked-project(ng-if="vm.duty.get('blockedProject')")
- use(xlink:href="#icon-blocked-project")
- title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
+
+ tg-svg(
+ ng-if="vm.duty.get('blockedProject')",
+ svg-icon="icon-blocked-project",
+ svg-title-translate="PROJECT.BLOCKED_PROJECT.BLOCKED"
+ )
h2
span.ticket-id(tg-bo-ref="duty.get('ref')")
- span.ticket-title
+ span.ticket-title
span.ticket-blocked(
ng-if="::vm.duty.get('is_blocked')"
title="{{::vm.duty.get('blocked_note')}}"
- ) {{ 'COMMON.BLOCKED' | translate }}
+ ) {{ 'COMMON.BLOCKED' | translate }}
span {{ ::duty.get('subject') }}
diff --git a/app/modules/home/projects/home-project-list.jade b/app/modules/home/projects/home-project-list.jade
index 87493385..273f0009 100644
--- a/app/modules/home/projects/home-project-list.jade
+++ b/app/modules/home/projects/home-project-list.jade
@@ -28,10 +28,25 @@ section.home-project-list(ng-if="vm.projects.size")
tg-nav="project:project=project.get('slug')"
title="{{::project.get('name')}}"
) {{::project.get('name')}}
- svg.icon.icon-blocked-project(ng-if="project.get('blocked_code')")
- use(xlink:href="#icon-blocked-project")
- title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
-
+
+ tg-svg.look-for-people(
+ ng-if="project.get('is_looking_for_people')"
+ svg-icon="icon-recruit"
+ svg-title="{{ ::project.get('looking_for_people_note') }}"
+ )
+
+ tg-svg.owner-badge(
+ ng-if="project.get('i_am_owner')"
+ svg-icon="icon-badge"
+ svg-title="COMMON.OWNER"
+ )
+
+ tg-svg(
+ ng-if="project.get('blocked_code')"
+ svg-icon="icon-blocked-project"
+ svg-title-translate="PROJECT.BLOCKED_PROJECT.BLOCKED"
+ )
+
p.project-card-description {{::project.get('description')| limitTo:100 }}
span(ng-if="::project.get('description').length > 100") ...
.project-card-statistics
@@ -39,29 +54,25 @@ section.home-project-list(ng-if="vm.projects.size")
ng-class="{'active': project.get('is_fan')}"
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
)
- svg.icon.icon-like
- use(xlink:href="#icon-like")
+ tg-svg(svg-icon="icon-like")
span {{::project.get('total_fans')}}
span.statistic(
ng-class="{'active': project.get('is_watcher')}"
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
)
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
+ tg-svg(svg-icon="icon-watch")
span {{::project.get('total_watchers')}}
span.statistic(
ng-class="{'active': project.get('i_am_member')}"
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
)
- svg.icon.icon-team
- use(xlink:href="#icon-team")
+ tg-svg(svg-icon="icon-team")
span.statistics-num {{ ::project.get('members').size }}
span.statistic(
ng-if="::project.get('is_private')"
title="{{ 'PROJECT.PRIVATE' | translate }}"
)
- svg.icon.icon-lock
- use(xlink:href="#icon-lock")
+ tg-svg(svg-icon="icon-lock")
a.see-more-projects-btn.button-gray(
href="#",
@@ -72,8 +83,7 @@ section.home-project-list(ng-if="vm.projects.size")
)
section.projects-empty(ng-if="vm.projects != undefined && vm.projects.size === 0")
- svg.icon.icon-project
- use(xlink:href="#icon-project")
+ tg-svg(svg-icon="icon-project")
p(translate="HOME.EMPTY_PROJECT_LIST")
a.create-project-button.button-green(href="#", ng-click="vm.newProject()",
title="{{'PROJECT.NAVIGATION.TITLE_CREATE_PROJECT' | translate}}",
diff --git a/app/modules/navigation-bar/dropdown-project-list/dropdown-project-list.jade b/app/modules/navigation-bar/dropdown-project-list/dropdown-project-list.jade
index 10374374..7940b928 100644
--- a/app/modules/navigation-bar/dropdown-project-list/dropdown-project-list.jade
+++ b/app/modules/navigation-bar/dropdown-project-list/dropdown-project-list.jade
@@ -1,6 +1,9 @@
-a(href="", title="Projects", tg-nav="projects")
- svg.icon.icon-project
- use(xlink:href="#icon-project")
+a(
+ href=""
+ title="Projects"
+ tg-nav="projects"
+)
+ tg-svg(svg-icon="icon-project")
div.navbar-dropdown.dropdown-project-list
ul
@@ -11,9 +14,11 @@ div.navbar-dropdown.dropdown-project-list
ng-class="{'blocked-project': project.get('blocked_code')}"
)
span {{::project.get("name")}}
- svg.icon.icon-blocked-project(ng-if="project.get('blocked_code')")
- use(xlink:href="#icon-blocked-project")
- title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
+ tg-svg(
+ svg-icon="icon-blocked-project"
+ ng-if="project.get('blocked_code')"
+ svg-title="PROJECT.BLOCKED_PROJECT.BLOCKED"
+ )
a.see-more-projects-btn.button-gray(
href="#",
@@ -33,6 +38,5 @@ div.navbar-dropdown.dropdown-project-list
href=""
title="{{'PROJECT.NAVIGATION.TITLE_IMPORT_PROJECT' | translate}}"
)
- svg.icon.icon-upload
- use(xlink:href="#icon-upload")
- input.import-file.hidden(type="file")
\ No newline at end of file
+ tg-svg(svg-icon="icon-upload")
+ input.import-file.hidden(type="file")
diff --git a/app/modules/navigation-bar/navigation-bar.jade b/app/modules/navigation-bar/navigation-bar.jade
index e81794cc..c8ae3501 100644
--- a/app/modules/navigation-bar/navigation-bar.jade
+++ b/app/modules/navigation-bar/navigation-bar.jade
@@ -30,21 +30,19 @@ nav.navbar(ng-if="vm.isEnabledHeader")
)
div.nav-right(ng-if="vm.isAuthenticated")
- a(tg-nav="home",
- ng-class="{active: vm.active}",
- title="{{'PROJECT.NAVIGATION.DASHBOARD_TITLE' | translate}}")
-
- svg.icon.icon-dashboard
- use(xlink:href="#icon-dashboard")
+ a(
+ tg-nav="home"
+ ng-class="{active: vm.active}"
+ title="{{'PROJECT.NAVIGATION.DASHBOARD_TITLE' | translate}}"
+ )
+ tg-svg(svg-icon="icon-dashboard")
a(
href="#",
tg-nav="discover",
title="{{'PROJECT.NAVIGATION.DISCOVER_TITLE' | translate}}",
)
- svg.icon.icon-discover
- use(xlink:href="#icon-discover")
+ tg-svg(svg-icon="icon-discover")
div.topnav-dropdown-wrapper(ng-show="vm.projects.size", tg-dropdown-project-list)
- //- div.topnav-dropdown-wrapper(tg-dropdown-organization-list)
div.topnav-dropdown-wrapper(tg-dropdown-user)
diff --git a/app/modules/profile/profile-contacts/profile-contacts.jade b/app/modules/profile/profile-contacts/profile-contacts.jade
index b752325e..30306343 100644
--- a/app/modules/profile/profile-contacts/profile-contacts.jade
+++ b/app/modules/profile/profile-contacts/profile-contacts.jade
@@ -4,8 +4,7 @@ section.profile-contacts
img(src="/#{v}/svg/spinner-circle.svg", alt="Loading...")
div.empty-tab(ng-if="vm.contacts && !vm.contacts.size")
- svg.icon.icon-unwatch
- use(xlink:href="#icon-unwatch")
+ tg-svg(svg-icon="icon-unwatch")
div(ng-if="!vm.isCurrentUser")
p(translate="USER.PROFILE.CONTACTS_EMPTY", translate-values="{username: vm.user.get('full_name_display')}")
diff --git a/app/modules/profile/profile-favs/items/project.jade b/app/modules/profile/profile-favs/items/project.jade
index 7e4521be..bcc8e293 100644
--- a/app/modules/profile/profile-favs/items/project.jade
+++ b/app/modules/profile/profile-favs/items/project.jade
@@ -18,12 +18,18 @@
tg-nav="project:project=vm.item.get('slug')"
title="{{ ::vm.item.get('name') }}"
) {{ ::vm.item.get('name') }}
- svg.icon.icon-lock.private(ng-if="::vm.item.get('project_is_private')")
- use(xlink:href="#icon-lock")
- title {{'PROJECT.PRIVATE' | translate}}"
- svg.icon.icon-blocked-project(ng-if="vm.item.get('project_blocked_code')")
- use(xlink:href="#icon-blocked-project")
- title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
+
+ tg-svg(
+ ng-if="::vm.item.get('is_private')"
+ svg-icon="icon-lock"
+ svg-title-translate="PROJECT.PRIVATE"
+ )
+
+ tg-svg(
+ ng-if="vm.item.get('blocked_code')"
+ svg-icon="icon-blocked-project"
+ svg-title-translate="PROJECT.BLOCKED_PROJECT.BLOCKED"
+ )
p.list-itemtype-project-description {{ ::vm.item.get('description') }}
.list-itemtype-track
@@ -31,14 +37,12 @@
ng-class="{'active': vm.item.get('is_fan')}"
title="{{ 'PROJECT.LIKE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.get(\"total_fans\")||0}:'messageformat' }}"
)
- svg.icon.icon-like
- use(xlink:href="#icon-like")
+ tg-svg(svg-icon="icon-like")
span {{ ::vm.item.get('total_fans') }}
span.list-itemtype-track-watchers(
ng-class="{'active': vm.item.get('is_watcher')}"
title="{{ 'PROJECT.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.get(\"total_watchers\")||0}:'messageformat' }}"
)
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
+ tg-svg(svg-icon="icon-watch")
span {{ ::vm.item.get('total_watchers') }}
diff --git a/app/modules/profile/profile-favs/items/ticket.jade b/app/modules/profile/profile-favs/items/ticket.jade
index 599fd041..7f974ea4 100644
--- a/app/modules/profile/profile-favs/items/ticket.jade
+++ b/app/modules/profile/profile-favs/items/ticket.jade
@@ -1,4 +1,4 @@
-div.list-itemtype-ticket(ng-class="{'blocked-project': vm.item.get('project_blocked_code')}")
+.list-itemtype-ticket(ng-class="{'blocked-project': vm.item.get('project_blocked_code')}")
a.list-itemtype-avatar(
href=""
ng-if="::vm.item.get('assigned_to')"
@@ -20,7 +20,7 @@ div.list-itemtype-ticket(ng-class="{'blocked-project': vm.item.get('project_bloc
alt="{{ 'COMMON.ASSIGNED_TO.NOT_ASSIGNED'|translate }}"
)
- div.list-itemtype-ticket-data
+ .list-itemtype-ticket-data
p
span.ticket-project
| {{:: vm.item.get('project_name') }}
@@ -36,11 +36,12 @@ div.list-itemtype-ticket(ng-class="{'blocked-project': vm.item.get('project_bloc
ng-if="::vm.item.get('type') === 'issue'"
translate="COMMON.ISSUE"
)
- span.ticket-status(ng-style="::{'color': vm.item.get('status_color')}")
- | {{:: vm.item.get('status') }}
- svg.icon.icon-blocked-project(ng-if="vm.item.get('project_blocked_code')")
- use(xlink:href="#icon-blocked-project")
- title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
+ span.ticket-status(ng-style="::{'color': vm.item.get('status_color')}") {{:: vm.item.get('status') }}
+ tg-svg(
+ ng-if="vm.item.get('project_blocked_code')"
+ svg-icon="icon-blocked-project"
+ svgTitleTranslate: "PROJECT.BLOCKED_PROJECT.BLOCKED"
+ )
h2
span.ticket-id(tg-bo-ref="vm.item.get('ref')")
a.ticket-title(
@@ -67,14 +68,12 @@ div.list-itemtype-ticket(ng-class="{'blocked-project': vm.item.get('project_bloc
ng-class="{'active': vm.item.get('is_voter')}",
title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.get(\"total_voters\")||0}:'messageformat' }}"
)
- svg.icon.icon-upvote
- use(xlink:href="#icon-upvote")
+ tg-svg(svg-icon="icon-upvote")
span {{ ::vm.item.get('total_voters') }}
span.list-itemtype-track-watchers(
ng-class="{'active': vm.item.get('is_watcher')}"
title="{{ 'COMMON.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.get(\"total_watchers\")||0}:'messageformat' }}"
)
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
+ tg-svg(svg-icon="icon-watch")
span {{ ::vm.item.get('total_watchers') }}
diff --git a/app/modules/profile/profile-favs/profile-favs.jade b/app/modules/profile/profile-favs/profile-favs.jade
index 9ec621c7..880c25e6 100644
--- a/app/modules/profile/profile-favs/profile-favs.jade
+++ b/app/modules/profile/profile-favs/profile-favs.jade
@@ -1,8 +1,7 @@
section.profile-favs
div.profile-filter
div.searchbox(ng-if="::vm.enableFilterByTextQuery")
- svg.icon.icon-search
- use(xlink:href="#icon-search")
+ tg-svg(svg-icon="icon-search")
input(
type="text"
ng-model="vm.q"
diff --git a/app/modules/profile/profile-hints/profile-hints.jade b/app/modules/profile/profile-hints/profile-hints.jade
index 364a9066..b96a1748 100644
--- a/app/modules/profile/profile-hints/profile-hints.jade
+++ b/app/modules/profile/profile-hints/profile-hints.jade
@@ -1,6 +1,5 @@
h4
- svg.icon.icon-question
- use(xlink:href="#icon-question")
+ tg-svg(svg-icon="icon-question")
span(translate="HINTS.SECTION_NAME")
p {{::vm.hint.title}}
diff --git a/app/modules/profile/profile-projects/profile-projects.jade b/app/modules/profile/profile-projects/profile-projects.jade
index 5e3ff52d..a1d361f8 100644
--- a/app/modules/profile/profile-projects/profile-projects.jade
+++ b/app/modules/profile/profile-projects/profile-projects.jade
@@ -4,8 +4,7 @@ section.profile-projects
img(src="/#{v}/svg/spinner-circle.svg", alt="Loading...")
.empty-tab(ng-if="vm.projects && !vm.projects.size")
- svg.icon.icon-unwatch
- use(xlink:href="#icon-unwatch")
+ tg-svg(svg-icon="icon-unwatch")
p(
translate="USER.PROFILE.PROJECTS_EMPTY"
@@ -33,9 +32,12 @@ section.profile-projects
tg-nav="project:project=project.get('slug')"
title="{{ ::project.get('name') }}"
) {{::project.get('name')}}
- svg.icon.icon-blocked-project(ng-if="project.get('blocked_code')")
- use(xlink:href="#icon-blocked-project")
- title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
+
+ tg-svg(
+ ng-if="project.get('blocked_code')",
+ svg-icon="icon-blocked-project"
+ svg-title-translate="PROJECT.BLOCKED_PROJECT.BLOCKED"
+ )
p.project-description {{ ::project.get('description') | limitTo:300 }}
.list-itemtype-project-right
@@ -45,16 +47,14 @@ section.profile-projects
ng-class="{'active': project.get('is_fan')}"
title="{{ 'PROJECT.LIKE_BUTTON.COUNTER_TITLE'|translate:{total:project.get(\"total_fans\")||0}:'messageformat' }}"
)
- svg.icon.icon-like
- use(xlink:href="#icon-like")
+ tg-svg(svg-icon="icon-like")
span {{ ::project.get('total_fans') }}
span.list-itemtype-track-watchers(
ng-class="{'active': project.get('is_watcher')}"
title="{{ 'PROJECT.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:project.get(\"total_watchers\")||0}:'messageformat' }}"
)
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
+ tg-svg(svg-icon="icon-watch")
span {{ ::project.get('total_watchers') }}
.list-itemtype-project-members
diff --git a/app/modules/profile/profile-tab/profile-tab.directive.coffee b/app/modules/profile/profile-tab/profile-tab.directive.coffee
index 252e7282..308a97ba 100644
--- a/app/modules/profile/profile-tab/profile-tab.directive.coffee
+++ b/app/modules/profile/profile-tab/profile-tab.directive.coffee
@@ -28,7 +28,6 @@ ProfileTabDirective = () ->
scope.tab.title = title
scope.tab.icon = attrs.tabIcon
- scope.tab.iconName = '#' + attrs.tabIcon
scope.tab.active = !!attrs.tabActive
if scope.$eval(attrs.tabDisabled) != true
diff --git a/app/modules/profile/profile-tabs/profile-tabs.jade b/app/modules/profile/profile-tabs/profile-tabs.jade
index c7965c2f..23e861ec 100644
--- a/app/modules/profile/profile-tabs/profile-tabs.jade
+++ b/app/modules/profile/profile-tabs/profile-tabs.jade
@@ -7,8 +7,7 @@ div
ng-click="vm.toggleTab(tab)"
ng-class="{active: tab.active}"
)
- svg.icon(ng-class="::tab.icon")
- use(xlink:href="{{::tab.iconName}}")
+ tg-svg(svg-icon="{{::tab.icon}}")
span {{::tab.name}}
ng-transclude
diff --git a/app/modules/projects/components/like-project-button/like-project-button.jade b/app/modules/projects/components/like-project-button/like-project-button.jade
index 176c25fd..de8da23f 100644
--- a/app/modules/projects/components/like-project-button/like-project-button.jade
+++ b/app/modules/projects/components/like-project-button/like-project-button.jade
@@ -8,8 +8,7 @@ a.track-button.like-button.like-container(
)
span.track-inner
span.track-icon
- svg.icon.icon-like
- use(xlink:href="#icon-like")
+ tg-svg(svg-icon="icon-like")
span(
ng-if="!vm.project.get('is_fan')"
translate="PROJECT.LIKE_BUTTON.LIKE"
diff --git a/app/modules/projects/components/watch-project-button/watch-project-button.jade b/app/modules/projects/components/watch-project-button/watch-project-button.jade
index 1c2671a5..632fb070 100644
--- a/app/modules/projects/components/watch-project-button/watch-project-button.jade
+++ b/app/modules/projects/components/watch-project-button/watch-project-button.jade
@@ -6,12 +6,10 @@ a.track-button.watch-button.watch-container(
)
span.track-inner
span.track-icon
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
+ tg-svg(svg-icon="icon-watch")
span(ng-if="!vm.project.get('is_watcher')", translate="PROJECT.WATCH_BUTTON.WATCH")
span(ng-if="vm.project.get('is_watcher')", translate="PROJECT.WATCH_BUTTON.WATCHING")
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
span.track-button-counter(
title="{{ 'PROJECT.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:vm.project.get(\"total_watchers\")||0}:'messageformat' }}",
@@ -37,8 +35,7 @@ ul.watch-options(
)
span(translate="PROJECT.WATCH_BUTTON.OPTIONS.NOTIFY_ALL")
span.watch-check(ng-if="vm.project.get('is_watcher') && vm.project.get('notify_level') == 2")
- svg.icon.icon-check-empty
- use(xlink:href="#icon-check-empty")
+ tg-svg(svg-icon="icon-check-empty")
li
a(
href="",
@@ -48,8 +45,7 @@ ul.watch-options(
)
span(translate="PROJECT.WATCH_BUTTON.OPTIONS.NOTIFY_INVOLVED")
span.watch-check(ng-if="vm.project.get('is_watcher') && vm.project.get('notify_level') == 1")
- svg.icon.icon-check-empty
- use(xlink:href="#icon-check-empty")
+ tg-svg(svg-icon="icon-check-empty")
li(ng-if="vm.project.get('is_watcher')")
a(
diff --git a/app/modules/projects/listing/projects-listing.jade b/app/modules/projects/listing/projects-listing.jade
index be8ad939..096af8b6 100644
--- a/app/modules/projects/listing/projects-listing.jade
+++ b/app/modules/projects/listing/projects-listing.jade
@@ -13,8 +13,7 @@
href=""
title="{{'PROJECT.NAVIGATION.TITLE_IMPORT_PROJECT' | translate}}"
)
- svg.icon.icon-upload
- use(xlink:href="#icon-upload")
+ tg-svg(svg-icon="icon-upload")
input.import-file.hidden(type="file")
section.project-list-section
@@ -44,23 +43,26 @@
tg-nav="project:project=project.get('slug')"
title="{{ ::project.get('name') }}"
) {{project.get('name')}}
- svg.icon.icon-lock.private(ng-if="project.get('is_private')")
- use(xlink:href="#icon-lock")
- title {{'PROJECT.PRIVATE' | translate}}"
-
- svg.icon.icon-badge(ng-if="project.get('i_am_owner')")
- use(xlink:href="#icon-badge")
- title(translate="COMMON.OWNER")
- svg.icon.icon-blocked-project(ng-if="project.get('blocked_code')")
- use(xlink:href="#icon-blocked-project")
- title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
-
-
+ tg-svg(
+ ng-if="project.get('is_private')",
+ svg-icon="icon-lock",
+ svg-title-translate="PROJECT.PRIVATE"
+ )
+ tg-svg(
+ ng-if="project.get('i_am_owner')",
+ svg-icon="icon-badge",
+ svg-title-translate="COMMON.OWNER"
+ )
+ tg-svg(
+ ng-if="project.get('blocked_code')",
+ svg-icon="icon-blocked-project",
+ svg-title-translate="PROJECT.BLOCKED_PROJECT.BLOCKED"
+ )
+
p.project-description {{ ::project.get('description') | limitTo:300 }}
span(ng-if="::project.get('description').length > 300") ...
- svg.drag.icon.icon-drag
- use(xlink:href="#icon-drag")
+ tg-svg.drag(svg-icon="icon-drag")
aside.help-area
p(translate="PROJECT.HELP")
diff --git a/app/modules/projects/listing/styles/project-list.scss b/app/modules/projects/listing/styles/project-list.scss
index d22945ad..54191dbe 100644
--- a/app/modules/projects/listing/styles/project-list.scss
+++ b/app/modules/projects/listing/styles/project-list.scss
@@ -87,11 +87,13 @@
}
.drag {
align-self: center;
- fill: $gray-light;
- height: 1.1rem;
- margin-right: .5rem;
opacity: 0;
- transition: opacity .2s;
- width: 1.1rem;
+ svg {
+ fill: $gray-light;
+ height: 1.1rem;
+ margin-right: .5rem;
+ transition: opacity .2s;
+ width: 1.1rem;
+ }
}
}
diff --git a/app/modules/projects/project/blocked-project.jade b/app/modules/projects/project/blocked-project.jade
index be6b75b8..0cf464b8 100644
--- a/app/modules/projects/project/blocked-project.jade
+++ b/app/modules/projects/project/blocked-project.jade
@@ -6,9 +6,10 @@
tg-project-logo-small-src="vm.project"
alt="{{::vm.project.get('name')}}"
)
- svg.icon.icon-blocked-project
- use(xlink:href="#icon-blocked-project")
- title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
+ tg-svg(
+ svg-icon="icon-blocked-project"
+ svgTitleTranslate: "PROJECT.BLOCKED_PROJECT.BLOCKED"
+ )
span.project-title {{::vm.project.get("name")}}
.blocked-project-message
h1.project-block-title {{'PROJECT.BLOCKED_PROJECT.BLOCKED' | translate}}
diff --git a/app/modules/projects/project/project.jade b/app/modules/projects/project/project.jade
index 44c479ee..731d3d59 100644
--- a/app/modules/projects/project/project.jade
+++ b/app/modules/projects/project/project.jade
@@ -16,10 +16,11 @@ div.wrapper
.intro-title
h1
span.project-name {{::vm.project.get("name")}}
-
- svg.icon.icon-lock.private(ng-if="::vm.project.get('is_private')")
- use(xlink:href="#icon-lock")
- title {{'PROJECT.PRIVATE' | translate}}"
+ tg-svg(
+ ng-if="::vm.project.get('is_private')"
+ svg-icon="icon-lock"
+ svgTitleTranslate: "PROJECT.PRIVATE"
+ )
div.track-buttons-container(ng-if="vm.user")
tg-like-project-button(project="vm.project")
@@ -30,15 +31,13 @@ div.wrapper
span.list-itemtype-track-likers(
title="{{ 'PROJECT.LIKE_BUTTON.COUNTER_TITLE'|translate:{total:vm.project.get(\"total_fans\")||0}:'messageformat' }}"
)
- svg.icon.icon-like
- use(xlink:href="#icon-like")
+ tg-svg(svg-icon="icon-like")
span {{ ::vm.project.get('total_fans') }}
span.list-itemtype-track-watchers(
title="{{ 'PROJECT.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:vm.project.get(\"total_watchers\")||0}:'messageformat' }}"
)
- svg.icon.icon-watche
- use(xlink:href="#icon-watch")
+ tg-svg(svg-icon="icon-watch")
span {{ ::vm.project.get('total_watchers') }}
p.description {{vm.project.get('description')}}
@@ -70,6 +69,8 @@ div.wrapper
title="{{::member.get('full_name')}}"
)
img(ng-src="{{::member.get('photo')}}", alt="{{::member.get('full_name')}}")
- svg.icon.icon-badge(ng-if="member.get('id') == vm.project.getIn(['owner', 'id'])")
- use(xlink:href="#icon-badge")
- title(translate="COMMON.OWNER")
+ tg-svg(
+ ng-if="member.get('id') == vm.project.getIn(['owner', 'id'])"
+ svg-icon="icon-badge"
+ svgTitleTranslate: "COMMON.OWNER"
+ )
diff --git a/app/modules/projects/transfer/transfer-project.jade b/app/modules/projects/transfer/transfer-project.jade
index 681aa535..1524d421 100644
--- a/app/modules/projects/transfer/transfer-project.jade
+++ b/app/modules/projects/transfer/transfer-project.jade
@@ -9,12 +9,10 @@
h3.transfer-project-title {{::vm.project.get("name")}}
.transfer-project-statistics
span.transfer-project-private(ng-if="vm.project.get('is_private')")
- svg.icon.icon-lock
- use(xlink:href="#icon-lock")
+ tg-svg(svg-icon="icon-lock")
span(translate="ADMIN.PROJECT_TRANSFER.PRIVATE")
span.transfer-project-members
- svg.icon.icon-team
- use(xlink:href="#icon-team")
+ tg-svg(svg-icon="icon-team")
span {{::vm.project.get("total_memberships")}}
p(
@@ -44,8 +42,10 @@
label.transfer-project-comment-label(
translate="ADMIN.PROJECT_TRANSFER.ADD_COMMENT"
)
- svg.icon.icon-close(ng-click="vm.hideComment()")
- use(xlink:href="#icon-close")
+ tg-svg(
+ svg-icon="icon-close"
+ ng-click="vm.hideComment()"
+ )
textarea.transfer-project-comment(
name="reason"
ng-model="vm.reason"
@@ -66,4 +66,4 @@
translate="ADMIN.PROJECT_TRANSFER.ACCEPT"
)
- div(ng-if="!vm.canBeOwnedByUser.valid", tg-cant-own-project-explanation)
+ tg-cant-own-project-explanation(ng-if="!vm.canBeOwnedByUser.valid")
diff --git a/app/modules/user-timeline/user-timeline-attachment/user-timeline-attachment.jade b/app/modules/user-timeline/user-timeline-attachment/user-timeline-attachment.jade
index 8c086e97..c93b3238 100644
--- a/app/modules/user-timeline/user-timeline-attachment/user-timeline-attachment.jade
+++ b/app/modules/user-timeline/user-timeline-attachment/user-timeline-attachment.jade
@@ -1,6 +1,5 @@
div.single-attachment
blockquote
a(ng-href="{{ attachment.get('url') }}", title="Click to download {{ attachment.get('filename') }}", target="_blank")
- svg.icon.icon-attachment
- use(xlink:href="#icon-attachment")
+ tg-svg(svg-icon="icon-attachment")
span {{attachment.get('filename')}}
diff --git a/app/partials/admin/admin-project-export.jade b/app/partials/admin/admin-project-export.jade
index 024e49da..7ab4997f 100644
--- a/app/partials/admin/admin-project-export.jade
+++ b/app/partials/admin/admin-project-export.jade
@@ -26,6 +26,5 @@ div.wrapper(ng-controller="ProjectProfileController as ctrl",
p.result-message
a.help-button(href="https://taiga.io/support/import-export-projects/", target="_blank")
- svg.icon.icon-question
- use(xlink:href="#icon-question")
+ tg-svg(svg-icon="icon-question")
span(translate="ADMIN.HELP")
diff --git a/app/partials/admin/admin-project-modules.jade b/app/partials/admin/admin-project-modules.jade
index 93ae5d6b..09f80d3a 100644
--- a/app/partials/admin/admin-project-modules.jade
+++ b/app/partials/admin/admin-project-modules.jade
@@ -19,8 +19,7 @@ div.wrapper(
form.module-container
.module.module-scrum(ng-class="{true:'active', false:''}[project.is_backlog_activated]")
.module-icon
- svg.icon.icon-scrum
- use(xlink:href="#icon-scrum")
+ tg-svg(svg-icon="icon-scrum")
.module-name(translate="ADMIN.MODULES.BACKLOG")
.module-desc
p(translate="ADMIN.MODULES.BACKLOG_DESCRIPTION")
@@ -47,9 +46,10 @@ div.wrapper(
placeholder="{{'ADMIN.MODULES.NUMBER_US_POINTS_HELP' | translate}}"
ng-model="project.total_story_points"
data-type="digits"
- )
- svg.icon.icon-save(ng-if="project.is_backlog_activated")
- use(xlink:href="#icon-save")
+ )
+ .options
+ a.save(href="", ng-if="project.is_backlog_activated")
+ tg-svg(svg-icon="icon-save")
.module-activation.module-direct-active
div.check
input.activate-input(
@@ -65,8 +65,7 @@ div.wrapper(
.module.module-kanban(ng-class="{true:'active', false:''}[project.is_kanban_activated]")
.module-icon
- svg.icon.icon-kanban
- use(xlink:href="#icon-kanban")
+ tg-svg(svg-icon="icon-kanban")
.module-name(translate="ADMIN.MODULES.KANBAN")
.module-desc(translate="ADMIN.MODULES.KANBAN_DESCRIPTION")
.module-activation.module-direct-active
@@ -84,8 +83,7 @@ div.wrapper(
.module.module-issues(ng-class="{true:'active', false:''}[project.is_issues_activated]")
.module-icon
- svg.icon.icon-issues
- use(xlink:href="#icon-issues")
+ tg-svg(svg-icon="icon-issues")
.module-name(translate="ADMIN.MODULES.ISSUES")
.module-desc(translate="ADMIN.MODULES.ISSUES_DESCRIPTION")
.module-activation.module-direct-active
@@ -103,8 +101,7 @@ div.wrapper(
.module.module-wiki(ng-class="{true:'active', false:''}[project.is_wiki_activated]")
.module-icon
- svg.icon.icon-wiki
- use(xlink:href="#icon-wiki")
+ tg-svg(svg-icon="icon-wiki")
.module-name(translate="ADMIN.MODULES.WIKI")
.module-desc(translate="ADMIN.MODULES.WIKI_DESCRIPTION")
.module-activation.module-direct-active
@@ -122,8 +119,7 @@ div.wrapper(
.module.module-videoconference(ng-class="{true:'active', false:''}[isVideoconferenceActivated]")
.module-icon
- svg.icon.icon-bubble-empty
- use(xlink:href="#icon-bubble-empty")
+ tg-svg(svg-icon="icon-bubble-empty")
.module-name(translate="ADMIN.MODULES.MEETUP")
.module-desc
p(translate="ADMIN.MODULES.MEETUP_DESCRIPTION")
@@ -157,8 +153,9 @@ div.wrapper(
data-type="url"
data-required="true"
)
- svg.icon.icon-save(ng-if="project.videoconferences")
- use(xlink:href="#icon-save")
+ fieldset.options
+ a.save(href="", ng-if="project.videoconferences")
+ tg-svg(svg-icon="icon-save")
.module-activation
div.check
diff --git a/app/partials/admin/admin-project-profile.jade b/app/partials/admin/admin-project-profile.jade
index 7cd2f329..61516d24 100644
--- a/app/partials/admin/admin-project-profile.jade
+++ b/app/partials/admin/admin-project-profile.jade
@@ -83,7 +83,6 @@ div.wrapper(
owner="project.owner",
project-id="project.id"
)
-
fieldset(ng-if="project.owner.id == user.id")
tg-admin-project-change-owner.admin-project-profile-owner-actions(
members="project.members.length"
@@ -95,9 +94,10 @@ div.wrapper(
fieldset.looking-for-people
.looking-for-people-selector
span {{ 'ADMIN.PROJECT_PROFILE.RECRUITING' | translate }}
- svg.icon.icon-recruit
- use(xlink:href="#icon-recruit")
- title {{ 'ADMIN.PROJECT_PROFILE.RECRUITING_MESSAGE' | translate }}"
+ tg-svg(
+ svg-icon="icon-recruit",
+ svg-title-translate="ADMIN.PROJECT_PROFILE.RECRUITING_MESSAGE"
+ )
div.check
input(
type="checkbox",
@@ -146,9 +146,10 @@ div.wrapper(
href="https://taiga.io/support/whats-the-difference-between-public-and-private-projects/"
target="_blank"
)
- svg.icon.icon-question
- use(xlink:href="#icon-question")
- title {{ 'ADMIN.PROJECT_PROFILE.PRIVATE_OR_PUBLIC' | translate }}
+ tg-svg(
+ svg-icon="icon-question",
+ svg-title-translate="ADMIN.PROJECT_PROFILE.PRIVATE_OR_PUBLIC"
+ )
span {{'ADMIN.PROJECT_PROFILE.PRIVATE_OR_PUBLIC' | translate }}
button.button-green.submit-button(
type="submit"
diff --git a/app/partials/admin/admin-project-reports.jade b/app/partials/admin/admin-project-reports.jade
index bde79213..b6bf41c5 100644
--- a/app/partials/admin/admin-project-reports.jade
+++ b/app/partials/admin/admin-project-reports.jade
@@ -22,6 +22,5 @@ div.wrapper(ng-controller="ProjectProfileController as ctrl",
div
a.help-button(href="https://taiga.io/support/csv-reports/", target="_blank")
- svg.icon.icon-question
- use(xlink:href="#icon-question")
+ tg-svg(svg-icon="icon-question")
span(translate="ADMIN.REPORTS.HELP")
diff --git a/app/partials/admin/admin-roles.jade b/app/partials/admin/admin-roles.jade
index 1afdcc9b..657849c2 100644
--- a/app/partials/admin/admin-roles.jade
+++ b/app/partials/admin/admin-roles.jade
@@ -22,13 +22,11 @@ div.wrapper.roles(ng-controller="RolesController as ctrl",
.edit-role
input(type="text", value="{{ role.name }}")
a.save(href="", title="{{'COMMON.SAVE' | translate}}")
- svg.icon.icon-save
- use(xlink:href="#icon-save")
+ tg-svg(svg-icon="icon-save")
p.total
span.role-name(title="{{'ADMIN.ROLES.COUNT_MEMBERS' | translate}}") {{ role.name }}
- a.edit-value
- svg.icon.icon-edit
- use(xlink:href="#icon-edit")
+ a.edit-value(href="")
+ tg-svg(svg-icon="icon-edit")
div.any-computable-role(ng-hide="anyComputableRole", translate="ADMIN.ROLES.WARNING_NO_ROLE")
diff --git a/app/partials/admin/admin-third-parties-bitbucket.jade b/app/partials/admin/admin-third-parties-bitbucket.jade
index b56beb19..73a02bec 100644
--- a/app/partials/admin/admin-third-parties-bitbucket.jade
+++ b/app/partials/admin/admin-third-parties-bitbucket.jade
@@ -24,8 +24,7 @@ div.wrapper.roles(tg-bitbucket-webhooks, ng-controller="BitbucketController as c
.field-with-option
input(type="text", ng-model="bitbucket.webhooks_url", name="payload-url", readonly="readonly", placeholder="{{'ADMIN.THIRD_PARTIES.PAYLOAD_URL' | translate}}", id="payload-url")
.option-wrapper.select-input-content
- svg.icon.icon-clipboard
- use(xlink:href="#icon-clipboard")
+ tg-svg(svg-icon="icon-clipboard")
.help-copy(translate="COMMON.COPY_TO_CLIPBOARD")
fieldset
@@ -35,6 +34,5 @@ div.wrapper.roles(tg-bitbucket-webhooks, ng-controller="BitbucketController as c
button.button-green.submit-button(type="submit", title="{{'COMMON.SAVE' | translate}}", translate="COMMON.SAVE")
a.help-button(href="https://taiga.io/support/bitbucket-integration/", target="_blank")
- svg.icon.icon-question
- use(xlink:href="#icon-question")
+ tg-svg(svg-icon="icon-question")
span(translate="ADMIN.HELP")
diff --git a/app/partials/admin/admin-third-parties-github.jade b/app/partials/admin/admin-third-parties-github.jade
index 3500c73a..c779633b 100644
--- a/app/partials/admin/admin-third-parties-github.jade
+++ b/app/partials/admin/admin-third-parties-github.jade
@@ -23,13 +23,11 @@ div.wrapper.roles(tg-github-webhooks, ng-controller="GithubController as ctrl",
.field-with-option
input(type="text", ng-model="github.webhooks_url", name="payload-url", readonly="readonly", placeholder="{{'ADMIN.THIRD_PARTIES.PAYLOAD_URL' | translate}}", id="payload-url")
.option-wrapper.select-input-content
- svg.icon.icon-clipboard
- use(xlink:href="#icon-clipboard")
+ tg-svg(svg-icon="icon-clipboard")
.help-copy(translate="COMMON.COPY_TO_CLIPBOARD")
button.button-green.submit-button(type="submit", title="{{'COMMON.SAVE' | translate}}", translate="COMMON.SAVE")
a.help-button(href="https://taiga.io/support/github-integration/", target="_blank")
- svg.icon.icon-question
- use(xlink:href="#icon-question")
+ tg-svg(svg-icon="icon-question")
span(translate="ADMIN.HELP")
diff --git a/app/partials/admin/admin-third-parties-gitlab.jade b/app/partials/admin/admin-third-parties-gitlab.jade
index 8867eee3..6f91a62d 100644
--- a/app/partials/admin/admin-third-parties-gitlab.jade
+++ b/app/partials/admin/admin-third-parties-gitlab.jade
@@ -23,8 +23,7 @@ div.wrapper.roles(tg-gitlab-webhooks, ng-controller="GitlabController as ctrl",
.field-with-option
input(type="text", ng-model="gitlab.webhooks_url", name="payload-url", readonly="readonly", placeholder="{{'ADMIN.THIRD_PARTIES.PAYLOAD_URL' | translate}}", id="payload-url")
.option-wrapper.select-input-content
- svg.icon.icon-clipboard
- use(xlink:href="#icon-clipboard")
+ tg-svg(svg-icon="icon-clipboard")
.help-copy(translate="COMMON.COPY_TO_CLIPBOARD")
fieldset
@@ -34,6 +33,5 @@ div.wrapper.roles(tg-gitlab-webhooks, ng-controller="GitlabController as ctrl",
button.button-green.submit-button(type="submit", title="{{'COMMON.SAVE' | translate}}", translate="COMMON.SAVE")
a.help-button(href="https://taiga.io/support/gitlab-integration/", target="_blank")
- svg.icon.icon-question
- use(xlink:href="#icon-question")
+ tg-svg(svg-icon="icon-question")
span(translate="ADMIN.HELP")
diff --git a/app/partials/admin/admin-third-parties-webhooks.jade b/app/partials/admin/admin-third-parties-webhooks.jade
index 0b9349e6..774a6569 100644
--- a/app/partials/admin/admin-third-parties-webhooks.jade
+++ b/app/partials/admin/admin-third-parties-webhooks.jade
@@ -48,12 +48,16 @@ div.wrapper.roles(ng-controller="WebhooksController as ctrl",
ng-model="webhook.key"
)
div.webhook-options
- a.edit-existing(href="", title="{{'ADMIN.WEBHOOKS.SAVE' | translate}}")
- svg.icon.icon-save
- use(xlink:href="#icon-save")
- a.cancel-existing(href="", title="{{'ADMIN.WEBHOOKS.CANCEL' | translate}}")
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+ a.edit-existing(
+ href=""
+ title="{{'ADMIN.WEBHOOKS.SAVE' | translate}}"
+ )
+ tg-svg(svg-icon="icon-save")
+ a.cancel-existing(
+ href=""
+ title="{{'ADMIN.WEBHOOKS.CANCEL' | translate}}"
+ )
+ tg-svg(svg-icon="icon-close")
div.visualization-mode
div.row
@@ -66,14 +70,11 @@ div.wrapper.roles(ng-controller="WebhooksController as ctrl",
div.webhook-options
div.webhook-options-wrapper
a.test-webhook(href="", title="{{'ADMIN.WEBHOOKS.TEST' | translate}}")
- svg.icon.icon-check-empty
- use(xlink:href="#icon-check-empty")
+ tg-svg(svg-icon="icon-check-empty")
a.edit-webhook(href="", title="{{'ADMIN.WEBHOOKS.EDIT' | translate}}")
- svg.icon.icon-edit
- use(xlink:href="#icon-edit")
+ tg-svg(svg-icon="icon-edit")
a.delete-webhook(href="", title="{{'ADMIN.WEBHOOKS.DELETE' | translate}}")
- svg.icon.icon-trash
- use(xlink:href="#icon-trash")
+ tg-svg(svg-icon="icon-trash")
div.webhooks-history(ng-show="webhook.logs")
div.history-single-wrapper(ng-repeat="log in webhook.logs")
@@ -81,15 +82,14 @@ div.wrapper.roles(ng-controller="WebhooksController as ctrl",
div
span.history-response-icon(ng-class="log.validStatus ? 'history-success' : 'history-error'", title="{{log.status}}")
span.history-date(ng-bind="log.prettyDate")
- svg.toggle-log.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ a.toggle-log(href="")
+ tg-svg(svg-icon="icon-arrow-down")
div.history-single-response
div.history-single-request-header
span(translate="ADMIN.WEBHOOKS.REQUEST")
a.resend-request(href="", title="{{'ADMIN.WEBHOOKS.RESEND_REQUEST' | translate}}", data-log="{{log.id}}")
- svg.icon.icon-reload
- use(xlink:href="#icon-reload")
+ tg-svg(svg-icon="icon-reload")
span(translate="ADMIN.WEBHOOKS.RESEND_REQUEST")
div.history-single-request-body
div.response-container
@@ -117,13 +117,10 @@ div.wrapper.roles(ng-controller="WebhooksController as ctrl",
input(type="text", name="key", placeholder="{{'ADMIN.WEBHOOKS.TYPE_SERVICE_SECRET' | translate}}", data-required="true", ng-model="newValue.key")
div.webhook-options
a.add-new(href="", title="{{'ADMIN.WEBHOOKS.SAVE' | translate}}")
- svg.icon.icon-save
- use(xlink:href="#icon-save")
+ tg-svg(svg-icon="icon-save")
a.cancel-new(href="", title="{{'ADMIN.WEBHOOKS.CANCEL' | translate}}")
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+ tg-svg(svg-icon="icon-close")
a.help-button(href="https://taiga.io/support/webhooks/", target="_blank")
- svg.icon.icon-question
- use(xlink:href="#icon-question")
+ tg-svg(svg-icon="icon-question")
span(translate="ADMIN.HELP")
diff --git a/app/partials/admin/lightbox-add-members.jade b/app/partials/admin/lightbox-add-members.jade
index 5ba1f1b0..dbdc66b4 100644
--- a/app/partials/admin/lightbox-add-members.jade
+++ b/app/partials/admin/lightbox-add-members.jade
@@ -1,9 +1,4 @@
-a.close(
- href=""
- title="close"
-)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
.add-member-wrapper
h2.title(translate="LIGHTBOX.ADD_MEMBER.TITLE")
form.add-member-form(ng-submit="vm.submit()")
@@ -37,15 +32,13 @@ a.close(
ng-click="vm.addSingleMember()"
ng-if="$last && vm.canAddUsers"
)
- svg.icon.icon-add
- use(xlink:href="#icon-add")
+ tg-svg(svg-icon="icon-add")
a.remove-fieldset.ng-animate-disabled(
href=""
ng-click="vm.removeSingleMember($index)"
ng-if="!$last || ($last && !vm.canAddUsers && vm.membersLimit > 1)"
)
- svg.icon.icon-trash
- use(xlink:href="#icon-trash")
+ tg-svg(svg-icon="icon-trash")
tg-lightbox-add-members-warning-message(ng-if="vm.showWarningMessage", project="vm.project")
diff --git a/app/partials/admin/memberships-row-avatar.jade b/app/partials/admin/memberships-row-avatar.jade
index 294a0143..dd81bfd4 100644
--- a/app/partials/admin/memberships-row-avatar.jade
+++ b/app/partials/admin/memberships-row-avatar.jade
@@ -3,9 +3,10 @@ figure.avatar
figcaption
span.name <%- full_name %>
<% if (isOwner) { %>
- svg.icon.icon-badge
- use(xlink:href="#icon-badge")
- title(translate="COMMON.OWNER")
+ tg-svg(
+ svg-icon="icon-badge",
+ svg-title-translate="COMMON.OWNER"
+ )
<% } %>
div
span.pending <%- pending %>
diff --git a/app/partials/admin/lightbox-add-members-no-more=memberships-warning-message.jade b/app/partials/admin/memberships-warning-message.jade
similarity index 100%
rename from app/partials/admin/lightbox-add-members-no-more=memberships-warning-message.jade
rename to app/partials/admin/memberships-warning-message.jade
diff --git a/app/partials/admin/project-csv.jade b/app/partials/admin/project-csv.jade
index 559b1fd0..632c164c 100644
--- a/app/partials/admin/project-csv.jade
+++ b/app/partials/admin/project-csv.jade
@@ -10,14 +10,11 @@ section.project-csv(tg-select-input-text)
input(type="text", placeholder="{{'ADMIN.CSV.URL_FIELD_PLACEHOLDER' | translate}}",
readonly, ng-model="csvUrl")
div.option-wrapper.select-input-content
- svg.icon.icon-clipboard
- use(xlink:href="#icon-clipboard")
+ tg-svg(svg-icon="icon-clipboard")
a(href="", title="{{'ADMIN.CSV.TITLE_REGENERATE_URL' | translate}}", ng-click="ctrl.regenerateUuid()")
- svg.icon.icon-add(ng-hide="csvUrl")
- use(xlink:href="#icon-add")
+ tg-svg(svg-icon="icon-add", ng-hide="csvUrl")
span(ng-hide="csvUrl", translate="ADMIN.CSV.ACTION_GENERATE_URL")
- svg.icon.icon-reload(ng-Show="csvUrl")
- use(xlink:href="#icon-reload")
+ tg-svg(svg-icon="icon-reload", ng-show="csvUrl")
span(ng-Show="csvUrl", translate="ADMIN.CSV.ACTION_REGENERATE")
diff --git a/app/partials/backlog/backlog.jade b/app/partials/backlog/backlog.jade
index 11556f1a..def38f1d 100644
--- a/app/partials/backlog/backlog.jade
+++ b/app/partials/backlog/backlog.jade
@@ -12,8 +12,7 @@ div.wrapper(tg-backlog, ng-controller="BacklogController as ctrl",
include ../includes/components/summary
div.empty-burndown(ng-if="showGraphPlaceholder && project.i_am_admin")
- svg.icon.icon-graph
- use(xlink:href="#icon-graph")
+ tg-svg(svg-icon="icon-graph")
div.empty-text
p.title(translate="BACKLOG.CUSTOMIZE_GRAPH")
p {{'BACKLOG.CUSTOMIZE_GRAPH_TEXT' | translate}} #[a(href="", tg-nav="project-admin-project-profile-modules:project=project.slug", title="{{'BACKLOG.CUSTOMIZE_GRAPH_TITLE' | translate}}") {{'BACKLOG.CUSTOMIZE_GRAPH_ADMIN' | translate}}]
@@ -30,8 +29,7 @@ div.wrapper(tg-backlog, ng-controller="BacklogController as ctrl",
title="{{'BACKLOG.MOVE_US_TO_CURRENT_SPRINT' | translate}}"
id="move-to-current-sprint"
)
- svg.icon.icon-move
- use(xlink:href="#icon-move")
+ tg-svg(svg-icon="icon-move")
span.text(translate="BACKLOG.MOVE_US_TO_CURRENT_SPRINT")
a.trans-button.move-to-latest-sprint.move-to-sprint(
ng-if="!currentSprint"
@@ -39,8 +37,7 @@ div.wrapper(tg-backlog, ng-controller="BacklogController as ctrl",
title="{{'BACKLOG.MOVE_US_TO_LATEST_SPRINT' | translate}}"
id="move-to-latest-sprint"
)
- svg.icon.icon-move
- use(xlink:href="#icon-move")
+ tg-svg(svg-icon="icon-move")
span.text(translate="BACKLOG.MOVE_US_TO_LATEST_SPRINT")
a.trans-button(
ng-if="userstories.length"
diff --git a/app/partials/backlog/filter-selected.jade b/app/partials/backlog/filter-selected.jade
index 860c8423..29e0a12e 100644
--- a/app/partials/backlog/filter-selected.jade
+++ b/app/partials/backlog/filter-selected.jade
@@ -1,7 +1,9 @@
<% _.each(filters, function(f) { %>
-a.single-filter.selected(data-type!="<%- f.type %>", data-id!="<%- f.id %>")
- span.name(style!="<%- f.style %>")
- | <%- f.name %>
- svg.icon.icon-close.remove-filter
- use(xlink:href="#icon-close")
+.single-filter.selected(
+ data-type!="<%- f.type %>"
+ data-id!="<%- f.id %>"
+)
+ span.name(style!="<%- f.style %>") <%- f.name %>
+ a.remove-filter(href="")
+ tg-svg(svg-icon="icon-close")
<% }) %>
diff --git a/app/partials/backlog/sprint-header.jade b/app/partials/backlog/sprint-header.jade
index fb24bf95..71bb3238 100644
--- a/app/partials/backlog/sprint-header.jade
+++ b/app/partials/backlog/sprint-header.jade
@@ -1,12 +1,18 @@
.sprint-name
a.compact-sprint(href="", title="{{'BACKLOG.COMPACT_SPRINT' | translate}}")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
- a(ng-if="::isVisible", href="{{::taskboardUrl}}", title="{{'BACKLOG.GO_TO_TASKBOARD' | translate}}")
+ tg-svg(svg-icon="icon-arrow-right")
+ a(
+ ng-if="::isVisible"
+ href="{{::taskboardUrl}}"
+ title="{{'BACKLOG.GO_TO_TASKBOARD' | translate}}"
+ )
span {{::name}}
-
- svg.icon.icon-edit.edit-sprint(ng-if="::isEditable", href="", title="{{'BACKLOG.EDIT_SPRINT' | translate}}")
- use(xlink:href="#icon-edit")
+ a.edit-sprint(
+ ng-if="::isEditable"
+ href=""
+ title="{{'BACKLOG.EDIT_SPRINT' | translate}}"
+ )
+ tg-svg(svg-icon="icon-edit")
.sprint-summary
.sprint-date {{::estimatedDateRange}}
diff --git a/app/partials/common/components/add-button.jade b/app/partials/common/components/add-button.jade
index 22606398..043fc063 100644
--- a/app/partials/common/components/add-button.jade
+++ b/app/partials/common/components/add-button.jade
@@ -1,5 +1,4 @@
a.add-button(
href=""
)
- svg.icon.icon-add
- use(xlink:href="#icon-add")
+ tg-svg(svg-icon="icon-add")
diff --git a/app/partials/common/components/assigned-to.jade b/app/partials/common/components/assigned-to.jade
index 2588a8b5..7642ed6e 100644
--- a/app/partials/common/components/assigned-to.jade
+++ b/app/partials/common/components/assigned-to.jade
@@ -2,8 +2,7 @@
img(src!="<%- photo %>", alt!="<%- fullName %>")
<% if (isIocaine) { %>
.iocaine-symbol(title="{{ 'TASK.TITLE_ACTION_IOCAINE' | translate }}")
- svg.icon.icon-iocaine
- use(xlink:href="#icon-iocaine")
+ tg-svg(svg-icon="icon-iocaine")
<% }; %>
.assigned-to
@@ -24,8 +23,7 @@
<%- fullName %>
<% }; %>
<% if (isEditable && !isUnassigned) { %>
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
<% }; %>
<% if (isEditable && isUnassigned) { %>
@@ -39,9 +37,8 @@
<% }; %>
<% if (isEditable && !isUnassigned) { %>
- svg.icon.icon-close.remove-user(
- href=""
+ tg-svg.remove-user(
+ svg-icon="icon-close",
title="{{'COMMON.ASSIGNED_TO.DELETE_ASSIGNMENT' | translate}}"
)
- use(xlink:href="#icon-close")
<% } %>
diff --git a/app/partials/common/components/block-button.jade b/app/partials/common/components/block-button.jade
index 0a499ff2..ad993bd6 100644
--- a/app/partials/common/components/block-button.jade
+++ b/app/partials/common/components/block-button.jade
@@ -2,11 +2,9 @@ a.button-gray.item-block(
href=""
title="{{ 'COMMON.BLOCK_TITLE' | translate }}"
)
- svg.icon.icon-lock
- use(xlink:href="#icon-lock")
+ tg-svg(svg-icon="icon-lock")
a.button-red.item-unblock(
href=""
title="{{ 'COMMON.UNBLOCK_TITLE' | translate }}"
)
- svg.icon.icon-lock
- use(xlink:href="#icon-unlock")
+ tg-svg(svg-icon="icon-unlock")
diff --git a/app/partials/common/components/delete-button.jade b/app/partials/common/components/delete-button.jade
index 3f1d987c..18d13663 100644
--- a/app/partials/common/components/delete-button.jade
+++ b/app/partials/common/components/delete-button.jade
@@ -2,5 +2,4 @@ a.button-red.button-delete(
href=""
title="{{ 'COMMON.DELETE' | translate }}"
)
- svg.icon.icon-trash
- use(xlink:href="#icon-trash")
+ tg-svg(svg-icon="icon-trash")
diff --git a/app/partials/common/components/editable-description.jade b/app/partials/common/components/editable-description.jade
index 348ef613..f5b9f095 100644
--- a/app/partials/common/components/editable-description.jade
+++ b/app/partials/common/components/editable-description.jade
@@ -2,12 +2,14 @@ include wysiwyg.jade
.view-description
section.us-content.wysiwyg(tg-bind-html="item.description_html || noDescriptionMsg")
- svg.icon.icon-edit.edit
- use(xlink:href="#icon-edit")
+ tg-svg.edit(svg-icon="icon-edit")
.edit-description
textarea(ng-attr-placeholder="{{'COMMON.DESCRIPTION.EMPTY' | translate}}", ng-model="item.description", tg-markitup="tg-markitup")
+wysihelp
- span.save-container
- svg.save.icon.icon-save(title="{{'COMMON.SAVE' | translate}}")
- use(xlink:href="#icon-save")
+ div.save-container
+ span.save
+ tg-svg(
+ svg-icon="icon-save",
+ svg-title-translate="COMMON.SAVE"
+ )
diff --git a/app/partials/common/components/editable-subject.jade b/app/partials/common/components/editable-subject.jade
index e4cc7bb2..0a294cba 100644
--- a/app/partials/common/components/editable-subject.jade
+++ b/app/partials/common/components/editable-subject.jade
@@ -1,9 +1,14 @@
.view-subject
| {{ item.subject }}
- svg.edit.icon.icon-edit(href="" title="{{'COMMON.EDIT' | translate}}")
- use(xlink:href="#icon-edit")
+ tg-svg.edit(
+ svg-icon="icon-edit",
+ title="{{'COMMON.EDIT' | translate}}"
+ )
.edit-subject
input(type="text", ng-model="item.subject", data-required="true", data-maxlength="500", ng-model-options="{ debounce: 200 }")
span.save-container
- svg.save.icon.icon-save(href="", title="{{'COMMON.SAVE' | translate}}")
- use(xlink:href="#icon-save")
+ a.save(href="")
+ tg-svg(
+ svg-icon="icon-save"
+ svg-title-translate="COMMON.SAVE"
+ )
diff --git a/app/partials/common/components/watchers.jade b/app/partials/common/components/watchers.jade
index fb5d9771..7959982f 100644
--- a/app/partials/common/components/watchers.jade
+++ b/app/partials/common/components/watchers.jade
@@ -10,11 +10,11 @@
span <%- watcher.full_name_display %>
<% if(isEditable){ %>
- svg.icon.icon-trash.js-delete-watcher.delete-watcher(
+ tg-svg.js-delete-watcher.delete-watcher(
+ svg-icon="icon-trash",
+ svg-title-translate="COMMON.WATCHERS.DELETE",
data-watcher-id!="<%- watcher.id %>"
- title="{{'COMMON.WATCHERS.DELETE' | translate}}"
)
- use(xlink:href="#icon-trash")
<% }; %>
<% } %>
<% }); %>
diff --git a/app/partials/common/components/wysiwyg.jade b/app/partials/common/components/wysiwyg.jade
index 4c10f363..237dbfa9 100644
--- a/app/partials/common/components/wysiwyg.jade
+++ b/app/partials/common/components/wysiwyg.jade
@@ -2,6 +2,5 @@ mixin wysihelp
div.wysiwyg-help
span.drag-drop-help Attach files by dragging & dropping on the textarea above.
a.help-markdown(href="https://taiga.io/support/taiga-markdown-syntax/", target="_blank", title="{{'COMMON.WYSIWYG.MARKDOWN_HELP' | translate}}")
- svg.icon.icon-question
- use(xlink:href="#icon-question")
+ tg-svg(svg-icon="icon-question")
span(translate="COMMON.WYSIWYG.MARKDOWN_HELP")
diff --git a/app/partials/common/estimation/us-estimation-points-per-role.jade b/app/partials/common/estimation/us-estimation-points-per-role.jade
index 298960c0..e7a2fbb0 100644
--- a/app/partials/common/estimation/us-estimation-points-per-role.jade
+++ b/app/partials/common/estimation/us-estimation-points-per-role.jade
@@ -1,11 +1,10 @@
ul.points-per-role
<% _.each(roles, function(role) { %>
li.ticket-role-points.total(class!="<% if(editable){ %>clickable<% } %>", data-role-id!="<%- role.id %>", title!="<%- role.name %>")
- span.points
+ span.points
<%- role.points %>
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
- span.role
+ tg-svg(svg-icon="icon-arrow-down")
+ span.role
<%- role.name %>
<% }); %>
li.ticket-role-points.total
diff --git a/app/partials/common/estimation/us-estimation-total.jade b/app/partials/common/estimation/us-estimation-total.jade
index 013bd495..e2bb0388 100644
--- a/app/partials/common/estimation/us-estimation-total.jade
+++ b/app/partials/common/estimation/us-estimation-total.jade
@@ -1,6 +1,8 @@
a.us-points(href="", title!="<%= title %>", class!="<% if (!editable) { %>not-clickable<% } %>")
span.points-value <%= text %>
<% if (editable) { %>
- svg.icon.icon-arrow-down(tg-check-permission="modify_us")
- use(xlink:href="#icon-arrow-down")
+ tg-svg(
+ svg-icon="icon-arrow-down",
+ tg-check-permission="modify_us"
+ )
<% } %>
diff --git a/app/partials/common/history/history-activity.jade b/app/partials/common/history/history-activity.jade
index 7a7ce6ff..3b58f956 100644
--- a/app/partials/common/history/history-activity.jade
+++ b/app/partials/common/history/history-activity.jade
@@ -15,14 +15,16 @@
span(translate="COMMENTS.DELETED_INFO",
translate-values!="{ user: '<%- deleteCommentUser %>', date: '<%- deleteCommentDate %>'}")
<% } %>
- .comment.wysiwyg(ng-non-bindable)
- | <%= comment %>
+ .comment.wysiwyg
+ div(ng-non-bindable)
+ | <%= comment %>
<% if (!deleteCommentDate && mode !== "activity" && canDeleteComment) { %>
- svg.icon.icon-trash.comment-delete(
+ a.comment-delete(
+ href="",
+ title!="<%- deleteCommentActionTitle %>",
data-activity-id!="<%- activityId %>"
- title!="<%- deleteCommentActionTitle %>"
)
- use(xlink:href="#icon-trash")
+ tg-svg(svg-icon="icon-trash")
<% } %>
<% } %>
@@ -31,8 +33,7 @@
<% if (mode != "activity") { %>
a.changes-title(href="", title="{{'ACTIVITY.SHOW_ACTIVITY' | translate}}")
span <%- changesText %>
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
<% } %>
<% _.each(changes, function(change) { %>
| <%= change %>
diff --git a/app/partials/common/history/history-base.jade b/app/partials/common/history/history-base.jade
index bd5949e7..b085dd69 100644
--- a/app/partials/common/history/history-base.jade
+++ b/app/partials/common/history/history-base.jade
@@ -4,22 +4,22 @@ section.history
<% if (commentsVisible || historyVisible) { %>
ul.history-tabs
<% if (commentsVisible) { %>
- li(
- class="active"
- data-section-class="history-comments"
- )
- a(href="")
- svg.icon.icon-writer
- use(xlink:href="#icon-writer")
+ li
+ a(
+ href="",
+ class="active",
+ data-section-class="history-comments"
+ )
+ tg-svg(svg-icon="icon-writer")
span.tab-title(translate="COMMENTS.TITLE")
<% } %>
<% if (historyVisible) { %>
- li(
- data-section-class="history-activity"
- )
- a(href="")
- svg.icon.icon-timeline
- use(xlink:href="#icon-timeline")
+ li
+ a(
+ href="",
+ data-section-class="history-activity"
+ )
+ tg-svg(svg-icon="icon-timeline")
span.tab-title(translate="ACTIVITY.TITLE")
<% } %>
<% } %>
diff --git a/app/partials/common/history/history-deleted-comment.jade b/app/partials/common/history/history-deleted-comment.jade
index 51510e55..73a2f2e2 100644
--- a/app/partials/common/history/history-deleted-comment.jade
+++ b/app/partials/common/history/history-deleted-comment.jade
@@ -13,7 +13,6 @@
data-activity-id!="<%- activityId %>"
title="{{ 'COMMENTS.RESTORE' | translate }}"
)
- svg.icon.icon-reload
- use(xlink:href="#icon-reload")
+ tg-svg(svg-icon="icon-reload")
span(translate="COMMENTS.RESTORE")
<% } %>
diff --git a/app/partials/common/lightbox-feedback.jade b/app/partials/common/lightbox-feedback.jade
index f46019c6..afb63f3f 100644
--- a/app/partials/common/lightbox-feedback.jade
+++ b/app/partials/common/lightbox-feedback.jade
@@ -1,5 +1,4 @@
-svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
- use(xlink:href="#icon-close")
+tg-lightbox-close
form
h2.title(translate="LIGHTBOX.FEEDBACK.TITLE")
fieldset
diff --git a/app/partials/common/lightbox/lightbox-assigned-to-users.jade b/app/partials/common/lightbox/lightbox-assigned-to-users.jade
index 78916665..d25096e0 100644
--- a/app/partials/common/lightbox/lightbox-assigned-to-users.jade
+++ b/app/partials/common/lightbox/lightbox-assigned-to-users.jade
@@ -7,15 +7,14 @@
)
img(src!="<%- selected.photo %>")
a.user-list-name(
- href=""
+ href=""
title!="<%- selected.full_name_display %>"
)
| <%-selected.full_name_display %>
- svg.icon.icon-close.remove-assigned-to(
- href=""
- title="{{'COMMON.ASSIGNED_TO.REMOVE_ASSIGNED' | translate}}"
+ tg-svg.remove-assigned-to(
+ svg-icon="icon-close",
+ svg-title-translate="COMMON.ASSIGNED_TO.REMOVE_ASSIGNED"
)
- use(xlink:href="#icon-close")
<% } %>
<% _.each(users, function(user) { %>
diff --git a/app/partials/common/lightbox/lightbox-assigned-to.jade b/app/partials/common/lightbox/lightbox-assigned-to.jade
index d97ab443..2f5c598e 100644
--- a/app/partials/common/lightbox/lightbox-assigned-to.jade
+++ b/app/partials/common/lightbox/lightbox-assigned-to.jade
@@ -1,5 +1,4 @@
-svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
- use(xlink:href="#icon-close")
+tg-lightbox-close
div.form
h2.title(translate="LIGHTBOX.ASSIGNED_TO.SELECT")
diff --git a/app/partials/common/lightbox/lightbox-attachment-preview.jade b/app/partials/common/lightbox/lightbox-attachment-preview.jade
index bf401bbf..84223a72 100644
--- a/app/partials/common/lightbox/lightbox-attachment-preview.jade
+++ b/app/partials/common/lightbox/lightbox-attachment-preview.jade
@@ -1,6 +1,5 @@
.attachment-preview
- svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
- use(xlink:href="#icon-close")
+ tg-lightbox-close
a(href="{{::file.get('url')}}", title="{{::file.get('description')}}", target="_blank", download="{{::file.get('name')}}")
img(src="{{::file.get('url')}}")
diff --git a/app/partials/common/lightbox/lightbox-block.jade b/app/partials/common/lightbox/lightbox-block.jade
index d7bd60da..27d53701 100644
--- a/app/partials/common/lightbox/lightbox-block.jade
+++ b/app/partials/common/lightbox/lightbox-block.jade
@@ -1,5 +1,5 @@
-svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
- use(xlink:href="#icon-close")
+tg-lightbox-close
+
div.form
h2.title
fieldset
diff --git a/app/partials/common/lightbox/lightbox-change-owner.jade b/app/partials/common/lightbox/lightbox-change-owner.jade
index 8fe0a128..a1264699 100644
--- a/app/partials/common/lightbox/lightbox-change-owner.jade
+++ b/app/partials/common/lightbox/lightbox-change-owner.jade
@@ -1,5 +1,4 @@
-svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
- use(xlink:href="#icon-close")
+tg-lightbox-close
.form
h2.title(translate="LIGHTBOX.CHANGE_OWNER.TITLE")
@@ -53,12 +52,12 @@ svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
)
fieldset(ng-if="vm.commentOpen")
- svg.icon.icon-close(
- ng-click="vm.commentOpen = false"
+ tg-svg(
+ svg-icon="icon-close",
+ ng-click="vm.commentOpen = false",
href="",
title="{{'COMMON.CLOSE' | translate}}"
)
- use(xlink:href="#icon-close")
label(translate="LIGHTBOX.CHANGE_OWNER.ADD_COMMENT")
textarea(ng-model="vm.comment")
diff --git a/app/partials/common/lightbox/lightbox-import-error.jade b/app/partials/common/lightbox/lightbox-import-error.jade
index 36273ea6..8f4e35c9 100644
--- a/app/partials/common/lightbox/lightbox-import-error.jade
+++ b/app/partials/common/lightbox/lightbox-import-error.jade
@@ -1,9 +1,4 @@
-a.close(
- href=""
- title="{{'COMMON.CLOSE' | translate}}"
-)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
.content(ng-switch="key")
.private-space(ng-switch-when="private-space")
diff --git a/app/partials/common/lightbox/lightbox-leave-project-warning.jade b/app/partials/common/lightbox/lightbox-leave-project-warning.jade
index 51fd7caa..9f6f4627 100644
--- a/app/partials/common/lightbox/lightbox-leave-project-warning.jade
+++ b/app/partials/common/lightbox/lightbox-leave-project-warning.jade
@@ -1,9 +1,7 @@
-a.close(href="", title="{{'COMMON.CLOSE' | translate}}")
- svg.icon.icon-close(title="{{'COMMON.CLOSE' | translate}}")
- use(xlink:href="#icon-close")
+tg-lightbox-close
+
div.content
- svg.icon.icon-exclamation
- use(xlink:href="#icon-exclamation")
+ tg-svg(svg-icon="icon-exclamation")
h2.title {{'LIGHTBOX.LEAVE_PROJECT_WARNING.TITLE' | translate}}
diff --git a/app/partials/common/lightbox/lightbox-request-ownership.jade b/app/partials/common/lightbox/lightbox-request-ownership.jade
index 54247951..1183a5d2 100644
--- a/app/partials/common/lightbox/lightbox-request-ownership.jade
+++ b/app/partials/common/lightbox/lightbox-request-ownership.jade
@@ -1,6 +1,4 @@
-a.close(href="", title="{{'COMMON.CLOSE' | translate}}")
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
.content
h2.title(translate="ADMIN.PROJECT_PROFILE.REQUEST_OWNERSHIP_CONFIRMATION_TITLE")
diff --git a/app/partials/common/lightbox/lightbox-users.jade b/app/partials/common/lightbox/lightbox-users.jade
index d6693258..e9556128 100644
--- a/app/partials/common/lightbox/lightbox-users.jade
+++ b/app/partials/common/lightbox/lightbox-users.jade
@@ -1,5 +1,5 @@
-svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
- use(xlink:href="#icon-close")
+tg-lightbox-close
+
div.form
h2.title(translate="COMMON.WATCHERS.ADD")
fieldset
diff --git a/app/partials/common/tag/lb-tag-line-tags.jade b/app/partials/common/tag/lb-tag-line-tags.jade
index 7f95583e..cfe107d7 100644
--- a/app/partials/common/tag/lb-tag-line-tags.jade
+++ b/app/partials/common/tag/lb-tag-line-tags.jade
@@ -1,6 +1,6 @@
<% _.each(tags, function(tag) { %>
span(class="tag", style!="<%- tag.style %>")
span.tag-name <%- tag.name %>
- svg.icon.icon-close.remove-tag(title="{{ 'COMMON.TAGS.DELETE' | translate }}")
- use(xlink:href="#icon-close")
+ a.remove-tag(href="", title="{{'COMMON.TAGS.DELETE' | translate}}")
+ tg-svg(svg-icon="icon-close")
<% }); %>
diff --git a/app/partials/common/tag/lb-tag-line.jade b/app/partials/common/tag/lb-tag-line.jade
index 5fe8414b..7723823e 100644
--- a/app/partials/common/tag/lb-tag-line.jade
+++ b/app/partials/common/tag/lb-tag-line.jade
@@ -4,5 +4,4 @@ input.tag-input(
placeholder="{{'COMMON.TAGS.PLACEHOLDER' | translate}}"
)
span.save.hidden(title="{{'COMMON.SAVE' | translate}}")
- svg.icon.icon-save
- use(xlink:href="#icon-save")
+ tg-svg(svg-icon="icon-save")
diff --git a/app/partials/common/tag/tag-line.jade b/app/partials/common/tag/tag-line.jade
index 2d205441..336b3731 100644
--- a/app/partials/common/tag/tag-line.jade
+++ b/app/partials/common/tag/tag-line.jade
@@ -1,11 +1,9 @@
.tags-container
a(href="#", class="add-tag hidden", title="{{'COMMON.TAGS.ADD' | translate}}")
- svg.icon.icon-add
- use(xlink:href="#icon-add")
+ tg-svg(svg-icon="icon-add")
span.add-tag-text(translate="COMMON.TAGS.ADD")
span.add-tag-input
input(type="text", placeholder="{{'COMMON.TAGS.PLACEHOLDER' | translate}}", class="tag-input hidden")
span.save.hidden(title="{{'COMMON.SAVE' | translate}}")
- svg.icon.icon-save
- use(xlink:href="#icon-save")
+ tg-svg(svg-icon="icon-save")
\ No newline at end of file
diff --git a/app/partials/common/tag/tags-line-tags.jade b/app/partials/common/tag/tags-line-tags.jade
index 9ea57c69..90b934e4 100644
--- a/app/partials/common/tag/tags-line-tags.jade
+++ b/app/partials/common/tag/tags-line-tags.jade
@@ -2,7 +2,7 @@
span(class="tag", style!="border-left: 5px solid <%- tag.color %>;")
span.tag-name <%- tag.name %>
<% if (isEditable) { %>
- svg.icon.icon-close.remove-tag(title="{{ 'COMMON.TAGS.DELETE' | translate }}")
- use(xlink:href="#icon-close")
+ a.remove-tag(href="", title="{{'COMMON.TAGS.DELETE' | translate}}")
+ tg-svg(svg-icon="icon-close")
<% } %>
<% }); %>
diff --git a/app/partials/common/wysiwyg/wysiwyg-markitup-preview.jade b/app/partials/common/wysiwyg/wysiwyg-markitup-preview.jade
index 791c2d2b..8555db5d 100644
--- a/app/partials/common/wysiwyg/wysiwyg-markitup-preview.jade
+++ b/app/partials/common/wysiwyg/wysiwyg-markitup-preview.jade
@@ -1,6 +1,8 @@
.preview
.actions
- svg.edit.icon.icon-edit(title="{{'COMMON.WYSIWYG.EDIT_BUTTON' | translate}}")
- use(xlink:href="#icon-edit")
+ tg-svg.edit(
+ svg-icon="icon-edit",
+ svg-title-translate="COMMON.WYSIWYG.EDIT_BUTTON"
+ )
.content.wysiwyg
| <%= data %>
diff --git a/app/partials/custom-attributes/custom-attribute-value-edit.jade b/app/partials/custom-attributes/custom-attribute-value-edit.jade
index a62c4f53..a716304a 100644
--- a/app/partials/custom-attributes/custom-attribute-value-edit.jade
+++ b/app/partials/custom-attributes/custom-attribute-value-edit.jade
@@ -22,5 +22,5 @@ form.custom-field-single.editable
<% } %>
div.custom-field-options
- svg.icon.icon-save.js-save-description(title="{{'COMMON.CUSTOM_ATTRIBUTES.SAVE' | translate}}")
- use(xlink:href="#icon-save")
+ a.js-save-description(href="", title="{{'COMMON.CUSTOM_ATTRIBUTES.SAVE' | translate}}")
+ tg-svg(svg-icon="icon-save")
diff --git a/app/partials/custom-attributes/custom-attribute-value.jade b/app/partials/custom-attributes/custom-attribute-value.jade
index 51e7bfeb..0350a24d 100644
--- a/app/partials/custom-attributes/custom-attribute-value.jade
+++ b/app/partials/custom-attributes/custom-attribute-value.jade
@@ -18,6 +18,6 @@
<% if (isEditable) { %>
.custom-field-options
- svg.icon.icon-edit.js-edit-description(title="{{'COMMON.CUSTOM_ATTRIBUTES.EDIT' | translate}}")
- use(xlink:href="#icon-edit")
+ a.js-edit-description(href="", title="{{'COMMON.CUSTOM_ATTRIBUTES.EDIT' | translate}}")
+ tg-svg(svg-icon="icon-edit")
<% } %>
diff --git a/app/partials/custom-attributes/custom-attributes-values.jade b/app/partials/custom-attributes/custom-attributes-values.jade
index 09d7ecf9..e2dbdcd3 100644
--- a/app/partials/custom-attributes/custom-attributes-values.jade
+++ b/app/partials/custom-attributes/custom-attributes-values.jade
@@ -2,7 +2,7 @@ section.duty-custom-fields(ng-show="ctrl.customAttributes.length")
div.custom-fields-header
span(translate="COMMON.CUSTOM_ATTRIBUTES.CUSTOM_FIELDS")
// Remove .open class on click on this button in both .icon and .custom-fields-body to close
- svg.icon.icon-arrow-down(class!="<% if (!collapsed) { %>open<% } %>")
- use(xlink:href="#icon-arrow-down")
+ a.collapse(href="", class!="<% if (!collapsed) { %>open<% } %>")
+ tg-svg(svg-icon="icon-arrow-down")
div.custom-fields-body(class!="<% if (!collapsed) { %>open<% } %>")
div(ng-repeat="att in ctrl.customAttributes", tg-custom-attribute-value="ctrl.getAttributeValue(att)", required-edition-perm!="<%- requiredEditionPerm %>")
diff --git a/app/partials/includes/components/addnewtask.jade b/app/partials/includes/components/addnewtask.jade
index 6de3e427..03ce69e4 100644
--- a/app/partials/includes/components/addnewtask.jade
+++ b/app/partials/includes/components/addnewtask.jade
@@ -1,14 +1,13 @@
-svg.icon.icon-add(
- tg-check-permission="add_task"
- href=""
- title="{{'TASKBOARD.TITLE_ACTION_ADD' | translate}}"
- ng-click="ctrl.addNewTask('standard', us)"
+tg-svg.add-action(
+ tg-check-permission="add_task",
+ title="{{'TASKBOARD.TITLE_ACTION_ADD' | translate}}",
+ ng-click="ctrl.addNewTask('standard', us)",
+ svg-icon="icon-add"
)
- use(xlink:href="#icon-add")
-svg.icon.icon-bulk(
- tg-check-permission="add_task"
- href=""
- title="{{'TASKBOARD.TITLE_ACTION_ADD_BULK' | translate}}"
- ng-click="ctrl.addNewTask('bulk', us)"
+
+tg-svg.bulk-action(
+ title="{{'TASKBOARD.TITLE_ACTION_ADD_BULK' | translate}}",
+ ng-click="ctrl.addNewTask('bulk', us)",
+ tg-check-permission="add_task",
+ svg-icon="icon-bulk"
)
- use(xlink:href="#icon-bulk")
diff --git a/app/partials/includes/components/addnewus.jade b/app/partials/includes/components/addnewus.jade
index 27a9d870..80ba3a1f 100644
--- a/app/partials/includes/components/addnewus.jade
+++ b/app/partials/includes/components/addnewus.jade
@@ -6,5 +6,4 @@ div.new-us
a.button-bulk(href="", title="{{'US.ADD_BULK' | translate}}",
ng-click="ctrl.addNewUs('bulk')",
tg-check-permission="add_us")
- svg.icon.icon-bulk
- use(xlink:href="#icon-bulk")
+ tg-svg(svg-icon="icon-bulk")
diff --git a/app/partials/includes/components/backlog-row.jade b/app/partials/includes/components/backlog-row.jade
index e564a31b..554e617a 100644
--- a/app/partials/includes/components/backlog-row.jade
+++ b/app/partials/includes/components/backlog-row.jade
@@ -13,8 +13,7 @@ div.row.us-item-row(
ng-class="{'inactive': !us.total_voters, 'is-voted': us.is_voter}"
title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:us.total_voters||0}:'messageformat' }}"
)
- svg.icon.icon-upvote
- use(xlink:href="#icon-upvote")
+ tg-svg(svg-icon="icon-upvote")
span {{ ::us.total_voters }}
div.user-stories
div.tags-block(tg-colorize-tags="us.tags", tg-colorize-tags-type="backlog")
@@ -34,27 +33,26 @@ div.row.us-item-row(
ng-click="ctrl.editUserStory(us.project, us.ref, $event)"
title="{{'COMMON.EDIT' | translate}}"
)
- svg.icon.icon-edit
- use(xlink:href="#icon-edit")
-
+ tg-svg(svg-icon="icon-edit")
+
a.icon-delete(
href=""
tg-check-permission="delete_us"
ng-click="ctrl.deleteUserStory(us)"
title="{{'COMMON.DELETE' | translate}}"
)
- svg.icon.icon-trash
- use(xlink:href="#icon-trash")
+ tg-svg(svg-icon="icon-trash")
div.status(tg-us-status="us" on-update="ctrl.updateUserStoryStatus()")
a.us-status(href="", title="{{'BACKLOG.STATUS_NAME' | translate}}")
span.us-status-bind
- svg.icon.icon-arrow-down(tg-check-permission="modify_us")
- use(xlink:href="#icon-arrow-down")
+ tg-svg(
+ tg-check-permission="modify_us",
+ svg-icon="icon-arrow-down"
+ )
div.points(tg-backlog-us-points="us")
a.us-points(href="", title="{{'COMMON.FIELDS.POINTS' | translate}}")
a(tg-check-permission="modify_us", href="", title="{{'COMMON.DRAG' | translate}}")
- svg.icon.icon-drag
- use(xlink:href="#icon-drag")
+ tg-svg(svg-icon="icon-drag")
diff --git a/app/partials/includes/components/notification-message.jade b/app/partials/includes/components/notification-message.jade
index aae6172b..8a1a1467 100644
--- a/app/partials/includes/components/notification-message.jade
+++ b/app/partials/includes/components/notification-message.jade
@@ -15,18 +15,16 @@ div.notification-message.notification-message-success
p
div.notification-message.notification-message-error
- svg.icon.icon-error
- use(xlink:href="#icon-error")
+ tg-svg(svg-icon="icon-error")
div.text
- h4.warning
- p
- svg.icon.icon-close(href="", title="{{'NOTIFICATION.CLOSE' | translate}}")
- use(xlink:href="#icon-close")
+ h4.warning(translate="NOTIFICATION.WARNING")
+ p(translate="NOTIFICATION.WARNING_TEXT")
+ a.close(href="", title="{{'NOTIFICATION.CLOSE' | translate}}")
+ tg-svg(svg-icon="icon-close")
div.notification-light.notification-message-light-error
div.text
h4.warning
p
a.close(href="", title="{{'NOTIFICATION.CLOSE' | translate}}")
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+ tg-svg(svg-icon="icon-close")
diff --git a/app/partials/includes/components/sprint-summary.jade b/app/partials/includes/components/sprint-summary.jade
index 87244b25..364a336a 100644
--- a/app/partials/includes/components/sprint-summary.jade
+++ b/app/partials/includes/components/sprint-summary.jade
@@ -13,8 +13,7 @@ div.summary.large-summary
span.description(translate="BACKLOG.SPRINT_SUMMARY.COMPLETED_POINTS")
div.summary-stats
- svg.icon.icon-bulk
- use(xlink:href="#icon-bulk")
+ tg-svg(svg-icon="icon-bulk")
span.number(ng-bind="stats.openTasks|default:'--'")
span.description(translate="BACKLOG.SPRINT_SUMMARY.OPEN_TASKS")
div.summary-stats
@@ -22,11 +21,9 @@ div.summary.large-summary
span.description(translate="BACKLOG.SPRINT_SUMMARY.CLOSED_TASKS")
div.summary-stats(title="{{'COMMON.IOCAINE_TEXT' | translate}}")
- svg.icon.icon-iocaine
- use(xlink:href="#icon-iocaine")
+ tg-svg(svg-icon="icon-iocaine")
span.number(ng-bind="stats.iocaine_doses|default:'--'")
span.description(translate="BACKLOG.SPRINT_SUMMARY.IOCAINE_DOSES")
-
+
div.stats.toggle-analytics-visibility(title="{{'BACKLOG.SPRINT_SUMMARY.SHOW_STATISTICS_TITLE' | translate}}")
- svg.icon.icon-graph
- use(xlink:href="#icon-graph")
+ tg-svg(svg-icon="icon-graph")
diff --git a/app/partials/includes/components/summary.jade b/app/partials/includes/components/summary.jade
index 282f43e5..6bff489d 100644
--- a/app/partials/includes/components/summary.jade
+++ b/app/partials/includes/components/summary.jade
@@ -22,5 +22,4 @@ div.summary
title="{{'BACKLOG.SPRINT_SUMMARY.TOGGLE_BAKLOG_GRAPH' | translate}}",
ng-if="!showGraphPlaceholder"
)
- svg.icon.icon-graph
- use(xlink:href="#icon-graph")
+ tg-svg(svg-icon="icon-graph")
diff --git a/app/partials/includes/components/taskboard-task.jade b/app/partials/includes/components/taskboard-task.jade
index 4716a763..07808869 100644
--- a/app/partials/includes/components/taskboard-task.jade
+++ b/app/partials/includes/components/taskboard-task.jade
@@ -1,18 +1,18 @@
div.taskboard-tagline(tg-colorize-tags="task.tags", tg-colorize-tags-type="taskboard")
div.taskboard-task-inner
- div.taskboard-user-avatar(tg-taskboard-user-avatar, users="usersById", task="task", project="project", ng-class="{iocaine: task.is_iocaine}")
- svg.icon.icon-iocaine(
+ div.taskboard-user-avatar(tg-taskboard-user-avatar, users="usersById", task="task", project="project")
+ tg-svg.iocaine(
ng-if="task.is_iocaine"
- title="{{'COMMON.IOCAINE_TEXT' | translate}}"
+ svg-icon="icon-iocaine",
+ svg-title="{{'COMMON.IOCAINE_TEXT' | translate}}"
)
- use(xlink:href="#icon-iocaine")
p.taskboard-text
a.task-assigned(href="", title="{{'TASKBOARD.TITLE_ACTION_ASSIGN' | translate}}")
span.task-num(tg-bo-ref="task.ref")
a.task-name(href="", title="#{{ ::task.ref }} {{ ::task.subject }}", ng-bind="task.subject",
tg-nav="project-tasks-detail:project=project.slug,ref=task.ref")
- svg.icon.icon-edit(
+ tg-svg.edit-task(
tg-check-permission="modify_task"
- title="{{'TASKBOARD.TITLE_ACTION_EDIT' | translate}}"
+ svg-icon="icon-edit",
+ svg-title-translate="TASKBOARD.TITLE_ACTION_EDIT"
)
- use(xlink:href="#icon-edit")
diff --git a/app/partials/includes/modules/admin/admin-custom-attributes.jade b/app/partials/includes/modules/admin/admin-custom-attributes.jade
index 073dcbe5..ddbb11b0 100644
--- a/app/partials/includes/modules/admin/admin-custom-attributes.jade
+++ b/app/partials/includes/modules/admin/admin-custom-attributes.jade
@@ -1,51 +1,60 @@
section.custom-fields-table.basic-table
- div.project-values-title
+ .project-values-title
h2 {{ customFieldSectionTitle | translate }}
a.button.button-gray.show-add-new.js-add-custom-field-button(
href=""
title="{{ customFieldButtonTitle | translate }}"
+ translate="ADMIN.CUSTOM_ATTRIBUTES.ADD"
)
- span(translate="ADMIN.CUSTOM_ATTRIBUTES.ADD")
- div.table-header
- div.row
- div.custom-name
- span(translate="COMMON.FIELDS.NAME")
- div.custom-description
- span(translate="COMMON.FIELDS.DESCRIPTION")
- div.custom-field-type
- span(translate="COMMON.FIELDS.TYPE")
- div.custom-options
+ .table-header
+ .row
+ .custom-name(translate="COMMON.FIELDS.NAME")
+ .custom-description(translate="COMMON.FIELDS.DESCRIPTION")
+ .custom-field-type(translate="COMMON.FIELDS.TYPE")
+ .custom-options
- div.table-body
- div.js-sortable
- div(ng-repeat="attr in customAttributes track by attr.id", tg-bind-scope)
+ .table-body
+ .js-sortable
+ div(
+ ng-repeat="attr in customAttributes track by attr.id"
+ tg-bind-scope
+ )
form.js-form(tg-bind-scope)
div.row.single-custom-field.js-view-custom-field
- svg.icon.icon-drag
- use(xlink:href="#icon-drag")
- div.custom-name
- span {{ attr.name }}
- div.custom-description
- span {{ attr.description }}
+ tg-svg(svg-icon="icon-drag")
+ div.custom-name {{ attr.name }}
+ div.custom-description {{ attr.description }}
div.custom-field-type(ng-switch on="attr.type")
- //- See TYPE_CHOICES in app/coffee/modules/admin/project-values.coffee
- span(ng-switch-default, translate="ADMIN.CUSTOM_FIELDS.FIELD_TYPE_TEXT")
- span(ng-switch-when="multiline", translate="ADMIN.CUSTOM_FIELDS.FIELD_TYPE_MULTI")
- span(ng-switch-when="date", translate="ADMIN.CUSTOM_FIELDS.FIELD_TYPE_DATE")
- span(ng-switch-when="url", translate="ADMIN.CUSTOM_FIELDS.FIELD_TYPE_URL")
- div.custom-options
- div.custom-options-wrapper
- svg.js-edit-custom-field-button.icon.icon-edit(
- href=""
+ span(
+ ng-switch-default
+ translate="ADMIN.CUSTOM_FIELDS.FIELD_TYPE_TEXT"
+ )
+ span(
+ ng-switch-when="multiline"
+ translate="ADMIN.CUSTOM_FIELDS.FIELD_TYPE_MULTI"
+ )
+ span(
+ ng-switch-when="date"
+ translate="ADMIN.CUSTOM_FIELDS.FIELD_TYPE_DATE"
+ )
+ span(
+ ng-switch-when="url"
+ translate="ADMIN.CUSTOM_FIELDS.FIELD_TYPE_URL"
+ )
+ .custom-options
+ .custom-options-wrapper
+ a.js-edit-custom-field-button(
+ href="",
title="{{'ADMIN.CUSTOM_ATTRIBUTES.EDIT' | translate}}"
)
- use(xlink:href="#icon-edit")
- svg.js-delete-custom-field-button.icon.icon-trash(
- href=""
+ tg-svg(svg-icon="icon-edit")
+
+ a.js-delete-custom-field-button(
+ href="",
title="{{'ADMIN.CUSTOM_ATTRIBUTES.DELETE' | translate}}"
)
- use(xlink:href="#icon-trash")
+ tg-svg(svg-icon="icon-trash")
div.row.single-custom-field.js-edit-custom-field.hidden
fieldset.custom-name
@@ -71,16 +80,17 @@ section.custom-fields-table.basic-table
)
fieldset.custom-options
div.custom-options-wrapper
- svg.js-update-custom-field-button.icon.icon-save(
- href=""
+ a.js-update-custom-field-button(
+ href="",
title="{{'ADMIN.CUSTOM_ATTRIBUTES.ACTION_UPDATE' | translate}}"
)
- use(xlink:href="#icon-save")
- svg.js-cancel-edit-custom-field-button.icon.icon-close(
- href=""
+ tg-svg(svg-icon="icon-save")
+
+ a.js-cancel-edit-custom-field-button(
+ href="",
title="{{'ADMIN.CUSTOM_ATTRIBUTES.ACTION_CANCEL_EDITION' | translate}}"
)
- use(xlink:href="#icon-close")
+ tg-svg(svg-icon="icon-close")
form.row.single-custom-field.js-new-custom-field.hidden
fieldset.custom-name
@@ -108,13 +118,14 @@ section.custom-fields-table.basic-table
fieldset.custom-options
div.custom-options-wrapper
- svg.js-create-custom-field-button.icon.icon-save(
- href=""
+ a.js-create-custom-field-button(
+ href="",
title="{{'ADMIN.CUSTOM_ATTRIBUTES.SAVE_TITLE' | translate}}"
)
- use(xlink:href="#icon-save")
- svg.js-cancel-new-custom-field-button.icon.icon-trash(
- href=""
+ tg-svg(svg-icon="icon-save")
+
+ a.js-cancel-new-custom-field-button(
+ href="",
title="{{'ADMIN.CUSTOM_ATTRIBUTES.CANCEL_TITLE' | translate}}"
)
- use(xlink:href="#icon-trash")
+ tg-svg(svg-icon="icon-close")
diff --git a/app/partials/includes/modules/admin/project-points.jade b/app/partials/includes/modules/admin/project-points.jade
index 6189a3d7..efb88ca4 100644
--- a/app/partials/includes/modules/admin/project-points.jade
+++ b/app/partials/includes/modules/admin/project-points.jade
@@ -18,8 +18,7 @@ section.project-values-table
div(ng-repeat="value in values track by value.id", tg-bind-scope)
form(tg-bind-scope)
div.project-values-row.row.table-main.visualization
- svg.icon.icon-drag
- use(xlink:href="#icon-drag")
+ tg-svg(svg-icon="icon-drag")
div.project-values-name
span {{ value.name }}
@@ -28,10 +27,16 @@ section.project-values-table
span {{ value.value }}
div.project-values-settings
- svg.edit-value.icon.icon-edit(title="{{'ADMIN.POINTS.TITLE_ACTION_EDIT_VALUE' | translate}}")
- use(xlink:href="#icon-edit")
- svg.delete-value.icon.icon-trash(title="{{'ADMIN.POINTS.TITLE_ACTION_DELETE_VALUE' | translate}}")
- use(xlink:href="#icon-trash")
+ a.edit-value(href="")
+ tg-svg(
+ title="{{'ADMIN.COMMON.TITLE_ACTION_EDIT_VALUE' | translate}}",
+ svg-icon="icon-edit"
+ )
+ a.delete-value(href="")
+ tg-svg(
+ title="{{'ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE' | translate}}"
+ svg-icon="icon-trash"
+ )
div.project-values-row.row.table-main.edition.hidden
div.project-values-name
@@ -41,10 +46,11 @@ section.project-values-table
input(name="value", type="text", placeholder="{{'COMMON.FIELDS.VALUE' | translate}}", ng-model="value.value", data-type="number")
div.project-values-settings
- svg.save.icon.icon-save(title="{{'COMMON.SAVE' | translate}}")
- use(xlink:href="#icon-save")
- svg.cancel.icon.icon-close(href="", title="{{'COMON.CANCEL' | translate}}")
- use(xlink:href="#icon-close")
+ a.save(href="", title="{{'COMMON.SAVE' | translate}}")
+ tg-svg(svg-icon="icon-save")
+
+ a.cancel(href="", title="{{'COMMON.CANCEL' | translate}}")
+ tg-svg.cancel(svg-icon="icon-close")
form
div.project-values-row.new-value.hidden
@@ -67,7 +73,8 @@ section.project-values-table
)
div.project-values-settings
- svg.add-new.icon.icon-save(title="{{'COMMON.ADD' | translate}}")
- use(xlink:href="#icon-save")
- svg.delete-new.icon.icon-trash(title="{{'COMMON.CANCEL' | translate}}")
- use(xlink:href="#icon-trash")
+ a.add-new(href="", title="{{'COMMON.ADD' | translate}}")
+ tg-svg(svg-icon="icon-save")
+
+ a.delete-new(href="", title="{{'COMMON.CANCEL' | translate}}")
+ tg-svg(svg-icon="icon-close")
diff --git a/app/partials/includes/modules/admin/project-status.jade b/app/partials/includes/modules/admin/project-status.jade
index 1540413d..863405ae 100644
--- a/app/partials/includes/modules/admin/project-status.jade
+++ b/app/partials/includes/modules/admin/project-status.jade
@@ -17,8 +17,7 @@ section.colors-table.admin-status-table
div(ng-repeat="value in values", tg-bind-scope)
form(tg-bind-scope)
div.row.table-main.visualization
- svg.icon.icon-drag
- use(xlink:href="#icon-drag")
+ tg-svg(svg-icon="icon-drag")
div.color-column
div.current-color(ng-style="{background: value.color}")
@@ -29,14 +28,22 @@ section.colors-table.admin-status-table
span {{ value.slug }}
div.is-closed-column
- svg.icon.icon-check(ng-show="value.is_closed")
- use(xlink:href="#icon-check")
+ tg-svg(
+ ng-show="value.is_closed"
+ svg-icon="icon-check"
+ )
div.options-column
- svg.edit-value.icon.icon-edit(title="{{'ADMIN.COMMON.TITLE_ACTION_EDIT_VALUE' | translate}}")
- use(xlink:href="#icon-edit")
- svg.delete-value.icon.icon-trash(title="{{'ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE' | translate}}")
- use(xlink:href="#icon-trash")
+ a.edit-value(href="")
+ tg-svg(
+ title="{{'ADMIN.COMMON.TITLE_ACTION_EDIT_VALUE' | translate}}",
+ svg-icon="icon-edit"
+ )
+ a.delete-value(href="")
+ tg-svg(
+ title="{{'ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE' | translate}}"
+ svg-icon="icon-trash"
+ )
div.row.table-main.edition.hidden
div.color-column(
@@ -64,10 +71,11 @@ section.colors-table.admin-status-table
ng-options="e.id as e.name | translate for e in [{'id':true, 'name':'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]")
div.options-column
- svg.save.icon.icon-save(title="{{'COMMON.SAVE' | translate}}")
- use(xlink:href="#icon-save")
- svg.cancel.icon.icon-close(title="{{'COMMON.CANCEL' | translate}}")
- use(xlink:href="#icon-close")
+ a.save(href="", title="{{'COMMON.SAVE' | translate}}")
+ tg-svg(svg-icon="icon-save")
+
+ a.cancel(href="", title="{{'COMMON.CANCEL' | translate}}")
+ tg-svg.cancel(svg-icon="icon-close")
form
div.row.table-main.new-value.hidden
@@ -97,7 +105,8 @@ section.colors-table.admin-status-table
)
div.options-column
- svg.add-new.icon.icon-save(title="{{'COMMON.ADD' | translate}}")
- use(xlink:href="#icon-save")
- svg.delete-new.icon.icon-close(title="{{'COMMON.CANCEL' | translate}}")
- use(xlink:href="#icon-close")
+ a.add-new(href="", title="{{'COMMON.ADD' | translate}}")
+ tg-svg(svg-icon="icon-save")
+
+ a.delete-new(href="", title="{{'COMMON.CANCEL' | translate}}")
+ tg-svg(svg-icon="icon-close")
diff --git a/app/partials/includes/modules/admin/project-types.jade b/app/partials/includes/modules/admin/project-types.jade
index 12a53bce..8624fd5f 100644
--- a/app/partials/includes/modules/admin/project-types.jade
+++ b/app/partials/includes/modules/admin/project-types.jade
@@ -16,8 +16,7 @@ section.colors-table
div(ng-repeat="value in values", tg-bind-scope)
form(tg-bind-scope)
div.row.table-main.visualization
- svg.icon.icon-drag
- use(xlink:href="#icon-drag")
+ tg-svg(svg-icon="icon-drag")
div.color-column
div.current-color(ng-style="{background: value.color}")
@@ -26,10 +25,17 @@ section.colors-table
span {{ value.name }}
div.options-column
- svg.edit-value.icon.icon-edit(title="{{'ADMIN.COMMON.TITLE_ACTION_EDIT_VALUE' | translate}}")
- use(xlink:href="#icon-edit")
- svg.delete-value.icon.icon-trash(title="{{'ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE' | translate}}")
- use(xlink:href="#icon-trash")
+ a.edit-value(href="")
+ tg-svg(
+ svg-icon="icon-edit",
+ title="{{'ADMIN.COMMON.TITLE_ACTION_EDIT_VALUE' | translate}}"
+ )
+
+ a.delete-value(href="")
+ tg-svg(
+ svg-icon="icon-trash",
+ title="{{'ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE' | translate}}"
+ )
div.row.table-main.edition.hidden
div.color-column(
@@ -50,10 +56,16 @@ section.colors-table
)
div.options-column
- svg.save.icon.icon-save(title="{{'COMMON.SAVE' | translate}}")
- use(xlink:href="#icon-save")
- svg.cancel.icon.icon-trash(title="{{'COMMON.CANCEL' | translate}}")
- use(xlink:href="#icon-trash")
+ a.save(href="")
+ tg-svg(
+ title="{{'COMMON.SAVE' | translate}}",
+ svg-icon="icon-save"
+ )
+ a.cancel(href="")
+ tg-svg(
+ title="{{'COMMON.CANCEL' | translate}}",
+ svg-icon="icon-close"
+ )
form
div.row.table-main.new-value.hidden
@@ -75,7 +87,13 @@ section.colors-table
)
div.options-column
- svg.add-new.icon.icon-save(title="{{'COMMON.ADD' | translate}}")
- use(xlink:href="#icon-save")
- svg.delete-new.icon.icon-trash(title="{{'COMMON.CANCEL' | translate}}")
- use(xlink:href="#icon-trash")
+ a.add-new(href="")
+ tg-svg(
+ title="{{'COMMON.ADD' | translate}}",
+ svg-icon="icon-save"
+ )
+ a.delete-new(href="")
+ tg-svg(
+ title="{{'COMMON.CANCEL' | translate}}",
+ svg-icon="icon-close"
+ )
diff --git a/app/partials/includes/modules/admin/project-us-status.jade b/app/partials/includes/modules/admin/project-us-status.jade
index 892990d8..5660d4d2 100644
--- a/app/partials/includes/modules/admin/project-us-status.jade
+++ b/app/partials/includes/modules/admin/project-us-status.jade
@@ -21,8 +21,7 @@ section.project-us-status
div(ng-repeat="value in values", tg-bind-scope)
form(tg-bind-scope)
div.row.table-main.visualization
- svg.icon.icon-drag
- use(xlink:href="#icon-drag")
+ tg-svg(svg-icon="icon-drag")
div.color-column
div.current-color(ng-style="{background: value.color}")
@@ -34,21 +33,31 @@ section.project-us-status
span {{ value.slug }}
div.is-closed-column
- svg.icon.icon-check(ng-show="value.is_closed")
- use(xlink:href="#icon-check")
+ tg-svg(
+ ng-show="value.is_closed",
+ svg-icon="icon-check"
+ )
div.is-archived-column
- svg.icon.icon-check(ng-show="value.is_archived")
- use(xlink:href="#icon-check")
+ tg-svg(
+ ng-show="value.is_archived",
+ svg-icon="icon-check"
+ )
div.status-wip-limit
span(ng-hide="value.is_archived") {{ value.wip_limit }}
div.options-column
- svg.edit-value.icon.icon-edit(title="{{'ADMIN.COMMON.TITLE_ACTION_EDIT_VALUE' | translate}}")
- use(xlink:href="#icon-edit")
- svg.delete-value.icon.icon-trash(title="{{'ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE' | translate}}")
- use(xlink:href="#icon-trash")
+ a.edit-value(href="")
+ tg-svg(
+ title="{{'ADMIN.COMMON.TITLE_ACTION_EDIT_VALUE' | translate}}",
+ svg-icon="icon-edit"
+ )
+ a.delete-value(href="")
+ tg-svg(
+ title="{{'ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE' | translate}}",
+ svg-icon="icon-trash"
+ )
div.row.table-main.edition.hidden
.color-column(tg-color-selection, ng-model="value")
@@ -93,10 +102,10 @@ section.project-us-status
)
.options-column
- svg.save.icon.icon-save(title="{{'COMMON.SAVE' | translate}}")
- use(xlink:href="#icon-save")
- svg.cancel.icon.icon-close(title="{{'COMMON.CANCEL' | translate}}")
- use(xlink:href="#icon-close")
+ a.save.icon-save(href="", title="{{'COMMON.SAVE' | translate}}")
+ tg-svg(svg-icon="icon-save")
+ a.cancel(href="", title="{{'COMMON.CANCEL' | translate}}")
+ tg-svg(svg-icon="icon-close")
form
div.row.table-main.new-value.hidden
@@ -141,7 +150,8 @@ section.project-us-status
)
div.options-column
- svg.add-new.icon.icon-save(title="{{'COMMON.ADD' | translate}}")
- use(xlink:href="#icon-save")
- svg.delete-new.icon.icon-trash(title="{{'COMMON.CANCEL' | translate}}")
- use(xlink:href="#icon-trash")
+ a.add-new(href="", title="{{'COMMON.ADD' | translate}}")
+ tg-svg(svg-icon="icon-save")
+
+ a.delete-new(href="", title="{{'COMMON.CANCEL' | translate}}")
+ tg-svg(svg-icon="icon-trash")
diff --git a/app/partials/includes/modules/backlog-filters.jade b/app/partials/includes/modules/backlog-filters.jade
index 01b04ad7..6198bfaa 100644
--- a/app/partials/includes/modules/backlog-filters.jade
+++ b/app/partials/includes/modules/backlog-filters.jade
@@ -6,8 +6,10 @@ section.filters
form
fieldset
input(type="text", placeholder="{{'COMMON.FILTERS.INPUT_PLACEHOLDER' | translate}}", ng-model="filtersQ")
- svg.icon.icon-search(href="", title="{{'COMMON.FILTERS.TITLE_ACTION_FILTER_BUTTON' | translate}}")
- use(xlink:href="#icon-search")
+ tg-svg.search-action(
+ svg-icon="icon-search",
+ title="{{'COMMON.FILTERS.TITLE_ACTION_FILTER_BUTTON' | translate}}"
+ )
div.filters-step-cat
div.filters-applied
@@ -17,8 +19,7 @@ section.filters
title="{{'COMMON.FILTERS.BREADCRUMB_TITLE' | translate}}"
translate="BACKLOG.FILTERS.TITLE"
)
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
a.subfilter(href="")
span.title(translate="COMMON.FILTERS.BREADCRUMB_STATUS")
div.filters-cats
@@ -26,12 +27,10 @@ section.filters
li
a(href="", title="{{'BACKLOG.FILTERS.FILTER_CATEGORY_STATUS' | translate}}", data-type="status")
span.title(translate="BACKLOG.FILTERS.FILTER_CATEGORY_STATUS")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
li
a(href="", title="{{'BACKLOG.FILTERS.FILTER_CATEGORY_TAGS' | translate}}", data-type="tags")
span.title(translate="BACKLOG.FILTERS.FILTER_CATEGORY_TAGS")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
div.filter-list.hidden
diff --git a/app/partials/includes/modules/backlog-table.jade b/app/partials/includes/modules/backlog-table.jade
index b666dbe2..d59048ee 100644
--- a/app/partials/includes/modules/backlog-table.jade
+++ b/app/partials/includes/modules/backlog-table.jade
@@ -6,8 +6,7 @@ div.backlog-table-header
div.status(translate="COMMON.FIELDS.STATUS")
div.points(tg-us-role-points-selector, title="{{'BACKLOG.TABLE.TITLE_COLUMN_POINTS' | translate}}")
span.header-points(translate="COMMON.FIELDS.POINTS")
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
div.backlog-table-body(tg-backlog-sortable, ng-class="{'show-tags': ctrl.showTags, 'active-filters': ctrl.activeFilters}" )
include ../components/backlog-row
diff --git a/app/partials/includes/modules/issues-filters.jade b/app/partials/includes/modules/issues-filters.jade
index b879fd56..73a68419 100644
--- a/app/partials/includes/modules/issues-filters.jade
+++ b/app/partials/includes/modules/issues-filters.jade
@@ -6,59 +6,79 @@ section.filters
fieldset
input(type="text", placeholder="{{'ISSUES.FILTERS.INPUT_SEARCH_PLACEHOLDER' | translate}}",
ng-model="filtersQ")
- svg.icon.icon-search(title="{{'ISSUES.FILTERS.TITLE_ACTION_SEARCH' | translate}}")
- use(xlink:href="#icon-search")
+ tg-svg(svg-icon="icon-search", title="{{'ISSUES.FILTERS.TITLE_ACTION_SEARCH' | translate}}")
div.filters-step-cat
div.filters-applied
a.hide.button.button-gray.save-filters(href="", title="{{'COMMON.SAVE' | translate}}", ng-class="{hide: filters.length}", translate="ISSUES.FILTERS.ACTION_SAVE_CUSTOM_FILTER")
h2.hidden.breadcrumb
a.back(href="", title="{{'ISSUES.FILTERS.TITLE_BREADCRUMB' | translate}}", translate="ISSUES.FILTERS.BREADCRUMB")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
a.subfilter(href="", title="cat-name")
span.title(translate="COMMON.FILTERS.BREADCRUMB_STATUS")
div.filters-cats
ul
li
- a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.TYPE' | translate}}", data-type="types")
+ a.filters-cat-single(
+ href=""
+ title="{{ 'ISSUES.FILTERS.CATEGORIES.TYPE' | translate}}"
+ data-type="types"
+ )
span.title(translate="ISSUES.FILTERS.CATEGORIES.TYPE")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
li
- a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.STATUS' | translate}}", data-type="status")
+ a.filters-cat-single(
+ href=""
+ title="{{ 'ISSUES.FILTERS.CATEGORIES.STATUS' | translate}}"
+ data-type="status"
+ )
span.title(translate="ISSUES.FILTERS.CATEGORIES.STATUS")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
li
- a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.SEVERITY' | translate}}", data-type="severities")
+ a.filters-cat-single(
+ href=""
+ title="{{ 'ISSUES.FILTERS.CATEGORIES.SEVERITY' | translate}}"
+ data-type="severities"
+ )
span.title(translate="ISSUES.FILTERS.CATEGORIES.SEVERITY")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
li
- a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.PRIORITIES' | translate}}", data-type="priorities")
+ a.filters-cat-single(
+ href=""
+ title="{{ 'ISSUES.FILTERS.CATEGORIES.PRIORITIES' | translate}}"
+ data-type="priorities"
+ )
span.title(translate="ISSUES.FILTERS.CATEGORIES.PRIORITIES")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
li
- a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.TAGS' | translate}}", data-type="tags")
+ a.filters-cat-single(
+ href=""
+ title="{{ 'ISSUES.FILTERS.CATEGORIES.TAGS' | translate}}"
+ data-type="tags"
+ )
span.title(translate="ISSUES.FILTERS.CATEGORIES.TAGS")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
li
- a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.ASSIGNED_TO' | translate}}", data-type="assignedTo")
+ a.filters-cat-single(href=""
+ title="{{ 'ISSUES.FILTERS.CATEGORIES.ASSIGNED_TO' | translate}}"
+ data-type="assignedTo"
+ )
span.title(translate="ISSUES.FILTERS.CATEGORIES.ASSIGNED_TO")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
li
- a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.CREATED_BY' | translate}}", data-type="createdBy")
+ a.filters-cat-single(
+ href=""
+ title="{{ 'ISSUES.FILTERS.CATEGORIES.CREATED_BY' | translate}}"
+ data-type="createdBy"
+ )
span.title(translate="ISSUES.FILTERS.CATEGORIES.CREATED_BY")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
li.custom-filters(ng-if="filters.myFilters.length")
- a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.CUSTOM_FILTERS' | translate}}",
- data-type="myFilters")
+ a.filters-cat-single(
+ href=""
+ title="{{ 'ISSUES.FILTERS.CATEGORIES.CUSTOM_FILTERS' | translate}}"
+ data-type="myFilters"
+ )
span.title(translate="ISSUES.FILTERS.CATEGORIES.CUSTOM_FILTERS")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
div.filter-list.hidden
diff --git a/app/partials/includes/modules/issues-options.jade b/app/partials/includes/modules/issues-options.jade
index 2a9692eb..dca113dc 100644
--- a/app/partials/includes/modules/issues-options.jade
+++ b/app/partials/includes/modules/issues-options.jade
@@ -3,5 +3,4 @@ section.issues-options(tg-check-permission="add_issue")
a.button-green(href="", ng-click="ctrl.addNewIssue()")
span.text(translate="ISSUES.ACTION_NEW_ISSUE")
a.button-bulk(href="", ng-click="ctrl.addIssuesInBulk()")
- svg.icon.icon-bulk
- use(xlink:href="#icon-bulk")
+ tg-svg(svg-icon="icon-bulk")
diff --git a/app/partials/includes/modules/issues-table.jade b/app/partials/includes/modules/issues-table.jade
index e23a3025..10f4473e 100644
--- a/app/partials/includes/modules/issues-table.jade
+++ b/app/partials/includes/modules/issues-table.jade
@@ -20,8 +20,7 @@ section.issues-table.basic-table(ng-class="{empty: !issues.length}")
ng-class="{'inactive': !issue.total_voters, 'is-voted': issue.is_voter}"
title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:issue.total_voters||0}:'messageformat' }}"
)
- svg.icon.icon-upvote
- use(xlink:href="#icon-upvote")
+ tg-svg(svg-icon="icon-upvote")
span {{ ::issue.total_voters }}
div.subject
a(
@@ -43,16 +42,20 @@ section.issues-table.basic-table(ng-class="{empty: !issues.length}")
title="{{'ISSUES.TABLE.TITLE_ACTION_CHANGE_STATUS' | translate}}"
)
span.issue-status-bind
- svg.icon.icon-arrow-down(tg-check-permission="modify_issue")
- use(xlink:href="#icon-arrow-down")
+ tg-svg(
+ tg-check-permission="modify_issue"
+ svg-icon="icon-arrow-down"
+ )
div.created-field(tg-bo-bind="issue.created_date|momentFormat:'DD MMM YYYY HH:mm'")
div.assigned-field(tg-issue-assigned-to-inline-edition="issue")
div.issue-assignedto(title="{{'ISSUES.TABLE.TITLE_ACTION_ASSIGNED_TO' | translate}}")
figure.avatar
- svg.icon.icon-arrow-down(tg-check-permission="modify_issue")
- use(xlink:href="#icon-arrow-down")
+ tg-svg(
+ tg-check-permission="modify_issue"
+ svg-icon="icon-arrow-down"
+ )
section.empty-issues(ng-if="issues != undefined && issues.length == 0")
img(
diff --git a/app/partials/includes/modules/kanban-table.jade b/app/partials/includes/modules/kanban-table.jade
index 502fef51..4706029f 100644
--- a/app/partials/includes/modules/kanban-table.jade
+++ b/app/partials/includes/modules/kanban-table.jade
@@ -13,32 +13,28 @@ div.kanban-table(tg-kanban-squish-column)
title="{{'KANBAN.TITLE_ACTION_FOLD' | translate}}"
ng-class='{hidden:folds[s.id]}'
)
- svg.icon.icon-fold-column
- use(xlink:href="#icon-fold-column")
+ tg-svg(svg-icon="icon-fold-column")
a.option.hunfold(
href=""
ng-click='foldStatus(s)'
title="{{'KANBAN.TITLE_ACTION_UNFOLD' | translate}}"
ng-class='{hidden:!folds[s.id]}'
)
- svg.icon.icon-unfold-column
- use(xlink:href="#icon-unfold-column")
+ tg-svg(svg-icon="icon-unfold-column")
a.option(
href=""
title="{{'KANBAN.TITLE_ACTION_FOLD_CARDS' | translate}}"
ng-class="{hidden:statusViewModes[s.id] == 'minimized'}"
ng-click="ctrl.updateStatusViewMode(s.id, 'minimized')"
)
- svg.icon.icon-fold-row
- use(xlink:href="#icon-fold-row")
+ tg-svg.fold-action(svg-icon="icon-fold-row")
a.option(
href=""
title="{{'KANBAN.TITLE_ACTION_UNFOLD_CARDS' | translate}}"
ng-class="{hidden:statusViewModes[s.id] == 'maximized'}"
ng-click="ctrl.updateStatusViewMode(s.id, 'maximized')"
)
- svg.icon.icon-unfold-row
- use(xlink:href="#icon-unfold-row")
+ tg-svg.fold-action(svg-icon="icon-unfold-row")
a.option(
href=""
@@ -47,8 +43,7 @@ div.kanban-table(tg-kanban-squish-column)
tg-check-permission="add_us"
ng-hide="s.is_archived"
)
- svg.icon.icon-add
- use(xlink:href="#icon-add")
+ tg-svg.add-action(svg-icon="icon-add")
a.option(
href=""
@@ -57,8 +52,7 @@ div.kanban-table(tg-kanban-squish-column)
tg-check-permission="add_us"
ng-hide="s.is_archived"
)
- svg.icon.icon-bulk
- use(xlink:href="#icon-bulk")
+ tg-svg.bulk-action(svg-icon="icon-bulk")
a.option(
href=""
@@ -66,8 +60,7 @@ div.kanban-table(tg-kanban-squish-column)
ng-class="class"
ng-if="s.is_archived"
tg-kanban-archived-status-header="s")
- svg.icon.icon-watch
- use(xlink:href="#icon-watch")
+ tg-svg.bulk-action(svg-icon="icon-watch")
div.kanban-table-body
div.kanban-table-inner
diff --git a/app/partials/includes/modules/lightbox-ask-choice.jade b/app/partials/includes/modules/lightbox-ask-choice.jade
index c1f5a0fb..485661ef 100644
--- a/app/partials/includes/modules/lightbox-ask-choice.jade
+++ b/app/partials/includes/modules/lightbox-ask-choice.jade
@@ -1,6 +1,5 @@
-a.close(href="", title="{{'COMMON.CLOSE' | translate}}")
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
+
form
h2.title
p.question
diff --git a/app/partials/includes/modules/lightbox-create-issue.jade b/app/partials/includes/modules/lightbox-create-issue.jade
index 829d660f..d1f4f37b 100644
--- a/app/partials/includes/modules/lightbox-create-issue.jade
+++ b/app/partials/includes/modules/lightbox-create-issue.jade
@@ -1,9 +1,5 @@
-a.close(
- href=""
- title="{{'COMMON.CLOSE' | translate}}"
-)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
+
form
h2.title(translate="LIGHTBOX.CREATE_ISSUE.TITLE")
fieldset
diff --git a/app/partials/includes/modules/lightbox-delete-project.jade b/app/partials/includes/modules/lightbox-delete-project.jade
index c360d23d..60352f3e 100644
--- a/app/partials/includes/modules/lightbox-delete-project.jade
+++ b/app/partials/includes/modules/lightbox-delete-project.jade
@@ -1,6 +1,4 @@
-a.close(href="", title="{{'close' | translate}}")
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
form
h2.title(translate="LIGHTBOX.DELETE_PROJECT.TITLE")
p
diff --git a/app/partials/includes/modules/lightbox-generic-ask.jade b/app/partials/includes/modules/lightbox-generic-ask.jade
index 6ddcaf0a..002715bc 100644
--- a/app/partials/includes/modules/lightbox-generic-ask.jade
+++ b/app/partials/includes/modules/lightbox-generic-ask.jade
@@ -1,6 +1,5 @@
-a.close(href="", title="{{'COMMON.CLOSE' | translate}}")
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
+
form
h2.title
p
diff --git a/app/partials/includes/modules/lightbox-generic-error.jade b/app/partials/includes/modules/lightbox-generic-error.jade
index 343dbaa6..a23abf90 100644
--- a/app/partials/includes/modules/lightbox-generic-error.jade
+++ b/app/partials/includes/modules/lightbox-generic-error.jade
@@ -1,9 +1,5 @@
-a.close(
- href=""
- title="{{'COMMON.CLOSE' | translate}}"
-)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
+
section
h2.title
.options
diff --git a/app/partials/includes/modules/lightbox-generic-success.jade b/app/partials/includes/modules/lightbox-generic-success.jade
index 02bf8c0a..40f704c3 100644
--- a/app/partials/includes/modules/lightbox-generic-success.jade
+++ b/app/partials/includes/modules/lightbox-generic-success.jade
@@ -1,9 +1,4 @@
-a.close(
- href=""
- title="{{'COMMON.CLOSE' | translate}}"
-)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
section
h2.title
p.message
diff --git a/app/partials/includes/modules/lightbox-issue-bulk.jade b/app/partials/includes/modules/lightbox-issue-bulk.jade
index b418e7d5..b154c05b 100644
--- a/app/partials/includes/modules/lightbox-issue-bulk.jade
+++ b/app/partials/includes/modules/lightbox-issue-bulk.jade
@@ -1,9 +1,5 @@
-a.close(
- href=""
- title="{{'COMMON.CLOSE' | translate}}"
-)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
+
form
h2.title(translate="COMMON.NEW_BULK")
fieldset
diff --git a/app/partials/includes/modules/lightbox-sprint-add-edit.jade b/app/partials/includes/modules/lightbox-sprint-add-edit.jade
index 148084eb..e0ceddc7 100644
--- a/app/partials/includes/modules/lightbox-sprint-add-edit.jade
+++ b/app/partials/includes/modules/lightbox-sprint-add-edit.jade
@@ -1,9 +1,4 @@
-a.close(
- href=""
- title="{{'COMMON.CLOSE' | translate}}"
-)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
form
h2.title(translate="LIGHTBOX.ADD_EDIT_SPRINT.TITLE")
@@ -51,7 +46,4 @@ form
title="{{'LIGHTBOX.ADD_EDIT_SPRINT.TITLE_ACTION_DELETE_SPRINT' | translate}}"
)
span {{'LIGHTBOX.ADD_EDIT_SPRINT.ACTION_DELETE_SPRINT' | translate }}
- svg.icon.icon-trash(
- href=""
- )
- use(xlink:href="#icon-trash")
+ tg-svg(svg-icon="icon-trash")
diff --git a/app/partials/includes/modules/lightbox-task-bulk.jade b/app/partials/includes/modules/lightbox-task-bulk.jade
index 7fac9d2e..bc523dae 100644
--- a/app/partials/includes/modules/lightbox-task-bulk.jade
+++ b/app/partials/includes/modules/lightbox-task-bulk.jade
@@ -1,9 +1,4 @@
-a.close(
- href=""
- title="{{'COMMON.CLOSE' | translate}}"
-)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
form
h2.title(translate="COMMON.NEW_BULK")
fieldset
diff --git a/app/partials/includes/modules/lightbox-task-create-edit.jade b/app/partials/includes/modules/lightbox-task-create-edit.jade
index 68fef13c..41fcf957 100644
--- a/app/partials/includes/modules/lightbox-task-create-edit.jade
+++ b/app/partials/includes/modules/lightbox-task-create-edit.jade
@@ -1,9 +1,4 @@
-a.close(
- href=""
- title="{{'COMMON.CLOSE' | translate}}"
-)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
form
h2.title(translate="LIGHTBOX.CREATE_EDIT_TASK.TITLE")
fieldset
@@ -65,8 +60,7 @@ form
ng-value="true"
)
label.iocaine.trans-button(for="iocaine-task")
- svg.icon.icon-iocaine(for="iocaine-task icon-iocaine")
- use(xlink:href="#icon-iocaine")
+ tg-svg(svg-icon="icon-iocaine")
span Iocaine
fieldset.blocking-flag
diff --git a/app/partials/includes/modules/lightbox-us-bulk.jade b/app/partials/includes/modules/lightbox-us-bulk.jade
index b522a0ed..73b65343 100644
--- a/app/partials/includes/modules/lightbox-us-bulk.jade
+++ b/app/partials/includes/modules/lightbox-us-bulk.jade
@@ -1,9 +1,4 @@
-a.close(
- href=""
- title="{{'COMMON.CLOSE' | translate}}"
-)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
form
h2.title(translate="COMMON.NEW_BULK")
fieldset
diff --git a/app/partials/includes/modules/lightbox-us-create-edit.jade b/app/partials/includes/modules/lightbox-us-create-edit.jade
index c03c8010..7345e627 100644
--- a/app/partials/includes/modules/lightbox-us-create-edit.jade
+++ b/app/partials/includes/modules/lightbox-us-create-edit.jade
@@ -1,9 +1,5 @@
-a.close(
- href=""
- title="{{'COMMON.CLOSE' | translate}}"
-)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
+
form
h2.title(translate="LIGHTBOX.CREATE_EDIT_US.TITLE")
fieldset
@@ -80,7 +76,7 @@ form
type="checkbox"
name="is_blocked"
ng-model="us.is_blocked"
- id="blocked-us"
+ id="blocked-us"
ng-value="true"
)
label.blocked.trans-button(
diff --git a/app/partials/includes/modules/login-form.jade b/app/partials/includes/modules/login-form.jade
index bb62082d..96927f3b 100644
--- a/app/partials/includes/modules/login-form.jade
+++ b/app/partials/includes/modules/login-form.jade
@@ -1,4 +1,4 @@
-div.login-form-container(tg-login)
+.login-form-container(tg-login)
form.login-form
fieldset
input(
@@ -16,18 +16,20 @@ div.login-form-container(tg-login)
input(
type="password"
name="password"
- tg-capslock
data-required="true"
placeholder="{{'LOGIN_COMMON.PLACEHOLDER_AUTH_PASSWORD' | translate}}"
+ ng-focus="capslockIcon = !capslockIcon"
+ ng-keyup="onKeyUp($event)"
)
- // This should be hidden when focus on pass
a.forgot-pass(
href=""
tg-nav="forgot-password"
title="{{'LOGIN_COMMON.TITLE_LINK_FORGOT_PASSWORD' | translate}}"
translate="LOGIN_COMMON.LINK_FORGOT_PASSWORD"
)
+
+ tg-capslock
fieldset
button.button-green.submit-button(
diff --git a/app/partials/includes/modules/search-filter.jade b/app/partials/includes/modules/search-filter.jade
index 3304a5cc..2cf10b90 100644
--- a/app/partials/includes/modules/search-filter.jade
+++ b/app/partials/includes/modules/search-filter.jade
@@ -4,8 +4,7 @@ ul.search-filter
href="#"
title="{{ 'SEARCH.FILTER_USER_STORIES' | translate }}"
)
- svg.icon.icon-bulk
- use(xlink:href="#icon-bulk")
+ tg-svg(svg-icon="icon-bulk")
span.num
span.name(translate="SEARCH.FILTER_USER_STORIES")
@@ -14,8 +13,7 @@ ul.search-filter
href="#"
title="{{ 'SEARCH.FILTER_ISSUES' | translate }}"
)
- svg.icon.icon-issues
- use(xlink:href="#icon-issues")
+ tg-svg(svg-icon="icon-issues")
span.num
span.name(translate="SEARCH.FILTER_ISSUES")
@@ -24,8 +22,7 @@ ul.search-filter
href="#"
title="{{ 'SEARCH.FILTER_TASKS' | translate }}"
)
- svg.icon.icon-bulk
- use(xlink:href="#icon-bulk")
+ tg-svg(svg-icon="icon-bulk")
span.num
span.name(translate="SEARCH.FILTER_TASKS")
@@ -34,7 +31,6 @@ ul.search-filter
href="#"
title="{{ 'SEARCH.FILTER_WIKI' | translate }}"
)
- svg.icon.icon-wiki
- use(xlink:href="#icon-wiki")
+ tg-svg(svg-icon="icon-wiki")
span.num
span.name(translate="SEARCH.FILTER_WIKI")
diff --git a/app/partials/includes/modules/search-in.jade b/app/partials/includes/modules/search-in.jade
index e16d70ee..748fc4f6 100644
--- a/app/partials/includes/modules/search-in.jade
+++ b/app/partials/includes/modules/search-in.jade
@@ -7,5 +7,4 @@ section.search-in
ng-model="searchTerm"
)
.icon-search-wrapper(tg-loading="loading")
- svg.icon.icon-search(title="{{'SEARCH.TITLE_ACTION_SEARCH' | translate}}")
- use(xlink:href="#icon-search")
+ tg-svg(svg-icon="icon-search", title="{{'SEARCH.TITLE_ACTION_SEARCH' | translate}}")
diff --git a/app/partials/includes/modules/sprints.jade b/app/partials/includes/modules/sprints.jade
index 82066a18..0b52dd40 100644
--- a/app/partials/includes/modules/sprints.jade
+++ b/app/partials/includes/modules/sprints.jade
@@ -13,8 +13,7 @@ section.sprints
ng-if="totalMilestones"
tg-check-permission="add_milestone"
)
- svg.icon.icon-add
- use(xlink:href="#icon-add")
+ tg-svg(svg-icon="icon-add")
div.sprints-empty(ng-if="totalMilestones === 0")
img(
@@ -37,8 +36,7 @@ section.sprints
a.filter-closed-sprints(href="", tg-backlog-toggle-closed-sprints-visualization,
ng-if="totalClosedMilestones")
- svg.icon.icon-archive
- use(xlink:href="#icon-archive")
+ tg-svg(svg-icon="icon-archive")
span.text(translate="BACKLOG.SPRINTS.ACTION_SHOW_CLOSED_SPRINTS")
div.sprint.sprint-closed(ng-repeat="sprint in closedSprints track by sprint.id",
diff --git a/app/partials/includes/modules/taskboard-table.jade b/app/partials/includes/modules/taskboard-table.jade
index a87acc12..7f5f67c8 100644
--- a/app/partials/includes/modules/taskboard-table.jade
+++ b/app/partials/includes/modules/taskboard-table.jade
@@ -4,39 +4,39 @@ div.taskboard-table(tg-taskboard-squish-column)
h2.task-colum-name(translate="TASKBOARD.TABLE.COLUMN")
h2.task-colum-name(ng-repeat="s in taskStatusList track by s.id", ng-style="{'border-top-color':s.color}", ng-class="{'column-fold':statusesFolded[s.id]}", class="squish-status-{{s.id}}", tg-bo-title="s.name")
span(tg-bo-bind="s.name")
- svg.icon.icon-fold-row.hfold(
- ng-click='foldStatus(s)'
+
+ tg-svg.hfold.fold-action(
+ svg-icon="icon-fold-row",
+ ng-click='foldStatus(s)',
title="{{'TASKBOARD.TABLE.TITLE_ACTION_FOLD' | translate}}"
ng-class='{hidden:statusesFolded[s.id]}'
)
- use(xlink:href="#icon-fold-row")
-
- svg.icon.icon-fold-row.hunfold(
+
+ tg-svg.hunfold.fold-action(
+ svg-icon="icon-unfold-row",
+ ng-click='foldStatus(s)',
title="{{'TASKBOARD.TABLE.TITLE_ACTION_UNFOLD' | translate}}"
- ng-click='foldStatus(s)'
ng-class='{hidden:!statusesFolded[s.id]}'
)
- use(xlink:href="#icon-unfold-row")
div.taskboard-table-body(tg-taskboard-table-height-fixer)
div.taskboard-table-inner
div.task-row(ng-repeat="us in userstories track by us.id", ng-class="{blocked: us.is_blocked, 'row-fold':usFolded[us.id]}")
div.taskboard-userstory-box.task-column(tg-bo-title="us.blocked_note")
-
- svg.icon.icon-fold-row.vfold(
- title="{{'TASKBOARD.TABLE.TITLE_ACTION_FOLD_ROW' | translate}}"
+ tg-svg.vfold.fold-action(
+ svg-icon="icon-fold-row",
ng-click='foldUs(us)'
+ title="{{'TASKBOARD.TABLE.TITLE_ACTION_FOLD_ROW' | translate}}"
ng-class='{hidden:usFolded[us.id]}'
)
- use(xlink:href="#icon-fold-row")
-
- svg.icon.icon-unfold-row.vunfold(
- title="{{'TASKBOARD.TABLE.TITLE_ACTION_UNFOLD_ROW' | translate}}"
+
+ tg-svg.vunfold.fold-action(
+ svg-icon="icon-unfold-row",
ng-click='foldUs(us)'
+ title="{{'TASKBOARD.TABLE.TITLE_ACTION_UNFOLD_ROW' | translate}}"
ng-class='{hidden:!usFolded[us.id]}'
)
- use(xlink:href="#icon-fold-row")
-
+
h3.us-title
a(href="",
tg-nav="project-userstories-detail:project=project.slug,ref=us.ref",
@@ -71,16 +71,14 @@ div.taskboard-table(tg-taskboard-squish-column)
ng-click='foldUs()'
ng-class="{hidden:usFolded[null]}"
)
- svg.icon.icon-fold-row
- use(xlink:href="#icon-fold-row")
+ tg-svg.fold-action(svg-icon="icon-fold-row")
a.vunfold(
href=""
title="{{'TASKBOARD.TABLE.TITLE_ACTION_UNFOLD_ROW' | translate}}"
ng-click='foldUs()'
ng-class="{hidden:!usFolded[null]}"
)
- svg.icon.icon-unfold-row
- use(xlink:href="#icon-unfold-row")
+ tg-svg.fold-action(svg-icon="icon-unfold-row")
h3.us-title
span(translate="TASKBOARD.TABLE.ROW_UNASSIGED_TASKS_TITLE")
include ../components/addnewtask.jade
diff --git a/app/partials/includes/modules/team/team-filters.jade b/app/partials/includes/modules/team/team-filters.jade
index 72b104a0..33059928 100644
--- a/app/partials/includes/modules/team/team-filters.jade
+++ b/app/partials/includes/modules/team/team-filters.jade
@@ -7,7 +7,9 @@ section.team-filters
fieldset
input(type="text", placeholder="{{'TEAM.PLACEHOLDER_INPUT_SEARCH' | translate}}", ng-model="filtersQ")
.icon-search-wrapper
- svg.icon.icon-search(title="{{'COMMON.FILTERS.TITLE_ACTION_FILTER_BUTTON' | translate}}")
- use(xlink:href="#icon-search")
+ tg-svg(
+ svg-icon="icon-search",
+ title="{{'COMMON.FILTERS.TITLE_ACTION_FILTER_BUTTON' | translate}}"
+ )
nav(tg-team-filters)
diff --git a/app/partials/issue/iocaine-button.jade b/app/partials/issue/iocaine-button.jade
index 25406e92..74645c0c 100644
--- a/app/partials/issue/iocaine-button.jade
+++ b/app/partials/issue/iocaine-button.jade
@@ -3,8 +3,7 @@ fieldset(title="{{ 'TASK.TITLE_ACTION_IOCAINE' | translate }}")
for="is-iocaine"
class!="<% if(isEditable){ %>is-editable<% }; %> <% if(isIocaine){ %>active<% }; %>"
)
- svg.icon.icon-iocaine
- use(xlink:href="#icon-iocaine")
+ tg-svg(svg-icon="icon-iocaine")
input(
type="checkbox"
id="is-iocaine"
diff --git a/app/partials/issue/issue-priority-button.jade b/app/partials/issue/issue-priority-button.jade
index 0e82506b..b01bdb08 100644
--- a/app/partials/issue/issue-priority-button.jade
+++ b/app/partials/issue/issue-priority-button.jade
@@ -2,8 +2,7 @@ div(class!="priority-data <% if(editable){ %>clickable<% }%>")
span(class="level", style!="background-color:<%- priority.color %>")
span(class="priority-priority") <%- priority.name %>
<% if(editable){ %>
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
<% }%>
span(class="level-name", translate="COMMON.FIELDS.PRIORITY")
diff --git a/app/partials/issue/issue-severity-button.jade b/app/partials/issue/issue-severity-button.jade
index 377e7346..4920203f 100644
--- a/app/partials/issue/issue-severity-button.jade
+++ b/app/partials/issue/issue-severity-button.jade
@@ -1,16 +1,18 @@
-div(class!="severity-data <% if(editable){ %>clickable<% }%>")
- span(class="level", style!="background-color:<%- severity.color %>")
- span(class="severity-severity") <%- severity.name %>
+.severity-data(class!="<% if(editable){ %>clickable<% }%>")
+ span.level(style!="background-color:<%- severity.color %>")
+ span.severity-severity <%- severity.name %>
<% if(editable){ %>
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
<% }%>
- span(class="level-name", translate="COMMON.FIELDS.SEVERITY")
+ span.level-name(translate="COMMON.FIELDS.SEVERITY")
- ul(class="popover pop-severity")
+ ul.popover.pop-severity
<% _.each(severityes, function(sv) { %>
li
- a(href="" class="severity" title!="<%- sv.name %>"
- data-severity-id!="<%- sv.id %>")
+ a.severity(
+ href=""
+ title!="<%- sv.name %>"
+ data-severity-id!="<%- sv.id %>"
+ )
<%- sv.name %>
<% }); %>
diff --git a/app/partials/issue/issue-type-button.jade b/app/partials/issue/issue-type-button.jade
index 9a050bb2..1301b4a7 100644
--- a/app/partials/issue/issue-type-button.jade
+++ b/app/partials/issue/issue-type-button.jade
@@ -1,16 +1,17 @@
-div(class!="type-data <% if(editable){ %>clickable<% }%>")
- span(class="level", style!="background-color:<%- type.color %>")
- span(class="type-type") <%- type.name %>
+.type-data(class!="<% if(editable){ %>clickable<% }%>")
+ span.level(style!="background-color:<%- type.color %>")
+ span.type-type <%- type.name %>
<% if(editable){ %>
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
<% }%>
- span(class="level-name", translate="COMMON.FIELDS.TYPE")
+ span.level-name(translate="COMMON.FIELDS.TYPE")
- ul(class="popover pop-type")
+ ul.popover.pop-type
<% _.each(typees, function(tp) { %>
li
- a(href="", class="type", title!="<%- tp.name %>",
- data-type-id!="<%- tp.id %>")
- | <%- tp.name %>
+ a.type(
+ href=""
+ title!="<%- tp.name %>"
+ data-type-id!="<%- tp.id %>"
+ ) <%- tp.name %>
<% }); %>
diff --git a/app/partials/issue/issues-detail.jade b/app/partials/issue/issues-detail.jade
index 056e718f..aa8dfefa 100644
--- a/app/partials/issue/issues-detail.jade
+++ b/app/partials/issue/issues-detail.jade
@@ -22,8 +22,7 @@ div.wrapper(
span.us-number(tg-bo-ref="issue.ref")
span.us-name(tg-editable-subject, ng-model="issue", required-perm="modify_issue")
- p.us-related-task(ng-if="issue.generated_user_stories.length")
- | {{ 'ISSUES.PROMOTED'|translate }}
+ p.us-related-task(ng-if="issue.generated_user_stories.length") {{ 'ISSUES.PROMOTED'|translate }}
a(
href=""
ng-repeat="us in issue.generated_user_stories"
@@ -52,21 +51,32 @@ div.wrapper(
tg-bo-href="previousUrl"
title="{{'ISSUES.TITLE_PREVIOUS_ISSUE' | translate}}"
)
- svg.icon.icon-arrow-left
- use(xlink:href="#icon-arrow-left")
+ tg-svg(
+ svg-icon="icon-arrow-left"
+ )
a(
ng-show="nextUrl"
tg-bo-href="nextUrl"
title="{{'ISSUES.TITLE_NEXT_ISSUE' | translate}}"
- )
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ )
+ tg-svg(
+ svg-icon="icon-arrow-right"
+ )
.subheader
- div.tags-block(tg-tag-line, ng-model="issue", required-perm="modify_issue")
+ .tags-block(
+ tg-tag-line
+ ng-model="issue"
+ required-perm="modify_issue"
+ )
tg-created-by-display.ticket-created-by(ng-model="issue")
- section.duty-content(tg-editable-description, tg-editable-wysiwyg, ng-model="issue", required-perm="modify_issue")
+ section.duty-content(
+ tg-editable-description
+ tg-editable-wysiwyg
+ ng-model="issue"
+ required-perm="modify_issue"
+ )
// Custom Fields
tg-custom-attributes-values(
@@ -83,10 +93,13 @@ div.wrapper(
edit-permission = "modify_issue"
)
- tg-history(ng-model="issue", type="issue")
+ tg-history(
+ ng-model="issue"
+ type="issue"
+ )
sidebar.menu-secondary.sidebar.ticket-data
-
+
.ticket-header
span.ticket-title(
tg-issue-status-display
@@ -96,15 +109,28 @@ div.wrapper(
tg-issue-status-button
ng-model="issue"
)
-
- //tg-created-by-display.ticket-created-by(ng-model="issue")
-
- div.ticket-data-container
- div.ticket-status(tg-issue-type-button, ng-model="issue")
- div.ticket-status(tg-issue-severity-button, ng-model="issue")
- div.ticket-status(tg-issue-priority-button, ng-model="issue")
- section.ticket-assigned-to(tg-assigned-to, ng-model="issue", required-perm="modify_issue")
+ //tg-created-by-display.ticket-created-by(ng-model="issue")
+
+ div.ticket-data-container
+ div.ticket-status(
+ tg-issue-type-button
+ ng-model="issue"
+ )
+ div.ticket-status(
+ tg-issue-severity-button
+ ng-model="issue"
+ )
+ div.ticket-status(
+ tg-issue-priority-button
+ ng-model="issue"
+ )
+
+ section.ticket-assigned-to(
+ tg-assigned-to
+ ng-model="issue"
+ required-perm="modify_issue"
+ )
section.ticket-watch-buttons
div.ticket-watch(
@@ -122,11 +148,11 @@ div.wrapper(
section.ticket-detail-settings
tg-promote-issue-to-us-button(
- tg-check-permission="add_us",
+ tg-check-permission="add_us",
ng-model="issue"
)
tg-block-button(
- tg-check-permission="modify_issue",
+ tg-check-permission="modify_issue",
ng-model="issue"
)
tg-delete-button(
diff --git a/app/partials/issue/issues-filters-selected.jade b/app/partials/issue/issues-filters-selected.jade
index 187ba9f6..29e0a12e 100644
--- a/app/partials/issue/issues-filters-selected.jade
+++ b/app/partials/issue/issues-filters-selected.jade
@@ -1,9 +1,9 @@
<% _.each(filters, function(f) { %>
-a.single-filter.selected(
+.single-filter.selected(
data-type!="<%- f.type %>"
data-id!="<%- f.id %>"
)
span.name(style!="<%- f.style %>") <%- f.name %>
- svg.icon.icon-close.remove-filter
- use(xlink:href="#icon-close")
+ a.remove-filter(href="")
+ tg-svg(svg-icon="icon-close")
<% }) %>
diff --git a/app/partials/issue/issues-filters.jade b/app/partials/issue/issues-filters.jade
index 3dfa76ef..95763e72 100644
--- a/app/partials/issue/issues-filters.jade
+++ b/app/partials/issue/issues-filters.jade
@@ -1,17 +1,22 @@
<% _.each(filters, function(f) { %>
<% if (!f.selected) { %>
-a(class="single-filter", data-type!="<%- f.type %>", data-id!="<%- f.id %>")
- span(class="name", style!="<%- f.style %>")
- | <%- f.name %>
+.single-filter(
+ data-type!="<%- f.type %>"
+ data-id!="<%- f.id %>"
+)
+ span.name(style!="<%- f.style %>") <%- f.name %>
<% if (f.count){ %>
- span(class="number") <%- f.count %>
+ span.number <%- f.count %>
<% } %>
<% if (f.type == "myFilters"){ %>
- svg.icon.icon-close.remove-filter
- use(xlink:href="#icon-close")
+ a.remove-filter(href="")
+ tg-svg(svg-icon="icon-trash")
<% } %>
<% } %>
<% }) %>
span(class="new")
-input(class="hidden my-filter-name", type="text",
- placeholder="{{'ISSUES.PLACEHOLDER_FILTER_NAME' | translate}}")
+input(
+ class="hidden my-filter-name"
+ type="text"
+ placeholder="{{'ISSUES.PLACEHOLDER_FILTER_NAME' | translate}}"
+)
diff --git a/app/partials/issue/issues-status-button.jade b/app/partials/issue/issues-status-button.jade
index 39f67881..593ded89 100644
--- a/app/partials/issue/issues-status-button.jade
+++ b/app/partials/issue/issues-status-button.jade
@@ -5,8 +5,7 @@ span.detail-status-inner.js-edit-status(
)
span <%- status.name %>
<% if(editable){ %>
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
<% }%>
ul.popover.pop-status
diff --git a/app/partials/issue/promote-issue-to-us-button.jade b/app/partials/issue/promote-issue-to-us-button.jade
index 2a241ca1..fe2bd499 100644
--- a/app/partials/issue/promote-issue-to-us-button.jade
+++ b/app/partials/issue/promote-issue-to-us-button.jade
@@ -1,6 +1,6 @@
a.promote-button.is-editable(
+ href=""
tg-check-permission="add_us"
title="{{ 'ISSUES.ACTION_PROMOTE_TO_US' | translate }}"
)
- svg.icon.icon-promote
- use(xlink:href="#icon-promote")
+ tg-svg(svg-icon="icon-promote")
diff --git a/app/partials/kanban/kanban-task.jade b/app/partials/kanban/kanban-task.jade
index a863a07b..46fed783 100644
--- a/app/partials/kanban/kanban-task.jade
+++ b/app/partials/kanban/kanban-task.jade
@@ -24,9 +24,10 @@ div.kanban-task-inner(ng-class="{'task-archived': us.isArchived}")
span.task-name(ng-bind="us.subject")
p(translate="KANBAN.UNDO_ARCHIVED")
- svg.icon.icon-edit(
- tg-check-permission="modify_us"
- title="{{'COMMON.EDIT' | translate}}"
+ a.edit-us(
+ href="",
+ title="{{'COMMON.EDIT' | translate}}",
+ tg-check-permission="modify_us",
ng-hide="us.isArchived"
)
- use(xlink:href="#icon-edit")
+ tg-svg(svg-icon="icon-edit")
diff --git a/app/partials/project/wizard-create-project.jade b/app/partials/project/wizard-create-project.jade
index ca9808be..e381369c 100644
--- a/app/partials/project/wizard-create-project.jade
+++ b/app/partials/project/wizard-create-project.jade
@@ -1,5 +1,4 @@
-svg.close.icon.icon-close(title="{{'COMMON.CLOSE' | translate}}")
- use(xlink:href="#icon-close")
+tg-lightbox-close
form
header
h1.title(translate="WIZARD.SECTION_TITLE_CREATE_PROJECT")
@@ -27,8 +26,7 @@ form
data-required="true"
)
label.template-label(for="template-{{ template.id }}")
- svg.icon(ng-class="'icon-'+template.slug")
- use(xlink:href="{{'#icon-' + template.slug }}")
+ tg-svg(svg-icon="{{'icon-'+template.slug}}")
span.template-name {{ template.name }}
.template-data
legend(translate="WIZARD.PROJECT_DETAILS")
@@ -64,8 +62,7 @@ form
ng-checked="canCreatePublicProjects.valid"
)
label.template-privacity(for="template-public")
- svg.icon.icon-discover
- use(xlink:href="#icon-discover")
+ tg-svg(svg-icon="icon-discover")
span(translate="WIZARD.PUBLIC_PROJECT")
fieldset
input(
@@ -81,12 +78,11 @@ form
ng-checked="!canCreatePublicProjects.valid"
)
label.template-privacity(for="template-private")
- svg.icon.icon-lock
- use(xlink:href="#icon-lock")
+ tg-svg(svg-icon="icon-lock")
span(translate="WIZARD.PRIVATE_PROJECT")
-
+
tg-create-project-restriction
-
+
button.button-green.submit-button(
translate="WIZARD.CREATE_PROJECT"
title="{{'WIZARD.CREATE_PROJECT' | translate}}"
diff --git a/app/partials/project/wizard-restrictions.jade b/app/partials/project/wizard-restrictions.jade
index 798bf1fd..fb80f608 100644
--- a/app/partials/project/wizard-restrictions.jade
+++ b/app/partials/project/wizard-restrictions.jade
@@ -1,9 +1,7 @@
div.create-warning(ng-if="!canCreatePrivateProjects.valid && canCreatePrivateProjects.reason == 'max_private_projects'")
- svg.icon.icon-exclamation
- use(xlink:href="#icon-exclamation")
+ tg-svg(svg-icon="icon-exclamation")
span {{ 'WIZARD.MAX_PRIVATE_PROJECTS' | translate }}
-
+
div.create-warning(ng-if="!canCreatePublicProjects.valid && canCreatePublicProjects.reason == 'max_public_projects'")
- svg.icon.icon-exclamation
- use(xlink:href="#icon-exclamation")
+ tg-svg(svg-icon="icon-exclamation")
span {{ 'WIZARD.MAX_PUBLIC_PROJECTS' | translate }}
diff --git a/app/partials/search/lightbox-search.jade b/app/partials/search/lightbox-search.jade
index 328deb21..5090ca52 100644
--- a/app/partials/search/lightbox-search.jade
+++ b/app/partials/search/lightbox-search.jade
@@ -1,6 +1,5 @@
-a.close(href="", title="{{'COMMON.CLOSE' | translate}}")
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
+
form
h2.title(translate="LIGHTBOX.SEARCH.TITLE")
fieldset
diff --git a/app/partials/task/related-task-create-form.jade b/app/partials/task/related-task-create-form.jade
index 997b8a60..996cf7e9 100644
--- a/app/partials/task/related-task-create-form.jade
+++ b/app/partials/task/related-task-create-form.jade
@@ -1,20 +1,15 @@
-.tasks
- .task-name
- input(type='text', placeholder="{{'TASK.PLACEHOLDER_SUBJECT' | translate}}")
- .task-settings
- svg.icon.icon-save(title="{{'COMMON.SAVE' | translate}}")
- use(xlink:href="#icon-save")
- svg.icon.icon-close.cancel-edit(href='', title="{{'COMMON.CANCEL' | translate}}")
- use(xlink:href="#icon-close")
+.task-name
+ input(type='text', placeholder="{{'TASK.PLACEHOLDER_SUBJECT' | translate}}")
+.task-settings
+ a.save-task(title="{{'COMMON.SAVE' | translate}}")
+ tg-svg(svg-icon="icon-save")
.status(tg-related-task-status='newTask', ng-model='newTask', not-auto-save='true')
a.task-status(href='', title="{{'TASK.TITLE_SELECT_STATUS' | translate}}")
span.task-status-bind
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
.assigned-to(tg-related-task-assigned-to-inline-edition='newTask', not-auto-save='true')
.task-assignedto(title="{{'COMMON.FIELDS.ASSIGNED_TO' | translate}}")
figure.avatar
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
diff --git a/app/partials/task/related-task-row-edit.jade b/app/partials/task/related-task-row-edit.jade
index 93f32d63..0eee394a 100644
--- a/app/partials/task/related-task-row-edit.jade
+++ b/app/partials/task/related-task-row-edit.jade
@@ -1,20 +1,27 @@
-.tasks
- .task-name
- input(type='text', value!='<%- task.subject %>', placeholder="{{'TASK.PLACEHOLDER_SUBJECT' | translate}}")
- .task-settings
- svg.icon.icon-save.save-task(title="{{'COMMON.SAVE' | translate}}")
- use(xlink:href="#icon-save")
- svg.icon.icon-close.cancel-edit(title="{{'COMMON.CANCEL' | translate}}")
- use(xlink:href="#icon-close")
+.task-name
+ input(
+ type='text'
+ value!='<%- task.subject %>'
+ placeholder="{{'TASK.PLACEHOLDER_SUBJECT' | translate}}"
+ )
+.task-settings
+ a.save-task(
+ href=""
+ title="{{'COMMON.SAVE' | translate}}"
+ )
+ tg-svg(svg-icon="icon-save")
+ a.cancel-edit(
+ href=""
+ title="{{'COMMON.CANCEL' | translate}}"
+ )
+ tg-svg(svg-icon="icon-cancel")
.status(tg-related-task-status='task', ng-model='task')
a.task-status(href='', title="{{'TASK.TITLE_SELECT_STATUS' | translate}}")
span.task-status-bind
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
.assigned-to(tg-related-task-assigned-to-inline-edition='task')
.task-assignedto(title="{{'COMMON.FIELDS.ASSIGNED_TO' | translate}}")
figure.avatar
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
diff --git a/app/partials/task/related-task-row.jade b/app/partials/task/related-task-row.jade
index 446b2017..e51deda1 100644
--- a/app/partials/task/related-task-row.jade
+++ b/app/partials/task/related-task-row.jade
@@ -1,51 +1,47 @@
-.tasks
- .task-name
- a.clickable(
- tg-nav="project-tasks-detail:project=project.slug,ref=task.ref"
- title!="#<%- task.ref %> <%- task.subject %>")
- svg.icon.icon-iocaine
- use(xlink:href="#icon-iocaine")
- span #<%- task.ref %>
- span <%- task.subject %>
- .task-settings
- <% if(perms.modify_task) { %>
- svg.icon.icon-edit.edit-task(
- href=""
- title="{{'COMMON.EDIT' | translate}}"
- )
- use(xlink:href="#icon-edit")
- <% } %>
- <% if(perms.delete_task) { %>
- svg.icon.icon-trash.delete-task(
- title="{{'COMMON.DELETE' | translate}}"
- )
- use(xlink:href="#icon-trash")
- <% } %>
+.task-name
+ a.clickable(
+ tg-nav="project-tasks-detail:project=project.slug,ref=task.ref"
+ title!="#<%- task.ref %> <%- task.subject %>")
+ span #<%- task.ref %>
+ span <%- task.subject %>
+.task-settings
+ <% if(perms.modify_task) { %>
+ a.edit-task(
+ href=""
+ title="{{'COMMON.EDIT' | translate}}"
+ )
+ tg-svg(svg-icon="icon-edit")
+ <% } %>
+ <% if(perms.delete_task) { %>
+ a.delete-task(
+ title="{{'COMMON.DELETE' | translate}}"
+ href=""
+ )
+ tg-svg(svg-icon="icon-trash")
+ <% } %>
.status(
tg-related-task-status="task"
ng-model="task"
)
a.task-status(
- href=""
+ href=""
title="{{'TASK.TITLE_SELECT_STATUS' | translate}}"
ng-style="{'color': task.status_extra_info.color}"
)
span.task-status-bind
<% if(perms.modify_task) { %>
- svg.icon.icon-arrow-down(ng-style="{'fill': task.status_extra_info.color}")
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down", ng-style="{'fill': task.status_extra_info.color}")
<% } %>
.assigned-to(
tg-related-task-assigned-to-inline-edition="task"
)
.task-assignedto(
- title="{{'COMMON.FIELDS.ASSIGNED_TO' | translate}}"
+ title="{{'COMMON.FIELDS.ASSIGNED_TO' | translate}}"
class="<% if(perms.modify_task) { %>editable<% } %>"
)
figure.avatar
<% if(perms.modify_task) { %>
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
<% } %>
diff --git a/app/partials/task/task-detail.jade b/app/partials/task/task-detail.jade
index e4060314..a0d00f8d 100644
--- a/app/partials/task/task-detail.jade
+++ b/app/partials/task/task-detail.jade
@@ -67,15 +67,13 @@ div.wrapper(
tg-bo-href="previousUrl"
title="{{'TASK.PREVIOUS' | translate}}"
)
- svg.icon.icon-arrow-left
- use(xlink:href='#icon-arrow-left')
+ tg-svg(svg-icon="icon-arrow-left")
a(
ng-show="nextUrl"
tg-bo-href="nextUrl"
title="{{'TASK.NEXT' | translate}}"
)
- svg.icon.icon-arrow-right
- use(xlink:href='#icon-arrow-right')
+ tg-svg(svg-icon="icon-arrow-right")
.subheader
div.tags-block(tg-tag-line, ng-model="task", required-perm="modify_task")
tg-created-by-display.ticket-created-by(ng-model="task")
diff --git a/app/partials/team/leave-project.jade b/app/partials/team/leave-project.jade
index 04fa75c4..44853967 100644
--- a/app/partials/team/leave-project.jade
+++ b/app/partials/team/leave-project.jade
@@ -2,6 +2,5 @@ a.leave-project(
ng-click="leave()"
href=""
)
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+ tg-svg(svg-icon="icon-close")
span {{ 'TEAM.ACTION_LEAVE_PROJECT' | translate }}
diff --git a/app/partials/team/team-filter.jade b/app/partials/team/team-filter.jade
index 67ccfcd0..e9a76228 100644
--- a/app/partials/team/team-filter.jade
+++ b/app/partials/team/team-filter.jade
@@ -6,8 +6,7 @@ ul
href=""
)
span.title(translate="TEAM.SECTION_FILTER_ALL")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
li(ng-repeat="role in roles")
a(
@@ -16,5 +15,4 @@ ul
href=""
)
span.title(tg-bo-bind="role.name")
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
diff --git a/app/partials/team/team-member-current-user.jade b/app/partials/team/team-member-current-user.jade
index 7275184f..caefc7e5 100644
--- a/app/partials/team/team-member-current-user.jade
+++ b/app/partials/team/team-member-current-user.jade
@@ -6,13 +6,19 @@
.avatar-data
.name
span(tg-bo-bind="currentUser.full_name_display")
- svg.icon.icon-badge(ng-if="currentUser.id == owner")
- use(xlink:href="#icon-badge")
- title(translate="COMMON.OWNER")
+ tg-svg(
+ ng-if="currentUser.id == owner"
+ svg-icon="icon-badge"
+ svg-title-translate="COMMON.OWNER"
+ )
.position(tg-bo-bind="currentUser.role_name")
- div(tg-leave-project="", project="project", user="currentUser")
+ div(
+ tg-leave-project=""
+ project="project"
+ user="currentUser"
+ )
.member-stats(
tg-team-member-stats
diff --git a/app/partials/team/team-member-stats.jade b/app/partials/team/team-member-stats.jade
index 161683b0..575d9646 100644
--- a/app/partials/team/team-member-stats.jade
+++ b/app/partials/team/team-member-stats.jade
@@ -1,37 +1,37 @@
.attribute(ng-if="issuesEnabled")
- svg.icon.icon-briefcase(
- ng-style="{'opacity': stats.closed_bugs[userId]}"
+ tg-svg(
+ svg-icon="icon-briefcase",
+ ng-style="{'opacity': stats.closed_bugs[userId]}",
ng-class="{'top': stats.closed_bugs[userId] == 1}"
)
- use(xlink:href="#icon-briefcase")
.attribute(ng-if="tasksEnabled")
- svg.icon.icon-iocaine(
- ng-style="{'opacity': stats.iocaine_tasks[userId]}"
+ tg-svg(
+ svg-icon="icon-iocaine",
+ ng-style="{'opacity': stats.iocaine_tasks[userId]}",
ng-class="{'top': stats.iocaine_tasks[userId] == 1}"
)
- use(xlink:href="#icon-iocaine")
.attribute(ng-if="wikiEnabled")
- svg.icon.icon-edit(
- ng-style="{'opacity': stats.wiki_changes[userId]}"
+ tg-svg(
+ svg-icon="icon-edit",
+ ng-style="{'opacity': stats.wiki_changes[userId]}",
ng-class="{'top': stats.wiki_changes[userId] == 1}"
)
- use(xlink:href="#icon-edit")
.attribute(ng-if="issuesEnabled")
- svg.icon.icon-bug(
- ng-style="{'opacity': stats.created_bugs[userId]}"
+ tg-svg(
+ svg-icon="icon-bug",
+ ng-style="{'opacity': stats.created_bugs[userId]}",
ng-class="{'top': stats.created_bugs[userId] == 1}"
)
- use(xlink:href="#icon-bug")
.attribute(ng-if="tasksEnabled")
- svg.icon.icon-task(
- ng-style="{'opacity': stats.closed_tasks[userId]}"
+ tg-svg(
+ svg-icon="icon-task",
+ ng-style="{'opacity': stats.closed_tasks[userId]}",
ng-class="{'top': stats.closed_tasks[userId] == 1}"
)
- use(xlink:href="#icon-task")
.attribute
span.points(ng-bind="stats.totals[userId]")
diff --git a/app/partials/team/team-members.jade b/app/partials/team/team-members.jade
index 1c88dfde..795388bb 100644
--- a/app/partials/team/team-members.jade
+++ b/app/partials/team/team-members.jade
@@ -9,9 +9,8 @@
title="{{::user.full_name_display}}"
) {{::user.full_name_display}}
svg.icon.icon-badge(ng-if="user.id == owner")
- use(xlink:href="#icon-badge")
- title(translate="COMMON.OWNER")
-
+ tg-svg(svg-icon="icon-badge", svg-title-translate="COMMON.OWNER")
+
span.position {{::user.role_name}}
.member-stats(
diff --git a/app/partials/us/us-client-requirement-button.jade b/app/partials/us/us-client-requirement-button.jade
index d9cb54a1..f0df30d6 100644
--- a/app/partials/us/us-client-requirement-button.jade
+++ b/app/partials/us/us-client-requirement-button.jade
@@ -3,8 +3,7 @@ label.button-gray.client-requirement(
class!="<% if(canEdit){ %>is-editable<% }; %> <% if(isRequired){ %>active<% }; %>"
title="{{ 'COMMON.CLIENT_REQUIREMENT' | translate }}"
)
- svg.icon.icon-client-requirement
- use(xlink:href="#icon-client-requirement")
+ tg-svg(svg-icon="icon-client-requirement")
input(
type="checkbox"
id="client-requirement"
diff --git a/app/partials/us/us-detail.jade b/app/partials/us/us-detail.jade
index b6dcbcd0..193615e0 100644
--- a/app/partials/us/us-detail.jade
+++ b/app/partials/us/us-detail.jade
@@ -60,15 +60,13 @@ div.wrapper(
tg-bo-href="previousUrl"
title="{{'US.PREVIOUS' | translate}}"
)
- svg.icon.icon-arrow-left
- use(xlink:href="#icon-arrow-left")
+ tg-svg(svg-icon="icon-arrow-left")
a(
ng-show="nextUrl"
tg-bo-href="nextUrl"
title="{{'US.NEXT' | translate}}"
)
- svg.icon.icon-arrow-right
- use(xlink:href="#icon-arrow-right")
+ tg-svg(svg-icon="icon-arrow-right")
.subheader
.tags-block(tg-tag-line, ng-model="us", required-perm="modify_us")
tg-created-by-display.ticket-created-by(ng-model="us")
diff --git a/app/partials/us/us-status-button.jade b/app/partials/us/us-status-button.jade
index 5066a9ab..7bcf995f 100644
--- a/app/partials/us/us-status-button.jade
+++ b/app/partials/us/us-status-button.jade
@@ -4,8 +4,7 @@ span.detail-status-inner.js-edit-status(
)
span <%- status.name %>
<% if(editable){ %>
- svg.icon.icon-arrow-down
- use(xlink:href="#icon-arrow-down")
+ tg-svg(svg-icon="icon-arrow-down")
<% }%>
ul.pop-status.popover
diff --git a/app/partials/us/us-team-requirement-button.jade b/app/partials/us/us-team-requirement-button.jade
index 9a4d186d..b32f1177 100644
--- a/app/partials/us/us-team-requirement-button.jade
+++ b/app/partials/us/us-team-requirement-button.jade
@@ -3,9 +3,7 @@ label.button-gray.team-requirement(
class!=" <% if(canEdit){ %>is-editable<% }; %> <% if(isRequired){ %>active<% }; %>"
title="{{ 'COMMON.TEAM_REQUIREMENT' | translate }}"
)
- svg.icon.icon-team-requirement
- use(xlink:href="#icon-team-requirement")
-
+ tg-svg(svg-icon="icon-team-requirement")
input(
type="checkbox"
id="team-requirement"
diff --git a/app/partials/user/lightbox/lightbox-delete-account.jade b/app/partials/user/lightbox/lightbox-delete-account.jade
index 087e25b3..4229ac26 100644
--- a/app/partials/user/lightbox/lightbox-delete-account.jade
+++ b/app/partials/user/lightbox/lightbox-delete-account.jade
@@ -1,6 +1,5 @@
-a.close(href="", title="{{'close' | translate}}")
- svg.icon.icon-close
- use(xlink:href="#icon-close")
+tg-lightbox-close
+
form
h2.title(translate="LIGHTBOX.DELETE_ACCOUNT.CONFIRM")
diff --git a/app/partials/wiki/editable-wiki-content.jade b/app/partials/wiki/editable-wiki-content.jade
index e5729ed0..4f27d874 100644
--- a/app/partials/wiki/editable-wiki-content.jade
+++ b/app/partials/wiki/editable-wiki-content.jade
@@ -2,19 +2,28 @@ include ../common/components/wysiwyg.jade
.view-wiki-content
section.wysiwyg(tg-bind-html='wiki.html')
- svg.edit.icon.icon-edit(
+ a.edit(
+ href=""
title="{{'COMMON.EDIT' | translate}}"
- ng-if="wiki"
)
- use(xlink:href="#icon-edit")
+ tg-svg(svg-icon="icon-edit")
.edit-wiki-content(style='display: none;')
- textarea(ng-attr-placeholder="{{'WIKI.PLACEHOLDER_PAGE' | translate}}",
- ng-model='wiki.content', tg-markitup='tg-markitup')
+ textarea(
+ ng-attr-placeholder="{{'WIKI.PLACEHOLDER_PAGE' | translate}}",
+ ng-model='wiki.content'
+ tg-markitup='tg-markitup'
+ )
+wysihelp
span.action-container
- svg.save.icon.icon-save(title="{{'COMMON.SAVE' | translate}}")
- use(xlink:href="#icon-save")
- svg.cancel.icon.icon-close(title="{{'COMMON.CANCEL' | translate}}")
- use(xlink:href="#icon-close")
+ a.save(
+ title="{{'COMMON.SAVE' | translate}}"
+ href=""
+ )
+ tg-svg(svg-icon="icon-save")
+ a.cancel(
+ title="{{'COMMON.CANCEL' | translate}}"
+ href=""
+ )
+ tg-svg(svg-icon="icon-close")
diff --git a/app/partials/wiki/wiki-nav.jade b/app/partials/wiki/wiki-nav.jade
index c26d5590..6d5c6f34 100644
--- a/app/partials/wiki/wiki-nav.jade
+++ b/app/partials/wiki/wiki-nav.jade
@@ -5,17 +5,27 @@ nav
ul
<% _.each(wikiLinks, function(link, index) { %>
li.wiki-link(data-id!="<%- index %>")
- a(title!="<%- link.title %>")
- span.link-title <%- link.title %>
- <% if (deleteWikiLinkPermission) { %>
- svg.js-delete-link.icon.icon-trash
- use(xlink:href="#icon-trash")
- <% } %>
- input(type="text" placeholder="{{'COMMON.FIELDS.NAME' | translate}}" class="hidden" value!="<%- link.title %>")
+ a.link-title(title!="<%- link.title %>") <%- link.title %>
+ <% if (deleteWikiLinkPermission) { %>
+ a.js-delete-link.remove-wiki-page(title!="{{'WIKI.DELETE_LINK_TITLE' | translate}}")
+ tg-svg(svg-icon="icon-trash")
+ <% } %>
+ input.hidden(
+ type="text"
+ placeholder="{{'COMMON.FIELDS.NAME' | translate}}"
+ value!="<%- link.title %>"
+ )
<% }) %>
li.new.hidden
- input(type="text" placeholder="{{'COMMON.FIELDS.NAME' | translate}}")
+ input(
+ type="text"
+ placeholder="{{'COMMON.FIELDS.NAME' | translate}}"
+ )
<% if (addWikiLinkPermission) { %>
-a(href="" title="{{'WIKI.NAVIGATION.ACTION_ADD_LINK' | translate}}" class="add-button button-gray")
+a(
+ href=""
+ title="{{'WIKI.NAVIGATION.ACTION_ADD_LINK' | translate}}"
+ class="add-button button-gray"
+)
span(translate="WIKI.NAVIGATION.ACTION_ADD_LINK")
<% } %>
diff --git a/app/partials/wiki/wiki.jade b/app/partials/wiki/wiki.jade
index 1b30f29f..a7e59bd5 100644
--- a/app/partials/wiki/wiki.jade
+++ b/app/partials/wiki/wiki.jade
@@ -28,7 +28,12 @@ div.wrapper(ng-controller="WikiDetailController as ctrl",
edit-permission = "modify_wiki_page"
)
- a.remove(href="", ng-click="ctrl.delete()", ng-if="wiki.id", title="{{'WIKI.REMOVE' | translate}}", tg-check-permission="delete_wiki_page")
- svg.icon.icon-trash
- use(xlink:href="#icon-trash")
+ a.remove(
+ href=""
+ ng-click="ctrl.delete()"
+ ng-if="wiki.id"
+ title="{{'WIKI.REMOVE' | translate}}"
+ tg-check-permission="delete_wiki_page"
+ )
+ tg-svg(svg-icon="icon-trash")
span(translate="WIKI.REMOVE")
diff --git a/app/styles/components/editor-help.scss b/app/styles/components/editor-help.scss
index 5e77956a..038b2a18 100644
--- a/app/styles/components/editor-help.scss
+++ b/app/styles/components/editor-help.scss
@@ -4,6 +4,9 @@
justify-content: space-between;
margin-top: -.5rem;
padding: .25rem .5rem;
+ a {
+ display: inline-block;
+ }
}
.drag-drop-help {
diff --git a/app/styles/components/filter.scss b/app/styles/components/filter.scss
index 86994832..98d85f35 100644
--- a/app/styles/components/filter.scss
+++ b/app/styles/components/filter.scss
@@ -2,10 +2,13 @@
@extend %large;
@extend %title;
@include clearfix;
- cursor: pointer;
- display: block;
+ align-items: center;
+ background: darken($whitish, 10%); // Fallback
+ display: flex;
+ justify-content: space-between;
margin-bottom: .5rem;
opacity: .5;
+ padding-right: .5rem;
position: relative;
&:hover {
color: $grayer;
@@ -24,9 +27,7 @@
}
.name {
@include ellipsis(100%);
- background: darken($whitish, 10%); // Fallback
display: block;
- padding-right: 2rem;
width: 100%;
}
.number {
@@ -36,13 +37,15 @@
top: 0;
}
.remove-filter {
- fill: $gray;
- position: absolute;
- right: .5rem;
- top: .75rem;
- transition: fill .2s linear;
+ display: block;
+ svg {
+ fill: $gray;
+ transition: fill .2s linear;
+ }
&:hover {
- fill: $red;
+ svg {
+ fill: $red;
+ }
}
}
}
diff --git a/app/styles/components/kanban-task.scss b/app/styles/components/kanban-task.scss
index 37406516..3a2c1f25 100644
--- a/app/styles/components/kanban-task.scss
+++ b/app/styles/components/kanban-task.scss
@@ -9,7 +9,7 @@
margin-bottom: 0;
}
&:hover {
- .icon-edit {
+ .edit-us {
display: block;
fill: $card-dark;
opacity: 1;
@@ -95,15 +95,20 @@
bottom: .5rem;
position: absolute;
}
- .icon-edit {
- @include svg-size(1.1rem);
- fill: $card-hover;
+ .edit-us {
+ display: block;
opacity: 0;
position: absolute;
+ svg {
+ @include svg-size(1.1rem);
+ fill: $card-hover;
+ }
&:hover {
cursor: pointer;
- fill: darken($card-hover, 15%);
- transition: color .3s linear;
+ svg {
+ fill: darken($card-hover, 15%);
+ transition: color .3s linear;
+ }
}
}
}
@@ -140,7 +145,7 @@
word-wrap: break-word;
}
.loading,
- .icon-edit {
+ .edit-us {
bottom: .2rem;
right: .5rem;
}
diff --git a/app/styles/components/list-items.scss b/app/styles/components/list-items.scss
index 12ebdb93..ed1c2e96 100644
--- a/app/styles/components/list-items.scss
+++ b/app/styles/components/list-items.scss
@@ -92,6 +92,7 @@
.ticket-project,
.ticket-type,
.ticket-status,
+ .ticket-id,
.list-itemtype-avatar,
.list-itemtype-track,
.ticket-title {
@@ -99,6 +100,7 @@
}
.icon-blocked-project {
@include svg-size();
+ margin-left: .25rem;
}
}
h2 {
diff --git a/app/styles/components/looking-for-people.scss b/app/styles/components/looking-for-people.scss
new file mode 100644
index 00000000..9e34a75a
--- /dev/null
+++ b/app/styles/components/looking-for-people.scss
@@ -0,0 +1,5 @@
+.look-for-people {
+ @include svg-size();
+ fill: $gray-light;
+ margin-left: .25rem;
+}
diff --git a/app/styles/components/markitup.scss b/app/styles/components/markitup.scss
index dd121e40..93beffec 100644
--- a/app/styles/components/markitup.scss
+++ b/app/styles/components/markitup.scss
@@ -15,7 +15,7 @@
}
.preview-icon {
position: absolute;
- right: 2.5rem;
+ right: 4rem;
}
}
}
diff --git a/app/styles/components/notification-message.scss b/app/styles/components/notification-message.scss
index 33585da6..70e39a09 100644
--- a/app/styles/components/notification-message.scss
+++ b/app/styles/components/notification-message.scss
@@ -90,13 +90,16 @@
margin: 0;
}
}
- .icon-close {
- cursor: pointer;
- fill: $white;
+ .close {
+ display: block;
position: absolute;
right: 1rem;
top: 1rem;
}
+ .icon-close {
+ cursor: pointer;
+ fill: $white;
+ }
}
.notification-message {
@@ -141,6 +144,7 @@
line-height: 1.5rem;
}
.close {
+ display: block;
margin-right: 1rem;
width: 2rem;
svg {
diff --git a/app/styles/components/private.scss b/app/styles/components/private.scss
index 8a40e013..f89e0620 100644
--- a/app/styles/components/private.scss
+++ b/app/styles/components/private.scss
@@ -1,4 +1,4 @@
-.private {
+.icon-lock {
fill: $gray-light;
margin-left: .5rem;
}
diff --git a/app/styles/components/summary.scss b/app/styles/components/summary.scss
index 28d6aaa5..47a2d596 100644
--- a/app/styles/components/summary.scss
+++ b/app/styles/components/summary.scss
@@ -32,6 +32,7 @@ $summary-background: $grayer;
}
.stats {
cursor: pointer;
+ display: block;
height: 2rem;
margin-left: auto;
width: 2rem;
diff --git a/app/styles/components/tag.scss b/app/styles/components/tag.scss
index 2e0254ac..80130150 100644
--- a/app/styles/components/tag.scss
+++ b/app/styles/components/tag.scss
@@ -42,11 +42,14 @@
padding: .4rem;
width: 14rem;
}
+ .save {
+ cursor: pointer;
+ display: inline-block;
+ margin-left: .5rem;
+ }
.icon-save {
@include svg-size();
- cursor: pointer;
fill: $grayer;
- margin-left: .5rem;
&:hover {
fill: $primary;
transition: .2s linear;
@@ -68,6 +71,7 @@
}
.add-tag {
color: $gray-light;
+ display: inline-block;
&:hover {
color: $primary-light;
}
@@ -78,4 +82,7 @@
.add-tag-text {
@extend %small;
}
+ .remove-tag {
+ display: inline-block;
+ }
}
diff --git a/app/styles/components/taskboard-task.scss b/app/styles/components/taskboard-task.scss
index 7fa2daa4..4e3742e6 100644
--- a/app/styles/components/taskboard-task.scss
+++ b/app/styles/components/taskboard-task.scss
@@ -75,6 +75,9 @@
}
}
.iocaine {
+ left: .2rem;
+ position: absolute;
+ top: 1rem;
img {
filter: hue-rotate(150deg) saturate(200%);
}
@@ -84,10 +87,7 @@
border-radius: 5px;
fill: $white;
height: 1.75rem;
- left: .2rem;
padding: .25rem;
- position: absolute;
- top: 1rem;
width: 1.75rem;
}
.task-assigned {
@@ -119,13 +119,16 @@
bottom: .5rem;
position: absolute;
}
+ .edit-task {
+ bottom: .5rem;
+ position: absolute;
+ top: auto;
+ }
.icon-edit {
@include svg-size(1.1rem);
- bottom: .5rem;
cursor: pointer;
fill: $card-hover;
opacity: 0;
- position: absolute;
&:hover {
fill: $card-dark;
}
diff --git a/app/styles/components/user-list.scss b/app/styles/components/user-list.scss
index e39f8016..9105554f 100644
--- a/app/styles/components/user-list.scss
+++ b/app/styles/components/user-list.scss
@@ -49,6 +49,7 @@
transition-delay: .1s;
}
.remove-assigned-to {
+ display: block;
fill: $grayer;
opacity: 1;
position: absolute;
diff --git a/app/styles/core/animation.scss b/app/styles/core/animation.scss
index 74d4cd56..79352045 100644
--- a/app/styles/core/animation.scss
+++ b/app/styles/core/animation.scss
@@ -45,20 +45,6 @@
}
}
-// Drop Down element animations
-@keyframes dropdownFade {
- 0% {
- opacity: 0;
- transform: translateY(-.25rem);
- }
- 60% {
- opacity: 1;
- }
- 100% {
- transform: translateY(0);
- }
-}
-
// Drop Down element animations
@keyframes dropdownFade {
diff --git a/app/styles/core/forms.scss b/app/styles/core/forms.scss
index ebd15ecd..b1a03811 100644
--- a/app/styles/core/forms.scss
+++ b/app/styles/core/forms.scss
@@ -40,12 +40,20 @@ textarea {
padding: .2rem;
}
}
-.icon-capslock {
- bottom: .8rem;
- display: none;
- fill: $gray;
- height: .9rem;
- position: absolute;
- right: 1rem;
- width: .9rem;
+.capslock {
+ &.ng-enter {
+ animation: dropdownFade .2s ease-in;
+ }
+ &.ng-leave {
+ animation: dropdownFade .2s ease-in;
+ animation-direction: reverse;
+ }
+ .icon-capslock {
+ bottom: .8rem;
+ fill: $gray;
+ height: .9rem;
+ position: absolute;
+ right: 1rem;
+ width: .9rem;
+ }
}
diff --git a/app/styles/dependencies/helpers.scss b/app/styles/dependencies/helpers.scss
index f9080da8..9125f084 100644
--- a/app/styles/dependencies/helpers.scss
+++ b/app/styles/dependencies/helpers.scss
@@ -27,16 +27,19 @@
.close {
@include svg-size(2rem);
cursor: pointer;
+ display: block;
fill: $gray;
position: absolute;
right: 3rem;
top: 3rem;
transition: fill .2s;
+ display: block;
&:hover {
fill: $red-light;
}
svg {
@include svg-size(2rem);
+ pointer-events: none;
}
}
&.open {
diff --git a/app/styles/dependencies/mixins.scss b/app/styles/dependencies/mixins.scss
index 746cc5d6..f50d41bc 100644
--- a/app/styles/dependencies/mixins.scss
+++ b/app/styles/dependencies/mixins.scss
@@ -139,7 +139,6 @@
}
}
.icon {
- @include svg-size(.75rem);
fill: $gray-light;
}
}
diff --git a/app/styles/dependencies/mixins/project-card.scss b/app/styles/dependencies/mixins/project-card.scss
index efd82701..20a11202 100644
--- a/app/styles/dependencies/mixins/project-card.scss
+++ b/app/styles/dependencies/mixins/project-card.scss
@@ -71,9 +71,4 @@
}
}
}
- .look-for-people {
- @include svg-size(1rem);
- fill: $gray-light;
- margin: 0 .5rem;
- }
}
diff --git a/app/styles/layout/ticket-detail.scss b/app/styles/layout/ticket-detail.scss
index c2289163..38dadffc 100644
--- a/app/styles/layout/ticket-detail.scss
+++ b/app/styles/layout/ticket-detail.scss
@@ -66,6 +66,9 @@
}
.save-container {
flex-grow: 1;
+ .save {
+ display: block;
+ }
}
.us-title-text {
@extend %larger;
@@ -99,11 +102,13 @@
padding-right: 1rem;
width: 100%;
}
- .edit,
- .save {
+ .save,
+ .edit {
cursor: pointer;
- fill: $gray-light;
margin-left: .5rem;
+ svg {
+ fill: $gray-light;
+ }
}
.edit {
opacity: 0;
@@ -167,6 +172,9 @@
position: absolute;
right: 1rem;
top: 1rem;
+ a {
+ display: inline-block;
+ }
svg {
@include svg-size(1.2rem);
fill: currentColor;
@@ -262,10 +270,12 @@
margin-bottom: 2rem;
.save {
cursor: pointer;
+ display: inline-block;
position: relative;
top: .3rem;
}
.edit {
+ display: inline-block;
position: absolute;
right: 2.5rem;
top: .4rem;
diff --git a/app/styles/layout/wiki.scss b/app/styles/layout/wiki.scss
index dbec51e2..cc15bd3e 100644
--- a/app/styles/layout/wiki.scss
+++ b/app/styles/layout/wiki.scss
@@ -55,31 +55,39 @@
cursor: pointer;
}
}
- .edit-wiki-content {
- .icon {
- &:hover {
- cursor: pointer;
+ .preview {
+ padding-top: 1.8rem;
+ }
+}
+
+.edit-wiki-content {
+ a {
+ display: inline-block;
+ margin-right: .5rem;
+ &:last-child {
+ margin: 0;
+ }
+ &:hover {
+ cursor: pointer;
+ .icon {
fill: $primary-dark;
opacity: .3;
transition: all .2s linear;
}
}
- .preview-icon {
- position: absolute;
- right: 3.5rem;
- }
- .action-container {
- position: absolute;
- right: 1rem;
- top: .3rem;
- }
- .edit {
- position: absolute;
- right: 3.5rem;
- top: .4rem;
- }
}
- .preview {
- padding-top: 1.8rem;
+ .preview-icon {
+ position: absolute;
+ right: 3.5rem;
+ }
+ .action-container {
+ position: absolute;
+ right: 1rem;
+ top: .3rem;
+ }
+ .edit {
+ position: absolute;
+ right: 3.5rem;
+ top: .4rem;
}
}
diff --git a/app/styles/modules/admin/admin-custom-attributes.scss b/app/styles/modules/admin/admin-custom-attributes.scss
index ef5a1767..73c45584 100644
--- a/app/styles/modules/admin/admin-custom-attributes.scss
+++ b/app/styles/modules/admin/admin-custom-attributes.scss
@@ -12,17 +12,12 @@
.table-header {
@extend %bold;
border-bottom: 3px solid $whitish;
- .custom-name span,
- .custom-description span {
+ .custom-name,
+ .custom-description {
padding-left: 1.1rem;
}
}
.table-body {
- form:last-child {
- .row {
- border: 0;
- }
- }
.row:hover {
background: rgba($primary-light, .05);
cursor: move;
@@ -50,18 +45,11 @@
.icon-drag {
fill: $gray-light;
opacity: 0;
- padding: 0 .1rem;
+ padding: 0 .25rem 0 .1rem;
transition: color .2s linear;
- vertical-align: middle;
- &:hover {
- cursor: move;
- fill: $gray;
- transition: color .2s linear;
- }
}
.custom-name,
.custom-description {
- color: $gray;
margin-right: .5rem;
}
.custom-name {
@@ -74,8 +62,9 @@
flex-grow: 8;
}
.custom-field-type {
- flex-basis: 25%;
+ flex-basis: 10%;
flex-grow: 0;
+ flex-shrink: 0;
}
.custom-options {
flex-basis: 100px;
@@ -102,6 +91,9 @@
.custom-options-wrapper {
opacity: 0;
transition: opacity .3s linear;
+ a {
+ display: inline-block;
+ }
}
form {
.custom-options-wrapper {
diff --git a/app/styles/modules/admin/admin-functionalities.scss b/app/styles/modules/admin/admin-functionalities.scss
index cc29e8e6..39e1b53c 100644
--- a/app/styles/modules/admin/admin-functionalities.scss
+++ b/app/styles/modules/admin/admin-functionalities.scss
@@ -48,14 +48,16 @@
align-items: flex-start;
display: flex;
margin-top: .5rem;
+ .options {
+ align-items: center;
+ display: flex;
+ height: 2.5rem;
+ }
fieldset,
.icon {
margin: 0 .5rem;
}
.icon {
- @include svg-size(2.5rem);
- align-self: center;
- cursor: pointer;
fill: $gray-light;
&:hover {
fill: $primary;
@@ -63,12 +65,12 @@
}
}
.module-scrum {
- .icon {
+ .options {
align-self: flex-end;
}
}
.module-videoconference {
- .icon {
+ .options {
align-self: flex-start;
}
}
diff --git a/app/styles/modules/admin/admin-roles.scss b/app/styles/modules/admin/admin-roles.scss
index cd817290..5507d1b0 100644
--- a/app/styles/modules/admin/admin-roles.scss
+++ b/app/styles/modules/admin/admin-roles.scss
@@ -1,4 +1,7 @@
.admin-roles {
+ .save {
+ display: inline-block;
+ }
.role-name {
@extend %xlarge;
@extend %light;
diff --git a/app/styles/modules/admin/admin-third-parties-webhooks.scss b/app/styles/modules/admin/admin-third-parties-webhooks.scss
index 825314eb..7b280b39 100644
--- a/app/styles/modules/admin/admin-third-parties-webhooks.scss
+++ b/app/styles/modules/admin/admin-third-parties-webhooks.scss
@@ -25,11 +25,6 @@
.single-webhook-wrapper {
border-bottom: 1px solid $whitish;
}
- .webhooks-options {
- margin-bottom: 1rem;
- text-align: right;
- }
-
.webhook-service,
.webhook-url {
margin-right: .5rem;
@@ -58,9 +53,9 @@
.webhook-options {
flex-basis: 100px;
flex-grow: 0;
- min-width: 100px;
- text-align: center;
+ flex-shrink: 0;
a {
+ display: inline-block;
margin-right: .5rem;
}
svg {
diff --git a/app/styles/modules/admin/project-values.scss b/app/styles/modules/admin/project-values.scss
index d55a0516..e1ce865a 100644
--- a/app/styles/modules/admin/project-values.scss
+++ b/app/styles/modules/admin/project-values.scss
@@ -61,8 +61,11 @@
}
.project-values-settings {
- svg {
+ a {
+ display: inline-block;
margin-right: .5rem;
+ }
+ svg {
&.icon-trash {
fill: $red-light;
}
diff --git a/app/styles/modules/backlog/backlog-table.scss b/app/styles/modules/backlog/backlog-table.scss
index 934d5b64..b3425e3f 100644
--- a/app/styles/modules/backlog/backlog-table.scss
+++ b/app/styles/modules/backlog/backlog-table.scss
@@ -281,6 +281,11 @@
cursor: auto;
padding-right: 45px;
}
+ .us-status {
+ tg-svg {
+ display: inline-block;
+ }
+ }
}
.empty-backlog {
diff --git a/app/styles/modules/backlog/sprints.scss b/app/styles/modules/backlog/sprints.scss
index e2d11194..fcc7a9c4 100644
--- a/app/styles/modules/backlog/sprints.scss
+++ b/app/styles/modules/backlog/sprints.scss
@@ -58,23 +58,23 @@
header {
position: relative;
}
-
&:hover {
- .icon-edit {
+ .edit-sprint {
opacity: 1;
transition: opacity .2s ease-in;
}
}
.edit-sprint {
- fill: $gray-light;
opacity: 0;
position: absolute;
right: 0;
top: 0;
transition: opacity .2s ease-in;
vertical-align: baseline;
+ }
+ svg {
+ fill: $gray-light;
&:hover {
- cursor: pointer;
fill: $primary;
transition: fill .2s ease-in;
}
diff --git a/app/styles/modules/backlog/taskboard-table.scss b/app/styles/modules/backlog/taskboard-table.scss
index cd99e5a4..dab4947f 100644
--- a/app/styles/modules/backlog/taskboard-table.scss
+++ b/app/styles/modules/backlog/taskboard-table.scss
@@ -87,21 +87,6 @@ $column-margin: 0 10px 0 0;
&:last-child {
margin-right: 0;
}
- .icon {
- @extend %medium;
- fill: $gray-light;
- margin-right: .3rem;
- transition: fill .2s linear;
- &:hover {
- cursor: pointer;
- fill: $primary;
- }
- &.hfold,
- &.hunfold {
- display: inline-block;
- transform: rotate(90deg);
- }
- }
&.column-fold {
align-items: center;
justify-content: center;
@@ -115,6 +100,28 @@ $column-margin: 0 10px 0 0;
}
}
}
+ tg-svg {
+ display: block;
+ margin-right: .3rem;
+ svg {
+ @extend %medium;
+ fill: $gray-light;
+ transition: fill .2s linear;
+ }
+ &:hover {
+ cursor: pointer;
+ svg {
+ fill: $primary;
+ }
+ }
+ &.hfold,
+ &.hunfold {
+ display: inline-block;
+ svg {
+ transform: rotate(90deg);
+ }
+ }
+ }
}
.taskboard-table-body {
@@ -184,26 +191,6 @@ $column-margin: 0 10px 0 0;
.taskboard-userstory-box {
padding: .5rem .5rem .5rem 1.5rem;
- .icon {
- cursor: pointer;
- fill: $gray-light;
- position: absolute;
- right: .5rem;
- top: .7rem;
- transition: fill .2s linear;
- &:hover {
- fill: $primary;
- }
- &.icon-add {
- right: 2rem;
- }
- &.icon-fold-row,
- &.icon-unfold-row {
- left: 0;
- right: inherit;
- top: 1rem;
- }
- }
}
.avatar-task-link {
display: none;
@@ -211,6 +198,29 @@ $column-margin: 0 10px 0 0;
.avatar-assigned-to {
display: block;
}
+ .icon {
+ transition: fill .2s linear;
+ }
+ tg-svg {
+ cursor: pointer;
+ display: block;
+ position: absolute;
+ right: .5rem;
+ top: .7rem;
+ &:hover {
+ svg {
+ fill: $primary;
+ }
+ }
+ &.add-action {
+ right: 2rem;
+ }
+ &.fold-action {
+ left: 0;
+ right: inherit;
+ top: 1rem;
+ }
+ }
}
.taskboard-userstory-box {
diff --git a/app/styles/modules/common/colors-table.scss b/app/styles/modules/common/colors-table.scss
index fa1f15bb..920a1bf4 100644
--- a/app/styles/modules/common/colors-table.scss
+++ b/app/styles/modules/common/colors-table.scss
@@ -24,6 +24,11 @@
transition: opacity .3s linear;
}
}
+ .options-column {
+ a {
+ display: inline-block;
+ }
+ }
}
form {
&:last-child {
@@ -136,5 +141,4 @@
}
}
}
-
}
diff --git a/app/styles/modules/common/custom-fields.scss b/app/styles/modules/common/custom-fields.scss
index 4adab4e5..4d5d6413 100644
--- a/app/styles/modules/common/custom-fields.scss
+++ b/app/styles/modules/common/custom-fields.scss
@@ -11,6 +11,9 @@
.icon {
cursor: pointer;
}
+ .collapse {
+ display: block;
+ }
}
.custom-fields-body {
@include slide(1000px, hidden, $min: 0);
@@ -35,8 +38,10 @@
margin: 0;
opacity: 0;
transition: opacity .2s linear;
+ a {
+ display: inline-block;
+ }
svg {
- cursor: pointer;
fill: $gray-light;
&:hover {
fill: $primary;
diff --git a/app/styles/modules/common/history.scss b/app/styles/modules/common/history.scss
index 9cb43032..08495746 100644
--- a/app/styles/modules/common/history.scss
+++ b/app/styles/modules/common/history.scss
@@ -214,6 +214,7 @@
.comment-restore {
@extend %small;
color: $gray-light;
+ display: block;
position: absolute;
right: 0;
top: .4rem;
@@ -264,15 +265,20 @@
}
.comment-delete {
cursor: pointer;
- fill: $red-light;
+ display: block;
opacity: 0;
position: absolute;
right: .5rem;
top: 2rem;
- transition: all .2s linear;
+ svg {
+ fill: $red-light;
+ transition: all .2s linear;
+ }
&:hover {
- fill: $red;
- transition: color .2s linear;
+ svg {
+ fill: $red;
+ transition: color .2s linear;
+ }
}
}
&.activity {
diff --git a/app/styles/modules/common/related-tasks.scss b/app/styles/modules/common/related-tasks.scss
index 268fd5e3..6aa197ea 100644
--- a/app/styles/modules/common/related-tasks.scss
+++ b/app/styles/modules/common/related-tasks.scss
@@ -38,32 +38,26 @@
width: 100%;
.row {
@extend %small;
- align-content: center;
align-items: center;
border-bottom: 1px solid $whitish;
display: flex;
- justify-content: center;
padding: .5rem 0 .5rem .5rem;
- position: relative;
- text-align: left;
- width: 100%;
&:hover {
- background: transparent;
.task-settings {
opacity: 1;
transition: all .2s ease-in;
}
}
- &:last-child {
- border: 0;
+ .task-name {
+ flex: 1;
}
- .tasks {
- overflow: hidden;
- width: 100%;
+ .task-settings {
+ flex-shrink: 0;
+ width: 60px;
}
.status {
flex-shrink: 0;
- width: 100px;
+ width: 125px;
}
.assigned-to {
cursor: pointer;
@@ -77,60 +71,14 @@
padding: .5rem 0 .5rem .5rem;
}
}
- .status {
- position: relative;
- text-align: left;
- &:hover {
- .icon {
- opacity: 1;
- transition: opacity .2s ease-in;
- }
- }
- .not-clickable {
- &:hover {
- color: $grayer;
- }
- }
- .popover {
- a {
- text-align: left;
- width: 100%;
- }
- .point {
- text-align: center;
- }
- }
- .icon {
- @include svg-size(.8rem);
- fill: $gray-light;
- margin-left: .2rem;
- opacity: 0;
- }
- }
- .pop-status {
- @include popover(200px, 0, 40%);
- padding-right: 1rem;
- &.fix {
- bottom: 0;
- top: auto;
- }
+
+ .iocaine {
+ background: rgba($primary-light, .1);
+ border-left: 10px solid $primary-light;
}
.task-name {
display: flex;
- justify-content: space-between;
- position: relative;
- a {
- display: inline-block;
- max-width: 90%;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- svg,
- span {
- margin-right: .25rem;
- }
- }
- svg,
+ margin-right: 1rem;
span {
margin-right: .25rem;
}
@@ -150,38 +98,25 @@
}
}
}
- .iocaine,
- .iocaine:hover {
- background: rgba($primary-light, .3);
- .icon-iocaine {
- @extend %large;
- display: inline-block;
- margin-right: .5rem;
- vertical-align: top;
- }
- a,
- svg {
- color: $primary-dark;
- fill: $primary-dark;
+ .status {
+ position: relative;
+ .not-clickable {
&:hover {
- color: currentColor;
- fill: currentColor;
+ color: $grayer;
}
}
- }
- .blocked,
- .blocked:hover {
- background: $red-light;
- color: $white;
- a,
- svg {
- color: $white;
- fill: $white;
- &:hover {
- color: currentColor;
- fill: currentColor;
+ .popover {
+ left: 0;
+ top: 1rem;
+ a {
+ display: block;
}
}
+ .icon {
+ @include svg-size(.8rem);
+ fill: currentColor;
+ margin-left: .2rem;
+ }
}
.closed,
.closed:hover {
@@ -200,6 +135,19 @@
.icon-iocaine {
display: none;
}
+ .pop-status {
+ @include popover(200px, 0, 40%);
+ padding-right: 1rem;
+ &.fix {
+ bottom: 0;
+ top: auto;
+ }
+ }
+ .blocked,
+ .blocked:hover {
+ background: rgba($red-light, .2);
+ border-left: 10px solid $red-light;
+ }
.task-settings {
align-items: center;
display: flex;
@@ -207,20 +155,32 @@
svg {
@include svg-size(1.1rem);
fill: $gray-light;
- margin-right: 2rem;
+ margin-right: .5rem;
transition: fill .2s ease-in;
&:hover {
- cursor: pointer;
- fill: $grayer;
+ fill: $gray;
}
- &.icon-close:hover {
- fill: $red-light;
+ }
+ a {
+ &:hover {
+ cursor: pointer;
}
}
}
- .assigned-to {
- position: relative;
- text-align: left;
+ .edit-task,
+ .save-task,
+ .delete-task {
+ &:hover {
+ .icon-edit {
+ fill: $grayer;
+ }
+ .icon-save {
+ fill: $primary;
+ }
+ .icon-trash {
+ fill: $red-light;
+ }
+ }
}
.task-assignedto {
position: relative;
diff --git a/app/styles/modules/common/ticket-data.scss b/app/styles/modules/common/ticket-data.scss
index b5723c38..a69f36ca 100644
--- a/app/styles/modules/common/ticket-data.scss
+++ b/app/styles/modules/common/ticket-data.scss
@@ -222,4 +222,7 @@
max-width: 1.25rem;
width: 100%;
}
+ a {
+ display: block;
+ }
}
diff --git a/app/styles/modules/common/wizard.scss b/app/styles/modules/common/wizard.scss
index 81a1b6c0..7c12627d 100644
--- a/app/styles/modules/common/wizard.scss
+++ b/app/styles/modules/common/wizard.scss
@@ -59,7 +59,7 @@
transition: background .2s ease-in;
}
.icon {
- @include svg-size(1.4rem);
+ @include svg-size(1.5rem);
fill: currentColor;
margin-right: 1rem;
vertical-align: text-top;
diff --git a/app/styles/modules/filters/filters.scss b/app/styles/modules/filters/filters.scss
index e1309796..53fc5ab2 100644
--- a/app/styles/modules/filters/filters.scss
+++ b/app/styles/modules/filters/filters.scss
@@ -27,8 +27,7 @@
color: $gray-light;
}
}
- .icon-search {
- color: $gray-light;
+ .search-action {
position: absolute;
right: .7rem;
top: .7rem;
@@ -71,6 +70,12 @@
}
}
+.filter-list {
+ .single-filter {
+ cursor: pointer;
+ }
+}
+
.filters-cats {
margin-top: 2rem;
li {
diff --git a/app/styles/modules/issues/issues-table.scss b/app/styles/modules/issues/issues-table.scss
index 9b03dc47..fadd1ed3 100644
--- a/app/styles/modules/issues/issues-table.scss
+++ b/app/styles/modules/issues/issues-table.scss
@@ -153,6 +153,9 @@
display: none;
}
}
+ .issue-status {
+ display: inline-block;
+ }
}
.empty-issues {
diff --git a/app/styles/modules/kanban/kanban-table.scss b/app/styles/modules/kanban/kanban-table.scss
index 5de4736d..d7492a9b 100644
--- a/app/styles/modules/kanban/kanban-table.scss
+++ b/app/styles/modules/kanban/kanban-table.scss
@@ -15,7 +15,6 @@ $column-margin: 0 10px 0 0;
.vfold {
&.task-colum-name {
align-items: center;
- cursor: pointer;
display: flex;
justify-content: center;
opacity: .8;
diff --git a/app/styles/modules/wiki/wiki-nav.scss b/app/styles/modules/wiki/wiki-nav.scss
index f1f72c76..0c761b37 100644
--- a/app/styles/modules/wiki/wiki-nav.scss
+++ b/app/styles/modules/wiki/wiki-nav.scss
@@ -1,48 +1,39 @@
-.wiki-nav {
- li {
- @extend %large;
- @extend %title;
- border-bottom: 1px solid $gray-light;
- text-transform: uppercase;
+.wiki-link {
+ @extend %large;
+ @extend %title;
+ align-items: center;
+ border-bottom: 1px solid $gray-light;
+ display: flex;
+ justify-content: space-between;
+ padding: 1rem 0 1rem 1rem;
+ text-transform: uppercase;
+ &:hover {
+ .remove-wiki-page {
+ cursor: pointer;
+ opacity: 1;
+ transition: opacity .2s linear;
+ transition-delay: .2s;
+ }
+ }
+ .remove-wiki-page {
+ opacity: 0;
&:hover {
.icon {
- opacity: 1;
- transition: opacity .2s linear;
- transition-delay: .2s;
- }
- }
- a {
- align-items: center;
- display: flex;
- justify-content: space-between;
- padding: 1rem 0 1rem 1rem;
- span {
- cursor: pointer;
- }
- }
- .icon {
- fill: $gray-light;
- opacity: 0;
- &:hover {
- cursor: pointer;
fill: $red;
}
}
- input {
- @extend %text;
- @extend %medium;
- background: $grayer;
- color: $whitish;
- @include placeholder {
- color: $gray-light;
- }
- }
- .loading {
- margin: 0;
- padding: 8px;
- text-align: center;
- width: 100%;
- }
+ }
+ .link-title {
+ cursor: pointer;
+ }
+ .icon-trash {
+ fill: $gray-light;
+ }
+}
+
+.wiki-nav {
+ ul {
+ border-top: 1px solid $gray-light;
}
.add-button {
color: $white;
@@ -50,4 +41,19 @@
margin-bottom: .5rem;
text-align: center;
}
+ input[type="text"] {
+ @extend %text;
+ @extend %medium;
+ background: $grayer;
+ color: $whitish;
+ @include placeholder {
+ color: $gray-light;
+ }
+ }
+ .loading {
+ margin: 0;
+ padding: 8px;
+ text-align: center;
+ width: 100%;
+ }
}
diff --git a/app/styles/shame/shame.scss b/app/styles/shame/shame.scss
index 152b9fa4..442e4a43 100644
--- a/app/styles/shame/shame.scss
+++ b/app/styles/shame/shame.scss
@@ -14,3 +14,15 @@ _:-ms-fullscreen,
line-height: 1.5;
font-family: monospace;
}
+
+// Prevent IE Bug when the user clicks in the svg path the js event click doesn't work
+
+svg {
+ pointer-events: none;
+}
+
+// Avoid previous selector to remove event on child SVG click.
+
+a[ng-click] svg {
+ pointer-events: auto;
+}
diff --git a/conf.e2e.js b/conf.e2e.js
index b6b82dee..0a08bc0b 100644
--- a/conf.e2e.js
+++ b/conf.e2e.js
@@ -18,13 +18,13 @@ exports.config = {
}
},
mochaOpts: {
- timeout: 45000,
+ timeout: 55000,
compilers: 'js:babel-register',
require: 'babel-polyfill'
},
- // capabilities: {
- // 'browserName': 'firefox'
- // },
+ capabilities: {
+ 'browserName': 'firefox'
+ },
// capabilities: {
// browserName: 'internet explorer',
// version: '11'
@@ -47,59 +47,65 @@ exports.config = {
discover: "e2e/suites/discover/*.e2e.js"
},
onPrepare: function() {
+ // disable by default because performance problems on IE
// track mouse movements
- var trackMouse = function() {
- angular.module('trackMouse', []).run(function($document) {
+ // var trackMouse = function() {
+ // angular.module('trackMouse', []).run(function($document) {
- function addDot(ev) {
- var color = 'black',
- size = 6;
+ // function addDot(ev) {
+ // var color = 'black',
+ // size = 6;
- switch (ev.type) {
- case 'click':
- color = 'red';
- break;
- case 'dblclick':
- color = 'blue';
- break;
- case 'mousemove':
- color = 'green';
- break;
- }
+ // switch (ev.type) {
+ // case 'click':
+ // color = 'red';
+ // break;
+ // case 'dblclick':
+ // color = 'blue';
+ // break;
+ // case 'mousemove':
+ // color = 'green';
+ // break;
+ // }
- var dotEl = $('