Skip to content

Commit 08729d6

Browse files
committed
refactor: merge CNavbarToggler and CSidebarToggler into CToggler
1 parent fce76c0 commit 08729d6

File tree

14 files changed

+111
-143
lines changed

14 files changed

+111
-143
lines changed

src/components/Navbar/CNavbarToggler.vue

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/components/Navbar/index.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
import CNavbar from './CNavbar'
22
import CNavbarNav from './CNavbarNav'
3-
import CNavbarToggler from './CNavbarToggler'
43
import CNavbarBrand from './CNavbarBrand'
54

65
export {
76
CNavbar,
87
CNavbarNav,
9-
CNavbarToggler,
108
CNavbarBrand
119
}

src/components/Navbar/tests/CNavbarToggler.spec.js

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/components/Navbar/tests/__snapshots__/CNavbarToggler.spec.js.snap

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/components/Sidebar/CSidebarToggler.vue

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/components/Sidebar/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import CSidebarNavDivider from './CSidebarNavDivider'
1010
import CSidebarNavDropdown from './CSidebarNavDropdown'
1111
import CSidebarNavLink from './CSidebarNavLink'
1212
import CSidebarNavTitle from './CSidebarNavTitle'
13-
import CSidebarToggler from './CSidebarToggler'
1413

1514
export {
1615
CSidebar,
@@ -24,6 +23,5 @@ export {
2423
CSidebarNavDivider,
2524
CSidebarNavDropdown,
2625
CSidebarNavLink,
27-
CSidebarNavTitle,
28-
CSidebarToggler
26+
CSidebarNavTitle
2927
}

src/components/Sidebar/tests/CSidebarToggler.spec.js

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/components/Sidebar/tests/__snapshots__/CSidebarToggler.spec.js.snap

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/components/Toggler/CToggler.vue

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<script>
2+
import { mergeData } from 'vue-functional-data-merge'
3+
export default {
4+
name: 'CToggler',
5+
functional: true,
6+
props: {
7+
tag: {
8+
type: String,
9+
default: 'button'
10+
},
11+
inHeader: Boolean,
12+
inNavbar: Boolean
13+
},
14+
render (h, { data, props, slots }) {
15+
const attrs = props.tag === 'button' ? { type: 'button' } : null
16+
const type = props.inNavbar ? 'navbar' : props.inHeader ? 'header' : null
17+
const staticClass = type ? `${type}-toggler` : ''
18+
const iconClass = type ? `${staticClass}-icon` : ''
19+
return h(
20+
props.tag,
21+
mergeData({
22+
staticClass,
23+
attrs
24+
}, data),
25+
[
26+
slots().default ||
27+
h('span', { class: iconClass })
28+
]
29+
)
30+
}
31+
}
32+
</script>

src/components/Toggler/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import CToggler from './CToggler'
2+
3+
export {
4+
CToggler
5+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { mount } from '@vue/test-utils'
2+
import Component from '../CToggler'
3+
4+
const ComponentName = 'CToggler'
5+
const wrapper = mount(Component)
6+
7+
const wrapperNavbar = mount(Component, {
8+
propsData: {
9+
inNavbar: true
10+
},
11+
slots: {
12+
default: 'icon'
13+
}
14+
})
15+
16+
const wrapperHeader = mount(Component, {
17+
propsData: {
18+
inHeader: true,
19+
tag: 'div'
20+
}
21+
})
22+
23+
describe(`${ComponentName} .vue`, () => {
24+
it('has a name', () => {
25+
expect(Component.name).toMatch(ComponentName)
26+
})
27+
it('renders correctly', () => {
28+
expect(wrapper.element).toMatchSnapshot()
29+
})
30+
it('renders correctly inNavbar', () => {
31+
expect(wrapperNavbar.element).toMatchSnapshot()
32+
})
33+
it('renders correctly inHeader', () => {
34+
expect(wrapperHeader.element).toMatchSnapshot()
35+
})
36+
})
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`CToggler .vue renders correctly 1`] = `
4+
<button
5+
type="button"
6+
>
7+
<span
8+
class=""
9+
/>
10+
</button>
11+
`;
12+
13+
exports[`CToggler .vue renders correctly inHeader 1`] = `
14+
<div
15+
class="header-toggler"
16+
>
17+
<span
18+
class="header-toggler-icon"
19+
/>
20+
</div>
21+
`;
22+
23+
exports[`CToggler .vue renders correctly inNavbar 1`] = `
24+
<button
25+
class="navbar-toggler"
26+
type="button"
27+
>
28+
icon
29+
</button>
30+
`;

src/components/index.d.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -417,10 +417,6 @@ export declare class CNavbarNav extends Vue {
417417
tag: string
418418
}
419419

420-
export declare class CNavbarToggler extends Vue {
421-
tag: string
422-
}
423-
424420
export declare class CPagination extends Vue {
425421
activePage: number
426422
pages: number
@@ -607,6 +603,12 @@ export declare class CToaster extends ToastProps {
607603
reverse: boolean
608604
}
609605

606+
export declare class CToggler extends Vue {
607+
tag: string
608+
inNavbar: boolean
609+
inHeader: boolean
610+
}
611+
610612
export declare class CTreeGenerator extends Vue {
611613
items: object
612614
components: object

src/components/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,5 @@ export * from './Switch'
3030
export * from './Table'
3131
export * from './Tabs'
3232
export * from './Toast'
33+
export * from './Toggler'
3334
export * from './Widgets'

0 commit comments

Comments
 (0)