Merge remote-tracking branch 'origin/feat-vue3' into next
commit
1e1a1bd8a8
|
@ -24,6 +24,7 @@
|
|||
|
||||
<h2 align="center">Backers</h2>
|
||||
<p align="center">
|
||||
<a href="https://github.com/chuzhixin/vue-admin-beautiful" target="_blank"><img width="64" style="border-radius: 50%;" src="https://gitee.com/chu1204505056/image/raw/master/vue-admin-beautiful.png" title="vue-admin-beautiful"></a>
|
||||
<a href="https://github.com/limichange" target="_blank"><img width="64" style="border-radius: 50%;" src="https://avatars0.githubusercontent.com/u/1947344?s=400&v=4" title="limichange donation total 24$ by qq from 2018.9"></a>
|
||||
<a href="https://opencollective.com/ant-design-vue/backer/0/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/0/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/ant-design-vue/backer/1/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/1/avatar.svg"></a>
|
||||
|
|
|
@ -105,7 +105,7 @@ Become a sponsor and get your logo on our README on Github with a link to your s
|
|||
|
||||
Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/ant-design-vue#backer)]
|
||||
|
||||
<a href="https://opencollective.com/ant-design-vue/backer/0/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/0/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/1/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/1/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/2/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/2/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/3/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/3/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/4/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/4/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/5/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/5/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/6/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/6/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/7/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/7/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/8/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/8/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/9/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/9/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/10/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/10/avatar.svg"></a>
|
||||
<a href="https://github.com/chuzhixin/vue-admin-beautiful" target="_blank"><img width="64" style="border-radius: 50%;" src="https://gitee.com/chu1204505056/image/raw/master/vue-admin-beautiful.png" title="vue-admin-beautiful"></a> <a href="https://opencollective.com/ant-design-vue/backer/0/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/0/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/1/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/1/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/2/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/2/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/3/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/3/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/4/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/4/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/5/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/5/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/6/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/6/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/7/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/7/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/8/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/8/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/9/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/9/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/10/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/10/avatar.svg"></a>
|
||||
|
||||
## Patreon
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ Become a sponsor and get your logo on our README on Github with a link to your s
|
|||
|
||||
Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/ant-design-vue#backer)]
|
||||
|
||||
<a href="https://opencollective.com/ant-design-vue/backer/0/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/0/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/1/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/1/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/2/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/2/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/3/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/3/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/4/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/4/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/5/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/5/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/6/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/6/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/7/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/7/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/8/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/8/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/9/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/9/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/10/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/10/avatar.svg"></a><a href="https://opencollective.com/ant-design-vue/backer/9/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/9/avatar.svg"></a>
|
||||
<a href="https://github.com/chuzhixin/vue-admin-beautiful" target="_blank"><img width="64" style="border-radius: 50%;" src="https://gitee.com/chu1204505056/image/raw/master/vue-admin-beautiful.png" title="vue-admin-beautiful"></a> <a href="https://opencollective.com/ant-design-vue/backer/0/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/0/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/1/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/1/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/2/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/2/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/3/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/3/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/4/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/4/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/5/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/5/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/6/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/6/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/7/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/7/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/8/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/8/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/9/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/9/avatar.svg"></a> <a href="https://opencollective.com/ant-design-vue/backer/10/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/10/avatar.svg"></a><a href="https://opencollective.com/ant-design-vue/backer/9/website" target="_blank"><img src="https://opencollective.com/ant-design-vue/backer/9/avatar.svg"></a>
|
||||
|
||||
## Patreon
|
||||
|
||||
|
|
|
@ -136,23 +136,11 @@
|
|||
|
||||
form {
|
||||
.has-feedback {
|
||||
.@{ant-prefix}-input {
|
||||
padding-right: @input-padding-horizontal-base + @input-affix-width;
|
||||
}
|
||||
|
||||
// https://github.com/ant-design/ant-design/issues/19884
|
||||
.@{ant-prefix}-input-affix-wrapper {
|
||||
.@{ant-prefix}-input-suffix {
|
||||
padding-right: 18px;
|
||||
}
|
||||
.@{ant-prefix}-input {
|
||||
padding-right: @input-padding-horizontal-base + @input-affix-width * 2;
|
||||
}
|
||||
&.@{ant-prefix}-input-affix-wrapper-input-with-clear-btn {
|
||||
.@{ant-prefix}-input {
|
||||
padding-right: @input-padding-horizontal-base + @input-affix-width * 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fix overlapping between feedback icon and <Select>'s arrow.
|
||||
|
|
|
@ -35,25 +35,29 @@ const ClearableLabeledInput = defineComponent({
|
|||
addonBefore: PropTypes.VNodeChild,
|
||||
addonAfter: PropTypes.VNodeChild,
|
||||
readonly: PropTypes.looseBool,
|
||||
isFocused: PropTypes.looseBool,
|
||||
},
|
||||
methods: {
|
||||
renderClearIcon(prefixCls: string) {
|
||||
const { allowClear, value, disabled, readonly, inputType, handleReset } = this.$props;
|
||||
if (
|
||||
!allowClear ||
|
||||
disabled ||
|
||||
readonly ||
|
||||
value === undefined ||
|
||||
value === null ||
|
||||
value === ''
|
||||
) {
|
||||
if (!allowClear) {
|
||||
return null;
|
||||
}
|
||||
const showClearIcon =
|
||||
!disabled && !readonly && value !== undefined && value !== null && value !== '';
|
||||
const className =
|
||||
inputType === ClearableInputType[0]
|
||||
? `${prefixCls}-textarea-clear-icon`
|
||||
: `${prefixCls}-clear-icon`;
|
||||
return <CloseCircleFilled onClick={handleReset} class={className} role="button" />;
|
||||
return (
|
||||
<CloseCircleFilled
|
||||
onClick={handleReset}
|
||||
class={classNames(className, {
|
||||
[`${className}-hidden`]: !showClearIcon,
|
||||
})}
|
||||
role="button"
|
||||
/>
|
||||
);
|
||||
},
|
||||
|
||||
renderSuffix(prefixCls: string) {
|
||||
|
@ -71,6 +75,7 @@ const ClearableLabeledInput = defineComponent({
|
|||
|
||||
renderLabeledIcon(prefixCls: string, element: VNode): VNode {
|
||||
const props = this.$props;
|
||||
const { style } = this.$attrs;
|
||||
const suffix = this.renderSuffix(prefixCls);
|
||||
if (!hasPrefixSuffix(this)) {
|
||||
return cloneElement(element, {
|
||||
|
@ -83,14 +88,15 @@ const ClearableLabeledInput = defineComponent({
|
|||
) : null;
|
||||
|
||||
const affixWrapperCls = classNames(this.$attrs?.class, `${prefixCls}-affix-wrapper`, {
|
||||
[`${prefixCls}-affix-wrapper-focused`]: props.isFocused,
|
||||
[`${prefixCls}-affix-wrapper-disabled`]: props.disabled,
|
||||
[`${prefixCls}-affix-wrapper-sm`]: props.size === 'small',
|
||||
[`${prefixCls}-affix-wrapper-lg`]: props.size === 'large',
|
||||
[`${prefixCls}-affix-wrapper-input-with-clear-btn`]:
|
||||
props.suffix && props.allowClear && this.$props.value,
|
||||
});
|
||||
|
||||
return (
|
||||
<span class={affixWrapperCls} style={this.$attrs?.style}>
|
||||
<span class={affixWrapperCls} style={style}>
|
||||
{prefix}
|
||||
{cloneElement(element, {
|
||||
style: null,
|
||||
|
|
|
@ -67,6 +67,7 @@ export default defineComponent({
|
|||
const value = typeof props.value === 'undefined' ? props.defaultValue : props.value;
|
||||
return {
|
||||
stateValue: typeof value === 'undefined' ? '' : value,
|
||||
isFocused: false,
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
|
@ -90,6 +91,16 @@ export default defineComponent({
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
handleInputFocus(e) {
|
||||
this.isFocused = true;
|
||||
this.onFocus && this.onFocus(e);
|
||||
},
|
||||
|
||||
handleInputBlur(e) {
|
||||
this.isFocused = false;
|
||||
this.onBlur && this.onBlur(e);
|
||||
},
|
||||
|
||||
focus() {
|
||||
this.input.focus();
|
||||
},
|
||||
|
@ -148,7 +159,15 @@ export default defineComponent({
|
|||
'inputPrefixCls',
|
||||
'loading',
|
||||
]);
|
||||
const { handleKeyDown, handleChange, size, disabled, $attrs } = this;
|
||||
const {
|
||||
handleKeyDown,
|
||||
handleChange,
|
||||
handleInputFocus,
|
||||
handleInputBlur,
|
||||
size,
|
||||
disabled,
|
||||
$attrs,
|
||||
} = this;
|
||||
|
||||
const inputProps: any = {
|
||||
...otherProps,
|
||||
|
@ -161,6 +180,8 @@ export default defineComponent({
|
|||
key: 'ant-input',
|
||||
onInput: handleChange,
|
||||
onChange: handleChange,
|
||||
onFocus: handleInputFocus,
|
||||
onBlur: handleInputBlur,
|
||||
};
|
||||
if (!inputProps.autofocus) {
|
||||
delete inputProps.autofocus;
|
||||
|
@ -197,7 +218,7 @@ export default defineComponent({
|
|||
},
|
||||
render() {
|
||||
const { prefixCls: customizePrefixCls } = this.$props;
|
||||
const { stateValue } = this.$data;
|
||||
const { stateValue, isFocused } = this.$data;
|
||||
const getPrefixCls = this.configProvider.getPrefixCls;
|
||||
const prefixCls = getPrefixCls('input', customizePrefixCls);
|
||||
const addonAfter = getComponent(this, 'addonAfter');
|
||||
|
@ -216,6 +237,7 @@ export default defineComponent({
|
|||
addonBefore,
|
||||
suffix,
|
||||
prefix,
|
||||
isFocused,
|
||||
};
|
||||
return <ClearableLabeledInput {...props} ref={this.saveClearableInput} />;
|
||||
},
|
||||
|
|
|
@ -5,12 +5,14 @@ import inputProps from './inputProps';
|
|||
import { hasProp, getOptionProps } from '../_util/props-util';
|
||||
import { defaultConfigProvider } from '../config-provider';
|
||||
import { fixControlledValue, resolveOnChange } from './Input';
|
||||
import classNames from '../_util/classNames';
|
||||
import PropTypes, { withUndefined } from '../_util/vue-types';
|
||||
|
||||
const TextAreaProps = {
|
||||
...inputProps,
|
||||
autosize: withUndefined(PropTypes.oneOfType([Object, Boolean])),
|
||||
autoSize: withUndefined(PropTypes.oneOfType([Object, Boolean])),
|
||||
showCount: PropTypes.looseBool,
|
||||
};
|
||||
|
||||
export default defineComponent({
|
||||
|
@ -102,9 +104,13 @@ export default defineComponent({
|
|||
|
||||
renderTextArea(prefixCls: string) {
|
||||
const props = getOptionProps(this);
|
||||
const { style, class: customClass } = this.$attrs;
|
||||
const resizeProps = {
|
||||
...props,
|
||||
...this.$attrs,
|
||||
style: style && !props.showCount,
|
||||
class: customClass && !props.showCount,
|
||||
showCount: null,
|
||||
prefixCls,
|
||||
onInput: this.handleChange,
|
||||
onChange: this.handleChange,
|
||||
|
@ -114,19 +120,44 @@ export default defineComponent({
|
|||
},
|
||||
},
|
||||
render() {
|
||||
const { stateValue, prefixCls: customizePrefixCls } = this;
|
||||
const { stateValue, prefixCls: customizePrefixCls, maxlength, showCount } = this;
|
||||
const { style, class: customClass } = this.$attrs;
|
||||
const getPrefixCls = this.configProvider.getPrefixCls;
|
||||
const prefixCls = getPrefixCls('input', customizePrefixCls);
|
||||
|
||||
let value = fixControlledValue(stateValue);
|
||||
// Max length value
|
||||
const hasMaxlength = Number(maxlength) > 0;
|
||||
value = hasMaxlength ? value.slice(0, maxlength) : value;
|
||||
const props: any = {
|
||||
...getOptionProps(this),
|
||||
...this.$attrs,
|
||||
prefixCls,
|
||||
inputType: 'text',
|
||||
value: fixControlledValue(stateValue),
|
||||
element: this.renderTextArea(prefixCls),
|
||||
handleReset: this.handleReset,
|
||||
};
|
||||
return <ClearableLabeledInput {...props} ref={this.saveClearableInput} />;
|
||||
|
||||
let textareaNode = (
|
||||
<ClearableLabeledInput {...props} value={value} ref={this.saveClearableInput} />
|
||||
);
|
||||
|
||||
if (showCount) {
|
||||
const valueLength = [...value].length;
|
||||
const dataCount = `${valueLength}${hasMaxlength ? ` / ${maxlength}` : ''}`;
|
||||
textareaNode = (
|
||||
<div
|
||||
class={classNames(
|
||||
`${prefixCls}-textarea`,
|
||||
`${prefixCls}-textarea-show-count`,
|
||||
customClass,
|
||||
)}
|
||||
style={style}
|
||||
data-count={dataCount}
|
||||
>
|
||||
{textareaNode}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
return textareaNode;
|
||||
},
|
||||
});
|
||||
|
|
|
@ -7,3 +7,5 @@ exports[`Input.Search should support suffix 1`] = `<span class="ant-input-search
|
|||
exports[`TextArea should support disabled 1`] = `<textarea disabled="" class="ant-input ant-input-disabled"></textarea>`;
|
||||
|
||||
exports[`TextArea should support maxlength 1`] = `<textarea maxlength="10" class="ant-input"></textarea>`;
|
||||
|
||||
exports[`TextArea should support showCount 1`] = `<div class="ant-input-textarea ant-input-textarea-show-count" data-count="3 / 10"><textarea maxlength="10" class="ant-input"></textarea></div>`;
|
||||
|
|
|
@ -29,7 +29,7 @@ describe('Input', () => {
|
|||
props: { allowClear: true, defaultValue: '111', disabled: true },
|
||||
sync: false,
|
||||
});
|
||||
expect(wrapper.findAll('.ant-input-clear-icon').length).toBe(0);
|
||||
expect(wrapper.findAll('.ant-input-clear-icon-hidden').length).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -68,6 +68,17 @@ describe('TextArea', () => {
|
|||
expect(wrapper.html()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
it('should support showCount', async () => {
|
||||
const wrapper = mount(TextArea, {
|
||||
props: { showCount: true, defaultValue: '111', maxlength: 10 },
|
||||
sync: false,
|
||||
});
|
||||
expect(wrapper.find('.ant-input-textarea-show-count')).toBeTruthy();
|
||||
await asyncExpect(() => {
|
||||
expect(wrapper.html()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// describe('As Form Control', () => {
|
||||
|
|
|
@ -41,6 +41,14 @@
|
|||
vertical-align: 0;
|
||||
}
|
||||
|
||||
.@{ant-prefix}-input-clear-icon-hidden {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.@{ant-prefix}-input-textarea-clear-icon-hidden {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.@{ant-prefix}-input-textarea-clear-icon {
|
||||
.clear-icon;
|
||||
position: absolute;
|
||||
|
@ -49,4 +57,13 @@
|
|||
margin: 8px 8px 0 0;
|
||||
}
|
||||
|
||||
.@{ant-prefix}-input-textarea {
|
||||
&-show-count::after {
|
||||
display: block;
|
||||
color: @text-color-secondary;
|
||||
text-align: right;
|
||||
content: attr(data-count);
|
||||
}
|
||||
}
|
||||
|
||||
@import './search-input';
|
||||
|
|
|
@ -1,18 +1,17 @@
|
|||
@import '../../style/themes/index';
|
||||
@import '../../style/mixins/index';
|
||||
|
||||
@input-affix-margin: 4px;
|
||||
@input-affix-width: 19px;
|
||||
@input-affix-with-clear-btn-width: 38px;
|
||||
|
||||
// size mixins for input
|
||||
.input-lg() {
|
||||
height: @input-height-lg;
|
||||
padding: @input-padding-vertical-lg @input-padding-horizontal-lg;
|
||||
font-size: @font-size-lg;
|
||||
}
|
||||
|
||||
.input-sm() {
|
||||
height: @input-height-sm;
|
||||
padding: @input-padding-vertical-sm @input-padding-horizontal-sm;
|
||||
}
|
||||
|
||||
|
@ -47,7 +46,6 @@
|
|||
position: relative;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: @input-height-base;
|
||||
padding: @input-padding-vertical-base @input-padding-horizontal-base;
|
||||
color: @input-color;
|
||||
font-size: @font-size-base;
|
||||
|
@ -264,12 +262,6 @@
|
|||
height: @input-height-sm;
|
||||
}
|
||||
|
||||
.@{inputClass}-affix-wrapper {
|
||||
display: table-cell;
|
||||
float: left;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&&-compact {
|
||||
display: block;
|
||||
.clearfix;
|
||||
|
@ -297,6 +289,10 @@
|
|||
border-radius: 0;
|
||||
}
|
||||
|
||||
& > .@{inputClass}-affix-wrapper {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
& > *:not(:last-child) {
|
||||
margin-right: -@border-width-base;
|
||||
border-right-width: @border-width-base;
|
||||
|
@ -364,17 +360,44 @@
|
|||
|
||||
.input-affix-wrapper(@inputClass) {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
display: inline-flex;
|
||||
border: @border-width-base @border-style-base @input-border-color;
|
||||
border-radius: @border-radius-base;
|
||||
padding: @input-padding-vertical-base @input-padding-horizontal-base;
|
||||
width: 100%;
|
||||
text-align: start;
|
||||
|
||||
&:hover .@{inputClass}:not(.@{inputClass}-disabled) {
|
||||
&:hover {
|
||||
.hover();
|
||||
}
|
||||
|
||||
&-disabled {
|
||||
.disabled();
|
||||
}
|
||||
|
||||
&-focused {
|
||||
.active();
|
||||
}
|
||||
|
||||
// Size
|
||||
&-lg {
|
||||
.input-lg();
|
||||
}
|
||||
|
||||
&-sm {
|
||||
.input-sm();
|
||||
}
|
||||
|
||||
.@{inputClass} {
|
||||
position: relative;
|
||||
text-align: inherit;
|
||||
border: none;
|
||||
padding: 0;
|
||||
&:focus {
|
||||
border: none;
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Should not break align of icon & text
|
||||
|
@ -385,14 +408,10 @@
|
|||
// https://codesandbox.io/embed/nifty-benz-gb7ml
|
||||
.@{inputClass}-prefix,
|
||||
.@{inputClass}-suffix {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: @input-color;
|
||||
line-height: 0;
|
||||
transform: translateY(-50%);
|
||||
white-space: nowrap;
|
||||
|
||||
:not(.anticon) {
|
||||
line-height: @line-height-base;
|
||||
|
@ -407,27 +426,11 @@
|
|||
}
|
||||
|
||||
.@{inputClass}-prefix {
|
||||
left: @input-padding-horizontal-base + 1px;
|
||||
margin-right: @input-affix-margin;
|
||||
}
|
||||
|
||||
.@{inputClass}-suffix {
|
||||
right: @input-padding-horizontal-base + 1px;
|
||||
}
|
||||
|
||||
.@{inputClass}:not(:first-child) {
|
||||
padding-left: @input-padding-horizontal-base + @input-affix-width;
|
||||
}
|
||||
|
||||
.@{inputClass}:not(:last-child) {
|
||||
padding-right: @input-padding-horizontal-base + @input-affix-width;
|
||||
}
|
||||
|
||||
&.@{inputClass}-affix-wrapper-input-with-clear-btn .@{inputClass}:not(:last-child) {
|
||||
padding-right: @input-padding-horizontal-base + @input-affix-with-clear-btn-width;
|
||||
}
|
||||
|
||||
&.@{inputClass}-affix-wrapper-textarea-with-clear-btn .@{inputClass} {
|
||||
padding-right: 22px;
|
||||
margin-left: @input-affix-margin;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -438,7 +441,7 @@
|
|||
// https://codesandbox.io/s/wizardly-sun-u10br
|
||||
cursor: pointer;
|
||||
transition: color 0.3s;
|
||||
|
||||
margin: 0 @input-affix-margin;
|
||||
&:hover {
|
||||
color: @text-color-secondary;
|
||||
}
|
||||
|
|
|
@ -102,4 +102,12 @@ describe('Modal.confirm triggers callbacks correctly', () => {
|
|||
expect($$(`.ant-modal-confirm-${type}`)).toHaveLength(0);
|
||||
}
|
||||
});
|
||||
|
||||
// it('should render title', async () => {
|
||||
// open({
|
||||
// title: () => <span>title</span>,
|
||||
// });
|
||||
// await sleep();
|
||||
// expect($$('.ant-modal-confirm-title')[0].innerHTML).toBe('<span>title</span>');
|
||||
// });
|
||||
});
|
||||
|
|
|
@ -318,7 +318,7 @@
|
|||
@input-padding-horizontal-lg: @input-padding-horizontal;
|
||||
@input-padding-vertical-base: 4px;
|
||||
@input-padding-vertical-sm: 1px;
|
||||
@input-padding-vertical-lg: 6px;
|
||||
@input-padding-vertical-lg: 6.5px;
|
||||
@input-placeholder-color: hsv(0, 0, 75%);
|
||||
@input-color: @text-color;
|
||||
@input-border-color: @border-color-base;
|
||||
|
|
|
@ -163,7 +163,11 @@ export default defineComponent({
|
|||
$slots[scopedSlots.switcherIcon] ||
|
||||
$slots[slots.switcherIcon] ||
|
||||
restProps.switcherIcon,
|
||||
title: $slots[scopedSlots.title] || $slots[slots.title] || restProps[replaceFields.title],
|
||||
title:
|
||||
$slots[scopedSlots.title] ||
|
||||
$slots[slots.title] ||
|
||||
$slots.title ||
|
||||
restProps[replaceFields.title],
|
||||
dataRef: item,
|
||||
key,
|
||||
class: cls,
|
||||
|
|
Loading…
Reference in New Issue