mirror of
https://github.com/Hopiu/vue-material.git
synced 2026-03-16 22:10:27 +00:00
Add ability to use icon for select. Also provide a new md-menu-options prop to pass options to menu within select.
This commit is contained in:
parent
c36b1834b2
commit
75b0079fd5
3 changed files with 100 additions and 7 deletions
|
|
@ -407,6 +407,80 @@
|
|||
</code-block>
|
||||
</div>
|
||||
</example-box>
|
||||
|
||||
<example-box card-title="Icon">
|
||||
<div slot="demo">
|
||||
<div class="field-group select-icon">
|
||||
<md-select name="users" id="usersIcon" multiple v-model="usersIcon" md-align-trigger :md-menu-options="iconMenuOptions">
|
||||
<md-button class="md-icon-button" md-menu-trigger slot="icon">
|
||||
<md-icon>people</md-icon>
|
||||
</md-button>
|
||||
|
||||
<md-subheader>Managers</md-subheader>
|
||||
<md-option value="jim_halpert">Jim Halpert</md-option>
|
||||
<md-option value="dwight_schrute">Dwight Schrute</md-option>
|
||||
<md-option value="michael_scott">Michael Scott</md-option>
|
||||
|
||||
<md-subheader>Employees</md-subheader>
|
||||
<md-option value="pam_beesly">Pam Beesly</md-option>
|
||||
<md-option value="angela_martin">Angela Martin</md-option>
|
||||
<md-option value="kelly_kapoor">Kelly Kapoor</md-option>
|
||||
<md-option value="ryan_howard">Ryan Howard</md-option>
|
||||
<md-option value="kevin_malone">Kevin Malone</md-option>
|
||||
<md-option value="creed_bratton">Creed Bratton</md-option>
|
||||
<md-option value="oscar_nunez">Oscar Nunez</md-option>
|
||||
<md-option value="toby_flenderson">Toby Flenderson</md-option>
|
||||
<md-option value="stanley_hudson">Stanley Hudson</md-option>
|
||||
<md-option value="meredith_palmer">Meredith Palmer</md-option>
|
||||
<md-option value="phyllis_lapin_vance">Phyllis Lapin-Vance</md-option>
|
||||
</md-select>
|
||||
</div>
|
||||
|
||||
<div>Selected users: {{ usersIcon }}</div>
|
||||
</div>
|
||||
|
||||
<div slot="code">
|
||||
<code-block lang="xml">
|
||||
<md-select name="users" id="users" multiple v-model="users">
|
||||
<md-button class="md-icon-button" md-menu-trigger slot="icon">
|
||||
<md-icon>people</md-icon>
|
||||
</md-button>
|
||||
|
||||
<md-subheader>Managers</md-subheader>
|
||||
<md-option value="jim_halpert">Jim Halpert</md-option>
|
||||
<md-option value="dwight_schrute">Dwight Schrute</md-option>
|
||||
<md-option value="michael_scott">Michael Scott</md-option>
|
||||
|
||||
<md-subheader>Employees</md-subheader>
|
||||
<md-option value="pam_beesly">Pam Beesly</md-option>
|
||||
<md-option value="angela_martin">Angela Martin</md-option>
|
||||
<md-option value="kelly_kapoor">Kelly Kapoor</md-option>
|
||||
<md-option value="ryan_howard">Ryan Howard</md-option>
|
||||
<md-option value="kevin_malone">Kevin Malone</md-option>
|
||||
<md-option value="creed_bratton">Creed Bratton</md-option>
|
||||
<md-option value="oscar_nunez">Oscar Nunez</md-option>
|
||||
<md-option value="toby_flenderson">Toby Flenderson</md-option>
|
||||
<md-option value="stanley_hudson">Stanley Hudson</md-option>
|
||||
<md-option value="meredith_palmer">Meredith Palmer</md-option>
|
||||
<md-option value="phyllis_lapin_vance">Phyllis Lapin-Vance</md-option>
|
||||
</md-select>
|
||||
|
||||
<div>Selected users: {{ users }}</div>
|
||||
</code-block>
|
||||
|
||||
<code-block lang="javascript">
|
||||
export default {
|
||||
data: () => ({
|
||||
food: '',
|
||||
users: [
|
||||
'jim_halpert',
|
||||
'michael_scott'
|
||||
]
|
||||
})
|
||||
};
|
||||
</code-block>
|
||||
</div>
|
||||
</example-box>
|
||||
</div>
|
||||
</docs-component>
|
||||
</page-content>
|
||||
|
|
@ -426,7 +500,11 @@
|
|||
}
|
||||
|
||||
.multiple {
|
||||
height: 300px;
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.select-icon {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
|
@ -445,7 +523,11 @@
|
|||
{ id: 4, name: 'd' },
|
||||
{ id: 5, name: 'e' }
|
||||
],
|
||||
items: []
|
||||
items: [],
|
||||
usersIcon: [],
|
||||
iconMenuOptions: {
|
||||
mdAlignTrigger: true
|
||||
}
|
||||
}),
|
||||
methods: {
|
||||
setPulpFiction() {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ $select-height: 32px;
|
|||
outline: none;
|
||||
}
|
||||
|
||||
&:after {
|
||||
&:not(.md-select-icon):after {
|
||||
margin-top: 2px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<template>
|
||||
<div class="md-select" :class="[themeClass, classes]">
|
||||
<md-menu :md-close-on-select="!multiple" @opened="$emit('open')" @closed="$emit('close')">
|
||||
<span class="md-select-value" md-menu-trigger ref="value">{{ selectedText || placeholder }}</span>
|
||||
<md-menu :md-close-on-select="!multiple" @opened="$emit('open')" @closed="$emit('close')" v-bind="mdMenuOptions">
|
||||
<slot name="icon"></slot>
|
||||
<span class="md-select-value" md-menu-trigger ref="value" :style="valueStyle">{{ selectedText || placeholder }}</span>
|
||||
|
||||
<md-menu-content class="md-select-content" :class="[themeClass, contentClasses]">
|
||||
<slot></slot>
|
||||
|
|
@ -31,7 +32,8 @@
|
|||
value: [String, Number, Array],
|
||||
disabled: Boolean,
|
||||
placeholder: String,
|
||||
mdMenuClass: String
|
||||
mdMenuClass: String,
|
||||
mdMenuOptions: Object
|
||||
},
|
||||
mixins: [theme],
|
||||
data() {
|
||||
|
|
@ -46,7 +48,8 @@
|
|||
computed: {
|
||||
classes() {
|
||||
return {
|
||||
'md-disabled': this.disabled
|
||||
'md-disabled': this.disabled,
|
||||
'md-select-icon': this.hasIcon
|
||||
};
|
||||
},
|
||||
contentClasses() {
|
||||
|
|
@ -55,6 +58,14 @@
|
|||
}
|
||||
|
||||
return this.mdMenuClass;
|
||||
},
|
||||
hasIcon() {
|
||||
return this.$slots['icon'];
|
||||
},
|
||||
valueStyle() {
|
||||
return this.hasIcon ? {
|
||||
display: 'none'
|
||||
} : {};
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
|
|
|||
Loading…
Reference in a new issue