ngx-edu-sharing-ui 10.0.6 → 10.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -38,3 +38,6 @@ async ngOnInit() {
38
38
 
39
39
  In your scss, make sure to include the global variables via
40
40
  `@import "node-modules/ngx-edu-sharing-ui/assets/scss/variables";`
41
+
42
+ and in your `angular.json`, add it to the `"styles"`
43
+ `"node_modules/ngx-edu-sharing-ui/assets/scss/material_theme.scss",`
@@ -0,0 +1,10 @@
1
+ $primary: var(--primary);
2
+ $primaryMediumLight: var(--palette-primary-200);
3
+ $primaryLight: var(--palette-primary-100);
4
+ $primaryComplementary: var(--accent);
5
+ $primaryDark: var(--palette-primary-900);
6
+ $textOnPrimary: var(--light-primary-text);
7
+ $textOnPrimaryLight: rgba(var(--light-primary-text), 0.75);
8
+ $textPrimary: var(--palette-foreground-text);
9
+ $workspaceTopBarBackground: #383838;
10
+ $workspaceTopBarFontColor: #fff;
@@ -0,0 +1,619 @@
1
+ @use '@angular/material' as mat;
2
+ @use 'angular-material-css-vars' as mat-css-vars;
3
+
4
+ @import 'variables';
5
+ @import 'variables-scss';
6
+ @import 'branding';
7
+
8
+ // optional
9
+ $mat-css-dark-theme-selector: '.isDarkTheme';
10
+ $mat-css-light-theme-selector: '.isLightTheme';
11
+
12
+ // init theme
13
+
14
+ // Define the palettes for your theme using the Material Design palettes available in palette.scss
15
+ // (impomatrted above). For each palette, you can optionally specify a default, lighter, and darker
16
+ // hue. Available color palettes: https://material.io/design/color/
17
+
18
+ $custom-typography: mat.m2-define-typography-config(
19
+ $font-family: $primaryFontFamily,
20
+ $body-1: mat.m2-define-typography-level(100%, normal, 400),
21
+ $body-2: mat.m2-define-typography-level(100%, normal, 400),
22
+ // mat-optgroups labels, input placeholder
23
+ $subtitle-1: mat.m2-define-typography-level(90%, normal, 400),
24
+ // mat-table cells
25
+ $subtitle-2: mat.m2-define-typography-level(90%, normal, 600),
26
+ // mat-table header
27
+ $button: mat.m2-define-typography-level(100%, normal, 400),
28
+ $headline-1: mat.m2-define-typography-level(150%, normal, 400),
29
+ $headline-2: mat.m2-define-typography-level(140%, normal, 400),
30
+ ) !default;
31
+ // Override typography for all Angular Material, including mat-base-typography and all components.
32
+
33
+ @mixin app-theme($theme) {
34
+ // Your app theme
35
+ }
36
+
37
+ @include mat-css-vars.init-material-css-vars($typography-config: $custom-typography)
38
+ using($mat-css-theme) {
39
+ @include app-theme($mat-css-theme);
40
+ }
41
+
42
+ $dark-dividers: rgba(black, 0.12);
43
+ $dark-disabled-text: rgba(black, 0.54); // increased contrast
44
+ $dark-secondary-text: rgba(black, 0.54);
45
+
46
+ :root {
47
+ --mdc-fab-container-color: #{$backgroundColor};
48
+ }
49
+
50
+ .mdc-button {
51
+ span {
52
+ display: flex;
53
+ align-items: center;
54
+ gap: 10px;
55
+ }
56
+ }
57
+
58
+ /** custom project specifics */
59
+ [matripplecolor='primary'] {
60
+ > .mat-ripple-element {
61
+ background-color: $primary;
62
+ opacity: 0.1;
63
+ }
64
+ }
65
+ /*
66
+ material toggle buttons
67
+ */
68
+ mat-button-toggle-group {
69
+ .mat-button-toggle-checked.mat-button-toggle-appearance-standard {
70
+ color: $textOnPrimary;
71
+ background-color: $primary;
72
+ }
73
+ .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay {
74
+ background-color: $primary;
75
+ }
76
+ /*
77
+ bugfix: overlay is not big enough
78
+ */
79
+ .mat-button-toggle-checked .mat-button-toggle-focus-overlay {
80
+ border-bottom-width: 100px;
81
+ }
82
+ &.toggle-full-size {
83
+ width: 100%;
84
+ mat-button-toggle {
85
+ flex-grow: 1;
86
+ }
87
+ }
88
+ }
89
+ .mat-tooltip {
90
+ background-color: $primaryVeryLight !important;
91
+ color: $textMain !important;
92
+ font-weight: bold;
93
+ }
94
+ .mdc-tab__content {
95
+ .mdc-tab__text-label {
96
+ display: flex;
97
+ gap: 10px; // padding for icons
98
+ }
99
+ }
100
+ mat-tab-group {
101
+ mat-tab-header {
102
+ background-color: $backgroundColor;
103
+ }
104
+ }
105
+ .mat-tab-group.mat-dark {
106
+ .mat-tab-header {
107
+ background-color: $workspaceTopBarBackground;
108
+ }
109
+ .mat-tab-header-pagination .mat-tab-header-pagination-chevron {
110
+ border-color: $workspaceTopBarFontColor;
111
+ }
112
+ .mat-tab-labels {
113
+ background-color: $workspaceTopBarBackground;
114
+ .mat-tab-label {
115
+ color: $workspaceTopBarFontColor;
116
+ &.cdk-keyboard-focused:not(.mat-tab-disabled) {
117
+ background-color: rgba(255, 255, 255, 0.2);
118
+ }
119
+ .mat-ripple-element {
120
+ background-color: rgba(255, 255, 255, 0.1);
121
+ }
122
+ }
123
+ }
124
+ .mat-ink-bar {
125
+ background-color: $primaryLight;
126
+ }
127
+ }
128
+ // a mat table with clickable columns
129
+ .mat-table-clickable {
130
+ .mat-row {
131
+ @include clickable();
132
+ transition: all $transitionNormal;
133
+ &:hover {
134
+ background-color: $itemSelectedBackground;
135
+ }
136
+ }
137
+ }
138
+ .mat-mdc-fab.mat-white,
139
+ .mat-mini-fab.mat-white {
140
+ // white background, primary as content color
141
+ color: $primary;
142
+ }
143
+ .mat-mdc-unelevated-button:not(:disabled),
144
+ .mat-mdc-raised-button:not(:disabled),
145
+ .mat-mdc-fab:not(:disabled),
146
+ .mat-mdc-mini-fab:not(:disabled) {
147
+ // `color="warn"`
148
+ &.mat-warn {
149
+ // Red background, same as negative
150
+ background-color: $warning;
151
+ color: white;
152
+ }
153
+ &.status-negative {
154
+ background-color: $colorStatusNegative;
155
+ color: white;
156
+ }
157
+ &.status-warning {
158
+ background-color: $colorStatusWarning;
159
+ color: white;
160
+ }
161
+ &.status-positive {
162
+ background-color: $colorStatusPositive;
163
+ color: white;
164
+ }
165
+ }
166
+ .mat-form-field .mat-button-select-arrow {
167
+ width: 25px;
168
+ height: 25px;
169
+ margin-right: 2px;
170
+ background-color: #fff;
171
+ }
172
+ // align prefix in input fields
173
+ .mat-form-field-appearance-outline .mat-form-field-prefix {
174
+ top: 0.4em !important;
175
+ left: -0.1em;
176
+ }
177
+ // align subscript/bottom hint to complete left/right
178
+ .mat-form-field-appearance-outline .mat-form-field-subscript-wrapper {
179
+ padding: 0 !important;
180
+ }
181
+ .mat-form-field.mat-form-field-no-padding {
182
+ .mat-form-field-wrapper {
183
+ padding-bottom: 0;
184
+ }
185
+ }
186
+ .mat-form-field.mat-form-field-max-width {
187
+ .mat-form-field-wrapper {
188
+ width: 100%;
189
+ }
190
+ }
191
+ // form border on hover
192
+ .mat-form-field-appearance-outline {
193
+ --mdc-outlined-text-field-hover-outline-color: #{mat-css-vars.mat-css-color-primary(300)};
194
+ }
195
+ .mat-form-field-dark {
196
+ input,
197
+ textarea {
198
+ caret-color: $primaryDark;
199
+ }
200
+ .mat-form-field-outline,
201
+ .mat-form-field-label {
202
+ color: rgba(0, 0, 0, 0.6);
203
+ }
204
+ &.mat-focused {
205
+ .mat-form-field-outline,
206
+ .mat-form-field-label {
207
+ color: rgba(0, 0, 0, 0.7);
208
+ }
209
+ }
210
+ }
211
+ .mat-mdc-form-field.mat-form-field-bright {
212
+ input,
213
+ textarea {
214
+ --mdc-outlined-text-field-caret-color: #{$primaryLight};
215
+ }
216
+ --mdc-outlined-text-field-label-text-color: rgba(255, 255, 255, 0.87);
217
+ --mdc-outlined-text-field-outline-color: rgba(255, 255, 255, 0.6);
218
+ --mdc-outlined-text-field-hover-outline-color: rgba(255, 255, 255, 0.87);
219
+ --mdc-outlined-text-field-focus-outline-color: #{mat-css-vars.mat-css-color-primary(100)};
220
+ .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label {
221
+ color: mat-css-vars.mat-css-color-primary(50);
222
+ }
223
+ --mdc-outlined-text-field-input-text-color: rgba(255, 255, 255);
224
+ }
225
+ mat-slide-toggle.mat-mdc-slide-toggle.mat-primary-bright {
226
+ --mdc-switch-unselected-handle-color: #fff;
227
+ --mdc-switch-unselected-hover-handle-color: #{$primaryVeryLight};
228
+ --mdc-switch-unselected-focus-handle-color: #{$primaryVeryLight};
229
+ --mdc-switch-unselected-pressed-handle-color: #{$primaryVeryLight};
230
+ --mdc-switch-unselected-icon-color: #{$textLight};
231
+ --mdc-switch-selected-handle-color: #fff;
232
+ --mdc-switch-selected-hover-handle-color: #{$primaryVeryLight};
233
+ --mdc-switch-selected-focus-handle-color: #{$primaryVeryLight};
234
+ --mdc-switch-selected-pressed-handle-color: #{$primaryVeryLight};
235
+ --mdc-switch-selected-icon-color: #{$primary};
236
+ .mdc-form-field label {
237
+ color: #fff;
238
+ }
239
+ }
240
+ .mat-slide-toggle.cdk-keyboard-focused .mat-slide-toggle-thumb-container .mat-focus-indicator {
241
+ @include setGlobalKeyboardFocus();
242
+ }
243
+
244
+ // will fix g and y to cut off with custom font
245
+ input.mat-input-element,
246
+ mat-label,
247
+ .mat-select-value {
248
+ line-height: normal;
249
+ }
250
+ .mat-input-element::placeholder {
251
+ color: $placeholderColor;
252
+ }
253
+ // will better align the border label for the outlined input
254
+ .mat-form-field-appearance-outline {
255
+ $mat-form-field-floating-label-offset: 0.3em;
256
+ // Add the offset value defined above to all relevant default values
257
+ .mat-form-field-label-wrapper {
258
+ top: calc(-0.9375em - #{$mat-form-field-floating-label-offset});
259
+ padding-top: calc(0.9375em + #{$mat-form-field-floating-label-offset});
260
+ }
261
+ .mat-form-field-label {
262
+ top: calc(1.9375em + #{$mat-form-field-floating-label-offset});
263
+ }
264
+ &.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,
265
+ &.mat-form-field-can-float
266
+ .mat-input-server:focus
267
+ + .mat-form-field-label-wrapper
268
+ .mat-form-field-label {
269
+ transform: translateY(calc(-1.68748em - #{$mat-form-field-floating-label-offset}))
270
+ scale(0.75);
271
+ }
272
+ }
273
+ .mat-autocomplete-high {
274
+ max-height: 350px;
275
+ }
276
+ .mdc-button__label {
277
+ display: inline-flex;
278
+ }
279
+ .mat-flat-button {
280
+ padding: 0 15px !important;
281
+ .mdc-button__label {
282
+ color: $textOnPrimary !important;
283
+ }
284
+ background-color: $primary !important;
285
+ }
286
+ body {
287
+ // Background for raised button
288
+ --mdc-protected-button-container-color: white;
289
+ }
290
+ // improve default positioning of outlined fields with label
291
+ .mat-mdc-text-field-wrapper.mdc-text-field--outlined {
292
+ .mat-mdc-form-field-infix {
293
+ padding-top: 20px;
294
+ min-height: unset;
295
+ }
296
+ }
297
+ .mat-mdc-checkbox {
298
+ .mdc-checkbox__background {
299
+ border-color: $primary !important;
300
+
301
+ background-color: #fff !important;
302
+
303
+ .mdc-checkbox__checkmark {
304
+ color: #fff !important;
305
+ }
306
+ }
307
+ &.mdc-checkbox--disabled {
308
+ .mdc-checkbox__background {
309
+ border-color: $primaryLight !important;
310
+ }
311
+ &.mat-mdc-checkbox-checked,
312
+ &.mat-mdc-checkbox-indeterminate {
313
+ .mdc-checkbox__background {
314
+ background-color: $primaryLight !important;
315
+ }
316
+ }
317
+ }
318
+ &.mat-mdc-checkbox-checked,
319
+ &.mat-mdc-checkbox-indeterminate {
320
+ .mdc-checkbox__background {
321
+ background-color: $primary !important;
322
+ .mdc-checkbox__checkmark,
323
+ .mdc-checkbox__mixedmark {
324
+ color: #fff !important;
325
+ border-color: #fff !important;
326
+ }
327
+ }
328
+ }
329
+ }
330
+ .mat-radio-container {
331
+ .mat-radio-outer-circle {
332
+ border-color: $primary;
333
+ }
334
+ }
335
+ .mat-mdc-checkbox-label {
336
+ line-height: 17pt !important;
337
+ font-size: 1rem;
338
+ color: $textMain;
339
+ > .label-secondary {
340
+ line-height: normal !important;
341
+ }
342
+ }
343
+ .mat-mdc-checkbox-disabled {
344
+ $disabled-color: #919191; // 3:1 on #fafafa (fill-color of checkmark)
345
+ &.mat-checkbox-checked,
346
+ &.mat-checkbox-indeterminate {
347
+ .mat-checkbox-background {
348
+ background-color: $disabled-color;
349
+ }
350
+ }
351
+ &:not(.mat-checkbox-checked) {
352
+ .mat-checkbox-frame {
353
+ border-color: $disabled-color;
354
+ }
355
+ }
356
+ }
357
+ .mat-mdc-checkbox.cdk-keyboard-focused .mat-focus-indicator {
358
+ @include setGlobalKeyboardFocus();
359
+ }
360
+ .mat-mdc-raised-button {
361
+ &:not(.mat-primary) {
362
+ color: $primary !important;
363
+ }
364
+ &.mat-primary {
365
+ color: $textOnPrimary !important;
366
+ }
367
+ &.mat-warn {
368
+ color: $textOnPrimary !important;
369
+ }
370
+ }
371
+ .mat-mdc-button.mat-cancel {
372
+ color: $textMediumLight;
373
+ &:hover {
374
+ color: $primary;
375
+ }
376
+ }
377
+ // Undo default style of mat-icon.
378
+ //
379
+ // We assign icons the class .mat-icon so other Material components will treat them as icons, but we
380
+ // don't use the actual mat-icon component. Some styles rely on setting the elements width and
381
+ // height by changing its font-size.
382
+ //
383
+ // Note that the default style of mat-icon is only loaded when the mat-icon component is used, which
384
+ // is rare but does happen.
385
+ i.mat-icon {
386
+ height: 1em;
387
+ width: 1em;
388
+ > .svg-icons {
389
+ width: 20px;
390
+ height: 20px;
391
+ }
392
+ }
393
+ button {
394
+ &.mat-mdc-button,
395
+ &.mat-mdc-unelevated-button,
396
+ &.mat-mdc-raised-button,
397
+ &.mat-mdc-icon-button,
398
+ &.mat-mdc-fab {
399
+ &.cdk-keyboard-focused {
400
+ @include setGlobalKeyboardFocus();
401
+ }
402
+ }
403
+ }
404
+ .mat-button-no-uppercase .mat-button-wrapper {
405
+ text-transform: none;
406
+ }
407
+ .mat-calendar-table-header-divider {
408
+ display: none;
409
+ }
410
+ .mat-option {
411
+ font-size: 100%;
412
+ .mat-option-primary {
413
+ line-height: initial;
414
+ font-size: 90%;
415
+ }
416
+
417
+ .mat-option-secondary {
418
+ font-size: 75%;
419
+ line-height: initial;
420
+ color: $textLight;
421
+ }
422
+ &:hover:not(.mat-option-disabled),
423
+ .mat-option:focus:not(.mat-option-disabled) {
424
+ background-color: $buttonHoverBackground;
425
+ }
426
+ &.mat-focus-indicator.mat-active::before {
427
+ content: '';
428
+ }
429
+ &.mat-focus-indicator::before {
430
+ top: 0;
431
+ left: 0;
432
+ right: 0;
433
+ bottom: 0;
434
+ position: absolute;
435
+ pointer-events: none;
436
+ @include setGlobalKeyboardFocus($mode: 'border');
437
+ }
438
+ }
439
+
440
+ label .label-secondary {
441
+ font-size: 90%;
442
+ color: $textLight;
443
+ }
444
+ /* a badge (usually counter) inside an (icon) button
445
+ */
446
+ .mat-button-badge {
447
+ position: absolute;
448
+ right: -3px;
449
+ top: -3px;
450
+ color: $textOnPrimary;
451
+ background-color: $colorStatusNegative;
452
+ border-radius: 50%;
453
+ width: 16px;
454
+ height: 16px;
455
+ font-weight: bold;
456
+ font-size: 0.8em;
457
+ display: flex;
458
+ justify-content: center;
459
+ align-items: center;
460
+ }
461
+ .monaco-editor {
462
+ outline: none !important;
463
+ background-color: transparent !important;
464
+ mat-label,
465
+ mat-hint {
466
+ padding: 2px 0;
467
+ font-size: 75%;
468
+ color: $textLight;
469
+ }
470
+ }
471
+ .mat-card-subtitle,
472
+ mat-hint,
473
+ mat-slide-toggle .mdc-form-field label {
474
+ color: $textLight;
475
+ }
476
+ // prevent umlauts from cutting off
477
+ mat-hint,
478
+ mat-error {
479
+ font-size: $fontSizeSmall;
480
+ line-height: 1.5;
481
+ }
482
+
483
+ // Show toggle on the right place
484
+ .toggle-reverse {
485
+ .mdc-form-field {
486
+ flex-direction: row-reverse;
487
+ gap: 10px;
488
+ }
489
+ }
490
+ .mat-slide-toggle-twoside {
491
+ display: flex;
492
+ align-items: center;
493
+ > mat-label {
494
+ color: $textLight;
495
+ padding: 0 8px;
496
+ }
497
+ }
498
+ mat-label.mat-label-standalone {
499
+ font-size: $fontSizeSmall;
500
+ color: $textLight;
501
+ }
502
+ /* fix for mat select icons */
503
+ .mat-select-icon {
504
+ .mat-option-text {
505
+ display: flex;
506
+ align-items: center;
507
+ > i {
508
+ margin-right: 5px;
509
+ }
510
+ }
511
+ }
512
+ mat-select.mat-select-icon {
513
+ mat-select-trigger {
514
+ max-height: 22px;
515
+ display: flex;
516
+ align-items: center;
517
+ > i {
518
+ color: $textLight;
519
+ margin-right: 5px;
520
+ }
521
+ }
522
+ .mat-select-arrow-wrapper {
523
+ transform: none;
524
+ }
525
+ }
526
+
527
+ .mat-select-panel,
528
+ .mat-autocomplete-panel {
529
+ .mat-option:not(.mat-option-disabled) {
530
+ color: $primary;
531
+ }
532
+ .mat-option.mat-selected:not(.mat-option-multiple) {
533
+ background-color: $cardLightBackground;
534
+ font-weight: bold;
535
+ }
536
+ }
537
+ .mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) {
538
+ background-color: var(--palette-primary-100) !important;
539
+ .mat-mdc-chip-remove {
540
+ color: $primary !important;
541
+ opacity: 1 !important;
542
+ }
543
+ }
544
+ .mat-chip-list {
545
+ .mat-chip.mat-standard-chip {
546
+ height: unset; // Override height: 1px
547
+ background-color: $primaryLight;
548
+ overflow: hidden;
549
+ &.indeterminate {
550
+ background: repeating-linear-gradient(
551
+ -45deg,
552
+ $primaryLight,
553
+ $primaryLight 5px,
554
+ rgba(0, 0, 0, 0.04) 5px,
555
+ rgba(0, 0, 0, 0.04) 10px
556
+ );
557
+ color: $textLight;
558
+ }
559
+ &.cdk-keyboard-focused {
560
+ @include setGlobalKeyboardFocus();
561
+ }
562
+ .mat-chip-remove {
563
+ // align somewhat townwards for better centering
564
+ line-height: 1.05;
565
+ color: $primary;
566
+ opacity: 1;
567
+ }
568
+ }
569
+ }
570
+ .mat-mdc-menu-panel {
571
+ min-height: initial !important;
572
+ overflow-x: hidden !important; // prevent scrollbars on FF
573
+ }
574
+
575
+ .cdk-drag-preview {
576
+ border-radius: 4px;
577
+ @include materialShadowBottom();
578
+ }
579
+
580
+ .cdk-drag-placeholder {
581
+ opacity: 0.5;
582
+ }
583
+
584
+ .cdk-drag-animating {
585
+ transition: transform $transitionNormal cubic-bezier(0, 0, 0.2, 1);
586
+ }
587
+ mat-form-field {
588
+ .mat-form-field-suffix {
589
+ > span {
590
+ position: relative;
591
+ top: -0.25em;
592
+ color: $textLight;
593
+ padding-left: 5px;
594
+ }
595
+ }
596
+ &.mat-form-field-disabled {
597
+ .mat-form-field-suffix {
598
+ > span {
599
+ color: $textLight;
600
+ opacity: 0.5;
601
+ }
602
+ }
603
+ }
604
+ }
605
+
606
+ @include contrastMode(global) {
607
+ // We cannot archive sufficient contrast through a Material theme since opacities for color
608
+ // values are hardcoded in the Material component's theme files --- independently of opacities
609
+ // given by the theme.
610
+ .mat-form-field-appearance-outline .mat-form-field-outline:not(.mat-form-field-outline-thick) {
611
+ color: rgba(black, 0.42);
612
+ }
613
+ .cdk-overlay-pane .suggestion-card,
614
+ .cdk-overlay-pane .mat-autocomplete-panel,
615
+ .cdk-overlay-pane .mat-mdc-menu-panel,
616
+ .cdk-overlay-pane .mat-tooltip {
617
+ outline: 1px solid rgba(black, 0.42);
618
+ }
619
+ }