ui: Add peering establishment to the peer listing page (#13813)

* ui: Add peering establishment to the peer listing page

* Remove this.form.reset
pull/13903/head
John Cowen 2022-07-26 15:36:49 +01:00 committed by GitHub
parent a6a79d6811
commit e3f05adf3b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 156 additions and 48 deletions

View File

@ -42,6 +42,24 @@ as |item index|>
{{#if (can 'delete peer' item=item)}} {{#if (can 'delete peer' item=item)}}
<Actions as |Action|> <Actions as |Action|>
<Action
data-test-edit-action
@href={{href-to 'dc.peers.edit' item.Name}}
>
<BlockSlot @name="label">
View
</BlockSlot>
</Action>
{{#if (can "write peer" item=item)}}
<Action
data-test-edit-action
{{on 'click' (fn @onedit item)}}
>
<BlockSlot @name="label">
Regenerate token
</BlockSlot>
</Action>
{{/if}}
<Action <Action
data-test-delete-action data-test-delete-action
@onclick={{fn @ondelete item}} @onclick={{fn @ondelete item}}

View File

@ -1,4 +1,6 @@
<Route @name={{routeName}} as |route|> <Route
@name={{routeName}}
as |route|>
<DataLoader <DataLoader
@src={{ @src={{
uri '/${partition}/${nspace}/${dc}/peers' uri '/${partition}/${nspace}/${dc}/peers'
@ -45,10 +47,13 @@ as |sort filters items|}}
<AppView> <AppView>
<BlockSlot @name="header"> <BlockSlot @name="header">
<h1> <h1>
<route.Title @title="Peers" /> <route.Title
@title="Peers"
/>
</h1> </h1>
</BlockSlot> </BlockSlot>
<BlockSlot @name="toolbar"> <BlockSlot @name="toolbar">
{{#if (gt items.length 0)}} {{#if (gt items.length 0)}}
<Consul::Peer::SearchBar <Consul::Peer::SearchBar
@search={{search}} @search={{search}}
@ -60,8 +65,55 @@ as |sort filters items|}}
/> />
{{/if}} {{/if}}
</BlockSlot>
<BlockSlot @name="actions">
<ModalDialog
@aria={{hash
label="Add peer connection"
}}
as |modal|>
<BlockSlot @name="header">
{{did-insert (set this 'create' modal)}}
<h2>
Add peer connection
</h2>
</BlockSlot>
<BlockSlot @name="body">
{{#if modal.opened}}
<Consul::Peer::Form
@params={{route.params}}
as |form|>
<form.Form
@onchange={{loader.invalidate}}
@onsubmit={{modal.close}}
as |form|>
{{did-insert (set this 'form' form)}}
<form.Fieldsets />
</form.Form>
</Consul::Peer::Form>
{{/if}}
</BlockSlot>
<BlockSlot @name="actions">
<this.form.Actions
@onclose={{this.create.close}}
/>
</BlockSlot>
</ModalDialog>
<Action
data-test-create
class="type-create"
{{on "click" (optional this.create.open)}}
>
Add peer connection
</Action>
</BlockSlot> </BlockSlot>
<BlockSlot @name="content"> <BlockSlot @name="content">
<DataWriter <DataWriter
@sink={{uri '/${partition}/${dc}/${nspace}/peer/' @sink={{uri '/${partition}/${dc}/${nspace}/peer/'
(hash (hash
@ -72,8 +124,8 @@ as |sort filters items|}}
}} }}
@type="peer" @type="peer"
@label="Peer" @label="Peer"
@ondelete={{refresh-route}}
as |writer|> as |writer|>
<BlockSlot @name="removed" as |after|> <BlockSlot @name="removed" as |after|>
<Consul::Peer::Notifications <Consul::Peer::Notifications
{{notification {{notification
@ -83,6 +135,38 @@ as |sort filters items|}}
/> />
</BlockSlot> </BlockSlot>
<BlockSlot @name="content"> <BlockSlot @name="content">
<ModalDialog
@aria={{hash
label="Regenerate token"
}}
@onclose={{set this 'item' undefined}}
as |modal|>
<BlockSlot @name="header">
{{did-insert (set this 'regenerate' modal)}}
<h2>
Regenerate token
</h2>
</BlockSlot>
<BlockSlot @name="body">
{{#if this.item}}
<Consul::Peer::Form::Generate
@item={{this.item}}
@onchange={{loader.invalidate}}
@regenerate={{true}}
as |form|>
{{did-insert (set this 'regenerateForm' form)}}
<form.Fieldsets />
</Consul::Peer::Form::Generate>
{{/if}}
</BlockSlot>
<BlockSlot @name="actions">
<this.regenerateForm.Actions
@onclose={{this.regenerate.close}}
/>
</BlockSlot>
</ModalDialog>
<DataCollection <DataCollection
@type="peer" @type="peer"
@sort={{sort.value}} @sort={{sort.value}}
@ -94,7 +178,10 @@ as |sort filters items|}}
<Consul::Peer::List <Consul::Peer::List
@items={{collection.items}} @items={{collection.items}}
@onedit={{this.edit.open}} @onedit={{queue
(set this 'item')
this.regenerate.open
}}
@ondelete={{writer.delete}} @ondelete={{writer.delete}}
/> />

View File

@ -2,13 +2,13 @@
@import './layout'; @import './layout';
button[type='submit'], button[type='submit'],
button.type-submit, button.type-submit,
button.type-create,
a.type-create { a.type-create {
@extend %primary-button; @extend %primary-button;
} }
// TODO: Once we move action-groups to use aria menu we can get rid of // TODO: Once we move action-groups to use aria menu we can get rid of
// some of this and just use not(aria-haspopup) // some of this and just use not(aria-haspopup)
button[type='reset'], button[type='reset'],
header .actions button[type='button']:not(.copy-btn),
button.type-cancel { button.type-cancel {
@extend %secondary-button; @extend %secondary-button;
} }

View File

@ -8,6 +8,9 @@ html[data-route^='dc.acls.index'] .filter-bar {
html[data-route^='dc.acls.index'] .filter-bar [role='radiogroup'] { html[data-route^='dc.acls.index'] .filter-bar [role='radiogroup'] {
@extend %expanded-single-select; @extend %expanded-single-select;
} }
html[data-route^='dc.acls.tokens.edit'] header .actions button {
@extend %secondary-button;
}
@media #{$--lt-wide-form} { @media #{$--lt-wide-form} {
html[data-route^='dc.acls.create'] main header .actions, html[data-route^='dc.acls.create'] main header .actions,