@ws-serenity/sass-styling 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,3 +9,47 @@
9
9
  @content;
10
10
  }
11
11
  }
12
+
13
+ /**
14
+ * при использовании основного механизма ввода можно без труда навести указатель на элемент
15
+ * e.g. desktop
16
+ */
17
+ @mixin device-with-hover {
18
+ @media (hover: hover) {
19
+ @content;
20
+ }
21
+ }
22
+
23
+ /**
24
+ * основной механизм ввода не позволяет навести указатель на элемент, или позволяет, но это не очень-то просто
25
+ * (например — для имитации наведения указателя на элемент используется длительное касание экрана)
26
+ * e.g. tablet, mobile
27
+ */
28
+ @mixin device-without-hover {
29
+ @media (hover: none) {
30
+ @content;
31
+ }
32
+ }
33
+
34
+ /**
35
+ * стили для пользователей, включивших в системе параметр
36
+ * минимизации движения или анимаций (accessibility)
37
+ */
38
+ @mixin prefers-reduced-motion {
39
+ @media (prefers-reduced-motion: reduce) {
40
+ @content;
41
+ }
42
+ }
43
+
44
+ /**
45
+ * touch-devices-friendly hover
46
+ * примененный hover-стиль будет работать только для устройств,
47
+ * которые полноценно поддерживают hover (e.g. desktop)
48
+ */
49
+ @mixin hover-friendly {
50
+ @include device-with-hover {
51
+ &:hover {
52
+ @content;
53
+ }
54
+ }
55
+ }
@@ -38,6 +38,27 @@
38
38
  bottom: 0;
39
39
  }
40
40
 
41
+ /**
42
+ * миксин для автоматической гернерации CSS Grid областей и классов
43
+ * на основе переданного grid-template-areas
44
+ *
45
+ * @param $grid-template-areas - строковое представление grid-областей
46
+ * строка или несколько строк, разделенные пробелом. допускается многострочная запись
47
+ * точка (.) обозначает пустую ячейку, класс для (.) не создается
48
+ * e.g.
49
+ * 'a b b . с с с'
50
+ *
51
+ * или
52
+ * 'a b b' '. с с с .'
53
+ *
54
+ * или
55
+ * 'a b b'
56
+ * '. с с с .'
57
+ *
58
+ * @param $isGlobal - управление скоупом (scope), в котором будут созданы классы
59
+ * false (по умолчанию) - создаются обычные CSS-классы
60
+ * true - глобальные классы через :global() (актуально для CSS Modules)
61
+ */
41
62
  @mixin grid-areas($grid-template-areas, $isGlobal:false) {
42
63
  display: grid;
43
64
  grid-template-areas: $grid-template-areas;
@@ -64,3 +85,43 @@
64
85
  }
65
86
  }
66
87
  }
88
+
89
+ /**
90
+ * автоматическое проставление grid-areas дочерним элементам
91
+ * согласно переданного массива названий $grid-areas.
92
+ * удобно использовать, если элеметны рендерятся динамически
93
+ * и явно задать grid-area для каждого элемента не представляется возможным
94
+ *
95
+ * e.g.
96
+ * $grid-areas: a, b, c;
97
+ *
98
+ * .some-grid-class {
99
+ * @include set-children-grid-areas($grid-areas);
100
+ *
101
+ * grid-template-areas:
102
+ * 'a b'
103
+ * 'c c';
104
+ * }
105
+ */
106
+ @mixin set-children-grid-areas($grid-areas) {
107
+ @for $i from 1 through length($grid-areas) {
108
+ > :nth-child(#{$i}) {
109
+ grid-area: nth($grid-areas, $i);
110
+ }
111
+ }
112
+ }
113
+
114
+ /**
115
+ * автоматическое удаление проставленных grid-areas дочерним эл-там
116
+ * согласно переданного массива названий $grid-areas.
117
+ * убирает проставленное свойство grid-template-areas у grid-контейнера
118
+ */
119
+ @mixin unset-children-grid-areas($grid-areas) {
120
+ @for $i from 1 through length($grid-areas) {
121
+ > :nth-child(#{$i}) {
122
+ grid-area: unset !important;
123
+ }
124
+ }
125
+
126
+ grid-template-areas: initial;
127
+ }
@@ -23,7 +23,7 @@ $default-shimmer-color: rgba(255, 255, 255, 0.5);
23
23
  }
24
24
 
25
25
  /**
26
- * Миксин для создания эффекта пульсации (осцилляции) прозрачности элемента
26
+ * Миксин для создания эффекта пульсации (осцилляции) прозрачности элемента
27
27
  */
28
28
  // @formatter:off
29
29
  @keyframes oscillating {
@@ -53,3 +53,13 @@
53
53
  }
54
54
  }
55
55
 
56
+ /**
57
+ * миксин для выставление стилей по кол-ву дочерних эл-тов
58
+ * @param $childrenNumber - количество дочерних элементов.
59
+ */
60
+ // выставление стилей по кол-ву дочерних эл-тов
61
+ @mixin has-n-children($childrenNumber) {
62
+ &:has(> :nth-child(#{$childrenNumber}):last-child) {
63
+ @content;
64
+ }
65
+ }
@@ -17,3 +17,21 @@
17
17
  overflow: hidden;
18
18
  text-overflow: ellipsis;
19
19
  }
20
+
21
+ %user-select-none {
22
+ -webkit-user-select: none;
23
+ -moz-user-select: none;
24
+ -ms-user-select: none;
25
+ user-select: none;
26
+ }
27
+
28
+ /**
29
+ * миксин для регулирования возможности выделять текст
30
+ * @param $value - none, text, all, auto (default)
31
+ */
32
+ @mixin user-select($value: auto) {
33
+ -webkit-user-select: $value;
34
+ -moz-user-select: $value;
35
+ -ms-user-select: $value;
36
+ user-select: $value;
37
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ws-serenity/sass-styling",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "",
5
5
  "directories": {
6
6
  "lib": "lib"
package/readme.md CHANGED
@@ -13,10 +13,10 @@
13
13
 
14
14
  ### Содержимое
15
15
  - `adaptive` - миксины для адаптива
16
- - `alignment` - размещение элементов (flex, margin-center,...)
16
+ - `alignment` - размещение элементов (flex, margin-center, grid, ...)
17
17
  - `functions` - полезные sass-функции
18
18
  - `keyframes` - анимации
19
- - `styling` - внешний вид (максимальное скругление, background-alpha)
19
+ - `styling` - внешний вид (максимальное скругление, background-alpha, ...)
20
20
  - `svgUtils` - цвет и размер svg
21
21
  - `textUtils` - оверфлоу текста
22
22