diff --git a/addons/core/translations/form/en-us.yaml b/addons/core/translations/form/en-us.yaml
index 08fa5419d8..0e4c46ac70 100644
--- a/addons/core/translations/form/en-us.yaml
+++ b/addons/core/translations/form/en-us.yaml
@@ -176,6 +176,7 @@ sync-interval:
tags:
label: Tags
secret-editor:
+ label: Secret Editor
details: This secret is saved but won't be displayed
edit: Click to replace this secret
created:
diff --git a/addons/rose/addon/components/rose/code-editor/field-editor/index.hbs b/addons/rose/addon/components/rose/code-editor/field-editor/index.hbs
deleted file mode 100644
index 5704db4bf1..0000000000
--- a/addons/rose/addon/components/rose/code-editor/field-editor/index.hbs
+++ /dev/null
@@ -1,11 +0,0 @@
-{{!
- Copyright (c) HashiCorp, Inc.
- SPDX-License-Identifier: BUSL-1.1
-}}
-
-
\ No newline at end of file
diff --git a/addons/rose/addon/components/rose/code-editor/index.hbs b/addons/rose/addon/components/rose/code-editor/index.hbs
deleted file mode 100644
index 99bcca3f01..0000000000
--- a/addons/rose/addon/components/rose/code-editor/index.hbs
+++ /dev/null
@@ -1,13 +0,0 @@
-{{!
- Copyright (c) HashiCorp, Inc.
- SPDX-License-Identifier: BUSL-1.1
-}}
-
-
- {{yield
- (hash
- fieldEditor=(component 'rose/code-editor/field-editor' value=@codeValue)
- toolbar=(component 'rose/code-editor/toolbar' copyText=@codeValue)
- )
- }}
-
\ No newline at end of file
diff --git a/addons/rose/addon/components/rose/code-editor/toolbar/index.hbs b/addons/rose/addon/components/rose/code-editor/toolbar/index.hbs
deleted file mode 100644
index 04e94a7d5b..0000000000
--- a/addons/rose/addon/components/rose/code-editor/toolbar/index.hbs
+++ /dev/null
@@ -1,34 +0,0 @@
-{{!
- Copyright (c) HashiCorp, Inc.
- SPDX-License-Identifier: BUSL-1.1
-}}
-
-
\ No newline at end of file
diff --git a/addons/rose/addon/components/rose/code-editor/toolbar/index.js b/addons/rose/addon/components/rose/code-editor/toolbar/index.js
deleted file mode 100644
index dae6aed118..0000000000
--- a/addons/rose/addon/components/rose/code-editor/toolbar/index.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Copyright (c) HashiCorp, Inc.
- * SPDX-License-Identifier: BUSL-1.1
- */
-
-import Component from '@glimmer/component';
-import { tracked } from '@glimmer/tracking';
-import { action } from '@ember/object';
-import { later } from '@ember/runloop';
-
-export const COPY_ICON_TYPE = 'clipboard-copy';
-export const COPIED_ICON_TYPE = 'clipboard-checked';
-
-export default class RoseCodeEditorToolbarComponent extends Component {
- @tracked copyIconType = COPY_ICON_TYPE;
-
- @action
- copied() {
- let { onCopy } = this.args;
- let originalIconType = this.copyIconType;
-
- this.copyIconType = COPIED_ICON_TYPE;
-
- if (onCopy) {
- onCopy();
- }
- // eslint-disable-next-line ember/no-runloop
- later(() => (this.copyIconType = originalIconType), 1000);
- }
-}
diff --git a/addons/rose/addon/modifiers/code-mirror.js b/addons/rose/addon/modifiers/code-mirror.js
deleted file mode 100644
index d6e5d9a96d..0000000000
--- a/addons/rose/addon/modifiers/code-mirror.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Copyright (c) HashiCorp, Inc.
- * SPDX-License-Identifier: BUSL-1.1
- */
-
-import Modifier from 'ember-modifier';
-import codemirror from 'codemirror';
-
-import '../utilities/register-codemirror-hcl';
-import 'codemirror/mode/go/go';
-import 'codemirror/mode/javascript/javascript';
-import 'codemirror/mode/shell/shell';
-import 'codemirror/addon/edit/matchbrackets';
-import 'codemirror/addon/edit/closebrackets';
-import 'codemirror/addon/selection/active-line';
-import 'codemirror/addon/display/autorefresh';
-import 'codemirror/addon/lint/lint';
-import 'codemirror/addon/lint/json-lint';
-
-// Here we define default options for the editor.
-// These should follow the codemirror configuration types
-//
-const _PRESET_DEFAULTS = {
- theme: 'monokai',
- lineNumbers: true,
- cursorBlinkRate: 500,
- matchBrackets: true,
- autoCloseBrackets: true,
- styleActiveLine: true,
- mode: 'hcl',
-};
-
-/**
- *
- * `CodeMirror` implements a modifier that creates a CodeMirror instance on the provided element.
- *
- * The supported modes for the editor are currently: hcl, shell, go, javascript
- * The supported themes are: monokai
- *
- * Sample usage:
- * ```
- *
- * ```
- *
- * @class CodeMirror
- *
- */
-export default class CodeMirrorModifier extends Modifier {
- _editor;
- didSetup = false;
-
- modify(element, _, named) {
- if (!this.didSetup) {
- this._setup(element, named);
- this.didSetup = true;
- }
-
- if (this._editor?.getValue() !== named.value) {
- this._editor?.setValue(named.value);
- }
- }
-
- /**
- * Called when editor contents change.
- * @method CodeMirror#_onChange
- * See documentation for the CodeMirror editor events, specifically 'change' event here https://codemirror.net/doc/manual.html#events.
- */
- _onChange(editor, named) {
- const { onInput } = named;
- const newVal = editor.getValue();
-
- onInput && onInput(newVal);
- }
-
- /**
- * Initializes the editor with default configuration merged with consumer-provided configuration.
- * Also registers a 'change' event on the editor.
- * @method CodeMirror#_setup
- */
- _setup(element, named) {
- if (!element) {
- throw new Error('CodeMirror modifier has no element');
- }
-
- const editor = codemirror(element, {
- ..._PRESET_DEFAULTS,
- ...(named.options || {}),
- value: named.value,
- });
-
- editor.on('change', (editor) => {
- this._onChange(editor, named);
- });
-
- this._editor = editor;
- }
-}
diff --git a/addons/rose/addon/utilities/register-codemirror-hcl.js b/addons/rose/addon/utilities/register-codemirror-hcl.js
deleted file mode 100644
index 2c4561b936..0000000000
--- a/addons/rose/addon/utilities/register-codemirror-hcl.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Copyright (c) HashiCorp, Inc.
- * SPDX-License-Identifier: BUSL-1.1
- */
-
-import codemirror from 'codemirror';
-import 'codemirror/addon/mode/simple';
-
-// This utility defines 'hcl' mode for a codemirror editor and enables correct syntax highlighting.
-// Importing this file in the codemirror modifier will allow 'hcl' to be selected as a mode:
-// import 'cloud-ui-core/utils/register-codemirror-hcl'
-codemirror.defineSimpleMode('hcl', {
- start: [
- { regex: /"(?:[^\\]|\\.)*?(?:"|$)/, token: 'string' }, // strings
- { regex: /(\w+)(\s+)(=)/, token: ['keyword', 'null', 'null'] }, // assignment of variables
- {
- regex: /(build|deploy|release|hook|registry|type|runner|url)( )({)/,
- token: ['keyword', 'null', 'null'],
- }, // top level keywords
- { regex: /(variable)\b/, token: 'keyword' }, // input variable keyword
- { regex: /true|false|null|undefined/, token: 'atom' }, // bool keywords
- {
- regex: /0x[a-f\d]+|[-+]?(?:\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/i,
- token: 'number',
- }, // numbers
- { regex: /(#|\/\/)(\s*\S*)/, token: 'comment' }, // single line comments
- { regex: /(path)(.)/, token: ['variable-2', 'null'] }, // path variables
- { regex: /(workspace)(.)(\S*)/, token: ['string', 'null', 'string'] }, // workspace variables
- { regex: /\/\*/, token: 'comment', next: 'comment' }, // multi-line comment
- { regex: /[-+/*=<>!]+/, token: 'operator' }, // operators
- { regex: /[{[(]/, indent: true }, // for auto indent
- { regex: /[}\])]/, dedent: true },
- ],
- // The multi-line comment state.
- comment: [
- { regex: /.*?\*\//, token: 'comment', next: 'start' },
- { regex: /.*/, token: 'comment' },
- ],
- meta: {
- dontIndentStates: ['comment'],
- lineComment: '#',
- },
-});
diff --git a/addons/rose/app/components/rose/code-editor.js b/addons/rose/app/components/rose/code-editor.js
deleted file mode 100644
index a377f64abc..0000000000
--- a/addons/rose/app/components/rose/code-editor.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Copyright (c) HashiCorp, Inc.
- * SPDX-License-Identifier: BUSL-1.1
- */
-
-export { default } from 'rose/components/rose/code-editor';
diff --git a/addons/rose/app/components/rose/code-editor/field-editor.js b/addons/rose/app/components/rose/code-editor/field-editor.js
deleted file mode 100644
index d82e45a813..0000000000
--- a/addons/rose/app/components/rose/code-editor/field-editor.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Copyright (c) HashiCorp, Inc.
- * SPDX-License-Identifier: BUSL-1.1
- */
-
-export { default } from 'rose/components/rose/code-editor/field-editor';
diff --git a/addons/rose/app/components/rose/code-editor/toolbar.js b/addons/rose/app/components/rose/code-editor/toolbar.js
deleted file mode 100644
index 55a6aa8b38..0000000000
--- a/addons/rose/app/components/rose/code-editor/toolbar.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Copyright (c) HashiCorp, Inc.
- * SPDX-License-Identifier: BUSL-1.1
- */
-
-export { default } from 'rose/components/rose/code-editor/toolbar';
diff --git a/addons/rose/app/modifiers/code-mirror.js b/addons/rose/app/modifiers/code-mirror.js
deleted file mode 100644
index b55d3d4aca..0000000000
--- a/addons/rose/app/modifiers/code-mirror.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Copyright (c) HashiCorp, Inc.
- * SPDX-License-Identifier: BUSL-1.1
- */
-
-export { default } from 'rose/modifiers/code-mirror';
diff --git a/addons/rose/app/styles/rose/components/_index.scss b/addons/rose/app/styles/rose/components/_index.scss
index 907c97f8cc..82f3c7519f 100644
--- a/addons/rose/app/styles/rose/components/_index.scss
+++ b/addons/rose/app/styles/rose/components/_index.scss
@@ -5,7 +5,6 @@
// This list is sorted in ascending order to improve readability
-@use 'code-editor';
@use 'form';
@use 'frame';
@use 'header';
diff --git a/addons/rose/app/styles/rose/components/code-editor/_index.scss b/addons/rose/app/styles/rose/components/code-editor/_index.scss
deleted file mode 100644
index f419925aba..0000000000
--- a/addons/rose/app/styles/rose/components/code-editor/_index.scss
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * Copyright (c) HashiCorp, Inc.
- * SPDX-License-Identifier: BUSL-1.1
- */
-
-/* stylelint-disable selector-class-pattern */
-@use '../../variables/sizing';
-
-// Codemirror overrides
-.rose-codemirror-container {
- width: 100%;
-}
-
-.CodeMirror {
- max-width: 100%;
- display: flex;
- flex: 1;
- font-family: ui-monospace, Menlo, monospace;
-}
-
-.rose-autosize {
- .CodeMirror {
- height: auto;
- }
-}
-
-.CodeMirror-scroll {
- width: 100%;
-}
-
-.CodeMirror-sizer {
- border-right-width: 0 !important;
-}
-
-// Toolbar
-.rose-code-editor-toolbar {
- display: flex;
- justify-content: space-between;
- align-items: center;
- border-bottom: 1px solid var(--ui-gray-subtler-3);
- height: 2.75rem;
-
- &__action {
- margin-left: sizing.rems(s);
- }
-
- &__right-aligned {
- display: flex;
- height: 100%;
- align-items: center;
- }
-
- &__menu {
- margin-right: sizing.rems(s);
-
- .pds-dropdownTrigger {
- box-shadow: none;
-
- &__layoutWrapper {
- padding-left: sizing.rems(s);
- padding-right: sizing.rems(s);
- }
- }
-
- &-divider {
- border-right: 1px solid var(--ui-gray-subtler-3);
- height: sizing.rems(xl);
- }
- }
-
- &__copy-button {
- border: none;
- background-color: inherit;
- cursor: pointer;
- color: var(--ui-gray-starker-2);
- margin-right: sizing.rems(xs);
- margin-left: sizing.rems(s);
- height: sizing.rems(xl);
- white-space: nowrap;
-
- .hds-icon {
- vertical-align: top;
- }
- }
-}
diff --git a/addons/rose/index.js b/addons/rose/index.js
index 624614493c..bdc195caa8 100644
--- a/addons/rose/index.js
+++ b/addons/rose/index.js
@@ -12,11 +12,6 @@ module.exports = {
included(app) {
this._super.included.apply(this, arguments);
- this.import('node_modules/codemirror/lib/codemirror.css');
- this.import('node_modules/codemirror/theme/monokai.css');
- this.import('node_modules/codemirror/addon/lint/lint.css');
- this.import('node_modules/jsonlint/lib/jsonlint.js');
-
this.includeHDSStyles(app);
this.includeFlightIcons(app);
this.includePublic(app);
diff --git a/addons/rose/package.json b/addons/rose/package.json
index 70f6167bf4..fe7eb6e923 100644
--- a/addons/rose/package.json
+++ b/addons/rose/package.json
@@ -34,7 +34,6 @@
"@hashicorp/design-system-tokens": "^2.3.0",
"@hashicorp/flight-icons": "^3.10.0",
"@nullvoxpopuli/ember-composable-helpers": "^5.2.10",
- "codemirror": "5.65.7",
"ember-auto-import": "^2.10.0",
"ember-cli-babel": "^8.2.0",
"ember-cli-clipboard": "^1.2.1",
@@ -42,7 +41,6 @@
"ember-cli-sass": "^11.0.1",
"ember-focus-trap": "^1.0.1",
"ember-named-blocks-polyfill": "^0.2.5",
- "jsonlint": "^1.6.3",
"sass": "^1.69.5",
"uuid": "^11.0.3"
},
diff --git a/addons/rose/tests/integration/components/rose/code-editor-test.js b/addons/rose/tests/integration/components/rose/code-editor-test.js
deleted file mode 100644
index 7dbb6860e3..0000000000
--- a/addons/rose/tests/integration/components/rose/code-editor-test.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Copyright (c) HashiCorp, Inc.
- * SPDX-License-Identifier: BUSL-1.1
- */
-
-import { module, test } from 'qunit';
-import { setupRenderingTest } from 'ember-qunit';
-import { render } from '@ember/test-helpers';
-import { hbs } from 'ember-cli-htmlbars';
-
-module('Integration | Component | rose/code-editor', function (hooks) {
- setupRenderingTest(hooks);
-
- test('it renders', async function (assert) {
- const codeValue = 'export HCP_CLIENT_ID = {place your client_id here}';
- this.set('codeValue', codeValue);
-
- await render(hbs`
-
-
-
-
- `);
- assert.dom('[data-test-code-editor]').isVisible();
- assert.dom('[data-test-code-editor-toolbar]').isVisible();
- assert.dom('[data-test-code-editor-field-editor]').isVisible();
- assert.dom('[data-test-code-editor-field-editor]').includesText(codeValue);
- });
-});
diff --git a/addons/rose/tests/integration/components/rose/code-editor/field-editor-test.js b/addons/rose/tests/integration/components/rose/code-editor/field-editor-test.js
deleted file mode 100644
index 18e0b064a1..0000000000
--- a/addons/rose/tests/integration/components/rose/code-editor/field-editor-test.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Copyright (c) HashiCorp, Inc.
- * SPDX-License-Identifier: BUSL-1.1
- */
-
-import { module, test } from 'qunit';
-import { setupRenderingTest } from 'ember-qunit';
-import { typeIn, render, waitUntil } from '@ember/test-helpers';
-import { hbs } from 'ember-cli-htmlbars';
-
-module(
- 'Integration | Component | rose/code-editor/field-editor',
- function (hooks) {
- setupRenderingTest(hooks);
- const editorSelector = '[data-test-code-editor-field-editor]';
-
- test('it renders', async function (assert) {
- const codeValue = `export HCP_CLIENT_ID = {place your client_id here}`;
- this.set('codeValue', codeValue);
- await render(hbs`
-
- `);
- assert.dom(editorSelector).isVisible();
- assert.dom(editorSelector).includesText(codeValue);
-
- const myNewCode = 'NEW CODE';
- await typeIn(`${editorSelector} textarea`, myNewCode);
- assert.dom(editorSelector).includesText(myNewCode);
- });
-
- test('it renders readonly', async function (assert) {
- const codeValue = `export HCP_CLIENT_ID = {place your client_id here}`;
- this.set('codeValue', codeValue);
- this.set('options', {
- readOnly: true,
- });
- await render(hbs`
-
- `);
- assert.dom(editorSelector).isVisible();
- assert.dom(editorSelector).includesText(codeValue);
-
- const myNewCode = 'NEW CODE';
- waitUntil(async () => {
- try {
- // This should fail if the textarea is readonly
- await typeIn(`${editorSelector} textarea`, myNewCode);
- } catch {
- return true;
- }
- });
- assert.dom(editorSelector).doesNotIncludeText(myNewCode);
- });
-
- test('it calls onInput on change', async function (assert) {
- const codeValue = `export HCP_CLIENT_ID = {place your client_id here}`;
- const onInput = () => {
- this.set('called', true);
- };
- this.set('codeValue', codeValue);
- this.set('onInput', onInput);
- await render(hbs`
-
- `);
- assert.dom(editorSelector).isVisible();
- assert.dom(editorSelector).includesText(codeValue);
-
- const myNewCode = 'NEW CODE';
- await typeIn(`${editorSelector} textarea`, myNewCode);
- assert.dom(editorSelector).includesText(myNewCode);
- assert.true(this.called);
- });
- },
-);
diff --git a/addons/rose/tests/integration/components/rose/code-editor/toolbar-test.js b/addons/rose/tests/integration/components/rose/code-editor/toolbar-test.js
deleted file mode 100644
index 921a8a1b0a..0000000000
--- a/addons/rose/tests/integration/components/rose/code-editor/toolbar-test.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Copyright (c) HashiCorp, Inc.
- * SPDX-License-Identifier: BUSL-1.1
- */
-
-import { module, test } from 'qunit';
-import { setupRenderingTest } from 'ember-qunit';
-import { click, render } from '@ember/test-helpers';
-import { hbs } from 'ember-cli-htmlbars';
-
-module('Integration | Component | rose/code-editor/toolbar', function (hooks) {
- setupRenderingTest(hooks);
- const toolbarSelector = '[data-test-code-editor-toolbar]';
- const copyButtonSelector = '[data-test-code-editor-toolbar-copy-button]';
- const menuDividerSelector = '[data-test-code-editor-toolbar-menu-divider]';
-
- hooks.beforeEach(function () {
- const copyText = 'copyText';
- this.set('copyText', copyText);
- });
-
- test('it renders', async function (assert) {
- await render(hbs`
-
- `);
- assert.dom(toolbarSelector).isVisible();
- assert.dom(copyButtonSelector).isVisible();
- assert.dom(menuDividerSelector).doesNotExist();
- });
-
- test('it displays action', async function (assert) {
- await render(hbs`
-
- <:action>
- Hello
-
-
- `);
- assert.dom(toolbarSelector).isVisible();
- assert.dom(copyButtonSelector).isVisible();
- assert.dom(menuDividerSelector).doesNotExist();
- assert.dom('[data-test-my-action]').isVisible();
- });
-
- test('it calls onCopy callback', async function (assert) {
- const onCopy = () => {
- this.set('called', true);
- };
- this.set('onCopy', onCopy);
- await render(hbs`
-
- `);
- assert.dom(toolbarSelector).isVisible();
- assert.dom(copyButtonSelector).isVisible();
- assert.dom(menuDividerSelector).doesNotExist();
-
- await click(copyButtonSelector);
- assert.true(this.called);
- });
-});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 899d567d5b..e099df1b16 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -520,13 +520,10 @@ importers:
version: 2.3.0
'@hashicorp/flight-icons':
specifier: ^3.10.0
- version: 3.10.0
+ version: 3.11.1
'@nullvoxpopuli/ember-composable-helpers':
specifier: ^5.2.10
version: 5.2.10(@babel/core@7.27.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8))
- codemirror:
- specifier: 5.65.7
- version: 5.65.7
ember-auto-import:
specifier: ^2.10.0
version: 2.10.0(@glint/template@1.5.2)(webpack@5.99.8)
@@ -548,9 +545,6 @@ importers:
ember-named-blocks-polyfill:
specifier: ^0.2.5
version: 0.2.5
- jsonlint:
- specifier: ^1.6.3
- version: 1.6.3
sass:
specifier: ^1.69.5
version: 1.88.0
@@ -825,7 +819,7 @@ importers:
version: 3.3.3(ember-cli@5.12.0(handlebars@4.7.8)(underscore@1.13.7))
ember-cli-flash:
specifier: ^6.0.0
- version: 6.0.0(@ember/string@4.0.1)(@embroider/macros@1.18.0(@glint/template@1.5.2))(ember-modifier@4.2.0(@babel/core@7.27.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8)))
+ version: 6.0.0(@ember/string@4.0.1)(@embroider/macros@1.18.0(@glint/template@1.5.2))(ember-modifier@4.2.2(@babel/core@7.27.1))
ember-cli-htmlbars:
specifier: ^6.3.0
version: 6.3.0
@@ -855,7 +849,7 @@ importers:
version: 2.1.2(@babel/core@7.27.1)
ember-modifier:
specifier: ^4.2.0
- version: 4.2.0(@babel/core@7.27.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8))
+ version: 4.2.2(@babel/core@7.27.1)
ember-page-title:
specifier: ^8.2.3
version: 8.2.4(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8))
@@ -1027,7 +1021,7 @@ importers:
version: 3.3.3(ember-cli@5.12.0(handlebars@4.7.8)(underscore@1.13.7))
ember-cli-flash:
specifier: ^6.0.0
- version: 6.0.0(@ember/string@4.0.1)(@embroider/macros@1.18.0(@glint/template@1.5.2))(ember-modifier@4.2.0(@babel/core@7.27.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8)))
+ version: 6.0.0(@ember/string@4.0.1)(@embroider/macros@1.18.0(@glint/template@1.5.2))(ember-modifier@4.2.2(@babel/core@7.27.1))
ember-cli-htmlbars:
specifier: ^6.3.0
version: 6.3.0
@@ -1060,7 +1054,7 @@ importers:
version: 2.1.2(@babel/core@7.27.1)
ember-modifier:
specifier: ^4.2.0
- version: 4.2.0(@babel/core@7.27.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8))
+ version: 4.2.2(@babel/core@7.27.1)
ember-page-title:
specifier: ^8.2.3
version: 8.2.4(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8))
@@ -2289,9 +2283,6 @@ packages:
peerDependencies:
ember-source: ^3.28.0 || ^4.0.0
- '@hashicorp/flight-icons@3.10.0':
- resolution: {integrity: sha512-wtufYZ5Ntihmy+vbR0dM+Q7X56xPX/dtpcfVs4nCRgvYZZic5ayqE8tefs2FGtxauH6zuzzVk48s5S6psv9g+g==}
-
'@hashicorp/flight-icons@3.11.1':
resolution: {integrity: sha512-FQOHB2qCzHoG3dm6zidS39D4U0ida/7Sge5EG+KqcebH5jsbJQiMyB/qMc3YQBo5vGBe8XUa+rVW8v4JNpzk1Q==}
@@ -2775,9 +2766,6 @@ packages:
'@xtuc/long@4.2.2':
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
- JSV@4.0.2:
- resolution: {integrity: sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw==}
-
abbrev@1.1.1:
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
@@ -2879,10 +2867,6 @@ packages:
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
engines: {node: '>=12'}
- ansi-styles@1.0.0:
- resolution: {integrity: sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA==}
- engines: {node: '>=0.8.0'}
-
ansi-styles@3.2.1:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
engines: {node: '>=4'}
@@ -3412,10 +3396,6 @@ packages:
ccount@1.1.0:
resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==}
- chalk@0.4.0:
- resolution: {integrity: sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==}
- engines: {node: '>=0.8.0'}
-
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
@@ -3559,9 +3539,6 @@ packages:
codemirror-lang-hcl@0.0.0-beta.2:
resolution: {integrity: sha512-R3ew7Z2EYTdHTMXsWKBW9zxnLoLPYO+CrAa3dPZjXLrIR96Q3GR4cwJKF7zkSsujsnWgwRQZonyWpXYXfhQYuQ==}
- codemirror@5.65.7:
- resolution: {integrity: sha512-zb67cXzgugIQmb6tfD4G11ILjYoMfTjwcjn+cWsa4GewlI2adhR/h3kolkoCQTm1msD/1BuqVTKuO09ELsS++A==}
-
color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
@@ -4562,14 +4539,6 @@ packages:
resolution: {integrity: sha512-ezcPQhH8jUfcJQbbHji4/ZG/h0yyj1jRDknfYue/ypQS8fM8LrGcCMo0rjDZLzL1Vd11InjNs3BD7BdxFlzGoA==}
engines: {node: 12.* || >= 14}
- ember-modifier@4.2.0:
- resolution: {integrity: sha512-BJ48eTEGxD8J7+lofwVmee7xDgNDgpr5dd6+MSu4gk+I6xb35099RMNorXY5hjjwMJEyi/IRR6Yn3M7iJMz8Zw==}
- peerDependencies:
- ember-source: ^3.24 || >=4.0
- peerDependenciesMeta:
- ember-source:
- optional: true
-
ember-modifier@4.2.2:
resolution: {integrity: sha512-pPYBAGyczX0hedGWQFQOEiL9s45KS9efKxJxUQkMLjQyh+1Uef1mcmAGsdw2KmvNupITkE/nXxmVO1kZ9tt3ag==}
@@ -5471,10 +5440,6 @@ packages:
resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
engines: {node: '>= 0.4'}
- has-color@0.1.7:
- resolution: {integrity: sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==}
- engines: {node: '>=0.10.0'}
-
has-flag@3.0.0:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'}
@@ -5760,9 +5725,6 @@ packages:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
- is-core-module@2.13.1:
- resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
-
is-core-module@2.16.1:
resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
engines: {node: '>= 0.4'}
@@ -6078,11 +6040,6 @@ packages:
jsonify@0.0.1:
resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==}
- jsonlint@1.6.3:
- resolution: {integrity: sha512-jMVTMzP+7gU/IyC6hvKyWpUU8tmTkK5b3BPNuMI9U8Sit+YAWLlZwB6Y6YrdCxfg2kNz05p3XY3Bmm4m26Nv3A==}
- engines: {node: '>= 0.6'}
- hasBin: true
-
junk@3.1.0:
resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==}
engines: {node: '>=8'}
@@ -6702,10 +6659,6 @@ packages:
resolution: {integrity: sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==}
engines: {node: '>=6'}
- nomnom@1.8.1:
- resolution: {integrity: sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ==}
- deprecated: Package no longer supported. Contact support@npmjs.com for more info.
-
nopt@3.0.6:
resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==}
hasBin: true
@@ -7503,10 +7456,6 @@ packages:
engines: {node: '>= 0.4'}
hasBin: true
- resolve@1.22.8:
- resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
- hasBin: true
-
responselike@2.0.1:
resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==}
@@ -7968,11 +7917,6 @@ packages:
string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
- strip-ansi@0.1.1:
- resolution: {integrity: sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg==}
- engines: {node: '>=0.8.0'}
- hasBin: true
-
strip-ansi@4.0.0:
resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==}
engines: {node: '>=4'}
@@ -10161,7 +10105,7 @@ snapshots:
'@embroider/test-setup@4.0.0':
dependencies:
lodash: 4.17.21
- resolve: 1.22.8
+ resolve: 1.22.10
'@embroider/util@1.13.2(@glint/template@1.5.2)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8))':
dependencies:
@@ -10559,8 +10503,6 @@ snapshots:
- supports-color
- webpack
- '@hashicorp/flight-icons@3.10.0': {}
-
'@hashicorp/flight-icons@3.11.1': {}
'@humanwhocodes/config-array@0.13.0':
@@ -11131,8 +11073,6 @@ snapshots:
'@xtuc/long@4.2.2': {}
- JSV@4.0.2: {}
-
abbrev@1.1.1: {}
accepts@1.3.8:
@@ -11223,8 +11163,6 @@ snapshots:
ansi-regex@6.0.1: {}
- ansi-styles@1.0.0: {}
-
ansi-styles@3.2.1:
dependencies:
color-convert: 1.9.3
@@ -11436,7 +11374,7 @@ snapshots:
glob: 9.3.5
pkg-up: 3.1.0
reselect: 4.1.8
- resolve: 1.22.8
+ resolve: 1.22.10
babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.1):
dependencies:
@@ -11915,7 +11853,7 @@ snapshots:
ensure-posix-path: 1.1.1
fs-extra: 8.1.0
minimatch: 3.1.2
- resolve: 1.22.8
+ resolve: 1.22.10
rsvp: 4.8.5
symlink-or-copy: 1.3.1
walk-sync: 1.1.4
@@ -12082,12 +12020,6 @@ snapshots:
ccount@1.1.0: {}
- chalk@0.4.0:
- dependencies:
- ansi-styles: 1.0.0
- has-color: 0.1.7
- strip-ansi: 0.1.1
-
chalk@2.4.2:
dependencies:
ansi-styles: 3.2.1
@@ -12217,8 +12149,6 @@ snapshots:
'@lezer/highlight': 1.2.1
'@lezer/lr': 1.4.2
- codemirror@5.65.7: {}
-
color-convert@1.9.3:
dependencies:
color-name: 1.1.3
@@ -12750,7 +12680,7 @@ snapshots:
minimatch: 3.1.2
parse5: 6.0.1
pkg-entry-points: 1.1.1
- resolve: 1.22.8
+ resolve: 1.22.10
resolve-package-path: 4.0.3
semver: 7.7.2
style-loader: 2.0.0(webpack@5.99.8)
@@ -12885,7 +12815,7 @@ snapshots:
ember-auto-import: 2.10.0(@glint/template@1.5.2)(webpack@5.99.8)
ember-cli-babel: 7.26.11
ember-cli-htmlbars: 6.3.0
- ember-modifier: 3.2.7(@babel/core@7.27.1)
+ ember-modifier: 4.2.2(@babel/core@7.27.1)
prop-types: 15.8.1
transitivePeerDependencies:
- '@babel/core'
@@ -12923,15 +12853,15 @@ snapshots:
ember-cli: 5.12.0(handlebars@4.7.8)(underscore@1.13.7)
find-yarn-workspace-root: 2.0.0
is-git-url: 1.0.0
- resolve: 1.22.8
+ resolve: 1.22.10
semver: 5.7.2
- ember-cli-flash@6.0.0(@ember/string@4.0.1)(@embroider/macros@1.18.0(@glint/template@1.5.2))(ember-modifier@4.2.0(@babel/core@7.27.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8))):
+ ember-cli-flash@6.0.0(@ember/string@4.0.1)(@embroider/macros@1.18.0(@glint/template@1.5.2))(ember-modifier@4.2.2(@babel/core@7.27.1)):
dependencies:
'@ember/string': 4.0.1
'@embroider/addon-shim': 1.10.0
'@embroider/macros': 1.18.0(@glint/template@1.5.2)
- ember-modifier: 4.2.0(@babel/core@7.27.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8))
+ ember-modifier: 4.2.2(@babel/core@7.27.1)
transitivePeerDependencies:
- supports-color
@@ -12952,7 +12882,7 @@ snapshots:
json-stable-stringify: 1.3.0
semver: 6.3.1
strip-bom: 4.0.0
- walk-sync: 2.0.2
+ walk-sync: 2.2.0
transitivePeerDependencies:
- supports-color
@@ -13092,7 +13022,7 @@ snapshots:
ember-cli-babel-plugin-helpers: 1.1.1
execa: 1.0.0
fs-extra: 7.0.1
- resolve: 1.22.8
+ resolve: 1.22.10
rsvp: 4.8.5
semver: 6.3.1
stagehand: 1.0.1
@@ -13109,7 +13039,7 @@ snapshots:
ember-cli-babel-plugin-helpers: 1.1.1
execa: 2.1.0
fs-extra: 8.1.0
- resolve: 1.22.8
+ resolve: 1.22.10
rsvp: 4.8.5
semver: 6.3.1
stagehand: 1.0.1
@@ -13125,7 +13055,7 @@ snapshots:
debug: 4.4.0
execa: 4.1.0
fs-extra: 9.1.0
- resolve: 1.22.8
+ resolve: 1.22.10
rsvp: 4.8.5
semver: 7.7.2
stagehand: 1.0.1
@@ -13140,7 +13070,7 @@ snapshots:
debug: 4.4.0
execa: 4.1.0
fs-extra: 9.1.0
- resolve: 1.22.8
+ resolve: 1.22.10
rsvp: 4.8.5
semver: 7.7.2
stagehand: 1.0.1
@@ -13150,7 +13080,7 @@ snapshots:
ember-cli-version-checker@2.2.0:
dependencies:
- resolve: 1.22.8
+ resolve: 1.22.10
semver: 5.7.2
ember-cli-version-checker@3.1.3:
@@ -13244,7 +13174,7 @@ snapshots:
promise.hash.helper: 1.0.8
quick-temp: 0.1.8
remove-types: 1.0.0
- resolve: 1.22.8
+ resolve: 1.22.10
resolve-package-path: 4.0.3
safe-stable-stringify: 2.5.0
sane: 5.0.1
@@ -13619,18 +13549,6 @@ snapshots:
- '@babel/core'
- supports-color
- ember-modifier@4.2.0(@babel/core@7.27.1)(ember-source@5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8)):
- dependencies:
- '@embroider/addon-shim': 1.10.0
- decorator-transforms: 2.3.0(@babel/core@7.27.1)
- ember-cli-normalize-entity-name: 1.0.0
- ember-cli-string-utils: 1.1.0
- optionalDependencies:
- ember-source: 5.12.0(@glimmer/component@1.1.2(@babel/core@7.27.1))(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8)
- transitivePeerDependencies:
- - '@babel/core'
- - supports-color
-
ember-modifier@4.2.2(@babel/core@7.27.1):
dependencies:
'@embroider/addon-shim': 1.10.0
@@ -13854,7 +13772,7 @@ snapshots:
is-glob: 4.0.3
language-tags: 1.0.9
micromatch: 4.0.8
- resolve: 1.22.8
+ resolve: 1.22.10
v8-compile-cache: 2.4.0
yargs: 17.7.2
transitivePeerDependencies:
@@ -13910,7 +13828,7 @@ snapshots:
ember-try-config: 4.0.0(encoding@0.1.13)
execa: 4.1.0
fs-extra: 6.0.1
- resolve: 1.22.8
+ resolve: 1.22.10
rimraf: 3.0.2
semver: 7.7.2
walk-sync: 2.2.0
@@ -14139,9 +14057,9 @@ snapshots:
globals: 13.24.0
ignore: 5.3.2
is-builtin-module: 3.2.1
- is-core-module: 2.13.1
+ is-core-module: 2.16.1
minimatch: 3.1.2
- resolve: 1.22.8
+ resolve: 1.22.10
semver: 7.7.2
eslint-plugin-playwright@2.2.0(eslint@8.57.1):
@@ -14987,8 +14905,6 @@ snapshots:
has-bigints@1.1.0: {}
- has-color@0.1.7: {}
-
has-flag@3.0.0: {}
has-flag@4.0.0: {}
@@ -15015,7 +14931,7 @@ snapshots:
heimdalljs: 0.2.6
heimdalljs-logger: 0.1.10
path-root: 0.1.1
- resolve: 1.22.8
+ resolve: 1.22.10
resolve-package-path: 1.2.7
transitivePeerDependencies:
- supports-color
@@ -15305,10 +15221,6 @@ snapshots:
is-callable@1.2.7: {}
- is-core-module@2.13.1:
- dependencies:
- hasown: 2.0.2
-
is-core-module@2.16.1:
dependencies:
hasown: 2.0.2
@@ -15587,11 +15499,6 @@ snapshots:
jsonify@0.0.1: {}
- jsonlint@1.6.3:
- dependencies:
- JSV: 4.0.2
- nomnom: 1.8.1
-
junk@3.1.0: {}
just-extend@6.2.0: {}
@@ -16292,11 +16199,6 @@ snapshots:
node-watch@0.7.3: {}
- nomnom@1.8.1:
- dependencies:
- chalk: 0.4.0
- underscore: 1.13.7
-
nopt@3.0.6:
dependencies:
abbrev: 1.1.1
@@ -16320,7 +16222,7 @@ snapshots:
normalize-package-data@3.0.3:
dependencies:
hosted-git-info: 4.1.0
- is-core-module: 2.13.1
+ is-core-module: 2.16.1
semver: 7.7.2
validate-npm-package-license: 3.0.4
@@ -17081,7 +16983,7 @@ snapshots:
resolve-package-path@3.1.0:
dependencies:
path-root: 0.1.1
- resolve: 1.22.8
+ resolve: 1.22.10
resolve-package-path@4.0.3:
dependencies:
@@ -17102,12 +17004,6 @@ snapshots:
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- resolve@1.22.8:
- dependencies:
- is-core-module: 2.13.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
responselike@2.0.1:
dependencies:
lowercase-keys: 2.0.0
@@ -17661,8 +17557,6 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
- strip-ansi@0.1.1: {}
-
strip-ansi@4.0.0:
dependencies:
ansi-regex: 3.0.1
diff --git a/ui/admin/.stylelintrc.js b/ui/admin/.stylelintrc.js
index 63460dc13a..609d387d3a 100644
--- a/ui/admin/.stylelintrc.js
+++ b/ui/admin/.stylelintrc.js
@@ -24,11 +24,11 @@ module.exports = {
'at-rule-no-vendor-prefix': null,
// As a team we want to stick to using kebab-case as our selector class pattern, but there are a couple
- // of exceptions in which we overrride CSS from addons like CodeMirror and HDS, in which they use
+ // of exceptions in which we overrride CSS from addons like HDS, in which they use
// pascal case and a double-kebab-case. This regex checks for all of those 3 patterns and won't fail
// lint check, but will fail if its any other pattern.
'selector-class-pattern': [
- '(^([a-z][a-z0-9]*)(-{1,2}[a-z0-9]+)*$)|(^CodeMirror)',
+ '(^([a-z][a-z0-9]*)(-{1,2}[a-z0-9]+)*$)',
{
message: (selector) =>
`Expected class selector "${selector}" to be kebab-case`,
diff --git a/ui/admin/app/components/form/field/json-secret/index.hbs b/ui/admin/app/components/form/field/json-secret/index.hbs
index 14af0e2a8f..989a875138 100644
--- a/ui/admin/app/components/form/field/json-secret/index.hbs
+++ b/ui/admin/app/components/form/field/json-secret/index.hbs
@@ -20,17 +20,14 @@
/>
{{else}}
-
-
-
+
{{/if}}
\ No newline at end of file
diff --git a/ui/admin/app/components/form/worker/create-worker-led/index.js b/ui/admin/app/components/form/worker/create-worker-led/index.js
index 46558c3dea..5135575467 100644
--- a/ui/admin/app/components/form/worker/create-worker-led/index.js
+++ b/ui/admin/app/components/form/worker/create-worker-led/index.js
@@ -38,7 +38,7 @@ export default class FormWorkerCreateWorkerLedComponent extends Component {
// =properties
/**
- * Returns directory creation text for ``.
+ * Returns directory creation text for ``.
* @type {string}
*/
get createConfigText() {
@@ -55,7 +55,7 @@ touch ${this.configFilePath || ''}/pki-worker.hcl`;
}
/**
- * Returns config creation text for ``. The user will see
+ * Returns config creation text for ``. The user will see
* different outputs based on if they are using `hcp` or `oss` binaries.
* @type {string}
*/
@@ -108,7 +108,7 @@ ${listenerText}
/**
* Returns boundary installation command and start worker server command
- * for ``.
+ * for ``.
* @type {string}
*/
get installBoundaryText() {
@@ -129,33 +129,6 @@ unzip *.zip ;\\
: ossContent;
}
- /**
- * Returns `shell` configuration object for ``.
- * @type {Object}
- */
- get shellCodeEditor() {
- return {
- mode: 'shell',
- readOnly: true,
- lineNumbers: false,
- cursorBlinkRate: -1,
- styleActiveLine: false,
- };
- }
-
- /**
- * Returns `hcl` configuration object for ``.
- * @type {Object}
- */
- get hclCodeEditor() {
- return {
- mode: 'hcl',
- readOnly: true,
- cursorBlinkRate: -1,
- styleActiveLine: false,
- };
- }
-
//=methods
convertCommaSeparatedValuesToArray(input) {
diff --git a/ui/admin/app/components/worker-filter-generator/index.hbs b/ui/admin/app/components/worker-filter-generator/index.hbs
index 761e697993..ef6789ee8a 100644
--- a/ui/admin/app/components/worker-filter-generator/index.hbs
+++ b/ui/admin/app/components/worker-filter-generator/index.hbs
@@ -5,20 +5,14 @@
-
- {{#unless @hideToolbar}}
-
- {{/unless}}
-
-
+
{{#if (get @model.errors @name)}}
diff --git a/ui/admin/app/styles/app.scss b/ui/admin/app/styles/app.scss
index 4c66e097b0..50b97b0675 100644
--- a/ui/admin/app/styles/app.scss
+++ b/ui/admin/app/styles/app.scss
@@ -279,16 +279,9 @@
margin-bottom: sizing.rems(l);
width: 100%;
- .secret-editor-json {
- .CodeMirror {
- border-radius: sizing.rems(xxs);
- height: var(--secret-editor-height);
- display: block;
- }
-
- .CodeMirror-gutters {
- background: var(--secret-editor-gutter);
- }
+ /* stylelint-disable-next-line selector-class-pattern */
+ .hds-code-editor__editor {
+ height: var(--secret-editor-height);
}
.secret-editor-skeleton-wrapper {
diff --git a/ui/admin/tests/acceptance/credential-store/create-test.js b/ui/admin/tests/acceptance/credential-store/create-test.js
index b8dbe5e1f3..3fa020f2a2 100644
--- a/ui/admin/tests/acceptance/credential-store/create-test.js
+++ b/ui/admin/tests/acceptance/credential-store/create-test.js
@@ -4,7 +4,14 @@
*/
import { module, test } from 'qunit';
-import { visit, currentURL, click, fillIn } from '@ember/test-helpers';
+import {
+ visit,
+ currentURL,
+ click,
+ fillIn,
+ find,
+ waitFor,
+} from '@ember/test-helpers';
import { setupApplicationTest } from 'admin/tests/helpers';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import { setupIndexedDb } from 'api/test-support/helpers/indexed-db';
@@ -97,13 +104,20 @@ module('Acceptance | credential-stores | create', function (hooks) {
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
await click(selectors.TYPE_VAULT);
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- selectors.EDITOR_WORKER_FILTER_VALUE,
- );
+ await waitFor(commonSelectors.CODE_EDITOR_CM);
+
+ const editorElement = find(commonSelectors.CODE_EDITOR_CODE);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: selectors.EDITOR_WORKER_FILTER_VALUE,
+ },
+ });
+
await click(commonSelectors.SAVE_BTN);
- assert.dom(selectors.CODE_BLOCK_BODY).doesNotExist();
+ assert.dom(commonSelectors.CODE_EDITOR).doesNotExist();
assert.strictEqual(getVaultCredentialStoresCount(), count + 1);
});
diff --git a/ui/admin/tests/acceptance/credential-store/credentials/create-test.js b/ui/admin/tests/acceptance/credential-store/credentials/create-test.js
index 62dae4d433..b9f9d41a6a 100644
--- a/ui/admin/tests/acceptance/credential-store/credentials/create-test.js
+++ b/ui/admin/tests/acceptance/credential-store/credentials/create-test.js
@@ -4,7 +4,14 @@
*/
import { module, test } from 'qunit';
-import { visit, currentURL, click, fillIn } from '@ember/test-helpers';
+import {
+ visit,
+ currentURL,
+ click,
+ fillIn,
+ find,
+ waitFor,
+} from '@ember/test-helpers';
import { setupApplicationTest } from 'admin/tests/helpers';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import { setupIndexedDb } from 'api/test-support/helpers/indexed-db';
@@ -196,12 +203,24 @@ module(
await click(commonSelectors.HREF(urls.newCredential));
await click(selectors.FIELD_TYPE_JSON);
- await fillIn(selectors.FIELD_EDITOR, selectors.FIELD_EDITOR_VALUE);
- assert.dom(selectors.EDITOR).includesText(selectors.FIELD_EDITOR_VALUE);
+ await waitFor(commonSelectors.CODE_EDITOR_CM);
+
+ const editorElement = find(commonSelectors.CODE_EDITOR_CODE);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: '{"test": "value"}',
+ },
+ });
+
+ assert
+ .dom(commonSelectors.CODE_EDITOR_CODE)
+ .includesText('{"test": "value"}');
await click(selectors.FIELD_TYPE_USERNAME_PASSWORD);
await click(selectors.FIELD_TYPE_JSON);
- assert.dom(selectors.EDITOR).includesText('{}');
+ assert.dom(commonSelectors.CODE_EDITOR_CODE).includesText('{}');
});
test('users cannot navigate to new credential route without proper authorization', async function (assert) {
diff --git a/ui/admin/tests/acceptance/credential-store/credentials/selectors.js b/ui/admin/tests/acceptance/credential-store/credentials/selectors.js
index 0e34b5c243..bad5bdc5ec 100644
--- a/ui/admin/tests/acceptance/credential-store/credentials/selectors.js
+++ b/ui/admin/tests/acceptance/credential-store/credentials/selectors.js
@@ -6,15 +6,12 @@
export const FIELD_TYPE_SSH = '[value=ssh_private_key]';
export const FIELD_TYPE_USERNAME_PASSWORD = '[value=username_password]';
export const FIELD_TYPE_JSON = '[value=json]';
-export const FIELD_EDITOR = '[data-test-code-editor-field-editor] textarea';
-export const FIELD_EDITOR_VALUE = '{"test": "value"}';
export const FIELD_PASSWORD_ERROR = '[data-test-error-message-password]';
export const FIELD_SSH_PRIVATE_KEY = '[name=private_key]';
export const FIELD_SSH_PRIVATE_KEY_ERROR =
'[data-test-error-message-private-key]';
export const FIELD_SSH_PRIVATE_KEY_PASSPHRASE = '[name=private_key_passphrase]';
-export const EDITOR = '[data-test-code-editor-field-editor]';
export const MANAGE_DROPDOWN = '[data-test-manage-credentials-dropdown] button';
export const MANAGE_DROPDOWN_DELETE =
'[data-test-manage-credentials-dropdown] ul li button';
diff --git a/ui/admin/tests/acceptance/credential-store/credentials/update-test.js b/ui/admin/tests/acceptance/credential-store/credentials/update-test.js
index 31f27727e2..a5685d6ee8 100644
--- a/ui/admin/tests/acceptance/credential-store/credentials/update-test.js
+++ b/ui/admin/tests/acceptance/credential-store/credentials/update-test.js
@@ -571,7 +571,9 @@ module(
await click(selectors.REPLACE_SECRET_BTN);
assert.dom(selectors.REPLACE_SECRET_BTN).doesNotExist();
- await waitUntil(() => assert.dom('.CodeMirror').isVisible());
+ await waitUntil(() =>
+ assert.dom(commonSelectors.CODE_EDITOR_CM).isVisible(),
+ );
});
},
);
diff --git a/ui/admin/tests/acceptance/credential-store/update-test.js b/ui/admin/tests/acceptance/credential-store/update-test.js
index 93091815c4..41cb88a2ba 100644
--- a/ui/admin/tests/acceptance/credential-store/update-test.js
+++ b/ui/admin/tests/acceptance/credential-store/update-test.js
@@ -4,7 +4,14 @@
*/
import { module, test } from 'qunit';
-import { visit, currentURL, click, fillIn } from '@ember/test-helpers';
+import {
+ visit,
+ currentURL,
+ click,
+ fillIn,
+ find,
+ waitFor,
+} from '@ember/test-helpers';
import { setupApplicationTest } from 'admin/tests/helpers';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import { setupIndexedDb } from 'api/test-support/helpers/indexed-db';
@@ -381,9 +388,18 @@ module('Acceptance | credential-stores | update', function (hooks) {
await click(commonSelectors.HREF(urls.workerFilter));
await click(selectors.MANAGE_DROPDOWN);
await click(selectors.EDIT_WORKER_FILTER_ACTION);
- await fillIn(commonSelectors.CODE_EDITOR_CONTENT, '"bar" in "/tags/foo"');
- await click(commonSelectors.SAVE_BTN);
+ await waitFor(commonSelectors.CODE_EDITOR_CM);
+
+ const editorElement = find(commonSelectors.CODE_EDITOR_CODE);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: '"bar" in "/tags/foo"',
+ },
+ });
+ await click(commonSelectors.SAVE_BTN);
assert.dom(selectors.CODE_BLOCK_BODY).exists();
assert.dom(selectors.CODE_BLOCK_BODY).includesText('"bar" in "/tags/foo"');
});
diff --git a/ui/admin/tests/acceptance/storage-buckets/create-test.js b/ui/admin/tests/acceptance/storage-buckets/create-test.js
index 28d455d4c5..11583f776e 100644
--- a/ui/admin/tests/acceptance/storage-buckets/create-test.js
+++ b/ui/admin/tests/acceptance/storage-buckets/create-test.js
@@ -4,7 +4,15 @@
*/
import { module, test } from 'qunit';
-import { visit, currentURL, click, fillIn, select } from '@ember/test-helpers';
+import {
+ visit,
+ currentURL,
+ click,
+ fillIn,
+ select,
+ find,
+ waitFor,
+} from '@ember/test-helpers';
import { setupApplicationTest } from 'admin/tests/helpers';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import { Response } from 'miragejs';
@@ -53,14 +61,19 @@ module('Acceptance | storage-buckets | create', function (hooks) {
const storageBucketCount = getStorageBucketCount();
await visit(urls.storageBuckets);
- await click(`[href="${urls.newStorageBucket}"]`);
+ await click(commonSelectors.HREF(urls.newStorageBucket));
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
await select(selectors.FIELD_SCOPE, 'global');
-
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- selectors.EDITOR_WORKER_FILTER_VALUE,
- );
+ await waitFor(commonSelectors.CODE_EDITOR_CM);
+
+ const editorElement = find(commonSelectors.CODE_EDITOR_CODE);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: '"dev" in "/tags/env"',
+ },
+ });
assert.dom(selectors.FIELD_BUCKET_NAME).isNotDisabled();
assert.dom(selectors.FIELD_BUCKET_PREFIX).isNotDisabled();
@@ -74,9 +87,10 @@ module('Acceptance | storage-buckets | create', function (hooks) {
assert.strictEqual(storageBucket.name, commonSelectors.FIELD_NAME_VALUE);
assert.strictEqual(storageBucket.scopeId, 'global');
+
assert
.dom(selectors.READONLY_WORKER_FILTER)
- .hasText(selectors.EDITOR_WORKER_FILTER_VALUE);
+ .hasText('"dev" in "/tags/env"');
assert.strictEqual(getStorageBucketCount(), storageBucketCount + 1);
});
@@ -84,14 +98,19 @@ module('Acceptance | storage-buckets | create', function (hooks) {
const storageBucketCount = getStorageBucketCount();
await visit(urls.storageBuckets);
- await click(`[href="${urls.newStorageBucket}"]`);
+ await click(commonSelectors.HREF(urls.newStorageBucket));
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
await select(selectors.FIELD_SCOPE, instances.scopes.org.id);
-
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- selectors.EDITOR_WORKER_FILTER_VALUE,
- );
+ await waitFor(commonSelectors.CODE_EDITOR_CM);
+
+ const editorElement = find(commonSelectors.CODE_EDITOR_CODE);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: '"dev" in "/tags/env"',
+ },
+ });
assert.dom(selectors.FIELD_BUCKET_NAME).isNotDisabled();
assert.dom(selectors.FIELD_BUCKET_PREFIX).isNotDisabled();
@@ -116,7 +135,7 @@ module('Acceptance | storage-buckets | create', function (hooks) {
// Navigate to new storage bucket
await visit(urls.storageBuckets);
- await click(`[href="${urls.newStorageBucket}"]`);
+ await click(commonSelectors.HREF(urls.newStorageBucket));
// Fill the form
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
@@ -132,10 +151,16 @@ module('Acceptance | storage-buckets | create', function (hooks) {
);
await fillIn(selectors.FIELD_ACCESS_KEY, selectors.FIELD_ACCESS_KEY_VALUE);
await fillIn(selectors.FIELD_SECRET_KEY, selectors.FIELD_SECRET_KEY_VALUE);
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- selectors.EDITOR_WORKER_FILTER_VALUE,
- );
+ await waitFor(commonSelectors.CODE_EDITOR_CM);
+
+ const editorElement = find(commonSelectors.CODE_EDITOR_CODE);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: '"dev" in "/tags/env"',
+ },
+ });
await click(commonSelectors.SAVE_BTN);
@@ -161,7 +186,7 @@ module('Acceptance | storage-buckets | create', function (hooks) {
const storageBucketCount = getStorageBucketCount();
await visit(urls.storageBuckets);
- await click(`[href="${urls.newStorageBucket}"]`);
+ await click(commonSelectors.HREF(urls.newStorageBucket));
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
// There are 2 credential types
@@ -169,10 +194,16 @@ module('Acceptance | storage-buckets | create', function (hooks) {
await click(selectors.FIELD_DYNAMIC_CREDENTIAL);
await fillIn(selectors.FIELD_ROLE_ARN, selectors.FIELD_ROLE_ARN_VALUE);
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- selectors.EDITOR_WORKER_FILTER_VALUE,
- );
+ await waitFor(commonSelectors.CODE_EDITOR_CM);
+
+ const editorElement = find(commonSelectors.CODE_EDITOR_CODE);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: '"dev" in "/tags/env"',
+ },
+ });
await click(commonSelectors.SAVE_BTN);
const storageBucket = this.server.schema.storageBuckets.findBy({
@@ -189,17 +220,23 @@ module('Acceptance | storage-buckets | create', function (hooks) {
const storageBucketCount = getStorageBucketCount();
await visit(urls.storageBuckets);
- await click(`[href="${urls.newStorageBucket}"]`);
+ await click(commonSelectors.HREF(urls.newStorageBucket));
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
assert.dom(selectors.GROUP_CREDENTIAL_TYPE).exists({ count: 2 });
await click(selectors.FIELD_STATIC_CREDENTIAL);
await fillIn(selectors.FIELD_ACCESS_KEY, selectors.FIELD_ACCESS_KEY_VALUE);
await fillIn(selectors.FIELD_SECRET_KEY, selectors.FIELD_SECRET_KEY_VALUE);
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- selectors.EDITOR_WORKER_FILTER_VALUE,
- );
+ await waitFor(commonSelectors.CODE_EDITOR_CM);
+
+ const editorElement = find(commonSelectors.CODE_EDITOR_CODE);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: '"dev" in "/tags/env"',
+ },
+ });
await click(commonSelectors.SAVE_BTN);
@@ -218,7 +255,7 @@ module('Acceptance | storage-buckets | create', function (hooks) {
// Navigate to new storage bucket
await visit(urls.storageBuckets);
- await click(`[href="${urls.newStorageBucket}"]`);
+ await click(commonSelectors.HREF(urls.newStorageBucket));
// Fill the form
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
@@ -233,10 +270,16 @@ module('Acceptance | storage-buckets | create', function (hooks) {
);
await fillIn(selectors.FIELD_ACCESS_KEY, selectors.FIELD_ACCESS_KEY_VALUE);
await fillIn(selectors.FIELD_SECRET_KEY, selectors.FIELD_SECRET_KEY_VALUE);
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- selectors.EDITOR_WORKER_FILTER_VALUE,
- );
+ await waitFor(commonSelectors.CODE_EDITOR_CM);
+
+ const editorElement = find(commonSelectors.CODE_EDITOR_CODE);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: '"dev" in "/tags/env"',
+ },
+ });
await click(commonSelectors.SAVE_BTN);
@@ -261,7 +304,7 @@ module('Acceptance | storage-buckets | create', function (hooks) {
const storageBucketCount = getStorageBucketCount();
await visit(urls.storageBuckets);
- await click(`[href="${urls.newStorageBucket}"]`);
+ await click(commonSelectors.HREF(urls.newStorageBucket));
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
await click(commonSelectors.CANCEL_BTN);
@@ -292,11 +335,17 @@ module('Acceptance | storage-buckets | create', function (hooks) {
});
await visit(urls.storageBuckets);
- await click(`[href="${urls.newStorageBucket}"]`);
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- selectors.EDITOR_WORKER_FILTER_VALUE,
- );
+ await click(commonSelectors.HREF(urls.newStorageBucket));
+ await waitFor(commonSelectors.CODE_EDITOR_CM);
+
+ const editorElement = find(commonSelectors.CODE_EDITOR_CODE);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: '"dev" in "/tags/env"',
+ },
+ });
await click(commonSelectors.SAVE_BTN);
assert
diff --git a/ui/admin/tests/acceptance/storage-buckets/delete-test.js b/ui/admin/tests/acceptance/storage-buckets/delete-test.js
index d54d3b9c0e..bee5446da3 100644
--- a/ui/admin/tests/acceptance/storage-buckets/delete-test.js
+++ b/ui/admin/tests/acceptance/storage-buckets/delete-test.js
@@ -75,7 +75,7 @@ module('Acceptance | storage-buckets | delete', function (hooks) {
const storageBucketCount = getStorageBucketCount();
await visit(urls.globalScope);
- await click(`[href="${urls.storageBuckets}"]`);
+ await click(commonSelectors.HREF(urls.storageBuckets));
await click(DROPDOWN_BUTTON_SELECTOR);
await click(DELETE_DROPDOWN_SELECTOR);
diff --git a/ui/admin/tests/acceptance/storage-buckets/selectors.js b/ui/admin/tests/acceptance/storage-buckets/selectors.js
index d98d219c94..6dfbc7355d 100644
--- a/ui/admin/tests/acceptance/storage-buckets/selectors.js
+++ b/ui/admin/tests/acceptance/storage-buckets/selectors.js
@@ -30,7 +30,7 @@ export const FIELD_SECRET_KEY_EDIT_BTN =
export const FIELD_WORKER_FILTER = '[name=worker_filter]';
export const FIELD_WORKER_FILTER_ERROR = '[data-test-worker-filter-error]';
export const READONLY_WORKER_FILTER = '[data-test-worker-filter]';
-export const EDITOR_WORKER_FILTER_VALUE = '"dev" in "/tags/env"';
+
export const TOAST = '[role=alert] div';
export const TOAST_SUCCESSFUL_VALUE = 'Saved successfully.';
diff --git a/ui/admin/tests/acceptance/storage-buckets/update-test.js b/ui/admin/tests/acceptance/storage-buckets/update-test.js
index 8621ceacd2..9f7fe8445b 100644
--- a/ui/admin/tests/acceptance/storage-buckets/update-test.js
+++ b/ui/admin/tests/acceptance/storage-buckets/update-test.js
@@ -4,7 +4,7 @@
*/
import { module, test } from 'qunit';
-import { visit, click, fillIn } from '@ember/test-helpers';
+import { visit, click, fillIn, find, waitFor } from '@ember/test-helpers';
import { setupApplicationTest } from 'admin/tests/helpers';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import { Response } from 'miragejs';
@@ -56,7 +56,7 @@ module('Acceptance | storage-buckets | update', function (hooks) {
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
await click(commonSelectors.SAVE_BTN, 'Click save');
- assert.dom(`[href="${urls.storageBucket}"]`).isVisible();
+ assert.dom(commonSelectors.HREF(urls.storageBucket)).isVisible();
assert
.dom(commonSelectors.FIELD_NAME)
.hasValue(commonSelectors.FIELD_NAME_VALUE);
@@ -163,12 +163,18 @@ module('Acceptance | storage-buckets | update', function (hooks) {
);
});
- await click(`[href="${urls.storageBucket}"]`);
+ await click(commonSelectors.HREF(urls.storageBucket));
await click(commonSelectors.EDIT_BTN, 'Activate edit mode');
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- selectors.EDITOR_WORKER_FILTER_VALUE,
- );
+ await waitFor(commonSelectors.CODE_EDITOR_CM);
+
+ const editorElement = find(commonSelectors.CODE_EDITOR_CODE);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: '"dev" in "/tags/env"',
+ },
+ });
await click(commonSelectors.SAVE_BTN);
assert
@@ -223,11 +229,11 @@ module('Acceptance | storage-buckets | update', function (hooks) {
await click(commonSelectors.HREF(urls.storageBucketMinio));
assert.dom(selectors.READONLY_WORKER_FILTER).isVisible();
- assert.dom(commonSelectors.CODE_EDITOR_CONTENT).doesNotExist();
+ assert.dom(commonSelectors.CODE_EDITOR).doesNotExist();
await click(commonSelectors.EDIT_BTN, 'Click edit mode');
- assert.dom(commonSelectors.CODE_EDITOR_CONTENT).isVisible();
+ assert.dom(commonSelectors.CODE_EDITOR).isVisible();
assert.dom(selectors.READONLY_WORKER_FILTER).doesNotExist();
});
});
diff --git a/ui/admin/tests/acceptance/targets/enable-session-recording/create-storage-bucket-test.js b/ui/admin/tests/acceptance/targets/enable-session-recording/create-storage-bucket-test.js
index 5ba8f12766..fbf9f8eb0b 100644
--- a/ui/admin/tests/acceptance/targets/enable-session-recording/create-storage-bucket-test.js
+++ b/ui/admin/tests/acceptance/targets/enable-session-recording/create-storage-bucket-test.js
@@ -4,7 +4,14 @@
*/
import { module, test } from 'qunit';
-import { visit, currentURL, click, fillIn } from '@ember/test-helpers';
+import {
+ visit,
+ currentURL,
+ click,
+ fillIn,
+ find,
+ waitFor,
+} from '@ember/test-helpers';
import { setupApplicationTest } from 'admin/tests/helpers';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import { Response } from 'miragejs';
@@ -23,9 +30,10 @@ module(
const FIELD_BUCKET_NAME = '[name="bucket_name"]';
const FIELD_BUCKET_PREFIX = '[name="bucket_prefix"]';
- const FIELD_EDITOR = '[data-test-code-editor-field-editor] textarea';
const WORKER_FILTER_VALUE = '"dev" in "/tags/env"';
const FIELD_SCOPE = (scope) => `[value="${scope}"]`;
+ const EDITOR_WORKER_FILTER_CM_LOADED = '.cm-editor';
+ const EDITOR_WORKER_FILTER = '.hds-code-editor__editor';
const instances = {
scopes: {
@@ -79,7 +87,16 @@ module(
commonSelectors.FIELD_NAME_VALUE,
);
await click(FIELD_SCOPE('global'));
- await fillIn(FIELD_EDITOR, WORKER_FILTER_VALUE);
+ await waitFor(EDITOR_WORKER_FILTER_CM_LOADED);
+
+ const editorElement = find(EDITOR_WORKER_FILTER);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: WORKER_FILTER_VALUE,
+ },
+ });
assert.dom(FIELD_BUCKET_NAME).isNotDisabled();
assert.dom(FIELD_BUCKET_PREFIX).isNotDisabled();
@@ -106,7 +123,16 @@ module(
commonSelectors.FIELD_NAME_VALUE,
);
await click(FIELD_SCOPE(instances.scopes.org.scope.id));
- await fillIn(FIELD_EDITOR, WORKER_FILTER_VALUE);
+ await waitFor(EDITOR_WORKER_FILTER_CM_LOADED);
+
+ const editorElement = find(EDITOR_WORKER_FILTER);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: WORKER_FILTER_VALUE,
+ },
+ });
assert.dom(FIELD_BUCKET_NAME).isNotDisabled();
assert.dom(FIELD_BUCKET_PREFIX).isNotDisabled();
@@ -163,7 +189,16 @@ module(
await visit(urls.enableSessionRecording);
await click(commonSelectors.HREF(urls.newStorageBucket));
- await fillIn(FIELD_EDITOR, WORKER_FILTER_VALUE);
+ await waitFor(EDITOR_WORKER_FILTER_CM_LOADED);
+
+ const editorElement = find(EDITOR_WORKER_FILTER);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: WORKER_FILTER_VALUE,
+ },
+ });
await click(commonSelectors.SAVE_BTN);
assert.dom(commonSelectors.ALERT_TOAST_BODY).hasText(errorMessage);
diff --git a/ui/admin/tests/acceptance/targets/workers-test.js b/ui/admin/tests/acceptance/targets/workers-test.js
index 827edc2436..54bcd1c91d 100644
--- a/ui/admin/tests/acceptance/targets/workers-test.js
+++ b/ui/admin/tests/acceptance/targets/workers-test.js
@@ -4,7 +4,7 @@
*/
import { module, test } from 'qunit';
-import { visit, currentURL, click, fillIn } from '@ember/test-helpers';
+import { visit, currentURL, click, find, waitFor } from '@ember/test-helpers';
import { setupApplicationTest } from 'admin/tests/helpers';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import a11yAudit from 'ember-a11y-testing/test-support/audit';
@@ -22,6 +22,8 @@ module('Acceptance | targets | workers', function (hooks) {
const EGRESS_WORKER_FILTER_VALUE = '"egress" in "/worker/filters"';
const INGRESS_WORKER_FILTER_VALUE = '"ingress" in "/worker/filters"';
+ const CODE_EDITOR_CM = '.cm-editor';
+ const CODE_EDITOR_CONTENT_SELECTOR = '.hds-code-editor__editor';
const instances = {
scopes: {
@@ -187,11 +189,17 @@ module('Acceptance | targets | workers', function (hooks) {
await click(commonSelectors.HREF(urls.targetEditIngressFilter));
assert.strictEqual(currentURL(), urls.targetEditIngressFilter);
+ await waitFor(CODE_EDITOR_CM);
+
+ const editorElement = find(CODE_EDITOR_CONTENT_SELECTOR);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: INGRESS_WORKER_FILTER_VALUE,
+ },
+ });
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- INGRESS_WORKER_FILTER_VALUE,
- );
await click(commonSelectors.SAVE_BTN);
assert.strictEqual(currentURL(), urls.targetWorkers);
@@ -208,11 +216,17 @@ module('Acceptance | targets | workers', function (hooks) {
await click(commonSelectors.HREF(urls.targetEditIngressFilter));
assert.strictEqual(currentURL(), urls.targetEditIngressFilter);
+ await waitFor(CODE_EDITOR_CM);
+
+ const editorElement = find(CODE_EDITOR_CONTENT_SELECTOR);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: INGRESS_WORKER_FILTER_VALUE,
+ },
+ });
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- INGRESS_WORKER_FILTER_VALUE,
- );
await click(commonSelectors.CANCEL_BTN);
assert.strictEqual(currentURL(), urls.targetWorkers);
@@ -234,10 +248,17 @@ module('Acceptance | targets | workers', function (hooks) {
assert.strictEqual(currentURL(), urls.targetEditEgressFilter);
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- EGRESS_WORKER_FILTER_VALUE,
- );
+ await waitFor(CODE_EDITOR_CM);
+
+ const editorElement = find(CODE_EDITOR_CONTENT_SELECTOR);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: EGRESS_WORKER_FILTER_VALUE,
+ },
+ });
+
await click(commonSelectors.SAVE_BTN);
assert.strictEqual(currentURL(), urls.targetWorkers);
@@ -285,11 +306,17 @@ module('Acceptance | targets | workers', function (hooks) {
await click(commonSelectors.HREF(urls.targetEditEgressFilter));
assert.strictEqual(currentURL(), urls.targetEditEgressFilter);
+ await waitFor(CODE_EDITOR_CM);
+
+ const editorElement = find(CODE_EDITOR_CONTENT_SELECTOR);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: EGRESS_WORKER_FILTER_VALUE,
+ },
+ });
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- EGRESS_WORKER_FILTER_VALUE,
- );
await click(commonSelectors.CANCEL_BTN);
assert.strictEqual(currentURL(), urls.targetWorkers);
@@ -312,10 +339,16 @@ module('Acceptance | targets | workers', function (hooks) {
await click(commonSelectors.HREF(urls.targetEditIngressFilter));
assert.strictEqual(currentURL(), urls.targetEditIngressFilter);
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- INGRESS_WORKER_FILTER_VALUE,
- );
+ await waitFor(CODE_EDITOR_CM);
+
+ const editorElement = find(CODE_EDITOR_CONTENT_SELECTOR);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: INGRESS_WORKER_FILTER_VALUE,
+ },
+ });
await click(commonSelectors.HREF(urls.target));
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
@@ -339,10 +372,17 @@ module('Acceptance | targets | workers', function (hooks) {
await click(commonSelectors.HREF(urls.targetEditIngressFilter));
assert.strictEqual(currentURL(), urls.targetEditIngressFilter);
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- INGRESS_WORKER_FILTER_VALUE,
- );
+ await waitFor(CODE_EDITOR_CM);
+
+ const editorElement = find(CODE_EDITOR_CONTENT_SELECTOR);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: INGRESS_WORKER_FILTER_VALUE,
+ },
+ });
+
await click(commonSelectors.HREF(urls.target));
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
@@ -365,10 +405,17 @@ module('Acceptance | targets | workers', function (hooks) {
await click(commonSelectors.HREF(urls.targetEditEgressFilter));
assert.strictEqual(currentURL(), urls.targetEditEgressFilter);
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- EGRESS_WORKER_FILTER_VALUE,
- );
+ await waitFor(CODE_EDITOR_CM);
+
+ const editorElement = find(CODE_EDITOR_CONTENT_SELECTOR);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: EGRESS_WORKER_FILTER_VALUE,
+ },
+ });
+
await click(commonSelectors.HREF(urls.target));
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
@@ -391,11 +438,17 @@ module('Acceptance | targets | workers', function (hooks) {
await click(commonSelectors.HREF(urls.targetEditEgressFilter));
assert.strictEqual(currentURL(), urls.targetEditEgressFilter);
+ await waitFor(CODE_EDITOR_CM);
+
+ const editorElement = find(CODE_EDITOR_CONTENT_SELECTOR);
+ const editorView = editorElement.editor;
+ editorView.dispatch({
+ changes: {
+ from: editorView.state.selection.main.from,
+ insert: EGRESS_WORKER_FILTER_VALUE,
+ },
+ });
- await fillIn(
- commonSelectors.CODE_EDITOR_CONTENT,
- EGRESS_WORKER_FILTER_VALUE,
- );
await click(commonSelectors.HREF(urls.target));
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
diff --git a/ui/admin/tests/helpers/selectors.js b/ui/admin/tests/helpers/selectors.js
index 04ea289ce4..970cfc931d 100644
--- a/ui/admin/tests/helpers/selectors.js
+++ b/ui/admin/tests/helpers/selectors.js
@@ -96,5 +96,11 @@ export const TABLE_SORT_BTN_ARROW_UP = (column) =>
export const TABLE_SORT_BTN_ARROW_DOWN = (column) =>
`thead tr th:nth-child(${column}) button .hds-icon-arrow-down`;
+// Check if we delete it
export const CODE_EDITOR_CONTENT =
'[data-test-code-editor-field-editor] textarea';
+// Perhaps, new?
+export const CODE_EDITOR = '[data-test-code-editor]';
+export const CODE_EDITOR_CODE =
+ '[data-test-code-editor] .hds-code-editor__editor';
+export const CODE_EDITOR_CM = '[data-test-code-editor] .cm-editor';
diff --git a/ui/admin/tests/integration/components/form/field/json-secret-test.js b/ui/admin/tests/integration/components/form/field/json-secret-test.js
index 806536006d..21da1eca23 100644
--- a/ui/admin/tests/integration/components/form/field/json-secret-test.js
+++ b/ui/admin/tests/integration/components/form/field/json-secret-test.js
@@ -5,7 +5,7 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
-import { render, click } from '@ember/test-helpers';
+import { render, click, waitFor } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
import { setupIntl } from 'ember-intl/test-support';
@@ -30,9 +30,9 @@ module('Integration | Component | form/field/json-secret', function (hooks) {
assert.dom('.secret-editor').isVisible();
assert.dom('.secret-editor-json').isVisible();
- assert
- .dom('.secret-editor-json .CodeMirror-line')
- .hasText(this.model.json_object);
+
+ await waitFor('.cm-editor');
+ assert.dom('.cm-content').hasText(this.model.json_object);
});
test('it renders the disabled editor', async function (assert) {
diff --git a/ui/admin/tests/integration/components/worker-filter-generator/index-test.js b/ui/admin/tests/integration/components/worker-filter-generator/index-test.js
index 21d40cb930..8037ec2e2f 100644
--- a/ui/admin/tests/integration/components/worker-filter-generator/index-test.js
+++ b/ui/admin/tests/integration/components/worker-filter-generator/index-test.js
@@ -5,7 +5,7 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
-import { render, click, fillIn, select } from '@ember/test-helpers';
+import { render, click, fillIn, select, waitFor } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
import { setupIntl } from 'ember-intl/test-support';
@@ -15,9 +15,8 @@ module(
setupRenderingTest(hooks);
setupIntl(hooks, 'en-us');
- const CODE_EDITOR = '[data-test-code-editor-field-editor]';
- const CODE_EDITOR_LINE =
- '[data-test-code-editor-field-editor] .CodeMirror-line';
+ const CODE_EDITOR = '.hds-code-editor__editor';
+ const CODE_EDITOR_CONTENT = '.cm-content';
const FILTER_GENERATOR = '[name="filter_generator"]';
const SHOW_FILTER_GENERATOR = '[name="show_filter_generator"]';
const TAG_TYPE_OPTION = '[value="tag"]';
@@ -32,9 +31,10 @@ module(
await render(
hbs``,
);
+ await waitFor('.cm-editor');
assert.dom(CODE_EDITOR).isVisible();
- assert.dom(CODE_EDITOR_LINE).hasText(this.model.egress_worker_filter);
+ assert.dom(CODE_EDITOR_CONTENT).hasText(this.model.egress_worker_filter);
});
test('it renders correct content when ingress_worker_filter is passed in', async function (assert) {
@@ -42,9 +42,10 @@ module(
await render(
hbs``,
);
+ await waitFor('.cm-editor');
assert.dom(CODE_EDITOR).isVisible();
- assert.dom(CODE_EDITOR_LINE).hasText(this.model.ingress_worker_filter);
+ assert.dom(CODE_EDITOR_CONTENT).hasText(this.model.ingress_worker_filter);
});
test('toggleFilterGenerator shows filter generator when toggled on', async function (assert) {