Fix custom UI validation bugs (#1583)

This commit is contained in:
Matt Irvine
2018-06-08 15:32:21 -07:00
committed by GitHub
parent 02af7e9299
commit 20c4f085c8
3 changed files with 17 additions and 3 deletions

View File

@@ -429,9 +429,9 @@ class ComponentWrapper implements sqlops.Component {
public onEvent(eventArgs: IComponentEventArgs) {
if (eventArgs && eventArgs.eventType === ComponentEventType.PropertiesChanged) {
this.properties = eventArgs.args;
}
else if (eventArgs && eventArgs.eventType === ComponentEventType.validityChanged) {
} else if (eventArgs && eventArgs.eventType === ComponentEventType.validityChanged) {
this._valid = eventArgs.args;
this._onValidityChangedEmitter.fire(this._valid);
} else if (eventArgs) {
let emitter = this._emitterMap.get(eventArgs.eventType);
if (emitter) {

View File

@@ -118,4 +118,14 @@ suite('ExtHostModelView Validation Tests', () => {
});
assert.equal(inputBox.valid, true, 'Input box did not update validity to true based on the validityChanged event');
});
test('Main thread validityChanged events cause component to fire validity changed events', () => {
let validityFromEvent: boolean = undefined;
inputBox.onValidityChanged(valid => validityFromEvent = valid);
extHostModelView.$handleEvent(handle, inputBox.id, {
eventType: ComponentEventType.validityChanged,
args: false
});
assert.equal(validityFromEvent, false, 'Main thread validityChanged event did not cause component to fire its own event');
});
});

View File

@@ -364,7 +364,11 @@ export class InputBox extends Widget {
};
}
if (!errorMsg) {
if (errorMsg) {
this.inputElement.setAttribute('aria-invalid', 'true');
this.showMessage(errorMsg);
}
else if (this.inputElement.hasAttribute('aria-invalid')) {
this.inputElement.removeAttribute('aria-invalid');
this.hideMessage();
}