diff --git a/CHANGELOG.en-US.md b/CHANGELOG.en-US.md index 97ac062c9..e5b55698c 100644 --- a/CHANGELOG.en-US.md +++ b/CHANGELOG.en-US.md @@ -1,7 +1,59 @@ # Change Log +`ant-design-vue` strictly follows [Semantic Versioning 2.0.0](http://semver.org/). + +#### Release Schedule + +* Weekly release: patch version at the end of every week for routine bugfix (anytime for urgent bugfix). +* Monthly release: minor version for new features. +* Major version release is not included in this schedule for breaking change and new features. + --- +## 1.3.0 +`2019-01-12` + +- 🎉 🎉 🎉 Publish the vscode plugin [ant-design-vue-helper](https://marketplace.visualstudio.com/items?itemName=ant-design-vue.vscode-ant-design-vue-helper) + +### Component features and styles are synchronized to antd version 3.11.6. +1.3.0 brings two new Components, a lot of exciting changes and new features. + +- 🔥 Added a new component [Comment](https://vuecomponent.github.io/ant-design-vue/components/comment/)。 +- 🔥 dded a new component [ConfigProvider](https://vuecomponent.github.io/ant-design-vue/components/config-provider/) for user to customize some global setting. + +Component Fixes / Enhancements: + +- 🌟 Avatar Added `srcSet` prop that is a list of sources to use for different screen resolutions. +- 🌟 Notification Added `onClick` prop that is called when the notification is clicked. +- Transfer + - 🌟 Added `search` event that is executed when search field are changed and deprecated `searchChange` event. + - 🌟 Added `disabled` prop that whether disable transfer. +- 🌟 Refactor Badge, support `count` as custom component. +- Slider + - 🌟 Added `tooltipVisible` prop that whether Tooltip will always show. + - 🌟 Optimize the focus effect + - 🐞 Fix tooltip does not display the problem when focus through the keyboard tab. + - 🐞 Fix the hidden switch problem of Tooltip while dragging. +- Calendar + - 🌟 Support multiple date format. + - 🌟 showSearch added `limit` prop that support limit filtered item count. +- Table + - 🌟 Added `expandIcon` prop that custom the default expand icon. + - 🌟 customCell added `index` prop. +- Select + - 🌟 Added `removeIcon`、`clearIcon`、`menuItemSelectedIcon` prop,allow setting `remove`、`clear`、`menuItemSelected` custom icons. + - 🌟 Added `dropdownRender` prop that custom dropdown content. + - 🌟 Added `loading` prop that indicate loading state. +- 🌟 Optimize the display of the Button when it contains an Icon. +- ⚡️ Refactor Tag component with less code and better performance. +- 💄 Added `title` prop that Menu.Item support tooltip title when collapsed. +- 💄 Chore Card header and loading UI. +- 💄 Optimized Spin wrapper styles and improve performance slightly. +- 🐞 Fix TextArea use resize observer to check textarea size. +- 🐞 Fix Tooltip in the disabled state, the style error problem.[#389](https://github.com/vueComponent/ant-design-vue/issues/389) +- 🐞 Fix some component TypeScript definitions. + + ## 1.2.5 `2019-01-06` diff --git a/CHANGELOG.zh-CN.md b/CHANGELOG.zh-CN.md index 0f77d5d23..14339afe1 100644 --- a/CHANGELOG.zh-CN.md +++ b/CHANGELOG.zh-CN.md @@ -1,7 +1,59 @@ # 更新日志 +`ant-design-vue` 严格遵循 [Semantic Versioning 2.0.0](http://semver.org/lang/zh-CN/) 语义化版本规范。 + +#### 发布周期 + +* 修订版本号:每周末会进行日常 bugfix 更新。(如果有紧急的 bugfix,则任何时候都可发布) +* 次版本号:带有新特性的向下兼容的版本。 +* 主版本号:含有破坏性更新和新特性,不在发布周期内。 + --- +## 1.3.0 +`2019-01-12` + +- 🎉 🎉 🎉 发布 vscode 插件 [ant-design-vue-helper](https://marketplace.visualstudio.com/items?itemName=ant-design-vue.vscode-ant-design-vue-helper) + +### 组件功能和样式同步到 antd 3.11.6 版本。 +1.3.0 版本带来了两个新组件,还有很多激动人心的变化和新特性。 + +- 🔥 增加了一个新组件 [Comment](https://vuecomponent.github.io/ant-design-vue/components/comment-cn/)。 +- 🔥 增加了一个新组件 [ConfigProvider](https://vuecomponent.github.io/ant-design-vue/components/config-provider-cn/) 为组件提供统一的全局化配置。 + +组件修复/功能增强: + +- 🌟 Avatar 组件增加 `srcSet` 属性,用于设置图片类头像响应式资源地址。 +- 🌟 Notification 组件增加 `onClick` 属性,点击通知时触发的回调函数。 +- Transfer + - 🌟 增加 `search` 事件,搜索框内容时改变时的回调函数,并废弃 `searchChange` 事件。 + - 🌟 增加 `disabled` 属性,用于禁用搜索框。 +- 🌟 Badge 进行了重构,`count` 支持自定义组件。 +- Slider + - 🌟 增加 `tooltipVisible` 属性,用于 Tooltip 是否始终显示。 + - 🌟 优化focus效果 + - 🐞 修复键盘tab键聚焦时,Tooltip不显示问题。 + - 🐞 修复拖动时Tooltip不停的显隐切换问题。 +- Calendar + - 🌟 支持多种时间格式。 + - 🌟 showSearch 方法增加 `limit` 参数,用于限制搜索结果展示数量。 +- Table + - 🌟 增加 `expandIcon` 属性,用于自定义表格展开图标。 + - 🌟 customCell 方法增加 `index` 参数。 +- Select + - 🌟 增加 `removeIcon`、`clearIcon`、`menuItemSelectedIcon` 属性,用于自定义删除、清空、选中的图标。 + - 🌟 增加 `dropdownRender` 属性, 用于自定义下拉框内容。 + - 🌟 增加 `loading` 属性, 用于展示加载中状态。 +- 🌟 优化 Button 在含有Icon时的显示效果。 +- ⚡️ 重构 Tag 组件,简化代码并提升性能。 +- 💄 Menu.Item 组件增加 `title` 属性,用于在收缩时展示的悬浮标题。 +- 💄 微调 Card 头部和加载中的样式细节。 +- 💄 优化 Spin 样式并略微提升了切换状态的性能。 +- 🐞 修复 TextArea 组件高度不能自适应问题。 +- 🐞 修复 Tooltip 在disabled状态下Button中,样式错误问题。[#389](https://github.com/vueComponent/ant-design-vue/issues/389) +- 🐞 修复一些组件 TypeScript 定义。 + + ## 1.2.5 `2019-01-06` diff --git a/components/_util/BaseMixin.js b/components/_util/BaseMixin.js index 1897d3cfe..f01a6b5e3 100644 --- a/components/_util/BaseMixin.js +++ b/components/_util/BaseMixin.js @@ -1,21 +1,21 @@ export default { - directives: { - ref: { - bind: function (el, binding, vnode) { - binding.value(vnode.componentInstance ? vnode.componentInstance : vnode.elm) - }, - update: function (el, binding, vnode) { - binding.value(vnode.componentInstance ? vnode.componentInstance : vnode.elm) - }, - unbind: function (el, binding, vnode) { - binding.value(null) - }, - }, - }, + // directives: { + // ref: { + // bind: function (el, binding, vnode) { + // binding.value(vnode.componentInstance ? vnode.componentInstance : vnode.elm) + // }, + // update: function (el, binding, vnode) { + // binding.value(vnode.componentInstance ? vnode.componentInstance : vnode.elm) + // }, + // unbind: function (el, binding, vnode) { + // binding.value(null) + // }, + // }, + // }, methods: { setState (state, callback) { - const newState = typeof state === 'function' ? state(this.$data) : state + const newState = typeof state === 'function' ? state(this.$data, this.$props) : state // if (this.getDerivedStateFromProps) { // Object.assign(newState, this.getDerivedStateFromProps(getOptionProps(this), { ...this.$data, ...newState }, true) || {}) // } diff --git a/components/_util/Dom/addEventListener.js b/components/_util/Dom/addEventListener.js index 2c4c3eec3..4ea8998c8 100644 --- a/components/_util/Dom/addEventListener.js +++ b/components/_util/Dom/addEventListener.js @@ -1,5 +1,5 @@ import addDOMEventListener from 'add-dom-event-listener' -export default function addEventListenerWrap (target, eventType, cb) { - return addDOMEventListener(target, eventType, cb) +export default function addEventListenerWrap (target, eventType, cb, option) { + return addDOMEventListener(target, eventType, cb, option) } diff --git a/components/_util/props-util.js b/components/_util/props-util.js index 996b6f8a6..65856cae9 100644 --- a/components/_util/props-util.js +++ b/components/_util/props-util.js @@ -52,9 +52,11 @@ const getSlots = (ele) => { const children = ele.children || componentOptions.children || [] const slots = {} children.forEach(child => { - const name = (child.data && child.data.slot) || 'default' - slots[name] = slots[name] || [] - slots[name].push(child) + if (!isEmptyElement(child)) { + const name = (child.data && child.data.slot) || 'default' + slots[name] = slots[name] || [] + slots[name].push(child) + } }) return slots } @@ -215,12 +217,12 @@ export function getComponentName (opts) { return opts && (opts.Ctor.options.name || opts.tag) } -export function isEmptyElement (ele) { - return !(ele.tag || ele.text.trim() !== '') +export function isEmptyElement (c) { + return !(c.tag || (c.text && c.text.trim() !== '')) } export function filterEmpty (children = []) { - return children.filter(c => c.tag || (c.text && c.text.trim() !== '')) + return children.filter(c => !isEmptyElement(c)) } const initDefaultProps = (propTypes, defaultProps) => { Object.keys(defaultProps).forEach(k => { @@ -252,7 +254,11 @@ export function mergeProps () { } function isValidElement (element) { - return element && element.context && element.context._isVue + return element && + typeof element === 'object' && + 'componentOptions' in element && + 'context' in element && + element.tag !== undefined // remove text node } export { diff --git a/components/_util/wave.jsx b/components/_util/wave.jsx index ac262e156..396d5d5bc 100644 --- a/components/_util/wave.jsx +++ b/components/_util/wave.jsx @@ -117,7 +117,7 @@ export default { }, resetEffect (node) { - if (!node || node === this.extraNode) { + if (!node || node === this.extraNode || !(node instanceof Element)) { return } const { insertExtraNode } = this.$props diff --git a/components/affix/index.jsx b/components/affix/index.jsx index a9fb0b25b..56df9af4f 100644 --- a/components/affix/index.jsx +++ b/components/affix/index.jsx @@ -83,6 +83,8 @@ const Affix = { // Wait for parent component ref has its value this.timeout = setTimeout(() => { this.setTargetEventListeners(target) + // Mock Event object. + this.updatePosition({}) }) }, watch: { diff --git a/components/affix/style/index.less b/components/affix/style/index.less index cd61d1ed0..9f19860e5 100644 --- a/components/affix/style/index.less +++ b/components/affix/style/index.less @@ -1,4 +1,4 @@ -@import "../../style/themes/default"; +@import '../../style/themes/default'; .@{ant-prefix}-affix { position: fixed; diff --git a/components/alert/__tests__/__snapshots__/demo.test.js.snap b/components/alert/__tests__/__snapshots__/demo.test.js.snap index b42763a71..c053c3624 100644 --- a/components/alert/__tests__/__snapshots__/demo.test.js.snap +++ b/components/alert/__tests__/__snapshots__/demo.test.js.snap @@ -5,7 +5,7 @@ exports[`renders ./components/alert/demo/banner.md correctly 1`] = `