diff --git a/addons/core/addon/components/doc-link/index.hbs b/addons/core/addon/components/doc-link/index.hbs index 86f028f73..18ecb8406 100644 --- a/addons/core/addon/components/doc-link/index.hbs +++ b/addons/core/addon/components/doc-link/index.hbs @@ -1,6 +1,6 @@ diff --git a/addons/rose/addon/components/rose/nav/breadcrumbs/index.hbs b/addons/rose/addon/components/rose/nav/breadcrumbs/index.hbs index 287e2cba3..2e67e42df 100644 --- a/addons/rose/addon/components/rose/nav/breadcrumbs/index.hbs +++ b/addons/rose/addon/components/rose/nav/breadcrumbs/index.hbs @@ -1,5 +1,5 @@ diff --git a/addons/rose/addon/components/rose/nav/link/index.hbs b/addons/rose/addon/components/rose/nav/link/index.hbs new file mode 100644 index 000000000..37df6a85b --- /dev/null +++ b/addons/rose/addon/components/rose/nav/link/index.hbs @@ -0,0 +1,9 @@ +{{#if @model}} + + {{yield}} + +{{else}} + + {{yield}} + +{{/if}} diff --git a/addons/rose/addon/components/rose/nav/link/index.stories.mdx b/addons/rose/addon/components/rose/nav/link/index.stories.mdx new file mode 100644 index 000000000..198f434f4 --- /dev/null +++ b/addons/rose/addon/components/rose/nav/link/index.stories.mdx @@ -0,0 +1,23 @@ +import { Meta, Story, Preview } from '@storybook/addon-docs/blocks'; +import { hbs } from 'ember-cli-htmlbars'; +import { action } from '@storybook/addon-actions'; +import { text, boolean, select } from '@storybook/addon-knobs'; + + + +# Generic Navigation Link + +Proxies the built-in `LinkTo` component, applying a class `rose-nav-link`. + +```html +Text +``` + + + {{ + template: hbs` + Text + `, + context: {}, + }} + diff --git a/addons/rose/addon/components/rose/nav/sidebar/index.hbs b/addons/rose/addon/components/rose/nav/sidebar/index.hbs index 28250c8d6..8d5dd5f9b 100644 --- a/addons/rose/addon/components/rose/nav/sidebar/index.hbs +++ b/addons/rose/addon/components/rose/nav/sidebar/index.hbs @@ -12,7 +12,7 @@ {{/if}} {{yield (hash - link=(component "link-to" class="rose-nav-link") + link=(component "rose/nav/link") )}} diff --git a/addons/rose/addon/components/rose/nav/tabs/index.hbs b/addons/rose/addon/components/rose/nav/tabs/index.hbs index 18470f7d5..bef7428e2 100644 --- a/addons/rose/addon/components/rose/nav/tabs/index.hbs +++ b/addons/rose/addon/components/rose/nav/tabs/index.hbs @@ -3,7 +3,7 @@ class="rose-nav-tabs"> {{yield (hash - link=(component "link-to" class="rose-nav-link") + link=(component "rose/nav/link") )}} diff --git a/addons/rose/addon/styles/rose/components/nav/_breadcrumbs.scss b/addons/rose/addon/styles/rose/components/nav/_breadcrumbs.scss index e7ac5572e..f87fb9ae7 100644 --- a/addons/rose/addon/styles/rose/components/nav/_breadcrumbs.scss +++ b/addons/rose/addon/styles/rose/components/nav/_breadcrumbs.scss @@ -6,7 +6,7 @@ display: flex; flex-wrap: wrap; - .rose-nav-breadcrumbs-link { + .rose-nav-link { --color: var(--ui-gray); color: var(--color); text-decoration: none; diff --git a/addons/rose/app/components/rose/nav/link.js b/addons/rose/app/components/rose/nav/link.js new file mode 100644 index 000000000..b4f6d844f --- /dev/null +++ b/addons/rose/app/components/rose/nav/link.js @@ -0,0 +1 @@ +export { default } from 'rose/components/rose/nav/link'; diff --git a/addons/rose/package.json b/addons/rose/package.json index fa13ad8c6..3254f48b0 100644 --- a/addons/rose/package.json +++ b/addons/rose/package.json @@ -34,7 +34,7 @@ "ember-cli-htmlbars": "^5.7.1", "ember-focus-trap": "^0.7.0", "ember-named-blocks-polyfill": "^0.2.5", - "ember-radio-button": "^2.0.1", + "ember-radio-button": "github:yapplabs/ember-radio-button.git#b2ab65f", "ember-uuid": "^2.1.0", "emberx-select": "github:adopted-ember-addons/emberx-select#bc5f774" }, diff --git a/addons/rose/tests/integration/components/rose/form/radio/group-test.js b/addons/rose/tests/integration/components/rose/form/radio/group-test.js index 4354004e7..c1706fe5e 100644 --- a/addons/rose/tests/integration/components/rose/form/radio/group-test.js +++ b/addons/rose/tests/integration/components/rose/form/radio/group-test.js @@ -54,7 +54,10 @@ module('Integration | Component | rose/form/radio/group', function (hooks) { test('it reflects active radiofield value in @selectedValue and triggers a @changed function', async function (assert) { assert.expect(5); - this.changed = (value) => assert.ok(value); + this.changed = (value) => { + this.selectedValue = value; + assert.ok(value); + }; await render(hbs` `); - assert.equal(findAll('.rose-nav-breadcrumbs-link').length, 2); + assert.equal(findAll('.rose-nav-link').length, 2); }); }); diff --git a/addons/rose/tests/integration/components/rose/nav/link-test.js b/addons/rose/tests/integration/components/rose/nav/link-test.js new file mode 100644 index 000000000..2887900bc --- /dev/null +++ b/addons/rose/tests/integration/components/rose/nav/link-test.js @@ -0,0 +1,18 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render, find } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('Integration | Component | rose/nav/link', function (hooks) { + setupRenderingTest(hooks); + + test('it renders', async function (assert) { + assert.expect(1); + await render(hbs` + + Item Name + + `); + assert.equal(find('.rose-nav-link').textContent.trim(), 'Item Name'); + }); +}); diff --git a/package.json b/package.json index 6b7ac60e2..43ddfbe4d 100755 --- a/package.json +++ b/package.json @@ -88,6 +88,8 @@ "follow-redirects": "^1.14.7", "node-fetch": "^2.6.7", "shelljs": "^0.8.5", + "ember-template-recast": "^6.0.0", + "engine.io": "^5.2.1", "markdown-it": "^12.3.2" }, "config": { diff --git a/ui/admin/app/components/bread-crumbs.js b/ui/admin/app/components/bread-crumbs.js index 93f5a78a7..1f2ac7cea 100644 --- a/ui/admin/app/components/bread-crumbs.js +++ b/ui/admin/app/components/bread-crumbs.js @@ -1,9 +1,118 @@ -import BreadCrumbsComponent from 'ember-breadcrumbs/components/bread-crumbs'; +import Component from '@glimmer/component'; +import EmberObject, { computed, get } from '@ember/object'; import { inject as service } from '@ember/service'; +import { isBlank, isPresent } from '@ember/utils'; +import { A } from '@ember/array'; -export default class crumbs extends BreadCrumbsComponent { +// This component copies and modifies source from ember-breadcrumbs 0.2.3, +// updating it for Ember v4 compatibility. + +// The original copyright is below. + +/* +The MIT License (MIT) + +Copyright (c) 2014-2019 Chris Farber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +export default class BreadcrumbsComponent extends Component { // =services @service session; @service scope; + @service router; + + // =properties + + /* eslint-disable-next-line ember/require-computed-property-dependencies */ + @computed('router.currentRouteName') + get routeInfos() { + /* eslint-disable-next-line ember/no-private-routing-service */ + return this.router._router._routerMicrolib.currentRouteInfos; + } + + /* + For the pathNames and controllers properties, we must be careful not to NOT + specify the properties of the route in our dependent keys. + + Observing the controller property of the route causes some serious problems: + https://github.com/chrisfarber/ember-breadcrumbs/issues/21 + */ + + @computed('routeInfos.[]') + get pathNames() { + return this.routeInfos.map(function (routeInfo) { + return routeInfo.name; + }); + } + + @computed('routeInfos.[]') + get controllers() { + return this.routeInfos.map(function (routeInfo) { + var route = routeInfo.route || routeInfo.handler; + return route.controller; + }); + } + + @computed( + 'controllers.@each.{breadCrumbs,breadCrumb,breadCrumbPath,breadCrumbModel}', + 'pathNames.[]' + ) + get breadCrumbs() { + var controllers = this.controllers; + var defaultPaths = this.pathNames; + var breadCrumbs = A([]); + + controllers.forEach(function (controller, index) { + var crumbs = controller.breadCrumbs || A([]); + var singleCrumb = controller.breadCrumb; + + if (!isBlank(singleCrumb)) { + crumbs.push({ + label: singleCrumb, + path: controller.breadCrumbPath, + model: controller.breadCrumbModel, + }); + } + + crumbs.forEach(function (crumb) { + breadCrumbs.addObject( + EmberObject.create({ + label: crumb.label, + path: crumb.path || defaultPaths[index], + model: crumb.model, + linkable: isPresent(crumb.linkable) + ? crumb.linkable + : crumb.path !== false, + isCurrent: false, + }) + ); + }); + }); + + var deepestCrumb = get(breadCrumbs, 'lastObject'); + if (deepestCrumb) { + deepestCrumb.isCurrent = true; + } + + return breadCrumbs; + } } diff --git a/ui/admin/app/controllers/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host.js b/ui/admin/app/controllers/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host.js new file mode 100644 index 000000000..97ce819cc --- /dev/null +++ b/ui/admin/app/controllers/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host.js @@ -0,0 +1,13 @@ +import Controller from '@ember/controller'; + +export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetHostsHostController extends Controller { + // =attributes + + /** + * A role breadcrumb + * @type {string} + */ + get breadCrumb() { + return this.model.displayName; + } +} diff --git a/ui/admin/app/router.js b/ui/admin/app/router.js index ef557fbc8..75ce77c2c 100644 --- a/ui/admin/app/router.js +++ b/ui/admin/app/router.js @@ -91,7 +91,9 @@ Router.map(function () { this.route('host-sets', function () { this.route('new'); this.route('host-set', { path: ':host_set_id' }, function () { - this.route('hosts'); + this.route('hosts', function () { + this.route('host', { path: ':host_id' }, function () {}); + }); this.route('add-hosts'); this.route('create-and-add-host'); }); diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host.js new file mode 100644 index 000000000..3773e93c5 --- /dev/null +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host.js @@ -0,0 +1,3 @@ +import Route from '@ember/routing/route'; + +export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetHostsHostRoute extends Route {} diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host/index.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host/index.js new file mode 100644 index 000000000..873e01b71 --- /dev/null +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host/index.js @@ -0,0 +1,3 @@ +import Route from '@ember/routing/route'; + +export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetHostsHostIndexRoute extends Route {} diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/index.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/index.js new file mode 100644 index 000000000..30f72878b --- /dev/null +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/index.js @@ -0,0 +1,3 @@ +import Route from '@ember/routing/route'; + +export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetHostsIndexRoute extends Route {} diff --git a/ui/admin/app/templates/application.hbs b/ui/admin/app/templates/application.hbs index 3514fd82a..0bb6628c4 100644 --- a/ui/admin/app/templates/application.hbs +++ b/ui/admin/app/templates/application.hbs @@ -4,7 +4,7 @@ - + {{#if this.session.isAuthenticated}} @@ -71,11 +71,11 @@ - + {{company-copyright}} {{app-name}} - + {{t 'titles.documentation'}} diff --git a/ui/admin/app/templates/scopes/scope/authenticate/method/index.hbs b/ui/admin/app/templates/scopes/scope/authenticate/method/index.hbs index 14266bf9c..2217bff0a 100644 --- a/ui/admin/app/templates/scopes/scope/authenticate/method/index.hbs +++ b/ui/admin/app/templates/scopes/scope/authenticate/method/index.hbs @@ -3,7 +3,7 @@ {{else}} {{! OIDC disabled: hide OIDC auth form}} @@ -11,7 +11,7 @@ {{/unless}} {{/if}} \ No newline at end of file diff --git a/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts.hbs b/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts.hbs index 21d06fcb9..c78470ec0 100644 --- a/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts.hbs +++ b/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts.hbs @@ -1,83 +1,3 @@ {{page-title (t 'resources.host.title_plural')}} -{{#if @model.hosts}} - - - - - {{t 'form.name.label'}} - {{t 'form.type.label'}} - {{t 'form.id.label'}} - {{#if @model.isStatic}} - {{t 'titles.actions'}} - {{/if}} - - - - {{#each @model.hosts as |host|}} - - - - {{host.displayName}} - -

{{host.description}}

-
- - - - - - {{host.id}} - - - - {{#if (can 'removeHosts hostSet' @model.hostSet)}} - - - {{t 'actions.remove'}} - - - {{/if}} - -
- {{/each}} -
-
- -{{/if}} - -{{#unless @model.hosts}} - - - - {{t 'resources.host-set.host.messages.none.description'}} - - {{!-- - - - {{t "resources.host-set.actions.create-and-add-host"}} - - --}} - - -{{/unless}} \ No newline at end of file +{{outlet}} \ No newline at end of file diff --git a/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host.hbs b/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host.hbs new file mode 100644 index 000000000..7d32ecb0d --- /dev/null +++ b/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host.hbs @@ -0,0 +1,3 @@ +{{page-title @model.displayName}} + +{{outlet}} \ No newline at end of file diff --git a/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host/index.hbs b/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host/index.hbs new file mode 100644 index 000000000..2a0249dfa --- /dev/null +++ b/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host/index.hbs @@ -0,0 +1,9 @@ + + +{{!-- + +--}} \ No newline at end of file diff --git a/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/index.hbs b/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/index.hbs new file mode 100644 index 000000000..3d1189b2e --- /dev/null +++ b/ui/admin/app/templates/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/index.hbs @@ -0,0 +1,91 @@ +{{#if @model.hosts}} + + + + + {{t 'form.name.label'}} + {{t 'form.type.label'}} + {{t 'form.id.label'}} + {{#if @model.isStatic}} + {{t 'titles.actions'}} + {{/if}} + + + + {{#each @model.hosts as |host|}} + + + {{#if host.isStatic}} + + {{host.displayName}} + + {{else}} + {{! Link to a different subroute for dynamic/plugin hosts }} + + {{host.displayName}} + + {{/if}} +

{{host.description}}

+
+ + + + + + {{host.id}} + + + + {{#if (can 'removeHosts hostSet' @model.hostSet)}} + + + {{t 'actions.remove'}} + + + {{/if}} + +
+ {{/each}} +
+
+ +{{/if}} + +{{#unless @model.hosts}} + + + + {{t 'resources.host-set.host.messages.none.description'}} + + {{!-- + + + {{t "resources.host-set.actions.create-and-add-host"}} + + --}} + + +{{/unless}} \ No newline at end of file diff --git a/ui/admin/package.json b/ui/admin/package.json index e25473b79..8455faaf3 100644 --- a/ui/admin/package.json +++ b/ui/admin/package.json @@ -49,7 +49,6 @@ "doctoc": "^2.1.0", "ember-a11y-testing": "^4.2.0", "ember-auto-import": "^1.12.0", - "ember-breadcrumbs": "^0.2.3", "ember-cli": "~4.1.0", "ember-cli-app-version": "^5.0.0", "ember-cli-babel": "^7.26.8", diff --git a/ui/admin/tests/acceptance/auth-methods/oidc-test.js b/ui/admin/tests/acceptance/auth-methods/oidc-test.js index 2ab3e56bd..a9a784cb8 100644 --- a/ui/admin/tests/acceptance/auth-methods/oidc-test.js +++ b/ui/admin/tests/acceptance/auth-methods/oidc-test.js @@ -64,7 +64,7 @@ module('Acceptance | auth methods | oidc', function (hooks) { await visit(urls.authMethod); await click('.rose-layout-page-actions .rose-dropdown-trigger'); assert.equal( - find('.rose-dropdown[open] input[aria-checked=true]').value, + find('.rose-dropdown[open] input:checked').value, instances.authMethod.attributes.state ); }); diff --git a/ui/admin/tests/unit/controllers/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host-test.js b/ui/admin/tests/unit/controllers/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host-test.js new file mode 100644 index 000000000..7779bde77 --- /dev/null +++ b/ui/admin/tests/unit/controllers/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host-test.js @@ -0,0 +1,17 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; + +module( + 'Unit | Controller | scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host', + function (hooks) { + setupTest(hooks); + + // TODO: Replace this with your real tests. + test('it exists', function (assert) { + let controller = this.owner.lookup( + 'controller:scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host' + ); + assert.ok(controller); + }); + } +); diff --git a/ui/admin/tests/unit/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host-test.js b/ui/admin/tests/unit/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host-test.js new file mode 100644 index 000000000..6fc01e757 --- /dev/null +++ b/ui/admin/tests/unit/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host-test.js @@ -0,0 +1,16 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; + +module( + 'Unit | Route | scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host', + function (hooks) { + setupTest(hooks); + + test('it exists', function (assert) { + let route = this.owner.lookup( + 'route:scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host' + ); + assert.ok(route); + }); + } +); diff --git a/ui/admin/tests/unit/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host/index-test.js b/ui/admin/tests/unit/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host/index-test.js new file mode 100644 index 000000000..94e8acb8f --- /dev/null +++ b/ui/admin/tests/unit/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host/index-test.js @@ -0,0 +1,16 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; + +module( + 'Unit | Route | scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host/index', + function (hooks) { + setupTest(hooks); + + test('it exists', function (assert) { + let route = this.owner.lookup( + 'route:scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/host/index' + ); + assert.ok(route); + }); + } +); diff --git a/ui/admin/tests/unit/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/index-test.js b/ui/admin/tests/unit/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/index-test.js new file mode 100644 index 000000000..53eabbeab --- /dev/null +++ b/ui/admin/tests/unit/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/index-test.js @@ -0,0 +1,16 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; + +module( + 'Unit | Route | scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/index', + function (hooks) { + setupTest(hooks); + + test('it exists', function (assert) { + let route = this.owner.lookup( + 'route:scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts/index' + ); + assert.ok(route); + }); + } +); diff --git a/ui/desktop/app/templates/application.hbs b/ui/desktop/app/templates/application.hbs index 085201768..76923c4c4 100644 --- a/ui/desktop/app/templates/application.hbs +++ b/ui/desktop/app/templates/application.hbs @@ -11,7 +11,7 @@ {{if this.hasMacOSChrome ' header-cushion'}}' as |header| > - +
diff --git a/ui/desktop/app/templates/origin.hbs b/ui/desktop/app/templates/origin.hbs index 5ecd70b94..fb953f0c8 100644 --- a/ui/desktop/app/templates/origin.hbs +++ b/ui/desktop/app/templates/origin.hbs @@ -7,7 +7,7 @@ class='full-width' @onSubmit={{route-action 'setOrigin' this.origin}} @cancel={{false}} - @disabled={{is-loading}} + @disabled={{(is-loading)}} as |form| > {{else}} {{! OIDC disabled: hide OIDC auth form}} @@ -11,7 +11,7 @@ {{/unless}} {{/if}} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 0341e1346..572d7ea9a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3361,17 +3361,17 @@ resolved "https://registry.yarnpkg.com/@glimmer/env/-/env-0.1.7.tgz#fd2d2b55a9029c6b37a6c935e8c8871ae70dfa07" integrity sha1-/S0rVakCnGs3psk16MiHGucN+gc= -"@glimmer/global-context@0.65.3": - version "0.65.3" - resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.65.3.tgz#38a88cf7a5fdeec88b48ccba9442b9175e8a9c22" - integrity sha512-XvO7EESyshbbMFfucrnLXDMRtlZvI9JIjpRLpVPa7MJAU9jRmIMtmjtXOX2cy/i9XMfnAHu/PGIgBN9L03HLzA== +"@glimmer/global-context@0.83.1": + version "0.83.1" + resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.83.1.tgz#3e2d97f10ff623bcfb5b7dc29a858d546a6c6d66" + integrity sha512-OwlgqpbOJU73EjZOZdftab0fKbtdJ4x/QQeJseL9cvaAUiK3+w52M5ONFxD1T/yPBp2Mf7NCYqA/uL8tRbzY2A== dependencies: "@glimmer/env" "^0.1.7" -"@glimmer/interfaces@0.65.3": - version "0.65.3" - resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.65.3.tgz#ef3df40b42ab8b6dc36efea81652abddda72f23c" - integrity sha512-DP38dx0ai3xBPdYXRxxv3Ix5CbQHJZwI8PPUkDXv0pyua7/XEsSkiv7heXaaXgihSOGGHgrUa96/Nu82R6UtYw== +"@glimmer/interfaces@0.83.1": + version "0.83.1" + resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.83.1.tgz#fb16f5f683ddc55f130887b6141f58c0751350fe" + integrity sha512-rjAztghzX97v8I4rk3+NguM3XGYcFjc/GbJ8qrEj19KF2lUDoDBW1sB7f0tov3BD5HlrGXei/vOh4+DHfjeB5w== dependencies: "@simple-dom/interface" "^1.4.0" @@ -3401,16 +3401,16 @@ dependencies: "@glimmer/util" "^0.42.2" -"@glimmer/reference@^0.65.0": - version "0.65.3" - resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.65.3.tgz#39031f2873551db01f3a2cfeb95f1d099644fb1b" - integrity sha512-Ew8QNXRu2BkK6g8A4T+0dMNvv3yampiPMO/SGYlyRpXK1Ehm7nWVC+lSi/gfKW1N8iWPwa3ClIIxDekS52/FFw== +"@glimmer/reference@^0.83.1": + version "0.83.1" + resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.83.1.tgz#0345b95431b5bb19843b308e6311d1ef81e36192" + integrity sha512-BThEwDlMkJB1WBPWDrww+VxgGyDbwxh5FFPvGhkovvCZnCb7fAMUCt9pi6CUZtviugkWOBFtE9P4eZZbOLkXeg== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.65.3" - "@glimmer/interfaces" "0.65.3" - "@glimmer/util" "0.65.3" - "@glimmer/validator" "0.65.3" + "@glimmer/global-context" "0.83.1" + "@glimmer/interfaces" "0.83.1" + "@glimmer/util" "0.83.1" + "@glimmer/validator" "0.83.1" "@glimmer/runtime@^0.42.1": version "0.42.2" @@ -3435,15 +3435,15 @@ handlebars "^4.0.13" simple-html-tokenizer "^0.5.8" -"@glimmer/syntax@^0.65.0": - version "0.65.3" - resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.65.3.tgz#01fe7e20dc8ffd9263d51a22c4a95ac263133cea" - integrity sha512-2AdC5rJy+z1e6G29BXy2MLa9dXQgUTalH8qy1UkQ54stwQ8r3ZI6aO0IQYh5tiO0Hu2hAY/xy7UyjZc256zwQg== +"@glimmer/syntax@^0.83.1": + version "0.83.1" + resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.83.1.tgz#7e18dd445871c157ba0281f12a4fbf316fa49b41" + integrity sha512-n3vEd0GtjtgkOsd2gqkSimp8ecqq5KrHyana/s1XJZvVAPD5rMWT9WvAVWG8XAktns8BxjwLIUoj/vkOfA+eHg== dependencies: - "@glimmer/interfaces" "0.65.3" - "@glimmer/util" "0.65.3" - "@handlebars/parser" "^1.1.0" - simple-html-tokenizer "^0.5.10" + "@glimmer/interfaces" "0.83.1" + "@glimmer/util" "0.83.1" + "@handlebars/parser" "~2.0.0" + simple-html-tokenizer "^0.5.11" "@glimmer/tracking@^1.0.4": version "1.0.4" @@ -3453,13 +3453,13 @@ "@glimmer/env" "^0.1.7" "@glimmer/validator" "^0.44.0" -"@glimmer/util@0.65.3": - version "0.65.3" - resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.65.3.tgz#354760f7394bf016f41f6222a7937c1a394ff418" - integrity sha512-3qXYC9GpHipAXT0oVec6vQ3xsZaWIgLxyN62S0l/xHnIa5pXu3vnX73zan282IS6Mi0RetxwGNyEBT9OPsYkqQ== +"@glimmer/util@0.83.1": + version "0.83.1" + resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.83.1.tgz#cc7511b03164d658cf6e3262fce5a0fcb82edceb" + integrity sha512-amvjtl9dvrkxsoitXAly9W5NUaLIE3A2J2tWhBWIL1Z6DOFotfX7ytIosOIcPhJLZCtiXPHzMutQRv0G/MSMsA== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.65.3" + "@glimmer/interfaces" "0.83.1" "@simple-dom/interface" "^1.4.0" "@glimmer/util@^0.42.2": @@ -3472,13 +3472,13 @@ resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.44.0.tgz#45df98d73812440206ae7bda87cfe04aaae21ed9" integrity sha512-duAsm30uVK9jSysElCbLyU6QQYO2X9iLDLBIBUcCqck9qN1o3tK2qWiHbGK5d6g8E2AJ4H88UrfElkyaJlGrwg== -"@glimmer/validator@0.65.3", "@glimmer/validator@^0.65.0": - version "0.65.3" - resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.65.3.tgz#4eb59548800affaaf3e301f4e2d0f131e614f2b2" - integrity sha512-XoQ+5fN4MLzbS5uhAnaQzbgC7du2rgznTlM7W4WH+97ijHZ8JU5j6+3LIrwwZPPgVPlLlg8z3y6Wv3gEIQMpNA== +"@glimmer/validator@0.83.1", "@glimmer/validator@^0.83.0": + version "0.83.1" + resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.83.1.tgz#7578cb2284f728c8e9302c51fc6e7660b570ac54" + integrity sha512-LaILSNnQgDHZpaUsfjVndbS1JfVn0xdTlJdFJblPbhoVklOBSReZVekens3EQ6xOr3BC612sRm1hBnEPixOY6A== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.65.3" + "@glimmer/global-context" "0.83.1" "@glimmer/validator@^0.44.0": version "0.44.0" @@ -3508,10 +3508,10 @@ "@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" - integrity sha512-rR7tJoSwJ2eooOpYGxGGW95sLq6GXUaS1UtWvN7pei6n2/okYvCGld9vsUTvkl2migxbkszsycwtMf/GEc1k1A== +"@handlebars/parser@~2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@handlebars/parser/-/parser-2.0.0.tgz#5e8b7298f31ff8f7b260e6b7363c7e9ceed7d9c5" + integrity sha512-EP9uEDZv/L5Qh9IWuMUGJRfwhXJ4h1dqKTT4/3+tY0eu7sPis7xh23j61SYUnNF4vqCQvvUXpDo9Bh/+q1zASA== "@hashicorp/flight-icons@^2.0.1": version "2.0.1" @@ -7867,7 +7867,7 @@ broccoli-output-wrapper@^3.2.5: heimdalljs-logger "^0.1.10" symlink-or-copy "^1.2.0" -broccoli-persistent-filter@^1.0.3, broccoli-persistent-filter@^1.1.6, broccoli-persistent-filter@^1.4.3: +broccoli-persistent-filter@^1.1.6, broccoli-persistent-filter@^1.4.3: version "1.4.6" resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-1.4.6.tgz#80762d19000880a77da33c34373299c0f6a3e615" integrity sha512-0RejLwoC95kv4kta8KAa+FmECJCK78Qgm8SRDEK7YyU0N9Cx6KpY3UCDy9WELl3mCXLN8TokNxc7/hp3lL4lfw== @@ -9103,6 +9103,11 @@ commander@^6.1.0, commander@^6.2.1: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + commitizen@^4.0.3: version "4.2.4" resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.2.4.tgz#a3e5b36bd7575f6bf6e7aa19dbbf06b0d8f37165" @@ -10519,13 +10524,6 @@ ember-autofocus-modifier@^2.0.0: ember-cli-babel "^7.26.4" ember-modifier "^2.1.1" -ember-breadcrumbs@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/ember-breadcrumbs/-/ember-breadcrumbs-0.2.3.tgz#a95e02b73fdc2150f3d552e84a479d6dc96a8b31" - integrity sha512-QUiPXwAlTeiXykF5RnyilEgcj9NSFGciAawktImv6V6Lq9sNfmJHZAYZXAg8U/wA1tw7CG0fQl991K+jtuBTKQ== - dependencies: - ember-cli-babel "^7.10.0" - ember-browser-services@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ember-browser-services/-/ember-browser-services-2.0.0.tgz#37481eccd3828e80b0ef3b97edd8ab0325cb6dc5" @@ -10571,7 +10569,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@^6.16.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.9.2, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.0, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.19.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.23.1, ember-cli-babel@^7.26.3, ember-cli-babel@^7.26.4, ember-cli-babel@^7.26.5, ember-cli-babel@^7.26.6, ember-cli-babel@^7.26.8, ember-cli-babel@^7.4.0, ember-cli-babel@^7.5.0, ember-cli-babel@^7.7.3: +ember-cli-babel@^6.16.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.0, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.19.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.23.1, ember-cli-babel@^7.26.3, ember-cli-babel@^7.26.4, ember-cli-babel@^7.26.5, ember-cli-babel@^7.26.6, ember-cli-babel@^7.26.8, ember-cli-babel@^7.4.0, ember-cli-babel@^7.5.0, ember-cli-babel@^7.7.3: version "7.26.11" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.26.11.tgz#50da0fe4dcd99aada499843940fec75076249a9f" integrity sha512-JJYeYjiz/JTn34q7F5DSOjkkZqy8qwFOOxXfE6pe9yEJqWGu4qErKxlz8I22JoVEQ/aBUO+OcKTpmctvykM9YA== @@ -10646,17 +10644,6 @@ ember-cli-get-component-path-option@^1.0.0: resolved "https://registry.yarnpkg.com/ember-cli-get-component-path-option/-/ember-cli-get-component-path-option-1.0.0.tgz#0d7b595559e2f9050abed804f1d8eff1b08bc771" integrity sha1-DXtZVVni+QUKvtgE8djv8bCLx3E= -ember-cli-htmlbars@^1.1.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-1.3.5.tgz#65be9678b274b5e7861d7f75c188780af7ef9d13" - integrity sha512-Qur/anb0Vk57qmIhGLkSzl8X1QIMoae6pLa14MRQ8+YD2N5fNs3qdhEFf0SDBquPOH1QxQtraiNQvji47QBJyg== - dependencies: - broccoli-persistent-filter "^1.0.3" - ember-cli-version-checker "^1.0.2" - hash-for-dep "^1.0.2" - json-stable-stringify "^1.0.0" - strip-bom "^2.0.0" - ember-cli-htmlbars@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-3.1.0.tgz#87806c2a0bca2ab52d4fb8af8e2215c1ca718a99" @@ -10917,13 +10904,6 @@ ember-cli-typescript@^4.0.0, ember-cli-typescript@^4.1.0, ember-cli-typescript@^ stagehand "^1.0.0" walk-sync "^2.2.0" -ember-cli-version-checker@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-1.3.1.tgz#0bc2d134c830142da64bf9627a0eded10b61ae72" - integrity sha1-C8LRNMgwFC2mS/lieg7e0QthrnI= - dependencies: - semver "^5.3.0" - ember-cli-version-checker@^2.1.0, ember-cli-version-checker@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-2.2.0.tgz#47771b731fe0962705e27c8199a9e3825709f3b3" @@ -11444,13 +11424,12 @@ ember-qunit@^5.1.4: silent-error "^1.1.1" validate-peer-dependencies "^1.1.0" -ember-radio-button@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ember-radio-button/-/ember-radio-button-2.0.1.tgz#f081a44d581a4b1db88fef79ec5c47da712ab963" - integrity sha512-cAAyFgNIM3PquowkWfa0lOSlq4PPst9vpkNiLi5yhd1LJ4lVtwgn6s+OpPXWKJLZdig2m31PWU8jxobcubge5w== +"ember-radio-button@github:yapplabs/ember-radio-button.git#b2ab65f": + version "0.0.0" + resolved "https://codeload.github.com/yapplabs/ember-radio-button/tar.gz/b2ab65f81cae3b0f087cc99b8c01172b754cb181" dependencies: - ember-cli-babel "^6.9.2" - ember-cli-htmlbars "^1.1.1" + ember-cli-babel "^7.26.3" + ember-cli-htmlbars "^5.7.1" ember-resolver@^8.0.3: version "8.0.3" @@ -11590,22 +11569,22 @@ ember-template-lint@^3.7.0: v8-compile-cache "^2.3.0" yargs "^16.2.0" -ember-template-recast@^5.0.1, ember-template-recast@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/ember-template-recast/-/ember-template-recast-5.0.3.tgz#79df27a70bdce7be17f14db13886afde1e9d02d6" - integrity sha512-qsJYQhf29Dk6QMfviXhUPE+byMOs6iRQxUDHgkj8yqjeppvjHaFG96hZi/NAXJTm/M7o3PpfF5YlmeaKtI9UeQ== +ember-template-recast@^5.0.1, ember-template-recast@^5.0.3, ember-template-recast@^6.0.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/ember-template-recast/-/ember-template-recast-6.1.3.tgz#1e9b256ee9da24bcaa7c213088d01f32afc88001" + integrity sha512-45lkfjrWlrMPlOd5rLFeQeePZwAvcS//x1x15kaiQTlqQdYWiYNXwbpWHqV+p9fXY6bEjl6EbyPhG/zBkgh8MA== dependencies: - "@glimmer/reference" "^0.65.0" - "@glimmer/syntax" "^0.65.0" - "@glimmer/validator" "^0.65.0" + "@glimmer/reference" "^0.83.1" + "@glimmer/syntax" "^0.83.1" + "@glimmer/validator" "^0.83.0" async-promise-queue "^1.0.5" colors "^1.4.0" - commander "^6.2.1" + commander "^8.3.0" globby "^11.0.3" ora "^5.4.0" slash "^3.0.0" tmp "^0.2.1" - workerpool "^6.1.4" + workerpool "^6.1.5" ember-truth-helpers@^3.0.0: version "3.0.0" @@ -11749,10 +11728,10 @@ engine.io-parser@~4.0.0: dependencies: base64-arraybuffer "0.1.4" -engine.io@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-5.1.1.tgz#a1f97e51ddf10cbd4db8b5ff4b165aad3760cdd3" - integrity sha512-aMWot7H5aC8L4/T8qMYbLdvKlZOdJTH54FxfdFunTGvhMx1BHkJOntWArsVfgAZVwAO9LC2sryPWRcEeUzCe5w== +engine.io@^5.2.1, engine.io@~5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-5.2.1.tgz#3f84baf13471d35a6f3284a4effcd04c2f73c8a1" + integrity sha512-hyNxjVgWp619QMfqi/+/6/LQF+ueOIWeVOza3TeyvxUGjeT9U/xPkkHW/NJNuhbStrxMujEoMadoc2EY7DDEnw== dependencies: accepts "~1.3.4" base64id "2.0.0" @@ -21944,7 +21923,7 @@ silent-error@^1.0.0, silent-error@^1.0.1, silent-error@^1.1.1: dependencies: debug "^2.2.0" -simple-html-tokenizer@^0.5.10, simple-html-tokenizer@^0.5.8: +simple-html-tokenizer@^0.5.11, simple-html-tokenizer@^0.5.8: version "0.5.11" resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.5.11.tgz#4c5186083c164ba22a7b477b7687ac056ad6b1d9" integrity sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og== @@ -24653,6 +24632,11 @@ workerpool@^6.0.0, workerpool@^6.1.4: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw== +workerpool@^6.1.5: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"