UNPKG

antd

Version:

An enterprise-class UI design language and React-based implementation

472 lines (402 loc) 8.57 kB
@import "../../style/themes/default"; @import "../../style/mixins/index"; @import "../../input/style/mixin"; @import "../../button/style/mixin"; @import "../../layout/style/mixin"; @import "./mixin"; @form-prefix-cls: ~"@{ant-prefix}-form"; .reset-form(); label { position: relative; > .@{iconfont-css-prefix} { vertical-align: top; font-size: @font-size-base; } } .@{form-prefix-cls}-item-required:before { display: inline-block; margin-right: 4px; content: "*"; font-family: SimSun; font-size: @font-size-base; color: @label-required-color; } // Radio && Checkbox input[type="radio"], input[type="checkbox"] { &[disabled], &.disabled { cursor: @cursor-disabled; } } // These classes are used directly on <label>s .@{ant-prefix}-radio-inline, .@{ant-prefix}-radio-vertical, .@{ant-prefix}-checkbox-inline, .@{ant-prefix}-checkbox-vertical { &.disabled { cursor: @cursor-disabled; } } // These classes are used on elements with <label> descendants .@{ant-prefix}-radio, .@{ant-prefix}-checkbox { &.disabled { label { cursor: @cursor-disabled; } } } // Form items // You should wrap labels and controls in .@{form-prefix-cls}-item for optimum spacing .@{form-prefix-cls}-item { font-size: @font-size-base; margin-bottom: @form-item-margin-bottom; color: #666; vertical-align: top; // nested FormItem & > &, & :not(.@{form-prefix-cls}) > & { margin-bottom: -@form-item-margin-bottom; } &-control { line-height: 32px; position: relative; .clearfix; } &-with-help { margin-bottom: @form-item-margin-bottom - @font-size-base * @line-height-base; } &-label { text-align: right; vertical-align: middle; padding: 7px 0; display: inline-block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; label { color: @label-color; &:after { content: ":"; margin: 0 8px 0 2px; position: relative; top: -0.5px; } } } .@{ant-prefix}-switch { margin: 4px 0; } &-no-colon &-label label:after { content: " "; } } .@{form-prefix-cls}-explain { line-height: 1.5; } .@{form-prefix-cls}-explain, .@{form-prefix-cls}-extra { color: #999; } .@{form-prefix-cls}-text { display: inline-block; padding-right: 8px; } .@{form-prefix-cls}-split { display: block; text-align: center; } // 表单下的输入框尺寸唯一: 大尺寸 form { .has-feedback { .@{ant-prefix}-input { padding-right: 24px; } } textarea.@{ant-prefix}-input { height: auto; } // input[type=file] .@{ant-prefix}-upload { background: transparent; } input[type="radio"], input[type="checkbox"] { width: 14px; height: 14px; } // Radios and checkboxes on same line .@{ant-prefix}-radio-inline, .@{ant-prefix}-checkbox-inline { display: inline-block; vertical-align: middle; font-weight: normal; cursor: pointer; margin-left: 8px; &:first-child { margin-left: 0; } } .@{ant-prefix}-checkbox-vertical, .@{ant-prefix}-radio-vertical { display: block; } .@{ant-prefix}-checkbox-vertical + .@{ant-prefix}-checkbox-vertical, .@{ant-prefix}-radio-vertical + .@{ant-prefix}-radio-vertical { margin-left: 0; } .@{ant-prefix}-input-number { margin-top: -1px; margin-right: 8px; } .@{ant-prefix}-select, .@{ant-prefix}-cascader-picker { width: 100%; } } // Input combined with select .@{ant-prefix}-input-group-wrap { .@{ant-prefix}-select-selection { border-bottom-left-radius: 0; border-top-left-radius: 0; &:hover { border-color: @border-color-base; } } .@{ant-prefix}-select-selection--single { margin-left: -1px; height: @input-height-lg; background-color: #eee; .@{ant-prefix}-select-selection__rendered { padding-left: 8px; padding-right: 25px; line-height: 30px; } } .@{ant-prefix}-select-open .@{ant-prefix}-select-selection { border-color: @border-color-base; box-shadow: none; } } // Form layout //== Horizontal Form .@{form-prefix-cls}-horizontal { .@{form-prefix-cls}-item { .make-row; } .@{ant-prefix}-radio-inline, .@{ant-prefix}-checkbox-inline { vertical-align: baseline; } } // Form layout //== Vertical Form .@{form-prefix-cls}-vertical { .@{form-prefix-cls}-item-label { padding: 0 0 8px; label:after { content: ''; } } } //== Inline Form .@{form-prefix-cls}-inline { .@{form-prefix-cls}-item { display: inline-block; margin-right: 10px; margin-bottom: 0; &-with-help { margin-bottom: 24px; } > div { display: inline-block; } } .@{form-prefix-cls}-text { display: inline-block; } .has-feedback { display: inline-block; } // Fix https://github.comdesigndesign/issues/1040 .@{form-prefix-cls}-explain { position: absolute; } } .@{form-prefix-cls}-horizontal, .@{form-prefix-cls}-inline { label { > input[type="radio"], > input[type="checkbox"] { margin-right: 4px; } } } // Validation state .has-success, .has-warning, .has-error, .is-validating { &.has-feedback:after { position: absolute; top: 0; right: 0; visibility: visible; .square(@input-height-lg); line-height: @input-height-lg; text-align: center; font-size: 14px; animation: zoomIn .3s @ease-out-back; .iconfont-font(""); } } .has-success { &.has-feedback:after { animation-name: diffZoomIn1 !important; } } .has-error { &.has-feedback:after { animation-name: diffZoomIn2 !important; } } .has-warning { &.has-feedback:after { animation-name: diffZoomIn3 !important; } } .has-success { .@{ant-prefix}-input { border-color: @input-border-color; box-shadow: none; } &.has-feedback:after { content: '\e630'; color: @success-color; } } .has-warning { .form-control-validation(@warning-color; @warning-color;); &.has-feedback:after { content: '\e62c'; color: @warning-color; } //select .@{ant-prefix}-select { &-selection { border-color: @warning-color; .active(@warning-color); } &-arrow { color: @warning-color; } } //datepicker .@{ant-prefix}-calendar-picker-icon:after { color: @warning-color; } //timepicker .@{ant-prefix}-time-picker-icon:after { color: @warning-color; } //input-number, timepicker .@{ant-prefix}-input-number, .@{ant-prefix}-time-picker-input { border-color: @warning-color; .active(@warning-color); &:not([disabled]):hover { border-color: @warning-color; } } } .has-error { .form-control-validation(@error-color; @error-color;); &.has-feedback:after { content: '\e62e'; color: @error-color; } //select .@{ant-prefix}-select { &-selection { border-color: @error-color; .active(@error-color); } &-arrow { color: @error-color; } } //datepicker .@{ant-prefix}-calendar-picker-icon:after { color: @error-color; } //timepicker .@{ant-prefix}-picker-icon:after { color: @error-color; } //input-number, timepicker .@{ant-prefix}-input-number, .@{ant-prefix}-time-picker-input { border-color: @error-color; .active(@error-color); &:not([disabled]):hover { border-color: @error-color; } } .@{ant-prefix}-mention-wrapper, .@{ant-prefix}-mention-wrapper.active { .@{ant-prefix}-mention-editor { border-color: @error-color; .active(@error-color); &:not([disabled]):hover, &:not([disabled]):focus { border-color: @error-color; .active(@error-color); } } } } .is-validating { &.has-feedback:after { display: inline-block; animation: loadingCircle 1s infinite linear; content: "\e6ae"; color: #999; } } .@{ant-prefix}-advanced-search-form { .@{form-prefix-cls}-item { margin-bottom: 16px; } .@{ant-prefix}-input, .@{ant-prefix}-input-group .@{ant-prefix}-input, .@{ant-prefix}-input-group .@{ant-prefix}-input-group-addon { height: 28px; } } // need there different zoom animation // otherwise won't trigger anim @keyframes diffZoomIn1 { 0% { transform: scale(0); } 100% { transform: scale(1); } } @keyframes diffZoomIn2 { 0% { transform: scale(0); } 100% { transform: scale(1); } } @keyframes diffZoomIn3 { 0% { transform: scale(0); } 100% { transform: scale(1); } }