Skip to content

Commit a90db2b

Browse files
albanmmarcosmoura
authored andcommitted
add mdChip editable (vuematerial#512)
1 parent 1f93806 commit a90db2b

File tree

5 files changed

+41
-5
lines changed

5 files changed

+41
-5
lines changed

docs/src/pages/components/Chips.vue

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@
2828
<md-table-cell><code>Boolean</code></md-table-cell>
2929
<md-table-cell>Enable delete button. Default: <code>false</code></md-table-cell>
3030
</md-table-row>
31+
32+
<md-table-row>
33+
<md-table-cell>md-editable</md-table-cell>
34+
<md-table-cell><code>Boolean</code></md-table-cell>
35+
<md-table-cell>Enable click on the chip's content. Default: <code>false</code></md-table-cell>
36+
</md-table-row>
3137
</md-table-body>
3238
</md-table>
3339

@@ -46,6 +52,11 @@
4652
<md-table-cell>None</md-table-cell>
4753
<md-table-cell>Triggered when delete button is clicked.</md-table-cell>
4854
</md-table-row>
55+
<md-table-row>
56+
<md-table-cell>edit</md-table-cell>
57+
<md-table-cell>None</md-table-cell>
58+
<md-table-cell>Triggered when the chip's content is clicked.</md-table-cell>
59+
</md-table-row>
4960
</md-table-body>
5061
</md-table>
5162
</api-table>
@@ -136,12 +147,14 @@
136147
<div slot="demo">
137148
<md-chip>Marcos Moura</md-chip>
138149
<md-chip md-deletable>Luiza Ivanenko</md-chip>
150+
<md-chip md-editable>Alban Mouton</md-chip>
139151
</div>
140152

141153
<div slot="code">
142154
<code-block lang="xml">
143155
&lt;md-chip&gt;Marcos Moura&lt;/md-chip&gt;
144156
&lt;md-chip md-deletable&gt;Luiza Ivanenko&lt;/md-chip&gt;
157+
&lt;md-chip md-editable&gt;Alban Mouton&lt;/md-chip&gt;
145158
</code-block>
146159
</div>
147160
</example-box>

src/components/mdChips/mdChip.vue

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<template>
22
<div class="md-chip" :class="[themeClass, classes]" tabindex="0">
3-
<slot></slot>
3+
<div class="md-chip-container" @click="!disabled && mdEditable && $emit('edit')">
4+
<slot></slot>
5+
</div>
46

57
<md-button
68
class="md-icon-button md-dense md-delete"
@@ -20,14 +22,16 @@
2022
name: 'md-chip',
2123
props: {
2224
disabled: Boolean,
23-
mdDeletable: Boolean
25+
mdDeletable: Boolean,
26+
mdEditable: Boolean
2427
},
2528
mixins: [theme],
2629
computed: {
2730
classes() {
2831
return {
2932
'md-deletable': this.mdDeletable,
30-
'md-disabled': this.disabled
33+
'md-disabled': this.disabled,
34+
'md-editable': this.mdEditable
3135
};
3236
}
3337
}

src/components/mdChips/mdChips.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ $chip-icon-font: $chip-icon-size - 4px;
1919
padding-right: 32px;
2020
}
2121

22+
&.md-editable {
23+
.md-chip-container {
24+
cursor: pointer;
25+
}
26+
}
27+
2228
&:focus,
2329
&:active {
2430
outline: none;

src/components/mdChips/mdChips.theme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
&.md-chip {
33
background-color: #{'BACKGROUND-CONTRAST-0.12'};
44

5-
&.md-deletable {
5+
&.md-deletable, &.md-editable {
66
&:hover,
77
&:focus {
88
background-color: #{'BACKGROUND-CONTRAST-0.54'};

src/components/mdChips/mdChips.vue

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
<md-chip
55
v-for="chip in selectedChips"
66
:md-deletable="!mdStatic"
7+
:md-editable="!mdStatic"
78
:disabled="disabled"
8-
@delete="deleteChip(chip)">
9+
@delete="deleteChip(chip)"
10+
@edit="editChip(chip)">
911
<slot :value="chip"></slot>
1012
</md-chip>
1113

@@ -100,6 +102,17 @@
100102
this.$emit('change', this.selectedChips);
101103
this.applyInputFocus();
102104
},
105+
editChip(chip) {
106+
let index = this.selectedChips.indexOf(chip);
107+
108+
if (index >= 0) {
109+
this.selectedChips.splice(index, 1);
110+
}
111+
112+
this.currentChip = chip;
113+
this.$emit('change', this.selectedChips);
114+
this.applyInputFocus();
115+
},
103116
deleteLastChip() {
104117
if (!this.currentChip) {
105118
this.selectedChips.pop();

0 commit comments

Comments
 (0)