@daffodil/design 0.79.0 → 0.80.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.
- package/accordion/accordion.module.d.ts +3 -1
- package/accordion/src/accordion-theme.scss +4 -4
- package/article/README.md +5 -6
- package/article/article.module.d.ts +3 -1
- package/article/src/article-theme.scss +8 -8
- package/atoms/form/form-field/form-field/form-field.component.d.ts +1 -1
- package/breadcrumb/breadcrumb.module.d.ts +3 -1
- package/breadcrumb/src/breadcrumb-theme.scss +3 -3
- package/button/button.module.d.ts +3 -1
- package/button/src/button/basic/button-theme.scss +14 -14
- package/button/src/button/button-base.scss +3 -3
- package/button/src/button/flat/flat-theme.scss +21 -22
- package/button/src/button/icon/icon-theme.scss +13 -14
- package/button/src/button/raised/raised-theme.scss +32 -45
- package/button/src/button/stroked/stroked-theme.scss +18 -21
- package/button/src/button/underline/underline-theme.scss +14 -18
- package/callout/callout.module.d.ts +3 -1
- package/callout/src/callout-theme.scss +11 -17
- package/card/card.module.d.ts +1 -1
- package/card/src/card-theme-variants/linkable-card.scss +1 -1
- package/card/src/card-theme.scss +9 -9
- package/container/container.module.d.ts +1 -1
- package/core/public_api.d.ts +1 -0
- package/core/selectable/public_api.d.ts +2 -0
- package/core/selectable/selectable.d.ts +7 -0
- package/core/selectable/selectable.directive.d.ts +17 -0
- package/esm2022/accordion/accordion.module.mjs +4 -2
- package/esm2022/article/article.module.mjs +4 -2
- package/esm2022/atoms/form/checkbox/checkbox.component.mjs +2 -2
- package/esm2022/atoms/form/checkbox-set/checkbox-set.component.mjs +2 -2
- package/esm2022/atoms/form/form-field/form-field/form-field.component.mjs +2 -2
- package/esm2022/atoms/form/radio/radio.component.mjs +2 -2
- package/esm2022/atoms/form/radio-set/radio-set.component.mjs +2 -2
- package/esm2022/breadcrumb/breadcrumb.module.mjs +4 -2
- package/esm2022/button/button.module.mjs +4 -2
- package/esm2022/callout/callout.module.mjs +4 -2
- package/esm2022/card/card.module.mjs +2 -2
- package/esm2022/container/container/container.component.mjs +2 -2
- package/esm2022/container/container.module.mjs +2 -2
- package/esm2022/core/public_api.mjs +2 -1
- package/esm2022/core/selectable/public_api.mjs +2 -0
- package/esm2022/core/selectable/selectable.directive.mjs +41 -0
- package/esm2022/core/selectable/selectable.mjs +2 -0
- package/esm2022/hero/hero.module.mjs +2 -2
- package/esm2022/image/image.module.mjs +2 -2
- package/esm2022/link-set/link-set.module.mjs +2 -2
- package/esm2022/list/examples/basic-list/basic-list.component.mjs +1 -1
- package/esm2022/list/examples/icon-list/icon-list.component.mjs +2 -2
- package/esm2022/list/examples/multiline-list/multiline-list.component.mjs +1 -1
- package/esm2022/list/examples/nav-list/nav-list.component.mjs +2 -2
- package/esm2022/list/list/list.component.mjs +2 -2
- package/esm2022/list/list-item/list-item.component.mjs +10 -3
- package/esm2022/list/list.module.mjs +2 -2
- package/esm2022/loading-icon/loading-icon.module.mjs +2 -2
- package/esm2022/media-gallery/examples/basic-media-gallery/basic-media-gallery.component.mjs +1 -1
- package/esm2022/media-gallery/examples/mismatched-sizes-media-gallery/mismatched-sizes-media-gallery.component.mjs +1 -1
- package/esm2022/media-gallery/examples/skeleton-media-gallery/skeleton-media-gallery.component.mjs +1 -1
- package/esm2022/media-gallery/media-gallery.module.mjs +2 -2
- package/esm2022/media-gallery/thumbnail/thumbnail.directive.mjs +26 -39
- package/esm2022/modal/modal.module.mjs +2 -2
- package/esm2022/navbar/navbar.module.mjs +2 -2
- package/esm2022/notification/notification.module.mjs +2 -2
- package/esm2022/paginator/paginator.module.mjs +2 -2
- package/esm2022/progress-bar/progress-bar.module.mjs +2 -2
- package/esm2022/sidebar/sidebar.module.mjs +2 -2
- package/esm2022/switch/daffodil-design-switch.mjs +5 -0
- package/esm2022/switch/examples/basic-switch/basic-switch.component.mjs +23 -0
- package/esm2022/switch/examples/daffodil-design-switch-examples.mjs +5 -0
- package/esm2022/switch/examples/disabled-switch/disabled-switch.component.mjs +20 -0
- package/esm2022/switch/examples/examples.mjs +13 -0
- package/esm2022/switch/examples/index.mjs +2 -0
- package/esm2022/switch/examples/loading-switch/loading-switch.component.mjs +20 -0
- package/esm2022/switch/examples/public_api.mjs +7 -0
- package/esm2022/switch/examples/switch-error/switch-error.component.mjs +22 -0
- package/esm2022/switch/examples/switch-label-positions/switch-label-positions.component.mjs +31 -0
- package/esm2022/switch/index.mjs +2 -0
- package/esm2022/switch/public_api.mjs +3 -0
- package/esm2022/switch/switch/label-position.mjs +11 -0
- package/esm2022/switch/switch/switch.component.mjs +126 -0
- package/esm2022/switch/switch.mjs +7 -0
- package/esm2022/tabs/examples/basic-tabs/basic-tabs.component.mjs +3 -3
- package/esm2022/tabs/tabs/tab-activator/tab-activator.component.mjs +22 -21
- package/esm2022/tabs/tabs/tabs.component.mjs +4 -8
- package/esm2022/toast/toast/toast.component.mjs +3 -3
- package/esm2022/toast/toast.module.mjs +2 -2
- package/esm2022/tree/tree.module.mjs +2 -2
- package/fesm2022/daffodil-design-accordion.mjs +3 -1
- package/fesm2022/daffodil-design-accordion.mjs.map +1 -1
- package/fesm2022/daffodil-design-article.mjs +3 -1
- package/fesm2022/daffodil-design-article.mjs.map +1 -1
- package/fesm2022/daffodil-design-breadcrumb.mjs +3 -1
- package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -1
- package/fesm2022/daffodil-design-button.mjs +3 -1
- package/fesm2022/daffodil-design-button.mjs.map +1 -1
- package/fesm2022/daffodil-design-callout.mjs +3 -1
- package/fesm2022/daffodil-design-callout.mjs.map +1 -1
- package/fesm2022/daffodil-design-card.mjs +1 -1
- package/fesm2022/daffodil-design-card.mjs.map +1 -1
- package/fesm2022/daffodil-design-container.mjs +3 -3
- package/fesm2022/daffodil-design-container.mjs.map +1 -1
- package/fesm2022/daffodil-design-hero.mjs +1 -1
- package/fesm2022/daffodil-design-hero.mjs.map +1 -1
- package/fesm2022/daffodil-design-image.mjs +1 -1
- package/fesm2022/daffodil-design-image.mjs.map +1 -1
- package/fesm2022/daffodil-design-link-set.mjs +1 -1
- package/fesm2022/daffodil-design-link-set.mjs.map +1 -1
- package/fesm2022/daffodil-design-list-examples.mjs +4 -4
- package/fesm2022/daffodil-design-list-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-list.mjs +12 -5
- package/fesm2022/daffodil-design-list.mjs.map +1 -1
- package/fesm2022/daffodil-design-loading-icon.mjs +1 -1
- package/fesm2022/daffodil-design-loading-icon.mjs.map +1 -1
- package/fesm2022/daffodil-design-media-gallery-examples.mjs +3 -3
- package/fesm2022/daffodil-design-media-gallery-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-media-gallery.mjs +25 -40
- package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
- package/fesm2022/daffodil-design-modal.mjs +1 -1
- package/fesm2022/daffodil-design-modal.mjs.map +1 -1
- package/fesm2022/daffodil-design-navbar.mjs +1 -1
- package/fesm2022/daffodil-design-navbar.mjs.map +1 -1
- package/fesm2022/daffodil-design-notification.mjs +1 -1
- package/fesm2022/daffodil-design-notification.mjs.map +1 -1
- package/fesm2022/daffodil-design-paginator.mjs +1 -1
- package/fesm2022/daffodil-design-paginator.mjs.map +1 -1
- package/fesm2022/daffodil-design-progress-bar.mjs +1 -1
- package/fesm2022/daffodil-design-progress-bar.mjs.map +1 -1
- package/fesm2022/daffodil-design-sidebar.mjs +1 -1
- package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
- package/fesm2022/daffodil-design-switch-examples.mjs +109 -0
- package/fesm2022/daffodil-design-switch-examples.mjs.map +1 -0
- package/fesm2022/daffodil-design-switch.mjs +148 -0
- package/fesm2022/daffodil-design-switch.mjs.map +1 -0
- package/fesm2022/daffodil-design-tabs-examples.mjs +2 -2
- package/fesm2022/daffodil-design-tabs-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-tabs.mjs +23 -26
- package/fesm2022/daffodil-design-tabs.mjs.map +1 -1
- package/fesm2022/daffodil-design-toast.mjs +3 -3
- package/fesm2022/daffodil-design-toast.mjs.map +1 -1
- package/fesm2022/daffodil-design-tree.mjs +1 -1
- package/fesm2022/daffodil-design-tree.mjs.map +1 -1
- package/fesm2022/daffodil-design.mjs +45 -6
- package/fesm2022/daffodil-design.mjs.map +1 -1
- package/hero/hero.module.d.ts +1 -1
- package/hero/src/hero-theme.scss +11 -17
- package/image/image.module.d.ts +1 -1
- package/link-set/link-set.module.d.ts +1 -1
- package/list/list-item/list-item.component.d.ts +3 -1
- package/list/list.module.d.ts +1 -1
- package/list/src/list-theme.scss +13 -9
- package/loading-icon/loading-icon.module.d.ts +1 -1
- package/loading-icon/src/loading-icon-theme.scss +7 -7
- package/media-gallery/media-gallery.module.d.ts +1 -1
- package/media-gallery/src/media-gallery-theme.scss +3 -3
- package/media-gallery/thumbnail/thumbnail.directive.d.ts +9 -18
- package/menu/src/menu-theme.scss +5 -5
- package/modal/modal.module.d.ts +1 -1
- package/modal/src/modal-theme.scss +1 -1
- package/navbar/navbar.module.d.ts +1 -1
- package/navbar/src/navbar-theme.scss +8 -8
- package/notification/notification.module.d.ts +1 -1
- package/notification/src/notification-theme.scss +12 -12
- package/package.json +1 -1
- package/paginator/paginator.module.d.ts +1 -1
- package/paginator/src/paginator-theme.scss +11 -10
- package/progress-bar/progress-bar.module.d.ts +1 -1
- package/progress-bar/src/progress-bar-theme.scss +10 -10
- package/scss/accessibility/_index.scss +1 -1
- package/scss/core/_index.scss +1 -2
- package/scss/core/error/error-to-string.scss +13 -0
- package/scss/core/map/map-deep-check/map-deep-check.scss +2 -1
- package/scss/core/map/map-deep-get/map-deep-get.scss +1 -0
- package/scss/core/map/map-get/map-get.scss +23 -0
- package/scss/core/map/map-get/map-get.spec.scss +65 -0
- package/scss/core/string/split/string-split.scss +10 -7
- package/scss/global.scss +1 -0
- package/scss/interactions/_index.scss +1 -1
- package/scss/layout/_index.scss +1 -1
- package/scss/state/skeleton/_mixins.scss +2 -2
- package/scss/theme.scss +2 -0
- package/scss/theming/_configure-theme.scss +2 -2
- package/scss/theming/_daff-theme.scss +14 -4
- package/scss/theming/_index.scss +1 -1
- package/scss/theming/_theme-css-variables.scss +14 -12
- package/scss/theming/contrast/luminance/luminance.scss +8 -6
- package/scss/theming/illuminate/illuminate.scss +20 -17
- package/scss/typography/utilities/_index.scss +1 -1
- package/scss/typography/utilities/_variables.scss +1 -1
- package/sidebar/sidebar.module.d.ts +1 -1
- package/sidebar/src/sidebar-theme.scss +3 -3
- package/src/atoms/form/form-field/form-field/form-field-theme.scss +6 -6
- package/src/atoms/form/input/input-theme.scss +2 -2
- package/src/atoms/form/native-select/native-select-theme.scss +3 -3
- package/switch/README.md +61 -0
- package/switch/examples/basic-switch/basic-switch.component.d.ts +8 -0
- package/switch/examples/disabled-switch/disabled-switch.component.d.ts +7 -0
- package/switch/examples/examples.d.ts +5 -0
- package/switch/examples/index.d.ts +1 -0
- package/switch/examples/loading-switch/loading-switch.component.d.ts +7 -0
- package/switch/examples/public_api.d.ts +6 -0
- package/switch/examples/switch-error/switch-error.component.d.ts +7 -0
- package/switch/examples/switch-label-positions/switch-label-positions.component.d.ts +12 -0
- package/switch/index.d.ts +1 -0
- package/switch/public_api.d.ts +2 -0
- package/switch/src/switch-theme.scss +31 -0
- package/switch/switch/label-position.d.ts +10 -0
- package/switch/switch/switch.component.d.ts +53 -0
- package/switch/switch.d.ts +3 -0
- package/tabs/src/tabs-theme.scss +9 -9
- package/tabs/tabs/tab-activator/tab-activator.component.d.ts +5 -4
- package/tabs/tabs/tabs.component.d.ts +1 -2
- package/toast/src/toast-theme.scss +18 -18
- package/toast/toast.module.d.ts +1 -1
- package/tree/src/tree-theme.scss +11 -11
- package/tree/tree.module.d.ts +1 -1
- package/scss/core/map/map-deep-check/map-deep-check.spec.scss +0 -43
- package/scss/core/map/map-deep-get/map-deep-get.spec.scss +0 -25
- package/scss/theming/contrast/contrast-ratio/contrast-ratio.spec.scss +0 -0
- package/scss/theming/contrast/text-contrast/text-contrast.spec.scss +0 -0
- package/src/atoms/form/radio/radio.scss +0 -0
@@ -1,4 +1,5 @@
|
|
1
1
|
@use 'sass:map';
|
2
|
+
@use 'sass:meta';
|
2
3
|
|
3
4
|
//
|
4
5
|
// Checks whether or not a map has a nested key
|
@@ -10,7 +11,7 @@
|
|
10
11
|
// @throws error
|
11
12
|
//
|
12
13
|
@function daff-map-deep-check($map, $keys) {
|
13
|
-
@if (type-of($map) != 'map') {
|
14
|
+
@if (meta.type-of($map) != 'map') {
|
14
15
|
@error 'Expected first parameter to be of type `map`';
|
15
16
|
}
|
16
17
|
|
@@ -0,0 +1,23 @@
|
|
1
|
+
@use 'sass:map';
|
2
|
+
@use '../../error/error-to-string';
|
3
|
+
|
4
|
+
//
|
5
|
+
// Return a the value of a nested key in a map if it exists.
|
6
|
+
// If the key doesn't exist, it throw an error.
|
7
|
+
//
|
8
|
+
// Note: This function doesn't support the use
|
9
|
+
// of the search character in your map key names.
|
10
|
+
//
|
11
|
+
// @usage daff-map-get($map, nested, map, key);
|
12
|
+
// @returns any
|
13
|
+
// @throws error
|
14
|
+
@function daff-map-get($map, $keys...) {
|
15
|
+
@each $key in $keys {
|
16
|
+
@if not map.has-key($map, $key) {
|
17
|
+
@return error-to-string.error-to-string("The map doesn't contain the $key: `#{$key}`'");
|
18
|
+
}
|
19
|
+
$map: map.get($map, $key);
|
20
|
+
}
|
21
|
+
|
22
|
+
@return $map;
|
23
|
+
}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
@use 'true' as *;
|
2
|
+
@use './map-get' as *;
|
3
|
+
@use '../../error/error-to-string';
|
4
|
+
|
5
|
+
@include describe('map-get') {
|
6
|
+
$nested-map: (
|
7
|
+
'string': '3',
|
8
|
+
'number': 4,
|
9
|
+
);
|
10
|
+
|
11
|
+
$map: (
|
12
|
+
'nested': (
|
13
|
+
'string': '1',
|
14
|
+
'number': 2,
|
15
|
+
'map': $nested-map,
|
16
|
+
),
|
17
|
+
);
|
18
|
+
|
19
|
+
$deep-map: (
|
20
|
+
'level1': (
|
21
|
+
'level2': (
|
22
|
+
'level3': (
|
23
|
+
'level': 4,
|
24
|
+
),
|
25
|
+
),
|
26
|
+
),
|
27
|
+
);
|
28
|
+
|
29
|
+
$empty-map: ();
|
30
|
+
|
31
|
+
@include error-to-string.set-use-string(true);
|
32
|
+
|
33
|
+
@include it('returns the value of the nested key if it exists in the map') {
|
34
|
+
@include assert-equal(daff-map-get($map, 'nested', 'string'), '1');
|
35
|
+
@include assert-equal(daff-map-get($map, 'nested', 'number'), 2);
|
36
|
+
@include assert-equal(daff-map-get($map, 'nested', 'map'), $nested-map);
|
37
|
+
@include assert-equal(daff-map-get($map, 'nested', 'map', 'string'), '3');
|
38
|
+
@include assert-equal(daff-map-get($map, 'nested', 'map', 'number'), 4);
|
39
|
+
}
|
40
|
+
|
41
|
+
@include it('returns the correct value for deeply nested maps') {
|
42
|
+
@include assert-equal(
|
43
|
+
daff-map-get($deep-map, 'level1', 'level2', 'level3', 'level'),
|
44
|
+
4
|
45
|
+
);
|
46
|
+
}
|
47
|
+
|
48
|
+
@include it(
|
49
|
+
'errors if the value of the nested key does not exist in the map'
|
50
|
+
) {
|
51
|
+
@include assert-equal(
|
52
|
+
daff-map-get($map, 'missing'),
|
53
|
+
"The map doesn't contain the $key: `missing`'"
|
54
|
+
);
|
55
|
+
}
|
56
|
+
|
57
|
+
@include it('errors if the map is empty') {
|
58
|
+
@include assert-equal(
|
59
|
+
daff-map-get($empty-map, 'nested'),
|
60
|
+
"The map doesn't contain the $key: `nested`'"
|
61
|
+
);
|
62
|
+
}
|
63
|
+
|
64
|
+
@include error-to-string.set-use-string(false);
|
65
|
+
}
|
@@ -1,3 +1,6 @@
|
|
1
|
+
@use 'sass:string';
|
2
|
+
@use 'sass:list';
|
3
|
+
|
1
4
|
//
|
2
5
|
// @docs
|
3
6
|
// @private
|
@@ -8,25 +11,25 @@
|
|
8
11
|
//
|
9
12
|
@function daff-string-split($string, $separator) {
|
10
13
|
$list: ();
|
11
|
-
$index:
|
14
|
+
$index: string.index($string, $separator);
|
12
15
|
|
13
16
|
@if ($index == null) {
|
14
17
|
@return $list;
|
15
18
|
}
|
16
19
|
|
17
|
-
@while $index !=null {
|
18
|
-
$item:
|
20
|
+
@while $index != null {
|
21
|
+
$item: string.slice($string, 1, $index - 1);
|
19
22
|
|
20
23
|
@if ($item != '') {
|
21
|
-
$list: append($list, $item, 'comma');
|
24
|
+
$list: list.append($list, $item, 'comma');
|
22
25
|
}
|
23
26
|
|
24
|
-
$string:
|
25
|
-
$index:
|
27
|
+
$string: string.slice($string, $index + 1);
|
28
|
+
$index: string.index($string, $separator);
|
26
29
|
}
|
27
30
|
|
28
31
|
@if ($string != '') {
|
29
|
-
$list: append($list, $string, 'comma');
|
32
|
+
$list: list.append($list, $string, 'comma');
|
30
33
|
}
|
31
34
|
|
32
35
|
@return $list;
|
package/scss/global.scss
CHANGED
@@ -1 +1 @@
|
|
1
|
-
@forward 'mouse/clickable';
|
1
|
+
@forward 'mouse/clickable';
|
package/scss/layout/_index.scss
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
@forward 'variables';
|
2
|
-
@forward 'breakpoint';
|
2
|
+
@forward 'breakpoint';
|
@@ -2,8 +2,8 @@
|
|
2
2
|
@use '../../theming';
|
3
3
|
|
4
4
|
@mixin daff-skeleton-theme($theme) {
|
5
|
-
$neutral: core.daff-map-
|
6
|
-
$base: core.daff-map-
|
5
|
+
$neutral: core.daff-map-get($theme, 'core', 'neutral');
|
6
|
+
$base: core.daff-map-get($theme, 'core', 'base');
|
7
7
|
|
8
8
|
.daff-skeleton {
|
9
9
|
&::before,
|
package/scss/theme.scss
CHANGED
@@ -43,6 +43,7 @@
|
|
43
43
|
@use '../notification/src/notification-theme' as notification;
|
44
44
|
@use '../paginator/src/paginator-theme' as paginator;
|
45
45
|
@use '../sidebar/src/sidebar-theme' as sidebar;
|
46
|
+
@use '../switch/src/switch-theme' as switch;
|
46
47
|
@use '../progress-bar/src/progress-bar-theme' as progress-bar;
|
47
48
|
@use '../scss/state/skeleton/mixins' as skeleton;
|
48
49
|
@use '../tabs/src/tabs-theme' as tabs;
|
@@ -94,6 +95,7 @@
|
|
94
95
|
@include notification.daff-notification-theme($theme);
|
95
96
|
@include paginator.daff-paginator-theme($theme);
|
96
97
|
@include sidebar.daff-sidebar-theme($theme);
|
98
|
+
@include switch.daff-switch-theme($theme);
|
97
99
|
@include tabs.daff-tabs-theme($theme);
|
98
100
|
@include tree.daff-tree-theme($theme);
|
99
101
|
@include toast.daff-toast-theme($theme);
|
@@ -38,7 +38,7 @@ $supported-theme-types: (
|
|
38
38
|
// $primary: configure-palette.daff-configure-palette(palette.$daff-blue, 60);
|
39
39
|
// $secondary: configure-palette.daff-configure-palette(palette.$daff-purple, 60);
|
40
40
|
// $tertiary: configure-palette.daff-configure-palette(palette.$daff-turquoise, 60);
|
41
|
-
//
|
41
|
+
//
|
42
42
|
// $theme: daff-configure-theme($primary, $secondary, $tertiary)
|
43
43
|
// ```
|
44
44
|
@function daff-configure-theme(
|
@@ -87,7 +87,7 @@ $supported-theme-types: (
|
|
87
87
|
// $warn: configure-palette.daff-configure-palette(palette.$daff-bronze, 60);
|
88
88
|
// $critical: configure-palette.daff-configure-palette(palette.$daff-red, 60);
|
89
89
|
// $success: configure-palette.daff-configure-palette(palette.$daff-green, 60);
|
90
|
-
//
|
90
|
+
//
|
91
91
|
// $theme: daff-configure-theme-status($info, $warn, $critical, $success);
|
92
92
|
// ```
|
93
93
|
@function daff-configure-theme-status(
|
@@ -7,13 +7,23 @@ $primary: configure-palette.daff-configure-palette(palette.$daff-blue, 60);
|
|
7
7
|
$secondary: configure-palette.daff-configure-palette(palette.$daff-purple, 60);
|
8
8
|
$tertiary: configure-palette.daff-configure-palette(palette.$daff-turquoise, 60);
|
9
9
|
|
10
|
-
$theme: configure-theme.daff-configure-theme(
|
10
|
+
$theme: configure-theme.daff-configure-theme(
|
11
|
+
$primary,
|
12
|
+
$secondary,
|
13
|
+
$tertiary,
|
14
|
+
'light'
|
15
|
+
);
|
11
16
|
|
12
17
|
$primary-dark: configure-palette.daff-configure-palette(palette.$daff-blue, 50);
|
13
18
|
$secondary-dark: configure-palette.daff-configure-palette(palette.$daff-purple, 50);
|
14
19
|
$tertiary-dark: configure-palette.daff-configure-palette(palette.$daff-turquoise, 50);
|
15
20
|
|
16
|
-
$theme-dark: configure-theme.daff-configure-theme(
|
21
|
+
$theme-dark: configure-theme.daff-configure-theme(
|
22
|
+
$primary-dark,
|
23
|
+
$secondary-dark,
|
24
|
+
$tertiary-dark,
|
25
|
+
'dark'
|
26
|
+
);
|
17
27
|
|
18
|
-
$black: core.daff-map-
|
19
|
-
$white: core.daff-map-
|
28
|
+
$black: core.daff-map-get($theme, 'core', 'black');
|
29
|
+
$white: core.daff-map-get($theme, 'core', 'white');
|
package/scss/theming/_index.scss
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
@use 'sass:map';
|
2
|
+
@use 'sass:color';
|
2
3
|
@use '../core';
|
3
4
|
@use '../theming';
|
4
5
|
|
@@ -6,18 +7,18 @@
|
|
6
7
|
//
|
7
8
|
// Global theme tokens
|
8
9
|
@mixin daff-root-theme-tokens($theme) {
|
9
|
-
$base: core.daff-map-
|
10
|
-
$base-contrast: core.daff-map-
|
11
|
-
$primary: map
|
12
|
-
$secondary: map
|
13
|
-
$tertiary: map
|
14
|
-
$neutral: core.daff-map-
|
15
|
-
$white: core.daff-map-
|
16
|
-
$black: core.daff-map-
|
10
|
+
$base: core.daff-map-get($theme, 'core', 'base');
|
11
|
+
$base-contrast: core.daff-map-get($theme, 'core', 'base-contrast');
|
12
|
+
$primary: core.daff-map-get($theme, primary);
|
13
|
+
$secondary: core.daff-map-get($theme, secondary);
|
14
|
+
$tertiary: core.daff-map-get($theme, tertiary);
|
15
|
+
$neutral: core.daff-map-get($theme, 'core', 'neutral');
|
16
|
+
$white: core.daff-map-get($theme, 'core', 'white');
|
17
|
+
$black: core.daff-map-get($theme, 'core', 'black');
|
17
18
|
|
18
|
-
--daff-theme-rgb: #{red($base), green($base), blue($base)};
|
19
|
-
--daff-theme-contrast-rgb: #{red($base-contrast), green($base-contrast),
|
20
|
-
blue($base-contrast)};
|
19
|
+
--daff-theme-rgb: #{color.red($base), color.green($base), color.blue($base)};
|
20
|
+
--daff-theme-contrast-rgb: #{color.red($base-contrast), color.green($base-contrast),
|
21
|
+
color.blue($base-contrast)};
|
21
22
|
--daff-theme: #{$base};
|
22
23
|
--daff-theme-contrast: #{$base-contrast};
|
23
24
|
--daff-theme-primary: #{theming.daff-color($primary)};
|
@@ -39,7 +40,8 @@
|
|
39
40
|
:root {
|
40
41
|
@include daff-root-theme-tokens($theme);
|
41
42
|
}
|
42
|
-
}
|
43
|
+
}
|
44
|
+
@else {
|
43
45
|
@include daff-root-theme-tokens($theme);
|
44
46
|
}
|
45
47
|
}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
@use 'sass:color';
|
2
|
+
@use 'sass:list';
|
1
3
|
@use 'variables' as v;
|
2
4
|
|
3
5
|
// Calculate the luminance of a color.
|
@@ -8,12 +10,12 @@
|
|
8
10
|
// See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
|
9
11
|
|
10
12
|
@function daff-luminance($color) {
|
11
|
-
$red-index: red($color) + 1;
|
12
|
-
$green-index: green($color) + 1;
|
13
|
-
$blue-index: blue($color) + 1;
|
13
|
+
$red-index: color.red($color) + 1;
|
14
|
+
$green-index: color.green($color) + 1;
|
15
|
+
$blue-index: color.blue($color) + 1;
|
14
16
|
|
15
|
-
$red: nth(v.$linear-channel-values, $red-index);
|
16
|
-
$green: nth(v.$linear-channel-values, $green-index);
|
17
|
-
$blue: nth(v.$linear-channel-values, $blue-index);
|
17
|
+
$red: list.nth(v.$linear-channel-values, $red-index);
|
18
|
+
$green: list.nth(v.$linear-channel-values, $green-index);
|
19
|
+
$blue: list.nth(v.$linear-channel-values, $blue-index);
|
18
20
|
@return 0.2126 * $red + 0.7152 * $green + 0.0722 * $blue;
|
19
21
|
}
|
@@ -1,4 +1,7 @@
|
|
1
|
+
@use 'sass:list';
|
1
2
|
@use 'sass:map';
|
3
|
+
@use 'sass:math';
|
4
|
+
@use 'sass:meta';
|
2
5
|
@use '../contrast/luminance/luminance';
|
3
6
|
|
4
7
|
// @docs
|
@@ -13,21 +16,21 @@
|
|
13
16
|
$values: ();
|
14
17
|
|
15
18
|
@each $key, $val in $map {
|
16
|
-
$keys: append($keys, $key);
|
17
|
-
$values: append($values, $val);
|
19
|
+
$keys: list.append($keys, $key);
|
20
|
+
$values: list.append($values, $val);
|
18
21
|
}
|
19
22
|
|
20
|
-
$list: zip($keys, $values);
|
23
|
+
$list: list.zip($keys, $values);
|
21
24
|
|
22
25
|
$sorted-map: ();
|
23
26
|
|
24
|
-
@while length($list) > 0 {
|
27
|
+
@while list.length($list) > 0 {
|
25
28
|
// Find smallest pair
|
26
|
-
$smallest-pair: nth($list, 1);
|
29
|
+
$smallest-pair: list.nth($list, 1);
|
27
30
|
|
28
31
|
@each $pair in $list {
|
29
|
-
$value: nth($pair, 2);
|
30
|
-
$smallest-value: nth($smallest-pair, 2);
|
32
|
+
$value: list.nth($pair, 2);
|
33
|
+
$smallest-value: list.nth($smallest-pair, 2);
|
31
34
|
|
32
35
|
@if $value < $smallest-value {
|
33
36
|
$smallest-pair: $pair;
|
@@ -35,8 +38,8 @@
|
|
35
38
|
}
|
36
39
|
|
37
40
|
// Add smallest pair to sorted map
|
38
|
-
$key: nth($smallest-pair, 1);
|
39
|
-
$value: nth($smallest-pair, 2);
|
41
|
+
$key: list.nth($smallest-pair, 1);
|
42
|
+
$value: list.nth($smallest-pair, 2);
|
40
43
|
$sorted-map: map.merge(
|
41
44
|
$sorted-map,
|
42
45
|
(
|
@@ -45,12 +48,12 @@
|
|
45
48
|
);
|
46
49
|
|
47
50
|
// Remove from list smallest pair
|
48
|
-
$smallest-pair-index: index($list, $smallest-pair);
|
51
|
+
$smallest-pair-index: list.index($list, $smallest-pair);
|
49
52
|
$new-list: ();
|
50
53
|
|
51
|
-
@for $i from 1 through length($list) {
|
54
|
+
@for $i from 1 through list.length($list) {
|
52
55
|
@if $i != $smallest-pair-index {
|
53
|
-
$new-list: append($new-list, nth($list, $i), 'space');
|
56
|
+
$new-list: list.append($new-list, list.nth($list, $i), 'space');
|
54
57
|
}
|
55
58
|
}
|
56
59
|
|
@@ -67,12 +70,12 @@
|
|
67
70
|
// @param $nth: nth steps away from zero
|
68
71
|
@function _daff-illuminate-get-key($map, $nth: 1) {
|
69
72
|
//Cap off "nth" to prevent going out-of-bounds.
|
70
|
-
@if ($nth > length($map)) {
|
71
|
-
$nth: length(map);
|
73
|
+
@if ($nth > list.length($map)) {
|
74
|
+
$nth: list.length(map);
|
72
75
|
}
|
73
76
|
|
74
77
|
$map: _daff-illuminate-sort($map);
|
75
|
-
@return nth(nth($map, $nth), 1);
|
78
|
+
@return list.nth(list.nth($map, $nth), 1);
|
76
79
|
}
|
77
80
|
|
78
81
|
// Takes a $color and palette and returns the color in
|
@@ -88,7 +91,7 @@
|
|
88
91
|
|
89
92
|
//Validate
|
90
93
|
@each $key, $palette-color in $palette {
|
91
|
-
@if (type-of($key) == 'string') {
|
94
|
+
@if (meta.type-of($key) == 'string') {
|
92
95
|
$palette: map.remove($palette, $key);
|
93
96
|
}
|
94
97
|
}
|
@@ -124,7 +127,7 @@
|
|
124
127
|
$darker-colors: map.merge(
|
125
128
|
$darker-colors,
|
126
129
|
(
|
127
|
-
$key: abs($luminance)
|
130
|
+
$key: math.abs($luminance)
|
128
131
|
)
|
129
132
|
);
|
130
133
|
}
|
@@ -1 +1 @@
|
|
1
|
-
@forward 'variables';
|
1
|
+
@forward 'variables';
|
@@ -9,7 +9,7 @@ import * as i7 from "./sidebar-header/sidebar-header-title/sidebar-header-title.
|
|
9
9
|
import * as i8 from "./sidebar-header/sidebar-header-action/sidebar-header-action.directive";
|
10
10
|
import * as i9 from "./sidebar-viewport-backdrop/sidebar-viewport-backdrop.component";
|
11
11
|
/**
|
12
|
-
* @deprecated in favor of {@link DAFF_SIDEBAR_COMPONENTS} Deprecated in version 0.78.0. Will be removed in version 0.
|
12
|
+
* @deprecated in favor of {@link DAFF_SIDEBAR_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.
|
13
13
|
*/
|
14
14
|
export declare class DaffSidebarModule {
|
15
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<DaffSidebarModule, never>;
|
@@ -1,9 +1,9 @@
|
|
1
1
|
@use '../../scss/core';
|
2
2
|
|
3
3
|
@mixin daff-sidebar-theme($theme) {
|
4
|
-
$base: core.daff-map-
|
5
|
-
$base-contrast: core.daff-map-
|
6
|
-
$font-color: core.daff-map-
|
4
|
+
$base: core.daff-map-get($theme, 'core', 'base');
|
5
|
+
$base-contrast: core.daff-map-get($theme, 'core', 'base-contrast');
|
6
|
+
$font-color: core.daff-map-get($theme, 'core', 'font-color');
|
7
7
|
|
8
8
|
.daff-sidebar {
|
9
9
|
background: $base;
|
@@ -3,12 +3,12 @@
|
|
3
3
|
@use '../../../../../scss/theming';
|
4
4
|
|
5
5
|
@mixin daff-form-field-theme($theme) {
|
6
|
-
$primary: map
|
7
|
-
$secondary: map
|
8
|
-
$tertiary: map
|
9
|
-
$base: core.daff-map-
|
10
|
-
$base-contrast: core.daff-map-
|
11
|
-
$neutral: core.daff-map-
|
6
|
+
$primary: core.daff-map-get($theme, primary);
|
7
|
+
$secondary: core.daff-map-get($theme, secondary);
|
8
|
+
$tertiary: core.daff-map-get($theme, tertiary);
|
9
|
+
$base: core.daff-map-get($theme, 'core', 'base');
|
10
|
+
$base-contrast: core.daff-map-get($theme, 'core', 'base-contrast');
|
11
|
+
$neutral: core.daff-map-get($theme, 'core', 'neutral');
|
12
12
|
|
13
13
|
.daff-form-field {
|
14
14
|
&__control {
|
@@ -2,8 +2,8 @@
|
|
2
2
|
@use '../../../../scss/theming';
|
3
3
|
|
4
4
|
@mixin daff-input-theme($theme) {
|
5
|
-
$base: core.daff-map-
|
6
|
-
$base-contrast: core.daff-map-
|
5
|
+
$base: core.daff-map-get($theme, 'core', 'base');
|
6
|
+
$base-contrast: core.daff-map-get($theme, 'core', 'base-contrast');
|
7
7
|
|
8
8
|
:host {
|
9
9
|
background: $base;
|
@@ -3,9 +3,9 @@
|
|
3
3
|
@use '../../../../scss/theming';
|
4
4
|
|
5
5
|
@mixin daff-native-select-theme($theme) {
|
6
|
-
$neutral: core.daff-map-
|
7
|
-
$base-contrast: core.daff-map-
|
8
|
-
$black: core.daff-map-
|
6
|
+
$neutral: core.daff-map-get($theme, 'core', 'neutral');
|
7
|
+
$base-contrast: core.daff-map-get($theme, 'core', 'base-contrast');
|
8
|
+
$black: core.daff-map-get($theme, 'core', 'black');
|
9
9
|
|
10
10
|
.daff-native-select {
|
11
11
|
color: theming.daff-illuminate($base-contrast, $neutral, 4);
|
package/switch/README.md
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
# Switch
|
2
|
+
A switch allows users to toggle the state of a single setting.
|
3
|
+
|
4
|
+
## Overview
|
5
|
+
Switches provide a way to toggle between two states with a visual indicator of the current state. A label can be positioned on the left, right, top, or bottom of the switch. The switch can be set to a disabled state, display a loading indicator, or show a custom error message.
|
6
|
+
|
7
|
+
## Usage
|
8
|
+
|
9
|
+
### Within a standalone component
|
10
|
+
To use a switch in a standalone component, import it directly into your custom component:
|
11
|
+
|
12
|
+
```ts
|
13
|
+
@Component({
|
14
|
+
selector: 'custom-component',
|
15
|
+
templateUrl: './custom-component.component.html',
|
16
|
+
standalone: true,
|
17
|
+
imports: [
|
18
|
+
DAFF_SWITCH_COMPONENTS,
|
19
|
+
],
|
20
|
+
})
|
21
|
+
export class CustomComponent {}
|
22
|
+
```
|
23
|
+
|
24
|
+
## Examples
|
25
|
+
|
26
|
+
### Basic Switch
|
27
|
+
A basic switch can be toggled by setting the `checked` property to `true` or `false`. By default, this is set to `false`.
|
28
|
+
|
29
|
+
<design-land-example-viewer-container example="basic-switch"></design-land-example-viewer-container>
|
30
|
+
|
31
|
+
### Disabled Switch
|
32
|
+
A switch with the `disabled` property will be non-interactive.
|
33
|
+
|
34
|
+
<design-land-example-viewer-container example="disabled-switch"></design-land-example-viewer-container>
|
35
|
+
|
36
|
+
### Loading Switch
|
37
|
+
A switch can display a loading state by setting `loading` to `true`. This will also disable the switch.
|
38
|
+
|
39
|
+
<design-land-example-viewer-container example="loading-switch"></design-land-example-viewer-container>
|
40
|
+
|
41
|
+
### Switch with Error
|
42
|
+
An error message can be displayed by setting `error` to `true` and including a `daff-error-message` to show the message text.
|
43
|
+
|
44
|
+
<design-land-example-viewer-container example="switch-error"></design-land-example-viewer-container>
|
45
|
+
|
46
|
+
### Changing Label Position
|
47
|
+
The label position can be changed by setting the `labelPosition` property. The default position is `left`.
|
48
|
+
|
49
|
+
Supported positions: `left | right | top | bottom`
|
50
|
+
|
51
|
+
<design-land-example-viewer-container example="switch-label-positions"></design-land-example-viewer-container>
|
52
|
+
|
53
|
+
|
54
|
+
## Accessibility
|
55
|
+
Switches follow the [ARIA Switch design pattern](https://www.w3.org/WAI/ARIA/apg/patterns/switch/).
|
56
|
+
|
57
|
+
### Keyboard Interactions
|
58
|
+
| Key | Action |
|
59
|
+
| --- | ------ |
|
60
|
+
| Space | Toggles the switch to the opposite state. |
|
61
|
+
| Tab | Moves to next component on the page. |
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
export declare class BasicSwitchComponent {
|
3
|
+
checked: boolean;
|
4
|
+
disabled: boolean;
|
5
|
+
loading: boolean;
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BasicSwitchComponent, never>;
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BasicSwitchComponent, "basic-switch", never, {}, {}, never, never, true, never>;
|
8
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
export declare class DisabledSwitchComponent {
|
3
|
+
checked: boolean;
|
4
|
+
disabled: boolean;
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DisabledSwitchComponent, never>;
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DisabledSwitchComponent, "disabled-switch", never, {}, {}, never, never, true, never>;
|
7
|
+
}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import { DisabledSwitchComponent } from './disabled-switch/disabled-switch.component';
|
2
|
+
import { LoadingSwitchComponent } from './loading-switch/loading-switch.component';
|
3
|
+
import { SwitchErrorComponent } from './switch-error/switch-error.component';
|
4
|
+
import { SwitchLabelPositionsComponent } from './switch-label-positions/switch-label-positions.component';
|
5
|
+
export declare const SWITCH_EXAMPLES: (typeof DisabledSwitchComponent | typeof LoadingSwitchComponent | typeof SwitchErrorComponent | typeof SwitchLabelPositionsComponent)[];
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './public_api';
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
export declare class LoadingSwitchComponent {
|
3
|
+
checked: boolean;
|
4
|
+
loading: boolean;
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoadingSwitchComponent, never>;
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LoadingSwitchComponent, "loading-switch", never, {}, {}, never, never, true, never>;
|
7
|
+
}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
export { SWITCH_EXAMPLES } from './examples';
|
2
|
+
export { BasicSwitchComponent } from './basic-switch/basic-switch.component';
|
3
|
+
export { DisabledSwitchComponent } from './disabled-switch/disabled-switch.component';
|
4
|
+
export { LoadingSwitchComponent } from './loading-switch/loading-switch.component';
|
5
|
+
export { SwitchErrorComponent } from './switch-error/switch-error.component';
|
6
|
+
export { SwitchLabelPositionsComponent } from './switch-label-positions/switch-label-positions.component';
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
export declare class SwitchErrorComponent {
|
3
|
+
checked: boolean;
|
4
|
+
error: boolean;
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SwitchErrorComponent, never>;
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SwitchErrorComponent, "switch-error", never, {}, {}, never, never, true, never>;
|
7
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { UntypedFormControl } from '@angular/forms';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class SwitchLabelPositionsComponent {
|
4
|
+
labelSwitchExample: UntypedFormControl;
|
5
|
+
labelPositionControl: UntypedFormControl;
|
6
|
+
options: {
|
7
|
+
value: string;
|
8
|
+
label: string;
|
9
|
+
}[];
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SwitchLabelPositionsComponent, never>;
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SwitchLabelPositionsComponent, "switch-label-positions", never, {}, {}, never, never, true, never>;
|
12
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './public_api';
|