sogo/UI/WebServerResources/js/Common/sgFolderStylesheet.directive.js

83 lines
2.9 KiB
JavaScript
Raw Normal View History

/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
(function() {
/* jshint validthis: true */
'use strict';
/*
* sgFolderStylesheet - Add CSS stylesheet for a folder's color (addressbook or calendar)
* @memberof SOGo.Common
* @restrict attribute
* @param {object} ngModel - the object literal describing the folder (an Addressbook or Calendar instance)
* @example:
<sg-folder-stylesheet
ng-repeat="calendar in calendars.list"
ng-model="calendar" />
*/
function sgFolderStylesheet() {
return {
restrict: 'E',
require: 'ngModel',
scope: {
ngModel: '='
},
replace: true,
bindToController: true,
controller: sgFolderStylesheetController,
controllerAs: 'cssCtrl',
template: [
'<style type="text/css">',
/* Background color */
' .bg-folder{{ cssCtrl.ngModel.id }} {',
' background-color: {{ cssCtrl.ngModel.color }} !important;',
' color: {{ cssCtrl.contrast(cssCtrl.ngModel.color) }} !important;',
' }',
' .sg-event.bg-folder{{ cssCtrl.ngModel.id }} md-icon {',
' color: {{ cssCtrl.contrast(cssCtrl.ngModel.color) }} !important;',
' }',
// Set the contrast color of toolbar icons except the one of the background
' md-toolbar.bg-folder{{ cssCtrl.ngModel.id }} md-icon:not(.sg-icon-toolbar-bg) {',
' color: {{ cssCtrl.contrast(cssCtrl.ngModel.color) }} !important;',
' }',
// Set the contrast color of input labels
2016-03-08 19:20:34 +01:00
' .bg-folder{{ cssCtrl.ngModel.id }} label,',
' .bg-folder{{ cssCtrl.ngModel.id }} .md-input {',
' color: {{ cssCtrl.contrast(cssCtrl.ngModel.color) }} !important;',
' opacity: 0.8;',
' }',
/* Foreground color */
2015-11-20 19:30:26 +01:00
' .fg-folder{{ cssCtrl.ngModel.id }},',
' .sg-event.fg-folder{{ cssCtrl.ngModel.id }} md-icon {',
' color: {{ cssCtrl.ngModel.color }} !important;',
' }',
/* Border color */
' .bdr-folder{{ cssCtrl.ngModel.id }} {',
' border-color: {{ cssCtrl.ngModel.color }} !important;',
' }',
' .contrast-bdr-folder{{ cssCtrl.ngModel.id }} {',
' border-color: {{ cssCtrl.contrast(cssCtrl.ngModel.color) }} !important;',
' }',
/* Checkbox color */
2016-03-08 19:20:34 +01:00
' .checkbox-folder{{ cssCtrl.ngModel.id }} ._md-icon {',
' background-color: {{ cssCtrl.ngModel.color }} !important;',
' }',
2016-03-08 19:20:34 +01:00
' .checkbox-folder{{ cssCtrl.ngModel.id }}.md-checked ._md-icon:after {',
' border-color: {{ cssCtrl.contrast(cssCtrl.ngModel.color) }} !important;',
' }',
'</style>'
].join('')
};
function sgFolderStylesheetController() {
var vm = this;
vm.contrast = contrast; // defined in Common/utils.js
}
}
angular
.module('SOGo.Common')
.directive('sgFolderStylesheet', sgFolderStylesheet);
})();