@acontplus/ng-components 2.1.29 → 2.1.31

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 (54) hide show
  1. package/fesm2022/acontplus-ng-components.mjs +5713 -3552
  2. package/fesm2022/acontplus-ng-components.mjs.map +1 -1
  3. package/package.json +21 -20
  4. package/src/_index.scss +22 -0
  5. package/src/core/color/_all-color.scss +16 -0
  6. package/src/core/density/_all-density.scss +38 -0
  7. package/src/core/style/_elevation.scss +207 -0
  8. package/src/core/theming/_all-theme.scss +50 -0
  9. package/src/core/theming/_config-validation.scss +171 -0
  10. package/src/core/theming/_definition.scss +158 -0
  11. package/src/core/theming/_palettes.scss +1060 -0
  12. package/src/core/tokens/_m3-tokens.scss +141 -0
  13. package/src/core/tokens/_m3-utils.scss +36 -0
  14. package/src/core/tokens/_system.scss +395 -0
  15. package/src/core/tokens/_token-utils.scss +117 -0
  16. package/src/core/tokens/m3/_index.scss +7 -0
  17. package/src/core/tokens/m3/_md-sys-color.scss +150 -0
  18. package/src/core/tokens/m3/_md-sys-elevation.scss +8 -0
  19. package/src/core/tokens/m3/_md-sys-motion.scss +35 -0
  20. package/src/core/tokens/m3/_md-sys-shape.scss +31 -0
  21. package/src/core/tokens/m3/_md-sys-state.scss +13 -0
  22. package/src/core/tokens/m3/_md-sys-typescale.scss +131 -0
  23. package/src/core/tokens/m3/_theme.scss +41 -0
  24. package/src/core/typography/_all-typography.scss +34 -0
  25. package/src/lib/components/alert/_alert-theme.scss +57 -0
  26. package/src/lib/components/alert/_m3-alert.scss +72 -0
  27. package/src/lib/components/alert/alert.scss +60 -0
  28. package/src/lib/components/autocomplete-wrapper/autocomplete-wrapper.scss +667 -0
  29. package/src/lib/components/button/button.scss +297 -0
  30. package/src/lib/components/cards/dynamic-card/dynamic-card.scss +131 -0
  31. package/src/lib/components/data-grid/_grid-theme.scss +53 -0
  32. package/src/lib/components/data-grid/_m3-grid.scss +34 -0
  33. package/src/lib/components/data-grid/cell/cell.scss +38 -0
  34. package/src/lib/components/data-grid/column-menu/column-menu.scss +117 -0
  35. package/src/lib/components/data-grid/column-resize/_column-resize.scss +126 -0
  36. package/src/lib/components/data-grid/grid.scss +245 -0
  37. package/src/lib/components/date-range-input/calendar/date-range-calendar.scss +29 -0
  38. package/src/lib/components/date-range-input/date-range-input.scss +194 -0
  39. package/src/lib/components/dialog-wrapper/dialog-wrapper.scss +36 -0
  40. package/src/lib/components/drawer/_drawer-theme.scss +57 -0
  41. package/src/lib/components/drawer/_m3-drawer.scss +24 -0
  42. package/src/lib/components/drawer/drawer-container.scss +97 -0
  43. package/src/lib/components/icons/svg-icon/svg-icon.scss +16 -0
  44. package/src/lib/components/icons/user-icon/user-icon.scss +0 -0
  45. package/src/lib/components/input-chip/input-chip.scss +0 -0
  46. package/src/lib/components/popover/_m3-popover.scss +24 -0
  47. package/src/lib/components/popover/_popover-theme.scss +57 -0
  48. package/src/lib/components/popover/popover.scss +239 -0
  49. package/src/lib/components/spinner/spinner.scss +6 -0
  50. package/src/lib/components/tables/tabulator-table/tabulator-table.scss +68 -0
  51. package/src/lib/components/theme-toggle/theme-toggle.scss +3 -0
  52. package/src/lib/styles/_elevation.scss +168 -0
  53. package/src/lib/styles/_token-utils.scss +115 -0
  54. package/types/acontplus-ng-components.d.ts +920 -536
@@ -0,0 +1,297 @@
1
+ :root {
2
+ --acp-secondary: #e0e0e0;
3
+ --acp-secondary-on: #000000;
4
+ --acp-success: #4caf50;
5
+ --acp-success-on: #ffffff;
6
+ --acp-danger: #ba1a1a;
7
+ --acp-danger-on: #ffffff;
8
+ --acp-warning: #ff9800;
9
+ --acp-warning-on: #000000;
10
+ --acp-info: #2196f3;
11
+ --acp-info-on: #ffffff;
12
+ --acp-dark: #212121;
13
+ --acp-dark-on: #ffffff;
14
+ }
15
+
16
+ .dark-theme {
17
+ --acp-secondary: #424242;
18
+ --acp-secondary-on: #ffffff;
19
+ --acp-success: #81c784;
20
+ --acp-success-on: #1b5e20;
21
+ --acp-danger: #ef5350;
22
+ --acp-danger-on: #b71c1c;
23
+ --acp-warning: #ffb74d;
24
+ --acp-warning-on: #e65100;
25
+ --acp-info: #64b5f6;
26
+ --acp-info-on: #0d47a1;
27
+ --acp-dark: #616161;
28
+ --acp-dark-on: #ffffff;
29
+ }
30
+
31
+ acp-button {
32
+ display: inline-block;
33
+ // margin: 4px;
34
+ }
35
+
36
+ // Button content alignment - center icon and text vertically
37
+ .mat-mdc-button,
38
+ .mat-mdc-unelevated-button,
39
+ .mat-mdc-raised-button,
40
+ .mat-mdc-outlined-button,
41
+ button[matbutton='tonal'],
42
+ .mat-mdc-fab.mdc-fab--extended {
43
+ .mdc-button__label {
44
+ display: flex;
45
+ align-items: center;
46
+ gap: 8px;
47
+ }
48
+ }
49
+
50
+ // Filled buttons - target Material's generated classes
51
+ .mat-mdc-button.mat-btn-secondary,
52
+ .mat-mdc-unelevated-button.mat-btn-secondary {
53
+ background-color: var(--acp-secondary) !important;
54
+ color: var(--acp-secondary-on) !important;
55
+ }
56
+
57
+ .mat-mdc-button.mat-btn-secondary:hover,
58
+ .mat-mdc-unelevated-button.mat-btn-secondary:hover {
59
+ background-color: color-mix(in srgb, var(--acp-secondary) 80%, black) !important;
60
+ }
61
+
62
+ .mat-mdc-button.mat-btn-success,
63
+ .mat-mdc-unelevated-button.mat-btn-success {
64
+ background-color: var(--acp-success) !important;
65
+ color: var(--acp-success-on) !important;
66
+ }
67
+
68
+ .mat-mdc-button.mat-btn-danger,
69
+ .mat-mdc-unelevated-button.mat-btn-danger {
70
+ background-color: var(--acp-danger) !important;
71
+ color: var(--acp-danger-on) !important;
72
+ }
73
+
74
+ .mat-mdc-button.mat-btn-warning,
75
+ .mat-mdc-unelevated-button.mat-btn-warning {
76
+ background-color: var(--acp-warning) !important;
77
+ color: var(--acp-warning-on) !important;
78
+ }
79
+
80
+ .mat-mdc-button.mat-btn-info,
81
+ .mat-mdc-unelevated-button.mat-btn-info {
82
+ background-color: var(--acp-info) !important;
83
+ color: var(--acp-info-on) !important;
84
+ }
85
+
86
+ .mat-mdc-button.mat-btn-dark,
87
+ .mat-mdc-unelevated-button.mat-btn-dark {
88
+ background-color: var(--acp-dark) !important;
89
+ color: var(--acp-dark-on) !important;
90
+ }
91
+
92
+ // Tonal buttons - lighter background
93
+ button[matbutton='tonal'].mat-btn-success {
94
+ background-color: color-mix(in srgb, var(--acp-success) 12%, transparent) !important;
95
+ color: var(--acp-success) !important;
96
+ }
97
+
98
+ button[matbutton='tonal'].mat-btn-danger {
99
+ background-color: color-mix(in srgb, var(--acp-danger) 12%, transparent) !important;
100
+ color: var(--acp-danger) !important;
101
+ }
102
+
103
+ button[matbutton='tonal'].mat-btn-warning {
104
+ background-color: color-mix(in srgb, var(--acp-warning) 12%, transparent) !important;
105
+ color: var(--acp-warning) !important;
106
+ }
107
+
108
+ button[matbutton='tonal'].mat-btn-info {
109
+ background-color: color-mix(in srgb, var(--acp-info) 12%, transparent) !important;
110
+ color: var(--acp-info) !important;
111
+ }
112
+
113
+ button[matbutton='tonal'].mat-btn-dark {
114
+ background-color: color-mix(in srgb, var(--acp-dark) 12%, transparent) !important;
115
+ color: var(--acp-dark) !important;
116
+ }
117
+
118
+ // Text buttons - only text color
119
+ .mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(
120
+ .mat-mdc-outlined-button
121
+ ).mat-btn-secondary {
122
+ color: var(--mat-sys-on-surface) !important;
123
+ }
124
+
125
+ .mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(
126
+ .mat-mdc-outlined-button
127
+ ).mat-btn-success {
128
+ color: var(--acp-success) !important;
129
+ }
130
+
131
+ .mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(
132
+ .mat-mdc-outlined-button
133
+ ).mat-btn-danger {
134
+ color: var(--acp-danger) !important;
135
+ }
136
+
137
+ .mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(
138
+ .mat-mdc-outlined-button
139
+ ).mat-btn-warning {
140
+ color: var(--acp-warning) !important;
141
+ }
142
+
143
+ .mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(
144
+ .mat-mdc-outlined-button
145
+ ).mat-btn-info {
146
+ color: var(--acp-info) !important;
147
+ }
148
+
149
+ .mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(
150
+ .mat-mdc-outlined-button
151
+ ).mat-btn-dark {
152
+ color: var(--acp-dark) !important;
153
+ }
154
+
155
+ // Elevated buttons - surface background with colored text, container background on hover
156
+ .mat-mdc-raised-button.mat-btn-secondary {
157
+ background-color: var(--mat-sys-surface-container-low) !important;
158
+ color: var(--mat-sys-on-surface) !important;
159
+ }
160
+
161
+ .mat-mdc-raised-button.mat-btn-success {
162
+ background-color: var(--mat-sys-surface-container-low) !important;
163
+ color: var(--acp-success) !important;
164
+ }
165
+
166
+ .mat-mdc-raised-button.mat-btn-success:hover {
167
+ background-color: color-mix(in srgb, var(--acp-success) 12%, transparent) !important;
168
+ }
169
+
170
+ .mat-mdc-raised-button.mat-btn-danger {
171
+ background-color: var(--mat-sys-surface-container-low) !important;
172
+ color: var(--acp-danger) !important;
173
+ }
174
+
175
+ .mat-mdc-raised-button.mat-btn-danger:hover {
176
+ background-color: color-mix(in srgb, var(--acp-danger) 12%, transparent) !important;
177
+ }
178
+
179
+ .mat-mdc-raised-button.mat-btn-warning {
180
+ background-color: var(--mat-sys-surface-container-low) !important;
181
+ color: var(--acp-warning) !important;
182
+ }
183
+
184
+ .mat-mdc-raised-button.mat-btn-warning:hover {
185
+ background-color: color-mix(in srgb, var(--acp-warning) 12%, transparent) !important;
186
+ }
187
+
188
+ .mat-mdc-raised-button.mat-btn-info {
189
+ background-color: var(--mat-sys-surface-container-low) !important;
190
+ color: var(--acp-info) !important;
191
+ }
192
+
193
+ .mat-mdc-raised-button.mat-btn-info:hover {
194
+ background-color: color-mix(in srgb, var(--acp-info) 12%, transparent) !important;
195
+ }
196
+
197
+ .mat-mdc-raised-button.mat-btn-dark {
198
+ background-color: var(--mat-sys-surface-container-low) !important;
199
+ color: var(--acp-dark) !important;
200
+ }
201
+
202
+ .mat-mdc-raised-button.mat-btn-dark:hover {
203
+ background-color: color-mix(in srgb, var(--acp-dark) 12%, transparent) !important;
204
+ }
205
+
206
+ // Outlined buttons
207
+ .mat-mdc-outlined-button.mat-btn-secondary {
208
+ border-color: var(--mat-sys-outline) !important;
209
+ color: var(--mat-sys-on-surface) !important;
210
+ }
211
+
212
+ .mat-mdc-outlined-button.mat-btn-success {
213
+ border-color: var(--acp-success) !important;
214
+ color: var(--acp-success) !important;
215
+ }
216
+
217
+ .mat-mdc-outlined-button.mat-btn-danger {
218
+ border-color: var(--acp-danger) !important;
219
+ color: var(--acp-danger) !important;
220
+ }
221
+
222
+ .mat-mdc-outlined-button.mat-btn-warning {
223
+ border-color: var(--acp-warning) !important;
224
+ color: var(--acp-warning) !important;
225
+ }
226
+
227
+ .mat-mdc-outlined-button.mat-btn-info {
228
+ border-color: var(--acp-info) !important;
229
+ color: var(--acp-info) !important;
230
+ }
231
+
232
+ .mat-mdc-outlined-button.mat-btn-dark {
233
+ border-color: var(--acp-dark) !important;
234
+ color: var(--acp-dark) !important;
235
+ }
236
+
237
+ // FAB buttons (regular, mini, and extended)
238
+ .mat-mdc-fab.mat-btn-secondary,
239
+ .mat-mdc-mini-fab.mat-btn-secondary {
240
+ background-color: var(--acp-secondary) !important;
241
+ color: var(--acp-secondary-on) !important;
242
+ }
243
+
244
+ .mat-mdc-fab.mat-btn-success,
245
+ .mat-mdc-mini-fab.mat-btn-success {
246
+ background-color: var(--acp-success) !important;
247
+ color: var(--acp-success-on) !important;
248
+ }
249
+
250
+ .mat-mdc-fab.mat-btn-danger,
251
+ .mat-mdc-mini-fab.mat-btn-danger {
252
+ background-color: var(--acp-danger) !important;
253
+ color: var(--acp-danger-on) !important;
254
+ }
255
+
256
+ .mat-mdc-fab.mat-btn-warning,
257
+ .mat-mdc-mini-fab.mat-btn-warning {
258
+ background-color: var(--acp-warning) !important;
259
+ color: var(--acp-warning-on) !important;
260
+ }
261
+
262
+ .mat-mdc-fab.mat-btn-info,
263
+ .mat-mdc-mini-fab.mat-btn-info {
264
+ background-color: var(--acp-info) !important;
265
+ color: var(--acp-info-on) !important;
266
+ }
267
+
268
+ .mat-mdc-fab.mat-btn-dark,
269
+ .mat-mdc-mini-fab.mat-btn-dark {
270
+ background-color: var(--acp-dark) !important;
271
+ color: var(--acp-dark-on) !important;
272
+ }
273
+
274
+ // Icon buttons
275
+ .mat-mdc-icon-button.mat-btn-secondary {
276
+ color: var(--mat-sys-on-surface) !important;
277
+ }
278
+
279
+ .mat-mdc-icon-button.mat-btn-success {
280
+ color: var(--acp-success) !important;
281
+ }
282
+
283
+ .mat-mdc-icon-button.mat-btn-danger {
284
+ color: var(--acp-danger) !important;
285
+ }
286
+
287
+ .mat-mdc-icon-button.mat-btn-warning {
288
+ color: var(--acp-warning) !important;
289
+ }
290
+
291
+ .mat-mdc-icon-button.mat-btn-info {
292
+ color: var(--acp-info) !important;
293
+ }
294
+
295
+ .mat-mdc-icon-button.mat-btn-dark {
296
+ color: var(--acp-dark) !important;
297
+ }
@@ -0,0 +1,131 @@
1
+ //@use "@angular/material" as mat;
2
+ //
3
+ //:host {
4
+ // display: block;
5
+ // box-sizing: border-box;
6
+ //
7
+ // mat-card {
8
+ // height: 100%;
9
+ // display: flex;
10
+ // flex-direction: column;
11
+ // transition:
12
+ // box-shadow 200ms ease,
13
+ // transform 200ms ease;
14
+ // overflow: hidden;
15
+ //
16
+ // &:hover {
17
+ // // mat.elevation is already theme-aware.
18
+ // @include mat.elevation(4);
19
+ // transform: translateY(-2px);
20
+ // }
21
+ //
22
+ // &-header {
23
+ // padding: 1rem 1rem 0.5rem;
24
+ //
25
+ // mat-card-title {
26
+ // font-weight: 500;
27
+ // line-height: 1.2;
28
+ // margin-bottom: 0.25rem;
29
+ // }
30
+ //
31
+ // mat-card-subtitle {
32
+ // // Use a theme color for subtitles, e.g., text-secondary.
33
+ // // The `mat.get-theme-color` function allows you to get specific colors from your theme.
34
+ // // Here, 'text' refers to the text palette and 'secondary' is a shade within it.
35
+ // // You might need to adjust 'secondary' based on your specific theme definition
36
+ // // or use `mat.get-color-from-palette($theme-palette, $color-shade)`.
37
+ // color: mat.get-theme-color(text, secondary);
38
+ // line-height: 1.3;
39
+ // }
40
+ //
41
+ // [mat-card-avatar] {
42
+ // width: 40px;
43
+ // height: 40px;
44
+ // border-radius: 50%;
45
+ // margin-right: 1rem;
46
+ // // Use a theme color for the border, e.g., divider or text-disabled.
47
+ // border: 2px solid mat.get-theme-color(divider);
48
+ // }
49
+ // }
50
+ //
51
+ // &-content {
52
+ // flex: 1;
53
+ // padding: 1rem;
54
+ // overflow: auto;
55
+ //
56
+ // &:not(:first-child) {
57
+ // padding-top: 0;
58
+ // }
59
+ // }
60
+ //
61
+ // &.mat-card-divider {
62
+ // // Use a theme color for the divider.
63
+ // border-top: 1px solid mat.get-theme-color(divider);
64
+ // padding-top: 0.5rem;
65
+ // }
66
+ //
67
+ // &-actions {
68
+ // padding: 0.5rem 1rem 1rem;
69
+ // margin: 0;
70
+ // min-height: 52px;
71
+ // box-sizing: border-box;
72
+ // display: flex;
73
+ // flex-wrap: wrap;
74
+ // gap: 0.5rem;
75
+ //
76
+ // &[align="end"] {
77
+ // justify-content: flex-end;
78
+ // }
79
+ //
80
+ // &[align="center"] {
81
+ // justify: center;
82
+ // }
83
+ //
84
+ // &[align="start"] {
85
+ // justify-content: flex-start;
86
+ // }
87
+ //
88
+ // button {
89
+ // margin: 0 0.25rem;
90
+ // min-width: 88px; // Material spec minimum button width
91
+ //
92
+ // mat-icon {
93
+ // margin-right: 0.5rem;
94
+ // font-size: 18px;
95
+ // height: 18px;
96
+ // width: 18px;
97
+ // }
98
+ // }
99
+ // }
100
+ // }
101
+ //
102
+ // // Responsive adjustments
103
+ // @media (max-width: 600px) {
104
+ // mat-card {
105
+ // &-header {
106
+ // padding: 0.75rem 0.75rem 0.25rem;
107
+ //
108
+ // [mat-card-avatar] {
109
+ // width: 36px;
110
+ // height: 36px;
111
+ // margin-right: 0.75rem;
112
+ // }
113
+ // }
114
+ //
115
+ // &-content {
116
+ // padding: 0.75rem;
117
+ // }
118
+ //
119
+ // &-actions {
120
+ // padding: 0.5rem;
121
+ // flex-direction: column;
122
+ // gap: 0.5rem;
123
+ //
124
+ // button {
125
+ // width: 100%;
126
+ // margin: 0.25rem 0;
127
+ // }
128
+ // }
129
+ // }
130
+ // }
131
+ //}
@@ -0,0 +1,53 @@
1
+ @use 'sass:map';
2
+ @use '@angular/material' as mat;
3
+ @use '../core/tokens/token-utils';
4
+ @use './m3-grid';
5
+
6
+ @mixin base($theme) {
7
+ $tokens: map.get(m3-grid.get-tokens($theme), base);
8
+ @include token-utils.values($tokens);
9
+ }
10
+
11
+ @mixin color($theme) {
12
+ $tokens: map.get(m3-grid.get-tokens($theme), color);
13
+ @include token-utils.values($tokens);
14
+ }
15
+
16
+ @mixin typography($theme) {
17
+ $tokens: map.get(m3-grid.get-tokens($theme), typography);
18
+ @include token-utils.values($tokens);
19
+ }
20
+
21
+ @mixin density($theme) {
22
+ $tokens: map.get(m3-grid.get-tokens($theme), density);
23
+ @include token-utils.values($tokens);
24
+ }
25
+
26
+ /// Defines the tokens that will be available in the `overrides` mixin and for docs extraction.
27
+ @function _define-overrides() {
28
+ @return ((namespace: grid, tokens: token-utils.get-overrides(m3-grid.get-tokens(), grid)));
29
+ }
30
+
31
+ @mixin overrides($tokens: ()) {
32
+ @include token-utils.batch-create-token-values($tokens, _define-overrides());
33
+ }
34
+
35
+ @mixin theme($theme, $color-variant: null) {
36
+ @if mat.get-theme-version($theme) == 1 {
37
+ @include base($theme);
38
+ @include color($theme);
39
+ @include density($theme);
40
+ @include typography($theme);
41
+ } @else {
42
+ @include base($theme);
43
+ @if mat.theme-has($theme, color) {
44
+ @include color($theme);
45
+ }
46
+ @if mat.theme-has($theme, density) {
47
+ @include density($theme);
48
+ }
49
+ @if mat.theme-has($theme, typography) {
50
+ @include typography($theme);
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,34 @@
1
+ @use 'sass:map';
2
+ @use './../../../core/tokens/m3-utils';
3
+ @use './../../../core/tokens/m3';
4
+
5
+ @function get-tokens($theme: m3.$sys-theme) {
6
+ $system: m3-utils.get-system($theme);
7
+
8
+ $tokens: (
9
+ base: (
10
+ grid-container-shape: map.get($system, corner-medium),
11
+ grid-table-cell-min-width: 80px,
12
+ ),
13
+ color: (
14
+ grid-outline-color: map.get($system, outline-variant),
15
+ grid-column-menu-text-color: map.get($system, on-surface-variant),
16
+ grid-column-menu-divider-color: map.get($system, outline-variant),
17
+ grid-table-footer-background-color: map.get($system, surface-container),
18
+ grid-table-row-striped-background-color: map.get($system, surface-container),
19
+ grid-table-row-hover-background-color: map.get($system, secondary-container),
20
+ grid-table-row-selected-background-color: map.get($system, secondary-container),
21
+ grid-table-row-selected-hover-background-color: map.get($system, primary-container),
22
+ grid-table-cell-selected-outline-color: map.get($system, primary),
23
+ grid-resizable-handle-active-background-color: map.get($system, primary),
24
+ grid-resizable-handle-hover-background-color: map.get($system, primary),
25
+ grid-resizable-handle-disabled-background-color: map.get($system, outline-variant),
26
+ ),
27
+ typography: (),
28
+ density: (
29
+ grid-row-expand-button-size: 40px,
30
+ ),
31
+ );
32
+
33
+ @return $tokens;
34
+ }
@@ -0,0 +1,38 @@
1
+ // .acp-grid-img {
2
+ // display: inline-block;
3
+ // width: 32px;
4
+ // border-radius: 4px;
5
+ // vertical-align: middle;
6
+ // }
7
+
8
+ .acp-placeholder-box {
9
+ width: 50px;
10
+ height: 50px;
11
+ background: #f0f0f0;
12
+ border: 2px dashed #c2c2c2;
13
+ border-radius: 50%;
14
+
15
+ /* Centrado perfecto */
16
+ display: flex;
17
+ flex-direction: column;
18
+ justify-content: center;
19
+ align-items: center;
20
+
21
+ color: #6b7280; /* gris elegante */
22
+ font-size: 0.85rem;
23
+ gap: 8px;
24
+ }
25
+
26
+ .acp-placeholder-icon {
27
+ width: 32px;
28
+ height: 32px;
29
+ color: #3b82f6; /* azul bonito */
30
+ }
31
+
32
+ .acp-placeholder-image {
33
+ width: 50px;
34
+ height: 50px;
35
+ object-fit: cover;
36
+ border-radius: 50%;
37
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
38
+ }
@@ -0,0 +1,117 @@
1
+ @use '@angular/material' as mat;
2
+ @use './../../../../core/tokens/token-utils';
3
+ @use './../m3-grid';
4
+
5
+ $fallbacks: m3-grid.get-tokens();
6
+
7
+ .acp-grid-column-menu,
8
+ .acp-grid-column-pin-list {
9
+ color: token-utils.slot(grid-column-menu-text-color, $fallbacks);
10
+ }
11
+
12
+ .acp-grid-column-menu {
13
+ .mat-mdc-menu-content {
14
+ padding: 0;
15
+ }
16
+ }
17
+
18
+ .acp-grid-column-menu-body {
19
+ max-height: 65vh;
20
+ padding: 8px 16px;
21
+ overflow: auto;
22
+ }
23
+
24
+ .acp-grid-column-menu-header,
25
+ .acp-grid-column-menu-footer {
26
+ position: sticky;
27
+ z-index: 1;
28
+ padding: 8px 16px;
29
+ }
30
+
31
+ .acp-grid-column-menu-header {
32
+ top: 0;
33
+ border-bottom: 1px solid token-utils.slot(grid-column-menu-divider-color, $fallbacks);
34
+ }
35
+
36
+ .acp-grid-column-menu-footer {
37
+ bottom: 0;
38
+ border-top: 1px solid token-utils.slot(grid-column-menu-divider-color, $fallbacks);
39
+ }
40
+
41
+ .acp-grid-column-menu-list {
42
+ display: block;
43
+ max-width: 100%;
44
+
45
+ &.cdk-drop-list-dragging {
46
+ .acp-grid-column-menu-item:not(.cdk-drag-placeholder) {
47
+ transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
48
+ }
49
+ }
50
+ }
51
+
52
+ .acp-grid-column-menu-item {
53
+ display: flex;
54
+ flex-direction: row;
55
+ align-items: center;
56
+
57
+ &.cdk-drag-disabled {
58
+ .cdk-drag-handle {
59
+ opacity: 0.35;
60
+ cursor: no-drop;
61
+ }
62
+ }
63
+
64
+ .cdk-drag-handle {
65
+ cursor: move;
66
+ }
67
+
68
+ &.cdk-drag-preview {
69
+ border-radius: 4px;
70
+ box-shadow: 0 0 0 1px token-utils.slot(grid-outline-color, $fallbacks);
71
+ }
72
+
73
+ &.cdk-drag-placeholder {
74
+ opacity: 0;
75
+ }
76
+
77
+ &.cdk-drag-animating {
78
+ transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
79
+ }
80
+ }
81
+
82
+ .acp-grid-column-pin-button.mat-mdc-icon-button {
83
+ .mat-mdc-button-touch-target {
84
+ width: 100%;
85
+ height: 100%;
86
+ }
87
+ }
88
+
89
+ .acp-grid-column-pin-option.mat-menu-item {
90
+ display: flex;
91
+ align-items: center;
92
+ height: 32px;
93
+ }
94
+
95
+ .acp-grid-column-pin-option-placeholder {
96
+ display: inline-block;
97
+ width: 20px;
98
+ height: 20px;
99
+ line-height: 20px;
100
+ vertical-align: middle;
101
+ }
102
+
103
+ .acp-grid-column-pin-option-text {
104
+ padding: 0 8px;
105
+ vertical-align: middle;
106
+ }
107
+
108
+ .acp-grid-column-drag-handle-icon:hover {
109
+ cursor: move;
110
+ }
111
+
112
+ .acp-grid-column-menu-item-label.mat-mdc-checkbox {
113
+ .mat-mdc-checkbox-touch-target {
114
+ width: 100%;
115
+ height: 100%;
116
+ }
117
+ }