From d45e919663364efb627ebd421fcc4efc62ee383d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=81=8F?= Date: Mon, 14 May 2018 15:38:07 +0800 Subject: [PATCH 01/11] update Tabs keyboard logic and support @on-click event --- examples/routers/tabs.vue | 196 +++-------------------------------- src/components/tabs/tabs.vue | 28 +---- 2 files changed, 14 insertions(+), 210 deletions(-) diff --git a/examples/routers/tabs.vue b/examples/routers/tabs.vue index cb017f63..0f7a972b 100644 --- a/examples/routers/tabs.vue +++ b/examples/routers/tabs.vue @@ -1,180 +1,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -182,15 +14,13 @@ export default { data () { return { - tabs: 2 - } + name: 'b' + }; }, methods: { - handleTabsAdd () { - this.tabs ++; + handleClick (name) { + console.log(name); } } - } + }; - - diff --git a/src/components/tabs/tabs.vue b/src/components/tabs/tabs.vue index 243fea2e..c4cb959c 100644 --- a/src/components/tabs/tabs.vue +++ b/src/components/tabs/tabs.vue @@ -47,19 +47,6 @@ else return nextTab; }; - const focusFirst = (element, root) => { - try {element.focus();} - catch(err) {} // eslint-disable-line no-empty - - if (document.activeElement == element && element !== root) return true; - - const candidates = element.children; - for (let candidate of candidates) { - if (focusFirst(candidate, root)) return true; - } - return false; - }; - export default { name: 'Tabs', mixins: [ Emitter ], @@ -240,18 +227,7 @@ this.activeKey = this.focusedKey || 0; const nextIndex = Math.max(this.navList.findIndex(tab => tab.name === this.focusedKey), 0); - [...this.$refs.panes.children].forEach((el, i) => { - if (nextIndex === i) { - [...el.children].forEach(child => child.style.display = 'block'); - setTimeout(() => { - focusFirst(el, el); - }, transitionTime); - } else { - setTimeout(() => { - [...el.children].forEach(child => child.style.display = 'none'); - }, transitionTime); - } - }); + this.handleChange(nextIndex); }, handleRemove (index) { const tabs = this.getTabs(); @@ -412,8 +388,6 @@ this.mutationObserver.observe(hiddenParentNode, { attributes: true, childList: true, characterData: true, attributeFilter: ['style'] }); } - - this.handleTabKeyboardSelect(); }, beforeDestroy() { this.observer.removeListener(this.$refs.navWrap, this.handleResize); From fce83323b9f84cf9e4127735259f13521de86b6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=81=8F?= Date: Thu, 17 May 2018 17:39:25 +0800 Subject: [PATCH 02/11] Revert "update Tabs keyboard logic and support @on-click event" This reverts commit d45e919663364efb627ebd421fcc4efc62ee383d. --- examples/routers/tabs.vue | 196 ++++++++++++++++++++++++++++++++--- src/components/tabs/tabs.vue | 28 ++++- 2 files changed, 210 insertions(+), 14 deletions(-) diff --git a/examples/routers/tabs.vue b/examples/routers/tabs.vue index 0f7a972b..cb017f63 100644 --- a/examples/routers/tabs.vue +++ b/examples/routers/tabs.vue @@ -1,12 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -14,13 +182,15 @@ export default { data () { return { - name: 'b' - }; + tabs: 2 + } }, methods: { - handleClick (name) { - console.log(name); + handleTabsAdd () { + this.tabs ++; } } - }; + } + + diff --git a/src/components/tabs/tabs.vue b/src/components/tabs/tabs.vue index c4cb959c..243fea2e 100644 --- a/src/components/tabs/tabs.vue +++ b/src/components/tabs/tabs.vue @@ -47,6 +47,19 @@ else return nextTab; }; + const focusFirst = (element, root) => { + try {element.focus();} + catch(err) {} // eslint-disable-line no-empty + + if (document.activeElement == element && element !== root) return true; + + const candidates = element.children; + for (let candidate of candidates) { + if (focusFirst(candidate, root)) return true; + } + return false; + }; + export default { name: 'Tabs', mixins: [ Emitter ], @@ -227,7 +240,18 @@ this.activeKey = this.focusedKey || 0; const nextIndex = Math.max(this.navList.findIndex(tab => tab.name === this.focusedKey), 0); - this.handleChange(nextIndex); + [...this.$refs.panes.children].forEach((el, i) => { + if (nextIndex === i) { + [...el.children].forEach(child => child.style.display = 'block'); + setTimeout(() => { + focusFirst(el, el); + }, transitionTime); + } else { + setTimeout(() => { + [...el.children].forEach(child => child.style.display = 'none'); + }, transitionTime); + } + }); }, handleRemove (index) { const tabs = this.getTabs(); @@ -388,6 +412,8 @@ this.mutationObserver.observe(hiddenParentNode, { attributes: true, childList: true, characterData: true, attributeFilter: ['style'] }); } + + this.handleTabKeyboardSelect(); }, beforeDestroy() { this.observer.removeListener(this.$refs.navWrap, this.handleResize); From 7f9ea0dc5e6dc19e521ff858bc3cf180a106b992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=81=8F?= Date: Thu, 17 May 2018 17:51:37 +0800 Subject: [PATCH 03/11] init Time component --- examples/app.vue | 1 + examples/main.js | 4 ++++ examples/routers/time.vue | 14 ++++++++++++++ src/components/time/index.js | 2 ++ src/components/time/time.vue | 8 ++++++++ src/index.js | 5 ++++- 6 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 examples/routers/time.vue create mode 100644 src/components/time/index.js create mode 100644 src/components/time/time.vue diff --git a/examples/app.vue b/examples/app.vue index e8cc10b3..3b7d7611 100644 --- a/examples/app.vue +++ b/examples/app.vue @@ -62,6 +62,7 @@ nav {
  • ColorPicker
  • AutoComplete
  • Scroll
  • +
  • Time
  • diff --git a/examples/main.js b/examples/main.js index 9d7c0e26..69dffda2 100644 --- a/examples/main.js +++ b/examples/main.js @@ -202,6 +202,10 @@ const router = new VueRouter({ { path: '/scroll', component: (resolve) => require(['./routers/scroll.vue'], resolve) + }, + { + path: '/time', + component: (resolve) => require(['./routers/time.vue'], resolve) } ] }); diff --git a/examples/routers/time.vue b/examples/routers/time.vue new file mode 100644 index 00000000..b97fd4c9 --- /dev/null +++ b/examples/routers/time.vue @@ -0,0 +1,14 @@ + + \ No newline at end of file diff --git a/src/components/time/index.js b/src/components/time/index.js new file mode 100644 index 00000000..90c60880 --- /dev/null +++ b/src/components/time/index.js @@ -0,0 +1,2 @@ +import Time from './time.vue'; +export default Time; \ No newline at end of file diff --git a/src/components/time/time.vue b/src/components/time/time.vue new file mode 100644 index 00000000..c22ef356 --- /dev/null +++ b/src/components/time/time.vue @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/src/index.js b/src/index.js index ee7d67dc..a2a83b6d 100644 --- a/src/index.js +++ b/src/index.js @@ -42,6 +42,7 @@ import Switch from './components/switch'; import Table from './components/table'; import Tabs from './components/tabs'; import Tag from './components/tag'; +import Time from './components/time'; import Timeline from './components/timeline'; import TimePicker from './components/time-picker'; import Tooltip from './components/tooltip'; @@ -114,6 +115,7 @@ const components = { Tabs: Tabs, TabPane: Tabs.Pane, Tag, + Time, Timeline, TimelineItem: Timeline.Item, TimePicker, @@ -138,7 +140,8 @@ const iview = { iProgress: Progress, iSelect: Select, iSwitch: Switch, - iTable: Table + iTable: Table, + iTime: Time }; const install = function(Vue, opts = {}) { From b8509c593a7ab3a04c5ed926e2ad825fd4c4f311 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=81=8F?= Date: Thu, 17 May 2018 18:06:42 +0800 Subject: [PATCH 04/11] update Time --- src/components/time/time.vue | 58 ++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/src/components/time/time.vue b/src/components/time/time.vue index c22ef356..92d6f609 100644 --- a/src/components/time/time.vue +++ b/src/components/time/time.vue @@ -1,8 +1,62 @@ \ No newline at end of file From 492f652bab92e271e67063024b91a49d7c11d0a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=81=8F?= Date: Thu, 17 May 2018 18:24:26 +0800 Subject: [PATCH 05/11] sse --- src/components/time/time.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/time/time.vue b/src/components/time/time.vue index 92d6f609..f71f0d0a 100644 --- a/src/components/time/time.vue +++ b/src/components/time/time.vue @@ -2,6 +2,8 @@ time