# Модули
# ungic.component, ungic.component.core
Ядро компонента, располагается в .core
директории каждого компонента, доступен для использования двумя способами:
- абсолютный
@use "ungic.component"
- относительный
@use "./.core"
Данный модуль содержит весь основной функционал для работы с компонентами.
Имеются ограничения использования!
Включение данного модуля возможно в
- once.scss
- render.scss и в любых файлах которые будут включены в render.scss
- произвольных модулях - модули которые будут использоваться при написании css правил, например functions или mixins.
// component/app/render.scss
@use ".core" as this;
@debug this.cid(); // app
@include this.component {
display: block; // .app {display:block}
}
# ungic.components
Доступ к списку компонентов проекта. На данный момент данный модуль возвращает только одну $cids
переменную, которая содержит список идентификаторов всех активных компонентов проекта
@use "ungic.components" as components;
@debug components.$cids;
# ungic.components.{cid}
Включить любой существующий компонент проекта как модуль (получить доступ к его API). Возвращает ядро компонента и все, что будет передано с помощью @forward директивы в index.scss файле компонента.
Имеются ограничения использования!
Включение данного модуля возможно в
- render.scss и в любых файлах которые будут включены в render.scss
- произвольных модулях - модули которые будут использоваться при написании css правил, например functions или mixins.
// component/grid/index.scss
@forward ".core";
// Forward custom mixins
@forward "mixins";
// Forward custom functions
@forward "functions";
// component/app/render.scss
@use ".core" as this;
@use "ungic.components.grid" as grid;
@debug this.cid(); // app
@debug grid.cid(); // grid
@include this.component {
@include grid.media(grid.media(max-sm)) {
display: none;
}
}
WARNING
Данный модуль служит исключительно для получения доступа к API компонента!
index.scss файл компонента не должен содержать CSS правила или включать их в себя! Для включения стилей одного компонента в другие компоненты, существует следующий способ.
# ungic.components.{cid}.{path}
Получить доступ к файлам другого компонента проекта.
Имеются ограничения использования!
Включение данного модуля возможно в
- render.scss и в любых файлах которые будут включены в render.scss
- произвольных модулях - модули которые будут использоваться при написании css правил, например functions или mixins.
@use ".core" as this;
@use "sass:meta";
@include this.component {
&-controls {
// Правила стилей для кнопки из controls плагина
@include meta.load-css('ungic.components.controls.btns.btn');
}
}
// .app-controls .btn {...}
# ungic.component.props
Получить доступ к вычисленным properties текущего компонента. Данный модуль является веткой ядра компонента, предназначен для конфигурирования файлов где ядро компонента недоступно!
Имеются ограничения использования!
Включение данного модуля возможно в
- config_over.scss файле проекта
- config.scss файле компонента
Для получения доступа к данному модулю из render.scss или произвольных модулей, требуется включать ядро компонента:
// project/config_over.scss
@use "sass:map";
$cid: null !default;
$config: () !default;
/* ------------------------------------------------ */
@use "ungic.theme" as theme;
@use "ungic.component.props" as props;
// Переопределили конфигурацию app компонента
// относительно его вычисленным properties
@if($cid == app) {
$config: map.merge($config, (
border-btn: (props.prop(border-width)
props.prop(border-style)
red)
));
}
// components/app/render.scss
@use ".core" as this;
@include this.component {
// Доступ к properties из ядра компонента
padding: this.prop(padding);
}
# ungic.project
Доступ к проекту осуществляется непосредственно с помощью данного модуля. Данный модуль позволяет получить доступ к следующим данным:
- Конфигурации проекта
- Properties проекта
Обратите внимание!
Использовать properties проекта для стилизации компонентов не рекомендуется! Так как, properties проекта автоматически наследуются компонентами и суммируются с их личными properties. Именно поэтому, при построении CSS правил компонентов, следует использовать их собственные методы ядра prop, props.
# ungic.theme
Данный модуль отвечает за темизацию компонентов.
Ссылки по теме:
# ungic.meta
Данный модуль содержит системные методы фреймворка.
# ungic.utils
Данный модуль содержит инструменты которые могут быть использованы при написании CSS правил компонентов.
# Инструменты для работы с RTL
Данный модуль содержит набор инструментов, которые облегчают работу с rtlcss (opens new window) плагином:
Данные методы являются функциями которые принимают значения и подставляют необходимые директивы (комментарии) rtlcss плагина:
@use ".core" as this;
@use "ungic.utils" as *;
.btn {
// Игнорировать обработку RTL плагином
margin-left: rtli(10px);
// Разные результаты для LTR / RTL
border-left: dir(10px, 20px);
// и тд
font-family: rtl-prepend('"Segoe UI", Helvetica, Arial', 'Heebo', ',');
}
# ungic.sprites
Модуль который генерируется icons плагином, служит для работы с иконками - спрайтами.
# ungic.font-icons
Модуль который генерируется icons плагином, служит для работы с иконками - шрифтами.