UNPKG

antd

Version:

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

444 lines (377 loc) 7.64 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-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, fieldset[disabled] & { cursor: @cursor-disabled; } } // These classes are used directly on <label>s .ant-radio-inline, .ant-radio-vertical, .ant-checkbox-inline, .ant-checkbox-vertical { &.disabled, fieldset[disabled] & { cursor: @cursor-disabled; } } // These classes are used on elements with <label> descendants .ant-radio, .ant-checkbox { &.disabled, fieldset[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; // 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 - 3; } &-label { text-align: right; vertical-align: middle; padding: 7px 0; display: inline-block; label { color: @label-color; &:after { content: ":"; margin: 0 8px 0 2px; position: relative; top: -0.5px; } } } .ant-switch { margin: 4px 0; } } .@{form-prefix-cls}-explain { line-height: 1.5; margin-top: 3px; } .@{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-input { padding-right: 24px; } } textarea.ant-input { height: auto; } // input[type=file] .ant-upload { background: transparent; } input[type="radio"], input[type="checkbox"] { width: 14px; height: 14px; } // Radios and checkboxes on same line .ant-radio-inline, .ant-checkbox-inline { display: inline-block; vertical-align: middle; font-weight: normal; cursor: pointer; margin-left: 8px; &:first-child { margin-left: 0; } } .ant-checkbox-vertical, .ant-radio-vertical { display: block; } .ant-checkbox-vertical + .ant-checkbox-vertical, .ant-radio-vertical + .ant-radio-vertical { margin-left: 0; } .ant-input-number { margin-top: -1px; margin-right: 8px; } .ant-select, .ant-cascader-picker { width: 100%; } } // Input combined with select .ant-input-group-wrap { .ant-select-selection { border-bottom-left-radius: 0; border-top-left-radius: 0; &:hover { border-color: @border-color-base; } } .ant-select-selection--single { margin-left: -1px; height: @input-height-lg; background-color: #eee; .ant-select-selection__rendered { padding-left: 8px; padding-right: 25px; line-height: 30px; } } .ant-select-open .ant-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-radio-inline, .ant-checkbox-inline { vertical-align: baseline; } } //== 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-input { border-color: @input-border-color; box-shadow: none; } &.has-feedback:after { content: '\e62f'; color: @success-color; } } .has-warning { .form-control-validation(@warning-color; @warning-color;); &.has-feedback:after { content: '\e634'; color: @warning-color; } //select .ant-select { &-selection { border-color: @warning-color; box-shadow: 0 0 0 2px fade(@warning-color, 20%); } &-arrow { color: @warning-color; } } //datepicker .ant-calendar-picker-icon:after { color: @warning-color; } //timepicker .ant-time-picker-icon:after { color: @warning-color; } //input-number, timepicker .ant-input-number, .ant-time-picker-input { border-color: @warning-color; box-shadow: 0 0 0 2px fade(@warning-color, 20%); &:not([disabled]):hover { border-color: @warning-color; } } } .has-error { .form-control-validation(@error-color; @error-color;); &.has-feedback:after { content: '\e631'; color: @error-color; } //select .ant-select { &-selection { border-color: @error-color; box-shadow: 0 0 0 2px fade(@error-color, 20%); } &-arrow { color: @error-color; } } //datepicker .ant-calendar-picker-icon:after { color: @error-color; } //timepicker .ant-time-picker-icon:after { color: @error-color; } //input-number, timepicker .ant-input-number, .ant-time-picker-input { border-color: @error-color; box-shadow: 0 0 0 2px fade(@error-color, 20%); &:not([disabled]):hover { border-color: @error-color; } } } .is-validating { &.has-feedback:after { display: inline-block; animation: loadingCircle 1s infinite linear; content: "\e6a1"; color: #999; } } .ant-advanced-search-form { .@{form-prefix-cls}-item { margin-bottom: 16px; } .ant-input, .ant-input-group .ant-input, .ant-input-group .ant-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); } }