diff --git a/.changelog/9553.txt b/.changelog/9553.txt new file mode 100644 index 000000000..4a9f63c85 --- /dev/null +++ b/.changelog/9553.txt @@ -0,0 +1,3 @@ +```release-note:improvement +ui: Move to a sidebar based main navigation +``` diff --git a/ui/packages/consul-ui/app/components/app/index.hbs b/ui/packages/consul-ui/app/components/app/index.hbs new file mode 100644 index 000000000..f18811831 --- /dev/null +++ b/ui/packages/consul-ui/app/components/app/index.hbs @@ -0,0 +1,86 @@ +{{#let (hash + main=(concat guid '-main') +) as |exported|}} + +
+ + + + + +
+ + {{yield exported to="home-nav"}} +
+{{!-- + 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 +--}} + +{{!-- + 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. +--}} + + +
+
+
+ {{yield exported to="main"}} +
+ +
+ +{{/let}} \ No newline at end of file diff --git a/ui/packages/consul-ui/app/components/app/index.js b/ui/packages/consul-ui/app/components/app/index.js new file mode 100644 index 000000000..150f5e89e --- /dev/null +++ b/ui/packages/consul-ui/app/components/app/index.js @@ -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(); + } +} diff --git a/ui/packages/consul-ui/app/components/app/index.scss b/ui/packages/consul-ui/app/components/app/index.scss new file mode 100644 index 000000000..880d0e98a --- /dev/null +++ b/ui/packages/consul-ui/app/components/app/index.scss @@ -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; + } +} + diff --git a/ui/packages/consul-ui/app/components/hashicorp-consul/index.hbs b/ui/packages/consul-ui/app/components/hashicorp-consul/index.hbs index f9a1ec9c4..41df4d64b 100644 --- a/ui/packages/consul-ui/app/components/hashicorp-consul/index.hbs +++ b/ui/packages/consul-ui/app/components/hashicorp-consul/index.hbs @@ -1,256 +1,274 @@ - -
- Consul - - -
- - - -
-
-
-{{yield}} -
- \ No newline at end of file + + + + <:complementary-nav> + + + + <:main> + {{yield}} + + + <:content-info> + + © {{env 'CONSUL_COPYRIGHT_YEAR'}} HashiCorp + +

+ Consul {{env 'CONSUL_VERSION'}} +

+ + Documentation + + {{{concat ''}}} + + \ No newline at end of file diff --git a/ui/packages/consul-ui/app/components/hashicorp-consul/index.js b/ui/packages/consul-ui/app/components/hashicorp-consul/index.js index 47d05bbb0..9865a03ca 100644 --- a/ui/packages/consul-ui/app/components/hashicorp-consul/index.js +++ b/ui/packages/consul-ui/app/components/hashicorp-consul/index.js @@ -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); + } +} diff --git a/ui/packages/consul-ui/app/components/hashicorp-consul/index.scss b/ui/packages/consul-ui/app/components/hashicorp-consul/index.scss new file mode 100644 index 000000000..0acde5815 --- /dev/null +++ b/ui/packages/consul-ui/app/components/hashicorp-consul/index.scss @@ -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; + } +} diff --git a/ui/packages/consul-ui/app/components/hashicorp-consul/pageobject.js b/ui/packages/consul-ui/app/components/hashicorp-consul/pageobject.js index 4a1128ad0..b5d3075c7 100644 --- a/ui/packages/consul-ui/app/components/hashicorp-consul/pageobject.js +++ b/ui/packages/consul-ui/app/components/hashicorp-consul/pageobject.js @@ -4,8 +4,10 @@ export default (collection, clickable, attribute, is, authForm, emptyState) => s 'services', 'nodes', 'kvs', - 'acls', 'intentions', + 'tokens', + 'policies', + 'roles', 'help', 'settings', 'auth', diff --git a/ui/packages/consul-ui/app/styles/components/main-header-horizontal/index.scss b/ui/packages/consul-ui/app/components/main-header-horizontal/index.scss similarity index 100% rename from ui/packages/consul-ui/app/styles/components/main-header-horizontal/index.scss rename to ui/packages/consul-ui/app/components/main-header-horizontal/index.scss diff --git a/ui/packages/consul-ui/app/styles/components/main-header-horizontal/layout.scss b/ui/packages/consul-ui/app/components/main-header-horizontal/layout.scss similarity index 61% rename from ui/packages/consul-ui/app/styles/components/main-header-horizontal/layout.scss rename to ui/packages/consul-ui/app/components/main-header-horizontal/layout.scss index 483d5a7ba..302968093 100644 --- a/ui/packages/consul-ui/app/styles/components/main-header-horizontal/layout.scss +++ b/ui/packages/consul-ui/app/components/main-header-horizontal/layout.scss @@ -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; } diff --git a/ui/packages/consul-ui/app/components/main-header-horizontal/skin.scss b/ui/packages/consul-ui/app/components/main-header-horizontal/skin.scss new file mode 100644 index 000000000..96e21cf93 --- /dev/null +++ b/ui/packages/consul-ui/app/components/main-header-horizontal/skin.scss @@ -0,0 +1,3 @@ +%main-header-horizontal::before { + background-color: var(--gray-000); +} diff --git a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/index.scss b/ui/packages/consul-ui/app/components/main-nav-horizontal/index.scss similarity index 100% rename from ui/packages/consul-ui/app/styles/components/main-nav-horizontal/index.scss rename to ui/packages/consul-ui/app/components/main-nav-horizontal/index.scss diff --git a/ui/packages/consul-ui/app/components/main-nav-horizontal/layout.scss b/ui/packages/consul-ui/app/components/main-nav-horizontal/layout.scss new file mode 100644 index 000000000..ba9a3027f --- /dev/null +++ b/ui/packages/consul-ui/app/components/main-nav-horizontal/layout.scss @@ -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; +} diff --git a/ui/packages/consul-ui/app/components/main-nav-horizontal/skin.scss b/ui/packages/consul-ui/app/components/main-nav-horizontal/skin.scss new file mode 100644 index 000000000..10506efc9 --- /dev/null +++ b/ui/packages/consul-ui/app/components/main-nav-horizontal/skin.scss @@ -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); +} +/**/ diff --git a/ui/packages/consul-ui/app/components/main-nav-vertical/index.scss b/ui/packages/consul-ui/app/components/main-nav-vertical/index.scss new file mode 100644 index 000000000..5d07a5fd4 --- /dev/null +++ b/ui/packages/consul-ui/app/components/main-nav-vertical/index.scss @@ -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; +} + diff --git a/ui/packages/consul-ui/app/components/main-nav-vertical/layout.scss b/ui/packages/consul-ui/app/components/main-nav-vertical/layout.scss new file mode 100644 index 000000000..2177b780e --- /dev/null +++ b/ui/packages/consul-ui/app/components/main-nav-vertical/layout.scss @@ -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; +} diff --git a/ui/packages/consul-ui/app/components/main-nav-vertical/skin.scss b/ui/packages/consul-ui/app/components/main-nav-vertical/skin.scss new file mode 100644 index 000000000..89853ab8b --- /dev/null +++ b/ui/packages/consul-ui/app/components/main-nav-vertical/skin.scss @@ -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; +} diff --git a/ui/packages/consul-ui/app/styles/base/components/menu-panel/index.scss b/ui/packages/consul-ui/app/components/menu-panel/index.scss similarity index 100% rename from ui/packages/consul-ui/app/styles/base/components/menu-panel/index.scss rename to ui/packages/consul-ui/app/components/menu-panel/index.scss diff --git a/ui/packages/consul-ui/app/styles/base/components/menu-panel/layout.scss b/ui/packages/consul-ui/app/components/menu-panel/layout.scss similarity index 100% rename from ui/packages/consul-ui/app/styles/base/components/menu-panel/layout.scss rename to ui/packages/consul-ui/app/components/menu-panel/layout.scss diff --git a/ui/packages/consul-ui/app/styles/base/components/menu-panel/skin.scss b/ui/packages/consul-ui/app/components/menu-panel/skin.scss similarity index 65% rename from ui/packages/consul-ui/app/styles/base/components/menu-panel/skin.scss rename to ui/packages/consul-ui/app/components/menu-panel/skin.scss index de06dbcad..0948b81ca 100644 --- a/ui/packages/consul-ui/app/styles/base/components/menu-panel/skin.scss +++ b/ui/packages/consul-ui/app/components/menu-panel/skin.scss @@ -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); +} + diff --git a/ui/packages/consul-ui/app/components/skip-links/index.scss b/ui/packages/consul-ui/app/components/skip-links/index.scss new file mode 100644 index 000000000..6734f9b32 --- /dev/null +++ b/ui/packages/consul-ui/app/components/skip-links/index.scss @@ -0,0 +1,3 @@ +@import './skin'; +@import './layout'; + diff --git a/ui/packages/consul-ui/app/components/skip-links/layout.scss b/ui/packages/consul-ui/app/components/skip-links/layout.scss new file mode 100644 index 000000000..f8e78c6b1 --- /dev/null +++ b/ui/packages/consul-ui/app/components/skip-links/layout.scss @@ -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; +} + diff --git a/ui/packages/consul-ui/app/components/skip-links/skin.scss b/ui/packages/consul-ui/app/components/skip-links/skin.scss new file mode 100644 index 000000000..76cec8c6a --- /dev/null +++ b/ui/packages/consul-ui/app/components/skip-links/skin.scss @@ -0,0 +1,9 @@ +%skip-links { + outline: 1px solid $white; + color: $white; + background-color: $blue-500; +} +%skip-links a { + color: inherit; +} + diff --git a/ui/packages/consul-ui/app/services/dom.js b/ui/packages/consul-ui/app/services/dom.js index 9f55bf936..b0618e565 100644 --- a/ui/packages/consul-ui/app/services/dom.js +++ b/ui/packages/consul-ui/app/services/dom.js @@ -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; diff --git a/ui/packages/consul-ui/app/styles/app.scss b/ui/packages/consul-ui/app/styles/app.scss index 133fae6d4..30d5235ff 100644 --- a/ui/packages/consul-ui/app/styles/app.scss +++ b/ui/packages/consul-ui/app/styles/app.scss @@ -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'; diff --git a/ui/packages/consul-ui/app/styles/base/animation/index.scss b/ui/packages/consul-ui/app/styles/base/animation/index.scss index 1d6b6c31a..ab19562b4 100644 --- a/ui/packages/consul-ui/app/styles/base/animation/index.scss +++ b/ui/packages/consul-ui/app/styles/base/animation/index.scss @@ -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; +} diff --git a/ui/packages/consul-ui/app/styles/base/color/base-variables.scss b/ui/packages/consul-ui/app/styles/base/color/base-variables.scss index dc4053afb..99cde386b 100644 --- a/ui/packages/consul-ui/app/styles/base/color/base-variables.scss +++ b/ui/packages/consul-ui/app/styles/base/color/base-variables.scss @@ -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; diff --git a/ui/packages/consul-ui/app/styles/base/color/index.scss b/ui/packages/consul-ui/app/styles/base/color/index.scss index 1c892e1b4..8de1216ee 100644 --- a/ui/packages/consul-ui/app/styles/base/color/index.scss +++ b/ui/packages/consul-ui/app/styles/base/color/index.scss @@ -1,3 +1,4 @@ @import './base-variables'; @import './semantic-variables'; @import './frame-placeholders'; +@import './theme-placeholders'; diff --git a/ui/packages/consul-ui/app/styles/base/color/theme-placeholders.scss b/ui/packages/consul-ui/app/styles/base/color/theme-placeholders.scss new file mode 100644 index 000000000..0983f227d --- /dev/null +++ b/ui/packages/consul-ui/app/styles/base/color/theme-placeholders.scss @@ -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}; +} diff --git a/ui/packages/consul-ui/app/styles/base/components/buttons/skin.scss b/ui/packages/consul-ui/app/styles/base/components/buttons/skin.scss index bc7627776..f3cf0309b 100644 --- a/ui/packages/consul-ui/app/styles/base/components/buttons/skin.scss +++ b/ui/packages/consul-ui/app/styles/base/components/buttons/skin.scss @@ -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 { diff --git a/ui/packages/consul-ui/app/styles/base/components/index.scss b/ui/packages/consul-ui/app/styles/base/components/index.scss index 61474d718..2280b706b 100644 --- a/ui/packages/consul-ui/app/styles/base/components/index.scss +++ b/ui/packages/consul-ui/app/styles/base/components/index.scss @@ -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'; diff --git a/ui/packages/consul-ui/app/styles/base/decoration/base-variables.scss b/ui/packages/consul-ui/app/styles/base/decoration/base-variables.scss index 1a77c0cba..2e983a97a 100644 --- a/ui/packages/consul-ui/app/styles/base/decoration/base-variables.scss +++ b/ui/packages/consul-ui/app/styles/base/decoration/base-variables.scss @@ -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); diff --git a/ui/packages/consul-ui/app/styles/base/reset/system.scss b/ui/packages/consul-ui/app/styles/base/reset/system.scss index d30616b35..26c58a311 100644 --- a/ui/packages/consul-ui/app/styles/base/reset/system.scss +++ b/ui/packages/consul-ui/app/styles/base/reset/system.scss @@ -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 { diff --git a/ui/packages/consul-ui/app/styles/components.scss b/ui/packages/consul-ui/app/styles/components.scss index 6e7983ece..1a22481b4 100644 --- a/ui/packages/consul-ui/app/styles/components.scss +++ b/ui/packages/consul-ui/app/styles/components.scss @@ -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'; diff --git a/ui/packages/consul-ui/app/styles/components/app-view.scss b/ui/packages/consul-ui/app/styles/components/app-view.scss index f3624604b..f684be1dc 100644 --- a/ui/packages/consul-ui/app/styles/components/app-view.scss +++ b/ui/packages/consul-ui/app/styles/components/app-view.scss @@ -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; diff --git a/ui/packages/consul-ui/app/styles/components/main-header-horizontal.scss b/ui/packages/consul-ui/app/styles/components/main-header-horizontal.scss deleted file mode 100644 index 2dc1b8ace..000000000 --- a/ui/packages/consul-ui/app/styles/components/main-header-horizontal.scss +++ /dev/null @@ -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); -} diff --git a/ui/packages/consul-ui/app/styles/components/main-header-horizontal/skin.scss b/ui/packages/consul-ui/app/styles/components/main-header-horizontal/skin.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal.scss b/ui/packages/consul-ui/app/styles/components/main-nav-horizontal.scss deleted file mode 100644 index 3a8c0f218..000000000 --- a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal.scss +++ /dev/null @@ -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); - } -} diff --git a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/layout.scss b/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/layout.scss deleted file mode 100644 index 32785cd15..000000000 --- a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/layout.scss +++ /dev/null @@ -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; - } -} diff --git a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/skin.scss b/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/skin.scss deleted file mode 100644 index d49874614..000000000 --- a/ui/packages/consul-ui/app/styles/components/main-nav-horizontal/skin.scss +++ /dev/null @@ -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; -} -/**/ diff --git a/ui/packages/consul-ui/app/styles/layout.scss b/ui/packages/consul-ui/app/styles/layout.scss index b8963f085..1efec2644 100644 --- a/ui/packages/consul-ui/app/styles/layout.scss +++ b/ui/packages/consul-ui/app/styles/layout.scss @@ -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; } diff --git a/ui/packages/consul-ui/app/styles/layouts/containers.scss b/ui/packages/consul-ui/app/styles/layouts/containers.scss index d6cd89dbc..56cad4306 100644 --- a/ui/packages/consul-ui/app/styles/layouts/containers.scss +++ b/ui/packages/consul-ui/app/styles/layouts/containers.scss @@ -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)); } diff --git a/ui/packages/consul-ui/app/styles/routes/dc/acls/index.scss b/ui/packages/consul-ui/app/styles/routes/dc/acls/index.scss index 4f2944dff..54ac890e6 100644 --- a/ui/packages/consul-ui/app/styles/routes/dc/acls/index.scss +++ b/ui/packages/consul-ui/app/styles/routes/dc/acls/index.scss @@ -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, diff --git a/ui/packages/consul-ui/app/styles/themes.scss b/ui/packages/consul-ui/app/styles/themes.scss new file mode 100644 index 000000000..62cf0bb67 --- /dev/null +++ b/ui/packages/consul-ui/app/styles/themes.scss @@ -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); +} diff --git a/ui/packages/consul-ui/app/styles/variables/custom-query.scss b/ui/packages/consul-ui/app/styles/variables/custom-query.scss index bce53925c..c93bfb414 100644 --- a/ui/packages/consul-ui/app/styles/variables/custom-query.scss +++ b/ui/packages/consul-ui/app/styles/variables/custom-query.scss @@ -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)'; diff --git a/ui/packages/consul-ui/app/templates/dc/acls/-nav.hbs b/ui/packages/consul-ui/app/templates/dc/acls/-nav.hbs deleted file mode 100644 index 982fa9d35..000000000 --- a/ui/packages/consul-ui/app/templates/dc/acls/-nav.hbs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/ui/packages/consul-ui/app/templates/dc/acls/policies/index.hbs b/ui/packages/consul-ui/app/templates/dc/acls/policies/index.hbs index afbad1918..052cfa257 100644 --- a/ui/packages/consul-ui/app/templates/dc/acls/policies/index.hbs +++ b/ui/packages/consul-ui/app/templates/dc/acls/policies/index.hbs @@ -46,14 +46,9 @@ as |sort filters items|}}

- Access Controls + Policies

- - {{#if isAuthorized }} - {{partial 'dc/acls/nav'}} - {{/if}} - Create diff --git a/ui/packages/consul-ui/app/templates/dc/acls/roles/index.hbs b/ui/packages/consul-ui/app/templates/dc/acls/roles/index.hbs index 5cc11ccb5..aee311bdd 100644 --- a/ui/packages/consul-ui/app/templates/dc/acls/roles/index.hbs +++ b/ui/packages/consul-ui/app/templates/dc/acls/roles/index.hbs @@ -40,14 +40,9 @@ as |sort filters items|}}

- Access Controls + Roles

- - {{#if isAuthorized }} - {{partial 'dc/acls/nav'}} - {{/if}} - Create diff --git a/ui/packages/consul-ui/app/templates/dc/acls/tokens/index.hbs b/ui/packages/consul-ui/app/templates/dc/acls/tokens/index.hbs index 849ba3cc1..609c9b9af 100644 --- a/ui/packages/consul-ui/app/templates/dc/acls/tokens/index.hbs +++ b/ui/packages/consul-ui/app/templates/dc/acls/tokens/index.hbs @@ -44,14 +44,9 @@ as |sort filters items|}}

- Access Controls + Tokens

- - {{#if isAuthorized }} - {{partial 'dc/acls/nav'}} - {{/if}} - Create diff --git a/ui/packages/consul-ui/package.json b/ui/packages/consul-ui/package.json index b8376fa9e..5161b3f15 100644 --- a/ui/packages/consul-ui/package.json +++ b/ui/packages/consul-ui/package.json @@ -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", diff --git a/ui/packages/consul-ui/tests/acceptance/page-navigation.feature b/ui/packages/consul-ui/tests/acceptance/page-navigation.feature index eef74e1da..8ed54e09b 100644 --- a/ui/packages/consul-ui/tests/acceptance/page-navigation.feature +++ b/ui/packages/consul-ui/tests/acceptance/page-navigation.feature @@ -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 diff --git a/ui/packages/consul-ui/translations/en-us.yaml b/ui/packages/consul-ui/translations/en-us.yaml index f80096fd0..db329791f 100644 --- a/ui/packages/consul-ui/translations/en-us.yaml +++ b/ui/packages/consul-ui/translations/en-us.yaml @@ -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: diff --git a/ui/yarn.lock b/ui/yarn.lock index 6a7d64f42..f160bfc67 100644 --- a/ui/yarn.lock +++ b/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==