Skip to content
This repository has been archived by the owner on Jan 3, 2024. It is now read-only.

Add lead breadcrumb variation #806

Merged
merged 1 commit into from
Jul 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions changelog/unreleased/lead-variation-breadcrumbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Enhancement: Add lead breadcrumb variation

We've added a lead variation to the breadcrumbs.
This variation gives large font size to breadcrumb items.

https://github.com/owncloud/owncloud-design-system/pull/806
35 changes: 35 additions & 0 deletions src/elements/OcBreadcrumb.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { shallowMount } from "@vue/test-utils"
import Breadcrumb from "./OcBreadcrumb.vue"

const items = [
{ text:'First folder', to:{ path:'folder' } },
{ text:'Subfolder', onClick: () => alert('Breadcrumb clicked!') },
{ text:'Deep', to:{ path:'folder' } },
{ text:'Deeper ellipsize in responsive mode' },
]

describe("OcBreadcrumb", () => {
it("sets correct variation", () => {
const wrapper = shallowMount(Breadcrumb, {
propsData: {
variation: "lead",
items
}
})

expect(wrapper.props().variation).toMatch("lead")
expect(wrapper.classes()).toContain("oc-breadcrumb-lead")
expect(wrapper).toMatchSnapshot()
}),

it("displays all items", () => {
const wrapper = shallowMount(Breadcrumb, {
propsData: {
items
}
})

expect(wrapper.findAll(".oc-breadcrumb-list-item").length).toBe(4)
expect(wrapper).toMatchSnapshot()
})
})
33 changes: 26 additions & 7 deletions src/elements/OcBreadcrumb.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<template>
<div class="oc-breadcrumb">
<div :class="`oc-breadcrumb oc-breadcrumb-${variation}`">
<ul class="oc-breadcrumb-list">
<li v-for="(item, index) in items" :key="index">
<li v-for="(item, index) in items" :key="index" class="oc-breadcrumb-list-item">
<router-link v-if="home && index === 0" :to="item.to" class="uk-flex"
><oc-icon name="home"
/></router-link>
Expand Down Expand Up @@ -33,6 +33,9 @@
</template>

<script>
import OcDrop from "./OCDrop.vue"
import OcIcon from "./OcIcon.vue"

/**
* Displays a breadcrumb. Each item in the items property has the following elements:
*
Expand All @@ -44,13 +47,18 @@ export default {
name: "oc-breadcrumb",
status: "review",
release: "1.0.0",

components: {
OcDrop,
OcIcon
},

props: {
/**
* Array of breadcrub items
*/
items: {
type: Array,
default: () => [],
required: true,
},
/**
Expand All @@ -61,6 +69,16 @@ export default {
type: [Boolean],
default: false,
},
/**
* Variation of breadcrumbs
* Can be `default` or `lead`
*/
variation: {
type: String,
required: false,
default: "default",
validator: value => value === "lead" || value === "default"
}
},
computed: {
$_ocBreadcrumb_dropdownItems() {
Expand All @@ -78,11 +96,12 @@ export default {
</script>

<docs>
```vue
```js
<template>
<section>
<oc-breadcrumb :items="items" home></oc-breadcrumb>
</section>
<div>
<oc-breadcrumb :items="items" home class="uk-margin-bottom" />
<oc-breadcrumb :items="items" variation="lead" />
</div>
</template>
<script>
export default {
Expand Down
61 changes: 61 additions & 0 deletions src/elements/__snapshots__/OcBreadcrumb.spec.js.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`OcBreadcrumb displays all items 1`] = `
<div class="oc-breadcrumb oc-breadcrumb-default">
<ul class="oc-breadcrumb-list">
<li class="oc-breadcrumb-list-item">
<router-link-stub tag="a" to="[object Object]">First folder</router-link-stub>
</li>
<li class="oc-breadcrumb-list-item"><a>Subfolder</a></li>
<li class="oc-breadcrumb-list-item">
<router-link-stub tag="a" to="[object Object]">Deep</router-link-stub>
</li>
<li class="oc-breadcrumb-list-item"><span>Deeper ellipsize in responsive mode</span></li>
</ul>
<div class="oc-breadcrumb-drop"><label class="oc-breadcrumb-drop-label"><span class="oc-breadcrumb-drop-label-text">Deeper ellipsize in responsive mode</span>
<oc-icon-stub name="expand_more" arialabel="icon" type="span" size="small" variation="system" class="oc-breadcrumb-drop-label-icon"></oc-icon-stub>
</label>
<oc-drop-stub toggle="- *" position="bottom-left" mode="click" options="[object Object]">
<ul class="uk-nav uk-nav-default">
<li>
<router-link-stub tag="a" to="[object Object]">Deep</router-link-stub>
</li>
<li><a>Subfolder</a></li>
<li>
<router-link-stub tag="a" to="[object Object]">First folder</router-link-stub>
</li>
</ul>
</oc-drop-stub>
</div>
</div>
`;

exports[`OcBreadcrumb sets correct variation 1`] = `
<div class="oc-breadcrumb oc-breadcrumb-lead">
<ul class="oc-breadcrumb-list">
<li class="oc-breadcrumb-list-item">
<router-link-stub tag="a" to="[object Object]">First folder</router-link-stub>
</li>
<li class="oc-breadcrumb-list-item"><a>Subfolder</a></li>
<li class="oc-breadcrumb-list-item">
<router-link-stub tag="a" to="[object Object]">Deep</router-link-stub>
</li>
<li class="oc-breadcrumb-list-item"><span>Deeper ellipsize in responsive mode</span></li>
</ul>
<div class="oc-breadcrumb-drop"><label class="oc-breadcrumb-drop-label"><span class="oc-breadcrumb-drop-label-text">Deeper ellipsize in responsive mode</span>
<oc-icon-stub name="expand_more" arialabel="icon" type="span" size="small" variation="system" class="oc-breadcrumb-drop-label-icon"></oc-icon-stub>
</label>
<oc-drop-stub toggle="- *" position="bottom-left" mode="click" options="[object Object]">
<ul class="uk-nav uk-nav-default">
<li>
<router-link-stub tag="a" to="[object Object]">Deep</router-link-stub>
</li>
<li><a>Subfolder</a></li>
<li>
<router-link-stub tag="a" to="[object Object]">First folder</router-link-stub>
</li>
</ul>
</oc-drop-stub>
</div>
</div>
`;
9 changes: 9 additions & 0 deletions src/styles/theme/oc-breadcrumb.scss
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,13 @@
}
}
}

&-lead &-list-item {
&::before,
a,
span {
// FIXME: Remove important after we get rid of UIKit
font-size: $large-font-size !important;
}
}
}