Merge pull request #21 from iview/2.0

更新
This commit is contained in:
yangdan8 2018-12-20 22:00:17 +08:00 committed by GitHub
commit ba307d7961
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 904 additions and 857 deletions

View file

@ -3,6 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>iView test page</title> <title>iView test page</title>
<meta name="viewport" content="user-scalable=no,width=device-width,initial-scale=1"/>
<!-- <link href="/test/dist/main.css" rel="stylesheet"> --> <!-- <link href="/test/dist/main.css" rel="stylesheet"> -->
</head> </head>
<body> <body>

View file

@ -62,6 +62,13 @@
<br><br> <br><br>
<Tag v-for="item in count" :key="item" :name="item" closable @on-close="handleClose2">标签{{ item + 1 }}</Tag> <Tag v-for="item in count" :key="item" :name="item" closable @on-close="handleClose2">标签{{ item + 1 }}</Tag>
<Button icon="ios-plus-empty" type="dashed" size="small" @click="handleAdd">添加标签</Button> <Button icon="ios-plus-empty" type="dashed" size="small" @click="handleAdd">添加标签</Button>
<br><br><hr><br>
<Tag :checked="checked" checkable>test</Tag>
<Button @click="toggle">
Toggle
</Button>
<span>{{ checked }}</span>
</div> </div>
</template> </template>
<script> <script>
@ -69,7 +76,8 @@
data () { data () {
return { return {
show: true, show: true,
count: [0, 1, 2] count: [0, 1, 2],
checked: true
}; };
}, },
methods: { methods: {
@ -86,6 +94,9 @@
handleClose2 (event, name) { handleClose2 (event, name) {
const index = this.count.indexOf(name); const index = this.count.indexOf(name);
this.count.splice(index, 1); this.count.splice(index, 1);
},
toggle() {
this.checked = !this.checked;
} }
} }
}; };

View file

@ -294,8 +294,11 @@
this.$refs.input.currentValue = ''; this.$refs.input.currentValue = '';
const oldVal = JSON.stringify(this.currentValue); const oldVal = JSON.stringify(this.currentValue);
this.currentValue = item.value.split(','); this.currentValue = item.value.split(',');
// use setTimeout for #4786, can not use nextTick, because @on-find-selected use nextTick
setTimeout(() => {
this.emitValue(this.currentValue, oldVal); this.emitValue(this.currentValue, oldVal);
this.handleClose(); this.handleClose();
}, 0);
}, },
handleFocus () { handleFocus () {
this.$refs.input.focus(); this.$refs.input.focus();

View file

@ -77,10 +77,16 @@
// return value back recursion // // return value back recursion //
const backItem = this.getBaseItem(item); const backItem = this.getBaseItem(item);
if (backItem.label !== this.tmpItem.label || backItem.value !== this.tmpItem.value) { // #5021 for this.changeOnSelect if #4472
if (
this.changeOnSelect ||
(backItem.label !== this.tmpItem.label || backItem.value !== this.tmpItem.value) ||
(backItem.label === this.tmpItem.label && backItem.value === this.tmpItem.value)
) {
this.tmpItem = backItem; this.tmpItem = backItem;
this.emitUpdate([backItem]); this.emitUpdate([backItem]);
} }
if (item.children && item.children.length){ if (item.children && item.children.length){
this.sublist = item.children; this.sublist = item.children;
this.dispatch('Cascader', 'on-result-change', { this.dispatch('Cascader', 'on-result-change', {

View file

@ -55,6 +55,7 @@
if (this.timeDisabled) return; if (this.timeDisabled) return;
this.$emit('on-pick-toggle-time'); this.$emit('on-pick-toggle-time');
this.dispatch('CalendarPicker', 'focus-input'); this.dispatch('CalendarPicker', 'focus-input');
this.dispatch('CalendarPicker', 'update-popper');
}, },
handleTab(e) { handleTab(e) {
const tabbables = [...this.$el.children]; const tabbables = [...this.$el.children];

View file

@ -679,6 +679,9 @@
}, },
focus() { focus() {
this.$refs.input && this.$refs.input.focus(); this.$refs.input && this.$refs.input.focus();
},
updatePopper () {
this.$refs.drop.update();
} }
}, },
watch: { watch: {
@ -715,6 +718,7 @@
// to handle focus from confirm buttons // to handle focus from confirm buttons
this.$on('focus-input', () => this.focus()); this.$on('focus-input', () => this.focus());
this.$on('update-popper', () => this.updatePopper());
} }
}; };
</script> </script>

View file

@ -11,10 +11,14 @@
</template> </template>
<script> <script>
import Spin from '../spin/spin.vue';
import Icon from '../icon/icon.vue';
const prefixCls = 'ivu-scroll'; const prefixCls = 'ivu-scroll';
export default { export default {
props: ['text', 'active', 'spinnerHeight'], props: ['text', 'active', 'spinnerHeight'],
components: { Spin, Icon },
computed: { computed: {
wrapperClasses() { wrapperClasses() {
return [ return [

View file

@ -2,9 +2,7 @@
<li <li
:class="classes" :class="classes"
@click.stop="select" @click.stop="select"
@touchend.stop="select"
@mousedown.prevent @mousedown.prevent
@touchstart.prevent
><slot>{{ showLabel }}</slot></li> ><slot>{{ showLabel }}</slot></li>
</template> </template>
<script> <script>

View file

@ -137,6 +137,11 @@
this.$emit('on-change', checked, this.name); this.$emit('on-change', checked, this.name);
} }
} }
},
watch: {
checked (val) {
this.isChecked = val;
}
} }
}; };
</script> </script>

View file

@ -128,6 +128,10 @@
width: auto !important; width: auto !important;
margin: 10px; margin: 10px;
} }
.@{modal-prefix-cls}-fullscreen{
width: 100% !important;
margin: 0;
}
.vertical-center-modal { .vertical-center-modal {
.@{modal-prefix-cls} { .@{modal-prefix-cls} {
flex: 1; flex: 1;

8
types/message.d.ts vendored
View file

@ -48,8 +48,9 @@ export declare interface MessageConfig {
content?: string; content?: string;
/** /**
* 使 Vue Render * 使 Vue Render
* @param h Render函数
*/ */
render?: (h: CreateElement) => VNode; render?: (h?: CreateElement) => VNode;
/** /**
* *
*/ */
@ -71,7 +72,7 @@ export declare interface MessageConfig {
duration?: number; duration?: number;
} }
declare module 'vue/types/vue' { declare module "vue/types/vue" {
interface Vue { interface Vue {
/** /**
* *
@ -79,6 +80,3 @@ declare module 'vue/types/vue' {
$Message: Message; $Message: Message;
} }
} }

29
types/modal.d.ts vendored
View file

@ -2,7 +2,7 @@
// Project: https://github.com/iview/iview // Project: https://github.com/iview/iview
// Definitions by: yangdan // Definitions by: yangdan
// Definitions: https://github.com/yangdan8/iview.git // Definitions: https://github.com/yangdan8/iview.git
import Vue, { VNode } from 'vue'; import Vue, { VNode, CreateElement } from "vue";
export declare interface Modal { export declare interface Modal {
/** /**
@ -23,7 +23,7 @@ export declare interface Modal {
* *
* @default true * @default true
*/ */
'mask-closable'?: boolean; "mask-closable"?: boolean;
/** /**
* loading visible来关闭对话框, * loading visible来关闭对话框,
* @default false * @default false
@ -53,12 +53,12 @@ export declare interface Modal {
* *
* @default * @default
*/ */
'ok-text'?: string; "ok-text"?: string;
/** /**
* *
* @default * @default
*/ */
'cancel-text'?: string; "cancel-text"?: string;
/** /**
* px * px
* 768px auto, * 768px auto,
@ -69,7 +69,7 @@ export declare interface Modal {
* *
* @default false * @default false
*/ */
'footer-hide'?: boolean; "footer-hide"?: boolean;
/** /**
* .ivu-modal的样式 * .ivu-modal的样式
*/ */
@ -77,17 +77,17 @@ export declare interface Modal {
/** /**
* .ivu-modal-wrap的类名 * .ivu-modal-wrap的类名
*/ */
'class-name'?: string; "class-name"?: string;
/** /**
* *
* @default 1000 * @default 1000
*/ */
'z-index'?: number; "z-index"?: number;
/** /**
* , * ,
* @default ['ease', 'fade'] * @default ['ease', 'fade']
*/ */
'transition-names'?: Array<string>; "transition-names"?: Array<string>;
/** /**
* body true * body true
* @default true * @default true
@ -96,15 +96,15 @@ export declare interface Modal {
/** /**
* *
*/ */
$emit(eventName: 'on-ok'): this; $emit(eventName: "on-ok"): this;
/** /**
* *
*/ */
$emit(eventName: 'on-cancel'): this; $emit(eventName: "on-cancel"): this;
/** /**
* *
*/ */
$emit(eventName: 'on-visible-change', visible: boolean): this; $emit(eventName: "on-visible-change", visible: boolean): this;
/** /**
* slot插槽对象 * slot插槽对象
*/ */
@ -112,7 +112,7 @@ export declare interface Modal {
/** /**
* *
*/ */
'': VNode[]; "": VNode[];
/** /**
* *
*/ */
@ -171,8 +171,9 @@ export declare interface ModalConfig {
content?: string; content?: string;
/** /**
* 使 content * 使 content
* @param h Render函数
*/ */
render?: (h?) => void; render?: (h?: CreateElement) => void;
/** /**
* px * px
* @default 416 * @default 416
@ -213,7 +214,7 @@ export declare interface ModalConfig {
onCancel?: () => void; onCancel?: () => void;
} }
declare module 'vue/types/vue' { declare module "vue/types/vue" {
interface Vue { interface Vue {
/** /**
* *

5
types/notice.d.ts vendored
View file

@ -55,8 +55,9 @@ export declare interface NoticeConfig {
desc?: string; desc?: string;
/** /**
* 使 Vue Render * 使 Vue Render
* @param h Render函数
*/ */
render?: (h: CreateElement) => VNode; render?: (h?: CreateElement) => VNode;
/** /**
* 0 4.5 * 0 4.5
*/ */
@ -82,7 +83,7 @@ export declare interface NoticeGlobalConfig {
duration?: number; duration?: number;
} }
declare module 'vue/types/vue' { declare module "vue/types/vue" {
interface Vue { interface Vue {
/** /**
* *

95
types/table.d.ts vendored
View file

@ -2,7 +2,7 @@
// Project: https://github.com/iview/iview // Project: https://github.com/iview/iview
// Definitions by: yangdan // Definitions by: yangdan
// Definitions: https://github.com/yangdan8/iview.git // Definitions: https://github.com/yangdan8/iview.git
import Vue, { VNode } from 'vue'; import Vue, { VNode, CreateElement } from "vue";
export declare interface Table extends Vue { export declare interface Table extends Vue {
/** /**
@ -30,7 +30,7 @@ export declare interface Table extends Vue {
* *
* @default true * @default true
*/ */
'show-header'?: boolean; "show-header"?: boolean;
/** /**
* px * px
* @default * @default
@ -49,18 +49,18 @@ export declare interface Table extends Vue {
* *
* @default false * @default false
*/ */
'disabled-hover'?: boolean; "disabled-hover"?: boolean;
/** /**
* *
* @default false * @default false
*/ */
'highlight-row'?: boolean; "highlight-row"?: boolean;
/** /**
* className * className
* row * row
* index * index
*/ */
'row-class-name'?: (row?: object, index?: number) => void; "row-class-name"?: (row?: object, index?: number) => void;
/** /**
* largesmalldefault * largesmalldefault
*/ */
@ -69,69 +69,86 @@ export declare interface Table extends Vue {
* *
* @default * @default
*/ */
'no-data-text'?: string; "no-data-text"?: string;
/** /**
* *
* @default * @default
*/ */
'no-filtered-data-text'?: string; "no-filtered-data-text"?: string;
/** /**
* highlight-row * highlight-row
* currentRow * currentRow
* oldCurrentRow * oldCurrentRow
*/ */
$emit(eventName: 'on-current-change', currentRow: object, oldCurrentRow: object): this; $emit(
eventName: "on-current-change",
currentRow: object,
oldCurrentRow: object
): this;
/** /**
* *
* selection * selection
* row * row
*/ */
$emit(eventName: 'on-select', selection: object[], row: object): this; $emit(eventName: "on-select", selection: object[], row: object): this;
/** /**
* *
* selection * selection
* row * row
*/ */
$emit(eventName: 'on-select-cancel', selection: object[], row: object): this; $emit(
eventName: "on-select-cancel",
selection: object[],
row: object
): this;
/** /**
* *
* selection * selection
*/ */
$emit(eventName: 'on-select-all', selection: object[]): this; $emit(eventName: "on-select-all", selection: object[]): this;
/** /**
* *
* selection * selection
*/ */
$emit(eventName: 'on-selection-change', selection: object[]): this; $emit(eventName: "on-selection-change", selection: object[]): this;
/** /**
* *
* column * column
* key * key
* order asc desc * order asc desc
*/ */
$emit(eventName: 'on-sort-change', column?: object, key?: string, order?: 'asc' | 'desc'): this; $emit(
eventName: "on-sort-change",
column?: object,
key?: string,
order?: "asc" | "desc"
): this;
/** /**
* *
*/ */
$emit(eventName: 'on-filter-change', value: any): this; $emit(eventName: "on-filter-change", value: any): this;
/** /**
* *
* currentRow * currentRow
* index?: 当前行的索引 * index?: 当前行的索引
*/ */
$emit(eventName: 'on-row-click', currentRow: object, index: number): this; $emit(eventName: "on-row-click", currentRow: object, index: number): this;
/** /**
* *
* currentRow * currentRow
* index?: 当前行的索引 * index?: 当前行的索引
*/ */
$emit(eventName: 'on-row-dblclick', currentRow: object, index: number): this; $emit(
eventName: "on-row-dblclick",
currentRow: object,
index: number
): this;
/** /**
* *
* row * row
* status * status
*/ */
$emit(eventName: 'on-expand', row: object, status: string): this; $emit(eventName: "on-expand", row: object, status: string): this;
/** /**
* *
*/ */
@ -167,7 +184,7 @@ export declare interface TableColumn {
/** /**
* indexselectionexpandhtml * indexselectionexpandhtml
*/ */
type?: 'index' | 'selection' | 'expand' | 'html'; type?: "index" | "selection" | "expand" | "html";
/** /**
* *
* @default # * @default #
@ -193,7 +210,7 @@ export declare interface TableColumn {
* left right center , left * left right center , left
* @default left * @default left
*/ */
align?: 'left' | 'right' | 'center'; align?: "left" | "right" | "center";
/** /**
* *
*/ */
@ -201,7 +218,7 @@ export declare interface TableColumn {
/** /**
* left right * left right
*/ */
fixed?: 'left' | 'right'; fixed?: "left" | "right";
/** /**
* *
* @default false * @default false
@ -217,24 +234,20 @@ export declare interface TableColumn {
* h rowcolumn index * h rowcolumn index
* *
* Render rc.18 render * Render rc.18 render
* @param h Render函数
* @param params rowcolumn index
*/ */
render?: (h?: render?: (
( h?: CreateElement,
el?: string | object | Function,
data?: string | TableRenderCreateElementData | TableRenderCreateElementResult | Array<TableRenderCreateElementResult>,
vnode?: string | TableRenderCreateElementResult[]
) => TableRenderCreateElementResult,
params?: TableColumnRenderParams params?: TableColumnRenderParams
) => TableRenderCreateElementResult; ) => TableRenderCreateElementResult;
/** /**
* column index * column index
* @param h Render函数
* @param params rowcolumn index
*/ */
renderHeader?: (h?: renderHeader?: (
( h?: CreateElement,
el?: string | object | Function,
data?: string | TableRenderCreateElementData | TableRenderCreateElementResult | Array<TableRenderCreateElementResult>,
vnode?: string | TableRenderCreateElementResult[]
) => TableRenderCreateElementResult,
params?: TableColumnRenderHeadParams params?: TableColumnRenderHeadParams
) => TableRenderCreateElementResult; ) => TableRenderCreateElementResult;
/** /**
@ -242,20 +255,20 @@ export declare interface TableColumn {
* Table on- sort - change ,false * Table on- sort - change ,false
* @default false * @default false
*/ */
sortable?: boolean | 'custom'; sortable?: boolean | "custom";
/** /**
* 使 a b type * 使 a b type
* sortable?: true type asc desc * sortable?: true type asc desc
*/ */
sortMethod?: (a: any, b: any, type: 'asc' | 'desc') => void; sortMethod?: (a: any, b: any, type: "asc" | "desc") => void;
/** /**
* asc desc * asc desc
*/ */
sortType?: 'asc' | 'desc'; sortType?: "asc" | "desc";
/** /**
* label value 使filterMethod * label value 使filterMethod
*/ */
filters?: { label: string, value: string | number | boolean }[]; filters?: { label: string; value: string | number | boolean }[];
/** /**
* 使 true * 使 true
*/ */
@ -283,7 +296,7 @@ export declare interface TableRenderCreateElementData {
/** /**
* `v-bind:class` API * `v-bind:class` API
*/ */
'class'?: object; class?: object;
/** /**
* `v-bind:style` API * `v-bind:style` API
*/ */
@ -291,7 +304,7 @@ export declare interface TableRenderCreateElementData {
/** /**
* HTML * HTML
*/ */
attrs?: object, attrs?: object;
/** /**
* props * props
*/ */
@ -326,7 +339,7 @@ export declare interface TableRenderCreateElementData {
/** /**
* myRef * myRef
*/ */
ref?: string ref?: string;
} }
export declare interface TableColumnRenderParams { export declare interface TableColumnRenderParams {
@ -413,7 +426,3 @@ export declare interface TableExportCsvParams {
*/ */
quoted?: boolean; quoted?: boolean;
} }

19
types/tree.d.ts vendored
View file

@ -2,7 +2,7 @@
// Project: https://github.com/iview/iview // Project: https://github.com/iview/iview
// Definitions by: yangdan // Definitions by: yangdan
// Definitions: https://github.com/yangdan8/iview.git // Definitions: https://github.com/yangdan8/iview.git
import Vue, { VNode } from 'vue'; import Vue, { VNode, CreateElement } from "vue";
export declare interface Tree extends Vue { export declare interface Tree extends Vue {
/** /**
@ -18,40 +18,41 @@ export declare interface Tree extends Vue {
* *
* @default false * @default false
*/ */
'show-checkbox'?: boolean; "show-checkbox"?: boolean;
/** /**
* *
* @default * @default
*/ */
'empty-text'?: string; "empty-text"?: string;
/** /**
* *
*/ */
'load-data'?: () => void; "load-data"?: () => void;
/** /**
* *
* @param h Render函数
*/ */
render?: () => void; render?: (h?: CreateElement) => void;
/** /**
* *
* @default children * @default children
*/ */
'children-key'?:string; "children-key"?: string;
/** /**
* *
* @default * @default
*/ */
$emit(eventName: 'on-select-change', value: TreeChild[]): this; $emit(eventName: "on-select-change", value: TreeChild[]): this;
/** /**
* *
* @default * @default
*/ */
$emit(eventName: 'on-check-change', value: TreeChild[]): this; $emit(eventName: "on-check-change", value: TreeChild[]): this;
/** /**
* *
* @default * @default
*/ */
$emit(eventName: 'on-toggle-expand', value: TreeChild): this; $emit(eventName: "on-toggle-expand", value: TreeChild): this;
/** /**
* *
*/ */