mirror of https://github.com/status-im/consul.git
[UI] CC-4031: change from Action, a and button to hds::Button (#16251)
This commit is contained in:
parent
340b562353
commit
0c66bbf2b4
|
@ -0,0 +1,3 @@
|
|||
```release-note:improvement
|
||||
ui: update from <button> and <a> to design-system-components button <Hds::Button>
|
||||
```
|
|
@ -64,11 +64,11 @@
|
|||
</AuthForm>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<Action
|
||||
{{on "click" modal.close}}
|
||||
>
|
||||
Continue without logging in
|
||||
</Action>
|
||||
<Hds::Button
|
||||
@color='secondary'
|
||||
@text='Continue without logging in'
|
||||
{{on 'click' modal.close}}
|
||||
/>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
</:unauthorized>
|
||||
|
@ -106,11 +106,11 @@
|
|||
</AuthForm>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<Action
|
||||
<Hds::Button
|
||||
@color='secondary'
|
||||
@text='Continue without logging in'
|
||||
{{on 'click' modal.close}}
|
||||
>
|
||||
Continue without logging in
|
||||
</Action>
|
||||
/>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
<Portal @target="app-before-skip-links">
|
||||
|
|
|
@ -47,11 +47,14 @@
|
|||
<dd>{{@item.ID}}</dd>
|
||||
<dt>Node</dt>
|
||||
<dd>
|
||||
<a
|
||||
href={{href-to 'dc.nodes.show' @item.Node}}
|
||||
>
|
||||
{{@item.Node}}
|
||||
</a>
|
||||
<Hds::Button
|
||||
@text={{@item.Node}}
|
||||
@icon='git-commit'
|
||||
@href={{href-to 'dc.nodes.show' @item.Node}}
|
||||
@isHrefExternal={{false}}
|
||||
@size='small'
|
||||
@color='tertiary'
|
||||
/>
|
||||
</dd>
|
||||
<dt>Delay</dt>
|
||||
<dd>{{duration-from @item.LockDelay}}</dd>
|
||||
|
@ -74,30 +77,30 @@
|
|||
{{#if (can 'delete session' item=@item)}}
|
||||
<ConfirmationDialog @message="Are you sure you want to invalidate this Lock Session?">
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<Action
|
||||
<Hds::Button
|
||||
@text='Invalidate Session'
|
||||
@color='critical'
|
||||
data-test-delete
|
||||
class="type-delete"
|
||||
{{on 'click' (fn confirm (fn writer.delete @item))}}
|
||||
>
|
||||
Invalidate Session
|
||||
</Action>
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
<p>
|
||||
{{message}}
|
||||
</p>
|
||||
<Action
|
||||
class="type-delete"
|
||||
{{on 'click' (fn execute)}}
|
||||
>
|
||||
Confirm Invalidation
|
||||
</Action>
|
||||
<Action
|
||||
class="type-cancel"
|
||||
{{on 'click' (fn cancel)}}
|
||||
>
|
||||
Cancel
|
||||
</Action>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
@text='Confirm Invalidation'
|
||||
@color='critical'
|
||||
data-test-delete
|
||||
{{on 'click' (fn execute)}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
{{on 'click' (fn cancel)}}
|
||||
/>
|
||||
</Hds::ButtonSet>
|
||||
</BlockSlot>
|
||||
</ConfirmationDialog>
|
||||
{{/if}}
|
||||
|
|
|
@ -81,30 +81,30 @@ as |item index|>
|
|||
@message="Are you sure you want to invalidate this session?"
|
||||
>
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<Action
|
||||
<Hds::Button
|
||||
@text='Invalidate'
|
||||
@color='critical'
|
||||
data-test-delete
|
||||
class="type-delete"
|
||||
{{on 'click' (fn confirm (fn @ondelete item))}}
|
||||
>
|
||||
Invalidate
|
||||
</Action>
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
<p>
|
||||
{{message}}
|
||||
</p>
|
||||
<Action
|
||||
class="type-delete"
|
||||
{{on 'click' (fn execute)}}
|
||||
>
|
||||
Confirm Invalidate
|
||||
</Action>
|
||||
<Action
|
||||
class="type-cancel"
|
||||
{{on 'click' (fn cancel)}}
|
||||
>
|
||||
Cancel
|
||||
</Action>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
@text='Confirm Invalidate'
|
||||
@color='critical'
|
||||
data-test-delete
|
||||
{{on 'click' (fn execute)}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
{{on 'click' (fn cancel)}}
|
||||
/>
|
||||
</Hds::ButtonSet>
|
||||
</BlockSlot>
|
||||
</ConfirmationDialog>
|
||||
</BlockSlot>
|
||||
|
|
|
@ -85,21 +85,23 @@ as |route|>
|
|||
</BlockSlot>
|
||||
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<Action
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on Lock Sessions'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/internals/sessions.html"
|
||||
@external={{true}}
|
||||
>
|
||||
Documentation on Lock Sessions
|
||||
</Action>
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<Action
|
||||
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/tutorials/consul/distributed-semaphore"
|
||||
@external={{true}}
|
||||
>
|
||||
Take the tutorial
|
||||
</Action>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Take the tutorial'
|
||||
@href='{{env 'CONSUL_DOCS_LEARN_URL'}}/tutorials/consul/distributed-semaphore'
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
|
||||
|
|
|
@ -102,25 +102,29 @@
|
|||
</fieldset>
|
||||
{{/if}}
|
||||
<div>
|
||||
<Hds::ButtonSet>
|
||||
{{#if (and (is "new nspace" item=item) (can "create nspaces"))}}
|
||||
<Action
|
||||
@type="submit"
|
||||
{{disabled
|
||||
(or
|
||||
<Hds::Button
|
||||
type="submit"
|
||||
disabled={{or
|
||||
(is "pristine nspace" item=item)
|
||||
(state-matches state "error")
|
||||
)
|
||||
}}
|
||||
>
|
||||
Save
|
||||
</Action>
|
||||
@text='Save'
|
||||
/>
|
||||
{{else if (can "write nspace" item=item)}}
|
||||
<Action @type="submit">Save</Action>
|
||||
<Hds::Button
|
||||
type='submit'
|
||||
@text='Save'
|
||||
/>
|
||||
{{/if}}
|
||||
|
||||
<Action @type="reset" {{on "click" (fn this.onCancel item)}}>
|
||||
Cancel
|
||||
</Action>
|
||||
<Hds::Button
|
||||
type='reset'
|
||||
@color='secondary'
|
||||
@text='Cancel'
|
||||
{{on 'click' (fn this.onCancel item)}}
|
||||
/>
|
||||
|
||||
{{#if
|
||||
(and
|
||||
|
@ -132,13 +136,12 @@
|
|||
@message="Are you sure you want to delete this Namespace?"
|
||||
>
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<Action
|
||||
<Hds::Button
|
||||
data-test-delete
|
||||
class="type-delete"
|
||||
@color='critical'
|
||||
@text='Delete'
|
||||
{{on "click" (fn confirm (fn writer.delete item))}}
|
||||
>
|
||||
Delete
|
||||
</Action>
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
<DeleteConfirmation
|
||||
|
@ -149,7 +152,7 @@
|
|||
</BlockSlot>
|
||||
</ConfirmationDialog>
|
||||
{{/if}}
|
||||
|
||||
</Hds::ButtonSet>
|
||||
</div>
|
||||
</StateChart>
|
||||
</form>
|
||||
|
|
|
@ -49,7 +49,11 @@ as |route|>
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
{{#if (can "create nspaces")}}
|
||||
<a data-test-create href="{{href-to 'dc.nspaces.create'}}" class="type-create">Create</a>
|
||||
<Hds::Button
|
||||
@text='Create'
|
||||
@route='dc.nspaces.create'
|
||||
data-test-create
|
||||
/>
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="toolbar">
|
||||
|
@ -117,11 +121,23 @@ as |route|>
|
|||
</p>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/commands/namespace" rel="noopener noreferrer" target="_blank">Documentation on namespaces</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on namespaces'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/commands/namespace"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/namespaces/secure-namespaces" rel="noopener noreferrer" target="_blank">Read the guide</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Read the guide'
|
||||
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/namespaces/secure-namespaces"
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -84,34 +84,37 @@ as |State Guard ChartAction dispatch state|>
|
|||
</fieldset>
|
||||
|
||||
<div>
|
||||
{{#if (and (is "new partition" item=item) (can "create partitions")) }}
|
||||
<Action
|
||||
@type="submit"
|
||||
{{disabled (or (is "pristine partition" item=item) (state-matches state "error"))}}
|
||||
>
|
||||
Save
|
||||
</Action>
|
||||
{{else if (not readOnly)}}
|
||||
<Action @type="submit">Save</Action>
|
||||
{{/if}}
|
||||
<Hds::ButtonSet>
|
||||
|
||||
<Action
|
||||
@type="reset"
|
||||
{{on 'click' (if @oncancel (fn @oncancel item) (fn @onsubmit item))}}
|
||||
>
|
||||
Cancel
|
||||
</Action>
|
||||
|
||||
{{#if (and (is "new partition" item=item) (can "create partitions")) }}
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
type='submit'
|
||||
disabled={{or (is "pristine partition" item=item) (state-matches state "error")}}
|
||||
/>
|
||||
{{else if (not readOnly)}}
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
type='submit'
|
||||
/>
|
||||
{{/if}}
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
type='reset'
|
||||
@color='secondary'
|
||||
{{on 'click' (if @oncancel (fn (optional @oncancel item)) (fn (optional @onsubmit item)))}}
|
||||
/>
|
||||
|
||||
{{#if (and (not (is "new partition" item=item)) (can "delete partition" item=item))}}
|
||||
<ConfirmationDialog @message="Are you sure you want to delete this Partition?">
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<Action
|
||||
<Hds::Button
|
||||
@text='Delete'
|
||||
data-test-delete
|
||||
class="type-delete"
|
||||
@color='critical'
|
||||
{{on 'click' (fn confirm (fn writer.delete item))}}
|
||||
>
|
||||
Delete
|
||||
</Action>
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
<DeleteConfirmation
|
||||
|
@ -122,7 +125,7 @@ as |State Guard ChartAction dispatch state|>
|
|||
</BlockSlot>
|
||||
</ConfirmationDialog>
|
||||
{{/if}}
|
||||
|
||||
</Hds::ButtonSet>
|
||||
</div>
|
||||
|
||||
</StateChart>
|
||||
|
|
|
@ -49,13 +49,11 @@ as |route|>
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
{{#if (can 'create partitions')}}
|
||||
<a
|
||||
data-test-create
|
||||
class="type-create"
|
||||
href="{{href-to 'dc.partitions.create'}}"
|
||||
>
|
||||
Create
|
||||
</a>
|
||||
<Hds::Button
|
||||
@text='Create'
|
||||
@route='dc.partitions.create'
|
||||
data-test-create
|
||||
/>
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="toolbar">
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
as |address index|
|
||||
>
|
||||
<li
|
||||
class="px-3 h-12 hds-border-primary border-t-0 border-l-0 border-r-0 flex items-center justify-between group"
|
||||
class="px-3 h-12 border-bottom-primary flex items-center justify-between group"
|
||||
>
|
||||
<div
|
||||
class="hds-typography-display-300 text-hds-foreground-strong hds-font-weight-semibold"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
.border-bottom-primary {
|
||||
border-bottom: 1px solid var(--token-color-border-primary);
|
||||
}
|
|
@ -10,7 +10,7 @@
|
|||
</div>
|
||||
<div class="shrink-0">
|
||||
<div
|
||||
class="mb-2 hds-typography-body-200 hds-font-weight-semibold hds-foreground-primary"
|
||||
class="hds-typography-body-200 mb-2 hds-font-weight-semibold hds-foreground-primary"
|
||||
>Latest heartbeat</div>
|
||||
<div class="flex items-center">
|
||||
{{#if @peering.LastHeartbeat}}
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
<Action
|
||||
<Hds::Button
|
||||
@text='Generate token'
|
||||
form={{@id}}
|
||||
@type="submit"
|
||||
{{disabled (or
|
||||
(eq @item.Name.length 0)
|
||||
)}}
|
||||
type='submit'
|
||||
disabled={{or (eq @item.Name.length 0)}}
|
||||
...attributes
|
||||
>
|
||||
Generate token
|
||||
</Action>
|
||||
/>
|
|
@ -7,15 +7,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
.consul-peer-form-token-actions {
|
||||
button:first-of-type {
|
||||
@extend %primary-button;
|
||||
}
|
||||
button:last-of-type {
|
||||
@extend %secondary-button;
|
||||
}
|
||||
}
|
||||
|
||||
.consul-peer-form-generate {
|
||||
& {
|
||||
width: 416px;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<Action
|
||||
<Hds::Button
|
||||
@text='Add peer'
|
||||
form={{@id}}
|
||||
@type="submit"
|
||||
type='submit'
|
||||
...attributes
|
||||
>
|
||||
Add peer
|
||||
</Action>
|
||||
/>
|
|
@ -1,18 +1,18 @@
|
|||
<div
|
||||
class={{class-map
|
||||
'consul-peer-form-token-actions'
|
||||
}}
|
||||
...attributes
|
||||
>
|
||||
<Action
|
||||
...attributes
|
||||
{{with-copyable @token}}
|
||||
>
|
||||
Copy token
|
||||
</Action>
|
||||
<Action
|
||||
{{on 'click' @onclose}}
|
||||
>
|
||||
Close
|
||||
</Action>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
@text='Copy token'
|
||||
@color='primary'
|
||||
...attributes
|
||||
{{with-copyable @token}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Close'
|
||||
type='reset'
|
||||
@color='secondary'
|
||||
{{on 'click' @onclose}}
|
||||
/>
|
||||
</Hds::ButtonSet>
|
||||
</div>
|
||||
|
|
|
@ -27,11 +27,11 @@
|
|||
</li>
|
||||
</ol>
|
||||
{{#if (not @regenerate)}}
|
||||
<Action
|
||||
@type="reset"
|
||||
{{on "click" @onclick}}
|
||||
>
|
||||
Generate another token
|
||||
</Action>
|
||||
<Hds::Button
|
||||
@text='Generate another token'
|
||||
type='reset'
|
||||
@color='secondary'
|
||||
{{on "click" @onclick}}
|
||||
/>
|
||||
{{/if}}
|
||||
|
||||
|
|
|
@ -3,4 +3,5 @@
|
|||
@import './list';
|
||||
@import './search-bar';
|
||||
@import './form';
|
||||
@import './address/list';
|
||||
|
||||
|
|
|
@ -90,13 +90,12 @@
|
|||
<this.form.Actions @onclose={{this.create.close}} />
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
<Action
|
||||
data-test-create
|
||||
class="type-create"
|
||||
<Hds::Button
|
||||
@color='primary'
|
||||
@text='Add peer connection'
|
||||
{{on "click" (optional this.create.open)}}
|
||||
>
|
||||
Add peer connection
|
||||
</Action>
|
||||
data-test-create
|
||||
/>
|
||||
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="content">
|
||||
|
@ -194,28 +193,28 @@
|
|||
</p>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<li>
|
||||
{{! what's the docs for peering?}}
|
||||
<a
|
||||
href="{{env
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on Peers'
|
||||
@href="{{env
|
||||
'CONSUL_DOCS_URL'
|
||||
}}/connect/cluster-peering"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Documentation on Peers
|
||||
</a>
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a
|
||||
href="{{env
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Take the tutorial'
|
||||
@href="{{env
|
||||
'CONSUL_DOCS_URL'
|
||||
}}/connect/cluster-peering/create-manage-peering"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Take the tutorial
|
||||
</a>
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -12,25 +12,27 @@
|
|||
{{t "routes.dc.peers.show.addresses.empty.body" htmlSafe=true}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a
|
||||
href="{{env 'CONSUL_DOCS_URL'}}/connect/cluster-peering"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Documentation on Peers
|
||||
</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on Peers'
|
||||
@href="{{env
|
||||
'CONSUL_DOCS_URL'
|
||||
}}/connect/cluster-peering"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a
|
||||
href="{{env
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Take the tutorial'
|
||||
@href="{{env
|
||||
'CONSUL_DOCS_URL'
|
||||
}}/connect/cluster-peering/create-manage-peering"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Take the tutorial
|
||||
</a>
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
as |service index|
|
||||
>
|
||||
<li
|
||||
class="px-3 h-12 hds-border-primary border-t-0 border-l-0 border-r-0"
|
||||
class="px-3 h-12 border-bottom-primary"
|
||||
>
|
||||
<a
|
||||
data-test-service-name
|
||||
|
@ -99,27 +99,27 @@
|
|||
}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a
|
||||
href="{{env
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on Peers'
|
||||
@href="{{env
|
||||
'CONSUL_DOCS_URL'
|
||||
}}/connect/cluster-peering"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Documentation on Peers
|
||||
</a>
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a
|
||||
href="{{env
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Take the tutorial'
|
||||
@href="{{env
|
||||
'CONSUL_DOCS_URL'
|
||||
}}/connect/cluster-peering/create-manage-peering"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Take the tutorial
|
||||
</a>
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -103,25 +103,28 @@
|
|||
}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a
|
||||
href="{{env 'CONSUL_DOCS_URL'}}/connect/cluster-peering"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Documentation on Peers
|
||||
</a>
|
||||
<li>
|
||||
{{! what's the docs for peering?}}
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on Peers'
|
||||
@href="{{env
|
||||
'CONSUL_DOCS_URL'
|
||||
}}/connect/cluster-peering"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a
|
||||
href="{{env
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Take the tutorial'
|
||||
@href="{{env
|
||||
'CONSUL_DOCS_URL'
|
||||
}}/connect/cluster-peering/create-manage-peering"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Take the tutorial
|
||||
</a>
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -20,8 +20,7 @@
|
|||
@extend %app-view-content;
|
||||
}
|
||||
|
||||
%app-view-actions a,
|
||||
%app-view-actions button {
|
||||
%app-view-actions a {
|
||||
@extend %button-compact;
|
||||
}
|
||||
|
||||
|
|
|
@ -109,9 +109,11 @@
|
|||
</State>
|
||||
</label>
|
||||
</fieldset>
|
||||
<Action @type='submit' disabled={{state-matches state 'loading'}}>
|
||||
Log in
|
||||
</Action>
|
||||
<Hds::Button
|
||||
type='submit'
|
||||
@text='Log in'
|
||||
disabled={{state-matches state 'loading'}}
|
||||
/>
|
||||
</form>
|
||||
</TabState>
|
||||
|
||||
|
|
|
@ -1,19 +1,2 @@
|
|||
@import './skin';
|
||||
@import './layout';
|
||||
button[type='submit'],
|
||||
button.type-submit,
|
||||
button.type-create,
|
||||
a.type-create {
|
||||
@extend %primary-button;
|
||||
}
|
||||
// TODO: Once we move action-groups to use aria menu we can get rid of
|
||||
// some of this and just use not(aria-haspopup)
|
||||
button[type='reset'],
|
||||
button.type-cancel {
|
||||
@extend %secondary-button;
|
||||
}
|
||||
.with-confirmation .type-delete,
|
||||
.modal-dialog .type-delete,
|
||||
%app-view-content form button[type='button'].type-delete {
|
||||
@extend %dangerous-button;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
cursor: default;
|
||||
box-shadow: none;
|
||||
}
|
||||
%primary-button,
|
||||
%secondary-button,
|
||||
%dangerous-button {
|
||||
@extend %button;
|
||||
|
@ -19,20 +18,6 @@
|
|||
border-radius: var(--decor-radius-100);
|
||||
box-shadow: var(--decor-elevation-300);
|
||||
}
|
||||
/* color */
|
||||
%primary-button {
|
||||
@extend %frame-blue-800;
|
||||
}
|
||||
%primary-button:hover:not(:disabled):not(:active),
|
||||
%primary-button:focus {
|
||||
@extend %frame-blue-700;
|
||||
}
|
||||
%primary-button:disabled {
|
||||
@extend %frame-blue-600;
|
||||
}
|
||||
%primary-button:hover:active {
|
||||
@extend %frame-blue-900;
|
||||
}
|
||||
/**/
|
||||
%secondary-button:hover:not(:disabled):not(:active),
|
||||
%secondary-button:focus {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
%confirmation-dialog {
|
||||
float: right;
|
||||
justify-content: end;
|
||||
width: 100%;
|
||||
}
|
||||
%confirmation-dialog-inline p {
|
||||
margin-right: 12px;
|
||||
|
|
|
@ -15,11 +15,23 @@
|
|||
</p>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/acl/index.html" rel="noopener noreferrer" target="_blank">Read the documentation</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Read the documentation'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/acl/index.html"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/security-networking/production-acls" rel="noopener noreferrer" target="_blank">Follow the guide</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Follow the guide'
|
||||
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/security-networking/production-acls"
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -189,13 +189,14 @@
|
|||
</fieldset>
|
||||
{{#if (eq (or item.Action '') '')}}
|
||||
<fieldset class="permissions">
|
||||
<button
|
||||
<Hds::Button
|
||||
@text='Add permission'
|
||||
@size='small'
|
||||
@color='tertiary'
|
||||
@icon='plus'
|
||||
data-test-create-permission
|
||||
type="button"
|
||||
{{on "click" (action this.openModal)}}
|
||||
>
|
||||
Add permission
|
||||
</button>
|
||||
/>
|
||||
<h2>Permissions</h2>
|
||||
{{#if (gt item.Permissions.length 0) }}
|
||||
<Consul::Intention::Notice::Permissions />
|
||||
|
@ -217,11 +218,23 @@
|
|||
</p>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/commands/intention" rel="noopener noreferrer" target="_blank">Documentation</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/commands/intention"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/connect" rel="noopener noreferrer" target="_blank">Read the guide</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Read the guide'
|
||||
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/connect"
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
@ -249,22 +262,20 @@
|
|||
</Consul::Intention::Permission::Form>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<button
|
||||
type="button"
|
||||
data-test-intention-permission-submit
|
||||
class="type-submit"
|
||||
disabled={{if (not this.permissionForm.isDirty) 'disabled'}}
|
||||
onclick={{queue (action this.permissionForm.submit) (action modal.close)}}
|
||||
>
|
||||
Save
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="type-cancel"
|
||||
onclick={{queue (action this.permissionForm.reset) (action modal.close)}}
|
||||
>
|
||||
Cancel
|
||||
</button>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
data-test-intention-permission-submit
|
||||
@color='primary'
|
||||
disabled={{if (not this.permissionForm.isDirty) 'disabled'}}
|
||||
onclick={{queue (action this.permissionForm.submit) (action modal.close)}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
onclick={{queue (action this.permissionForm.reset) (action modal.close)}}
|
||||
/>
|
||||
</Hds::ButtonSet>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
|
||||
|
|
|
@ -80,22 +80,20 @@ as |item readonly|}}
|
|||
</p>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions" as |close|>
|
||||
<button
|
||||
data-test-action-warning-confirm
|
||||
type="button"
|
||||
class="dangerous"
|
||||
{{on 'click' api.submit}}
|
||||
>
|
||||
Set to {{capitalize newAction}}
|
||||
</button>
|
||||
<button
|
||||
data-test-action-warning-cancel
|
||||
type="button"
|
||||
class="type-cancel"
|
||||
onclick={{close}}
|
||||
>
|
||||
No, Cancel
|
||||
</button>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
data-test-action-warning-confirm
|
||||
@text='Set to {{capitalize newAction}}'
|
||||
@color='critical'
|
||||
{{on 'click' api.submit}}
|
||||
/>
|
||||
<Hds::Button
|
||||
data-test-action-warning-cancel
|
||||
@text='No, Cancel'
|
||||
@color='secondary'
|
||||
onclick={{close}}
|
||||
/>
|
||||
</Hds::ButtonSet>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
{{/let}}
|
||||
|
@ -174,32 +172,30 @@ as |item readonly|}}
|
|||
@onchange={{api.change}}
|
||||
/>
|
||||
<div>
|
||||
<button
|
||||
type="submit"
|
||||
disabled={{or item.isInvalid api.disabled}}
|
||||
>
|
||||
Save
|
||||
</button>
|
||||
<button
|
||||
type="reset"
|
||||
disabled={{api.disabled}}
|
||||
{{on 'click' (fn this.oncancel item)}}
|
||||
>
|
||||
Cancel
|
||||
</button>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
type='submit'
|
||||
disabled={{or item.isInvalid api.disabled}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
type="reset"
|
||||
disabled={{api.disabled}}
|
||||
{{on 'click' (fn this.oncancel item)}}
|
||||
/>
|
||||
{{#if (not api.isCreate)}}
|
||||
{{#if (not-eq item.ID 'anonymous') }}
|
||||
<ConfirmationDialog @message="Are you sure you want to delete this Intention?">
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<button
|
||||
data-test-delete
|
||||
type="button"
|
||||
class="type-delete"
|
||||
<Hds::Button
|
||||
@text='Delete'
|
||||
@color='critical'
|
||||
disabled={{api.disabled}}
|
||||
{{on 'click' (fn confirm api.delete)}}
|
||||
>
|
||||
Delete
|
||||
</button>
|
||||
data-test-delete
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
<DeleteConfirmation
|
||||
|
@ -211,6 +207,7 @@ as |item readonly|}}
|
|||
</ConfirmationDialog>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</Hds::ButtonSet>
|
||||
</div>
|
||||
</form>
|
||||
{{else}}
|
||||
|
@ -231,9 +228,12 @@ as |item readonly|}}
|
|||
</p>
|
||||
</notice.Body>
|
||||
<notice.Footer>
|
||||
<p>
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/k8s/crds" target="_blank" rel="noopener noreferrer">Learn more about CRDs</a>
|
||||
</p>
|
||||
<Hds::Link::Standalone
|
||||
@text='Learn more about CRDs'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/k8s/crds"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
/>
|
||||
</notice.Footer>
|
||||
</Notice>
|
||||
{{/if}}
|
||||
|
|
|
@ -15,7 +15,13 @@ as |notice|>
|
|||
</notice.Body>
|
||||
<notice.Footer>
|
||||
<p>
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/k8s/crds" target="_blank" rel="noopener noreferrer">Learn more about CRDs</a>
|
||||
<Hds::Link::Standalone
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/k8s/crds"
|
||||
@text='Learn more about CRDs'
|
||||
@icon="docs-link"
|
||||
@iconPosition="trailing"
|
||||
@size="small"
|
||||
/>
|
||||
</p>
|
||||
</notice.Footer>
|
||||
</Notice>
|
|
@ -8,9 +8,13 @@ as |notice|>
|
|||
</notice.Body>
|
||||
<notice.Footer>
|
||||
<p>
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/connect/intentions" target="_blank" rel="noopener noreferrer">
|
||||
{{t "components.consul.intention.notice.permissions.footer"}}
|
||||
</a>
|
||||
<Hds::Link::Standalone
|
||||
@text={{t "components.consul.intention.notice.permissions.footer"}}
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/connect/intentions"
|
||||
@icon="docs-link"
|
||||
@iconPosition="trailing"
|
||||
@size="small"
|
||||
/>
|
||||
</p>
|
||||
</notice.Footer>
|
||||
</Notice>
|
||||
|
|
|
@ -134,23 +134,20 @@ as |group|>
|
|||
<Ref @target={{this}} @name="headerForm" @value={{headerForm}} />
|
||||
</Consul::Intention::Permission::Header::Form>
|
||||
|
||||
<button
|
||||
data-test-add-header
|
||||
type="button"
|
||||
class="type-submit"
|
||||
disabled={{if (not this.headerForm.isDirty) 'disabled'}}
|
||||
onclick={{action this.headerForm.submit}}
|
||||
>
|
||||
Add{{#if (gt (get (changeset-get changeset 'HTTP.Header') 'length') 0)}} another{{/if}} header
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="type-cancel"
|
||||
onclick={{action this.headerForm.reset}}
|
||||
>
|
||||
Cancel
|
||||
</button>
|
||||
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
data-test-add-header
|
||||
@text='Add{{if (gt (get (changeset-get changeset 'HTTP.Header') 'length') 0) ' another' ''}} header'
|
||||
@color='primary'
|
||||
disabled={{if (not this.headerForm.isDirty) 'disabled'}}
|
||||
onclick={{action this.headerForm.submit}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
onclick={{action this.headerForm.reset}}
|
||||
/>
|
||||
</Hds::ButtonSet>
|
||||
</fieldset>
|
||||
</FormGroup>
|
||||
</div>
|
|
@ -60,29 +60,58 @@
|
|||
</label>
|
||||
</div>
|
||||
{{/if}}
|
||||
</fieldset>
|
||||
{{#if api.isCreate}}
|
||||
{{#if (not disabld)}}
|
||||
<button type="submit" disabled={{or api.data.isPristine api.data.isInvalid api.disabled}}>Save</button>
|
||||
{{/if}}
|
||||
<button type="reset" onclick={{action oncancel api.data}} disabled={{api.disabled}}>Cancel</button>
|
||||
{{else}}
|
||||
{{#if (not disabld)}}
|
||||
<button type="submit" disabled={{or api.data.isInvalid api.disabled}}>Save</button>
|
||||
{{/if}}
|
||||
<button type="reset" onclick={{action oncancel api.data}} disabled={{api.disabled}}>Cancel</button>
|
||||
{{#if (not disabld)}}
|
||||
<ConfirmationDialog @message="Are you sure you want to delete this key?">
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<button data-test-delete type="button" class="type-delete" {{action confirm api.delete}} disabled={{api.disabled}}>Delete</button>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
<DeleteConfirmation @message={{message}} @execute={{execute}} @cancel={{cancel}} />
|
||||
</BlockSlot>
|
||||
</ConfirmationDialog>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</form>
|
||||
</fieldset>
|
||||
<Hds::ButtonSet>
|
||||
{{#if api.isCreate}}
|
||||
{{#if (not disabld)}}
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
type='submit'
|
||||
disabled={{or api.data.isPristine api.data.isInvalid api.disabled}}
|
||||
/>
|
||||
{{/if}}
|
||||
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
type='reset'
|
||||
disabled={{api.disabled}}
|
||||
onclick={{action oncancel api.data}}
|
||||
/>
|
||||
{{else}}
|
||||
{{#if (not disabld)}}
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
type='submit'
|
||||
disabled={{or api.data.isInvalid api.disabled}}
|
||||
/>
|
||||
{{/if}}
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
type='reset'
|
||||
disabled={{api.disabled}}
|
||||
onclick={{action oncancel api.data}}
|
||||
/>
|
||||
{{#if (not disabld)}}
|
||||
<ConfirmationDialog @message="Are you sure you want to delete this key?">
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<Hds::Button
|
||||
@text='Delete'
|
||||
@color='critical'
|
||||
data-test-delete
|
||||
disabled={{api.disabled}}
|
||||
{{on 'click' (action confirm api.delete)}}
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
<DeleteConfirmation @message={{message}} @execute={{execute}} @cancel={{cancel}} />
|
||||
</BlockSlot>
|
||||
</ConfirmationDialog>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</Hds::ButtonSet>
|
||||
</form>
|
||||
{{/let}}
|
||||
</BlockSlot>
|
||||
</DataForm>
|
||||
|
|
|
@ -4,9 +4,13 @@
|
|||
<h3>
|
||||
{{t 'routes.dc.nodes.index.agentless.notice.header'}}
|
||||
</h3>
|
||||
<button type='button' aria-label='Dismiss notice' {{on 'click' this.dismissAgentlessNotice}}>
|
||||
<FlightIcon @name='x' />
|
||||
</button>
|
||||
<Hds::Button
|
||||
@color='secondary'
|
||||
@text='Dismiss notice'
|
||||
{{on 'click' this.dismissAgentlessNotice}}
|
||||
@icon='x'
|
||||
@isIconOnly={{true}}
|
||||
/>
|
||||
</notice.Header>
|
||||
<notice.Body>
|
||||
<p>
|
||||
|
@ -14,15 +18,12 @@
|
|||
</p>
|
||||
</notice.Body>
|
||||
<notice.Footer>
|
||||
<p class='docs-link'>
|
||||
<a
|
||||
href='{{env "CONSUL_DOCS_DEVELOPER_URL"}}/connect/dataplane'
|
||||
target='_blank'
|
||||
rel='noopener noreferrer'
|
||||
>
|
||||
{{t 'routes.dc.nodes.index.agentless.notice.footer'}}
|
||||
</a>
|
||||
</p>
|
||||
<Hds::Button
|
||||
@color='tertiary'
|
||||
@href='{{env "CONSUL_DOCS_DEVELOPER_URL"}}/connect/dataplane'
|
||||
@text={{t 'routes.dc.nodes.index.agentless.notice.footer'}}
|
||||
@icon='docs-link'
|
||||
/>
|
||||
</notice.Footer>
|
||||
</Notice>
|
||||
{{/if}}
|
||||
|
|
|
@ -1,7 +1,16 @@
|
|||
<p>
|
||||
{{message}}
|
||||
</p>
|
||||
<button type="button" class="type-delete" onclick={{action execute}}>
|
||||
Confirm Delete
|
||||
</button>
|
||||
<button type="button" class="type-cancel" onclick={{action cancel}}>Cancel</button>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
@text='Confirm Delete'
|
||||
data-test-delete
|
||||
@color='critical'
|
||||
onclick={{action execute}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
onclick={{action cancel}}
|
||||
/>
|
||||
</Hds::ButtonSet>
|
|
@ -44,23 +44,23 @@ function.
|
|||
</p>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a
|
||||
href="{{env 'CONSUL_DOCS_URL'}}/agent/kv"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Documentation on K/V
|
||||
</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on namespaces'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/commands/namespace"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a
|
||||
href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/kv"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Read the guide
|
||||
</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Read the guide'
|
||||
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/namespaces/secure-namespaces"
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
<div>
|
||||
{{yield}}
|
||||
{{#if login}}
|
||||
<Action
|
||||
<Hds::Button
|
||||
@color='primary'
|
||||
@text={{if token.AccessorID 'Log in with a different token' 'Log in'}}
|
||||
data-test-empty-state-login
|
||||
{{on "click" login}}
|
||||
>
|
||||
|
@ -25,12 +27,7 @@
|
|||
@src={{uri 'settings://consul:token'}}
|
||||
@onchange={{action (mut token) value="data"}}
|
||||
/>
|
||||
{{#if token.AccessorID}}
|
||||
Log in with a different token
|
||||
{{else}}
|
||||
Log in
|
||||
{{/if}}
|
||||
</Action>
|
||||
</Hds::Button>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/yield-slot}}
|
||||
|
|
|
@ -16,6 +16,3 @@
|
|||
%empty-state > ul > li > label > button {
|
||||
@extend %empty-state-anchor;
|
||||
}
|
||||
%empty-state div > button {
|
||||
@extend %primary-button;
|
||||
}
|
||||
|
|
|
@ -27,21 +27,25 @@
|
|||
</p>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="back-link">
|
||||
<Action
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
data-test-home
|
||||
@href={{href-to 'index'}}
|
||||
>
|
||||
Go back
|
||||
</Action>
|
||||
@route='index'
|
||||
@text='Go back'
|
||||
@icon='chevron-left'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="docs-link">
|
||||
<Action
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
data-test-home
|
||||
@text='Read the documentation'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}"
|
||||
@external={{true}}
|
||||
>
|
||||
Read the documentation
|
||||
</Action>
|
||||
@iconPosition='trailing'
|
||||
@icon='docs-link'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
@ -68,21 +72,23 @@
|
|||
</p>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<Action
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Read the documentation'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/acl/index.html"
|
||||
@external={{true}}
|
||||
>
|
||||
Read the documentation
|
||||
</Action>
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<Action
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Follow the guide'
|
||||
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/security-networking/production-acls"
|
||||
@external={{true}}
|
||||
>
|
||||
Follow the guide
|
||||
</Action>
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
@import './skin';
|
||||
@import './layout';
|
||||
%form h2 {
|
||||
%form h2,
|
||||
.modal-dialog-body h2 {
|
||||
@extend %h200;
|
||||
}
|
||||
/* TODO: This is positioning the element */
|
||||
|
@ -41,9 +42,7 @@ label span {
|
|||
@extend %form-element-error;
|
||||
}
|
||||
// TODO: float right here is too specific, this is currently used just for the role/policy selectors
|
||||
label.type-dialog {
|
||||
@extend %anchor;
|
||||
cursor: pointer;
|
||||
.type-dialog {
|
||||
float: right;
|
||||
}
|
||||
.type-toggle {
|
||||
|
@ -69,6 +68,11 @@ span.label {
|
|||
%main-content .type-text {
|
||||
@extend %form-element;
|
||||
}
|
||||
%main-content .type-select > span,
|
||||
%main-content .type-password > span,
|
||||
%main-content label.type-text > span {
|
||||
line-height: 2.2em;
|
||||
}
|
||||
%app-view-content form:not(.filter-bar) [role='radiogroup'],
|
||||
%modal-window [role='radiogroup'] {
|
||||
@extend %radio-group;
|
||||
|
|
|
@ -20,12 +20,14 @@
|
|||
role="document"
|
||||
>
|
||||
<header class="modal-dialog-header">
|
||||
<button
|
||||
type="button"
|
||||
<Hds::Button
|
||||
data-a11y-dialog-hide
|
||||
aria-label="Close dialog"
|
||||
>
|
||||
</button>
|
||||
@text='Close dialog'
|
||||
@color='secondary'
|
||||
@icon='x'
|
||||
@size='small'
|
||||
@isIconOnly={{true}}
|
||||
/>
|
||||
<YieldSlot @name="header">
|
||||
{{yield (hash
|
||||
open=(action "open")
|
||||
|
|
|
@ -63,7 +63,5 @@
|
|||
}
|
||||
%modal-window > header button {
|
||||
float: right;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-top: -3px;
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
%modal-window > header {
|
||||
@extend %frame-gray-800;
|
||||
}
|
||||
%modal-window > header > * {
|
||||
%modal-window > header > *:not(button) {
|
||||
@extend %h200;
|
||||
}
|
||||
|
||||
|
@ -46,17 +46,3 @@
|
|||
%modal-window > header {
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
%modal-window > header button {
|
||||
cursor: pointer;
|
||||
border: var(--decor-border-100);
|
||||
/*%frame-gray-050??*/
|
||||
background-color: rgb(var(--tone-gray-050));
|
||||
border-color: rgb(var(--tone-gray-300));
|
||||
border-radius: var(--decor-radius-100);
|
||||
}
|
||||
%modal-window > header button::before {
|
||||
@extend %with-cancel-plain-icon, %as-pseudo;
|
||||
margin-left: -7px;
|
||||
margin-top: -3px;
|
||||
}
|
||||
|
|
|
@ -49,12 +49,12 @@
|
|||
{{! this belongs to the outer StateChart but we need }}
|
||||
{{! to understand validation state }}
|
||||
<State @matches='idle'>
|
||||
<Action
|
||||
{{disabled (or (lt this.partition.length 1) (state-matches state 'error'))}}
|
||||
<Hds::Button
|
||||
type='submit'
|
||||
@text='Choose provider'
|
||||
disabled={{or (lt this.partition.length 1) (state-matches state 'error')}}
|
||||
{{on 'click' (fn dispatch 'LOAD')}}
|
||||
>
|
||||
Choose provider
|
||||
</Action>
|
||||
/>
|
||||
</State>
|
||||
|
||||
</StateChart>
|
||||
|
@ -105,10 +105,12 @@
|
|||
</:option>
|
||||
</OptionInput>
|
||||
|
||||
<Action @type='button' {{disabled @disabled}} {{on 'click' (fn @onchange item)}}>
|
||||
Log in
|
||||
</Action>
|
||||
|
||||
<Hds::Button
|
||||
@color='primary'
|
||||
@text='Log in'
|
||||
disabled={{@disabled}}
|
||||
{{on 'click' (fn @onchange item)}}
|
||||
/>
|
||||
{{/let}}
|
||||
{{/if}}
|
||||
</State>
|
||||
|
|
|
@ -3,9 +3,7 @@
|
|||
%oidc-select label {
|
||||
@extend %form-element;
|
||||
}
|
||||
%oidc-select button:not(.reset) {
|
||||
@extend %primary-button;
|
||||
}
|
||||
|
||||
%oidc-select button.reset {
|
||||
@extend %anchor;
|
||||
@extend %p3;
|
||||
|
|
|
@ -10,20 +10,22 @@
|
|||
...attributes
|
||||
>
|
||||
{{yield}}
|
||||
<BlockSlot @name="label">
|
||||
<BlockSlot @name="label" data-test-apply-policy>
|
||||
Apply an existing policy
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="create">
|
||||
{{#yield-slot name='trigger'}}
|
||||
{{yield}}
|
||||
{{else}}
|
||||
<label
|
||||
class="type-dialog"
|
||||
<Hds::Button
|
||||
@text='Create new policy'
|
||||
@size='small'
|
||||
@color='tertiary'
|
||||
@icon='plus'
|
||||
class='type-dialog'
|
||||
data-test-policy-create
|
||||
{{on "click" (action this.openModal)}}
|
||||
>
|
||||
<span>Create new policy</span>
|
||||
</label>
|
||||
/>
|
||||
{{!TODO: potentially call trigger something else}}
|
||||
{{!the modal has to go here so that if you provide a slot to trigger it doesn't get rendered}}
|
||||
<ModalDialog
|
||||
|
@ -48,16 +50,22 @@
|
|||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions" as |close|>
|
||||
<button type="submit"
|
||||
onclick={{perform this.save item items (queue (action close) (action 'reset'))}}
|
||||
disabled={{if (or item.isSaving item.isPristine item.isInvalid) 'disabled'}}
|
||||
>
|
||||
{{#if item.isSaving }}
|
||||
<div class="progress indeterminate"></div>
|
||||
{{/if}}
|
||||
<span>Create and apply</span>
|
||||
</button>
|
||||
<button type="reset" disabled={{if item.isSaving 'disabled'}} {{action (queue (action close) (action 'reset'))}}>Cancel</button>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
type="submit"
|
||||
@isLoading={{item.isSaving}}
|
||||
onclick={{perform this.save item items (queue (action close) (action 'reset'))}}
|
||||
disabled={{if (or item.isSaving item.isPristine item.isInvalid) 'disabled'}}
|
||||
@text='Create and apply'
|
||||
/>
|
||||
<Hds::Button
|
||||
type="reset"
|
||||
@color="secondary"
|
||||
disabled={{if item.isSaving 'disabled'}}
|
||||
{{on 'click' (action (queue (action close) (action 'reset')))}}
|
||||
@text='Cancel'
|
||||
/>
|
||||
</Hds::ButtonSet>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
{{/yield-slot}}
|
||||
|
@ -161,15 +169,34 @@
|
|||
<div>
|
||||
<ConfirmationDialog @message="Are you sure you want to remove this policy from this token?">
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<button data-test-delete type="button" class="type-delete" {{action confirm 'remove' item items}}>Remove</button>
|
||||
<Hds::Button
|
||||
@text='Remove'
|
||||
@color='critical'
|
||||
@size='small'
|
||||
{{action confirm 'remove' item items}}
|
||||
data-test-delete
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
<p>
|
||||
{{message}}
|
||||
</p>
|
||||
|
||||
<button type="button" class="type-delete" {{action execute}}>Confirm remove</button>
|
||||
<button type="button" class="type-cancel" {{action cancel}}>Cancel</button>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
@text='Confirm remove'
|
||||
@color='critical'
|
||||
@size='small'
|
||||
{{action execute}}
|
||||
data-test-delete
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
@size='small'
|
||||
{{action cancel}}
|
||||
data-test-delete
|
||||
/>
|
||||
</Hds::ButtonSet>
|
||||
</BlockSlot>
|
||||
</ConfirmationDialog>
|
||||
</div>
|
||||
|
|
|
@ -34,9 +34,15 @@ as |modal|>
|
|||
@items={{item.Policies}}
|
||||
>
|
||||
<BlockSlot @name="trigger">
|
||||
<label for="{{name}}_state_policy" data-test-create-policy class="type-dialog">
|
||||
<span>Create new policy</span>
|
||||
</label>
|
||||
<Hds::Button
|
||||
@text='Create new policy'
|
||||
@size='small'
|
||||
@color='tertiary'
|
||||
@icon='plus'
|
||||
class='type-dialog'
|
||||
data-test-create-policy
|
||||
{{action 'triggerStateCheckboxChange'}}
|
||||
/>
|
||||
</BlockSlot>
|
||||
</PolicySelector>
|
||||
|
||||
|
@ -56,27 +62,40 @@ as |modal|>
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="actions" as |close|>
|
||||
|
||||
{{#if (eq state 'role')}}
|
||||
<button type="submit"
|
||||
onclick={{perform this.save item items (queue (action close) (action 'reset'))}}
|
||||
disabled={{if (or item.isSaving item.isPristine item.isInvalid) 'disabled'}}
|
||||
>
|
||||
{{#if item.isSaving }}
|
||||
<div class="progress indeterminate"></div>
|
||||
{{/if}}
|
||||
<span>Create and apply</span>
|
||||
</button>
|
||||
<button type="reset" disabled={{if item.isSaving 'disabled'}} {{action (queue (action close) (action 'reset'))}}>Cancel</button>
|
||||
{{else}}
|
||||
<button type="submit" {{action 'dispatch' 'save' (array policy item.Policies (action (mut state) 'role'))}} disabled={{if (or policy.isSaving policy.isPristine policy.isInvalid) 'disabled'}}>
|
||||
{{#if policy.isSaving }}
|
||||
<div class="progress indeterminate"></div>
|
||||
{{/if}}
|
||||
<span>Create and apply</span>
|
||||
</button>
|
||||
<button type="reset" disabled={{if policy.isSaving 'disabled'}} {{action (mut state) 'role'}}>Cancel</button>
|
||||
{{/if}}
|
||||
<Hds::ButtonSet>
|
||||
{{#if (eq state 'role')}}
|
||||
<Hds::Button
|
||||
type='submit'
|
||||
@text='Create and apply'
|
||||
@isLoading={{item.isSaving}}
|
||||
onclick={{perform this.save item items (queue (action close) (action 'reset'))}}
|
||||
disabled={{if (or item.isSaving item.isPristine item.isInvalid) 'disabled'}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
type='reset'
|
||||
@color='secondary'
|
||||
disabled={{if item.isSaving 'disabled'}}
|
||||
{{on 'click' (action (queue (action close) (action 'reset')))}}
|
||||
/>
|
||||
|
||||
{{else}}
|
||||
<Hds::Button
|
||||
type='submit'
|
||||
@text='Create and apply'
|
||||
@isLoading={{policy.isSaving}}
|
||||
{{action 'dispatch' 'save' (array policy item.Policies (action (mut state) 'role'))}}
|
||||
disabled={{if (or policy.isSaving policy.isPristine policy.isInvalid) 'disabled'}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
type='reset'
|
||||
@color='secondary'
|
||||
disabled={{if policy.isSaving 'disabled'}}
|
||||
{{on 'click' (action (mut state) 'role')}}
|
||||
/>
|
||||
{{/if}}
|
||||
</Hds::ButtonSet>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
|
||||
|
@ -94,12 +113,15 @@ as |modal|>
|
|||
Apply an existing role
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="create">
|
||||
<label class="type-dialog"
|
||||
<Hds::Button
|
||||
@text='Create new role'
|
||||
@size='small'
|
||||
@color='tertiary'
|
||||
@icon='plus'
|
||||
class='type-dialog'
|
||||
data-test-role-create
|
||||
{{on "click" (optional this.modal.open)}}
|
||||
>
|
||||
<span>Create new role</span>
|
||||
</label>
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="option" as |option|>
|
||||
{{option.Name}}
|
||||
|
|
|
@ -42,5 +42,11 @@ export default ChildSelectorComponent.extend({
|
|||
this._super(...arguments);
|
||||
}
|
||||
},
|
||||
triggerStateCheckboxChange() {
|
||||
//Triggers click event on checkbox
|
||||
//The function has to be added to change the logic from <label for=''> to Hds::Button
|
||||
let element = document.getElementById(`${this.name}_state_policy`);
|
||||
element && element.dispatchEvent(new Event('change'));
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
|
@ -75,7 +75,9 @@ export default Mixin.create({
|
|||
// do the same as an update, or override
|
||||
return this.afterUpdate(...arguments);
|
||||
},
|
||||
create: function (item) {
|
||||
create: function (item, event) {
|
||||
event.preventDefault();
|
||||
|
||||
return this.feedback.execute(
|
||||
() => {
|
||||
return this.repo.persist(item).then((item) => {
|
||||
|
@ -88,7 +90,9 @@ export default Mixin.create({
|
|||
}
|
||||
);
|
||||
},
|
||||
update: function (item) {
|
||||
update: function (item, event) {
|
||||
event.preventDefault();
|
||||
|
||||
return this.feedback.execute(
|
||||
() => {
|
||||
return this.repo.persist(item).then(() => {
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
@charset 'utf-8';
|
||||
|
||||
/* css for hds */
|
||||
@import '@hashicorp/design-system-components';
|
||||
|
||||
/* tailwind before all the customizations */
|
||||
@import 'tailwind';
|
||||
|
||||
/* css for hds */
|
||||
@import '@hashicorp/design-system-components';
|
||||
|
||||
/* all variables and custom queries including generic base variables */
|
||||
@import 'variables';
|
||||
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
td, th,
|
||||
span, strong {
|
||||
td,
|
||||
th,
|
||||
span,
|
||||
strong {
|
||||
color: inherit;
|
||||
}
|
||||
/* %typo-body */
|
||||
|
@ -19,9 +21,7 @@ html {
|
|||
hr {
|
||||
background-color: rgb(var(--tone-gray-200));
|
||||
}
|
||||
button {
|
||||
background-color: var(--transparent);
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: var(--typo-size-000);
|
||||
}
|
||||
|
@ -30,7 +30,6 @@ body {
|
|||
line-height: 1.5;
|
||||
}
|
||||
body,
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
|
@ -69,7 +68,9 @@ html {
|
|||
html {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
*, *::before, *::after {
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
fieldset {
|
||||
|
@ -85,8 +86,8 @@ hr {
|
|||
border: none;
|
||||
display: block;
|
||||
}
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
input[type='checkbox'],
|
||||
input[type='radio'] {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
td,
|
||||
|
|
|
@ -8,9 +8,6 @@ html[data-route^='dc.acls.index'] .filter-bar {
|
|||
html[data-route^='dc.acls.index'] .filter-bar [role='radiogroup'] {
|
||||
@extend %expanded-single-select;
|
||||
}
|
||||
html[data-route^='dc.acls.tokens.edit'] header .actions button {
|
||||
@extend %secondary-button;
|
||||
}
|
||||
|
||||
@media #{$--lt-wide-form} {
|
||||
html[data-route^='dc.acls.create'] main header .actions,
|
||||
|
|
|
@ -53,11 +53,3 @@ section[data-route='dc.show.license'] {
|
|||
%license-route-learn-more header {
|
||||
margin-bottom: 1rem; /* 16px */
|
||||
}
|
||||
%license-route-learn-more li {
|
||||
margin-bottom: 0.25rem; /* 4px */
|
||||
}
|
||||
%license-route-learn-more a::before {
|
||||
--icon-name: icon-docs-link;
|
||||
content: '';
|
||||
margin-right: 0.375rem; /* 6px */
|
||||
}
|
||||
|
|
|
@ -28,16 +28,16 @@ section[data-route='dc.show.serverstatus'] {
|
|||
}
|
||||
%server-failure-tolerance > header {
|
||||
width: 100%;
|
||||
padding-bottom: 0.500rem; /* 8px */
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding-bottom: 0.5rem; /* 8px */
|
||||
margin-bottom: 1rem; /* 16px */
|
||||
border-bottom: var(--decor-border-100);
|
||||
border-color: rgb(var(--tone-border));
|
||||
}
|
||||
%server-failure-tolerance > header a {
|
||||
float: right;
|
||||
margin-top: 4px;
|
||||
font-weight: var(--typo-weight-semibold);
|
||||
}
|
||||
|
||||
%server-failure-tolerance header em {
|
||||
@extend %pill-200;
|
||||
font-size: 0.812rem; /* 13px */
|
||||
|
@ -45,7 +45,6 @@ section[data-route='dc.show.serverstatus'] {
|
|||
|
||||
text-transform: uppercase;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
%server-failure-tolerance > section {
|
||||
width: 50%;
|
||||
|
@ -68,10 +67,10 @@ section[data-route='dc.show.serverstatus'] {
|
|||
--icon-size: icon-800;
|
||||
--icon-color: rgb(var(--tone-orange-400));
|
||||
content: '';
|
||||
margin-right: 0.500rem; /* 8px */
|
||||
margin-right: 0.5rem; /* 8px */
|
||||
}
|
||||
%server-failure-tolerance section:first-of-type dl {
|
||||
padding-right: 1.500rem; /* 24px */
|
||||
padding-right: 1.5rem; /* 24px */
|
||||
}
|
||||
%server-failure-tolerance dt {
|
||||
@extend %p2;
|
||||
|
@ -98,7 +97,6 @@ section[data-route='dc.show.serverstatus'] {
|
|||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
|
||||
%redundancy-zones h3 {
|
||||
@extend %h300;
|
||||
}
|
||||
|
@ -136,4 +134,3 @@ section[data-route='dc.show.serverstatus'] {
|
|||
vertical-align: revert;
|
||||
background-color: var(--transparent);
|
||||
}
|
||||
|
||||
|
|
|
@ -35,7 +35,6 @@ pre code,
|
|||
@extend %p1;
|
||||
}
|
||||
%empty-state-anchor,
|
||||
.type-dialog,
|
||||
%table td p,
|
||||
%table td,
|
||||
%healthcheck-output dl > dd,
|
||||
|
|
|
@ -102,11 +102,23 @@ as |route|>
|
|||
}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/security/acl/auth-methods" rel="noopener noreferrer" target="_blank">Documentation on auth methods</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on auth methods'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/security/acl/auth-methods"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a href="{{env 'CONSUL_DOCS_API_URL'}}/acl/auth-methods.html" rel="noopener noreferrer" target="_blank">Read the API Docs</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Read the API Docs'
|
||||
@href='{{env 'CONSUL_DOCS_API_URL'}}/acl/auth-methods.html'
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -28,37 +28,58 @@
|
|||
{{/if}}
|
||||
{{/if}}
|
||||
<div>
|
||||
{{#if (and create (can "create tokens")) }}
|
||||
<Hds::ButtonSet>
|
||||
{{#if (and create (can "create tokens")) }}
|
||||
{{! we only need to check for an empty name here as ember munges autofocus, once we have autofocus back revisit this}}
|
||||
<button type="submit" {{ action "create" item}} disabled={{if (or item.isPristine item.isInvalid (eq item.Name '')) 'disabled'}}>Save</button>
|
||||
{{ else }}
|
||||
{{#if (can "write policy" item=item)}}
|
||||
<button
|
||||
type="submit" {{ action "update" item}} disabled={{if item.isInvalid 'disabled'}}>Save</button>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<button type="reset" {{ action "cancel" item}}>Cancel</button>
|
||||
{{# if (and (not create) (can "delete policy" item=item) ) }}
|
||||
<ConfirmationDialog @message="Are you sure you want to delete this Policy?">
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
type='submit'
|
||||
{{ on 'click' (route-action 'create' item)}}
|
||||
disabled={{if (or item.isPristine item.isInvalid (eq item.Name '')) 'disabled'}}
|
||||
/>
|
||||
{{ else }}
|
||||
{{#if (can "write policy" item=item)}}
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
type='submit'
|
||||
{{ on 'click' (route-action 'update' item)}}
|
||||
disabled={{if item.isInvalid 'disabled'}}
|
||||
/>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
type='reset'
|
||||
{{ action "cancel" item}}
|
||||
/>
|
||||
{{# if (and (not create) (can "delete policy" item=item) ) }}
|
||||
<ConfirmationDialog @message="Are you sure you want to delete this Policy?">
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<button type="button" data-test-delete class="type-delete" {{action confirm 'delete' item}}>Delete</button>
|
||||
<Hds::Button
|
||||
@text='Delete'
|
||||
@color='critical'
|
||||
{{action confirm 'delete' item}}
|
||||
data-test-delete
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
{{#if (gt items.length 0)}}
|
||||
<ModalDialog
|
||||
data-test-delete-modal
|
||||
@onclose={{action cancel}}
|
||||
@open={{true}}
|
||||
@aria={{hash
|
||||
{{#if (gt items.length 0)}}
|
||||
<ModalDialog
|
||||
data-test-delete-modal
|
||||
@onclose={{action cancel}}
|
||||
@open={{true}}
|
||||
@aria={{hash
|
||||
label="Policy in Use"
|
||||
}}
|
||||
>
|
||||
>
|
||||
<BlockSlot @name="header">
|
||||
<h2>Policy in Use</h2>
|
||||
<h2>Policy in Use</h2>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="body">
|
||||
<p>
|
||||
This Policy is currently in use. If you choose to delete this Policy, it will be removed from the following <strong>{{items.length}} Tokens</strong>:
|
||||
This Policy is currently in use. If you choose to delete this Policy, it will be removed from the
|
||||
following <strong>{{items.length}} Tokens</strong>:
|
||||
</p>
|
||||
<TokenList @items={{items}} @target="_blank" />
|
||||
<p>
|
||||
|
@ -66,15 +87,27 @@
|
|||
</p>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions" as |close|>
|
||||
<button type="button" class="type-delete" {{action execute}}>Yes, Delete</button>
|
||||
<button type="button" class="type-cancel" {{action close}}>Cancel</button>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
@text='Yes, Delete'
|
||||
data-test-delete
|
||||
@color='critical'
|
||||
{{action execute}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
{{action close}}
|
||||
/>
|
||||
</Hds::ButtonSet>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
{{else}}
|
||||
</ModalDialog>
|
||||
{{else}}
|
||||
<DeleteConfirmation @message={{message}} @execute={{execute}} @cancel={{cancel}} />
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
</ConfirmationDialog>
|
||||
{{/if}}
|
||||
</ConfirmationDialog>
|
||||
{{/if}}
|
||||
</Hds::ButtonSet>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -62,7 +62,11 @@ as |route|>
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
{{#if (can "create policies")}}
|
||||
<a data-test-create href="{{href-to 'dc.acls.policies.create'}}" class="type-create">Create</a>
|
||||
<Hds::Button
|
||||
@text='Create'
|
||||
@route='dc.acls.policies.create'
|
||||
data-test-create
|
||||
/>
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="toolbar">
|
||||
|
@ -111,11 +115,23 @@ as |route|>
|
|||
}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/commands/acl/policy" rel="noopener noreferrer" target="_blank">Documentation on policies</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on policies'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/commands/acl/policy"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a href="{{env 'CONSUL_LEARN_URL'}}/consul/security-networking/managing-acl-policies" rel="noopener noreferrer" target="_blank">Take the tutorial</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Take the tutorial'
|
||||
@href="{{env 'CONSUL_LEARN_URL'}}/consul/security-networking/managing-acl-policies"
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -6,71 +6,107 @@
|
|||
@nspace={{nspace}}
|
||||
@partition={{partition}}
|
||||
/>
|
||||
{{#if (not create)}}
|
||||
<DataSource
|
||||
@src={{uri '/${partition}/${nspace}/${dc}/tokens/for-role/${id}'
|
||||
(hash
|
||||
partition=partition
|
||||
nspace=nspace
|
||||
dc=dc
|
||||
id=(or id '')
|
||||
)
|
||||
{{#if (not create)}}
|
||||
<DataSource
|
||||
@src={{uri '/${partition}/${nspace}/${dc}/tokens/for-role/${id}'
|
||||
(hash
|
||||
partition=partition
|
||||
nspace=nspace
|
||||
dc=dc
|
||||
id=(or id '')
|
||||
)
|
||||
}}
|
||||
as |loader|>
|
||||
{{#if (gt loader.data.length 0)}}
|
||||
<h2>Where is this role used?</h2>
|
||||
<p>
|
||||
We're only able to show information for the primary datacenter and the current datacenter. This list may not show every case where this role is applied.
|
||||
</p>
|
||||
<TokenList @caption="Tokens" @items={{loader.data}} />
|
||||
as |loader|>
|
||||
{{#if (gt loader.data.length 0)}}
|
||||
<h2>Where is this role used?</h2>
|
||||
<p>
|
||||
We're only able to show information for the primary datacenter and the current datacenter. This list may not
|
||||
show every case where this role is applied.
|
||||
</p>
|
||||
<TokenList @caption="Tokens" @items={{loader.data}} />
|
||||
{{/if}}
|
||||
</DataSource>
|
||||
{{/if}}
|
||||
</DataSource>
|
||||
{{/if}}
|
||||
<div>
|
||||
{{#if (and create (can "create roles")) }}
|
||||
{{! we only need to check for an empty name here as ember munges autofocus, once we have autofocus back revisit this}}
|
||||
<button type="submit" {{ action "create" item}} disabled={{if (or item.isPristine item.isInvalid (eq item.Name '')) 'disabled'}}>Save</button>
|
||||
{{ else }}
|
||||
{{#if (can "write role" item=item)}}
|
||||
<button type="submit" {{ action "update" item}} disabled={{if item.isInvalid 'disabled'}}>Save</button>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<button type="reset" {{ action "cancel" item}}>Cancel</button>
|
||||
{{# if (and (not create) (can "delete role" item=item) ) }}
|
||||
<div>
|
||||
<Hds::ButtonSet>
|
||||
{{#if (and create (can "create roles")) }}
|
||||
{{! we only need to check for an empty name here as ember munges autofocus, once we have autofocus back revisit this}}
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
type='submit'
|
||||
{{ on 'click' (route-action 'create' item)}}
|
||||
disabled={{or item.isPristine item.isInvalid (eq item.Name '')}}
|
||||
/>
|
||||
{{ else }}
|
||||
{{#if (can "write role" item=item)}}
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
type='submit'
|
||||
{{ on 'click' (route-action 'update' item)}}
|
||||
disabled={{item.isInvalid}}
|
||||
/>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
type='reset'
|
||||
{{ action "cancel" item}}
|
||||
/>
|
||||
|
||||
{{# if (and (not create) (can "delete role" item=item) ) }}
|
||||
<ConfirmationDialog @message="Are you sure you want to delete this Role?">
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<button type="button" data-test-delete class="type-delete" {{action confirm 'delete' item}}>Delete</button>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
{{#if (gt items.length 0)}}
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<Hds::Button
|
||||
@text='Delete'
|
||||
@color='critical'
|
||||
{{action confirm 'delete' item}}
|
||||
data-test-delete
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
{{#if (gt items.length 0)}}
|
||||
<ModalDialog
|
||||
@onclose={{action cancel}}
|
||||
@aria={{hash
|
||||
label="Role in Use"
|
||||
}}
|
||||
label="Role in Use"
|
||||
}}
|
||||
>
|
||||
<BlockSlot @name="header">
|
||||
<h2>Role in Use</h2>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="body">
|
||||
<p>
|
||||
This Role is currently in use. If you choose to delete this Role, it will be removed from the following <strong>{{items.length}} Tokens</strong>:
|
||||
</p>
|
||||
<TokenList @items={{items}} @target="_blank" />
|
||||
<p>
|
||||
This action cannot be undone. {{message}}
|
||||
</p>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions" as |close|>
|
||||
<button type="button" class="type-delete" {{action execute}}>Yes, Delete</button>
|
||||
<button type="button" class="type-cancel" {{action close}}>Cancel</button>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
{{else}}
|
||||
<DeleteConfirmation @message={{message}} @execute={{execute}} @cancel={{cancel}} />
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="header">
|
||||
<h2>Role in Use</h2>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="body">
|
||||
<p>
|
||||
This Role is currently in use. If you choose to delete this Role, it will be removed from the
|
||||
following <strong>{{items.length}} Tokens</strong>:
|
||||
</p>
|
||||
<TokenList @items={{items}} @target="_blank" />
|
||||
<p>
|
||||
This action cannot be undone. {{message}}
|
||||
</p>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions" as |close|>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
@text='Yes, Delete'
|
||||
@color='critical'
|
||||
data-test-delete
|
||||
{{action execute}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
{{action close}}
|
||||
/>
|
||||
</Hds::ButtonSet>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
{{else}}
|
||||
<DeleteConfirmation @message={{message}} @execute={{execute}} @cancel={{cancel}} />
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
</ConfirmationDialog>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</Hds::ButtonSet>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -56,7 +56,11 @@ as |route|>
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
{{#if (can "create roles")}}
|
||||
<a data-test-create href="{{href-to 'dc.acls.roles.create'}}" class="type-create">Create</a>
|
||||
<Hds::Button
|
||||
@text='Create'
|
||||
@route='dc.acls.roles.create'
|
||||
data-test-create
|
||||
/>
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="toolbar">
|
||||
|
@ -103,11 +107,23 @@ as |route|>
|
|||
}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/commands/acl/role" rel="noopener noreferrer" target="_blank">Documentation on roles</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on roles'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/commands/acl/role"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a href="{{env 'CONSUL_DOCS_API_URL'}}/acl/roles.html" rel="noopener noreferrer" target="_blank">Read the API Docs</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Read the API Docs'
|
||||
@href="{{env 'CONSUL_DOCS_API_URL'}}/acl/roles.html"
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -1,30 +1,51 @@
|
|||
<form>
|
||||
{{#if (not (token/is-legacy item))}}
|
||||
{{partial 'dc/acls/tokens/fieldsets'}}
|
||||
{{else}}
|
||||
{{partial 'dc/acls/tokens/fieldsets-legacy'}}
|
||||
{{/if}}
|
||||
{{!TODO: Make this into a slotted component}}
|
||||
<div>
|
||||
{{#if (and create (can "create tokens")) }}
|
||||
{{! new tokens can be saved without you filling anything in, old tokens remain using isPristine }}
|
||||
<button type="submit" {{ action "create" item}} disabled={{if (or (and (token/is-legacy item) item.isPristine) item.isInvalid) 'disabled'}}>Save</button>
|
||||
{{ else }}
|
||||
{{#if (can "write token" item=item)}}
|
||||
<button type="submit" {{ action "update" item}} disabled={{if item.isInvalid 'disabled'}}>Save</button>
|
||||
{{#if (not (token/is-legacy item))}}
|
||||
{{partial 'dc/acls/tokens/fieldsets'}}
|
||||
{{else}}
|
||||
{{partial 'dc/acls/tokens/fieldsets-legacy'}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
<button type="reset" {{ action "cancel" item}}>Cancel</button>
|
||||
{{# if (and (not create) (can "delete token" item=item token=token) ) }}
|
||||
{{!TODO: Make this into a slotted component}}
|
||||
<div>
|
||||
<Hds::ButtonSet>
|
||||
{{#if (and create (can "create tokens")) }}
|
||||
{{! new tokens can be saved without you filling anything in, old tokens remain using isPristine }}
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
type='submit'
|
||||
{{ on 'click' (route-action 'create' item)}}
|
||||
disabled={{if (or (and (token/is-legacy item) item.isPristine) item.isInvalid) 'disabled'}}
|
||||
/>
|
||||
{{ else }}
|
||||
{{#if (can "write token" item=item)}}
|
||||
<Hds::Button
|
||||
@text='Save'
|
||||
type='submit'
|
||||
{{ on 'click' (route-action 'update' item)}}
|
||||
disabled={{if item.isInvalid 'disabled'}}
|
||||
/>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
type='reset'
|
||||
{{ action "cancel" item}}
|
||||
/>
|
||||
{{# if (and (not create) (can "delete token" item=item token=token) ) }}
|
||||
<ConfirmationDialog @message="Are you sure you want to delete this Token?">
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<button type="button" data-test-delete class="type-delete" {{action confirm 'delete' item}}>Delete</button>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
<DeleteConfirmation @message={{message}} @execute={{execute}} @cancel={{cancel}} />
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<Hds::Button
|
||||
@text='Delete'
|
||||
@color='critical'
|
||||
{{action confirm 'delete' item}}
|
||||
data-test-delete
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
<DeleteConfirmation @message={{message}} @execute={{execute}} @cancel={{cancel}} />
|
||||
</BlockSlot>
|
||||
</ConfirmationDialog>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</Hds::ButtonSet>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -52,23 +52,46 @@ as |dc partition nspace item create|}}
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
{{#if (not create)}}
|
||||
<Hds::ButtonSet>
|
||||
{{#if (not-eq item.AccessorID token.AccessorID)}}
|
||||
<ConfirmationDialog @message="Are you sure you want to use this ACL token?">
|
||||
<BlockSlot @name="action" as |confirm|>
|
||||
<button data-test-use type="button" {{ action confirm 'use' item }}>Use</button>
|
||||
<Hds::Button
|
||||
@text='Use'
|
||||
@color='secondary'
|
||||
data-test-use
|
||||
{{ action confirm 'use' item }}
|
||||
/>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="dialog" as |execute cancel message|>
|
||||
<p>
|
||||
{{message}}
|
||||
</p>
|
||||
<button type="button" class="type-delete" {{action execute}}>Confirm Use</button>
|
||||
<button type="button" class="type-cancel" {{action cancel}}>Cancel</button>
|
||||
<Hds::ButtonSet>
|
||||
<Hds::Button
|
||||
@text='Confirm Use'
|
||||
@color='critical'
|
||||
data-test-confirm-use
|
||||
{{action execute}}
|
||||
/>
|
||||
<Hds::Button
|
||||
@text='Cancel'
|
||||
@color='secondary'
|
||||
{{action cancel}}
|
||||
/>
|
||||
</Hds::ButtonSet>
|
||||
</BlockSlot>
|
||||
</ConfirmationDialog>
|
||||
{{/if}}
|
||||
{{#if (can "duplicate token" item=item)}}
|
||||
<button data-test-clone type="button" {{ action "clone" item }}>Duplicate</button>
|
||||
<Hds::Button
|
||||
@text='Duplicate'
|
||||
@color='secondary'
|
||||
data-test-clone
|
||||
{{ action "clone" item }}
|
||||
/>
|
||||
{{/if}}
|
||||
</Hds::ButtonSet>
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="content">
|
||||
|
|
|
@ -59,7 +59,11 @@ as |route|>
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
{{#if (can "create tokens")}}
|
||||
<a data-test-create href="{{href-to 'dc.acls.tokens.create'}}" class="type-create">Create</a>
|
||||
<Hds::Button
|
||||
@text='Create'
|
||||
@route='dc.acls.tokens.create'
|
||||
data-test-create
|
||||
/>
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="toolbar">
|
||||
|
|
|
@ -54,7 +54,11 @@ as |route|>
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
{{#if (can 'create intentions')}}
|
||||
<a data-test-create href="{{href-to 'dc.intentions.create'}}" class="type-create">Create</a>
|
||||
<Hds::Button
|
||||
@text='Create'
|
||||
@route='dc.intentions.create'
|
||||
data-test-create
|
||||
/>
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="toolbar">
|
||||
|
@ -119,11 +123,23 @@ as |route|>
|
|||
}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/commands/intention" rel="noopener noreferrer" target="_blank">Documentation on intentions</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on intentions'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/commands/intention"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/connect" rel="noopener noreferrer" target="_blank">Take the tutorial</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Take the tutorial'
|
||||
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/connect"
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -138,9 +138,18 @@ as |sort filters parent items|}}
|
|||
<BlockSlot @name="actions">
|
||||
{{#if (can 'create kvs')}}
|
||||
{{#if (not-eq parent.Key '/') }}
|
||||
<a data-test-create href="{{href-to 'dc.kv.create' parent.Key}}" class="type-create">Create</a>
|
||||
<Hds::Button
|
||||
@text='Create'
|
||||
@isHrefExternal={{false}}
|
||||
@href="{{href-to 'dc.kv.create' parent.Key}}"
|
||||
data-test-create
|
||||
/>
|
||||
{{else}}
|
||||
<a data-test-create href="{{href-to 'dc.kv.root-create'}}" class="type-create">Create</a>
|
||||
<Hds::Button
|
||||
@text='Create'
|
||||
@route='dc.kv.root-create'
|
||||
data-test-create
|
||||
/>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
|
@ -191,11 +200,23 @@ as |sort filters parent items|}}
|
|||
}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/agent/kv" rel="noopener noreferrer" target="_blank">Documentation on K/V</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on K/V'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/agent/kv"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/kv" rel="noopener noreferrer" target="_blank">Take the tutorial</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Take the tutorial'
|
||||
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/kv"
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -88,25 +88,27 @@
|
|||
}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name='actions'>
|
||||
<li class='docs-link'>
|
||||
<a
|
||||
href='{{env "CONSUL_DOCS_DEVELOPER_URL"}}/agent'
|
||||
rel='noopener noreferrer'
|
||||
target='_blank'
|
||||
>
|
||||
{{t 'routes.dc.nodes.index.empty.documentation'}}
|
||||
</a>
|
||||
<li>
|
||||
<Hds::Button
|
||||
@text={{t 'routes.dc.nodes.index.empty.documentation'}}
|
||||
@href='{{env "CONSUL_DOCS_DEVELOPER_URL"}}/agent'
|
||||
@color='tertiary'
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class='learn-link'>
|
||||
<a
|
||||
href='{{env
|
||||
<li>
|
||||
<Hds::Button
|
||||
@text={{t 'routes.dc.nodes.index.empty.learn'}}
|
||||
@href='{{env
|
||||
"CONSUL_DOCS_LEARN_URL"
|
||||
}}/tutorials/consul/deployment-guide?in=consul/production-deploy#configure-consul-agents'
|
||||
rel='noopener noreferrer'
|
||||
target='_blank'
|
||||
>
|
||||
{{t 'routes.dc.nodes.index.empty.learn'}}
|
||||
</a>
|
||||
@color='tertiary'
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -118,21 +118,23 @@ as |sort filters items partition nspace|}}
|
|||
}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<Action
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on Services'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/commands/services"
|
||||
@external={{true}}
|
||||
>
|
||||
Documentation on Services
|
||||
</Action>
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<Action
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Take the tutorial'
|
||||
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/services"
|
||||
@external={{true}}
|
||||
>
|
||||
Take the tutorial
|
||||
</Action>
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -58,9 +58,15 @@ as |route|>
|
|||
}}
|
||||
</notice.Body>
|
||||
<notice.Footer>
|
||||
{{t "routes.dc.services.instance.upstreams.tproxy-mode.footer"
|
||||
htmlSafe=true
|
||||
}}
|
||||
<p>
|
||||
<Hds::Link::Standalone
|
||||
@text={{t "routes.dc.services.instance.upstreams.tproxy-mode.footer.text"}}
|
||||
@href='{{concat (env 'CONSUL_DOCS_URL') (t "routes.dc.services.instance.upstreams.tproxy-mode.footer.link")}}'
|
||||
@icon="docs-link"
|
||||
@iconPosition="trailing"
|
||||
@size="small"
|
||||
/>
|
||||
</p>
|
||||
</notice.Footer>
|
||||
</Notice>
|
||||
{{/if}}
|
||||
|
|
|
@ -44,7 +44,11 @@ as |route|>
|
|||
<div class="tab-section">
|
||||
{{#if (can 'create intention for service' item=item.Service)}}
|
||||
<Portal @target="app-view-actions">
|
||||
<a data-test-create href={{href-to 'dc.services.show.intentions.create'}} class="type-create">Create</a>
|
||||
<Hds::Button
|
||||
@text='Create'
|
||||
@route='dc.services.show.intentions.create'
|
||||
data-test-create
|
||||
/>
|
||||
</Portal>
|
||||
{{/if}}
|
||||
{{#if (gt items.length 0) }}
|
||||
|
@ -107,11 +111,23 @@ as |route|>
|
|||
}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<li class="docs-link">
|
||||
<a href="{{env 'CONSUL_DOCS_URL'}}/commands/intention" rel="noopener noreferrer" target="_blank">Documentation on intentions</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Documentation on intentions'
|
||||
@href="{{env 'CONSUL_DOCS_URL'}}/commands/intention"
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
<li class="learn-link">
|
||||
<a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/connect" rel="noopener noreferrer" target="_blank">Take the tutorial</a>
|
||||
<li>
|
||||
<Hds::Link::Standalone
|
||||
@text='Take the tutorial'
|
||||
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/connect"
|
||||
@icon='learn-link'
|
||||
@iconPosition='trailing'
|
||||
@size='small'
|
||||
/>
|
||||
</li>
|
||||
</BlockSlot>
|
||||
</EmptyState>
|
||||
|
|
|
@ -137,11 +137,23 @@ as |item|}}
|
|||
{{compute (fn route.t 'documentation.title')}}
|
||||
</h3>
|
||||
</header>
|
||||
{{compute (fn route.t 'documentation.body'
|
||||
(hash
|
||||
htmlSafe=true
|
||||
)
|
||||
)}}
|
||||
<div class="flex gap-1.5 flex-col">
|
||||
<Hds::Link::Standalone
|
||||
@text={{compute (fn route.t 'documentation.links.license-expiration.text')}}
|
||||
@href='{{concat (env 'CONSUL_DOCS_URL') (compute (fn route.t 'documentation.links.license-expiration.link'))}}'
|
||||
@icon='docs-link'
|
||||
/>
|
||||
<Hds::Link::Standalone
|
||||
@text={{compute (fn route.t 'documentation.links.renewing-license.text')}}
|
||||
@href='{{concat (env 'CONSUL_DOCS_URL') (compute (fn route.t 'documentation.links.renewing-license.link'))}}'
|
||||
@icon='docs-link'
|
||||
/>
|
||||
<Hds::Link::Standalone
|
||||
@text={{compute (fn route.t 'documentation.links.applying-new-license.text')}}
|
||||
@href='{{concat (env 'CONSUL_DOCS_URL') (compute (fn route.t 'documentation.links.applying-new-license.link'))}}'
|
||||
@icon='docs-link'
|
||||
/>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
</section>
|
||||
|
|
|
@ -87,12 +87,15 @@ as |item|}}
|
|||
>
|
||||
|
||||
<header>
|
||||
{{compute (fn route.t 'tolerance.link' (hash
|
||||
htmlSafe=true
|
||||
))}}
|
||||
<h2>
|
||||
{{compute (fn route.t 'tolerance.header')}}
|
||||
</h2>
|
||||
<Hds::Link::Standalone
|
||||
@icon='docs-link'
|
||||
@iconPosition='trailing'
|
||||
@text={{compute (fn route.t 'tolerance.link-text')}}
|
||||
@href='{{concat (env 'CONSUL_DOCS_URL') (compute (fn route.t 'tolerance.link'))}}'
|
||||
/>
|
||||
</header>
|
||||
|
||||
<section
|
||||
|
|
|
@ -67,10 +67,10 @@
|
|||
"@ember/test-helpers": "^2.2.5",
|
||||
"@glimmer/component": "^1.0.4",
|
||||
"@glimmer/tracking": "^1.0.4",
|
||||
"@hashicorp/design-system-components": "^1.0.4",
|
||||
"@hashicorp/design-system-components": "^1.6.0",
|
||||
"@hashicorp/design-system-tokens": "^1.0.0",
|
||||
"@hashicorp/ember-cli-api-double": "^4.0.0",
|
||||
"@hashicorp/ember-flight-icons": "^3.0.0",
|
||||
"@hashicorp/ember-flight-icons": "^3.0.2",
|
||||
"@html-next/vertical-collection": "^4.0.0",
|
||||
"@lit/reactive-element": "^1.2.1",
|
||||
"@xstate/fsm": "^1.4.0",
|
||||
|
|
|
@ -21,7 +21,7 @@ Feature: dc / intentions / deleting: Deleting items with confirmations, success
|
|||
---
|
||||
And I click actions on the intentionList.intentions
|
||||
And I click delete on the intentionList.intentions
|
||||
And I click confirmDelete on the intentionList.intentions
|
||||
And I click confirmInlineDelete on the intentionList.intentions
|
||||
Then a DELETE request was made to "/v1/connect/intentions/exact?source=default%2Fdefault%2Fname&destination=default%2Fdefault%2Fdestination&dc=datacenter"
|
||||
And "[data-notification]" has the "notification-delete" class
|
||||
And "[data-notification]" has the "success" class
|
||||
|
|
|
@ -13,7 +13,7 @@ Feature: dc / kvs / deleting: Deleting items with confirmations, success and err
|
|||
---
|
||||
And I click actions on the kvs
|
||||
And I click delete on the kvs
|
||||
And I click confirmDelete on the kvs
|
||||
And I click confirmInlineDelete on the kvs
|
||||
Then a DELETE request was made to "/v1/kv/key-name?dc=datacenter&ns=@!namespace"
|
||||
And "[data-notification]" has the "notification-delete" class
|
||||
And "[data-notification]" has the "success" class
|
||||
|
|
|
@ -48,7 +48,7 @@ Feature: dc / services / show / intentions / index: Intentions per service
|
|||
Scenario: I can delete intentions
|
||||
And I click actions on the intentionList.intentions component
|
||||
And I click delete on the intentionList.intentions component
|
||||
And I click confirmDelete on the intentionList.intentions
|
||||
And I click confirmInlineDelete on the intentionList.intentions
|
||||
Then a DELETE request was made to "/v1/connect/intentions/exact?source=default%2Fdefault%2Fname&destination=default%2Fdefault%2Fdestination&dc=dc1"
|
||||
And "[data-notification]" has the "notification-delete" class
|
||||
And "[data-notification]" has the "success" class
|
||||
|
|
|
@ -12,13 +12,13 @@ module('Integration | Component | delete confirmation', function (hooks) {
|
|||
|
||||
await render(hbs`{{delete-confirmation}}`);
|
||||
|
||||
assert.dom('.type-delete').exists({ count: 1 });
|
||||
assert.dom('[data-test-delete]').exists({ count: 1 });
|
||||
|
||||
// Template block usage:
|
||||
await render(hbs`
|
||||
{{#delete-confirmation}}{{/delete-confirmation}}
|
||||
`);
|
||||
|
||||
assert.dom('.type-delete').exists({ count: 1 });
|
||||
assert.dom('[data-test-delete]').exists({ count: 1 });
|
||||
});
|
||||
});
|
||||
|
|
|
@ -7,7 +7,8 @@ export default function (clickable) {
|
|||
...obj,
|
||||
...{
|
||||
delete: clickable(scope + '[data-test-delete]'),
|
||||
confirmDelete: clickable(scope + 'button.type-delete'),
|
||||
confirmDelete: clickable(scope + '[data-test-delete]'),
|
||||
confirmInlineDelete: clickable(scope + 'button.type-delete'),
|
||||
},
|
||||
};
|
||||
};
|
||||
|
|
|
@ -4,7 +4,7 @@ export default function (visitable, submitable, deletable, cancelable, clickable
|
|||
deletable({
|
||||
visit: visitable(['/:dc/acls/:acl', '/:dc/acls/create']),
|
||||
use: clickable('[data-test-use]'),
|
||||
confirmUse: clickable('button.type-delete'),
|
||||
confirmUse: clickable('[data-test-confirm-use]'),
|
||||
})
|
||||
),
|
||||
'main'
|
||||
|
|
|
@ -13,7 +13,7 @@ export default function (
|
|||
...cancelable({}, 'main form > div'),
|
||||
...deletable({}, 'main form > div'),
|
||||
use: clickable('[data-test-use]'),
|
||||
confirmUse: clickable('button.type-delete'),
|
||||
confirmUse: clickable('[data-test-confirm-use]'),
|
||||
clone: clickable('[data-test-clone]'),
|
||||
policies: policySelector(),
|
||||
roles: roleSelector(),
|
||||
|
|
|
@ -5,8 +5,8 @@ dc:
|
|||
title: Server status
|
||||
unassigned: Unassigned Zones
|
||||
tolerance:
|
||||
link: |
|
||||
<a href="{CONSUL_DOCS_URL}/architecture/improving-consul-resilience#strategies-to-increase-fault-tolerance" target="_blank" rel="noopener noreferrer">Learn how to improve fault tolerance</a>
|
||||
link-text: Learn how to improve fault tolerance
|
||||
link: /architecture/improving-consul-resilience#strategies-to-increase-fault-tolerance
|
||||
header: Server fault tolerance
|
||||
immediate:
|
||||
header: Immediate
|
||||
|
@ -34,25 +34,16 @@ dc:
|
|||
</p>
|
||||
documentation:
|
||||
title: Learn More
|
||||
body: |
|
||||
<ul>
|
||||
<li>
|
||||
<a href="{CONSUL_DOCS_URL}/enterprise/license/faq#q-is-there-a-grace-period-when-licenses-expire" target="_blank" rel="noopener noreferrer">
|
||||
License expiration
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{CONSUL_DOCS_URL}/enterprise/license/faq#q-how-can-i-renew-a-license" target="_blank" rel="noopener noreferrer">
|
||||
Renewing a license
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{CONSUL_DOCS_LEARN_URL}/tutorials/nomad/hashicorp-enterprise-license?in=consul/enterprise" target="_blank" rel="noopener noreferrer">
|
||||
Applying a new license
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
links:
|
||||
license-expiration:
|
||||
text: License expiration
|
||||
link: '/enterprise/license/faq#q-is-there-a-grace-period-when-licenses-expire'
|
||||
renewing-license:
|
||||
text: Renewing a license
|
||||
link: '/enterprise/license/faq#q-how-can-i-renew-a-license'
|
||||
applying-new-license:
|
||||
text: Applying a new license
|
||||
link: '/tutorials/nomad/hashicorp-enterprise-license?in=consul/enterprise'
|
||||
nodes:
|
||||
index:
|
||||
agentless:
|
||||
|
@ -265,10 +256,9 @@ dc:
|
|||
<p>
|
||||
The upstreams listed on this page have been defined in a proxy registration. There may be more upstreams, though, as "transparent" mode is enabled on this proxy.
|
||||
</p>
|
||||
footer: |
|
||||
<p>
|
||||
<a href="{CONSUL_DOCS_URL}/connect/transparent-proxy" target="_blank" rel="noopener noreferrer">Read the documentation
|
||||
</p>
|
||||
footer:
|
||||
link: "/connect/transparent-proxy"
|
||||
text: Read the documentation
|
||||
empty: |
|
||||
<p>
|
||||
This Service Instance has no Upstreams{items, select,
|
||||
|
|
190
ui/yarn.lock
190
ui/yarn.lock
|
@ -2927,6 +2927,15 @@
|
|||
ember-cli-version-checker "^5.1.2"
|
||||
semver "^7.3.5"
|
||||
|
||||
"@embroider/addon-shim@^1.0.0":
|
||||
version "1.8.4"
|
||||
resolved "https://registry.yarnpkg.com/@embroider/addon-shim/-/addon-shim-1.8.4.tgz#0e7f32c5506bf0f3eb0840506e31c36c7053763c"
|
||||
integrity sha512-sFhfWC0vI18KxVenmswQ/ShIvBg4juL8ubI+Q3NTSdkCTeaPQ/DIOUF6oR5DCQ8eO/TkIaw+kdG3FkTY6yNJqA==
|
||||
dependencies:
|
||||
"@embroider/shared-internals" "^2.0.0"
|
||||
broccoli-funnel "^3.0.8"
|
||||
semver "^7.3.8"
|
||||
|
||||
"@embroider/addon-shim@^1.5.0":
|
||||
version "1.8.3"
|
||||
resolved "https://registry.yarnpkg.com/@embroider/addon-shim/-/addon-shim-1.8.3.tgz#2368510b8ce42d50d02cb3289c32e260dfa34bd9"
|
||||
|
@ -3147,6 +3156,20 @@
|
|||
semver "^7.3.5"
|
||||
typescript-memoize "^1.0.1"
|
||||
|
||||
"@embroider/shared-internals@^2.0.0":
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-2.0.0.tgz#d8205ec6944362aeecfbb51143db352430ced316"
|
||||
integrity sha512-qZ2/xky9mWm5YC6noOa6AiAwgISEQ78YTZNv4SNu2PFgEK/H+Ha/3ddngzGSsnXkVnIHZyxIBzhxETonQYHY9g==
|
||||
dependencies:
|
||||
babel-import-util "^1.1.0"
|
||||
ember-rfc176-data "^0.3.17"
|
||||
fs-extra "^9.1.0"
|
||||
js-string-escape "^1.0.1"
|
||||
lodash "^4.17.21"
|
||||
resolve-package-path "^4.0.1"
|
||||
semver "^7.3.5"
|
||||
typescript-memoize "^1.0.1"
|
||||
|
||||
"@embroider/util@^0.39.1 || ^0.40.0 || ^0.41.0":
|
||||
version "0.41.0"
|
||||
resolved "https://registry.yarnpkg.com/@embroider/util/-/util-0.41.0.tgz#5324cb4742aa4ed8d613c4f88a466f73e4e6acc1"
|
||||
|
@ -3399,19 +3422,25 @@
|
|||
faker "^4.1.0"
|
||||
js-yaml "^3.13.1"
|
||||
|
||||
"@hashicorp/design-system-components@^1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@hashicorp/design-system-components/-/design-system-components-1.0.4.tgz#e258cad1a41b00db3363db25bfdafaa598326b98"
|
||||
integrity sha512-aaOncgPH4yDEvQuFfOa/cwAOttxwbaEdaENEl+88EOi/HLUe0mdS2HgpC96w3sWhedE/xylCgSHz0DemIj5dJQ==
|
||||
"@hashicorp/design-system-components@^1.6.0":
|
||||
version "1.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@hashicorp/design-system-components/-/design-system-components-1.6.1.tgz#da04f1199cdce78dcf6591c3678377b87bd67424"
|
||||
integrity sha512-nfuY5KLK3kQWRfrFOIEEoSSca6LwZ9Zss13glHHyAIFt/gJ1pjSpcYj2XTukdjfAvx70qwQbHPPaAUXZ00vtoA==
|
||||
dependencies:
|
||||
"@hashicorp/design-system-tokens" "^1.0.0"
|
||||
"@hashicorp/ember-flight-icons" "^2.0.12"
|
||||
ember-auto-import "^2.4.1"
|
||||
"@hashicorp/design-system-tokens" "^1.4.0"
|
||||
"@hashicorp/ember-flight-icons" "^3.0.2"
|
||||
dialog-polyfill "^0.5.6"
|
||||
ember-auto-import "^2.4.2"
|
||||
ember-cached-decorator-polyfill "^0.1.4"
|
||||
ember-cli-babel "^7.26.11"
|
||||
ember-cli-htmlbars "^6.0.1"
|
||||
ember-cli-htmlbars "^6.1.0"
|
||||
ember-cli-sass "^10.0.1"
|
||||
ember-composable-helpers "^4.4.1"
|
||||
ember-focus-trap "^1.0.1"
|
||||
ember-keyboard "^8.1.0"
|
||||
ember-named-blocks-polyfill "^0.2.5"
|
||||
ember-style-modifier "^0.8.0"
|
||||
ember-truth-helpers "^3.0.0"
|
||||
sass "^1.43.4"
|
||||
|
||||
"@hashicorp/design-system-tokens@^1.0.0":
|
||||
|
@ -3419,6 +3448,11 @@
|
|||
resolved "https://registry.yarnpkg.com/@hashicorp/design-system-tokens/-/design-system-tokens-1.0.0.tgz#06ab55873ef444b0958a5192db310278c6501f0b"
|
||||
integrity sha512-akziX9jiHnQ8KfJA6s8l+98Ukz30C5Lw7BpSPeTduOmdOlJv1uP7w4TV0hC6VIDMDrJrxIF5Y/HnpSCdQGlxQA==
|
||||
|
||||
"@hashicorp/design-system-tokens@^1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@hashicorp/design-system-tokens/-/design-system-tokens-1.4.0.tgz#2d42bd7d9250b01f77618663b3b92004be840af7"
|
||||
integrity sha512-xZI5lom+qPi5B4qUDgXcuTc+A8/NQdXXBoIfB7NUnY/GRp4kOkxNkgScPj8fvAFvUuLdiCAQhpLU54z1A/Q3cA==
|
||||
|
||||
"@hashicorp/ember-cli-api-double@^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@hashicorp/ember-cli-api-double/-/ember-cli-api-double-4.0.0.tgz#fd6181229c589b4db93f1784d022db064c61ec76"
|
||||
|
@ -3434,34 +3468,20 @@
|
|||
pretender "^3.2.0"
|
||||
recursive-readdir-sync "^1.0.6"
|
||||
|
||||
"@hashicorp/ember-flight-icons@^2.0.12":
|
||||
version "2.0.12"
|
||||
resolved "https://registry.yarnpkg.com/@hashicorp/ember-flight-icons/-/ember-flight-icons-2.0.12.tgz#788adf7a4fedc468d612d35b604255df948f4012"
|
||||
integrity sha512-8fHPGaSpMkr5dLWaruwbq9INwZCi2EyTof/TR/dL8PN4UbCuY+KXNqG0lLIKNGFFTj09B1cO303m5GUfKKDGKQ==
|
||||
"@hashicorp/ember-flight-icons@^3.0.2":
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@hashicorp/ember-flight-icons/-/ember-flight-icons-3.0.2.tgz#8d884c07842a6c88df18ca680d7883a59222a2ba"
|
||||
integrity sha512-WomQg1hw/IHA1N9hC77WbTNazVXqu2RdRoaVCGT99NTXQ4S7Bw7vhHheR4JAgt10ksMZFI3X/bJVHxFfjUCkSQ==
|
||||
dependencies:
|
||||
"@hashicorp/flight-icons" "^2.10.0"
|
||||
"@hashicorp/flight-icons" "^2.12.0"
|
||||
ember-auto-import "^2.4.2"
|
||||
ember-cli-babel "^7.26.11"
|
||||
ember-cli-htmlbars "^6.0.1"
|
||||
ember-cli-htmlbars "^6.1.0"
|
||||
|
||||
"@hashicorp/ember-flight-icons@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@hashicorp/ember-flight-icons/-/ember-flight-icons-3.0.0.tgz#fddeb8adfb036aa3573c55b7236b34172b49cba9"
|
||||
integrity sha512-+QrV38Ix9dWLwMzdVcMcSmFfeSVGvWvB+3OVBq3ltOTmnoLPIAx8LT9UDZUZ1wa65ciO+a1YzLMmwWnQgX/r9Q==
|
||||
dependencies:
|
||||
"@hashicorp/flight-icons" "^2.11.0"
|
||||
ember-auto-import "^2.4.1"
|
||||
ember-cli-babel "^7.26.11"
|
||||
ember-cli-htmlbars "^6.0.1"
|
||||
|
||||
"@hashicorp/flight-icons@^2.10.0":
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/@hashicorp/flight-icons/-/flight-icons-2.10.0.tgz#24b03043bacda16e505200e6591dfef896ddacf1"
|
||||
integrity sha512-jYUA0M6Tz+4RAudil+GW/fHbhZPcKCiIZZAguBDviqbLneMkMgPOBgbXWCGWsEQ1fJzP2cXbUaio8L0aQZPWQw==
|
||||
|
||||
"@hashicorp/flight-icons@^2.11.0":
|
||||
version "2.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@hashicorp/flight-icons/-/flight-icons-2.11.0.tgz#1500be99a42ee8512e7caece4bdae60ce8790577"
|
||||
integrity sha512-teFkUY2di63JZ2gsegQgS+3f5YEP+GPuycB1Z2O+weInIrL33Ds0/J+lxFCmi2vkPAeY5xOnsclHYnhU6xOSmA==
|
||||
"@hashicorp/flight-icons@^2.12.0":
|
||||
version "2.12.0"
|
||||
resolved "https://registry.yarnpkg.com/@hashicorp/flight-icons/-/flight-icons-2.12.0.tgz#48bc21f21678668ffe9147b181a2991d8b151fc7"
|
||||
integrity sha512-PhjTTHCjoq4EJirifbxLxnxXnCRf1NUAYZ1WnFW8i0yOmmax6fgjsJRPlf0VIGsR8R7isFpjuy6gJ5c7mNhE0w==
|
||||
|
||||
"@html-next/vertical-collection@^4.0.0":
|
||||
version "4.0.0"
|
||||
|
@ -4874,6 +4894,11 @@ babel-import-util@^1.1.0:
|
|||
resolved "https://registry.yarnpkg.com/babel-import-util/-/babel-import-util-1.2.2.tgz#1027560e143a4a68b1758e71d4fadc661614e495"
|
||||
integrity sha512-8HgkHWt5WawRFukO30TuaL9EiDUOdvyKtDwLma4uBNeUSDbOO0/hiPfavrOWxSS6J6TKXfukWHZ3wiqZhJ8ONQ==
|
||||
|
||||
babel-import-util@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-import-util/-/babel-import-util-1.3.0.tgz#dc9251ea39a7747bd586c1c13b8d785a42797f8e"
|
||||
integrity sha512-PPzUT17eAI18zn6ek1R3sB4Krc/MbnmT1MkZQFmyhjoaEGBVwNABhfVU9+EKcDSKrrOm9OIpGhjxukx1GCiy1g==
|
||||
|
||||
babel-loader@^8.0.6, babel-loader@^8.1.0:
|
||||
version "8.2.2"
|
||||
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
|
||||
|
@ -4950,6 +4975,13 @@ babel-plugin-ember-template-compilation@^1.0.0:
|
|||
magic-string "^0.25.7"
|
||||
string.prototype.matchall "^4.0.5"
|
||||
|
||||
babel-plugin-ember-template-compilation@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-ember-template-compilation/-/babel-plugin-ember-template-compilation-2.0.0.tgz#41d895874ba6119dd461f61993c16d1154bf8a57"
|
||||
integrity sha512-d+4jaB2ik0rt9TH0K9kOlKJeRBHEb373FgFMcU9ZaJL2zYuVXe19bqy+cWlLpLf1tpOBcBG9QTlFBCoImlOt1g==
|
||||
dependencies:
|
||||
babel-import-util "^1.3.0"
|
||||
|
||||
babel-plugin-filter-imports@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-filter-imports/-/babel-plugin-filter-imports-4.0.0.tgz#068f8da15236a96a9602c36dc6f4a6eeca70a4f4"
|
||||
|
@ -7717,6 +7749,11 @@ dezalgo@^1.0.0:
|
|||
asap "^2.0.0"
|
||||
wrappy "1"
|
||||
|
||||
dialog-polyfill@^0.5.6:
|
||||
version "0.5.6"
|
||||
resolved "https://registry.yarnpkg.com/dialog-polyfill/-/dialog-polyfill-0.5.6.tgz#7507b4c745a82fcee0fa07ce64d835979719599a"
|
||||
integrity sha512-ZbVDJI9uvxPAKze6z146rmfUZjBqNEwcnFTVamQzXH+svluiV7swmVIGr7miwADgfgt1G2JQIytypM9fbyhX4w==
|
||||
|
||||
didyoumean@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
|
||||
|
@ -7991,7 +8028,7 @@ ember-auto-import@^1.5.3, ember-auto-import@^1.6.0:
|
|||
walk-sync "^0.3.3"
|
||||
webpack "^4.43.0"
|
||||
|
||||
ember-auto-import@^2.2.3, ember-auto-import@^2.4.1, ember-auto-import@^2.4.2:
|
||||
ember-auto-import@^2.2.3, ember-auto-import@^2.4.2:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-2.4.2.tgz#d4d3bc6885a11cf124f606f5c37169bdf76e37ae"
|
||||
integrity sha512-REh+1aJWpTkvN42a/ga41OuRpUsSW7UQfPr2wPtYx56o/xoSNhVBXejy7yV9ObrkN7gogz6fs2xZwih5cOwpYg==
|
||||
|
@ -8045,6 +8082,26 @@ ember-basic-dropdown@3.0.21, ember-basic-dropdown@^3.0.16:
|
|||
ember-style-modifier "^0.6.0"
|
||||
ember-truth-helpers "^2.1.0 || ^3.0.0"
|
||||
|
||||
ember-cache-primitive-polyfill@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-cache-primitive-polyfill/-/ember-cache-primitive-polyfill-1.0.1.tgz#a27075443bd87e5af286c1cd8a7df24e3b9f6715"
|
||||
integrity sha512-hSPcvIKarA8wad2/b6jDd/eU+OtKmi6uP+iYQbzi5TQpjsqV6b4QdRqrLk7ClSRRKBAtdTuutx+m+X+WlEd2lw==
|
||||
dependencies:
|
||||
ember-cli-babel "^7.22.1"
|
||||
ember-cli-version-checker "^5.1.1"
|
||||
ember-compatibility-helpers "^1.2.1"
|
||||
silent-error "^1.1.1"
|
||||
|
||||
ember-cached-decorator-polyfill@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/ember-cached-decorator-polyfill/-/ember-cached-decorator-polyfill-0.1.4.tgz#f1e2c65cc78d0d9c4ac0e047e643af477eb85ace"
|
||||
integrity sha512-JOK7kBCWsTVCzmCefK4nr9BACDJk0owt9oIUaVt6Q0UtQ4XeAHmoK5kQ/YtDcxQF1ZevHQFdGhsTR3JLaHNJgA==
|
||||
dependencies:
|
||||
"@glimmer/tracking" "^1.0.4"
|
||||
ember-cache-primitive-polyfill "^1.0.1"
|
||||
ember-cli-babel "^7.21.0"
|
||||
ember-cli-babel-plugin-helpers "^1.1.1"
|
||||
|
||||
ember-can@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-can/-/ember-can-4.2.0.tgz#08bfec3b2b57aad3dc6e4dc36fe9692bd1794dab"
|
||||
|
@ -8310,6 +8367,26 @@ ember-cli-htmlbars@^6.0.1:
|
|||
silent-error "^1.1.1"
|
||||
walk-sync "^2.2.0"
|
||||
|
||||
ember-cli-htmlbars@^6.1.0:
|
||||
version "6.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-6.2.0.tgz#18ec48ee1c93f9eed862a64eb24a9d14604f1dfc"
|
||||
integrity sha512-j5EGixjGau23HrqRiW/JjoAovg5UBHfjbyN7wX5ekE90knIEqUUj1z/Mo/cTx/J2VepQ2lE6HdXW9LWQ/WdMtw==
|
||||
dependencies:
|
||||
"@ember/edition-utils" "^1.2.0"
|
||||
babel-plugin-ember-template-compilation "^2.0.0"
|
||||
babel-plugin-htmlbars-inline-precompile "^5.3.0"
|
||||
broccoli-debug "^0.6.5"
|
||||
broccoli-persistent-filter "^3.1.2"
|
||||
broccoli-plugin "^4.0.3"
|
||||
ember-cli-version-checker "^5.1.2"
|
||||
fs-tree-diff "^2.0.1"
|
||||
hash-for-dep "^1.5.1"
|
||||
heimdalljs-logger "^0.1.10"
|
||||
js-string-escape "^1.0.1"
|
||||
semver "^7.3.4"
|
||||
silent-error "^1.1.1"
|
||||
walk-sync "^2.2.0"
|
||||
|
||||
ember-cli-inject-live-reload@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-2.0.2.tgz#95edb543b386239d35959e5ea9579f5382976ac7"
|
||||
|
@ -8730,6 +8807,16 @@ ember-compatibility-helpers@^1.2.5:
|
|||
fs-extra "^9.1.0"
|
||||
semver "^5.4.1"
|
||||
|
||||
ember-composable-helpers@^4.4.1:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-composable-helpers/-/ember-composable-helpers-4.5.0.tgz#94febbdf4348e64f45f7a6f993f326e32540a61e"
|
||||
integrity sha512-XjpDLyVPsLCy6kd5dIxZonOECCO6AA5sY5Hr6tYUbJg3s5ghFAiFWaNcYraYC+fL2yPJQAswwpfwGlQORUJZkw==
|
||||
dependencies:
|
||||
"@babel/core" "^7.0.0"
|
||||
broccoli-funnel "2.0.1"
|
||||
ember-cli-babel "^7.26.3"
|
||||
resolve "^1.10.0"
|
||||
|
||||
ember-composable-helpers@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-composable-helpers/-/ember-composable-helpers-5.0.0.tgz#055bab3a3e234ab2917499b1465e968c253ca885"
|
||||
|
@ -8862,6 +8949,14 @@ ember-factory-for-polyfill@^1.3.1:
|
|||
dependencies:
|
||||
ember-cli-version-checker "^2.1.0"
|
||||
|
||||
ember-focus-trap@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-focus-trap/-/ember-focus-trap-1.0.1.tgz#a99565f6ce55d500b92a0965e79e3ad04219f157"
|
||||
integrity sha512-ZUyq5ZkIuXp+ng9rCMkqBh36/V95PltL7iljStkma4+651xlAy3Z84L9WOu/uOJyVpNUxii8RJBbAySHV6c+RQ==
|
||||
dependencies:
|
||||
"@embroider/addon-shim" "^1.0.0"
|
||||
focus-trap "^6.7.1"
|
||||
|
||||
ember-get-config@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-get-config/-/ember-get-config-0.3.0.tgz#a73a1a87b48d9dde4c66a0e52ed5260b8a48cfbd"
|
||||
|
@ -9286,6 +9381,14 @@ ember-style-modifier@^0.6.0:
|
|||
ember-cli-babel "^7.21.0"
|
||||
ember-modifier "^2.1.0"
|
||||
|
||||
ember-style-modifier@^0.8.0:
|
||||
version "0.8.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-style-modifier/-/ember-style-modifier-0.8.0.tgz#ef46b3f288e63e3d850418ea8dc6f7b12edde721"
|
||||
integrity sha512-I7M+oZ+poYYOP7n521rYv7kkYZbxotL8VbtHYxLQ3tasRZYQJ21qfu3vVjydSjwyE3w7EZRgKngBoMhKSAEZnw==
|
||||
dependencies:
|
||||
ember-cli-babel "^7.26.6"
|
||||
ember-modifier "^3.2.7"
|
||||
|
||||
ember-template-lint@^2.0.1:
|
||||
version "2.21.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-template-lint/-/ember-template-lint-2.21.0.tgz#7e120abf309a8810eeed26c52377943faf15a95b"
|
||||
|
@ -10405,6 +10508,13 @@ flush-write-stream@^1.0.0:
|
|||
inherits "^2.0.3"
|
||||
readable-stream "^2.3.6"
|
||||
|
||||
focus-trap@^6.7.1:
|
||||
version "6.9.4"
|
||||
resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-6.9.4.tgz#436da1a1d935c48b97da63cd8f361c6f3aa16444"
|
||||
integrity sha512-v2NTsZe2FF59Y+sDykKY+XjqZ0cPfhq/hikWVL88BqLivnNiEffAsac6rP6H45ff9wG9LL5ToiDqrLEP9GX9mw==
|
||||
dependencies:
|
||||
tabbable "^5.3.3"
|
||||
|
||||
focusable-selectors@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/focusable-selectors/-/focusable-selectors-0.3.0.tgz#0cf0c617c0f130b3d421be6787acb95b0b4936c4"
|
||||
|
@ -15578,6 +15688,13 @@ semver@^7.3.5:
|
|||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
semver@^7.3.8:
|
||||
version "7.3.8"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
|
||||
integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
send@0.17.1:
|
||||
version "0.17.1"
|
||||
resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
|
||||
|
@ -16405,6 +16522,11 @@ sync-disk-cache@^2.0.0:
|
|||
rimraf "^3.0.0"
|
||||
username-sync "^1.0.2"
|
||||
|
||||
tabbable@^5.3.3:
|
||||
version "5.3.3"
|
||||
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-5.3.3.tgz#aac0ff88c73b22d6c3c5a50b1586310006b47fbf"
|
||||
integrity sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==
|
||||
|
||||
table@^6.0.9:
|
||||
version "6.8.0"
|
||||
resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca"
|
||||
|
|
Loading…
Reference in New Issue