From 5f15d13f449311898ea99953571b98896a6cc54c Mon Sep 17 00:00:00 2001 From: Issayah Date: Sun, 10 Mar 2024 12:53:38 -0500 Subject: [PATCH 01/20] feat(BDropdown)!: replace "container" prop with "teleportTo" feat(BDropdown): add teleportDisabled prop feat(BPopover)!: replace "container" prop with "teleportTo" feat(BPopover): add teleportDisabled prop feat: export component prop types refactor: use defineModel > useVModel fixes #1799 fix(generics): use generic constraints for BTable & BTableLite refactor: move all props into ComponentProps.ts -> export types & for future global options overhaul --- apps/docs/.vitepress/theme/Layout.vue | 4 +- .../src/components/Comps/TPopover.vue | 2 +- .../src/components/BAccordion/BAccordion.vue | 29 +- .../components/BAccordion/BAccordionItem.vue | 64 +- .../src/components/BAlert/BAlert.vue | 53 +- .../src/components/BAvatar/BAvatar.vue | 137 +-- .../src/components/BAvatar/BAvatarGroup.vue | 55 +- .../src/components/BBadge/BBadge.vue | 81 +- .../components/BBreadcrumb/BBreadcrumb.vue | 9 +- .../BBreadcrumb/BBreadcrumbItem.vue | 66 +- .../src/components/BButton/BButton.vue | 93 +- .../src/components/BButton/BButtonGroup.vue | 22 +- .../src/components/BButton/BButtonToolbar.vue | 19 +- .../src/components/BButton/BCloseButton.vue | 19 +- .../src/components/BCard/BCard.vue | 146 +-- .../src/components/BCard/BCardBody.vue | 46 +- .../src/components/BCard/BCardGroup.vue | 18 +- .../src/components/BCard/BCardImg.vue | 62 +- .../src/components/BCard/BCardSubtitle.vue | 19 +- .../src/components/BCard/BCardText.vue | 16 +- .../src/components/BCard/BCardTitle.vue | 16 +- .../src/components/BCarousel/BCarousel.vue | 84 +- .../components/BCarousel/BCarouselSlide.vue | 64 +- .../src/components/BCollapse.vue | 40 +- .../src/components/BContainer.vue | 22 +- .../src/components/BDropdown/BDropdown.vue | 11 +- .../components/BDropdown/BDropdownDivider.vue | 13 +- .../components/BDropdown/BDropdownGroup.vue | 28 +- .../components/BDropdown/BDropdownItem.vue | 64 +- .../BDropdown/BDropdownItemButton.vue | 25 +- .../components/BDropdown/BDropdownText.vue | 13 +- .../components/BForm/BFormFloatingLabel.vue | 19 +- .../src/components/BForm/BFormRow.vue | 13 +- .../src/components/BForm/BFormText.vue | 25 +- .../BFormCheckbox/BFormCheckbox.vue | 83 +- .../BFormCheckbox/BFormCheckboxGroup.vue | 83 +- .../src/components/BFormFile/BFormFile.vue | 72 +- .../src/components/BFormGroup/BFormGroup.vue | 5 +- .../src/components/BFormInput/BFormInput.vue | 73 +- .../src/components/BFormRadio/BFormRadio.vue | 70 +- .../components/BFormRadio/BFormRadioGroup.vue | 80 +- .../components/BFormSelect/BFormSelect.vue | 92 +- .../BFormSelect/BFormSelectOption.vue | 16 +- .../BFormSelect/BFormSelectOptionGroup.vue | 30 +- .../BFormSpinbutton/BFormSpinbutton.vue | 96 +- .../src/components/BFormTags/BFormTag.vue | 34 +- .../src/components/BFormTags/BFormTags.vue | 117 +-- .../BFormTextarea/BFormTextarea.vue | 69 +- .../components/BInputGroup/BInputGroup.vue | 31 +- .../BInputGroup/BInputGroupText.vue | 16 +- .../src/components/BListGroup/BListGroup.vue | 22 +- .../components/BListGroup/BListGroupItem.vue | 67 +- .../src/components/BModal/BModal.vue | 6 +- .../components/BModal/BModalOrchestrator.vue | 16 +- .../src/components/BNav/BNav.vue | 40 +- .../src/components/BNav/BNavForm.vue | 27 +- .../src/components/BNav/BNavItem.vue | 62 +- .../src/components/BNav/BNavItemDropdown.vue | 6 +- .../src/components/BNav/BNavText.vue | 9 +- .../src/components/BNavbar/BNavbar.vue | 34 +- .../src/components/BNavbar/BNavbarBrand.vue | 59 +- .../src/components/BNavbar/BNavbarNav.vue | 25 +- .../src/components/BNavbar/BNavbarToggle.vue | 18 +- .../src/components/BOffcanvas/BOffcanvas.vue | 89 +- .../src/components/BOverlay/BOverlay.vue | 74 +- .../components/BPagination/BPagination.vue | 104 +- .../components/BPlaceholder/BPlaceholder.vue | 31 +- .../BPlaceholder/BPlaceholderButton.vue | 25 +- .../BPlaceholder/BPlaceholderCard.vue | 67 +- .../BPlaceholder/BPlaceholderTable.vue | 64 +- .../BPlaceholder/BPlaceholderWrapper.vue | 13 +- .../src/components/BPopover.vue | 8 +- .../src/components/BProgress/BProgress.vue | 39 +- .../src/components/BSpinner.vue | 28 +- .../src/components/BTable/BTable.vue | 227 ++-- .../src/components/BTable/BTableLite.vue | 2 +- .../src/components/BTable/BTbody.vue | 13 +- .../src/components/BTable/BTd.vue | 25 +- .../src/components/BTable/BTfoot.vue | 13 +- .../src/components/BTable/BTh.vue | 25 +- .../src/components/BTable/BThead.vue | 13 +- .../src/components/BTable/BTr.vue | 13 +- .../src/components/BTable/table.spec.ts | 2 +- .../src/components/BTabs/BTab.vue | 57 +- .../src/components/BTabs/BTabs.vue | 95 +- .../src/components/BToast/BToast.vue | 6 +- .../components/BToast/BToastOrchestrator.vue | 20 +- .../components/BTransition/transition.spec.ts | 10 +- .../src/types/CommonTypes.ts | 7 + .../src/types/ComponentProps.ts | 984 +++++++++++++++++- .../src/types/TableTypes.ts | 2 + .../src/types/exports/index.ts | 2 + 92 files changed, 2337 insertions(+), 2476 deletions(-) diff --git a/apps/docs/.vitepress/theme/Layout.vue b/apps/docs/.vitepress/theme/Layout.vue index e34fb4e00..7cdc29206 100644 --- a/apps/docs/.vitepress/theme/Layout.vue +++ b/apps/docs/.vitepress/theme/Layout.vue @@ -89,7 +89,7 @@ - + diff --git a/packages/bootstrap-vue-next/src/types/ComponentProps.ts b/packages/bootstrap-vue-next/src/types/ComponentProps.ts index b78327fa3..36b3b7fce 100644 --- a/packages/bootstrap-vue-next/src/types/ComponentProps.ts +++ b/packages/bootstrap-vue-next/src/types/ComponentProps.ts @@ -951,7 +951,7 @@ export type BTableSimpleProps = { responsive?: boolean | Breakpoint small?: boolean stacked?: boolean | Breakpoint - stickyHeader?: boolean + stickyHeader?: boolean | Numberish striped?: boolean stripedColumns?: boolean tableClass?: ClassValue From 88f38eee745a81f783adb0e79a48fef4729a838b Mon Sep 17 00:00:00 2001 From: Issayah Date: Tue, 2 Apr 2024 11:37:47 -0500 Subject: [PATCH 08/20] refactor: make useAvatarSize more generic, reuse in BTableSimple --- .../src/components/BAvatar/BAvatar.vue | 6 ++--- .../src/components/BAvatar/BAvatarGroup.vue | 4 +-- .../src/components/BTable/BTableSimple.vue | 25 +++++++------------ .../src/composables/index.ts | 2 +- .../src/composables/useAvatarSize.ts | 10 -------- .../src/composables/useNumberishToStyle.ts | 21 ++++++++++++++++ 6 files changed, 36 insertions(+), 32 deletions(-) delete mode 100644 packages/bootstrap-vue-next/src/composables/useAvatarSize.ts create mode 100644 packages/bootstrap-vue-next/src/composables/useNumberishToStyle.ts diff --git a/packages/bootstrap-vue-next/src/components/BAvatar/BAvatar.vue b/packages/bootstrap-vue-next/src/components/BAvatar/BAvatar.vue index a0e074cf1..623b91002 100644 --- a/packages/bootstrap-vue-next/src/components/BAvatar/BAvatar.vue +++ b/packages/bootstrap-vue-next/src/components/BAvatar/BAvatar.vue @@ -31,9 +31,9 @@ import {avatarGroupInjectionKey, isEmptySlot} from '../../utils' import {computed, type CSSProperties, inject, type StyleValue, toRef} from 'vue' import type {BAvatarProps} from '../../types' import { - useAvatarSize, useBLinkHelper, useColorVariantClasses, + useNumberishToStyle, useRadiusElementClasses, } from '../../composables' import BLink from '../BLink/BLink.vue' @@ -116,8 +116,8 @@ const hasBadgeSlot = toRef(() => !isEmptySlot(slots.badge)) const showBadge = toRef(() => !!props.badge || props.badge === '' || hasBadgeSlot.value) const computedSquare = toRef(() => parentData?.size.value ?? props.square) -const computedPropSize = useAvatarSize(() => props.size) -const computedParentSize = useAvatarSize(() => parentData?.size.value) +const computedPropSize = useNumberishToStyle(() => props.size) +const computedParentSize = useNumberishToStyle(() => parentData?.size.value) const computedSize = computed(() => computedParentSize.value ?? computedPropSize.value) const computedVariant = toRef(() => parentData?.variant.value ?? props.variant) diff --git a/packages/bootstrap-vue-next/src/components/BAvatar/BAvatarGroup.vue b/packages/bootstrap-vue-next/src/components/BAvatar/BAvatarGroup.vue index becb0eab7..0c4c3b4e0 100644 --- a/packages/bootstrap-vue-next/src/components/BAvatar/BAvatarGroup.vue +++ b/packages/bootstrap-vue-next/src/components/BAvatar/BAvatarGroup.vue @@ -10,7 +10,7 @@ import {computed, provide, type StyleValue, toRef} from 'vue' import type {BAvatarGroupProps} from '../../types' import {avatarGroupInjectionKey} from '../../utils' -import {useAvatarSize} from '../../composables' +import {useNumberishToStyle} from '../../composables' import {useToNumber} from '@vueuse/core' const props = withDefaults(defineProps(), { @@ -39,7 +39,7 @@ defineSlots<{ const overlapNumber = useToNumber(() => props.overlap) -const computedSize = useAvatarSize(() => props.size) +const computedSize = useNumberishToStyle(() => props.size) const overlapScale = toRef(() => Math.min(Math.max(overlapNumber.value, 0), 1) / 2) const paddingStyle = computed(() => { diff --git a/packages/bootstrap-vue-next/src/components/BTable/BTableSimple.vue b/packages/bootstrap-vue-next/src/components/BTable/BTableSimple.vue index 4687e87c7..4e5ed855f 100644 --- a/packages/bootstrap-vue-next/src/components/BTable/BTableSimple.vue +++ b/packages/bootstrap-vue-next/src/components/BTable/BTableSimple.vue @@ -13,6 +13,7 @@ diff --git a/apps/playground/src/components/Comps/TPopover.vue b/apps/playground/src/components/Comps/TPopover.vue index f105a1d09..9641d8326 100644 --- a/apps/playground/src/components/Comps/TPopover.vue +++ b/apps/playground/src/components/Comps/TPopover.vue @@ -150,14 +150,7 @@ - + diff --git a/apps/playground/src/components/Comps/TTable.vue b/apps/playground/src/components/Comps/TTable.vue index a012a5030..e751f72f4 100644 --- a/apps/playground/src/components/Comps/TTable.vue +++ b/apps/playground/src/components/Comps/TTable.vue @@ -77,13 +77,7 @@

Selection mode

- {{ car }} +
@@ -131,14 +125,18 @@ - - + --> + @@ -178,10 +182,11 @@ label-size="sm" class="mb-0" > - + Add Sort... + - - + + @@ -290,9 +295,8 @@ -