@ecodev/natural 65.0.1 → 66.0.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 (42) hide show
  1. package/fesm2022/ecodev-natural.mjs +142 -44
  2. package/fesm2022/ecodev-natural.mjs.map +1 -1
  3. package/index.d.ts +43 -2
  4. package/{theming/_natural.theme.scss → natural.scss} +1 -1
  5. package/package.json +2 -2
  6. package/src/lib/_natural.scss +204 -0
  7. package/src/lib/modules/alert/_alert.scss +10 -0
  8. package/src/lib/modules/alert/confirm.component.scss +3 -0
  9. package/src/lib/modules/columns-picker/columns-picker.component.scss +3 -0
  10. package/src/lib/modules/detail-header/detail-header.component.scss +43 -0
  11. package/src/lib/modules/dropdown-components/type-date/type-date.component.scss +13 -0
  12. package/src/lib/modules/dropdown-components/type-number/type-number.component.scss +7 -0
  13. package/src/lib/modules/dropdown-components/type-text/type-text.component.scss +7 -0
  14. package/src/lib/modules/file/component/file.component.scss +73 -0
  15. package/src/lib/modules/fixed-button/fixed-button.component.scss +8 -0
  16. package/src/lib/modules/fixed-button-detail/fixed-button-detail.component.scss +0 -0
  17. package/src/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.scss +63 -0
  18. package/src/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.scss +0 -0
  19. package/src/lib/modules/panels/{_panels.external.scss → panels.scss} +11 -0
  20. package/src/lib/modules/relations/relations.component.scss +22 -0
  21. package/src/lib/modules/search/dropdown-container/dropdown-container.component.scss +55 -0
  22. package/src/lib/modules/search/facet-selector/facet-selector.component.scss +10 -0
  23. package/src/lib/modules/search/group/group.component.scss +17 -0
  24. package/src/lib/modules/search/input/input.component.scss +17 -0
  25. package/src/lib/modules/search/search/search.component.scss +56 -0
  26. package/src/lib/modules/select/select/select.component.scss +35 -0
  27. package/src/lib/modules/select/select-enum/select-enum.component.scss +5 -0
  28. package/src/lib/modules/select/select-hierarchic/select-hierarchic.component.scss +23 -0
  29. package/src/lib/modules/sidenav/sidenav-container/sidenav-container.component.scss +25 -0
  30. package/src/lib/modules/sidenav/sidenav-content/sidenav-content.component.scss +6 -0
  31. package/src/lib/modules/sidenav/sidenav.scss +32 -0
  32. package/src/lib/modules/table-button/table-button.component.scss +35 -0
  33. package/src/lib/modules/theme-changer/theme-changer.component.scss +10 -0
  34. package/src/lib/styles/table.scss +107 -0
  35. package/src/lib/_natural.theme.scss +0 -72
  36. package/src/lib/modules/alert/_alert.theme.scss +0 -14
  37. package/src/lib/modules/file/component/_file.theme.scss +0 -23
  38. package/src/lib/modules/search/dropdown-container/_dropdown-container.theme.scss +0 -14
  39. package/src/lib/modules/search/input/_input.theme.scss +0 -23
  40. package/src/lib/modules/search/search.theme.scss +0 -7
  41. package/src/lib/modules/sidenav/_sidenav.theme.scss +0 -40
  42. package/src/lib/styles/_table.scss +0 -94
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injector, InjectionToken, DestroyRef, OnInit, Type, OnChanges, SimpleChanges, AfterViewInit, PipeTransform, Provider, EnvironmentProviders, OnDestroy, EmbeddedViewRef, ComponentRef, StaticProvider, TemplateRef, DoCheck, ErrorHandler, ApplicationConfig } from '@angular/core';
2
+ import { Injector, InjectionToken, DestroyRef, OnInit, Type, EnvironmentProviders, Provider, OnChanges, SimpleChanges, AfterViewInit, PipeTransform, OnDestroy, EmbeddedViewRef, ComponentRef, StaticProvider, TemplateRef, DoCheck, ErrorHandler, ApplicationConfig } from '@angular/core';
3
3
  import { ValidatorFn, AsyncValidatorFn, AbstractControl, UntypedFormGroup, UntypedFormArray, ValidationErrors, FormControl, FormGroup, FormGroupDirective, NgForm, ControlValueAccessor, NgControl } from '@angular/forms';
4
4
  import * as _angular_router from '@angular/router';
5
5
  import { ActivatedRoute, ResolveData, UrlSegment, Router, NavigationExtras, RouterLink, Data as Data$1, NavigationEnd, UrlMatcher, Params, QueryParamsHandling, UrlTree } from '@angular/router';
@@ -1820,6 +1820,33 @@ declare class NaturalEnumService {
1820
1820
  static ɵprov: i0.ɵɵInjectableDeclaration<NaturalEnumService>;
1821
1821
  }
1822
1822
 
1823
+ type AllThemes = [string, ...string[]];
1824
+ declare function provideThemes(config: AllThemes): (EnvironmentProviders | Provider)[];
1825
+ declare enum ColorScheme {
1826
+ Light = "light",
1827
+ Dark = "dark",
1828
+ Auto = "auto"
1829
+ }
1830
+ declare class NaturalThemeService {
1831
+ private readonly allThemes;
1832
+ private readonly storage;
1833
+ private readonly platformId;
1834
+ protected readonly document: Document;
1835
+ readonly isDark: i0.WritableSignal<boolean>;
1836
+ readonly theme: i0.WritableSignal<string>;
1837
+ readonly colorScheme: i0.WritableSignal<ColorScheme>;
1838
+ /**
1839
+ * Set theme in memory, local storage and dom
1840
+ */
1841
+ setTheme(name: string): void;
1842
+ /**
1843
+ * Set color scheme in memory, local storage and dom and keep in sync isDark property
1844
+ */
1845
+ setColorScheme(scheme: ColorScheme, persistInStorage?: boolean): void;
1846
+ static ɵfac: i0.ɵɵFactoryDeclaration<NaturalThemeService, never>;
1847
+ static ɵprov: i0.ɵɵInjectableDeclaration<NaturalThemeService>;
1848
+ }
1849
+
1823
1850
  declare class NaturalSwissParsingDateAdapter extends NativeDateAdapter {
1824
1851
  /**
1825
1852
  * Parse commonly accepted swiss format, such as:
@@ -4242,6 +4269,20 @@ declare class NaturalErrorHandler extends ErrorHandler {
4242
4269
 
4243
4270
  declare function provideErrorHandler(url: string | null, extraService?: Type<NaturalLoggerExtra>): Provider[];
4244
4271
 
4272
+ declare class NaturalColorSchemerComponent {
4273
+ readonly themeService: NaturalThemeService;
4274
+ protected readonly ColorScheme: typeof ColorScheme;
4275
+ static ɵfac: i0.ɵɵFactoryDeclaration<NaturalColorSchemerComponent, never>;
4276
+ static ɵcmp: i0.ɵɵComponentDeclaration<NaturalColorSchemerComponent, "natural-color-schemer", never, {}, {}, never, never, true, never>;
4277
+ }
4278
+
4279
+ declare class NaturalThemeChangerComponent {
4280
+ protected readonly themeService: NaturalThemeService;
4281
+ protected readonly allThemes: [string, ...string[]];
4282
+ static ɵfac: i0.ɵɵFactoryDeclaration<NaturalThemeChangerComponent, never>;
4283
+ static ɵcmp: i0.ɵɵComponentDeclaration<NaturalThemeChangerComponent, "natural-theme-changer", never, {}, {}, never, never, true, never>;
4284
+ }
4285
+
4245
4286
  /**
4246
4287
  * Need to add http:// prefix if we don't have prefix already AND we don't have part of it
4247
4288
  */
@@ -4268,5 +4309,5 @@ declare const naturalProviders: ApplicationConfig['providers'];
4268
4309
  */
4269
4310
  declare function graphqlQuerySigner(key: string): HttpInterceptorFn;
4270
4311
 
4271
- export { AvatarService, InvalidWithValueStateMatcher$1 as InvalidWithValueStateMatcher, LOCAL_STORAGE, NATURAL_DROPDOWN_DATA, NATURAL_ICONS_CONFIG, NATURAL_PERSISTENCE_VALIDATOR, NATURAL_SEO_CONFIG, NaturalAbstractDetail, NaturalAbstractEditableList, NaturalAbstractList, NaturalAbstractModelService, NaturalAbstractNavigableList, NaturalAbstractPanel, NaturalAlertService, NaturalAvatarComponent, NaturalBackgroundDensityDirective, NaturalCapitalizePipe, NaturalColumnsPickerComponent, NaturalConfirmComponent, NaturalDataSource, NaturalDebounceService, NaturalDetailHeaderComponent, NaturalDialogTriggerComponent, NaturalDropdownRef, NaturalEllipsisPipe, NaturalEnumPipe, NaturalEnumService, NaturalErrorHandler, NaturalErrorMessagePipe, NaturalFileComponent, NaturalFileDropDirective, NaturalFileSelectDirective, NaturalFileService, NaturalFixedButtonComponent, NaturalFixedButtonDetailComponent, NaturalHierarchicSelectorComponent, NaturalHierarchicSelectorDialogComponent, NaturalHierarchicSelectorDialogService, NaturalHierarchicSelectorService, NaturalHttpPrefixDirective, NaturalIconDirective, NaturalLinkMutationService, NaturalLinkableTabDirective, NaturalLoggerConfigExtra, NaturalLoggerConfigUrl, NaturalMatomoService, NaturalMemoryStorage, NaturalPanelsComponent, NaturalPanelsService, NaturalPersistenceService, NaturalQueryVariablesManager, NaturalRelationsComponent, NaturalSearchComponent, NaturalSelectComponent, NaturalSelectEnumComponent, NaturalSelectHierarchicComponent, NaturalSeoService, NaturalSidenavComponent, NaturalSidenavContainerComponent, NaturalSidenavContentComponent, NaturalSidenavService, NaturalSidenavStackService, NaturalSrcDensityDirective, NaturalStampComponent, NaturalSwissParsingDateAdapter, NaturalTableButtonComponent, NaturalTimeAgoPipe, NetworkActivityService, PanelsHooksConfig, SESSION_STORAGE, SortingOrder, TypeBooleanComponent, TypeDateComponent, TypeDateRangeComponent, TypeHierarchicSelectorComponent, TypeNaturalSelectComponent, TypeNumberComponent, TypeOptionsComponent, TypeSelectComponent, TypeTextComponent, activityInterceptor, available, cancellableTimeout, cloneDeepButSkipFile, collectErrors, commonImageMimeTypes, copyToClipboard, createHttpLink, debug, decimal, deepFreeze, deliverableEmail, ensureHttpPrefix, fallbackIfNoOpenedPanels, formatIsoDate, formatIsoDateTime, fromUrl, getForegroundColor, graphqlQuerySigner, greaterThan, hasFilesAndProcessDate, ifValid, integer, isFile, localStorageFactory, localStorageProvider, makePlural, memoryLocalStorageProvider, memorySessionStorageProvider, mergeOverrideArray, money, naturalPanelsUrlMatcher, naturalProviders, nfcCardHex, onHistoryEvent, possibleComparableOperators, provideErrorHandler, provideIcons, providePanels, provideSeo, relationsToIds, replaceObjectKeepingReference, replaceOperatorByField, replaceOperatorByName, rgbToHex, sessionStorageFactory, sessionStorageProvider, time, toGraphQLDoctrineFilter, toNavigationParameters, toUrl, unique, upperCaseFirstLetter, url, urlPattern, validTlds, validateAllFormControls, validateColumns, validatePagination, validateSorting, wrapLike, wrapPrefix, wrapSuffix };
4312
+ export { AvatarService, ColorScheme, InvalidWithValueStateMatcher$1 as InvalidWithValueStateMatcher, LOCAL_STORAGE, NATURAL_DROPDOWN_DATA, NATURAL_ICONS_CONFIG, NATURAL_PERSISTENCE_VALIDATOR, NATURAL_SEO_CONFIG, NaturalAbstractDetail, NaturalAbstractEditableList, NaturalAbstractList, NaturalAbstractModelService, NaturalAbstractNavigableList, NaturalAbstractPanel, NaturalAlertService, NaturalAvatarComponent, NaturalBackgroundDensityDirective, NaturalCapitalizePipe, NaturalColorSchemerComponent, NaturalColumnsPickerComponent, NaturalConfirmComponent, NaturalDataSource, NaturalDebounceService, NaturalDetailHeaderComponent, NaturalDialogTriggerComponent, NaturalDropdownRef, NaturalEllipsisPipe, NaturalEnumPipe, NaturalEnumService, NaturalErrorHandler, NaturalErrorMessagePipe, NaturalFileComponent, NaturalFileDropDirective, NaturalFileSelectDirective, NaturalFileService, NaturalFixedButtonComponent, NaturalFixedButtonDetailComponent, NaturalHierarchicSelectorComponent, NaturalHierarchicSelectorDialogComponent, NaturalHierarchicSelectorDialogService, NaturalHierarchicSelectorService, NaturalHttpPrefixDirective, NaturalIconDirective, NaturalLinkMutationService, NaturalLinkableTabDirective, NaturalLoggerConfigExtra, NaturalLoggerConfigUrl, NaturalMatomoService, NaturalMemoryStorage, NaturalPanelsComponent, NaturalPanelsService, NaturalPersistenceService, NaturalQueryVariablesManager, NaturalRelationsComponent, NaturalSearchComponent, NaturalSelectComponent, NaturalSelectEnumComponent, NaturalSelectHierarchicComponent, NaturalSeoService, NaturalSidenavComponent, NaturalSidenavContainerComponent, NaturalSidenavContentComponent, NaturalSidenavService, NaturalSidenavStackService, NaturalSrcDensityDirective, NaturalStampComponent, NaturalSwissParsingDateAdapter, NaturalTableButtonComponent, NaturalThemeChangerComponent, NaturalThemeService, NaturalTimeAgoPipe, NetworkActivityService, PanelsHooksConfig, SESSION_STORAGE, SortingOrder, TypeBooleanComponent, TypeDateComponent, TypeDateRangeComponent, TypeHierarchicSelectorComponent, TypeNaturalSelectComponent, TypeNumberComponent, TypeOptionsComponent, TypeSelectComponent, TypeTextComponent, activityInterceptor, available, cancellableTimeout, cloneDeepButSkipFile, collectErrors, commonImageMimeTypes, copyToClipboard, createHttpLink, debug, decimal, deepFreeze, deliverableEmail, ensureHttpPrefix, fallbackIfNoOpenedPanels, formatIsoDate, formatIsoDateTime, fromUrl, getForegroundColor, graphqlQuerySigner, greaterThan, hasFilesAndProcessDate, ifValid, integer, isFile, localStorageFactory, localStorageProvider, makePlural, memoryLocalStorageProvider, memorySessionStorageProvider, mergeOverrideArray, money, naturalPanelsUrlMatcher, naturalProviders, nfcCardHex, onHistoryEvent, possibleComparableOperators, provideErrorHandler, provideIcons, providePanels, provideSeo, provideThemes, relationsToIds, replaceObjectKeepingReference, replaceOperatorByField, replaceOperatorByName, rgbToHex, sessionStorageFactory, sessionStorageProvider, time, toGraphQLDoctrineFilter, toNavigationParameters, toUrl, unique, upperCaseFirstLetter, url, urlPattern, validTlds, validateAllFormControls, validateColumns, validatePagination, validateSorting, wrapLike, wrapPrefix, wrapSuffix };
4272
4313
  export type { AvailableColumn, Button, DropdownComponent, DropdownFacet, ExtractResolve, ExtractTall, ExtractTallOne, ExtractTcreate, ExtractTdelete, ExtractTone, ExtractTupdate, ExtractVall, ExtractVcreate, ExtractVdelete, ExtractVone, ExtractVupdate, Facet, FileModel, FileSelection, Filter, FilterGroupConditionField, FlagFacet, FormAsyncValidators, FormControls, FormValidators, HierarchicDialogConfig, HierarchicDialogResult, HierarchicFilterConfiguration$1 as HierarchicFilterConfiguration, HierarchicFiltersConfiguration$1 as HierarchicFiltersConfiguration, IEnum, InvalidFile, LinkableObject, Literal, NameOrFullName, NaturalConfirmData, NaturalDialogTriggerProvidedData, NaturalDialogTriggerRedirectionValues, NaturalDialogTriggerRoutingData, NaturalDropdownData, NaturalHierarchicConfiguration, NaturalIconConfig, NaturalIconsConfig, NaturalLoggerExtra, NaturalLoggerType, NaturalPanelConfig, NaturalPanelData, NaturalPanelResolves, NaturalPanelsBeforeOpenPanel, NaturalPanelsHooksConfig, NaturalPanelsRouteConfig, NaturalPanelsRouterRule, NaturalPanelsRoutesConfig, NaturalSearchFacets, NaturalSearchSelection, NaturalSearchSelections, NaturalSeo, NaturalSeoBasic, NaturalSeoCallback, NaturalSeoConfig, NaturalSeoResolve, NaturalSeoResolveData, NaturalStorage, NavigableItem, OrganizedModelSelection, PaginatedData, PaginationInput, PersistenceValidator, PossibleComparableOpertorKeys, QueryVariables, ResolvedData, Sorting, SubButton, TypeBooleanConfiguration, TypeDateConfiguration, TypeDateRangeConfiguration, TypeHierarchicSelectorConfiguration, TypeNumberConfiguration, TypeOption, TypeOptionsConfiguration, TypeSelectConfiguration, TypeSelectItem, TypeSelectNaturalConfiguration, VariablesWithInput, WithId };
@@ -7,4 +7,4 @@ So Natural styles can be imported into an application like so:
7
7
  ```
8
8
  */
9
9
 
10
- @forward '../src/lib/natural.theme' show natural, $typography;
10
+ @forward './src/lib/natural' show natural, $typography;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@ecodev/natural",
3
- "version": "65.0.1",
3
+ "version": "66.0.0",
4
4
  "license": "MIT",
5
5
  "repository": "github:Ecodev/natural",
6
6
  "sideEffects": false,
7
7
  "exports": {
8
8
  ".": {
9
- "sass": "./theming/_natural.theme.scss",
9
+ "sass": "./src/lib/_natural.scss",
10
10
  "types": "./index.d.ts",
11
11
  "default": "./fesm2022/ecodev-natural.mjs"
12
12
  },
@@ -0,0 +1,204 @@
1
+ @use 'sass:map';
2
+ @use '@angular/material' as mat;
3
+ @use 'styles/table';
4
+ @use 'modules/panels/panels.scss';
5
+ @use 'modules/sidenav/sidenav.scss';
6
+ @use 'modules/alert/alert.scss';
7
+
8
+ [data-color-scheme='auto'] {
9
+ color-scheme: light dark;
10
+ }
11
+
12
+ [data-color-scheme='light'] {
13
+ color-scheme: light;
14
+ }
15
+
16
+ [data-color-scheme='dark'] {
17
+ color-scheme: dark;
18
+ }
19
+
20
+ [data-is-dark='false'] .nat-for-dark {
21
+ display: none;
22
+ }
23
+
24
+ [data-is-dark='true'] .nat-for-light {
25
+ display: none;
26
+ }
27
+
28
+ /**
29
+ * Global css
30
+ */
31
+ .mat-mdc-table .mdc-button__label {
32
+ white-space: nowrap;
33
+ }
34
+
35
+ body {
36
+ --nat-elevation: inset 0 1px rgba(255, 255, 255, 0.3), var(--mat-sys-level1);
37
+ --nat-gradient-primary: linear-gradient(
38
+ 175deg,
39
+ color-mix(in srgb, var(--mat-sys-primary-container) 95%, white),
40
+ color-mix(in srgb, var(--mat-sys-primary-container) 90%, black)
41
+ );
42
+
43
+ --nat-gradient-secondary: linear-gradient(
44
+ 175deg,
45
+ color-mix(in srgb, var(--mat-sys-secondary-container) 95%, white),
46
+ color-mix(in srgb, var(--mat-sys-secondary-container) 90%, black)
47
+ );
48
+
49
+ --nat-gradient-tertiary: linear-gradient(
50
+ 175deg,
51
+ color-mix(in srgb, var(--mat-sys-tertiary-container) 95%, white),
52
+ color-mix(in srgb, var(--mat-sys-tertiary-container) 90%, black)
53
+ );
54
+
55
+ --nat-gradient-error: linear-gradient(
56
+ 175deg,
57
+ color-mix(in srgb, var(--mat-sys-error) 95%, white),
58
+ color-mix(in srgb, var(--mat-sys-error) 90%, black)
59
+ );
60
+
61
+ --nat-good: rgb(0, 175, 0, 1);
62
+ --nat-on-good: white;
63
+ --nat-gradient-good: linear-gradient(
64
+ 175deg,
65
+ color-mix(in srgb, var(--nat-good) 95%, white),
66
+ color-mix(in srgb, var(--nat-good) 90%, black)
67
+ );
68
+
69
+ --nat-gradient-inverse-surface: linear-gradient(
70
+ 175deg,
71
+ color-mix(in srgb, var(--mat-sys-inverse-surface) 95%, white),
72
+ color-mix(in srgb, var(--mat-sys-inverse-surface) 90%, black)
73
+ );
74
+
75
+ --nat-bad: rgb(200, 11, 11);
76
+ --nat-on-bad: white;
77
+ --nat-gradient-bad: linear-gradient(
78
+ 175deg,
79
+ color-mix(in srgb, var(--nat-bad) 60%, white),
80
+ color-mix(in srgb, var(--nat-bad) 90%, black)
81
+ );
82
+ }
83
+
84
+ .nat-elevation {
85
+ box-shadow: var(--nat-elevation);
86
+ }
87
+
88
+ .nat-frame {
89
+ padding: 6px;
90
+
91
+ &-rounded {
92
+ border-radius: var(--mat-sys-corner-small);
93
+ }
94
+
95
+ &-neutral1 {
96
+ background-color: var(--mat-sys-neutral10);
97
+
98
+ color: var(--mat-sys-on-surface);
99
+ }
100
+
101
+ &-neutral2 {
102
+ background-color: var(--mat-sys-neutral-variant20);
103
+ color: var(--mat-sys-on-surface);
104
+ }
105
+
106
+ &-primary {
107
+ background-color: var(--mat-sys-primary-container);
108
+ color: var(--mat-sys-on-primary-container);
109
+ }
110
+
111
+ &-secondary {
112
+ background-color: var(--mat-sys-secondary-container);
113
+ color: var(--mat-sys-on-secondary-container);
114
+ }
115
+
116
+ &-tertiary {
117
+ background-color: var(--mat-sys-tertiary-container);
118
+ color: var(--mat-sys-on-tertiary-container);
119
+ }
120
+
121
+ &-error {
122
+ background-color: var(--mat-sys-error);
123
+ color: var(--mat-sys-on-error);
124
+ }
125
+ }
126
+
127
+ .nat-text {
128
+ &-primary {
129
+ color: var(--mat-sys-primary-container);
130
+ }
131
+
132
+ &-accent {
133
+ color: var(--mat-sys-tertiary-container);
134
+ }
135
+
136
+ &-error {
137
+ color: var(--mat-sys-error-container);
138
+ }
139
+ }
140
+
141
+ .mdc-fab {
142
+ &.nat-rounded {
143
+ @include mat.fab-overrides(
144
+ (
145
+ container-shape: var(--mat-sys-corner-full),
146
+ extended-container-shape: var(--mat-sys-corner-full),
147
+ small-container-shape: var(--mat-sys-corner-full),
148
+ )
149
+ );
150
+ }
151
+
152
+ &.nat-flat {
153
+ @include mat.fab-overrides(
154
+ (
155
+ container-elevation-shadow: 0,
156
+ focus-container-elevation-shadow: 0,
157
+ hover-container-elevation-shadow: 0,
158
+ extended-container-elevation-shadow: 0,
159
+ extended-focus-container-elevation-shadow: 0,
160
+ extended-hover-container-elevation-shadow: 0,
161
+ small-container-elevation-shadow: 0,
162
+ small-focus-container-elevation-shadow: 0,
163
+ small-hover-container-elevation-shadow: 0,
164
+ )
165
+ );
166
+ }
167
+ }
168
+
169
+ .nat-gradient {
170
+ &-primary {
171
+ background: var(--nat-gradient-primary) !important;
172
+ color: var(--mat-sys-on-primary-container) !important;
173
+ }
174
+
175
+ &-secondary {
176
+ background: var(--nat-gradient-secondary) !important;
177
+ color: var(--mat-sys-on-secondary-container) !important;
178
+ }
179
+
180
+ &-tertiary {
181
+ background: var(--nat-gradient-tertiary) !important;
182
+ color: var(--mat-sys-on-tertiary-container) !important;
183
+ }
184
+
185
+ &-error {
186
+ background: var(--nat-gradient-error) !important;
187
+ color: var(--mat-sys-on-error) !important;
188
+ }
189
+
190
+ &-good {
191
+ background: var(--nat-gradient-good) !important;
192
+ color: var(--nat-on-good) !important;
193
+ }
194
+
195
+ &-bad {
196
+ background: var(--nat-gradient-bad) !important;
197
+ color: var(--nat-on-bad) !important;
198
+ }
199
+
200
+ &-inverse-surface {
201
+ background: var(--nat-gradient-inverse-surface) !important;
202
+ color: var(--mat-sys-inverse-on-surface) !important;
203
+ }
204
+ }
@@ -0,0 +1,10 @@
1
+ @use '@angular/material' as mat;
2
+
3
+ .snackbar-error {
4
+ @include mat.snack-bar-overrides(
5
+ (
6
+ container-color: var(--mat-sys-error),
7
+ supporting-text-color: var(--mat-sys-on-error),
8
+ )
9
+ );
10
+ }
@@ -0,0 +1,3 @@
1
+ mat-dialog-content {
2
+ max-width: 40em;
3
+ }
@@ -0,0 +1,3 @@
1
+ .align-with-checkbox {
2
+ padding-left: 61px; // Magic number to align menu item without checkboxes with menu items with checkboxes
3
+ }
@@ -0,0 +1,43 @@
1
+ :host {
2
+ display: flex;
3
+ flex-direction: column;
4
+
5
+ .breadcrumb,
6
+ .body {
7
+ display: flex;
8
+ flex-direction: row;
9
+ align-items: center;
10
+ }
11
+
12
+ .breadcrumb {
13
+ position: relative;
14
+ top: 5px;
15
+ }
16
+
17
+ .body {
18
+ min-height: 40px;
19
+
20
+ & > *:not(:last-child) {
21
+ margin-right: 5px;
22
+ }
23
+
24
+ .label,
25
+ .newLabel {
26
+ flex: 1;
27
+ }
28
+
29
+ @media screen and (max-width: 600px) {
30
+ flex-direction: column;
31
+ align-items: flex-start;
32
+
33
+ & > *:not(:last-child) {
34
+ margin-bottom: 10px !important;
35
+ }
36
+
37
+ // Hide icon on small screen to save precious space
38
+ mat-icon {
39
+ display: none;
40
+ }
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,13 @@
1
+ form {
2
+ display: grid;
3
+ grid: auto auto / 4em auto;
4
+ grid-gap: 0 1em;
5
+ }
6
+
7
+ form > mat-checkbox {
8
+ grid-column-start: 2;
9
+
10
+ // Prevent scroll bar
11
+ // TODO idem
12
+ margin-bottom: 0.3em;
13
+ }
@@ -0,0 +1,7 @@
1
+ :host {
2
+ input::-webkit-outer-spin-button,
3
+ input::-webkit-inner-spin-button {
4
+ -webkit-appearance: none;
5
+ margin: 0;
6
+ }
7
+ }
@@ -0,0 +1,7 @@
1
+ :host {
2
+ input::-webkit-outer-spin-button,
3
+ input::-webkit-inner-spin-button {
4
+ -webkit-appearance: none;
5
+ margin: 0;
6
+ }
7
+ }
@@ -0,0 +1,73 @@
1
+ :host {
2
+ display: flex;
3
+ position: relative;
4
+ flex-direction: row;
5
+ border-color: var(--mat-sys-secondary-container);
6
+ background-color: var(--mat-sys-secondary-container);
7
+ overflow: hidden;
8
+
9
+ & > a {
10
+ position: relative;
11
+ flex: 1;
12
+ background-position: center;
13
+ background-repeat: no-repeat;
14
+ background-color: var(--mat-sys-surface-container-lowest);
15
+
16
+ &.has-action {
17
+ cursor: pointer;
18
+
19
+ &.suggest-upload .action-overlay {
20
+ opacity: 0.66;
21
+ }
22
+
23
+ &:hover,
24
+ &.natural-file-over {
25
+ .action-overlay {
26
+ opacity: 1;
27
+ }
28
+ }
29
+ }
30
+ }
31
+
32
+ .action-overlay,
33
+ .file-preview {
34
+ display: flex;
35
+ position: absolute;
36
+ top: 0;
37
+ right: 0;
38
+ bottom: 0;
39
+ left: 0;
40
+ flex-direction: column;
41
+ justify-content: center;
42
+ align-items: center;
43
+ font-size: 36px;
44
+ line-height: 1.3em;
45
+ text-align: center;
46
+ }
47
+
48
+ a[naturalFileDrop] {
49
+ border: 1px dashed var(--mat-sys-secondary-container);
50
+ }
51
+
52
+ .action-overlay,
53
+ .file-preview {
54
+ background-color: var(--mat-sys-secondary-fixed);
55
+ color: var(--mat-sys-on-secondary-fixed);
56
+ }
57
+
58
+ .action-overlay {
59
+ opacity: 0;
60
+
61
+ & > div {
62
+ display: flex;
63
+ position: absolute;
64
+ top: 0;
65
+ right: 0;
66
+ bottom: 0;
67
+ left: 0;
68
+ justify-content: center;
69
+ align-items: center;
70
+ opacity: 0;
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,8 @@
1
+ :host {
2
+ position: fixed !important;
3
+ right: 32px;
4
+
5
+ // Default bottom right
6
+ bottom: 32px;
7
+ z-index: 999; // < than 1000 that is the z-index of overlay contents
8
+ }
@@ -0,0 +1,63 @@
1
+ :host {
2
+ display: block;
3
+ }
4
+
5
+ mat-icon {
6
+ width: 18px;
7
+ height: 18px;
8
+ font-size: 18px;
9
+ }
10
+
11
+ .select-all {
12
+ display: inline-block;
13
+ margin-top: -15px;
14
+ margin-bottom: 5px;
15
+ }
16
+
17
+ .mat-tree-node.leaf {
18
+ margin-left: 48px;
19
+ }
20
+
21
+ .body {
22
+ display: flex;
23
+ flex-direction: row;
24
+ justify-content: space-between;
25
+
26
+ mat-tree {
27
+ flex: 66;
28
+ flex-shrink: 0;
29
+ }
30
+ mat-chip-listbox {
31
+ flex: 33;
32
+ margin-left: 10px;
33
+ }
34
+ }
35
+
36
+ mat-nested-tree-node {
37
+ display: block;
38
+
39
+ &,
40
+ .wrapper {
41
+ min-height: 48px;
42
+ }
43
+
44
+ mat-nested-tree-node {
45
+ display: block;
46
+ padding-left: 40px !important;
47
+ }
48
+ }
49
+
50
+ .invisible {
51
+ display: none;
52
+ }
53
+
54
+ .unexpandable {
55
+ padding-left: 40px;
56
+ }
57
+
58
+ .selection {
59
+ &,
60
+ .mat-icon {
61
+ margin-right: 10px;
62
+ }
63
+ }
@@ -1,6 +1,16 @@
1
+ @use '@angular/material' as mat;
2
+
1
3
  .cdk-overlay-container {
4
+ @include mat.dialog-overrides(
5
+ (
6
+ container-shape: 0,
7
+ container-max-width: 100vw,
8
+ )
9
+ );
10
+
2
11
  .panel {
3
12
  margin: 10px;
13
+ box-shadow: var(--mat-sys-level2);
4
14
  max-width: calc(100vw - 84px);
5
15
 
6
16
  @media (max-width: 960px) {
@@ -45,6 +55,7 @@
45
55
  position: relative;
46
56
 
47
57
  cursor: pointer;
58
+
48
59
  .panelBody {
49
60
  display: none !important;
50
61
  }
@@ -0,0 +1,22 @@
1
+ :host {
2
+ display: flex;
3
+ flex-direction: column;
4
+
5
+ // Gap between vertical elements
6
+ & > *:not(:last-child) {
7
+ margin-bottom: 20px;
8
+ }
9
+
10
+ .body {
11
+ display: flex;
12
+ flex-direction: column;
13
+ }
14
+
15
+ .loading {
16
+ margin: 20px auto;
17
+ }
18
+
19
+ .mat-column-unlink {
20
+ width: 2.5em;
21
+ }
22
+ }
@@ -0,0 +1,55 @@
1
+ @use '@angular/material' as mat;
2
+
3
+ @keyframes _mat-menu-enter {
4
+ from {
5
+ transform: scale(0.8);
6
+ opacity: 0;
7
+ }
8
+
9
+ to {
10
+ transform: none;
11
+ opacity: 1;
12
+ }
13
+ }
14
+
15
+ @keyframes _mat-menu-exit {
16
+ from {
17
+ opacity: 1;
18
+ }
19
+
20
+ to {
21
+ opacity: 0;
22
+ }
23
+ }
24
+
25
+ .natural-dropdown-container {
26
+ display: flex;
27
+ flex-direction: column;
28
+ animation: _mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);
29
+ box-shadow: var(--mat-sys-level2);
30
+ border-radius: 2px;
31
+ background: var(--mat-sys-surface-container-high);
32
+ height: 100%;
33
+
34
+ & > * > * > * {
35
+ outline: none !important;
36
+ }
37
+
38
+ &-content {
39
+ flex: 1;
40
+ padding: 5px;
41
+ overflow: auto;
42
+ }
43
+
44
+ .natural-dropdown-validate-button {
45
+ display: flex;
46
+ flex: none;
47
+ flex-direction: row;
48
+ justify-content: flex-end;
49
+ margin: 5px;
50
+ }
51
+
52
+ &.mat-menu-panel-exit-animation {
53
+ animation: _mat-menu-exit 100ms 25ms linear forwards;
54
+ }
55
+ }
@@ -0,0 +1,10 @@
1
+ .mat-nav-list {
2
+ padding: 0;
3
+ }
4
+
5
+ .dropdown-title {
6
+ opacity: 0.7;
7
+ padding: 5px;
8
+ font-variant: all-small-caps;
9
+ font-size: 18px;
10
+ }
@@ -0,0 +1,17 @@
1
+ :host {
2
+ display: flex;
3
+ flex-direction: row;
4
+ flex-wrap: wrap;
5
+
6
+ natural-input {
7
+ display: inline-flex;
8
+ flex: auto;
9
+ margin-right: 10px;
10
+ margin-bottom: 10px;
11
+ }
12
+
13
+ natural-input:last-of-type {
14
+ flex: 1;
15
+ min-width: 250px;
16
+ }
17
+ }