LT-67: Adding validation error tooltips when focusing fields

This commit is contained in:
Bruno Alves de Faria 2016-09-01 08:49:36 -03:00
parent 33e7297064
commit 34a16930ef
3 changed files with 56 additions and 13 deletions

View File

@ -1,7 +1,24 @@
@import "{design}/app"
.state-error:not(.component-group)
&.form-control, .form-control
theme('background-color', '$uiStateError')
theme('border-color', '$uiStateErrorBorder')
theme('color', '$uiStateErrorText')
.state-error
&+.tooltip
.tooltip-inner
color: white
theme('background-color', '$uiStateErrorBorder')
&.top .tooltip-arrow
theme('border-top-color', '$uiStateErrorBorder')
&.right .tooltip-arrow
theme('border-right-color', '$uiStateErrorBorder')
&.bottom .tooltip-arrow
theme('border-bottom-color', '$uiStateErrorBorder')
&.left .tooltip-arrow
theme('border-left-color', '$uiStateErrorBorder')
&:not(.component-group)
&.form-control, .form-control
theme('background-color', '$uiStateError')
theme('border-color', '$uiStateErrorBorder')
theme('color', '$uiStateErrorText')

View File

@ -65,14 +65,25 @@ OHIF.mixins.formItem = new OHIF.Mixin({
// Set or remove the error message
if (errorMessage) {
component.$element.trigger('errorin');
component.$wrapper.attr('data-error', errorMessage);
} else {
component.$element.trigger('errorout');
component.$wrapper.removeAttr('data-error', errorMessage);
}
};
// Toggle the state over the component
component.toggleTooltip = (isShow, message) => {
if (isShow) {
console.warn('>>>>message', message);
component.$wrapper.tooltip({
trigger: 'manual',
title: message
}).tooltip('show');
} else {
component.$wrapper.tooltip('destroy');
}
};
// Search for the parent form component
component.getForm = () => {
let currentComponent = component;
@ -184,15 +195,28 @@ OHIF.mixins.formItem = new OHIF.Mixin({
}
},
// TODO: [design] remove log, show error box/hint over the wrapper
errorin(event, instance) {
focus(event, instance) {
const component = instance.component;
// Prevent event bubbling
event.stopPropagation();
console.log('ERROR when validating component', instance.component);
// Check for error state and message
const errorMessage = component.$wrapper.attr('data-error');
if (errorMessage) {
// Show the tooltip with the error message
component.toggleTooltip(true, errorMessage);
}
},
// TODO: [design] hide error box/hint
errorout(event, instance) {
blur(event, instance) {
const component = instance.component;
// Prevent event bubbling
event.stopPropagation();
// Hide any tooltips
component.toggleTooltip(false);
}
}

View File

@ -65,7 +65,9 @@ OHIF.mixins.select2 = new OHIF.Mixin({
},
events: {
'focus .select2-hidden-accessible'(event, instance) {
'focusin .select2-hidden-accessible'(event, instance) {
event.preventDefault();
// Redirect the focus to select2 focus control in case of hidden
// accessible being focused (e.g. clicking on outer label)
$(event.currentTarget).nextAll('.select2:first').find('.select2-selection').focus();