diff --git a/CHANGELOG.md b/CHANGELOG.md index 67620f95..a9ea09e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Features - Ability to create url custom fields. (thanks to [@astagi](https://github.com/astagi)). +- Moved from iconfont to SVG sprite icon system and redesign. ### Misc - Lots of small and not so small bugfixes. diff --git a/app/coffee/modules/admin/lightboxes.coffee b/app/coffee/modules/admin/lightboxes.coffee index c625f007..2ee6542d 100644 --- a/app/coffee/modules/admin/lightboxes.coffee +++ b/app/coffee/modules/admin/lightboxes.coffee @@ -53,12 +53,21 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, $loading, lightboxService, <% }); %> - + + + + + """) link = ($scope, $el, $attrs) -> + createButton = (type) -> + html = ""; + console.log html + return html + createFieldSet = (required = true)-> ctx = {roleList: $scope.project.roles, required: required} return $compile(template(ctx))($scope) @@ -88,17 +97,19 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, $loading, lightboxService, fieldSet.remove() lastActionButton = $el.find(".add-member-wrapper fieldset:last > a") - if lastActionButton.hasClass("icon-delete delete-fieldset") - lastActionButton.removeClass("icon-delete delete-fieldset") - .addClass("icon-plus add-fieldset") + if lastActionButton.hasClass("delete-fieldset") + lastActionButton.removeClass("delete-fieldset").addClass("add-fieldset") + svg = createButton('icon-add') + lastActionButton.html(svg) $el.on "click", ".add-fieldset", (event) -> event.preventDefault() target = angular.element(event.currentTarget) fieldSet = target.closest('.add-member-wrapper') - target.removeClass("icon-plus add-fieldset") - .addClass("icon-delete delete-fieldset") + target.removeClass("add-fieldset").addClass("delete-fieldset") + svg = createButton('icon-trash') + target.html(svg) newFieldSet = createFieldSet(false) fieldSet.after(newFieldSet) @@ -106,8 +117,10 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, $loading, lightboxService, $scope.$digest() # To compile newFieldSet and translate text if $el.find(".add-member-wrapper").length == MAX_MEMBERSHIP_FIELDSETS - $el.find(".add-member-wrapper fieldset:last > a").removeClass("icon-plus add-fieldset") - .addClass("icon-delete delete-fieldset") + $el.find(".add-member-wrapper fieldset:last > a") + .removeClass("add-fieldset").addClass("delete-fieldset") + svg = createButton('icon-trash') + $el.find(".add-member-wrapper fieldset:last > a").html(svg) submit = debounce 2000, (event) => event.preventDefault() diff --git a/app/coffee/modules/admin/memberships.coffee b/app/coffee/modules/admin/memberships.coffee index 84ff8071..ed683bdd 100644 --- a/app/coffee/modules/admin/memberships.coffee +++ b/app/coffee/modules/admin/memberships.coffee @@ -359,7 +359,9 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $transla - + + + """ @@ -370,7 +372,9 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $transla - + + + """ diff --git a/app/coffee/modules/admin/roles.coffee b/app/coffee/modules/admin/roles.coffee index d2689147..1883adc7 100644 --- a/app/coffee/modules/admin/roles.coffee +++ b/app/coffee/modules/admin/roles.coffee @@ -193,7 +193,7 @@ EditRoleDirective = ($repo, $confirm) -> toggleView() - $el.on "click", "a.icon-edit", -> + $el.on "click", ".edit-value", -> toggleView() $el.find("input").focus() $el.find("input").val($scope.role.name) @@ -292,7 +292,9 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm, $compile) -> title="{{ '<%- permission.name %>' | translate }}"> <% }) %> -
+ + + """) categoryTemplate = _.template(""" @@ -431,6 +433,7 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm, $compile) -> $el.on "click", ".resume", (event) -> event.preventDefault() target = angular.element(event.currentTarget) + target.toggleClass("open-drawer") target.next().toggleClass("open") $el.on "change", ".category-item input", (event) -> diff --git a/app/coffee/modules/backlog/lightboxes.coffee b/app/coffee/modules/backlog/lightboxes.coffee index 99c1ebd0..d26ca64d 100644 --- a/app/coffee/modules/backlog/lightboxes.coffee +++ b/app/coffee/modules/backlog/lightboxes.coffee @@ -204,7 +204,7 @@ CreateEditSprint = ($repo, $confirm, $rs, $rootscope, lightboxService, $loading, $el.on "submit", "form", submit - $el.on "click", ".delete-sprint .icon-delete", (event) -> + $el.on "click", ".delete-sprint", (event) -> event.preventDefault() remove() diff --git a/app/coffee/modules/backlog/main.coffee b/app/coffee/modules/backlog/main.coffee index d2ea8d2a..ac0191dd 100644 --- a/app/coffee/modules/backlog/main.coffee +++ b/app/coffee/modules/backlog/main.coffee @@ -563,7 +563,7 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F currentLoading = @loading() .target(target) - .removeClasses("icon-edit") + .removeClasses("edit-story") .timeout(200) .start() diff --git a/app/coffee/modules/backlog/sprints.coffee b/app/coffee/modules/backlog/sprints.coffee index 218da013..2ea49705 100644 --- a/app/coffee/modules/backlog/sprints.coffee +++ b/app/coffee/modules/backlog/sprints.coffee @@ -40,7 +40,7 @@ BacklogSprintDirective = ($repo, $rootscope) -> toggleSprint = ($el) => sprintTable = $el.find(".sprint-table") - sprintArrow = $el.find(".icon-arrow-up") + sprintArrow = $el.find(".compact-sprint") sprintArrow.toggleClass('active') sprintTable.toggleClass('open') @@ -55,7 +55,7 @@ BacklogSprintDirective = ($repo, $rootscope) -> toggleSprint($el) # Event Handlers - $el.on "click", ".sprint-name > .icon-arrow-up", (event) -> + $el.on "click", ".sprint-name > .compact-sprint", (event) -> event.preventDefault() toggleSprint($el) diff --git a/app/coffee/modules/common.coffee b/app/coffee/modules/common.coffee index 86afc2ab..f8f9f237 100644 --- a/app/coffee/modules/common.coffee +++ b/app/coffee/modules/common.coffee @@ -288,13 +288,11 @@ Capslock = ($translate) -> link = ($scope, $el, $attrs) -> open = false - warningIcon = $('
') - .addClass('icon') - .addClass('icon-capslock') - .attr('title', $translate.instant('COMMON.CAPSLOCK_WARNING')) + + warningIcon = ""; hideIcon = () -> - warningIcon.fadeOut () -> + $('.icon-capslock').fadeOut () -> open = false $(this).remove() diff --git a/app/coffee/modules/common/components.coffee b/app/coffee/modules/common/components.coffee index dece6008..325c2524 100644 --- a/app/coffee/modules/common/components.coffee +++ b/app/coffee/modules/common/components.coffee @@ -321,7 +321,7 @@ AssignedToDirective = ($rootscope, $confirm, $repo, $loading, $qqueue, $template $model.$modelValue.assigned_to = $currentUserService.getUser().get('id') save($currentUserService.getUser().get('id')) - $el.on "click", ".icon-delete", (event) -> + $el.on "click", ".remove-user", (event) -> event.preventDefault() return if not isEditable() title = $translate.instant("COMMON.ASSIGNED_TO.CONFIRM_UNASSIGNED") @@ -498,11 +498,10 @@ EditableSubjectDirective = ($rootscope, $repo, $confirm, $loading, $qqueue, $tem else if event.keyCode == 27 $scope.$apply () => $model.$modelValue.revert() - $el.find('div.edit-subject').hide() - $el.find('div.view-subject').show() + $el.find('.edit-subject').hide() + $el.find('.view-subject').show() - $el.find('div.edit-subject').hide() - $el.find('div.view-subject span.edit').hide() + $el.find('.edit-subject').hide() $scope.$watch $attrs.ngModel, (value) -> return if not value diff --git a/app/coffee/modules/common/confirm.coffee b/app/coffee/modules/common/confirm.coffee index be7452cc..c7c93e20 100644 --- a/app/coffee/modules/common/confirm.coffee +++ b/app/coffee/modules/common/confirm.coffee @@ -59,12 +59,12 @@ class ConfirmService extends taiga.Service el = angular.element(lightboxSelector) # Render content - el.find("h2.title").text(title) - el.find("span.subtitle").text(subtitle) - el.find("span.message").text(message) + el.find(".title").text(title) + el.find(".subtitle").text(subtitle) + el.find(".message").text(message) # Assign event handlers - el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) => + el.on "click.confirm-dialog", ".button-green", debounce 2000, (event) => event.preventDefault() target = angular.element(event.currentTarget) currentLoading = @loading() @@ -77,7 +77,7 @@ class ConfirmService extends taiga.Service @.hide(el) } - el.on "click.confirm-dialog", "a.button-red", (event) => + el.on "click.confirm-dialog", ".button-red", (event) => event.preventDefault() defered.reject() @.hide(el) @@ -129,7 +129,7 @@ class ConfirmService extends taiga.Service @.hide(el) } - el.on "click.confirm-dialog", "a.button-red", (event) => + el.on "click.confirm-dialog", ".button-red", (event) => event.preventDefault() defered.reject() @.hide(el) @@ -144,15 +144,15 @@ class ConfirmService extends taiga.Service el = angular.element(".lightbox-generic-error") # Render content - el.find("h2.title").html(message) + el.find(".title").html(message) # Assign event handlers - el.on "click.confirm-dialog", "a.button-green", (event) => + el.on "click.confirm-dialog", ".button-green", (event) => event.preventDefault() defered.resolve() @.hide(el) - el.on "click.confirm-dialog", "a.close", (event) => + el.on "click.confirm-dialog", ".close", (event) => event.preventDefault() defered.resolve() @.hide(el) @@ -167,16 +167,16 @@ class ConfirmService extends taiga.Service el = angular.element(".lightbox-generic-success") # Render content - el.find("h2.title").html(title) if title - el.find("p.message").html(message) if message + el.find(".title").html(title) if title + el.find(".message").html(message) if message # Assign event handlers - el.on "click.confirm-dialog", "a.button-green", (event) => + el.on "click.confirm-dialog", ".button-green", (event) => event.preventDefault() defered.resolve() @.hide(el) - el.on "click.confirm-dialog", "a.close", (event) => + el.on "click.confirm-dialog", ".close", (event) => event.preventDefault() defered.resolve() @.hide(el) @@ -189,15 +189,15 @@ class ConfirmService extends taiga.Service el = angular.element(".lightbox-generic-loading") # Render content - el.find("h2.title").html(title) if title - el.find("p.message").html(message) if message + el.find(".title").html(title) if title + el.find(".message").html(message) if message return { start: => @lightboxService.open(el) stop: => @lightboxService.close(el) update: (status, title, message, percent) => - el.find("h2.title").html(title) if title - el.find("p.message").html(message) if message + el.find(".title").html(title) if title + el.find(".message").html(message) if message if percent el.find(".spin").addClass("hidden") @@ -251,7 +251,7 @@ class ConfirmService extends taiga.Service delete @.tsem - el.on "click", ".icon-delete, .close", (event) => + el.on "click", ".icon-close, .close", (event) => body.find(selector) .removeClass('active') .addClass('inactive') diff --git a/app/coffee/modules/common/custom-field-values.coffee b/app/coffee/modules/common/custom-field-values.coffee index 8568cae5..897cfe24 100644 --- a/app/coffee/modules/common/custom-field-values.coffee +++ b/app/coffee/modules/common/custom-field-values.coffee @@ -117,15 +117,15 @@ CustomAttributesValuesDirective = ($templates, $storage) -> $ctrl.initialize($attrs.type, value.id) $ctrl.loadCustomAttributesValues() - $el.on "click", ".custom-fields-header a", -> + $el.on "click", ".custom-fields-header .icon", -> hash = collapsedHash($attrs.type) collapsed = not($storage.get(hash) or false) $storage.set(hash, collapsed) if collapsed - $el.find(".custom-fields-header a").removeClass("open") + $el.find(".custom-fields-header .icon").removeClass("open") $el.find(".custom-fields-body").removeClass("open") else - $el.find(".custom-fields-header a").addClass("open") + $el.find(".custom-fields-header .icon").addClass("open") $el.find(".custom-fields-body").addClass("open") $scope.$on "$destroy", -> @@ -235,7 +235,7 @@ CustomAttributeValueDirective = ($template, $selectedText, $compile, $translate, render(attributeValue, true) setFocusAndSelectOnInputField() - $el.on "click", "a.icon-edit", (event) -> + $el.on "click", ".js-edit-description", (event) -> event.preventDefault() render(attributeValue, true) setFocusAndSelectOnInputField() @@ -249,7 +249,7 @@ CustomAttributeValueDirective = ($template, $selectedText, $compile, $translate, $el.on "submit", "form", submit - $el.on "click", "a.icon-floppy", submit + $el.on "click", ".js-save-description", submit $scope.$on "$destroy", -> $el.off() diff --git a/app/coffee/modules/common/tags.coffee b/app/coffee/modules/common/tags.coffee index c5ea64e4..271d1e54 100644 --- a/app/coffee/modules/common/tags.coffee +++ b/app/coffee/modules/common/tags.coffee @@ -120,10 +120,13 @@ LbTagLineDirective = ($rs, $template, $compile) -> tag.style = "border-left: 5px solid #{tag.color}" html = $compile(templateTags(ctx))($scope) - $el.find("div.tags-container").html(html) + $el.find(".tags-container").html(html) - showSaveButton = -> $el.find(".save").removeClass("hidden") - hideSaveButton = -> $el.find(".save").addClass("hidden") + showSaveButton = -> + $el.find(".save").removeClass("hidden") + + hideSaveButton = -> + $el.find(".save").addClass("hidden") resetInput = -> $el.find("input").val("") @@ -179,7 +182,7 @@ LbTagLineDirective = ($rs, $template, $compile) -> event.preventDefault() saveInputTag() - $el.on "click", ".icon-delete", (event) -> + $el.on "click", ".remove-tag", (event) -> event.preventDefault() target = angular.element(event.currentTarget) @@ -348,7 +351,7 @@ TagLineDirective = ($rootScope, $repo, $rs, $confirm, $qqueue, $template, $compi hideAddTagButton() showInput() - $el.on "click", ".icon-delete", (event) -> + $el.on "click", ".remove-tag", (event) -> event.preventDefault() target = angular.element(event.currentTarget) diff --git a/app/coffee/modules/issues/list.coffee b/app/coffee/modules/issues/list.coffee index c811b2e7..132e5ab1 100644 --- a/app/coffee/modules/issues/list.coffee +++ b/app/coffee/modules/issues/list.coffee @@ -461,14 +461,14 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat showFilters = (title, type) -> $el.find(".filters-cats").hide() $el.find(".filter-list").removeClass("hidden") - $el.find("h2.breadcrumb").removeClass("hidden") - $el.find("h2 a.subfilter span.title").html(title) - $el.find("h2 a.subfilter span.title").prop("data-type", type) + $el.find(".breadcrumb").removeClass("hidden") + $el.find("h2 .subfilter .title").html(title) + $el.find("h2 .subfilter .title").prop("data-type", type) showCategories = -> $el.find(".filters-cats").show() $el.find(".filter-list").addClass("hidden") - $el.find("h2.breadcrumb").addClass("hidden") + $el.find(".breadcrumb").addClass("hidden") initializeSelectedFilters = (filters) -> selectedFilters = [] @@ -502,7 +502,7 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat $el.find(".filter-list").html(html) getFiltersType = () -> - return $el.find("h2 a.subfilter span.title").prop('data-type') + return $el.find(".subfilter .title").prop('data-type') reloadIssues = () -> currentFiltersType = getFiltersType() @@ -617,7 +617,7 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat toggleFilterSelection(type, id) - $el.on "click", ".filter-list .single-filter .icon-delete", (event) -> + $el.on "click", ".filter-list .single-filter .remove-filter", (event) -> event.preventDefault() event.stopPropagation() @@ -665,7 +665,7 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat currentLoading.finish() $scope.filters.myFilters = filters - currentfilterstype = $el.find("h2 a.subfilter span.title").prop('data-type') + currentfilterstype = $el.find("h2 .subfilter .title").prop('data-type') if currentfilterstype == "myFilters" renderFilters($scope.filters.myFilters) diff --git a/app/coffee/modules/related-tasks.coffee b/app/coffee/modules/related-tasks.coffee index dcb17811..700d0873 100644 --- a/app/coffee/modules/related-tasks.coffee +++ b/app/coffee/modules/related-tasks.coffee @@ -62,7 +62,7 @@ RelatedTaskRowDirective = ($repo, $compile, $confirm, $rootscope, $loading, $tem else if event.keyCode == 27 renderView($model.$modelValue) - $el.on "click", ".icon-floppy", (event) -> + $el.on "click", ".save-task", (event) -> saveTask($model.$modelValue).then -> renderView($model.$modelValue) @@ -79,7 +79,7 @@ RelatedTaskRowDirective = ($repo, $compile, $confirm, $rootscope, $loading, $tem $el.html($compile(templateView({task: task, perms: perms}))($scope)) - $el.on "click", ".icon-edit", -> + $el.on "click", ".edit-task", -> renderEdit($model.$modelValue) $el.find('input').focus().select() diff --git a/app/index.jade b/app/index.jade index 71ac29b6..66d7d234 100644 --- a/app/index.jade +++ b/app/index.jade @@ -45,3 +45,4 @@ html(lang="en") script(src="/#{v}/js/libs.js") script(src="/#{v}/js/templates.js") script(src="/#{v}/js/app-loader.js") + include svg/sprite.svg diff --git a/app/locales/taiga/locale-en.json b/app/locales/taiga/locale-en.json index 86fee941..f3d15c67 100644 --- a/app/locales/taiga/locale-en.json +++ b/app/locales/taiga/locale-en.json @@ -41,7 +41,7 @@ "IOCAINE_TEXT": "Feeling a bit overwhelmed by a task? Make sure others know about it by clicking on Iocaine when editing a task. It's possible to become immune to this (fictional) deadly poison by consuming small amounts over time just as it's possible to get better at what you do by occasionally taking on extra challenges!", "CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project", "TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client", - "CAPSLOCK_WARNING": "Be careful! You're writing with capital letters and this input is case sensitive.", + "CAPSLOCK_WARNING": "Be careful! You are writing with capital letters and this input is case sensitive.", "FORM_ERRORS": { "DEFAULT_MESSAGE": "This value seems to be invalid.", "TYPE_EMAIL": "This value should be a valid email.", @@ -458,9 +458,7 @@ "RECRUITING_MESSAGE": "Who are you looking for?", "RECRUITING_PLACEHOLDER": "Define the profiles you are looking for", "PUBLIC_PROJECT": "Public project", - "PUBLIC_PROJECT_DESC": "Users will be able to find and view your project", "PRIVATE_PROJECT": "Private project", - "PRIVATE_PROJECT_DESC": "By default, this project will be hidden to the public", "PRIVATE_OR_PUBLIC": "What's the difference between public and private projects?", "DELETE": "Delete this project", "LOGO_HELP": "The image will be scaled to 80x80px.", diff --git a/app/modules/attachments/attachment-gallery.scss b/app/modules/attachments/attachment-gallery.scss index 029b29a9..adeb7276 100644 --- a/app/modules/attachments/attachment-gallery.scss +++ b/app/modules/attachments/attachment-gallery.scss @@ -13,58 +13,63 @@ opacity: 1; } } - .attachment-image { - display: inline-block; - } - img { - height: 150px; - margin-bottom: .2rem; - width: 200px; - &:hover { - filter: saturate(150%) hue-rotate(60deg); - transition: all .3s cubic-bezier(.01, .7, 1, 1); - } - } - &.deprecated { - img { - opacity: .5; - } - .attachment-name { - color: $gray-light; - } - } - .attachment-data { - align-content: center; - display: flex; - justify-content: space-between; - } .attachment-name { @extend %light; @include ellipsis(175px); display: inline-block; } - .icon-delete { - color: $red-light; - margin-left: auto; - opacity: 0; - transition: opacity .3s ease-in; - transition-delay: .2s; - &:hover { - color: $red; - } - } - .loading-container { - align-items: center; - display: flex; - height: 150px; - justify-content: center; - margin: 0 .5rem .5rem 0; - width: 200px; - } - .loading-spinner { - margin: 0 auto; - max-height: 3rem; - max-width: 3rem; + } + .attachment-image { + display: inline-block; + } + img { + height: 150px; + margin-bottom: .2rem; + width: 200px; + &:hover { + filter: saturate(150%) hue-rotate(60deg); + transition: all .3s cubic-bezier(.01, .7, 1, 1); } } + &.deprecated { + img { + opacity: .5; + } + .attachment-name { + color: $gray-light; + } + } + .attachment-data { + align-content: center; + display: flex; + justify-content: space-between; + } + .icon-delete { + margin-left: auto; + opacity: 0; + transition: opacity .2s ease-in; + transition-delay: .1s; + svg { + fill: $red-light; + } + &:hover { + svg { + color: $red; + } + + } + } + .loading-container { + align-items: center; + display: flex; + height: 150px; + justify-content: center; + margin: 0 .5rem .5rem 0; + width: 200px; + } + .loading-spinner { + margin: 0 auto; + max-height: 3rem; + max-width: 3rem; + } } diff --git a/app/modules/attachments/attachment-list.scss b/app/modules/attachments/attachment-list.scss index dc2e21db..df533f2b 100644 --- a/app/modules/attachments/attachment-list.scss +++ b/app/modules/attachments/attachment-list.scss @@ -47,34 +47,29 @@ flex-shrink: 0; justify-content: space-around; margin-left: auto; - .settings, - .editable-settings { - @extend %large; - color: $gray-light; - &:hover { - color: $primary; - } - } .settings { opacity: 0; } .editable-settings { opacity: 1; } - .icon-delete { + svg { + fill: $gray-light; + } + .icon-edit, + .icon-save { &:hover { - color: $red; + fill: $primary; } } - .icon-drag-v { - cursor: move; + .icon-trash, + .icon-close { + &:hover { + fill: $red; + } } - } - .icon-delete { - @extend %large; - color: $gray-light; - &:hover { - color: $red; + .icon-drag { + cursor: move; } } .editable-attachment-deprecated { diff --git a/app/modules/attachments/attachments.scss b/app/modules/attachments/attachments.scss index 59e2336d..61b9e15f 100644 --- a/app/modules/attachments/attachments.scss +++ b/app/modules/attachments/attachments.scss @@ -4,6 +4,7 @@ .attachments-header { align-content: center; + align-items: center; background: $whitish; display: flex; justify-content: space-between; @@ -33,9 +34,9 @@ } svg { fill: $white; - height: 1.25rem; + height: 1.2rem; margin-bottom: -.2rem; - width: 1.25rem; + width: 1.2rem; } } button { @@ -50,7 +51,6 @@ svg { fill: $gray-light; height: 1.6rem; - margin-bottom: -.2rem; width: 1.6rem; } } @@ -77,6 +77,7 @@ .single-attachment { @extend %small; + background: rgba($white, .9); &.ui-sortable-helper { background: lighten($primary, 60%); box-shadow: 1px 1px 10px rgba($black, .1); @@ -89,12 +90,11 @@ .attachment-name { @extend %bold; padding-right: 1rem; - .icon { - margin-right: .25rem; - } svg { - height: 1.2rem; - width: 1.2rem; + fill: $gray; + height: .9rem; + margin-right: .25rem; + width: .9rem; } } .attachment-size { diff --git a/app/modules/components/attachment/attachment-gallery.jade b/app/modules/components/attachment/attachment-gallery.jade index dbb353b1..b6c560a1 100644 --- a/app/modules/components/attachment/attachment-gallery.jade +++ b/app/modules/components/attachment/attachment-gallery.jade @@ -30,8 +30,9 @@ span {{::vm.attachment.getIn(['file', 'name'])}} a.icon-delete( - ng-if="vm.attachment.get('editable')" href="" title="{{'COMMON.DELETE' | translate}}" ng-click="vm.delete()" ) + svg.icon.icon-trash + use(xlink:href="#icon-trash") diff --git a/app/modules/components/attachment/attachment.jade b/app/modules/components/attachment/attachment.jade index 32df1083..b0207960 100644 --- a/app/modules/components/attachment/attachment.jade +++ b/app/modules/components/attachment/attachment.jade @@ -12,8 +12,8 @@ form.single-attachment( target="_blank" download="{{::vm.attachment.getIn(['file', 'name'])}}" ) - span.icon - include ../../../svg/attachment.svg + svg.icon.icon-attachment + use(xlink:href="#icon-attachment") span {{::vm.attachment.getIn(['file', 'name'])}} .attachment-comments(ng-if="!vm.attachment.get('editable') && vm.attachment.getIn(['file', 'description'])") @@ -47,34 +47,44 @@ form.single-attachment( .attachment-settings(ng-if="vm.attachment.get('editable')") div(tg-loading="vm.attachment.get('loading')") - a.editable-settings.icon.icon-floppy( + a.editable-settings( href="" title="{{'COMMON.SAVE' | translate}}" ng-click="vm.save()" ) + svg.drag.icon.icon-save + use(xlink:href="#icon-save") div - a.editable-settings.icon.icon-delete( + a.editable-settings( href="" title="{{'COMMON.CANCEL' | translate}}" ng-click="vm.editMode(false)" ) + svg.drag.icon.icon-close + use(xlink:href="#icon-close") .attachment-settings( ng-if="!vm.attachment.get('editable')" tg-check-permission="modify_{{vm.type}}" ) - a.settings.icon.icon-edit( + a.settings( href="" title="{{'COMMON.EDIT' | translate}}" ng-click="vm.editMode(true)" ) - a.settings.icon.icon-delete( + svg.drag.icon.icon-edit + use(xlink:href="#icon-edit") + a.settings( href="" title="{{'COMMON.DELETE' | translate}}" ng-click="vm.delete()" ) - a.settings.icon.icon-drag-v( + svg.drag.icon.icon-trash + use(xlink:href="#icon-trash") + a.settings( href="" title="{{'COMMON.DRAG' | translate}}" ) + svg.drag.icon.icon-drag + use(xlink:href="#icon-drag") diff --git a/app/modules/components/attachments-full/attachments-full.jade b/app/modules/components/attachments-full/attachments-full.jade index 9968d9fa..98a9710d 100644 --- a/app/modules/components/attachments-full/attachments-full.jade +++ b/app/modules/components/attachments-full/attachments-full.jade @@ -8,21 +8,24 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files, false)") ng-click="vm.setMode('gallery')" title="{{ 'ATTACHMENT.GALLERY_VIEW_MODE' | translate }}" ) - include ../../../svg/gallery.svg + svg.icon.icon-gallery + use(xlink:href="#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 }}" ) - include ../../../svg/list.svg + svg.icon.icon-list + use(xlink:href="#icon-list") .add-attach( tg-check-permission="modify_{{vm.type}}" title!="{{'ATTACHMENT.ADD' | translate}}" ) label.add-attachment-button(for="add-attach") - include ../../../svg/add.svg + svg.icon.icon-add + use(xlink:href="#icon-add") input( id="add-attach", @@ -49,12 +52,11 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files, false)") .single-attachment(ng-repeat="file in vm.uploadingAttachments()") .attachment-name - span.icon - include ../../../svg/attachment.svg + svg.icon.icon-attachment + use(xlink:href="#icon-attachment") span {{file.name}} .attachment-size span {{file.size | sizeFormat}} - .attachment-comments span {{file.progressMessage}} .percentage(ng-style="{'width': file.progressPercent}") diff --git a/app/modules/components/attachments-simple/attachments-simple.jade b/app/modules/components/attachments-simple/attachments-simple.jade index 461f5ba8..9b4cdcc7 100644 --- a/app/modules/components/attachments-simple/attachments-simple.jade +++ b/app/modules/components/attachments-simple/attachments-simple.jade @@ -5,7 +5,8 @@ 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") - include ../../../svg/add.svg + svg.icon.icon-add + use(xlink:href="#icon-add") input( id="add-attach" type="file" @@ -18,8 +19,8 @@ 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 - span.icon - include ../../../svg/attachment.svg + svg.icon.icon-attachment + use(xlink:href="#icon-attachment") span {{attachment.get('name')}} .attachment-size span {{attachment.get('size') | sizeFormat}} @@ -30,4 +31,5 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files)") title="{{'COMMON.DELETE' | translate}}" ng-click="vm.deleteAttachment(attachment)" ) - include ../../../svg/remove.svg + svg.icon.icon-trash + use(xlink:href="#icon-trash") diff --git a/app/modules/components/attachments-sortable/attachments-sortable.directive.coffee b/app/modules/components/attachments-sortable/attachments-sortable.directive.coffee index c220e9b2..17f62ae6 100644 --- a/app/modules/components/attachments-sortable/attachments-sortable.directive.coffee +++ b/app/modules/components/attachments-sortable/attachments-sortable.directive.coffee @@ -23,7 +23,7 @@ AttachmentSortableDirective = ($parse) -> el.sortable({ items: "div[tg-bind-scope]" - handle: "a.settings.icon.icon-drag-v" + handle: ".settings .icon" containment: ".attachments" dropOnEmpty: true helper: 'clone' diff --git a/app/modules/components/live-announcement/live-announcement.jade b/app/modules/components/live-announcement/live-announcement.jade index 25df0db7..1c2a4225 100644 --- a/app/modules/components/live-announcement/live-announcement.jade +++ b/app/modules/components/live-announcement/live-announcement.jade @@ -9,4 +9,5 @@ href="" title="{{ COMMON.CLOSE | translate }}" ) - include ../../../svg/remove.svg + svg.icon.icon-close + use(xlink:href="#icon-close") diff --git a/app/modules/components/project-menu/project-menu.jade b/app/modules/components/project-menu/project-menu.jade index e411f98a..acde56ac 100644 --- a/app/modules/components/project-menu/project-menu.jade +++ b/app/modules/components/project-menu/project-menu.jade @@ -12,7 +12,8 @@ nav.menu( aria-label="{{'PROJECT.SECTION.SEARCH' | translate}}" tabindex="1" ) - span.icon.icon-search + svg.icon.icon-search + use(xlink:href="#icon-search") span.helper(translate="PROJECT.SECTION.SEARCH") li(id="nav-timeline") @@ -22,7 +23,8 @@ nav.menu( aria-label="{{'PROJECT.SECTION.TIMELINE' | translate}}" tabindex="2" ) - include ../../../svg/timeline.svg + svg.icon.icon-timeline + use(xlink:href="#icon-timeline") span.helper(translate="PROJECT.SECTION.TIMELINE") li(id="nav-backlog", ng-if="vm.menu.get('backlog')") @@ -32,7 +34,8 @@ nav.menu( aria-label="{{'PROJECT.SECTION.BACKLOG' | translate}}" tabindex="2" ) - span.icon.icon-scrum + svg.icon.icon-scrum + use(xlink:href="#icon-scrum") span.helper(translate="PROJECT.SECTION.BACKLOG") li(id="nav-kanban", ng-if="vm.menu.get('kanban')") @@ -42,7 +45,8 @@ nav.menu( aria-label="{{'PROJECT.SECTION.KANBAN' | translate}}" tabindex="3" ) - span.icon.icon-kanban + svg.icon.icon-kanban + use(xlink:href="#icon-kanban") span.helper(translate="PROJECT.SECTION.KANBAN") li(id="nav-issues", ng-if="vm.menu.get('issues')") @@ -52,7 +56,8 @@ nav.menu( aria-label="{{'PROJECT.SECTION.ISSUES' | translate}}" tabindex="4" ) - span.icon.icon-issues + svg.icon.icon-issues + use(xlink:href="#icon-issues") span.helper(translate="PROJECT.SECTION.ISSUES") li(id="nav-wiki", ng-if="vm.menu.get('wiki')") @@ -62,7 +67,8 @@ nav.menu( aria-label="{{'PROJECT.SECTION.WIKI' | translate}}" tabindex="5" ) - span.icon.icon-wiki + svg.icon.icon-wiki + use(xlink:href="#icon-wiki") span.helper(translate="PROJECT.SECTION.WIKI") li(id="nav-team") @@ -72,7 +78,8 @@ nav.menu( aria-label="{{'PROJECT.SECTION.TEAM' | translate}}" tabindex="6" ) - span(class="icon icon-team") + svg.icon.icon-team + use(xlink:href="#icon-team") span.helper(translate="PROJECT.SECTION.TEAM") li(id="nav-video", ng-if="vm.project.get('videoconferenceUrl')") @@ -82,7 +89,8 @@ nav.menu( aria-label="{{'PROJECT.SECTION.MEETUP' | translate}}" tabindex="7" ) - span.icon.icon-video + svg.icon.icon-bubble + use(xlink:href="#icon-bubble") span.helper(translate="PROJECT.SECTION.MEETUP") li(id="nav-admin", ng-if="vm.project.get('i_am_owner')") @@ -92,5 +100,6 @@ nav.menu( aria-label="{{'PROJECT.SECTION.ADMIN' | translate}}" tabindex="8" ) - span.icon.icon-settings + svg.icon.icon-settings + use(xlink:href="#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 24d63b04..f0b07a4c 100644 --- a/app/modules/components/vote-button/vote-button.jade +++ b/app/modules/components/vote-button/vote-button.jade @@ -9,7 +9,8 @@ a.vote-inner( ng-mouseleave="vm.showTextWhenMouseIsLeave()" ) span.track-icon - include ../../../svg/upvote.svg + svg.icon.icon-upvote + use(xlink:href="#icon-upvote") span.track-button-counter( title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.total_voters||0}:'messageformat' }}", tg-loading="vm.loading" @@ -18,7 +19,8 @@ a.vote-inner( //- Anonymous user button span.vote-inner(ng-if="::!vm.user") span.track-icon - include ../../../svg/upvote.svg + svg.icon.icon-upvote + use(xlink:href="#icon-upvote") 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 e54d36fd..661be69b 100644 --- a/app/modules/components/watch-button/watch-button-ticket.jade +++ b/app/modules/components/watch-button/watch-button-ticket.jade @@ -13,20 +13,18 @@ div.ticket-watch-inner ng-mouseover="vm.showTextWhenMouseIsOver()" ng-mouseleave="vm.showTextWhenMouseIsLeave()" ) - span.track-icon - include ../../../svg/watch.svg - span( - ng-if="!vm.item.is_watcher", - translate="COMMON.WATCH_BUTTON.WATCH" - ) - span( - ng-if="vm.item.is_watcher && !vm.isMouseOver", - translate="COMMON.WATCH_BUTTON.WATCHING" - ) - span( - ng-if="vm.item.is_watcher && vm.isMouseOver", - translate="COMMON.WATCH_BUTTON.UNWATCH" - ) + span(ng-if="!vm.item.is_watcher") + svg.icon.icon-watch + use(xlink:href="#icon-watch") + | {{'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}} + span(ng-if="vm.item.is_watcher && vm.isMouseOver") + svg.icon.icon-unwatch + use(xlink:href="#icon-unwatch") + | {{'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 2d25bbde..842f0d60 100644 --- a/app/modules/components/watch-button/watch-button.jade +++ b/app/modules/components/watch-button/watch-button.jade @@ -2,8 +2,7 @@ mixin counter span.track-button-counter( title="{{ 'COMMON.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.watchers.length||0}:'messageformat' }}", tg-loading="vm.loading" - ) - | {{ vm.item.watchers.length }} + ) {{ vm.item.watchers.length }} //- Registered user button @@ -17,8 +16,8 @@ a.track-button.watch-button.watch-container( ng-mouseleave="vm.showTextWhenMouseIsLeave()" ) span.track-inner - span.track-icon - include ../../../svg/watch.svg + svg.icon.icon-watch + use(xlink:href="#icon-watch") span( ng-if="!vm.item.is_watcher", translate="COMMON.WATCH_BUTTON.WATCH" @@ -39,6 +38,7 @@ span.track-button.watch-button.watch-container( ) span.track-inner span.track-icon - include ../../../svg/watch.svg + svg.icon.icon-watch + use(xlink:href="#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 fbaaa04c..9379c7d0 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,7 +3,8 @@ href="#" ng-click="vm.open()" ) {{vm.currentText()}} - span.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#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 201c6bca..436c92af 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,12 @@ div.discover-header placeholder="{{ 'DISCOVER.SEARCH.INPUT_PLACEHOLDER' | translate }}" ng-model="vm.q" ) - a.search-button( + svg.search-button.icon.icon-search( ng-click="vm.submitFilter()" href="#" title="{{ 'DISCOVER.SEARCH.ACTION_TITLE' | translate }}" ) - include ../../../../svg/search.svg + use(xlink:href="#icon-search") fieldset.searchbox-filters(ng-if="vm.filter") input( diff --git a/app/modules/discover/components/discover-search-bar/discover-search-bar.scss b/app/modules/discover/components/discover-search-bar/discover-search-bar.scss index a45705b2..888a06b8 100644 --- a/app/modules/discover/components/discover-search-bar/discover-search-bar.scss +++ b/app/modules/discover/components/discover-search-bar/discover-search-bar.scss @@ -36,19 +36,15 @@ } } .search-button { + @include svg-size(1.5rem); + fill: $gray-light; position: absolute; right: 1rem; top: 1rem; + transition: fill .2s; &:hover { - svg { - fill: $primary; - } + cursor: pointer; + fill: $primary; } } - svg { - fill: $gray-light; - height: 1.5rem; - transition: all .2; - width: 1.5rem; - } } 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 b480a619..42c854fb 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,7 +1,8 @@ .discover-results-header .discover-results-header-inner .title - include ../../../../svg/search.svg + svg.icon.icon-search + use(xlink:href="#icon-search") h2 {{ 'DISCOVER.SEARCH.RESULTS' | translate }} .filter-discover-search(ng-mouseleave="vm.toggleClose()") @@ -10,14 +11,16 @@ ng-click="vm.openLike()" ng-class="{active: vm.like_is_open}" ) - include ../../../../svg/like.svg + svg.icon.icon-like + use(xlink:href="#icon-like") span {{ 'DISCOVER.MOST_LIKED' | translate }} a.discover-search-filter( href="#" ng-click="vm.openActivity()" ng-class="{active: vm.activity_is_open}" ) - include ../../../../svg/activity.svg + svg.icon.icon-activity + use(xlink:href="#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/discover-search-list-header/discover-search-list-header.scss b/app/modules/discover/components/discover-search-list-header/discover-search-list-header.scss index d3112c54..6f265a9a 100644 --- a/app/modules/discover/components/discover-search-list-header/discover-search-list-header.scss +++ b/app/modules/discover/components/discover-search-list-header/discover-search-list-header.scss @@ -5,8 +5,9 @@ justify-content: space-between; } svg { - @include svg-size(1.1rem); + @include svg-size(1.2rem); fill: $gray-light; + margin-right: .25rem; } .title { @extend %bold; @@ -23,8 +24,14 @@ margin-right: 1rem; &.active { color: $primary; + svg { + fill: $primary; + } } } + svg { + @include svg-size(.8rem); + } } .discover-search-subfilter { diff --git a/app/modules/discover/components/featured-projects/featured-projects.jade b/app/modules/discover/components/featured-projects/featured-projects.jade index 53c3514b..783c71e3 100644 --- a/app/modules/discover/components/featured-projects/featured-projects.jade +++ b/app/modules/discover/components/featured-projects/featured-projects.jade @@ -26,28 +26,31 @@ tg-nav="project:project=project.get('slug')" title="{{::project.get('name')}}" ) {{::project.get('name')}} - span.look-for-people( + svg.look-for-people.icon.icon-recruit( ng-if="project.get('is_looking_for_people')" - title="{{ ::project.get('looking_for_people_note') }}" ) - include ../../../../svg/recruit.svg + 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' }}" ) - include ../../../../svg/like.svg + svg.icon.icon-like + use(xlink:href="#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' }}" ) - include ../../../../svg/eye.svg + svg.icon.icon-watch + use(xlink:href="#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' }}" ) - include ../../../../svg/team.svg + svg.icon.icon-team + use(xlink:href="#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 96031ebf..f001c6a6 100644 --- a/app/modules/discover/components/highlighted/highlighted.jade +++ b/app/modules/discover/components/highlighted/highlighted.jade @@ -24,29 +24,30 @@ tg-nav="project:project=project.get('slug')" title="{{::project.get('name')}}" ) {{::project.get('name')}} - span.look-for-people( - ng-if="project.get('is_looking_for_people')" - title="{{ ::project.get('looking_for_people_note') }}" - ) - include ../../../../svg/recruit.svg + 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') }}" .project-statistics span.statistic( ng-class="{'active': project.get('is_fan')}" title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}" ) - include ../../../../svg/like.svg + svg.icon.icon-like + use(xlink:href="#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' }}" ) - include ../../../../svg/eye.svg + svg.icon.icon-watch + use(xlink:href="#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' }}" ) - include ../../../../svg/team.svg + svg.icon.icon-team + use(xlink:href="#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 fb2091b9..8dced746 100644 --- a/app/modules/discover/components/highlighted/highlighted.scss +++ b/app/modules/discover/components/highlighted/highlighted.scss @@ -34,14 +34,19 @@ justify-content: space-between; margin-bottom: 1rem; svg { - @include svg-size(1.5rem); + @include svg-size(.8rem); fill: $gray-light; - margin: .5rem; + margin-left: .5rem; } } .title-wrapper { align-items: center; display: flex; + svg { + @include svg-size(1.25rem); + fill: $gray-light; + margin-right: .5rem; + } } .title { @extend %bold; @@ -97,6 +102,11 @@ position: relative; top: .2rem; } + &:hover { + svg { + fill: currentColor; + } + } } .filter-list { background: $black; @@ -163,11 +173,9 @@ } } .look-for-people { - svg { - @include svg-size(); - fill: $gray-light; - margin-left: .5rem; - } + @include svg-size(); + fill: $gray-light; + margin-left: .5rem; } .project-description { @extend %small; @@ -179,8 +187,9 @@ flex-basis: 140px; justify-content: flex-end; svg { - @include svg-size(.8rem); + @include svg-size(.75rem); fill: $gray-light; + margin-right: .25rem; } .svg-eye-closed { display: none; diff --git a/app/modules/discover/components/most-active/most-active.jade b/app/modules/discover/components/most-active/most-active.jade index 37e58cdf..e90666af 100644 --- a/app/modules/discover/components/most-active/most-active.jade +++ b/app/modules/discover/components/most-active/most-active.jade @@ -1,7 +1,8 @@ .most-active(ng-if="vm.highlighted.size") .header .title-wrapper - include ../../../../svg/activity.svg + svg.icon.icon-activity + use(xlink:href="#icon-activity") h1.title {{ 'DISCOVER.MOST_ACTIVE' | translate }} tg-discover-home-order-by(on-change="vm.orderBy(orderBy)", order-by="vm.currentOrderBy") @@ -14,5 +15,6 @@ .empty-highlighted-project( ng-if="!vm.highlighted.size" ) - include ../../../../svg/activity.svg + svg.icon.icon-activity + use(xlink:href="#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 e3967aa0..031f35c3 100644 --- a/app/modules/discover/components/most-liked/most-liked.jade +++ b/app/modules/discover/components/most-liked/most-liked.jade @@ -1,7 +1,8 @@ .most-liked(ng-if="vm.highlighted.size") .header .title-wrapper - include ../../../../svg/like.svg + svg.icon.icon-like + use(xlink:href="#icon-like") h1.title {{ 'DISCOVER.MOST_LIKED' | translate }} tg-discover-home-order-by(on-change="vm.orderBy(orderBy)", order-by="vm.currentOrderBy") tg-highlighted( @@ -13,5 +14,6 @@ .empty-highlighted-project( ng-if="!vm.highlighted.size" ) - include ../../../../svg/like.svg + svg.icon.icon-like + use(xlink:href="#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 937e45fa..1fecc64f 100644 --- a/app/modules/discover/discover-search/discover-search.jade +++ b/app/modules/discover/discover-search/discover-search.jade @@ -43,11 +43,9 @@ div(tg-discover-search) tg-nav="project:project=project.get('slug')" title="{{ ::project.get('name') }}" ) {{project.get('name')}} - span.look-for-people( - ng-if="project.get('is_looking_for_people')" - title="{{ ::project.get('looking_for_people_note') }}" - ) - include ../../../svg/recruit.svg + 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') }}" p {{ ::project.get('description') | limitTo:300 }} span(ng-if="::project.get('description').length > 300") ... .list-itemtype-project-right.project-statistics @@ -55,19 +53,22 @@ div(tg-discover-search) ng-class="{'active': project.get('is_fan')}" title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}" ) - include ../../../svg/like.svg + svg.icon.icon-like + use(xlink:href="#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' }}" ) - include ../../../svg/eye.svg + svg.icon.icon-watch + use(xlink:href="#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' }}" ) - include ../../../svg/team.svg + svg.icon.icon-team + use(xlink:href="#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 9cc13527..b97b58e8 100644 --- a/app/modules/discover/discover-search/discover-search.scss +++ b/app/modules/discover/discover-search/discover-search.scss @@ -4,7 +4,6 @@ margin: 0 8rem; position: relative; } - .search-button { left: 1rem; right: auto; @@ -73,19 +72,17 @@ vertical-align: middle; } .look-for-people { + fill: $gray-light; margin-left: .5rem; - svg { - @include svg-size(1rem); - fill: $gray-light; - } } .project-statistics { display: flex; flex-basis: 300px; justify-content: flex-end; svg { - @include svg-size(.8rem); + @include svg-size(.7rem); fill: $gray-light; + margin-right: .2rem; } .svg-eye-closed { display: none; diff --git a/app/modules/home/projects/home-project-list.jade b/app/modules/home/projects/home-project-list.jade index a66a41c2..3b367f1e 100644 --- a/app/modules/home/projects/home-project-list.jade +++ b/app/modules/home/projects/home-project-list.jade @@ -24,11 +24,9 @@ section.home-project-list(ng-if="vm.projects.size") tg-nav="project:project=project.get('slug')" title="{{::project.get('name')}}" ) {{::project.get('name')}} - span.look-for-people( - ng-if="project.get('is_looking_for_people')" - title="{{ ::project.get('looking_for_people_note') }}" - ) - include ../../../svg/recruit.svg + 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') }}" p.project-card-description {{::project.get('description')| limitTo:100 }} span(ng-if="::project.get('description').length > 100") ... .project-card-statistics @@ -36,25 +34,29 @@ 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' }}" ) - include ../../../svg/like.svg + svg.icon.icon-like + use(xlink:href="#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' }}" ) - include ../../../svg/eye.svg + svg.icon.icon-watch + use(xlink:href="#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' }}" ) - include ../../../svg/team.svg + svg.icon.icon-team + use(xlink:href="#icon-team") span.statistics-num {{ ::project.get('members').size }} span.statistic( ng-if="::project.get('is_private')" title="{{ 'PROJECT.PRIVATE' | translate }}" ) - include ../../../svg/lock.svg + svg.icon.icon-lock + use(xlink:href="#icon-lock") a.see-more-projects-btn.button-gray( href="#", @@ -65,7 +67,8 @@ section.home-project-list(ng-if="vm.projects.size") ) section.projects-empty(ng-if="vm.projects != undefined && vm.projects.size === 0") - include ../../../svg/empty-project.svg + svg.icon.icon-project + use(xlink:href="#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/home/projects/home-project-list.scss b/app/modules/home/projects/home-project-list.scss index c73826b0..503b1155 100644 --- a/app/modules/home/projects/home-project-list.scss +++ b/app/modules/home/projects/home-project-list.scss @@ -14,13 +14,11 @@ .projects-empty { text-align: center; svg { + fill: $whitish; height: 100px; margin: 1rem auto; text-align: center; width: 100%; - path { - fill: $whitish; - } } p { @extend %small; diff --git a/app/modules/navigation-bar/dropdown-organization-list/dropdown-organization-list.jade b/app/modules/navigation-bar/dropdown-organization-list/dropdown-organization-list.jade deleted file mode 100644 index e0b23904..00000000 --- a/app/modules/navigation-bar/dropdown-organization-list/dropdown-organization-list.jade +++ /dev/null @@ -1,10 +0,0 @@ -#TODO: fill correctly when implemented -a(href="#", title="Organizations") - include ../../../svg/organizations.svg - -div.navbar-dropdown.dropdown-organization-list - ul - - for (var x = 0; x < 4; x++) - li - a(href="#", title="{{ project.title }}") Organization 1 - a.create-organization-btn.button-green(href="#", title="Create Organization") Create Organization 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 13b7097a..50bc0a4d 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,5 +1,6 @@ a(href="", title="Projects", tg-nav="projects") - include ../../../svg/projects.svg + svg.icon.icon-project + use(xlink:href="#icon-project") div.navbar-dropdown.dropdown-project-list ul @@ -19,7 +20,11 @@ div.navbar-dropdown.dropdown-project-list title="{{'PROJECT.NAVIGATION.ACTION_CREATE_PROJECT' | translate}}", translate="PROJECT.NAVIGATION.ACTION_CREATE_PROJECT") - span(tg-import-project-button) - a.button-blackish.import-project-button(href="", title="{{'PROJECT.NAVIGATION.TITLE_IMPORT_PROJECT' | translate}}") - span.icon.icon-upload + a.button-blackish.import-project-button( + href="" + title="{{'PROJECT.NAVIGATION.TITLE_IMPORT_PROJECT' | translate}}" + tg-import-project-button + ) + svg.icon.icon-upload + use(xlink:href="#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 83f49a36..2c6a4a81 100644 --- a/app/modules/navigation-bar/navigation-bar.jade +++ b/app/modules/navigation-bar/navigation-bar.jade @@ -30,14 +30,16 @@ nav.navbar(ng-if="vm.isEnabledHeader") ng-class="{active: vm.active}", title="{{'PROJECT.NAVIGATION.DASHBOARD_TITLE' | translate}}") - include ../../svg/dashboard.svg + svg.icon.icon-dashboard + use(xlink:href="#icon-dashboard") a( href="#", tg-nav="discover", title="{{'PROJECT.NAVIGATION.DISCOVER_TITLE' | translate}}", ) - include ../../svg/discover.svg + svg.icon.icon-discover + use(xlink:href="#icon-discover") div.topnav-dropdown-wrapper(ng-show="vm.projects.size", tg-dropdown-project-list) //- div.topnav-dropdown-wrapper(tg-dropdown-organization-list) diff --git a/app/modules/navigation-bar/navigation-bar.scss b/app/modules/navigation-bar/navigation-bar.scss index 440784c0..8106882f 100644 --- a/app/modules/navigation-bar/navigation-bar.scss +++ b/app/modules/navigation-bar/navigation-bar.scss @@ -52,13 +52,14 @@ $dropdown-width: 350px; color: $white; display: inline-block; transition: all .2s linear; - svg path { + svg { fill: darken($primary-dark, 8%); + transition: all .2s linear; } &:hover { background: rgba($black, .2); color: $primary-light; - svg path { + svg { fill: $white; } @@ -152,14 +153,22 @@ $dropdown-width: 350px; &.see-more-projects-btn { margin-bottom: .3rem; } + &.import-project-button { + padding: .8rem 1rem; + } &.create-project-btn { flex: 1; } - &.import-project-button { - padding-left: .75rem; - padding-right: .75rem; + } + .import-project-button { + &:hover { + svg { + fill: $primary-light; + } + } + svg { + fill: $white; } - } .create-options { display: flex; diff --git a/app/modules/profile/profile-bar/profile-bar.jade b/app/modules/profile/profile-bar/profile-bar.jade index 3c16c794..8a53a4ad 100644 --- a/app/modules/profile/profile-bar/profile-bar.jade +++ b/app/modules/profile/profile-bar/profile-bar.jade @@ -2,19 +2,10 @@ section.profile-bar div.profile-image-wrapper(ng-class="::{'is-current-user': vm.isCurrentUser}") img.profile-img(ng-src="{{::vm.user.get('big_photo')}}", alt="{{::vm.user.get('full_name')}}") a.profile-edition(title="{{ 'USER.PROFILE.EDIT' | translate }}", tg-nav="user-settings-user-profile", translate="USER.PROFILE.EDIT") - // a.button-green - // span(translate="USER.PROFILE.FOLLOW") div.profile-data h1(ng-class="{'not-full-name': !vm.user.get('full_name')}") {{::vm.user.get("full_name_display")}} .username @{{::vm.user.get("username")}} h2 {{::vm.stats.get('roles').join(", ")}} - // div.location - // include ../../../svg/location.svg - // span Madrid - // Remove Abuse Flag when a user is seeing itself - // a.flag(href="", title="{{ 'USER.PROFILE.REPORT' | translate }}") - // include ../../../svg/flag.svg - // These values in profile stats are not defined yet in UX. Please ask div.profile-stats div.stat span.stat-number {{::vm.stats.get('total_num_projects')}} @@ -25,14 +16,6 @@ section.profile-bar div.stat span.stat-number {{::vm.stats.get('total_num_contacts')}} span.stat-name(translate="USER.PROFILE.CONTACTS") - // TODO Hide until organizations come - // div.profile-organizations - // h3 Organizations - // div.profile-organizations-wrapper - // div.organization - // div.organization - // div.organization - // div.organization div.profile-quote(ng-if="::vm.user.get('bio')") span {{::vm.user.get("bio") | limitTo:210 }}{{vm.user.get("bio").length < 210 ? '' : '...'}} diff --git a/app/modules/profile/profile-contacts/profile-contacts.jade b/app/modules/profile/profile-contacts/profile-contacts.jade index 08ffe638..b752325e 100644 --- a/app/modules/profile/profile-contacts/profile-contacts.jade +++ b/app/modules/profile/profile-contacts/profile-contacts.jade @@ -4,7 +4,8 @@ section.profile-contacts img(src="/#{v}/svg/spinner-circle.svg", alt="Loading...") div.empty-tab(ng-if="vm.contacts && !vm.contacts.size") - include ../../../svg/hide.svg + svg.icon.icon-unwatch + use(xlink:href="#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 827eff4f..4b1b7e56 100644 --- a/app/modules/profile/profile-favs/items/project.jade +++ b/app/modules/profile/profile-favs/items/project.jade @@ -34,14 +34,14 @@ ng-class="{'active': vm.item.get('is_fan')}" title="{{ 'PROJECT.LIKE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.get(\"total_fans\")||0}:'messageformat' }}" ) - span.icon - include ../../../../svg/like.svg + svg.icon.icon-like + use(xlink:href="#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' }}" ) - span.icon - include ../../../../svg/watch.svg + svg.icon.icon-watch + use(xlink:href="#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 a55ec8d0..d938466a 100644 --- a/app/modules/profile/profile-favs/items/ticket.jade +++ b/app/modules/profile/profile-favs/items/ticket.jade @@ -67,14 +67,14 @@ div.list-itemtype-ticket ng-class="{'active': vm.item.get('is_voter')}", title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.get(\"total_voters\")||0}:'messageformat' }}" ) - span.icon - include ../../../../svg/upvote.svg + svg.icon.icon-upvote + use(xlink:href="#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' }}" ) - span.icon - include ../../../../svg/watch.svg + svg.icon.icon-watch + use(xlink:href="#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 3b1ece60..24120ccb 100644 --- a/app/modules/profile/profile-favs/profile-favs.jade +++ b/app/modules/profile/profile-favs/profile-favs.jade @@ -1,7 +1,8 @@ section.profile-favs div.profile-filter div.searchbox(ng-if="::vm.enableFilterByTextQuery") - span.icon-search + svg.icon.icon-search + use(xlink:href="#icon-search") input( type="text" ng-model="vm.q" diff --git a/app/modules/profile/profile-favs/profile-favs.scss b/app/modules/profile/profile-favs/profile-favs.scss index e37d4542..dce9d08c 100644 --- a/app/modules/profile/profile-favs/profile-favs.scss +++ b/app/modules/profile/profile-favs/profile-favs.scss @@ -14,7 +14,7 @@ display: flex; flex: 1; .icon-search { - color: grayer; + fill: $gray; margin-right: .5rem; } input { diff --git a/app/modules/profile/profile-hints/profile-hints.jade b/app/modules/profile/profile-hints/profile-hints.jade index fceb5fd9..364a9066 100644 --- a/app/modules/profile/profile-hints/profile-hints.jade +++ b/app/modules/profile/profile-hints/profile-hints.jade @@ -1,5 +1,6 @@ h4 - span.icon.icon-help + svg.icon.icon-question + use(xlink:href="#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 28c2ef45..3f76179d 100644 --- a/app/modules/profile/profile-projects/profile-projects.jade +++ b/app/modules/profile/profile-projects/profile-projects.jade @@ -4,7 +4,8 @@ section.profile-projects img(src="/#{v}/svg/spinner-circle.svg", alt="Loading...") .empty-tab(ng-if="vm.projects && !vm.projects.size") - include ../../../svg/hide.svg + svg.icon.icon-unwatch + use(xlink:href="#icon-unwatch") p( translate="USER.PROFILE.PROJECTS_EMPTY" @@ -46,16 +47,16 @@ section.profile-projects ng-class="{'active': project.get('is_fan')}" title="{{ 'PROJECT.LIKE_BUTTON.COUNTER_TITLE'|translate:{total:project.get(\"total_fans\")||0}:'messageformat' }}" ) - span.icon - include ../../../svg/like.svg + svg.icon.icon-like + use(xlink:href="#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' }}" ) - span.icon - include ../../../svg/watch.svg + svg.icon.icon-watch + use(xlink:href="#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 308a97ba..252e7282 100644 --- a/app/modules/profile/profile-tab/profile-tab.directive.coffee +++ b/app/modules/profile/profile-tab/profile-tab.directive.coffee @@ -28,6 +28,7 @@ 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 ba10af3a..c7965c2f 100644 --- a/app/modules/profile/profile-tabs/profile-tabs.jade +++ b/app/modules/profile/profile-tabs/profile-tabs.jade @@ -7,7 +7,8 @@ div ng-click="vm.toggleTab(tab)" ng-class="{active: tab.active}" ) - span.icon(ng-class="::tab.icon") + svg.icon(ng-class="::tab.icon") + use(xlink:href="{{::tab.iconName}}") span {{::tab.name}} ng-transclude diff --git a/app/modules/profile/profile.jade b/app/modules/profile/profile.jade index dc5ce3f7..3b6caf8e 100644 --- a/app/modules/profile/profile.jade +++ b/app/modules/profile/profile.jade @@ -21,21 +21,21 @@ div.profile.centered(ng-if="vm.user") div( tg-profile-tab="{{'USER.PROFILE.TABS.LIKES_TAB' | translate}}" tab-title="{{'USER.PROFILE.TABS.LIKES_TAB_TITLE' | translate}}" - tab-icon="icon-heart" + tab-icon="icon-like" ) div(tg-profile-liked, user="vm.user") div( tg-profile-tab="{{'USER.PROFILE.TABS.VOTES_TAB' | translate}}" tab-title="{{'USER.PROFILE.TABS.VOTES_TAB_TITLE' | translate}}" - tab-icon="icon-caret-up" + tab-icon="icon-upvote" ) div(tg-profile-voted, user="vm.user") div( tg-profile-tab="{{'USER.PROFILE.TABS.WATCHED_TAB' | translate}}" tab-title="{{'USER.PROFILE.TABS.WATCHED_TAB_TITLE' | translate}}" - tab-icon="icon-eye" + tab-icon="icon-watch" ) div(tg-profile-watched, user="vm.user") diff --git a/app/modules/profile/profile.scss b/app/modules/profile/profile.scss index 0dcec0dc..d11826f6 100644 --- a/app/modules/profile/profile.scss +++ b/app/modules/profile/profile.scss @@ -50,12 +50,16 @@ padding: 5vh; text-align: center; svg { + fill: $whitish; + height: 10rem; margin: 2rem auto; - max-width: 160px; text-align: center; + width: 10rem; } p { + color: $gray-light; font-size: .9rem; + margin: 0; } } } diff --git a/app/modules/profile/styles/profile-content-tabs.scss b/app/modules/profile/styles/profile-content-tabs.scss index 6b5340be..b63ec85e 100644 --- a/app/modules/profile/styles/profile-content-tabs.scss +++ b/app/modules/profile/styles/profile-content-tabs.scss @@ -7,8 +7,11 @@ padding: 1rem; &:hover, &.active { - color: $grayer; + color: $gray; transition: color .2s linear; + .icon { + fill: $primary-light; + } } &.active { background: $white; @@ -19,11 +22,13 @@ transition: color .2s linear; .icon { color: $primary; - transition: color .2s linear; } } } .icon { - margin-right: .4rem; + fill: $gray-light; + height: .8rem; + margin-right: .5rem; + transition: fill .2s linear; } } diff --git a/app/modules/profile/styles/profile-sidebar.scss b/app/modules/profile/styles/profile-sidebar.scss index 944c813c..964b3322 100644 --- a/app/modules/profile/styles/profile-sidebar.scss +++ b/app/modules/profile/styles/profile-sidebar.scss @@ -6,9 +6,10 @@ margin-bottom: .5rem; padding: .5rem; .icon { - color: $gray-light; + fill: $gray-light; margin-right: .3rem; - vertical-align: text-bottom; + margin-top: -3px; + vertical-align: middle; } } p { 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 7faad550..176c25fd 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,7 +8,8 @@ a.track-button.like-button.like-container( ) span.track-inner span.track-icon - include ../../../../svg/like.svg + svg.icon.icon-like + use(xlink:href="#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 508922fd..1c2671a5 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,10 +6,12 @@ a.track-button.watch-button.watch-container( ) span.track-inner span.track-icon - include ../../../../svg/watch.svg + svg.icon.icon-watch + use(xlink:href="#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") - span.icon.icon-arrow-up + svg.icon.icon-arrow-down + use(xlink:href="#icon-arrow-down") span.track-button-counter( title="{{ 'PROJECT.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:vm.project.get(\"total_watchers\")||0}:'messageformat' }}", @@ -35,7 +37,8 @@ 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") - include ../../../../svg/check.svg + svg.icon.icon-check-empty + use(xlink:href="#icon-check-empty") li a( href="", @@ -45,7 +48,8 @@ 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") - include ../../../../svg/check.svg + svg.icon.icon-check-empty + use(xlink:href="#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 3e1e0de9..59676e12 100644 --- a/app/modules/projects/listing/projects-listing.jade +++ b/app/modules/projects/listing/projects-listing.jade @@ -13,7 +13,8 @@ href="" title="{{'PROJECT.NAVIGATION.TITLE_IMPORT_PROJECT' | translate}}" ) - span.icon.icon-upload + svg.icon.icon-upload + use(xlink:href="#icon-upload") input.import-file.hidden(type="file") section.project-list-section @@ -46,7 +47,8 @@ ng-if="project.get('is_private')" title="{{'PROJECT.PRIVATE' | translate}}" ) - include ../../../svg/lock.svg + svg.icon.icon-lock + use(xlink:href="#icon-lock") p {{ ::project.get('description') | limitTo:300 }} span(ng-if="::project.get('description').length > 300") ... @@ -57,7 +59,8 @@ ) span.tag-name {{::tag.get('name')}} - span.drag.icon.icon-drag-v + svg.drag.icon.icon-drag + use(xlink:href="#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 b9f68b93..522358f2 100644 --- a/app/modules/projects/listing/styles/project-list.scss +++ b/app/modules/projects/listing/styles/project-list.scss @@ -13,20 +13,21 @@ margin: 0; } } - .create-options a { - &.create-project-btn { - margin-right: .25rem; - padding: .6rem 2.5rem; - } - &.import-project-button { - padding: .53rem .8rem; - &:hover { - background: $grayer; - } + .create-project-btn { + margin-right: .25rem; + padding: .6rem 2.5rem; + } + .import-project-button { + padding: .53rem .8rem; + &:hover { .icon-upload { - margin: 0; + fill: $primary-light; } } + .icon-upload { + fill: $white; + } + } .project-list-section { display: flex; @@ -63,10 +64,12 @@ } } .drag { - @extend %large; align-self: center; - color: $gray-light; + fill: $gray-light; + height: 1.1rem; + margin-right: .5rem; opacity: 0; transition: opacity .2s; + width: 1.1rem; } } diff --git a/app/modules/projects/project/project.jade b/app/modules/projects/project/project.jade index b646fbff..285e0dbf 100644 --- a/app/modules/projects/project/project.jade +++ b/app/modules/projects/project/project.jade @@ -20,7 +20,8 @@ div.wrapper ng-if="::vm.project.get('is_private')" title="{{'PROJECT.PRIVATE' | translate}}" ) - include ../../../svg/lock.svg + svg.icon.icon-lock + use(xlink:href="#icon-lock") div.track-buttons-container(ng-if="vm.user") tg-like-project-button(project="vm.project") @@ -31,15 +32,15 @@ div.wrapper span.list-itemtype-track-likers( title="{{ 'PROJECT.LIKE_BUTTON.COUNTER_TITLE'|translate:{total:vm.project.get(\"total_fans\")||0}:'messageformat' }}" ) - span.icon - include ../../../svg/like.svg + svg.icon.icon-like + use(xlink:href="#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' }}" ) - span.icon - include ../../../svg/watch.svg + svg.icon.icon-watche + use(xlink:href="#icon-watch") span {{ ::vm.project.get('total_watchers') }} p.description {{vm.project.get('description')}} 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 a2f83b04..8c086e97 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,5 +1,6 @@ div.single-attachment blockquote a(ng-href="{{ attachment.get('url') }}", title="Click to download {{ attachment.get('filename') }}", target="_blank") - span.icon.icon-document + svg.icon.icon-attachment + use(xlink:href="#icon-attachment") span {{attachment.get('filename')}} diff --git a/app/modules/user-timeline/user-timeline/user-timeline.scss b/app/modules/user-timeline/user-timeline/user-timeline.scss index fc41472a..181109b4 100644 --- a/app/modules/user-timeline/user-timeline/user-timeline.scss +++ b/app/modules/user-timeline/user-timeline/user-timeline.scss @@ -86,11 +86,12 @@ max-width: 95%; overflow: hidden; text-overflow: ellipsis; - vertical-align: middle; + vertical-align: sub; white-space: nowrap; } .icon { - margin-right: .3rem; + fill: $grayer; + margin-right: .5rem; } } .spin { diff --git a/app/partials/admin/admin-project-export.jade b/app/partials/admin/admin-project-export.jade index 04fd1af4..024e49da 100644 --- a/app/partials/admin/admin-project-export.jade +++ b/app/partials/admin/admin-project-export.jade @@ -26,5 +26,6 @@ div.wrapper(ng-controller="ProjectProfileController as ctrl", p.result-message a.help-button(href="https://taiga.io/support/import-export-projects/", target="_blank") - span.icon.icon-help + svg.icon.icon-question + use(xlink:href="#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 ab4ade35..fac254da 100644 --- a/app/partials/admin/admin-project-modules.jade +++ b/app/partials/admin/admin-project-modules.jade @@ -15,7 +15,8 @@ div.wrapper(tg-project-modules, ng-controller="ProjectProfileController as ctrl" form div.functionality(ng-class="{true:'active', false:''}[project.is_backlog_activated]") - div.icon.icon-scrum + svg.icon.icon-scrum + use(xlink:href="#icon-scrum") div.desc p span.title(translate="ADMIN.MODULES.BACKLOG") @@ -29,7 +30,8 @@ div.wrapper(tg-project-modules, ng-controller="ProjectProfileController as ctrl" span(ng-switch-when="false", translate="ADMIN.MODULES.ENABLE") div.functionality(ng-class="{true:'active', false:''}[project.is_kanban_activated]") - div.icon.icon-kanban + svg.icon.icon-kanban + use(xlink:href="#icon-kanban") div.desc p span.title(translate="ADMIN.MODULES.KANBAN") @@ -43,7 +45,8 @@ div.wrapper(tg-project-modules, ng-controller="ProjectProfileController as ctrl" span(ng-switch-when="false", translate="ADMIN.MODULES.ENABLE") div.functionality(ng-class="{true:'active', false:''}[project.is_issues_activated]") - div.icon.icon-issues + svg.icon.icon-issues + use(xlink:href="#icon-issues") div.desc p span.title(translate="ADMIN.MODULES.ISSUES") @@ -57,7 +60,8 @@ div.wrapper(tg-project-modules, ng-controller="ProjectProfileController as ctrl" span(ng-switch-when="false", translate="ADMIN.MODULES.ENABLE") div.functionality(ng-class="{true:'active', false:''}[project.is_wiki_activated]") - div.icon.icon-wiki + svg.icon.icon-wiki + use(xlink:href="#icon-wiki") div.desc p span.title(translate="ADMIN.MODULES.WIKI") @@ -71,7 +75,8 @@ div.wrapper(tg-project-modules, ng-controller="ProjectProfileController as ctrl" span(ng-switch-when="false", translate="ADMIN.MODULES.ENABLE") div.functionality(ng-class="{true:'active', false:''}[isVideoconferenceActivated]") - div.icon.icon-video + svg.icon.icon-bubble-empty + use(xlink:href="#icon-bubble-empty") div.desc p span.title(translate="ADMIN.MODULES.MEETUP") diff --git a/app/partials/admin/admin-project-profile.jade b/app/partials/admin/admin-project-profile.jade index c786f932..1aedd6cb 100644 --- a/app/partials/admin/admin-project-profile.jade +++ b/app/partials/admin/admin-project-profile.jade @@ -105,10 +105,9 @@ div.wrapper( fieldset.looking-for-people .looking-for-people-selector span {{ 'ADMIN.PROJECT_PROFILE.RECRUITING' | translate }} - span( - title="{{ 'ADMIN.PROJECT_PROFILE.RECRUITING_MESSAGE' | translate }}" - ) - include ../../svg/recruit.svg + svg.icon.icon-recruit + use(xlink:href="#icon-recruit") + title {{ 'ADMIN.PROJECT_PROFILE.RECRUITING_MESSAGE' | translate }}" div.check input( type="checkbox", @@ -138,8 +137,6 @@ div.wrapper( ng-value="false" ) label.trans-button(for="private-project") {{ 'ADMIN.PROJECT_PROFILE.PUBLIC_PROJECT' | translate }} - span(title="{{ 'ADMIN.PROJECT_PROFILE.PUBLIC_PROJECT_DESC' | translate }}") - include ../../svg/help.svg div.privacy-option input.privacy-project( @@ -150,15 +147,14 @@ div.wrapper( ng-value="true" ) label.trans-button(for="public-project") {{'ADMIN.PROJECT_PROFILE.PRIVATE_PROJECT' | translate }} - span(title="{{ 'ADMIN.PROJECT_PROFILE.PRIVATE_PROJECT_DESC' | translate }}") - include ../../svg/help.svg a.private-or-public( href="https://taiga.io/support/whats-the-difference-between-public-and-private-projects/" target="_blank" ) - span(title="{{ 'ADMIN.PROJECT_PROFILE.PRIVATE_OR_PUBLIC' | translate }}") - include ../../svg/help.svg + svg.icon.icon-question + use(xlink:href="#icon-question") + title {{ 'ADMIN.PROJECT_PROFILE.PRIVATE_OR_PUBLIC' | translate }} 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 ffbb8ca5..bde79213 100644 --- a/app/partials/admin/admin-project-reports.jade +++ b/app/partials/admin/admin-project-reports.jade @@ -22,5 +22,6 @@ div.wrapper(ng-controller="ProjectProfileController as ctrl", div a.help-button(href="https://taiga.io/support/csv-reports/", target="_blank") - span.icon.icon-help + svg.icon.icon-question + use(xlink:href="#icon-question") span(translate="ADMIN.REPORTS.HELP") diff --git a/app/partials/admin/admin-roles.jade b/app/partials/admin/admin-roles.jade index 2af066c0..1afdcc9b 100644 --- a/app/partials/admin/admin-roles.jade +++ b/app/partials/admin/admin-roles.jade @@ -18,25 +18,27 @@ div.wrapper.roles(ng-controller="RolesController as ctrl", span(translate="COMMON.DELETE") - div(ng-if="!role.external_user") - div(tg-edit-role) - .edit-role - input(type="text", value="{{ role.name }}") - a.save.icon-floppy(href="", title="{{'COMMON.SAVE' | translate}}") + tg-edit-role(ng-if="!role.external_user") + .edit-role + input(type="text", value="{{ role.name }}") + a.save(href="", title="{{'COMMON.SAVE' | translate}}") + svg.icon.icon-save + use(xlink:href="#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") - p.total - span.role-name(title="{{'ADMIN.ROLES.COUNT_MEMBERS' | translate}}") {{ role.name }} - a.edit-value.icon.icon-edit + div.any-computable-role(ng-hide="anyComputableRole", translate="ADMIN.ROLES.WARNING_NO_ROLE") - div.any-computable-role(ng-hide="anyComputableRole", translate="ADMIN.ROLES.WARNING_NO_ROLE") - - div.general-category - span(translate="ADMIN.ROLES.HELP_ROLE_ENABLED") - div.check - input(type="checkbox", ng-model="role.computable", ng-change="ctrl.toggleComputable()") - div - span.check-text.check-yes(translate="COMMON.YES") - span.check-text.check-no(translate="COMMON.NO") + div.general-category + span(translate="ADMIN.ROLES.HELP_ROLE_ENABLED") + div.check + input(type="checkbox", ng-model="role.computable", ng-change="ctrl.toggleComputable()") + div + span.check-text.check-yes(translate="COMMON.YES") + span.check-text.check-no(translate="COMMON.NO") div(ng-if="role.external_user") p.total diff --git a/app/partials/admin/admin-third-parties-bitbucket.jade b/app/partials/admin/admin-third-parties-bitbucket.jade index 6aa26207..b56beb19 100644 --- a/app/partials/admin/admin-third-parties-bitbucket.jade +++ b/app/partials/admin/admin-third-parties-bitbucket.jade @@ -24,7 +24,8 @@ 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 - .icon.icon-copy + svg.icon.icon-clipboard + use(xlink:href="#icon-clipboard") .help-copy(translate="COMMON.COPY_TO_CLIPBOARD") fieldset @@ -34,5 +35,6 @@ 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") - span.icon.icon-help + svg.icon.icon-question + use(xlink:href="#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 9154d42b..3500c73a 100644 --- a/app/partials/admin/admin-third-parties-github.jade +++ b/app/partials/admin/admin-third-parties-github.jade @@ -23,11 +23,13 @@ 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 - .icon.icon-copy + svg.icon.icon-clipboard + use(xlink:href="#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") - span.icon.icon-help + svg.icon.icon-question + use(xlink:href="#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 6bc1fcbe..8867eee3 100644 --- a/app/partials/admin/admin-third-parties-gitlab.jade +++ b/app/partials/admin/admin-third-parties-gitlab.jade @@ -23,7 +23,8 @@ 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 - .icon.icon-copy + svg.icon.icon-clipboard + use(xlink:href="#icon-clipboard") .help-copy(translate="COMMON.COPY_TO_CLIPBOARD") fieldset @@ -33,5 +34,6 @@ 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") - span.icon.icon-help + svg.icon.icon-question + use(xlink:href="#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 b890b2a0..0b9349e6 100644 --- a/app/partials/admin/admin-third-parties-webhooks.jade +++ b/app/partials/admin/admin-third-parties-webhooks.jade @@ -31,12 +31,29 @@ div.wrapper.roles(ng-controller="WebhooksController as ctrl", div.webhook-url div.webhook-url-inputs fieldset - input(type="text", name="url", data-type="url", placeholder="{{'ADMIN.WEBHOOKS.TYPE_PAYLOAD_URL' | translate}}", data-required="true", ng-model="webhook.url") + input( + type="text" + name="url" + data-type="url" + placeholder="{{'ADMIN.WEBHOOKS.TYPE_PAYLOAD_URL' | translate}}" + data-required="true" + ng-model="webhook.url" + ) fieldset - input(type="text", name="key", placeholder="{{'ADMIN.WEBHOOKS.TYPE_SERVICE_SECRET' | translate}}", data-required="true", ng-model="webhook.key") + input( + type="text" + name="key" + placeholder="{{'ADMIN.WEBHOOKS.TYPE_SERVICE_SECRET' | translate}}" + data-required="true" + ng-model="webhook.key" + ) div.webhook-options - a.edit-existing.icon.icon-floppy(href="", title="{{'ADMIN.WEBHOOKS.SAVE' | translate}}") - a.cancel-existing.icon.icon-delete(href="", title="{{'ADMIN.WEBHOOKS.CANCEL' | translate}}") + 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") div.visualization-mode div.row @@ -48,9 +65,15 @@ div.wrapper.roles(ng-controller="WebhooksController as ctrl", div.webhook-options div.webhook-options-wrapper - a.test-webhook.icon.icon-check-square(href="", title="{{'ADMIN.WEBHOOKS.TEST' | translate}}") - a.edit-webhook.icon.icon-edit(href="", title="{{'ADMIN.WEBHOOKS.EDIT' | translate}}") - a.delete-webhook.icon.icon-delete(href="", title="{{'ADMIN.WEBHOOKS.DELETE' | translate}}") + a.test-webhook(href="", title="{{'ADMIN.WEBHOOKS.TEST' | translate}}") + svg.icon.icon-check-empty + use(xlink:href="#icon-check-empty") + a.edit-webhook(href="", title="{{'ADMIN.WEBHOOKS.EDIT' | translate}}") + svg.icon.icon-edit + use(xlink:href="#icon-edit") + a.delete-webhook(href="", title="{{'ADMIN.WEBHOOKS.DELETE' | translate}}") + svg.icon.icon-trash + use(xlink:href="#icon-trash") div.webhooks-history(ng-show="webhook.logs") div.history-single-wrapper(ng-repeat="log in webhook.logs") @@ -58,13 +81,15 @@ 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") - span.toggle-log.icon.icon-arrow-bottom + svg.toggle-log.icon.icon-arrow-down + use(xlink:href="#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}}") - span.icon.icon-reload + svg.icon.icon-reload + use(xlink:href="#icon-reload") span(translate="ADMIN.WEBHOOKS.RESEND_REQUEST") div.history-single-request-body div.response-container @@ -91,9 +116,14 @@ div.wrapper.roles(ng-controller="WebhooksController as ctrl", fieldset 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.icon.icon-floppy(href="", title="{{'ADMIN.WEBHOOKS.SAVE' | translate}}") - a.cancel-new.icon.icon-delete(href="", title="{{'ADMIN.WEBHOOKS.CANCEL' | translate}}") + a.add-new(href="", title="{{'ADMIN.WEBHOOKS.SAVE' | translate}}") + svg.icon.icon-save + use(xlink:href="#icon-save") + a.cancel-new(href="", title="{{'ADMIN.WEBHOOKS.CANCEL' | translate}}") + svg.icon.icon-close + use(xlink:href="#icon-close") a.help-button(href="https://taiga.io/support/webhooks/", target="_blank") - span.icon.icon-help + svg.icon.icon-question + use(xlink:href="#icon-question") span(translate="ADMIN.HELP") diff --git a/app/partials/admin/project-csv.jade b/app/partials/admin/project-csv.jade index 8e709dd9..559b1fd0 100644 --- a/app/partials/admin/project-csv.jade +++ b/app/partials/admin/project-csv.jade @@ -10,11 +10,14 @@ 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 - div.icon.icon-copy + svg.icon.icon-clipboard + use(xlink:href="#icon-clipboard") a(href="", title="{{'ADMIN.CSV.TITLE_REGENERATE_URL' | translate}}", ng-click="ctrl.regenerateUuid()") - span.icon.icon-plus(ng-hide="csvUrl") + svg.icon.icon-add(ng-hide="csvUrl") + use(xlink:href="#icon-add") span(ng-hide="csvUrl", translate="ADMIN.CSV.ACTION_GENERATE_URL") - span.icon.icon-reload(ng-Show="csvUrl") + svg.icon.icon-reload(ng-Show="csvUrl") + use(xlink:href="#icon-reload") span(ng-Show="csvUrl", translate="ADMIN.CSV.ACTION_REGENERATE") diff --git a/app/partials/backlog/backlog.jade b/app/partials/backlog/backlog.jade index 0752b02f..f87992bc 100644 --- a/app/partials/backlog/backlog.jade +++ b/app/partials/backlog/backlog.jade @@ -12,8 +12,8 @@ div.wrapper(tg-backlog, ng-controller="BacklogController as ctrl", include ../includes/components/summary div.empty-burndown(ng-if="showGraphPlaceholder") - div.graph-icon - include ../../svg/graph.svg + svg.icon.icon-graph + use(xlink:href="#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-details:project=project.slug", title="{{'BACKLOG.CUSTOMIZE_GRAPH_TITLE' | translate}}") {{'BACKLOG.CUSTOMIZE_GRAPH_ADMIN' | translate}}] @@ -30,7 +30,8 @@ div.wrapper(tg-backlog, ng-controller="BacklogController as ctrl", title="{{'BACKLOG.MOVE_US_TO_CURRENT_SPRINT' | translate}}" id="move-to-current-sprint" ) - span.icon.icon-move + svg.icon.icon-move + use(xlink:href="#icon-move") span.text(translate="BACKLOG.MOVE_US_TO_CURRENT_SPRINT") a.trans-button.move-to-latest-sprint.move-to-sprint( ng-if="!currentSprint" @@ -38,7 +39,8 @@ div.wrapper(tg-backlog, ng-controller="BacklogController as ctrl", title="{{'BACKLOG.MOVE_US_TO_LATEST_SPRINT' | translate}}" id="move-to-latest-sprint" ) - span.icon.icon-move + svg.icon.icon-move + use(xlink:href="#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 d9550028..860c8423 100644 --- a/app/partials/backlog/filter-selected.jade +++ b/app/partials/backlog/filter-selected.jade @@ -2,5 +2,6 @@ a.single-filter.selected(data-type!="<%- f.type %>", data-id!="<%- f.id %>") span.name(style!="<%- f.style %>") | <%- f.name %> - span.icon.icon-delete + svg.icon.icon-close.remove-filter + use(xlink:href="#icon-close") <% }) %> diff --git a/app/partials/backlog/sprint-header.jade b/app/partials/backlog/sprint-header.jade index c1e636fb..2024e3ea 100644 --- a/app/partials/backlog/sprint-header.jade +++ b/app/partials/backlog/sprint-header.jade @@ -1,9 +1,12 @@ .sprint-name - a.icon.icon-arrow-up(href="", title="{{'BACKLOG.COMPACT_SPRINT' | translate}}") + 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}}") span {{::name}} - a.icon.icon-edit(ng-if="::isEditable", href="", title="{{'BACKLOG.EDIT_SPRINT' | translate}}") + svg.icon.icon-edit.edit-sprint(ng-if="::isEditable", href="", title="{{'BACKLOG.EDIT_SPRINT' | translate}}") + use(xlink:href="#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 a510e0a1..22606398 100644 --- a/app/partials/common/components/add-button.jade +++ b/app/partials/common/components/add-button.jade @@ -1,4 +1,5 @@ a.add-button( href="" ) - include ../../../svg/add.svg + svg.icon.icon-add + use(xlink:href="#icon-add") diff --git a/app/partials/common/components/assigned-to.jade b/app/partials/common/components/assigned-to.jade index 25b4b52b..2588a8b5 100644 --- a/app/partials/common/components/assigned-to.jade +++ b/app/partials/common/components/assigned-to.jade @@ -2,7 +2,8 @@ img(src!="<%- photo %>", alt!="<%- fullName %>") <% if (isIocaine) { %> .iocaine-symbol(title="{{ 'TASK.TITLE_ACTION_IOCAINE' | translate }}") - include ../../../svg/iocaine.svg + svg.icon.icon-iocaine + use(xlink:href="#icon-iocaine") <% }; %> .assigned-to @@ -23,7 +24,8 @@ <%- fullName %> <% }; %> <% if (isEditable && !isUnassigned) { %> - span.icon.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#icon-arrow-down") <% }; %> <% if (isEditable && isUnassigned) { %> @@ -37,8 +39,9 @@ <% }; %> <% if (isEditable && !isUnassigned) { %> - a.icon.icon-delete( + svg.icon.icon-close.remove-user( href="" 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 2f474602..0a499ff2 100644 --- a/app/partials/common/components/block-button.jade +++ b/app/partials/common/components/block-button.jade @@ -2,9 +2,11 @@ a.button-gray.item-block( href="" title="{{ 'COMMON.BLOCK_TITLE' | translate }}" ) - include ../../../svg/lock.svg + svg.icon.icon-lock + use(xlink:href="#icon-lock") a.button-red.item-unblock( href="" title="{{ 'COMMON.UNBLOCK_TITLE' | translate }}" ) - include ../../../svg/unlock.svg + svg.icon.icon-lock + use(xlink:href="#icon-unlock") diff --git a/app/partials/common/components/delete-button.jade b/app/partials/common/components/delete-button.jade index 22f6ee5b..3f1d987c 100644 --- a/app/partials/common/components/delete-button.jade +++ b/app/partials/common/components/delete-button.jade @@ -2,4 +2,5 @@ a.button-red.button-delete( href="" title="{{ 'COMMON.DELETE' | translate }}" ) - include ../../../svg/trash.svg + svg.icon.icon-trash + use(xlink:href="#icon-trash") diff --git a/app/partials/common/components/editable-description.jade b/app/partials/common/components/editable-description.jade index 6cfdeda1..348ef613 100644 --- a/app/partials/common/components/editable-description.jade +++ b/app/partials/common/components/editable-description.jade @@ -2,10 +2,12 @@ include wysiwyg.jade .view-description section.us-content.wysiwyg(tg-bind-html="item.description_html || noDescriptionMsg") - span.edit.icon.icon-edit + svg.icon.icon-edit.edit + use(xlink:href="#icon-edit") .edit-description textarea(ng-attr-placeholder="{{'COMMON.DESCRIPTION.EMPTY' | translate}}", ng-model="item.description", tg-markitup="tg-markitup") +wysihelp span.save-container - a.save.icon.icon-floppy(href="", title="{{'COMMON.SAVE' | translate}}") + svg.save.icon.icon-save(title="{{'COMMON.SAVE' | translate}}") + use(xlink:href="#icon-save") diff --git a/app/partials/common/components/editable-subject.jade b/app/partials/common/components/editable-subject.jade index f5d728bb..e4cc7bb2 100644 --- a/app/partials/common/components/editable-subject.jade +++ b/app/partials/common/components/editable-subject.jade @@ -1,7 +1,9 @@ .view-subject | {{ item.subject }} - a.edit.icon.icon-edit(href="" title="{{'COMMON.EDIT' | translate}}") + svg.edit.icon.icon-edit(href="" title="{{'COMMON.EDIT' | translate}}") + use(xlink:href="#icon-edit") .edit-subject input(type="text", ng-model="item.subject", data-required="true", data-maxlength="500", ng-model-options="{ debounce: 200 }") span.save-container - a.save.icon.icon-floppy(href="", title="{{'COMMON.SAVE' | translate}}") + svg.save.icon.icon-save(href="", title="{{'COMMON.SAVE' | translate}}") + use(xlink:href="#icon-save") diff --git a/app/partials/common/components/watchers.jade b/app/partials/common/components/watchers.jade index fcbe398d..fb5d9771 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){ %> - a.icon.icon-delete.js-delete-watcher( - href="" + svg.icon.icon-trash.js-delete-watcher.delete-watcher( 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 3d90e44a..4c10f363 100644 --- a/app/partials/common/components/wysiwyg.jade +++ b/app/partials/common/components/wysiwyg.jade @@ -2,5 +2,6 @@ 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}}") - span.icon.icon-help + svg.icon.icon-question + use(xlink:href="#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 86bf489c..298960c0 100644 --- a/app/partials/common/estimation/us-estimation-points-per-role.jade +++ b/app/partials/common/estimation/us-estimation-points-per-role.jade @@ -3,7 +3,8 @@ ul.points-per-role li.ticket-role-points.total(class!="<% if(editable){ %>clickable<% } %>", data-role-id!="<%- role.id %>", title!="<%- role.name %>") span.points <%- role.points %> - span.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#icon-arrow-down") span.role <%- role.name %> <% }); %> diff --git a/app/partials/common/estimation/us-estimation-total.jade b/app/partials/common/estimation/us-estimation-total.jade index 235494bb..013bd495 100644 --- a/app/partials/common/estimation/us-estimation-total.jade +++ b/app/partials/common/estimation/us-estimation-total.jade @@ -1,5 +1,6 @@ a.us-points(href="", title!="<%= title %>", class!="<% if (!editable) { %>not-clickable<% } %>") span.points-value <%= text %> <% if (editable) { %> - span.icon.icon-arrow-bottom(tg-check-permission="modify_us") + svg.icon.icon-arrow-down(tg-check-permission="modify_us") + use(xlink:href="#icon-arrow-down") <% } %> diff --git a/app/partials/common/history/history-activity.jade b/app/partials/common/history/history-activity.jade index a49c3fb6..7a7ce6ff 100644 --- a/app/partials/common/history/history-activity.jade +++ b/app/partials/common/history/history-activity.jade @@ -1,4 +1,4 @@ -div(class!="activity-single <%- mode %>") +.activity-single(class!="<%- mode %>") .activity-user a.avatar(href!="<%- userProfileUrl %>", title!="<%- userFullName %>") img(src!="<%- avatar %>", alt!="<%- userFullName %>") @@ -18,11 +18,11 @@ div(class!="activity-single <%- mode %>") .comment.wysiwyg(ng-non-bindable) | <%= comment %> <% if (!deleteCommentDate && mode !== "activity" && canDeleteComment) { %> - a.icon.icon-delete.comment-delete( - href="" + svg.icon.icon-trash.comment-delete( data-activity-id!="<%- activityId %>" title!="<%- deleteCommentActionTitle %>" ) + use(xlink:href="#icon-trash") <% } %> <% } %> @@ -31,7 +31,8 @@ div(class!="activity-single <%- mode %>") <% if (mode != "activity") { %> a.changes-title(href="", title="{{'ACTIVITY.SHOW_ACTIVITY' | translate}}") span <%- changesText %> - span.icon.icon-arrow-up + svg.icon.icon-arrow-right + use(xlink:href="#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 ceef5a7c..3d8f1874 100644 --- a/app/partials/common/history/history-base.jade +++ b/app/partials/common/history/history-base.jade @@ -6,13 +6,15 @@ section.history <% if (commentsVisible) { %> li a(href="#", class="active", data-section-class="history-comments") - span.icon.icon-comment + svg.icon.icon-writer + use(xlink:href="#icon-writer") span.tab-title(translate="COMMENTS.TITLE") <% } %> <% if (historyVisible) { %> li a(href="#", data-section-class="history-activity") - span.icon.icon-issues + svg.icon.icon-timeline + use(xlink:href="#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 fbbcd29d..51510e55 100644 --- a/app/partials/common/history/history-deleted-comment.jade +++ b/app/partials/common/history/history-deleted-comment.jade @@ -13,6 +13,7 @@ data-activity-id!="<%- activityId %>" title="{{ 'COMMENTS.RESTORE' | translate }}" ) - span.icon.icon-reload + svg.icon.icon-reload + use(xlink:href="#icon-reload") span(translate="COMMENTS.RESTORE") <% } %> diff --git a/app/partials/common/lightbox-feedback.jade b/app/partials/common/lightbox-feedback.jade index d985a8a6..f46019c6 100644 --- a/app/partials/common/lightbox-feedback.jade +++ b/app/partials/common/lightbox-feedback.jade @@ -1,5 +1,5 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}") + use(xlink:href="#icon-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 49c44b9a..78916665 100644 --- a/app/partials/common/lightbox/lightbox-assigned-to-users.jade +++ b/app/partials/common/lightbox/lightbox-assigned-to-users.jade @@ -11,10 +11,11 @@ title!="<%- selected.full_name_display %>" ) | <%-selected.full_name_display %> - a.icon-delete.remove-assigned-to( + svg.icon.icon-close.remove-assigned-to( href="" title="{{'COMMON.ASSIGNED_TO.REMOVE_ASSIGNED' | translate}}" ) + 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 7f00751d..b3947857 100644 --- a/app/partials/common/lightbox/lightbox-assigned-to.jade +++ b/app/partials/common/lightbox/lightbox-assigned-to.jade @@ -1,5 +1,6 @@ -a.close(href="", title="close") - span.icon.icon-delete +svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}") + use(xlink:href="#icon-close") + div.form h2.title(translate="LIGHTBOX.ASSIGNED_TO.SELECT") fieldset diff --git a/app/partials/common/lightbox/lightbox-attachment-preview.jade b/app/partials/common/lightbox/lightbox-attachment-preview.jade index b1b1ebb5..bf401bbf 100644 --- a/app/partials/common/lightbox/lightbox-attachment-preview.jade +++ b/app/partials/common/lightbox/lightbox-attachment-preview.jade @@ -1,6 +1,6 @@ .attachment-preview - a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete + svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}") + use(xlink:href="#icon-close") a(href="{{::file.get('url')}}", title="{{::file.get('description')}}", target="_blank", download="{{::file.get('name')}}") - img(src="{{::file.get('url')}}") \ No newline at end of file + img(src="{{::file.get('url')}}") diff --git a/app/partials/common/lightbox/lightbox-block.jade b/app/partials/common/lightbox/lightbox-block.jade index b74ee6d4..d7bd60da 100644 --- a/app/partials/common/lightbox/lightbox-block.jade +++ b/app/partials/common/lightbox/lightbox-block.jade @@ -1,5 +1,5 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}") + use(xlink:href="#icon-close") div.form h2.title fieldset diff --git a/app/partials/common/lightbox/lightbox-users.jade b/app/partials/common/lightbox/lightbox-users.jade index 2c43e246..d6693258 100644 --- a/app/partials/common/lightbox/lightbox-users.jade +++ b/app/partials/common/lightbox/lightbox-users.jade @@ -1,5 +1,5 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}") + use(xlink:href="#icon-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 fb6be1eb..7f95583e 100644 --- a/app/partials/common/tag/lb-tag-line-tags.jade +++ b/app/partials/common/tag/lb-tag-line-tags.jade @@ -1,5 +1,6 @@ <% _.each(tags, function(tag) { %> span(class="tag", style!="<%- tag.style %>") span.tag-name <%- tag.name %> - a(href="", title="{{ 'COMMON.TAGS.DELETE' | translate }}", class="icon icon-delete") + svg.icon.icon-close.remove-tag(title="{{ 'COMMON.TAGS.DELETE' | translate }}") + use(xlink:href="#icon-close") <% }); %> diff --git a/app/partials/common/tag/lb-tag-line.jade b/app/partials/common/tag/lb-tag-line.jade index 1c06a23e..5fe8414b 100644 --- a/app/partials/common/tag/lb-tag-line.jade +++ b/app/partials/common/tag/lb-tag-line.jade @@ -1,3 +1,8 @@ .tags-container -input(type="text", placeholder="{{'COMMON.TAGS.PLACEHOLDER' | translate}}", class="tag-input") -a(href="", title="{{'COMMON.SAVE' | translate}}", class="save icon icon-floppy hidden") +input.tag-input( + type="text" + placeholder="{{'COMMON.TAGS.PLACEHOLDER' | translate}}" +) +span.save.hidden(title="{{'COMMON.SAVE' | translate}}") + svg.icon.icon-save + use(xlink:href="#icon-save") diff --git a/app/partials/common/tag/tag-line.jade b/app/partials/common/tag/tag-line.jade index 06040a9e..2d205441 100644 --- a/app/partials/common/tag/tag-line.jade +++ b/app/partials/common/tag/tag-line.jade @@ -1,8 +1,11 @@ .tags-container a(href="#", class="add-tag hidden", title="{{'COMMON.TAGS.ADD' | translate}}") - span.icon.icon-plus + svg.icon.icon-add + use(xlink:href="#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") - a(href="", title="{{'COMMON.SAVE' | translate}}", class="save icon icon-floppy hidden") + span.save.hidden(title="{{'COMMON.SAVE' | translate}}") + svg.icon.icon-save + use(xlink:href="#icon-save") diff --git a/app/partials/common/tag/tags-line-tags.jade b/app/partials/common/tag/tags-line-tags.jade index c9b0dbd9..9ea57c69 100644 --- a/app/partials/common/tag/tags-line-tags.jade +++ b/app/partials/common/tag/tags-line-tags.jade @@ -2,6 +2,7 @@ span(class="tag", style!="border-left: 5px solid <%- tag.color %>;") span.tag-name <%- tag.name %> <% if (isEditable) { %> - a(href="", title="{{ 'COMMON.TAGS.DELETE' | translate }}", class="icon icon-delete") + svg.icon.icon-close.remove-tag(title="{{ 'COMMON.TAGS.DELETE' | translate }}") + use(xlink:href="#icon-close") <% } %> <% }); %> diff --git a/app/partials/common/wysiwyg/wysiwyg-markitup-preview.jade b/app/partials/common/wysiwyg/wysiwyg-markitup-preview.jade index a674385d..791c2d2b 100644 --- a/app/partials/common/wysiwyg/wysiwyg-markitup-preview.jade +++ b/app/partials/common/wysiwyg/wysiwyg-markitup-preview.jade @@ -1,5 +1,6 @@ .preview .actions - a(href="#" title="{{'COMMON.WYSIWYG.EDIT_BUTTON' | translate}}" class="icon icon-edit edit") + svg.edit.icon.icon-edit(title="{{'COMMON.WYSIWYG.EDIT_BUTTON' | translate}}") + use(xlink:href="#icon-edit") .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 1f90518e..a62c4f53 100644 --- a/app/partials/custom-attributes/custom-attribute-value-edit.jade +++ b/app/partials/custom-attributes/custom-attribute-value-edit.jade @@ -22,4 +22,5 @@ form.custom-field-single.editable <% } %> div.custom-field-options - a.icon.icon-floppy(href="", title="{{'COMMON.CUSTOM_ATTRIBUTES.SAVE' | translate}}") + svg.icon.icon-save.js-save-description(title="{{'COMMON.CUSTOM_ATTRIBUTES.SAVE' | translate}}") + use(xlink:href="#icon-save") diff --git a/app/partials/custom-attributes/custom-attribute-value.jade b/app/partials/custom-attributes/custom-attribute-value.jade index c89dbd06..51e7bfeb 100644 --- a/app/partials/custom-attributes/custom-attribute-value.jade +++ b/app/partials/custom-attributes/custom-attribute-value.jade @@ -1,5 +1,5 @@ -div.custom-field-single - div.custom-field-data +.custom-field-single + .custom-field-data span.custom-field-name <%- name %> <% if (description){ %> @@ -7,7 +7,7 @@ div.custom-field-single <%- description %> <% } %> - div.custom-field-value.js-value-view-mode + .custom-field-value.js-value-view-mode span <% if (type=="url") { %> a(href!="<%- value %>") @@ -17,6 +17,7 @@ div.custom-field-single <% } %> <% if (isEditable) { %> - div.custom-field-options - a.icon.icon-edit(href="", title="{{'COMMON.CUSTOM_ATTRIBUTES.EDIT' | translate}}") + .custom-field-options + svg.icon.icon-edit.js-edit-description(title="{{'COMMON.CUSTOM_ATTRIBUTES.EDIT' | translate}}") + use(xlink:href="#icon-edit") <% } %> diff --git a/app/partials/custom-attributes/custom-attributes-values.jade b/app/partials/custom-attributes/custom-attributes-values.jade index 3c34c6e1..09d7ecf9 100644 --- a/app/partials/custom-attributes/custom-attributes-values.jade +++ b/app/partials/custom-attributes/custom-attributes-values.jade @@ -2,6 +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 - a.icon.icon-arrow-bottom(class!="<% if (!collapsed) { %>open<% } %>") + svg.icon.icon-arrow-down(class!="<% if (!collapsed) { %>open<% } %>") + use(xlink:href="#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 fd25ed2d..6de3e427 100644 --- a/app/partials/includes/components/addnewtask.jade +++ b/app/partials/includes/components/addnewtask.jade @@ -1,6 +1,14 @@ -a.icon.icon-plus(tg-check-permission="add_task", - href="", title="{{'TASKBOARD.TITLE_ACTION_ADD' | translate}}", - ng-click="ctrl.addNewTask('standard', us)") -a.icon.icon-bulk(tg-check-permission="add_task", - href="", title="{{'TASKBOARD.TITLE_ACTION_ADD_BULK' | translate}}", - ng-click="ctrl.addNewTask('bulk', us)") +svg.icon.icon-add( + tg-check-permission="add_task" + href="" + title="{{'TASKBOARD.TITLE_ACTION_ADD' | translate}}" + ng-click="ctrl.addNewTask('standard', us)" +) + 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)" +) + use(xlink:href="#icon-bulk") diff --git a/app/partials/includes/components/addnewus.jade b/app/partials/includes/components/addnewus.jade index 52f59b9a..27a9d870 100644 --- a/app/partials/includes/components/addnewus.jade +++ b/app/partials/includes/components/addnewus.jade @@ -6,4 +6,5 @@ div.new-us a.button-bulk(href="", title="{{'US.ADD_BULK' | translate}}", ng-click="ctrl.addNewUs('bulk')", tg-check-permission="add_us") - span.icon.icon-bulk + svg.icon.icon-bulk + use(xlink:href="#icon-bulk") diff --git a/app/partials/includes/components/backlog-row.jade b/app/partials/includes/components/backlog-row.jade index 99684c1b..e564a31b 100644 --- a/app/partials/includes/components/backlog-row.jade +++ b/app/partials/includes/components/backlog-row.jade @@ -13,7 +13,8 @@ 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' }}" ) - span.icon.icon-caret-up + svg.icon.icon-upvote + use(xlink:href="#icon-upvote") span {{ ::us.total_voters }} div.user-stories div.tags-block(tg-colorize-tags="us.tags", tg-colorize-tags-type="backlog") @@ -27,25 +28,33 @@ div.row.us-item-row( span(tg-bo-ref="us.ref") span(ng-bind="us.subject") div.us-settings - a.icon.icon-edit( + a.edit-story( href="" tg-check-permission="modify_us" ng-click="ctrl.editUserStory(us.project, us.ref, $event)" title="{{'COMMON.EDIT' | translate}}" ) - a.icon.icon-delete( + svg.icon.icon-edit + use(xlink:href="#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") div.status(tg-us-status="us" on-update="ctrl.updateUserStoryStatus()") a.us-status(href="", title="{{'BACKLOG.STATUS_NAME' | translate}}") span.us-status-bind - span.icon.icon-arrow-bottom(tg-check-permission="modify_us") + svg.icon.icon-arrow-down(tg-check-permission="modify_us") + use(xlink:href="#icon-arrow-down") div.points(tg-backlog-us-points="us") a.us-points(href="", title="{{'COMMON.FIELDS.POINTS' | translate}}") - a.icon.icon-drag-v(tg-check-permission="modify_us", href="", title="{{'COMMON.DRAG' | translate}}") + a(tg-check-permission="modify_us", href="", title="{{'COMMON.DRAG' | translate}}") + svg.icon.icon-drag + use(xlink:href="#icon-drag") diff --git a/app/partials/includes/components/notification-message.jade b/app/partials/includes/components/notification-message.jade index 82b3ab05..4597bd30 100644 --- a/app/partials/includes/components/notification-message.jade +++ b/app/partials/includes/components/notification-message.jade @@ -15,15 +15,18 @@ div.notification-message.notification-message-success p(translate="NOTIFICATION.SAVED") div.notification-message.notification-message-error - div.icon.icon-notification-error + svg.icon.icon-error + use(xlink:href="#icon-error") div.text h4.warning(translate="NOTIFICATION.WARNING") p(translate="NOTIFICATION.WARNING_TEXT") - a.icon.icon-delete(href="", title="{{'NOTIFICATION.CLOSE' | translate}}") + svg.icon.icon-close(href="", title="{{'NOTIFICATION.CLOSE' | translate}}") + use(xlink:href="#icon-close") div.notification-light.notification-message-light-error div.text h4.warning(translate="NOTIFICATION.WARNING") p(translate="NOTIFICATION.WARNING_TEXT") a.close(href="", title="{{'NOTIFICATION.CLOSE' | translate}}") - include ../../../svg/remove.svg + svg.icon.icon-close + use(xlink:href="#icon-close") diff --git a/app/partials/includes/components/sprint-summary.jade b/app/partials/includes/components/sprint-summary.jade index 5fbe8e4e..87244b25 100644 --- a/app/partials/includes/components/sprint-summary.jade +++ b/app/partials/includes/components/sprint-summary.jade @@ -13,7 +13,8 @@ div.summary.large-summary span.description(translate="BACKLOG.SPRINT_SUMMARY.COMPLETED_POINTS") div.summary-stats - span.icon.icon-bulk + svg.icon.icon-bulk + use(xlink:href="#icon-bulk") span.number(ng-bind="stats.openTasks|default:'--'") span.description(translate="BACKLOG.SPRINT_SUMMARY.OPEN_TASKS") div.summary-stats @@ -21,9 +22,11 @@ div.summary.large-summary span.description(translate="BACKLOG.SPRINT_SUMMARY.CLOSED_TASKS") div.summary-stats(title="{{'COMMON.IOCAINE_TEXT' | translate}}") - span.icon.icon-iocaine + svg.icon.icon-iocaine + use(xlink:href="#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}}") - include ../../../svg/graph.svg + svg.icon.icon-graph + use(xlink:href="#icon-graph") diff --git a/app/partials/includes/components/summary.jade b/app/partials/includes/components/summary.jade index 81ba9d4b..b6698321 100644 --- a/app/partials/includes/components/summary.jade +++ b/app/partials/includes/components/summary.jade @@ -22,4 +22,5 @@ div.summary title="{{'BACKLOG.SPRINT_SUMMARY.TOGGLE_BAKLOG_GRAPH' | translate}}", ng-if="!showGraphPlaceholder" ) - include ../../../svg/graph.svg + svg.icon.icon-graph + use(xlink:href="#icon-graph") diff --git a/app/partials/includes/components/taskboard-task.jade b/app/partials/includes/components/taskboard-task.jade index dd34369e..4716a763 100644 --- a/app/partials/includes/components/taskboard-task.jade +++ b/app/partials/includes/components/taskboard-task.jade @@ -1,11 +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}") - span.icon.icon-iocaine(ng-if="task.is_iocaine", title="{{'COMMON.IOCAINE_TEXT' | translate}}") + svg.icon.icon-iocaine( + ng-if="task.is_iocaine" + 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") - a.icon.icon-edit(tg-check-permission="modify_task", - href="", title="{{'TASKBOARD.TITLE_ACTION_EDIT' | translate}}") + svg.icon.icon-edit( + tg-check-permission="modify_task" + title="{{'TASKBOARD.TITLE_ACTION_EDIT' | translate}}" + ) + 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 bb03c36c..073dcbe5 100644 --- a/app/partials/includes/modules/admin/admin-custom-attributes.jade +++ b/app/partials/includes/modules/admin/admin-custom-attributes.jade @@ -22,7 +22,8 @@ section.custom-fields-table.basic-table 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 - span.icon.icon-drag-v + svg.icon.icon-drag + use(xlink:href="#icon-drag") div.custom-name span {{ attr.name }} div.custom-description @@ -35,14 +36,16 @@ section.custom-fields-table.basic-table span(ng-switch-when="url", translate="ADMIN.CUSTOM_FIELDS.FIELD_TYPE_URL") div.custom-options div.custom-options-wrapper - a.js-edit-custom-field-button.icon.icon-edit( + svg.js-edit-custom-field-button.icon.icon-edit( href="" title="{{'ADMIN.CUSTOM_ATTRIBUTES.EDIT' | translate}}" ) - a.js-delete-custom-field-button.icon.icon-delete( + use(xlink:href="#icon-edit") + svg.js-delete-custom-field-button.icon.icon-trash( href="" title="{{'ADMIN.CUSTOM_ATTRIBUTES.DELETE' | translate}}" ) + use(xlink:href="#icon-trash") div.row.single-custom-field.js-edit-custom-field.hidden fieldset.custom-name @@ -68,14 +71,16 @@ section.custom-fields-table.basic-table ) fieldset.custom-options div.custom-options-wrapper - a.js-update-custom-field-button.icon.icon-floppy( + svg.js-update-custom-field-button.icon.icon-save( href="" title="{{'ADMIN.CUSTOM_ATTRIBUTES.ACTION_UPDATE' | translate}}" ) - a.js-cancel-edit-custom-field-button.icon.icon-delete( + use(xlink:href="#icon-save") + svg.js-cancel-edit-custom-field-button.icon.icon-close( href="" title="{{'ADMIN.CUSTOM_ATTRIBUTES.ACTION_CANCEL_EDITION' | translate}}" ) + use(xlink:href="#icon-close") form.row.single-custom-field.js-new-custom-field.hidden fieldset.custom-name @@ -103,11 +108,13 @@ section.custom-fields-table.basic-table fieldset.custom-options div.custom-options-wrapper - a.js-create-custom-field-button.icon.icon-floppy( + svg.js-create-custom-field-button.icon.icon-save( href="" title="{{'ADMIN.CUSTOM_ATTRIBUTES.SAVE_TITLE' | translate}}" ) - a.js-cancel-new-custom-field-button.icon.icon-delete( + use(xlink:href="#icon-save") + svg.js-cancel-new-custom-field-button.icon.icon-trash( href="" title="{{'ADMIN.CUSTOM_ATTRIBUTES.CANCEL_TITLE' | translate}}" ) + use(xlink:href="#icon-trash") diff --git a/app/partials/includes/modules/admin/project-points.jade b/app/partials/includes/modules/admin/project-points.jade index bb991265..6189a3d7 100644 --- a/app/partials/includes/modules/admin/project-points.jade +++ b/app/partials/includes/modules/admin/project-points.jade @@ -18,7 +18,8 @@ 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 - span.icon.icon-drag-v + svg.icon.icon-drag + use(xlink:href="#icon-drag") div.project-values-name span {{ value.name }} @@ -27,8 +28,10 @@ section.project-values-table span {{ value.value }} div.project-values-settings - a.edit-value.icon.icon-edit(href="", title="{{'ADMIN.POINTS.TITLE_ACTION_EDIT_VALUE' | translate}}") - a.delete-value.icon.icon-delete(href="", title="{{'ADMIN.POINTS.TITLE_ACTION_DELETE_VALUE' | translate}}") + 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") div.project-values-row.row.table-main.edition.hidden div.project-values-name @@ -38,19 +41,33 @@ 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 - a.save.icon.icon-floppy(href="", title="{{'COMMON.SAVE' | translate}}") - a.cancel.icon.icon-delete(href="", title="{{'COMON.CANCEL' | translate}}") + 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") form div.project-values-row.new-value.hidden div.project-values-name - input(name="name", type="text", placeholder="{{'COMMON.FIELDS.NAME' | translate}}", ng-model="newValue.name", - data-required="true") + input( + name="name" + type="text" + placeholder="{{'COMMON.FIELDS.NAME' | translate}}" + ng-model="newValue.name" + data-required="true" + ) div.project-values-value - input("name=value", type="text", placeholder="{{'COMMON.FIELDS.VALUE' | translate}}", ng-model="newValue.value", - data-type="number") + input( + name="value" + type="text" + placeholder="{{'COMMON.FIELDS.VALUE' | translate}}" + ng-model="newValue.value" + data-type="number" + ) div.project-values-settings - a.add-new.icon.icon-floppy(href="", title="{{'COMMON.ADD' | translate}}") - a.delete-new.icon.icon-delete(href="", title="{{'COMMON.CANCEL' | translate}}") + 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") diff --git a/app/partials/includes/modules/admin/project-status.jade b/app/partials/includes/modules/admin/project-status.jade index 40c5c799..1540413d 100644 --- a/app/partials/includes/modules/admin/project-status.jade +++ b/app/partials/includes/modules/admin/project-status.jade @@ -17,7 +17,8 @@ section.colors-table.admin-status-table div(ng-repeat="value in values", tg-bind-scope) form(tg-bind-scope) div.row.table-main.visualization - span.icon.icon-drag-v + svg.icon.icon-drag + use(xlink:href="#icon-drag") div.color-column div.current-color(ng-style="{background: value.color}") @@ -28,43 +29,75 @@ section.colors-table.admin-status-table span {{ value.slug }} div.is-closed-column - div.icon.icon-check-square(ng-show="value.is_closed") + svg.icon.icon-check(ng-show="value.is_closed") + use(xlink:href="#icon-check") div.options-column - a.edit-value.icon.icon-edit(href="", title="{{'ADMIN.COMMON.TITLE_ACTION_EDIT_VALUE' | translate}}") - a.delete-value.icon.icon-delete(href="", title="{{'ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE' | translate}}") + 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") div.row.table-main.edition.hidden - div.color-column(tg-color-selection, ng-model="value") + div.color-column( + tg-color-selection + ng-model="value" + ) div.current-color(ng-style="{background: value.color}") include ../../components/select-color div.status-name - input(name="name", type="text", placeholder="{{'ADMIN.STATUS.PLACEHOLDER_WRITE_STATUS_NAME' | translate}}", - ng-model="value.name", data-required="true", data-maxlength="255") + input( + name="name" + type="text" + placeholder="{{'ADMIN.STATUS.PLACEHOLDER_WRITE_STATUS_NAME' | translate}}" + ng-model="value.name" + data-required="true" + data-maxlength="255" + ) div.is-closed-column - select(name="is_closed", ng-model="value.is_closed", data-required="true", - ng-options="e.id as e.name | translate for e in [{'id':true, 'name':'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]") + select( + name="is_closed" + ng-model="value.is_closed" + data-required="true" + ng-options="e.id as e.name | translate for e in [{'id':true, 'name':'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]") div.options-column - a.save.icon.icon-floppy(href="", title="{{'COMMON.SAVE' | translate}}") - a.cancel.icon.icon-delete(href="", title="{{'COMMON.CANCEL' | translate}}") + 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") form div.row.table-main.new-value.hidden - div.color-column(tg-color-selection, ng-model="newValue") + div.color-column( + tg-color-selection + ng-model="newValue" + ) div.current-color(ng-style="{background: newValue.color}") include ../../components/select-color div.status-name - input(name="name", type="text", placeholder="{{'ADMIN.STATUS.PLACEHOLDER_WRITE_STATUS_NAME' | translate}}", - ng-model="newValue.name", data-required="true", data-maxlength="255") + input( + name="name" + type="text" + placeholder="{{'ADMIN.STATUS.PLACEHOLDER_WRITE_STATUS_NAME' | translate}}" + ng-model="newValue.name" + data-required="true" + data-maxlength="255" + ) div.is-closed-column - select(name="is_closed", ng-model="newValue.is_closed", data-required="true", - ng-options="e.id as e.name | translate for e in [{'id':true, 'name': 'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]") + select( + name="is_closed" + ng-model="newValue.is_closed" + data-required="true" + ng-options="e.id as e.name | translate for e in [{'id':true, 'name': 'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]" + ) div.options-column - a.add-new.icon.icon-floppy(href="", title="{{'COMMON.ADD' | translate}}") - a.delete-new.icon.icon-delete(href="", title="{{'COMMON.CANCEL' | translate}}") + 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") diff --git a/app/partials/includes/modules/admin/project-types.jade b/app/partials/includes/modules/admin/project-types.jade index cd69b129..12a53bce 100644 --- a/app/partials/includes/modules/admin/project-types.jade +++ b/app/partials/includes/modules/admin/project-types.jade @@ -16,7 +16,8 @@ section.colors-table div(ng-repeat="value in values", tg-bind-scope) form(tg-bind-scope) div.row.table-main.visualization - span.icon.icon-drag-v + svg.icon.icon-drag + use(xlink:href="#icon-drag") div.color-column div.current-color(ng-style="{background: value.color}") @@ -25,32 +26,56 @@ section.colors-table span {{ value.name }} div.options-column - a.edit-value.icon.icon-edit(href="", title="{{'ADMIN.COMMON.TITLE_ACTION_EDIT_VALUE' | translate}}") - a.delete-value.icon.icon-delete(href="", title="{{'ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE' | translate}}") + 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") div.row.table-main.edition.hidden - div.color-column(tg-color-selection, ng-model="value") + div.color-column( + tg-color-selection + ng-model="value" + ) div.current-color(ng-style="{background: value.color}") include ../../components/select-color div.status-name - input(name="name", type="text", placeholder="{{'ADMIN.TYPES.PLACEHOLDER_WRITE_NAME' | translate}}", - ng-model="value.name", data-required="true", data-maxlength="255") + input( + name="name" + type="text" + placeholder="{{'ADMIN.TYPES.PLACEHOLDER_WRITE_NAME' | translate}}", + ng-model="value.name" + data-required="true" + data-maxlength="255" + ) div.options-column - a.save.icon.icon-floppy(href="", title="{{'COMMON.SAVE' | translate}}") - a.cancel.icon.icon-delete(href="", title="{{'COMMON.CANCEL' | translate}}") + 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") form div.row.table-main.new-value.hidden - div.color-column(tg-color-selection, ng-model="newValue") + div.color-column( + tg-color-selection + ng-model="newValue" + ) div.current-color(ng-style="{background: newValue.color}") include ../../components/select-color div.status-name - input(name="name", type="text", placeholder="{{'ADMIN.TYPES.PLACEHOLDER_WRITE_NAME' | translate}}", - ng-model="newValue.name", data-required="true", data-maxlength="255") + input( + name="name" + type="text" + placeholder="{{'ADMIN.TYPES.PLACEHOLDER_WRITE_NAME' | translate}}", + ng-model="newValue.name" + data-required="true" + data-maxlength="255" + ) div.options-column - a.add-new.icon.icon-floppy(href="", title="{{'COMMON.ADD' | translate}}") - a.delete-new.icon.icon-delete(href="", title="{{'COMMON.CANCEL' | translate}}") + 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") diff --git a/app/partials/includes/modules/admin/project-us-status.jade b/app/partials/includes/modules/admin/project-us-status.jade index cf583523..892990d8 100644 --- a/app/partials/includes/modules/admin/project-us-status.jade +++ b/app/partials/includes/modules/admin/project-us-status.jade @@ -21,7 +21,8 @@ section.project-us-status div(ng-repeat="value in values", tg-bind-scope) form(tg-bind-scope) div.row.table-main.visualization - span.icon.icon-drag-v + svg.icon.icon-drag + use(xlink:href="#icon-drag") div.color-column div.current-color(ng-style="{background: value.color}") @@ -33,44 +34,69 @@ section.project-us-status span {{ value.slug }} div.is-closed-column - div.icon.icon-check-square(ng-show="value.is_closed") + svg.icon.icon-check(ng-show="value.is_closed") + use(xlink:href="#icon-check") div.is-archived-column - div.icon.icon-check-square(ng-show="value.is_archived") + svg.icon.icon-check(ng-show="value.is_archived") + use(xlink:href="#icon-check") div.status-wip-limit span(ng-hide="value.is_archived") {{ value.wip_limit }} div.options-column - a.edit-value.icon.icon-edit(href="", title="{{'ADMIN.COMMON.TITLE_ACTION_EDIT_VALUE' | translate}}") - a.delete-value.icon.icon-delete(href="", title="{{'ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE' | translate}}") + 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") div.row.table-main.edition.hidden - div.color-column(tg-color-selection, ng-model="value") - div.current-color(ng-style="{background: value.color}") + .color-column(tg-color-selection, ng-model="value") + .current-color(ng-style="{background: value.color}") include ../../components/select-color - div.status-name - input(name="name", type="text", placeholder="{{'ADMIN.US_STATUS.PLACEHOLDER_WRITE_NAME' | translate}}", - ng-model="value.name", data-required="true", data-maxlength="255") + .status-name + input( + name="name" + type="text" + placeholder="{{'ADMIN.US_STATUS.PLACEHOLDER_WRITE_NAME' | translate}}", + ng-model="value.name" + data-required="true" + data-maxlength="255" + ) - div.is-closed-column - select(name="is_closed", ng-model="value.is_closed", data-required="true", - ng-options="e.id as e.name | translate for e in [{'id':true, 'name':'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]") + .is-closed-column + select( + name="is_closed" + ng-model="value.is_closed" + data-required="true" + ng-options="e.id as e.name | translate for e in [{'id':true, 'name':'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]" + ) - div.is-archived-column - select(name="is_archived", ng-model="value.is_archived", data-required="true", - ng-options="e.id as e.name | translate for e in [{'id':true, 'name':'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]") + .is-archived-column + select( + name="is_archived" + ng-model="value.is_archived" + data-required="true" + ng-options="e.id as e.name | translate for e in [{'id':true, 'name':'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]" + ) - div.status-wip-limit - input(name="wip_limit", type="number", ng-hide="value.is_archived", - ng-model="value.wip_limit", data-type="digits", - placeholder="{{'ADMIN.US_STATUS.WIP_LIMIT_COLUMN' | translate}}") + .status-wip-limit + input( + name="wip_limit" + type="number" + ng-hide="value.is_archived" + ng-model="value.wip_limit" + data-type="digits" + placeholder="{{'ADMIN.US_STATUS.WIP_LIMIT_COLUMN' | translate}}" + ) - div.options-column - a.save.icon.icon-floppy(href="", title="{{'COMMON.SAVE' | translate}}") - a.cancel.icon.icon-delete(href="", title="{{'COMMON.CANCEL' | translate}}") + .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") form div.row.table-main.new-value.hidden @@ -79,23 +105,43 @@ section.project-us-status include ../../components/select-color div.status-name - input(name="name", type="text", - ng-model="newValue.name", data-required="true", data-maxlength="255", - placeholder="{{'ADMIN.US_STATUS.PLACEHOLDER_WRITE_NAME' | translate}}") + input( + name="name" + type="text" + ng-model="newValue.name" + data-required="true" + data-maxlength="255" + placeholder="{{'ADMIN.US_STATUS.PLACEHOLDER_WRITE_NAME' | translate}}" + ) div.is-closed-column - select(name="is_closed", ng-model="newValue.is_closed", data-required="true", - ng-options="e.id as e.name | translate for e in [{'id':true, 'name':'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]") + select( + name="is_closed" + ng-model="newValue.is_closed" + data-required="true" + ng-options="e.id as e.name | translate for e in [{'id':true, 'name':'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]" + ) div.is-archived-column - select(name="is_archived", ng-model="newValue.is_archived", data-required="true", - ng-options="e.id as e.name | translate for e in [{'id':true, 'name':'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]") + select( + name="is_archived" + ng-model="newValue.is_archived" + data-required="true" + ng-options="e.id as e.name | translate for e in [{'id':true, 'name':'COMMON.YES'},{'id':false, 'name': 'COMMON.NO'}]" + ) div.status-wip-limit - input(name="wip_limit", type="number", ng-hide="newValue.is_archived", - ng-model="newValue.wip_limit", data-type="digits", - placeholder="{{'ADMIN.US_STATUS.WIP_LIMIT_COLUMN' | translate}}") + input( + name="wip_limit" + type="number" + ng-hide="newValue.is_archived" + ng-model="newValue.wip_limit" + data-type="digits" + placeholder="{{'ADMIN.US_STATUS.WIP_LIMIT_COLUMN' | translate}}" + ) div.options-column - a.add-new.icon.icon-floppy(href="", title="{{'COMMON.ADD' | translate}}") - a.delete-new.icon.icon-delete(href="", title="{{'COMMON.CANCEL' | translate}}") + 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") diff --git a/app/partials/includes/modules/backlog-filters.jade b/app/partials/includes/modules/backlog-filters.jade index 056f65a0..01b04ad7 100644 --- a/app/partials/includes/modules/backlog-filters.jade +++ b/app/partials/includes/modules/backlog-filters.jade @@ -6,13 +6,19 @@ section.filters form fieldset input(type="text", placeholder="{{'COMMON.FILTERS.INPUT_PLACEHOLDER' | translate}}", ng-model="filtersQ") - a.icon.icon-search(href="", title="{{'COMMON.FILTERS.TITLE_ACTION_FILTER_BUTTON' | translate}}") + svg.icon.icon-search(href="", title="{{'COMMON.FILTERS.TITLE_ACTION_FILTER_BUTTON' | translate}}") + use(xlink:href="#icon-search") div.filters-step-cat div.filters-applied h2.hidden.breadcrumb - a.back(href="", title="{{'COMMON.FILTERS.BREADCRUMB_TITLE' | translate}}", translate="BACKLOG.FILTERS.TITLE") - span.icon-arrow-right + a.back( + href="" + title="{{'COMMON.FILTERS.BREADCRUMB_TITLE' | translate}}" + translate="BACKLOG.FILTERS.TITLE" + ) + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") a.subfilter(href="") span.title(translate="COMMON.FILTERS.BREADCRUMB_STATUS") div.filters-cats @@ -20,10 +26,12 @@ section.filters li a(href="", title="{{'BACKLOG.FILTERS.FILTER_CATEGORY_STATUS' | translate}}", data-type="status") span.title(translate="BACKLOG.FILTERS.FILTER_CATEGORY_STATUS") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") li a(href="", title="{{'BACKLOG.FILTERS.FILTER_CATEGORY_TAGS' | translate}}", data-type="tags") span.title(translate="BACKLOG.FILTERS.FILTER_CATEGORY_TAGS") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#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 9c3eab4c..b666dbe2 100644 --- a/app/partials/includes/modules/backlog-table.jade +++ b/app/partials/includes/modules/backlog-table.jade @@ -6,7 +6,8 @@ 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") - span.icon.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#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/colors-table.jade b/app/partials/includes/modules/colors-table.jade deleted file mode 100644 index b989422c..00000000 --- a/app/partials/includes/modules/colors-table.jade +++ /dev/null @@ -1,21 +0,0 @@ -section.colors-table - div.table-header - div.row - div.color-column(translate="COMMON.FIELDS.COLOR") - div.status-name(translate="COMMON.FIELDS.NAME") - div.is-closed-column(translate="COMMON.IS_CLOSED") - div.options-column - - div.table-main - div.row.row-edit - div.color-column - div.current-color - include ../components/select-color - - div.status-name - input(type="text") - div.is-closed-column - input(type="checkbox") - div.options-column - a.icon.icon-floppy(href="#") - a.icon.icon-delete(href="#") diff --git a/app/partials/includes/modules/comment-activity.jade b/app/partials/includes/modules/comment-activity.jade deleted file mode 100644 index 86eb047d..00000000 --- a/app/partials/includes/modules/comment-activity.jade +++ /dev/null @@ -1,17 +0,0 @@ -div.us-activity - a.activity-title(ng-show="ctrl.countChanges(comment)", href="", title="{{'ACTIVITY.SHOW_ACTIVITY' | translate}}") - span(tg-bo-bind="ctrl.buildChangesText(comment)") - span.icon.icon-arrow-up - - div.activity-inner(ng-repeat="(key, change) in comment.values_diff") - div.activity-changed - span(tg-bo-bind="key") - div.activity-fromto - p - strong(translate="COMMON.FROM") - br - span(tg-bo-bind="ctrl.getChangeText(change[0])") - p - strong(translate="COMMON.TO") - br - span(tg-bo-bind="ctrl.getChangeText(change[1])") diff --git a/app/partials/includes/modules/issues-filters.jade b/app/partials/includes/modules/issues-filters.jade index ab735773..b879fd56 100644 --- a/app/partials/includes/modules/issues-filters.jade +++ b/app/partials/includes/modules/issues-filters.jade @@ -6,13 +6,15 @@ section.filters fieldset input(type="text", placeholder="{{'ISSUES.FILTERS.INPUT_SEARCH_PLACEHOLDER' | translate}}", ng-model="filtersQ") - a.icon.icon-search(href="", title="{{'ISSUES.FILTERS.TITLE_ACTION_SEARCH' | translate}}") + svg.icon.icon-search(title="{{'ISSUES.FILTERS.TITLE_ACTION_SEARCH' | translate}}") + use(xlink:href="#icon-search") 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") - span.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") a.subfilter(href="", title="cat-name") span.title(translate="COMMON.FILTERS.BREADCRUMB_STATUS") div.filters-cats @@ -20,35 +22,43 @@ section.filters li a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.TYPE' | translate}}", data-type="types") span.title(translate="ISSUES.FILTERS.CATEGORIES.TYPE") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") li a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.STATUS' | translate}}", data-type="status") span.title(translate="ISSUES.FILTERS.CATEGORIES.STATUS") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") li a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.SEVERITY' | translate}}", data-type="severities") span.title(translate="ISSUES.FILTERS.CATEGORIES.SEVERITY") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") li a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.PRIORITIES' | translate}}", data-type="priorities") span.title(translate="ISSUES.FILTERS.CATEGORIES.PRIORITIES") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") li a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.TAGS' | translate}}", data-type="tags") span.title(translate="ISSUES.FILTERS.CATEGORIES.TAGS") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") li a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.ASSIGNED_TO' | translate}}", data-type="assignedTo") span.title(translate="ISSUES.FILTERS.CATEGORIES.ASSIGNED_TO") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") li a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.CREATED_BY' | translate}}", data-type="createdBy") span.title(translate="ISSUES.FILTERS.CATEGORIES.CREATED_BY") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") li.custom-filters(ng-if="filters.myFilters.length") a(href="", title="{{ 'ISSUES.FILTERS.CATEGORIES.CUSTOM_FILTERS' | translate}}", data-type="myFilters") span.title(translate="ISSUES.FILTERS.CATEGORIES.CUSTOM_FILTERS") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#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 4cbce556..2a9692eb 100644 --- a/app/partials/includes/modules/issues-options.jade +++ b/app/partials/includes/modules/issues-options.jade @@ -3,4 +3,5 @@ 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()") - span.icon.icon-bulk + svg.icon.icon-bulk + use(xlink:href="#icon-bulk") diff --git a/app/partials/includes/modules/issues-table.jade b/app/partials/includes/modules/issues-table.jade index ddf6ada0..e23a3025 100644 --- a/app/partials/includes/modules/issues-table.jade +++ b/app/partials/includes/modules/issues-table.jade @@ -20,7 +20,8 @@ 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' }}" ) - span.icon.icon-caret-up + svg.icon.icon-upvote + use(xlink:href="#icon-upvote") span {{ ::issue.total_voters }} div.subject a( @@ -42,14 +43,16 @@ section.issues-table.basic-table(ng-class="{empty: !issues.length}") title="{{'ISSUES.TABLE.TITLE_ACTION_CHANGE_STATUS' | translate}}" ) span.issue-status-bind - span.icon.icon-arrow-bottom(tg-check-permission="modify_issue") + svg.icon.icon-arrow-down(tg-check-permission="modify_issue") + use(xlink:href="#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 - span.icon.icon-arrow-bottom(tg-check-permission="modify_issue") + svg.icon.icon-arrow-down(tg-check-permission="modify_issue") + use(xlink:href="#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 5770b403..502fef51 100644 --- a/app/partials/includes/modules/kanban-table.jade +++ b/app/partials/includes/modules/kanban-table.jade @@ -7,37 +7,67 @@ div.kanban-table(tg-kanban-squish-column) tg-class-permission="{'readonly': '!modify_task'}") span(tg-bo-bind="s.name") div.options - a.icon.icon-vfold.hfold(href="", ng-click='foldStatus(s)', - title="{{'KANBAN.TITLE_ACTION_FOLD' | translate}}", - ng-class='{hidden:folds[s.id]}') - a.icon.icon-vunfold.hunfold(href="", ng-click='foldStatus(s)', - title="{{'KANBAN.TITLE_ACTION_UNFOLD' | translate}}", - ng-class='{hidden:!folds[s.id]}') + a.option( + href="" + ng-click='foldStatus(s)' + title="{{'KANBAN.TITLE_ACTION_FOLD' | translate}}" + ng-class='{hidden:folds[s.id]}' + ) + svg.icon.icon-fold-column + use(xlink:href="#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") + 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") + 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") - a.icon.icon-vfold(href="", title="{{'KANBAN.TITLE_ACTION_FOLD_CARDS' | translate}}", - ng-class="{hidden:statusViewModes[s.id] == 'minimized'}", - ng-click="ctrl.updateStatusViewMode(s.id, 'minimized')") - a.icon.icon-vunfold(href="", title="{{'KANBAN.TITLE_ACTION_UNFOLD_CARDS' | translate}}", - ng-class="{hidden:statusViewModes[s.id] == 'maximized'}", - ng-click="ctrl.updateStatusViewMode(s.id, 'maximized')") + a.option( + href="" + title="{{'KANBAN.TITLE_ACTION_ADD_US' | translate}}" + ng-click="ctrl.addNewUs('standard', s.id)" + tg-check-permission="add_us" + ng-hide="s.is_archived" + ) + svg.icon.icon-add + use(xlink:href="#icon-add") - a.icon.icon-plus(href="", title="{{'KANBAN.TITLE_ACTION_ADD_US' | translate}}", - ng-click="ctrl.addNewUs('standard', s.id)", - tg-check-permission="add_us", - ng-hide="s.is_archived") + a.option( + href="" + title="{{'KANBAN.TITLE_ACTION_ADD_BULK' | translate}}" + ng-click="ctrl.addNewUs('bulk', s.id)" + tg-check-permission="add_us" + ng-hide="s.is_archived" + ) + svg.icon.icon-bulk + use(xlink:href="#icon-bulk") - a.icon.icon-bulk(href="", title="{{'KANBAN.TITLE_ACTION_ADD_BULK' | translate}}", - ng-click="ctrl.addNewUs('bulk', s.id)", - tg-check-permission="add_us", - ng-hide="s.is_archived") - - a( + a.option( href="" ng-attr-title="{{title}}" ng-class="class" ng-if="s.is_archived" tg-kanban-archived-status-header="s") - include ../../../svg/eye.svg + svg.icon.icon-watch + use(xlink:href="#icon-watch") div.kanban-table-body div.kanban-table-inner diff --git a/app/partials/includes/modules/lightbox-add-member.jade b/app/partials/includes/modules/lightbox-add-member.jade index 624af87f..31aa886b 100644 --- a/app/partials/includes/modules/lightbox-add-member.jade +++ b/app/partials/includes/modules/lightbox-add-member.jade @@ -1,5 +1,6 @@ a.close(href="", title="close") - span.icon.icon-delete + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title(translate="LIGHTBOX.ADD_MEMBER.TITLE") diff --git a/app/partials/includes/modules/lightbox-ask-choice.jade b/app/partials/includes/modules/lightbox-ask-choice.jade index cc7336a0..c1f5a0fb 100644 --- a/app/partials/includes/modules/lightbox-ask-choice.jade +++ b/app/partials/includes/modules/lightbox-ask-choice.jade @@ -1,5 +1,6 @@ a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title p.question @@ -8,7 +9,7 @@ form select.choices p.warning - div.options + .options a.button-green(href="", title="{{'COMMON.ACCEPT' | translate}}") span(translate="COMMON.ACCEPT") a.button-red(href="", title="{{'COMMON.CANCEL' | translate}}") diff --git a/app/partials/includes/modules/lightbox-create-issue.jade b/app/partials/includes/modules/lightbox-create-issue.jade index bfcd53dd..829d660f 100644 --- a/app/partials/includes/modules/lightbox-create-issue.jade +++ b/app/partials/includes/modules/lightbox-create-issue.jade @@ -1,19 +1,42 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +a.close( + href="" + title="{{'COMMON.CLOSE' | translate}}" +) + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title(translate="LIGHTBOX.CREATE_ISSUE.TITLE") fieldset - input(type="text", ng-model="issue.subject", ng-attr-placeholder="{{'COMMON.FIELDS.SUBJECT' | translate}}", ng-model-options="{ debounce: 200 }", data-required="true", data-maxlength="500") - div.fieldset-row + input( + type="text" + ng-model="issue.subject" + ng-attr-placeholder="{{'COMMON.FIELDS.SUBJECT' | translate}}" + ng-model-options="{ debounce: 200 }" + data-required="true" + data-maxlength="500" + ) + .fieldset-row fieldset - select.type(ng-model="issue.type", ng-options="t.id as t.name for t in issueTypes") + select.type( + ng-model="issue.type" + ng-options="t.id as t.name for t in issueTypes" + ) fieldset - select.priority(ng-model="issue.priority", ng-options="p.id as p.name for p in priorityList") + select.priority( + ng-model="issue.priority" + ng-options="p.id as p.name for p in priorityList" + ) fieldset - select.severity(ng-model="issue.severity", ng-options="s.id as s.name for s in severityList") + select.severity( + ng-model="issue.severity" + ng-options="s.id as s.name for s in severityList" + ) fieldset - div.tags-block(tg-lb-tag-line, ng-model="issue.tags") + .tags-block( + tg-lb-tag-line + ng-model="issue.tags" + ) fieldset section @@ -24,7 +47,14 @@ form ) fieldset - textarea.description(ng-attr-placeholder="{{'COMMON.FIELDS.DESCRIPTION' | translate}}", ng-model="issue.description") + textarea.description( + ng-attr-placeholder="{{'COMMON.FIELDS.DESCRIPTION' | translate}}" + ng-model="issue.description" + ) // include lightbox-attachments - button.button-green.submit-button(type="submit", title="{{'COMMON.CREATE' | translate}}", translate="COMMON.CREATE") + button.button-green.submit-button( + type="submit" + title="{{'COMMON.CREATE' | translate}}" + translate="COMMON.CREATE" + ) diff --git a/app/partials/includes/modules/lightbox-delete-project.jade b/app/partials/includes/modules/lightbox-delete-project.jade index 0ae8f2ad..c360d23d 100644 --- a/app/partials/includes/modules/lightbox-delete-project.jade +++ b/app/partials/includes/modules/lightbox-delete-project.jade @@ -1,11 +1,12 @@ a.close(href="", title="{{'close' | translate}}") - span.icon.icon-delete + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title(translate="LIGHTBOX.DELETE_PROJECT.TITLE") p span.question(translate="LIGHTBOX.DELETE_PROJECT.QUESTION") span.subtitle(translate="LIGHTBOX.DELETE_PROJECT.SUBTITLE") - div.options + .options a.button-green(href="", title="{{'LIGHTBOX.DELETE_PROJECT.CONFIRM' | translate}}") span(translate="LIGHTBOX.DELETE_PROJECT.CONFIRM") a.button-red(href="", title="{{'COMMON.CANCEL' | translate}}") diff --git a/app/partials/includes/modules/lightbox-generic-ask.jade b/app/partials/includes/modules/lightbox-generic-ask.jade index c51ba250..6ddcaf0a 100644 --- a/app/partials/includes/modules/lightbox-generic-ask.jade +++ b/app/partials/includes/modules/lightbox-generic-ask.jade @@ -1,12 +1,16 @@ a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title p span.subtitle span.message div.options - a.button-green(href="", title="{{'COMMON.ACCEPT' | translate}}") + a.button-green( + href="" + title="{{'COMMON.ACCEPT' | translate}}" + ) span(translate="COMMON.ACCEPT") a.button-red(href="", title="{{'COMMON.CANCEL' | translate}}") span(translate="COMMON.CANCEL") diff --git a/app/partials/includes/modules/lightbox-generic-error.jade b/app/partials/includes/modules/lightbox-generic-error.jade index ca06f309..343dbaa6 100644 --- a/app/partials/includes/modules/lightbox-generic-error.jade +++ b/app/partials/includes/modules/lightbox-generic-error.jade @@ -1,7 +1,14 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +a.close( + href="" + title="{{'COMMON.CLOSE' | translate}}" +) + svg.icon.icon-close + use(xlink:href="#icon-close") section h2.title - div.options - a.button-green(href="", title="{{'COMMON.ACCEPT' | translate}}") + .options + a.button-green( + href="" + title="{{'COMMON.ACCEPT' | translate}}" + ) span(translate="COMMON.ACCEPT") diff --git a/app/partials/includes/modules/lightbox-generic-success.jade b/app/partials/includes/modules/lightbox-generic-success.jade index 35828685..02bf8c0a 100644 --- a/app/partials/includes/modules/lightbox-generic-success.jade +++ b/app/partials/includes/modules/lightbox-generic-success.jade @@ -1,8 +1,15 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +a.close( + href="" + title="{{'COMMON.CLOSE' | translate}}" +) + svg.icon.icon-close + use(xlink:href="#icon-close") section h2.title p.message - div.options - a.button-green(href="", title="{{'COMMON.ACCEPT' | translate}}") + .options + a.button-green( + href="" + title="{{'COMMON.ACCEPT' | translate}}" + ) span(translate="COMMON.ACCEPT") diff --git a/app/partials/includes/modules/lightbox-issue-bulk.jade b/app/partials/includes/modules/lightbox-issue-bulk.jade index 917fb5ee..b418e7d5 100644 --- a/app/partials/includes/modules/lightbox-issue-bulk.jade +++ b/app/partials/includes/modules/lightbox-issue-bulk.jade @@ -1,5 +1,9 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +a.close( + href="" + title="{{'COMMON.CLOSE' | translate}}" +) + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title(translate="COMMON.NEW_BULK") fieldset @@ -10,6 +14,7 @@ form data-required="true" data-linewidth="200" ng-attr-placeholder="{{'COMMON.ONE_ITEM_LINE' | translate}}" + ) button.button-green.submit-button( diff --git a/app/partials/includes/modules/lightbox-sprint-add-edit.jade b/app/partials/includes/modules/lightbox-sprint-add-edit.jade index d44ad710..148084eb 100644 --- a/app/partials/includes/modules/lightbox-sprint-add-edit.jade +++ b/app/partials/includes/modules/lightbox-sprint-add-edit.jade @@ -1,30 +1,57 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +a.close( + href="" + title="{{'COMMON.CLOSE' | translate}}" +) + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title(translate="LIGHTBOX.ADD_EDIT_SPRINT.TITLE") fieldset - input.sprint-name(type="text", name="name", ng-model="sprint.name", - ng-model-options="{ debounce: 200 }", - data-required="true", data-maxlength="500", - placeholder="{{'LIGHTBOX.ADD_EDIT_SPRINT.PLACEHOLDER_SPRINT_NAME' | translate}}") + input.sprint-name( + type="text" + name="name" + ng-model="sprint.name" + ng-model-options="{ debounce: 200 }" + data-required="true" + data-maxlength="500" + placeholder="{{'LIGHTBOX.ADD_EDIT_SPRINT.PLACEHOLDER_SPRINT_NAME' | translate}}" + ) label.last-sprint-name fieldset.dates div - input.date-start(type="text", name="estimated_start", - ng-model="sprint.estimated_start", data-required="true", tg-date-selector, - placeholder="{{'LIGHTBOX.ADD_EDIT_SPRINT.PLACEHOLDER_SPRINT_START' | translate}}") + input.date-start( + type="text" + name="estimated_start" + ng-model="sprint.estimated_start" + data-required="true" + tg-date-selector + placeholder="{{'LIGHTBOX.ADD_EDIT_SPRINT.PLACEHOLDER_SPRINT_START' | translate}}" + ) div - input.date-end(type="text", name="estimated_finish", - ng-model="sprint.estimated_finish", data-required="true", tg-date-selector, - placeholder="{{'LIGHTBOX.ADD_EDIT_SPRINT.PLACEHOLDER_SPRINT_END' | translate}}") + input.date-end( + type="text" + name="estimated_finish" + ng-model="sprint.estimated_finish" + data-required="true" + tg-date-selector + placeholder="{{'LIGHTBOX.ADD_EDIT_SPRINT.PLACEHOLDER_SPRINT_END' | translate}}" + ) - button.button-green.submit-button(type="submit", title="{{'COMMON.CREATE' | translate}}", - translate="COMMON.CREATE") + button.button-green.submit-button( + type="submit" + title="{{'COMMON.CREATE' | translate}}" + translate="COMMON.CREATE" + ) - div(tg-check-permission="delete_milestone") - span.delete-sprint.hidden(translate) - span(translate="LIGHTBOX.ADD_EDIT_SPRINT.ACTION_DELETE_SPRINT") - a.icon.icon-delete(href="", - title="{{'LIGHTBOX.ADD_EDIT_SPRINT.TITLE_ACTION_DELETE_SPRINT' | translate}}") + a.delete-sprint( + tg-check-permission="delete_milestone" + href="" + 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") diff --git a/app/partials/includes/modules/lightbox-task-bulk.jade b/app/partials/includes/modules/lightbox-task-bulk.jade index 5a1d4b1a..7fac9d2e 100644 --- a/app/partials/includes/modules/lightbox-task-bulk.jade +++ b/app/partials/includes/modules/lightbox-task-bulk.jade @@ -1,5 +1,9 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +a.close( + href="" + title="{{'COMMON.CLOSE' | translate}}" +) + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title(translate="COMMON.NEW_BULK") fieldset @@ -10,6 +14,7 @@ form data-required="true" data-linewidth="200" ng-attr-placeholder="{{'COMMON.ONE_ITEM_LINE' | translate}}" + ) button.button-green.submit-button( diff --git a/app/partials/includes/modules/lightbox-task-create-edit.jade b/app/partials/includes/modules/lightbox-task-create-edit.jade index a878e7ad..68fef13c 100644 --- a/app/partials/includes/modules/lightbox-task-create-edit.jade +++ b/app/partials/includes/modules/lightbox-task-create-edit.jade @@ -1,22 +1,44 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +a.close( + href="" + title="{{'COMMON.CLOSE' | translate}}" +) + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title(translate="LIGHTBOX.CREATE_EDIT_TASK.TITLE") fieldset - input(type="text", ng-model="task.subject", ng-attr-placeholder="{{'LIGHTBOX.CREATE_EDIT_TASK.PLACEHOLDER_SUBJECT' | translate}}", ng-model-options="{ debounce: 200 }", - data-required="true", data-maxlength="500") + input( + type="text" + ng-model="task.subject" + ng-attr-placeholder="{{'LIGHTBOX.CREATE_EDIT_TASK.PLACEHOLDER_SUBJECT' | translate}}" + ng-model-options="{ debounce: 200 }" + data-required="true" + data-maxlength="500" + ) fieldset - select(ng-model="task.status", ng-options="s.id as s.name for s in taskStatusList", - placeholder="{{'LIGHTBOX.CREATE_EDIT_TASK.PLACEHOLDER_STATUS' | translate}}") + select( + ng-model="task.status" + ng-options="s.id as s.name for s in taskStatusList" + placeholder="{{'LIGHTBOX.CREATE_EDIT_TASK.PLACEHOLDER_STATUS' | translate}}" + ) fieldset - select(ng-model="task.assigned_to", ng-options="s.id as s.full_name_display for s in users", - placeholder="{{'Assigned to'}}") - option(value="", translate="LIGHTBOX.CREATE_EDIT_TASK.OPTION_UNASSIGNED") + select( + ng-model="task.assigned_to" + ng-options="s.id as s.full_name_display for s in users" + placeholder="{{'Assigned to'}}" + ) + option( + value="" + translate="LIGHTBOX.CREATE_EDIT_TASK.OPTION_UNASSIGNED" + ) fieldset - div.tags-block(tg-lb-tag-line, ng-model="task.tags") + div.tags-block( + tg-lb-tag-line + ng-model="task.tags" + ) fieldset section @@ -27,19 +49,46 @@ form ) fieldset - textarea.description(ng-attr-placeholder="{{'LIGHTBOX.CREATE_EDIT_TASK.PLACEHOLDER_SHORT_DESCRIPTION' | translate}}", ng-model="task.description", ng-model-options="{ debounce: 200 }") + textarea.description( + ng-attr-placeholder="{{'LIGHTBOX.CREATE_EDIT_TASK.PLACEHOLDER_SHORT_DESCRIPTION' | translate}}" + ng-model="task.description" + ng-model-options="{ debounce: 200 }" + ) div.settings fieldset.iocaine-flag(title="{{'COMMON.IOCAINE_TEXT' | translate}}") - input(type="checkbox", ng-model="task.is_iocaine", name="iocaine-task", id="iocaine-task", ng-value="true") + input( + type="checkbox" + ng-model="task.is_iocaine" + name="iocaine-task" + id="iocaine-task" + ng-value="true" + ) label.iocaine.trans-button(for="iocaine-task") - span.icon.icon-iocaine(for="iocaine-task icon-iocaine") + svg.icon.icon-iocaine(for="iocaine-task icon-iocaine") + use(xlink:href="#icon-iocaine") span Iocaine fieldset.blocking-flag - input(type="checkbox", ng-model="task.is_blocked", name="blocked-task", id="blocked-task", ng-value="true") - label.blocked.trans-button(for="blocked-task", translate="COMMON.BLOCKED") + input( + type="checkbox" + ng-model="task.is_blocked" + name="blocked-task" + id="blocked-task" + ng-value="true" + ) + label.blocked.trans-button( + for="blocked-task" + translate="COMMON.BLOCKED" + ) - tg-blocking-message-input(watch="task.is_blocked", ng-model="task.blocked_note") + tg-blocking-message-input( + watch="task.is_blocked" + ng-model="task.blocked_note" + ) - button.button-green.submit-button(type="submit", title="{{'COMMON.CREATE' | translate}}", translate="COMMON.CREATE") + button.button-green.submit-button( + type="submit" + title="{{'COMMON.CREATE' | translate}}" + translate="COMMON.CREATE" + ) diff --git a/app/partials/includes/modules/lightbox-us-bulk.jade b/app/partials/includes/modules/lightbox-us-bulk.jade index 4da92990..b522a0ed 100644 --- a/app/partials/includes/modules/lightbox-us-bulk.jade +++ b/app/partials/includes/modules/lightbox-us-bulk.jade @@ -1,5 +1,9 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +a.close( + href="" + title="{{'COMMON.CLOSE' | translate}}" +) + svg.icon.icon-close + use(xlink:href="#icon-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 bb3d5045..c03c8010 100644 --- a/app/partials/includes/modules/lightbox-us-create-edit.jade +++ b/app/partials/includes/modules/lightbox-us-create-edit.jade @@ -1,23 +1,45 @@ -a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete +a.close( + href="" + title="{{'COMMON.CLOSE' | translate}}" +) + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title(translate="LIGHTBOX.CREATE_EDIT_US.TITLE") fieldset - input(type="text", name="subject", ng-model-options="{ debounce: 200 }", ng-model="us.subject", placeholder="{{'COMMON.FIELDS.SUBJECT' | translate}}", - data-required="true", data-maxlength="500") + input( + type="text" + name="subject" + ng-model-options="{ debounce: 200 }" + ng-model="us.subject" + placeholder="{{'COMMON.FIELDS.SUBJECT' | translate}}" + data-required="true" + data-maxlength="500" + ) fieldset.ticket-estimation tg-lb-us-estimation(ng-model="us") fieldset - select(name="status", ng-model="us.status", ng-options="s.id as s.name for s in usStatusList") + select( + name="status" + ng-model="us.status" + ng-options="s.id as s.name for s in usStatusList" + ) fieldset - div.tags-block(tg-lb-tag-line, ng-model="us.tags") + div.tags-block( + tg-lb-tag-line + ng-model="us.tags" + ) fieldset - textarea.description(name="description", ng-model="us.description", ng-model-options="{ debounce: 200 }", - ng-attr-placeholder="{{'LIGHTBOX.CREATE_EDIT_US.PLACEHOLDER_DESCRIPTION' | translate}}") + textarea.description( + name="description" + ng-model="us.description" + ng-model-options="{ debounce: 200 }" + ng-attr-placeholder="{{'LIGHTBOX.CREATE_EDIT_US.PLACEHOLDER_DESCRIPTION' | translate}}" + ) fieldset section tg-attachments-simple( @@ -28,19 +50,51 @@ form div.settings fieldset.team-requirement - input(type="checkbox", name="team_requirement", ng-model="us.team_requirement", - id="team-requirement", ng-value="true") - label.requirement.trans-button(for="team-requirement", translate="US.FIELDS.TEAM_REQUIREMENT") + input( + type="checkbox" + name="team_requirement" + ng-model="us.team_requirement" + id="team-requirement" + ng-value="true" + ) + label.requirement.trans-button( + for="team-requirement" + translate="US.FIELDS.TEAM_REQUIREMENT" + ) fieldset.client-requirement - input(type="checkbox", name="client_requirement", ng-model="us.client_requirement", - id="client-requirement", ng-value="true") - label.requirement.trans-button(for="client-requirement", translate="US.FIELDS.CLIENT_REQUIREMENT") + input( + type="checkbox" + name="client_requirement" + ng-model="us.client_requirement", + id="client-requirement" + ng-value="true" + ) + label.requirement.trans-button( + for="client-requirement" + translate="US.FIELDS.CLIENT_REQUIREMENT" + ) fieldset.blocking-flag - input(type="checkbox", name="is_blocked", ng-model="us.is_blocked", id="blocked-us" ng-value="true") - label.blocked.trans-button(for="blocked-us", translate="COMMON.BLOCKED") + input( + type="checkbox" + name="is_blocked" + ng-model="us.is_blocked" + id="blocked-us" + ng-value="true" + ) + label.blocked.trans-button( + for="blocked-us" + translate="COMMON.BLOCKED" + ) - tg-blocking-message-input(watch="us.is_blocked", ng-model="us.blocked_note") + tg-blocking-message-input( + watch="us.is_blocked" + ng-model="us.blocked_note" + ) - button.button-green.submit-button(type="submit", title="{{'COMMON.CREATE' | translate}}", translate="COMMON.CREATE") + button.button-green.submit-button( + type="submit" + title="{{'COMMON.CREATE' | translate}}" + translate="COMMON.CREATE" + ) diff --git a/app/partials/includes/modules/search-filter.jade b/app/partials/includes/modules/search-filter.jade index 5c8c93ae..3304a5cc 100644 --- a/app/partials/includes/modules/search-filter.jade +++ b/app/partials/includes/modules/search-filter.jade @@ -4,7 +4,8 @@ ul.search-filter href="#" title="{{ 'SEARCH.FILTER_USER_STORIES' | translate }}" ) - span.icon.icon-bulk + svg.icon.icon-bulk + use(xlink:href="#icon-bulk") span.num span.name(translate="SEARCH.FILTER_USER_STORIES") @@ -13,7 +14,8 @@ ul.search-filter href="#" title="{{ 'SEARCH.FILTER_ISSUES' | translate }}" ) - span.icon.icon-issues + svg.icon.icon-issues + use(xlink:href="#icon-issues") span.num span.name(translate="SEARCH.FILTER_ISSUES") @@ -22,7 +24,8 @@ ul.search-filter href="#" title="{{ 'SEARCH.FILTER_TASKS' | translate }}" ) - span.icon.icon-bulk + svg.icon.icon-bulk + use(xlink:href="#icon-bulk") span.num span.name(translate="SEARCH.FILTER_TASKS") @@ -31,6 +34,7 @@ ul.search-filter href="#" title="{{ 'SEARCH.FILTER_WIKI' | translate }}" ) - span.icon.icon-wiki + svg.icon.icon-wiki + use(xlink:href="#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 e13718a3..e16d70ee 100644 --- a/app/partials/includes/modules/search-in.jade +++ b/app/partials/includes/modules/search-in.jade @@ -1,6 +1,11 @@ section.search-in header fieldset - input(type="text", placeholder="{{'SEARCH.PLACEHOLDER_SEARCH' | translate}}", ng-model="searchTerm") + input( + type="text" + placeholder="{{'SEARCH.PLACEHOLDER_SEARCH' | translate}}" + ng-model="searchTerm" + ) .icon-search-wrapper(tg-loading="loading") - a.icon.icon-search(href="", title="{{'SEARCH.TITLE_ACTION_SEARCH' | translate}}") + svg.icon.icon-search(title="{{'SEARCH.TITLE_ACTION_SEARCH' | translate}}") + use(xlink:href="#icon-search") diff --git a/app/partials/includes/modules/sprints.jade b/app/partials/includes/modules/sprints.jade index 2e1b163f..82066a18 100644 --- a/app/partials/includes/modules/sprints.jade +++ b/app/partials/includes/modules/sprints.jade @@ -13,7 +13,8 @@ section.sprints ng-if="totalMilestones" tg-check-permission="add_milestone" ) - include ../../../svg/add.svg + svg.icon.icon-add + use(xlink:href="#icon-add") div.sprints-empty(ng-if="totalMilestones === 0") img( @@ -36,7 +37,8 @@ section.sprints a.filter-closed-sprints(href="", tg-backlog-toggle-closed-sprints-visualization, ng-if="totalClosedMilestones") - span.icon.icon-archive + svg.icon.icon-archive + use(xlink:href="#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 5559f648..a87acc12 100644 --- a/app/partials/includes/modules/taskboard-table.jade +++ b/app/partials/includes/modules/taskboard-table.jade @@ -4,15 +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") - a.icon.icon-vfold.hfold(href="", ng-click='foldStatus(s)', title="{{'TASKBOARD.TABLE.TITLE_ACTION_FOLD' | translate}}", ng-class='{hidden:statusesFolded[s.id]}') - a.icon.icon-vunfold.hunfold(href="", title="{{'TASKBOARD.TABLE.TITLE_ACTION_UNFOLD' | translate}}", ng-click='foldStatus(s)', ng-class='{hidden:!statusesFolded[s.id]}') + svg.icon.icon-fold-row.hfold( + 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( + 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") - a.icon.icon-vfold.vfold(href="", title="{{'TASKBOARD.TABLE.TITLE_ACTION_FOLD_ROW' | translate}}", ng-click='foldUs(us)', ng-class='{hidden:usFolded[us.id]}') - a.icon.icon-vunfold.vunfold(href="", title="{{'TASKBOARD.TABLE.TITLE_ACTION_UNFOLD_ROW' | translate}}", ng-click='foldUs(us)', ng-class='{hidden:!usFolded[us.id]}') + + svg.icon.icon-fold-row.vfold( + title="{{'TASKBOARD.TABLE.TITLE_ACTION_FOLD_ROW' | translate}}" + ng-click='foldUs(us)' + 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}}" + ng-click='foldUs(us)' + 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", @@ -41,8 +65,22 @@ div.taskboard-table(tg-taskboard-squish-column) div.task-row(ng-init="us = null", ng-class="{'row-fold':usFolded[null]}") div.taskboard-userstory-box.task-column - a.icon.icon-vfold.vfold(href="", title="{{'TASKBOARD.TABLE.TITLE_ACTION_FOLD_ROW' | translate}}", ng-click='foldUs()', ng-class="{hidden:usFolded[null]}") - a.icon.icon-vunfold.vunfold(href="", title="{{'TASKBOARD.TABLE.TITLE_ACTION_UNFOLD_ROW' | translate}}", ng-click='foldUs()', ng-class="{hidden:!usFolded[null]}") + a.vfold( + href="" + title="{{'TASKBOARD.TABLE.TITLE_ACTION_FOLD_ROW' | translate}}" + ng-click='foldUs()' + ng-class="{hidden:usFolded[null]}" + ) + svg.icon.icon-fold-row + use(xlink:href="#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") 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 d2d68cb9..72b104a0 100644 --- a/app/partials/includes/modules/team/team-filters.jade +++ b/app/partials/includes/modules/team/team-filters.jade @@ -7,6 +7,7 @@ section.team-filters fieldset input(type="text", placeholder="{{'TEAM.PLACEHOLDER_INPUT_SEARCH' | translate}}", ng-model="filtersQ") .icon-search-wrapper - a.icon.icon-search(href="", title="{{'COMMON.FILTERS.TITLE_ACTION_FILTER_BUTTON' | translate}}") + svg.icon.icon-search(title="{{'COMMON.FILTERS.TITLE_ACTION_FILTER_BUTTON' | translate}}") + use(xlink:href="#icon-search") - nav(tg-team-filters) \ No newline at end of file + nav(tg-team-filters) diff --git a/app/partials/includes/modules/team/team-table.jade b/app/partials/includes/modules/team/team-table.jade index f2a2e3a2..27dc7e42 100644 --- a/app/partials/includes/modules/team/team-table.jade +++ b/app/partials/includes/modules/team/team-table.jade @@ -27,7 +27,16 @@ section.table-team.basic-table div.popover.attribute-explanation span(translate="TEAM.EXPLANATION_COLUMN_TOTAL_POWER") - div.hero(tg-team-current-user, stats="stats", currentuser="currentUser", projectid="projectId", issuesEnabled="issuesEnabled", tasksenabled="tasksEnabled", wikienabled="wikiEnabled", ng-if="::currentUser") + div.hero( + tg-team-current-user + stats="stats" + currentuser="currentUser" + projectid="projectId" + issuesEnabled="issuesEnabled" + tasksenabled="tasksEnabled" + wikienabled="wikiEnabled" + ng-if="::currentUser" + ) h2(ng-show="memberships.length") span(translate="TEAM.SECTION_TITLE_TEAM") diff --git a/app/partials/issue/iocaine-button.jade b/app/partials/issue/iocaine-button.jade index fecc54d9..25406e92 100644 --- a/app/partials/issue/iocaine-button.jade +++ b/app/partials/issue/iocaine-button.jade @@ -3,7 +3,8 @@ fieldset(title="{{ 'TASK.TITLE_ACTION_IOCAINE' | translate }}") for="is-iocaine" class!="<% if(isEditable){ %>is-editable<% }; %> <% if(isIocaine){ %>active<% }; %>" ) - include ../../svg/iocaine.svg + svg.icon.icon-iocaine + use(xlink:href="#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 62055e0b..0e82506b 100644 --- a/app/partials/issue/issue-priority-button.jade +++ b/app/partials/issue/issue-priority-button.jade @@ -2,7 +2,8 @@ div(class!="priority-data <% if(editable){ %>clickable<% }%>") span(class="level", style!="background-color:<%- priority.color %>") span(class="priority-priority") <%- priority.name %> <% if(editable){ %> - span(class="icon icon-arrow-bottom") + svg.icon.icon-arrow-down + use(xlink:href="#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 6ffe35dd..377e7346 100644 --- a/app/partials/issue/issue-severity-button.jade +++ b/app/partials/issue/issue-severity-button.jade @@ -2,7 +2,8 @@ div(class!="severity-data <% if(editable){ %>clickable<% }%>") span(class="level", style!="background-color:<%- severity.color %>") span(class="severity-severity") <%- severity.name %> <% if(editable){ %> - span(class="icon icon-arrow-bottom") + svg.icon.icon-arrow-down + use(xlink:href="#icon-arrow-down") <% }%> span(class="level-name", translate="COMMON.FIELDS.SEVERITY") diff --git a/app/partials/issue/issue-type-button.jade b/app/partials/issue/issue-type-button.jade index 675e7d92..9a050bb2 100644 --- a/app/partials/issue/issue-type-button.jade +++ b/app/partials/issue/issue-type-button.jade @@ -2,7 +2,8 @@ div(class!="type-data <% if(editable){ %>clickable<% }%>") span(class="level", style!="background-color:<%- type.color %>") span(class="type-type") <%- type.name %> <% if(editable){ %> - span(class="icon icon-arrow-bottom") + svg.icon.icon-arrow-down + use(xlink:href="#icon-arrow-down") <% }%> span(class="level-name", translate="COMMON.FIELDS.TYPE") diff --git a/app/partials/issue/issues-detail.jade b/app/partials/issue/issues-detail.jade index da3a33e5..30b2d69d 100644 --- a/app/partials/issue/issues-detail.jade +++ b/app/partials/issue/issues-detail.jade @@ -46,17 +46,19 @@ div.wrapper( span.block-description-title(translate="COMMON.BLOCKED") span.block-description(ng-bind="issue.blocked_note || ('ISSUES.BLOCKED' | translate)") - div.issue-nav - a.icon.icon-arrow-left( + .issue-nav + svg.icon.icon-arrow-left( ng-show="previousUrl" tg-bo-href="previousUrl" title="{{'ISSUES.TITLE_PREVIOUS_ISSUE' | translate}}" ) - a.icon.icon-arrow-right( + use(xlink:href="#icon-arrow-left") + svg.icon.icon-arrow-right( ng-show="nextUrl" tg-bo-href="nextUrl" title="{{'ISSUES.TITLE_NEXT_ISSUE' | translate}}" ) + use(xlink:href="#icon-arrow-right") .subheader div.tags-block(tg-tag-line, ng-model="issue", required-perm="modify_issue") tg-created-by-display.ticket-created-by(ng-model="issue") diff --git a/app/partials/issue/issues-filters-selected.jade b/app/partials/issue/issues-filters-selected.jade index 90daaacc..187ba9f6 100644 --- a/app/partials/issue/issues-filters-selected.jade +++ b/app/partials/issue/issues-filters-selected.jade @@ -1,8 +1,9 @@ <% _.each(filters, function(f) { %> -a(class="single-filter selected", - data-type!="<%- f.type %>", - data-id!="<%- f.id %>") - span(class="name", style!="<%- f.style %>") - | <%- f.name %> - span(class="icon icon-delete") -<% }) %> \ No newline at end of file +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") +<% }) %> diff --git a/app/partials/issue/issues-filters.jade b/app/partials/issue/issues-filters.jade index 8738bc6a..3dfa76ef 100644 --- a/app/partials/issue/issues-filters.jade +++ b/app/partials/issue/issues-filters.jade @@ -7,7 +7,8 @@ a(class="single-filter", data-type!="<%- f.type %>", data-id!="<%- f.id %>") span(class="number") <%- f.count %> <% } %> <% if (f.type == "myFilters"){ %> - span(class="icon icon-delete") + svg.icon.icon-close.remove-filter + use(xlink:href="#icon-close") <% } %> <% } %> <% }) %> diff --git a/app/partials/issue/issues-status-button.jade b/app/partials/issue/issues-status-button.jade index 957831a8..39f67881 100644 --- a/app/partials/issue/issues-status-button.jade +++ b/app/partials/issue/issues-status-button.jade @@ -5,7 +5,8 @@ span.detail-status-inner.js-edit-status( ) span <%- status.name %> <% if(editable){ %> - span.icon.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#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 d9a4ad31..2a241ca1 100644 --- a/app/partials/issue/promote-issue-to-us-button.jade +++ b/app/partials/issue/promote-issue-to-us-button.jade @@ -1,5 +1,6 @@ -a.promote-button.editable( +a.promote-button.is-editable( tg-check-permission="add_us" title="{{ 'ISSUES.ACTION_PROMOTE_TO_US' | translate }}" ) - include ../../svg/promote.svg + svg.icon.icon-promote + use(xlink:href="#icon-promote") diff --git a/app/partials/kanban/kanban-task.jade b/app/partials/kanban/kanban-task.jade index a63842bc..a863a07b 100644 --- a/app/partials/kanban/kanban-task.jade +++ b/app/partials/kanban/kanban-task.jade @@ -24,4 +24,9 @@ div.kanban-task-inner(ng-class="{'task-archived': us.isArchived}") span.task-name(ng-bind="us.subject") p(translate="KANBAN.UNDO_ARCHIVED") - a.icon.icon-edit(tg-check-permission="modify_us", href="", title="{{'COMMON.EDIT' | translate}}", ng-hide="us.isArchived") + svg.icon.icon-edit( + tg-check-permission="modify_us" + title="{{'COMMON.EDIT' | translate}}" + ng-hide="us.isArchived" + ) + use(xlink:href="#icon-edit") diff --git a/app/partials/project/wizard-create-project.jade b/app/partials/project/wizard-create-project.jade index 1d52dc48..f32cc8c0 100644 --- a/app/partials/project/wizard-create-project.jade +++ b/app/partials/project/wizard-create-project.jade @@ -6,16 +6,26 @@ form div.template-wrapper div.template-inner fieldset(ng-repeat="template in templates") - input(type="radio", name="template", id="template-{{ template.id }}", - ng-value='template.id', ng-model="data.creation_template", - data-required="true") + input( + type="radio" + name="template" + id="template-{{ template.id }}" + ng-value='template.id' + ng-model="data.creation_template" + data-required="true" + ) label.backlog(for="template-{{ template.id }}") - span.icon( ng-class="'icon-'+template.slug") + svg.icon(ng-class="'icon-'+template.slug") + use(xlink:href="{{'#icon-' + template.slug }}") h2 {{ template.name }} p {{ template.description }} fieldset - a.button-next.button-green(href="#", title="{{'PAGINATION.NEXT' | translate}}", translate="PAGINATION.NEXT") + a.button-next.button-green( + href="#" + title="{{'PAGINATION.NEXT' | translate}}" + translate="PAGINATION.NEXT" + ) section.wizard-step.create-step2.active(data-step="step2") div.title @@ -24,15 +34,35 @@ form div.template-wrapper div.template-inner fieldset - input(type="text", name="name", ng-model="data.name", data-required="true", placeholder="{{'COMMON.FIELDS.NAME' | translate}}", maxlength="45") + input( + type="text" + name="name" + ng-model="data.name" + data-required="true" + placeholder="{{'COMMON.FIELDS.NAME' | translate}}" + maxlength="45" + ) fieldset - textarea(name="description", ng-model="data.description", data-required="true", ng-attr-placeholder="{{'COMMON.FIELDS.DESCRIPTION' | translate}}") + textarea( + name="description" + ng-model="data.description" + data-required="true" + ng-attr-placeholder="{{'COMMON.FIELDS.DESCRIPTION' | translate}}" + ) fieldset.wizard-action div - a.button-prev.button.button-gray(href="#", title="{{'PAGINATION.PREVIOUS' | translate}}", translate="PAGINATION.PREVIOUS") - button.button-green.submit-button(type="submit", title="{{'COMMON.CREATE' | translate}}", translate="COMMON.CREATE") + a.button-prev.button.button-gray( + href="#" + title="{{'PAGINATION.PREVIOUS' | translate}}" + translate="PAGINATION.PREVIOUS" + ) + button.button-green.submit-button( + type="submit" + title="{{'COMMON.CREATE' | translate}}" + translate="COMMON.CREATE" + ) - button(type="submit", class="hidden") + button.hidden(type="submit") div.progress-bar div.progress-state @@ -43,4 +73,5 @@ div.progress-bar div.bar a.close(href="#" title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete + svg.icon.icon-delete + use(xlink:href="#icon-delete") diff --git a/app/partials/search/lightbox-search.jade b/app/partials/search/lightbox-search.jade index 189c4890..328deb21 100644 --- a/app/partials/search/lightbox-search.jade +++ b/app/partials/search/lightbox-search.jade @@ -1,8 +1,9 @@ a.close(href="", title="{{'COMMON.CLOSE' | translate}}") - span.icon.icon-delete + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title(translate="LIGHTBOX.SEARCH.TITLE") fieldset input(type="text", name="text", id="search-text", placeholder="{{'LIGHTBOX.SEARCH.PLACEHOLDER_SEARCH' | translate}}", data-required="true") fieldset - button.button-green.submit-button(type="submit", title="{{' LIGHTBOX.SEARCH.TITLE' | translate}}", translate="LIGHTBOX.SEARCH.TITLE") \ No newline at end of file + button.button-green.submit-button(type="submit", title="{{' LIGHTBOX.SEARCH.TITLE' | translate}}", translate="LIGHTBOX.SEARCH.TITLE") diff --git a/app/partials/task/related-task-create-form.jade b/app/partials/task/related-task-create-form.jade index 35f0f4f9..997b8a60 100644 --- a/app/partials/task/related-task-create-form.jade +++ b/app/partials/task/related-task-create-form.jade @@ -2,15 +2,19 @@ .task-name input(type='text', placeholder="{{'TASK.PLACEHOLDER_SUBJECT' | translate}}") .task-settings - a.icon.icon-floppy(href='', title="{{'COMMON.SAVE' | translate}}") - a.icon.icon-delete.cancel-edit(href='', title="{{'COMMON.CANCEL' | translate}}") + 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") .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 - span.icon.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#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 - span.icon.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#icon-arrow-down") diff --git a/app/partials/task/related-task-row-edit.jade b/app/partials/task/related-task-row-edit.jade index 6023b2ae..93f32d63 100644 --- a/app/partials/task/related-task-row-edit.jade +++ b/app/partials/task/related-task-row-edit.jade @@ -2,15 +2,19 @@ .task-name input(type='text', value!='<%- task.subject %>', placeholder="{{'TASK.PLACEHOLDER_SUBJECT' | translate}}") .task-settings - a.icon.icon-floppy(href='', title="{{'COMMON.SAVE' | translate}}") - a.icon.icon-delete.cancel-edit(href='', title="{{'COMMON.CANCEL' | translate}}") + 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") .status(tg-related-task-status='task', ng-model='task') a.task-status(href='', title="{{'TASK.TITLE_SELECT_STATUS' | translate}}") span.task-status-bind - span.icon.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#icon-arrow-down") .assigned-to(tg-related-task-assigned-to-inline-edition='task') .task-assignedto(title="{{'COMMON.FIELDS.ASSIGNED_TO' | translate}}") figure.avatar - span.icon.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#icon-arrow-down") diff --git a/app/partials/task/related-task-row.jade b/app/partials/task/related-task-row.jade index 0a51af0d..7b99c113 100644 --- a/app/partials/task/related-task-row.jade +++ b/app/partials/task/related-task-row.jade @@ -1,23 +1,25 @@ .tasks .task-name - .icon.icon-iocaine 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) { %> - a.icon.icon-edit( + svg.icon.icon-edit.edit-task( href="" title="{{'COMMON.EDIT' | translate}}" ) + use(xlink:href="#icon-edit") <% } %> <% if(perms.delete_task) { %> - a.icon.icon-delete.delete-task( - href="" + svg.icon.icon-trash.delete-task( title="{{'COMMON.DELETE' | translate}}" ) + use(xlink:href="#icon-trash") <% } %> .status( @@ -30,7 +32,8 @@ ) span.task-status-bind <% if(perms.modify_task) { %> - span.icon.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#icon-arrow-down") <% } %> .assigned-to( @@ -42,5 +45,6 @@ ) figure.avatar <% if(perms.modify_task) { %> - span.icon.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#icon-arrow-down") <% } %> diff --git a/app/partials/task/task-detail.jade b/app/partials/task/task-detail.jade index f9570518..962f1bfe 100644 --- a/app/partials/task/task-detail.jade +++ b/app/partials/task/task-detail.jade @@ -62,16 +62,20 @@ div.wrapper( ) div.issue-nav - a.icon.icon-arrow-left( + a( ng-show="previousUrl" tg-bo-href="previousUrl" title="{{'TASK.PREVIOUS' | translate}}" ) - a.icon.icon-arrow-right( + svg.icon.icon-arrow-left + use(xlink:href='#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') .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 b9d52ae0..04fa75c4 100644 --- a/app/partials/team/leave-project.jade +++ b/app/partials/team/leave-project.jade @@ -1,3 +1,7 @@ -a.leave-project(ng-click="leave()", href="") - span.icon.icon-delete - | {{ 'TEAM.ACTION_LEAVE_PROJECT' | translate }} +a.leave-project( + ng-click="leave()" + href="" +) + svg.icon.icon-close + use(xlink:href="#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 d23c8644..67ccfcd0 100644 --- a/app/partials/team/team-filter.jade +++ b/app/partials/team/team-filter.jade @@ -1,10 +1,20 @@ ul li - a(ng-class="{active: !filtersRole.id}", ng-click="ctrl.setRole()", href="") + a( + ng-class="{active: !filtersRole.id}" + ng-click="ctrl.setRole()" + href="" + ) span.title(translate="TEAM.SECTION_FILTER_ALL") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") li(ng-repeat="role in roles") - a(ng-class="{active: role.id == filtersRole.id}", ng-click="ctrl.setRole(role)", href="") + a( + ng-class="{active: role.id == filtersRole.id}" + ng-click="ctrl.setRole(role)" + href="" + ) span.title(tg-bo-bind="role.name") - span.icon.icon-arrow-right + svg.icon.icon-arrow-right + use(xlink:href="#icon-arrow-right") diff --git a/app/partials/team/team-member-current-user.jade b/app/partials/team/team-member-current-user.jade index b5d81ce1..f8fa273e 100644 --- a/app/partials/team/team-member-current-user.jade +++ b/app/partials/team/team-member-current-user.jade @@ -1,17 +1,20 @@ .row .username - figure.avatar + .avatar img(tg-bo-src="currentUser.photo", tg-bo-alt="currentUser.full_name_display") - figcaption + .avatar-data span.name(tg-bo-bind="currentUser.full_name_display") span.position(tg-bo-bind="currentUser.role_name") div(tg-leave-project="", projectid="{{projectId}}") - .member-stats(tg-team-member-stats, stats="stats", - user="currentUser.user", - issuesEnabled="issuesEnabled", - tasksenabled="tasksEnabled", - wikienabled="wikiEnabled") + .member-stats( + tg-team-member-stats + stats="stats" + ser="currentUser.user" + issuesEnabled="issuesEnabled" + tasksenabled="tasksEnabled" + wikienabled="wikiEnabled" + ) diff --git a/app/partials/team/team-member-stats.jade b/app/partials/team/team-member-stats.jade index c271ffe0..161683b0 100644 --- a/app/partials/team/team-member-stats.jade +++ b/app/partials/team/team-member-stats.jade @@ -1,22 +1,37 @@ .attribute(ng-if="issuesEnabled") - span.icon.icon-briefcase(ng-style="{'opacity': stats.closed_bugs[userId]}", - ng-class="{'top': stats.closed_bugs[userId] == 1}") + 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") - span.icon.icon-iocaine(ng-style="{'opacity': stats.iocaine_tasks[userId]}", - ng-class="{'top': stats.iocaine_tasks[userId] == 1}") + 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") - span.icon.icon-writer(ng-style="{'opacity': stats.wiki_changes[userId]}", - ng-class="{'top': stats.wiki_changes[userId] == 1}") + 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") - span.icon.icon-bug(ng-style="{'opacity': stats.created_bugs[userId]}", - ng-class="{'top': stats.created_bugs[userId] == 1}") + 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") - span.icon.icon-tasks(ng-style="{'opacity': stats.closed_tasks[userId]}", - ng-class="{'top': stats.closed_tasks[userId] == 1}") + 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 55df4055..342d0bf6 100644 --- a/app/partials/team/team-members.jade +++ b/app/partials/team/team-members.jade @@ -1,9 +1,9 @@ .row.member(ng-repeat="user in memberships | membersFilter:filtersQ:filtersRole") .username - figure.avatar + .avatar img(tg-bo-src="user.photo", tg-bo-alt="user.full_name_display") - figcaption + .avatar-data a.name(tg-nav="user-profile:username=user.username", title="{{::user.full_name_display}}") {{::user.full_name_display}} span.position {{::user.role_name}} diff --git a/app/partials/us/us-client-requirement-button.jade b/app/partials/us/us-client-requirement-button.jade index b8d7a506..d9cb54a1 100644 --- a/app/partials/us/us-client-requirement-button.jade +++ b/app/partials/us/us-client-requirement-button.jade @@ -3,7 +3,8 @@ label.button-gray.client-requirement( class!="<% if(canEdit){ %>is-editable<% }; %> <% if(isRequired){ %>active<% }; %>" title="{{ 'COMMON.CLIENT_REQUIREMENT' | translate }}" ) - include ../../svg/client-requirement.svg + svg.icon.icon-client-requirement + use(xlink:href="#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 65b6f893..58b89303 100644 --- a/app/partials/us/us-detail.jade +++ b/app/partials/us/us-detail.jade @@ -55,16 +55,20 @@ div.wrapper( span.block-description-title(translate="COMMON.BLOCKED") span.block-description(ng-bind="us.blocked_note || ('US.BLOCKED' | translate)") div.issue-nav - a.icon.icon-arrow-left( + a( ng-show="previousUrl" tg-bo-href="previousUrl" title="{{'US.PREVIOUS' | translate}}" ) - a.icon.icon-arrow-right( + svg.icon.icon-arrow-left + use(xlink:href="#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") .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 64f9caaf..5066a9ab 100644 --- a/app/partials/us/us-status-button.jade +++ b/app/partials/us/us-status-button.jade @@ -4,7 +4,8 @@ span.detail-status-inner.js-edit-status( ) span <%- status.name %> <% if(editable){ %> - span.icon.icon-arrow-bottom + svg.icon.icon-arrow-down + use(xlink:href="#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 e34338b1..9a4d186d 100644 --- a/app/partials/us/us-team-requirement-button.jade +++ b/app/partials/us/us-team-requirement-button.jade @@ -3,7 +3,8 @@ label.button-gray.team-requirement( class!=" <% if(canEdit){ %>is-editable<% }; %> <% if(isRequired){ %>active<% }; %>" title="{{ 'COMMON.TEAM_REQUIREMENT' | translate }}" ) - include ../../svg/team-requirement.svg + svg.icon.icon-team-requirement + use(xlink:href="#icon-team-requirement") input( type="checkbox" diff --git a/app/partials/user/lightbox/lightbox-delete-account.jade b/app/partials/user/lightbox/lightbox-delete-account.jade index 5befed76..f7915fdd 100644 --- a/app/partials/user/lightbox/lightbox-delete-account.jade +++ b/app/partials/user/lightbox/lightbox-delete-account.jade @@ -1,5 +1,6 @@ a.close(href="", title="{{'close' | translate}}") - span.icon.icon-delete + svg.icon.icon-close + use(xlink:href="#icon-close") form h2.title(translate="LIGHTBOX.DELETE_ACCOUNT.SECTION_NAME") p diff --git a/app/partials/wiki/editable-wiki-content.jade b/app/partials/wiki/editable-wiki-content.jade index 2faf3b51..e5729ed0 100644 --- a/app/partials/wiki/editable-wiki-content.jade +++ b/app/partials/wiki/editable-wiki-content.jade @@ -2,7 +2,11 @@ include ../common/components/wysiwyg.jade .view-wiki-content section.wysiwyg(tg-bind-html='wiki.html') - span.edit.icon.icon-edit(title="{{'COMMON.EDIT' | translate}}", ng-if="wiki") + svg.edit.icon.icon-edit( + title="{{'COMMON.EDIT' | translate}}" + ng-if="wiki" + ) + use(xlink:href="#icon-edit") .edit-wiki-content(style='display: none;') textarea(ng-attr-placeholder="{{'WIKI.PLACEHOLDER_PAGE' | translate}}", @@ -10,5 +14,7 @@ include ../common/components/wysiwyg.jade +wysihelp span.action-container - a.save.icon.icon-floppy(href='', title="{{'COMMON.SAVE' | translate}}") - a.cancel.icon.icon-delete(href='', title="{{'COMMON.CANCEL' | translate}}") + 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") diff --git a/app/partials/wiki/wiki-nav.jade b/app/partials/wiki/wiki-nav.jade index 8e2c97bc..4d3fa0da 100644 --- a/app/partials/wiki/wiki-nav.jade +++ b/app/partials/wiki/wiki-nav.jade @@ -8,7 +8,8 @@ nav a(title!="<%- link.title %>") span.link-title <%- link.title %> <% if (deleteWikiLinkPermission) { %> - span.icon.icon-delete + svg.icon.icon-trash + use(xlink:href="#icon-trash") <% } %> input(type="text" placeholder="{{'COMMON.FIELDS.NAME' | translate}}" class="hidden" value!="<%- link.title %>") <% }) %> diff --git a/app/partials/wiki/wiki.jade b/app/partials/wiki/wiki.jade index 40f525d4..f7f04cb0 100644 --- a/app/partials/wiki/wiki.jade +++ b/app/partials/wiki/wiki.jade @@ -24,5 +24,6 @@ div.wrapper(ng-controller="WikiDetailController as ctrl", ) a.remove(href="", ng-click="ctrl.delete()", ng-if="wiki.id", title="{{'WIKI.REMOVE' | translate}}", tg-check-permission="delete_wiki_page") - span.icon.icon-delete + svg.icon.icon-trash + use(xlink:href="#icon-trash") span(translate="WIKI.REMOVE") diff --git a/app/styles/components/buttons.scss b/app/styles/components/buttons.scss index e4f13781..7c57383b 100755 --- a/app/styles/components/buttons.scss +++ b/app/styles/components/buttons.scss @@ -30,7 +30,6 @@ } .icon { color: $white; - margin-right: .3rem; } } @@ -43,12 +42,8 @@ color: $blackish; transition: color .2s linear; } - &:hover, - &.active { - span, - .icon { - color: $primary; - } + .icon { + margin-right: .5rem; } &:visited { color: $blackish; @@ -118,7 +113,10 @@ a.button-gray { background: $primary; padding: .35rem .5rem; .icon { + fill: currentColor; margin-right: 0; + position: relative; + top: 1px; } &:hover { background: $primary-light; diff --git a/app/styles/components/editor-help.scss b/app/styles/components/editor-help.scss index 64880b9a..5e77956a 100644 --- a/app/styles/components/editor-help.scss +++ b/app/styles/components/editor-help.scss @@ -13,17 +13,20 @@ .help-markdown, .help-button { - @extend %xsmall; &:hover { span { transition: color .2s linear; } .icon { - color: $primary-light; - transition: color .2s linear; + fill: $primary-light; + transition: fill .2s linear; } } + span { + vertical-align: text-top; + } .icon { + fill: $gray-light; margin-right: .2rem; } } diff --git a/app/styles/components/estimation.scss b/app/styles/components/estimation.scss index 39a0f6e3..f9d47a2b 100644 --- a/app/styles/components/estimation.scss +++ b/app/styles/components/estimation.scss @@ -13,7 +13,6 @@ min-height: 2rem; padding: .5rem 1rem; position: relative; - transition: color .3s linear; &.clickable { &:hover, &.active { @@ -22,7 +21,8 @@ .points, .role, .icon-arrow-bottom { - color: $whitish; + color: currentColor; + fill: currentColor; } } } @@ -34,13 +34,15 @@ .role, .icon-arrow-bottom { @extend %text; - color: $whitish; + color: currentColor; + fill: currentColor; } } - .icon-arrow-bottom { - color: $gray-light; + .icon-arrow-down { + fill: currentColor; + height: .6rem; margin-left: .25rem; - vertical-align: middle; + width: .6rem; } .points { @extend %light; diff --git a/app/styles/components/filter.scss b/app/styles/components/filter.scss index 5aa0a398..86994832 100644 --- a/app/styles/components/filter.scss +++ b/app/styles/components/filter.scss @@ -23,8 +23,10 @@ padding: 8px 10px; } .name { + @include ellipsis(100%); background: darken($whitish, 10%); // Fallback display: block; + padding-right: 2rem; width: 100%; } .number { @@ -33,15 +35,14 @@ right: 0; top: 0; } - .icon-delete { - color: $grayer; + .remove-filter { + fill: $gray; position: absolute; right: .5rem; - top: .5rem; - transition: color .3s linear; + top: .75rem; + transition: fill .2s linear; &:hover { - color: $red; - transition: color .3s linear; + fill: $red; } } } diff --git a/app/styles/components/kanban-task.scss b/app/styles/components/kanban-task.scss index 70a6480e..37406516 100644 --- a/app/styles/components/kanban-task.scss +++ b/app/styles/components/kanban-task.scss @@ -9,10 +9,9 @@ margin-bottom: 0; } &:hover { - .icon-edit, - .icon-drag-h { - color: $card-dark; + .icon-edit { display: block; + fill: $card-dark; opacity: 1; transition: color .3s linear, opacity .3s linear; } @@ -96,15 +95,14 @@ bottom: .5rem; position: absolute; } - .icon-edit, - .icon-drag-h { - @extend %large; - color: $card-hover; + .icon-edit { + @include svg-size(1.1rem); + fill: $card-hover; opacity: 0; position: absolute; - transition: opacity .2s linear; &:hover { - color: darken($card-hover, 15%); + cursor: pointer; + fill: darken($card-hover, 15%); transition: color .3s linear; } } diff --git a/app/styles/components/markitup.scss b/app/styles/components/markitup.scss index ebb6e881..dd121e40 100644 --- a/app/styles/components/markitup.scss +++ b/app/styles/components/markitup.scss @@ -35,4 +35,8 @@ min-height: 2rem; padding: .3rem; } + .content { + background: $white; + margin-bottom: 0; + } } diff --git a/app/styles/components/notification-message.scss b/app/styles/components/notification-message.scss index a0c93c13..4a79a15d 100644 --- a/app/styles/components/notification-message.scss +++ b/app/styles/components/notification-message.scss @@ -49,6 +49,7 @@ .notification-message-error { background: rgba($red, .9); + opacity: 1; top: 0; transform: translateY(-100%); width: 100%; @@ -60,10 +61,10 @@ &.inactive { transition: all .6s ease-in-out; } - .icon-notification-error { - @extend %xxlarge; - display: inline; - vertical-align: sub; + .icon-error { + @include svg-size(3rem); + fill: $white; + margin-right: .5rem; } .warning { @extend %xlarge; @@ -79,8 +80,9 @@ margin: 0; } } - .icon-delete { - color: $white; + .icon-close { + cursor: pointer; + fill: $white; position: absolute; right: 1rem; top: 1rem; @@ -131,7 +133,7 @@ .close { margin-right: 1rem; width: 2rem; - path { + svg { fill: $white; } } diff --git a/app/styles/components/private.scss b/app/styles/components/private.scss index 943986c3..9758e999 100644 --- a/app/styles/components/private.scss +++ b/app/styles/components/private.scss @@ -3,9 +3,7 @@ margin-left: .5rem; width: .5rem; svg { - @include svg-size(); - } - path { + @include svg-size(.5rem); fill: $gray-light; transition: fill .3s linear; } diff --git a/app/styles/components/summary.scss b/app/styles/components/summary.scss index 7e789061..ee01cf4b 100644 --- a/app/styles/components/summary.scss +++ b/app/styles/components/summary.scss @@ -139,8 +139,11 @@ $summary-background: $grayer; margin-right: 2rem; } .icon { - font-size: 1.4rem; + fill: currentColor; + height: 1.5rem; margin-right: .4rem; + vertical-align: middle; + width: 1.5rem; &.icon-stats { color: $primary; float: right; @@ -171,10 +174,11 @@ $summary-background: $grayer; margin-bottom: 1rem; padding: 2rem 6rem; svg { - @include svg-size(5rem); - flex-basis: 5rem; + @include svg-size(4rem); + flex-basis: 4rem; flex-shrink: 0; - margin-right: 1rem; + fill: $primary-dark; + margin-right: 2rem; } p { margin: 0; @@ -189,9 +193,6 @@ $summary-background: $grayer; margin: 0; text-transform: uppercase; } - path { - fill: $primary-dark; - } a { @extend %bold; animation: blink 2s infinite; diff --git a/app/styles/components/tag.scss b/app/styles/components/tag.scss index 235c061f..2e0254ac 100644 --- a/app/styles/components/tag.scss +++ b/app/styles/components/tag.scss @@ -41,8 +41,15 @@ margin-right: .25rem; padding: .4rem; width: 14rem; - +.icon-floppy { - margin-left: .5rem; + } + .icon-save { + @include svg-size(); + cursor: pointer; + fill: $grayer; + margin-left: .5rem; + &:hover { + fill: $primary; + transition: .2s linear; } } .tag { @@ -50,14 +57,23 @@ margin: 0 .5rem .5rem 0; padding: .5rem; } + .icon-close { + @include svg-size(.7rem); + fill: $gray-light; + margin-left: .25rem; + &:hover { + cursor: pointer; + fill: $red; + } + } .add-tag { color: $gray-light; &:hover { color: $primary-light; } } - .icon-plus { - @extend %large; + .icon-add { + @include svg-size(.9rem); } .add-tag-text { @extend %small; diff --git a/app/styles/components/taskboard-task.scss b/app/styles/components/taskboard-task.scss index 65788966..7fa2daa4 100644 --- a/app/styles/components/taskboard-task.scss +++ b/app/styles/components/taskboard-task.scss @@ -8,8 +8,8 @@ &:hover { .icon-edit, .icon-drag-h { - color: $card-dark; display: block; + fill: $card-dark; opacity: 1; transition: color .3s linear, opacity .3s linear; } @@ -25,14 +25,14 @@ background: $red; border: 1px solid darken($red, 10%); color: $white; - a, + svg, span { color: $white; + fill: $white; } &:hover { - .icon-edit, - .icon-drag-h { - color: $white; + .icon-edit { + fill: currentColor; } } } @@ -80,14 +80,15 @@ } } .icon-iocaine { - @extend %large; background: $black; border-radius: 5px; - color: $white; + fill: $white; + height: 1.75rem; left: .2rem; - padding: .1rem; + padding: .25rem; position: absolute; top: 1rem; + width: 1.75rem; } .task-assigned { @extend %small; @@ -118,26 +119,21 @@ bottom: .5rem; position: absolute; } - .icon-edit, - .icon-drag-h { - @extend %large; + .icon-edit { + @include svg-size(1.1rem); bottom: .5rem; - color: $card-hover; + cursor: pointer; + fill: $card-hover; opacity: 0; position: absolute; &:hover { - color: $card-dark; + fill: $card-dark; } } .icon-edit, .loading { right: 1rem; } - .icon-drag-h { - @extend %xlarge; - cursor: move; - right: 45%; - } } .task-drag { diff --git a/app/styles/components/track-btn.scss b/app/styles/components/track-btn.scss index ba944611..b4c108e9 100644 --- a/app/styles/components/track-btn.scss +++ b/app/styles/components/track-btn.scss @@ -12,25 +12,23 @@ display: inline-flex; position: relative; .track-inner { - align-items: stretch; + align-items: center; background: $whitish; border-radius: 4px 0 0 4px; display: flex; flex: 1; flex-basis: 140px; + justify-content: flex-start; margin-right: .1rem; min-width: 140px; &:hover { background: darken($whitish, 5%); transition: background .3s; } - span { - align-self: center; - } - .icon-arrow-up { - margin-left: auto; - padding: 0 .5rem; - transform: rotate(180deg); + .icon-arrow-down { + height: .6rem; + margin: 0 .5rem 0 auto; + width: .6rem; } } &:hover { @@ -41,7 +39,7 @@ background: rgba($primary-light, .2); } .track-icon { - path { + svg { fill: $primary; } } @@ -53,13 +51,9 @@ .track-icon { padding: .3rem .6rem .3rem .75rem; svg { - height: 1.1rem; + fill: $grayer; position: relative; top: 2px; - width: 1.1rem; - } - path { - fill: $grayer; } } .track-button-counter { @@ -79,7 +73,7 @@ color: $whitish; transition: background .3s; } - path { + svg { fill: $red-light; } } @@ -121,7 +115,7 @@ .watch-check { height: 1.25rem; width: 1.25rem; - path { + svg { fill: $primary-light; } } @@ -155,7 +149,7 @@ background: rgba($primary-light, .2); color: $primary; transition: all .3s; - path { + svg { fill: $primary; } } @@ -163,22 +157,18 @@ background: $red; color: $whitish; svg { + fill: $red-light; transform: rotate(180deg); transition: all .3s; } - path { - fill: $red-light; - } } } svg { + fill: $gray-light; height: 1rem; width: 1rem; } span { display: block; } - path { - fill: $gray-light; - } } diff --git a/app/styles/components/user-list.scss b/app/styles/components/user-list.scss index 299014ae..01771bc1 100644 --- a/app/styles/components/user-list.scss +++ b/app/styles/components/user-list.scss @@ -47,12 +47,16 @@ position: relative; transition: background .3s linear; transition-delay: .1s; - .icon-delete { - opacity: 1; - position: absolute; - right: 1rem; - top: 1.5rem; - transition: opacity .2s ease-in; + } + .remove-assigned-to { + fill: $grayer; + opacity: 1; + position: absolute; + right: 1rem; + top: 1.5rem; + transition: all .2s ease-in; + &:hover { + fill: $red; } } } @@ -63,7 +67,7 @@ margin-top: 1rem; .user-list-single { &:hover { - .icon-delete { + .delete-watcher { opacity: 1; transition: opacity .2s ease-in; } @@ -73,14 +77,16 @@ flex: 1; position: relative; } - .icon-delete { + .delete-watcher { + cursor: pointer; + fill: currentColor; opacity: 0; position: absolute; right: .5rem; top: 0; transition: all .2s ease-in; &:hover { - color: $red; + fill: $red; transition: color .3s ease-in; } } diff --git a/app/styles/core/base.scss b/app/styles/core/base.scss index c2eba8f0..fdec382a 100644 --- a/app/styles/core/base.scss +++ b/app/styles/core/base.scss @@ -82,10 +82,6 @@ body { padding: 1rem 2rem; } -.icon { - @extend %taiga; -} - .hidden { // scss-lint:disable ImportantRule display: none !important; diff --git a/app/styles/core/elements.scss b/app/styles/core/elements.scss index cfd2bbf5..3dc9f83e 100644 --- a/app/styles/core/elements.scss +++ b/app/styles/core/elements.scss @@ -31,10 +31,6 @@ sup { vertical-align: super; } -.icon { - vertical-align: middle; -} - .clickable { cursor: pointer; } diff --git a/app/styles/core/forms.scss b/app/styles/core/forms.scss index 238bdbd8..ebd15ecd 100644 --- a/app/styles/core/forms.scss +++ b/app/styles/core/forms.scss @@ -41,9 +41,11 @@ textarea { } } .icon-capslock { - bottom: .6rem; - color: $gray; + bottom: .8rem; display: none; + fill: $gray; + height: .9rem; position: absolute; right: 1rem; + width: .9rem; } diff --git a/app/styles/core/typography.scss b/app/styles/core/typography.scss index f353c83c..18b984e4 100755 --- a/app/styles/core/typography.scss +++ b/app/styles/core/typography.scss @@ -117,188 +117,3 @@ a:visited { transition: color .3s linear; } } - -// Taiga Icons -[data-icon]::before { - - // scss-lint:disable ImportantRule - content: attr(data-icon); - font-family: 'taiga' !important; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-style: normal !important; - font-variant: normal !important; - font-weight: normal !important; - line-height: 1; - speak: none; - text-transform: none !important; -} - -[class^='icon-']::before, -[class*=' icon-']::before { - - // scss-lint:disable ImportantRule - font-family: 'taiga' !important; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-style: normal !important; - font-variant: normal !important; - font-weight: normal !important; - line-height: 1; - speak: none; - text-transform: none !important; -} - -.icon-bug::before { - content: 'a'; -} -.icon-copy::before { - content: 'b'; -} -.icon-minimize::before { - content: 'c'; -} -.icon-maximize::before { - content: 'd'; -} -.icon-comment::before { - content: 'e'; -} -.icon-plus::before { - content: 'f'; -} -.icon-attachments::before { - content: 'g'; -} -.icon-edit::before { - content: 'h'; -} -.icon-documents::before { - content: 'i'; -} -.icon-delete::before { - content: 'j'; -} -.icon-arrow-bottom::before { - content: 'k'; -} -.icon-arrow-left::before { - content: 'l'; -} -.icon-arrow-right::before { - content: 'm'; -} -.icon-arrow-up::before { - content: 'n'; -} -.icon-briefcase::before { - content: 'o'; -} -.icon-caret-down::before { - content: 'p'; -} -.icon-caret-up::before { - content: 'q'; -} -.icon-check-square::before { - content: 'r'; -} -.icon-notification-error::before { - content: 's'; -} -.icon-settings::before { - content: 't'; -} -.icon-document::before { - content: 'u'; -} -.icon-warning::before { - content: 'v'; -} -.icon-move::before { - content: 'w'; -} -.icon-drag-v::before { - content: 'x'; -} -.icon-filter::before { - content: 'y'; -} -.icon-help::before { - content: 'z'; -} -.icon-reload::before { - content: 'A'; -} -.icon-writer::before { - content: 'B'; -} -.icon-stats::before { - content: 'C'; -} -.icon-floppy::before { - content: 'D'; -} -.icon-warning-alt::before { - content: 'E'; -} -.icon-video::before { - content: 'F'; -} -.icon-bulk::before { - content: 'G'; -} -.icon-vunfold::before { - content: 'H'; -} -.icon-tasks::before { - content: 'I'; -} -.icon-kanban::before { - content: 'J'; -} -.icon-search::before { - content: 'K'; -} -.icon-wiki::before { - content: 'L'; -} -.icon-team::before { - content: 'M'; -} -.icon-vfold::before { - content: 'N'; -} -.icon-issues::before { - content: 'O'; -} -.icon-iocaine::before { - content: 'P'; -} -.icon-archive::before { - content: 'Q'; -} -.icon-capslock::before { - content: 'R'; -} -.icon-upload::before { - content: 'S'; -} -.icon-github::before { - content: 'T'; -} -.icon-timeline::before { - content: 'U'; -} -.icon-scrum::before { - content: 'V'; -} -.icon-project::before { - content: 'W'; -} -.icon-heart::before { - content: 'X'; -} -.icon-eye::before { - content: 'Y'; -} diff --git a/app/styles/dependencies/helpers.scss b/app/styles/dependencies/helpers.scss index 15e473ee..df38b422 100644 --- a/app/styles/dependencies/helpers.scss +++ b/app/styles/dependencies/helpers.scss @@ -12,7 +12,6 @@ %light {font-family: 'OpenSans-Light', Arial, Helvetica, sans-serif; } %text {font-family: 'OpenSans-Regular', Arial, Helvetica, sans-serif; } %bold {font-family: 'OpenSans-Semibold', Arial, Helvetica, sans-serif; } -%taiga {font-family: 'taiga'; } %mono {font-family: 'courier new', 'monospace';} %lightbox { @@ -25,14 +24,17 @@ top: 0; z-index: 99910; .close { - @extend %xlarge; - color: $gray; + cursor: pointer; + fill: $gray; position: absolute; - right: 2rem; - top: 1rem; - transition: color .2s; + right: 3rem; + top: 3rem; + transition: fill .2s; &:hover { - color: $primary; + fill: $red-light; + } + svg { + @include svg-size(2rem); } } &.open { diff --git a/app/styles/dependencies/mixins.scss b/app/styles/dependencies/mixins.scss index b9101fad..58fa132d 100644 --- a/app/styles/dependencies/mixins.scss +++ b/app/styles/dependencies/mixins.scss @@ -120,24 +120,18 @@ display: flex; .icon { display: block; - margin-right: .2rem; - width: 16px; + margin-right: .25rem; } &.active { color: $primary; - path { + .icon { fill: currentcolor; } } } .icon { - svg { - height: 1rem; - width: 1rem; - } - path { - fill: currentcolor; - } + @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 2d1102e8..1c6e6365 100644 --- a/app/styles/dependencies/mixins/project-card.scss +++ b/app/styles/dependencies/mixins/project-card.scss @@ -26,7 +26,8 @@ margin-top: auto; svg { @include svg-size(.8rem); - fill: $gray-light; + fill: currentColor; + margin-right: .25rem; } .svg-eye-closed { display: none; @@ -40,7 +41,7 @@ &.active { color: $primary; svg { - fill: $primary; + fill: currentColor; } } } @@ -71,10 +72,8 @@ } } .look-for-people { - svg { - @include svg-size(1rem); - fill: $gray-light; - margin: 0 .5rem; - } + @include svg-size(1rem); + fill: $gray-light; + margin: 0 .5rem; } } diff --git a/app/styles/layout/backlog.scss b/app/styles/layout/backlog.scss index 77b905f8..044a93b4 100644 --- a/app/styles/layout/backlog.scss +++ b/app/styles/layout/backlog.scss @@ -11,8 +11,8 @@ padding: .4rem 1.5rem; &.active, &:hover { - background: $gray; - color: $whitish; + background: $gray-light; + color: $gray; } &.active { &:hover { diff --git a/app/styles/layout/ticket-detail.scss b/app/styles/layout/ticket-detail.scss index b71fbed5..c2289163 100644 --- a/app/styles/layout/ticket-detail.scss +++ b/app/styles/layout/ticket-detail.scss @@ -79,7 +79,7 @@ width: 100%; } .us-title-text:hover { - .icon-edit { + .edit { opacity: 1; transition: opacity .3s linear; } @@ -99,13 +99,13 @@ padding-right: 1rem; width: 100%; } - .icon-edit, - .icon-floppy { - @extend %large; - color: $gray-light; + .edit, + .save { + cursor: pointer; + fill: $gray-light; margin-left: .5rem; } - .icon-edit { + .edit { opacity: 0; } .us-related-task { @@ -167,8 +167,9 @@ position: absolute; right: 1rem; top: 1rem; - a { - @extend %xlarge; + svg { + @include svg-size(1.2rem); + fill: currentColor; } } @@ -202,6 +203,7 @@ &:hover { .view-description { .edit { + opacity: 1; top: -1.5rem; transition: all .2s linear; @@ -240,23 +242,28 @@ } } .edit { - color: $grayer; + cursor: pointer; + fill: $gray; } .view-description { .edit { background: $whitish; + height: 2rem; left: 0; opacity: 0; padding: .2rem .5rem; position: absolute; top: 0; transition: all .2s linear; + width: 2rem; } } .edit-description { margin-bottom: 2rem; .save { - top: .4rem; + cursor: pointer; + position: relative; + top: .3rem; } .edit { position: absolute; diff --git a/app/styles/layout/wiki.scss b/app/styles/layout/wiki.scss index 50134ab9..dbec51e2 100644 --- a/app/styles/layout/wiki.scss +++ b/app/styles/layout/wiki.scss @@ -7,13 +7,11 @@ @extend %small; color: $gray-light; &:hover { - span { - color: $grayer; - transition: color .2s linear; - } + color: $red-light; + transition: color .1s linear; .icon { - color: $red; - transition: color .2s linear; + fill: $red-light; + transition: fill .1s linear; } } .icon { @@ -43,20 +41,25 @@ transition: all .2s linear; } } - .edit { - background: $whitish; - left: 0; - opacity: 0; - padding: .2rem .5rem; - position: absolute; - top: 0; - transition: all .2s linear; + } + .edit { + @include svg-size(2rem); + background: $whitish; + left: 0; + opacity: 0; + padding: .2rem .5rem; + position: absolute; + top: 0; + transition: all .2s linear; + &:hover { + cursor: pointer; } } .edit-wiki-content { .icon { &:hover { - color: $grayer; + cursor: pointer; + fill: $primary-dark; opacity: .3; transition: all .2s linear; } diff --git a/app/styles/modules/admin/admin-common.scss b/app/styles/modules/admin/admin-common.scss index b247f1e2..fe3fe486 100644 --- a/app/styles/modules/admin/admin-common.scss +++ b/app/styles/modules/admin/admin-common.scss @@ -10,11 +10,13 @@ } .total { @extend %large; + align-items: center; background-color: $whitish; color: $grayer; + display: flex; padding: .3rem 1rem; &:hover { - .edit-value { + .icon-edit { opacity: 1; transition: opacity .3s linear; } diff --git a/app/styles/modules/admin/admin-custom-attributes.scss b/app/styles/modules/admin/admin-custom-attributes.scss index ee7a21d5..ef5a1767 100644 --- a/app/styles/modules/admin/admin-custom-attributes.scss +++ b/app/styles/modules/admin/admin-custom-attributes.scss @@ -27,7 +27,7 @@ background: rgba($primary-light, .05); cursor: move; transition: background .2s linear; - .icon-drag-v, + .icon-drag, .custom-options { opacity: 1; transition: opacity .2s linear; @@ -47,15 +47,15 @@ border-bottom: 1px solid $whitish; color: $gray; } - .icon-drag-v { - color: $gray-light; + .icon-drag { + fill: $gray-light; opacity: 0; padding: 0 .1rem; transition: color .2s linear; vertical-align: middle; &:hover { - color: $gray; cursor: move; + fill: $gray; transition: color .2s linear; } } @@ -83,15 +83,20 @@ flex-shrink: 0; opacity: 0; text-align: center; - a { - color: $gray-light; + svg { + cursor: pointer; + fill: $gray-light; margin-right: .5rem; transition: color .2s linear; vertical-align: middle; &:hover { - color: $primary; + fill: $primary; transition: color .2s linear; } + &.icon-trash, + &.icon-close { + fill: $red-light; + } } } .custom-options-wrapper { diff --git a/app/styles/modules/admin/admin-functionalities.scss b/app/styles/modules/admin/admin-functionalities.scss index 1a02ff99..e928d937 100644 --- a/app/styles/modules/admin/admin-functionalities.scss +++ b/app/styles/modules/admin/admin-functionalities.scss @@ -23,10 +23,10 @@ opacity: 1; } .icon { - @extend %xxlarge; - flex-basis: 60px; - margin: 0 auto; - min-width: 60px; + fill: $gray; + height: 3rem; + margin: 1rem auto; + width: 3rem; } .desc { text-align: center; diff --git a/app/styles/modules/admin/admin-membership-table.scss b/app/styles/modules/admin/admin-membership-table.scss index 93b42f1d..5780eaf9 100644 --- a/app/styles/modules/admin/admin-membership-table.scss +++ b/app/styles/modules/admin/admin-membership-table.scss @@ -62,10 +62,10 @@ } } .delete { - @extend %large; - color: $gray-light; + fill: $gray-light; + transition: fill .2s; &:hover { - color: $red; + fill: $red; } } .pending { diff --git a/app/styles/modules/admin/admin-roles.scss b/app/styles/modules/admin/admin-roles.scss index b11656d4..cd817290 100644 --- a/app/styles/modules/admin/admin-roles.scss +++ b/app/styles/modules/admin/admin-roles.scss @@ -4,13 +4,23 @@ @extend %light; color: $grayer; } - .edit-value { - @extend %medium; - color: $gray-light; + .icon { + &:hover { + fill: $primary; + transition: fill .2s linear; + } + } + .icon-edit { cursor: pointer; + fill: $gray-light; margin-left: .5rem; opacity: 0; - transition: opacity .3s linear; + transition: opacity .2s linear; + } + .icon-save { + fill: $gray-light; + margin-left: .5rem; + transition: fill .2s linear; } .edit-role { background-color: $whitish; @@ -21,15 +31,6 @@ background-color: $white; width: 50%; } - .icon-floppy { - color: $gray-light; - margin-left: .5rem; - transition: color.3s linear; - &:hover { - color: $primary; - transition: color.3s linear; - } - } } .any-computable-role { background: $red; diff --git a/app/styles/modules/admin/admin-third-parties-webhooks.scss b/app/styles/modules/admin/admin-third-parties-webhooks.scss index 8ef4fa0c..825314eb 100644 --- a/app/styles/modules/admin/admin-third-parties-webhooks.scss +++ b/app/styles/modules/admin/admin-third-parties-webhooks.scss @@ -1,5 +1,6 @@ .admin-webhooks { .webhooks-table { + margin-bottom: 1rem; .row { border-bottom: 0; padding: .5rem 0; @@ -60,14 +61,13 @@ min-width: 100px; text-align: center; a { - color: $gray-light; margin-right: .5rem; - transition: color .2s linear; - vertical-align: middle; + } + svg { + fill: $gray-light; &:hover { - color: $primary; - transition: color .2s linear; - + fill: $primary; + transition: fill .2s linear; } } } diff --git a/app/styles/modules/admin/project-csv.scss b/app/styles/modules/admin/project-csv.scss index e6f16a08..4c370888 100644 --- a/app/styles/modules/admin/project-csv.scss +++ b/app/styles/modules/admin/project-csv.scss @@ -13,8 +13,12 @@ @extend %small; min-width: 110px; } - .icon { + .icon:not(.icon-clipboard) { + fill: currentColor; + height: .9rem; margin-right: .3rem; + vertical-align: middle; + width: .9rem; } } .field-with-options { diff --git a/app/styles/modules/admin/project-values.scss b/app/styles/modules/admin/project-values.scss index 7ef3ae5b..d55a0516 100644 --- a/app/styles/modules/admin/project-values.scss +++ b/app/styles/modules/admin/project-values.scss @@ -9,11 +9,11 @@ position: relative; } .icon { - @extend %large; - color: $gray-light; + cursor: pointer; + fill: $gray-light; opacity: 0; &:hover { - color: $grayer; + fill: $grayer; transition: all .2s ease-in; } } @@ -61,16 +61,10 @@ } .project-values-settings { - a { - @extend %large; - color: $gray; + svg { margin-right: .5rem; - &:hover { - color: $primary; - transition: color .3s linear; - .icon-delete { - color: $red; - } + &.icon-trash { + fill: $red-light; } } } diff --git a/app/styles/modules/backlog/backlog-table.scss b/app/styles/modules/backlog/backlog-table.scss index 9b84249f..934d5b64 100644 --- a/app/styles/modules/backlog/backlog-table.scss +++ b/app/styles/modules/backlog/backlog-table.scss @@ -28,25 +28,12 @@ flex-grow: 0; flex-shrink: 0; } - .votes { - color: $gray; - flex-basis: 65px; - flex-grow: 0; - flex-shrink: 0; - text-align: center; - &.inactive { - color: $gray-light; - } - &.is-voted { - color: $primary-light; - } - } .user-stories { overflow: hidden; width: 100%; } .status { - flex-basis: 100px; + flex-basis: 120px; flex-grow: 0; flex-shrink: 0; } @@ -56,6 +43,30 @@ } } + .votes { + color: $gray; + flex-basis: 65px; + flex-grow: 0; + flex-shrink: 0; + text-align: center; + &.inactive { + color: $gray-light; + svg { + fill: $gray-light; + } + } + &.is-voted { + color: $primary-light; + fill: $primary-light; + } + svg { + fill: $gray; + height: .75rem; + margin-right: .25rem; + vertical-align: middle; + width: .75rem; + } + } .status, .points { position: relative; @@ -70,7 +81,8 @@ } } .icon { - color: $gray-light; + @include svg-size(.75rem); + fill: currentColor; margin-left: .2rem; } } @@ -122,7 +134,7 @@ @extend %medium; border-bottom: 2px solid $gray-light; flex-wrap: nowrap; - padding-right: 30px; + padding-right: 1rem; } .points { cursor: pointer; @@ -145,7 +157,7 @@ transition: background .2s ease-in; transition-delay: .2s; .us-settings, - .icon-drag-v { + .icon-drag { opacity: 1; transition: all .2s ease-in; } @@ -165,6 +177,11 @@ cursor: text; } } + .icon-arrow-down { + fill: $gray-light; + height: .7rem; + width: .7rem; + } } .sortable-placeholder { background: $whitish; @@ -241,26 +258,24 @@ top: -3px; } } - .us-settings a, - .icon-drag-v { - @extend %large; - color: $gray-light; - transition: all .2s ease-in; - width: 30px; - &:hover { - color: $grayer; - transition: all .2s ease-in; - } - } .us-settings { flex-shrink: 0; - margin: 0 0 0 2rem; + margin-left: 2rem; opacity: 0; + svg { + fill: $gray-light; + margin-right: .5rem; + transition: fill .2s ease-in; + &:hover { + fill: $primary-light; + } + } } - .icon-drag-v { + .icon-drag { cursor: move; + fill: $gray-light; opacity: 0; - padding: .1rem .5rem 0 0; + padding: .1rem; } .readonly { cursor: auto; diff --git a/app/styles/modules/backlog/sprints.scss b/app/styles/modules/backlog/sprints.scss index 7ba4d2cb..7029229d 100644 --- a/app/styles/modules/backlog/sprints.scss +++ b/app/styles/modules/backlog/sprints.scss @@ -16,13 +16,9 @@ background: $primary-light; } svg { - height: 1.4rem; - max-height: 1.4rem; - max-width: 1.5rem; - width: 1.5rem; - } - path { fill: $whitish; + height: 1.4rem; + width: 1.5rem; } } .filter-closed-sprints { @@ -53,7 +49,7 @@ @extend %title; @include ellipsis($width: 90%); display: inline-block; - margin-right: 3px; + margin-right: .5rem; } } .sprint { @@ -69,24 +65,8 @@ transition: opacity .2s ease-in; } } - .icon { - display: inline-block; - } - .icon-arrow-up { - transform: rotate(90deg); - transition: all .2s linear; - vertical-align: baseline; - &.active { - transform: rotate(180deg); - transition: all .2s linear; - } - &:hover { - color: $primary-light; - transition: color .2s linear; - } - } - .icon-edit { - color: $gray-light; + .edit-sprint { + fill: $gray-light; opacity: 0; position: absolute; right: 0; @@ -94,8 +74,9 @@ transition: opacity .2s ease-in; vertical-align: baseline; &:hover { - color: $primary; - transition: color .2s ease-in; + cursor: pointer; + fill: $primary; + transition: fill .2s ease-in; } } .number { @@ -129,6 +110,20 @@ } } } + .compact-sprint { + transform: rotate(0); + transition: all .2s; + &.active { + transform: rotate(90deg); + transition: all .2s; + } + &:hover { + .icon { + fill: $primary-light; + transition: color .2s; + } + } + } .sprint-progress-bar { background: $gray-light; border-radius: 2px; diff --git a/app/styles/modules/backlog/taskboard-table.scss b/app/styles/modules/backlog/taskboard-table.scss index dae0c4fb..67ed9612 100644 --- a/app/styles/modules/backlog/taskboard-table.scss +++ b/app/styles/modules/backlog/taskboard-table.scss @@ -89,11 +89,12 @@ $column-margin: 0 10px 0 0; } .icon { @extend %medium; - color: $gray-light; + fill: $gray-light; margin-right: .3rem; - transition: color .2s linear; + transition: fill .2s linear; &:hover { - color: $primary; + cursor: pointer; + fill: $primary; } &.hfold, &.hunfold { @@ -157,8 +158,8 @@ $column-margin: 0 10px 0 0; background: rgba($red, .6); } - .taskboard-userstory-box a, - .taskboard-userstory-box a:hover, + .taskboard-userstory-box svg, + .taskboard-userstory-box svg:hover, .points-value, .points-value:hover { color: $white; @@ -174,7 +175,7 @@ $column-margin: 0 10px 0 0; @include ellipsis(100%); } .points-value, - .icon-plus, + .icon-add, .icon-bulk { display: none; } @@ -184,21 +185,23 @@ $column-margin: 0 10px 0 0; .taskboard-userstory-box { padding: .5rem .5rem .5rem 1.5rem; .icon { - color: $gray-light; + cursor: pointer; + fill: $gray-light; position: absolute; right: .5rem; top: .7rem; - transition: color .2s linear; + transition: fill .2s linear; &:hover { - color: $primary; + fill: $primary; } - &.icon-plus { + &.icon-add { right: 2rem; } - &.icon-vfold, - &.icon-vunfold { + &.icon-fold-row, + &.icon-unfold-row { left: 0; right: inherit; + top: 1rem; } } } diff --git a/app/styles/modules/common/assigned-to.scss b/app/styles/modules/common/assigned-to.scss index 71a41c07..907c3255 100644 --- a/app/styles/modules/common/assigned-to.scss +++ b/app/styles/modules/common/assigned-to.scss @@ -7,11 +7,9 @@ padding: 1rem 0; position: relative; &:hover { - .assigned-to { - .icon-delete { - opacity: 1; - transition: opacity .3s linear; - } + .remove-user { + opacity: 1; + transition: opacity .3s linear; } } .loading-spinner { @@ -60,15 +58,33 @@ .assigned-to-options { display: inline-block; } - .icon-delete { - color: $gray-light; - opacity: 0; - position: absolute; - right: 0; - top: 2rem; + .user-assigned, + .assign-to-me { + color: $primary; + cursor: default; &:hover { - color: $red; + cursor: pointer; } + .icon { + fill: currentColor; + height: .75rem; + width: .75rem; + } + span { + @include ellipsis(80%); + } + } + } + .remove-user { + fill: $gray; + opacity: 0; + position: absolute; + right: .5rem; + top: 2rem; + &:hover { + cursor: pointer; + fill: $red; + transition: fill .2s; } } .user-assigned, diff --git a/app/styles/modules/common/category-config.scss b/app/styles/modules/common/category-config.scss index d0a29f25..43a5479d 100644 --- a/app/styles/modules/common/category-config.scss +++ b/app/styles/modules/common/category-config.scss @@ -9,6 +9,15 @@ display: flex; padding: 1rem; position: relative; + &.open-drawer { + .icon { + transform: rotate(90deg); + } + } + } + .icon { + transform: rotate(0); + transition: all .4s; } .resume-title { width: 280px; @@ -35,11 +44,6 @@ } } } - .icon { - @extend %xlarge; - flex: 1; - text-align: right; - } .category-items { @include slide(400px, hidden); background-color: $whitish; diff --git a/app/styles/modules/common/colors-table.scss b/app/styles/modules/common/colors-table.scss index 314c87de..fa1f15bb 100644 --- a/app/styles/modules/common/colors-table.scss +++ b/app/styles/modules/common/colors-table.scss @@ -10,6 +10,21 @@ padding-left: 50px; } } + .table-main { + .row:hover { + background: lighten($primary, 60%); + cursor: move; + transition: background .2s ease-in; + .icon { + opacity: 1; + transition: opacity .2s ease-in; + } + .options-column { + opacity: 1; + transition: opacity .3s linear; + } + } + } form { &:last-child { .row { @@ -23,19 +38,6 @@ display: flex; justify-content: center; padding: 1rem; - &:hover { - background: lighten($primary, 60%); - cursor: move; - transition: background .2s ease-in; - .icon { - opacity: 1; - transition: opacity .2s ease-in; - } - .options-column { - opacity: 1; - transition: opacity .3s linear; - } - } &:last-child { border: 0; } @@ -112,26 +114,27 @@ width: 40px; } .icon { - @extend %large; - color: $gray-light; + cursor: pointer; + fill: $gray-light; margin-right: 1rem; opacity: 0; &:hover { - color: $primary; + fill: $primary; transition: all .2s ease-in; } - &.icon-check-square { + &.icon-check { + cursor: default; + fill: $primary; opacity: 1; } - } - .icon-delete { - &:hover { - color: $red; + &.icon-drag { + cursor: move; + } + &.icon-trash { + &:hover { + fill: $red-light; + } } - } - .icon-check-square { - @extend %large; - color: $primary; } } diff --git a/app/styles/modules/common/custom-fields.scss b/app/styles/modules/common/custom-fields.scss index ed9816b2..4adab4e5 100644 --- a/app/styles/modules/common/custom-fields.scss +++ b/app/styles/modules/common/custom-fields.scss @@ -8,15 +8,8 @@ display: flex; justify-content: space-between; padding: .5rem 1rem; - .icon-arrow-bottom { - @extend %large; + .icon { cursor: pointer; - transform: rotate(-90deg); - transition: transform .2s linear; - &.open { - transform: rotate(0); - transition: transform .2s linear; - } } } .custom-fields-body { @@ -37,14 +30,16 @@ margin-top: .5rem; } } - .custom-field-options { - opacity: 0; - transition: opacity .2s linear; - a { - color: $gray-light; - } - a:hover { - color: $primary; + } + .custom-field-options { + margin: 0; + opacity: 0; + transition: opacity .2s linear; + svg { + cursor: pointer; + fill: $gray-light; + &:hover { + fill: $primary; } } } @@ -62,9 +57,6 @@ line-height: .9rem; } } - .custom-field-options { - margin: 0; - } .custom-field-value { @extend %light; align-items: flex-start; diff --git a/app/styles/modules/common/history.scss b/app/styles/modules/common/history.scss index 96e4fdf4..f39e2247 100644 --- a/app/styles/modules/common/history.scss +++ b/app/styles/modules/common/history.scss @@ -7,7 +7,7 @@ &:hover { .icon { color: $primary; - transform: rotate(180deg); + transform: rotate(90deg); transition: all .2s linear; } } @@ -40,33 +40,40 @@ } .history-tabs { @extend %title; - border-bottom: 3px solid $gray-light; + border-bottom: 1px solid $whitish; + border-top: 1px solid $whitish; margin-bottom: 0; - padding: .5rem 0; li { @extend %large; display: inline-block; &:first-child { - border-right: 1px solid $gray-light; + border-right: 1px solid $whitish; } &:last-child { border-right: 0; } } a { + background: $white; color: $gray-light; - padding: 0 2rem; + display: inline-block; + padding: .5rem 2rem; + position: relative; transition: color .2s ease-in; &.active { - color: $grayer; + color: $primary; + top: 1px; } &:hover { - color: $primary; + color: $grayer; transition: color .2s ease-in; } } .icon { + fill: currentColor; + height: .75rem; margin-right: .5rem; + width: .75rem; } } .add-comment { @@ -110,6 +117,14 @@ .preview-icon { position: absolute; right: 1rem; + top: .5rem; + } + .edit { + fill: $gray-light; + &:hover { + cursor: pointer; + fill: $primary; + } } .preview-icon { opacity: 0; @@ -252,14 +267,15 @@ margin-bottom: 0; } .comment-delete { - color: $red; + cursor: pointer; + fill: $red-light; opacity: 0; position: absolute; - right: 0; + right: .5rem; top: 2rem; transition: all .2s linear; &:hover { - color: $red-light; + fill: $red; transition: color .2s linear; } } diff --git a/app/styles/modules/common/lightbox.scss b/app/styles/modules/common/lightbox.scss index 7f57453c..01347548 100644 --- a/app/styles/modules/common/lightbox.scss +++ b/app/styles/modules/common/lightbox.scss @@ -159,9 +159,6 @@ margin-left: .5rem; } } - .icon-delete { - @extend %large; - } } .extra-text { margin-top: 1rem; @@ -173,13 +170,18 @@ width: 80%; } .icon { - @extend %large; + fill: $gray; margin-left: .5rem; + transition: fill .2s; } - .icon-delete { - @extend %xlarge; + .icon-add { &:hover { - color: $red; + fill: $primary-light; + } + } + .icon-trash { + &:hover { + fill: $red; } } .button { @@ -234,17 +236,18 @@ } .delete-sprint { @extend %small; - color: $grayer; - display: block; - margin-top: 1rem; - text-align: right; - a { - color: $gray-light; - margin-left: .5rem; + color: $gray; + float: right; + margin: 1rem .25rem 0 0; + transition: color .3s linear; + .icon { + fill: currentColor; + } + &:hover { + color: $red; transition: color .3s linear; - &:hover { - color: $red; - transition: color .3s linear; + .icon { + fill: currentColor; } } } diff --git a/app/styles/modules/common/nav.scss b/app/styles/modules/common/nav.scss index 5f49450c..15f9db96 100644 --- a/app/styles/modules/common/nav.scss +++ b/app/styles/modules/common/nav.scss @@ -23,15 +23,17 @@ tg-project-menu { position: relative; text-align: center; a { - color: $white; display: block; - padding: .75rem .8rem; + padding: 1.1rem .8rem; position: relative; } a:hover { background: rgba($black, .2); - color: $primary-light; transition: color .3s linear; + svg { + fill: $primary-light; + transition: fill .3s linear; + } .helper { @extend %small; animation: slideLeft 200ms ease-in-out both; @@ -60,6 +62,7 @@ tg-project-menu { } } svg { + fill: $white; height: 1.5rem; width: 1.5rem; path { diff --git a/app/styles/modules/common/related-tasks.scss b/app/styles/modules/common/related-tasks.scss index e3aa2231..241cb037 100644 --- a/app/styles/modules/common/related-tasks.scss +++ b/app/styles/modules/common/related-tasks.scss @@ -101,7 +101,8 @@ } } .icon { - color: $gray-light; + @include svg-size(.8rem); + fill: $gray-light; margin-left: .2rem; opacity: 0; } @@ -116,6 +117,7 @@ } .task-name { display: flex; + justify-content: space-between; position: relative; a { display: inline-block; @@ -123,6 +125,10 @@ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + svg, + span { + margin-right: .25rem; + } } svg, span { @@ -144,26 +150,6 @@ } } } - .blocked, - .blocked:hover { - background: $red-light; - color: $white; - a { - color: $white; - &:hover { - color: $white; - } - } - .icon { - color: $white; - &:hover { - color: $white; - } - } - } - .icon-iocaine { - display: none; - } .iocaine, .iocaine:hover { background: rgba($primary-light, .3); @@ -173,21 +159,48 @@ margin-right: .5rem; vertical-align: top; } + a, + svg { + color: $primary-dark; + fill: $primary-dark; + &:hover { + color: currentColor; + fill: currentColor; + } + } + } + .blocked, + .blocked:hover { + background: $red-light; + color: $white; + a, + svg { + color: $white; + fill: $white; + &:hover { + color: currentColor; + fill: currentColor; + } + } + } + .icon-iocaine { + display: none; } .task-settings { - margin: 0 0 0 2rem; + align-items: center; + display: flex; opacity: 0; - position: absolute; - right: 0; - top: 0; - width: 10%; - a { - @extend %large; - color: $gray-light; - transition: all .2s ease-in; + svg { + @include svg-size(1.1rem); + fill: $gray-light; + margin-right: 2rem; + transition: fill .2s ease-in; &:hover { - color: $grayer; - transition: all .2s ease-in; + cursor: pointer; + fill: $grayer; + } + &.icon-close:hover { + fill: $red-light; } } } @@ -213,6 +226,8 @@ white-space: nowrap; } .icon { + @include svg-size(.8rem); + fill: $gray-light; opacity: 0; position: absolute; right: .5rem; diff --git a/app/styles/modules/common/ticket-data.scss b/app/styles/modules/common/ticket-data.scss index c97d7e36..b5723c38 100644 --- a/app/styles/modules/common/ticket-data.scss +++ b/app/styles/modules/common/ticket-data.scss @@ -11,17 +11,20 @@ } .detail-status { @extend %small; - display: inline-block; + display: flex; margin-left: .25rem; position: relative; - .icon-arrow-bottom { + .icon-arrow-down { + @include svg-size(.75rem); + fill: currentColor; margin-left: .25rem; } } .detail-status-inner { + align-items: center; color: $white; display: flex; - justify-content: center; + justify-content: flex-start; padding: .15rem .25rem; text-transform: uppercase; } @@ -44,6 +47,8 @@ @extend %normal; margin-bottom: 1rem; .icon { + @include svg-size(.7rem); + color: currentColor; margin-left: .25rem; } } @@ -115,7 +120,8 @@ .ticket-watch-inner { display: flex; } - .track-icon { + svg { + margin-right: .25rem; position: relative; top: 2px; } @@ -130,7 +136,7 @@ text-align: center; text-transform: uppercase; transition: background .25s; - path { + svg { fill: $white; } &:hover { diff --git a/app/styles/modules/common/wizard.scss b/app/styles/modules/common/wizard.scss index 75c60ac7..494c9048 100644 --- a/app/styles/modules/common/wizard.scss +++ b/app/styles/modules/common/wizard.scss @@ -94,8 +94,8 @@ transition: background .3s ease-in; } .icon { - @extend %xxlarge; - color: $white; + @include svg-size(3rem); + fill: currentColor; } } h2 { diff --git a/app/styles/modules/filters/filters.scss b/app/styles/modules/filters/filters.scss index 527f44cc..e1309796 100644 --- a/app/styles/modules/filters/filters.scss +++ b/app/styles/modules/filters/filters.scss @@ -8,13 +8,17 @@ vertical-align: baseline; } } - h2 { + .breadcrumb { @extend %large; margin-top: 1rem; .icon-arrow-right { - @extend %medium; + @include svg-size(.7rem); + margin: 0 .25rem; vertical-align: middle; } + .back { + color: $gray-light; + } } input { background: $grayer; @@ -79,8 +83,10 @@ } } a { + align-items: center; color: $grayer; - display: block; + display: flex; + justify-content: space-between; padding: .5rem 0 .5rem .5rem; transition: color .2s ease-in; &:hover { @@ -93,9 +99,11 @@ } } .icon { - color: $grayer; + fill: currentColor; float: right; + height: .9rem; opacity: 0; transition: opacity .2s ease-in; + width: .9rem; } } diff --git a/app/styles/modules/issues/issues-table.scss b/app/styles/modules/issues/issues-table.scss index d9468859..9b03dc47 100644 --- a/app/styles/modules/issues/issues-table.scss +++ b/app/styles/modules/issues/issues-table.scss @@ -73,6 +73,12 @@ &.is-voted { color: $primary-light; } + svg { + @include svg-size(.75rem); + fill: $gray; + margin-right: .25rem; + vertical-align: middle; + } } .subject { overflow: hidden; @@ -99,6 +105,12 @@ padding: 0 1rem; position: relative; text-align: left; + .icon { + @include svg-size(.75rem); + fill: currentColor; + margin-left: .25rem; + vertical-align: middle; + } } .assigned-field { flex: 0 0 160px; @@ -120,10 +132,11 @@ white-space: nowrap; } .icon { + @include svg-size(.75rem); opacity: 0; position: absolute; right: 0; - top: .5rem; + top: .75rem; transition: opacity .3s linear; } } diff --git a/app/styles/modules/kanban/kanban-table.scss b/app/styles/modules/kanban/kanban-table.scss index 817c8a58..5de4736d 100644 --- a/app/styles/modules/kanban/kanban-table.scss +++ b/app/styles/modules/kanban/kanban-table.scss @@ -21,12 +21,7 @@ $column-margin: 0 10px 0 0; opacity: .8; padding: .5rem 0; transition: opacity .3s linear; - .icon-plus, - .icon-bulk, - .icon-vfold, - .icon-vunfold, - .icon-open-eye, - .icon-closed-eye, + .option:not(.hunfold), span { display: none; } @@ -86,51 +81,19 @@ $column-margin: 0 10px 0 0; span { @include ellipsis(65%); } - .icon { - @extend %medium; - color: $gray-light; + .option { margin-right: .3rem; - transition: color .2s linear; - &.hfold, - &.hunfold { - display: inline-block; - transform: rotate(90deg); - } } - } - .icon-open-eye, - .icon-closed-eye { - display: inline-block; - svg { + .icon { fill: $gray-light; - height: 1.1rem; - margin-top: .25rem; - width: 1.1rem; - - } - &:hover { - svg { + height: 1rem; + transition: color .2s linear; + width: 1rem; + &:hover { fill: $primary; - } } } - .icon-open-eye { - .svg-eye-closed { - display: none; - } - .svg-eye-open { - display: block; - } - } - .icon-closed-eye { - .svg-eye-closed { - display: block; - } - .svg-eye-open { - display: none; - } - } } .kanban-table-body { diff --git a/app/styles/modules/search/search-filter.scss b/app/styles/modules/search/search-filter.scss index 742bd0b7..b25c5fc0 100644 --- a/app/styles/modules/search/search-filter.scss +++ b/app/styles/modules/search/search-filter.scss @@ -11,12 +11,12 @@ padding: 1rem 1.25rem; &:hover { transition: color .3s linear; - .icon { - margin-right: .4rem; - } .name { padding-left: 5px; } + .icon { + fill: currentColor; + } } &.active { border-left: 1px solid $whitish; @@ -25,11 +25,12 @@ position: relative; top: 1px; .icon { - color: $primary-light; + fill: $primary-light; } } } .icon { + fill: currentColor; margin-right: .4rem; } .name { diff --git a/app/styles/modules/search/search-in.scss b/app/styles/modules/search/search-in.scss index 19eecf56..8b30b855 100644 --- a/app/styles/modules/search/search-in.scss +++ b/app/styles/modules/search/search-in.scss @@ -12,7 +12,7 @@ top: .7rem; } .icon-search { - color: $gray-light; + fill: $gray-light; } .loading-spinner { margin-top: .1rem; diff --git a/app/styles/modules/team/team-filters.scss b/app/styles/modules/team/team-filters.scss index e638fe0d..e32092b1 100644 --- a/app/styles/modules/team/team-filters.scss +++ b/app/styles/modules/team/team-filters.scss @@ -3,37 +3,38 @@ margin-bottom: 1rem; position: relative; } - nav { - li { - @extend %larger; - @extend %title; - border-bottom: 1px solid $gray-light; - text-transform: uppercase; - &:last-child { - border-bottom: 0; - } - } - a { - display: block; - padding: 1rem 0 1rem 1rem; - &:hover, - &.active { - color: $primary; - transition: color .3s linear; - } - &.active.icon { - opacity: 1; - transition: opacity .3s linear; - } - } - .active { - opacity: 1; - transition: opacity .3s linear; + li { + @extend %large; + @extend %text; + border-bottom: 1px solid $gray-light; + text-transform: uppercase; + &:last-child { + border-bottom: 0; } .icon { - color: $blackish; - float: right; + fill: $blackish; opacity: 0; + transition: opacity .3s linear; } } + a { + align-content: center; + align-items: center; + display: flex; + justify-content: space-between; + padding: 1rem 0 1rem 1rem; + &:hover, + &.active { + color: $primary; + transition: color .3s linear; + .icon { + fill: currentColor; + opacity: 1; + } + } + } + .active { + opacity: 1; + transition: opacity .3s linear; + } } diff --git a/app/styles/modules/team/team-table.scss b/app/styles/modules/team/team-table.scss index a75332d4..a84e4660 100644 --- a/app/styles/modules/team/team-table.scss +++ b/app/styles/modules/team/team-table.scss @@ -19,8 +19,8 @@ position: relative; text-align: center; .icon { - color: $blackish; - font-size: 1.8rem; + @include svg-size(1.75rem); + fill: $gray; } .points { @extend %larger; @@ -28,7 +28,7 @@ color: $grayer; } .top { - color: $primary-light; + fill: $primary-light; opacity: 1; } &:hover { @@ -39,15 +39,17 @@ } .leave-project { @extend %small; - color: $gray-light; - display: block; + color: $red-light; .icon { + @include svg-size(.8rem); + fill: currentColor; margin-right: .2rem; } &:hover { + color: $red; .icon { - color: $red; - transition: color .3s linear; + color: currentColor; + transition: fill .3s linear; } } } @@ -69,12 +71,12 @@ display: flex; img { flex-basis: 66px; - flex-grow: 1; - max-width: 66px; + flex-grow: 0; + flex-shrink: 0; + width: 66px; } - figcaption { + .avatar-data { margin-left: 1rem; - width: 65%; span { overflow: hidden; text-overflow: ellipsis; diff --git a/app/styles/modules/wiki/wiki-nav.scss b/app/styles/modules/wiki/wiki-nav.scss index 39c20db9..f1f72c76 100644 --- a/app/styles/modules/wiki/wiki-nav.scss +++ b/app/styles/modules/wiki/wiki-nav.scss @@ -7,21 +7,26 @@ &:hover { .icon { opacity: 1; - transition: opacity 1s linear; + transition: opacity .2s linear; + transition-delay: .2s; } } a { - display: block; + align-items: center; + display: flex; + justify-content: space-between; padding: 1rem 0 1rem 1rem; span { cursor: pointer; } } .icon { - color: $blackish; - float: right; + fill: $gray-light; opacity: 0; - transition: opacity 1s linear; + &:hover { + cursor: pointer; + fill: $red; + } } input { @extend %text; diff --git a/app/svg/activity.svg b/app/svg/activity.svg deleted file mode 100644 index 66e8684f..00000000 --- a/app/svg/activity.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/svg/add.svg b/app/svg/add.svg deleted file mode 100644 index 77a2901a..00000000 --- a/app/svg/add.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/attachment.svg b/app/svg/attachment.svg deleted file mode 100644 index 784be839..00000000 --- a/app/svg/attachment.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/check.svg b/app/svg/check.svg deleted file mode 100644 index d97a17c3..00000000 --- a/app/svg/check.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/svg/client-requirement.svg b/app/svg/client-requirement.svg deleted file mode 100644 index fd20989a..00000000 --- a/app/svg/client-requirement.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/svg/dashboard.svg b/app/svg/dashboard.svg deleted file mode 100644 index 1b2061a2..00000000 --- a/app/svg/dashboard.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/svg/discover.svg b/app/svg/discover.svg deleted file mode 100644 index 5334c1bb..00000000 --- a/app/svg/discover.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/empty-project.svg b/app/svg/empty-project.svg deleted file mode 100644 index fdc92148..00000000 --- a/app/svg/empty-project.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/app/svg/eye.svg b/app/svg/eye.svg deleted file mode 100644 index 98489d10..00000000 --- a/app/svg/eye.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - diff --git a/app/svg/flag.svg b/app/svg/flag.svg deleted file mode 100644 index 2612a5cf..00000000 --- a/app/svg/flag.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/svg/gallery.svg b/app/svg/gallery.svg deleted file mode 100644 index d9f205bc..00000000 --- a/app/svg/gallery.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/graph.svg b/app/svg/graph.svg deleted file mode 100644 index b4a28d94..00000000 --- a/app/svg/graph.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/app/svg/help.svg b/app/svg/help.svg deleted file mode 100644 index b822b8fd..00000000 --- a/app/svg/help.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/svg/hide.svg b/app/svg/hide.svg deleted file mode 100644 index 0abadf8e..00000000 --- a/app/svg/hide.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/app/svg/iocaine.svg b/app/svg/iocaine.svg deleted file mode 100644 index 868c76d0..00000000 --- a/app/svg/iocaine.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/svg/like.svg b/app/svg/like.svg deleted file mode 100644 index dd7c202d..00000000 --- a/app/svg/like.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/app/svg/list.svg b/app/svg/list.svg deleted file mode 100644 index f2ef5c24..00000000 --- a/app/svg/list.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/location.svg b/app/svg/location.svg deleted file mode 100644 index 2e4b6957..00000000 --- a/app/svg/location.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - Location - - - diff --git a/app/svg/lock.svg b/app/svg/lock.svg deleted file mode 100644 index d39b2ba0..00000000 --- a/app/svg/lock.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/organizations.svg b/app/svg/organizations.svg deleted file mode 100644 index 4dca4867..00000000 --- a/app/svg/organizations.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/svg/project.svg b/app/svg/project.svg deleted file mode 100644 index 6e3ce332..00000000 --- a/app/svg/project.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/projects.svg b/app/svg/projects.svg deleted file mode 100644 index e8c66014..00000000 --- a/app/svg/projects.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/app/svg/promote.svg b/app/svg/promote.svg deleted file mode 100644 index 329e718f..00000000 --- a/app/svg/promote.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/recruit.svg b/app/svg/recruit.svg deleted file mode 100644 index fa8dcf32..00000000 --- a/app/svg/recruit.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/svg/remove.svg b/app/svg/remove.svg deleted file mode 100644 index 6097c7df..00000000 --- a/app/svg/remove.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/search.svg b/app/svg/search.svg deleted file mode 100644 index 8c58b6ec..00000000 --- a/app/svg/search.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/svg/sprite.svg b/app/svg/sprite.svg new file mode 100644 index 00000000..cd74aed7 --- /dev/null +++ b/app/svg/sprite.svg @@ -0,0 +1,369 @@ + + + + iocaine + + + + lock + + + + promote + + + + trash + + + + unlock + + + + client-requirement + + + + project + + + + team-requirement + + + + add + + + + scrum + + + + bulk + + + + close + + + + dashboard + + + + discover + + + + drag + + + + exclamation + + + + flag + + + + fold-column + + + + fold-row + + + + graph + + + + issues + + + + kanban + + + + like-empty + + + + like + + + + question + + + + search + + + + settings + + + + team + + + + timeline + + + + unfold-column + + + + unfold-row + + + + unwatch + + + + user + + + + wiki + + + + archive + + + + arrow-down + + + + arrow-left + + + + arrow-right + + + + arrow-up + + + + attachment + + + + briefcase + + + + bubble-empty + + + + bubble + + + + bug + + + + capslock + + + + check + + + + clipboard + + + + document + + + + documents + + + + downvote + + + + edit + + + + error + + + + filters-empty + + + + filters + + + + github + + + + maximize + + + + minimize + + + + move + + + + reload + + + + save + + + + upload + + + + upvote + + + + writer + + + + watch + + + + check-empty + + + + task + + + + api + + + + customize + + + + feel-love + + + + highly-designed + + + + integration + + + + lend-hand + + + + powerful + + + + smiley + + + + social-management + + + + speak-up + + + + gallery + + + + list + + + + Looking for people + + + + Activity + + + + diff --git a/app/svg/team-requirement.svg b/app/svg/team-requirement.svg deleted file mode 100644 index 154ea48c..00000000 --- a/app/svg/team-requirement.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/svg/team.svg b/app/svg/team.svg deleted file mode 100644 index fc0fc652..00000000 --- a/app/svg/team.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/svg/timeline.svg b/app/svg/timeline.svg deleted file mode 100644 index 56c0347a..00000000 --- a/app/svg/timeline.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/trash.svg b/app/svg/trash.svg deleted file mode 100644 index 281f1d29..00000000 --- a/app/svg/trash.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/unlock.svg b/app/svg/unlock.svg deleted file mode 100644 index fe3188a5..00000000 --- a/app/svg/unlock.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/svg/unwatch.svg b/app/svg/unwatch.svg deleted file mode 100644 index 9a305958..00000000 --- a/app/svg/unwatch.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/svg/upvote.svg b/app/svg/upvote.svg deleted file mode 100644 index 187d6159..00000000 --- a/app/svg/upvote.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/app/svg/watch.svg b/app/svg/watch.svg deleted file mode 100644 index cfce30c5..00000000 --- a/app/svg/watch.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/themes/high-contrast/custom.scss b/app/themes/high-contrast/custom.scss index c566bacc..758a94ce 100644 --- a/app/themes/high-contrast/custom.scss +++ b/app/themes/high-contrast/custom.scss @@ -180,7 +180,7 @@ tg-project-menu { background: lighten($white, 20%); border-top: 3px solid $black; .icon { - color: $black; + fill: $black; } } } diff --git a/app/themes/material-design/custom.scss b/app/themes/material-design/custom.scss index 7ada1f31..f17d0a73 100644 --- a/app/themes/material-design/custom.scss +++ b/app/themes/material-design/custom.scss @@ -155,7 +155,7 @@ tg-project-menu { background: lighten($primary-light, 20%); border-top: 3px solid $primary; .icon { - color: $primary; + fill: $primary; } } } diff --git a/app/themes/taiga/custom.scss b/app/themes/taiga/custom.scss index 7a5ad4d7..8c64cb2b 100644 --- a/app/themes/taiga/custom.scss +++ b/app/themes/taiga/custom.scss @@ -135,7 +135,7 @@ tg-project-menu { background: $whitish; border-top: 3px solid $gray-light; .icon { - color: $gray-light; + fill: $gray-light; } } }