Skip to content

Commit 5f06f18

Browse files
authored
Merge pull request #413 from kwiksilver3441/setup
BButton's script setup conversion and improvements
2 parents a54b509 + 80b3186 commit 5f06f18

File tree

8 files changed

+80
-85
lines changed

8 files changed

+80
-85
lines changed

src/BootstrapVue.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ export {default as BBadge} from './components/BBadge/BBadge.vue'
1616
export {default as BBreadcrumb} from './components/BBreadcrumb/BBreadcrumb.vue'
1717
export {default as BBreadcrumbItem} from './components/BBreadcrumb/BBreadcrumbItem.vue'
1818
export {default as BButton} from './components/BButton/BButton.vue'
19-
export {default as BButtonGroup} from './components/BButtonGroup.vue'
20-
export {default as BButtonToolbar} from './components/BButtonToolbar.vue'
19+
export {default as BButtonGroup} from './components/BButton/BButtonGroup.vue'
20+
export {default as BButtonToolbar} from './components/BButton/BButtonToolbar.vue'
2121
export {default as BCard} from './components/BCard/BCard.vue'
2222
export {default as BCardBody} from './components/BCard/BCardBody.vue'
2323
export {default as BCardFooter} from './components/BCard/BCardFooter.vue'

src/components/BButton/BButton.vue

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<script lang="ts">
88
import {computed, defineComponent, PropType} from 'vue'
9-
import {ButtonVariant, InputSize} from '../../types'
9+
import type {ButtonVariant, InputSize, LinkTarget} from '@/types'
1010
import {BLINK_PROPS} from '../BLink/BLink.vue'
1111
1212
export default defineComponent({
@@ -22,7 +22,7 @@ export default defineComponent({
2222
size: {type: String as PropType<InputSize>},
2323
squared: {type: Boolean, default: false},
2424
tag: {type: String, default: 'button'},
25-
target: {type: String, default: '_self'},
25+
target: {type: String as PropType<LinkTarget>, default: '_self'},
2626
type: {type: String, default: 'button'},
2727
variant: {type: String as PropType<ButtonVariant>, default: 'secondary'},
2828
},
@@ -64,7 +64,12 @@ export default defineComponent({
6464
'routerTag': isBLink ? props.routerTag : null,
6565
}))
6666
67-
const clicked = function (e: PointerEvent) {
67+
const computedTag = computed<string>(() => {
68+
if (isBLink) return 'b-link'
69+
return props.href ? 'a' : props.tag
70+
})
71+
72+
const clicked = (e: MouseEvent): void => {
6873
if (props.disabled) {
6974
e.preventDefault()
7075
e.stopPropagation()
@@ -76,11 +81,6 @@ export default defineComponent({
7681
}
7782
}
7883
79-
const computedTag = computed(() => {
80-
if (isBLink) return 'b-link'
81-
return props.href ? 'a' : props.tag
82-
})
83-
8484
return {
8585
classes,
8686
attrs,
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<template>
2+
<component :is="tag" :class="classes" role="group" :aria-role="ariaRole">
3+
<slot />
4+
</component>
5+
</template>
6+
7+
<script setup lang="ts">
8+
// import type {BButtonGroupProps} from '@/types/components'
9+
import {computed} from 'vue'
10+
11+
interface BButtonGroupProps {
12+
ariaRole?: string
13+
size?: string
14+
tag?: string
15+
vertical?: boolean
16+
}
17+
18+
const props = withDefaults(defineProps<BButtonGroupProps>(), {
19+
ariaRole: 'group',
20+
tag: 'div',
21+
vertical: false,
22+
})
23+
24+
const classes = computed(() => ({
25+
'btn-group': !props.vertical,
26+
'btn-group-vertical': props.vertical,
27+
[`btn-group-${props.size}`]: props.size,
28+
}))
29+
</script>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<template>
2+
<div :class="classes" class="btn-toolbar" role="toolbar" :aria-label="ariaRole">
3+
<slot />
4+
</div>
5+
</template>
6+
7+
<script setup lang="ts">
8+
// import type {BButtonToolbarProps} from '@/types/components'
9+
import {computed} from 'vue'
10+
11+
interface BButtonToolbarProps {
12+
ariaRole?: string
13+
justify?: boolean
14+
// keyNav?: boolean
15+
}
16+
17+
const props = withDefaults(defineProps<BButtonToolbarProps>(), {
18+
ariaRole: 'group',
19+
justify: false,
20+
})
21+
22+
const classes = computed(() => ({
23+
'justify-content-between': props.justify,
24+
}))
25+
</script>

src/components/BButton/BCloseButton.vue

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,21 @@
88
/>
99
</template>
1010

11-
<script lang="ts">
12-
import {computed, defineComponent} from 'vue'
11+
<script setup lang="ts">
12+
// import type {BCloseButtonProps} from '@/types/components'
13+
import {computed} from 'vue'
1314
14-
export default defineComponent({
15-
name: 'BCloseButton',
16-
props: {
17-
disabled: {type: Boolean, default: false},
18-
white: {type: Boolean, default: false},
19-
},
20-
setup(props) {
21-
const classes = computed(() => ({
22-
'btn-close-white': props.white,
23-
}))
15+
interface BCloseButtonProps {
16+
disabled?: boolean
17+
white?: boolean
18+
}
2419
25-
return {
26-
classes,
27-
}
28-
},
20+
const props = withDefaults(defineProps<BCloseButtonProps>(), {
21+
disabled: false,
22+
white: false,
2923
})
24+
25+
const classes = computed(() => ({
26+
'btn-close-white': props.white,
27+
}))
3028
</script>

src/components/BButtonGroup.vue

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

src/components/BButtonToolbar.vue

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

src/components/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import BBadge from './BBadge/BBadge.vue'
77
import BBreadcrumb from './BBreadcrumb/BBreadcrumb.vue'
88
import BBreadcrumbItem from './BBreadcrumb/BBreadcrumbItem.vue'
99
import BButton from './BButton/BButton.vue'
10-
import BButtonGroup from './BButtonGroup.vue'
11-
import BButtonToolbar from './BButtonToolbar.vue'
10+
import BButtonGroup from './BButton/BButtonGroup.vue'
11+
import BButtonToolbar from './BButton/BButtonToolbar.vue'
1212
import BCard from './BCard/BCard.vue'
1313
import BCardBody from './BCard/BCardBody.vue'
1414
import BCardFooter from './BCard/BCardFooter.vue'

0 commit comments

Comments
 (0)