1.6.3 • Published 2 years ago

huibur-antd-vue v1.6.3

Weekly downloads
14
License
MIT
Repository
github
Last release
2 years ago

HUIBUR_ANTD-VUE说明文档

前言

基本说明

huibur-antd-vue是天津汇柏科技有限公司基于Ant Design Vue 框架进行开发,旨在简化开发过程中大量无意义的重复代码工作。该组件是根据公司项目场景中出现的各类问题,进行统一规范化封装处理,以减少非必要的一些编码及BUG修改工作。如果不能满足现有需求的话,可以关注公众号进行留言以便于进行组件扩展。 演示demo地址:http://antd.vue.huibur.com demo源码地址:https://github.com/huiburtech/huibur_ant_vue_demo.git

核心原理

数据驱动页面, 即所有页面的渲染均是通过数据参数的配置完成,几乎不需要写html、css以及一些紧要且耽误功夫的重复性逻辑校验代码

使用说明

  • 组件包下载方式:npm i huibur-antd-vue
  • npm导入方式:import {hSearch, hPage} from 'huibur-antd-vue' Vue.use(hSearch); Vue.use(hList);
  • 禁止外部组件直接操作组件中data的属性值,所有data属性均通过方法进行驱动
  • 外部组件仅可调用props的属性,以及公共部分的方法,禁止调用非公共部分的方法。
  • 所有的公共方法均以 “” 开头,即父组件禁止调用非 “” 开头的方法
  • 组件统一入口为@/components/HB/index.js
  • const.js 中放置组件中使用的常量数据
  • 该组件的构建文件中,未进行Ant Design of Vue组件的引入操作,需自行引入

const.js

TYPE_ENUM

组件中控件的枚举值

参数说明
INPUT输入框
INPUT_NUMBER数字输入框
INPUT_TEXT_AREA输入框
SELECT选择框
SELECT_FILTER选择框—本地过滤
SELECT_SEARCH选择框—搜索
DATEPICKER日期
MONTHPICKER月度日期1.0.16
DATERANGEPICKER时间范围1.0.16
TIMEPICKER时间1.0.16
LINK超链接,即a标签
TEXT文本
CHECKBOXCHECKBOX
CHECKBOX_GROUPCHECKBOX_GROUP1.1.0
CHANGE需要转换的数据
OPERATION操作
IMG单图片
IMG_MULTI多图片1.2.14
FILE文件1.2.14
FILE_MULTI多文件1.2.14
BUTTON按钮1.0.14
BUTTONGROUP按钮组:selectItems: { value: '', label: '' }
DROPDOWN下拉框: selectItems: { value: '', label: '' }
ACTION组合操作(可嵌套两层): selectItems: [{ value: '', label: '', selectItems: [] }]
RADIO单选1.1.0
SWITCH开关1.1.8
TIMESTAMP时间戳1.3.9
DATERANGEPICKER日期区间选择1.3.9
SLOT插槽类型1.3.9
UPLOAD_IMG单图片上传1.3.9
UPLOAD_IMG_MULTI多图片上传1.3.9
UPLOAD_FILE文件上传1.3.9

OPERATION_TYPE

组件中的操作类型

参数说明版本
ADD增加2.0
EDIT编辑2.0
COPY拷贝2.0
DETAIL详情2.0

组件

Confirm

公共方法

事件名称说明参数版本
_show显示(title, content, cb);title:标题,content:描述内容, cb:点确认的回调函数

示例

	<template>
	  <div class="contain">
		  <button @click="handleDeleteClick">删除</button>
		  
	      <h-confirm ref="confirm"/>
	  </div>
	</template>
	
	<script>
	import Vue from 'vue'
	import {hConfirm} from 'huibur-antd-vue'
	Vue.use(hConfirm)
	
	export default {
	  components: {
	    hConfirm
	  },

	  methods: {
		  handleDeleteClick() {
			   this.$refs.confirm._show("确认删除?", '删除后不可恢复,请谨慎操作', (res) => {
				// 执行删除操作
			  });
		  }
		  
	  }
	

Header

未写

Form

属性

参数说明类型默认值必须
items控件组[Form-Item]
columnNum列的数量Number1
buttonItems按钮组[Form-Button-Item]
form数据源对象Object
layoutForm表单布局(同a-form-model中layout)'horizontal'、'vertical'、'inline'inline
flexTypeForm内控件的Flex布局'flex'、'block'、'none''block'

Form-Item

参数说明类型默认值必须
title标题String-
key唯一标识,字段键值String-1.0
dataIndex在 table 数据项中对应的 key,支持 a.b.c 的嵌套写法 (该字段与key相同时,可省略该字段,一般在与key不同的情况下使用)string-
defaultValue默认值String-1.0
placeholder默认文字String-1.0
type控件类型TYPE_ENUM-1.0
sort表单排序Number-01.0
required是否必须Booleanfalse1.0
disabled是否禁用Booleanfalse1.0
rules表单验证规则(同antdesign 规则)Array1.3.40
linkageApi下级联动接口API[DictApiItem]1.0
allowClear允许被清空Booleanfalse1.0.15
columnSpan列宽(24栅格)Number241.0.16
labelAlignlabel 标签的文本对齐方式'left' | 'right'right1.0.16
labelOffsetlabel 标签布局偏移量Number01.0.16
labelSpanlabel 标签宽度Number81.0.16
wrapperOffset控件布局偏移量Number01.0.16
wrapperSpan控件宽度Number121.0.16
justify控件对齐方式 (start | space-between | center | end );对于checked等不完全填充控件有效String'space-between'1.0.16
autosize自适应内容高度,可设置为 truefalse 或对象:{ minRows: 2, maxRows: 6 } | Boolen | Object | {minRows: 3, maxRows: 5}1.0.16
before前置标签Form-Item1.1.0
after后置标签Form-Item1.1.0
hidden详情页隐藏该字段Booleanfalse1.3.12
tableHiddentable中隐藏该字段Booleanfalse1.3.12
dataType页面对应表格配置列;不填写时,默认为TEXTTYPE_ENUM-1.0
format日期格式String"YYYY-MM-DD HH:mm:ss"1.0
selectItems选择项[SelectItem]1.0
customRender自定义渲染字段【仅在table中适用】String1.3.40
imgW图片宽度String'60px'1.3.40
imgH图片高度String'60px'1.3.40
...文件上传部分的参数(注:upload中的参数与以上参数同级追加即可) UploadObject1.2.13

SelectItem

参数说明类型默认值
icon图标【可选】String-
label显示内容String | Number-
value唯一标识String | Number-
disabled是否禁用String-
color字体颜色String-
background背景色String-

Form-Button-Item

参数说明类型默认值
title标题String-
icon图标【可选】String-
value唯一标识,字段键值String-
background背景色String-
color字体颜色String-

回调事件

事件名称说明回调参数
change表单控件的改变事件(具体数据需自行核对)Function(info); info:{value, item}; value:表单控件的数据源,item: 表单控件
select表单控件的选择事件(select类型控件支持)Function(info); info:{value, item}; value:表单控件的数据源,item: 表单控件
search表单控件的搜索事件(SELECT_SEARCH类型控件支持)Function(info); info:{value, item}; value:表单控件的数据源,item: 表单控件
click表单控件的点击事件(具体数据需自行核对)Function(info); info:{value, item}; value:表单控件的数据源,item: 表单控件
btnClick操作按钮的点击事件(具体数据需自行核对)Function(info); info:{val, item}; val:表单控件的数据源,item: 表单控件

公共方法

事件名称说明参数
_validate校验/数据获取res:(valid: 是否校验通过,form:表单模型数据)
_setFormItem设置form中的键值(key, value);key:需要被设置的键,value:需要被设置的值
_refresh刷新表单
_assignSelectItems为selectItems赋值(针对items)(target, key, selectItems) ; target即items, key, 被设置的项的key,selectItems:选项
_getFormObject将单体模型对象转换为嵌套对象

示例

form表单示例
<template>
  <a-modal
      v-model="visible"
      ok-text="确认"
      cancel-text="取消"
      centered
      :closable="false"
      :maskClosable="false"
      :destroyOnClose="true"
      @cancel="handleCancel"
      @ok="handleOk"
    >

     <template slot="title">
            <div class="title">{{ form.id == null || form.id == '' ? '新增' : '编辑' }}</div>
     </template>

    <h-form
      :items="items"
      ref="hForm"
      :form="form"
    ></h-form>
  </a-modal>
</template>

<script>
import Vue from "vue";
import { TYPE_ENUM, hForm } from "huibur-antd-vue";

Vue.use(hForm);

const items = 
[{
    title: "姓名",
    key: "name",
    placeholder: "请输入姓名",
    type: TYPE_ENUM.INPUT,
    required: true,
    disabled: false,
    length: 20,
    before: {
      key: 'beforeName',
      width: '80px',
      icon: 'user'
    },
  },
  {
    title: "省/市",
    key: "city",
    placeholder: "请选择住址",
    type: TYPE_ENUM.SELECT,
    required: true,
    disabled: false,
    selectItems: [
      {
        value: 0,
        label: "天津",
        selectItems: [
          {
            title: "区",
            key: "region",
            required: true,
            disabled: false,
            type: TYPE_ENUM.INPUT,
          }
        ]
      },
      {
        value: 1,
        label: "北京",
      }
    ]
  },
]

export default {
  components: {
  },

  data() {
    return {
      visible: false,
      items,
      form: {}
    };
  },

  methods: {
    //---------------事件----------------
    // 取消
    handleCancel() {
      this.visible = false
    },

    // 确认
    handleOk() {
      this.$refs.hForm._validate((valid, form) => {
        console.log(valid);
        console.log(form);
      });
    },    
  },
};
</script>
Search搜索示例
<template>
  <div class="contain">

    <h-form ref="search" :items="searchItems" :column-num=3 :button-items="btnItems" @btnClick="handleSearchClick"></h-form> 
  </div>
</template>

<script>
import Vue from 'vue'
import {TYPE_ENUM, hForm} from 'huibur-antd-vue'
Vue.use(hForm)

const btnItems = [
  {
    title: '搜索',
    icon: 'search',
    color: 'red',
    value: 'search'
  },
  {
    title: '重置',
    value: 'reset'
  }
]

const searchItems =
[{
  title: "关键字",
  key: "kw",
  type: TYPE_ENUM.INPUT,
  required: false,
},
{
  title: "省",
  key: "province",
  placeholder: "请选择省",
  type: TYPE_ENUM.SELECT,
  required: false,
  selectItems: [
	{
	  label: '河北',
	  value: 'hebei'
	},
	{
	  label: '河南',
	  value: 'henan'
	}
  ]  
},


export default {
  components: {

  },

  data() {
    return {
      TYPE_ENUM,
      btnItems,
      searchItems
  },

  methods: {


    //-------------------------------------回调通知--------------------------------------

    // 搜索框-搜索按钮点击事件
    handleSearchClick(info) {
		if (info.item.value == 'search') { // 搜索按钮点击
      
		} else if (info.item.value == 'reset') { // 重置按钮点击
		  
		}
    },
	
  },
}
</script>

Table

属性

参数说明类型默认值
columns表格列的配置描述,具体项见下表[column]-
pageSize页大小Number10
total数据总数Number10
isPagination是否需要分页Booleantrue
list数据数组Array-
rowSelection列表项是否可选择,配置项Objectnull1.0.19
expandedRowItems扩展行操作项[SelectItem]null1.1.5

回调事件

事件名称说明回调参数
pageChange分页事件触发Function(current) ;current:被选中的页码
change表单控件的改变事件(具体数据需自行核对)Function(info); info:{value, item}; value:表单控件的数据源,item: 表单控件
select表单控件的选择事件(select类型控件支持)Function(info); info:{value, item}; value:表单控件的数据源,item: 表单控件
search表单控件的搜索事件(SELECT_SEARCH类型控件支持)Function(info); info:{value, item}; value:表单控件的数据源,item: 表单控件
buttonClick操作按钮的点击事件(具体数据需自行核对)Function(info); info:{info, val}; val:表单控件的数据源,info: 表单控件

公共方法

事件名称说明参数
_startLoading开始页面加载中动画-
_stopLoading停止页面加载中动画-

column

参数说明类型默认值
title标题array-
dataIndex列数据在数据项中对应的 key,支持 a.b.c 的嵌套写法string-
align设置列内容的对齐方式'left' | 'right' | 'center''left'
customRender生成复杂数据的渲染函数,同AntDesign,dataIndex='index',时, 该值默认为index + 1Function(text, record, index) {}|slot-scope-
dataType数据展示类型TYPE_ENUMTEXT
selectItems选择项数据[SelectItem]-
format日期格式String1.2.13
imgW图片宽度String60px1.2.13
imgH图片高度String60px1.2.13

示例

<template>
  <div class="contain">

    <h-Table 
      ref="list" 
      :pageSize=5
      :total=10
      :isPagination=true
      :columns="columns"
      :list="list"
      :rowSelection="rowSelection"
      :expandedRowItems="expandedRowItems"
      @pageChange="handleListPageChange"
      @buttonClick="handleListButtonClick"
      ></h-Table>
  </div>
</template>

<script>
import Vue from 'vue'
import {TYPE_ENUM, hTable} from 'huibur-antd-vue'
Vue.use(hTable)

const columns = [
  {
    title: '序号',
    dataIndex: 'index',
    key: 'index',
    align: 'center'
  },
  {
    title: '姓名',
    dataIndex: 'name',
    key: 'name',
    align: 'center',
  },
  {
    title: '年龄',
    dataIndex: 'age',
    key: 'age',
    align: 'center'
  },
  {
    title: '性别',
    dataIndex: 'gender',
    key: 'gender',
    align: 'center',
    selectItems: [
		{label: '男', value: 0},
		{label: '女', value: 1}
	],
  },
  {
    title: '操作',
    dataIndex: 'operation',
    key: 'operation',
    align: 'center',
    selectItems: [{label: '删除', value: 'delete', icon: 'delete', background: 'red', color: 'yellow'}, {label: '编辑', value: 'edit'}, {label: '操作', value: 'operat', selectItems: [{label: '删除', value: 'delete', icon: 'delete'}, {label: '编辑', value: 'edit', icon: 'delete'}]}],
    dataType: TYPE_ENUM.ACTION,
  }
]

const expandedRowItems = [{label: '删除', value: 'delete', icon: 'delete'}, {label: '编辑', icon: 'edit', value: 'edit'}]

const rowSelection = {
  onChange: (selectedRowKeys, selectedRows) => {
    console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
  },
  onSelect: (record, selected, selectedRows) => {
    console.log(record, selected, selectedRows);
  },
  onSelectAll: (selected, selectedRows, changeRows) => {
    console.log(selected, selectedRows, changeRows);
  },
};

const list = 
	[{name: '张三', age: 18, gender: 0},
	{name: '李四', age: 19, gender: 1}]

export default {
  data() {
    return {
      rowSelection,
      expandedRowItems,
      TYPE_ENUM,
      columns,
     
    }
  },

  created() {
  },
  mounted() {
  },
  methods: {
   
    // ------------------------------回调通知----------------------------------
    // list 分页
    handleListPageChange(val) {

      this.$refs.list._startLoading()
      setTimeout(()=>{   //设置延迟执行
        this.list = [{name: '张三2', age: 18, gender: 0},
					{name: '李四2', age: 19, gender: 1}]
        this.$refs.list._stopLoading()
      }, 1000)
    },

    // 按钮点击事件
    handleListButtonClick (val) {
      if (val.val.value == 'edit') {
   
      } else if (val.val.value == 'delete') {
     
      }
    },

  },
}
</script>

Upload

属性

参数说明类型默认值
fileData文件数据String, Object, Array-1.2.14
fileNum文件数量(0: 表示不限制)Number11.2.14
multiple是否支持多选文件,开启后按住 ctrl 可选择多个文件。fileNum != 1时有效Booleanfalse1.2.14
listType上传列表的内建样式,支持三种基本样式 text, picture 和 picture-cardStringtext1.2.14
action上传的地址String'https://upload.qiniup.com''1.2.14
accept接受上传的文件类型String1.2.14
formData上传所需参数或返回上传参数的方法Object{token: '', domain: '七牛云domain接口访问地址', region: '', uploadURL: ''}1.2.14
qnTokenApi七牛云请求的API。Object{method: 'GET',url: 'qnToken', params: {}, data: {}}1.2.14
title上传按钮的标题String上传1.2.14
icon上传按钮的图标Stringupload1.2.14

回调事件

事件名称说明回调参数
change文件上传事件回调处理:返回文件列表1.2.14
ok确认事件

Page

组件描述

该组件封装了中后台页面基本的常规操作,主要由表头、搜索、列表、详情组件构成,该组件涵盖列表的网络请求,增、删、改、查等基本操作。在此之上也开放了一些回调事件,来支持一些组件无法支持的一些操作。支持:(add、edit、copy)操作

属性

参数说明类型默认值必须
title标题String1.3.51
header请求头Object1.2.16
apiName基于ResetFul 接口风格的统一资源名称(若没有对网络请求进行封装处理,此处为接口全路径);(该字段为空则需要自己手动处理API接口请求及逻辑)String-不建议为空1.2.10
extParamsAPI请求时的扩展参数Object1.2.10
succCode接口返回的成功状态码String"200"1.2.10
idKey模型对象对应的唯一标识字段String"id"1.2.10
headerButtonItemsheader组件中按钮组[BtnItem]1.2.10
searchItems搜索控件组(为空,不显示搜索组件)[Form-Item]1.2.10
searchBtnItems搜索按钮组[BtnItem]{title: '查询',icon: 'search',value: 'search'},{title: '重置',icon: 'reload',value: 'reset'}1.2.10
searchColumnNum搜索组件中每行显示的组件数Number41.2.10
detailColumnNum详情组件中每行显示的组件数Number41.2.10
detailWidth详情组件弹框宽度String50%1.2.10
columnstable上列的配置项[column]; 为空时与detailItems数据一致1.2.10
isPaginationtable是否支持分页Booleanfalse1.2.10
paginationtable分页配置(isPagination=true 时有效)Object{pageNum: 1, pageSize: 10, total: 10}1.2.10
rowSelectedtable是否支持行选择Booleanfalse1.2.10
detailItems详情页控件配置项目[DetailItem]1.2.10
dividerOrientation详情页一级控件组所在分割线 enum:left righ center ;为空不显示分割头
Stringnull1.2.10
requestDetail详情页面是否需要请求详情接口获取数据Booleanfalse1.2.10
dictApi需要通过接口获取的选择项数据或者字典数据接口(用于下拉框,列表反显等)[DictApiItem]1.2.10
<!--convertData需要将业务模型中数据与详情配置中所对应的模型数据进行转换的字段[ConvertData]1.2.10 -->

BtnItem

参数说明类型默认值
title显示的名称String-1.2.0
icon显示的图标String-1.2.0
value唯一标识项String-1.2.0

DetailItem

参数说明类型默认值
title当前组的名称String-1.2.0
children该组下对应的子项[Form-Item]-1.2.0

DictApiItem

参数说明类型默认值
header请求头Object1.2.16
key需要进行结果数据渲染的配置项中的KEYString-1.2.0
urlURL地址String-1.2.0
method请求方式 enum: GET POSTString-1.2.0
params参数Object-1.2.0
valueKey选项数据中的唯一标识字段String-1.2.0
labelKey选项中用来显示的标识字段String-1.2.0
kwKey关键字搜索时,关键字对应的标识字段String-1.2.0

回调事件

事件名称说明回调参数版本
tableRowChangetable的行选中事件
tableBtnClicktable的按钮点击事件
searchBtnClick搜索框的按钮点击事件
delete被删除时间(api为空的情况下)
detailOk详情确认事件

公共方法

事件名称说明参数
_refreshTable刷新列表数据
_showEdit({record, operation_type})显示编辑页面record: 被选择的一行数据对象;operation_type:操作类型(OPERATION_TYPE)

Detail

组件描述

该组件封装了中后台页面详情操作,包含基本表单的增加、编辑、拷贝、详情操作

属性

参数说明类型默认值必须版本
width弹框宽度String50%1.2.16
header请求头Object1.2.16
apiName基于ResetFul 接口风格的统一资源名称(若没有对网络请求进行封装处理,此处为接口全路径);(该字段为空则需要自己手动处理API接口请求及逻辑)String-不建议为空1.2.10
extParamsAPI请求时的扩展参数Object1.2.10
succCode接口返回的成功状态码String"200"1.2.10
idKey模型对象对应的唯一标识字段String"id"1.2.10
items详情页控件配置项目[DetailItem]1.2.10
dividerOrientation详情页一级控件组所在分割线 enum:left righ center ;为空不显示分割头
Stringnull1.2.10
requestDetail详情页面是否需要请求详情接口获取数据Booleanfalse1.2.10
dictApi需要通过接口获取的选择项数据或者字典数据接口(用于下拉框,列表反显等)[DictApiItem]1.2.10
selectDict某个下拉选项的字典数据[DictApiItem]1.2.10

回调事件

事件名称说明回调参数版本
addSucc新增成功
editSucc编辑成功
ok无接口操作时,确认事件

API

组件描述

封装了常用的接口接口方式,基于resetFul。

引入方式

import { h_getList, h_getDetail, h_add, h_edit, h_delete, h_request } from 'huibur-antd-vue'

接口

方法名描述
h_add ({url, data, header})增加
h_edit ({url, data, id, header})修改
h_delete ({url, id, header})删除Object
h_getList ({url, params, header})获取列表
h_getDetail ({url, id, header})获取数据详情
h_request ({method, url, params, data, header, id})其他通用网络请求
h_download ({method, url, params, data, header, timeout, filename, id})下载

参数说明

名称参数类型描述
methodString请求方式(POST、GET、PUT、DETETE)
urlString网络请求地址全路径(注:可以拼接参数,效果与params、id参数相同)
paramsObject添加到url的请求字符串中的,用于get请求
dataObject添加到请求体(body)中的, 用于post请求
headerObject请求头
idString拼接在路径之后的参数,即restful中的/{id}
filenameString下载的文件名称
timeoutString下载超时时间(默认6000)

接口规范

说明

所有接口规范需严格遵循resetFul风格规范,即面向资源。列表、详情、新增、编辑等模型必须保持一致。

以User为例

列表

名称说明参数版本
url/users-1.2.10
methodGET-1.2.10
参数params {pageNum: 1, pageSize: 10}-1.2.10
返回数据{total: 10, pageNum: 1, list: [User]} 或 [User]-1.2.10

详情

名称说明版本
url/users/{id}1.2.10
methodGET1.2.10
参数path1.2.10
返回数据User1.2.10

增加

名称说明版本
url/users1.2.10
methodPOST1.2.10
参数body (User)1.2.10
返回数据User1.2.10

修改

名称说明版本
url/users/{id}1.2.10
methodPUT1.2.10
参数body(User )1.2.10
返回数据User1.2.10

删除

名称说明版本
url/users/{id}1.2.10
methodDELETE1.2.10
参数path1.2.10

说明

1.4.0版本以后将hList 组件改名为 hPage

关注我们

npm.io

1.6.3

2 years ago

1.6.2

2 years ago

1.6.0

2 years ago

1.5.55

2 years ago

1.5.50

2 years ago

1.5.52

2 years ago

1.5.51

2 years ago

1.5.54

2 years ago

1.5.53

2 years ago

1.5.30

2 years ago

1.5.32

2 years ago

1.5.31

2 years ago

1.5.34

2 years ago

1.5.33

2 years ago

1.5.36

2 years ago

1.5.35

2 years ago

1.5.38

2 years ago

1.5.37

2 years ago

1.5.39

2 years ago

1.5.41

2 years ago

1.5.40

2 years ago

1.5.43

2 years ago

1.5.42

2 years ago

1.5.45

2 years ago

1.5.44

2 years ago

1.5.47

2 years ago

1.5.46

2 years ago

1.5.49

2 years ago

1.5.48

2 years ago

1.5.18

2 years ago

1.5.17

2 years ago

1.5.19

2 years ago

1.5.21

2 years ago

1.5.20

2 years ago

1.5.23

2 years ago

1.5.22

2 years ago

1.5.25

2 years ago

1.5.24

2 years ago

1.5.27

2 years ago

1.5.26

2 years ago

1.5.29

2 years ago

1.5.28

2 years ago

1.5.16

2 years ago

1.3.50

2 years ago

1.3.53

2 years ago

1.3.54

2 years ago

1.3.51

2 years ago

1.3.52

2 years ago

1.3.55

2 years ago

1.5.5

2 years ago

1.5.4

2 years ago

1.5.3

2 years ago

1.5.2

2 years ago

1.5.1

2 years ago

1.5.0

2 years ago

1.3.48

2 years ago

1.3.49

2 years ago

1.4.2

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.5.9

2 years ago

1.5.8

2 years ago

1.5.7

2 years ago

1.5.6

2 years ago

1.5.10

2 years ago

1.5.12

2 years ago

1.5.11

2 years ago

1.5.14

2 years ago

1.5.13

2 years ago

1.5.15

2 years ago

1.3.42

2 years ago

1.3.43

2 years ago

1.3.41

2 years ago

1.3.46

2 years ago

1.3.47

2 years ago

1.3.44

2 years ago

1.3.45

2 years ago

1.3.35

3 years ago

1.3.36

3 years ago

1.3.34-np

3 years ago

1.3.34

3 years ago

1.3.39

3 years ago

1.3.37

3 years ago

1.3.38

3 years ago

1.3.40

3 years ago

1.3.35-beta-1

3 years ago

1.3.33

3 years ago

1.3.32

3 years ago

1.3.28

3 years ago

1.3.29

3 years ago

1.3.27

3 years ago

1.3.31

3 years ago

1.3.30

3 years ago

1.3.26

3 years ago

1.3.25

3 years ago

1.3.24

3 years ago

1.3.23

3 years ago

1.3.17

3 years ago

1.3.18

3 years ago

1.3.16

3 years ago

1.3.19

3 years ago

1.3.20

3 years ago

1.3.21

3 years ago

1.3.22

3 years ago

1.3.10

3 years ago

1.3.13

3 years ago

1.3.14

3 years ago

1.3.11

3 years ago

1.3.12

3 years ago

1.3.15

3 years ago

1.3.9

3 years ago

1.3.8

3 years ago

1.3.7

3 years ago

1.3.6

3 years ago

1.3.5

3 years ago

1.3.4

3 years ago

1.3.3

3 years ago

1.3.2

3 years ago

1.3.1

3 years ago

1.3.0

3 years ago

1.2.14

3 years ago

1.2.13

3 years ago

1.2.12

3 years ago

1.2.11

3 years ago

1.2.10

3 years ago

1.2.8

3 years ago

1.2.7

3 years ago

1.2.6

3 years ago

1.2.9

3 years ago

1.2.0

3 years ago

1.2.5

3 years ago

1.2.4

3 years ago

1.2.3

3 years ago

1.2.2

3 years ago

1.2.1

3 years ago

1.1.9

3 years ago

1.1.8

3 years ago

1.1.12

3 years ago

1.1.11

3 years ago

1.1.10

3 years ago

1.1.7

3 years ago

1.1.6

3 years ago

1.1.5

3 years ago

1.1.4

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.0.19

3 years ago

1.0.18

3 years ago

1.0.22

3 years ago

1.0.21

3 years ago

1.0.20

3 years ago

1.0.26

3 years ago

1.0.25

3 years ago

1.0.24

3 years ago

1.0.23

3 years ago

1.0.28

3 years ago

1.0.27

3 years ago

1.0.17

3 years ago

1.0.16

3 years ago

1.0.15

3 years ago

1.0.14

3 years ago

1.0.13

3 years ago

1.0.12

3 years ago

1.0.11

3 years ago

1.0.10

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago