diff --git a/addons/rose/addon/components/rose/nav/breadcrumbs.js b/addons/rose/addon/components/rose/nav/breadcrumbs.js new file mode 100644 index 000000000..0f915d890 --- /dev/null +++ b/addons/rose/addon/components/rose/nav/breadcrumbs.js @@ -0,0 +1,10 @@ +import Component from '@ember/component'; +import layout from '../../../templates/components/rose/nav/breadcrumbs'; + +/** + * A navigation component with links. + */ +export default Component.extend({ + layout, + tagName: '', +}); diff --git a/addons/rose/addon/components/rose/nav/breadcrumbs.stories.mdx b/addons/rose/addon/components/rose/nav/breadcrumbs.stories.mdx new file mode 100644 index 000000000..5d1d00f4c --- /dev/null +++ b/addons/rose/addon/components/rose/nav/breadcrumbs.stories.mdx @@ -0,0 +1,27 @@ +import { Meta, Story, Preview } from '@storybook/addon-docs/blocks'; +import { hbs } from 'ember-cli-htmlbars'; +import { action } from '@storybook/addon-actions'; + + + +# Breadcrumbs Navigation + +A breadcrumbs component with links as crumbs. + +```html + + Level 1 + Level 2 + +``` + + + {{ + template: hbs` + + Level 1 + Level 2 + + `, + }} + diff --git a/addons/rose/addon/styles/rose/components/nav/_breadcrumbs.scss b/addons/rose/addon/styles/rose/components/nav/_breadcrumbs.scss new file mode 100644 index 000000000..c07156279 --- /dev/null +++ b/addons/rose/addon/styles/rose/components/nav/_breadcrumbs.scss @@ -0,0 +1,32 @@ +@use '../../variables/sizing'; +@use '../../utilities/type'; + +.rose-nav-breadcrumbs { + @include type.type(s, normal); + display: flex; + flex-wrap: wrap; + + .rose-nav-breadcrumbs-link { + --color: var(--ui-gray); + color: var(--color); + text-decoration: none; + cursor: pointer; + + &:hover { + --color: var(--action); + + &::after { + color: var(--ui-gray); + } + } + + &::after { + content: '\002F'; // "/" + margin: 0 sizing.rems(xs); + } + + &:last-child::after { + content: ''; + } + } +} diff --git a/addons/rose/addon/styles/rose/components/nav/_index.scss b/addons/rose/addon/styles/rose/components/nav/_index.scss index 4a208cbee..a9d88d3cc 100644 --- a/addons/rose/addon/styles/rose/components/nav/_index.scss +++ b/addons/rose/addon/styles/rose/components/nav/_index.scss @@ -1,2 +1,3 @@ @import 'sidebar'; @import 'tabs'; +@import 'breadcrumbs'; diff --git a/addons/rose/addon/templates/components/rose/nav/breadcrumbs.hbs b/addons/rose/addon/templates/components/rose/nav/breadcrumbs.hbs new file mode 100644 index 000000000..287e2cba3 --- /dev/null +++ b/addons/rose/addon/templates/components/rose/nav/breadcrumbs.hbs @@ -0,0 +1,5 @@ + diff --git a/addons/rose/app/components/rose/nav/breadcrumbs.js b/addons/rose/app/components/rose/nav/breadcrumbs.js new file mode 100644 index 000000000..bd57614dc --- /dev/null +++ b/addons/rose/app/components/rose/nav/breadcrumbs.js @@ -0,0 +1 @@ +export { default } from 'rose/components/rose/nav/breadcrumbs'; diff --git a/addons/rose/tests/dummy/app/templates/index.hbs b/addons/rose/tests/dummy/app/templates/index.hbs index 3554ea5f2..bb8ae24db 100644 --- a/addons/rose/tests/dummy/app/templates/index.hbs +++ b/addons/rose/tests/dummy/app/templates/index.hbs @@ -1,23 +1,7 @@ - - - - Address - Host Set - Name - Description - - - - - 1.1.1.1 - host-set-1, host-set-2 - optional name - description - - - - - Footer - - - + + Level 1 + Level 2 + Level 3 + Level 4 + Level 5 + diff --git a/addons/rose/tests/dummy/app/templates/playground.hbs b/addons/rose/tests/dummy/app/templates/playground.hbs index 576a37395..d12d03f09 100644 --- a/addons/rose/tests/dummy/app/templates/playground.hbs +++ b/addons/rose/tests/dummy/app/templates/playground.hbs @@ -205,5 +205,29 @@ + + + + + Address + Host Set + Name + Description + + + + + 1.1.1.1 + host-set-1, host-set-2 + optional name + description + + + + + Footer + + + diff --git a/addons/rose/tests/integration/components/rose/nav/breadcrumbs-test.js b/addons/rose/tests/integration/components/rose/nav/breadcrumbs-test.js new file mode 100644 index 000000000..1d8204eb4 --- /dev/null +++ b/addons/rose/tests/integration/components/rose/nav/breadcrumbs-test.js @@ -0,0 +1,26 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render, find, findAll } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('Integration | Component | rose/nav/breadcrumbs', function (hooks) { + setupRenderingTest(hooks); + + test('it renders', async function (assert) { + await render(hbs``); + assert.ok(find('.rose-nav-breadcrumbs')); + }); + + test('it renders with attributes', async function (assert) { + await render(hbs``); + assert.ok(find('#breadcrumbs')); + }); + + test('it renders with breadcrumb links', async function (assert) { + await render(hbs` + + + `); + assert.equal(findAll('.rose-nav-breadcrumbs-link').length, 2); + }); +});