igniteui-angular 20.1.5 → 20.1.7

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 (46) hide show
  1. package/fesm2022/igniteui-angular.mjs +167 -80
  2. package/fesm2022/igniteui-angular.mjs.map +1 -1
  3. package/index.d.ts +43 -11
  4. package/lib/core/styles/components/action-strip/_action-strip-theme.scss +0 -58
  5. package/lib/core/styles/components/badge/_badge-component.scss +4 -0
  6. package/lib/core/styles/components/badge/_badge-theme.scss +65 -15
  7. package/lib/core/styles/components/carousel/_carousel-theme.scss +12 -11
  8. package/lib/core/styles/components/checkbox/_checkbox-component.scss +57 -22
  9. package/lib/core/styles/components/checkbox/_checkbox-theme.scss +25 -16
  10. package/lib/core/styles/components/combo/_combo-theme.scss +23 -1
  11. package/lib/core/styles/components/date-range-picker/_date-range-picker-theme.scss +9 -4
  12. package/lib/core/styles/components/grid/_pivot-data-selector-theme.scss +0 -25
  13. package/lib/core/styles/components/input/_file-input-theme.scss +0 -82
  14. package/lib/core/styles/components/input/_input-group-theme.scss +70 -70
  15. package/lib/core/styles/components/time-picker/_time-picker-theme.scss +15 -1
  16. package/lib/core/styles/typography/_bootstrap.scss +4 -2
  17. package/lib/core/styles/typography/_fluent.scss +1 -1
  18. package/lib/core/styles/typography/_indigo.scss +1 -3
  19. package/lib/core/styles/typography/_material.scss +1 -1
  20. package/package.json +2 -2
  21. package/styles/igniteui-angular-dark.css +1 -1
  22. package/styles/igniteui-angular.css +1 -1
  23. package/styles/igniteui-bootstrap-dark.css +1 -1
  24. package/styles/igniteui-bootstrap-light.css +1 -1
  25. package/styles/igniteui-dark-green.css +1 -1
  26. package/styles/igniteui-fluent-dark-excel.css +1 -1
  27. package/styles/igniteui-fluent-dark-word.css +1 -1
  28. package/styles/igniteui-fluent-dark.css +1 -1
  29. package/styles/igniteui-fluent-light-excel.css +1 -1
  30. package/styles/igniteui-fluent-light-word.css +1 -1
  31. package/styles/igniteui-fluent-light.css +1 -1
  32. package/styles/igniteui-indigo-dark.css +1 -1
  33. package/styles/igniteui-indigo-light.css +1 -1
  34. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  35. package/styles/maps/igniteui-angular.css.map +1 -1
  36. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  37. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  38. package/styles/maps/igniteui-dark-green.css.map +1 -1
  39. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  40. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  41. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  42. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  43. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  44. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  45. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  46. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -1,3 +1,4 @@
1
+ /* stylelint-disable max-nesting-depth */
1
2
  @use 'sass:map';
2
3
  @use 'sass:math';
3
4
  @use '../../base' as *;
@@ -49,13 +50,6 @@
49
50
  'indigo': rem(8px),
50
51
  ), $variant);
51
52
 
52
- $mark-stroke: map.get((
53
- 'material': 3,
54
- 'fluent': 1,
55
- 'bootstrap': 3,
56
- 'indigo': 3,
57
- ), $variant);
58
-
59
53
  $mark-offset: map.get((
60
54
  'material': 0,
61
55
  'fluent': -1px,
@@ -64,7 +58,7 @@
64
58
  ), $variant);
65
59
 
66
60
  $mark-length: 24;
67
- $mark-x-factor: math.div($mark-stroke, $mark-length);
61
+ $mark-x-factor: calc(#{var-get($theme, 'tick-width')} / $mark-length);
68
62
 
69
63
  $ripple-size: rem(40px);
70
64
  $ripple-radius: math.div($ripple-size, 2);
@@ -128,7 +122,9 @@
128
122
  }
129
123
 
130
124
  %cbx-composite--hover {
131
- border-color: var-get($theme, 'empty-color-hover');
125
+ @if $variant == 'bootstrap' or $variant == 'indigo' {
126
+ border-color: var-get($theme, 'empty-color-hover');
127
+ }
132
128
  }
133
129
 
134
130
  %cbx-composite--x {
@@ -181,6 +177,7 @@
181
177
  %cbx-composite--x--disabled {
182
178
  @if $variant == 'material' or $variant == 'fluent' {
183
179
  background: var-get($theme, 'disabled-color');
180
+ border-color: var-get($theme, 'disabled-color');
184
181
  }
185
182
 
186
183
  @if $variant == 'indigo' or $variant == 'bootstrap' {
@@ -205,7 +202,7 @@
205
202
  inset: 0;
206
203
  stroke: var-get($theme, 'tick-color');
207
204
  stroke-linecap: square;
208
- stroke-width: $mark-stroke;
205
+ stroke-width: var-get($theme, 'tick-width');
209
206
  stroke-dasharray: $mark-length;
210
207
  stroke-dashoffset: $mark-length;
211
208
  fill: none;
@@ -268,7 +265,7 @@
268
265
  }
269
266
 
270
267
  %igx-checkbox--disabled-indeterminate-indigo {
271
- @extend %igx-checkbox--indeterminate-indigo;
268
+ @extend %cbx-composite--x--disabled;
272
269
 
273
270
  %cbx-composite-mark {
274
271
  rect {
@@ -297,6 +294,14 @@
297
294
  z-index: 1;
298
295
  }
299
296
  }
297
+
298
+ &:hover {
299
+ %cbx-composite {
300
+ &::before {
301
+ background: var-get($theme, 'fill-color-hover');
302
+ }
303
+ }
304
+ }
300
305
  }
301
306
 
302
307
  %igx-checkbox--disabled-indeterminate-fluent {
@@ -305,7 +310,7 @@
305
310
  }
306
311
 
307
312
  %cbx-composite--x--disabled {
308
- background: transparent;
313
+ border-color: var-get($theme, 'disabled-color');
309
314
 
310
315
  &::before {
311
316
  background: var-get($theme, 'disabled-color');
@@ -313,7 +318,7 @@
313
318
  }
314
319
  }
315
320
 
316
- %igx-checkbox--disabled-indeterminate-material {
321
+ %igx-checkbox--disabled-indeterminate {
317
322
  %cbx-composite--x--disabled {
318
323
  border-color: var-get($theme, 'disabled-indeterminate-color');
319
324
  background: var-get($theme, 'disabled-indeterminate-color');
@@ -366,7 +371,7 @@
366
371
  %cbx-composite-mark--in {
367
372
  stroke-dashoffset: 41; /* length of path - adjacent line length */
368
373
  opacity: 1;
369
- transform: rotate(45deg) translateX(-#{$mark-x-factor}em);
374
+ transform: rotate(45deg) translateX(calc(#{$mark-x-factor} * -1em));
370
375
  }
371
376
 
372
377
  %cbx-composite-mark--fluent {
@@ -464,11 +469,11 @@
464
469
  }
465
470
 
466
471
  %cbx-ripple--hover-checked {
467
- background: var-get($theme, 'fill-color');
472
+ background: var-get($theme, 'fill-color-hover');
468
473
  }
469
474
 
470
475
  %cbx-ripple--hover-invalid {
471
- background: var-get($theme, 'error-color');
476
+ background: var-get($theme, 'error-color-hover');
472
477
  }
473
478
 
474
479
  %igx-checkbox--focused-indigo {
@@ -550,6 +555,10 @@
550
555
  background: var-get($theme, 'fill-color');
551
556
  }
552
557
 
558
+ %cbx-ripple--focused--hover-checked {
559
+ background: var-get($theme, 'fill-color-hover');
560
+ }
561
+
553
562
  %cbx-ripple--focused-invalid {
554
563
  background: var-get($theme, 'error-color');
555
564
  }
@@ -13,7 +13,7 @@
13
13
  'material': pad-inline(rem(4px), rem(8px), rem(16px)),
14
14
  'fluent': pad-inline(rem(2px), rem(4px), rem(8px)),
15
15
  'bootstrap': pad-inline(rem(4px), rem(8px), rem(16px)),
16
- 'indigo': pad-inline(rem(12px))
16
+ 'indigo': pad-inline(rem(8px), rem(12px), rem(12px))
17
17
  ), $variant);
18
18
 
19
19
  $search-input-block-padding: map.get((
@@ -73,6 +73,16 @@
73
73
  igx-input-group {
74
74
  --theme: #{if($variant == 'indigo', 'indigo', 'material')};
75
75
  --ig-size: #{if($variant == 'indigo', 2, 1)};
76
+
77
+ @if $variant == 'bootstrap' or $variant == 'indigo' {
78
+ input {
79
+ height: rem(28px);
80
+ }
81
+ } @else if $variant == 'fluent' {
82
+ input {
83
+ height: rem(32px);
84
+ }
85
+ }
76
86
  }
77
87
  }
78
88
 
@@ -151,6 +161,18 @@
151
161
  %igx-combo__search {
152
162
  --igx-input-group-input-suffix-background: transparent;
153
163
  --igx-input-group-input-suffix-background--focused: transparent;
164
+
165
+ .igx-input-group__bundle::after {
166
+ border-block-end-color: var(--border-color);
167
+ }
168
+
169
+ .igx-input-group__bundle:hover::after {
170
+ border-block-end-color: #{if($variant == 'fluent', var(--hover-border-color), var(--border-color))};;
171
+ }
172
+
173
+ .igx-input-group--focused .igx-input-group__bundle::after {
174
+ border-block-end-color: var(--focused-bottom-line-color);
175
+ }
154
176
  }
155
177
  }
156
178
 
@@ -23,6 +23,11 @@
23
23
  }
24
24
  }
25
25
 
26
+ igx-date-range-start,
27
+ igx-date-range-end {
28
+ min-width: 0;
29
+ }
30
+
26
31
  igx-date-range-start,
27
32
  igx-date-range-end,
28
33
  %igx-date-range-picker__start,
@@ -57,18 +62,18 @@
57
62
  }
58
63
 
59
64
  /// Adds typography styles for the igx-date-range-picker component.
60
- /// Uses the 'subtitle-1'
65
+ /// Uses the 'caption'
61
66
  /// categories from the typographic scale.
62
67
  /// @group typography
63
- /// @param {Map} $categories [(label: 'subtitle-1')] - The categories from the typographic scale used for type styles.
68
+ /// @param {Map} $categories [(label: 'caption')] - The categories from the typographic scale used for type styles.
64
69
  @mixin date-range-typography(
65
70
  $categories: (
66
- label: 'subtitle-1',
71
+ label: 'caption',
67
72
  )
68
73
  ) {
69
74
  $label: map.get($categories, 'label');
70
75
 
71
- %igx-date-range__label {
76
+ %igx-date-range-picker__label {
72
77
  @include type-style($label);
73
78
  }
74
79
  }
@@ -3,31 +3,6 @@
3
3
  @use '../../base' as *;
4
4
  @use '../../themes/schemas' as *;
5
5
 
6
- /// @deprecated Use the `css-vars` mixin instead.
7
- /// @see {mixin} css-vars
8
- /// @param {Map} $schema [$light-material-schema] - The schema used as basis for styling the component.
9
- @function pivot-data-selector-theme(
10
- $schema: $light-material-schema,
11
- $background: null
12
- ) {
13
- $name: 'igx-pivot-data-selector';
14
- $selector: '.igx-pivot-data-selector';
15
- $pivot-data-selector-schema: ();
16
-
17
- @if map.has-key($schema, 'pivot-data-selector') {
18
- $pivot-data-selector-schema: map.get($schema, 'pivot-data-selector');
19
- } @else {
20
- $pivot-data-selector-schema: $schema;
21
- }
22
-
23
- $theme: digest-schema($pivot-data-selector-schema);
24
-
25
- @return extend($theme, (
26
- name: $name,
27
- selector: $selector,
28
- ));
29
- }
30
-
31
6
  /// @deprecated Use the `css-vars` mixin instead.
32
7
  /// @see {mixin} css-vars
33
8
  /// @param {Map} $theme - The theme used to style the component.
@@ -4,88 +4,6 @@
4
4
  @use '../../themes/schemas' as *;
5
5
  @use 'igniteui-theming/sass/animations/easings' as *;
6
6
 
7
- ////
8
- /// @group themes
9
- /// @access public
10
- ////
11
-
12
- /// @param {Map} $schema [$light-material-schema] - The schema used as basis for styling the component.
13
- /// @param {Color} $file-names-background [null] - The file names container background color.
14
- /// @param {Color} $file-names-background--focused [null] - The file names container background color when the file input is focused.
15
- /// @param {Color} $file-names-background--filled [null] - The file names container background color when the file input is filled.
16
- /// @param {Color} $file-names-background--disabled [null] - The file names container background color when the file input is disabled.
17
- /// @param {Color} $file-names-foreground [null] - The file names color.
18
- /// @param {Color} $file-names-foreground--focused [null] - The file names color when the file input is focused.
19
- /// @param {Color} $file-names-foreground--filled [null] - The file names color when the file input is filled.
20
- /// @param {Color} $file-names-foreground--disabled [null] - The file names color when the file input is disabled.
21
- /// @param {Color} $file-selector-button-background [null] - The file input selector button background color.
22
- /// @param {Color} $file-selector-button-background--focused [null] - The selector button background color when the file input is focused.
23
- /// @param {Color} $file-selector-button-background--filled [null] - The selector button background color when the file input is filled.
24
- /// @param {Color} $file-selector-button-background--disabled [null] - The selector button background color when the file input is disabled.
25
- /// @param {Color} $file-selector-button-foreground [null] - The file input selector button foreground color.
26
- /// @param {Color} $file-selector-button-foreground--focused [null] - The selector button foreground color when the file input is focused.
27
- /// @param {Color} $file-selector-button-foreground--filled [null] - The selector button foreground color when the file input is filled.
28
- /// @param {Color} $file-selector-button-foreground--disabled [null] - The selector button foreground color when the file input is disabled.
29
- /// @example scss Change the focused border and label colors
30
- /// $my-file-input-theme: file-input-theme($file-names-foreground: #09f);
31
- /// // Pass the theme to the css-vars() mixin
32
- /// @include css-vars($my-file-input-theme);
33
- @function file-input-theme(
34
- $schema: $light-material-schema,
35
- $file-names-background: null,
36
- $file-names-background--focused: null,
37
- $file-names-background--filled: null,
38
- $file-names-background--disabled: null,
39
- $file-names-foreground: null,
40
- $file-names-foreground--focused: null,
41
- $file-names-foreground--filled: null,
42
- $file-names-foreground--disabled: null,
43
-
44
- $file-selector-button-background: null,
45
- $file-selector-button-background--focused: null,
46
- $file-selector-button-background--filled: null,
47
- $file-selector-button-background--disabled: null,
48
- $file-selector-button-foreground: null,
49
- $file-selector-button-foreground--focused: null,
50
- $file-selector-button-foreground--filled: null,
51
- $file-selector-button-foreground--disabled: null,
52
- ) {
53
- $name: 'igx-file-input';
54
- $file-input-schema: ();
55
-
56
- @if map.has-key($schema, 'file-input') {
57
- $file-input-schema: map.get($schema, 'file-input');
58
- } @else {
59
- $file-input-schema: $schema;
60
- }
61
-
62
- $theme: digest-schema($file-input-schema);
63
-
64
- @return extend(
65
- $theme,
66
- (
67
- name: $name,
68
- file-names-background: $file-names-background,
69
- file-names-background--focused: $file-names-background--focused,
70
- file-names-background--filled: $file-names-background--filled,
71
- file-names-background--disabled: $file-names-background--disabled,
72
- file-names-foreground: $file-names-foreground,
73
- file-names-foreground--focused: $file-names-foreground--focused,
74
- file-names-foreground--filled: $file-names-foreground--filled,
75
- file-names-foreground--disabled: $file-names-foreground--disabled,
76
-
77
- file-selector-button-background: $file-selector-button-background,
78
- file-selector-button-background--focused: $file-selector-button-background--focused,
79
- file-selector-button-background--filled: $file-selector-button-background--filled,
80
- file-selector-button-background--disabled: $file-selector-button-background--disabled,
81
- file-selector-button-foreground: $file-selector-button-foreground,
82
- file-selector-button-foreground--focused: $file-selector-button-foreground--focused,
83
- file-selector-button-foreground--filled: $file-selector-button-foreground--filled,
84
- file-selector-button-foreground--disabled: $file-selector-button-foreground--disabled,
85
- ),
86
- );
87
- }
88
-
89
7
  /// @deprecated Use the `css-vars` mixin instead.
90
8
  /// @see {mixin} css-vars
91
9
  /// @param {Map} $theme - The theme used to style the component.
@@ -16,28 +16,13 @@
16
16
  $indigo-theme: $variant == 'indigo';
17
17
  $fluent-theme: $variant == 'fluent';
18
18
  $bootstrap-theme: $variant == 'bootstrap';
19
- $NOT-material-theme: $variant != 'material';
20
- $NOT-indigo-theme: $variant != 'indigo';
21
- $NOT-fluent-theme: $variant != 'fluent';
22
- $NOT-bootstrap-theme: $variant != 'bootstrap';
23
19
 
24
20
  $required-symbol: '*';
25
21
  $required-symbol-margin: rem(2px);
26
22
 
27
- // This creates an inverse relationship
28
- // between the value of the base scale size and
29
- // the sizing of all inner elements.
30
- // i.e. the bigger the scale size,
31
- // the smaller the padding of the inner items.
32
- $base-scale-size: (
33
- 'comfortable': 16px,
34
- 'cosy': 19px,
35
- 'compact': 22px
36
- );
37
-
38
23
  $bootstrap-inline-padding: (
39
- 'comfortable': rem(16px),
40
- 'cosy': rem(12px),
24
+ 'comfortable': rem(14px),
25
+ 'cosy': rem(10px),
41
26
  'compact': rem(8px)
42
27
  );
43
28
 
@@ -50,12 +35,6 @@
50
35
  $input-top-padding: rem(20px);
51
36
  $input-bottom-padding: rem(6px);
52
37
 
53
- $bundle-padding-top: (
54
- 'comfortable': rem(18px, map.get($base-scale-size, 'comfortable')),
55
- 'cosy': rem(18px, map.get($base-scale-size, 'cosy')),
56
- 'compact': rem(18px, map.get($base-scale-size, 'compact')),
57
- );
58
-
59
38
  $hint-spacing-block: map.get((
60
39
  'material': rem(4px),
61
40
  'fluent': rem(5px),
@@ -64,7 +43,7 @@
64
43
  ), $variant);
65
44
 
66
45
  $hint-spacing-inline: map.get((
67
- 'material': sizable(rem(14px), rem(16px), rem(18px)),
46
+ 'material': sizable(rem(12px), rem(14px), rem(16px)),
68
47
  'fluent': 0,
69
48
  'bootstrap': 0,
70
49
  'indigo': 0,
@@ -77,6 +56,23 @@
77
56
  'indigo': rem(15px),
78
57
  ), $variant);
79
58
 
59
+ $material-box-top-padding: sizable(rem(16px), rem(20px), rem(24px));
60
+ $material-border-top-padding: sizable(rem(8px), rem(12px), rem(16px));
61
+
62
+ $textarea-top-padding: map.get((
63
+ 'material': rem(0px),
64
+ 'fluent': sizable(rem(6px), rem(10px), rem(14px)),
65
+ 'bootstrap': sizable(rem(4px), rem(8px), rem(12px)),
66
+ 'indigo': sizable(rem(4px), rem(6px), rem(8px)),
67
+ ), $variant);
68
+
69
+ $textarea-font: map.get((
70
+ 'material': 'var(--ig-subtitle-1-line-height)',
71
+ 'fluent': 'var(--ig-body-2-line-height)',
72
+ 'bootstrap': 'var(--ig-body-1-line-height)',
73
+ 'indigo': 'var(--ig-body-2-line-height)',
74
+ ), $variant);
75
+
80
76
  // Base Start
81
77
  %form-group-prefix--upload {
82
78
  padding: 0;
@@ -115,7 +111,7 @@
115
111
  } @else if $indigo-theme {
116
112
  padding-inline: pad-inline(rem(2px), rem(4px), rem(6px));
117
113
  } @else {
118
- padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
114
+ padding-inline: pad-inline(rem(8px), rem(10px), rem(14px));
119
115
  }
120
116
  }
121
117
  }
@@ -149,7 +145,7 @@
149
145
  @include sizable();
150
146
  --component-size: var(--ig-size, #{var-get($theme, 'default-size')});
151
147
  --input-size: var(--component-size);
152
- --input-icon: #{sizable(rem(14px), rem(16px), rem(18px))};
148
+ --input-icon: #{sizable(rem(14px), rem(16px), rem(16px))};
153
149
 
154
150
  position: relative;
155
151
  display: block;
@@ -869,7 +865,7 @@
869
865
 
870
866
  @if $variant == 'material' {
871
867
  overflow: hidden;
872
- min-width: pad(rem(10px), rem(12px), rem(14px));
868
+ min-width: pad(rem(8px), rem(10px), rem(12px));
873
869
  }
874
870
  }
875
871
 
@@ -1020,7 +1016,7 @@
1020
1016
  %form-group-display--search {
1021
1017
  %igx-input-group__notch--search,
1022
1018
  %form-group-bundle-main--search {
1023
- @if $variant != 'indigo' {
1019
+ @if $variant == 'material' {
1024
1020
  padding-inline: rem(4px);
1025
1021
  }
1026
1022
  }
@@ -1083,11 +1079,9 @@
1083
1079
  }
1084
1080
 
1085
1081
  %form-group-label {
1086
- padding-inline-end: rem(4px);
1087
1082
  backface-visibility: hidden;
1088
1083
  will-change: transform;
1089
1084
  transform-origin: top left;
1090
- margin-inline-start: pad-inline(0, rem(-2px), rem(-4px));
1091
1085
  }
1092
1086
 
1093
1087
  %form-group-label--border {
@@ -1204,6 +1198,18 @@
1204
1198
  }
1205
1199
 
1206
1200
  @if $variant == 'material' {
1201
+ %textarea-group:not(%textarea-group--outlined) {
1202
+ --textarea-box-padding: #{pad-block(rem(8px), rem(12px), rem(16px))};
1203
+
1204
+ &:has(%igx-input-group__notch:not(:empty)) {
1205
+ --textarea-box-padding: #{pad-block(rem(16px), rem(20px), rem(24px))};
1206
+ }
1207
+
1208
+ %form-group-textarea {
1209
+ margin-block-end: rem(2px);
1210
+ }
1211
+ }
1212
+
1207
1213
  %textarea-group:not(%suffixed) {
1208
1214
  %form-group-bundle-main {
1209
1215
  grid-area: 1 / 2 / span 1 / span 3;
@@ -1211,7 +1217,7 @@
1211
1217
  }
1212
1218
 
1213
1219
  textarea {
1214
- padding-inline-end: rem(4px);
1220
+ padding-inline-end: #{pad-inline(rem(12px), rem(14px), rem(16px))};
1215
1221
  width: calc(100% - #{rem(1px)});
1216
1222
  }
1217
1223
  }
@@ -1227,7 +1233,7 @@
1227
1233
  %form-group-textarea-label:not(%textarea-group-label--focused) {
1228
1234
  @include type-style('subtitle-1');
1229
1235
 
1230
- top: calc($input-top-padding - #{rem(3px)});
1236
+ top: calc(#{$material-box-top-padding} - #{rem(3px)});
1231
1237
  transform: translateY(0);
1232
1238
  margin-bottom: auto;
1233
1239
  }
@@ -1244,13 +1250,6 @@
1244
1250
  }
1245
1251
 
1246
1252
  %form-group-textarea-group-bundle {
1247
- // 3 lines * 22px + 8px bottom padding + 8px top padding
1248
- --textarea-size: #{sizable(
1249
- rem(82px, map.get($base-scale-size, 'compact')),
1250
- rem(82px, map.get($base-scale-size, 'cosy')),
1251
- rem(82px, map.get($base-scale-size, 'comfortable'))
1252
- )};
1253
- min-height: var(--textarea-size) !important;
1254
1253
  height: auto !important;
1255
1254
 
1256
1255
  %form-group-label {
@@ -1260,25 +1259,25 @@
1260
1259
 
1261
1260
  @if $material-theme {
1262
1261
  %form-group-textarea-label {
1263
- top: calc($input-top-padding - #{rem(1px)});
1262
+ top: calc(#{$material-box-top-padding} - #{rem(1px)});
1264
1263
  margin-block-end: auto;
1265
1264
  }
1266
1265
 
1267
1266
  %textarea-group--outlined {
1268
1267
  %form-group-textarea-label {
1269
- top: calc($input-top-padding - #{rem(3px)});
1268
+ top: calc(#{$material-border-top-padding} - #{rem(3px)});
1270
1269
  }
1271
1270
  }
1272
1271
 
1273
1272
  %textarea-group--box {
1274
1273
  %form-group-textarea-label {
1275
- top: calc($input-top-padding - #{rem(2px)});
1274
+ top: calc(#{$material-box-top-padding} - #{rem(2px)});
1276
1275
  }
1277
1276
  }
1278
1277
 
1279
1278
  %textarea-group-label--focused {
1280
1279
  transform: translateY(0);
1281
- top: calc(#{$input-top-padding} / 4);
1280
+ top: calc(#{$material-box-top-padding} / 4);
1282
1281
  }
1283
1282
 
1284
1283
  %textarea-group-label--filled--border,
@@ -1336,7 +1335,7 @@
1336
1335
  overflow: hidden;
1337
1336
  text-overflow: ellipsis;
1338
1337
 
1339
- &:not([type='date']) {
1338
+ &:not(%form-group-textarea, [type='date']) {
1340
1339
  line-height: 0 !important; /* Reset typography */
1341
1340
  }
1342
1341
 
@@ -1450,29 +1449,13 @@
1450
1449
  }
1451
1450
 
1452
1451
  %form-group-textarea {
1453
- --textarea-size: #{sizable(
1454
- rem(82px, map.get($base-scale-size, 'compact')),
1455
- rem(82px, map.get($base-scale-size, 'cosy')),
1456
- rem(82px, map.get($base-scale-size, 'comfortable'))
1457
- )};
1458
-
1459
- min-height: var(--textarea-size);
1460
1452
  height: auto;
1461
1453
  resize: vertical;
1462
1454
  overflow: hidden;
1455
+ z-index: 1;
1463
1456
 
1464
1457
  @if $material-theme {
1465
1458
  padding: 0;
1466
- inset-block-start: rem(-3px);
1467
- }
1468
-
1469
- // resets typography styles
1470
- line-height: normal !important;
1471
-
1472
- z-index: 1;
1473
-
1474
- &:not([type='*']) {
1475
- line-height: normal !important; /* resets typography styles */
1476
1459
  }
1477
1460
  }
1478
1461
 
@@ -1485,7 +1468,17 @@
1485
1468
  }
1486
1469
 
1487
1470
  @if $material-theme {
1488
- padding-block-start: $input-top-padding;
1471
+ padding-block-start: var(--textarea-box-padding);
1472
+ }
1473
+ }
1474
+
1475
+ %textarea-group--outlined {
1476
+ %form-group-textarea-group-bundle-main {
1477
+ padding-block-start: #{$material-border-top-padding};
1478
+ }
1479
+
1480
+ %form-group-textarea {
1481
+ inset-block-start: rem(-2px);
1489
1482
  }
1490
1483
  }
1491
1484
 
@@ -1637,13 +1630,13 @@
1637
1630
  %form-group-helper {
1638
1631
  --ig-caption-margin-top: #{$hint-spacing-block};
1639
1632
  --ig-caption-margin-bottom: 0;
1633
+ --ig-body-2-margin-top: #{$hint-spacing-block};
1640
1634
 
1641
1635
  color: var-get($theme, 'helper-text-color');
1642
1636
  position: relative;
1643
1637
  display: grid;
1644
1638
  grid-auto-rows: minmax($hint-min-size, auto);
1645
1639
  padding-inline: pad-inline($hint-spacing-inline);
1646
-
1647
1640
  justify-content: space-between;
1648
1641
 
1649
1642
  > * {
@@ -1670,7 +1663,9 @@
1670
1663
  }
1671
1664
 
1672
1665
  %form-group-helper-item {
1673
- display: flex;
1666
+ @include line-clamp(2, true, true);
1667
+
1668
+ overflow-wrap: anywhere;
1674
1669
  align-items: center;
1675
1670
  position: relative;
1676
1671
  }
@@ -1710,7 +1705,9 @@
1710
1705
  [igxPrefix],
1711
1706
  igx-suffix,
1712
1707
  [igxSuffix] {
1713
- padding-inline: pad-inline(rem(6px), rem(8px), rem(10px));
1708
+ &:not(:empty) {
1709
+ padding-inline: pad-inline(rem(6px), rem(8px), rem(10px));
1710
+ }
1714
1711
  }
1715
1712
  }
1716
1713
 
@@ -2014,13 +2011,14 @@
2014
2011
  }
2015
2012
 
2016
2013
  %indigo-textarea {
2017
- padding-block: rem(6px);
2014
+ padding-block: $textarea-top-padding 0;
2018
2015
  padding-inline: pad-inline(rem(2px), rem(4px), rem(6px));
2019
2016
  inset-block-end: rem(2px);
2020
2017
  }
2021
2018
 
2022
2019
  %fluent-textarea {
2023
- padding: rem(8px);
2020
+ padding-inline: pad-inline(rem(8px));
2021
+ padding-block: $textarea-top-padding 0;
2024
2022
  }
2025
2023
 
2026
2024
  %fluent-input-disabled {
@@ -2038,8 +2036,6 @@
2038
2036
  color: var-get($theme, 'idle-secondary-color');
2039
2037
 
2040
2038
  @if $variant == 'fluent' {
2041
- --ig-subtitle-2-line-height: rem(16px);
2042
-
2043
2039
  margin-block-end: rem(5px);
2044
2040
  } @else {
2045
2041
  margin-block-end: rem(4px);
@@ -2113,7 +2109,7 @@
2113
2109
  %form-group-prefix-fluent-search,
2114
2110
  %form-group-suffix-fluent-search {
2115
2111
  &:not(:empty) {
2116
- padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
2112
+ padding-inline: pad-inline(rem(8px), rem(10px), rem(14px));
2117
2113
  }
2118
2114
  }
2119
2115
 
@@ -2299,6 +2295,10 @@
2299
2295
  map.get($bootstrap-inline-padding, 'cosy'),
2300
2296
  map.get($bootstrap-inline-padding, 'comfortable')
2301
2297
  );
2298
+
2299
+ &:is(textarea) {
2300
+ padding-block: $textarea-top-padding 0;
2301
+ }
2302
2302
  }
2303
2303
 
2304
2304
  // The :not selector is needed otherwise bootstrap will override the %autofill-background-fix