diff --git a/src/components/combo/themes/shared/combo.bootstrap.scss b/src/components/combo/themes/shared/combo.bootstrap.scss index c97787800..3bb469c75 100644 --- a/src/components/combo/themes/shared/combo.bootstrap.scss +++ b/src/components/combo/themes/shared/combo.bootstrap.scss @@ -17,6 +17,13 @@ $dropdown-theme: dropdown-theme.$bootstrap; grid-auto-rows: minmax(rem(20px), auto); margin-block-start: rem(4px); } + + ::slotted([slot='suffix']), + ::slotted([slot='prefix']) { + height: 100%; + display: flex; + align-items: center; + } } [part='list-wrapper'] { @@ -128,4 +135,25 @@ $dropdown-theme: dropdown-theme.$bootstrap; color: inherit; } } + + ::slotted([slot='suffix']), + [part|='toggle'] { + border-inline-end: rem(1px) solid var(--disabled-border-color); + } + + ::slotted([slot='prefix']) { + border-inline-start: rem(1px) solid var(--disabled-border-color); + } } + +:host(:not([disabled])), +:host(:not(:disabled)) { + ::slotted([slot='suffix']), + [part|='toggle'] { + border-inline-end: rem(1px) solid var(--border-color); + } + + ::slotted([slot='prefix']) { + border-inline-start: rem(1px) solid var(--border-color); + } +} \ No newline at end of file diff --git a/src/components/combo/themes/shared/combo.common.scss b/src/components/combo/themes/shared/combo.common.scss index c618b2c1c..178cb840d 100644 --- a/src/components/combo/themes/shared/combo.common.scss +++ b/src/components/combo/themes/shared/combo.common.scss @@ -94,3 +94,8 @@ $dropdown-theme: dropdown-theme.$material; } } } + +::slotted([slot='suffix']), +::slotted([slot='prefix']) { + padding-inline: var(--affix-padding); +} \ No newline at end of file diff --git a/src/components/date-range-picker/themes/shared/date-range-picker.bootstrap.scss b/src/components/date-range-picker/themes/shared/date-range-picker.bootstrap.scss index 522d6b5ab..804df06dc 100644 --- a/src/components/date-range-picker/themes/shared/date-range-picker.bootstrap.scss +++ b/src/components/date-range-picker/themes/shared/date-range-picker.bootstrap.scss @@ -59,3 +59,29 @@ $theme: $bootstrap; [part='actions'] { min-height: #{sizable(rem(47px), rem(54px), rem(64px))}; } + +:host(:not([disabled])), +:host(:not(:disabled)) { + ::slotted([slot^='prefix-']), + [part|='calendar-icon'] { + border-inline-start: rem(1px) solid var(--border-color); + } + + ::slotted([slot^='suffix-']), + [part|='clear-icon'] { + border-inline-end: rem(1px) solid var(--border-color); + } +} + +:host(:disabled), +:host([disabled]) { + ::slotted([slot^='prefix-']), + [part|='calendar-icon'] { + border-inline-start: rem(1px) solid var(--disabled-border-color); + } + + ::slotted([slot^='suffix-']), + [part|='clear-icon'] { + border-inline-end: rem(1px) solid var(--disabled-border-color); + } +} \ No newline at end of file diff --git a/src/components/date-range-picker/themes/shared/date-range-picker.common.scss b/src/components/date-range-picker/themes/shared/date-range-picker.common.scss index c5b8eb35f..434d76216 100644 --- a/src/components/date-range-picker/themes/shared/date-range-picker.common.scss +++ b/src/components/date-range-picker/themes/shared/date-range-picker.common.scss @@ -129,3 +129,8 @@ igc-icon, ::slotted(igc-icon) { --component-size: var(--input-size); } + +::slotted([slot|='suffix']), +::slotted([slot|='prefix']) { + padding-inline: var(--affix-padding); +} \ No newline at end of file diff --git a/src/components/file-input/themes/shared/file-input.bootstrap.scss b/src/components/file-input/themes/shared/file-input.bootstrap.scss index 829980291..33fc75de4 100644 --- a/src/components/file-input/themes/shared/file-input.bootstrap.scss +++ b/src/components/file-input/themes/shared/file-input.bootstrap.scss @@ -80,6 +80,14 @@ $theme-file-input: file-input.$bootstrap; [part~='file-names'] { border-color: var-get($theme, 'error-secondary-color'); } + + [part~='prefixed'] ::slotted([slot='prefix']) { + border-inline-start-color: var(--error-secondary-color); + } + + [part~='suffixed'] ::slotted([slot='suffix']) { + border-inline-end-color: var(--error-secondary-color); + } } :host(:not([disabled]):state(ig-invalid):focus-within) { diff --git a/src/components/input/themes/shared/input.bootstrap.scss b/src/components/input/themes/shared/input.bootstrap.scss index d62dca675..05c3cfc1c 100644 --- a/src/components/input/themes/shared/input.bootstrap.scss +++ b/src/components/input/themes/shared/input.bootstrap.scss @@ -10,6 +10,7 @@ $theme: $bootstrap; --input-font: #{sizable(rem(16px), rem(16px), rem(20px))}; --input-border-color: #{var-get($theme, 'border-color')}; --input-height: #{var-get($theme, 'size')}; + --affix-padding: #{pad-inline(rem(8px), rem(12px), rem(14px))}; ::part(helper-text) { @include type-style('body-2'); @@ -18,6 +19,14 @@ $theme: $bootstrap; grid-auto-rows: minmax(rem(20px), auto); margin-block-start: rem(4px); } + + [part='prefix'] { + border-inline-start-width: 0; + } + + [part='suffix'] { + border-inline-end-width: 0; + } } [part~='container'] { @@ -87,7 +96,6 @@ $theme: $bootstrap; align-items: center; width: max-content; height: 100%; - padding-inline: pad-inline(8px, 12px, 16px); } [part='prefix'], @@ -211,3 +219,25 @@ $theme: $bootstrap; color: var-get($theme, 'disabled-text-color'); } } + +:host(:not(:disabled, [role='combobox'])), +:host(:not([disabled], [role='combobox'])) { + ::slotted([slot='suffix']) { + border-inline-end: rem(1px) solid var(--border-color); + } + + ::slotted([slot='prefix']) { + border-inline-start: rem(1px) solid var(--border-color); + } +} + +:host(:disabled:not([role='combobox'])), +:host([disabled]:not([role='combobox'])) { + ::slotted([slot='suffix']) { + border-inline-end: rem(1px) solid var(--disabled-border-color); + } + + ::slotted([slot='prefix']) { + border-inline-start: rem(1px) solid var(--disabled-border-color); + } +} \ No newline at end of file diff --git a/src/components/input/themes/shared/input.common.scss b/src/components/input/themes/shared/input.common.scss index 925827d9e..b9a8c9c99 100644 --- a/src/components/input/themes/shared/input.common.scss +++ b/src/components/input/themes/shared/input.common.scss @@ -81,3 +81,14 @@ $theme: $base; ::part(helper-text) { display: grid; } + +[name='suffix']::slotted(:is([part|='toggle'], [part|='clear'])) { + padding-inline: var(--affix-padding); +} + +:host(:not([role='combobox'])) { + ::slotted([slot='suffix']), + ::slotted([slot='prefix']) { + padding-inline: var(--affix-padding); + } +} \ No newline at end of file diff --git a/src/components/input/themes/shared/input.fluent.scss b/src/components/input/themes/shared/input.fluent.scss index 5ced07c01..a957f7c34 100644 --- a/src/components/input/themes/shared/input.fluent.scss +++ b/src/components/input/themes/shared/input.fluent.scss @@ -8,6 +8,7 @@ $theme: $fluent; --input-size: var(--component-size); --helper-text-top-spacer: rem(5px); --input-border-size: #{rem(1px)}; + --affix-padding: #{pad-inline(rem(8px), rem(12px), rem(16px))}; [part='prefix'], [part='suffix'] { @@ -34,7 +35,6 @@ $theme: $fluent; align-items: center; width: max-content; height: 100%; - padding-inline: pad-inline(8px, 12px, 16px); } [part='prefix'] { diff --git a/src/components/input/themes/shared/input.indigo.scss b/src/components/input/themes/shared/input.indigo.scss index d8e2a3577..9002d7785 100644 --- a/src/components/input/themes/shared/input.indigo.scss +++ b/src/components/input/themes/shared/input.indigo.scss @@ -10,13 +10,13 @@ $transition-duration: .25s; width: max-content; align-items: center; height: calc(100% - #{rem(1px)}); - padding-inline: pad-inline(2px, 4px, 6px); } :host { --component-size: var(--ig-size, #{var-get($theme, 'default-size')}); --input-size: var(--component-size); --input-icon: #{sizable(rem(14px), rem(16px), rem(18px))}; + --affix-padding: #{pad-inline(rem(2px), rem(4px), rem(6px))}; ::slotted(igc-icon) { --size: var(--input-icon) !important; diff --git a/src/components/input/themes/shared/input.material.scss b/src/components/input/themes/shared/input.material.scss index 6ec2fa931..6e9f19092 100644 --- a/src/components/input/themes/shared/input.material.scss +++ b/src/components/input/themes/shared/input.material.scss @@ -20,12 +20,12 @@ $fs: rem(16px) !default; align-items: center; width: max-content; height: 100%; - padding-inline: pad-inline(rem(12px), rem(14px), rem(16px)); } :host { --component-size: var(--ig-size, #{var-get($theme, 'default-size')}); --input-size: var(--component-size); + --affix-padding: #{pad-inline(rem(12px), rem(14px), rem(16px))}; input:placeholder-shown + [part='notch'] { @extend %floated-styles; diff --git a/src/components/select/themes/shared/select.bootstrap.scss b/src/components/select/themes/shared/select.bootstrap.scss index 7f7eef4f6..c12e228db 100644 --- a/src/components/select/themes/shared/select.bootstrap.scss +++ b/src/components/select/themes/shared/select.bootstrap.scss @@ -17,6 +17,13 @@ $input-theme: input-theme.$bootstrap; grid-auto-rows: minmax(rem(20px), auto); margin-block-start: rem(4px); } + + ::slotted([slot='suffix']), + ::slotted([slot='prefix']) { + height: 100%; + display: flex; + align-items: center; + } } [part='base'] { @@ -45,4 +52,25 @@ $input-theme: input-theme.$bootstrap; color: inherit; } } + + ::slotted([slot='suffix']), + [part|='toggle'] { + border-inline-end: rem(1px) solid var(--disabled-border-color); + } + + ::slotted([slot='prefix']) { + border-inline-start: rem(1px) solid var(--disabled-border-color); + } +} + +:host(:not([disabled])), +:host(:not(:disabled)) { + ::slotted([slot='suffix']), + [part|='toggle'] { + border-inline-end: rem(1px) solid var(--border-color); + } + + ::slotted([slot='prefix']) { + border-inline-start: rem(1px) solid var(--border-color); + } } diff --git a/src/components/select/themes/shared/select.common.scss b/src/components/select/themes/shared/select.common.scss index ac0f97fb3..612db6b33 100644 --- a/src/components/select/themes/shared/select.common.scss +++ b/src/components/select/themes/shared/select.common.scss @@ -65,3 +65,8 @@ $dropdown-theme: dropdown-theme.$material; color: var-get($theme, 'error-secondary-color'); } } + +::slotted([slot='suffix']), +::slotted([slot='prefix']) { + padding-inline: var(--affix-padding); +} \ No newline at end of file diff --git a/src/components/textarea/themes/shared/textarea.bootstrap.scss b/src/components/textarea/themes/shared/textarea.bootstrap.scss index 7c2698595..2eee77e0d 100644 --- a/src/components/textarea/themes/shared/textarea.bootstrap.scss +++ b/src/components/textarea/themes/shared/textarea.bootstrap.scss @@ -7,6 +7,7 @@ $theme: $bootstrap; @include type-style('body-1'); --component-size: var(--ig-size, #{var-get($theme, 'default-size')}); + --affix-padding: #{pad-inline(rem(10px), rem(12px), rem(12px))}; ::part(helper-text) { @include type-style('body-2'); @@ -15,6 +16,13 @@ $theme: $bootstrap; grid-auto-rows: minmax(rem(20px), auto); margin-block-start: rem(4px); } + + ::slotted([slot="prefix"]), + ::slotted([slot="suffix"]) { + height: 100%; + display: flex; + align-items: center; + } } [part~='label'] { @@ -30,11 +38,11 @@ $theme: $bootstrap; [part~='prefixed'] { [part~='prefix'] { - border-width: rem(1px); + border-block-width: rem(1px); border-style: solid; border-color: var-get($theme, 'border-color'); overflow: hidden; - border-inline-end-width: 0; + border-inline-width: 0; border: { start: { start-radius: var-get($theme, 'border-border-radius'); @@ -59,11 +67,11 @@ $theme: $bootstrap; [part~='suffixed'] { [part~='suffix'] { - border-width: rem(1px); + border-block-width: rem(1px); border-style: solid; border-color: var-get($theme, 'border-color'); overflow: hidden; - border-inline-start-width: 0; + border-inline-width: 0; border: { start: { end-radius: var-get($theme, 'border-border-radius'); @@ -157,4 +165,23 @@ textarea { border: rem(1px) solid var-get($theme, 'disabled-border-color'); box-shadow: none; } + + ::slotted([slot='suffix']) { + border-inline-end: rem(1px) solid var(--disabled-border-color); + } + + ::slotted([slot='prefix']) { + border-inline-start: rem(1px) solid var(--disabled-border-color); + } +} + +:host(:not([disabled])), +:host(:not(:disabled)) { + ::slotted([slot='suffix']) { + border-inline-end: rem(1px) solid var(--border-color); + } + + ::slotted([slot='prefix']) { + border-inline-start: rem(1px) solid var(--border-color); + } } diff --git a/src/components/textarea/themes/shared/textarea.common.scss b/src/components/textarea/themes/shared/textarea.common.scss index e710a2662..a6c8d7eb6 100644 --- a/src/components/textarea/themes/shared/textarea.common.scss +++ b/src/components/textarea/themes/shared/textarea.common.scss @@ -95,3 +95,8 @@ textarea { color: var-get($theme, 'disabled-text-color'); } } + +::slotted([slot='suffix']), +::slotted([slot='prefix']) { + padding-inline: var(--affix-padding); +} diff --git a/src/components/textarea/themes/shared/textarea.fluent.scss b/src/components/textarea/themes/shared/textarea.fluent.scss index 79585945a..692596e64 100644 --- a/src/components/textarea/themes/shared/textarea.fluent.scss +++ b/src/components/textarea/themes/shared/textarea.fluent.scss @@ -9,6 +9,7 @@ $border-size: rem(1px); --component-size: var(--ig-size, #{var-get($theme, 'default-size')}); --textarea-border-size: #{rem(1px)}; + --affix-padding: #{pad-inline(rem(8px), rem(12px), rem(16px))}; ::part(helper-text) { @include type-style('caption'); diff --git a/src/components/textarea/themes/shared/textarea.indigo.scss b/src/components/textarea/themes/shared/textarea.indigo.scss index 47fc91271..a39ec36bd 100644 --- a/src/components/textarea/themes/shared/textarea.indigo.scss +++ b/src/components/textarea/themes/shared/textarea.indigo.scss @@ -9,6 +9,7 @@ $theme: $indigo; --component-size: var(--ig-size, #{var-get($theme, 'default-size')}); --input-icon: #{sizable(rem(14px), rem(16px), rem(18px))}; + --affix-padding: #{pad-inline(rem(2px), rem(4px), rem(6px))}; ::slotted(igc-icon) { --size: var(--input-icon) !important; @@ -106,11 +107,6 @@ textarea { } } -[part~='prefixed'] [part='prefix'], -[part~='suffixed'] [part='suffix'] { - padding-inline: pad-inline(rem(2px), rem(4px), rem(6px)); -} - [part~='prefixed'] textarea { padding-inline-start: 0; } diff --git a/src/components/textarea/themes/shared/textarea.material.scss b/src/components/textarea/themes/shared/textarea.material.scss index 16d793d77..0abc4f209 100644 --- a/src/components/textarea/themes/shared/textarea.material.scss +++ b/src/components/textarea/themes/shared/textarea.material.scss @@ -10,6 +10,7 @@ $input-bottom-padding: rem(6px); @include type-style('subtitle-1'); --component-size: var(--ig-size, #{var-get($theme, 'default-size')}); + --affix-padding: #{pad-inline(rem(12px), rem(14px), rem(16px))}; ::part(helper-text) { @include type-style('caption'); @@ -224,18 +225,6 @@ textarea { grid-area: 1 / 4; } -[part~='prefixed'] { - [part~='prefix'] { - padding-inline: pad-inline(rem(12px), rem(14px), rem(16px)); - } -} - -[part~='suffixed'] { - [part~='suffix'] { - padding-inline: pad-inline(rem(12px), rem(14px), rem(16px)); - } -} - [part~='filled'] { color: var-get($theme, 'input-prefix-color--filled'); } diff --git a/src/components/textarea/themes/textarea.base.scss b/src/components/textarea/themes/textarea.base.scss index c73db56b4..5a073e1a1 100644 --- a/src/components/textarea/themes/textarea.base.scss +++ b/src/components/textarea/themes/textarea.base.scss @@ -78,7 +78,6 @@ textarea { width: max-content; align-items: center; height: 100%; - padding-inline: pad-inline(rem(8px), rem(12px), rem(16px)); transition: color .25s $out-cubic, background .25s $out-cubic; igc-icon {