Skip to content

Releases: ecomfe/veui

v1.0.0-alpha.18

14 Oct 13:39
Compare
Choose a tag to compare
v1.0.0-alpha.18 Pre-release
Pre-release

⚠️ 非兼容性变更

  • [^] 对 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 组件的 prop convert-response 函数必须返回转换后的数据对象。

💡 主要变更

  • [^] 增加主题包为组件部件指定 ui 的功能,同时组件现在将自动继承父组件中可继承的 ui 字段,并更新了 veui-theme-one 中所有相应的部分。
  • [+] Breadcrumb 组件的 scoped slot default 新增参数 index
  • [+] Button 组件增加 ui 选项 dark
  • [^] rulevalidate 方法现在可以传入额外的上下文的数据,比如在 Field 验证时传入整个 Formdata

🐞 问题修复

  • [^] 修正 GridContainer 没有正确发布的问题。
  • [^] 修复 Slider 组件在有 step 时的选择逻辑,由向下选取点改为就近取点,且修正了 min 值非 0 时的逻辑。
  • [^] 修复 Uploader 组件无法正确获取全局配置的 uploader.convertResponse 函数的问题。

v1.0.0-alpha.17

10 Sep 10:19
Compare
Choose a tag to compare
v1.0.0-alpha.17 Pre-release
Pre-release

⚠️ 非兼容性变更

  • [^] Dialog 组件预设 uitop 更名为 high
  • [^] Button 组件再 loading 状态下将保留 slot 内容,不再强行设置为 '加载中……'
  • [-] 删除了 $confirm$prompt 插件本来就无效的带状态唤起接口。

💡 主要变更

  • [+] 增加 longpress 指令。
  • [+] Dropdown 组件增加了 trigger prop,来指定何时展开下拉框。
  • [+] Dropdown 组件增加了 split prop,来允许拆分指令按钮与下拉切换按钮。
  • [+] Button 组件增加了 mouseenter/mouseleave 事件。
  • [+] NumberInput 组件支持长按调整值。
  • [+] 增加了 GridContainer/GridRow/GridColumn 组件。
  • [+] Progress 组件增加了预设 uifluid,自适应容器宽度。
  • [+] Dialog 组件增加了预设 uismall/large/auto,用于指定预设宽度。
  • [+] 为 Overlay/Dialog/AlertBox/ConfirmBox/PromptBox 组件增加了 afterclose 事件。
  • [^] 调整了 alert/confirm/prompt/toast 插件的接口,现在 $alert/$confirm/$prompt/$toast 均可直接作为函数调用。

🐞 问题修复

  • [^] 修复 Tabs 组件移除标签时可能产生的问题。
  • [^] 修正 ConfirmBox 没有正确触发事件的问题。

v1.0.0-alpha.16

10 Aug 05:01
Compare
Choose a tag to compare
v1.0.0-alpha.16 Pre-release
Pre-release

💡 主要变更

  • [+] 增加了 babel-preset-veui,简化了引入 VEUI 一起进行转译所需的步骤。
  • [^] 引入 date-fns 替换了对 moment 的依赖。

🐞 问题修复

  • [^] 修复了 DatePicker 组件 panel prop 默认值错误的问题。
  • [^] 修正 Alert 组件样式。
  • [^] 修正 Breadcrumb 组件样式。

v1.0.0-alpha.15

30 Jul 17:02
Compare
Choose a tag to compare
v1.0.0-alpha.15 Pre-release
Pre-release

⚠️ 非兼容性变更

  • [^] 因为 less@2 依赖的包存在安全漏洞,故此次升级将对 less 的依赖升级到了 ^3.8.0,对 less-plugin-est 的依赖升级到了 ^3.0.0

    迁移指南

    1. 更新 lessless-plugin-est 的版本;
    2. 如果使用 vue-cliwebpack 模板初始化项目,请按如下方式修改 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 组件关闭操作的类型,默认情况下会有 okcancel。返回值可以是一个 boolean,也可以是一个 resolve booleanPromise,用来处理可能需要异步决定对话框关闭状态的情况。返回值或 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-labelclose-text 将在 1.0.0 移除。

💡 主要变更

  • [+] Uploader 组件增加自定义上传模式。request-mode 新增可选值 custom,设置为该值时,支持通过新增的 prop upload 自定义上传函数。
  • [+] Uploader 组件增加切换动画。
  • [+] Steps 组件的 click 事件回调参数增加原生事件对象 event,现为 (index, event)
  • [+] Overlay 组件浮层根元素上现在增加了对 overlay.overlayClass 全局配置项对应类名的输出。
  • [+] Switch 组件现在会透传与 Checkbox 组件一致的原生 DOM 事件。
  • [+] Toast 组件增加 prop open,支持 .sync
  • [+] Toast 组件增加 slot default
  • [+] Toast 组件增加全局配置 toast.duration

🐞 问题修复

  • [^] 修复了 Uploader 组件 iframe 模式中上传失败后重试时没有上传文件的问题。
  • [^] 修复了 Uploader 组件初始化后丢失 namesrc 以外的自定义属性丢失的问题。
  • [^] 修复了 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

15 Jun 04:30
Compare
Choose a tag to compare
v1.0.0-alpha.14 Pre-release
Pre-release

⚠️ 非兼容性变更

  • [^] Progress 组件的 state prop 更名为 statusstate 将在 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 定义,方便自定义样式。
  • [^] 优化了 SwitchStepsScheduleTableFieldset 等组件的可访问性,实现了键盘交互。

🐞 问题修复

  • [^] 修复了更多在计算浮层层级过程中有时会导致死循环的场景。
  • [^] 去除了 dropdown mixin 中 多余的默认 overlay-options 约束条件,修正某些场景下的浮层展开的默认方向。
  • [^] 修复了 Input 组件初始值为 null 时使用输入法会失效的问题。
  • [^] 现在 Searchbox 组件在 suggestions 变化时会自动更新浮层位置。
  • [^] 修复了点击 Label 组件激活同 Field 下的输入组件时,没有考虑组件禁用/只读状态的问题。

v1.0.0-alpha.13

24 May 09:47
Compare
Choose a tag to compare
v1.0.0-alpha.13 Pre-release
Pre-release

⚠️ 非兼容性变更

  • [^] CheckboxSwitch 组件新增 prop model,对应 v-modelchecked prop 不再对应 v-model,而是支持 .sync
  • [^] CheckboxRadioSwitch 组件新增 input 事件用于 v-modelchange 事件参数抛出当前的 checked 值,仅在用户切换时触发。
  • [^] Calendar 组件的 selectstart 事件抛出的参数格式从 [Date] 修改为 Date,表示选择的起始日期,去除多余的数组。
  • [^] 移除 DatePicker 组件的 placeholderBeginplaceholderEnd prop 及相应的 slot placeholder-beginplaceholder-end,以及全局配置 datepicker.placeholderBegindatepicker.placeholderEnd。取而代之的是,增加配置项 datepicker.rangePlaceholder,并总是响应外部设置的 placeholder prop。默认状态下,会根据 range prop 来显示 datepicker.placeholderdatepicker.rangePlaceholder 的值。
  • [^] DatePicker 组件的 date scoped slot 现在会透传给内部的 Calendar 的同名 scoped slot,不再表示已选择日期区域。原来已选择位置的 scoped slot 重命名为 selected,为范围选择时;类型为 Datedate 字段废弃,取而代之的是三个类型为 number 的字段:yearmonth0 表示一月)、date;增加参数字段 position,起止日期分别对应 fromto
  • Carousel 组件的轮播项内容现在完全在 scoped slot item 内部,不再在外部添加行内图片背景样式,方便自定义非图片类型的轮播项。

💡 主要变更

  • [^] veui-loader 支持 webpack 4,resolve 路径逻辑调整为异步。
  • [+] 为 RegionPicker 添加了键盘导航和 WAI-ARIA 支持。
  • [+] BreadcrumbItemLink 组件的 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 组件的 prop to 现在可以使用相对路径。
  • [^] resize 指令底层升级,切换到 resize-detecor,并增加 debounce 优化。
  • [+] RadioGroupCheckboxGroupRadioButtonGroupCheckButtonGroup 组件的默认 scoped slot 参数增加 index 表示选项序号。
  • [^] numeric 校验规则现在禁止多余的 0 开头的字符串值。
  • [^] Select 组件的 scoped slot label 现在作用域绑定到完整的已选中的 options 项,而非 { label }

🐞 问题修复

  • [^] 修复了上一版本中引入的浮层 autofocus 失效的问题。
  • [^] 修复了上一版本中引入的在计算浮层层级过程中有时会导致死循环的问题。
  • [^] 修复了 Textarea 组件初始 valuenull 时的问题。
  • [^] 修复了 Input 组件在 SSR 时报错的问题。
  • [^] input 类型组件的错误状态通过组件数据进行传递,而不仅仅依赖于外层 Fieldclass
  • [^] 修复了 Tab 使用路由模式时设置 name prop 会出错的问题。
  • [^] 修复了 Tableupdate:selected 事件有时未正确抛出的问题。
  • [^] 修复了 Progress 组件 prop 校验的问题。
  • [^] 修复了 OptionGroup 组件未将 disabled 传递给 Option 组件的问题。

v1.0.0-alpha.12

24 Apr 16:55
Compare
Choose a tag to compare
v1.0.0-alpha.12 Pre-release
Pre-release

⚠️ 非兼容性变更

  • [^] Uploader 组件在 maxCount 的值是 1 的情况下,value 的默认类型从字符串改成对象,可以通过设置 prop compattruevalue 的类型设置为字符串兼容旧版本。compat 模式未来不会移除,但不建议使用。

    迁移指南

    Uploadermax-count1 时的 value prop 数据类型修改为对象,和多文件时的数组项相同。需要兼容原字符串数据格式时,需要设置 compat prop 为 true

    <veui-uploader compat .../>
  • [^] 修改了 Radio 组件的 v-model 语义,现在机制和 Vue.js 对原生 <input type="radio"> 的处理保持一致。

    迁移指南

    此版本前的 Radio 组件的 v-model 对应 checked 属性,但由于之前的版本中存在多个同 nameRadio 组件时,被取消选中的单选框并不会响应数据变化,导致实际 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" .../>
  • [^] 将 OptionGroupposition 属性的 popout 值重命名为了 popup(与 aria-haspopup 保持一致)。将在 1.0.0 移除对 popout 的支持。

  • [^] 将 Progress 组件的 precision prop 重命名为和 NumberInput 一致的 decimal-placeprecision 将在 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 的 prop rule 中继承 max/min rule 的值。

  • [+] Input 新增 clearable prop,提供清除输入内容的功能;补充 placeholder prop 对 IE9 的支持。

  • [^] Uploader 组件的事件 successfailureremove 增加参数:当前处理文件的序号。

  • [^] Uploader 组件在重新上传的时候不再触发 remove 事件。

  • [^] 增加了 SelectDropdownCarouselPaginationProgress 等组件的 WAI-ARIA 支持。

🐞 问题修复

  • [^] 修复了 Textarea 触发事件时没有正确处理 this 的问题。
  • [^] 修复了 NumberInput 在只读状态下可以用键盘上下键调整值的问题。
  • [^] 修复了 outside 指令设置 delay 时未清除定时器的问题。
  • [^] 修复了浮层 z-index 未更新完毕就展现造成的闪动问题。

v1.0.0-alpha.11

08 Apr 15:57
Compare
Choose a tag to compare
v1.0.0-alpha.11 Pre-release
Pre-release

🐞 问题修复

  • [^] 修复了 config/uiTypes.js 命中 .npmignore 规则被过滤的问题。

v1.0.0-alpha.10

08 Apr 15:40
Compare
Choose a tag to compare
v1.0.0-alpha.10 Pre-release
Pre-release

⚠️ 非兼容性变更

  • [^] AlertBox 组件,之前只能通过 ui prop 传递类型信息( success/error/info ),现在和 Toast 保持风格统一,使用 type prop 传递类型信息。

    迁移指南

    对于非如下两种情况的用户,本次变更并不产生影响。

    1. 所有直接使用 AlertBox 的情况下,需要将如 ui="success" 修改为 type="success" 的方式进行指定。

    2. 对于主题包的作者,需要将原来针对如 [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 事件,在位置发生变化时触发(时机为 tetherreposition 事件)。
  • [+] Searchbox 组件增加 suggest-trigger prop,用来指定推荐列表的弹出时机;增加 suggest 事件,当需要显示推荐列表时触发。
  • [+] Fieldrules 中增加 priority 的配置,用来覆盖当前内置的规则优先级。
  • [^] 将 icons mixin 并入 ui,
  • [+] 支持配置 ui prop 项的元数据,以支持进一步校验及根据 ui 值配置图标。
  • [^] 将 Progress 组件硬编码在组件代码中的尺寸解耦到 veui-theme-one 中,现在组件可以从主题包的 JS 模块中注入预定义的样式参数。
  • [+] Uploader 组件的 image 模式在图片的遮罩层上增加 scoped-slot extra-operation;在上传项目前后分别增加 file-beforefile-after 两个 scoped slot。
  • [^] Uploader 组件增加 prop order,配置新上传文件的插入顺序。

🐞 问题修复

  • [^] 为 uiTypes 定制了选项合并策略,并修正了 Select 组件在 uiTypes 中声明的 input 被 mixin 中加入的 select 覆盖的问题。
  • [^] 去除了 Link 组件中错误注册组件的代码。
  • [^] 修复了关闭非 modalDialogFocusManager 报错的问题。
  • [^] 修复了 FocusManagertrap 模式下会自动聚焦最后一个元素的问题。
  • [^] 修复了 Textarea 组件在 IE9 下的兼容性问题。
  • [^] 修复了 Field 组件使用 slotclass 判断遗漏的问题。
  • [^] 修复了 pattern/numeric 校验规则的优先级,使 pattern 置于 numeric 之后。
  • [^] 去除了 rule 校验失败信息中包含部分校验成功的无用信息。
  • [^] 去除了 Input 部分过时的 prop。

v1.0.0-alpha.9

06 Mar 07:31
Compare
Choose a tag to compare
v1.0.0-alpha.9 Pre-release
Pre-release

⚠️ 非兼容性变更

  • [^] 将对 Vue 的依赖更新到 ^2.5.13。这使得使用 scoped slot 时,scope 需要改写为 slot-scope。由于 VEUI 内部已经使用 slot-scope,所以该版本无法与 vue@2.5.0 之前的版本一同使用。

    迁移指南

    请检查项目中所有用到

    <template slot="..." scope="...">...</template>

    的地方,统一替换为:

    <template slot="..." slot-scope="...">...</template>

    同时,由于 vue@2.5.3 修改了 slot 的逻辑,所以当代码中存在使用

    <template slot="..."></template>

    的写法来将 slot 内容置空时,现在会自动使用定义 slot 时备用内容填充而非置空,暂时的方法是使用一个零宽空格(&#8203;)来填充。

💡 主要变更

  • [+] 为 TabsButtonGroupDialogCalendar 等数十个组件增加了键盘导航及 WAI-ARIA 支持。
  • [+] 新增 Slider 组件。
  • [+] 新增 nudge 指令。
  • [+] 新增 OptionGroup 组件。
  • [+] SelectDropdown 组件支持直接组件内嵌写法。
  • [+] SelectDropdown 组件支持键盘导航。

🐞 问题修复

  • [^] 对话框现在可以整体获取焦点,避免点击无焦点区域后接收不到键盘事件的问题。
  • [^] 修正了 PromptBox 默认样式。
  • [^] 修正了 RadioGroup 的聚焦样式。
  • [^] 修复 Textarea 组件在显示行号模式下高度设置的问题。
  • [^] 修复 drag 指令的问题,防止在移动后窗口大小变化后产生的位置错误。
  • [^] 修复了 Pagination 组件在翻页按钮禁用时点击后依然抛出事件的问题。