@sd-angular/core 19.0.0-beta.86 → 19.0.0-beta.87
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.
- package/README.md +716 -716
- package/assets/fonts/fonts.scss +115 -115
- package/assets/scss/bootstrap-4.6.2/_alert.scss +52 -52
- package/assets/scss/bootstrap-4.6.2/_badge.scss +54 -54
- package/assets/scss/bootstrap-4.6.2/_breadcrumb.scss +42 -42
- package/assets/scss/bootstrap-4.6.2/_button-group.scss +163 -163
- package/assets/scss/bootstrap-4.6.2/_buttons.scss +142 -142
- package/assets/scss/bootstrap-4.6.2/_card.scss +286 -286
- package/assets/scss/bootstrap-4.6.2/_carousel.scss +200 -200
- package/assets/scss/bootstrap-4.6.2/_close.scss +40 -40
- package/assets/scss/bootstrap-4.6.2/_code.scss +48 -48
- package/assets/scss/bootstrap-4.6.2/_custom-forms.scss +526 -526
- package/assets/scss/bootstrap-4.6.2/_dropdown.scss +192 -192
- package/assets/scss/bootstrap-4.6.2/_forms.scss +347 -347
- package/assets/scss/bootstrap-4.6.2/_functions.scss +190 -190
- package/assets/scss/bootstrap-4.6.2/_grid.scss +73 -73
- package/assets/scss/bootstrap-4.6.2/_images.scss +42 -42
- package/assets/scss/bootstrap-4.6.2/_input-group.scss +211 -211
- package/assets/scss/bootstrap-4.6.2/_jumbotron.scss +17 -17
- package/assets/scss/bootstrap-4.6.2/_list-group.scss +154 -154
- package/assets/scss/bootstrap-4.6.2/_media.scss +8 -8
- package/assets/scss/bootstrap-4.6.2/_mixins.scss +47 -47
- package/assets/scss/bootstrap-4.6.2/_modal.scss +240 -240
- package/assets/scss/bootstrap-4.6.2/_nav.scss +125 -125
- package/assets/scss/bootstrap-4.6.2/_navbar.scss +332 -332
- package/assets/scss/bootstrap-4.6.2/_pagination.scss +74 -74
- package/assets/scss/bootstrap-4.6.2/_popover.scss +170 -170
- package/assets/scss/bootstrap-4.6.2/_print.scss +132 -132
- package/assets/scss/bootstrap-4.6.2/_progress.scss +47 -47
- package/assets/scss/bootstrap-4.6.2/_reboot.scss +484 -484
- package/assets/scss/bootstrap-4.6.2/_root.scss +19 -19
- package/assets/scss/bootstrap-4.6.2/_spinners.scss +65 -65
- package/assets/scss/bootstrap-4.6.2/_tables.scss +185 -185
- package/assets/scss/bootstrap-4.6.2/_toasts.scss +46 -46
- package/assets/scss/bootstrap-4.6.2/_tooltip.scss +115 -115
- package/assets/scss/bootstrap-4.6.2/_transitions.scss +26 -26
- package/assets/scss/bootstrap-4.6.2/_type.scss +125 -125
- package/assets/scss/bootstrap-4.6.2/_utilities.scss +18 -18
- package/assets/scss/bootstrap-4.6.2/_variables.scss +1150 -1150
- package/assets/scss/bootstrap-4.6.2/bootstrap-grid.scss +30 -30
- package/assets/scss/bootstrap-4.6.2/bootstrap-reboot.scss +12 -12
- package/assets/scss/bootstrap-4.6.2/bootstrap.scss +44 -44
- package/assets/scss/bootstrap-4.6.2/mixins/_alert.scss +13 -13
- package/assets/scss/bootstrap-4.6.2/mixins/_background-variant.scss +23 -23
- package/assets/scss/bootstrap-4.6.2/mixins/_badge.scss +17 -17
- package/assets/scss/bootstrap-4.6.2/mixins/_border-radius.scss +76 -76
- package/assets/scss/bootstrap-4.6.2/mixins/_box-shadow.scss +20 -20
- package/assets/scss/bootstrap-4.6.2/mixins/_breakpoints.scss +123 -123
- package/assets/scss/bootstrap-4.6.2/mixins/_buttons.scss +110 -110
- package/assets/scss/bootstrap-4.6.2/mixins/_caret.scss +62 -62
- package/assets/scss/bootstrap-4.6.2/mixins/_clearfix.scss +7 -7
- package/assets/scss/bootstrap-4.6.2/mixins/_deprecate.scss +10 -10
- package/assets/scss/bootstrap-4.6.2/mixins/_float.scss +14 -14
- package/assets/scss/bootstrap-4.6.2/mixins/_forms.scss +195 -195
- package/assets/scss/bootstrap-4.6.2/mixins/_gradients.scss +45 -45
- package/assets/scss/bootstrap-4.6.2/mixins/_grid-framework.scss +80 -80
- package/assets/scss/bootstrap-4.6.2/mixins/_grid.scss +69 -69
- package/assets/scss/bootstrap-4.6.2/mixins/_hover.scss +37 -37
- package/assets/scss/bootstrap-4.6.2/mixins/_image.scss +36 -36
- package/assets/scss/bootstrap-4.6.2/mixins/_list-group.scss +21 -21
- package/assets/scss/bootstrap-4.6.2/mixins/_lists.scss +7 -7
- package/assets/scss/bootstrap-4.6.2/mixins/_nav-divider.scss +11 -11
- package/assets/scss/bootstrap-4.6.2/mixins/_pagination.scss +22 -22
- package/assets/scss/bootstrap-4.6.2/mixins/_reset-text.scss +17 -17
- package/assets/scss/bootstrap-4.6.2/mixins/_resize.scss +6 -6
- package/assets/scss/bootstrap-4.6.2/mixins/_screen-reader.scss +34 -34
- package/assets/scss/bootstrap-4.6.2/mixins/_size.scss +7 -7
- package/assets/scss/bootstrap-4.6.2/mixins/_table-row.scss +39 -39
- package/assets/scss/bootstrap-4.6.2/mixins/_text-emphasis.scss +17 -17
- package/assets/scss/bootstrap-4.6.2/mixins/_text-hide.scss +11 -11
- package/assets/scss/bootstrap-4.6.2/mixins/_text-truncate.scss +8 -8
- package/assets/scss/bootstrap-4.6.2/mixins/_transition.scss +26 -26
- package/assets/scss/bootstrap-4.6.2/mixins/_visibility.scss +8 -8
- package/assets/scss/bootstrap-4.6.2/utilities/_align.scss +8 -8
- package/assets/scss/bootstrap-4.6.2/utilities/_background.scss +19 -19
- package/assets/scss/bootstrap-4.6.2/utilities/_borders.scss +75 -75
- package/assets/scss/bootstrap-4.6.2/utilities/_clearfix.scss +3 -3
- package/assets/scss/bootstrap-4.6.2/utilities/_display.scss +26 -26
- package/assets/scss/bootstrap-4.6.2/utilities/_embed.scss +39 -39
- package/assets/scss/bootstrap-4.6.2/utilities/_flex.scss +51 -51
- package/assets/scss/bootstrap-4.6.2/utilities/_float.scss +11 -11
- package/assets/scss/bootstrap-4.6.2/utilities/_interactions.scss +5 -5
- package/assets/scss/bootstrap-4.6.2/utilities/_overflow.scss +5 -5
- package/assets/scss/bootstrap-4.6.2/utilities/_position.scss +32 -32
- package/assets/scss/bootstrap-4.6.2/utilities/_screenreaders.scss +11 -11
- package/assets/scss/bootstrap-4.6.2/utilities/_shadows.scss +6 -6
- package/assets/scss/bootstrap-4.6.2/utilities/_sizing.scss +20 -20
- package/assets/scss/bootstrap-4.6.2/utilities/_spacing.scss +73 -73
- package/assets/scss/bootstrap-4.6.2/utilities/_stretched-link.scss +19 -19
- package/assets/scss/bootstrap-4.6.2/utilities/_text.scss +72 -72
- package/assets/scss/bootstrap-4.6.2/utilities/_visibility.scss +13 -13
- package/assets/scss/bootstrap-4.6.2/vendor/_rfs.scss +228 -228
- package/assets/scss/core/print.scss +47 -47
- package/assets/scss/core/scrollbar.scss +30 -30
- package/assets/scss/core/typography.scss +121 -121
- package/components/anchor/index.d.ts +1 -0
- package/components/anchor/src/components/anchor-item/anchor-item.component.d.ts +8 -11
- package/components/anchor/src/components/anchor-vertical/anchor-list/anchor-list.component.d.ts +12 -13
- package/components/anchor/src/components/main/main.component.d.ts +13 -18
- package/components/anchor/src/models/anchor.model.d.ts +7 -0
- package/components/anchor/src/models/index.d.ts +1 -0
- package/components/editor/src/models/image-upload.plugin.model.d.ts +1 -3
- package/fesm2022/sd-angular-core-components-anchor-v2.mjs +4 -4
- package/fesm2022/sd-angular-core-components-anchor-v2.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-anchor.mjs +115 -210
- package/fesm2022/sd-angular-core-components-anchor.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-avatar.mjs +2 -2
- package/fesm2022/sd-angular-core-components-avatar.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-chart.mjs +40 -40
- package/fesm2022/sd-angular-core-components-chart.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-editor.mjs +3 -1
- package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-quick-action.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-tab-router.mjs +4 -4
- package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-table.mjs +6 -6
- package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-upload-file.mjs +4 -4
- package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
- package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-directives.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-models.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-select.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-authom.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-layout.mjs +16 -12
- package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
- package/fesm2022/sd-angular-core-pipes.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-cache.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-firebase.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-license.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-storage.mjs.map +1 -1
- package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
- package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
- package/fesm2022/sd-angular-core.mjs.map +1 -1
- package/package.json +62 -62
- package/sd-angular-core-19.0.0-beta.87.tgz +0 -0
- package/components/anchor/src/components/anchor-horizontal/anchor-list/anchor-list.component.d.ts +0 -16
- package/components/anchor/src/services/anchor.service.d.ts +0 -12
- package/components/anchor/src/services/index.d.ts +0 -1
- package/sd-angular-core-19.0.0-beta.86.tgz +0 -0
|
@@ -1,190 +1,190 @@
|
|
|
1
|
-
// Bootstrap functions
|
|
2
|
-
//
|
|
3
|
-
// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
|
|
4
|
-
|
|
5
|
-
// Ascending
|
|
6
|
-
// Used to evaluate Sass maps like our grid breakpoints.
|
|
7
|
-
@mixin _assert-ascending($map, $map-name) {
|
|
8
|
-
$prev-key: null;
|
|
9
|
-
$prev-num: null;
|
|
10
|
-
@each $key, $num in $map {
|
|
11
|
-
@if $prev-num == null or unit($num) == "%" or unit($prev-num) == "%" {
|
|
12
|
-
// Do nothing
|
|
13
|
-
} @else if not comparable($prev-num, $num) {
|
|
14
|
-
@warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
|
|
15
|
-
} @else if $prev-num >= $num {
|
|
16
|
-
@warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
|
|
17
|
-
}
|
|
18
|
-
$prev-key: $key;
|
|
19
|
-
$prev-num: $num;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// Starts at zero
|
|
24
|
-
// Used to ensure the min-width of the lowest breakpoint starts at 0.
|
|
25
|
-
@mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
|
|
26
|
-
@if length($map) > 0 {
|
|
27
|
-
$values: map-values($map);
|
|
28
|
-
$first-value: nth($values, 1);
|
|
29
|
-
@if $first-value != 0 {
|
|
30
|
-
@warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Replace `$search` with `$replace` in `$string`
|
|
36
|
-
// Used on our SVG icon backgrounds for custom forms.
|
|
37
|
-
//
|
|
38
|
-
// @author Hugo Giraudel
|
|
39
|
-
// @param {String} $string - Initial string
|
|
40
|
-
// @param {String} $search - Substring to replace
|
|
41
|
-
// @param {String} $replace ('') - New value
|
|
42
|
-
// @return {String} - Updated string
|
|
43
|
-
@function str-replace($string, $search, $replace: "") {
|
|
44
|
-
$index: str-index($string, $search);
|
|
45
|
-
|
|
46
|
-
@if $index {
|
|
47
|
-
@return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
@return $string;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// See https://codepen.io/kevinweber/pen/dXWoRw
|
|
54
|
-
//
|
|
55
|
-
// Requires the use of quotes around data URIs.
|
|
56
|
-
|
|
57
|
-
@function escape-svg($string) {
|
|
58
|
-
@if str-index($string, "data:image/svg+xml") {
|
|
59
|
-
@each $char, $encoded in $escaped-characters {
|
|
60
|
-
// Do not escape the url brackets
|
|
61
|
-
@if str-index($string, "url(") == 1 {
|
|
62
|
-
$string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}");
|
|
63
|
-
} @else {
|
|
64
|
-
$string: str-replace($string, $char, $encoded);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
@return $string;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Color contrast
|
|
73
|
-
@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
|
|
74
|
-
$r: red($color);
|
|
75
|
-
$g: green($color);
|
|
76
|
-
$b: blue($color);
|
|
77
|
-
|
|
78
|
-
$yiq: (($r * 299) + ($g * 587) + ($b * 114)) * .001;
|
|
79
|
-
|
|
80
|
-
@if ($yiq >= $yiq-contrasted-threshold) {
|
|
81
|
-
@return $dark;
|
|
82
|
-
} @else {
|
|
83
|
-
@return $light;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// Retrieve color Sass maps
|
|
88
|
-
@function color($key: "blue") {
|
|
89
|
-
@return map-get($colors, $key);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
@function theme-color($key: "primary") {
|
|
93
|
-
@return map-get($theme-colors, $key);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
@function gray($key: "100") {
|
|
97
|
-
@return map-get($grays, $key);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Request a theme color level
|
|
101
|
-
@function theme-color-level($color-name: "primary", $level: 0) {
|
|
102
|
-
$color: theme-color($color-name);
|
|
103
|
-
$color-base: if($level > 0, $black, $white);
|
|
104
|
-
$level: abs($level);
|
|
105
|
-
|
|
106
|
-
@return mix($color-base, $color, $level * $theme-color-interval);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// Return valid calc
|
|
110
|
-
@function add($value1, $value2, $return-calc: true) {
|
|
111
|
-
@if $value1 == null {
|
|
112
|
-
@return $value2;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
@if $value2 == null {
|
|
116
|
-
@return $value1;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
@if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
|
|
120
|
-
@return $value1 + $value2;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
@return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(" + ") + $value2);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
@function subtract($value1, $value2, $return-calc: true) {
|
|
127
|
-
@if $value1 == null and $value2 == null {
|
|
128
|
-
@return null;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
@if $value1 == null {
|
|
132
|
-
@return -$value2;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
@if $value2 == null {
|
|
136
|
-
@return $value1;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
@if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
|
|
140
|
-
@return $value1 - $value2;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
@if type-of($value2) != number {
|
|
144
|
-
$value2: unquote("(") + $value2 + unquote(")");
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
@return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
@function divide($dividend, $divisor, $precision: 10) {
|
|
151
|
-
$sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
|
|
152
|
-
$dividend: abs($dividend);
|
|
153
|
-
$divisor: abs($divisor);
|
|
154
|
-
@if $dividend == 0 {
|
|
155
|
-
@return 0;
|
|
156
|
-
}
|
|
157
|
-
@if $divisor == 0 {
|
|
158
|
-
@error "Cannot divide by 0";
|
|
159
|
-
}
|
|
160
|
-
$remainder: $dividend;
|
|
161
|
-
$result: 0;
|
|
162
|
-
$factor: 10;
|
|
163
|
-
@while ($remainder > 0 and $precision >= 0) {
|
|
164
|
-
$quotient: 0;
|
|
165
|
-
@while ($remainder >= $divisor) {
|
|
166
|
-
$remainder: $remainder - $divisor;
|
|
167
|
-
$quotient: $quotient + 1;
|
|
168
|
-
}
|
|
169
|
-
$result: $result * 10 + $quotient;
|
|
170
|
-
$factor: $factor * .1;
|
|
171
|
-
$remainder: $remainder * 10;
|
|
172
|
-
$precision: $precision - 1;
|
|
173
|
-
@if ($precision < 0 and $remainder >= $divisor * 5) {
|
|
174
|
-
$result: $result + 1;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
$result: $result * $factor * $sign;
|
|
178
|
-
$dividend-unit: unit($dividend);
|
|
179
|
-
$divisor-unit: unit($divisor);
|
|
180
|
-
$unit-map: (
|
|
181
|
-
"px": 1px,
|
|
182
|
-
"rem": 1rem,
|
|
183
|
-
"em": 1em,
|
|
184
|
-
"%": 1%
|
|
185
|
-
);
|
|
186
|
-
@if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
|
|
187
|
-
$result: $result * map-get($unit-map, $dividend-unit);
|
|
188
|
-
}
|
|
189
|
-
@return $result;
|
|
190
|
-
}
|
|
1
|
+
// Bootstrap functions
|
|
2
|
+
//
|
|
3
|
+
// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
|
|
4
|
+
|
|
5
|
+
// Ascending
|
|
6
|
+
// Used to evaluate Sass maps like our grid breakpoints.
|
|
7
|
+
@mixin _assert-ascending($map, $map-name) {
|
|
8
|
+
$prev-key: null;
|
|
9
|
+
$prev-num: null;
|
|
10
|
+
@each $key, $num in $map {
|
|
11
|
+
@if $prev-num == null or unit($num) == "%" or unit($prev-num) == "%" {
|
|
12
|
+
// Do nothing
|
|
13
|
+
} @else if not comparable($prev-num, $num) {
|
|
14
|
+
@warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
|
|
15
|
+
} @else if $prev-num >= $num {
|
|
16
|
+
@warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
|
|
17
|
+
}
|
|
18
|
+
$prev-key: $key;
|
|
19
|
+
$prev-num: $num;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Starts at zero
|
|
24
|
+
// Used to ensure the min-width of the lowest breakpoint starts at 0.
|
|
25
|
+
@mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
|
|
26
|
+
@if length($map) > 0 {
|
|
27
|
+
$values: map-values($map);
|
|
28
|
+
$first-value: nth($values, 1);
|
|
29
|
+
@if $first-value != 0 {
|
|
30
|
+
@warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Replace `$search` with `$replace` in `$string`
|
|
36
|
+
// Used on our SVG icon backgrounds for custom forms.
|
|
37
|
+
//
|
|
38
|
+
// @author Hugo Giraudel
|
|
39
|
+
// @param {String} $string - Initial string
|
|
40
|
+
// @param {String} $search - Substring to replace
|
|
41
|
+
// @param {String} $replace ('') - New value
|
|
42
|
+
// @return {String} - Updated string
|
|
43
|
+
@function str-replace($string, $search, $replace: "") {
|
|
44
|
+
$index: str-index($string, $search);
|
|
45
|
+
|
|
46
|
+
@if $index {
|
|
47
|
+
@return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@return $string;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// See https://codepen.io/kevinweber/pen/dXWoRw
|
|
54
|
+
//
|
|
55
|
+
// Requires the use of quotes around data URIs.
|
|
56
|
+
|
|
57
|
+
@function escape-svg($string) {
|
|
58
|
+
@if str-index($string, "data:image/svg+xml") {
|
|
59
|
+
@each $char, $encoded in $escaped-characters {
|
|
60
|
+
// Do not escape the url brackets
|
|
61
|
+
@if str-index($string, "url(") == 1 {
|
|
62
|
+
$string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}");
|
|
63
|
+
} @else {
|
|
64
|
+
$string: str-replace($string, $char, $encoded);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@return $string;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Color contrast
|
|
73
|
+
@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
|
|
74
|
+
$r: red($color);
|
|
75
|
+
$g: green($color);
|
|
76
|
+
$b: blue($color);
|
|
77
|
+
|
|
78
|
+
$yiq: (($r * 299) + ($g * 587) + ($b * 114)) * .001;
|
|
79
|
+
|
|
80
|
+
@if ($yiq >= $yiq-contrasted-threshold) {
|
|
81
|
+
@return $dark;
|
|
82
|
+
} @else {
|
|
83
|
+
@return $light;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Retrieve color Sass maps
|
|
88
|
+
@function color($key: "blue") {
|
|
89
|
+
@return map-get($colors, $key);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@function theme-color($key: "primary") {
|
|
93
|
+
@return map-get($theme-colors, $key);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@function gray($key: "100") {
|
|
97
|
+
@return map-get($grays, $key);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Request a theme color level
|
|
101
|
+
@function theme-color-level($color-name: "primary", $level: 0) {
|
|
102
|
+
$color: theme-color($color-name);
|
|
103
|
+
$color-base: if($level > 0, $black, $white);
|
|
104
|
+
$level: abs($level);
|
|
105
|
+
|
|
106
|
+
@return mix($color-base, $color, $level * $theme-color-interval);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Return valid calc
|
|
110
|
+
@function add($value1, $value2, $return-calc: true) {
|
|
111
|
+
@if $value1 == null {
|
|
112
|
+
@return $value2;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@if $value2 == null {
|
|
116
|
+
@return $value1;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
|
|
120
|
+
@return $value1 + $value2;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(" + ") + $value2);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@function subtract($value1, $value2, $return-calc: true) {
|
|
127
|
+
@if $value1 == null and $value2 == null {
|
|
128
|
+
@return null;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
@if $value1 == null {
|
|
132
|
+
@return -$value2;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@if $value2 == null {
|
|
136
|
+
@return $value1;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
@if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
|
|
140
|
+
@return $value1 - $value2;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@if type-of($value2) != number {
|
|
144
|
+
$value2: unquote("(") + $value2 + unquote(")");
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@function divide($dividend, $divisor, $precision: 10) {
|
|
151
|
+
$sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
|
|
152
|
+
$dividend: abs($dividend);
|
|
153
|
+
$divisor: abs($divisor);
|
|
154
|
+
@if $dividend == 0 {
|
|
155
|
+
@return 0;
|
|
156
|
+
}
|
|
157
|
+
@if $divisor == 0 {
|
|
158
|
+
@error "Cannot divide by 0";
|
|
159
|
+
}
|
|
160
|
+
$remainder: $dividend;
|
|
161
|
+
$result: 0;
|
|
162
|
+
$factor: 10;
|
|
163
|
+
@while ($remainder > 0 and $precision >= 0) {
|
|
164
|
+
$quotient: 0;
|
|
165
|
+
@while ($remainder >= $divisor) {
|
|
166
|
+
$remainder: $remainder - $divisor;
|
|
167
|
+
$quotient: $quotient + 1;
|
|
168
|
+
}
|
|
169
|
+
$result: $result * 10 + $quotient;
|
|
170
|
+
$factor: $factor * .1;
|
|
171
|
+
$remainder: $remainder * 10;
|
|
172
|
+
$precision: $precision - 1;
|
|
173
|
+
@if ($precision < 0 and $remainder >= $divisor * 5) {
|
|
174
|
+
$result: $result + 1;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
$result: $result * $factor * $sign;
|
|
178
|
+
$dividend-unit: unit($dividend);
|
|
179
|
+
$divisor-unit: unit($divisor);
|
|
180
|
+
$unit-map: (
|
|
181
|
+
"px": 1px,
|
|
182
|
+
"rem": 1rem,
|
|
183
|
+
"em": 1em,
|
|
184
|
+
"%": 1%
|
|
185
|
+
);
|
|
186
|
+
@if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
|
|
187
|
+
$result: $result * map-get($unit-map, $dividend-unit);
|
|
188
|
+
}
|
|
189
|
+
@return $result;
|
|
190
|
+
}
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
// Container widths
|
|
2
|
-
//
|
|
3
|
-
// Set the container width, and override it for fixed navbars in media queries.
|
|
4
|
-
|
|
5
|
-
@if $enable-grid-classes {
|
|
6
|
-
// Single container class with breakpoint max-widths
|
|
7
|
-
.container,
|
|
8
|
-
// 100% wide container at all breakpoints
|
|
9
|
-
.container-fluid {
|
|
10
|
-
@include make-container();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// Responsive containers that are 100% wide until a breakpoint
|
|
14
|
-
@each $breakpoint, $container-max-width in $container-max-widths {
|
|
15
|
-
.container-#{$breakpoint} {
|
|
16
|
-
@extend .container-fluid;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
@include media-breakpoint-up($breakpoint, $grid-breakpoints) {
|
|
20
|
-
%responsive-container-#{$breakpoint} {
|
|
21
|
-
max-width: $container-max-width;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// Extend each breakpoint which is smaller or equal to the current breakpoint
|
|
25
|
-
$extend-breakpoint: true;
|
|
26
|
-
|
|
27
|
-
@each $name, $width in $grid-breakpoints {
|
|
28
|
-
@if ($extend-breakpoint) {
|
|
29
|
-
.container#{breakpoint-infix($name, $grid-breakpoints)} {
|
|
30
|
-
@extend %responsive-container-#{$breakpoint};
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Once the current breakpoint is reached, stop extending
|
|
34
|
-
@if ($breakpoint == $name) {
|
|
35
|
-
$extend-breakpoint: false;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
// Row
|
|
45
|
-
//
|
|
46
|
-
// Rows contain your columns.
|
|
47
|
-
|
|
48
|
-
@if $enable-grid-classes {
|
|
49
|
-
.row {
|
|
50
|
-
@include make-row();
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// Remove the negative margin from default .row, then the horizontal padding
|
|
54
|
-
// from all immediate children columns (to prevent runaway style inheritance).
|
|
55
|
-
.no-gutters {
|
|
56
|
-
margin-right: 0;
|
|
57
|
-
margin-left: 0;
|
|
58
|
-
|
|
59
|
-
> .col,
|
|
60
|
-
> [class*="col-"] {
|
|
61
|
-
padding-right: 0;
|
|
62
|
-
padding-left: 0;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Columns
|
|
68
|
-
//
|
|
69
|
-
// Common styles for small and large grid columns
|
|
70
|
-
|
|
71
|
-
@if $enable-grid-classes {
|
|
72
|
-
@include make-grid-columns();
|
|
73
|
-
}
|
|
1
|
+
// Container widths
|
|
2
|
+
//
|
|
3
|
+
// Set the container width, and override it for fixed navbars in media queries.
|
|
4
|
+
|
|
5
|
+
@if $enable-grid-classes {
|
|
6
|
+
// Single container class with breakpoint max-widths
|
|
7
|
+
.container,
|
|
8
|
+
// 100% wide container at all breakpoints
|
|
9
|
+
.container-fluid {
|
|
10
|
+
@include make-container();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Responsive containers that are 100% wide until a breakpoint
|
|
14
|
+
@each $breakpoint, $container-max-width in $container-max-widths {
|
|
15
|
+
.container-#{$breakpoint} {
|
|
16
|
+
@extend .container-fluid;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@include media-breakpoint-up($breakpoint, $grid-breakpoints) {
|
|
20
|
+
%responsive-container-#{$breakpoint} {
|
|
21
|
+
max-width: $container-max-width;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Extend each breakpoint which is smaller or equal to the current breakpoint
|
|
25
|
+
$extend-breakpoint: true;
|
|
26
|
+
|
|
27
|
+
@each $name, $width in $grid-breakpoints {
|
|
28
|
+
@if ($extend-breakpoint) {
|
|
29
|
+
.container#{breakpoint-infix($name, $grid-breakpoints)} {
|
|
30
|
+
@extend %responsive-container-#{$breakpoint};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Once the current breakpoint is reached, stop extending
|
|
34
|
+
@if ($breakpoint == $name) {
|
|
35
|
+
$extend-breakpoint: false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
// Row
|
|
45
|
+
//
|
|
46
|
+
// Rows contain your columns.
|
|
47
|
+
|
|
48
|
+
@if $enable-grid-classes {
|
|
49
|
+
.row {
|
|
50
|
+
@include make-row();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Remove the negative margin from default .row, then the horizontal padding
|
|
54
|
+
// from all immediate children columns (to prevent runaway style inheritance).
|
|
55
|
+
.no-gutters {
|
|
56
|
+
margin-right: 0;
|
|
57
|
+
margin-left: 0;
|
|
58
|
+
|
|
59
|
+
> .col,
|
|
60
|
+
> [class*="col-"] {
|
|
61
|
+
padding-right: 0;
|
|
62
|
+
padding-left: 0;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Columns
|
|
68
|
+
//
|
|
69
|
+
// Common styles for small and large grid columns
|
|
70
|
+
|
|
71
|
+
@if $enable-grid-classes {
|
|
72
|
+
@include make-grid-columns();
|
|
73
|
+
}
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
// Responsive images (ensure images don't scale beyond their parents)
|
|
2
|
-
//
|
|
3
|
-
// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
|
|
4
|
-
// We previously tried the "images are responsive by default" approach in Bootstrap v2,
|
|
5
|
-
// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
|
|
6
|
-
// which weren't expecting the images within themselves to be involuntarily resized.
|
|
7
|
-
// See also https://github.com/twbs/bootstrap/issues/18178
|
|
8
|
-
.img-fluid {
|
|
9
|
-
@include img-fluid();
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// Image thumbnails
|
|
14
|
-
.img-thumbnail {
|
|
15
|
-
padding: $thumbnail-padding;
|
|
16
|
-
background-color: $thumbnail-bg;
|
|
17
|
-
border: $thumbnail-border-width solid $thumbnail-border-color;
|
|
18
|
-
@include border-radius($thumbnail-border-radius);
|
|
19
|
-
@include box-shadow($thumbnail-box-shadow);
|
|
20
|
-
|
|
21
|
-
// Keep them at most 100% wide
|
|
22
|
-
@include img-fluid();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
//
|
|
26
|
-
// Figures
|
|
27
|
-
//
|
|
28
|
-
|
|
29
|
-
.figure {
|
|
30
|
-
// Ensures the caption's text aligns with the image.
|
|
31
|
-
display: inline-block;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.figure-img {
|
|
35
|
-
margin-bottom: $spacer * .5;
|
|
36
|
-
line-height: 1;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.figure-caption {
|
|
40
|
-
@include font-size($figure-caption-font-size);
|
|
41
|
-
color: $figure-caption-color;
|
|
42
|
-
}
|
|
1
|
+
// Responsive images (ensure images don't scale beyond their parents)
|
|
2
|
+
//
|
|
3
|
+
// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
|
|
4
|
+
// We previously tried the "images are responsive by default" approach in Bootstrap v2,
|
|
5
|
+
// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
|
|
6
|
+
// which weren't expecting the images within themselves to be involuntarily resized.
|
|
7
|
+
// See also https://github.com/twbs/bootstrap/issues/18178
|
|
8
|
+
.img-fluid {
|
|
9
|
+
@include img-fluid();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
// Image thumbnails
|
|
14
|
+
.img-thumbnail {
|
|
15
|
+
padding: $thumbnail-padding;
|
|
16
|
+
background-color: $thumbnail-bg;
|
|
17
|
+
border: $thumbnail-border-width solid $thumbnail-border-color;
|
|
18
|
+
@include border-radius($thumbnail-border-radius);
|
|
19
|
+
@include box-shadow($thumbnail-box-shadow);
|
|
20
|
+
|
|
21
|
+
// Keep them at most 100% wide
|
|
22
|
+
@include img-fluid();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//
|
|
26
|
+
// Figures
|
|
27
|
+
//
|
|
28
|
+
|
|
29
|
+
.figure {
|
|
30
|
+
// Ensures the caption's text aligns with the image.
|
|
31
|
+
display: inline-block;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.figure-img {
|
|
35
|
+
margin-bottom: $spacer * .5;
|
|
36
|
+
line-height: 1;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.figure-caption {
|
|
40
|
+
@include font-size($figure-caption-font-size);
|
|
41
|
+
color: $figure-caption-color;
|
|
42
|
+
}
|