@elderbyte/ngx-starter 18.13.0-beta.1 → 18.13.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 (84) hide show
  1. package/_index.scss +6 -23
  2. package/esm2022/lib/common/exceptions/public_api.mjs +2 -0
  3. package/esm2022/lib/common/exceptions/unreachable-case-error.mjs +6 -0
  4. package/esm2022/lib/common/public_api.mjs +2 -1
  5. package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +3 -3
  6. package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +3 -3
  7. package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +3 -3
  8. package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +3 -3
  9. package/esm2022/lib/components/forms/directives/checkbox/elder-single-state-checkbox-controller.mjs +97 -0
  10. package/esm2022/lib/components/forms/directives/checkbox/elder-single-state-checkbox.directive.mjs +50 -0
  11. package/esm2022/lib/components/forms/directives/checkbox/elder-triple-state-checkbox-controller.mjs +102 -0
  12. package/esm2022/lib/components/forms/directives/checkbox/elder-triple-state-checkbox.directive.mjs +50 -0
  13. package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +9 -3
  14. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +5 -12
  15. package/esm2022/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.mjs +3 -3
  16. package/esm2022/lib/components/public_api.mjs +1 -2
  17. package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +3 -3
  18. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +3 -3
  19. package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +3 -3
  20. package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +3 -3
  21. package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +5 -3
  22. package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +3 -3
  23. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +3 -3
  24. package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +3 -3
  25. package/fesm2022/elderbyte-ngx-starter.mjs +349 -189
  26. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  27. package/lib/common/exceptions/public_api.d.ts +1 -0
  28. package/lib/common/exceptions/unreachable-case-error.d.ts +4 -0
  29. package/lib/common/public_api.d.ts +1 -0
  30. package/lib/components/forms/directives/checkbox/elder-single-state-checkbox-controller.d.ts +46 -0
  31. package/lib/components/forms/directives/checkbox/elder-single-state-checkbox.directive.d.ts +34 -0
  32. package/lib/components/forms/directives/checkbox/elder-triple-state-checkbox-controller.d.ts +47 -0
  33. package/lib/components/forms/directives/{elder-triple-state-checkbox.directive.d.ts → checkbox/elder-triple-state-checkbox.directive.d.ts} +10 -23
  34. package/lib/components/forms/directives/elder-forms-directives.module.d.ts +9 -7
  35. package/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.d.ts +1 -2
  36. package/lib/components/public_api.d.ts +0 -1
  37. package/package.json +1 -1
  38. package/src/lib/components/badge/elder-badge/elder-badge.component.scss +1 -2
  39. package/src/lib/components/button-group/elder-button-group/elder-button-group.component.scss +7 -1
  40. package/src/lib/components/card-organizer/card-stack/elder-card-stack.component.scss +14 -3
  41. package/src/lib/components/cards/elder-card/elder-card.component.scss +8 -2
  42. package/src/lib/components/chips/_elder-chip-theme.scss +12 -101
  43. package/src/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.scss +6 -0
  44. package/src/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.scss +0 -11
  45. package/src/lib/components/data-view/grid/elder-grid/elder-grid.component.scss +22 -15
  46. package/src/lib/components/data-view/table/elder-table/elder-table.component.scss +21 -12
  47. package/src/lib/components/errors/exception-detail/elder-exception-detail.component.scss +9 -2
  48. package/src/lib/components/expand-toggle-button/elder-expand-toggle-button.component.scss +8 -2
  49. package/src/lib/components/files/blob-viewer/elder-blob-viewer.component.scss +9 -4
  50. package/src/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.scss +10 -7
  51. package/src/lib/components/iframes/iframe-host/iframe-host.component.scss +4 -0
  52. package/src/lib/components/navigation/nav/_elder-nav-theme.scss +24 -12
  53. package/src/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.scss +4 -1
  54. package/src/lib/components/panels/card-panel/elder-card-panel.component.scss +12 -3
  55. package/src/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.scss +12 -4
  56. package/src/lib/components/panels/flat/_elder-panel-theme.scss +9 -26
  57. package/src/lib/components/select/_elder-select-base.scss +9 -1
  58. package/src/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.scss +4 -1
  59. package/src/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.scss +39 -10
  60. package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +52 -19
  61. package/src/lib/components/select/single/elder-select/elder-select.component.scss +40 -24
  62. package/src/lib/components/time/_elder-time-input.theme.scss +3 -0
  63. package/src/lib/components/toasts/standard-toast/standard-toast.component.scss +2 -31
  64. package/theming/_elder-common.scss +399 -6
  65. package/theming/_elder-defaults.scss +7 -3
  66. package/theming/_elder-mdc-support.scss +142 -59
  67. package/theming/_elder-palettes.scss +148 -0
  68. package/theming/_elder-scrollbar-theme.scss +12 -2
  69. package/theming/_elder-style-fixes.scss +109 -42
  70. package/theming/_elder-theme.scss +51 -0
  71. package/theming/_elder-toast-theme.scss +46 -0
  72. package/theming/_elder-typography-utils.scss +11 -0
  73. package/theming/_mat-icon-button-size.scss +34 -0
  74. package/theming/_mixins.scss +0 -35
  75. package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +0 -120
  76. package/esm2022/lib/components/loader-background/loader-background.component.mjs +0 -11
  77. package/lib/components/loader-background/loader-background.component.d.ts +0 -5
  78. package/src/lib/components/chips/_elder-chip-theme-old.scss +0 -122
  79. package/src/lib/components/loader-background/loader-background.component.scss +0 -60
  80. package/theming/_elder-badge-sizing.scss +0 -21
  81. package/theming/_elder-color-variants.scss +0 -26
  82. package/theming/_elder-form.scss +0 -308
  83. package/theming/_elder-layout-system.scss +0 -242
  84. package/theming/_elder-m3-theme.scss +0 -879
@@ -1,43 +1,172 @@
1
1
  @use 'sass:map';
2
2
  @use '@angular/material' as mat;
3
- @use './elder-typography-utils' as elder-typography;
3
+ @use '../theming/mat-icon-button-size' as icon-button-size;
4
+ @use '../theming/elder-typography-utils' as elder-typography;
4
5
 
5
6
  @mixin mdc-theme-support($config-or-theme) {
6
- @include _mdc-mat-toolbar();
7
- @include _mdc-control-icon();
7
+ $color: mat.m2-get-color-config($config-or-theme);
8
+ $typography: elder-typography.get-typography-config($config-or-theme);
9
+
10
+ @if $color != null {
11
+ @include _color-support($color);
12
+ }
13
+
14
+ @if $typography != null {
15
+ @include _typography-support($typography);
16
+ }
17
+
18
+ /**
19
+ * This class should be applied to "controls"
20
+ * which themself contain a mat-form-field.
21
+ */
22
+ .elder-form-field-host {
23
+ display: inline-flex;
24
+ flex-direction: column;
25
+ min-width: 0;
26
+ }
27
+ }
28
+
29
+ @mixin _typography-support($typography-config) {
30
+ $config: $typography-config;
31
+
32
+ // The unit-less line-height from the font config.
33
+ $line-height: mat.m2-line-height($config, body-1);
34
+ $font-size: mat.m2-font-size($config, body-1);
35
+ $line-height-em: elder-typography.coerce-unitless-to-em($line-height);
36
+
37
+ // $control-button-size: 24px; // $line-height-em
38
+ $control-button-size: var(--mdc-typography-body1-line-height, 24px);
39
+ $control-icon-size: 20px;
40
+
41
+ .elder-mdc-input-fix {
42
+ max-height: $control-button-size;
43
+ }
44
+
45
+ .mat-mdc-icon-button.elder-control-icon-button {
46
+ @include icon-button-size.matIconButtonSize($control-button-size, $control-icon-size); // 0.6
47
+ }
48
+
49
+ .mat-datepicker-toggle.elder-control-icon-button {
50
+ max-height: $control-button-size;
51
+ max-width: $control-button-size;
52
+
53
+ .mat-mdc-icon-button {
54
+ @include icon-button-size.matIconButtonSize($control-button-size, $control-icon-size); // 0.6
55
+ }
56
+ }
57
+ }
58
+
59
+ @mixin _color-support($color-config) {
60
+ @include _mdc-control-icon($color-config);
61
+ @include _mdc-mat-toolbar($color-config);
62
+ @include _mdc-mat-snack-bar($color-config);
8
63
  }
9
64
 
10
- @mixin _mdc-mat-toolbar() {
65
+ /**
66
+ * The snackbar has a light background in dark, and a dark background in light theme.
67
+ * Therefore, text/contrast colors need to be inverted inside the snackbar.
68
+ */
69
+ @mixin _mdc-mat-snack-bar($color-config) {
70
+ $is-dark-theme: map.get($color-config, is-dark);
71
+ $snackbar-text-color: if(
72
+ $is-dark-theme,
73
+ var(--mdc-theme-text-primary-on-light),
74
+ var(--mdc-theme-text-primary-on-dark)
75
+ );
76
+
77
+ .mat-mdc-snack-bar-container {
78
+ color: $snackbar-text-color; // Fix the default text color in snackbar
79
+ }
80
+ }
81
+
82
+ @mixin _mdc-mat-toolbar($color-config) {
83
+ $foreground: map.get($color-config, foreground);
84
+ $background: map.get($color-config, background);
85
+ $primary: map.get($color-config, primary);
86
+ $accent: map.get($color-config, accent);
87
+ $warn: map.get($color-config, warn);
88
+
11
89
  .mat-toolbar {
12
90
  &.mat-primary {
13
- @include _form-field-palette(primary);
91
+ @include _form-field-palette($primary);
14
92
  }
15
93
 
16
94
  &.mat-accent {
17
- @include _form-field-palette(accent);
95
+ @include _form-field-palette($accent);
18
96
  }
19
97
 
20
98
  &.mat-warn {
21
- @include _form-field-palette(warn);
99
+ @include _form-field-palette($warn);
22
100
  }
23
101
  }
24
102
  }
25
103
 
26
- @mixin _form-field-palette($baseColor) {
27
- $contrast-color: var(--md-sys-color-on-primary);
28
- $contrast-color-inactive: var(--md-sys-color-outline-variant);
29
- $bg-color-extra: transparent;
104
+ @mixin _mdc-control-icon($color-config) {
105
+ $foreground: map.get($color-config, foreground);
106
+ $background: map.get($color-config, background);
107
+ $primary: map.get($color-config, primary);
108
+ $accent: map.get($color-config, accent);
109
+ $warn: map.get($color-config, warn);
110
+
111
+ .elder-mdc-control-icon {
112
+ color: mat.m2-get-color-from-palette($foreground, secondary-text);
113
+ }
114
+
115
+ .mat-mdc-form-field {
116
+ &.mat-focused {
117
+ &.mat-primary {
118
+ .elder-mdc-control-icon,
119
+ .elder-control-icon-button {
120
+ color: mat.m2-get-color-from-palette($primary, text);
121
+ }
122
+ }
123
+
124
+ &.mat-accent {
125
+ .elder-mdc-control-icon,
126
+ .elder-control-icon-button {
127
+ color: mat.m2-get-color-from-palette($accent, text);
128
+ }
129
+ }
130
+
131
+ &.mat-warn {
132
+ .elder-mdc-control-icon,
133
+ .elder-control-icon-button {
134
+ color: mat.m2-get-color-from-palette($warn, text);
135
+ }
136
+ }
137
+ }
138
+
139
+ &.mat-form-field-invalid {
140
+ .elder-mdc-control-icon,
141
+ .elder-control-icon-button {
142
+ color: mat.m2-get-color-from-palette($warn, text);
143
+ }
144
+ }
145
+
146
+ &.mat-form-field-disabled {
147
+ .elder-mdc-control-icon,
148
+ .elder-control-icon-button {
149
+ color: mat.m2-get-color-from-palette($foreground, disabled-text);
150
+ }
151
+ }
152
+ }
153
+ }
154
+
155
+ @mixin _form-field-palette($palette) {
156
+ $contrast-color: mat.m2-get-color-from-palette($palette, default-contrast);
157
+ $contrast-color-inactive: rgba($contrast-color, 0.5);
30
158
 
31
159
  .mat-mdc-slide-toggle .mdc-form-field {
160
+ background: mat.m2-get-color-from-palette($palette);
32
161
  color: $contrast-color;
33
162
  }
34
163
 
35
164
  .mat-mdc-form-field.mat-form-field-appearance-outline {
36
- background: $bg-color-extra;
165
+ background: mat.m2-get-color-from-palette($palette);
37
166
  color: $contrast-color;
38
167
 
39
168
  .mdc-text-field__input {
40
- background: $bg-color-extra;
169
+ background: mat.m2-get-color-from-palette($palette);
41
170
  color: $contrast-color;
42
171
  caret-color: currentColor;
43
172
  }
@@ -104,49 +233,3 @@
104
233
  }
105
234
  }
106
235
  }
107
-
108
- @mixin _mdc-control-icon() {
109
- .elder-mdc-control-icon {
110
- color: var(--md-sys-color-on-surface-variant, var(--md-sys-color-on-surface));
111
- }
112
-
113
- .mat-mdc-form-field {
114
- &.mat-focused {
115
- &.mat-primary {
116
- .elder-mdc-control-icon,
117
- .elder-control-icon-button {
118
- color: var(--md-sys-color-primary);
119
- }
120
- }
121
-
122
- &.mat-accent {
123
- .elder-mdc-control-icon,
124
- .elder-control-icon-button {
125
- color: var(--md-sys-color-tertiary);
126
- }
127
- }
128
-
129
- &.mat-warn {
130
- .elder-mdc-control-icon,
131
- .elder-control-icon-button {
132
- color: var(--md-sys-color-error);
133
- }
134
- }
135
- }
136
-
137
- &.mat-form-field-invalid {
138
- .elder-mdc-control-icon,
139
- .elder-control-icon-button {
140
- color: var(--md-sys-color-error);
141
- }
142
- }
143
-
144
- &.mat-form-field-disabled {
145
- .elder-mdc-control-icon,
146
- .elder-control-icon-button {
147
- color: var(--md-sys-color-on-surface, var(--md-sys-color-outline));
148
- opacity: 0.38;
149
- }
150
- }
151
- }
152
- }
@@ -0,0 +1,148 @@
1
+ @use '@angular/material' as mat;
2
+ @use 'sass:map';
3
+
4
+ /***************************************************************************
5
+ * *
6
+ * Overriding Material Base Variables *
7
+ * *
8
+ **************************************************************************/
9
+
10
+ $dark-primary-text: rgba(black, 0.87);
11
+ $light-primary-text: white;
12
+
13
+ /***************************************************************************
14
+ * *
15
+ * Material Color Palettes *
16
+ * *
17
+ **************************************************************************/
18
+
19
+ // ElderByte Theme
20
+
21
+ $elder-blue: (
22
+ 50: #dfe3e8,
23
+ 100: #b3bcc8,
24
+ 200: #8593a7,
25
+ 300: #546883,
26
+ 400: #2f4869,
27
+ 500: #0b284f,
28
+ // Official Main Color tone: #002852 (#0B284F)
29
+ 600: #0a2448,
30
+ 700: #092040,
31
+ 800: #081c38,
32
+ 900: #061529,
33
+ A100: #809ec5,
34
+ A200: #5179bf,
35
+ A400: #004390,
36
+ A700: #00006b,
37
+ contrast: (
38
+ 50: $dark-primary-text,
39
+ 100: $dark-primary-text,
40
+ 200: $dark-primary-text,
41
+ 300: $dark-primary-text,
42
+ 400: $light-primary-text,
43
+ 500: $light-primary-text,
44
+ 600: $light-primary-text,
45
+ 700: $light-primary-text,
46
+ 800: $light-primary-text,
47
+ 900: $light-primary-text,
48
+ A100: $light-primary-text,
49
+ A200: $light-primary-text,
50
+ A400: $light-primary-text,
51
+ A700: $light-primary-text,
52
+ ),
53
+ );
54
+
55
+ $elder-gold: (
56
+ 50: #f6f3ec,
57
+ 100: #e8e1d1,
58
+ 200: #dacfb4,
59
+ 300: #ccbc96,
60
+ 400: #c1ad80,
61
+ 500: #b69f6a,
62
+ // Official ElderByte Accent tone
63
+ 600: #a69160,
64
+ 700: #948156,
65
+ 800: #81714b,
66
+ 900: #5f5337,
67
+ A100: #e1d1a9,
68
+ A200: #efd08f,
69
+ A400: #dbbe7a,
70
+ A700: #af9144,
71
+ contrast: (
72
+ 50: $dark-primary-text,
73
+ 100: $dark-primary-text,
74
+ 200: $dark-primary-text,
75
+ 300: $dark-primary-text,
76
+ 400: $dark-primary-text,
77
+ 500: $dark-primary-text,
78
+ 600: $dark-primary-text,
79
+ 700: $dark-primary-text,
80
+ 800: $dark-primary-text,
81
+ 900: $dark-primary-text,
82
+ A100: $dark-primary-text,
83
+ A200: $dark-primary-text,
84
+ A400: $dark-primary-text,
85
+ A700: $dark-primary-text,
86
+ ),
87
+ );
88
+
89
+ /***************************************************************************
90
+ * *
91
+ * Dark Theme Palettes *
92
+ * *
93
+ **************************************************************************/
94
+
95
+ $grey-palette: mat.$m2-grey-palette;
96
+ $light-primary-text: rgba(white, 0.87);
97
+ $light-secondary-text: rgba(white, 0.4);
98
+ $light-disabled-text: rgba(white, 0.38);
99
+ $light-dividers: rgba(white, 0.12);
100
+ $light-focused: rgba(white, 0.12);
101
+
102
+ $dark-background-dp-01: #1f1f1f; // 5%
103
+ $dark-background-dp-02: #222222; // 7%
104
+ $dark-background-dp-03: #262626; // 8%
105
+ $dark-background-dp-04: #272727; // 9%
106
+ $dark-background-dp-06: #2c2c2c; // 11%
107
+ $dark-background-dp-08: #2d2d2d; // 12%
108
+ $dark-background-dp-12: #333333; // 14%
109
+
110
+ // Background palette for dark themes.
111
+ $elder-dark-theme-background: (
112
+ status-bar: black,
113
+ app-bar: $dark-background-dp-01,
114
+ background: #121212,
115
+ // #121212
116
+ hover: rgba(white, 0.04),
117
+ card: $dark-background-dp-03,
118
+ dialog: $dark-background-dp-12,
119
+ // $my-dark-dp-06
120
+ disabled-button: rgba(white, 0.12),
121
+ raised-button: map.get($grey-palette, 800),
122
+ focused-button: $light-focused,
123
+ selected-button: map.get($grey-palette, 900),
124
+ selected-disabled-button: map.get($grey-palette, 800),
125
+ disabled-button-toggle: black,
126
+ unselected-chip: map.get($grey-palette, 800),
127
+ disabled-list-option: rgba(white, 0.12),
128
+ tooltip: map.get($grey-palette, 800),
129
+ );
130
+
131
+ // Foreground palette for dark themes.
132
+ $elder-dark-theme-foreground: (
133
+ base: rgba(white, 0.87),
134
+ divider: $light-dividers,
135
+ dividers: $light-dividers,
136
+ disabled: $light-disabled-text,
137
+ disabled-button: rgba(white, 0.38),
138
+ disabled-text: $light-disabled-text,
139
+ elevation: black,
140
+ hint-text: $light-disabled-text,
141
+ secondary-text: $light-secondary-text,
142
+ icon: rgba(white, 0.87),
143
+ icons: rgba(white, 0.87),
144
+ text: rgba(white, 0.87),
145
+ slider-min: rgba(white, 0.87),
146
+ slider-off: rgba(white, 0.38),
147
+ slider-off-active: rgba(white, 0.38),
148
+ );
@@ -9,6 +9,11 @@
9
9
  $scrollbarStyling: map.get($theme, elder, scrollbar-styling);
10
10
 
11
11
  @if $scrollbarStyling {
12
+ $primary: map-get($theme, primary);
13
+ $accent: map-get($theme, accent);
14
+ $warn: map-get($theme, warn);
15
+ $background: map-get($theme, background);
16
+ $foreground: map-get($theme, foreground);
12
17
  $commonSizes: map.get($theme, elder, common-sizes);
13
18
 
14
19
  @include scrollbar-width(map.get($commonSizes, sm)); // default
@@ -37,15 +42,20 @@
37
42
  @include scrollbar-width(map.get($commonSizes, xxl));
38
43
  }
39
44
 
45
+ /* Track */
46
+ ::-webkit-scrollbar-track {
47
+ // background: mat.get-color-from-palette($background, background);
48
+ }
49
+
40
50
  /* Handle */
41
51
  ::-webkit-scrollbar-thumb {
42
- background: var(--md-sys-color-primary);
52
+ background: mat.m2-get-color-from-palette($primary);
43
53
  border-radius: 5px;
44
54
  }
45
55
 
46
56
  /* Handle on hover */
47
57
  ::-webkit-scrollbar-thumb:hover {
48
- background: var(--md-sys-color-primary-fixed);
58
+ background: mat.m2-get-color-from-palette($primary, 300);
49
59
  }
50
60
  }
51
61
  }
@@ -1,11 +1,10 @@
1
1
  @use '@angular/material' as mat;
2
- @use './mixins' as mixins;
2
+ @use 'mixins' as mixins;
3
3
  @use 'sass:map';
4
4
 
5
5
  @mixin elder-style-fixes($theme) {
6
6
  @include _ng-style-fixes;
7
7
  @include _mat-style-fixes($theme);
8
- @include _mat3-fixes($theme);
9
8
 
10
9
  // elder custom icons fill color
11
10
  .mat-icon.svg-icon-inherit-color svg * {
@@ -91,6 +90,88 @@
91
90
  z-index: 1;
92
91
  }
93
92
 
93
+ .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper {
94
+ padding-left: 0 !important;
95
+ }
96
+
97
+ .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper {
98
+ padding-right: 0 !important;
99
+ }
100
+
101
+ .mat-mdc-form-field:not(.mat-mdc-form-field.elder-dense) {
102
+ $density: map-get($theme, elder, density, form-field);
103
+
104
+ /******************************
105
+ Fix big paddings for dense form fields
106
+ *******************************/
107
+
108
+ .mat-mdc-text-field-wrapper {
109
+ padding-left: calc-side-paddings($density);
110
+ padding-right: calc-side-paddings($density);
111
+ }
112
+
113
+ /******************************
114
+ Fix icon size and placement in mat label
115
+ *******************************/
116
+
117
+ @include mixins.form-field-icons($density);
118
+
119
+ /******************************
120
+ Fix text and hover placement of small filled form fields
121
+ *******************************/
122
+
123
+ $mat-mdc-form-field-label-transform: 0.75;
124
+ $mat-mdc-form-field-label-offset-x: -16px;
125
+ $form-field-density: map-get($theme, elder, density, form-field);
126
+
127
+ @if $form-field-density < -1 {
128
+ .mdc-text-field--filled {
129
+ .mdc-floating-label--float-above {
130
+ transform: var(
131
+ $mat-mdc-form-field-label-transform,
132
+ translateY(-50%)
133
+ translateX(calc(1 * (44px + var($mat-mdc-form-field-label-offset-x, 0px))))
134
+ ) !important;
135
+ }
136
+
137
+ .mat-mdc-form-field-infix {
138
+ padding-top: calc-padding-top-form-field-inflix($form-field-density) !important;
139
+ padding-bottom: 2px !important;
140
+ min-height: 40px; // (24 + 2*16) = 56px by default
141
+ }
142
+ }
143
+ }
144
+
145
+ /******************************
146
+ Material Form Field Label stealing clicks
147
+ *******************************/
148
+
149
+ .mat-mdc-floating-label.mdc-floating-label {
150
+ pointer-events: none !important;
151
+
152
+ mat-label {
153
+ pointer-events: none !important;
154
+ }
155
+ }
156
+
157
+ .mdc-notched-outline__notch {
158
+ pointer-events: none !important;
159
+
160
+ .mdc-floating-label {
161
+ pointer-events: none !important;
162
+
163
+ mat-label {
164
+ pointer-events: none !important;
165
+ }
166
+ }
167
+ }
168
+
169
+ .mat-mdc-form-field-error-wrapper {
170
+ display: flex;
171
+ padding-right: 0;
172
+ }
173
+ }
174
+
94
175
  /******************************
95
176
  Material chip make regular chips clickable when applying this class
96
177
  *******************************/
@@ -100,50 +181,36 @@
100
181
  cursor: pointer;
101
182
  }
102
183
  }
184
+ }
103
185
 
104
- /******************************
105
- Styling toast messages
106
- *******************************/
107
- .elder-primary-text {
108
- color: var(--md-sys-color-primary);
109
- }
110
-
111
- .elder-accent-text {
112
- color: var(--md-sys-color-tertiary);
113
- }
114
-
115
- .elder-warn-text {
116
- color: var(--md-sys-color-error);
117
- }
186
+ .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label {
187
+ display: block !important;
118
188
  }
119
189
 
120
- @mixin _mat3-fixes($theme) {
121
- --mat-sidenav-container-width: auto; // is set to around 300px by default in MAT 3 (MAT 2 was auto by default)
122
- --mat-badge-small-size-text-size: 9px; // this is the mat2 setting, mat3 somehow sets this to 0, which hides the font, unclear why.
123
- --mdc-dialog-container-shape: 16px; // make border-radius of dialog container smaller (default is 28px)
124
- --mat-dialog-container-max-width: 80vw; // 80vw is mat 2 default, mat 3 default is very narrow: 560px;
125
- --mat-toolbar-title-text-tracking: 0; // mat toolbar typography
126
- --mat-toolbar-title-text-weight: 500; // mat toolbar typography
127
- --mat-table-row-item-outline-color: var(--md-sys-color-outline-variant); // make table row border color lighter
128
-
129
- .mat-toolbar {
130
- &.mat-primary {
131
- --mat-toolbar-container-text-color: var(--md-sys-color-on-primary);
132
- --mat-toolbar-container-background-color: var(--md-sys-color-primary);
133
- .mat-mdc-icon-button {
134
- color: var(--md-sys-color-on-primary);
135
- }
136
- }
137
- &.mat-accent {
138
- --mat-toolbar-container-text-color: var(--md-sys-color-on-tertiary);
139
- --mat-toolbar-container-background-color: var(--md-sys-color-tertiary);
140
- .mat-mdc-icon-button {
141
- color: var(--md-sys-color-on-tertiary);
142
- }
143
- }
190
+ @function calc-side-paddings($density) {
191
+ $paddingDensityNeg4: 8px;
192
+ $paddingDensityNeg3: 10px;
193
+ $paddingDensityNeg2: 12px;
194
+ $paddingDensityNeg1: 14px;
195
+ $paddingDensity0: 16px;
196
+
197
+ @if $density == -4 {
198
+ @return $paddingDensityNeg4;
199
+ } @else if $density == -3 {
200
+ @return $paddingDensityNeg3;
201
+ } @else if $density == -2 {
202
+ @return $paddingDensityNeg2;
203
+ } @else if $density == -1 {
204
+ @return $paddingDensityNeg1;
205
+ } @else if $density == 0 {
206
+ @return $paddingDensity0;
144
207
  }
208
+ }
145
209
 
146
- .mat-toolbar .mat-mdc-icon-button {
147
- color: inherit;
210
+ @function calc-padding-top-form-field-inflix($density) {
211
+ @if $density > -3 {
212
+ @return 20px;
213
+ } @else {
214
+ @return 14px;
148
215
  }
149
216
  }
@@ -0,0 +1,51 @@
1
+ @use '@angular/material' as mat;
2
+ @use 'sass:map';
3
+ @use 'elder-palettes' as palettes;
4
+
5
+ /***************************************************************************
6
+ * *
7
+ * Public API *
8
+ * *
9
+ **************************************************************************/
10
+
11
+ @function define-dark-elder-theme($config) {
12
+ $result: $config;
13
+ @if map.get($config, color) {
14
+ $color-settings: map.get($config, color);
15
+ $primary: map.get($color-settings, primary);
16
+ $accent: map.get($color-settings, accent);
17
+ $warn: map.get($color-settings, warn);
18
+ $result: map.merge(
19
+ $config,
20
+ (
21
+ color: _mat-create-dark-color-config($primary, $accent, $warn),
22
+ )
23
+ );
24
+ }
25
+ @return _create-backwards-compatibility-theme($result);
26
+ }
27
+
28
+ /***************************************************************************
29
+ * *
30
+ * Private functions *
31
+ * *
32
+ **************************************************************************/
33
+
34
+ @function _mat-create-dark-color-config($primary, $accent, $warn: null) {
35
+ @return (
36
+ primary: $primary,
37
+ accent: $accent,
38
+ warn: if($warn != null, $warn, mat.m2-define-palette(mat.$m2-red-palette)),
39
+ is-dark: true,
40
+ foreground: palettes.$elder-dark-theme-foreground,
41
+ background: palettes.$elder-dark-theme-background
42
+ );
43
+ }
44
+
45
+ @function _create-backwards-compatibility-theme($theme) {
46
+ @if not map.get($theme, color) {
47
+ @return $theme;
48
+ }
49
+ $color: map.get($theme, color);
50
+ @return map.merge($theme, $color);
51
+ }
@@ -0,0 +1,46 @@
1
+ @use '@angular/material' as mat;
2
+
3
+ @mixin theme($theme) {
4
+ $primary: map-get($theme, primary);
5
+ $accent: map-get($theme, accent);
6
+ $warn: map-get($theme, warn);
7
+ $background: map-get($theme, background);
8
+ $foreground: map-get($theme, foreground);
9
+
10
+ /*
11
+ .elder-primary-toast {
12
+ background: mat.get-color-from-palette($background, dialog);
13
+ color: mat.get-color-from-palette($primary);
14
+ }
15
+
16
+ .elder-accent-toast {
17
+ background: mat.get-color-from-palette($background, dialog);
18
+ color: mat.get-color-from-palette($accent);
19
+ }
20
+
21
+ .elder-success-toast {
22
+ background: mat.get-color-from-palette($background, dialog);
23
+ color: mat.get-color-from-palette($primary);
24
+ }
25
+
26
+ .elder-warning-toast {
27
+ background: mat.get-color-from-palette($background, dialog);
28
+ color: mat.get-color-from-palette($accent);
29
+ }
30
+
31
+ .elder-error-toast {
32
+ background-color: mat.get-color-from-palette($warn);
33
+ }*/
34
+
35
+ .elder-primary-text {
36
+ color: mat.m2-get-color-from-palette($primary);
37
+ }
38
+
39
+ .elder-accent-text {
40
+ color: mat.m2-get-color-from-palette($accent);
41
+ }
42
+
43
+ .elder-warn-text {
44
+ color: mat.m2-get-color-from-palette($warn);
45
+ }
46
+ }