Web: bugfix: broken backchannel selector (#7480)

* web: break circular dependency between AKElement & Interface.

This commit changes the way the root node of the web application shell is
discovered by child components, such that the base class shared by both
no longer results in a circular dependency between the two models.

I've run this in isolation and have seen no failures of discovery; the identity
token exists as soon as the Interface is constructed and is found by every item
on the page.

* web: fix broken typescript references

This built... and then it didn't?  Anyway, the current fix is to
provide type information the AkInterface for the data that consumers
require.

* web: rollback dependabot's upgrade of context

The most frustrating part of this is that I RAN THIS, dammit, with the updated
context and the current Wizard, and it finished the End-to-End tests without
complaint.

* web: bugfix: broken backchannel selector

There were two bugs here, both of them introduced by me because I didn't understand the
system well enough the first time through, and because I didn't test thoroughly enough.

The first is that I was calling the wrong confirmation code; the resulting syntax survived
because `confirm()` is actually a legitimate function call in the context of the DOM Window,
a legacy survivor similar to `alert()` but with a yes/no return value. Bleah.

The second is that the confirm code doesn't appear to pass back a dictionary with the
`{ items: Array<Provider> }` list, it passes back just the `items` as an Array.
This commit is contained in:
Ken Sternberg 2023-11-07 10:10:43 -08:00 committed by GitHub
parent 67d6c0e8af
commit cc1c66aa13
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 2 deletions

View file

@ -116,7 +116,7 @@ export class ApplicationForm extends ModelForm<Application, string> {
return app; return app;
} }
handleConfirmBackchannelProviders({ items }: { items: Provider[] }) { handleConfirmBackchannelProviders(items: Provider[]) {
this.backchannelProviders = items; this.backchannelProviders = items;
this.requestUpdate(); this.requestUpdate();
return Promise.resolve(); return Promise.resolve();

View file

@ -63,7 +63,7 @@ export class AkBackchannelProvidersInput extends AKElement {
return html` return html`
<ak-form-element-horizontal label=${this.label} name=${name}> <ak-form-element-horizontal label=${this.label} name=${name}>
<div class="pf-c-input-group"> <div class="pf-c-input-group">
<ak-provider-select-table ?backchannelOnly=${true} .confirm=${confirm}> <ak-provider-select-table ?backchannelOnly=${true} .confirm=${this.confirm}>
<button slot="trigger" class="pf-c-button pf-m-control" type="button"> <button slot="trigger" class="pf-c-button pf-m-control" type="button">
${this.tooltip ? this.tooltip : nothing} ${this.tooltip ? this.tooltip : nothing}
<i class="fas fa-plus" aria-hidden="true"></i> <i class="fas fa-plus" aria-hidden="true"></i>