@progress/kendo-theme-core 6.5.0-dev.0 → 6.5.0-dev.2

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.
@@ -47,6 +47,36 @@
47
47
  @return $map;
48
48
  }
49
49
 
50
+ /// Returns a deep-map with the keys and values from `$map` and `$args`.
51
+ /// @param {Map} $maps - The maps to deep-merge.
52
+ /// @return {Map} - A map with the keys and values from `$map` and `$args`.
53
+ ///
54
+ /// @example scss - Usage
55
+ /// @debug k-map-deep-merge( ( "foo": ("bar": "baz", "baz": "qux" ) ), ( "foo": ("bar": "foo") ) ); // => ( "foo": ("bar": "foo", "baz": "qux" ))
56
+ @function k-map-deep-merge($maps...) {
57
+ $merged: ();
58
+
59
+ @each $map in $maps {
60
+ @each $key, $val in $map {
61
+ @if (k-meta-type-of($val) == 'map') {
62
+ $current: k-map-get($merged, $key);
63
+ @if (k-meta-type-of($current) == 'map') {
64
+ $val: k-map-deep-merge($current, $val);
65
+ $map: k-map-merge(
66
+ $map,
67
+ (
68
+ $key: $val
69
+ )
70
+ );
71
+ }
72
+ }
73
+ }
74
+ $merged: k-map-merge($merged, $map);
75
+ }
76
+
77
+ @return $merged;
78
+ }
79
+
50
80
  /// Returns a map with the keys and values from `$map` except for `$keys`.
51
81
  /// @param {Map} $map - The map to remove keys from.
52
82
  /// @param {Any} $keys - The keys to remove from `$map`.
@@ -20,6 +20,10 @@
20
20
  /// @example scss - Usage
21
21
  /// @debug k-meta-function-exists( "k-string-replace" ); // => true
22
22
  @function k-meta-function-exists( $name ) {
23
+ @if $name == "" {
24
+ @return false;
25
+ }
26
+
23
27
  @return function-exists( $name );
24
28
  }
25
29
 
@@ -1,3 +1,12 @@
1
+ $svg-escaped-characters: (
2
+ ("%", "%25"),
3
+ ("<", "%3c"),
4
+ (">", "%3e"),
5
+ ("#", "%23"),
6
+ ("(", "%28"),
7
+ (")", "%29")
8
+ ) !default;
9
+
1
10
  /// Returns the first index of `$substring` in `$string`, or `null` if `$string` doesn’t contain `$substring`.
2
11
  /// @param {String} $string - The string to process.
3
12
  /// @param {String} $substring - The substring to look for.
@@ -116,3 +125,31 @@
116
125
  @function k-string-unquote( $string ) {
117
126
  @return unquote( $string );
118
127
  }
128
+
129
+
130
+ // See https://www.sassmeister.com/gist/1b4f2da5527830088e4d
131
+ @function str-replace($string, $search, $replace: "") {
132
+ $index: k-string-index($string, $search);
133
+
134
+ @if $index {
135
+ @return k-string-slice($string, 1, $index - 1) + $replace + str-replace(k-string-slice($string, $index + k-string-length($search)), $search, $replace);
136
+ }
137
+
138
+ @return $string;
139
+ }
140
+
141
+ // See https://codepen.io/kevinweber/pen/dXWoRw
142
+ @function escape-svg($string) {
143
+ @if k-string-index($string, "data:image/svg+xml") {
144
+ @each $char, $encoded in $svg-escaped-characters {
145
+ // Do not escape the url brackets
146
+ @if k-string-index($string, "url(") == 1 {
147
+ $string: url("#{str-replace(k-string-slice($string, 6, -3), $char, $encoded)}");
148
+ } @else {
149
+ $string: str-replace($string, $char, $encoded);
150
+ }
151
+ }
152
+ }
153
+
154
+ @return $string;
155
+ }
@@ -1,5 +1,3 @@
1
- @import "../_variables.scss";
2
-
3
1
  @import "./_color.import.scss";
4
2
  @import "./_color-contrast.import.scss";
5
3
  @import "./_color-manipulation.import.scss";
@@ -0,0 +1,28 @@
1
+ @mixin fill( $color: null, $bg: null, $border: null, $gradient: null ) {
2
+ @if $border {
3
+ border-color: $border;
4
+ }
5
+ @if $color {
6
+ color: $color;
7
+ }
8
+ @if $bg {
9
+ background-color: $bg;
10
+ }
11
+ @if $gradient {
12
+ @include linear-gradient( $gradient );
13
+ }
14
+ }
15
+
16
+ @mixin linear-gradient( $gradient: null ) {
17
+ @if $gradient and $kendo-enable-gradients {
18
+ @if $gradient == none {
19
+ background-image: none;
20
+ } @else {
21
+ background-image: linear-gradient( $gradient );
22
+ }
23
+ }
24
+ }
25
+
26
+ @mixin repeating-striped-gradient( $color: rgba(255,255,255,.15), $background: #FFF, $angle: 45deg, $largeStep: 2px, $smallStep: 1px) {
27
+ background-image: repeating-linear-gradient($angle, $background, $background $smallStep, $color $smallStep, $color $largeStep);
28
+ }
@@ -7,3 +7,13 @@
7
7
  pointer-events: none;
8
8
  box-shadow: none;
9
9
  }
10
+
11
+ @mixin disabled-color( $color: null, $bg: null, $border: null ) {
12
+ outline: none;
13
+ cursor: default;
14
+ background-color: $bg;
15
+ color: $color;
16
+ border-color: $border;
17
+ pointer-events: none;
18
+ box-shadow: none;
19
+ }
@@ -1,6 +1,6 @@
1
1
  $kendo-scrollbar-width: 17px !default;
2
2
 
3
- @mixin hide-scrollbar( $dir: "right", $max-scrollbar: 100px ) {
3
+ @mixin hide-scrollbar( $dir: "right", $max-scrollbar: 100px) {
4
4
  // anything larger than the scrollbar width will do
5
5
  $scrollbar-size: var( --kendo-scrollbar-width, #{$kendo-scrollbar-width} );
6
6
  $margin: calc( -#{$max-scrollbar} - #{$scrollbar-size} );
@@ -16,3 +16,15 @@ $kendo-scrollbar-width: 17px !default;
16
16
  margin-right: -$max-scrollbar;
17
17
  }
18
18
  }
19
+
20
+ @mixin hide-scrollbar-dir-agnostic($max-scrollbar: 100px) {
21
+ // anything larger than the scrollbar width will do
22
+ $scrollbar-size: var( --kendo-scrollbar-width, #{$kendo-scrollbar-width} );
23
+ $margin: calc( -#{$max-scrollbar} - #{$scrollbar-size} );
24
+
25
+ padding-inline-end: $max-scrollbar;
26
+ padding-inline-start: $max-scrollbar;
27
+
28
+ margin-inline-start: -$max-scrollbar;
29
+ margin-inline-end: $margin;
30
+ }
@@ -2,19 +2,13 @@
2
2
  @import "./_box-shadow.scss";
3
3
  @import "./_data-uri.scss";
4
4
  @import "./_disabled.scss";
5
+ @import "./_decoration.scss";
5
6
  @import "./_focus-indicator.scss";
6
7
  @import "./_gradient.scss";
7
8
  @import "./_hide-scrollbar.scss";
8
9
  @import "./_import-once.scss";
9
10
  @import "./_typography.scss";
10
11
 
11
- @mixin fill( $color: null, $bg: null, $border: null, $gradient: null ) {
12
- border-color: $border;
13
- color: $color;
14
- background-color: $bg;
15
- @include linear-gradient( $gradient );
16
- }
17
-
18
12
  @mixin background-image( $background-image: null ) {
19
13
  @if $background-image {
20
14
  background-image: url(#{$background-image});
@@ -0,0 +1,133 @@
1
+ @mixin kendo-core--styles--base() {
2
+ // Disabled state
3
+ .k-disabled,
4
+ .k-widget[disabled],
5
+ .k-disabled {
6
+ @include disabled-color(
7
+ $color: var( --kendo-disabled-text, inherit ),
8
+ $border: var( --kendo-disabled-border, inherit )
9
+ );
10
+
11
+ .k-link {
12
+ cursor: default;
13
+ outline: 0;
14
+ }
15
+ }
16
+
17
+ // Horizontal line
18
+ .k-hr {
19
+ margin-block: k-map-get( $kendo-spacing, 4 );
20
+ padding: 0;
21
+ height: 0;
22
+ border-width: 1px 0 0;
23
+ border-style: solid;
24
+ border-color: var( --kendo-component-border, inherit );
25
+ display: block;
26
+ float: none;
27
+ clear: both;
28
+ }
29
+
30
+ // Horizontal rule
31
+ .k-d-flex-row > .k-hr {
32
+ margin: 0;
33
+ width: 0;
34
+ height: auto;
35
+ border-width: 0 0 0 1px;
36
+ flex: 0 0 auto;
37
+ }
38
+
39
+ // Vertical rule
40
+ .k-d-flex-col > .k-hr {
41
+ margin: 0;
42
+ flex: 0 0 auto;
43
+ }
44
+
45
+ .k-sprite {
46
+ display: inline-block;
47
+ width: 1rem;
48
+ height: 1rem;
49
+ overflow: hidden;
50
+ background-repeat: no-repeat;
51
+ font-size: 0;
52
+ line-height: 0;
53
+ text-align: center;
54
+ }
55
+
56
+ .k-image {
57
+ display: inline-block;
58
+ }
59
+
60
+ // Layout
61
+ .k-reset {
62
+ margin: 0;
63
+ padding: 0;
64
+ border-width: 0;
65
+ outline: 0;
66
+ text-decoration: none;
67
+ font: inherit;
68
+ list-style: none;
69
+ }
70
+
71
+ kendo-sortable {
72
+ display: block;
73
+ }
74
+
75
+
76
+ // Links
77
+ .k-link,
78
+ .k-link:hover {
79
+ color: inherit;
80
+ text-decoration: none;
81
+ outline: 0;
82
+ cursor: pointer;
83
+ }
84
+
85
+ // Outline
86
+ .k-content {
87
+ outline: 0;
88
+ }
89
+
90
+ // Centering
91
+ .k-centered {
92
+ position: absolute;
93
+ top: 50%;
94
+ left: 50%;
95
+ transform: translate(-50%, -50%);
96
+ }
97
+
98
+ // Disable mouse events
99
+ .k-no-click {
100
+ pointer-events: none;
101
+ }
102
+
103
+ // Off-screen container used during PDF export
104
+ .k-pdf-export-shadow {
105
+ position: absolute;
106
+ overflow: hidden;
107
+ left: -15000px;
108
+ width: 14400px;
109
+ }
110
+
111
+ // PDF export icons fix
112
+ .kendo-pdf-hide-pseudo-elements::before,
113
+ .kendo-pdf-hide-pseudo-elements::after {
114
+ display: none !important; // stylelint-disable-line declaration-no-important
115
+ }
116
+
117
+ // Dirty indicator
118
+ .k-dirty {
119
+ margin: 0;
120
+ padding: 0;
121
+ width: 0;
122
+ height: 0;
123
+ border-width: 3px;
124
+ border-style: solid;
125
+ border-block-start-color: currentColor;
126
+ border-block-end-color: transparent;
127
+ border-inline-start-color: transparent;
128
+ border-inline-end-color: currentColor;
129
+ position: absolute;
130
+ inset-block-start: 0;
131
+ inset-inline-end: 0;
132
+ }
133
+ }
@@ -1,4 +1,18 @@
1
1
  @mixin kendo-core--styles--layout() {
2
+ .k-body {
3
+ @include typography(
4
+ var( --kendo-font-size, inherit ),
5
+ var( --kendo-font-family, inherit ),
6
+ var( --kendo-line-height, normal ),
7
+ var( --kendo-font-weight, normal ),
8
+ var( --kendo-letter-spacing, normal ),
9
+ );
10
+ @include fill(
11
+ var( --kendo-body-text, initial ),
12
+ var( --kendo-body-bg, initial )
13
+ );
14
+ margin: 0;
15
+ }
2
16
 
3
17
  // Basic layout
4
18
  .k-hstack {
@@ -0,0 +1,119 @@
1
+ @mixin kendo-core--styles--loading() {
2
+ // Loading mask
3
+ .k-loading-mask,
4
+ .k-loading-image,
5
+ .k-loading-color {
6
+ width: 100%;
7
+ height: 100%;
8
+ box-sizing: border-box;
9
+ position: absolute;
10
+ top: 0;
11
+ left: 0;
12
+
13
+ *,
14
+ *::before,
15
+ *::after,
16
+ &::before,
17
+ &::after {
18
+ box-sizing: border-box;
19
+ }
20
+ }
21
+
22
+ .k-loading-mask {
23
+ z-index: $kendo-zindex-loading;
24
+
25
+ &.k-opaque {
26
+ .k-loading-color {
27
+ opacity: 1;
28
+ }
29
+ }
30
+ }
31
+ .k-loading-text {
32
+ text-indent: -4000px;
33
+ text-align: center;
34
+ position: absolute;
35
+ color: $kendo-loading-text;
36
+ }
37
+ .k-loading-image {
38
+ z-index: 2;
39
+ color: $kendo-loading-text;
40
+ }
41
+ .k-loading-color {
42
+ background-color: $kendo-loading-bg;
43
+ opacity: $kendo-loading-opacity;
44
+ }
45
+
46
+ // Loading indicator
47
+ .k-i-loading {
48
+ position: relative;
49
+ background-color: transparent;
50
+ box-sizing: border-box;
51
+ color: $kendo-loading-text;
52
+
53
+ &::before,
54
+ &::after {
55
+ box-sizing: border-box;
56
+ }
57
+ }
58
+
59
+ .k-i-loading::before,
60
+ .k-i-loading::after,
61
+ .k-loading-image::before,
62
+ .k-loading-image::after {
63
+ position: absolute;
64
+ top: 50%;
65
+ left: 50%;
66
+ display: inline-block;
67
+ content: "";
68
+ box-sizing: inherit;
69
+ border-radius: 50%;
70
+ border-width: .05em;
71
+ border-style: solid;
72
+ border-color: currentColor;
73
+ border-top-color: transparent;
74
+ border-bottom-color: transparent;
75
+ background-color: transparent;
76
+ }
77
+
78
+ .k-icon.k-i-loading::before,
79
+ .k-icon.k-i-loading::after {
80
+ content: "";
81
+ }
82
+
83
+ .k-i-loading::before,
84
+ .k-loading-image::before {
85
+ margin-top: -.5em;
86
+ margin-left: -.5em;
87
+ width: 1em;
88
+ height: 1em;
89
+ animation: k-loading-animation .7s linear infinite;
90
+ }
91
+
92
+ .k-i-loading::after,
93
+ .k-loading-image::after {
94
+ margin-top: -.25em;
95
+ margin-left: -.25em;
96
+ width: .5em;
97
+ height: .5em;
98
+ animation: k-loading-animation reverse 1.4s linear infinite;
99
+ }
100
+
101
+ .k-loading-image::before,
102
+ .k-loading-image::after {
103
+ content: "";
104
+ // See https://github.com/telerik/kendo-themes/issues/1925
105
+ border-width: 1px; // TODO: Remove once we drop IE support
106
+ border-width: clamp( .015em, 1px, 1px );
107
+ font-size: 4em;
108
+ }
109
+
110
+ // Loading animation
111
+ @keyframes k-loading-animation {
112
+ 0% {
113
+ transform: rotate(0deg);
114
+ }
115
+ 100% {
116
+ transform: rotate(360deg);
117
+ }
118
+ }
119
+ }
@@ -0,0 +1,25 @@
1
+ @mixin kendo-core--styles--selection() {
2
+ .k-marquee {
3
+ position: absolute;
4
+ z-index: 100000;
5
+ }
6
+
7
+ .k-marquee-color,
8
+ .k-marquee-text {
9
+ position: absolute;
10
+ top: 0;
11
+ left: 0;
12
+ width: 100%;
13
+ height: 100%;
14
+ }
15
+
16
+ .k-marquee-color {
17
+ color: $kendo-selected-text;
18
+ background-color: k-get-theme-color-var( primary-60, #{$kendo-selected-bg} );
19
+ border-color: k-get-theme-color-var( primary-100, #{$kendo-selected-border} );
20
+ opacity: .6;
21
+ }
22
+ .k-marquee-text {
23
+ color: $kendo-selected-text;
24
+ }
25
+ }
@@ -2,6 +2,9 @@
2
2
  @import "./_asp-fallback.scss";
3
3
  @import "./_layout.scss";
4
4
  @import "./_normalize.scss";
5
+ @import "./_base.scss";
6
+ @import "./_loading.scss";
7
+ @import "./_selection.scss";
5
8
 
6
9
 
7
10
  @mixin kendo-core--styles() {
@@ -9,4 +12,7 @@
9
12
  @include kendo-core--styles--asp-fallback();
10
13
  @include kendo-core--styles--layout();
11
14
  @include kendo-core--styles--normalize();
15
+ @include kendo-core--styles--base();
16
+ @include kendo-core--styles--loading();
17
+ @include kendo-core--styles--selection();
12
18
  }