From 02f58855f286c48bfbe757fa24b87466897ee7fc Mon Sep 17 00:00:00 2001 From: vanhoavn Date: Tue, 21 Mar 2017 07:10:23 +0700 Subject: [PATCH] allow customize tab item using slot (#596) Allow customize tab item using slot --- docs/src/components/ApiTable.vue | 4 ++ docs/src/pages/components/Tabs.vue | 95 ++++++++++++++++++++++++++++++ src/components/mdTabs/mdTab.vue | 10 ++++ src/components/mdTabs/mdTabs.vue | 6 +- 4 files changed, 113 insertions(+), 2 deletions(-) diff --git a/docs/src/components/ApiTable.vue b/docs/src/components/ApiTable.vue index 914189c..9d7bdb7 100644 --- a/docs/src/components/ApiTable.vue +++ b/docs/src/components/ApiTable.vue @@ -20,6 +20,10 @@ + + + + diff --git a/docs/src/pages/components/Tabs.vue b/docs/src/pages/components/Tabs.vue index 68e94ca..575dff3 100644 --- a/docs/src/pages/components/Tabs.vue +++ b/docs/src/pages/components/Tabs.vue @@ -55,6 +55,22 @@ + + + + Name + Description + + + + + + header-item + Change the template of the header item. Optional. + + + + @@ -98,6 +114,12 @@ The tab text + + md-options + any + Any additional options (which can be used in header-item slot of md-tabs) + + md-icon String @@ -314,7 +336,80 @@ + + +
+ + + +

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas amet cum vitae, omnis! Illum quas voluptatem, expedita iste, dicta ipsum ea veniam dolore in, quod saepe reiciendis nihil.

+
+ + +

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas amet cum vitae, omnis! Illum quas voluptatem, expedita iste, dicta ipsum ea veniam dolore in, quod saepe reiciendis nihil.

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas amet cum vitae, omnis! Illum quas voluptatem, expedita iste, dicta ipsum ea veniam dolore in, quod saepe reiciendis nihil.

+
+ + +

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.

+
+
+
+ +
+ + <md-tabs class="md-transparent"> + <template slot="header-item" scope="props"> + <md-icon v-if="props.header.icon">{{ '\x7b\x7b' }} props.header.icon {{ '\x7d\x7d' }}</md-icon> + <template v-if="props.header.options && props.header.options.new_badge"> + <span v-if="props.header.label" class="label-with-new-badge"> + {{ '\x7b\x7b' }} props.header.label {{ '\x7d\x7d' }} + <span class="new-badge">{{ '\x7b\x7b' }} props.header.options.new_badge {{ '\x7d\x7d' }}</span> + </span> + </template> + <template v-else> + <span v-if="props.header.label">{{ '\x7b\x7b' }} props.header.label {{ '\x7d\x7d' }}</span> + </template> + </template> + <md-tab md-icon="phone" md-label="Phone"> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas amet cum vitae, omnis! Illum quas voluptatem, expedita iste, dicta ipsum ea veniam dolore in, quod saepe reiciendis nihil.</p> + </md-tab> + + <md-tab md-icon="favorite" md-label="Favorite" :md-options="{new_badge: 3}"> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas amet cum vitae, omnis! Illum quas voluptatem, expedita iste, dicta ipsum ea veniam dolore in, quod saepe reiciendis nihil.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas amet cum vitae, omnis! Illum quas voluptatem, expedita iste, dicta ipsum ea veniam dolore in, quod saepe reiciendis nihil.</p> + </md-tab> + + <md-tab md-icon="near_me" md-label="Near me" :md-options="{new_badge: 1}"> + <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p> + </md-tab> + </md-tabs> + +
+
+ diff --git a/src/components/mdTabs/mdTab.vue b/src/components/mdTabs/mdTab.vue index d9e69d3..45325c8 100644 --- a/src/components/mdTabs/mdTab.vue +++ b/src/components/mdTabs/mdTab.vue @@ -16,6 +16,9 @@ mdIcon: String, mdActive: Boolean, mdDisabled: Boolean, + mdOptions: { + default: undefined + }, mdTooltip: String, mdTooltipDelay: { type: String, @@ -44,6 +47,12 @@ mdIcon() { this.updateTabData(); }, + mdOptions: { + deep: true, + handler() { + this.updateTabData(); + } + }, mdLabel() { this.updateTabData(); }, @@ -71,6 +80,7 @@ id: this.tabId, label: this.mdLabel, icon: this.mdIcon, + options: this.mdOptions, active: this.mdActive, disabled: this.mdDisabled, tooltip: this.mdTooltip, diff --git a/src/components/mdTabs/mdTabs.vue b/src/components/mdTabs/mdTabs.vue index 0b08b28..a091642 100644 --- a/src/components/mdTabs/mdTabs.vue +++ b/src/components/mdTabs/mdTabs.vue @@ -12,8 +12,10 @@ ref="tabHeader">
- {{ header.icon }} - {{ header.label }} + + {{ header.icon }} + {{ header.label }} + {{ header.tooltip }}