From 8ba850e739a20abbce32aedeb4791f89aa92e367 Mon Sep 17 00:00:00 2001 From: Marcos Moura Date: Tue, 2 Aug 2016 02:35:33 -0300 Subject: [PATCH] Add support to placeholder --- src/components/mdInputContainer/mdInput.vue | 18 ++++++++++++++- .../mdInputContainer/mdInputContainer.scss | 22 +++++++++++++++++++ .../mdInputContainer/mdTextarea.vue | 16 +++++++++++++- src/docs/pages/Input.vue | 16 ++++++++++++-- 4 files changed, 68 insertions(+), 4 deletions(-) diff --git a/src/components/mdInputContainer/mdInput.vue b/src/components/mdInputContainer/mdInput.vue index 5c8b71a..21463b8 100644 --- a/src/components/mdInputContainer/mdInput.vue +++ b/src/components/mdInputContainer/mdInput.vue @@ -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); }, diff --git a/src/components/mdInputContainer/mdInputContainer.scss b/src/components/mdInputContainer/mdInputContainer.scss index 9da9095..03d8e41 100644 --- a/src/components/mdInputContainer/mdInputContainer.scss +++ b/src/components/mdInputContainer/mdInputContainer.scss @@ -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; } diff --git a/src/components/mdInputContainer/mdTextarea.vue b/src/components/mdInputContainer/mdTextarea.vue index f46e045..841e523 100644 --- a/src/components/mdInputContainer/mdTextarea.vue +++ b/src/components/mdInputContainer/mdTextarea.vue @@ -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); diff --git a/src/docs/pages/Input.vue b/src/docs/pages/Input.vue index cfb0152..debb26c 100644 --- a/src/docs/pages/Input.vue +++ b/src/docs/pages/Input.vue @@ -7,6 +7,11 @@ + + + + + @@ -35,8 +40,15 @@ - - + + + + Max length reached + + + + + Max length reached