Merge remote-tracking branch 'origin/next' into v3
commit
7315bfd03e
|
@ -10,6 +10,39 @@
|
|||
|
||||
---
|
||||
|
||||
## 2.1.4
|
||||
|
||||
`2021-05-09`
|
||||
|
||||
- ๐ Fix `Table` scrolling misalignment issue [#4045](https://github.com/vueComponent/ant-design-vue/issues/4045)
|
||||
- ๐ Fix `Typography` editable mode triggering link jump issue [#4105](https://github.com/vueComponent/ant-design-vue/issues/4105)
|
||||
- ๐ Fix the issue that `Carousel` variableWidth does not take effect [#3977](https://github.com/vueComponent/ant-design-vue/issues/3977)
|
||||
- ๐ Fix the problem that `TreeSelect` cannot delete parent and child nodes at the same time through the keyboard [#3508](https://github.com/vueComponent/ant-design-vue/issues/3508)
|
||||
- ๐ Fix some types of errors
|
||||
|
||||
## 2.1.3
|
||||
|
||||
`2021-04-25`
|
||||
|
||||
- ๐๐๐ remove ads during npm installation
|
||||
- ๐ `Select`
|
||||
- Fix the first issue of default activation [#3842](https://github.com/vueComponent/ant-design-vue/issues/3842)
|
||||
- Fix group display abnormal problem [#3841](https://github.com/vueComponent/ant-design-vue/issues/3841)
|
||||
- Fix scrolling abnormal issue after dynamically updating selections [#3972](https://github.com/vueComponent/ant-design-vue/issues/3972)
|
||||
- ๐ Fix the issue that `Checkbox` triggers twice `update:checked` [#3838](https://github.com/vueComponent/ant-design-vue/issues/3838)
|
||||
- ๐ `Table` column group supports fixed [#3882](https://github.com/vueComponent/ant-design-vue/issues/3882)
|
||||
- ๐ `Table` column supports v-for [#3934](https://github.com/vueComponent/ant-design-vue/issues/3934)
|
||||
- ๐ Fix the problem that `Table` displays horizontal scroll bar on windows [6d33d6](https://github.com/vueComponent/ant-design-vue/commit/6d33d60d2bca98825f274e48bcc3badd1857f742)
|
||||
- ๐ `Form` scrollToFirstError supports option parameter passing [#3918](https://github.com/vueComponent/ant-design-vue/issues/3918)
|
||||
- ๐ Fix the issue of `Calendar` month selector displaying wrong characters [#3915](https://github.com/vueComponent/ant-design-vue/issues/3915)
|
||||
- ๐ Refactor the `Switch` component and remove the defaultChecked attribute [#3885](https://github.com/vueComponent/ant-design-vue/issues/3885)
|
||||
- ๐ Fix the process exception when using Vite [#3930](https://github.com/vueComponent/ant-design-vue/issues/3930)
|
||||
- ๐ Fix `Radio` shadow occlusion problem [#3955](https://github.com/vueComponent/ant-design-vue/issues/3955)
|
||||
- ๐ Fix the issue that span does not take effect in `Form` inline mode [#3862](https://github.com/vueComponent/ant-design-vue/issues/3862)
|
||||
- ๐ Fix the issue that `Cascader` keydown selection does not take effect [#958](https://github.com/vueComponent/ant-design-vue/issues/958)
|
||||
- ๐ Fix `Image` preview function failure problem [#3701](https://github.com/vueComponent/ant-design-vue/issues/3701)
|
||||
- ๐ Fix some TS type issues
|
||||
|
||||
## 2.1.2
|
||||
|
||||
`2021-03-28`
|
||||
|
|
|
@ -10,6 +10,39 @@
|
|||
|
||||
---
|
||||
|
||||
## 2.1.4
|
||||
|
||||
`2021-05-09`
|
||||
|
||||
- ๐ ไฟฎๅค `Table` ๆปๅจ้ไฝ้ฎ้ข [#4045](https://github.com/vueComponent/ant-design-vue/issues/4045)
|
||||
- ๐ ไฟฎๅค `Typography` editable ๆจกๅผ่งฆๅ้พๆฅ่ทณ่ฝฌ้ฎ้ข [#4105](https://github.com/vueComponent/ant-design-vue/issues/4105)
|
||||
- ๐ ไฟฎๅค `Carousel` variableWidth ไธ็ๆ้ฎ้ข [#3977](https://github.com/vueComponent/ant-design-vue/issues/3977)
|
||||
- ๐ ไฟฎๅค `TreeSelect` ๆ ๆณ้่ฟ้ฎ็ๅๆถๅ ้ค็ถๅญ่็น้ฎ้ข [#3508](https://github.com/vueComponent/ant-design-vue/issues/3508)
|
||||
- ๐ ไฟฎๅค่ฅๅนฒ็ฑปๅ้่ฏฏ้ฎ้ข
|
||||
|
||||
## 2.1.3
|
||||
|
||||
`2021-04-25`
|
||||
|
||||
- ๐๐๐ ็งป้ค npm ๅฎ่ฃ
ๆถ็ๅนฟๅ
|
||||
- ๐ `Select`
|
||||
- ไฟฎๅค้ป่ฎคๆฟๆดป็ฌฌไธ้กน้ฎ้ข [#3842](https://github.com/vueComponent/ant-design-vue/issues/3842)
|
||||
- ไฟฎๅคๅ็ปๆพ็คบๅผๅธธ้ฎ้ข [#3841](https://github.com/vueComponent/ant-design-vue/issues/3841)
|
||||
- ไฟฎๅคๅจๆๆดๆฐ้ๆฉ้กนๅๆปๅจๅผๅธธ้ฎ้ข [#3972](https://github.com/vueComponent/ant-design-vue/issues/3972)
|
||||
- ๐ ไฟฎๅค `Checkbox` ่งฆๅไธคๆฌก `update:checked` ้ฎ้ข [#3838](https://github.com/vueComponent/ant-design-vue/issues/3838)
|
||||
- ๐ `Table` column group ๆฏๆ fixed [#3882](https://github.com/vueComponent/ant-design-vue/issues/3882)
|
||||
- ๐ `Table` column ๆฏๆ v-for [#3934](https://github.com/vueComponent/ant-design-vue/issues/3934)
|
||||
- ๐ ไฟฎๅค `Table` ๅจ windows ๆพ็คบๆจชๅๆปๅจๆก้ฎ้ข [6d33d6](https://github.com/vueComponent/ant-design-vue/commit/6d33d60d2bca98825f274e48bcc3badd1857f742)
|
||||
- ๐ `Form` scrollToFirstError ๆฏๆ้้กนๅๆฐไผ ้ [#3918](https://github.com/vueComponent/ant-design-vue/issues/3918)
|
||||
- ๐ ไฟฎๅค `Calendar` ๆไปฝ้ๆฉๅจๆพ็คบ้่ฏฏๅญ็ฌฆ้ฎ้ข [#3915](https://github.com/vueComponent/ant-design-vue/issues/3915)
|
||||
- ๐ ้ๆ `Switch` ็ปไปถ๏ผ็งป้ค defaultChecked ๅฑๆง [#3885](https://github.com/vueComponent/ant-design-vue/issues/3885)
|
||||
- ๐ ไฟฎๅคไฝฟ็จ Vite ๆถ๏ผๆๅบ process ๅผๅธธ้ฎ้ข [#3930](https://github.com/vueComponent/ant-design-vue/issues/3930)
|
||||
- ๐ ไฟฎๅค `Radio` ้ดๅฝฑ้ฎๆก้ฎ้ข [#3955](https://github.com/vueComponent/ant-design-vue/issues/3955)
|
||||
- ๐ ไฟฎๅค `Form` inline ๆจกๅผไธ๏ผ span ไธ็ๆ้ฎ้ข [#3862](https://github.com/vueComponent/ant-design-vue/issues/3862)
|
||||
- ๐ ไฟฎๅค `Cascader` keydown ้ๆฉไธ็ๆ้ฎ้ข [#958](https://github.com/vueComponent/ant-design-vue/issues/958)
|
||||
- ๐ ไฟฎๅค `Image` ้ข่งๅ่ฝๅคฑ่ดฅ้ฎ้ข [#3701](https://github.com/vueComponent/ant-design-vue/issues/3701)
|
||||
- ๐ ไฟฎๅคไธไบ TS ็ฑปๅ้ฎ้ข
|
||||
|
||||
## 2.1.2
|
||||
|
||||
`2021-03-28`
|
||||
|
|
|
@ -8,7 +8,7 @@ module.exports = function(modules) {
|
|||
isTSX: true,
|
||||
},
|
||||
],
|
||||
[resolve('@vue/babel-plugin-jsx'), { mergeProps: false }],
|
||||
[resolve('@vue/babel-plugin-jsx'), { mergeProps: false, enableObjectSlots: false }],
|
||||
resolve('@babel/plugin-proposal-optional-chaining'),
|
||||
resolve('@babel/plugin-transform-object-assign'),
|
||||
resolve('@babel/plugin-proposal-object-rest-spread'),
|
||||
|
|
|
@ -4,11 +4,9 @@ const path = require('path');
|
|||
const webpack = require('webpack');
|
||||
const WebpackBar = require('webpackbar');
|
||||
const { merge } = require('webpack-merge');
|
||||
const TerserPlugin = require('terser-webpack-plugin');
|
||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
|
||||
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');
|
||||
const postcssConfig = require('./postcssConfig');
|
||||
const CleanUpStatsPlugin = require('./utils/CleanUpStatsPlugin');
|
||||
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
|
||||
|
||||
|
@ -97,7 +95,10 @@ function getWebpackConfig(modules) {
|
|||
options: {
|
||||
presets: [resolve('@babel/preset-env')],
|
||||
plugins: [
|
||||
[resolve('@vue/babel-plugin-jsx'), { mergeProps: false }],
|
||||
[
|
||||
resolve('@vue/babel-plugin-jsx'),
|
||||
{ mergeProps: false, enableObjectSlots: false },
|
||||
],
|
||||
resolve('@babel/plugin-proposal-object-rest-spread'),
|
||||
],
|
||||
},
|
||||
|
@ -138,7 +139,12 @@ function getWebpackConfig(modules) {
|
|||
},
|
||||
{
|
||||
loader: 'postcss-loader',
|
||||
options: Object.assign({}, postcssConfig, { sourceMap: true }),
|
||||
options: {
|
||||
postcssOptions: {
|
||||
plugins: ['autoprefixer'],
|
||||
},
|
||||
sourceMap: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -154,7 +160,12 @@ function getWebpackConfig(modules) {
|
|||
},
|
||||
{
|
||||
loader: 'postcss-loader',
|
||||
options: Object.assign({}, postcssConfig, { sourceMap: true }),
|
||||
options: {
|
||||
postcssOptions: {
|
||||
plugins: ['autoprefixer'],
|
||||
},
|
||||
sourceMap: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
loader: 'less-loader',
|
||||
|
@ -212,9 +223,17 @@ All rights reserved.
|
|||
config.output.libraryTarget = 'umd';
|
||||
config.optimization = {
|
||||
minimizer: [
|
||||
new TerserPlugin({
|
||||
sourceMap: true,
|
||||
}),
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
compiler => {
|
||||
return () => {
|
||||
return {
|
||||
parallel: true,
|
||||
terserOptions: {
|
||||
warnings: false,
|
||||
},
|
||||
};
|
||||
};
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
|
|
|
@ -288,6 +288,7 @@ gulp.task(
|
|||
|
||||
function publish(tagString, done) {
|
||||
let args = ['publish', '--with-antd-tools'];
|
||||
args = args.concat(['--tag', 'next']);
|
||||
if (tagString) {
|
||||
args = args.concat(['--tag', tagString]);
|
||||
}
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
const rucksack = require('rucksack-css');
|
||||
const autoprefixer = require('autoprefixer');
|
||||
|
||||
module.exports = {
|
||||
plugins: [rucksack(), autoprefixer()],
|
||||
};
|
|
@ -3,7 +3,7 @@ const { readFileSync } = require('fs');
|
|||
const path = require('path');
|
||||
const postcss = require('postcss');
|
||||
const NpmImportPlugin = require('less-plugin-npm-import');
|
||||
const postcssConfig = require('./postcssConfig');
|
||||
const autoprefixer = require('autoprefixer');
|
||||
|
||||
function transformLess(lessFile, config = {}) {
|
||||
const { cwd = process.cwd() } = config;
|
||||
|
@ -21,10 +21,7 @@ function transformLess(lessFile, config = {}) {
|
|||
};
|
||||
return less
|
||||
.render(data, lessOpts)
|
||||
.then(result => {
|
||||
const source = result.css;
|
||||
return postcss(postcssConfig.plugins).process(source, { from: undefined });
|
||||
})
|
||||
.then(result => postcss([autoprefixer]).process(result.css, { from: undefined }))
|
||||
.then(r => {
|
||||
return r.css;
|
||||
});
|
||||
|
|
|
@ -3,7 +3,7 @@ module.exports = {
|
|||
test: {
|
||||
presets: [['@babel/preset-env', { targets: { node: true } }]],
|
||||
plugins: [
|
||||
['@vue/babel-plugin-jsx', { mergeProps: false }],
|
||||
['@vue/babel-plugin-jsx', { mergeProps: false, enableObjectSlots: false }],
|
||||
'@babel/plugin-proposal-optional-chaining',
|
||||
'@babel/plugin-transform-object-assign',
|
||||
'@babel/plugin-proposal-object-rest-spread',
|
||||
|
|
|
@ -42,7 +42,7 @@ export const DescriptionsItem = defineComponent({
|
|||
},
|
||||
});
|
||||
|
||||
const DEFAULT_COLUMN_MAP: Record<Breakpoint, number> = {
|
||||
const DEFAULT_COLUMN_MAP: Partial<Record<Breakpoint, number>> = {
|
||||
xxl: 3,
|
||||
xl: 3,
|
||||
lg: 3,
|
||||
|
@ -126,7 +126,7 @@ const descriptionsProps = {
|
|||
extra: PropTypes.VNodeChild,
|
||||
column: {
|
||||
type: [Number, Object] as PropType<number | Partial<Record<Breakpoint, number>>>,
|
||||
default: () => DEFAULT_COLUMN_MAP,
|
||||
default: (): number | Partial<Record<Breakpoint, number>> => DEFAULT_COLUMN_MAP,
|
||||
},
|
||||
layout: PropTypes.oneOf(tuple('horizontal', 'vertical')),
|
||||
colon: PropTypes.looseBool,
|
||||
|
@ -135,8 +135,9 @@ const descriptionsProps = {
|
|||
export type DescriptionsProps = HTMLAttributes &
|
||||
Partial<ExtractPropTypes<typeof descriptionsProps>>;
|
||||
|
||||
const Descriptions = defineComponent<DescriptionsProps>({
|
||||
const Descriptions = defineComponent({
|
||||
name: 'ADescriptions',
|
||||
props: descriptionsProps,
|
||||
Item: DescriptionsItem,
|
||||
setup(props, { slots }) {
|
||||
const { getPrefixCls } = inject('configProvider', defaultConfigProvider);
|
||||
|
@ -215,8 +216,6 @@ const Descriptions = defineComponent<DescriptionsProps>({
|
|||
},
|
||||
});
|
||||
|
||||
Descriptions.props = descriptionsProps;
|
||||
|
||||
Descriptions.install = function(app: App) {
|
||||
app.component(Descriptions.name, Descriptions);
|
||||
app.component(Descriptions.Item.name, Descriptions.Item);
|
||||
|
|
|
@ -79,8 +79,8 @@ const modalProps = {
|
|||
maskClosable: PropTypes.looseBool,
|
||||
/** ๅผบๅถๆธฒๆ Modal*/
|
||||
forceRender: PropTypes.looseBool,
|
||||
okButtonProps: PropTypes.shape(buttonTypes),
|
||||
cancelButtonProps: PropTypes.shape(buttonTypes),
|
||||
okButtonProps: PropTypes.shape(buttonTypes).loose,
|
||||
cancelButtonProps: PropTypes.shape(buttonTypes).loose,
|
||||
destroyOnClose: PropTypes.looseBool,
|
||||
wrapClassName: PropTypes.string,
|
||||
maskTransitionName: PropTypes.string,
|
||||
|
|
|
@ -9,7 +9,7 @@ const skeletonParagraphProps = {
|
|||
rows: PropTypes.number,
|
||||
};
|
||||
|
||||
export const SkeletonParagraphProps = PropTypes.shape(skeletonParagraphProps);
|
||||
export const SkeletonParagraphProps = PropTypes.shape(skeletonParagraphProps).loose;
|
||||
|
||||
export type ISkeletonParagraphProps = Partial<ExtractPropTypes<typeof skeletonParagraphProps>>;
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ const skeletonTitleProps = {
|
|||
width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
||||
};
|
||||
|
||||
export const SkeletonTitleProps = PropTypes.shape(skeletonTitleProps);
|
||||
export const SkeletonTitleProps = PropTypes.shape(skeletonTitleProps).loose;
|
||||
|
||||
export type ISkeletonTitleProps = Partial<ExtractPropTypes<typeof skeletonTitleProps>>;
|
||||
|
||||
|
|
|
@ -47,7 +47,6 @@ import './upload/style';
|
|||
import './layout/style';
|
||||
import './anchor/style';
|
||||
import './list/style';
|
||||
import './carousel/style';
|
||||
import './tree-select/style';
|
||||
import './drawer/style';
|
||||
import './skeleton/style';
|
||||
|
|
|
@ -3,6 +3,7 @@ import { mount } from '@vue/test-utils';
|
|||
import focusTest from '../../../tests/shared/focusTest';
|
||||
import { resetWarned } from '../../_util/warning';
|
||||
import mountTest from '../../../tests/shared/mountTest';
|
||||
import { ref } from 'vue';
|
||||
|
||||
describe('Switch', () => {
|
||||
focusTest(Switch);
|
||||
|
@ -10,8 +11,16 @@ describe('Switch', () => {
|
|||
|
||||
it('should has click wave effect', async () => {
|
||||
const wrapper = mount({
|
||||
render() {
|
||||
return <Switch />;
|
||||
setup() {
|
||||
const checked = ref(false);
|
||||
return () => {
|
||||
return (
|
||||
<Switch
|
||||
checked={checked.value}
|
||||
onChange={() => (checked.value = !checked.value)}
|
||||
></Switch>
|
||||
);
|
||||
};
|
||||
},
|
||||
});
|
||||
wrapper.find('.ant-switch').trigger('click');
|
||||
|
|
|
@ -31,6 +31,11 @@ const switchProps = {
|
|||
autofocus: PropTypes.looseBool,
|
||||
loading: PropTypes.looseBool,
|
||||
checked: PropTypes.looseBool,
|
||||
onChange: PropTypes.func,
|
||||
onClick: PropTypes.func,
|
||||
onKeydown: PropTypes.func,
|
||||
onMouseup: PropTypes.func,
|
||||
'onUpdate:checked': PropTypes.func
|
||||
};
|
||||
|
||||
export type SwitchProps = Partial<ExtractPropTypes<typeof switchProps>>;
|
||||
|
|
|
@ -1144,7 +1144,7 @@ export default defineComponent({
|
|||
getPopupContainer: contextGetPopupContainer,
|
||||
transformCellText,
|
||||
}) {
|
||||
const { showHeader, locale, getPopupContainer, ...restProps } = {
|
||||
const { showHeader, locale, getPopupContainer, style, ...restProps } = {
|
||||
...getOptionProps(this),
|
||||
...this.$attrs,
|
||||
} as any;
|
||||
|
|
|
@ -2,7 +2,13 @@ import { App, defineComponent, Plugin } from 'vue';
|
|||
import T, { defaultTableProps } from './Table';
|
||||
import Column from './Column';
|
||||
import ColumnGroup from './ColumnGroup';
|
||||
import { getOptionProps, getKey, getPropsData, getSlot, flattenChildren } from '../_util/props-util';
|
||||
import {
|
||||
getOptionProps,
|
||||
getKey,
|
||||
getPropsData,
|
||||
getSlot,
|
||||
flattenChildren,
|
||||
} from '../_util/props-util';
|
||||
|
||||
const Table = defineComponent({
|
||||
name: 'ATable',
|
||||
|
@ -12,7 +18,7 @@ const Table = defineComponent({
|
|||
props: defaultTableProps,
|
||||
methods: {
|
||||
normalize(elements = []) {
|
||||
const flattenElements = flattenChildren(elements)
|
||||
const flattenElements = flattenChildren(elements);
|
||||
const columns = [];
|
||||
flattenElements.forEach(element => {
|
||||
if (!element) {
|
||||
|
|
|
@ -189,7 +189,8 @@ const Base = defineComponent<InternalBlockProps>({
|
|||
onExpand?.(e);
|
||||
}
|
||||
// ================ Edit ================
|
||||
function onEditClick() {
|
||||
function onEditClick(e: MouseEvent) {
|
||||
e.preventDefault();
|
||||
state.originContent = props.content;
|
||||
triggerEdit(true);
|
||||
}
|
||||
|
|
|
@ -253,7 +253,7 @@ describe('Typography', () => {
|
|||
|
||||
describe('editable', async () => {
|
||||
function testStep(name, submitFunc, expectFunc) {
|
||||
it(name, async () => {
|
||||
fit(name, async () => {
|
||||
const onStart = jest.fn();
|
||||
const onChange = jest.fn();
|
||||
|
||||
|
@ -286,7 +286,7 @@ describe('Typography', () => {
|
|||
|
||||
await sleep(20);
|
||||
wrapper.find('textarea').element.value = 'Bamboo';
|
||||
wrapper.find('textarea').trigger('change');
|
||||
//wrapper.find('textarea').trigger('change');
|
||||
|
||||
if (submitFunc) {
|
||||
submitFunc(wrapper);
|
||||
|
|
|
@ -50,7 +50,7 @@ export const ImageProps = {
|
|||
visible: PropTypes.bool,
|
||||
onVisibleChange: PropTypes.func,
|
||||
getContainer: PropTypes.oneOf([PropTypes.func, PropTypes.bool]),
|
||||
}),
|
||||
}).loose,
|
||||
]).def(true),
|
||||
};
|
||||
type ImageStatus = 'normal' | 'error' | 'loading';
|
||||
|
|
|
@ -34,7 +34,7 @@ const Menu = {
|
|||
watch(
|
||||
() => props.selectedKeys,
|
||||
() => {
|
||||
selectedKeys.value = props.selectedKeys;
|
||||
selectedKeys.value = props.selectedKeys || [];
|
||||
},
|
||||
);
|
||||
watch(
|
||||
|
|
|
@ -57,6 +57,7 @@ const VueResizeObserver = defineComponent({
|
|||
handleResize(entries) {
|
||||
const { target } = entries[0];
|
||||
const { width, height } = target.getBoundingClientRect();
|
||||
const { offsetWidth, offsetHeight } = target;
|
||||
/**
|
||||
* Resize observer trigger when content size changed.
|
||||
* In most case we just care about element size,
|
||||
|
@ -66,7 +67,7 @@ const VueResizeObserver = defineComponent({
|
|||
const fixedHeight = Math.floor(height);
|
||||
|
||||
if (this.width !== fixedWidth || this.height !== fixedHeight) {
|
||||
const size = { width: fixedWidth, height: fixedHeight };
|
||||
const size = { width: fixedWidth, height: fixedHeight, offsetWidth, offsetHeight };
|
||||
this.width = fixedWidth;
|
||||
this.height = fixedHeight;
|
||||
this.__emit('resize', size);
|
||||
|
|
|
@ -17,7 +17,7 @@ import useLock from '../hooks/useLock';
|
|||
import { defineComponent, VNodeChild } from 'vue';
|
||||
import createRef, { RefObject } from '../../_util/createRef';
|
||||
import PropTypes from '../../_util/vue-types';
|
||||
import { VueNode } from 'ant-design-vue/es/_util/type';
|
||||
import { VueNode } from '../../_util/type';
|
||||
|
||||
export interface InnerSelectorProps {
|
||||
prefixCls: string;
|
||||
|
|
|
@ -115,7 +115,7 @@ export default {
|
|||
slideCount: children.length,
|
||||
});
|
||||
children.forEach(child => {
|
||||
const childWidth = child.props.width.split('px')[0];
|
||||
const childWidth = child.props.style?.width?.split('px')[0] || 0;
|
||||
childrenWidths.push(childWidth);
|
||||
trackWidth += childWidth;
|
||||
});
|
||||
|
|
|
@ -155,7 +155,7 @@ export default defineComponent({
|
|||
for (let j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {
|
||||
const row = [];
|
||||
for (let k = j; k < j + settings.slidesPerRow; k += 1) {
|
||||
if (settings.variableWidth && children[k].props.style) {
|
||||
if (settings.variableWidth && children[k].props?.style) {
|
||||
currentWidth = children[k].props.style.width;
|
||||
}
|
||||
if (k >= children.length) break;
|
||||
|
|
|
@ -49,13 +49,13 @@ export default defineComponent({
|
|||
wrapper: PropTypes.any,
|
||||
row: PropTypes.any,
|
||||
cell: PropTypes.any,
|
||||
}),
|
||||
}).loose,
|
||||
body: PropTypes.shape({
|
||||
wrapper: PropTypes.any,
|
||||
row: PropTypes.any,
|
||||
cell: PropTypes.any,
|
||||
}),
|
||||
}),
|
||||
}).loose,
|
||||
}).loose,
|
||||
expandIconAsCell: PropTypes.looseBool,
|
||||
expandedRowKeys: PropTypes.array,
|
||||
expandedRowClassName: PropTypes.func,
|
||||
|
|
|
@ -874,12 +874,28 @@ const Select = defineComponent({
|
|||
},
|
||||
|
||||
onSearchInputKeyDown(event) {
|
||||
const { _searchValue: searchValue, _valueList: valueList } = this.$data;
|
||||
const {
|
||||
_searchValue: searchValue,
|
||||
_valueList: valueList,
|
||||
_valueEntities: valueEntities,
|
||||
} = this.$data;
|
||||
|
||||
const { keyCode } = event;
|
||||
|
||||
if (KeyCode.BACKSPACE === keyCode && this.isMultiple() && !searchValue && valueList.length) {
|
||||
const lastValue = valueList[valueList.length - 1].value;
|
||||
let lastValue = valueList[valueList.length - 1].value;
|
||||
const { treeCheckStrictly } = this.$props;
|
||||
if (!treeCheckStrictly) {
|
||||
let cur = valueEntities[lastValue];
|
||||
while (cur) {
|
||||
if (valueList.some(j => j.value === cur.value)) {
|
||||
lastValue = cur.value;
|
||||
cur = cur.parent;
|
||||
} else {
|
||||
cur = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.onMultipleSelectorRemove(event, lastValue);
|
||||
}
|
||||
},
|
||||
|
|
|
@ -31,7 +31,7 @@ export default {
|
|||
point: PropTypes.shape({
|
||||
pageX: PropTypes.number,
|
||||
pageY: PropTypes.number,
|
||||
}),
|
||||
}).loose,
|
||||
},
|
||||
data() {
|
||||
this.domEl = null;
|
||||
|
|
|
@ -134,10 +134,11 @@ const List = defineComponent({
|
|||
|
||||
// ================================ Height ================================
|
||||
const [setInstance, collectHeight, heights] = useHeights(getKey, null, null);
|
||||
// ========================== Visible Calculation =========================
|
||||
const calRes = computed(() => {
|
||||
|
||||
const calRes = ref();
|
||||
watchEffect(() => {
|
||||
if (!useVirtual.value) {
|
||||
return {
|
||||
calRes.value = {
|
||||
scrollHeight: undefined,
|
||||
start: 0,
|
||||
end: state.mergedData.length - 1,
|
||||
|
@ -147,7 +148,7 @@ const List = defineComponent({
|
|||
|
||||
// Always use virtual scroll bar in avoid shaking
|
||||
if (!inVirtual.value) {
|
||||
return {
|
||||
calRes.value = {
|
||||
scrollHeight: fillerInnerRef.value?.offsetHeight || 0,
|
||||
start: 0,
|
||||
end: state.mergedData.length - 1,
|
||||
|
@ -193,13 +194,14 @@ const List = defineComponent({
|
|||
|
||||
// Give cache to improve scroll experience
|
||||
endIndex = Math.min(endIndex + 1, state.mergedData.length);
|
||||
return {
|
||||
calRes.value = {
|
||||
scrollHeight: itemTop,
|
||||
start: startIndex,
|
||||
end: endIndex,
|
||||
offset: startOffset,
|
||||
};
|
||||
});
|
||||
|
||||
// =============================== In Range ===============================
|
||||
const maxScrollHeight = computed(() => calRes.value.scrollHeight! - props.height!);
|
||||
|
||||
|
|
39
package.json
39
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "ant-design-vue",
|
||||
"version": "2.1.2",
|
||||
"version": "2.1.4",
|
||||
"title": "Ant Design Vue",
|
||||
"description": "An enterprise-class UI design language and Vue-based implementation",
|
||||
"keywords": [
|
||||
|
@ -39,7 +39,7 @@
|
|||
"pre-publish": "node ./scripts/prepub && npm run generator-webtypes",
|
||||
"prettier": "prettier -c --write '**/*'",
|
||||
"pretty-quick": "pretty-quick",
|
||||
"dist": "node --max_old_space_size=6144 antd-tools/cli/run.js dist",
|
||||
"dist": "node --max_old_space_size=8192 antd-tools/cli/run.js dist",
|
||||
"lint": "eslint -c ./.eslintrc --fix --ext .jsx,.js,.vue,.ts,.tsx ./components",
|
||||
"lint:style": "stylelint \"{site,components}/**/*.less\" --syntax less",
|
||||
"codecov": "codecov"
|
||||
|
@ -81,7 +81,7 @@
|
|||
"@babel/preset-typescript": "^7.10.4",
|
||||
"@commitlint/cli": "^12.0.0",
|
||||
"@commitlint/config-conventional": "^12.0.0",
|
||||
"@octokit/rest": "^16.0.0",
|
||||
"@octokit/rest": "^18.0.0",
|
||||
"@types/fs-extra": "^9.0.8",
|
||||
"@types/lodash-es": "^4.17.3",
|
||||
"@types/raf": "^3.4.0",
|
||||
|
@ -94,8 +94,8 @@
|
|||
"@vue/eslint-config-typescript": "^7.0.0",
|
||||
"@vue/test-utils": "^2.0.0-0",
|
||||
"@webpack-cli/serve": "^1.3.1",
|
||||
"acorn": "^7.0.0",
|
||||
"autoprefixer": "^9.6.0",
|
||||
"acorn": "^8.0.0",
|
||||
"autoprefixer": "^10.2.0",
|
||||
"axios": "^0.21.0",
|
||||
"babel-eslint": "^10.0.1",
|
||||
"babel-jest": "^26.1.0",
|
||||
|
@ -104,25 +104,25 @@
|
|||
"babel-plugin-inline-import-data-uri": "^1.0.1",
|
||||
"babel-plugin-istanbul": "^6.0.0",
|
||||
"case-sensitive-paths-webpack-plugin": "^2.1.2",
|
||||
"chalk": "^3.0.0",
|
||||
"chalk": "^4.1.0",
|
||||
"cheerio": "^1.0.0-rc.2",
|
||||
"codecov": "^3.0.0",
|
||||
"colorful": "^2.1.0",
|
||||
"commander": "^4.0.0",
|
||||
"commander": "^7.2.0",
|
||||
"compare-versions": "^3.3.0",
|
||||
"cross-env": "^7.0.0",
|
||||
"css-loader": "^3.0.0",
|
||||
"deep-assign": "^2.0.0",
|
||||
"css-loader": "^5.0.0",
|
||||
"deep-assign": "^3.0.0",
|
||||
"docsearch.js": "^2.6.3",
|
||||
"enquire-js": "^0.2.1",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint": "^7.25.0",
|
||||
"eslint-config-prettier": "^8.0.0",
|
||||
"eslint-plugin-html": "^6.0.0",
|
||||
"eslint-plugin-markdown": "^2.0.0-alpha.0",
|
||||
"eslint-plugin-prettier": "^3.1.4",
|
||||
"eslint-plugin-vue": "^7.1.0",
|
||||
"fetch-jsonp": "^1.1.3",
|
||||
"fs-extra": "^8.0.0",
|
||||
"fs-extra": "^10.0.0",
|
||||
"glob": "^7.1.2",
|
||||
"gulp": "^4.0.1",
|
||||
"gulp-babel": "^8.0.0",
|
||||
|
@ -140,20 +140,20 @@
|
|||
"json-templater": "^1.2.0",
|
||||
"jsonp": "^0.2.1",
|
||||
"less": "^4.0.0",
|
||||
"less-loader": "^7.0.0",
|
||||
"less-loader": "^8.0.0",
|
||||
"less-plugin-npm-import": "^2.1.0",
|
||||
"less-vars-to-js": "^1.3.0",
|
||||
"lint-staged": "^10.0.0",
|
||||
"lint-staged": "^11.0.0",
|
||||
"marked": "0.3.18",
|
||||
"merge2": "^1.2.1",
|
||||
"mini-css-extract-plugin": "^0.10.0",
|
||||
"mini-css-extract-plugin": "^1.5.0",
|
||||
"minimist": "^1.2.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"mockdate": "^2.0.2",
|
||||
"nprogress": "^0.2.0",
|
||||
"optimize-css-assets-webpack-plugin": "^5.0.1",
|
||||
"postcss": "^7.0.6",
|
||||
"postcss-loader": "^3.0.0",
|
||||
"postcss": "^8.2.12",
|
||||
"postcss-loader": "^5.0.0",
|
||||
"prettier": "^1.18.2",
|
||||
"pretty-quick": "^2.0.0",
|
||||
"prismjs": "^1.20.0",
|
||||
|
@ -164,17 +164,16 @@
|
|||
"rucksack-css": "^1.0.2",
|
||||
"selenium-server": "^3.0.1",
|
||||
"semver": "^7.0.0",
|
||||
"style-loader": "^1.0.0",
|
||||
"style-loader": "^2.0.0",
|
||||
"stylelint": "^13.0.0",
|
||||
"stylelint-config-prettier": "^8.0.0",
|
||||
"stylelint-config-rational-order": "^0.1.2",
|
||||
"stylelint-config-standard": "^21.0.0",
|
||||
"stylelint-config-standard": "^22.0.0",
|
||||
"stylelint-declaration-block-no-ignored-properties": "^2.1.0",
|
||||
"stylelint-order": "^4.0.0",
|
||||
"terser-webpack-plugin": "^3.0.3",
|
||||
"through2": "^3.0.0",
|
||||
"ts-jest": "^26.4.1",
|
||||
"ts-loader": "^8.1.0",
|
||||
"ts-loader": "^9.1.0",
|
||||
"typescript": "^4.2.0",
|
||||
"umi-mock-middleware": "^1.0.0",
|
||||
"umi-request": "^1.3.5",
|
||||
|
|
2
v2-doc
2
v2-doc
|
@ -1 +1 @@
|
|||
Subproject commit 31d85319dcc0438b3c80957c99f57b931b047c11
|
||||
Subproject commit 4da56dac85f43ad7a288951cbf09d860ecf93bb4
|
|
@ -33,7 +33,7 @@ const babelConfig = {
|
|||
style: true,
|
||||
},
|
||||
],
|
||||
['@vue/babel-plugin-jsx', { mergeProps: false }],
|
||||
['@vue/babel-plugin-jsx', { mergeProps: false, enableObjectSlots: false }],
|
||||
'@babel/plugin-proposal-optional-chaining',
|
||||
'@babel/plugin-transform-object-assign',
|
||||
'@babel/plugin-proposal-object-rest-spread',
|
||||
|
@ -118,9 +118,7 @@ module.exports = {
|
|||
use: [
|
||||
{
|
||||
loader: MiniCssExtractPlugin.loader,
|
||||
options: {
|
||||
hmr: true,
|
||||
},
|
||||
options: {},
|
||||
},
|
||||
'css-loader',
|
||||
],
|
||||
|
|
Loadingโฆ
Reference in New Issue