Add support to placeholder

This commit is contained in:
Marcos Moura 2016-08-02 02:35:33 -03:00
parent ca7b7b1e3a
commit 8ba850e739
4 changed files with 68 additions and 4 deletions

View file

@ -3,6 +3,8 @@
class="md-input"
:type="type || 'text'"
:disabled="disabled"
:required="required"
:placeholder="placeholder"
@invalid="onInvalid"
@valid="onValid"
@focus="onFocus"
@ -14,6 +16,7 @@
let invalidClass = 'md-input-invalid';
let disabledClass = 'md-input-disabled';
let requiredClass = 'md-input-required';
let placeholderClass = 'md-input-placeholder';
let focusedClass = 'md-input-focused';
let hasValueClass = 'md-has-value';
@ -33,6 +36,14 @@
}
};
let managePlaceholderClass = (placeholder, scope) => {
if (placeholder) {
scope.add(placeholderClass);
} else {
scope.remove(placeholderClass);
}
};
let manageHasValueClass = function(value, scope) {
if (value.length > 0) {
scope.add(hasValueClass);
@ -51,7 +62,8 @@
type: String,
disabled: Boolean,
required: Boolean,
maxlength: String
maxlength: String,
placeholder: String
},
data() {
return {
@ -65,6 +77,9 @@
required(required) {
manageRequiredClass(required, this.parentClasses);
},
placeholder(placeholder) {
managePlaceholderClass(placeholder, this.parentClasses);
},
maxlength(maxlength) {
manageMaxlength(maxlength, this.$parent);
}
@ -97,6 +112,7 @@
manageDisabledClass(this.disabled, this.parentClasses);
manageRequiredClass(this.required, this.parentClasses);
managePlaceholderClass(this.placeholder, this.parentClasses);
manageHasValueClass(this.$el.value, this.parentClasses);
manageMaxlength(this.maxlength, this.$parent);
},

View file

@ -48,6 +48,13 @@ $input-size: 32px;
&:focus {
outline: none;
}
&::-webkit-input-placeholder {
color: rgba(#000, .54);
font-size: 16px;
text-shadow: none;
-webkit-text-fill-color: initial;
}
}
textarea {
@ -78,11 +85,26 @@ $input-size: 32px;
}
}
.md-input-placeholder {
label {
pointer-events: auto;
top: 10px;
opacity: 0;
font-size: 12px;
}
input,
textarea {
font-size: 16px;
}
}
.md-input-focused,
.md-has-value {
label {
pointer-events: auto;
top: 0;
opacity: 1;
font-size: 12px;
}

View file

@ -15,6 +15,7 @@
let invalidClass = 'md-input-invalid';
let disabledClass = 'md-input-disabled';
let requiredClass = 'md-input-required';
let placeholderClass = 'md-input-placeholder';
let focusedClass = 'md-input-focused';
let hasValueClass = 'md-has-value';
@ -34,6 +35,14 @@
}
};
let managePlaceholderClass = (placeholder, scope) => {
if (placeholder) {
scope.add(placeholderClass);
} else {
scope.remove(placeholderClass);
}
};
let manageHasValueClass = function(value, scope) {
if (value.length > 0) {
scope.add(hasValueClass);
@ -52,7 +61,8 @@
type: String,
disabled: Boolean,
required: Boolean,
maxlength: String
maxlength: String,
placeholder: String
},
data() {
return {
@ -66,6 +76,9 @@
required(required) {
manageRequiredClass(required, this.parentClasses);
},
placeholder(placeholder) {
managePlaceholderClass(placeholder, this.parentClasses);
},
maxlength(maxlength) {
manageMaxlength(maxlength, this.$parent);
}
@ -98,6 +111,7 @@
manageDisabledClass(this.disabled, this.parentClasses);
manageRequiredClass(this.required, this.parentClasses);
managePlaceholderClass(this.placeholder, this.parentClasses);
manageHasValueClass(this.$el.value, this.parentClasses);
manageMaxlength(this.maxlength, this.$parent);

View file

@ -7,6 +7,11 @@
<md-input value="My initial value"></md-input>
</md-input-container>
<md-input-container>
<label>Placeholder</label>
<md-input placeholder="My nice placeholder"></md-input>
</md-input-container>
<md-input-container md-inline>
<label>Inline field</label>
<md-input></md-input>
@ -35,8 +40,15 @@
</md-input-container>
<md-input-container>
<label>Character counter</label>
<md-textarea maxlength="70" v-validate:counter="{ maxlength: 70 }" initial="off"></md-textarea>
<label>Character counter - Textarea</label>
<md-textarea maxlength="70" v-validate:counterTextarea="{ maxlength: 70 }" initial="off"></md-textarea>
<span class="md-error">Max length reached</span>
</md-input-container>
<md-input-container>
<label>Character counter - Input</label>
<md-input maxlength="20" v-validate:counterInput="{ maxlength: 20 }" initial="off"></md-input>
<span class="md-error">Max length reached</span>
</md-input-container>