From 310eda65b583f393278d78b8bfd694e219b96af9 Mon Sep 17 00:00:00 2001 From: Luis Fernando Rocha Date: Thu, 31 Aug 2017 23:34:54 -0500 Subject: [PATCH 01/24] Update es.js Slight adjustments and added missing translations --- src/locale/lang/es.js | 86 +++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/src/locale/lang/es.js b/src/locale/lang/es.js index b25e05bcd..c6cdbaa09 100644 --- a/src/locale/lang/es.js +++ b/src/locale/lang/es.js @@ -2,56 +2,56 @@ export default { el: { colorpicker: { confirm: 'Confirmar', - clear: 'Limpiar' + clear: 'Despejar' }, datepicker: { now: 'Ahora', today: 'Hoy', cancel: 'Cancelar', - clear: 'Limpiar', + clear: 'Despejar', confirm: 'Confirmar', selectDate: 'Seleccionar fecha', selectTime: 'Seleccionar hora', - startDate: 'Fecha de Inicio', - startTime: 'Hora de Inicio', + startDate: 'Fecha Incial', + startTime: 'Hora Inicial', endDate: 'Fecha Final', endTime: 'Hora Final', year: 'Año', - month1: 'Enero', - month2: 'Febrero', - month3: 'Marzo', - month4: 'Abril', - month5: 'Mayo', - month6: 'Junio', - month7: 'Julio', - month8: 'Agosto', - month9: 'Septiembre', - month10: 'Octubre', - month11: 'Noviembre', - month12: 'Diciembre', + month1: 'enero', + month2: 'febrero', + month3: 'marzo', + month4: 'abril', + month5: 'mayo', + month6: 'junio', + month7: 'julio', + month8: 'agosto', + month9: 'septiembre', + month10: 'octubre', + month11: 'noviembre', + month12: 'diciembre', // week: 'semana', weeks: { - sun: 'Dom', - mon: 'Lun', - tue: 'Mar', - wed: 'Mié', - thu: 'Jue', - fri: 'Vie', - sat: 'Sáb' + sun: 'dom', + mon: 'lun', + tue: 'mar', + wed: 'mié', + thu: 'jue', + fri: 'vie', + sat: 'sáb' }, months: { - jan: 'Ene', - feb: 'Feb', - mar: 'Mar', - apr: 'Abr', - may: 'May', - jun: 'Jun', - jul: 'Jul', - aug: 'Ago', - sep: 'Sep', - oct: 'Oct', - nov: 'Nov', - dec: 'Dic' + jan: 'ene', + feb: 'feb', + mar: 'mar', + apr: 'abr', + may: 'may', + jun: 'jun', + jul: 'jul', + aug: 'ago', + sep: 'sep', + oct: 'oct', + nov: 'nov', + dec: 'dic' } }, select: { @@ -67,7 +67,7 @@ export default { }, pagination: { goto: 'Ir a', - pagesize: '/pagina', + pagesize: '/página', total: 'Total {total}', pageClassifier: '' }, @@ -84,9 +84,9 @@ export default { table: { emptyText: 'Sin Datos', confirmFilter: 'Confirmar', - resetFilter: 'Limpiar', - clearFilter: 'Todo', - sumText: 'Sum' // to be translated + resetFilter: 'Reiniciar', + clearFilter: 'Despejar', + sumText: 'Suma' }, tree: { emptyText: 'Sin Datos' @@ -94,10 +94,10 @@ export default { transfer: { noMatch: 'No hay datos que coincidan', noData: 'Sin datos', - titles: ['List 1', 'List 2'], // to be translated - filterPlaceholder: 'Enter keyword', // to be translated - noCheckedFormat: '{total} items', // to be translated - hasCheckedFormat: '{checked}/{total} checked' // to be translated + titles: ['Lista 1', 'Lista 2'], + filterPlaceholder: 'Ingresar palabra clave', + noCheckedFormat: '{total} artículos', + hasCheckedFormat: '{checked}/{total} revisados' } } }; From 740ad56577eae03be7e194772466cc0c6d947acb Mon Sep 17 00:00:00 2001 From: yocheved Date: Thu, 24 Aug 2017 13:47:27 +0300 Subject: [PATCH 02/24] Create he.js add hebrew language file --- src/locale/lang/he.js | 104 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 src/locale/lang/he.js diff --git a/src/locale/lang/he.js b/src/locale/lang/he.js new file mode 100644 index 000000000..66aae3a8f --- /dev/null +++ b/src/locale/lang/he.js @@ -0,0 +1,104 @@ +export default { + el: { + colorpicker: { + confirm: 'אישור', + clear: 'נקה' + }, + datepicker: { + now: 'כעת', + today: 'היום', + cancel: 'בטל', + clear: 'נקה', + confirm: 'אישור', + selectDate: 'בחר תאריך', + selectTime: 'בחר זמן', + startDate: 'תאריך התחלה', + startTime: 'זמן התחלה', + endDate: 'תאריך סיום', + endTime: 'זמן סיום', + year: '', + month1: 'ינואר', + month2: 'פברואר', + month3: 'מרץ', + month4: 'אפריל', + month5: 'מאי', + month6: 'יוני', + month7: 'יולי', + month8: 'אוגוסט', + month9: 'ספטמבר', + month10: 'אוקטובר', + month11: 'נובמבר', + month12: 'דצמבר', + // week: 'week', + weeks: { + sun: 'א׳', + mon: 'ב׳', + tue: 'ג׳', + wed: 'ד׳', + thu: 'ה׳', + fri: 'ו׳', + sat: 'שבת' + }, + months: { + jan: 'ינואר', + feb: 'פברואר', + mar: 'מרץ', + apr: 'אפריל', + may: 'מאי', + jun: 'יוני', + jul: 'יולי', + aug: 'אוגוסט', + sep: 'ספטמבר', + oct: 'אוקטובר', + nov: 'נובמבר', + dec: 'דצמבר' + } + }, + select: { + loading: 'טוען', + noMatch: 'לא נמצאו נתונים', + noData: 'ללא נתונים', + placeholder: 'בחר' + }, + cascader: { + noMatch: 'ללא נתונים מתאימים', + loading: 'טוען', + placeholder: 'בחר' + }, + pagination: { + goto: 'עבור ל', + pagesize: '/page', + total: 'כולל {total}', + pageClassifier: '' + }, + messagebox: { + title: 'הודעה', + confirm: 'אישור', + cancel: 'בטל', + error: 'קלט לא תקין' + }, + upload: { + delete: 'מחק', + preview: 'תצוגה מקדימה', + continue: 'המשך' + }, + table: { + emptyText: 'אין נתונים', + confirmFilter: 'אישור', + resetFilter: 'נקה', + clearFilter: 'הכל', + sumText: 'סך' + }, + tree: { + emptyText: 'אין נתונים' + }, + transfer: { + noMatch: 'אין נתונים מתאימים', + noData: 'ללא נתונים', + titles: ['List 1', 'List 2'], // to be translated + filterPlaceholder: 'הקלד', // to be translated + noCheckedFormat: 'פריטים {total}', // to be translated + hasCheckedFormat: ' אישור {checked}/{total}' // to be translated + } + } +}; From a033db42974f59f3e64e19e1a11312e232dfcee3 Mon Sep 17 00:00:00 2001 From: yocheved Date: Sun, 27 Aug 2017 14:03:13 +0300 Subject: [PATCH 03/24] translate forgotten titles --- src/locale/lang/he.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locale/lang/he.js b/src/locale/lang/he.js index 66aae3a8f..c0d39364c 100644 --- a/src/locale/lang/he.js +++ b/src/locale/lang/he.js @@ -95,7 +95,7 @@ export default { transfer: { noMatch: 'אין נתונים מתאימים', noData: 'ללא נתונים', - titles: ['List 1', 'List 2'], // to be translated + titles: ['רשימה 1', 'רשימה 2'], // to be translated filterPlaceholder: 'הקלד', // to be translated noCheckedFormat: 'פריטים {total}', // to be translated hasCheckedFormat: ' אישור {checked}/{total}' // to be translated From 48074f2eee421893d6469405316802e1bb33f310 Mon Sep 17 00:00:00 2001 From: fanzhaobing <1083418227@qq.com> Date: Fri, 1 Sep 2017 18:15:46 +0800 Subject: [PATCH 04/24] Slider: add props debounce --- examples/docs/zh-CN/slider.md | 1 + packages/slider/src/main.vue | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/examples/docs/zh-CN/slider.md b/examples/docs/zh-CN/slider.md index d6f4ae063..cec1f5c0f 100644 --- a/examples/docs/zh-CN/slider.md +++ b/examples/docs/zh-CN/slider.md @@ -237,6 +237,7 @@ | range | 是否为范围选择 | boolean | — | false | | vertical | 是否竖向模式 | boolean | — | false | | height | Slider 高度,竖向模式时必填 | String | — | — | +| debounce | 输入时的去抖延迟,毫秒,show-input等于true时有效 | number | — | 300 | ### Events | 事件名称 | 说明 | 回调参数 | diff --git a/packages/slider/src/main.vue b/packages/slider/src/main.vue index 07a2fed63..2bb149bb2 100644 --- a/packages/slider/src/main.vue +++ b/packages/slider/src/main.vue @@ -11,6 +11,7 @@ :controls="showInputControls" :min="min" :max="max" + :debounce="debounce" size="small">
Date: Fri, 1 Sep 2017 19:17:41 +0800 Subject: [PATCH 05/24] modify the document relate to slider --- examples/docs/en-US/slider.md | 1 + examples/docs/zh-CN/slider.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/docs/en-US/slider.md b/examples/docs/en-US/slider.md index 9c47f1eb8..da92904d2 100644 --- a/examples/docs/en-US/slider.md +++ b/examples/docs/en-US/slider.md @@ -213,6 +213,7 @@ Selecting a range of values is supported. | range | whether to select a range | boolean | — | false | | vertical | vertical mode | boolean | — | false | | height | Slider height, required in vertical mode | String | — | — | +|debounce| debounce delay when typing, in millisecond, works when `show-input` is true | number | — | 300 | ## Events | Event Name | Description | Parameters | diff --git a/examples/docs/zh-CN/slider.md b/examples/docs/zh-CN/slider.md index cec1f5c0f..35d9c8749 100644 --- a/examples/docs/zh-CN/slider.md +++ b/examples/docs/zh-CN/slider.md @@ -237,7 +237,7 @@ | range | 是否为范围选择 | boolean | — | false | | vertical | 是否竖向模式 | boolean | — | false | | height | Slider 高度,竖向模式时必填 | String | — | — | -| debounce | 输入时的去抖延迟,毫秒,show-input等于true时有效 | number | — | 300 | +| debounce | 输入时的去抖延迟,毫秒,仅在`show-input`等于true时有效 | number | — | 300 | ### Events | 事件名称 | 说明 | 回调参数 | From adf357fb363cb62b6b33d3101584bf60bf89a11b Mon Sep 17 00:00:00 2001 From: QingDeng Date: Wed, 30 Aug 2017 14:02:14 +0800 Subject: [PATCH 06/24] DatePicker:fix month status check Bug fix month status check Bug --- packages/date-picker/src/basic/month-table.vue | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/date-picker/src/basic/month-table.vue b/packages/date-picker/src/basic/month-table.vue index 2ff8b846a..d16a560fe 100644 --- a/packages/date-picker/src/basic/month-table.vue +++ b/packages/date-picker/src/basic/month-table.vue @@ -78,18 +78,12 @@ while (date < nextMonth) { if (this.disabledDate(date)) { date = new Date(date.getTime() + 8.64e7); + flag = true; } else { + flag = false; break; } } - // There is a bug of Chrome. - // For example: - // var date = new Date('1988-04-01 00:00:00') Fri Apr 01 1988 00:00:00 GMT+0800 (CST) - // date.setMonth(4) Sun May 01 1988 00:00:00 GMT+0900 (CDT) - // Sometimes the time zone will change. - if (date - nextMonth < 8.64e7) { - flag = true; - } } style.disabled = flag; From e3c0e2ef05b53b97cdff34af83fac4456e22e6ad Mon Sep 17 00:00:00 2001 From: huguangju Date: Mon, 4 Sep 2017 18:29:34 +0800 Subject: [PATCH 07/24] Pagination: fix Jumper value should reassign when internalCurrentPage greater than internalPageCount --- packages/pagination/src/pagination.js | 12 +++++++++++- test/unit/specs/pagination.spec.js | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/pagination/src/pagination.js b/packages/pagination/src/pagination.js index 5f825fe34..a515d7907 100644 --- a/packages/pagination/src/pagination.js +++ b/packages/pagination/src/pagination.js @@ -189,16 +189,25 @@ export default { handleFocus(event) { this.oldValue = event.target.value; }, + handleBlur({ target }) { + this.reassignMaxValue(target); + }, handleKeyUp(event) { const key = event.key || ''; const keyCode = event.keyCode || ''; if ((key && key === 'Enter') || (keyCode && keyCode === 13)) { + this.reassignMaxValue(event.target); this.handleChange({ target: event.target }); } }, handleChange({ target }) { this.$parent.internalCurrentPage = this.$parent.getValidCurrentPage(target.value); this.oldValue = null; + }, + reassignMaxValue(target) { + if (+target.value > this.$parent.internalPageCount) { + target.value = this.$parent.internalPageCount; + } } }, @@ -210,11 +219,12 @@ export default { class="el-pagination__editor" type="number" min={ 1 } - max={ this.internalPageCount } + max={ this.$parent.internalPageCount } value={ this.$parent.internalCurrentPage } domProps-value={ this.$parent.internalCurrentPage } on-change={ this.handleChange } on-focus={ this.handleFocus } + on-blur={ this.handleBlur } on-keyup={ this.handleKeyUp } number/> { this.t('el.pagination.pageClassifier') } diff --git a/test/unit/specs/pagination.spec.js b/test/unit/specs/pagination.spec.js index f2a121f60..2df897193 100644 --- a/test/unit/specs/pagination.spec.js +++ b/test/unit/specs/pagination.spec.js @@ -219,6 +219,7 @@ describe('Pagination', () => { triggerEvent(input, 'change'); setTimeout(() => { expect(vm.page).to.equal(10); + expect(input.value).to.equal('10'); input.value = '我好帅'; triggerEvent(input, 'change'); From 3c8977d23bb47bc3d18e3f77e3e7daaa10dac73f Mon Sep 17 00:00:00 2001 From: Leopoldthecoder Date: Tue, 5 Sep 2017 17:28:26 +0800 Subject: [PATCH 08/24] Changelog: update for 1.4.4 --- CHANGELOG.en-US.md | 9 +++++++++ CHANGELOG.zh-CN.md | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/CHANGELOG.en-US.md b/CHANGELOG.en-US.md index b91ce7d86..f15ec285f 100644 --- a/CHANGELOG.en-US.md +++ b/CHANGELOG.en-US.md @@ -1,5 +1,14 @@ ## Changelog +### 1.4.4 + +*2017-09-05* + +- Fixed all months disabled in DatePicker month view when `disabledDate` is set, #6768 @qingdengyue +- Added `debounce` attribute for Slider, #6820 @langgo +- Fixed value of Pagination jumper can be bigger than the total page count, #6842 @huguangju +- Fixed TimePicker's focus slipping away when selecting hour to 23 with mouse scroll, #6719 @qingdengyue + ### 1.4.3 *2017-08-25* diff --git a/CHANGELOG.zh-CN.md b/CHANGELOG.zh-CN.md index 51ebef618..68fa3326a 100644 --- a/CHANGELOG.zh-CN.md +++ b/CHANGELOG.zh-CN.md @@ -1,5 +1,13 @@ ## 更新日志 +### 1.4.4 +*2017-09-05* + +- 修复设置了 `disabledDate` 的 DatePicker 在月视图下全部不可选的问题,#6768 @qingdengyue +- Slider 新增 `debounce` 属性,#6820 @langgo +- 修复 Pagination 的 jumper 中可以输入比最大页数更大的数字的问题,#6842 @huguangju +- 修复 TimePicker 的小时数难以通过滚动的方式选中 23 时的问题,#6719 @qingdengyue + ### 1.4.3 *2017-08-25* From efdf74d1a675f02209fbd85ed7f10eb35823fca5 Mon Sep 17 00:00:00 2001 From: Leopoldthecoder Date: Tue, 5 Sep 2017 17:39:20 +0800 Subject: [PATCH 09/24] [build] 1.4.4 --- examples/versions.json | 2 +- packages/theme-default/package.json | 2 +- src/index.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/versions.json b/examples/versions.json index 95f66bd5b..8f9e56e38 100644 --- a/examples/versions.json +++ b/examples/versions.json @@ -1 +1 @@ -{"1.0.9":"1.0","1.1.6":"1.1","1.2.9":"1.2","1.3.7":"1.3","1.4.3":"1.4"} \ No newline at end of file +{"1.0.9":"1.0","1.1.6":"1.1","1.2.9":"1.2","1.3.7":"1.3","1.4.4":"1.4"} \ No newline at end of file diff --git a/packages/theme-default/package.json b/packages/theme-default/package.json index b8519ffee..d0269cf10 100644 --- a/packages/theme-default/package.json +++ b/packages/theme-default/package.json @@ -1,6 +1,6 @@ { "name": "element-theme-default", - "version": "1.4.3", + "version": "1.4.4", "description": "Element component default theme.", "main": "lib/index.css", "style": "lib/index.css", diff --git a/src/index.js b/src/index.js index e90fb577b..554fd7768 100644 --- a/src/index.js +++ b/src/index.js @@ -158,7 +158,7 @@ if (typeof window !== 'undefined' && window.Vue) { }; module.exports = { - version: '1.4.3', + version: '1.4.4', locale: locale.use, i18n: locale.i18n, install, From 08b02baf3ae569919d398df794d94b76653520c2 Mon Sep 17 00:00:00 2001 From: Leopoldthecoder Date: Tue, 5 Sep 2017 17:39:20 +0800 Subject: [PATCH 10/24] [release] 1.4.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f3351f4f1..baf9d8c5b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "element-ui", - "version": "1.4.3", + "version": "1.4.4", "description": "A Component Library for Vue.js.", "main": "lib/element-ui.common.js", "files": [ From 40c204d3d654ff03710ec97dcdec1371ad38d247 Mon Sep 17 00:00:00 2001 From: Lukasz Balcerzak Date: Tue, 5 Sep 2017 21:43:14 +0200 Subject: [PATCH 11/24] Fixed reactivity of colors prop for rate component --- packages/rate/src/main.vue | 18 ++++++++++-------- test/unit/specs/rate.spec.js | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/packages/rate/src/main.vue b/packages/rate/src/main.vue index 1ee698153..31f9c83fb 100644 --- a/packages/rate/src/main.vue +++ b/packages/rate/src/main.vue @@ -32,7 +32,6 @@ data() { return { classMap: {}, - colorMap: {}, pointerAtLeftHalf: true, currentValue: this.value, hoverIndex: -1 @@ -153,6 +152,16 @@ return this.getValueFromMap(this.currentValue, this.classMap); }, + colorMap() { + return { + lowColor: this.colors[0], + mediumColor: this.colors[1], + highColor: this.colors[2], + voidColor: this.voidColor, + disabledVoidColor: this.disabledVoidColor + }; + }, + activeColor() { return this.getValueFromMap(this.currentValue, this.colorMap); }, @@ -267,13 +276,6 @@ voidClass: this.voidIconClass, disabledVoidClass: this.disabledVoidIconClass }; - this.colorMap = { - lowColor: this.colors[0], - mediumColor: this.colors[1], - highColor: this.colors[2], - voidColor: this.voidColor, - disabledVoidColor: this.disabledVoidColor - }; } }; diff --git a/test/unit/specs/rate.spec.js b/test/unit/specs/rate.spec.js index 5d5de5a54..8cb485d2a 100644 --- a/test/unit/specs/rate.spec.js +++ b/test/unit/specs/rate.spec.js @@ -95,6 +95,41 @@ describe('Rate', () => { expect(thirdIcon.style.color).to.equal('rgb(255, 153, 0)'); }); + it('colors are updated after prop is changed', done => { + vm = createVue({ + template: ` +
+ +
+ `, + + computed: { + colors() { + if (this.muted) { + return ['#999', '#999', '#999'] + } else { + return ['#99A9BF', '#F7BA2A', '#FF9900'] + } + } + }, + data() { + return { + value: 4, + muted: false + }; + } + }, true); + setTimeout(() => { + vm.muted = true; + vm.$nextTick(() => { + const thirdIcon = vm.$el.querySelectorAll('.el-rate__item')[2].querySelector('.el-rate__icon'); + //expect(thirdIcon.style.color).to.equal('rgb(153, 153, 153)'); + expect(thirdIcon.style.color).to.equal('rgb(0, 0, 0)'); + done(); + }); + }, 10); + }); + it('threshold', () => { vm = createVue({ template: ` From 0adc0c081290e14ce961beab36c2bf645465c7c0 Mon Sep 17 00:00:00 2001 From: Lukasz Balcerzak Date: Tue, 5 Sep 2017 21:50:54 +0200 Subject: [PATCH 12/24] Fixed test --- test/unit/specs/rate.spec.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/unit/specs/rate.spec.js b/test/unit/specs/rate.spec.js index 8cb485d2a..44d2e536f 100644 --- a/test/unit/specs/rate.spec.js +++ b/test/unit/specs/rate.spec.js @@ -123,8 +123,7 @@ describe('Rate', () => { vm.muted = true; vm.$nextTick(() => { const thirdIcon = vm.$el.querySelectorAll('.el-rate__item')[2].querySelector('.el-rate__icon'); - //expect(thirdIcon.style.color).to.equal('rgb(153, 153, 153)'); - expect(thirdIcon.style.color).to.equal('rgb(0, 0, 0)'); + expect(thirdIcon.style.color).to.equal('rgb(153, 153, 153)'); done(); }); }, 10); From 0e0f234428ef01e7be105aaf261e62b1e4b319cf Mon Sep 17 00:00:00 2001 From: Lukasz Balcerzak Date: Tue, 5 Sep 2017 21:54:17 +0200 Subject: [PATCH 13/24] lint --- test/unit/specs/rate.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unit/specs/rate.spec.js b/test/unit/specs/rate.spec.js index 44d2e536f..c98932c5f 100644 --- a/test/unit/specs/rate.spec.js +++ b/test/unit/specs/rate.spec.js @@ -106,9 +106,9 @@ describe('Rate', () => { computed: { colors() { if (this.muted) { - return ['#999', '#999', '#999'] + return ['#999', '#999', '#999']; } else { - return ['#99A9BF', '#F7BA2A', '#FF9900'] + return ['#99A9BF', '#F7BA2A', '#FF9900']; } } }, From fece184c648fc301af29d61da786020a8ab43246 Mon Sep 17 00:00:00 2001 From: Leopoldthecoder Date: Wed, 6 Sep 2017 10:16:34 +0800 Subject: [PATCH 14/24] Table: sortable header discoverability --- packages/table/src/table-header.js | 2 +- packages/theme-default/src/table.css | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/table/src/table-header.js b/packages/table/src/table-header.js index f6247952e..4d524166c 100644 --- a/packages/table/src/table-header.js +++ b/packages/table/src/table-header.js @@ -102,7 +102,7 @@ export default { on-mouseout={ this.handleMouseOut } on-mousedown={ ($event) => this.handleMouseDown($event, column) } on-click={ ($event) => this.handleHeaderClick($event, column) } - class={ [column.id, column.order, column.headerAlign, column.className || '', rowIndex === 0 && this.isCellHidden(cellIndex, columns) ? 'is-hidden' : '', !column.children ? 'is-leaf' : '', column.labelClassName] }> + class={ [column.id, column.order, column.headerAlign, column.className || '', rowIndex === 0 && this.isCellHidden(cellIndex, columns) ? 'is-hidden' : '', !column.children ? 'is-leaf' : '', column.labelClassName, column.sortable ? 'is-sortable' : ''] }>
0 ? 'highlight' : '', column.labelClassName] }> { column.renderHeader diff --git a/packages/theme-default/src/table.css b/packages/theme-default/src/table.css index 52a5dc23f..863bcc387 100644 --- a/packages/theme-default/src/table.css +++ b/packages/theme-default/src/table.css @@ -136,6 +136,10 @@ border-bottom: 1px solid var(--table-border-color); } + & th.is-sortable { + cursor: pointer; + } + @modifier border { & th, td { border-right: 1px solid var(--table-border-color); From 096f3afcb53fe6cec2af343a092ed8fad39293a9 Mon Sep 17 00:00:00 2001 From: Artem Kuznetsov Date: Fri, 8 Sep 2017 10:25:06 +0300 Subject: [PATCH 15/24] Locale: [ru-RU] add translation for table & transfer --- src/locale/lang/ru-RU.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/locale/lang/ru-RU.js b/src/locale/lang/ru-RU.js index a49690fcd..3e4f7697f 100644 --- a/src/locale/lang/ru-RU.js +++ b/src/locale/lang/ru-RU.js @@ -87,7 +87,7 @@ export default { confirmFilter: 'Подтвердить', resetFilter: 'Сбросить', clearFilter: 'Все', - sumText: 'Sum' // to be translated + sumText: 'Сумма' }, tree: { emptyText: 'Нет данных' @@ -95,10 +95,10 @@ export default { transfer: { noMatch: 'Совпадений не найдено', noData: 'Нет данных', - titles: ['List 1', 'List 2'], // to be translated - filterPlaceholder: 'Enter keyword', // to be translated - noCheckedFormat: '{total} items', // to be translated - hasCheckedFormat: '{checked}/{total} checked' // to be translated + titles: ['Список 1', 'Список 2'], + filterPlaceholder: 'Введите ключевое слово', + noCheckedFormat: '{total} пунктов', + hasCheckedFormat: '{checked}/{total} выбрано' } } }; From 3e7996edc86db32102ecbb6b4dc3d25242117154 Mon Sep 17 00:00:00 2001 From: Artem Kuznetsov Date: Fri, 8 Sep 2017 10:33:37 +0300 Subject: [PATCH 16/24] Locale: [ua] add translation for table & transfer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix slang 'Нема' -> 'Немає' --- src/locale/lang/ua.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/locale/lang/ua.js b/src/locale/lang/ua.js index fe94b9f29..ad76150dd 100644 --- a/src/locale/lang/ua.js +++ b/src/locale/lang/ua.js @@ -57,7 +57,7 @@ export default { select: { loading: 'Завантаження', noMatch: 'Співпадінь не знайдено', - noData: 'Нема даних', + noData: 'Немає даних', placeholder: 'Обрати' }, cascader: { @@ -83,22 +83,22 @@ export default { continue: 'Продовжити' }, table: { - emptyText: 'Нема даних', + emptyText: 'Немає даних', confirmFilter: 'Підтвердити', resetFilter: 'Скинути', clearFilter: 'Все', - sumText: 'Sum' // to be translated + sumText: 'Сума' }, tree: { - emptyText: 'Нема даних' + emptyText: 'Немає даних' }, transfer: { noMatch: 'Співпадінь не знайдено', noData: 'Обрати', - titles: ['List 1', 'List 2'], // to be translated - filterPlaceholder: 'Enter keyword', // to be translated - noCheckedFormat: '{total} items', // to be translated - hasCheckedFormat: '{checked}/{total} checked' // to be translated + titles: ['Список 1', 'Список 2'], + filterPlaceholder: 'Введіть ключове слово', + noCheckedFormat: '{total} пунктів', + hasCheckedFormat: '{checked}/{total} вибрано' } } }; From 460915447592ed9d95d17449df1339ea9771438b Mon Sep 17 00:00:00 2001 From: Leopoldthecoder Date: Thu, 7 Sep 2017 22:23:13 +0900 Subject: [PATCH 17/24] Tree: fix current-node-key === 0 bug --- packages/tree/src/model/node.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tree/src/model/node.js b/packages/tree/src/model/node.js index 49461e55a..37fcec394 100644 --- a/packages/tree/src/model/node.js +++ b/packages/tree/src/model/node.js @@ -132,7 +132,7 @@ export default class Node { this.expand(null, store.autoExpandParent); } - if (key && store.currentNodeKey && this.key === store.currentNodeKey) { + if (key && store.currentNodeKey !== undefined && this.key === store.currentNodeKey) { store.currentNode = this; } From 8fc973c51ac0fe161171b1dc2cd9e5980f41413f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hejx=20=E5=BF=83=E6=B5=81?= Date: Tue, 12 Sep 2017 11:20:02 +0800 Subject: [PATCH 18/24] LoadingL optimize the close process (#6966) * Remove useless parameters * Remove useless parameters * [Tree docs] Modify typos * [Loading] Optimize the close process * Optimize the close process * Revert the yarn.lock * Update yarn.lock --- examples/docs/zh-CN/tree.md | 2 +- packages/loading/src/index.js | 22 +++++++++++----------- test/unit/specs/loading.spec.js | 10 ++++++++-- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/examples/docs/zh-CN/tree.md b/examples/docs/zh-CN/tree.md index 640303265..2cad56298 100644 --- a/examples/docs/zh-CN/tree.md +++ b/examples/docs/zh-CN/tree.md @@ -855,7 +855,7 @@ | --------------------- | ---------------------------------------- | --------------------------- | ---- | ----- | | data | 展示数据 | array | — | — | | empty-text | 内容为空的时候展示的文本 | String | — | — | -| node-key | 每个树节点用来作为唯一标识的属性,整颗树应该是唯一的 | String | — | — | +| node-key | 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 | String | — | — | | props | 配置选项,具体看下表 | object | — | — | | load | 加载子树数据的方法 | function(node, resolve) | — | — | | render-content | 树节点的内容区的渲染 Function | Function(h, { node } | — | — | diff --git a/packages/loading/src/index.js b/packages/loading/src/index.js index 52752a9de..87d220998 100644 --- a/packages/loading/src/index.js +++ b/packages/loading/src/index.js @@ -19,21 +19,21 @@ LoadingConstructor.prototype.originalPosition = ''; LoadingConstructor.prototype.originalOverflow = ''; LoadingConstructor.prototype.close = function() { - if (this.fullscreen && this.originalOverflow !== 'hidden') { - document.body.style.overflow = this.originalOverflow; - } - if (this.fullscreen || this.body) { - document.body.style.position = this.originalPosition; - } else { - this.target.style.position = this.originalPosition; - } if (this.fullscreen) { fullscreenLoading = undefined; } this.$on('after-leave', _ => { - this.$el && - this.$el.parentNode && - this.$el.parentNode.removeChild(this.$el); + if (this.fullscreen && this.originalOverflow !== 'hidden') { + document.body.style.overflow = this.originalOverflow; + } + if (this.fullscreen || this.body) { + document.body.style.position = this.originalPosition; + } else { + this.target.style.position = this.originalPosition; + } + if (this.$el && this.$el.parentNode) { + this.$el.parentNode.removeChild(this.$el); + } this.$destroy(); }); this.visible = false; diff --git a/test/unit/specs/loading.spec.js b/test/unit/specs/loading.spec.js index ab71c65d6..4994f0372 100644 --- a/test/unit/specs/loading.spec.js +++ b/test/unit/specs/loading.spec.js @@ -184,7 +184,7 @@ describe('Loading', () => { expect(loadingInstance.visible).to.false; }); - it('target', () => { + it('target', done => { vm = createVue({ template: `
@@ -192,8 +192,14 @@ describe('Loading', () => { }, true); loadingInstance = Loading({ target: '.loading-container' }); let mask = document.querySelector('.el-loading-mask'); + let container = document.querySelector('.loading-container'); expect(mask).to.exist; - expect(mask.parentNode).to.equal(document.querySelector('.loading-container')); + expect(mask.parentNode).to.equal(container); + loadingInstance.close(); + setTimeout(() => { + expect(container.style.position).to.equal('relative'); + done(); + }, 200); }); it('body', () => { From bd7ef92583f31bbdd4a6f1d266f1300b0b450c30 Mon Sep 17 00:00:00 2001 From: Leopoldthecoder Date: Tue, 12 Sep 2017 11:19:15 +0800 Subject: [PATCH 19/24] dropdown: reactive disabled trigger element --- packages/dropdown/src/dropdown.vue | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/dropdown/src/dropdown.vue b/packages/dropdown/src/dropdown.vue index a5611a9a2..d4dabd021 100644 --- a/packages/dropdown/src/dropdown.vue +++ b/packages/dropdown/src/dropdown.vue @@ -39,7 +39,8 @@ data() { return { timeout: null, - visible: false + visible: false, + triggerElm: null }; }, @@ -57,37 +58,39 @@ methods: { show() { + if (this.triggerElm.disabled) return; clearTimeout(this.timeout); this.timeout = setTimeout(() => { this.visible = true; }, 250); }, hide() { + if (this.triggerElm.disabled) return; clearTimeout(this.timeout); this.timeout = setTimeout(() => { this.visible = false; }, 150); }, handleClick() { + if (this.triggerElm.disabled) return; this.visible = !this.visible; }, initEvent() { let { trigger, show, hide, handleClick, splitButton } = this; - let triggerElm = splitButton + this.triggerElm = splitButton ? this.$refs.trigger.$el : this.$slots.default[0].elm; - if (triggerElm.disabled) return; if (trigger === 'hover') { - triggerElm.addEventListener('mouseenter', show); - triggerElm.addEventListener('mouseleave', hide); + this.triggerElm.addEventListener('mouseenter', show); + this.triggerElm.addEventListener('mouseleave', hide); let dropdownElm = this.$slots.dropdown[0].elm; dropdownElm.addEventListener('mouseenter', show); dropdownElm.addEventListener('mouseleave', hide); } else if (trigger === 'click') { - triggerElm.addEventListener('click', handleClick); + this.triggerElm.addEventListener('click', handleClick); } }, handleMenuItemClick(command, instance) { From 2057604e24a233717f3d4646b87ff267a25d32c8 Mon Sep 17 00:00:00 2001 From: Leopoldthecoder Date: Tue, 12 Sep 2017 11:56:09 +0800 Subject: [PATCH 20/24] Tooltip: avoid adding handler repeatedly --- packages/tooltip/src/main.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/tooltip/src/main.js b/packages/tooltip/src/main.js index 146d69a38..be2993358 100644 --- a/packages/tooltip/src/main.js +++ b/packages/tooltip/src/main.js @@ -42,6 +42,12 @@ export default { } }, + data() { + return { + handlerAdded: false + }; + }, + beforeCreate() { if (this.$isServer) return; @@ -77,7 +83,7 @@ export default { if (!this.$slots.default || !this.$slots.default.length) return this.$slots.default; const vnode = getFirstComponentChild(this.$slots.default); - if (!vnode) return vnode; + if (!vnode || this.handlerAdded) return vnode; const data = vnode.data = vnode.data || {}; const on = vnode.data.on = vnode.data.on || {}; const nativeOn = vnode.data.nativeOn = vnode.data.nativeOn || {}; @@ -97,6 +103,7 @@ export default { methods: { addEventHandle(old, fn) { + this.handlerAdded = true; return old ? Array.isArray(old) ? old.concat(fn) : [old, fn] : fn; }, From 070f60c30793ee96390673a8fa69c7bfd9c8a8e9 Mon Sep 17 00:00:00 2001 From: ryatziv Date: Wed, 13 Sep 2017 19:45:25 -0700 Subject: [PATCH 21/24] Tooltip: add hide-after timeout for hiding tooltip (#6401) * added hide-after timeout for hiding tooltip * restored clearTimeout(this.timeout) in handleClosePopper() --- examples/docs/en-US/tooltip.md | 1 + packages/tooltip/src/main.js | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/examples/docs/en-US/tooltip.md b/examples/docs/en-US/tooltip.md index bcd68a730..d3fed443c 100644 --- a/examples/docs/en-US/tooltip.md +++ b/examples/docs/en-US/tooltip.md @@ -213,3 +213,4 @@ Disabled form elements are not supported in tooltip, see more information at [MD | manual | whether to control Tooltip manually. `mouseenter` and `mouseleave` won't have effects if set to `true` | boolean | — | false | | popper-class | custom class name for Tooltip's popper | string | — | — | | enterable | whether the mouse can enter the tooltip | Boolean | — | true | +| hide-after | timeout in milliseconds to hide tooltip | number | — | 0 | diff --git a/packages/tooltip/src/main.js b/packages/tooltip/src/main.js index be2993358..3ec0638fe 100644 --- a/packages/tooltip/src/main.js +++ b/packages/tooltip/src/main.js @@ -39,11 +39,16 @@ export default { enterable: { type: Boolean, default: true + }, + hideAfter: { + type: Number, + default: 0 } }, data() { return { + timeoutPending: null, handlerAdded: false }; }, @@ -118,15 +123,28 @@ export default { this.timeout = setTimeout(() => { this.showPopper = true; }, this.openDelay); + + if (this.hideAfter > 0) { + this.timeoutPending = setTimeout(() => { + this.showPopper = false; + }, this.hideAfter); + } }, handleClosePopper() { if (this.enterable && this.expectedState || this.manual) return; clearTimeout(this.timeout); + + if (this.timeoutPending) { + clearTimeout(this.timeoutPending); + } this.showPopper = false; }, setExpectedState(expectedState) { + if (expectedState === false) { + clearTimeout(this.timeoutPending); + } this.expectedState = expectedState; } } From e90823898ba2829d4fd30685f82820f97aa0fbe6 Mon Sep 17 00:00:00 2001 From: Leopoldthecoder Date: Tue, 12 Sep 2017 12:12:34 +0800 Subject: [PATCH 22/24] Clickoutside: id should be unique among all nodes --- src/utils/clickoutside.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/utils/clickoutside.js b/src/utils/clickoutside.js index 8122fa2d2..a3d32b009 100644 --- a/src/utils/clickoutside.js +++ b/src/utils/clickoutside.js @@ -5,6 +5,7 @@ const nodeList = []; const ctx = '@@clickoutsideContext'; let startClick; +let seed = 0; !Vue.prototype.$isServer && on(document, 'mousedown', e => (startClick = e)); @@ -21,7 +22,8 @@ let startClick; */ export default { bind(el, binding, vnode) { - const id = nodeList.push(el) - 1; + nodeList.push(el); + const id = seed++; const documentHandler = function(mouseup = {}, mousedown = {}) { if (!vnode.context || !mouseup.target || From a750f5d6b11829e4473a4ab7d7894bb765d429be Mon Sep 17 00:00:00 2001 From: Leopoldthecoder Date: Thu, 14 Sep 2017 17:55:31 +0800 Subject: [PATCH 23/24] TimePicker: fix cancel button --- packages/date-picker/src/panel/time.vue | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/date-picker/src/panel/time.vue b/packages/date-picker/src/panel/time.vue index 0d2c11a97..c7b83499a 100644 --- a/packages/date-picker/src/panel/time.vue +++ b/packages/date-picker/src/panel/time.vue @@ -54,6 +54,11 @@ watch: { visible(val) { this.currentVisible = val; + if (val) { + this.oldHours = this.hours; + this.oldMinutes = this.minutes; + this.oldSeconds = this.seconds; + } }, pickerWidth(val) { @@ -89,6 +94,9 @@ hours: 0, minutes: 0, seconds: 0, + oldHours: 0, + oldMinutes: 0, + oldSeconds: 0, selectableRange: [], currentDate: this.$options.defaultValue || this.date || new Date(), currentVisible: this.visible || false, @@ -108,7 +116,14 @@ }, handleCancel() { - this.$emit('pick'); + this.currentDate.setHours(this.oldHours); + this.currentDate.setMinutes(this.oldMinutes); + this.currentDate.setSeconds(this.oldSeconds); + this.hours = this.currentDate.getHours(); + this.minutes = this.currentDate.getMinutes(); + this.seconds = this.currentDate.getSeconds(); + const date = new Date(limitRange(this.currentDate, this.selectableRange, 'HH:mm:ss')); + this.$emit('pick', date); }, handleChange(date) { From 36d4f0a6fc45c35abb0cc43e8ccdb554fc3ba595 Mon Sep 17 00:00:00 2001 From: Leopoldthecoder Date: Thu, 14 Sep 2017 18:41:18 +0800 Subject: [PATCH 24/24] Select: move setSelect to mounted hook --- packages/select/src/select.vue | 5 ++--- test/unit/specs/select.spec.js | 24 +++++++++++++----------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/select/src/select.vue b/packages/select/src/select.vue index fc16266d4..09f59b057 100644 --- a/packages/select/src/select.vue +++ b/packages/select/src/select.vue @@ -660,8 +660,7 @@ }, getValueKey(item) { - const type = typeof item.value; - if (type === 'number' || type === 'string') { + if (Object.prototype.toString.call(item.value).toLowerCase() !== '[object object]') { return item.value; } else { return getValueByPath(item.value, this.valueKey); @@ -677,7 +676,6 @@ if (!this.multiple && Array.isArray(this.value)) { this.$emit('input', ''); } - this.setSelected(); this.debouncedOnInputChange = debounce(this.debounce, () => { this.onInputChange(); @@ -701,6 +699,7 @@ this.inputWidth = this.$refs.reference.$el.getBoundingClientRect().width; } }); + this.setSelected(); }, beforeDestroy() { diff --git a/test/unit/specs/select.spec.js b/test/unit/specs/select.spec.js index 3464a943d..9400c7cdc 100644 --- a/test/unit/specs/select.spec.js +++ b/test/unit/specs/select.spec.js @@ -585,20 +585,22 @@ describe('Select', () => { } } }, true); - const tagCloseIcons = vm.$el.querySelectorAll('.el-tag__close'); expect(vm.value.length).to.equal(2); - tagCloseIcons[1].click(); setTimeout(() => { - expect(vm.value.length).to.equal(1); - expect(window.console.log.callCount).to.equal(1); - tagCloseIcons[0].click(); + const tagCloseIcons = vm.$el.querySelectorAll('.el-tag__close'); + tagCloseIcons[1].click(); setTimeout(() => { - expect(vm.value.length).to.equal(0); - expect(window.console.log.callCount).to.equal(2); - window.console.log.restore(); - done(); - }, 100); - }, 100); + expect(vm.value.length).to.equal(1); + expect(window.console.log.callCount).to.equal(1); + tagCloseIcons[0].click(); + setTimeout(() => { + expect(vm.value.length).to.equal(0); + expect(window.console.log.callCount).to.equal(2); + window.console.log.restore(); + done(); + }, 50); + }, 50); + }, 50); }); it('multiple limit', done => {