Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: release 2.0.0 stable #3862

merged 95 commits into from Sep 7, 2019


Copy link

commented Aug 13, 2019

Preparation for release 2.0.0 stable

Live preview:

Once 2.0.0 stable is released, we will be following standard release versioning:

  • fixes: patch version change
  • features: minor version bump
  • Major changes: major version bump (i.e. Bootstrap v5, Vue 3.x)

Notable changes

Breaking changes and deprecated features removal

Please carefully read the following before upgrading to v2.0.0 stable

Vue 2.6+ is now required at a minimum, 2.6.10+ is recommended. Some components will fail to work as expected if using Vue 2.5 (notably tooltips and popovers, but other components may be affected as well).

All deprecated features have been removed in v2.0.0 stable in order to reduce bundle size.

Two notable breaking changes are:

  • changes to the table slot naming syntax (the table slot syntax introduced in rc.28 has been modified in 2.0.0) for better compatibility with the new Vue v-slot syntax and its limitations.
  • the removal of the deprecated /es build directory. Users should be importing the new top level named exports.

Read below for more details.

Migration notes:

  • Removal of the deprecated /es/ build directory. Users should now be using the new simplified import syntax introduced in v2.0.0-rc.22. Users should be importing the top-level named exports instead.
  • b-dropdown: removal of deprecated text slot. Use the button-content slot instead.
  • b-form-* controls, b-form-group, b-form-invalid-feedback and b-form-valid-feedback: validation prop state now only accepts true, false, or null values. Passing the strings 'invalid' or 'valid' will no longer work.
  • b-form-group: removal of the deprecated horizontal and breakpoint props. Use props label-cols{-{breakpoint}} instead.
  • b-img-lazy, b-card-img-lazy: now relies only on IntersectionObserver support (native or via polyfill) to determine when to show the image. If IntersectionObserver support is not detected, then the image will always be shown. Use a polyfill if you need to support older browsers (i.e. IE11)
  • b-modal: the deprecated BvModalEvent method cancel() has been removed. Use the method preventDefault() instead.
  • b-modal: the deprecated BvModalEvent property modalId has been removed. Use the property componentId instead.
  • b-nav: Removal of the deprecated is-nav prop. Use b-navbar-nav component instead when placing navs in b-navbar.
  • b-nav-item-dropdown: deprecated props extra-menu-classes and extra-toggle-classes have been removed. Used props menu-class and toggle-class (respectively) instead.
  • b-table and b-table-lite: table cell field, header and footer slot naming convention has changed. Users should be using the new table round bracketed slot naming syntax. Use slot cell(field) instead of field, head(field) instead of HEAD_field, use foot(field) instead of FOOT_field. The changes were required for better compatibility with the new Vue v-slot syntax. Note that head, foot and cell must be lower case. The square bracket syntax introduced in 2.0.0-rc.28 has been replaced with the round bracket syntax to reduce possible confusion and issues with Vue's dynamic slot name syntax.
  • b-table: the filter prop will no longer accept a function reference (previously deprecated). Instead, pass a function to the filter-function prop when using a custom filter function. The prop filter is only to be used for filter criteria (i.e. the search value, search RegEp, etc).
  • b-table: passing an object as a fields definition will no longer work. Use the array of strings or array of objects (or a combination of) fields definition format instead.
  • b-table: sorting icon SASS variables have been changed to handle new SVG backgrounds. If you had custom CSS styling/icons, they will not work as before but sorting will still work.
  • b-tabs: removal of deprecated tabs slot. Use slot tabs-end instead.
  • b-tabs: removal of deprecated bottom prop. Use the end prop instead
  • b-tab: removal of deprecated href prop.
  • Tooltip SCSS: deprecated variable $bv-tooltip-bg-level has been removed. Use variable $b-tooltip-bg-level instead.
  • Popover SCSS: deprecated variables $bv-popover-bg-level, $bv-popover-border-level, and $bv-popover-color-level have been removed. Use variables $b-popover-bg-level, $b-popover-border-level, and $b-popover-color-level (respectively) instead.


  • b-link: only add the nativeOn property to componentData when rendering a router link
  • b-form-textarea: handle initial auto-height when in modal or other component with transition or uses v-show directive. Requires IntersectionObserver support (silently fails if not supported or no polyfill)
  • b-modal: ensure non-prop attributes are transferred to the modal outer wrapper div
  • b-modal: fix scroll to top issue when modal has no-fade set
  • b-table, b-table-lite: render header/footer when not always stacked mode
  • b-table, b-table-lite: handle edge case where field slot returns no vNodes
  • b-table: fix issues with sorting icons by replacing them with SVG backgrounds
  • v-b-toggle: don't override role if element has a role assigned
  • tooltips, popovers: overall code refactor for better reactivity and performance, fix weird glitches:
    • When trigger is 'hover' (or 'focus'), one can now move the mouse over (or move focus to) the tooltip/popover and it will remain open
    • Directive versions are now reactive to title attribute changes and config option changes while the tooltip or popover is open
    • Popovers with slot content do not "breakup" when quickly hovering/un-hovering


  • b-modal: Uses can now uses scoped style classes. users will still need to use the vue-loader /deep/ (or ::v-deep or >>>) selector to target inner elements of the modal.
  • b-modal: add prop for auto focusing one of the built in-buttons once shown. Works with modal message boxes as well. acceptable values are 'ok', 'cancel' (both in the default footer), or 'close' (the x button in header)
  • b-nav: add card header support
  • b-pagination: if number of pages changes, try and keep current page active
  • b-table, b-table-lite: add support for custom header attributes
  • b-table, b-table-lite, b-table-simple: add no-border-collapse prop and associated SCSS. Mainly for use with sticky headers and columns.
  • b-table: allow field definition properties filterByFormatted and sortByFormatted to accept a formatter function reference
  • b-table: add filter-debounce prop for debouncing filter updates
  • b-table: new sorting icons using SVG backgrounds, plus option to place icon on left of header cell
  • b-toast: Uses can now uses scoped style classes. users will still need to use the vue-loader /deep/ (or ::v-deep or >>>) selector to target inner elements of the toast.
  • tooltips, popovers: overall code refactor for better reactivity and performance, fix weird glitches:
    • Component versions now render only a comment placeholder node in the DOM (instead of a DIV), so that app layout is never affected (i.e. component version can be placed directly inside input groups, etc)
    • variant and custom-class are reactive and can be changed while tooltip is open
    • custom-class can now be a scoped style, but note that one still needs the vue-loader /deep/ (or ::v-deep or >>>) selector to target the inner elements of the tooltip or popover.
    • Triggers setting is now reactive. they can be changed while the tooltip is open
    • Show/hide delays for Tooltip and Popover are now defaulted to 50ms (delays are applicable for hover and focus only), which will help reduce "spastic" tooltips/popovers.
    • It is now possible to specify hide and show delays individually on directive versions via modifiers
    • It is now possible to set triggers to 'manual' which allows only programmatic showing/hiding of tooltips and popovers
    • User can now optionally supply their own ID to be used on the tooltip/popover root element. If an ID is not provided, an ID will automatically be added (default behaviour).
    • If a tooltip or popover is given an ID, $root events can use this ID to open/close/enable/disable the tooltip/popover. Use of the trigger element's ID works as well.
    • Tooltips an popovers now use a bit of custom SCSS to make the Bootstrap v4.3 transitions work better with Vue's <transition> component. Previously tooltips and popovers could not take advantage of Vue's <transition> component. The use of the <transition> component has greatly reduced the lines of code required, at the expense of a few new lines of custom SCSS.

Other To Do's

  • Document minimum Vue version needed as 2.6.
  • Update docs examples to use new v-slot slot/slot-scope syntax
  • Remove all "NEW" "CHANGED", etc badges, and deprecation warnings in docs
  • Update table docs to inform users of limitations of field slot names when using the new v-slot syntax (spaces in slot names, uppercase issues with browser templates, etc)
  • Remove default exports from all public components (as only the named exports are used)
  • Bump version to 2.0.0 and update changelog

This comment has been minimized.

Copy link

commented Aug 13, 2019

Codecov Report

Merging #3862 into master will increase coverage by 0.55%.
The diff coverage is 100%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #3862      +/-   ##
+ Coverage    99.3%   99.86%   +0.55%     
  Files         233      238       +5     
  Lines        4485     4475      -10     
  Branches     1270     1257      -13     
+ Hits         4454     4469      +15     
+ Misses         25        5      -20     
+ Partials        6        1       -5
Impacted Files Coverage Δ
src/components/alert/index.js 100% <ø> (ø) ⬆️
src/components/breadcrumb/breadcrumb.js 100% <ø> (ø) ⬆️
src/components/modal/index.js 100% <ø> (ø) ⬆️
src/components/image/img.js 100% <ø> (ø) ⬆️
src/components/input-group/input-group-addon.js 100% <ø> (ø) ⬆️
src/components/button/button-close.js 100% <ø> (ø) ⬆️
src/components/table/helpers/mixin-items.js 100% <ø> (ø) ⬆️
...c/components/modal/helpers/bv-modal-event.class.js 100% <ø> (ø) ⬆️
src/components/navbar/index.js 100% <ø> (ø) ⬆️
src/components/navbar/navbar.js 100% <ø> (ø) ⬆️
... and 146 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3f009fd...5930f04. Read the comment docs.

tmorehouse added 2 commits Aug 13, 2019

@tmorehouse tmorehouse added this to In Progress in 2.0.0 Stable via automation Aug 13, 2019

jackmu95 and others added 13 commits Aug 13, 2019
feat(tables): add support for custom header attributes (closes #2244) (

* feat(tables): add support for custom header attributes

* Update

* Update mixin-tbody-row.js

* Update mixin-thead.js

* Update table.spec.js

* Update table-lite.spec.js
tmorehouse and others added 9 commits Aug 14, 2019
feat(b-table): allow field definition properties `filterByFormatted` …
…and `sortByFormatted` accept a formatter function reference (closes #3892) (#3898)
tmorehouse and others added 6 commits Aug 31, 2019
feat(b-table, b-table-lite): use `aria-details` rather than `aria-des…
…cribedby` when details row showing (addresses #3801) (#3992)
feat(dropdown): add `role=presentation` to `<li>` elements for improv…
…ed a11y (#3996)

* chore(dropdown): add `role=presentation` to `<li>` elements

* Update dropdown-form.js

* Update dropdown-group.js

* Update dropdown-header.js

* Update dropdown-item-button.js

* Update dropdown-item.js

* Update dropdown-text.js
tmorehouse and others added 16 commits Sep 3, 2019
chore(docs): better ARIA compliant `b-nav` + `b-card` examples (#4006)
* chore(docs): better ARIA compliant `b-nav` + `b-card` examples

* Update

* Update

* Update
feat(b-table, b-table-lite): add new scoped slot `custom-foot` to all…
…ow user to create their own table footer (closes #3960) (#4027)

@tmorehouse tmorehouse merged commit e42ef07 into master Sep 7, 2019

9 checks passed

License Compliance All checks passed.
ci/circleci: build Your tests passed on CircleCI!
ci/circleci: lint Your tests passed on CircleCI!
ci/circleci: setup Your tests passed on CircleCI!
ci/circleci: test Your tests passed on CircleCI!
codecov/patch 100% of diff hit (target 99.3%)
codecov/project 99.86% (+0.55%) compared to 3f009fd
deploy/netlify Deploy preview ready!
security/snyk - package.json (pi0) No new issues

2.0.0 Stable automation moved this from In Progress to Completed Sep 7, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
4 participants
You can’t perform that action at this time.