Releases: ecomfe/veui
v1.0.0-alpha.18
⚠️ 非兼容性变更
- [^] 对 Vue-Awesome 的依赖升级到
3.1.2
。如果之前有在项目中直接使用vue-awesome@2
的,需要升级到最新版,否则无法混用 VEUI 与 VueAwesome 的图标。 - [^]
Tooltip
组件的custom
prop 被废弃,将在1.0.0
移除。替代方式为:将trigger
prop 指定为custom
来使用自定义逻辑控制打开及关闭。 - [^]
Pagination
组件内部所有的class
中的pager
被更名为pagination
。如果在样式代码中进行过定制,请进行全局替换。 - [^]
Uploader
组件的progress
prop 的'number'
取值被替换为'percent'
及'detail'
,分别表示显示百分比及显示进度详情。进度详情将以`${loaded}KB/${total}KB`
的形式输出。 - [^]
Uploader
组件的 propconvert-response
函数必须返回转换后的数据对象。
💡 主要变更
- [^] 增加主题包为组件部件指定
ui
的功能,同时组件现在将自动继承父组件中可继承的ui
字段,并更新了veui-theme-one
中所有相应的部分。 - [+]
Breadcrumb
组件的 scoped slotdefault
新增参数index
。 - [+]
Button
组件增加ui
选项dark
。 - [^]
rule
的validate
方法现在可以传入额外的上下文的数据,比如在Field
验证时传入整个Form
的data
。
🐞 问题修复
- [^] 修正
GridContainer
没有正确发布的问题。 - [^] 修复
Slider
组件在有step
时的选择逻辑,由向下选取点改为就近取点,且修正了min
值非0
时的逻辑。 - [^] 修复
Uploader
组件无法正确获取全局配置的uploader.convertResponse
函数的问题。
v1.0.0-alpha.17
⚠️ 非兼容性变更
- [^]
Dialog
组件预设ui
值top
更名为high
。 - [^]
Button
组件再loading
状态下将保留 slot 内容,不再强行设置为'加载中……'
。 - [-] 删除了
$confirm
、$prompt
插件本来就无效的带状态唤起接口。
💡 主要变更
- [+] 增加
longpress
指令。 - [+]
Dropdown
组件增加了trigger
prop,来指定何时展开下拉框。 - [+]
Dropdown
组件增加了split
prop,来允许拆分指令按钮与下拉切换按钮。 - [+]
Button
组件增加了mouseenter
/mouseleave
事件。 - [+]
NumberInput
组件支持长按调整值。 - [+] 增加了
GridContainer
/GridRow
/GridColumn
组件。 - [+]
Progress
组件增加了预设ui
值fluid
,自适应容器宽度。 - [+]
Dialog
组件增加了预设ui
值small
/large
/auto
,用于指定预设宽度。 - [+] 为
Overlay
/Dialog
/AlertBox
/ConfirmBox
/PromptBox
组件增加了afterclose
事件。 - [^] 调整了
alert
/confirm
/prompt
/toast
插件的接口,现在$alert
/$confirm
/$prompt
/$toast
均可直接作为函数调用。
🐞 问题修复
- [^] 修复
Tabs
组件移除标签时可能产生的问题。 - [^] 修正
ConfirmBox
没有正确触发事件的问题。
v1.0.0-alpha.16
💡 主要变更
- [+] 增加了
babel-preset-veui
,简化了引入 VEUI 一起进行转译所需的步骤。 - [^] 引入
date-fns
替换了对moment
的依赖。
🐞 问题修复
- [^] 修复了
DatePicker
组件panel
prop 默认值错误的问题。 - [^] 修正
Alert
组件样式。 - [^] 修正
Breadcrumb
组件样式。
v1.0.0-alpha.15
⚠️ 非兼容性变更
-
[^] 因为
less@2
依赖的包存在安全漏洞,故此次升级将对less
的依赖升级到了^3.8.0
,对less-plugin-est
的依赖升级到了^3.0.0
。迁移指南
- 更新
less
与less-plugin-est
的版本; - 如果使用
vue-cli
的webpack
模板初始化项目,请按如下方式修改build/utils.js
文件:
- less: generateLoaders('less'), + less: generateLoaders('less', { javascriptEnabled: true }),
- 更新
-
[^]
Dialog
组件现在默认会在点击默认的按钮及按下 esc 键时关闭并通过.sync
修饰符同步外部数据。并且新增before-close
函数 prop 来处理需要阻止对话框关闭的情况。增加default
/foot
slot 的 slot 参数close
,用来在重写组件 slot 时调用关闭逻辑。迁移指南
对于重写
foot
slot 处理关闭逻辑的使用方式,不会受新逻辑影响。对于监听
ok
/cancel
事件并直接关闭对话框时,亦不受此改动影响。当需要阻止对话框关闭时,需要使用新增的before-close
函数 prop。before-close
prop 对应的函数类型为function(type: string): boolean=|Promise<boolean=>
,type
将会是Dialog
组件关闭操作的类型,默认情况下会有ok
与cancel
。返回值可以是一个boolean
,也可以是一个 resolveboolean
的Promise
,用来处理可能需要异步决定对话框关闭状态的情况。返回值或 resolve 值非false
时才会关闭对话框。例如,如果我们要异步处理ok
,而对cancel
直接关闭,可以按如下方式处理:<veui-dialog :open.sync="dialogOpen" :before-close="submit">...</veui-dialog>
methods: { submit (type) { if (type === 'ok') { return axios.post('/item/create', {/* ... */}) .then(({ id, error }) => { if (error) { this.showError(error) return false // resolve `false` 将阻止对话框关闭 } }) } // resolve 但不返回 `false` 时会关闭对话框 }, // ... }
对于需要重写 slot(例如添加底部按钮等)的情况,可以使用新增的 slot 参数
close
,类型为function(type: string): void
,使用者只需要在合适的时机自行调用close
函数即可,type
默认支持ok
/cancel
并会透传到before-close
的流程中。例如:<veui-dialog :open.sync="dialogOpen" :before-close="submit"> ... <template slot="foot" slot-scope="{ close }"><button @click="close">OK</button></template> </veui-dialog>
-
[^]
Pagination
组件的redirect
事件回调参数从({ page, event })
调整为(page, event)
。 -
[^] 调整
FilterPanel
组件和Tree
组件的对外接口参数名,统一将options
/option
更名为items
/item
。 -
[^] 调整
resize
指令的默认每次都触发回调,增加throttle
/debounce
/leading
三个 modifier。 -
[^] 通过
prompt
manager 以指令式调用输入弹框功能时,现在返回的Promise
在确认提交与取消时resolve
的值分别是字符串和null
,与原生全局prompt
方法一致(原来是{ isOk: true, value }
与false
)。 -
[^]
Button
组件加载中的文本修改为默认 slot 的内容。 -
[^] 调整
rule
出错信息变量模板匹配语法从%{ruleValue}
修为${ruleValue}
,旧语法将在1.0.0
移除。 -
[^]
Alert
组件新增closable
prop,默认为false
,显式指定后才会显示关闭按钮/文本,而非原来的始终显示关闭按钮/文本。 -
[^]
Alert
组件的close-text
prop 更名为close-label
,close-text
将在1.0.0
移除。
💡 主要变更
- [+]
Uploader
组件增加自定义上传模式。request-mode
新增可选值custom
,设置为该值时,支持通过新增的 propupload
自定义上传函数。 - [+]
Uploader
组件增加切换动画。 - [+]
Steps
组件的click
事件回调参数增加原生事件对象event
,现为(index, event)
。 - [+]
Overlay
组件浮层根元素上现在增加了对overlay.overlayClass
全局配置项对应类名的输出。 - [+]
Switch
组件现在会透传与Checkbox
组件一致的原生 DOM 事件。 - [+]
Toast
组件增加 propopen
,支持.sync
。 - [+]
Toast
组件增加 slotdefault
。 - [+]
Toast
组件增加全局配置toast.duration
。
🐞 问题修复
- [^] 修复了
Uploader
组件iframe
模式中上传失败后重试时没有上传文件的问题。 - [^] 修复了
Uploader
组件初始化后丢失name
和src
以外的自定义属性丢失的问题。 - [^] 修复了
Overlay
组件中寻找最近父级浮层时,可能跨过太多层级的问题。 - [^] 修复了
FilterPanel
组件在不展示搜索框的时候,内容区域高度不正确的问题。 - [^] 修复了
Field
组件内部输入组件交互时数据同步导致校验不正确的问题。 - [^] 修复了
Tabs
组件使用label
slot 时的事件绑定问题。 - [^] 修复了
Input
组件父级设置值为null
后,仅格式化本地值为''
,未同步''
至父级的问题。 - [^] 去除了
Steps
组件的多余外边距。 - [^] 去除了
Progress
组件多余的内边距。 - [^] 修正了
Progress
组件的auto-succeed
prop 的逻辑。 - [^] 修正了
NumberInput
组件的min
/max
prop 有时失效的问题。 - [^] 修正了
Alert
组件多消息导航和关闭按钮不会同时显示的问题。 - [^] 修正了
alert
/confirm
/prompt
plugin 不能正常工作的问题。 - [^] 修复了
Table
组件foot
slot 的渲染。
v1.0.0-alpha.14
⚠️ 非兼容性变更
- [^]
Progress
组件的state
prop 更名为status
。state
将在1.0.0
移除。 - [^]
Schedule
组件的shortcuts-display
prop 值expand
/collapse
分别更名为inline
/popup
。旧的值将在1.0.0
移除。 - [^]
Schedule
组件的header
slot 更名为header-content
,新header
slot 现在包括顶部内容的整个容器。
💡 主要变更
- [^]
RegionPicker
组件的datasource
prop 中的id
字段重命名为value
,但id
依然保留,优先使用value
。 - [^] 优化了
outside
指令解析数字值的逻辑。 - [^] 为
Pagination
组件内的Select
组件新增了overlay-class
定义,方便自定义样式。 - [^] 优化了
Switch
、Steps
、Schedule
、Table
、Fieldset
等组件的可访问性,实现了键盘交互。
🐞 问题修复
- [^] 修复了更多在计算浮层层级过程中有时会导致死循环的场景。
- [^] 去除了
dropdown
mixin 中 多余的默认overlay-options
约束条件,修正某些场景下的浮层展开的默认方向。 - [^] 修复了
Input
组件初始值为null
时使用输入法会失效的问题。 - [^] 现在
Searchbox
组件在suggestions
变化时会自动更新浮层位置。 - [^] 修复了点击
Label
组件激活同Field
下的输入组件时,没有考虑组件禁用/只读状态的问题。
v1.0.0-alpha.13
⚠️ 非兼容性变更
- [^]
Checkbox
、Switch
组件新增 propmodel
,对应v-model
。checked
prop 不再对应v-model
,而是支持.sync
。 - [^]
Checkbox
、Radio
、Switch
组件新增input
事件用于v-model
。change
事件参数抛出当前的checked
值,仅在用户切换时触发。 - [^]
Calendar
组件的selectstart
事件抛出的参数格式从[Date]
修改为Date
,表示选择的起始日期,去除多余的数组。 - [^] 移除
DatePicker
组件的placeholderBegin
、placeholderEnd
prop 及相应的 slotplaceholder-begin
、placeholder-end
,以及全局配置datepicker.placeholderBegin
、datepicker.placeholderEnd
。取而代之的是,增加配置项datepicker.rangePlaceholder
,并总是响应外部设置的placeholder
prop。默认状态下,会根据range
prop 来显示datepicker.placeholder
或datepicker.rangePlaceholder
的值。 - [^]
DatePicker
组件的date
scoped slot 现在会透传给内部的Calendar
的同名 scoped slot,不再表示已选择日期区域。原来已选择位置的 scoped slot 重命名为selected
,为范围选择时;类型为Date
的date
字段废弃,取而代之的是三个类型为number
的字段:year
、month
(0
表示一月)、date
;增加参数字段position
,起止日期分别对应from
和to
。 Carousel
组件的轮播项内容现在完全在 scoped slotitem
内部,不再在外部添加行内图片背景样式,方便自定义非图片类型的轮播项。
💡 主要变更
- [^]
veui-loader
支持 webpack 4,resolve 路径逻辑调整为异步。 - [+] 为
RegionPicker
添加了键盘导航和 WAI-ARIA 支持。 - [+]
BreadcrumbItem
和Link
组件的to
prop 支持使用Object
格式(以传递具名路由对象)。 - [+]
DatePicker
组件增加today
prop,和Calendar
对应prop
一致。 - [+]
DatePicker
组件的format
prop 现在可以传入函数,签名为function(Date): string
。 - [+]
DatePicker
组件的shortcuts
配置中,to
字段新增默认值0
。 - [+]
Input
组件新增 WebKit 自动填充状态的判断,优化样式。 - [+]
Tabs
新增 ui 值block
,并带动画效果。 - [+]
Tab
组件新增status
prop。 - [^]
Tab
组件在路由模式下会自动渲染<router-view>
。 - [*]
Tab
组件的 propto
现在可以使用相对路径。 - [^]
resize
指令底层升级,切换到resize-detecor
,并增加 debounce 优化。 - [+]
RadioGroup
、CheckboxGroup
、RadioButtonGroup
及CheckButtonGroup
组件的默认 scoped slot 参数增加index
表示选项序号。 - [^]
numeric
校验规则现在禁止多余的0
开头的字符串值。 - [^]
Select
组件的 scoped slotlabel
现在作用域绑定到完整的已选中的options
项,而非{ label }
。
🐞 问题修复
- [^] 修复了上一版本中引入的浮层
autofocus
失效的问题。 - [^] 修复了上一版本中引入的在计算浮层层级过程中有时会导致死循环的问题。
- [^] 修复了
Textarea
组件初始value
为null
时的问题。 - [^] 修复了
Input
组件在 SSR 时报错的问题。 - [^]
input
类型组件的错误状态通过组件数据进行传递,而不仅仅依赖于外层Field
的class
。 - [^] 修复了
Tab
使用路由模式时设置name
prop 会出错的问题。 - [^] 修复了
Table
的update:selected
事件有时未正确抛出的问题。 - [^] 修复了
Progress
组件 prop 校验的问题。 - [^] 修复了
OptionGroup
组件未将disabled
传递给Option
组件的问题。
v1.0.0-alpha.12
⚠️ 非兼容性变更
-
[^]
Uploader
组件在maxCount
的值是1
的情况下,value
的默认类型从字符串改成对象,可以通过设置 propcompat
为true
将value
的类型设置为字符串兼容旧版本。compat
模式未来不会移除,但不建议使用。迁移指南
Uploader
在max-count
为1
时的value
prop 数据类型修改为对象,和多文件时的数组项相同。需要兼容原字符串数据格式时,需要设置compat
prop 为true
:<veui-uploader compat .../>
-
[^] 修改了
Radio
组件的v-model
语义,现在机制和 Vue.js 对原生<input type="radio">
的处理保持一致。迁移指南
此版本前的
Radio
组件的v-model
对应checked
属性,但由于之前的版本中存在多个同name
的Radio
组件时,被取消选中的单选框并不会响应数据变化,导致实际v-model
并不完全可用。新版本在使用v-model
的场景下修复了这个问题,并把逻辑和 Vue.js 对原生元素的处理方式进行了对齐。<veui-radio value="html" name="lang" v-model="lang"/> <veui-radio value="css" name="lang" v-model="lang"/> <veui-radio value="javascript" name="lang" v-model="lang"/>
通过将多个
Radio
组件的v-model
绑定到同一个数据项,即可完成数据的双向绑定。注意,仍然建议使用name
属性来正确表达分组。这将会影响元素的可访问性。同时,更建议使用
RadioGroup
组件来实现单选组,因为它会有更简单的 API 和可访问性。 -
[-] 移除
Input
组件的type
prop 对textarea
的支持。迁移指南
使用
Textarea
组件进行替代:<veui-textarea v-model="value" .../>
-
[^] 将
OptionGroup
的position
属性的popout
值重命名为了popup
(与aria-haspopup
保持一致)。将在1.0.0
移除对popout
的支持。 -
[^] 将
Progress
组件的precision
prop 重命名为和NumberInput
一致的decimal-place
。precision
将在1.0.0
移除。
💡 主要变更
-
[+]
babel-plugin-veui
支持在import
时为组件添加前缀,方便直接使用快捷写法定义组件的components
选项。默认支持veui-
和v-
两种前缀。<template> <div> <veui-button>确定 <v-icon name="check"></veui-button> </div> </template> <script> import { VeuiButton, VIcon } from 'veui' export default { name: 'my-component', components: { VeuiButton, VIcon } } </script>
-
[+]
NumberInput
新增max
/min
prop,优先从直接父组件Field
的 proprule
中继承max
/min
rule 的值。 -
[+]
Input
新增clearable
prop,提供清除输入内容的功能;补充placeholder
prop 对 IE9 的支持。 -
[^]
Uploader
组件的事件success
、failure
、remove
增加参数:当前处理文件的序号。 -
[^]
Uploader
组件在重新上传的时候不再触发remove
事件。 -
[^] 增加了
Select
、Dropdown
、Carousel
、Pagination
及Progress
等组件的 WAI-ARIA 支持。
🐞 问题修复
- [^] 修复了
Textarea
触发事件时没有正确处理this
的问题。 - [^] 修复了
NumberInput
在只读状态下可以用键盘上下键调整值的问题。 - [^] 修复了
outside
指令设置delay
时未清除定时器的问题。 - [^] 修复了浮层
z-index
未更新完毕就展现造成的闪动问题。
v1.0.0-alpha.11
🐞 问题修复
- [^] 修复了
config/uiTypes.js
命中.npmignore
规则被过滤的问题。
v1.0.0-alpha.10
⚠️ 非兼容性变更
-
[^]
AlertBox
组件,之前只能通过ui
prop 传递类型信息(success
/error
/info
),现在和Toast
保持风格统一,使用type
prop 传递类型信息。迁移指南
对于非如下两种情况的用户,本次变更并不产生影响。
-
所有直接使用
AlertBox
的情况下,需要将如ui="success"
修改为type="success"
的方式进行指定。 -
对于主题包的作者,需要将原来针对如
[ui~="success"]
编写的样式,修改为.veui-alert-box-success
。
-
-
[-] [预告]
Input
组件的type
prop 将在下个版本去除对textarea
的支持,请使用Textarea
组件代替。
💡 主要变更
- [+] 新增了
NumberInput
组件。 - [+] 为
Input
增加了before
/after
slot,提供扩展的空间。 - [+] 为
Select
增加了filter
prop,用来过滤下拉内容。 - [+] 为
OptionGroup
增加了position
prop,用来指定在弹出菜单中显示。 - [+] 为
Option
增加了hidden
prop。 - [+] 为
Overlay
增加了locate
事件,在位置发生变化时触发(时机为tether
的reposition
事件)。 - [+]
Searchbox
组件增加suggest-trigger
prop,用来指定推荐列表的弹出时机;增加suggest
事件,当需要显示推荐列表时触发。 - [+]
Field
的rules
中增加priority
的配置,用来覆盖当前内置的规则优先级。 - [^] 将
icons
mixin 并入ui
, - [+] 支持配置
ui
prop 项的元数据,以支持进一步校验及根据ui
值配置图标。 - [^] 将
Progress
组件硬编码在组件代码中的尺寸解耦到veui-theme-one
中,现在组件可以从主题包的 JS 模块中注入预定义的样式参数。 - [+]
Uploader
组件的image
模式在图片的遮罩层上增加 scoped-slotextra-operation
;在上传项目前后分别增加file-before
和file-after
两个 scoped slot。 - [^]
Uploader
组件增加 proporder
,配置新上传文件的插入顺序。
🐞 问题修复
- [^] 为
uiTypes
定制了选项合并策略,并修正了Select
组件在uiTypes
中声明的input
被 mixin 中加入的select
覆盖的问题。 - [^] 去除了
Link
组件中错误注册组件的代码。 - [^] 修复了关闭非
modal
的Dialog
时FocusManager
报错的问题。 - [^] 修复了
FocusManager
在trap
模式下会自动聚焦最后一个元素的问题。 - [^] 修复了
Textarea
组件在 IE9 下的兼容性问题。 - [^] 修复了
Field
组件使用slot
时class
判断遗漏的问题。 - [^] 修复了
pattern
/numeric
校验规则的优先级,使pattern
置于numeric
之后。 - [^] 去除了
rule
校验失败信息中包含部分校验成功的无用信息。 - [^] 去除了
Input
部分过时的 prop。
v1.0.0-alpha.9
⚠️ 非兼容性变更
-
[^] 将对 Vue 的依赖更新到
^2.5.13
。这使得使用 scoped slot 时,scope
需要改写为slot-scope
。由于 VEUI 内部已经使用slot-scope
,所以该版本无法与[email protected]
之前的版本一同使用。迁移指南
请检查项目中所有用到
<template slot="..." scope="...">...</template>
的地方,统一替换为:
<template slot="..." slot-scope="...">...</template>
同时,由于
[email protected]
修改了 slot 的逻辑,所以当代码中存在使用<template slot="..."></template>
的写法来将 slot 内容置空时,现在会自动使用定义 slot 时备用内容填充而非置空,暂时的方法是使用一个零宽空格(
​
)来填充。
💡 主要变更
- [+] 为
Tabs
、ButtonGroup
、Dialog
、Calendar
等数十个组件增加了键盘导航及 WAI-ARIA 支持。 - [+] 新增
Slider
组件。 - [+] 新增
nudge
指令。 - [+] 新增
OptionGroup
组件。 - [+]
Select
、Dropdown
组件支持直接组件内嵌写法。 - [+]
Select
、Dropdown
组件支持键盘导航。
🐞 问题修复
- [^] 对话框现在可以整体获取焦点,避免点击无焦点区域后接收不到键盘事件的问题。
- [^] 修正了
PromptBox
默认样式。 - [^] 修正了
RadioGroup
的聚焦样式。 - [^] 修复
Textarea
组件在显示行号模式下高度设置的问题。 - [^] 修复
drag
指令的问题,防止在移动后窗口大小变化后产生的位置错误。 - [^] 修复了
Pagination
组件在翻页按钮禁用时点击后依然抛出事件的问题。