@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.
Files changed (219) hide show
  1. package/accordion/accordion.module.d.ts +3 -1
  2. package/accordion/src/accordion-theme.scss +4 -4
  3. package/article/README.md +5 -6
  4. package/article/article.module.d.ts +3 -1
  5. package/article/src/article-theme.scss +8 -8
  6. package/atoms/form/form-field/form-field/form-field.component.d.ts +1 -1
  7. package/breadcrumb/breadcrumb.module.d.ts +3 -1
  8. package/breadcrumb/src/breadcrumb-theme.scss +3 -3
  9. package/button/button.module.d.ts +3 -1
  10. package/button/src/button/basic/button-theme.scss +14 -14
  11. package/button/src/button/button-base.scss +3 -3
  12. package/button/src/button/flat/flat-theme.scss +21 -22
  13. package/button/src/button/icon/icon-theme.scss +13 -14
  14. package/button/src/button/raised/raised-theme.scss +32 -45
  15. package/button/src/button/stroked/stroked-theme.scss +18 -21
  16. package/button/src/button/underline/underline-theme.scss +14 -18
  17. package/callout/callout.module.d.ts +3 -1
  18. package/callout/src/callout-theme.scss +11 -17
  19. package/card/card.module.d.ts +1 -1
  20. package/card/src/card-theme-variants/linkable-card.scss +1 -1
  21. package/card/src/card-theme.scss +9 -9
  22. package/container/container.module.d.ts +1 -1
  23. package/core/public_api.d.ts +1 -0
  24. package/core/selectable/public_api.d.ts +2 -0
  25. package/core/selectable/selectable.d.ts +7 -0
  26. package/core/selectable/selectable.directive.d.ts +17 -0
  27. package/esm2022/accordion/accordion.module.mjs +4 -2
  28. package/esm2022/article/article.module.mjs +4 -2
  29. package/esm2022/atoms/form/checkbox/checkbox.component.mjs +2 -2
  30. package/esm2022/atoms/form/checkbox-set/checkbox-set.component.mjs +2 -2
  31. package/esm2022/atoms/form/form-field/form-field/form-field.component.mjs +2 -2
  32. package/esm2022/atoms/form/radio/radio.component.mjs +2 -2
  33. package/esm2022/atoms/form/radio-set/radio-set.component.mjs +2 -2
  34. package/esm2022/breadcrumb/breadcrumb.module.mjs +4 -2
  35. package/esm2022/button/button.module.mjs +4 -2
  36. package/esm2022/callout/callout.module.mjs +4 -2
  37. package/esm2022/card/card.module.mjs +2 -2
  38. package/esm2022/container/container/container.component.mjs +2 -2
  39. package/esm2022/container/container.module.mjs +2 -2
  40. package/esm2022/core/public_api.mjs +2 -1
  41. package/esm2022/core/selectable/public_api.mjs +2 -0
  42. package/esm2022/core/selectable/selectable.directive.mjs +41 -0
  43. package/esm2022/core/selectable/selectable.mjs +2 -0
  44. package/esm2022/hero/hero.module.mjs +2 -2
  45. package/esm2022/image/image.module.mjs +2 -2
  46. package/esm2022/link-set/link-set.module.mjs +2 -2
  47. package/esm2022/list/examples/basic-list/basic-list.component.mjs +1 -1
  48. package/esm2022/list/examples/icon-list/icon-list.component.mjs +2 -2
  49. package/esm2022/list/examples/multiline-list/multiline-list.component.mjs +1 -1
  50. package/esm2022/list/examples/nav-list/nav-list.component.mjs +2 -2
  51. package/esm2022/list/list/list.component.mjs +2 -2
  52. package/esm2022/list/list-item/list-item.component.mjs +10 -3
  53. package/esm2022/list/list.module.mjs +2 -2
  54. package/esm2022/loading-icon/loading-icon.module.mjs +2 -2
  55. package/esm2022/media-gallery/examples/basic-media-gallery/basic-media-gallery.component.mjs +1 -1
  56. package/esm2022/media-gallery/examples/mismatched-sizes-media-gallery/mismatched-sizes-media-gallery.component.mjs +1 -1
  57. package/esm2022/media-gallery/examples/skeleton-media-gallery/skeleton-media-gallery.component.mjs +1 -1
  58. package/esm2022/media-gallery/media-gallery.module.mjs +2 -2
  59. package/esm2022/media-gallery/thumbnail/thumbnail.directive.mjs +26 -39
  60. package/esm2022/modal/modal.module.mjs +2 -2
  61. package/esm2022/navbar/navbar.module.mjs +2 -2
  62. package/esm2022/notification/notification.module.mjs +2 -2
  63. package/esm2022/paginator/paginator.module.mjs +2 -2
  64. package/esm2022/progress-bar/progress-bar.module.mjs +2 -2
  65. package/esm2022/sidebar/sidebar.module.mjs +2 -2
  66. package/esm2022/switch/daffodil-design-switch.mjs +5 -0
  67. package/esm2022/switch/examples/basic-switch/basic-switch.component.mjs +23 -0
  68. package/esm2022/switch/examples/daffodil-design-switch-examples.mjs +5 -0
  69. package/esm2022/switch/examples/disabled-switch/disabled-switch.component.mjs +20 -0
  70. package/esm2022/switch/examples/examples.mjs +13 -0
  71. package/esm2022/switch/examples/index.mjs +2 -0
  72. package/esm2022/switch/examples/loading-switch/loading-switch.component.mjs +20 -0
  73. package/esm2022/switch/examples/public_api.mjs +7 -0
  74. package/esm2022/switch/examples/switch-error/switch-error.component.mjs +22 -0
  75. package/esm2022/switch/examples/switch-label-positions/switch-label-positions.component.mjs +31 -0
  76. package/esm2022/switch/index.mjs +2 -0
  77. package/esm2022/switch/public_api.mjs +3 -0
  78. package/esm2022/switch/switch/label-position.mjs +11 -0
  79. package/esm2022/switch/switch/switch.component.mjs +126 -0
  80. package/esm2022/switch/switch.mjs +7 -0
  81. package/esm2022/tabs/examples/basic-tabs/basic-tabs.component.mjs +3 -3
  82. package/esm2022/tabs/tabs/tab-activator/tab-activator.component.mjs +22 -21
  83. package/esm2022/tabs/tabs/tabs.component.mjs +4 -8
  84. package/esm2022/toast/toast/toast.component.mjs +3 -3
  85. package/esm2022/toast/toast.module.mjs +2 -2
  86. package/esm2022/tree/tree.module.mjs +2 -2
  87. package/fesm2022/daffodil-design-accordion.mjs +3 -1
  88. package/fesm2022/daffodil-design-accordion.mjs.map +1 -1
  89. package/fesm2022/daffodil-design-article.mjs +3 -1
  90. package/fesm2022/daffodil-design-article.mjs.map +1 -1
  91. package/fesm2022/daffodil-design-breadcrumb.mjs +3 -1
  92. package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -1
  93. package/fesm2022/daffodil-design-button.mjs +3 -1
  94. package/fesm2022/daffodil-design-button.mjs.map +1 -1
  95. package/fesm2022/daffodil-design-callout.mjs +3 -1
  96. package/fesm2022/daffodil-design-callout.mjs.map +1 -1
  97. package/fesm2022/daffodil-design-card.mjs +1 -1
  98. package/fesm2022/daffodil-design-card.mjs.map +1 -1
  99. package/fesm2022/daffodil-design-container.mjs +3 -3
  100. package/fesm2022/daffodil-design-container.mjs.map +1 -1
  101. package/fesm2022/daffodil-design-hero.mjs +1 -1
  102. package/fesm2022/daffodil-design-hero.mjs.map +1 -1
  103. package/fesm2022/daffodil-design-image.mjs +1 -1
  104. package/fesm2022/daffodil-design-image.mjs.map +1 -1
  105. package/fesm2022/daffodil-design-link-set.mjs +1 -1
  106. package/fesm2022/daffodil-design-link-set.mjs.map +1 -1
  107. package/fesm2022/daffodil-design-list-examples.mjs +4 -4
  108. package/fesm2022/daffodil-design-list-examples.mjs.map +1 -1
  109. package/fesm2022/daffodil-design-list.mjs +12 -5
  110. package/fesm2022/daffodil-design-list.mjs.map +1 -1
  111. package/fesm2022/daffodil-design-loading-icon.mjs +1 -1
  112. package/fesm2022/daffodil-design-loading-icon.mjs.map +1 -1
  113. package/fesm2022/daffodil-design-media-gallery-examples.mjs +3 -3
  114. package/fesm2022/daffodil-design-media-gallery-examples.mjs.map +1 -1
  115. package/fesm2022/daffodil-design-media-gallery.mjs +25 -40
  116. package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
  117. package/fesm2022/daffodil-design-modal.mjs +1 -1
  118. package/fesm2022/daffodil-design-modal.mjs.map +1 -1
  119. package/fesm2022/daffodil-design-navbar.mjs +1 -1
  120. package/fesm2022/daffodil-design-navbar.mjs.map +1 -1
  121. package/fesm2022/daffodil-design-notification.mjs +1 -1
  122. package/fesm2022/daffodil-design-notification.mjs.map +1 -1
  123. package/fesm2022/daffodil-design-paginator.mjs +1 -1
  124. package/fesm2022/daffodil-design-paginator.mjs.map +1 -1
  125. package/fesm2022/daffodil-design-progress-bar.mjs +1 -1
  126. package/fesm2022/daffodil-design-progress-bar.mjs.map +1 -1
  127. package/fesm2022/daffodil-design-sidebar.mjs +1 -1
  128. package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
  129. package/fesm2022/daffodil-design-switch-examples.mjs +109 -0
  130. package/fesm2022/daffodil-design-switch-examples.mjs.map +1 -0
  131. package/fesm2022/daffodil-design-switch.mjs +148 -0
  132. package/fesm2022/daffodil-design-switch.mjs.map +1 -0
  133. package/fesm2022/daffodil-design-tabs-examples.mjs +2 -2
  134. package/fesm2022/daffodil-design-tabs-examples.mjs.map +1 -1
  135. package/fesm2022/daffodil-design-tabs.mjs +23 -26
  136. package/fesm2022/daffodil-design-tabs.mjs.map +1 -1
  137. package/fesm2022/daffodil-design-toast.mjs +3 -3
  138. package/fesm2022/daffodil-design-toast.mjs.map +1 -1
  139. package/fesm2022/daffodil-design-tree.mjs +1 -1
  140. package/fesm2022/daffodil-design-tree.mjs.map +1 -1
  141. package/fesm2022/daffodil-design.mjs +45 -6
  142. package/fesm2022/daffodil-design.mjs.map +1 -1
  143. package/hero/hero.module.d.ts +1 -1
  144. package/hero/src/hero-theme.scss +11 -17
  145. package/image/image.module.d.ts +1 -1
  146. package/link-set/link-set.module.d.ts +1 -1
  147. package/list/list-item/list-item.component.d.ts +3 -1
  148. package/list/list.module.d.ts +1 -1
  149. package/list/src/list-theme.scss +13 -9
  150. package/loading-icon/loading-icon.module.d.ts +1 -1
  151. package/loading-icon/src/loading-icon-theme.scss +7 -7
  152. package/media-gallery/media-gallery.module.d.ts +1 -1
  153. package/media-gallery/src/media-gallery-theme.scss +3 -3
  154. package/media-gallery/thumbnail/thumbnail.directive.d.ts +9 -18
  155. package/menu/src/menu-theme.scss +5 -5
  156. package/modal/modal.module.d.ts +1 -1
  157. package/modal/src/modal-theme.scss +1 -1
  158. package/navbar/navbar.module.d.ts +1 -1
  159. package/navbar/src/navbar-theme.scss +8 -8
  160. package/notification/notification.module.d.ts +1 -1
  161. package/notification/src/notification-theme.scss +12 -12
  162. package/package.json +1 -1
  163. package/paginator/paginator.module.d.ts +1 -1
  164. package/paginator/src/paginator-theme.scss +11 -10
  165. package/progress-bar/progress-bar.module.d.ts +1 -1
  166. package/progress-bar/src/progress-bar-theme.scss +10 -10
  167. package/scss/accessibility/_index.scss +1 -1
  168. package/scss/core/_index.scss +1 -2
  169. package/scss/core/error/error-to-string.scss +13 -0
  170. package/scss/core/map/map-deep-check/map-deep-check.scss +2 -1
  171. package/scss/core/map/map-deep-get/map-deep-get.scss +1 -0
  172. package/scss/core/map/map-get/map-get.scss +23 -0
  173. package/scss/core/map/map-get/map-get.spec.scss +65 -0
  174. package/scss/core/string/split/string-split.scss +10 -7
  175. package/scss/global.scss +1 -0
  176. package/scss/interactions/_index.scss +1 -1
  177. package/scss/layout/_index.scss +1 -1
  178. package/scss/state/skeleton/_mixins.scss +2 -2
  179. package/scss/theme.scss +2 -0
  180. package/scss/theming/_configure-theme.scss +2 -2
  181. package/scss/theming/_daff-theme.scss +14 -4
  182. package/scss/theming/_index.scss +1 -1
  183. package/scss/theming/_theme-css-variables.scss +14 -12
  184. package/scss/theming/contrast/luminance/luminance.scss +8 -6
  185. package/scss/theming/illuminate/illuminate.scss +20 -17
  186. package/scss/typography/utilities/_index.scss +1 -1
  187. package/scss/typography/utilities/_variables.scss +1 -1
  188. package/sidebar/sidebar.module.d.ts +1 -1
  189. package/sidebar/src/sidebar-theme.scss +3 -3
  190. package/src/atoms/form/form-field/form-field/form-field-theme.scss +6 -6
  191. package/src/atoms/form/input/input-theme.scss +2 -2
  192. package/src/atoms/form/native-select/native-select-theme.scss +3 -3
  193. package/switch/README.md +61 -0
  194. package/switch/examples/basic-switch/basic-switch.component.d.ts +8 -0
  195. package/switch/examples/disabled-switch/disabled-switch.component.d.ts +7 -0
  196. package/switch/examples/examples.d.ts +5 -0
  197. package/switch/examples/index.d.ts +1 -0
  198. package/switch/examples/loading-switch/loading-switch.component.d.ts +7 -0
  199. package/switch/examples/public_api.d.ts +6 -0
  200. package/switch/examples/switch-error/switch-error.component.d.ts +7 -0
  201. package/switch/examples/switch-label-positions/switch-label-positions.component.d.ts +12 -0
  202. package/switch/index.d.ts +1 -0
  203. package/switch/public_api.d.ts +2 -0
  204. package/switch/src/switch-theme.scss +31 -0
  205. package/switch/switch/label-position.d.ts +10 -0
  206. package/switch/switch/switch.component.d.ts +53 -0
  207. package/switch/switch.d.ts +3 -0
  208. package/tabs/src/tabs-theme.scss +9 -9
  209. package/tabs/tabs/tab-activator/tab-activator.component.d.ts +5 -4
  210. package/tabs/tabs/tabs.component.d.ts +1 -2
  211. package/toast/src/toast-theme.scss +18 -18
  212. package/toast/toast.module.d.ts +1 -1
  213. package/tree/src/tree-theme.scss +11 -11
  214. package/tree/tree.module.d.ts +1 -1
  215. package/scss/core/map/map-deep-check/map-deep-check.spec.scss +0 -43
  216. package/scss/core/map/map-deep-get/map-deep-get.spec.scss +0 -25
  217. package/scss/theming/contrast/contrast-ratio/contrast-ratio.spec.scss +0 -0
  218. package/scss/theming/contrast/text-contrast/text-contrast.spec.scss +0 -0
  219. 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
 
@@ -1,4 +1,5 @@
1
1
  @use 'sass:map';
2
+ @use 'sass:string';
2
3
  @use '../../string/split/string-split';
3
4
  @use '../map-deep-check/map-deep-check';
4
5
 
@@ -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: str-index($string, $separator);
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: str-slice($string, 1, $index - 1);
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: str-slice($string, $index + 1);
25
- $index: str-index($string, $separator);
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
@@ -13,6 +13,7 @@
13
13
 
14
14
  @use 'typography' as t;
15
15
  @use '@angular/cdk/overlay-prebuilt';
16
+ @use '@angular/cdk/a11y-prebuilt';
16
17
  @use 'modern-normalize/modern-normalize';
17
18
  @forward './theming/theme-css-variables';
18
19
 
@@ -1 +1 @@
1
- @forward 'mouse/clickable';
1
+ @forward 'mouse/clickable';
@@ -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-deep-get($theme, 'core.neutral');
6
- $base: core.daff-map-deep-get($theme, 'core.base');
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($primary, $secondary, $tertiary, 'light');
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($primary-dark, $secondary-dark, $tertiary-dark, 'dark');
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-deep-get($theme, 'core.black');
19
- $white: core.daff-map-deep-get($theme, 'core.white');
28
+ $black: core.daff-map-get($theme, 'core', 'black');
29
+ $white: core.daff-map-get($theme, 'core', 'white');
@@ -4,4 +4,4 @@
4
4
  @forward 'illuminate/illuminate';
5
5
  @forward 'configure-palette';
6
6
  @forward 'configure-theme';
7
- @forward 'daff-theme';
7
+ @forward 'daff-theme';
@@ -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-deep-get($theme, 'core.base');
10
- $base-contrast: core.daff-map-deep-get($theme, 'core.base-contrast');
11
- $primary: map.get($theme, primary);
12
- $secondary: map.get($theme, secondary);
13
- $tertiary: map.get($theme, tertiary);
14
- $neutral: core.daff-map-deep-get($theme, 'core.neutral');
15
- $white: core.daff-map-deep-get($theme, 'core.white');
16
- $black: core.daff-map-deep-get($theme, 'core.black');
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
- } @else {
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';
@@ -19,4 +19,4 @@ $medium-font-size: 1.25rem;
19
19
  $normal-font-size: 1rem;
20
20
  $small-font-size: 0.875rem;
21
21
 
22
- $bold-font-weight: bold;
22
+ $bold-font-weight: bold;
@@ -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.81.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-deep-get($theme, 'core.base');
5
- $base-contrast: core.daff-map-deep-get($theme, 'core.base-contrast');
6
- $font-color: core.daff-map-deep-get($theme, 'core.font-color');
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.get($theme, primary);
7
- $secondary: map.get($theme, secondary);
8
- $tertiary: map.get($theme, tertiary);
9
- $base: core.daff-map-deep-get($theme, 'core.base');
10
- $base-contrast: core.daff-map-deep-get($theme, 'core.base-contrast');
11
- $neutral: core.daff-map-deep-get($theme, 'core.neutral');
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-deep-get($theme, 'core.base');
6
- $base-contrast: core.daff-map-deep-get($theme, 'core.base-contrast');
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-deep-get($theme, 'core.neutral');
7
- $base-contrast: core.daff-map-deep-get($theme, 'core.base-contrast');
8
- $black: core.daff-map-deep-get($theme, 'core.black');
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);
@@ -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';
@@ -0,0 +1,2 @@
1
+ export { DAFF_SWITCH_COMPONENTS } from './switch';
2
+ export { DaffSwitchComponent } from './switch/switch.component';