From ecd920f3f847b5430201176c0032a1c615462e0e Mon Sep 17 00:00:00 2001 From: Marcos Moura Date: Thu, 8 Dec 2016 10:10:09 -0200 Subject: [PATCH] fix disabled selects being selectable. fix #159 --- .../mdInputContainer/mdInputContainer.scss | 2 +- src/components/mdSelect/mdSelect.scss | 10 ++++++++ src/components/mdSelect/mdSelect.vue | 25 ++++++++++++++++++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/components/mdInputContainer/mdInputContainer.scss b/src/components/mdInputContainer/mdInputContainer.scss index 85ca99d..1a6a16f 100644 --- a/src/components/mdInputContainer/mdInputContainer.scss +++ b/src/components/mdInputContainer/mdInputContainer.scss @@ -193,7 +193,7 @@ $input-size: 32px; } &.md-has-select:hover { - .md-select:after { + .md-select:not(.md-disabled):after { color: rgba(#000, .87); } } diff --git a/src/components/mdSelect/mdSelect.scss b/src/components/mdSelect/mdSelect.scss index 677d0a9..821d1d6 100644 --- a/src/components/mdSelect/mdSelect.scss +++ b/src/components/mdSelect/mdSelect.scss @@ -43,6 +43,16 @@ $select-height: 32px; } } + &.md-disabled { + pointer-events: none; + user-select: none; + user-drag: none; + + &:after { + color: rgba(#000, .38); + } + } + select { position: absolute; left: -999em; diff --git a/src/components/mdSelect/mdSelect.vue b/src/components/mdSelect/mdSelect.vue index 94a8287..78c6f9a 100644 --- a/src/components/mdSelect/mdSelect.vue +++ b/src/components/mdSelect/mdSelect.vue @@ -8,7 +8,7 @@ - @@ -43,6 +43,8 @@ }, computed: { classes() { + console.log(this.disabled); + return { 'md-disabled': this.disabled }; @@ -58,9 +60,27 @@ watch: { value(value) { this.setTextAndValue(value); + }, + disabled() { + this.setParentDisabled(); + }, + required() { + this.setParentRequired(); + }, + placeholder() { + this.setParentPlaceholder(); } }, methods: { + setParentDisabled() { + this.parentContainer.isDisabled = this.disabled; + }, + setParentRequired() { + this.parentContainer.isRequired = this.required; + }, + setParentPlaceholder() { + this.parentContainer.hasPlaceholder = !!this.placeholder; + }, getSingleValue(value) { let output = {}; @@ -144,6 +164,9 @@ this.setTextAndValue(this.value); if (this.parentContainer) { + this.setParentDisabled(); + this.setParentRequired(); + this.setParentPlaceholder(); this.parentContainer.setValue(this.value); this.parentContainer.hasSelect = true; }