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,6 +1,23 @@
@import "{design}/app" @import "{design}/app"
.state-error:not(.component-group) .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 &.form-control, .form-control
theme('background-color', '$uiStateError') theme('background-color', '$uiStateError')
theme('border-color', '$uiStateErrorBorder') theme('border-color', '$uiStateErrorBorder')

View File

@ -65,14 +65,25 @@ OHIF.mixins.formItem = new OHIF.Mixin({
// Set or remove the error message // Set or remove the error message
if (errorMessage) { if (errorMessage) {
component.$element.trigger('errorin');
component.$wrapper.attr('data-error', errorMessage); component.$wrapper.attr('data-error', errorMessage);
} else { } else {
component.$element.trigger('errorout');
component.$wrapper.removeAttr('data-error', errorMessage); 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 // Search for the parent form component
component.getForm = () => { component.getForm = () => {
let currentComponent = component; let currentComponent = component;
@ -184,15 +195,28 @@ OHIF.mixins.formItem = new OHIF.Mixin({
} }
}, },
// TODO: [design] remove log, show error box/hint over the wrapper focus(event, instance) {
errorin(event, instance) { const component = instance.component;
// Prevent event bubbling
event.stopPropagation(); 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 blur(event, instance) {
errorout(event, instance) { const component = instance.component;
// Prevent event bubbling
event.stopPropagation(); event.stopPropagation();
// Hide any tooltips
component.toggleTooltip(false);
} }
} }

View File

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