ui: Sidebar navigation / redesign (#9553)
* CSS for moving from a horizontal main menu to a side/vertical one * Add <App /> Component and rearrange <HashcorpConsul /> to use it 1. HashicorpConsul now uses <App /> 2. <App /> is now translated and adds 'skip to main content' functionality 3. Adds ember-in-viewport addon in order to visibly hide main navigation items in order to take them out of focus/tabbing 4. Slight amends to the dom service while I was there
This commit is contained in:
parent
18fcce575a
commit
f38d6f7f13
|
@ -0,0 +1,3 @@
|
|||
```release-note:improvement
|
||||
ui: Move to a sidebar based main navigation
|
||||
```
|
|
@ -0,0 +1,86 @@
|
|||
{{#let (hash
|
||||
main=(concat guid '-main')
|
||||
) as |exported|}}
|
||||
|
||||
<div
|
||||
class="app"
|
||||
...attributes
|
||||
>
|
||||
<ModalLayer />
|
||||
|
||||
<div
|
||||
class="skip-links"
|
||||
{{on "click" this.focus}}
|
||||
>
|
||||
<a href={{concat '#' exported.main}}>{{t 'components.app.skip_to_content'}}</a>
|
||||
{{!--
|
||||
In order to add further skip links from within other templates use:
|
||||
<Portal @target="app-skip-links">
|
||||
<a href="#sub-content">Skip to subcontent</a>
|
||||
</Portal>
|
||||
from within your template
|
||||
--}}
|
||||
<PortalTarget
|
||||
@name="app-skip-links"
|
||||
@mutiple={{true}}
|
||||
></PortalTarget>
|
||||
</div>
|
||||
|
||||
<input
|
||||
type="checkbox"
|
||||
id={{concat guid "-main-nav-toggle"}}
|
||||
/>
|
||||
<header
|
||||
role="banner"
|
||||
>
|
||||
<label
|
||||
tabindex="0"
|
||||
for={{concat guid "-main-nav-toggle"}}
|
||||
aria-label={{t 'components.app.toggle_menu'}}
|
||||
{{on "keypress" this.keypressClick}}
|
||||
{{on "mouseup" this.unfocus}}
|
||||
></label>
|
||||
{{yield exported to="home-nav"}}
|
||||
<div
|
||||
data-test-navigation
|
||||
>
|
||||
{{!--
|
||||
The viewport tolerances here give us a 10 pixel buffer to make sure the menu
|
||||
is marked as out of the viewport, we use all sides so we don't need to change
|
||||
this should any CSS change
|
||||
--}}
|
||||
<nav
|
||||
aria-label={{t 'components.app.main'}}
|
||||
class={{if this.navInViewport 'in-viewport'}}
|
||||
{{in-viewport
|
||||
onEnter=(set this 'navInViewport' true)
|
||||
onExit=(set this 'navInViewport' false)
|
||||
viewportTolerance=(hash top=-10 bottom =-10 left=-10 right=-10)
|
||||
}}
|
||||
>
|
||||
{{yield exported to="main-nav"}}
|
||||
</nav>
|
||||
{{!--
|
||||
Whilst this has a role of navigation, it is 'complementary navigation' we
|
||||
don't want to change the navigation role here, but we do want to label it as
|
||||
'complementary' to the main content. The phrase 'complementary navigation' as
|
||||
read by a screenreader should convey the meaning we are after here.
|
||||
--}}
|
||||
<nav aria-label={{t 'components.app.complementary'}}>
|
||||
{{yield exported to="complementary-nav"}}
|
||||
</nav>
|
||||
|
||||
</div>
|
||||
</header>
|
||||
<main id={{concat guid '-main'}}>
|
||||
{{yield exported to="main"}}
|
||||
</main>
|
||||
<footer
|
||||
role="contentinfo"
|
||||
data-test-footer
|
||||
>
|
||||
{{yield exported to="content-info"}}
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
{{/let}}
|
|
@ -0,0 +1,31 @@
|
|||
import Component from '@glimmer/component';
|
||||
import { inject as service } from '@ember/service';
|
||||
import { action } from '@ember/object';
|
||||
|
||||
export default class AppComponent extends Component {
|
||||
@service('dom') dom;
|
||||
|
||||
constructor(args, owner) {
|
||||
super(...arguments);
|
||||
this.guid = this.dom.guid(this);
|
||||
}
|
||||
|
||||
@action
|
||||
keypressClick(e) {
|
||||
e.target.dispatchEvent(new MouseEvent('click'));
|
||||
}
|
||||
|
||||
@action
|
||||
focus(e) {
|
||||
const href = e.target.getAttribute('href');
|
||||
if (href.startsWith('#')) {
|
||||
e.preventDefault();
|
||||
this.dom.focus(href);
|
||||
}
|
||||
}
|
||||
|
||||
@action
|
||||
unfocus(e) {
|
||||
e.target.blur();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
.app {
|
||||
--chrome-width: 300px;
|
||||
--chrome-height: 64px;
|
||||
}
|
||||
.app .skip-links {
|
||||
@extend %skip-links;
|
||||
}
|
||||
[role='banner'] {
|
||||
@extend %main-header-horizontal;
|
||||
}
|
||||
[role="banner"] > label {
|
||||
@extend %main-nav-horizontal-toggle-button;
|
||||
}
|
||||
.hashicorp-consul > input[id] {
|
||||
@extend %main-nav-horizontal-toggle;
|
||||
}
|
||||
%main-header-horizontal > div {
|
||||
@extend %main-nav-horizontal-panel;
|
||||
}
|
||||
|
||||
%main-header-horizontal nav:first-of-type {
|
||||
@extend %main-nav-vertical, %main-nav-sidebar;
|
||||
}
|
||||
%main-header-horizontal nav:last-of-type {
|
||||
@extend %main-nav-horizontal;
|
||||
margin-left: auto;
|
||||
}
|
||||
%main-nav-sidebar,
|
||||
main {
|
||||
@extend %transition-pushover;
|
||||
}
|
||||
%main-nav-sidebar {
|
||||
transition-property: left;
|
||||
z-index: 10;
|
||||
}
|
||||
main {
|
||||
top: var(--chrome-height);
|
||||
transition-property: margin-left;
|
||||
}
|
||||
|
||||
|
||||
@media #{$--sidebar-open} {
|
||||
%main-nav-horizontal-toggle + header > div > nav:first-of-type {
|
||||
left: 0;
|
||||
}
|
||||
%main-nav-horizontal-toggle:checked + header > div > nav:first-of-type {
|
||||
left: calc(var(--chrome-width) * -1);
|
||||
}
|
||||
%main-nav-horizontal-toggle ~ main,
|
||||
%main-nav-horizontal-toggle ~ footer {
|
||||
margin-left: var(--chrome-width);
|
||||
}
|
||||
%main-nav-horizontal-toggle:checked ~ main,
|
||||
%main-nav-horizontal-toggle:checked ~ footer {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
@media #{$--lt-sidebar-open} {
|
||||
%main-nav-horizontal-toggle:checked + header > div > nav:first-of-type {
|
||||
left: 0;
|
||||
}
|
||||
%main-nav-horizontal-toggle + header > div > nav:first-of-type {
|
||||
left: calc(var(--chrome-width) * -1);
|
||||
}
|
||||
%main-nav-horizontal-toggle ~ main,
|
||||
%main-nav-horizontal-toggle ~ footer {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,256 +1,274 @@
|
|||
<ModalLayer />
|
||||
<header role="banner" data-test-navigation>
|
||||
<a data-test-main-nav-logo href={{href-to 'index'}}><svg width="28" height="27" xmlns="http://www.w3.org/2000/svg"><title>Consul</title><path d="M13.284 16.178a2.876 2.876 0 1 1-.008-5.751 2.876 2.876 0 0 1 .008 5.75zm5.596-1.547a1.333 1.333 0 1 1 0-2.667 1.333 1.333 0 0 1 0 2.667zm4.853 1.249a1.271 1.271 0 1 1 .027-.107c0 .031 0 .067-.027.107zm-.937-3.436a1.333 1.333 0 1 1 .986-1.595c.033.172.033.348 0 .52-.07.53-.465.96-.986 1.075zm4.72 3.29a1.333 1.333 0 1 1-1.076-1.538 1.333 1.333 0 0 1 1.116 1.417.342.342 0 0 0-.027.12h-.013zm-1.08-3.33a1.333 1.333 0 1 1 1.088-1.524c.014.114.014.229 0 .342a1.333 1.333 0 0 1-1.102 1.182h.014zm-.925 7.925a1.333 1.333 0 1 1 .165-.547c-.01.193-.067.38-.165.547zm-.48-12.191a1.333 1.333 0 1 1 .507-1.814c.14.237.198.514.164.787-.038.438-.289.828-.67 1.045v-.018zM13.333 26.667C5.97 26.667 0 20.697 0 13.333 0 5.97 5.97 0 13.333 0c2.929-.01 5.778.955 8.098 2.742L19.8 4.89a10.667 10.667 0 0 0-17.133 8.444 10.667 10.667 0 0 0 17.137 8.471l1.627 2.13a13.218 13.218 0 0 1-8.098 2.733z" fill="#FFF"/></svg></a>
|
||||
<input type="checkbox" name="menu" id="main-nav-toggle" onchange={{action 'change'}} />
|
||||
<label for="main-nav-toggle">
|
||||
Toggle Menu
|
||||
</label>
|
||||
<div>
|
||||
<label for="main-nav-toggle">
|
||||
<span>Close</span>
|
||||
</label>
|
||||
<nav aria-label="Main">
|
||||
{{#if dc}}
|
||||
<ul>
|
||||
{{#if (and (env 'CONSUL_NSPACES_ENABLED') (gt nspaces.length 0))}}
|
||||
<li class="nspaces" data-test-nspace-menu>
|
||||
{{#if (and (eq nspaces.length 1) (not canManageNspaces)) }}
|
||||
<span data-test-nspace-selected={{nspace.Name}}>{{nspace.Name}}</span>
|
||||
{{ else }}
|
||||
<PopoverMenu @position="left" as |components api|>
|
||||
<BlockSlot @name="trigger">
|
||||
{{nspace.Name}}
|
||||
</BlockSlot>
|
||||
{{#if (is-href 'dc.nspaces')}}
|
||||
<BlockSlot @name="header">
|
||||
<p>
|
||||
Namespaces themselves are not namespaced, so switching will not change the current view.
|
||||
</p>
|
||||
</BlockSlot>
|
||||
{{/if}}
|
||||
<BlockSlot @name="menu">
|
||||
{{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
|
||||
<MenuSeparator>
|
||||
<BlockSlot @name="label">
|
||||
Namespaces
|
||||
<DataSource
|
||||
@src="/*/*/namespaces"
|
||||
@onchange={{action (mut nspaces) value="data"}}
|
||||
@loading="lazy"
|
||||
/>
|
||||
</BlockSlot>
|
||||
</MenuSeparator>
|
||||
{{#each (reject-by 'DeletedAt' nspaces) as |item|}}
|
||||
<MenuItem
|
||||
class={{if (eq nspace.Name item.Name) 'is-active'}}
|
||||
@href={{href-mut (hash nspace=(concat '~' item.Name))}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
{{item.Name}}
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
{{/each}}
|
||||
{{#if canManageNspaces }}
|
||||
<MenuSeparator />
|
||||
<MenuItem
|
||||
data-test-main-nav-nspaces
|
||||
@href={{href-to 'dc.nspaces' dc.Name}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
Manage Namespaces
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
{{/if}}
|
||||
{{/let}}
|
||||
</BlockSlot>
|
||||
</PopoverMenu>
|
||||
{{/if}}
|
||||
</li>
|
||||
{{/if}}
|
||||
<li data-test-datacenter-menu>
|
||||
{{#if (or (not dcs) (eq dcs.length 1)) }}
|
||||
<span data-test-datacenter-selected={{dc.Name}}>{{dc.Name}}</span>
|
||||
{{ else }}
|
||||
<PopoverMenu @position="left" as |components|>
|
||||
<BlockSlot @name="trigger">
|
||||
{{dc.Name}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="menu">
|
||||
{{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
|
||||
<MenuSeparator>
|
||||
<BlockSlot @name="label">
|
||||
Datacenters
|
||||
<DataSource
|
||||
@src="/*/*/datacenters"
|
||||
@onchange={{action (mut dcs) value="data"}}
|
||||
@loading="lazy"
|
||||
/>
|
||||
</BlockSlot>
|
||||
</MenuSeparator>
|
||||
{{#each (sort-by 'Name' dcs) as |item|}}
|
||||
<MenuItem
|
||||
data-test-datacenter-picker
|
||||
class={{concat (if (eq dc.Name item.Name) 'is-active') (if item.Local ' is-local') }}
|
||||
@href={{href-mut (hash dc=item.Name)}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
<span>{{item.Name}}</span>
|
||||
{{#if item.Local}}
|
||||
<span>Local</span>
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
{{/each}}
|
||||
{{/let}}
|
||||
</BlockSlot>
|
||||
</PopoverMenu>
|
||||
<App
|
||||
class="hashicorp-consul"
|
||||
...attributes
|
||||
>
|
||||
|
||||
{{/if}}
|
||||
</li>
|
||||
<li data-test-main-nav-services class={{if (is-href 'dc.services' dc.Name) 'is-active'}}>
|
||||
<a href={{href-to 'dc.services' dc.Name}}>Services</a>
|
||||
</li>
|
||||
<li data-test-main-nav-nodes class={{if (is-href 'dc.nodes' dc.Name) 'is-active'}}>
|
||||
<a href={{href-to 'dc.nodes' dc.Name}}>Nodes</a>
|
||||
</li>
|
||||
<li data-test-main-nav-kvs class={{if (is-href 'dc.kv' dc.Name) 'is-active'}}>
|
||||
<a href={{href-to 'dc.kv' dc.Name}}>Key/Value</a>
|
||||
</li>
|
||||
<li data-test-main-nav-acls class={{if (or (is-href 'dc.acls' dc.Name) (is-href 'dc.aclsdisabled') (is-href 'dc.unauthorized')) 'is-active'}}>
|
||||
<a href={{href-to 'dc.acls.tokens' dc.Name}}>ACL</a>
|
||||
</li>
|
||||
<li data-test-main-nav-intentions class={{if (is-href 'dc.intentions' dc.Name) 'is-active'}}>
|
||||
<a href={{href-to 'dc.intentions' dc.Name}}>Intentions</a>
|
||||
</li>
|
||||
</ul>
|
||||
{{/if}}
|
||||
</nav>
|
||||
<nav>
|
||||
<ul>
|
||||
<li data-test-main-nav-help>
|
||||
<PopoverMenu @position="right" as |components|>
|
||||
<BlockSlot @name="trigger">
|
||||
Help
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="menu">
|
||||
{{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
|
||||
<MenuItem
|
||||
class="docs-link"
|
||||
@href={{env 'CONSUL_DOCS_URL'}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
Documentation
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
<MenuItem
|
||||
class="learn-link"
|
||||
@href={{concat (env 'CONSUL_DOCS_LEARN_URL') '/consul'}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
HashiCorp Learn
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
<MenuSeparator />
|
||||
<MenuItem
|
||||
class="feedback-link"
|
||||
@href={{env 'CONSUL_REPO_ISSUES_URL'}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
Provide Feedback
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
{{/let}}
|
||||
</BlockSlot>
|
||||
</PopoverMenu>
|
||||
</li>
|
||||
<li data-test-main-nav-settings class={{if (is-href 'settings') 'is-active'}}>
|
||||
<a href={{href-to 'settings'}}>Settings</a>
|
||||
</li>
|
||||
{{#if (env 'CONSUL_ACLS_ENABLED')}}
|
||||
<li data-test-main-nav-auth>
|
||||
<AuthDialog
|
||||
@dc={{dc.Name}}
|
||||
@nspace={{nspace.Name}}
|
||||
@onchange={{action "reauthorize"}} as |authDialog components|
|
||||
>
|
||||
{{#let components.AuthForm components.AuthProfile as |AuthForm AuthProfile|}}
|
||||
<BlockSlot @name="unauthorized">
|
||||
<label tabindex="0" for="login-toggle" onkeypress={{action 'keypressClick'}}>
|
||||
<span>Log in</span>
|
||||
</label>
|
||||
<ModalDialog @name="login-toggle" @onclose={{action 'close'}} @onopen={{action 'open'}} as |api|>
|
||||
<Ref @target={{this}} @name="modal" @value={{api}} />
|
||||
<BlockSlot @name="header">
|
||||
<h2>Log in to Consul</h2>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="body">
|
||||
<AuthForm as |api|>
|
||||
<Ref @target={{this}} @name="authForm" @value={{api}} />
|
||||
</AuthForm>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions" as |close|>
|
||||
<button type="button" onclick={{action close}}>
|
||||
Continue without logging in
|
||||
</button>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="authorized">
|
||||
<ModalDialog @name="login-toggle" @onclose={{action 'close'}} @onopen={{action 'open'}} as |api|>
|
||||
<Ref @target={{this}} @name="modal" @value={{api}} />
|
||||
<BlockSlot @name="header">
|
||||
<h2>Log in with a different token</h2>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="body">
|
||||
<AuthForm as |api|>
|
||||
<Ref @target={{this}} @name="authForm" @value={{api}} />
|
||||
</AuthForm>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions" as |close|>
|
||||
<button type="button" onclick={{action close}}>
|
||||
Continue without logging in
|
||||
</button>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
<PopoverMenu @position="right" as |components api|>
|
||||
<BlockSlot @name="trigger">
|
||||
Logout
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="menu">
|
||||
{{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
|
||||
{{!TODO: It might be nice to use one of our recursive components here}}
|
||||
{{#if authDialog.token.AccessorID}}
|
||||
<li role="none">
|
||||
<AuthProfile />
|
||||
</li>
|
||||
<MenuSeparator />
|
||||
<:home-nav>
|
||||
<a
|
||||
href={{href-to 'index'}}
|
||||
><svg width="28" height="27" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>Consul</title>
|
||||
<path
|
||||
d="M13.284 16.178a2.876 2.876 0 1 1-.008-5.751 2.876 2.876 0 0 1 .008 5.75zm5.596-1.547a1.333 1.333 0 1 1 0-2.667 1.333 1.333 0 0 1 0 2.667zm4.853 1.249a1.271 1.271 0 1 1 .027-.107c0 .031 0 .067-.027.107zm-.937-3.436a1.333 1.333 0 1 1 .986-1.595c.033.172.033.348 0 .52-.07.53-.465.96-.986 1.075zm4.72 3.29a1.333 1.333 0 1 1-1.076-1.538 1.333 1.333 0 0 1 1.116 1.417.342.342 0 0 0-.027.12h-.013zm-1.08-3.33a1.333 1.333 0 1 1 1.088-1.524c.014.114.014.229 0 .342a1.333 1.333 0 0 1-1.102 1.182h.014zm-.925 7.925a1.333 1.333 0 1 1 .165-.547c-.01.193-.067.38-.165.547zm-.48-12.191a1.333 1.333 0 1 1 .507-1.814c.14.237.198.514.164.787-.038.438-.289.828-.67 1.045v-.018zM13.333 26.667C5.97 26.667 0 20.697 0 13.333 0 5.97 5.97 0 13.333 0c2.929-.01 5.778.955 8.098 2.742L19.8 4.89a10.667 10.667 0 0 0-17.133 8.444 10.667 10.667 0 0 0 17.137 8.471l1.627 2.13a13.218 13.218 0 0 1-8.098 2.733z"/>
|
||||
</svg></a>
|
||||
</:home-nav>
|
||||
|
||||
<:main-nav>
|
||||
{{#if @dc}}
|
||||
<ul>
|
||||
{{#let (or this.nspaces @nspaces) as |nspaces|}}
|
||||
{{#if (and (env 'CONSUL_NSPACES_ENABLED') (gt nspaces.length 0))}}
|
||||
<li
|
||||
class="nspaces"
|
||||
data-test-nspace-menu
|
||||
>
|
||||
Namespace
|
||||
<PopoverMenu @position="left" as |components api|>
|
||||
<BlockSlot @name="trigger">
|
||||
{{@nspace.Name}}
|
||||
</BlockSlot>
|
||||
{{#if (is-href 'dc.nspaces')}}
|
||||
<BlockSlot @name="header">
|
||||
<p>
|
||||
Namespaces themselves are not namespaced, so switching will not change the current view.
|
||||
</p>
|
||||
</BlockSlot>
|
||||
{{/if}}
|
||||
<BlockSlot @name="menu">
|
||||
{{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
|
||||
<DataSource
|
||||
@src="/*/*/namespaces"
|
||||
@onchange={{action (mut this.nspaces) value="data"}}
|
||||
@loading="lazy"
|
||||
/>
|
||||
{{#each (reject-by 'DeletedAt' nspaces) as |item|}}
|
||||
<MenuItem
|
||||
class={{if (eq @nspace.Name item.Name) 'is-active'}}
|
||||
@href={{href-mut (hash nspace=(concat '~' item.Name))}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
{{item.Name}}
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
{{/each}}
|
||||
{{#if this.canManageNspaces}}
|
||||
<MenuSeparator />
|
||||
<MenuItem
|
||||
data-test-main-nav-nspaces
|
||||
@href={{href-to 'dc.nspaces' @dc.Name}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
Manage Namespaces
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
{{/if}}
|
||||
<MenuItem
|
||||
class="dangerous"
|
||||
@onclick={{action authDialog.logout}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
Logout
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
{{/let}}
|
||||
</BlockSlot>
|
||||
</PopoverMenu>
|
||||
</BlockSlot>
|
||||
{{/let}}
|
||||
</AuthDialog>
|
||||
</li>
|
||||
{{/let}}
|
||||
</BlockSlot>
|
||||
</PopoverMenu>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/let}}
|
||||
<li
|
||||
class="dcs"
|
||||
data-test-datacenter-menu
|
||||
>
|
||||
Datacenter
|
||||
<PopoverMenu @position="left" as |components|>
|
||||
<BlockSlot @name="trigger">
|
||||
{{@dc.Name}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="menu">
|
||||
{{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
|
||||
<DataSource
|
||||
@src="/*/*/datacenters"
|
||||
@onchange={{action (mut @dcs) value="data"}}
|
||||
@loading="lazy"
|
||||
/>
|
||||
{{#each (sort-by 'Name' @dcs) as |item|}}
|
||||
<MenuItem
|
||||
data-test-datacenter-picker
|
||||
class={{concat (if (eq @dc.Name item.Name) 'is-active') (if item.Local ' is-local') }}
|
||||
@href={{href-mut (hash dc=item.Name)}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
{{item.Name}}
|
||||
{{#if item.Local}}
|
||||
<span>Local</span>
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
{{/each}}
|
||||
{{/let}}
|
||||
</BlockSlot>
|
||||
</PopoverMenu>
|
||||
|
||||
</li>
|
||||
<li data-test-main-nav-services class={{if (is-href 'dc.services' @dc.Name) 'is-active'}}>
|
||||
<a href={{href-to 'dc.services' @dc.Name}}>Services</a>
|
||||
</li>
|
||||
<li data-test-main-nav-nodes class={{if (is-href 'dc.nodes' @dc.Name) 'is-active'}}>
|
||||
<a href={{href-to 'dc.nodes' @dc.Name}}>Nodes</a>
|
||||
</li>
|
||||
<li data-test-main-nav-kvs class={{if (is-href 'dc.kv' @dc.Name) 'is-active'}}>
|
||||
<a href={{href-to 'dc.kv' @dc.Name}}>Key/Value</a>
|
||||
</li>
|
||||
<li data-test-main-nav-intentions class={{if (is-href 'dc.intentions' @dc.Name) 'is-active'}}>
|
||||
<a href={{href-to 'dc.intentions' @dc.Name}}>Intentions</a>
|
||||
</li>
|
||||
<li role="separator">Access Controls</li>
|
||||
<li data-test-main-nav-tokens class={{if (is-href 'dc.acls.tokens' @dc.Name) 'is-active'}}>
|
||||
<a href={{href-to 'dc.acls.tokens' @dc.Name}}>Tokens</a>
|
||||
</li>
|
||||
<li data-test-main-nav-policies class={{if (is-href 'dc.acls.policies' @dc.Name) 'is-active'}}>
|
||||
<a href={{href-to 'dc.acls.policies' @dc.Name}}>Policies</a>
|
||||
</li>
|
||||
<li data-test-main-nav-roles class={{if (is-href 'dc.acls.roles' @dc.Name) 'is-active'}}>
|
||||
<a href={{href-to 'dc.acls.roles' @dc.Name}}>Roles</a>
|
||||
</li>
|
||||
</ul>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
<main>
|
||||
{{yield}}
|
||||
</main>
|
||||
<footer role="contentinfo" data-test-footer>
|
||||
<a data-test-footer-copyright href="{{env 'CONSUL_COPYRIGHT_URL'}}/" rel="noopener noreferrer" target="_blank">© {{env 'CONSUL_COPYRIGHT_YEAR'}} HashiCorp</a>
|
||||
<p data-test-footer-version>Consul {{env 'CONSUL_VERSION'}}</p>
|
||||
<a data-test-footer-docs href="{{env 'CONSUL_DOCS_URL'}}" rel="help noopener noreferrer" target="_blank">Documentation</a>
|
||||
{{{concat '<!-- ' (env 'CONSUL_GIT_SHA') '-->'}}}
|
||||
</footer>
|
||||
|
||||
</:main-nav>
|
||||
|
||||
<:complementary-nav>
|
||||
<ul>
|
||||
<li data-test-main-nav-help>
|
||||
<PopoverMenu @position="right" as |components|>
|
||||
<BlockSlot @name="trigger">
|
||||
Help
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="menu">
|
||||
{{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
|
||||
<MenuItem
|
||||
class="docs-link"
|
||||
@href={{env 'CONSUL_DOCS_URL'}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
Documentation
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
<MenuItem
|
||||
class="learn-link"
|
||||
@href={{concat (env 'CONSUL_DOCS_LEARN_URL') '/consul'}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
HashiCorp Learn
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
<MenuSeparator />
|
||||
<MenuItem
|
||||
class="learn-link"
|
||||
@href={{env 'CONSUL_REPO_ISSUES_URL'}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
Provide Feedback
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
{{/let}}
|
||||
</BlockSlot>
|
||||
</PopoverMenu>
|
||||
</li>
|
||||
<li data-test-main-nav-settings class={{if (is-href 'settings') 'is-active'}}>
|
||||
<a href={{href-to 'settings'}}>Settings</a>
|
||||
</li>
|
||||
{{#if (env 'CONSUL_ACLS_ENABLED')}}
|
||||
<li data-test-main-nav-auth>
|
||||
<AuthDialog
|
||||
@dc={{@dc.Name}}
|
||||
@nspace={{@nspace.Name}}
|
||||
@onchange={{this.reauthorize}} as |authDialog components|
|
||||
>
|
||||
{{#let components.AuthForm components.AuthProfile as |AuthForm AuthProfile|}}
|
||||
<BlockSlot @name="unauthorized">
|
||||
<label tabindex="0" for={{concat guid "-login-toggle"}} onkeypress={{this.keypressClick}}>
|
||||
<span>Log in</span>
|
||||
</label>
|
||||
<ModalDialog @name={{concat guid "-login-toggle"}} @onclose={{this.close}} @onopen={{this.open}} as |api|>
|
||||
<Ref @target={{this}} @name="modal" @value={{api}} />
|
||||
<BlockSlot @name="header">
|
||||
<h2>Log in to Consul</h2>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="body">
|
||||
<AuthForm as |api|>
|
||||
<Ref @target={{this}} @name="authForm" @value={{api}} />
|
||||
</AuthForm>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions" as |close|>
|
||||
<button type="button" onclick={{action close}}>
|
||||
Continue without logging in
|
||||
</button>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="authorized">
|
||||
<ModalDialog @name={{concat guid "-login-toggle"}} @onclose={{this.close}} @onopen={{this.open}} as |api|>
|
||||
<Ref @target={{this}} @name="modal" @value={{api}} />
|
||||
<BlockSlot @name="header">
|
||||
<h2>Log in with a different token</h2>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="body">
|
||||
<AuthForm as |api|>
|
||||
<Ref @target={{this}} @name="authForm" @value={{api}} />
|
||||
</AuthForm>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions" as |close|>
|
||||
<button type="button" onclick={{action close}}>
|
||||
Continue without logging in
|
||||
</button>
|
||||
</BlockSlot>
|
||||
</ModalDialog>
|
||||
<PopoverMenu @position="right" as |components api|>
|
||||
<BlockSlot @name="trigger">
|
||||
Logout
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="menu">
|
||||
{{#let components.MenuItem components.MenuSeparator as |MenuItem MenuSeparator|}}
|
||||
{{!TODO: It might be nice to use one of our recursive components here}}
|
||||
{{#if authDialog.token.AccessorID}}
|
||||
<li role="none">
|
||||
<AuthProfile />
|
||||
</li>
|
||||
<MenuSeparator />
|
||||
{{/if}}
|
||||
<MenuItem
|
||||
class="dangerous"
|
||||
@onclick={{action authDialog.logout}}
|
||||
>
|
||||
<BlockSlot @name="label">
|
||||
Logout
|
||||
</BlockSlot>
|
||||
</MenuItem>
|
||||
{{/let}}
|
||||
</BlockSlot>
|
||||
</PopoverMenu>
|
||||
</BlockSlot>
|
||||
{{/let}}
|
||||
</AuthDialog>
|
||||
</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</:complementary-nav>
|
||||
|
||||
<:main>
|
||||
{{yield}}
|
||||
</:main>
|
||||
|
||||
<:content-info>
|
||||
<Action
|
||||
@href={{concat (env 'CONSUL_COPYRIGHT_URL') '/'}}
|
||||
@external={{true}}
|
||||
>
|
||||
© {{env 'CONSUL_COPYRIGHT_YEAR'}} HashiCorp
|
||||
</Action>
|
||||
<p>
|
||||
Consul {{env 'CONSUL_VERSION'}}
|
||||
</p>
|
||||
<Action
|
||||
@href={{env 'CONSUL_DOCS_URL'}}
|
||||
@external={{true}}
|
||||
>
|
||||
Documentation
|
||||
</Action>
|
||||
{{{concat '<!-- ' (env 'CONSUL_GIT_SHA') '-->'}}}
|
||||
</:content-info>
|
||||
</App>
|
|
@ -1,48 +1,38 @@
|
|||
import Component from '@ember/component';
|
||||
import Component from '@glimmer/component';
|
||||
import { inject as service } from '@ember/service';
|
||||
import { computed } from '@ember/object';
|
||||
import { action } from '@ember/object';
|
||||
|
||||
export default Component.extend({
|
||||
dom: service('dom'),
|
||||
export default class HashiCorpConsul extends Component {
|
||||
@service('dom') dom;
|
||||
|
||||
constructor(args, owner) {
|
||||
super(...arguments);
|
||||
this.guid = this.dom.guid(this);
|
||||
}
|
||||
|
||||
didInsertElement: function() {
|
||||
this._super(...arguments);
|
||||
this.dom.root().classList.remove('template-with-vertical-menu');
|
||||
},
|
||||
// TODO: Right now this is the only place where we need permissions
|
||||
// but we are likely to need it elsewhere, so probably need a nice helper
|
||||
canManageNspaces: computed('permissions', function() {
|
||||
get canManageNspaces() {
|
||||
return (
|
||||
typeof (this.permissions || []).find(function(item) {
|
||||
typeof (this.args.permissions || []).find(function(item) {
|
||||
return item.Resource === 'operator' && item.Access === 'write' && item.Allow;
|
||||
}) !== 'undefined'
|
||||
);
|
||||
}),
|
||||
actions: {
|
||||
keypressClick: function(e) {
|
||||
e.target.dispatchEvent(new MouseEvent('click'));
|
||||
},
|
||||
open: function() {
|
||||
this.authForm.focus();
|
||||
},
|
||||
close: function() {
|
||||
this.authForm.reset();
|
||||
},
|
||||
reauthorize: function(e) {
|
||||
this.modal.close();
|
||||
this.onchange(e);
|
||||
},
|
||||
change: function(e) {
|
||||
const win = this.dom.viewport();
|
||||
const $root = this.dom.root();
|
||||
const $body = this.dom.element('body');
|
||||
if (e.target.checked) {
|
||||
$root.classList.add('template-with-vertical-menu');
|
||||
$body.style.height = $root.style.height = win.innerHeight + 'px';
|
||||
} else {
|
||||
$root.classList.remove('template-with-vertical-menu');
|
||||
$body.style.height = $root.style.height = null;
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@action
|
||||
open() {
|
||||
this.authForm.focus();
|
||||
}
|
||||
|
||||
@action
|
||||
close() {
|
||||
this.authForm.reset();
|
||||
}
|
||||
|
||||
@action
|
||||
reauthorize(e) {
|
||||
this.modal.close();
|
||||
this.args.onchange(e);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
.hashicorp-consul {
|
||||
[role="banner"] a svg {
|
||||
fill: var(--brand-600);
|
||||
}
|
||||
.docs-link a::after {
|
||||
@extend %with-docs-mask, %as-pseudo;
|
||||
}
|
||||
.learn-link a::after {
|
||||
@extend %with-learn-mask, %as-pseudo;
|
||||
}
|
||||
.feedback-link a::after {
|
||||
@extend %with-logo-github-monochrome-mask, %as-pseudo;
|
||||
}
|
||||
}
|
|
@ -4,8 +4,10 @@ export default (collection, clickable, attribute, is, authForm, emptyState) => s
|
|||
'services',
|
||||
'nodes',
|
||||
'kvs',
|
||||
'acls',
|
||||
'intentions',
|
||||
'tokens',
|
||||
'policies',
|
||||
'roles',
|
||||
'help',
|
||||
'settings',
|
||||
'auth',
|
||||
|
|
|
@ -1,9 +1,17 @@
|
|||
%main-header-horizontal {
|
||||
display: flex;
|
||||
position: fixed;
|
||||
z-index: 5;
|
||||
left: 0;
|
||||
padding: 0 25px;
|
||||
width: calc(100% - 50px);
|
||||
}
|
||||
%main-header-horizontal,
|
||||
%main-header-horizontal::before {
|
||||
height: var(--chrome-height);
|
||||
}
|
||||
%main-header-horizontal {
|
||||
align-items: center;
|
||||
height: 48px;
|
||||
}
|
||||
%main-header-horizontal::before {
|
||||
content: '';
|
||||
|
@ -11,11 +19,9 @@
|
|||
z-index: -1;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 48px;
|
||||
}
|
||||
%main-header-horizontal > a {
|
||||
display: block;
|
||||
margin-right: 12px;
|
||||
line-height: 0;
|
||||
font-size: 0;
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
%main-header-horizontal::before {
|
||||
background-color: var(--gray-000);
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
%main-nav-horizontal > ul,
|
||||
%main-nav-horizontal-panel {
|
||||
display: flex;
|
||||
}
|
||||
%main-nav-horizontal-toggle-button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
padding: 0 1rem;
|
||||
padding-left: 5px;
|
||||
}
|
||||
%main-nav-horizontal-panel {
|
||||
justify-content: space-between;
|
||||
flex-grow: 1;
|
||||
}
|
||||
%main-nav-horizontal-menu-panel {
|
||||
z-index: 400;
|
||||
/* TODO: We should probably make menu-panel default to left hand side*/
|
||||
left: 0;
|
||||
right: auto;
|
||||
top: 28px !important;
|
||||
}
|
||||
%main-nav-horizontal-action {
|
||||
display: block;
|
||||
padding: 5px 12px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
%main-nav-horizontal .popover-menu > label {
|
||||
/* Usually there is no space between buttons which is */
|
||||
/* fine as the button only highlights when its selected */
|
||||
/* therefore no two siblings are highlighted at the same time */
|
||||
/* which means you don't notice there is no space between the */
|
||||
/* buttons. popover-menu triggers on the other hand can be */
|
||||
/* at the same time as a sibling, therefore they need a little */
|
||||
/* space between it and its sibling - this is a property of */
|
||||
/* the main nav not the popover-menu */
|
||||
padding-right: 5px;
|
||||
}
|
||||
%main-nav-horizontal .popover-menu > label > * {
|
||||
/* less space as the chevron adds space */
|
||||
padding-right: 4px !important;
|
||||
}
|
||||
%main-nav-horizontal .popover-menu > label > button::after {
|
||||
top: 2px;
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
%main-nav-horizontal-action {
|
||||
border-radius: $decor-radius-200;
|
||||
cursor: pointer;
|
||||
}
|
||||
%main-nav-horizontal-action > a {
|
||||
color: inherit;
|
||||
}
|
||||
/**/
|
||||
/* reduced size hamburger menu */
|
||||
%main-nav-horizontal-toggle {
|
||||
display: none;
|
||||
}
|
||||
%main-nav-horizontal-toggle-button::before {
|
||||
@extend %with-menu-mask, %as-pseudo;
|
||||
font-size: 1.2em;
|
||||
cursor: pointer;
|
||||
}
|
||||
%main-nav-horizontal-toggle-button::before {
|
||||
background-color: var(--gray-800);
|
||||
}
|
||||
%main-nav-horizontal-action,
|
||||
%main-nav-horizontal-action-intent,
|
||||
%main-nav-horizontal-action-active {
|
||||
color: var(--gray-600);
|
||||
}
|
||||
/**/
|
|
@ -0,0 +1,57 @@
|
|||
@import './skin';
|
||||
@import './layout';
|
||||
/* things that should look like nav buttons */
|
||||
%main-nav-vertical > ul > li > a,
|
||||
%main-nav-vertical > ul > li > span {
|
||||
@extend %main-nav-vertical-action;
|
||||
}
|
||||
%main-nav-vertical > ul > li > a:active,
|
||||
%main-nav-vertical > ul > li.is-active > a {
|
||||
@extend %main-nav-vertical-action-active;
|
||||
}
|
||||
|
||||
%main-nav-vertical-action-active:hover:not(:active),
|
||||
%main-nav-vertical-action-active:focus:not(:active) {
|
||||
@extend %main-nav-vertical-action-active-intent;
|
||||
}
|
||||
|
||||
/* Whilst we want spans to look the same as actions */
|
||||
/* we don't want them to act the same */
|
||||
%main-nav-vertical-action:not(span):hover,
|
||||
%main-nav-vertical-action:not(span):focus {
|
||||
@extend %main-nav-vertical-action-intent;
|
||||
}
|
||||
|
||||
%main-nav-vertical > ul > li > label {
|
||||
@extend %main-nav-vertical-action;
|
||||
}
|
||||
%main-nav-vertical .popover-menu {
|
||||
margin-top: .5rem;
|
||||
}
|
||||
%main-nav-vertical .popover-menu .menu-panel {
|
||||
top: 37px !important;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
%main-nav-vertical .popover-menu > label > button {
|
||||
border: $decor-border-100;
|
||||
border-color: var(--gray-500);
|
||||
color: var(--gray-999);
|
||||
width: calc(100% - 20px);
|
||||
z-index: 100;
|
||||
text-align: left;
|
||||
padding: 10px;
|
||||
border-radius: $decor-radius-100;
|
||||
}
|
||||
%main-nav-vertical .popover-menu > label > button::after {
|
||||
float: right;
|
||||
}
|
||||
%main-nav-vertical .popover-menu .menu-panel {
|
||||
top: 28px;
|
||||
z-index: 100;
|
||||
}
|
||||
/* menu-panels in the main navigation are treated slightly differently */
|
||||
%main-nav-vertical label + div {
|
||||
@extend %main-nav-vertical-menu-panel;
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
%main-nav-vertical {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: var(--chrome-height, 47px);
|
||||
width: var(--chrome-width, 300px);
|
||||
height: calc(100vh - var(--chrome-height, 47px) - 35px);
|
||||
padding-top: 35px;
|
||||
overflow: auto;
|
||||
}
|
||||
// disable tabbing when not visible
|
||||
%main-nav-vertical:not(.in-viewport) {
|
||||
visibility: hidden;
|
||||
}
|
||||
%main-nav-vertical li.nspaces,
|
||||
%main-nav-vertical li.dcs {
|
||||
margin-bottom: 25px;
|
||||
padding: 0 20px;
|
||||
}
|
||||
// TODO: We no longer have the rule that menu-panel buttons only contain two
|
||||
// items, left and right aligned. We should remove this and look to use
|
||||
// align-self for anything that needs right aligning instead.
|
||||
|
||||
%main-nav-vertical [role="menuitem"] {
|
||||
justify-content: flex-start !important;
|
||||
}
|
||||
%main-nav-vertical [role="menuitem"] span {
|
||||
margin-left: .5rem;
|
||||
}
|
||||
%main-nav-vertical-action,
|
||||
%main-nav-vertical [role="separator"] {
|
||||
display: block;
|
||||
padding: 7px 25px;
|
||||
}
|
||||
%main-nav-vertical [role="separator"] {
|
||||
margin-top: .7rem;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
%main-nav-vertical-menu-panel {
|
||||
min-width: 260px;
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
%main-nav-vertical-action {
|
||||
cursor: pointer;
|
||||
border-right: $decor-border-400;
|
||||
border-color: $transparent;
|
||||
font-size: $typo-size-600;
|
||||
}
|
||||
%main-nav-vertical-action > a {
|
||||
color: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
%main-nav-vertical [role="separator"] {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
%main-nav-vertical-action-intent {
|
||||
text-decoration: underline;
|
||||
}
|
||||
%main-nav-vertical-action-active-intent {
|
||||
text-decoration: none;
|
||||
}
|
||||
%main-nav-vertical {
|
||||
background-color: var(--gray-050);
|
||||
color: var(--gray-700);
|
||||
}
|
||||
%main-nav-vertical [role="separator"] {
|
||||
color: var(--gray-600);
|
||||
}
|
||||
%main-nav-vertical-action {
|
||||
color: var(--gray-800);
|
||||
}
|
||||
%main-nav-vertical-action-intent,
|
||||
%main-nav-vertical-action-active {
|
||||
color: var(--gray-999);
|
||||
}
|
||||
%main-nav-vertical-action-active {
|
||||
background-color: var(--gray-150);
|
||||
border-color: var(--gray-999);
|
||||
}
|
||||
%main-nav-vertical .is-local span:last-of-type {
|
||||
@extend %pill-200;
|
||||
color: var(--gray-000);
|
||||
background-color: var(--gray-500);
|
||||
}
|
||||
%main-nav-vertical .nspaces .menu-panel > div {
|
||||
background-color: var(--gray-050);
|
||||
color: var(--gray-999);
|
||||
padding-left: 36px;
|
||||
}
|
||||
%main-nav-vertical .nspaces .menu-panel > div::before {
|
||||
@extend %with-info-circle-fill-mask, %as-pseudo;
|
||||
color: $blue-500;
|
||||
/* sizes the icon not the text */
|
||||
font-size: 1.1em;
|
||||
}
|
|
@ -3,32 +3,31 @@
|
|||
border-radius: $decor-radius-200;
|
||||
box-shadow: $decor-elevation-600;
|
||||
}
|
||||
%menu-panel {
|
||||
border-color: $gray-300;
|
||||
background-color: $white;
|
||||
}
|
||||
%menu-panel dd {
|
||||
color: $gray-500;
|
||||
}
|
||||
%menu-panel > ul > li {
|
||||
list-style-type: none;
|
||||
}
|
||||
%menu-panel-separator {
|
||||
text-transform: uppercase;
|
||||
color: $gray-400;
|
||||
}
|
||||
%menu-panel-header + ul,
|
||||
%menu-panel-separator:not(:first-child) {
|
||||
border-top: $decor-border-100;
|
||||
border-color: $gray-300;
|
||||
}
|
||||
|
||||
%menu-panel .docs-link a::after {
|
||||
@extend %with-docs-mask, %as-pseudo;
|
||||
}
|
||||
%menu-panel .learn-link a::after {
|
||||
@extend %with-learn-mask, %as-pseudo;
|
||||
}
|
||||
%menu-panel .is-active > *::after {
|
||||
@extend %with-check-plain-mask, %as-pseudo;
|
||||
}
|
||||
%menu-panel {
|
||||
border-color: var(--gray-300);
|
||||
background-color: var(--gray-000);
|
||||
}
|
||||
%menu-panel dd {
|
||||
color: $gray-500;
|
||||
}
|
||||
%menu-panel-separator {
|
||||
color: var(--gray-400);
|
||||
}
|
||||
%menu-panel-header + ul,
|
||||
%menu-panel-separator:not(:first-child) {
|
||||
border-color: var(--gray-300);
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
@import './skin';
|
||||
@import './layout';
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
%skip-links {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
padding: 20px;
|
||||
top: -100px;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
%skip-links:focus-within {
|
||||
top: 0px;
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
%skip-links {
|
||||
outline: 1px solid $white;
|
||||
color: $white;
|
||||
background-color: $blue-500;
|
||||
}
|
||||
%skip-links a {
|
||||
color: inherit;
|
||||
}
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
import Service from '@ember/service';
|
||||
import { getOwner } from '@ember/application';
|
||||
import Service, { inject as service } from '@ember/service';
|
||||
import { guidFor } from '@ember/object/internals';
|
||||
|
||||
// selecting
|
||||
|
@ -24,13 +23,12 @@ let $_;
|
|||
let inViewportCallbacks;
|
||||
const clickFirstAnchor = clickFirstAnchorFactory(closest);
|
||||
export default class DomService extends Service {
|
||||
doc = document;
|
||||
win = window;
|
||||
@service('-document') doc;
|
||||
|
||||
init() {
|
||||
super.init(...arguments);
|
||||
constructor(owner) {
|
||||
super(...arguments);
|
||||
inViewportCallbacks = new WeakMap();
|
||||
$_ = getComponentFactory(getOwner(this));
|
||||
$_ = getComponentFactory(owner);
|
||||
}
|
||||
|
||||
willDestroy() {
|
||||
|
@ -44,13 +42,29 @@ export default class DomService extends Service {
|
|||
}
|
||||
|
||||
viewport() {
|
||||
return this.win;
|
||||
return this.doc.defaultView;
|
||||
}
|
||||
|
||||
guid(el) {
|
||||
return guidFor(el);
|
||||
}
|
||||
|
||||
focus($el) {
|
||||
if (typeof $el === 'string') {
|
||||
$el = this.element($el);
|
||||
}
|
||||
if (typeof $el !== 'undefined') {
|
||||
let previousIndex = $el.getAttribute('tabindex');
|
||||
$el.setAttribute('tabindex', '0');
|
||||
$el.focus();
|
||||
if (previousIndex === null) {
|
||||
$el.removeAttribute('tabindex');
|
||||
} else {
|
||||
$el.setAttribute('tabindex', previousIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: should this be here? Needs a better name at least
|
||||
clickFirstAnchor = clickFirstAnchor;
|
||||
|
||||
|
|
|
@ -3,10 +3,6 @@
|
|||
/* all variables and custom queries including generic base variables */
|
||||
@import 'variables';
|
||||
|
||||
/*TODO: Move this to its own local component*/
|
||||
@import 'ember-power-select';
|
||||
/**/
|
||||
|
||||
/* all components including generic base components */
|
||||
@import 'components';
|
||||
/* cascading typography */
|
||||
|
@ -15,3 +11,5 @@
|
|||
@import 'layout';
|
||||
/* pinpoint individual overwrites for those 'just on this page' problems */
|
||||
@import 'routes';
|
||||
/* global control of themeable components */
|
||||
@import 'themes';
|
||||
|
|
|
@ -17,3 +17,7 @@
|
|||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
%transition-pushover {
|
||||
transition-timing-function: cubic-bezier(0.1, 0.1, 0.25, 0.9);
|
||||
transition-duration: 0.1s;
|
||||
}
|
||||
|
|
|
@ -61,6 +61,7 @@ $cyan-900: #003346;
|
|||
$gray-010: #fbfbfc;
|
||||
$gray-050: #f7f8fa;
|
||||
$gray-100: #ebeef2;
|
||||
$gray-150: #ebeef2;
|
||||
$gray-200: #dce0e6;
|
||||
$gray-300: #bac1cc;
|
||||
$gray-400: #8e96a3;
|
||||
|
@ -68,7 +69,9 @@ $gray-500: #6f7682;
|
|||
$gray-600: #626873;
|
||||
$gray-700: #525761;
|
||||
$gray-800: #373a42;
|
||||
$gray-850: #2c2e33;
|
||||
$gray-900: #1f2124;
|
||||
$gray-950: #15171c;
|
||||
$green-050: #ecf7ed;
|
||||
$green-100: #c6e9c9;
|
||||
$green-200: #a0dba5;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
@import './base-variables';
|
||||
@import './semantic-variables';
|
||||
@import './frame-placeholders';
|
||||
@import './theme-placeholders';
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
%theme-light {
|
||||
--gray-000: #{$white};
|
||||
--gray-050: #{$gray-050};
|
||||
--gray-100: #{$gray-100};
|
||||
--gray-150: #{$gray-150};
|
||||
--gray-200: #{$gray-200};
|
||||
--gray-300: #{$gray-300};
|
||||
--gray-400: #{$gray-400};
|
||||
--gray-500: #{$gray-500};
|
||||
--gray-600: #{$gray-600};
|
||||
--gray-700: #{$gray-700};
|
||||
--gray-800: #{$gray-800};
|
||||
--gray-850: #{$gray-850};
|
||||
--gray-900: #{$gray-900};
|
||||
--gray-950: #{$gray-950};
|
||||
--gray-999: #{$black};
|
||||
|
||||
--blue-500: #{$blue-500};
|
||||
|
||||
--transparent: #{$transparent};
|
||||
}
|
||||
%theme-high-contrast {
|
||||
--transparent: #{$transparent};
|
||||
}
|
||||
%theme-low-contrast {
|
||||
--transparent: #{$transparent};
|
||||
}
|
||||
%theme-light-low-contrast {
|
||||
--transparent: #{$transparent};
|
||||
}
|
||||
%theme-dark-low-contrast {
|
||||
--transparent: #{$transparent};
|
||||
}
|
||||
%theme-light-high-contrast {
|
||||
--gray-000: #{$white};
|
||||
--gray-050: #{$white};
|
||||
--gray-100: #{$white};
|
||||
--gray-150: #{$white};
|
||||
--gray-200: #{$white};
|
||||
--gray-300: #{$white};
|
||||
--gray-400: #{$white};
|
||||
--gray-500: #{$gray-500};
|
||||
--gray-600: #{$black};
|
||||
--gray-700: #{$black};
|
||||
--gray-800: #{$black};
|
||||
--gray-850: #{$black};
|
||||
--gray-900: #{$black};
|
||||
--gray-950: #{$black};
|
||||
--gray-999: #{$black};
|
||||
|
||||
--transparent: #{$transparent};
|
||||
}
|
||||
%theme-dark-high-contrast {
|
||||
--gray-000: #{$black};
|
||||
--gray-050: #{$black};
|
||||
--gray-100: #{$black};
|
||||
--gray-150: #{$black};
|
||||
--gray-200: #{$black};
|
||||
--gray-300: #{$black};
|
||||
--gray-400: #{$black};
|
||||
--gray-500: #{$gray-500};
|
||||
--gray-600: #{$white};
|
||||
--gray-700: #{$white};
|
||||
--gray-800: #{$white};
|
||||
--gray-850: #{$white};
|
||||
--gray-900: #{$white};
|
||||
--gray-950: #{$white};
|
||||
--gray-999: #{$white};
|
||||
|
||||
--transparent: #{$transparent};
|
||||
}
|
||||
%theme-dark {
|
||||
--gray-000: #{$black};
|
||||
--gray-050: #{$gray-950};
|
||||
--gray-100: #{$gray-900};
|
||||
--gray-150: #{$gray-850};
|
||||
--gray-200: #{$gray-800};
|
||||
--gray-300: #{$gray-700};
|
||||
--gray-400: #{$gray-600};
|
||||
--gray-500: #{$gray-500};
|
||||
--gray-600: #{$gray-400};
|
||||
--gray-700: #{$gray-300};
|
||||
--gray-800: #{$gray-200};
|
||||
--gray-850: #{$gray-150};
|
||||
--gray-900: #{$gray-100};
|
||||
--gray-950: #{$gray-050};
|
||||
--gray-999: #{$white};
|
||||
|
||||
--transparent: #{$transparent};
|
||||
}
|
|
@ -94,8 +94,8 @@
|
|||
}
|
||||
|
||||
%internal-button {
|
||||
color: $gray-900;
|
||||
background-color: $white;
|
||||
color: var(--gray-900);
|
||||
background-color: var(--gray-000);
|
||||
}
|
||||
%internal-button-dangerous {
|
||||
@extend %frame-red-300;
|
||||
|
@ -104,7 +104,7 @@
|
|||
@extend %frame-red-700;
|
||||
}
|
||||
%internal-button-intent {
|
||||
background-color: $gray-050;
|
||||
background-color: var(--gray-050);
|
||||
}
|
||||
%internal-button:focus,
|
||||
%internal-button:hover {
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
@import './display-toggle/index';
|
||||
@import './form-elements/index';
|
||||
@import './inline-alert/index';
|
||||
@import './menu-panel/index';
|
||||
@import './pill/index';
|
||||
@import './popover-menu/index';
|
||||
@import './radio-group/index';
|
||||
|
|
|
@ -7,6 +7,7 @@ $decor-border-000: none;
|
|||
$decor-border-100: 1px solid;
|
||||
$decor-border-200: 2px solid;
|
||||
$decor-border-300: 3px solid;
|
||||
$decor-border-400: 4px solid;
|
||||
$decor-elevation-100: 0 3px 2px rgba(0, 0, 0, 0.06);
|
||||
$decor-elevation-200: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
$decor-elevation-300: 0 5px 1px -2px rgba($black, 0.12);
|
||||
|
|
|
@ -9,7 +9,7 @@ strong {
|
|||
}
|
||||
/* %typo-body */
|
||||
body {
|
||||
color: $gray-900;
|
||||
color: var(--gray-900);
|
||||
}
|
||||
/* TODO: Consider changing this to 'p a, dd a, td a' etc etc*/
|
||||
a {
|
||||
|
|
|
@ -38,13 +38,23 @@
|
|||
|
||||
@import './components/brand-loader';
|
||||
@import './components/loader';
|
||||
@import './components/main-header-horizontal';
|
||||
@import './components/main-nav-horizontal';
|
||||
@import './components/footer';
|
||||
|
||||
/**/
|
||||
|
||||
@import './components/app-view';
|
||||
@import 'consul-ui/components/skip-links';
|
||||
@import 'consul-ui/components/app';
|
||||
/* app chrome */
|
||||
@import 'consul-ui/components/main-header-horizontal';
|
||||
@import 'consul-ui/components/main-nav-horizontal';
|
||||
@import 'consul-ui/components/main-nav-vertical';
|
||||
@import 'consul-ui/components/hashicorp-consul';
|
||||
/**/
|
||||
@import 'ember-power-select';
|
||||
/**/
|
||||
@import 'consul-ui/components/menu-panel';
|
||||
|
||||
@import 'consul-ui/components/overlay';
|
||||
@import 'consul-ui/components/tooltip';
|
||||
@import 'consul-ui/components/notice';
|
||||
|
|
|
@ -22,17 +22,17 @@
|
|||
#toolbar-toggle {
|
||||
display: none;
|
||||
}
|
||||
@media #{$--horizontal-selects} {
|
||||
[for='toolbar-toggle'] {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media #{$--lt-spacious-page-header} {
|
||||
%app-view-actions {
|
||||
margin-top: 9px;
|
||||
}
|
||||
}
|
||||
// reduced search magnifying icon layout
|
||||
@media #{$--horizontal-selects} {
|
||||
[for='toolbar-toggle'] {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media #{$--lt-horizontal-selects} {
|
||||
%app-view-header h1 {
|
||||
display: inline-block;
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
@import './main-header-horizontal/index';
|
||||
[role='banner'] {
|
||||
@extend %main-header-horizontal;
|
||||
}
|
||||
%main-header-horizontal::before {
|
||||
background-color: var(--swatch-brand-600, $black);
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
@import './main-nav-horizontal/index';
|
||||
|
||||
%main-nav-horizontal-action,
|
||||
%main-nav-horizontal-toggle-button {
|
||||
color: var(--typo-brand-050, $black);
|
||||
}
|
||||
|
||||
%main-nav-horizontal .docs-link a::after {
|
||||
@extend %with-docs-icon, %as-pseudo;
|
||||
}
|
||||
%main-nav-horizontal .learn-link a::after {
|
||||
@extend %with-learn-icon, %as-pseudo;
|
||||
}
|
||||
%main-nav-horizontal .feedback-link a::after {
|
||||
@extend %with-logo-github-monochrome-mask, %as-pseudo;
|
||||
}
|
||||
|
||||
%main-header-horizontal nav:first-of-type {
|
||||
@extend %primary-nav;
|
||||
}
|
||||
%main-header-horizontal nav:last-of-type {
|
||||
@extend %secondary-nav;
|
||||
}
|
||||
%primary-nav,
|
||||
%secondary-nav {
|
||||
@extend %main-nav-horizontal;
|
||||
}
|
||||
|
||||
%primary-nav .nspaces .menu-panel > div {
|
||||
background-color: $gray-050;
|
||||
padding-left: 36px;
|
||||
}
|
||||
%primary-nav .nspaces .menu-panel > div::before {
|
||||
@extend %with-info-circle-fill-mask, %as-pseudo;
|
||||
color: $blue-500;
|
||||
/* sizes the icon not the text */
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
%main-header-horizontal > div {
|
||||
@extend %main-nav-horizontal-panel;
|
||||
}
|
||||
%main-header-horizontal label[for='main-nav-toggle'] {
|
||||
@extend %main-nav-horizontal-toggle-button;
|
||||
}
|
||||
%main-header-horizontal > input {
|
||||
@extend %main-nav-horizontal-toggle;
|
||||
}
|
||||
@media #{$--lt-horizontal-nav} {
|
||||
%main-nav-horizontal-panel {
|
||||
background-color: var(--swatch-brand-600, $black);
|
||||
}
|
||||
%primary-nav {
|
||||
margin-top: 65px;
|
||||
}
|
||||
%secondary-nav li:first-child {
|
||||
display: none;
|
||||
}
|
||||
%primary-nav > ul > li.is-active > a {
|
||||
font-weight: $typo-weight-bold;
|
||||
}
|
||||
}
|
||||
@media #{$--horizontal-nav} {
|
||||
%main-nav-horizontal-action-active {
|
||||
background-color: var(--swatch-brand-800, $black);
|
||||
}
|
||||
}
|
|
@ -1,116 +0,0 @@
|
|||
%main-nav-horizontal .popover-menu > label > * {
|
||||
/* less space as the chevron adds space */
|
||||
padding-right: 4px !important;
|
||||
}
|
||||
%main-nav-horizontal-action {
|
||||
display: block;
|
||||
padding: 5px 12px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
%main-nav-horizontal-menu-panel {
|
||||
z-index: 400;
|
||||
/* TODO: We should probably make menu-panel default to left hand side*/
|
||||
left: 0;
|
||||
right: auto;
|
||||
top: 28px !important;
|
||||
}
|
||||
%main-nav-horizontal .popover-menu > label > button::after {
|
||||
top: 2px;
|
||||
}
|
||||
%main-nav-horizontal .is-local [role='menuitem'] {
|
||||
display: inline-block;
|
||||
}
|
||||
%main-nav-horizontal .is-local [role='menuitem']:after {
|
||||
display: inline-flex !important;
|
||||
}
|
||||
@media #{$--horizontal-nav} {
|
||||
%main-nav-horizontal > ul,
|
||||
%main-nav-horizontal-panel {
|
||||
display: flex;
|
||||
}
|
||||
%main-nav-horizontal-panel {
|
||||
justify-content: space-between;
|
||||
flex-grow: 1;
|
||||
}
|
||||
%main-nav-horizontal-menu-panel {
|
||||
min-width: 266px;
|
||||
}
|
||||
%main-nav-horizontal-toggle-button {
|
||||
display: none;
|
||||
}
|
||||
%main-nav-horizontal .popover-menu > label {
|
||||
/* Usually there is no space between buttons which is */
|
||||
/* fine as the button only highlights when its selected */
|
||||
/* therefore no two siblings are highlighted at the same time */
|
||||
/* which means you don't notice there is no space between the */
|
||||
/* buttons. popover-menu triggers on the other hand can be */
|
||||
/* at the same time as a sibling, therefore they need a little */
|
||||
/* space between it and its sibling - this is a poroperty of */
|
||||
/* the main nav not the popover-menu */
|
||||
padding-right: 5px;
|
||||
}
|
||||
}
|
||||
@media #{$--lt-horizontal-nav} {
|
||||
%main-nav-horizontal-action {
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
text-align: right;
|
||||
}
|
||||
%main-nav-horizontal .popover-menu > label {
|
||||
display: flex;
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
%main-nav-horizontal-menu-panel {
|
||||
width: 180px;
|
||||
top: 38px !important;
|
||||
}
|
||||
|
||||
%main-nav-horizontal-toggle:checked ~ div {
|
||||
width: 250px;
|
||||
right: 0;
|
||||
padding: 15px 35px;
|
||||
padding-top: 0;
|
||||
}
|
||||
%main-nav-horizontal-toggle:checked + label {
|
||||
width: 100vw;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
%main-nav-horizontal-toggle-button {
|
||||
position: absolute;
|
||||
z-index: 200;
|
||||
right: 0;
|
||||
width: 100px;
|
||||
height: 48px;
|
||||
}
|
||||
%main-nav-horizontal-toggle-button::before {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 2px;
|
||||
margin-top: -0.6em;
|
||||
}
|
||||
%main-nav-horizontal-panel {
|
||||
box-sizing: border-box;
|
||||
overflow: auto;
|
||||
position: absolute;
|
||||
z-index: 300;
|
||||
top: 0;
|
||||
right: -100%;
|
||||
width: 0;
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
padding-top: 15px;
|
||||
}
|
||||
%main-nav-horizontal-panel {
|
||||
transition-timing-function: cubic-bezier(0.1, 0.1, 0.25, 0.9);
|
||||
transition-duration: 0.2s;
|
||||
transition-property: width right;
|
||||
}
|
||||
%main-nav-horizontal-panel label span {
|
||||
visibility: visible !important;
|
||||
display: inline-block;
|
||||
padding-right: 47px;
|
||||
padding-top: 13px;
|
||||
}
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
/* nav buttons */
|
||||
%main-nav-horizontal-action {
|
||||
border-radius: $decor-radius-200;
|
||||
cursor: pointer;
|
||||
}
|
||||
%main-nav-horizontal-action,
|
||||
%main-nav-horizontal-action-intent,
|
||||
%main-nav-horizontal-action-active {
|
||||
color: $white;
|
||||
}
|
||||
%main-nav-horizontal-action > a {
|
||||
color: inherit;
|
||||
}
|
||||
/**/
|
||||
/* reduced size hamburger menu */
|
||||
%main-nav-horizontal-toggle {
|
||||
display: none;
|
||||
}
|
||||
%main-nav-horizontal-toggle-button {
|
||||
text-indent: -9000px;
|
||||
}
|
||||
%main-nav-horizontal-toggle-button::before {
|
||||
@extend %with-more-vertical-mask, %as-pseudo;
|
||||
background-color: $white;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
%main-nav-horizontal-toggle-button span {
|
||||
visibility: hidden;
|
||||
}
|
||||
@media #{$--lt-horizontal-nav} {
|
||||
%main-nav-horizontal-toggle-button {
|
||||
cursor: pointer;
|
||||
}
|
||||
%main-nav-horizontal-toggle:checked + label {
|
||||
background-color: rgba($black, 0.4);
|
||||
}
|
||||
}
|
||||
/**/
|
||||
/* nav dropdown */
|
||||
%main-nav-horizontal .is-local span:nth-child(2) {
|
||||
@extend %pill-200, %frame-gray-600;
|
||||
}
|
||||
/**/
|
|
@ -49,10 +49,6 @@ main,
|
|||
%modal-window {
|
||||
@extend %main-content;
|
||||
}
|
||||
html.template-with-vertical-menu,
|
||||
html.template-with-vertical-menu body {
|
||||
overflow: hidden;
|
||||
}
|
||||
html:not(.has-nspaces) [class*='nspace-'] {
|
||||
display: none;
|
||||
}
|
||||
|
|
|
@ -25,14 +25,10 @@ $ideal-content-padding: 33px;
|
|||
max-width: $ideal-content-width;
|
||||
}
|
||||
%viewport-container {
|
||||
padding-left: calc(#{$ideal-viewport-padding-num}% / (#{$ideal-viewport-width-num} / 100));
|
||||
padding-right: calc(#{$ideal-viewport-padding-num}% / (#{$ideal-viewport-width-num} / 100));
|
||||
padding-left: calc(#{$ideal-viewport-padding-num}vw / (#{$ideal-viewport-width-num} / 100));
|
||||
padding-left: 25px;
|
||||
padding-right: calc(#{$ideal-viewport-padding-num}vw / (#{$ideal-viewport-width-num} / 100));
|
||||
}
|
||||
%content-container {
|
||||
padding-left: calc(33% / (#{$ideal-viewport-width-num} / 100));
|
||||
padding-right: calc(33% / (#{$ideal-viewport-width-num} / 100));
|
||||
padding-left: calc(24vw / (#{$ideal-viewport-width-num} / 100));
|
||||
padding-right: calc(24vw / (#{$ideal-viewport-width-num} / 100));
|
||||
}
|
||||
|
|
|
@ -8,13 +8,6 @@ html[data-route^='dc.acls.index'] .filter-bar {
|
|||
html[data-route^='dc.acls.index'] .filter-bar [role='radiogroup'] {
|
||||
@extend %expanded-single-select;
|
||||
}
|
||||
@media #{$--horizontal-tabs} {
|
||||
html[data-route^='dc.acls.policies.index'] main header .actions,
|
||||
html[data-route^='dc.acls.policies.index'] main header .actions {
|
||||
position: relative;
|
||||
top: 42px;
|
||||
}
|
||||
}
|
||||
|
||||
@media #{$--lt-wide-form} {
|
||||
html[data-route^='dc.acls.create'] main header .actions,
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
:root {
|
||||
@extend %theme-light;
|
||||
}
|
||||
%main-header-horizontal,
|
||||
%main-nav-vertical,
|
||||
%main-nav-horizontal {
|
||||
@extend %theme-dark;
|
||||
}
|
||||
%main-nav-horizontal .menu-panel {
|
||||
@extend %theme-light;
|
||||
}
|
||||
%main-nav-vertical .nspaces .menu-panel > div {
|
||||
@extend %theme-light;
|
||||
}
|
||||
%main-nav-vertical .menu-panel a:hover,
|
||||
%main-nav-vertical .menu-panel a:focus {
|
||||
background-color: var(--blue-500);
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
$ideal-width: 1260px;
|
||||
|
||||
$--horizontal-filters: '(min-width: 1080px)';
|
||||
$--lt-horizontal-filters: '(max-width: 1079px)';
|
||||
$--horizontal-filters: '(min-width: 1300px)';
|
||||
$--lt-horizontal-filters: '(max-width: 1379px)';
|
||||
|
||||
$--horizontal-selects: '(min-width: 696px)';
|
||||
$--lt-horizontal-selects: '(max-width: 695px)';
|
||||
$--horizontal-selects: '(min-width: 996px)';
|
||||
$--lt-horizontal-selects: '(max-width: 995px)';
|
||||
|
||||
$--horizontal-nav: '(min-width: 850px)';
|
||||
$--lt-horizontal-nav: '(max-width: 849px)';
|
||||
|
@ -35,8 +35,5 @@ $--lt-wide-form: '(max-width: 420px)';
|
|||
$--wide-table: '(min-width: 421px)';
|
||||
$--lt-wide-table: '(max-width: 420px)';
|
||||
|
||||
$--medium-table: '(min-width: 850px)';
|
||||
$--lt-medium-table: '(max-width: 849px)';
|
||||
/* */
|
||||
$--fixed-grid: '(min-width: 1260px)';
|
||||
$--lt-fixed-grid: '(max-width: 1259px)';
|
||||
$--sidebar-open: '(min-width: 900px)';
|
||||
$--lt-sidebar-open: '(max-width: 899px)';
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<TabNav @items={{array (hash label="Tokens" href=(href-to "dc.acls.tokens") selected=(is-href "dc.acls.tokens")) (hash label="Roles" href=(href-to "dc.acls.roles") selected=(is-href "dc.acls.roles")) (hash label="Policies" href=(href-to "dc.acls.policies") selected=(is-href "dc.acls.policies"))}} />
|
|
@ -46,14 +46,9 @@ as |sort filters items|}}
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="header">
|
||||
<h1>
|
||||
Access Controls
|
||||
Policies
|
||||
</h1>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="nav">
|
||||
{{#if isAuthorized }}
|
||||
{{partial 'dc/acls/nav'}}
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<a data-test-create href="{{href-to 'dc.acls.policies.create'}}" class="type-create">Create</a>
|
||||
</BlockSlot>
|
||||
|
|
|
@ -40,14 +40,9 @@ as |sort filters items|}}
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="header">
|
||||
<h1>
|
||||
Access Controls
|
||||
Roles
|
||||
</h1>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="nav">
|
||||
{{#if isAuthorized }}
|
||||
{{partial 'dc/acls/nav'}}
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<a data-test-create href="{{href-to 'dc.acls.roles.create'}}" class="type-create">Create</a>
|
||||
</BlockSlot>
|
||||
|
|
|
@ -44,14 +44,9 @@ as |sort filters items|}}
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="header">
|
||||
<h1>
|
||||
Access Controls
|
||||
Tokens
|
||||
</h1>
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="nav">
|
||||
{{#if isAuthorized }}
|
||||
{{partial 'dc/acls/nav'}}
|
||||
{{/if}}
|
||||
</BlockSlot>
|
||||
<BlockSlot @name="actions">
|
||||
<a data-test-create href="{{href-to 'dc.acls.tokens.create'}}" class="type-create">Create</a>
|
||||
</BlockSlot>
|
||||
|
|
|
@ -114,6 +114,7 @@
|
|||
"ember-exam": "^4.0.0",
|
||||
"ember-export-application-global": "^2.0.1",
|
||||
"ember-href-to": "^3.1.0",
|
||||
"ember-in-viewport": "^3.8.1",
|
||||
"ember-inflector": "^3.0.0",
|
||||
"ember-intl": "^5.5.1",
|
||||
"ember-load-initializers": "^2.1.1",
|
||||
|
|
|
@ -25,7 +25,7 @@ Feature: page-navigation
|
|||
| Link | URL | Endpoint |
|
||||
| nodes | /dc-1/nodes | /v1/internal/ui/nodes?dc=dc-1&ns=@namespace |
|
||||
| kvs | /dc-1/kv | /v1/kv/?keys&dc=dc-1&separator=%2F&ns=@namespace |
|
||||
| acls | /dc-1/acls/tokens | /v1/acl/tokens?dc=dc-1&ns=@namespace |
|
||||
| tokens | /dc-1/acls/tokens | /v1/acl/tokens?dc=dc-1&ns=@namespace |
|
||||
# | settings | /settings | /v1/catalog/datacenters |
|
||||
-------------------------------------------------------------------------------------
|
||||
Scenario: Clicking a [Item] in the [Model] listing and back again
|
||||
|
|
|
@ -57,6 +57,14 @@ common:
|
|||
desc: Healthy to Unhealthy
|
||||
|
||||
components:
|
||||
app:
|
||||
skip_to_content: Skip to Content
|
||||
toggle_menu: Toggle Menu
|
||||
# landmark aria-labels - only screen read, so potentially included with
|
||||
# screenreader landmarks/phrases i.e. Main Navigation for nav elements and
|
||||
# therefore potentially do not need the word 'navigation' adding to them
|
||||
main: Main
|
||||
complementary: Complementary
|
||||
consul:
|
||||
service:
|
||||
search-bar:
|
||||
|
|
556
ui/yarn.lock
556
ui/yarn.lock
|
@ -16,6 +16,13 @@
|
|||
dependencies:
|
||||
"@babel/highlight" "^7.10.4"
|
||||
|
||||
"@babel/code-frame@^7.12.11":
|
||||
version "7.12.11"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
|
||||
integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
|
||||
dependencies:
|
||||
"@babel/highlight" "^7.10.4"
|
||||
|
||||
"@babel/compat-data@^7.12.1":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.1.tgz#d7386a689aa0ddf06255005b4b991988021101a0"
|
||||
|
@ -65,6 +72,27 @@
|
|||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/core@^7.12.3":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
|
||||
integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.4"
|
||||
"@babel/generator" "^7.12.10"
|
||||
"@babel/helper-module-transforms" "^7.12.1"
|
||||
"@babel/helpers" "^7.12.5"
|
||||
"@babel/parser" "^7.12.10"
|
||||
"@babel/template" "^7.12.7"
|
||||
"@babel/traverse" "^7.12.10"
|
||||
"@babel/types" "^7.12.10"
|
||||
convert-source-map "^1.7.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.1"
|
||||
json5 "^2.1.2"
|
||||
lodash "^4.17.19"
|
||||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/generator@^7.11.6", "@babel/generator@^7.12.1", "@babel/generator@^7.9.6":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468"
|
||||
|
@ -74,6 +102,15 @@
|
|||
jsesc "^2.5.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/generator@^7.12.10", "@babel/generator@^7.12.11":
|
||||
version "7.12.11"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af"
|
||||
integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.11"
|
||||
jsesc "^2.5.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/helper-annotate-as-pure@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3"
|
||||
|
@ -169,6 +206,15 @@
|
|||
"@babel/template" "^7.10.4"
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/helper-function-name@^7.12.11":
|
||||
version "7.12.11"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42"
|
||||
integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==
|
||||
dependencies:
|
||||
"@babel/helper-get-function-arity" "^7.12.10"
|
||||
"@babel/template" "^7.12.7"
|
||||
"@babel/types" "^7.12.11"
|
||||
|
||||
"@babel/helper-get-function-arity@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2"
|
||||
|
@ -176,6 +222,13 @@
|
|||
dependencies:
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/helper-get-function-arity@^7.12.10":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
|
||||
integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-hoist-variables@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e"
|
||||
|
@ -197,6 +250,13 @@
|
|||
dependencies:
|
||||
"@babel/types" "^7.12.1"
|
||||
|
||||
"@babel/helper-module-imports@^7.12.5":
|
||||
version "7.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb"
|
||||
integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.5"
|
||||
|
||||
"@babel/helper-module-transforms@^7.11.0", "@babel/helper-module-transforms@^7.12.1":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c"
|
||||
|
@ -271,11 +331,23 @@
|
|||
dependencies:
|
||||
"@babel/types" "^7.11.0"
|
||||
|
||||
"@babel/helper-split-export-declaration@^7.12.11":
|
||||
version "7.12.11"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a"
|
||||
integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.11"
|
||||
|
||||
"@babel/helper-validator-identifier@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
|
||||
integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==
|
||||
|
||||
"@babel/helper-validator-identifier@^7.12.11":
|
||||
version "7.12.11"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
|
||||
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
|
||||
|
||||
"@babel/helper-validator-option@^7.12.1":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9"
|
||||
|
@ -300,6 +372,15 @@
|
|||
"@babel/traverse" "^7.12.1"
|
||||
"@babel/types" "^7.12.1"
|
||||
|
||||
"@babel/helpers@^7.12.5":
|
||||
version "7.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e"
|
||||
integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==
|
||||
dependencies:
|
||||
"@babel/template" "^7.10.4"
|
||||
"@babel/traverse" "^7.12.5"
|
||||
"@babel/types" "^7.12.5"
|
||||
|
||||
"@babel/highlight@^7.10.4", "@babel/highlight@^7.8.3":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
|
||||
|
@ -314,6 +395,11 @@
|
|||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd"
|
||||
integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==
|
||||
|
||||
"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7":
|
||||
version "7.12.11"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
|
||||
integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==
|
||||
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.12.1":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e"
|
||||
|
@ -829,6 +915,15 @@
|
|||
resolve "^1.8.1"
|
||||
semver "^5.5.1"
|
||||
|
||||
"@babel/plugin-transform-runtime@^7.12.1":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz#af0fded4e846c4b37078e8e5d06deac6cd848562"
|
||||
integrity sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.12.5"
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
semver "^5.5.1"
|
||||
|
||||
"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.8.3":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3"
|
||||
|
@ -1046,6 +1141,13 @@
|
|||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.12.5":
|
||||
version "7.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
|
||||
integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/template@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
|
||||
|
@ -1055,6 +1157,15 @@
|
|||
"@babel/parser" "^7.10.4"
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/template@^7.12.7":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc"
|
||||
integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.4"
|
||||
"@babel/parser" "^7.12.7"
|
||||
"@babel/types" "^7.12.7"
|
||||
|
||||
"@babel/traverse@^7.1.6", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5", "@babel/traverse@^7.12.1", "@babel/traverse@^7.2.4", "@babel/traverse@^7.3.4", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e"
|
||||
|
@ -1070,6 +1181,21 @@
|
|||
globals "^11.1.0"
|
||||
lodash "^4.17.19"
|
||||
|
||||
"@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5":
|
||||
version "7.12.12"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376"
|
||||
integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.12.11"
|
||||
"@babel/generator" "^7.12.11"
|
||||
"@babel/helper-function-name" "^7.12.11"
|
||||
"@babel/helper-split-export-declaration" "^7.12.11"
|
||||
"@babel/parser" "^7.12.11"
|
||||
"@babel/types" "^7.12.12"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
lodash "^4.17.19"
|
||||
|
||||
"@babel/types@^7.1.6", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.12.1", "@babel/types@^7.3.2", "@babel/types@^7.3.4", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.7.2":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae"
|
||||
|
@ -1079,6 +1205,15 @@
|
|||
lodash "^4.17.19"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7":
|
||||
version "7.12.12"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299"
|
||||
integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.12.11"
|
||||
lodash "^4.17.19"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@base2/pretty-print-object@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz#860ce718b0b73f4009e153541faff2cb6b85d047"
|
||||
|
@ -1282,6 +1417,45 @@
|
|||
ember-cli-htmlbars-inline-precompile "^2.1.0"
|
||||
ember-test-waiters "^1.1.1"
|
||||
|
||||
"@embroider/core@0.33.0", "@embroider/core@^0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@embroider/core/-/core-0.33.0.tgz#0fb1752d6e34ea45368e65c42e13220a57ffae76"
|
||||
integrity sha512-Kd3W4vBJCSwskVislwldhuoe1RtdA04lRr2r2ccnPI4msCXxLn292WBaS7/x0LdEu2EMO5ffRDeQva2/xoS4Yg==
|
||||
dependencies:
|
||||
"@babel/core" "^7.12.3"
|
||||
"@babel/parser" "^7.12.3"
|
||||
"@babel/plugin-syntax-dynamic-import" "^7.8.3"
|
||||
"@babel/plugin-transform-runtime" "^7.12.1"
|
||||
"@babel/runtime" "^7.12.5"
|
||||
"@babel/traverse" "^7.12.1"
|
||||
"@babel/types" "^7.12.1"
|
||||
"@embroider/macros" "0.33.0"
|
||||
assert-never "^1.1.0"
|
||||
babel-plugin-syntax-dynamic-import "^6.18.0"
|
||||
broccoli-node-api "^1.7.0"
|
||||
broccoli-persistent-filter "^3.1.2"
|
||||
broccoli-plugin "^4.0.1"
|
||||
broccoli-source "^3.0.0"
|
||||
debug "^3.1.0"
|
||||
escape-string-regexp "^4.0.0"
|
||||
fast-sourcemap-concat "^1.4.0"
|
||||
filesize "^4.1.2"
|
||||
fs-extra "^7.0.1"
|
||||
fs-tree-diff "^2.0.0"
|
||||
handlebars "^4.4.2"
|
||||
js-string-escape "^1.0.1"
|
||||
jsdom "^16.4.0"
|
||||
json-stable-stringify "^1.0.1"
|
||||
lodash "^4.17.10"
|
||||
pkg-up "^2.0.0"
|
||||
resolve "^1.8.1"
|
||||
resolve-package-path "^1.2.2"
|
||||
semver "^7.3.2"
|
||||
strip-bom "^3.0.0"
|
||||
typescript-memoize "^1.0.0-alpha.3"
|
||||
walk-sync "^1.1.3"
|
||||
wrap-legacy-hbs-plugin-if-needed "^1.0.1"
|
||||
|
||||
"@embroider/core@0.4.3", "@embroider/core@^0.4.3":
|
||||
version "0.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@embroider/core/-/core-0.4.3.tgz#117973b9761d68aee14d820bbaefeb05d5984ba8"
|
||||
|
@ -1316,6 +1490,21 @@
|
|||
typescript-memoize "^1.0.0-alpha.3"
|
||||
walk-sync "^1.1.3"
|
||||
|
||||
"@embroider/macros@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-0.33.0.tgz#d5826ea7565bb69b57ba81ed528315fe77acbf9d"
|
||||
integrity sha512-nl/1zRn+Wd3MO8Bb+YPqHmFl/2vwQLTsEB6Zt+K9bWXsM/kA+dPCeeCReLN6PbkMP16xxqtNSIrQ8Y49hnWjpg==
|
||||
dependencies:
|
||||
"@babel/core" "^7.12.3"
|
||||
"@babel/traverse" "^7.12.1"
|
||||
"@babel/types" "^7.12.1"
|
||||
"@embroider/core" "0.33.0"
|
||||
assert-never "^1.1.0"
|
||||
ember-cli-babel "^7.23.0"
|
||||
lodash "^4.17.10"
|
||||
resolve "^1.8.1"
|
||||
semver "^7.3.2"
|
||||
|
||||
"@embroider/macros@0.4.3":
|
||||
version "0.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-0.4.3.tgz#ea5604b8bd578520f15886a428a6c4fa9481abc0"
|
||||
|
@ -1478,6 +1667,14 @@
|
|||
resolved "https://registry.yarnpkg.com/@glimmer/di/-/di-0.1.11.tgz#a6878c07a13a2c2c76fcde598a5c97637bfc4280"
|
||||
integrity sha1-poeMB6E6LCx2/N5ZilyXY3v8QoA=
|
||||
|
||||
"@glimmer/encoder@^0.42.2":
|
||||
version "0.42.2"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.42.2.tgz#d3ba3dc9f1d4fa582d1d18b63da100fc5c664057"
|
||||
integrity sha512-8xkdly0i0BP5HMI0suPB9ly0AnEq8x9Z8j3Gee1HYIovM5VLNtmh7a8HsaHYRs/xHmBEZcqtr8JV89w6F59YMQ==
|
||||
dependencies:
|
||||
"@glimmer/interfaces" "^0.42.2"
|
||||
"@glimmer/vm" "^0.42.2"
|
||||
|
||||
"@glimmer/env@0.1.7", "@glimmer/env@^0.1.7":
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/env/-/env-0.1.7.tgz#fd2d2b55a9029c6b37a6c935e8c8871ae70dfa07"
|
||||
|
@ -1490,6 +1687,55 @@
|
|||
dependencies:
|
||||
"@simple-dom/interface" "^1.4.0"
|
||||
|
||||
"@glimmer/interfaces@^0.42.2":
|
||||
version "0.42.2"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.42.2.tgz#9cf8d6f8f5eee6bfcfa36919ca68ae716e1f78db"
|
||||
integrity sha512-7LOuQd02cxxNNHChzdHMAU8/qOeQvTro141CU5tXITP7z6aOv2D2gkFdau97lLQiVxezGrh8J7h8GCuF7TEqtg==
|
||||
|
||||
"@glimmer/low-level@^0.42.2":
|
||||
version "0.42.2"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.42.2.tgz#52c745414d1d04c4245c369bd132c0e786c816ef"
|
||||
integrity sha512-s+Q44SnKdTBTnkgX0deBlVNnNPVas+Pg8xEnwky9VrUqOHKsIZRrPgfVULeC6bIdFXtXOKm5CjTajhb9qnQbXQ==
|
||||
|
||||
"@glimmer/program@^0.42.2":
|
||||
version "0.42.2"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.42.2.tgz#fe504679ca4df6251dd5fcf3003699bb51fa41fa"
|
||||
integrity sha512-XpQ6EYzA1VL9ESKoih5XW5JftFmlRvwy3bF/I1ABOa3yLIh8mApEwrRI/sIHK0Nv5s1j0uW4itVF196WxnJXgw==
|
||||
dependencies:
|
||||
"@glimmer/encoder" "^0.42.2"
|
||||
"@glimmer/interfaces" "^0.42.2"
|
||||
"@glimmer/util" "^0.42.2"
|
||||
|
||||
"@glimmer/reference@^0.42.1", "@glimmer/reference@^0.42.2":
|
||||
version "0.42.2"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.42.2.tgz#57874e27c825fb7041b5295b5eb153f3f3f92f8f"
|
||||
integrity sha512-XuhbRjr3M9Q/DP892jGxVfPE6jaGGHu5w9ppGMnuTY7Vm/x+A+68MCiaREhDcEwJlzGg4UkfVjU3fdgmUIrc5Q==
|
||||
dependencies:
|
||||
"@glimmer/util" "^0.42.2"
|
||||
|
||||
"@glimmer/runtime@^0.42.1":
|
||||
version "0.42.2"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.42.2.tgz#50e7da5d3cf9144248048a7478be3c489784a4bb"
|
||||
integrity sha512-52LVZJsLKM3GzI3TEmYcw2LdI9Uk0jotISc3w2ozQBWvkKoYxjDNvI/gsjyMpenj4s7FcG2ggOq0x4tNFqm1GA==
|
||||
dependencies:
|
||||
"@glimmer/interfaces" "^0.42.2"
|
||||
"@glimmer/low-level" "^0.42.2"
|
||||
"@glimmer/program" "^0.42.2"
|
||||
"@glimmer/reference" "^0.42.2"
|
||||
"@glimmer/util" "^0.42.2"
|
||||
"@glimmer/vm" "^0.42.2"
|
||||
"@glimmer/wire-format" "^0.42.2"
|
||||
|
||||
"@glimmer/syntax@^0.42.1":
|
||||
version "0.42.2"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.42.2.tgz#89bb3cb787285b84665dc0d8907d94b008e5be9a"
|
||||
integrity sha512-SR26SmF/Mb5o2cc4eLHpOyoX5kwwXP4KRhq4fbWfrvan74xVWA38PLspPCzwGhyVH/JsE7tUEPMjSo2DcJge/Q==
|
||||
dependencies:
|
||||
"@glimmer/interfaces" "^0.42.2"
|
||||
"@glimmer/util" "^0.42.2"
|
||||
handlebars "^4.0.13"
|
||||
simple-html-tokenizer "^0.5.8"
|
||||
|
||||
"@glimmer/syntax@^0.62.3":
|
||||
version "0.62.3"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.62.3.tgz#8c4abd245a54e8cc084a47ab4a65c33194256fda"
|
||||
|
@ -1517,6 +1763,11 @@
|
|||
"@glimmer/interfaces" "0.62.3"
|
||||
"@simple-dom/interface" "^1.4.0"
|
||||
|
||||
"@glimmer/util@^0.42.2":
|
||||
version "0.42.2"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.42.2.tgz#9ca1631e42766ea6059f4b49d0bdfb6095aad2c4"
|
||||
integrity sha512-Heck0baFSaWDanCYtmOcLeaz7v+rSqI8ovS7twrp2/FWEteb3Ze5sWQ2BEuSAG23L/k/lzVwYM/MY7ZugxBpaA==
|
||||
|
||||
"@glimmer/util@^0.44.0":
|
||||
version "0.44.0"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.44.0.tgz#45df98d73812440206ae7bda87cfe04aaae21ed9"
|
||||
|
@ -1527,6 +1778,22 @@
|
|||
resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.44.0.tgz#03d127097dc9cb23052cdb7fcae59d0a9dca53e1"
|
||||
integrity sha512-i01plR0EgFVz69GDrEuFgq1NheIjZcyTy3c7q+w7d096ddPVeVcRzU3LKaqCfovvLJ+6lJx40j45ecycASUUyw==
|
||||
|
||||
"@glimmer/vm@^0.42.2":
|
||||
version "0.42.2"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.42.2.tgz#492a4f05eac587c3a37371b3c62593f20bef553d"
|
||||
integrity sha512-D2MNU5glICLqvet5SfVPrv+l6JNK2TR+CdQhch1Ew+btOoqlW+2LIJIF/5wLb1POjIMEkt+78t/7RN0mDFXGzw==
|
||||
dependencies:
|
||||
"@glimmer/interfaces" "^0.42.2"
|
||||
"@glimmer/util" "^0.42.2"
|
||||
|
||||
"@glimmer/wire-format@^0.42.2":
|
||||
version "0.42.2"
|
||||
resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.42.2.tgz#b95062b594dddeb8bd11cba3a6a0accbfabc9930"
|
||||
integrity sha512-IqUo6mdJ7GRsK7KCyZxrc17ioSg9RBniEnb418ZMQxsV/WBv9NQ359MuClUck2M24z1AOXo4TerUw0U7+pb1/A==
|
||||
dependencies:
|
||||
"@glimmer/interfaces" "^0.42.2"
|
||||
"@glimmer/util" "^0.42.2"
|
||||
|
||||
"@handlebars/parser@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@handlebars/parser/-/parser-1.1.0.tgz#d6dbc7574774b238114582410e8fee0dc3532bdf"
|
||||
|
@ -3150,7 +3417,7 @@ JSV@^4.0.x:
|
|||
resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57"
|
||||
integrity sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=
|
||||
|
||||
abab@^2.0.0:
|
||||
abab@^2.0.0, abab@^2.0.3:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
|
||||
integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==
|
||||
|
@ -3183,6 +3450,14 @@ acorn-globals@^4.3.0:
|
|||
acorn "^6.0.1"
|
||||
acorn-walk "^6.0.1"
|
||||
|
||||
acorn-globals@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
|
||||
integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
|
||||
dependencies:
|
||||
acorn "^7.1.1"
|
||||
acorn-walk "^7.1.1"
|
||||
|
||||
acorn-jsx@^5.1.0, acorn-jsx@^5.2.0:
|
||||
version "5.3.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
|
||||
|
@ -3193,7 +3468,7 @@ acorn-walk@^6.0.1:
|
|||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
|
||||
integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
|
||||
|
||||
acorn-walk@^7.0.0:
|
||||
acorn-walk@^7.0.0, acorn-walk@^7.1.1:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
|
||||
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
|
||||
|
@ -3208,7 +3483,7 @@ acorn@^6.0.1, acorn@^6.0.2, acorn@^6.4.1:
|
|||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
|
||||
integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
|
||||
|
||||
acorn@^7.1.0, acorn@^7.4.0:
|
||||
acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0:
|
||||
version "7.4.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
|
||||
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
||||
|
@ -5341,6 +5616,23 @@ broccoli-persistent-filter@^3.1.0:
|
|||
symlink-or-copy "^1.0.1"
|
||||
sync-disk-cache "^2.0.0"
|
||||
|
||||
broccoli-persistent-filter@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-3.1.2.tgz#41da6b9577be09a170ecde185f2c5a6099f99c4e"
|
||||
integrity sha512-CbU95RXXVyy+eJV9XTiHUC7NnsY3EvdVrGzp3YgyvO2bzXZFE5/GzDp4X/VQqX+jsk4qyT1HvMOF0sD1DX68TQ==
|
||||
dependencies:
|
||||
async-disk-cache "^2.0.0"
|
||||
async-promise-queue "^1.0.3"
|
||||
broccoli-plugin "^4.0.3"
|
||||
fs-tree-diff "^2.0.0"
|
||||
hash-for-dep "^1.5.0"
|
||||
heimdalljs "^0.2.1"
|
||||
heimdalljs-logger "^0.1.7"
|
||||
promise-map-series "^0.2.1"
|
||||
rimraf "^3.0.0"
|
||||
symlink-or-copy "^1.0.1"
|
||||
sync-disk-cache "^2.0.0"
|
||||
|
||||
broccoli-plugin@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-1.1.0.tgz#73e2cfa05f8ea1e3fc1420c40c3d9e7dc724bf02"
|
||||
|
@ -5384,7 +5676,7 @@ broccoli-plugin@^3.1.0:
|
|||
rimraf "^2.3.4"
|
||||
symlink-or-copy "^1.1.8"
|
||||
|
||||
broccoli-plugin@^4.0.1, broccoli-plugin@^4.0.2, broccoli-plugin@^4.0.3:
|
||||
broccoli-plugin@^4.0.0, broccoli-plugin@^4.0.1, broccoli-plugin@^4.0.2, broccoli-plugin@^4.0.3:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-4.0.3.tgz#9dcfbfb6a1b27a37cc22e65c071719ce9f92bc1e"
|
||||
integrity sha512-CtAIEYq5K+4yQv8c/BHymOteuyjDAJfvy/asu4LudIWcMSS7dTn3yGI5gNBkwHG+qlRangYkHJNVAcDZMQbSVQ==
|
||||
|
@ -6706,11 +6998,16 @@ cssesc@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
||||
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
||||
|
||||
cssom@0.3.x, cssom@^0.3.4:
|
||||
cssom@0.3.x, cssom@^0.3.4, cssom@~0.3.6:
|
||||
version "0.3.8"
|
||||
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
|
||||
integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
|
||||
|
||||
cssom@^0.4.4:
|
||||
version "0.4.4"
|
||||
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
|
||||
integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
|
||||
|
||||
cssstyle@^1.1.1:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1"
|
||||
|
@ -6718,6 +7015,13 @@ cssstyle@^1.1.1:
|
|||
dependencies:
|
||||
cssom "0.3.x"
|
||||
|
||||
cssstyle@^2.2.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
|
||||
integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
|
||||
dependencies:
|
||||
cssom "~0.3.6"
|
||||
|
||||
csstype@^2.5.7:
|
||||
version "2.6.13"
|
||||
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.13.tgz#a6893015b90e84dd6e85d0e3b442a1e84f2dbe0f"
|
||||
|
@ -6829,6 +7133,15 @@ data-urls@^1.0.1:
|
|||
whatwg-mimetype "^2.2.0"
|
||||
whatwg-url "^7.0.0"
|
||||
|
||||
data-urls@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
|
||||
integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==
|
||||
dependencies:
|
||||
abab "^2.0.3"
|
||||
whatwg-mimetype "^2.3.0"
|
||||
whatwg-url "^8.0.0"
|
||||
|
||||
dayjs@^1.9.3:
|
||||
version "1.9.3"
|
||||
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.3.tgz#b7f94b22ad2a136a4ca02a01ab68ae893fe1a268"
|
||||
|
@ -6874,6 +7187,11 @@ debuglog@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
|
||||
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
|
||||
|
||||
decimal.js@^10.2.0:
|
||||
version "10.2.1"
|
||||
resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3"
|
||||
integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==
|
||||
|
||||
decode-uri-component@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||
|
@ -7168,6 +7486,13 @@ domexception@^1.0.1:
|
|||
dependencies:
|
||||
webidl-conversions "^4.0.2"
|
||||
|
||||
domexception@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
|
||||
integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==
|
||||
dependencies:
|
||||
webidl-conversions "^5.0.0"
|
||||
|
||||
domhandler@^2.3.0:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
|
||||
|
@ -7375,6 +7700,40 @@ ember-auto-import@^1.2.13, ember-auto-import@^1.5.2, ember-auto-import@^1.5.3:
|
|||
walk-sync "^0.3.3"
|
||||
webpack "~4.28"
|
||||
|
||||
ember-auto-import@^1.6.0:
|
||||
version "1.10.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.10.1.tgz#6c93a875e494aa0a58b759867d3f20adfd514ae3"
|
||||
integrity sha512-7bOWzPELlVwdWDOkB+phDIjg8BNW+/2RiLLQ+Xa/eIvCLT4ABYhHV5wqW5gs5BnXTDVLfE4ddKZdllnGuPGGDQ==
|
||||
dependencies:
|
||||
"@babel/core" "^7.1.6"
|
||||
"@babel/preset-env" "^7.10.2"
|
||||
"@babel/traverse" "^7.1.6"
|
||||
"@babel/types" "^7.1.6"
|
||||
"@embroider/core" "^0.33.0"
|
||||
babel-core "^6.26.3"
|
||||
babel-loader "^8.0.6"
|
||||
babel-plugin-syntax-dynamic-import "^6.18.0"
|
||||
babylon "^6.18.0"
|
||||
broccoli-debug "^0.6.4"
|
||||
broccoli-node-api "^1.7.0"
|
||||
broccoli-plugin "^4.0.0"
|
||||
debug "^3.1.0"
|
||||
ember-cli-babel "^7.0.0"
|
||||
enhanced-resolve "^4.0.0"
|
||||
fs-extra "^6.0.1"
|
||||
fs-tree-diff "^2.0.0"
|
||||
handlebars "^4.3.1"
|
||||
js-string-escape "^1.0.1"
|
||||
lodash "^4.17.19"
|
||||
mkdirp "^0.5.1"
|
||||
resolve-package-path "^3.1.0"
|
||||
rimraf "^2.6.2"
|
||||
semver "^7.3.4"
|
||||
symlink-or-copy "^1.2.0"
|
||||
typescript-memoize "^1.0.0-alpha.3"
|
||||
walk-sync "^0.3.3"
|
||||
webpack "^4.43.0"
|
||||
|
||||
ember-basic-dropdown@^3.0.10:
|
||||
version "3.0.10"
|
||||
resolved "https://registry.yarnpkg.com/ember-basic-dropdown/-/ember-basic-dropdown-3.0.10.tgz#47ed9fe9ff9e69d1a021771a91823c730985ffe0"
|
||||
|
@ -7451,7 +7810,7 @@ ember-cli-babel-plugin-helpers@^1.0.0, ember-cli-babel-plugin-helpers@^1.1.0, em
|
|||
resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.1.tgz#5016b80cdef37036c4282eef2d863e1d73576879"
|
||||
integrity sha512-sKvOiPNHr5F/60NLd7SFzMpYPte/nnGkq/tMIfXejfKHIhaiIkYFqX8Z9UFTKWLLn+V7NOaby6niNPZUdvKCRw==
|
||||
|
||||
ember-cli-babel@7, ember-cli-babel@^7.1.2, ember-cli-babel@^7.1.3, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.12.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.17.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.7.3, ember-cli-babel@^7.8.0:
|
||||
ember-cli-babel@7, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.2, ember-cli-babel@^7.1.3, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.12.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.17.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.7.3, ember-cli-babel@^7.8.0:
|
||||
version "7.23.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.23.0.tgz#ec580aa2c115d0810e454dd5c2fffce238284b92"
|
||||
integrity sha512-ix58DlRDAbGITtdJoRUPcAoQwKLYr/x/kIXjU9u1ATyhmuUjqb+0FDXghOWbkNihGiNOqBBR49+LBgK9AeBcNw==
|
||||
|
@ -8143,6 +8502,18 @@ ember-in-element-polyfill@^1.0.0:
|
|||
ember-cli-htmlbars "^4.3.1"
|
||||
ember-cli-version-checker "^5.0.2"
|
||||
|
||||
ember-in-viewport@^3.8.1:
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-in-viewport/-/ember-in-viewport-3.8.1.tgz#fd8305366d425c3912def49210e63fd582a7e60d"
|
||||
integrity sha512-abzKIa7FiOBz3fLkZ3ZSgxJQf5enGe1IdrLdjfo5HjdyWTq9j+B0lzuZCoOYUuWdoiTiXvT3gDFNqQ5j7ky2kw==
|
||||
dependencies:
|
||||
ember-auto-import "^1.6.0"
|
||||
ember-cli-babel "^7.22.1"
|
||||
ember-modifier "^2.1.0"
|
||||
fast-deep-equal "^2.0.1"
|
||||
intersection-observer-admin "~0.2.13"
|
||||
raf-pool "~0.1.4"
|
||||
|
||||
ember-inflector@^3.0.0, ember-inflector@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-inflector/-/ember-inflector-3.0.1.tgz#04be6df4d7e4000f6d6bd70787cdc995f77be4ab"
|
||||
|
@ -8795,7 +9166,12 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
|
|||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
escodegen@^1.11.0, escodegen@^1.12.0:
|
||||
escape-string-regexp@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
|
||||
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
|
||||
|
||||
escodegen@^1.11.0, escodegen@^1.12.0, escodegen@^1.14.1:
|
||||
version "1.14.3"
|
||||
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
|
||||
integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
|
||||
|
@ -9206,6 +9582,11 @@ faker@^4.1.0:
|
|||
resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f"
|
||||
integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8=
|
||||
|
||||
fast-deep-equal@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
|
||||
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
|
||||
|
||||
fast-deep-equal@^3.1.1:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
|
@ -10236,7 +10617,7 @@ gzip-size@5.1.1:
|
|||
duplexer "^0.1.1"
|
||||
pify "^4.0.1"
|
||||
|
||||
handlebars@^4.0.11, handlebars@^4.0.4, handlebars@^4.3.1, handlebars@^4.7.3:
|
||||
handlebars@^4.0.11, handlebars@^4.0.13, handlebars@^4.0.4, handlebars@^4.3.1, handlebars@^4.4.2, handlebars@^4.7.3:
|
||||
version "4.7.6"
|
||||
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e"
|
||||
integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==
|
||||
|
@ -10573,6 +10954,13 @@ html-encoding-sniffer@^1.0.2:
|
|||
dependencies:
|
||||
whatwg-encoding "^1.0.1"
|
||||
|
||||
html-encoding-sniffer@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3"
|
||||
integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==
|
||||
dependencies:
|
||||
whatwg-encoding "^1.0.5"
|
||||
|
||||
html-entities@^1.2.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44"
|
||||
|
@ -10974,6 +11362,11 @@ interpret@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
|
||||
integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
|
||||
|
||||
intersection-observer-admin@~0.2.13:
|
||||
version "0.2.13"
|
||||
resolved "https://registry.yarnpkg.com/intersection-observer-admin/-/intersection-observer-admin-0.2.13.tgz#00a021695bf5aef8d198204514d2f849fd27d089"
|
||||
integrity sha512-REIM59IHXPe9U5eTnowurzzfhgqVkSImZJnOSJZTAJ0LnyJqw8S/eD5s8ZYneQfm9JszhGIBwudF9gF02A3BpQ==
|
||||
|
||||
intl-messageformat-parser@6.0.18, intl-messageformat-parser@^6.0.5:
|
||||
version "6.0.18"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.0.18.tgz#bf2855b82b0749e1f34e452f0a15d08d3277c8c7"
|
||||
|
@ -11006,6 +11399,11 @@ invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4:
|
|||
dependencies:
|
||||
loose-envify "^1.0.0"
|
||||
|
||||
ip-regex@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
|
||||
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
|
||||
|
||||
ip@^1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
|
||||
|
@ -11322,6 +11720,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
|||
dependencies:
|
||||
isobject "^3.0.1"
|
||||
|
||||
is-potential-custom-element-name@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397"
|
||||
integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c=
|
||||
|
||||
is-regex@^1.0.4, is-regex@^1.0.5, is-regex@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
|
||||
|
@ -11717,6 +12120,38 @@ jsdom@^12.0.0:
|
|||
ws "^6.1.0"
|
||||
xml-name-validator "^3.0.0"
|
||||
|
||||
jsdom@^16.4.0:
|
||||
version "16.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb"
|
||||
integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==
|
||||
dependencies:
|
||||
abab "^2.0.3"
|
||||
acorn "^7.1.1"
|
||||
acorn-globals "^6.0.0"
|
||||
cssom "^0.4.4"
|
||||
cssstyle "^2.2.0"
|
||||
data-urls "^2.0.0"
|
||||
decimal.js "^10.2.0"
|
||||
domexception "^2.0.1"
|
||||
escodegen "^1.14.1"
|
||||
html-encoding-sniffer "^2.0.1"
|
||||
is-potential-custom-element-name "^1.0.0"
|
||||
nwsapi "^2.2.0"
|
||||
parse5 "5.1.1"
|
||||
request "^2.88.2"
|
||||
request-promise-native "^1.0.8"
|
||||
saxes "^5.0.0"
|
||||
symbol-tree "^3.2.4"
|
||||
tough-cookie "^3.0.1"
|
||||
w3c-hr-time "^1.0.2"
|
||||
w3c-xmlserializer "^2.0.0"
|
||||
webidl-conversions "^6.1.0"
|
||||
whatwg-encoding "^1.0.5"
|
||||
whatwg-mimetype "^2.3.0"
|
||||
whatwg-url "^8.0.0"
|
||||
ws "^7.2.3"
|
||||
xml-name-validator "^3.0.0"
|
||||
|
||||
jsesc@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
|
||||
|
@ -13210,7 +13645,7 @@ number-is-nan@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
||||
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
|
||||
|
||||
nwsapi@^2.0.9:
|
||||
nwsapi@^2.0.9, nwsapi@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
|
||||
integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
|
||||
|
@ -13659,6 +14094,11 @@ parse5@5.1.0:
|
|||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2"
|
||||
integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==
|
||||
|
||||
parse5@5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
|
||||
integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
|
||||
|
||||
parse5@^3.0.1:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
|
||||
|
@ -14304,6 +14744,11 @@ qunit@^2.9.3:
|
|||
node-watch "0.6.4"
|
||||
tiny-glob "0.2.6"
|
||||
|
||||
raf-pool@~0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/raf-pool/-/raf-pool-0.1.4.tgz#6b9f75ea1903c16e162ffe8c76688f5a625bc2cd"
|
||||
integrity sha512-BBPamTVuSprPq7CUmgxc+ycbsYUtUYnQtJYEfMHXMaostPaNpQzipLfSa/rwjmlgjBPiD7G+I+8W340sLOPu6g==
|
||||
|
||||
ramda@^0.21.0:
|
||||
version "0.21.0"
|
||||
resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35"
|
||||
|
@ -14939,7 +15384,7 @@ request-promise-core@1.1.4:
|
|||
dependencies:
|
||||
lodash "^4.17.19"
|
||||
|
||||
request-promise-native@^1.0.5:
|
||||
request-promise-native@^1.0.5, request-promise-native@^1.0.8:
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28"
|
||||
integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==
|
||||
|
@ -14948,7 +15393,7 @@ request-promise-native@^1.0.5:
|
|||
stealthy-require "^1.1.1"
|
||||
tough-cookie "^2.3.3"
|
||||
|
||||
request@^2.88.0:
|
||||
request@^2.88.0, request@^2.88.2:
|
||||
version "2.88.2"
|
||||
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
|
||||
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
|
||||
|
@ -15053,6 +15498,14 @@ resolve-package-path@^2.0.0:
|
|||
path-root "^0.1.1"
|
||||
resolve "^1.13.1"
|
||||
|
||||
resolve-package-path@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-package-path/-/resolve-package-path-3.1.0.tgz#35faaa5d54a9c7dd481eb7c4b2a44410c9c763d8"
|
||||
integrity sha512-2oC2EjWbMJwvSN6Z7DbDfJMnD8MYEouaLn5eIX0j8XwPsYCVIyY9bbnX88YHVkbr8XHqvZrYbxaLPibfTYKZMA==
|
||||
dependencies:
|
||||
path-root "^0.1.1"
|
||||
resolve "^1.17.0"
|
||||
|
||||
resolve-path@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7"
|
||||
|
@ -15264,6 +15717,13 @@ saxes@^3.1.3:
|
|||
dependencies:
|
||||
xmlchars "^2.1.1"
|
||||
|
||||
saxes@^5.0.0:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
|
||||
integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
|
||||
dependencies:
|
||||
xmlchars "^2.2.0"
|
||||
|
||||
scheduler@^0.19.1:
|
||||
version "0.19.1"
|
||||
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196"
|
||||
|
@ -15342,6 +15802,13 @@ semver@^7.0.0, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2:
|
|||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
|
||||
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
|
||||
|
||||
semver@^7.3.4:
|
||||
version "7.3.4"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
|
||||
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
|
||||
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"
|
||||
|
@ -15495,7 +15962,7 @@ silent-error@^1.0.0, silent-error@^1.0.1, silent-error@^1.1.0, silent-error@^1.1
|
|||
dependencies:
|
||||
debug "^2.2.0"
|
||||
|
||||
simple-html-tokenizer@^0.5.10:
|
||||
simple-html-tokenizer@^0.5.10, simple-html-tokenizer@^0.5.8:
|
||||
version "0.5.10"
|
||||
resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.5.10.tgz#0843e4f00c9677f1c81e3dfeefcee0a4aca8e5d0"
|
||||
integrity sha512-1DHMUmvUOGuUZ9/+cX/+hOhWhRD5dEw6lodn8WuV+T+cQ31hhBcCu1dcDsNotowi4mMaNhrLyKoS+DtB81HdDA==
|
||||
|
@ -16201,7 +16668,7 @@ supports-color@^7.0.0, supports-color@^7.1.0:
|
|||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
symbol-tree@^3.2.2:
|
||||
symbol-tree@^3.2.2, symbol-tree@^3.2.4:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
|
||||
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
|
||||
|
@ -16633,6 +17100,15 @@ tough-cookie@^2.3.3, tough-cookie@^2.4.3, tough-cookie@~2.5.0:
|
|||
psl "^1.1.28"
|
||||
punycode "^2.1.1"
|
||||
|
||||
tough-cookie@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
|
||||
integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
|
||||
dependencies:
|
||||
ip-regex "^2.1.0"
|
||||
psl "^1.1.28"
|
||||
punycode "^2.1.1"
|
||||
|
||||
tr46@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
|
||||
|
@ -16640,6 +17116,13 @@ tr46@^1.0.1:
|
|||
dependencies:
|
||||
punycode "^2.1.0"
|
||||
|
||||
tr46@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479"
|
||||
integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==
|
||||
dependencies:
|
||||
punycode "^2.1.1"
|
||||
|
||||
tracked-maps-and-sets@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tracked-maps-and-sets/-/tracked-maps-and-sets-2.1.0.tgz#762cf89fb22ca16aa4b1a7198c03e844e0ef238d"
|
||||
|
@ -17306,13 +17789,20 @@ vm-browserify@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
|
||||
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
|
||||
|
||||
w3c-hr-time@^1.0.1:
|
||||
w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
|
||||
integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
|
||||
dependencies:
|
||||
browser-process-hrtime "^1.0.0"
|
||||
|
||||
w3c-xmlserializer@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a"
|
||||
integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==
|
||||
dependencies:
|
||||
xml-name-validator "^3.0.0"
|
||||
|
||||
walk-sync@^0.2.5:
|
||||
version "0.2.7"
|
||||
resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.2.7.tgz#b49be4ee6867657aeb736978b56a29d10fa39969"
|
||||
|
@ -17407,6 +17897,16 @@ webidl-conversions@^4.0.2:
|
|||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
|
||||
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
|
||||
|
||||
webidl-conversions@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
|
||||
integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
|
||||
|
||||
webidl-conversions@^6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
|
||||
integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
|
||||
|
||||
webpack-dev-middleware@^3.7.0:
|
||||
version "3.7.2"
|
||||
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3"
|
||||
|
@ -17531,7 +18031,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5:
|
|||
dependencies:
|
||||
iconv-lite "0.4.24"
|
||||
|
||||
whatwg-mimetype@^2.2.0:
|
||||
whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
|
||||
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
|
||||
|
@ -17545,6 +18045,15 @@ whatwg-url@^7.0.0:
|
|||
tr46 "^1.0.1"
|
||||
webidl-conversions "^4.0.2"
|
||||
|
||||
whatwg-url@^8.0.0:
|
||||
version "8.4.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837"
|
||||
integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==
|
||||
dependencies:
|
||||
lodash.sortby "^4.7.0"
|
||||
tr46 "^2.0.2"
|
||||
webidl-conversions "^6.1.0"
|
||||
|
||||
which-boxed-primitive@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1"
|
||||
|
@ -17684,6 +18193,16 @@ wrap-ansi@^7.0.0:
|
|||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrap-legacy-hbs-plugin-if-needed@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/wrap-legacy-hbs-plugin-if-needed/-/wrap-legacy-hbs-plugin-if-needed-1.0.1.tgz#6683eb74747f33e7caea54bb2ed85106ef9006b4"
|
||||
integrity sha512-aJjXe5WwrY0u0dcUgKW3m2SGnxosJ66LLm/QaG0YMHqgA6+J2xwAFZfhSLsQ2BmO5x8PTH+OIxoAXuGz3qBA7A==
|
||||
dependencies:
|
||||
"@glimmer/reference" "^0.42.1"
|
||||
"@glimmer/runtime" "^0.42.1"
|
||||
"@glimmer/syntax" "^0.42.1"
|
||||
"@simple-dom/interface" "^1.4.0"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
|
@ -17718,6 +18237,11 @@ ws@^7.1.2:
|
|||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8"
|
||||
integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==
|
||||
|
||||
ws@^7.2.3:
|
||||
version "7.4.2"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd"
|
||||
integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==
|
||||
|
||||
ws@~6.1.0:
|
||||
version "6.1.4"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9"
|
||||
|
@ -17740,7 +18264,7 @@ xml-name-validator@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
|
||||
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
|
||||
|
||||
xmlchars@^2.1.1:
|
||||
xmlchars@^2.1.1, xmlchars@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
|
||||
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
|
||||
|
|
Loading…
Reference in New Issue