igniteui-angular 20.0.7 → 20.0.9

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 (102) hide show
  1. package/fesm2022/igniteui-angular.mjs +143 -52
  2. package/fesm2022/igniteui-angular.mjs.map +1 -1
  3. package/index.d.ts +41 -5
  4. package/lib/core/styles/base/_index.scss +1 -0
  5. package/lib/core/styles/components/_index.scss +1 -0
  6. package/lib/core/styles/components/avatar/_avatar-theme.scss +0 -58
  7. package/lib/core/styles/components/badge/_badge-theme.scss +0 -72
  8. package/lib/core/styles/components/banner/_banner-theme.scss +0 -62
  9. package/lib/core/styles/components/bottom-nav/_bottom-nav-theme.scss +0 -100
  10. package/lib/core/styles/components/button/_button-theme.scss +0 -234
  11. package/lib/core/styles/components/button-group/_button-group-theme.scss +0 -293
  12. package/lib/core/styles/components/calendar/_calendar-theme.scss +0 -1075
  13. package/lib/core/styles/components/card/_card-theme.scss +0 -92
  14. package/lib/core/styles/components/carousel/_carousel-theme.scss +0 -218
  15. package/lib/core/styles/components/checkbox/_checkbox-theme.scss +0 -150
  16. package/lib/core/styles/components/chip/_chip-theme.scss +1 -265
  17. package/lib/core/styles/components/column-actions/_column-actions-theme.scss +0 -48
  18. package/lib/core/styles/components/combo/_combo-theme.scss +9 -125
  19. package/lib/core/styles/components/date-picker/_date-picker-theme.scss +4 -0
  20. package/lib/core/styles/components/date-range-picker/_date-range-picker-theme.scss +0 -30
  21. package/lib/core/styles/components/dialog/_dialog-theme.scss +0 -75
  22. package/lib/core/styles/components/divider/_divider-theme.scss +0 -39
  23. package/lib/core/styles/components/dock-manager/_dock-manager-theme.scss +0 -68
  24. package/lib/core/styles/components/drop-down/_drop-down-theme.scss +0 -211
  25. package/lib/core/styles/components/expansion-panel/_expansion-panel-theme.scss +0 -96
  26. package/lib/core/styles/components/grid/_excel-filtering-theme.scss +0 -1
  27. package/lib/core/styles/components/grid/_grid-theme.scss +44 -600
  28. package/lib/core/styles/components/grid-summary/_grid-summary-theme.scss +0 -84
  29. package/lib/core/styles/components/grid-toolbar/_grid-toolbar-theme.scss +0 -92
  30. package/lib/core/styles/components/highlight/highlight-theme.scss +0 -55
  31. package/lib/core/styles/components/icon/_icon-theme.scss +0 -43
  32. package/lib/core/styles/components/icon-button/_icon-button-theme.scss +0 -112
  33. package/lib/core/styles/components/input/_file-input-component.scss +72 -0
  34. package/lib/core/styles/components/input/_file-input-theme.scss +203 -0
  35. package/lib/core/styles/components/input/_input-group-component.scss +110 -126
  36. package/lib/core/styles/components/input/_input-group-theme.scss +409 -648
  37. package/lib/core/styles/components/label/_label-theme.scss +2 -35
  38. package/lib/core/styles/components/list/_list-theme.scss +0 -264
  39. package/lib/core/styles/components/navbar/_navbar-theme.scss +0 -89
  40. package/lib/core/styles/components/navdrawer/_navdrawer-theme.scss +0 -141
  41. package/lib/core/styles/components/overlay/_overlay-theme.scss +0 -38
  42. package/lib/core/styles/components/paginator/_paginator-theme.scss +0 -50
  43. package/lib/core/styles/components/progress/circular/_circular-theme.scss +0 -73
  44. package/lib/core/styles/components/progress/linear/_linear-theme.scss +0 -68
  45. package/lib/core/styles/components/query-builder/_query-builder-theme.scss +0 -101
  46. package/lib/core/styles/components/radio/_radio-theme.scss +0 -136
  47. package/lib/core/styles/components/rating/_rating-theme.scss +0 -43
  48. package/lib/core/styles/components/ripple/_ripple-theme.scss +0 -39
  49. package/lib/core/styles/components/scrollbar/scrollbar-theme.scss +0 -82
  50. package/lib/core/styles/components/select/_select-theme.scss +0 -93
  51. package/lib/core/styles/components/slider/_slider-theme.scss +0 -187
  52. package/lib/core/styles/components/snackbar/_snackbar-theme.scss +0 -64
  53. package/lib/core/styles/components/splitter/_splitter-theme.scss +0 -71
  54. package/lib/core/styles/components/stepper/_stepper-theme.scss +0 -492
  55. package/lib/core/styles/components/switch/_switch-theme.scss +0 -264
  56. package/lib/core/styles/components/tabs/_tabs-theme.scss +2 -261
  57. package/lib/core/styles/components/time-picker/_time-picker-theme.scss +0 -156
  58. package/lib/core/styles/components/toast/_toast-theme.scss +0 -69
  59. package/lib/core/styles/components/tooltip/_tooltip-theme.scss +0 -62
  60. package/lib/core/styles/components/tree/_tree-theme.scss +0 -128
  61. package/lib/core/styles/components/watermark/_watermark-theme.scss +0 -60
  62. package/lib/core/styles/themes/_core.scss +2 -0
  63. package/lib/core/styles/themes/_index.scss +1 -0
  64. package/lib/core/styles/themes/generators/_base.scss +11 -0
  65. package/lib/core/styles/typography/_bootstrap.scss +4 -0
  66. package/lib/core/styles/typography/_fluent.scss +5 -0
  67. package/lib/core/styles/typography/_indigo.scss +6 -0
  68. package/lib/core/styles/typography/_material.scss +2 -0
  69. package/package.json +2 -2
  70. package/styles/igniteui-angular-dark.css +1 -1
  71. package/styles/igniteui-angular.css +1 -1
  72. package/styles/igniteui-bootstrap-dark.css +1 -1
  73. package/styles/igniteui-bootstrap-light.css +1 -1
  74. package/styles/igniteui-dark-green.css +1 -1
  75. package/styles/igniteui-fluent-dark-excel.css +1 -1
  76. package/styles/igniteui-fluent-dark-word.css +1 -1
  77. package/styles/igniteui-fluent-dark.css +1 -1
  78. package/styles/igniteui-fluent-light-excel.css +1 -1
  79. package/styles/igniteui-fluent-light-word.css +1 -1
  80. package/styles/igniteui-fluent-light.css +1 -1
  81. package/styles/igniteui-indigo-dark.css +1 -1
  82. package/styles/igniteui-indigo-light.css +1 -1
  83. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  84. package/styles/maps/igniteui-angular.css.map +1 -1
  85. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  86. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  87. package/styles/maps/igniteui-dark-green.css.map +1 -1
  88. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  89. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  90. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  91. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  92. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  93. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  94. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  95. package/styles/maps/igniteui-indigo-light.css.map +1 -1
  96. package/lib/core/styles/components/button/_contained-button-theme.scss +0 -302
  97. package/lib/core/styles/components/button/_fab-button-theme.scss +0 -296
  98. package/lib/core/styles/components/button/_flat-button-theme.scss +0 -356
  99. package/lib/core/styles/components/button/_outlined-button-theme.scss +0 -419
  100. package/lib/core/styles/components/icon-button/_contained-icon-button-theme.scss +0 -196
  101. package/lib/core/styles/components/icon-button/_flat-icon-button-theme.scss +0 -188
  102. package/lib/core/styles/components/icon-button/_outlined-icon-button-theme.scss +0 -232
@@ -1,533 +1,7 @@
1
1
  @use 'sass:map';
2
- @use 'sass:meta';
3
2
  @use '../../base' as *;
4
- @use '../../themes/schemas' as *;
5
3
  @use 'igniteui-theming/sass/animations/easings' as *;
6
4
 
7
- ////
8
- /// @group themes
9
- /// @access public
10
- /// @author <a href="https://github.com/simeonoff" target="_blank">Simeon Simeonoff</a>
11
- ////
12
-
13
- /// @param {Map} $schema [$light-material-schema] - The schema used as basis for styling the component.
14
- /// @param {Color} $idle-text-color [null] - The input text color in the idle state.
15
- /// @param {Color} $filled-text-color [null] - The input text color in the filled state.
16
- /// @param {Color} $filled-text-hover-color [null] - The input text color in the filled state on hover.
17
- /// @param {Color} $focused-text-color [null] - The input text color in the focused state.
18
- /// @param {Color} $disabled-text-color [null] - The input text color in the disabled state.
19
- /// @param {Color} $helper-text-color [null] - The helper text color.
20
- /// @param {Color} $input-prefix-color [null] - The input prefix color in the idle state.
21
- /// @param {Color} $input-prefix-background [null] - The background color of an input prefix in the idle state.
22
- /// @param {Color} $input-prefix-color--filled [null] - The input prefix color in the filled state.
23
- /// @param {Color} $input-prefix-background--filled] - The background color of an input prefix in the filled state.
24
- /// @param {Color} $input-prefix-color--focused [null] - The input prefix color in the focused state.
25
- /// @param {Color} $input-prefix-background--focused [null] - The background color of an input prefix in the focused state.
26
- /// @param {Color} $input-suffix-color [null] - The input suffix color in the idle state.
27
- /// @param {Color} $input-suffix-background [null] - The background color of an input suffix in the idle state.
28
- /// @param {Color} $input-suffix-color--filled [null] - The input suffix color in the filled state.
29
- /// @param {Color} $input-suffix-background-filled [null] - The background color of an input suffix in the filled state.
30
- /// @param {Color} $input-suffix-color--focused [null] - The input suffix color in the focused state.
31
- /// @param {Color} $input-suffix-background--focused [null] - The background color of an input suffix in the focused state.
32
- /// @param {Color} $idle-secondary-color [null] - The label color in the idle state.
33
- /// @param {Color} $focused-secondary-color [null] - The label color in the focused state.
34
- /// @param {Color} $idle-bottom-line-color [null] - The bottom line and border colors in the idle state.
35
- /// @param {Color} $hover-bottom-line-color [null] - The bottom line and border colors in the hover state.
36
- /// @param {Color} $focused-bottom-line-color [null] - The bottom line and border colors in the focused state.
37
- /// @param {Color} $disabled-bottom-line-color [null] - The bottom line and border colors in the disabled state.
38
- /// @param {Color} $border-color [null] - The border color for input groups of type border and fluent.
39
- /// @param {Color} $hover-border-color [null] - The hover input border for input groups of type border and fluent.
40
- /// @param {Color} $focused-border-color [null] - The focused input border color for input groups of type border and fluent.
41
- /// @param {Color} $disabled-border-color [null] - The disabled border color for input groups of type border and fluent.
42
- /// @param {Color} $box-background [null] - The background color of an input group of type box.
43
- /// @param {Color} $box-background-hover [null] - The background color on hover of an input group of type box.
44
- /// @param {Color} $box-background-focus [null] - The background color on focus of an input group of type box.
45
- /// @param {Color} $box-disabled-background [null] - The background color of an input group of type box in the disabled state.
46
- /// @param {Color} $border-background [null] - The background color of an input group of type border.
47
- /// @param {Color} $border-disabled-background [null] - The background color of an input group of type border in the disabled state.
48
- /// @param {Color} $search-background [null] - The background color of an input group of type search.
49
- /// @param {Color} $search-disabled-background [null] - The background color of an input group of type search in the disabled state.
50
- /// @param {box-shadow} $search-resting-shadow [null] - The shadow color of an input group of type search in its resting state.
51
- /// @param {box-shadow} $search-hover-shadow [null] - The shadow color of an input group of type search in its hover state.
52
- /// @param {box-shadow} $search-disabled-shadow [null] - The shadow color of an input group of type search in its disabled state.
53
- /// @param {Color} $success-secondary-color [null] - The success color used in the valid state.
54
- /// @param {Color} $warning-secondary-color [null] - The warning color used in the warning state.
55
- /// @param {Color} $error-secondary-color [null] - The error color used in the error state.
56
- /// @param {List} $box-border-radius [null] - The border radius used for box input.
57
- /// @param {List} $border-border-radius [null] - The border radius used for border input.
58
- /// @param {List} $search-border-radius [null] - The border radius used for search input.
59
- /// @param {Color} placeholder-color [null] - The placeholder color of an input group.
60
- /// @param {Color} hover-placeholder-color [null] - The placeholder color of an input group on hover.
61
- /// @param {Color} disabled-placeholder-color [null] - The disabled placeholder color of an input group.
62
- /// @example scss Change the focused border and label colors
63
- /// $my-input-group-theme: input-group-theme($focused-secondary-color: pink, $focused-bottom-line-color: pink);
64
- /// // Pass the theme to the css-vars() mixin
65
- /// @include css-vars($my-input-group-theme);
66
- @function input-group-theme(
67
- $schema: $light-material-schema,
68
-
69
- $box-background: null,
70
- $box-background-hover: null,
71
- $box-background-focus: null,
72
- $box-disabled-background: null,
73
- $box-border-radius: null,
74
-
75
- $idle-text-color: null,
76
- $filled-text-color: null,
77
- $filled-text-hover-color: null,
78
- $focused-text-color: null,
79
- $helper-text-color: null,
80
- $disabled-text-color: null,
81
-
82
- $idle-secondary-color: null,
83
- $focused-secondary-color: null,
84
-
85
- $idle-bottom-line-color: null,
86
- $hover-bottom-line-color: null,
87
- $focused-bottom-line-color: null,
88
- $disabled-bottom-line-color: null,
89
-
90
- $border-color: null,
91
- $hover-border-color: null,
92
- $focused-border-color: null,
93
- $disabled-border-color: null,
94
-
95
- $border-border-radius: null,
96
- $border-background: null,
97
- $border-disabled-background: null,
98
-
99
- $search-background: null,
100
- $search-disabled-background: null,
101
- $search-border-radius: null,
102
- $search-resting-shadow: null,
103
- $search-hover-shadow: null,
104
- $search-disabled-shadow: null,
105
-
106
- $success-secondary-color: null,
107
- $warning-secondary-color: null,
108
- $error-secondary-color: null,
109
- $success-shadow-color: null,
110
- $error-shadow-color: null,
111
-
112
- $placeholder-color: null,
113
- $hover-placeholder-color: null,
114
- $disabled-placeholder-color: null,
115
-
116
- $input-prefix-color: null,
117
- $input-prefix-background: null,
118
- $input-prefix-color--filled: null,
119
- $input-prefix-background--filled: null,
120
- $input-prefix-color--focused: null,
121
- $input-prefix-background--focused: null,
122
-
123
- $input-suffix-color: null,
124
- $input-suffix-background: null,
125
- $input-suffix-color--filled: null,
126
- $input-suffix-background--filled: null,
127
- $input-suffix-color--focused: null,
128
- $input-suffix-background--focused: null,
129
- $size: null,
130
- ) {
131
- $name: 'igx-input-group';
132
- $selector: 'igx-input-group, igx-date-range-start, igx-date-range-end';
133
- $input-group-schema: ();
134
-
135
- @if map.has-key($schema, 'input-group') {
136
- $input-group-schema: map.get($schema, 'input-group');
137
- } @else {
138
- $input-group-schema: $schema;
139
- }
140
-
141
- $theme: digest-schema($input-group-schema);
142
- $variant: map.get($theme, '_meta', 'theme');
143
-
144
- $search-resting-elevation: map.get($input-group-schema, 'search-resting-elevation');
145
- $search-hover-elevation: map.get($input-group-schema, 'search-hover-elevation');
146
- $search-disabled-elevation: map.get($input-group-schema, 'search-disabled-elevation');
147
-
148
- @if $variant == 'material' {
149
- @if not($box-background-hover) and $box-background {
150
- $box-background-hover: var(--box-background);
151
- }
152
-
153
- @if not($box-background-focus) and $box-background {
154
- $box-background-focus: hsl(from var(--box-background) h s calc(l * 0.9));
155
- }
156
-
157
- @if not($placeholder-color) and $box-background {
158
- $placeholder-color: hsla(from adaptive-contrast(var(--box-background)) h s l / 0.9);
159
- }
160
-
161
- @if not($hover-placeholder-color) and $box-background-hover {
162
- $hover-placeholder-color: hsla(from adaptive-contrast(var(--box-background-hover)) h s l / 0.9);
163
- }
164
-
165
- @if not($idle-text-color) and $box-background {
166
- $idle-text-color: adaptive-contrast(var(--box-background));
167
- }
168
-
169
- @if not($filled-text-color) and $box-background {
170
- $filled-text-color: adaptive-contrast(var(--box-background));
171
- }
172
-
173
- @if not($filled-text-hover-color) and $box-background {
174
- $filled-text-hover-color: adaptive-contrast(var(--box-background));
175
- }
176
-
177
- @if not($focused-text-color) and $box-background-focus {
178
- $focused-text-color: adaptive-contrast(var(--box-background-focus));
179
- }
180
-
181
- @if not($idle-secondary-color) and $box-background {
182
- $idle-secondary-color: hsla(from adaptive-contrast(var(--box-background)) h s l / 0.9);
183
- }
184
-
185
- @if not($input-prefix-color) and $box-background {
186
- $input-prefix-color: hsla(from adaptive-contrast(var(--box-background)) h s l / 0.9);
187
- }
188
-
189
- @if not($input-prefix-color--filled) and $box-background {
190
- $input-prefix-color--filled: adaptive-contrast(var(--box-background));
191
- }
192
-
193
- @if not($input-prefix-color--focused) and $box-background-focus {
194
- $input-prefix-color--focused: adaptive-contrast(var(--box-background-focus));
195
- }
196
-
197
- @if not($input-suffix-color) and $box-background {
198
- $input-suffix-color: hsla(from adaptive-contrast(var(--box-background)) h s l / 0.9);
199
- }
200
-
201
- @if not($input-suffix-color--filled) and $box-background {
202
- $input-suffix-color--filled: adaptive-contrast(var(--box-background));
203
- }
204
-
205
- @if not($input-suffix-color--focused) and $box-background-focus {
206
- $input-suffix-color--focused: adaptive-contrast(var(--box-background-focus));
207
- }
208
-
209
- @if $box-background != transparent {
210
- @if not($box-disabled-background) and $box-background {
211
- $box-disabled-background: hsla(from var(--box-background) h s l / 0.4);
212
- }
213
-
214
- @if not($disabled-placeholder-color) and $box-disabled-background {
215
- $disabled-placeholder-color: adaptive-contrast(var(--box-disabled-background));
216
- }
217
-
218
- @if not($disabled-text-color) and $box-disabled-background {
219
- $disabled-text-color: adaptive-contrast(var(--box-disabled-background));
220
- }
221
- } @else {
222
- @if not($box-disabled-background) and $box-background {
223
- $box-disabled-background: var(--box-background);
224
- }
225
-
226
- @if not($disabled-placeholder-color) and $placeholder-color {
227
- $disabled-placeholder-color: hsla(from var(--placeholder-color) h s l / 0.7);
228
- }
229
-
230
- @if not($disabled-text-color) and $idle-text-color {
231
- $disabled-text-color: hsla(from var(--idle-text-color) h s l / 0.7);
232
- }
233
- }
234
- }
235
-
236
- @if $variant == 'fluent' or $variant == 'bootstrap' {
237
- @if not($input-prefix-background) and $input-suffix-background {
238
- $input-prefix-background: var(--input-suffix-background);
239
- }
240
-
241
- @if not($input-suffix-background) and $input-prefix-background {
242
- $input-suffix-background: var(--input-prefix-background);
243
- }
244
- }
245
-
246
- @if $variant == 'material' or $variant == 'indigo' {
247
- //bottom line color
248
- @if not($hover-bottom-line-color) and $idle-bottom-line-color {
249
- $hover-bottom-line-color: hsl(from var(--idle-bottom-line-color) h s calc(l * 0.8));
250
- }
251
-
252
- @if not($focused-bottom-line-color) and $hover-bottom-line-color {
253
- $focused-bottom-line-color: var(--hover-bottom-line-color);
254
- }
255
-
256
- @if $variant == 'material' {
257
- @if not($focused-secondary-color) and $focused-bottom-line-color {
258
- $focused-secondary-color: var(--focused-bottom-line-color);
259
- }
260
-
261
- @if not($border-color) and $idle-bottom-line-color {
262
- $border-color: var(--idle-bottom-line-color);
263
- }
264
- }
265
- }
266
-
267
- //border-color
268
- @if $variant == 'bootstrap' {
269
- @if not($focused-border-color) and $border-color {
270
- $focused-border-color: hsl(from var(--border-color) h s calc(l * 0.8));
271
- }
272
-
273
- @if not($focused-secondary-color) and $focused-border-color {
274
- $focused-secondary-color: hsla(from var(--focused-border-color) h s l / 0.4);
275
- }
276
- } @else {
277
- @if not($hover-border-color) and $border-color {
278
- $hover-border-color: hsl(from var(--border-color) h s calc(l * 0.8));
279
- }
280
-
281
- @if not($focused-border-color) and $hover-border-color {
282
- $focused-border-color: var(--hover-border-color);
283
- }
284
-
285
- @if $variant != 'indigo' {
286
- @if not($focused-secondary-color) and $focused-border-color {
287
- $focused-secondary-color: var(--focused-border-color);
288
- }
289
- }
290
- }
291
-
292
- @if $variant == 'material' {
293
- @if not($focused-bottom-line-color) and $focused-border-color {
294
- $focused-bottom-line-color: var(--focused-border-color);
295
- }
296
- }
297
-
298
- //search input
299
- @if not($placeholder-color) and $search-background {
300
- $placeholder-color: hsla(from adaptive-contrast(var(--search-background)) h s l / 0.9);
301
- }
302
-
303
- @if not($hover-placeholder-color) and $placeholder-color {
304
- $hover-placeholder-color: var(--placeholder-color);
305
- }
306
-
307
- @if $variant == 'indigo' {
308
- @if not($box-background-hover) and $search-background {
309
- $box-background-hover: var(--search-background);
310
- }
311
- } @else {
312
- @if not($idle-secondary-color) and $placeholder-color {
313
- $idle-secondary-color: var(--placeholder-color);
314
- }
315
- }
316
-
317
- @if not($idle-text-color) and $search-background {
318
- $idle-text-color: adaptive-contrast(var(--search-background));
319
- }
320
-
321
- @if not($filled-text-color) and $search-background {
322
- $filled-text-color: adaptive-contrast(var(--search-background));
323
- }
324
-
325
- @if not($filled-text-hover-color) and $search-background {
326
- $filled-text-hover-color: adaptive-contrast(var(--search-background));
327
- }
328
-
329
- @if not($focused-text-color) and $search-background {
330
- $focused-text-color: adaptive-contrast(var(--search-background));
331
- }
332
-
333
- @if not($input-prefix-color) and $search-background {
334
- $input-prefix-color: hsla(from adaptive-contrast(var(--search-background)) h s l / 0.9);
335
- }
336
-
337
- @if not($input-suffix-color) and $search-background {
338
- $input-suffix-color: hsla(from adaptive-contrast(var(--search-background)) h s l / 0.9);
339
- }
340
-
341
- @if $variant != 'indigo' {
342
- @if not($input-prefix-color--filled) and $search-background {
343
- $input-prefix-color--filled: adaptive-contrast(var(--search-background));
344
- }
345
-
346
- @if not($input-prefix-color--focused) and $search-background {
347
- $input-prefix-color--focused: adaptive-contrast(var(--search-background));
348
- }
349
-
350
- @if not($input-suffix-color--filled) and $search-background {
351
- $input-suffix-color--filled: adaptive-contrast(var(--search-background));
352
- }
353
-
354
- @if not($input-suffix-color--focused) and $search-background {
355
- $input-suffix-color--focused: adaptive-contrast(var(--search-background));
356
- }
357
- }
358
-
359
- @if $search-background != transparent {
360
- @if not($search-disabled-background) and $search-background {
361
- $search-disabled-background: hsla(from var(--search-background) h s l / 0.4);
362
- }
363
-
364
- @if not($disabled-placeholder-color) and $search-disabled-background {
365
- $disabled-placeholder-color: adaptive-contrast(var(--search-disabled-background));
366
- }
367
-
368
- @if not($disabled-text-color) and $search-disabled-background {
369
- $disabled-text-color: adaptive-contrast(var(--search-disabled-background));
370
- }
371
- } @else {
372
- @if not($search-disabled-background) and $search-background {
373
- $search-disabled-background: var(--search-background);
374
- }
375
-
376
- @if not($disabled-placeholder-color) and $placeholder-color {
377
- $disabled-placeholder-color: hsla(from var(--placeholder-color) h s l / 0.7);
378
- }
379
-
380
- @if not($disabled-text-color) and $idle-text-color {
381
- $disabled-text-color: hsla(from var(--idle-text-color) h s l / 0.7);
382
- }
383
- }
384
-
385
- @if not($search-resting-shadow) {
386
- $search-resting-shadow: elevation($search-resting-elevation);
387
- }
388
-
389
- @if not($search-hover-shadow) {
390
- $search-hover-shadow: elevation($search-hover-elevation);
391
- }
392
-
393
- @if not($search-disabled-shadow) {
394
- $search-disabled-shadow: elevation($search-disabled-elevation);
395
- }
396
- //end search input
397
-
398
- @if not($input-prefix-color) and $input-suffix-color {
399
- $input-prefix-color: var(--input-suffix-color);
400
- }
401
-
402
- @if not($input-suffix-color) and $input-prefix-color {
403
- $input-suffix-color: var(--input-prefix-color);
404
- }
405
-
406
- @if not($input-prefix-background--filled) and $input-prefix-background {
407
- $input-prefix-background--filled: var(--input-prefix-background);
408
- }
409
-
410
- @if not($input-prefix-background--focused) and $input-prefix-background {
411
- $input-prefix-background--focused: var(--input-prefix-background);
412
- }
413
-
414
- @if not($input-prefix-color) and $input-prefix-background {
415
- $input-prefix-color: adaptive-contrast(var(--input-prefix-background));
416
- }
417
-
418
- @if not($input-prefix-color--filled) and $input-prefix-color {
419
- $input-prefix-color--filled: var(--input-prefix-color);
420
- }
421
-
422
- @if not($input-prefix-color--focused) and $input-prefix-color--filled {
423
- $input-prefix-color--focused: var(--input-prefix-color--filled);
424
- }
425
-
426
- @if not($input-prefix-color--filled) and $input-prefix-background--filled {
427
- $input-prefix-color--filled: adaptive-contrast(var(--input-prefix-background--filled));
428
- }
429
-
430
- @if not($input-prefix-color--focused) and $input-prefix-background--focused {
431
- $input-prefix-color--focused: adaptive-contrast(var(--input-prefix-background--focused));
432
- }
433
-
434
- @if not($input-suffix-background--filled) and $input-suffix-background {
435
- $input-suffix-background--filled: var(--input-suffix-background);
436
- }
437
-
438
- @if not($input-suffix-background--focused) and $input-suffix-background {
439
- $input-suffix-background--focused: var(--input-suffix-background);
440
- }
441
-
442
- @if not($input-suffix-color) and $input-suffix-background {
443
- $input-suffix-color: adaptive-contrast(var(--input-suffix-background));
444
- }
445
-
446
- @if not($input-suffix-color--filled) and $input-suffix-color {
447
- $input-suffix-color--filled: var(--input-suffix-color);
448
- }
449
-
450
- @if not($input-suffix-color--focused) and $input-suffix-color--filled {
451
- $input-suffix-color--focused: var(--input-suffix-color--filled);
452
- }
453
-
454
- @if not($input-suffix-color--filled) and $input-suffix-background--filled {
455
- $input-suffix-color--filled: adaptive-contrast(var(--input-suffix-background--filled));
456
- }
457
-
458
- @if not($input-suffix-color--focused) and $input-suffix-background--focused {
459
- $input-suffix-color--focused: adaptive-contrast(var(--input-suffix-background--focused));
460
- }
461
-
462
- @if not($box-border-radius) {
463
- $box-border-radius: map.get($theme, 'box-border-radius');
464
- }
465
-
466
- @if not($border-border-radius) {
467
- $border-border-radius: map.get($theme, 'border-border-radius');
468
- }
469
-
470
- @if not($search-border-radius) {
471
- $search-border-radius: map.get($theme, 'search-border-radius');
472
- }
473
-
474
- @return extend($theme, (
475
- name: $name,
476
- selector: $selector,
477
- idle-text-color: $idle-text-color,
478
- filled-text-color: $filled-text-color,
479
- filled-text-hover-color: $filled-text-hover-color,
480
- focused-text-color: $focused-text-color,
481
- disabled-text-color: $disabled-text-color,
482
- helper-text-color: $helper-text-color,
483
- box-border-radius: $box-border-radius,
484
- border-border-radius: $border-border-radius,
485
- search-border-radius: $search-border-radius,
486
- idle-secondary-color: $idle-secondary-color,
487
- focused-secondary-color: $focused-secondary-color,
488
- idle-bottom-line-color: $idle-bottom-line-color,
489
- hover-bottom-line-color: $hover-bottom-line-color,
490
- focused-bottom-line-color: $focused-bottom-line-color,
491
- disabled-bottom-line-color: $disabled-bottom-line-color,
492
- border-color: $border-color,
493
- hover-border-color: $hover-border-color,
494
- focused-border-color: $focused-border-color,
495
- disabled-border-color: $disabled-border-color,
496
- box-background: $box-background,
497
- box-background-hover: $box-background-hover,
498
- box-background-focus: $box-background-focus,
499
- box-disabled-background: $box-disabled-background,
500
- border-background: $border-background,
501
- border-disabled-background: $border-disabled-background,
502
- search-background: $search-background,
503
- search-disabled-background: $search-disabled-background,
504
- search-resting-shadow: $search-resting-shadow,
505
- search-hover-shadow: $search-hover-shadow,
506
- search-disabled-shadow: $search-disabled-shadow,
507
- success-secondary-color: $success-secondary-color,
508
- warning-secondary-color: $warning-secondary-color,
509
- error-secondary-color: $error-secondary-color,
510
- success-shadow-color: $success-shadow-color,
511
- error-shadow-color: $error-shadow-color,
512
- placeholder-color: $placeholder-color,
513
- hover-placeholder-color: $hover-placeholder-color,
514
- disabled-placeholder-color: $disabled-placeholder-color,
515
- input-prefix-color: $input-prefix-color,
516
- input-prefix-background: $input-prefix-background,
517
- input-prefix-color--filled: $input-prefix-color--filled,
518
- input-prefix-background--filled: $input-prefix-background--filled,
519
- input-prefix-color--focused: $input-prefix-color--focused,
520
- input-prefix-background--focused: $input-prefix-background--focused,
521
- input-suffix-color: $input-suffix-color,
522
- input-suffix-background: $input-suffix-background,
523
- input-suffix-color--filled: $input-suffix-color--filled,
524
- input-suffix-background--filled: $input-suffix-background--filled,
525
- input-suffix-color--focused: $input-suffix-color--focused,
526
- input-suffix-background--focused: $input-suffix-background--focused,
527
- size: $size,
528
- ));
529
- }
530
-
531
5
  /// @deprecated Use the `css-vars` mixin instead.
532
6
  /// @see {mixin} css-vars
533
7
  /// @param {Map} $theme - The theme used to style the component.
@@ -602,6 +76,13 @@
602
76
  'indigo': 0,
603
77
  ), $variant);
604
78
 
79
+ $hint-min-size: map.get((
80
+ 'material': rem(18px),
81
+ 'fluent': rem(18px),
82
+ 'bootstrap': rem(20px),
83
+ 'indigo': rem(15px),
84
+ ), $variant);
85
+
605
86
  // Base Start
606
87
  %form-group-prefix--upload {
607
88
  padding: 0;
@@ -702,10 +183,6 @@
702
183
  font-family: inherit;
703
184
  }
704
185
 
705
- input[type='file'] {
706
- @include hide-default();
707
- }
708
-
709
186
  textarea {
710
187
  overflow: auto;
711
188
  }
@@ -760,7 +237,7 @@
760
237
  }
761
238
 
762
239
  %form-group-placeholder {
763
- &:has(input:placeholder-shown, textarea:placeholder-shown) {
240
+ &:has(input:placeholder-shown, textarea:placeholder-shown) {
764
241
  %form-group-label {
765
242
  transition: none !important;
766
243
  }
@@ -884,7 +361,7 @@
884
361
  }
885
362
 
886
363
  %form-group-bundle--hover {
887
- cursor: pointer;
364
+ //cursor: pointer;
888
365
 
889
366
  &::after {
890
367
  border-block-end-width: rem(1px);
@@ -946,6 +423,288 @@
946
423
  max-width: inherit;
947
424
  }
948
425
 
426
+ @if $material-theme {
427
+ %form-group-display--file {
428
+ %form-group-file-input {
429
+ padding-inline: rem(4px);
430
+ }
431
+ }
432
+
433
+ %form-group-display--file-border {
434
+ %form-group-input {
435
+ z-index: 2;
436
+ }
437
+
438
+ // We need this otherwise we have to use !important
439
+ %form-group-bundle {
440
+ grid-template-columns: auto auto auto 1fr auto;
441
+
442
+ %form-group-bundle-end {
443
+ grid-area: 1 / 5;
444
+ }
445
+
446
+ &:hover {
447
+ %upload-button {
448
+ border-color: var-get($theme, 'hover-border-color');
449
+ }
450
+ }
451
+ }
452
+
453
+ %upload-button {
454
+ border-block: rem(1px) solid var-get($theme, 'border-color');
455
+
456
+ .igx-button {
457
+ border: none;
458
+ }
459
+ }
460
+ }
461
+
462
+ %form-group-display--file-border-focused {
463
+ %upload-button {
464
+ border-width: rem(2px);
465
+ border-color: var-get($theme, 'focused-border-color');
466
+ }
467
+
468
+ %form-group-bundle {
469
+ &:hover {
470
+ %upload-button {
471
+ border-color: var-get($theme, 'focused-border-color');
472
+ }
473
+ }
474
+ }
475
+ }
476
+
477
+ %form-group-display--file-border-success {
478
+ %upload-button {
479
+ border-color: var-get($theme, 'success-secondary-color');
480
+ }
481
+
482
+ %form-group-bundle {
483
+ &:hover {
484
+ %upload-button {
485
+ border-color: var-get($theme, 'success-secondary-color');
486
+ }
487
+ }
488
+ }
489
+ }
490
+
491
+ %form-group-display--file-border-warning {
492
+ %upload-button {
493
+ border-color: var-get($theme, 'warning-secondary-color');
494
+ }
495
+
496
+ %form-group-bundle {
497
+ &:hover {
498
+ %upload-button {
499
+ border-color: var-get($theme, 'warning-secondary-color');
500
+ }
501
+ }
502
+ }
503
+ }
504
+
505
+ %form-group-display--file-border-error {
506
+ %upload-button {
507
+ border-color: var-get($theme, 'error-secondary-color');
508
+ }
509
+
510
+ %form-group-bundle {
511
+ &:hover {
512
+ %upload-button {
513
+ border-color: var-get($theme, 'error-secondary-color');
514
+ }
515
+ }
516
+ }
517
+ }
518
+ }
519
+
520
+ %form-group-display--file {
521
+ %form-group-bundle {
522
+ grid-template-columns: auto auto auto 1fr auto;
523
+ }
524
+
525
+ %form-group-file-input {
526
+ grid-area: 1/3 / span 1 / span 2;
527
+ flex-grow: 1;
528
+ padding-inline: rem(4px);
529
+ cursor: pointer;
530
+
531
+ @if $variant != 'material' {
532
+ display: flex;
533
+ align-items: center;
534
+
535
+ span {
536
+ transform: revert;
537
+ inset: revert;
538
+ }
539
+ }
540
+ }
541
+
542
+ %igx-input-group__notch {
543
+ grid-area: 1 / 3;
544
+ }
545
+
546
+ %form-group-bundle-end {
547
+ grid-area: 1 / 5;
548
+ }
549
+
550
+ %igx-input-group__filler {
551
+ grid-area: 1 / 4;
552
+ }
553
+
554
+ %form-group-bundle-end {
555
+ grid-area: 1 / 5;
556
+ }
557
+
558
+ %form-group-bundle-main {
559
+ display: contents;
560
+ }
561
+
562
+ %form-group-input {
563
+ grid-column: 2 / -2;
564
+ grid-row: 1 / -1;
565
+ border: none;
566
+ inset: 0;
567
+ width: 100%;
568
+ appearance: none;
569
+ opacity: 0;
570
+ z-index: 2;
571
+ cursor: pointer;
572
+ }
573
+
574
+ ::file-selector-button {
575
+ cursor: pointer;
576
+ }
577
+ }
578
+
579
+ %upload-button {
580
+ display: flex;
581
+ align-items: center;
582
+ grid-area: 1 / 2;
583
+ pointer-events: none;
584
+ height: var-get($theme, 'size');
585
+ cursor: pointer;
586
+ overflow: hidden;
587
+ }
588
+
589
+ %form-group-display--bootstrap-file {
590
+ %form-group-bundle-start,
591
+ %form-group-bundle-end {
592
+ [igxPrefix],
593
+ igx-prefix {
594
+ height: var-get($theme, 'size');
595
+ }
596
+ }
597
+ }
598
+
599
+ %bootstrap-upload-button {
600
+ border: rem(1px) solid var-get($theme, 'border-color');
601
+ border-inline-end: 0;
602
+
603
+ igx-button {
604
+ border: 0;
605
+ }
606
+ }
607
+
608
+ %bootstrap-file-disabled-upload-button {
609
+ border-color: var-get($theme, 'disabled-border-color');
610
+ }
611
+
612
+ %bootstrap-file-focused,
613
+ %bootstrap-file-valid,
614
+ %bootstrap-file-warning,
615
+ %bootstrap-file-invalid,
616
+ {
617
+ %form-group-bundle {
618
+ border-radius: var-get($theme, 'box-border-radius');
619
+ transition: box-shadow .15s ease-out, border .15s ease-out;
620
+
621
+ &:hover {
622
+ %form-group-file-input {
623
+ box-shadow: none;
624
+ }
625
+ }
626
+ }
627
+
628
+ %form-group-file-input {
629
+ box-shadow: none;
630
+ }
631
+ }
632
+
633
+ %bootstrap-file-focused {
634
+ %form-group-bundle-start,
635
+ %form-group-bundle-end,
636
+ %upload-button {
637
+ border-color: var-get($theme, 'focused-border-color');
638
+ }
639
+
640
+ %form-group-bundle {
641
+ box-shadow: 0 0 0 rem(4px) var-get($theme, 'focused-secondary-color');
642
+ }
643
+ }
644
+
645
+ %bootstrap-file-valid {
646
+ %form-group-bundle-start,
647
+ %form-group-bundle-end,
648
+ %upload-button {
649
+ border-color: var-get($theme, 'success-secondary-color');
650
+ }
651
+ }
652
+
653
+ %bootstrap-file-warning {
654
+ %form-group-bundle-start,
655
+ %form-group-bundle-end,
656
+ %upload-button {
657
+ border-color: var-get($theme, 'warning-secondary-color');
658
+ }
659
+ }
660
+
661
+ %bootstrap-file-invalid {
662
+ %form-group-bundle-start,
663
+ %form-group-bundle-end,
664
+ %upload-button {
665
+ border-color: var-get($theme, 'error-secondary-color');
666
+ }
667
+ }
668
+
669
+ %bootstrap-file-valid-focused {
670
+ %form-group-bundle {
671
+ box-shadow: 0 0 0 rem(4px) var-get($theme, 'success-shadow-color');
672
+ }
673
+ }
674
+
675
+ %bootstrap-file-warning-focused {
676
+ %form-group-bundle {
677
+ box-shadow: 0 0 0 rem(4px) color($color: 'warn', $variant: '500', $opacity: .38);
678
+ }
679
+ }
680
+
681
+ %bootstrap-file-invalid-focused {
682
+ %form-group-bundle {
683
+ box-shadow: 0 0 0 rem(4px) var-get($theme, 'error-shadow-color');
684
+ }
685
+ }
686
+
687
+ @if $variant == 'bootstrap' {
688
+ %form-group-display--file-focused {
689
+ %form-group-bundle-start,
690
+ %form-group-bundle-end,
691
+ %upload-button {
692
+ border-color: var-get($theme, 'focused-border-color');
693
+ }
694
+ }
695
+ }
696
+
697
+ .igx-input-group--bootstrap:not(.igx-input-group--prefixed) {
698
+ .igx-input-group__upload-button {
699
+ border-radius: var-get($theme, 'box-border-radius') 0 0 var-get($theme, 'box-border-radius');
700
+ }
701
+
702
+ .igx-input-group__file-input {
703
+ border-start-start-radius: 0;
704
+ border-end-start-radius: 0;
705
+ }
706
+ }
707
+
949
708
  %form-group-bundle--box {
950
709
  // padding 0 is needed here because of the search variant
951
710
  padding: 0 !important;
@@ -1521,11 +1280,13 @@
1521
1280
  overflow: hidden;
1522
1281
  padding-block-start: $input-top-padding;
1523
1282
  padding-block-end: $input-bottom-padding;
1524
- height: calc(var-get($theme, 'size') - 2px);
1283
+ height: var-get($theme, 'size');
1284
+ max-height: 100%;
1525
1285
  color: var-get($theme, 'filled-text-color');
1526
1286
 
1527
1287
  span {
1528
1288
  @include ellipsis();
1289
+
1529
1290
  position: relative;
1530
1291
  display: inline-block;
1531
1292
  width: inherit;
@@ -1540,22 +1301,6 @@
1540
1301
  }
1541
1302
  }
1542
1303
 
1543
- %form-group-clear-icon {
1544
- &:focus {
1545
- background-color: color($color: 'primary', $variant: 500);
1546
- color: contrast-color($color: 'primary', $variant: 600);
1547
-
1548
- @if $variant == 'material' {
1549
- background-color: transparent;
1550
- color: color($color: 'secondary', $variant: 500);
1551
- }
1552
-
1553
- @if $variant == 'bootstrap' {
1554
- color: contrast-color($color: 'primary', $variant: 600);
1555
- }
1556
- }
1557
- }
1558
-
1559
1304
  // This is a hack that removes the autofill background and it's essential,
1560
1305
  // otherwise the background is on top of the floating label in material theme.
1561
1306
  // The !important flag is because bootstrap theme(and potentially feature themes) is overriding the transition delay.
@@ -1567,18 +1312,12 @@
1567
1312
  &:autofill,
1568
1313
  &:autofill:hover,
1569
1314
  &:autofill:focus,
1570
- &:autofill:active, {
1315
+ &:autofill:active {
1571
1316
  -webkit-transition-delay: 99999s !important;
1572
1317
  transition-delay: 99999s !important;
1573
1318
  }
1574
1319
  }
1575
1320
 
1576
- %edge-clear-icon-fix {
1577
- &::-ms-clear {
1578
- display: none;
1579
- }
1580
- }
1581
-
1582
1321
  %form-group-file-input-indigo {
1583
1322
  padding-block: 0;
1584
1323
  }
@@ -1611,6 +1350,14 @@
1611
1350
  }
1612
1351
  }
1613
1352
 
1353
+ %form-group-file-input--disabled {
1354
+ cursor: default;
1355
+
1356
+ &::placeholder {
1357
+ color: var-get($theme, 'disabled-placeholder-color');
1358
+ }
1359
+ }
1360
+
1614
1361
  %form-group-textarea {
1615
1362
  --textarea-size: #{sizable(
1616
1363
  rem(82px, map.get($base-scale-size, 'compact')),
@@ -1800,10 +1547,13 @@
1800
1547
  }
1801
1548
 
1802
1549
  %form-group-helper {
1550
+ --ig-caption-margin-top: #{$hint-spacing-block};
1551
+ --ig-caption-margin-bottom: 0;
1552
+
1803
1553
  color: var-get($theme, 'helper-text-color');
1804
1554
  position: relative;
1805
- display: flex;
1806
- padding-block-start: $hint-spacing-block;
1555
+ display: grid;
1556
+ grid-auto-rows: minmax($hint-min-size, auto);
1807
1557
  padding-inline: $hint-spacing-inline;
1808
1558
 
1809
1559
  justify-content: space-between;
@@ -1817,11 +1567,7 @@
1817
1567
  }
1818
1568
 
1819
1569
  &:empty {
1820
- @if $variant == 'fluent' {
1821
- padding: 0;
1822
- } @else {
1823
- display: none;
1824
- }
1570
+ display: none;
1825
1571
  }
1826
1572
  }
1827
1573
 
@@ -1943,13 +1689,6 @@
1943
1689
  border-bottom-style: solid;
1944
1690
  }
1945
1691
  }
1946
-
1947
- %indigo-upload-button {
1948
- [igxButton] {
1949
- min-height: 0;
1950
- height: calc(100% - #{rem(8px)});
1951
- }
1952
- }
1953
1692
  // INDIGO END
1954
1693
 
1955
1694
  // ==============================================
@@ -2045,72 +1784,74 @@
2045
1784
 
2046
1785
  %form-group-bundle--fluent {
2047
1786
  --min-width: #{sizable(rem(4px), rem(6px), rem(8px))};
1787
+ --_fluent-input-border-size: #{rem(1px)};
2048
1788
 
2049
1789
  min-height: var-get($theme, 'size');
2050
1790
  padding: 0;
2051
- border: rem(1px) solid var-get($theme, 'border-color');
2052
1791
  background: var-get($theme, 'border-background');
2053
1792
  align-items: stretch;
2054
- overflow: hidden;
2055
-
2056
- @if $variant == 'fluent' {
2057
- border-radius: var-get($theme, 'border-border-radius');
2058
- }
2059
-
2060
- // Those focus styles are needed since when we focus the button inside
2061
- // the file type input the class .igx-input-group--focused is not added but the input is focused.
2062
- &:focus,
2063
- &:focus-within {
2064
- %form-group-bundle-start {
2065
- margin-block-start: rem(-1px);
2066
- margin-inline-start: rem(-1px);
2067
- }
2068
-
2069
- %form-group-bundle-end {
2070
- margin-block-start: rem(-1px);
2071
- margin-inline-end: rem(-1px);
2072
- }
2073
-
2074
- %form-group-bundle-start:empty + %form-group-bundle-main,
2075
- %form-group-bundle-end:empty + %form-group-bundle-main {
2076
- margin-inline-start: rem(-1px);
2077
- }
1793
+ overflow: visible;
1794
+ border-radius: var-get($theme, 'border-border-radius');
1795
+ position: relative;
1796
+ border: rem(1px) solid transparent;
2078
1797
 
2079
- %form-group-bundle-main {
2080
- margin-block-start: rem(-1px);
2081
- }
1798
+ &::before {
1799
+ content: '';
1800
+ position: absolute;
1801
+ width: calc(100% + var(--_fluent-input-border-size) * 2);
1802
+ height: calc(100% + var(--_fluent-input-border-size) * 2);
1803
+ pointer-events: none;
1804
+ user-select: none;
1805
+ inset: calc(var(--_fluent-input-border-size) * -1);
1806
+ z-index: 1;
1807
+ box-shadow: inset 0 0 0 var(--_fluent-input-border-size) var-get($theme, 'border-color');
1808
+ border-radius: inherit;
2082
1809
  }
2083
1810
  }
2084
1811
 
2085
1812
  %form-group-bundle--fluent--hover {
2086
- border-color: var-get($theme, 'hover-border-color');
1813
+ &::before {
1814
+ box-shadow: inset 0 0 0 var(--_fluent-input-border-size) var-get($theme, 'hover-border-color');
1815
+ }
2087
1816
  }
2088
1817
 
2089
1818
  %form-group-bundle--fluent--focus {
2090
- border-color: var-get($theme, 'focused-border-color');
2091
- border-width: rem(2px);
1819
+ --_fluent-input-border-size: #{rem(2px)};
1820
+
1821
+ &::before {
1822
+ box-shadow: inset 0 0 0 var(--_fluent-input-border-size) var-get($theme, 'focused-border-color');
1823
+ }
2092
1824
 
2093
1825
  &:hover {
2094
- border-color: var-get($theme, 'focused-border-color');
1826
+ &::before {
1827
+ box-shadow: inset 0 0 0 var(--_fluent-input-border-size) var-get($theme, 'focused-border-color');
1828
+ }
2095
1829
  }
2096
1830
  }
2097
1831
 
2098
1832
  %form-group-bundle-error--fluent,
2099
1833
  %form-group-bundle-error--fluent--hover,
2100
1834
  %form-group-bundle-error--fluent--focus {
2101
- border-color: var-get($theme, 'error-secondary-color');
1835
+ &::before {
1836
+ box-shadow: inset 0 0 0 var(--_fluent-input-border-size) var-get($theme, 'error-secondary-color');
1837
+ }
2102
1838
  }
2103
1839
 
2104
1840
  %form-group-bundle-success--fluent,
2105
1841
  %form-group-bundle-success--fluent--hover,
2106
1842
  %form-group-bundle-success--fluent--focus {
2107
- border-color: var-get($theme, 'success-secondary-color');
1843
+ &::before {
1844
+ box-shadow: inset 0 0 0 var(--_fluent-input-border-size) var-get($theme, 'success-secondary-color');
1845
+ }
2108
1846
  }
2109
1847
 
2110
1848
  %form-group-bundle--fluent--hover-disabled,
2111
1849
  %form-group-bundle--fluent-disabled {
2112
- border-color: var-get($theme, 'disabled-border-color');
2113
1850
  background: var-get($theme, 'border-disabled-background');
1851
+
1852
+ &::before {
1853
+ box-shadow: inset 0 0 0 var(--_fluent-input-border-size) var-get($theme, 'disabled-border-color');
1854
+ }
2114
1855
  }
2115
1856
 
2116
1857
  %form-group-bundle-main--fluent {
@@ -2118,27 +1859,6 @@
2118
1859
  cursor: default;
2119
1860
  }
2120
1861
 
2121
- @if $fluent-theme {
2122
- %form-group-bundle-start--fluent--focused {
2123
- margin-block-start: rem(-1px);
2124
- margin-inline-start: rem(-1px);
2125
- }
2126
-
2127
- %form-group-bundle-end--fluent--focused {
2128
- margin-block-start: rem(-1px);
2129
- margin-inline-end: rem(-1px);
2130
- }
2131
-
2132
- %form-group-bundle-start--fluent--focused:empty + %form-group-bundle-main--fluent--focused,
2133
- %form-group-bundle-end--fluent--focused:empty + %form-group-bundle-main--fluent--focused {
2134
- margin-inline-start: rem(-1px);
2135
- }
2136
-
2137
- %form-group-bundle-main--fluent--focused {
2138
- margin-block-start: rem(-1px);
2139
- }
2140
- }
2141
-
2142
1862
  %form-group-bundle-textarea-start--fluent,
2143
1863
  %form-group-bundle-textarea-end--fluent {
2144
1864
  &:empty {
@@ -2155,6 +1875,10 @@
2155
1875
  border: none;
2156
1876
  }
2157
1877
 
1878
+ %fluent-file-input {
1879
+ padding-inline: 0;
1880
+ }
1881
+
2158
1882
  %indigo-textarea {
2159
1883
  padding-block: rem(6px);
2160
1884
  padding-inline: pad-inline(rem(2px), rem(4px), rem(6px));
@@ -2180,6 +1904,8 @@
2180
1904
  color: var-get($theme, 'idle-secondary-color');
2181
1905
 
2182
1906
  @if $variant == 'fluent' {
1907
+ --ig-subtitle-2-line-height: rem(16px);
1908
+
2183
1909
  margin-block-end: rem(5px);
2184
1910
  } @else {
2185
1911
  margin-block-end: rem(4px);
@@ -2216,10 +1942,6 @@
2216
1942
  transform: translateY(0) scale(1);
2217
1943
  }
2218
1944
 
2219
- %form-group-helper--textarea--fluent--focused {
2220
- margin-block-start: rem(-1px);
2221
- }
2222
-
2223
1945
  %fluent-placeholder-label {
2224
1946
  transform: translateY(0) scale(1);
2225
1947
  }
@@ -2261,9 +1983,6 @@
2261
1983
  }
2262
1984
  }
2263
1985
 
2264
- %fluent-upload-button {
2265
- padding: 0;
2266
- }
2267
1986
  // FLUENT END
2268
1987
 
2269
1988
  // ==============================================
@@ -2296,6 +2015,39 @@
2296
2015
  };
2297
2016
  }
2298
2017
  }
2018
+
2019
+ .igx-input-group__clear-icon + igx-suffix,
2020
+ .igx-input-group__clear-icon + [igxPrefix] {
2021
+ border-inline-start: rem(1px) solid var-get($theme, 'border-color');
2022
+ }
2023
+ }
2024
+
2025
+ %form-group-display--bootstrap-suffixed-focused {
2026
+ .igx-input-group__clear-icon + igx-suffix,
2027
+ .igx-input-group__clear-icon + [igxPrefix] {
2028
+ border-color: var-get($theme, 'focused-border-color');
2029
+ }
2030
+ }
2031
+
2032
+ %form-group-display--bootstrap-suffixed-valid {
2033
+ .igx-input-group__clear-icon + igx-suffix,
2034
+ .igx-input-group__clear-icon + [igxPrefix] {
2035
+ border-color: var-get($theme, 'success-secondary-color');
2036
+ }
2037
+ }
2038
+
2039
+ %form-group-display--bootstrap-suffixed-form-group-display--bootstrap-suffixed-warning {
2040
+ .igx-input-group__clear-icon + igx-suffix,
2041
+ .igx-input-group__clear-icon + [igxPrefix] {
2042
+ border-color: var-get($theme, 'warning-secondary-color');
2043
+ }
2044
+ }
2045
+
2046
+ %form-group-display--bootstrap-suffixed-invalid {
2047
+ .igx-input-group__clear-icon + igx-suffix,
2048
+ .igx-input-group__clear-icon + [igxPrefix] {
2049
+ border-color: var-get($theme, 'error-secondary-color');
2050
+ }
2299
2051
  }
2300
2052
 
2301
2053
  %form-group-display--disabled-bootstrap {
@@ -2405,7 +2157,9 @@
2405
2157
  %bootstrap-input {
2406
2158
  height: auto;
2407
2159
  line-height: 1.5;
2160
+ grid-area: 1 / 2;
2408
2161
  margin: 0;
2162
+ z-index: 2;
2409
2163
  font-size: pad(
2410
2164
  map.get($bootstrap-font-size, 'compact'),
2411
2165
  map.get($bootstrap-font-size, 'cosy'),
@@ -2445,15 +2199,24 @@
2445
2199
  map.get($bootstrap-inline-padding, 'cosy'),
2446
2200
  map.get($bootstrap-inline-padding, 'comfortable')
2447
2201
  );
2448
- grid-area: 1 / 2 / auto / auto;
2449
2202
  border-radius: var-get($theme, 'box-border-radius');
2450
- z-index: 1;
2203
+
2451
2204
  }
2452
2205
 
2453
2206
  %bootstrap-file-input {
2454
2207
  height: inherit;
2455
2208
  }
2456
2209
 
2210
+ %bootstrap-input-file {
2211
+ grid-column: 2 / -2;
2212
+ grid-row: 1 / -1;
2213
+ height: var-get($theme, 'size');
2214
+ }
2215
+
2216
+ %bootstrap-bundle-end {
2217
+ grid-area: 1 / 5;
2218
+ }
2219
+
2457
2220
  %bootstrap-input--focus {
2458
2221
  border: rem(1px) solid var-get($theme, 'focused-border-color');
2459
2222
  box-shadow: 0 0 0 rem(4px) var-get($theme, 'focused-secondary-color');
@@ -2471,6 +2234,11 @@
2471
2234
  }
2472
2235
  }
2473
2236
 
2237
+ %bootstrap-input--warning {
2238
+ border: rem(1px) solid var-get($theme, 'warning-secondary-color');
2239
+ box-shadow: 0 0 0 rem(4px) color($color: 'warn', $variant: '500', $opacity: .38);
2240
+ }
2241
+
2474
2242
  %bootstrap-input--error {
2475
2243
  border: rem(1px) solid var-get($theme, 'error-secondary-color');
2476
2244
 
@@ -2501,6 +2269,11 @@
2501
2269
  box-shadow: none;
2502
2270
  }
2503
2271
 
2272
+ %bootstrap-file-input--disabled {
2273
+ border: rem(1px) solid var-get($theme, 'disabled-border-color');
2274
+ box-shadow: none;
2275
+ }
2276
+
2504
2277
  %bootstrap-input--search {
2505
2278
  transform: translateY(0);
2506
2279
  }
@@ -2511,16 +2284,6 @@
2511
2284
  border-color: var-get($theme, 'disabled-border-color');
2512
2285
  color: var-get($theme, 'disabled-text-color');
2513
2286
  }
2514
-
2515
- // Upload button for file type input
2516
- %bootstrap-upload-button {
2517
- padding: 0;
2518
-
2519
- [igxButton] {
2520
- min-height: 0;
2521
- height: calc(100% - #{rem(8px)});
2522
- }
2523
- }
2524
2287
  }
2525
2288
 
2526
2289
  /// Adds typography styles for the igx-input-group component.
@@ -2544,9 +2307,7 @@
2544
2307
  }
2545
2308
 
2546
2309
  %form-group-helper {
2547
- @include type-style($helper-text) {
2548
- margin: 0;
2549
- }
2310
+ @include type-style($helper-text);
2550
2311
  }
2551
2312
 
2552
2313
  %form-group-prefix,