From c8bca555dd8cfcf24d8f54f1bc4e9b3f31a16780 Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Thu, 28 May 2020 12:02:04 -0400 Subject: [PATCH 1/5] =?UTF-8?q?chore:=20=F0=9F=A4=96=20Add=20card=20link?= =?UTF-8?q?=20component=20to=20rose=20addon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rose/addon/components/rose/card/link.js | 7 +++ .../components/rose/card/link.stories.mdx | 60 +++++++++++++++++++ .../addon/styles/rose/components/_index.scss | 1 + .../styles/rose/components/card/_index.scss | 1 + .../styles/rose/components/card/_link.scss | 40 +++++++++++++ .../templates/components/rose/card/link.hbs | 17 ++++++ addons/rose/app/components/rose/card/link.js | 1 + .../rose/tests/dummy/app/templates/index.hbs | 3 + .../components/rose/card/link-test.js | 43 +++++++++++++ 9 files changed, 173 insertions(+) create mode 100644 addons/rose/addon/components/rose/card/link.js create mode 100644 addons/rose/addon/components/rose/card/link.stories.mdx create mode 100644 addons/rose/addon/styles/rose/components/card/_index.scss create mode 100644 addons/rose/addon/styles/rose/components/card/_link.scss create mode 100644 addons/rose/addon/templates/components/rose/card/link.hbs create mode 100644 addons/rose/app/components/rose/card/link.js create mode 100644 addons/rose/tests/integration/components/rose/card/link-test.js diff --git a/addons/rose/addon/components/rose/card/link.js b/addons/rose/addon/components/rose/card/link.js new file mode 100644 index 000000000..162a08a0e --- /dev/null +++ b/addons/rose/addon/components/rose/card/link.js @@ -0,0 +1,7 @@ +import Component from '@ember/component'; +import layout from '../../../templates/components/rose/card/link'; + +export default Component.extend({ + layout, + tagName: '', +}); diff --git a/addons/rose/addon/components/rose/card/link.stories.mdx b/addons/rose/addon/components/rose/card/link.stories.mdx new file mode 100644 index 000000000..571bfb28a --- /dev/null +++ b/addons/rose/addon/components/rose/card/link.stories.mdx @@ -0,0 +1,60 @@ +import { Meta, Story, Preview } from '@storybook/addon-docs/blocks'; +import { hbs } from 'ember-cli-htmlbars'; +import { text } from '@storybook/addon-knobs'; + + + +# Card Link + +Card link component wraps content with `LinkTo` component. Supports title and description. + +```html + +``` + + + {{ + template: hbs` + + `, + context: { + title: text('title', 'Card title'), + description: text('description', 'Card description'), + }, + }} + + +`@route` defaults to 'index' when not supplied. + +`@title` and `@description` are optional. Card expands to fit content. + +```html + +``` + + {{ + template: hbs` + + `, + context: { + title: text('title', 'Card title'), + }, + }} + + +```html + +``` + + {{ + template: hbs` + + `, + context: { + description: text('description', 'Card description'), + }, + }} + diff --git a/addons/rose/addon/styles/rose/components/_index.scss b/addons/rose/addon/styles/rose/components/_index.scss index e6d3eefd1..bbd2ebcda 100644 --- a/addons/rose/addon/styles/rose/components/_index.scss +++ b/addons/rose/addon/styles/rose/components/_index.scss @@ -3,3 +3,4 @@ @import 'header'; @import 'layout'; @import 'notification'; +@import 'card'; diff --git a/addons/rose/addon/styles/rose/components/card/_index.scss b/addons/rose/addon/styles/rose/components/card/_index.scss new file mode 100644 index 000000000..f641f2e2d --- /dev/null +++ b/addons/rose/addon/styles/rose/components/card/_index.scss @@ -0,0 +1 @@ +@import 'link'; diff --git a/addons/rose/addon/styles/rose/components/card/_link.scss b/addons/rose/addon/styles/rose/components/card/_link.scss new file mode 100644 index 000000000..df88cd300 --- /dev/null +++ b/addons/rose/addon/styles/rose/components/card/_link.scss @@ -0,0 +1,40 @@ +@use '../../variables/sizing'; +@use '../../utilities/type'; + +.rose-card-link { + @include type.type(s); + border: 1px solid var(--ui-gray-subtler-2); + border-radius: sizing.rems(xxxs); + color: var(--ui-gray); + padding: sizing.rems(s); + display: inline-grid; + + a { + text-decoration: none; + margin: 0; + padding: 0; + + &:focus { + outline: none; + } + } + + &:hover { + border-color: var(--ui-gray); + } + + &:focus-within { + border-color: var(--info); + } + + .rose-card-link-title { + @include type.type(m, semibold); + color: var(--stark); + margin: 0; + padding-bottom: sizing.rems(xs); + } + + .rose-card-link-description { + margin: 0; + } +} diff --git a/addons/rose/addon/templates/components/rose/card/link.hbs b/addons/rose/addon/templates/components/rose/card/link.hbs new file mode 100644 index 000000000..57aa2065d --- /dev/null +++ b/addons/rose/addon/templates/components/rose/card/link.hbs @@ -0,0 +1,17 @@ + diff --git a/addons/rose/app/components/rose/card/link.js b/addons/rose/app/components/rose/card/link.js new file mode 100644 index 000000000..350404c2b --- /dev/null +++ b/addons/rose/app/components/rose/card/link.js @@ -0,0 +1 @@ +export { default } from 'rose/components/rose/card/link'; diff --git a/addons/rose/tests/dummy/app/templates/index.hbs b/addons/rose/tests/dummy/app/templates/index.hbs index 12fac556c..b271fb748 100644 --- a/addons/rose/tests/dummy/app/templates/index.hbs +++ b/addons/rose/tests/dummy/app/templates/index.hbs @@ -181,3 +181,6 @@ Dummy app index template @submitText="Save" @cancelText="Cancel" /> + + + diff --git a/addons/rose/tests/integration/components/rose/card/link-test.js b/addons/rose/tests/integration/components/rose/card/link-test.js new file mode 100644 index 000000000..6b286fccf --- /dev/null +++ b/addons/rose/tests/integration/components/rose/card/link-test.js @@ -0,0 +1,43 @@ +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/card/link', function (hooks) { + setupRenderingTest(hooks); + + test('it renders', async function (assert) { + await render(hbs``); + assert.ok(find('article')); + assert.ok(find('.rose-card-link')); + }); + + test('it renders with @title', async function (assert) { + await render(hbs``); + assert.equal(find('a').title, 'card title'); + assert.equal( + find('.rose-card-link-title').textContent.trim(), + 'card title' + ); + }); + + test('it renders with @description', async function (assert) { + await render(hbs``); + assert.equal( + find('.rose-card-link-description').textContent.trim(), + 'card description' + ); + }); + + test('it renders with attributes', async function (assert) { + await render(hbs``); + assert.ok(find('#card')); + }); + + test('it renders with content', async function (assert) { + await render(hbs` +