| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- @use 'sass:math';
- @import '../mixins';
- :root {
- --ds-form-check-input-size: 1em;
- }
- .form-control-ds,
- .form-group-ds,
- .form-text-ds,
- .form-label-ds,
- .form-group-ds label,
- .website-redesign .form-group-ds label,
- .website-redesign .form-label-ds {
- --bs-body-font-family: var(--ds-font-family-sans), sans-serif;
- --bs-success-rgb: 25, 117, 76; // #19754c
- --bs-danger-rgb: 195, 9, 43; // #c3092b
- --content-placeholder: var(--ds-color-text-disabled);
- font-family:
- var(--ds-font-family-sans), sans-serif; // Without this, it inherits the body's --bs-body-font-family which isn't the DS font
- color: var(--ds-color-text-primary);
- margin-bottom: var(--ds-spacing-100);
- }
- .form-label-ds,
- .form-group-ds label,
- .website-redesign .form-group-ds label {
- @include ds-body-md-semibold;
- }
- .form-group-ds {
- margin-bottom: var(--ds-spacing-400);
- }
- input.form-control.form-control-ds {
- border-radius: var(--ds-border-radius-200);
- border-color: var(--ds-color-neutral-300);
- color: var(--ds-color-neutral-950);
- padding: calc(var(--ds-spacing-250) - 1px) calc(var(--ds-spacing-300) - 1px);
- &.form-control-lg {
- padding: calc(var(--ds-spacing-350) - 1px) calc(var(--ds-spacing-300) - 1px);
- }
- &:read-only {
- background: var(--ds-color-neutral-200);
- color: var(--ds-color-text-secondary);
- &.select-trigger {
- background: transparent;
- color: var(--ds-color-neutral-950);
- }
- }
- &:disabled,
- &:disabled.select-trigger {
- color: var(--ds-color-text-disabled);
- background: var(--ds-color-neutral-100);
- }
- &:not(:disabled, :focus-visible) {
- &:hover,
- &.hover {
- border-color: var(--ds-color-neutral-400);
- }
- }
- &:focus-visible,
- &:focus {
- @include ds-focus-outline;
- border-color: var(--ds-color-neutral-950);
- }
- &.is-invalid,
- .was-validated &:invalid {
- &,
- &:hover {
- border-color: var(--ds-color-red-500);
- }
- }
- }
- .form-label.form-label-ds {
- @include ds-body-md-semibold;
- color: var(--ds-color-text-primary);
- &:has(+ .form-control:read-only) {
- color: var(--ds-color-text-secondary);
- }
- &:has(+ .form-control:disabled) {
- color: var(--ds-color-text-disabled);
- }
- }
- .form-text.form-text-ds {
- color: var(--ds-color-text-secondary);
- .form-text-inner-ds {
- display: flex;
- gap: var(--ds-spacing-200);
- margin-top: var(--ds-spacing-150);
- @include ds-body-sm-regular;
- }
- &.marginless {
- &,
- .form-text-inner-ds {
- margin: 0;
- }
- }
- .ciam-form-text-icon {
- display: block;
- font-size: math.div(20em, 14);
- }
- }
- .form-complex-input-container {
- position: relative;
- }
- .form-input-icon-ds {
- font-size: var(--ds-font-size-600);
- }
- .form-control-wrapper-ds {
- position: relative;
- &.form-control-wrapper-disabled-ds {
- .form-control-start-icon,
- .form-control-end-icon {
- & > * {
- color: var(--ds-color-text-disabled);
- }
- }
- }
- .form-control-start-icon-ds,
- .form-control-end-icon-ds {
- position: absolute;
- top: 0;
- height: 100%;
- display: flex;
- align-items: center;
- &:has(*) {
- pointer-events: none;
- }
- }
- .form-control-start-icon-ds {
- left: 0;
- padding-left: calc(var(--form-control-padding-x) + var(--bs-border-width));
- }
- .form-control-end-icon-ds {
- right: 0;
- padding-right: calc(var(--form-control-padding-x) + var(--bs-border-width));
- .form-control-search-clear-btn {
- @include reset-button;
- display: flex;
- justify-content: center;
- }
- }
- --icon-width: 20px;
- --form-control-padding-x: var(--ds-spacing-250);
- --form-control-icon-offset-y: var(--ds-spacing-200);
- --form-control-icon-padding: calc(
- var(--form-control-padding-x) + var(--form-control-icon-offset-y) +
- var(--icon-width)
- );
- .form-control-ds.form-control-offset-start-ds {
- padding-left: var(--form-control-icon-padding);
- }
- .form-control-ds.form-control-offset-end-ds {
- padding-right: var(--form-control-icon-padding);
- }
- &:has(:disabled) {
- color: var(--ds-color-text-disabled);
- }
- }
- .form-check-ds input.form-check-input,
- input.check-input-ds {
- @function form-check-svg($type, $color) {
- @if $type == 'checkbox' {
- @return url("data:image/svg+xml,<svg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M1 4.60011L3 7.00011L7 1.00011' fill='none' stroke='#{$color}' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/></svg>");
- }
- @if $type == 'radio' {
- @return url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><circle r='4' cx='4' cy='4' fill='#{$color}'/></svg>");
- }
- }
- border: solid 1px var(--ds-color-neutral-800);
- &:hover {
- border-color: var(--ds-color-neutral-900);
- }
- &:checked {
- &,
- &:hover {
- background-color: var(--ds-color-neutral-950);
- border-color: var(--ds-color-neutral-950);
- }
- }
- &:disabled {
- background-color: var(--ds-color-neutral-200);
- border-color: var(--ds-color-neutral-200);
- }
- &:focus-visible {
- @include ds-focus-outline;
- }
- @mixin input-type-override($type) {
- width: var(--ds-form-check-input-size);
- height: var(--ds-form-check-input-size);
- &:checked {
- background-size: 8px;
- background-image: escape-svg(form-check-svg($type, '#fff'));
- }
- &[disabled],
- &:disabled {
- &:checked {
- background-image: escape-svg(
- form-check-svg($type, $ds-color-neutral-400)
- );
- }
- }
- }
- &[type='checkbox'] {
- @include input-type-override('checkbox');
- border-radius: var(--ds-border-radius-100);
- }
- &[type='radio'] {
- @include input-type-override('radio');
- border-radius: 50%;
- }
- }
- input.check-input-ds {
- appearance: none;
- background-repeat: no-repeat;
- background-position: center;
- background-size: contain;
- margin: var(--ds-spacing-100);
- &[type='radio'] {
- border-radius: 50%;
- }
- }
- .form-check-ds {
- --ds-form-check-input-margin: var(--ds-spacing-100);
- --ds-form-check-label-gap: var(--ds-spacing-200);
- --ds-form-check-box-size: 1em;
- padding-left: calc(
- var(--ds-form-check-box-size) + 2 * var(--ds-form-check-input-margin) +
- var(--ds-form-check-label-gap)
- );
- &:has(.form-check-input:focus-visible) {
- @include ds-focus-outline;
- border-radius: var(--ds-border-radius-100);
- }
- .form-check-label {
- @include ds-body-md-regular;
- }
- .form-check-input {
- margin-left: calc(
- -1 *
- (
- var(--ds-form-check-box-size) + var(--ds-form-check-input-margin) +
- var(--ds-form-check-label-gap)
- )
- );
- margin-top: var(--ds-form-check-input-margin);
- margin-bottom: var(--ds-form-check-input-margin);
- &:focus,
- &:focus-visible {
- box-shadow: none;
- }
- }
- }
|