i-tech-shared-components 1.4.40 → 1.4.41

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 (51) hide show
  1. package/README.md +26 -26
  2. package/assets/back.svg +3 -3
  3. package/assets/links/T3/audit-trail.svg +3 -3
  4. package/assets/links/T3/automation.svg +5 -5
  5. package/assets/links/T3/contact-person.svg +10 -10
  6. package/assets/links/T3/contract.svg +3 -3
  7. package/assets/links/T3/domiciles.svg +3 -3
  8. package/assets/links/T3/drivers.svg +3 -3
  9. package/assets/links/T3/general.svg +3 -3
  10. package/assets/links/T3/ile.svg +3 -3
  11. package/assets/links/T3/integrations.svg +3 -3
  12. package/assets/links/T3/license-type.svg +7 -7
  13. package/assets/links/T3/monitoring.svg +7 -7
  14. package/assets/links/T3/reports.svg +3 -3
  15. package/assets/links/T3/schedule.svg +3 -3
  16. package/assets/links/T3/settings.svg +3 -3
  17. package/assets/links/T3/units.svg +4 -4
  18. package/assets/links/T3/usps.svg +3 -3
  19. package/assets/links/TMT/audit-trail.svg +3 -3
  20. package/assets/links/TMT/loads.svg +7 -7
  21. package/assets/links/TMT/settings.svg +3 -3
  22. package/assets/logos/full/ORGANIZATION.svg +9 -9
  23. package/assets/logos/full/T3.svg +13 -13
  24. package/assets/logos/small/ORGANIZATION.svg +9 -9
  25. package/assets/logos/small/T3.svg +10 -10
  26. package/assets/selected_organization.svg +3 -3
  27. package/assets/toggle-state-left.svg +3 -3
  28. package/assets/toggle-state-right.svg +10 -10
  29. package/fesm2022/i-tech-shared-components.mjs +419 -61
  30. package/fesm2022/i-tech-shared-components.mjs.map +1 -1
  31. package/lib/components/ag-grid/date-range-selection/date-range-selection.component.d.ts +34 -0
  32. package/lib/components/ag-grid/select-with-search/select-with-search.component.d.ts +44 -0
  33. package/lib/interfaces/date-range-filtration.interface.d.ts +7 -0
  34. package/lib/interfaces/selection-filtration-configuration.interface.d.ts +59 -0
  35. package/lib/interfaces/selection-filtration.tokens.d.ts +6 -0
  36. package/lib/services/filtration-helper.service.d.ts +18 -0
  37. package/package.json +1 -1
  38. package/public-api.d.ts +2 -0
  39. package/theme/_ag-grid.scss +245 -245
  40. package/theme/_buttons.scss +68 -68
  41. package/theme/_color_themes.scss +136 -136
  42. package/theme/_date_picker.scss +77 -77
  43. package/theme/_date_time_picker.scss +87 -87
  44. package/theme/_form_fields.scss +117 -117
  45. package/theme/_icon-button.scss +165 -165
  46. package/theme/_label.scss +238 -238
  47. package/theme/_mat-selects.scss +281 -281
  48. package/theme/_menu.scss +13 -13
  49. package/theme/_text_input.scss +29 -29
  50. package/theme/variables/_colors.scss +20 -20
  51. package/theme.scss +32 -32
@@ -0,0 +1,34 @@
1
+ import { UntypedFormGroup } from '@angular/forms';
2
+ import { IFilterAngularComp } from 'ag-grid-angular';
3
+ import { IDoesFilterPassParams, IFilterParams } from 'ag-grid-community';
4
+ import { DateRangeDatepickerComponent } from '../../date-range-datepicker/date-range-datepicker.component';
5
+ import { ParseDateService } from "../../../services/parse-date.service";
6
+ import { AgGridDateRangeConfig } from "../../../interfaces/date-range-filtration.interface";
7
+ import * as i0 from "@angular/core";
8
+ export declare class DateRangeSelectionComponent implements IFilterAngularComp {
9
+ private dateService;
10
+ rangePicker: DateRangeDatepickerComponent;
11
+ params: IFilterParams;
12
+ config: AgGridDateRangeConfig;
13
+ form: UntypedFormGroup;
14
+ defaultValueForDates: any[];
15
+ constructor(dateService: ParseDateService);
16
+ agInit(params: any): void;
17
+ /**
18
+ * Selection event from the Datepicker component
19
+ */
20
+ onDateChange(event: Array<string>): void;
21
+ /**
22
+ * AG Grid calls this to get the state of the filter
23
+ */
24
+ getModel(): any;
25
+ /**
26
+ * AG Grid calls this to restore the filter state
27
+ */
28
+ setModel(model: any): void;
29
+ isFilterActive(): boolean;
30
+ doesFilterPass(params: IDoesFilterPassParams): boolean;
31
+ afterGuiDetached(): void;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateRangeSelectionComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<DateRangeSelectionComponent, "i-tech-date-range-selection", never, {}, {}, never, never, true, never>;
34
+ }
@@ -0,0 +1,44 @@
1
+ import { OnDestroy, OnInit } from "@angular/core";
2
+ import { UniversalSelectorConfig } from "../../../interfaces/selection-filtration-configuration.interface";
3
+ import { IDoesFilterPassParams, IFilterParams } from "ag-grid-community";
4
+ import { FiltrationHelperService } from "../../../services/filtration-helper.service";
5
+ import { IFilterAngularComp } from "ag-grid-angular";
6
+ import { UntypedFormGroup } from "@angular/forms";
7
+ import * as i0 from "@angular/core";
8
+ export declare class SelectWithSearchComponent implements OnInit, OnDestroy, IFilterAngularComp {
9
+ private dataService;
10
+ config: UniversalSelectorConfig;
11
+ params: IFilterParams;
12
+ items: any[];
13
+ selectedIds: Set<any>;
14
+ allSelected: boolean;
15
+ partiallySelected: boolean;
16
+ currentPage: number;
17
+ isLastPage: boolean;
18
+ loading: boolean;
19
+ searchForm: UntypedFormGroup;
20
+ private search$;
21
+ private pageLoad$;
22
+ private destroy$;
23
+ constructor(dataService: FiltrationHelperService);
24
+ agInit(params: IFilterParams): void;
25
+ doesFilterPass(params: IDoesFilterPassParams): boolean;
26
+ isFilterActive(): boolean;
27
+ getModel(): any;
28
+ setModel(model: any): void;
29
+ ngOnInit(): void;
30
+ private initCombinedStream;
31
+ private updateCheckboxState;
32
+ toggleAll(checked: boolean): void;
33
+ onSearchChange(value: string): void;
34
+ handleScroll(e: any): void;
35
+ resetFilter(): void;
36
+ /**
37
+ * Handles selection logic for the custom list.
38
+ * Supports SINGLE (radio-like) and MULTI (checkbox) modes.
39
+ */
40
+ onItemClick(item: any): void;
41
+ ngOnDestroy(): void;
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<SelectWithSearchComponent, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectWithSearchComponent, "i-tech-select-with-search", never, {}, {}, never, never, true, never>;
44
+ }
@@ -0,0 +1,7 @@
1
+ export interface AgGridDateRangeConfig {
2
+ returnValueByKey: string[];
3
+ targetFields?: string[];
4
+ DATE_RANGE?: {
5
+ placeholder: string[];
6
+ };
7
+ }
@@ -0,0 +1,59 @@
1
+ export interface PaginationResponse<T = any> {
2
+ content: T[];
3
+ totalPages: number;
4
+ totalElements: number;
5
+ size: number;
6
+ number: number;
7
+ first: boolean;
8
+ last: boolean;
9
+ empty: boolean;
10
+ }
11
+ export interface UniversalSelectorConfig {
12
+ /** Source of the data: Can be a remote Request, a Fixed array, or a Map/Object */
13
+ source: {
14
+ type: 'REQUEST';
15
+ url: string;
16
+ method: 'GET' | 'POST';
17
+ payload?: any;
18
+ } | {
19
+ type: 'FIXED';
20
+ data: any[];
21
+ } | {
22
+ type: 'MAP';
23
+ data: Record<string, any>;
24
+ };
25
+ /** SINGLE allows one selection; MULTI allows multiple via checkboxes */
26
+ mode: 'SINGLE' | 'MULTI';
27
+ /** If true, shows the '(Select All)' checkbox at the top of the list */
28
+ selectAll: boolean;
29
+ /** The key the backend expects for the ID array (e.g., 'statuses', 'driverIds') */
30
+ backEndKey: string;
31
+ /** * Default is true.
32
+ * true -> returns { [backEndKey]: string[] }
33
+ * false -> returns { [backEndKey]: string[], selectAll: boolean }
34
+ */
35
+ returnFlatArray?: boolean;
36
+ /** Configuration for rendering and extracting data from objects */
37
+ renderAndKeys: {
38
+ /** Keys to extract from the object to create the 'value' ID. Empty = whole object. */
39
+ valueByKeys?: string[];
40
+ /** Keys used to build the primary label displayed in the list. */
41
+ labelKeys: string[];
42
+ /** Optional keys for a secondary line of text in the list option. */
43
+ subValueKey?: string[];
44
+ /** String used to join multiple label keys (default is usually a space). */
45
+ separator?: string;
46
+ /** For complex parameter mapping. */
47
+ valueByParam?: string[][];
48
+ /** If true, labels will be passed through the TranslatePipe. */
49
+ needTranslate?: boolean;
50
+ /** Optional prefix for icons if rendered. */
51
+ iconPrefix?: string;
52
+ };
53
+ /** Optional search bar configuration */
54
+ search?: {
55
+ placeholder?: string;
56
+ };
57
+ /** If true, a clear button can be implemented to reset selection */
58
+ clearable?: boolean;
59
+ }
@@ -0,0 +1,6 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ /**
3
+ * Global Token for the project's API Gateway URL.
4
+ * Injected at the root level of each application (TMT, T3, etc.).
5
+ */
6
+ export declare const DATA_ENDPOINT: InjectionToken<string>;
@@ -0,0 +1,18 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { PaginationResponse, UniversalSelectorConfig } from '../interfaces/selection-filtration-configuration.interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare class FiltrationHelperService {
6
+ private http;
7
+ private dataEndpoint;
8
+ constructor(http: HttpClient, dataEndpoint: string);
9
+ getData(config: UniversalSelectorConfig, page?: number, size?: number, search?: string): Observable<PaginationResponse>;
10
+ /**
11
+ * Universal path extractor for strings or hierarchical arrays ['user', 'role', 'id']
12
+ */
13
+ getValueByPath(item: any, path: string | Array<string | number>): any;
14
+ private filterLocal;
15
+ private wrapInFakePagination;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<FiltrationHelperService, [null, { optional: true; }]>;
17
+ static ɵprov: i0.ɵɵInjectableDeclaration<FiltrationHelperService>;
18
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "i-tech-shared-components",
3
- "version": "1.4.40",
3
+ "version": "1.4.41",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "^19.0.0",
6
6
  "@angular/cdk": "^19.0.0",
package/public-api.d.ts CHANGED
@@ -31,3 +31,5 @@ export * from './lib/components/ag-grid/tooltip-cell-renderer.component';
31
31
  export * from './lib/helper-functions/phone-number-formatter.function';
32
32
  export * from './lib/components/phone-number-input/phone-number-input.component';
33
33
  export * from './lib/components/phone-number-input/phone-number.validator';
34
+ export * from './lib/components/ag-grid/date-range-selection/date-range-selection.component';
35
+ export * from './lib/components/ag-grid/select-with-search/select-with-search.component';
@@ -1,245 +1,245 @@
1
- @use '@angular/material' as mat;
2
- @use "./color_themes.scss" as color-themes;
3
-
4
- body {
5
-
6
- .ag-theme-material {
7
- --ag-header-column-separator-display: block;
8
- --ag-header-column-separator-height: 50%;
9
- --ag-header-column-separator-color: rgba(0, 0, 0, 0.12);
10
- --ag-secondary-foreground-color: var(--neutral30);
11
-
12
- // Success theme
13
- .ag-row.success-row {
14
- background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, primary, 99)};
15
- }
16
- .ag-row.success-row:hover:before {
17
- background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, primary, 98)};
18
- }
19
-
20
- // Change theme
21
- .ag-cell-changed {
22
- background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, secondary, 99)};
23
- &.ag-cell-focus,
24
- &:hover {
25
- background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, secondary, 98)};
26
- }
27
- }
28
-
29
- // Error theme
30
- .ag-row.error-row {
31
- background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, error, 99)};
32
- }
33
- .ag-row.error-row:hover:before {
34
- background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, error, 98)};
35
- }
36
-
37
- .ag-row.not-found-row-even {
38
- background: repeating-linear-gradient(45deg, #FAFAFC, #FAFAFC 10px, #F2F2F5 10px, #F2F2F5 20px) 0 0;
39
-
40
- &:hover:before {
41
- background: repeating-linear-gradient(45deg, #F8F8FA, #F8F8FA 10px, #E8E9ED 10px, #E8E9ED 20px) 0 0;
42
- }
43
-
44
- &.ag-row-selected:before {
45
- background: repeating-linear-gradient(45deg, #E3F6E7, #E3F6E7 10px, white 10px, white 20px) -14px 0 !important;
46
- }
47
-
48
- &:not(.ag-row-selected):hover:before {
49
- background: repeating-linear-gradient(45deg, #EFFAF1, #EFFAF1 10px, white 10px, white 20px) -14px 0 !important;
50
- }
51
- }
52
- .ag-row.not-found-row-odd {
53
- background: repeating-linear-gradient(45deg, #FAFAFC, #FAFAFC 10px, #F2F2F5 10px, #F2F2F5 20px) -13px 0;
54
-
55
- &:hover:before {
56
- background: repeating-linear-gradient(45deg, #F8F8FA, #F8F8FA 10px, #E8E9ED 10px, #E8E9ED 20px) -13px 0;
57
- }
58
-
59
- &.ag-row-selected:before {
60
- background: repeating-linear-gradient(45deg, #E3F6E7, #E3F6E7 10px, white 10px, white 20px) 1px 0 !important;
61
- }
62
-
63
- &:not(.ag-row-selected):hover:before {
64
- background: repeating-linear-gradient(45deg, #EFFAF1, #EFFAF1 10px, white 10px, white 20px) 1px 0 !important;
65
- }
66
- }
67
-
68
- .ag-row-group {
69
- color: var(--Text, var(--neutral30));
70
- background-color: white;
71
- font-size: 14px;
72
- font-weight: 700;
73
- line-height: 20px;
74
- letter-spacing: 2.5px;
75
- text-transform: uppercase;
76
- }
77
-
78
- .tooltip-cell-renderer {
79
- overflow: hidden;
80
- text-overflow: ellipsis;
81
- }
82
- }
83
-
84
- .grid-with-toolbar {
85
- $borderRadius: 6px;
86
-
87
- .filtration {
88
- padding: 8px;
89
- border: 1px solid var(--neutral90);
90
- border-bottom: unset;
91
- border-top-left-radius: #{$borderRadius};
92
- border-top-right-radius: #{$borderRadius};
93
-
94
- .search {
95
- width: 210px;
96
- }
97
-
98
- background-color: #fff
99
- }
100
-
101
- .ag-root-wrapper {
102
- background-color: transparent;
103
- border: unset;
104
- border-radius: unset;
105
- --ag-border-color: var(--neutral90);
106
-
107
- .ag-root-wrapper-body {
108
- border-bottom-left-radius: #{$borderRadius};
109
- border-bottom-right-radius: #{$borderRadius};
110
- border: 1px solid var(--neutral90);
111
- background-color: var(--white-color);
112
- }
113
-
114
- .ag-picker-field-wrapper {
115
- border-radius: 4px;
116
- height: 40px;
117
- border: 1px solid var(--neutral90);
118
- box-shadow: unset;
119
- .ag-picker-field-display {
120
- color: #424954;
121
- font-weight: 500;
122
- font-size: 13px;
123
- }
124
- }
125
-
126
- .ag-header, .ag-advanced-filter-header {
127
- --ag-header-background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, neutral, 99)};
128
- }
129
- }
130
-
131
- .ag-paging-panel {
132
- border-top: unset;
133
- }
134
- }
135
-
136
-
137
- .full-width-grid {
138
- .ag-root-wrapper .ag-root-wrapper-body {
139
- border-left: none !important;
140
- }
141
- }
142
-
143
- .grid-with-selection {
144
- --ag-selected-row-background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, primary, 98)};
145
- --ag-row-hover-color: #{mat.get-theme-color(color-themes.$m3-light-theme, primary, 99)};
146
- }
147
-
148
- // Overrides for master/detail grid row group for payments
149
- .grid-with-master-detail.ag-theme-material {
150
- .ag-row-group {
151
- line-height: unset;
152
- font-weight: unset;
153
- letter-spacing: unset;
154
- text-transform: unset;
155
- background-color: unset;
156
- font-size: unset;
157
- align-items: center;
158
- height: 100%;
159
- }
160
- .ag-row-group-leaf-indent {
161
- height: 100%;
162
- margin-left: 26px;
163
- }
164
- }
165
-
166
- .grid-with-group-rows-and-master-detail.ag-theme-material {
167
- .ag-center-cols-container {
168
- min-width: 100%;
169
- // Override for Master Detail for payments
170
- .ag-row-group {
171
- color: unset;
172
- background-color: unset;
173
- line-height: unset;
174
- font-weight: unset;
175
- letter-spacing: unset;
176
- text-transform: unset;
177
- font-size: unset;
178
- align-items: center;
179
- height: 100%;
180
- }
181
- }
182
-
183
- .ag-row-group-leaf-indent {
184
- height: 100%;
185
- margin-left: 26px;
186
- }
187
-
188
- .ag-sticky-top-container {
189
- .ag-row-group {
190
- line-height: unset;
191
- font-weight: unset;
192
- letter-spacing: unset;
193
- text-transform: unset;
194
- background-color: unset;
195
- font-size: unset;
196
- align-items: center;
197
- height: 100%;
198
- }
199
-
200
- .ag-row-group-leaf-indent {
201
- height: 100%;
202
- margin-left: 26px;
203
- }
204
- }
205
- }
206
-
207
- .side-pane-grouped-grid.ag-theme-material {
208
- .ag-row-group {
209
- color: unset;
210
- background-color: unset;
211
- font-weight: unset;
212
- letter-spacing: unset;
213
- text-transform: unset;
214
- font-size: unset;
215
- align-items: center;
216
- .ag-column-first {
217
- padding-left: 10px;
218
- }
219
- }
220
-
221
-
222
- .ag-row {
223
- .ag-column-first {
224
- padding-left: 10px;
225
- .ag-row-group-leaf-indent {
226
- margin-left: 22px;
227
- }
228
- }
229
- }
230
-
231
- .ag-group-contracted {
232
- margin-right: 4px;
233
- }
234
-
235
- .ag-group-expanded {
236
- margin-right: 4px;
237
- }
238
-
239
- .ag-root-wrapper .ag-root-wrapper-body {
240
- border-right: none;
241
- border-left: none;
242
- }
243
- }
244
-
245
- }
1
+ @use '@angular/material' as mat;
2
+ @use "./color_themes.scss" as color-themes;
3
+
4
+ body {
5
+
6
+ .ag-theme-material {
7
+ --ag-header-column-separator-display: block;
8
+ --ag-header-column-separator-height: 50%;
9
+ --ag-header-column-separator-color: rgba(0, 0, 0, 0.12);
10
+ --ag-secondary-foreground-color: var(--neutral30);
11
+
12
+ // Success theme
13
+ .ag-row.success-row {
14
+ background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, primary, 99)};
15
+ }
16
+ .ag-row.success-row:hover:before {
17
+ background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, primary, 98)};
18
+ }
19
+
20
+ // Change theme
21
+ .ag-cell-changed {
22
+ background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, secondary, 99)};
23
+ &.ag-cell-focus,
24
+ &:hover {
25
+ background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, secondary, 98)};
26
+ }
27
+ }
28
+
29
+ // Error theme
30
+ .ag-row.error-row {
31
+ background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, error, 99)};
32
+ }
33
+ .ag-row.error-row:hover:before {
34
+ background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, error, 98)};
35
+ }
36
+
37
+ .ag-row.not-found-row-even {
38
+ background: repeating-linear-gradient(45deg, #FAFAFC, #FAFAFC 10px, #F2F2F5 10px, #F2F2F5 20px) 0 0;
39
+
40
+ &:hover:before {
41
+ background: repeating-linear-gradient(45deg, #F8F8FA, #F8F8FA 10px, #E8E9ED 10px, #E8E9ED 20px) 0 0;
42
+ }
43
+
44
+ &.ag-row-selected:before {
45
+ background: repeating-linear-gradient(45deg, #E3F6E7, #E3F6E7 10px, white 10px, white 20px) -14px 0 !important;
46
+ }
47
+
48
+ &:not(.ag-row-selected):hover:before {
49
+ background: repeating-linear-gradient(45deg, #EFFAF1, #EFFAF1 10px, white 10px, white 20px) -14px 0 !important;
50
+ }
51
+ }
52
+ .ag-row.not-found-row-odd {
53
+ background: repeating-linear-gradient(45deg, #FAFAFC, #FAFAFC 10px, #F2F2F5 10px, #F2F2F5 20px) -13px 0;
54
+
55
+ &:hover:before {
56
+ background: repeating-linear-gradient(45deg, #F8F8FA, #F8F8FA 10px, #E8E9ED 10px, #E8E9ED 20px) -13px 0;
57
+ }
58
+
59
+ &.ag-row-selected:before {
60
+ background: repeating-linear-gradient(45deg, #E3F6E7, #E3F6E7 10px, white 10px, white 20px) 1px 0 !important;
61
+ }
62
+
63
+ &:not(.ag-row-selected):hover:before {
64
+ background: repeating-linear-gradient(45deg, #EFFAF1, #EFFAF1 10px, white 10px, white 20px) 1px 0 !important;
65
+ }
66
+ }
67
+
68
+ .ag-row-group {
69
+ color: var(--Text, var(--neutral30));
70
+ background-color: white;
71
+ font-size: 14px;
72
+ font-weight: 700;
73
+ line-height: 20px;
74
+ letter-spacing: 2.5px;
75
+ text-transform: uppercase;
76
+ }
77
+
78
+ .tooltip-cell-renderer {
79
+ overflow: hidden;
80
+ text-overflow: ellipsis;
81
+ }
82
+ }
83
+
84
+ .grid-with-toolbar {
85
+ $borderRadius: 6px;
86
+
87
+ .filtration {
88
+ padding: 8px;
89
+ border: 1px solid var(--neutral90);
90
+ border-bottom: unset;
91
+ border-top-left-radius: #{$borderRadius};
92
+ border-top-right-radius: #{$borderRadius};
93
+
94
+ .search {
95
+ width: 210px;
96
+ }
97
+
98
+ background-color: #fff
99
+ }
100
+
101
+ .ag-root-wrapper {
102
+ background-color: transparent;
103
+ border: unset;
104
+ border-radius: unset;
105
+ --ag-border-color: var(--neutral90);
106
+
107
+ .ag-root-wrapper-body {
108
+ border-bottom-left-radius: #{$borderRadius};
109
+ border-bottom-right-radius: #{$borderRadius};
110
+ border: 1px solid var(--neutral90);
111
+ background-color: var(--white-color);
112
+ }
113
+
114
+ .ag-picker-field-wrapper {
115
+ border-radius: 4px;
116
+ height: 40px;
117
+ border: 1px solid var(--neutral90);
118
+ box-shadow: unset;
119
+ .ag-picker-field-display {
120
+ color: #424954;
121
+ font-weight: 500;
122
+ font-size: 13px;
123
+ }
124
+ }
125
+
126
+ .ag-header, .ag-advanced-filter-header {
127
+ --ag-header-background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, neutral, 99)};
128
+ }
129
+ }
130
+
131
+ .ag-paging-panel {
132
+ border-top: unset;
133
+ }
134
+ }
135
+
136
+
137
+ .full-width-grid {
138
+ .ag-root-wrapper .ag-root-wrapper-body {
139
+ border-left: none !important;
140
+ }
141
+ }
142
+
143
+ .grid-with-selection {
144
+ --ag-selected-row-background-color: #{mat.get-theme-color(color-themes.$m3-light-theme, primary, 98)};
145
+ --ag-row-hover-color: #{mat.get-theme-color(color-themes.$m3-light-theme, primary, 99)};
146
+ }
147
+
148
+ // Overrides for master/detail grid row group for payments
149
+ .grid-with-master-detail.ag-theme-material {
150
+ .ag-row-group {
151
+ line-height: unset;
152
+ font-weight: unset;
153
+ letter-spacing: unset;
154
+ text-transform: unset;
155
+ background-color: unset;
156
+ font-size: unset;
157
+ align-items: center;
158
+ height: 100%;
159
+ }
160
+ .ag-row-group-leaf-indent {
161
+ height: 100%;
162
+ margin-left: 26px;
163
+ }
164
+ }
165
+
166
+ .grid-with-group-rows-and-master-detail.ag-theme-material {
167
+ .ag-center-cols-container {
168
+ min-width: 100%;
169
+ // Override for Master Detail for payments
170
+ .ag-row-group {
171
+ color: unset;
172
+ background-color: unset;
173
+ line-height: unset;
174
+ font-weight: unset;
175
+ letter-spacing: unset;
176
+ text-transform: unset;
177
+ font-size: unset;
178
+ align-items: center;
179
+ height: 100%;
180
+ }
181
+ }
182
+
183
+ .ag-row-group-leaf-indent {
184
+ height: 100%;
185
+ margin-left: 26px;
186
+ }
187
+
188
+ .ag-sticky-top-container {
189
+ .ag-row-group {
190
+ line-height: unset;
191
+ font-weight: unset;
192
+ letter-spacing: unset;
193
+ text-transform: unset;
194
+ background-color: unset;
195
+ font-size: unset;
196
+ align-items: center;
197
+ height: 100%;
198
+ }
199
+
200
+ .ag-row-group-leaf-indent {
201
+ height: 100%;
202
+ margin-left: 26px;
203
+ }
204
+ }
205
+ }
206
+
207
+ .side-pane-grouped-grid.ag-theme-material {
208
+ .ag-row-group {
209
+ color: unset;
210
+ background-color: unset;
211
+ font-weight: unset;
212
+ letter-spacing: unset;
213
+ text-transform: unset;
214
+ font-size: unset;
215
+ align-items: center;
216
+ .ag-column-first {
217
+ padding-left: 10px;
218
+ }
219
+ }
220
+
221
+
222
+ .ag-row {
223
+ .ag-column-first {
224
+ padding-left: 10px;
225
+ .ag-row-group-leaf-indent {
226
+ margin-left: 22px;
227
+ }
228
+ }
229
+ }
230
+
231
+ .ag-group-contracted {
232
+ margin-right: 4px;
233
+ }
234
+
235
+ .ag-group-expanded {
236
+ margin-right: 4px;
237
+ }
238
+
239
+ .ag-root-wrapper .ag-root-wrapper-body {
240
+ border-right: none;
241
+ border-left: none;
242
+ }
243
+ }
244
+
245
+ }