With more than 85 components, over 45 available plugins, several directives, and 1000+ icons, BootstrapVue provides one of the most comprehensive implementations of the Bootstrap v4.5 component and grid system available for Vue.js v2.6, complete with extensive and automated WAI-ARIA accessibility markup.
Links
Sponsors
Support this project by becoming a sponsor.
Your logo will show up here with a link to your website. [Become a sponsor]
Backers
Thank you to all our backers!
Contributors
This project exists thanks to all the people who contribute. [Contribute].
Partners
License
Released under the MIT License. Copyright (c) BootstrapVue.
Vue 3 support
Hi
What is the status of bootstrap-vue and Vue 3? I know Vue 3 is just in beta now. But I see no statement or other on your page if/how/when you are going to support Vue 3.
With kind regards, Johan
[table] Async providers, events, and enhancements
Adds async provider function support (callback and Promise based)
Deprecates
items-provider
in favour of passing function toitems
propAdds scoped slot support for table header and footers
Added
busy
prop for triggering table "busy" state (via `aria-busy="true" attribute).Emits
head-clicked
event when header cells are clicked (when not busy), and arefreshed
event when the provider function has completed/resolved.Added
sort-changed
event when sorting criteria has changedAdded extra documentation.
A working prototype example can be found here: https://jsfiddle.net/dyzs5txk/ (complete with header/footer scoped slots). You can select how the items are provided to
b-table
(view the console for the various stages of data retrieval). The example requires a browser that supports Promises (just to emulate the delay in fetching data).The updated documentation provides greater detail on the new features
Modal window does not work
When I copy example (https://jsfiddle.net/pi0/bofh9aaa) locally, it does not work on bootstrap 4.0.0-alpha.6 and bootstrap-vue 0.14.0. I get only a blackout of body.
feat(compat): add Vue 3 support via @vue/compat, round 2 (fixes #5196)
:question: What is it?
Version of Bootstrap-Vue which works for Vue 2 and Vue 3 (using
@vue/compat
) Helps people with #5196Demo using Vue 2 Demo using Vue 3
Additionally, it passes all (well, almost all, tiny fraction of tests are disabled because they are irrelevant for vue 3) tests in the test suite (it would be literally impossible to do this migration without a test suite)
This package uses vue 3 by default. If you want to run tests, build, etc. using vue 2 pass
USE_VUE2=1
environment variable:exclamation: How is this possible?
The heart of this PR consists of two parts:
@vue/compat
but for testsbootstrap-vue
:wrench: How could I run it?
If you want just to play around - you can clone https://github.com/xanf/bootstrap-vue3-demo which has all required setup. If you want to try it on your own project, there is some setup required.
I'm skipping setup of
@vue/compat
, it is described in migration guideYou will need to monkey patch your Vue 3 a bit somewhere early in your app:
See https://github.com/vuejs/vue-next/pull/4121 for details
If your intention is to run your app in
{ MODE: 2 }
(default @vue/compat) you're done. If you want to have{ MODE: 3 }
(so all compats are disabled by default), additional setup is needed:@vue/compat
build with this fix included. https://github.com/xanf/bootstrap-vue3-demo already has patch insidepatches
folder for that, installed by patch-packageGLOBAL_EXTEND
,GLOBAL_MOUNT
- for usingnew Vue
insidebootstrap-vue
COMPONENT_FUNCTIONAL
,RENDER_FUNCTION
CUSTOM_DIR
(anywhere where you use bootstrap-vue directive)If you use
portal-vue
(which is still used for tooltips, etc.) you will need:GLOBAL_SET
If you use old (for Vue 2) version of vue-router you will need:
CONFIG_OPTION_MERGE_STRATS
GLOBAL_PRIVATE_UTIL
GLOBAL_PROTOTYPE
INSTANCE_EVENT_HOOKS
OPTIONS_DESTROYED
INSTANCE_EVENT_EMITTER
:bomb: What might not work
Nuxt
run using newer Nuxt 3, bridge, etc. but it was very problematic. So I wrote a script, which extracted demos from docs and generated https://github.com/xanf/bootstrap-vue3-demo with all demos:arrow_upper_right: What's next?
Let's treat this one as "bridge" version Based on this branch I will create another one, which will be focused solely on full vue 3 compatibility (without using @vue/compat). While this will definitely take time, right now I do not see any major obstacles in gradual migration
:hugs: That's cool, how could I say "thank you"?
You're welcome, it's all about opensource. However, there are certain things, where your help will be appreciated:
PR checklist
What kind of change does this PR introduce? (check at least one)
fix(...)
, requires a patch version updatefeat(...)
, requires a minor version updatefeat(...)
, requires a minor version updatefix(...)
, requires a patch or minor version updatechore(docs)
, requires a patch version updateDoes this PR introduce a breaking change? (check one)
The PR fulfills these requirements:
dev
branch, not themaster
branch[...] (fixes #xxx[,#xxx])
, where "xxx" is the issue number)fix(alert): not alerting during SSR render
,docs(badge): update pill examples
,chore(docs): fix typo in README
, etc.). This is very important, as theCHANGELOG
is generated from these messages, and determines the next version type (patch or minor).If new features/enhancement/fixes are added or changed:
If adding a new feature, or changing the functionality of an existing feature, the PR's description above includes:
feat(tabs): Added support for vertical tabs
With this commit we support vertical tabs by setting
<b-tabs position="left"
or<b-tabs position="right"
. The boolean propertybottom
has been removed as that would be redundant.The only issue I still have is using the
card
property with postition left or right. It seems thecard-block
class has preference over thecol
class causing the tab-content div to have a width of 100% and being displayed underneath the list of tabs. Not sure what the best solution to this is, any recommendations would be appreciated[link]+ More granular link mixin
Per the conversation on issue #516 and it's PR #517, this proposes a more granular link mixin. This allows components that consume part of the internal link component API to automatically stay up to date with proxying all the link props down to the b-Link component itself.
feat(table): Selectable rows (fixes #1790)
Description of Pull Request:
Allow user to select rows. As this only works for visible rows, this feature doesn't rely on item keys.
see #1790
PR checklist:
What kind of change does this PR introduce? (check at least one)
Does this PR introduce a breaking change? (check one)
If yes, please describe the impact:
The PR fulfills these requirements:
dev
branch, not themaster
branchfixes #xxxx[,#xxxx]
, where "xxxx" is the issue number)CHANGELOG
is generated from these messages.If new features/enhancement/fixes are added or changed:
package.json
for slot and event changes)If adding a new feature, or changing the functionality of an existing feature, the PR's description above includes:
Babel Errors in nuxt generate 2.14
Describe the bug
I updated my nuxt project to the latest release which is 2.14. I then use nuxt generate to build the project. While nuxt is building the project, it gives this error
[BABEL] Note: The code generator has deoptimised the styling of \node_modules\bootstrap-vue\src\icons\icons.js as it exceeds the max of 500KB.
Steps to reproduce the bug
Expected behavior
Should not have any errors
Versions
Libraries:
Default b_UIDs for components
Should all components have a default
b_UID
on the parent container (if no ID provided)?And if so, should IDs be "dynamic/reactive" or static once set?
Something like this?
And if IDs are required for other elements within the component they can be based on
thisId
:BS4/Bootstrap-Vue Accessibility recommendations
Bootstrap V4 is addressing some of the accessibility issues: https://github.com/twbs/bootstrap/issues/22549, Of which bootstrap-vue has started to already address.
Here is little list of items that are complete or need work for aria and/or keyboard navigation (to be updated as we progress through them):
Components - ARIA / Keyboard Navigation
b-form-radio
input wrapped in label (which negates need forfor
on label)b-form-checkbox
input wrapped in label (which negates need forfor
on label)b-progress
ARIAprogress
attributesb-modal
attributesaria-labelledby
andaria-describedby
. Sectionroles
& semantic elements. (PR #247)b-modal
Focus first input/button on open (PR #247). Allow page author to specify input to be focused when opened via@shown
event (PR #378)b-modal
focus the modal content when openedb-tabs
&b-tab
attributesaria-controls
andaria-labelelledby
. Sectionroles
(PR #339)b-tabs
&b-tab
keyboard navigation (PR #339)b-alert
has ariarole="alert"
,aria-live
andaria-atomic
(PR #340)b-form-file
Needs focus styling in custom-file-input mode for keyboard users (PR #1033)b-form-fieldset
attributefor
when ID supplied on,form-control
. Hasrole="alert"
,aria-live
,aria-atomic
on feedback. andaria-describedby
(PR #340)b-breadcrumb
~should have role of navigation (PR #340)~ Addaria-current
to active crumb (PR #526)b-input-group
needsrole="group"
(PR #340)b-button-group
role="group"
, make new toolbar component (PR #367)b-button-toolbar
role="toolbar"
+ optional keyboard navigation (PR #367)b-nav
&b-nav-link
aria attributes (PR #358)b-dropdown
keyboard navigation (PR #274)b-nav-dropdown
aria-
attributes (PR #358)b-nav-dropdown
open on ENTER or SPACE (see Issue #348) (PR #349)b-nav-toggle
aria-
attributes (PR #358, #410, #411, #412)b-nav
&b-nav-link
keyboard navigation~~ (leave as standard TAB key navigation)b-collapse
Reflect expanded/collapsed state on trigger element (PR #358 & #519)b-pagination
aria-[label|current|setsize|posinset]
attributes. (Note:aria-controls
should be set manually in the<b-pagination>
markup) (PR #364)b-pagination
keyboard navigation (PR #364 & #377)b-carousel
aria-[controls|label|current|setsize|posinset]
attributes androles
. (PR #380)b-carousel
keyboard left/right control (PR #380, #420)b-carousel
Pause slide scrolling onmouseenter
and resume onmouseout
.b-tooltip
aria-
attributes (aria-live, aria-describedby, etcb-popover
aria-
attributes (aria-live, aria-describedby, etc. Also needs ability to changerole
fromtooltip
topopover
ordialog
tooltip
(configurable). https://github.com/twbs/bootstrap/issues/18618Directives
v-b-modal
return focus to open trigger element.v-b-toggle
attributesaria-controls
andaria-expanded
. (PR #519)Documentation
feat(dropdowns): Various optimizations for dropdown components
text
in favour of slotbutton-content
(addresses issue #617)link
as settingvariant="link"
does the same thing<b-button-group-dropdown>
in favour of using<b-dropdown>
chore(deps): bump actions/cache from 3.0.11 to 3.2.1
Bumps actions/cache from 3.0.11 to 3.2.1.
Release notes
Sourced from actions/cache's releases.
... (truncated)
Changelog
Sourced from actions/cache's changelog.
Commits
c1a5de8
Upgrade codeql to v2 (#1023)9b0be58
Release compression related changes for windows (#1039)c17f4bf
GA for granular cache (#1035)ac25611
docs: fix an invalid link in workarounds.md (#929)dc097e3
Update examples.md (#1026)fb86cbf
Updated node example (#1008)a57932f
Merge pull request #1014 from jongwooo/chore/use-built-in-cache-action04b13ca
chore: Use built-in cache action to cache dependencies941bc71
Merge pull request #1004 from jongwooo/chore/use-cache-in-check-dist08d8639
Merge branch 'main' into chore/use-cache-in-check-distDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)chore(deps-dev): bump marked from 2.0.3 to 4.2.5
Bumps marked from 2.0.3 to 4.2.5.
Release notes
Sourced from marked's releases.
... (truncated)
Commits
813234f
chore(release): 4.2.5 [skip ci]a01488a
🗜️ build [skip ci]e692634
fix: fix tabs at beginning of list items (#2679)1bbda68
fix: fix paragraph continuation after block element (#2686)26e2942
chore(deps-dev): Bump rollup from 3.7.3 to 3.7.5 (#2689)b32896d
chore(deps-dev): Bump eslint from 8.29.0 to 8.30.0 (#2690)2d5af86
clarify dropdown location (#2688)d94144e
chore(deps-dev): Bump rollup from 3.6.0 to 3.7.3 (#2681)f2f9969
chore(release): 4.2.4 [skip ci]4c24702
🗜️ build [skip ci]You can trigger a rebase of this PR by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)First/Last Page page customization
Documentation issue
b-form-tags binding not work in Vue 3
I upgrading my Vue 2 project to Vue 3 (BootstrapVue with @vue/compat). I cannot bind data correctly when using "b-form-tags". I setup a Demo. In this demo contains 2 "b-form-tags" elements, once is using v-model (id:tags-basic) and another one is no binding (id:tags-basic2), when I try to input value in (id:tags-basic), the array always contains the first character but another one (id:tags-basic2) is no problem.
BVConfigPlugin and i18n
Describe the bug
I define the default settings like it is described in example 3 from the documentation (https://bootstrap-vue.org/docs/reference/settings#setting-config-via-individual-component-group-plugin-imports). For localization I use vue-i18n, also in the default settings. Changing the language by an user does not show any effect in the bootstrap components.
Steps to reproduce the bug
when calling
i18n.locale = 'en'
theemptyText
will remain in GermanExpected behavior
Components should show the correct translations.
Versions
Libraries:
Am I doing something wrong? Changing the language is working for the rest of the frontend, but for the defaults. Or is there a better way to set the defaults?
chore(deps): bump qs from 6.5.2 to 6.5.3
Bumps qs from 6.5.2 to 6.5.3.
Changelog
Sourced from qs's changelog.
Commits
298bfa5
v6.5.3ed0f5dc
[Fix]parse
: ignore__proto__
keys (#428)691e739
[Robustness]stringify
: avoid relying on a globalundefined
(#427)1072d57
[readme] remove travis badge; add github actions/codecov badges; update URLs12ac1c4
[meta] fix README.md (#399)0338716
[actions] backport actions from main5639c20
Clean up license text so it’s properly detected as BSD-3-Clause51b8a0b
add FUNDING.yml45f6759
[Fix] fix for an impossible situation: when the formatter is called with a no...f814a7f
[Dev Deps] backport from mainYou can trigger a rebase of this PR by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.