From be3788b63776d9daec8ab13b0a72fdc0771b2ddf Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Wed, 27 May 2020 15:33:32 -0400 Subject: [PATCH] =?UTF-8?q?chore:=20=F0=9F=A4=96=20Introduce=20page=20layo?= =?UTF-8?q?ut/positioning=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rose/addon/components/rose/layout/page.js | 7 + .../components/rose/layout/page.stories.mdx | 30 ++ .../components/rose/layout/page/header.js | 7 + .../addon/components/rose/layout/page/main.js | 7 + .../components/rose/layout/page/sidebar.js | 7 + .../addon/styles/rose/components/_index.scss | 1 + .../styles/rose/components/layout/_index.scss | 34 ++ .../templates/components/rose/layout/page.hbs | 7 + .../components/rose/layout/page/header.hbs | 3 + .../components/rose/layout/page/main.hbs | 3 + .../components/rose/layout/page/sidebar.hbs | 3 + .../rose/app/components/rose/layout/page.js | 1 + .../app/components/rose/layout/page/header.js | 1 + .../app/components/rose/layout/page/main.js | 1 + .../components/rose/layout/page/sidebar.js | 1 + .../rose/tests/dummy/app/templates/index.hbs | 375 +++++++++--------- .../components/rose/layout/page-test.js | 47 +++ .../rose/layout/page/header-test.js | 26 ++ .../components/rose/layout/page/main-test.js | 26 ++ .../rose/layout/page/sidebar-test.js | 26 ++ 20 files changed, 428 insertions(+), 185 deletions(-) create mode 100644 addons/rose/addon/components/rose/layout/page.js create mode 100644 addons/rose/addon/components/rose/layout/page.stories.mdx create mode 100644 addons/rose/addon/components/rose/layout/page/header.js create mode 100644 addons/rose/addon/components/rose/layout/page/main.js create mode 100644 addons/rose/addon/components/rose/layout/page/sidebar.js create mode 100644 addons/rose/addon/styles/rose/components/layout/_index.scss create mode 100644 addons/rose/addon/templates/components/rose/layout/page.hbs create mode 100644 addons/rose/addon/templates/components/rose/layout/page/header.hbs create mode 100644 addons/rose/addon/templates/components/rose/layout/page/main.hbs create mode 100644 addons/rose/addon/templates/components/rose/layout/page/sidebar.hbs create mode 100644 addons/rose/app/components/rose/layout/page.js create mode 100644 addons/rose/app/components/rose/layout/page/header.js create mode 100644 addons/rose/app/components/rose/layout/page/main.js create mode 100644 addons/rose/app/components/rose/layout/page/sidebar.js create mode 100644 addons/rose/tests/integration/components/rose/layout/page-test.js create mode 100644 addons/rose/tests/integration/components/rose/layout/page/header-test.js create mode 100644 addons/rose/tests/integration/components/rose/layout/page/main-test.js create mode 100644 addons/rose/tests/integration/components/rose/layout/page/sidebar-test.js diff --git a/addons/rose/addon/components/rose/layout/page.js b/addons/rose/addon/components/rose/layout/page.js new file mode 100644 index 000000000..10190bcba --- /dev/null +++ b/addons/rose/addon/components/rose/layout/page.js @@ -0,0 +1,7 @@ +import Component from '@ember/component'; +import layout from '../../../templates/components/rose/layout/page'; + +export default Component.extend({ + layout, + tagName: '', +}); diff --git a/addons/rose/addon/components/rose/layout/page.stories.mdx b/addons/rose/addon/components/rose/layout/page.stories.mdx new file mode 100644 index 000000000..d8d239fa2 --- /dev/null +++ b/addons/rose/addon/components/rose/layout/page.stories.mdx @@ -0,0 +1,30 @@ +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'; + + + +# Layout|Page + +A page layout/positioning component that allows three distinct sections to be configured: header, sidebar, and main. + +```htmlbars + + + + + +``` + + + {{ + template: hbs` + + Header + Sidebar + Main + + `, + }} + diff --git a/addons/rose/addon/components/rose/layout/page/header.js b/addons/rose/addon/components/rose/layout/page/header.js new file mode 100644 index 000000000..45f4c6861 --- /dev/null +++ b/addons/rose/addon/components/rose/layout/page/header.js @@ -0,0 +1,7 @@ +import Component from '@ember/component'; +import layout from '../../../../templates/components/rose/layout/page/header'; + +export default Component.extend({ + layout, + tagName: '', +}); diff --git a/addons/rose/addon/components/rose/layout/page/main.js b/addons/rose/addon/components/rose/layout/page/main.js new file mode 100644 index 000000000..83b4d6dcb --- /dev/null +++ b/addons/rose/addon/components/rose/layout/page/main.js @@ -0,0 +1,7 @@ +import Component from '@ember/component'; +import layout from '../../../../templates/components/rose/layout/page/main'; + +export default Component.extend({ + layout, + tagName: '', +}); diff --git a/addons/rose/addon/components/rose/layout/page/sidebar.js b/addons/rose/addon/components/rose/layout/page/sidebar.js new file mode 100644 index 000000000..9df366f6d --- /dev/null +++ b/addons/rose/addon/components/rose/layout/page/sidebar.js @@ -0,0 +1,7 @@ +import Component from '@ember/component'; +import layout from '../../../../templates/components/rose/layout/page/sidebar'; + +export default Component.extend({ + layout, + tagName: '', +}); diff --git a/addons/rose/addon/styles/rose/components/_index.scss b/addons/rose/addon/styles/rose/components/_index.scss index 475417601..d19b6ef0d 100644 --- a/addons/rose/addon/styles/rose/components/_index.scss +++ b/addons/rose/addon/styles/rose/components/_index.scss @@ -1,3 +1,4 @@ @import 'button'; @import 'form'; @import 'header'; +@import 'layout'; diff --git a/addons/rose/addon/styles/rose/components/layout/_index.scss b/addons/rose/addon/styles/rose/components/layout/_index.scss new file mode 100644 index 000000000..1d7a445e3 --- /dev/null +++ b/addons/rose/addon/styles/rose/components/layout/_index.scss @@ -0,0 +1,34 @@ +@use '../../variables/media'; + +.rose-layout-page { + display: grid; + grid-template-areas: + 'header header header header' + 'sidebar main main main'; + grid-template-columns: 0.5fr repeat(3, 1fr); + grid-template-rows: 0.1fr auto; + height: 100vh; +} + +.rose-layout-header { + grid-area: header; +} + +.rose-layout-main { + grid-area: main; +} + +.rose-layout-sidebar { + grid-area: sidebar; +} + +@media (max-width: media.width(small)) { + .rose-layout-page { + grid-template-columns: 1fr; + grid-template-areas: + 'header' + 'sidebar' + 'main'; + padding-bottom: 0; + } +} diff --git a/addons/rose/addon/templates/components/rose/layout/page.hbs b/addons/rose/addon/templates/components/rose/layout/page.hbs new file mode 100644 index 000000000..73a8b205f --- /dev/null +++ b/addons/rose/addon/templates/components/rose/layout/page.hbs @@ -0,0 +1,7 @@ +
+ {{yield (hash + header=(component 'rose/layout/page/header') + main=(component 'rose/layout/page/main') + sidebar=(component 'rose/layout/page/sidebar') + )}} +
diff --git a/addons/rose/addon/templates/components/rose/layout/page/header.hbs b/addons/rose/addon/templates/components/rose/layout/page/header.hbs new file mode 100644 index 000000000..545ac6c22 --- /dev/null +++ b/addons/rose/addon/templates/components/rose/layout/page/header.hbs @@ -0,0 +1,3 @@ +
+ {{yield}} +
diff --git a/addons/rose/addon/templates/components/rose/layout/page/main.hbs b/addons/rose/addon/templates/components/rose/layout/page/main.hbs new file mode 100644 index 000000000..1752414ce --- /dev/null +++ b/addons/rose/addon/templates/components/rose/layout/page/main.hbs @@ -0,0 +1,3 @@ +
+ {{yield}} +
diff --git a/addons/rose/addon/templates/components/rose/layout/page/sidebar.hbs b/addons/rose/addon/templates/components/rose/layout/page/sidebar.hbs new file mode 100644 index 000000000..07f519a2b --- /dev/null +++ b/addons/rose/addon/templates/components/rose/layout/page/sidebar.hbs @@ -0,0 +1,3 @@ + diff --git a/addons/rose/app/components/rose/layout/page.js b/addons/rose/app/components/rose/layout/page.js new file mode 100644 index 000000000..a88273d71 --- /dev/null +++ b/addons/rose/app/components/rose/layout/page.js @@ -0,0 +1 @@ +export { default } from 'rose/components/rose/layout/page'; diff --git a/addons/rose/app/components/rose/layout/page/header.js b/addons/rose/app/components/rose/layout/page/header.js new file mode 100644 index 000000000..77437dd12 --- /dev/null +++ b/addons/rose/app/components/rose/layout/page/header.js @@ -0,0 +1 @@ +export { default } from 'rose/components/rose/layout/page/header'; diff --git a/addons/rose/app/components/rose/layout/page/main.js b/addons/rose/app/components/rose/layout/page/main.js new file mode 100644 index 000000000..3bde34d59 --- /dev/null +++ b/addons/rose/app/components/rose/layout/page/main.js @@ -0,0 +1 @@ +export { default } from 'rose/components/rose/layout/page/main'; diff --git a/addons/rose/app/components/rose/layout/page/sidebar.js b/addons/rose/app/components/rose/layout/page/sidebar.js new file mode 100644 index 000000000..aa6735e84 --- /dev/null +++ b/addons/rose/app/components/rose/layout/page/sidebar.js @@ -0,0 +1 @@ +export { default } from 'rose/components/rose/layout/page/sidebar'; diff --git a/addons/rose/tests/dummy/app/templates/index.hbs b/addons/rose/tests/dummy/app/templates/index.hbs index 400f1d6f1..b839b6e8b 100644 --- a/addons/rose/tests/dummy/app/templates/index.hbs +++ b/addons/rose/tests/dummy/app/templates/index.hbs @@ -1,200 +1,205 @@ - + + + + - - - - - Menu item - Menu item - Button menu item - - Section - Section - + + + Menu item + Menu item + Button menu item + + Section + Section + - - + + Menu item + Menu item + Button menu item + + + + + + + + Dummy app index template + +

Icon

+ + + + +

Button

+ Primary +
+ Primary +
+ + Secondary +
+ Secondary +
+ +

Form

+ - Menu item - Menu item - Button menu item - - + Choose an option + Value 1 + Value 2 + Value 3 + -
+ + Choose an option + + + + + + + + + -Dummy app index template + -

Icon

- - - + -

Button

-Primary -
-Primary -
+ -Secondary -
-Secondary -
+ -

Form

- - Choose an option - Value 1 - Value 2 - Value 3 - +

Checkbox

+ + + + + - - Choose an option - +

Radio field

+ + + - + + - +

Radio field group

+ + + + + - - - - - - - - - - - - - -

Checkbox

- - - - - - -

Radio field

- - - - - - - -

Radio field group

- - - - - + + diff --git a/addons/rose/tests/integration/components/rose/layout/page-test.js b/addons/rose/tests/integration/components/rose/layout/page-test.js new file mode 100644 index 000000000..ec21ff507 --- /dev/null +++ b/addons/rose/tests/integration/components/rose/layout/page-test.js @@ -0,0 +1,47 @@ +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/layout/page', function (hooks) { + setupRenderingTest(hooks); + + test('it renders', async function (assert) { + await render(hbs``); + assert.ok(find('div')); + assert.ok(find('.rose-layout-page')); + }); + + test('it renders with attributes', async function (assert) { + await render(hbs``); + assert.ok(find('#page')); + }); + + test('it renders with content', async function (assert) { + await render(hbs` +