Подключение функции смены цветовой схемы приложения
Функция смены цветовой схемы приложения доступна только для темы оформелния Ghost.
1.В ember-cli-build.js
добавить настройки сборки приложения (после этого перезапустить проект).
Значения в массиве fingerprint.exclude
- это названия цветовых схем.
В outputPaths.app.css
необходимо сопоставить названия конечных *.less
файлов и названия css
файлов на выходе.
outputPaths: {
app: {
css: {
'app': '/assets/purple.css',
'dark': '/assets/dark.css',
'default': '/assets/default.css'
}
}
},
fingerprint: {
exclude: ['purple', 'dark', 'default']
},
2.В шаблон application.hbs
добавить контрол для выбора цветовой схемы.
{{flexberry-dropdown
class="compact theme"
items=themes
value='blue'
onChange=(action 'changeTheme')
settings=(hash direction="upward")
}}
3.В контроллере объявить массив themes
и присвоить значения, добавить экшн changeTheme
, который будет срабатывать при выборе значения в контроле.
/**
Themes supported by application.
@property themes
@type String[]
@default ['purple', 'dark', 'default']
*/
themes: undefined,
init() {
this._super(...arguments);
this.set('themes', ['purple', 'dark', 'default']);
},
actions: {
/**
Select themes.
@method actions.changeTheme
*/
changeTheme(key, value) {
let sheet = document.querySelector('#theme');
if (!sheet) {
return;
}
let rootURL = this.get('router.location.location.origin') + config.rootURL;
sheet.setAttribute('href', `${rootURL}assets/${value}.css`);
}
}
4.В app.less
в первой строке прописать дефолтную тему.
@Theme: 'purple';
5.Добавить в эту же деррикторию недостающие *.less
файлы. По числу тем оформления, исключая дефолтную, которая указана в app.less
, файлы должны назваться так же как указано в outputPaths
и в выпадающем списке выбора тем.
В этих файлах нужно прописать название темы и импорт как в app.less
.
Например, для dark.less
:
@Theme: 'dark';
@import 'src/flexberry-imports';
/*<импорты как в app.less>*/
6.В папке styles/site/globals/
добваить аналогичные *.less
файлы, по числу тем оформления, включая дефолтную.
Таким образом, для нашего примера будет добвалено три файла purple.less
, dark.less
, default.less
.
В данных файлах будут заданы значения переменных конкретной цветовой схемы.
Например, для темы dark
можно указать:
// Main
@defaultColor : fade(#000, 10%);
@controlColor : fade(#000, 15%);
@dimmerBackgroundColor : rgba(0, 0, 0, 0.3);
// Sidebar
@sidebarBackgroundColor: #353535;
// Page
@textColor : rgba(255, 255, 255, 0.65);
@selectedTextColor : rgba(255, 255, 255, 0.75);
@pageBackground : #3e3e3e;
@inputHoverBorderColor : @defaultColor;
@inputReadonlyBackground: fade(#000, 15%);
@defaultInputFocusBackground: @defaultColor;
/*-------------------
Scroll Bars
--------------------*/
@trackBooxShadow: inset 0 0 10px 10px fade(#000, 15%);
// OLV
@olvRowActiveBackground : fade(#ECF2FB, 20%);
@olvContainerBorderColorDefault: rgba(0, 0, 0, 0.14);