@import '../../style/themes/index'; @import '../../style/mixins/index'; @import '../../input/style/mixin'; @import '../../button/_style/mixin'; @import '../../grid/style/mixin'; @import './components'; @import './inline'; @import './horizontal'; @import './vertical'; @import './status'; @import './mixin'; @form-prefix-cls: ~'@{ant-prefix}-form'; @form-item-prefix-cls: ~'@{form-prefix-cls}-item'; @form-font-height: ceil(@font-size-base * @line-height-base); .@{form-prefix-cls} { .reset-component(); .reset-form(); .@{form-prefix-cls}-text { display: inline-block; padding-right: 8px; } // ================================================================ // = Size = // ================================================================ .formSize(@input-height) { .@{form-item-prefix-cls}-label > label { height: @input-height; } .@{form-item-prefix-cls}-control-input { min-height: @input-height; } } &-small { .formSize(@input-height-sm); } &-large { .formSize(@input-height-lg); } } .explainAndExtraDistance(@num) when (@num >= 0) { padding-top: floor(@num); } .explainAndExtraDistance(@num) when (@num < 0) { margin-top: ceil(@num); margin-bottom: ceil(@num); } // ================================================================ // = Item = // ================================================================ .@{form-item-prefix-cls} { .reset-component(); margin-bottom: @form-item-margin-bottom; vertical-align: top; // We delay one frame (0.017s) here to let CSSMotion goes transition: margin-bottom @animation-duration-slow 0.017s linear; &-with-help { margin-bottom: 0; transition: none; } &-hidden, &-hidden.@{ant-prefix}-row { // https://github.com/ant-design/ant-design/issues/26141 display: none; } // ============================================================== // = Label = // ============================================================== &-label { display: inline-block; flex-grow: 0; overflow: hidden; white-space: nowrap; text-align: right; vertical-align: middle; &-left { text-align: left; } &-wrap { overflow: unset; line-height: (@line-height-base - 0.25em); white-space: unset; } > label { position: relative; display: inline-flex; align-items: center; max-width: 100%; height: @form-item-label-height; color: @label-color; font-size: @form-item-label-font-size; > .@{iconfont-css-prefix} { font-size: @form-item-label-font-size; vertical-align: top; } // Required mark &.@{form-item-prefix-cls}-required:not(.@{form-item-prefix-cls}-required-mark-optional)::before { display: inline-block; margin-right: 4px; color: @label-required-color; font-size: @form-item-label-font-size; font-family: SimSun, sans-serif; line-height: 1; content: '*'; .@{form-prefix-cls}-hide-required-mark & { display: none; } } // Optional mark .@{form-item-prefix-cls}-optional { display: inline-block; margin-left: @margin-xss; color: @text-color-secondary; .@{form-prefix-cls}-hide-required-mark & { display: none; } } // Optional mark .@{form-item-prefix-cls}-tooltip { color: @text-color-secondary; cursor: help; writing-mode: horizontal-tb; margin-inline-start: @margin-xss; } &::after { & when (@form-item-trailing-colon=true) { content: ':'; } & when not (@form-item-trailing-colon=true) { content: ' '; } position: relative; top: -0.5px; margin: 0 @form-item-label-colon-margin-right 0 @form-item-label-colon-margin-left; } &.@{form-item-prefix-cls}-no-colon::after { content: ' '; } } } // ============================================================== // = Input = // ============================================================== &-control { display: flex; flex-direction: column; flex-grow: 1; &:first-child:not([class^=~"'@{ant-prefix}-col-'"]):not([class*=~"' @{ant-prefix}-col-'"]) { width: 100%; } } &-control-input { position: relative; display: flex; align-items: center; min-height: @input-height-base; &-content { flex: auto; max-width: 100%; } } // ============================================================== // = Explain = // ============================================================== &-explain, &-extra { clear: both; color: @text-color-secondary; font-size: @font-size-base; line-height: @line-height-base; transition: color 0.3s @ease-out; // sync input color transition .explainAndExtraDistance((@form-item-margin-bottom - @form-font-height) / 2); } &-explain-connected { height: 0; min-height: 0; opacity: 0; } &-extra { min-height: @form-item-margin-bottom; } .@{ant-prefix}-input-textarea-show-count { &::after { margin-bottom: -22px; } } &-with-help &-explain { height: auto; min-height: @form-item-margin-bottom; opacity: 1; } } // >>>>>>>>>> Motion <<<<<<<<<< // Explain holder .@{ant-prefix}-show-help { transition: height @animation-duration-slow linear, min-height @animation-duration-slow linear, margin-bottom @animation-duration-slow @ease-in-out, opacity @animation-duration-slow @ease-in-out; &-leave { min-height: @form-item-margin-bottom; &-active { min-height: 0; } } } // Explain .@{ant-prefix}-show-help-item { overflow: hidden; transition: height @animation-duration-slow @ease-in-out, opacity @animation-duration-slow @ease-in-out, transform @animation-duration-slow @ease-in-out !important; &-appear, &-enter { transform: translateY(-5px); opacity: 0; &-active { transform: translateY(0); opacity: 1; } } &-leave-active { transform: translateY(-5px); } } // need there different zoom animation // otherwise won't trigger anim @keyframes diffZoomIn1 { 0% { transform: scale(0); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } @keyframes diffZoomIn2 { 0% { transform: scale(0); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } @keyframes diffZoomIn3 { 0% { transform: scale(0); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } @import './rtl';