From 6dee7cad620c6e58ea0c05a7e550085818760f25 Mon Sep 17 00:00:00 2001 From: Cameron Perera Date: Mon, 31 Jul 2023 11:48:38 -0500 Subject: [PATCH] Icu 10439 refactor layout sidebar into rose layout body content (#1807) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 🎸 Add BodyContent component to Rose::Layout * refactor: 💡 remove Layout Sidebar and use Rose Layout Sidebar ✅ Closes: ICU-10439 * fix: 🐛 add media specific styles to rose body content styles * refactor: 💡 update media rule max width to xlarge --- .../rose/layout/body-content/index.hbs | 15 +++++++ .../layout/body-content/index.stories.mdx | 28 +++++++++++++ .../components/rose/layout/body-content.js | 6 +++ .../rose/components/layout/_body-content.scss | 39 +++++++++++++++++++ .../styles/rose/components/layout/_index.scss | 1 + .../rose/layout/body-content-test.js | 39 +++++++++++++++++++ .../components/layout/sidebar/body/index.hbs | 8 ---- .../app/components/layout/sidebar/index.hbs | 13 ------- .../layout/sidebar/sidebar/index.hbs | 8 ---- ui/admin/app/styles/app.scss | 39 ++----------------- .../channels-by-connection/channel.hbs | 14 +++---- .../channels-by-connection/index.hbs | 14 +++---- .../scopes/scope/targets/target/index.hbs | 12 +++--- .../components/layout/sidebar-test.js | 28 ------------- .../components/layout/sidebar/body-test.js | 23 ----------- .../components/layout/sidebar/sidebar-test.js | 23 ----------- 16 files changed, 151 insertions(+), 159 deletions(-) create mode 100644 addons/rose/addon/components/rose/layout/body-content/index.hbs create mode 100644 addons/rose/addon/components/rose/layout/body-content/index.stories.mdx create mode 100644 addons/rose/app/components/rose/layout/body-content.js create mode 100644 addons/rose/app/styles/rose/components/layout/_body-content.scss create mode 100644 addons/rose/tests/integration/components/rose/layout/body-content-test.js delete mode 100644 ui/admin/app/components/layout/sidebar/body/index.hbs delete mode 100644 ui/admin/app/components/layout/sidebar/index.hbs delete mode 100644 ui/admin/app/components/layout/sidebar/sidebar/index.hbs delete mode 100644 ui/admin/tests/integration/components/layout/sidebar-test.js delete mode 100644 ui/admin/tests/integration/components/layout/sidebar/body-test.js delete mode 100644 ui/admin/tests/integration/components/layout/sidebar/sidebar-test.js diff --git a/addons/rose/addon/components/rose/layout/body-content/index.hbs b/addons/rose/addon/components/rose/layout/body-content/index.hbs new file mode 100644 index 000000000..0e991d4a2 --- /dev/null +++ b/addons/rose/addon/components/rose/layout/body-content/index.hbs @@ -0,0 +1,15 @@ +{{! + Copyright (c) HashiCorp, Inc. + SPDX-License-Identifier: MPL-2.0 +}} + +
+ {{yield + (hash + Body=(component 'rose/anonymous' class='rose-layout-body-content-body') + Sidebar=(component + 'rose/anonymous' class='rose-layout-body-content-sidebar' + ) + ) + }} +
\ No newline at end of file diff --git a/addons/rose/addon/components/rose/layout/body-content/index.stories.mdx b/addons/rose/addon/components/rose/layout/body-content/index.stories.mdx new file mode 100644 index 000000000..61bdb18f0 --- /dev/null +++ b/addons/rose/addon/components/rose/layout/body-content/index.stories.mdx @@ -0,0 +1,28 @@ +import { Meta, Story, Preview } from '@storybook/addon-docs'; +import { hbs } from 'ember-cli-htmlbars'; + + + +# Layout|BodyContent + +A page layout/positioning component that allows two distinct sections to be configured: body and sidebar. + +```handlebars + + + + +``` + + + + {{ + template: hbs` + + Body + Sidebar + + `, + }} + + diff --git a/addons/rose/app/components/rose/layout/body-content.js b/addons/rose/app/components/rose/layout/body-content.js new file mode 100644 index 000000000..26e6aa668 --- /dev/null +++ b/addons/rose/app/components/rose/layout/body-content.js @@ -0,0 +1,6 @@ +/** + * Copyright (c) HashiCorp, Inc. + * SPDX-License-Identifier: MPL-2.0 + */ + +export { default } from 'rose/components/rose/layout/body-content'; diff --git a/addons/rose/app/styles/rose/components/layout/_body-content.scss b/addons/rose/app/styles/rose/components/layout/_body-content.scss new file mode 100644 index 000000000..0195535af --- /dev/null +++ b/addons/rose/app/styles/rose/components/layout/_body-content.scss @@ -0,0 +1,39 @@ +/** + * Copyright (c) HashiCorp, Inc. + * SPDX-License-Identifier: MPL-2.0 + */ + +@use '../../variables/media'; + +.rose-layout-body-content { + display: grid; + grid-template-areas: 'body body sidebar'; + grid-template-columns: 1fr 1fr 300px; + grid-template-rows: auto 1fr; + gap: 2rem; + + &-body { + grid-area: body; + } + + &-sidebar { + grid-area: sidebar; + } +} + +@media (max-width: media.width(xlarge)) { + .rose-layout-body-content { + grid-template-areas: + 'body' + 'sidebar'; + grid-template-columns: auto; + + &-body { + min-width: 0; + } + + &-sidebar { + max-width: 300px; + } + } +} diff --git a/addons/rose/app/styles/rose/components/layout/_index.scss b/addons/rose/app/styles/rose/components/layout/_index.scss index 90850feb2..da27bc743 100644 --- a/addons/rose/app/styles/rose/components/layout/_index.scss +++ b/addons/rose/app/styles/rose/components/layout/_index.scss @@ -9,6 +9,7 @@ @import 'sidebar'; @import 'page'; @import 'centered'; +@import 'body-content'; // TODO: this is prescriptive and can be removed if it becomes a problem, // but used here reflects the fact that the "main" element, of which there diff --git a/addons/rose/tests/integration/components/rose/layout/body-content-test.js b/addons/rose/tests/integration/components/rose/layout/body-content-test.js new file mode 100644 index 000000000..5a704bfb0 --- /dev/null +++ b/addons/rose/tests/integration/components/rose/layout/body-content-test.js @@ -0,0 +1,39 @@ +/** + * Copyright (c) HashiCorp, Inc. + * SPDX-License-Identifier: MPL-2.0 + */ + +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/layout/body-content', function (hooks) { + setupRenderingTest(hooks); + + test('it renders', async function (assert) { + await render(hbs``); + + assert.dom('div').exists(); + assert.dom('.rose-layout-body-content').isVisible(); + }); + + test('it renders with attributes', async function (assert) { + await render(hbs``); + + assert.dom('#body-content').isVisible(); + }); + + test('it renders with content', async function (assert) { + await render(hbs` +