diff --git a/.babelrc b/.babelrc deleted file mode 100755 index 44e47c32753..00000000000 --- a/.babelrc +++ /dev/null @@ -1,17 +0,0 @@ -{ - "presets": [ - ["env", { - "targets": { - "browsers": ["last 2 versions", "safari >= 7"] - }, - "modules": "umd" - }] - ], - "plugins": [ - "transform-object-rest-spread", - ["transform-runtime", { - "polyfill": false, - "regenerator": true - }] - ] -} \ No newline at end of file diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 00000000000..920a552bafa --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,13 @@ +# https://github.com/browserslist/browserslist#readme + +>= 1% +last 1 major version +not dead +Chrome >= 45 +Firefox >= 38 +Edge >= 12 +Explorer >= 11 +iOS >= 9 +Safari >= 9 +Android >= 4.4 +Opera >= 30 diff --git a/.bundlewatch.config.json b/.bundlewatch.config.json new file mode 100644 index 00000000000..f8480509309 --- /dev/null +++ b/.bundlewatch.config.json @@ -0,0 +1,71 @@ +{ + "files": [ + { + "path": "./dist/bootstrap-vue-icons.js", + "maxSize": "155 kB" + }, + { + "path": "./dist/bootstrap-vue-icons.min.js", + "maxSize": "145 kB" + }, + { + "path": "./dist/bootstrap-vue-icons.common.js", + "maxSize": "155 kB" + }, + { + "path": "./dist/bootstrap-vue-icons.common.min.js", + "maxSize": "145 kB" + }, + { + "path": "./dist/bootstrap-vue-icons.esm.js", + "maxSize": "155 kB" + }, + { + "path": "./dist/bootstrap-vue-icons.esm.min.js", + "maxSize": "145 kB" + }, + { + "path": "./dist/bootstrap-vue-icons.css", + "maxSize": "1.5 kB" + }, + { + "path": "./dist/bootstrap-vue-icons.min.css", + "maxSize": "1 kB" + }, + { + "path": "./dist/bootstrap-vue.js", + "maxSize": "240 kB" + }, + { + "path": "./dist/bootstrap-vue.min.js", + "maxSize": "105 kB" + }, + { + "path": "./dist/bootstrap-vue.common.js", + "maxSize": "360 kB" + }, + { + "path": "./dist/bootstrap-vue.common.min.js", + "maxSize": "240 kB" + }, + { + "path": "./dist/bootstrap-vue.esm.js", + "maxSize": "355 kB" + }, + { + "path": "./dist/bootstrap-vue.esm.min.js", + "maxSize": "235 kB" + }, + { + "path": "./dist/bootstrap-vue.css", + "maxSize": "15 kB" + }, + { + "path": "./dist/bootstrap-vue.min.css", + "maxSize": "10 kB" + } + ], + "ci": { + "trackBranches": ["master", "dev"] + } +} diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100755 index 9cf975ee792..00000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,44 +0,0 @@ -version: 2 -jobs: - build: - working_directory: /usr/src/app - docker: - - image: banian/node - steps: - # Checkout repository - - checkout - - # Restore cache - - restore_cache: - key: yarn-{{ checksum "yarn.lock" }} - - # Install dependencies - - run: - name: Install Dependencies - command: NODE_ENV=dev yarn - - # Keep cache - - save_cache: - key: yarn-{{ checksum "yarn.lock" }} - paths: - - "node_modules" - - # Build - - run: - name: Build - command: | - mkdir -p dist - yarn build - - # Test - - run: - name: Tests - command: yarn test - - # Deploy to NPM - - deploy: - command: | - if [[ ${CIRCLE_COMMIT} =~ v[0-9]+(\.[0-9]+)* ]]; then - echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc - npm publish - fi \ No newline at end of file diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json new file mode 100644 index 00000000000..9cd66de76a0 --- /dev/null +++ b/.codesandbox/ci.json @@ -0,0 +1,3 @@ +{ + "sandboxes": ["qeu9j", "xblbj"] +} diff --git a/.editorconfig b/.editorconfig index e291365a9d4..9d08a1a828a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -3,7 +3,7 @@ root = true [*] charset = utf-8 indent_style = space -indent_size = 4 +indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000000..a91bdaacae4 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,10 @@ +.now/ +.nuxt/ +.vercel/ +coverage/ +dist/ +docs-dist/ +esm/ +node_modules/ +nuxt/plugin.*.js +sw.js diff --git a/.eslintrc.js b/.eslintrc.js index fa546a297f7..1a064631871 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,288 +1,47 @@ module.exports = { - 'env': { - 'browser': true, - 'commonjs': true, - 'es6': true - }, - 'extends': ['plugin:vue-libs/recommended'], - 'parserOptions': { - 'ecmaVersion': 7, - 'ecmaFeatures': { - 'impliedStrict': true, - 'experimentalObjectRestSpread': true, - 'jsx': true // just in case? - }, - 'sourceType': 'module' - }, - 'globals': { - 'Tether': true, - 'Promise': true - }, - 'plugins': [ - 'html', 'vue' + extends: [ + 'standard', + 'plugin:vue/recommended', + 'plugin:prettier/recommended', + 'plugin:markdown/recommended' + ], + plugins: ['jest', 'node', 'promise'], + parserOptions: { + parser: 'babel-eslint', + sourceType: 'module' + }, + env: { + browser: true, + es6: true, + 'jest/globals': true + }, + rules: { + 'no-unused-vars': [ + 'error', + { + vars: 'all', + args: 'after-used', + ignoreRestSiblings: false + } ], - 'settings': { - 'html/html-extensions': [ - '.html', - '.vue' - ] - }, - 'rules': { - 'accessor-pairs': 'error', - 'array-bracket-spacing': [ - 'error', - 'never' - ], - 'array-callback-return': 'off', - 'arrow-parens': [ - 'error', - 'as-needed' - ], - 'arrow-spacing': [ - 'error', - { - 'after': true, - 'before': true - } - ], - 'block-scoped-var': 'error', - 'block-spacing': [ - 'error', - 'never' - ], - 'brace-style': 'off', - 'callback-return': 'error', - 'class-methods-use-this': 'error', - 'comma-dangle': 'off', - 'comma-spacing': 'off', - 'comma-style': [ - 'error', - 'last' - ], - 'complexity': 'error', - 'computed-property-spacing': [ - 'error', - 'never' - ], - 'consistent-return': 'off', - 'consistent-this': 'off', - 'curly': 'off', - 'default-case': 'off', - 'dot-location': [ - 'error', - 'property' - ], - 'dot-notation': 'error', - 'eol-last': 'off', - 'eqeqeq': 'off', - 'func-call-spacing': 'error', - 'func-name-matching': 'error', - 'func-names': [ - 'error', - 'never' - ], - 'func-style': 'error', - 'generator-star-spacing': 'error', - 'global-require': 'off', - 'guard-for-in': 'error', - 'handle-callback-err': 'error', - 'id-blacklist': 'error', - 'id-length': 'off', - 'id-match': 'error', - 'indent': 'off', - 'init-declarations': 'off', - 'jsx-quotes': 'off', - 'key-spacing': 'off', - 'keyword-spacing': [ - 'error', - { - 'after': true, - 'before': true - } - ], - 'line-comment-position': 'error', - 'linebreak-style': [ - 'warn', - 'unix' - ], - 'lines-around-comment': 'error', - 'lines-around-directive': 'error', - 'max-depth': 'error', - 'max-len': 'off', - 'max-lines': 'error', - 'max-nested-callbacks': 'error', - 'max-params': ['error', 4], - 'max-statements': 'off', - 'max-statements-per-line': 'off', - 'multiline-ternary': 'off', - 'new-cap': 'error', - 'new-parens': 'error', - 'newline-after-var': 'off', - 'newline-before-return': 'off', - 'newline-per-chained-call': 'error', - 'no-alert': 'error', - 'no-array-constructor': 'error', - 'no-await-in-loop': 'error', - 'no-bitwise': 'error', - 'no-caller': 'error', - 'no-catch-shadow': 'error', - 'no-confusing-arrow': ['error', {'allowParens': true}], - 'no-continue': 'error', - 'no-div-regex': 'error', - 'no-duplicate-imports': 'error', - 'no-else-return': 'error', - 'no-empty-function': 'error', - 'no-eq-null': 'error', - 'no-eval': 'error', - 'no-extend-native': 'error', - 'no-extra-bind': 'off', - 'no-extra-label': 'error', - 'no-extra-parens': 'off', - 'no-floating-decimal': 'error', - 'no-implicit-coercion': 'error', - 'no-implicit-globals': 'error', - 'no-implied-eval': 'error', - 'no-inline-comments': 'error', - 'no-inner-declarations': [ - 'error', - 'functions' - ], - 'no-invalid-this': 'off', - 'no-iterator': 'error', - 'no-label-var': 'error', - 'no-labels': 'error', - 'no-lone-blocks': 'error', - 'no-lonely-if': 'error', - 'no-loop-func': 'error', - 'no-magic-numbers': 'off', - 'no-mixed-operators': [ - 'error', - { - 'allowSamePrecedence': true - } - ], - 'no-mixed-requires': 'error', - 'no-multi-assign': 'error', - 'no-multi-spaces': 'off', - 'no-multi-str': 'error', - 'no-multiple-empty-lines': 'error', - 'no-native-reassign': 'error', - 'no-negated-condition': 'error', - 'no-negated-in-lhs': 'error', - 'no-nested-ternary': 'off', - 'no-new': 'error', - 'no-new-func': 'error', - 'no-new-object': 'error', - 'no-new-require': 'error', - 'no-new-wrappers': 'error', - 'no-octal-escape': 'error', - 'no-param-reassign': 'error', - 'no-path-concat': 'error', - 'no-plusplus': 'off', - 'no-process-env': 'off', - 'no-process-exit': 'error', - 'no-proto': 'error', - 'no-prototype-builtins': 'error', - 'no-restricted-globals': 'error', - 'no-restricted-imports': 'error', - 'no-restricted-modules': 'error', - 'no-restricted-properties': 'error', - 'no-restricted-syntax': 'error', - 'no-return-assign': 'error', - 'no-return-await': 'error', - 'no-script-url': 'error', - 'no-self-compare': 'error', - 'no-sequences': 'error', - 'no-shadow-restricted-names': 'error', - 'no-spaced-func': 'error', - 'no-sync': 'error', - 'no-tabs': 'off', - 'no-template-curly-in-string': 'error', - 'no-ternary': 'off', - 'no-throw-literal': 'error', - 'no-trailing-spaces': 'off', - 'no-undef-init': 'error', - 'no-undefined': 'warn', - 'no-underscore-dangle': 'error', - 'no-unmodified-loop-condition': 'error', - 'no-unneeded-ternary': 'error', - 'no-unused-expressions': ['error', {'allowShortCircuit': true, 'allowTernary': true}], - 'no-use-before-define': 'error', - 'no-useless-call': 'error', - 'no-useless-computed-key': 'error', - 'no-useless-concat': 'error', - 'no-useless-constructor': 'error', - 'no-useless-escape': 'off', - 'no-useless-rename': 'error', - 'no-useless-return': 'error', - 'no-var': 'off', - 'no-void': 'error', - 'no-warning-comments': 'error', - 'no-whitespace-before-property': 'error', - 'no-with': 'error', - 'object-curly-newline': 'off', - 'object-curly-spacing': 'off', - 'object-property-newline': [ - 'error', - { - 'allowMultiplePropertiesPerLine': true - } - ], - 'object-shorthand': 'error', - 'one-var': 'off', - 'one-var-declaration-per-line': 'error', - 'operator-assignment': 'error', - 'operator-linebreak': [ - 'error', - 'after' - ], - 'padded-blocks': 'off', - 'prefer-arrow-callback': 'off', - 'prefer-const': 'off', - 'prefer-numeric-literals': 'error', - 'prefer-promise-reject-errors': 'error', - 'prefer-reflect': 'off', - 'prefer-rest-params': 'error', - 'prefer-spread': 'error', - 'prefer-template': 'off', - 'quote-props': 'off', - 'quotes': 'off', - 'radix': [ - 'error', - 'as-needed' - ], - 'require-await': 'error', - 'rest-spread-spacing': 'error', - 'semi': [2, 'always'], - 'semi-spacing': 'off', - 'sort-imports': 'off', - 'sort-keys': 'off', - 'sort-vars': 'error', - 'space-before-blocks': 'off', - 'space-before-function-paren': 'off', - 'space-in-parens': [ - 'error', - 'never' - ], - 'space-infix-ops': 'off', - 'space-unary-ops': 'error', - 'spaced-comment': 'off', - 'strict': 'error', - 'symbol-description': 'error', - 'template-curly-spacing': 'error', - 'template-tag-spacing': 'error', - 'unicode-bom': [ - 'error', - 'never' - ], - 'valid-jsdoc': 'error', - 'vars-on-top': 'off', - 'wrap-iife': 'error', - 'wrap-regex': 'error', - 'yield-star-spacing': 'error', - 'yoda': [ - 'error', - 'never' - ] - } -}; \ No newline at end of file + 'object-shorthand': ['error', 'properties'], + 'spaced-comment': 'off', // needed to ignore `/*#__PURE__*/` comments + 'vue/custom-event-name-casing': 'off', + 'vue/html-self-closing': [ + 'error', + { + html: { + void: 'never', + normal: 'never', + component: 'never' + } + } + ], + 'vue/max-attributes-per-line': ['error', { singleline: 4 }], + 'vue/no-v-html': 'off', + 'vue/one-component-per-file': 'off', + 'vue/require-default-prop': 'off', + 'vue/require-prop-types': 'off', + 'vue/singleline-html-element-content-newline': 'off' + } +} diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000000..eae61b321c4 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +open_collective: bootstrap-vue diff --git a/.github/ISSUE_TEMPLATE/BUG_REPORT_TEMPLATE.md b/.github/ISSUE_TEMPLATE/BUG_REPORT_TEMPLATE.md new file mode 100644 index 00000000000..2c8a731ed4c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/BUG_REPORT_TEMPLATE.md @@ -0,0 +1,44 @@ +--- +name: 🐛 Bug report +about: Create a bug report to help us improve. +--- + +### Describe the bug + +A clear and concise description of what the bug is. + +### Steps to reproduce the bug + +1. Go to [...] +2. Click on [...] +3. Scroll down to [...] +4. See error + +### Expected behavior + +A clear and concise description of what you expected to happen. + +### Versions + +**Libraries:** + +- BootstrapVue: 2.#.# +- Bootstrap: 4.#.# +- Vue: 2.#.# + +**Environment:** + +- Device: [e.g. Mac or iPhone X] +- OS: [e.g. macOS Mojave or iOS 12] +- Browser: [e.g. Chrome] +- Version: [e.g. 70] + +### Demo link + +If applicable, add a minimal demo link to help explain your problem. Some options for that are [CodePen](https://codepen.io/), [CodeSandbox](https://codesandbox.io/), [JS Bin](https://jsbin.com/) or [JSFiddle](https://jsfiddle.net/). + +You can also export markup from the [Online Playground](https://bootstrap-vue.org/play) to _CodePen_, _CodeSandbox_ or _JSFiddle_. + +### Additional context + +Add any other context about the bug here. diff --git a/.github/ISSUE_TEMPLATE/DOCS_ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/DOCS_ISSUE_TEMPLATE.md new file mode 100644 index 00000000000..3445bd6d8ca --- /dev/null +++ b/.github/ISSUE_TEMPLATE/DOCS_ISSUE_TEMPLATE.md @@ -0,0 +1,26 @@ +--- +name: 📖 Documentation issue +about: Help improve our docs. +--- + +### Documentation issue + + + +- [ ] Reporting a typo +- [ ] Reporting a documentation bug +- [ ] Documentation improvement +- [ ] Documentation feedback + + + +### Is there a specific documentation page you are reporting? + +Enter the URL or documentation section here. + +### Additional context or description + +Provide any additional details here as needed. diff --git a/.github/ISSUE_TEMPLATE/FEATURE_REQUEST_TEMPLATE.md b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST_TEMPLATE.md new file mode 100644 index 00000000000..0d0e34eafab --- /dev/null +++ b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST_TEMPLATE.md @@ -0,0 +1,20 @@ +--- +name: 🚀 Feature request +about: Suggest an idea for this project. +--- + +### Is your feature request related to a problem? Please describe... + +A clear and concise description of what the problem is. + +### Describe the solution you'd like + +A clear and concise description of what you want to happen. + +### Describe alternatives you've considered + +A clear and concise description of any alternative solutions or features you've considered. + +### Additional context + +Add any other context or screenshots about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000000..af29b8818b5 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,44 @@ +### Describe the PR + +A clear and concise description of what the pull request does. + +### PR checklist + + + +**What kind of change does this PR introduce?** (check at least one) + +- [ ] Bugfix (fixes a boo-boo in the code) - `fix(...)`, requires a patch version update +- [ ] Feature (adds a new feature to BootstrapVue) - `feat(...)`, requires a minor version update +- [ ] Enhancement (augments an existing feature) - `feat(...)`, requires a minor version update +- [ ] ARIA accessibility (fixes or improves ARIA accessibility) - `fix(...)`, requires a patch or minor version update +- [ ] Documentation update (improves documentation or typo fixes) - `chore(docs)`, requires a patch version update +- [ ] Other (please describe) + +**Does this PR introduce a breaking change?** (check one) + +- [ ] No +- [ ] Yes (please describe since breaking changes require a minor version update) + +**The PR fulfills these requirements:** + +- [ ] It's submitted to the `dev` branch, **not** the `master` branch +- [ ] When resolving a specific issue, it's referenced in the PR's title (i.e. `[...] (fixes #xxx[,#xxx])`, where "xxx" is the issue number) +- [ ] It should address only one issue or feature. If adding multiple features or fixing a bug and adding a new feature, break them into separate PRs if at all possible. +- [ ] The title should follow the [**Conventional Commits**](https://www.conventionalcommits.org/) naming convention (i.e. `fix(alert): not alerting during SSR render`, `docs(badge): update pill examples`, `chore(docs): fix typo in README`, etc.). **This is very important, as the `CHANGELOG` is generated from these messages, and determines the next version type (patch or minor).** + +**If new features/enhancement/fixes are added or changed:** + +- [ ] Includes documentation updates +- [ ] Includes component package.json meta section updates (prop, slot and event changes/updates) +- [ ] Includes any needed TypeScript declaration file updates +- [ ] New/updated tests are included and passing (required for new features and enhancements) +- [ ] Existing test suites are passing +- [ ] CodeCov for patch has met target (all changes/updates have been tested) +- [ ] The changes have not impacted the functionality of other components or directives +- [ ] ARIA Accessibility has been taken into consideration (Does it affect screen reader users or keyboard only users? Clickable items should be in the tab index, etc.) + +**If adding a new feature, or changing the functionality of an existing feature, the PR's +description above includes:** + +- [ ] A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it) diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000000..ecf0fa9a8bf --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,40 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: weekly + day: tuesday + time: "12:00" + timezone: Europe/Berlin + reviewers: + - jackmu95 + labels: + - "Type: CI" + - "Type: Dependencies" + + - package-ecosystem: npm + directory: "/" + schedule: + interval: "daily" + time: "12:00" + timezone: Europe/Berlin + ignore: + - dependency-name: "bootstrap" + versions: [">=5.0.0"] + - dependency-name: "clean-css-cli" + versions: [">=5.0.0"] + - dependency-name: "html-loader" + versions: [">=2.0.0"] + - dependency-name: "prettier" + versions: [">1.14.3"] + - dependency-name: "sass-loader" + versions: [">=11.0.0"] + - dependency-name: "@vue/test-utils" + versions: [">=2.0.0"] + reviewers: + - jackmu95 + labels: + - "Type: Dependencies" + versioning-strategy: increase + rebase-strategy: disabled diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 00000000000..ae5fe2d6fcd --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,43 @@ +# Configuration for probot-stale - https://github.com/probot/stale +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 90 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - "Priority: Critical" + - "Priority: High" + - "Priority: Medium" + - "Priority: Low" + - "PR: Major" + - "PR: Minor" + - "PR: Patch" + - "Status: Coming Soon" + - "Status: In Progress" + - "Status: Intend To Implement" + - "Status: On Hold" + - "Status: On Roadmap" + - "Status: Review Needed" + - "Status: WIP" + - "Type: Bug" + - "Type: Nice 1st Contribution" + - "Type: RFC" + - "Type: Security" +# Label to use when marking an issue as stale +staleLabel: "Status: Stale" +issues: + # Comment to post when marking an issue as stale + markComment: > + This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. + Thank you for your contribution. + # Comment to post when closing a stale issue + closeComment: > + Closing this issue after a prolonged period of inactivity. If this issue is still present in the latest release, please create a new issue with up-to-date information. Thank you! +pulls: + # Comment to post when marking a pull request as stale + markComment: > + This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. + Thank you for your contribution. + # Comment to post when closing a stale pull request + closeComment: > + Closing this pull request after a prolonged period of inactivity. If this issue is still present in the latest release, please ask for this pull request to be reopened. Thank you! diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000000..bfcb71d9e51 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,58 @@ +name: Build + +on: + push: + branches: + - dev + - master + pull_request: + branches: + - dev + - master + +permissions: + contents: read + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest] + node: [12, 14, 16] + + steps: + - name: Clone repository + uses: actions/checkout@v3 + + - name: Set Node.js version + uses: actions/setup-node@v3.5.1 + with: + node-version: ${{ matrix.node }} + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + + - name: Cache node_modules + uses: actions/cache@v3.0.11 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ matrix.os }}-node-v${{ matrix.node }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ matrix.os }}-node-v${{ matrix.node }}-yarn- + ${{ matrix.os }}-node-v${{ matrix.node }}- + ${{ matrix.os }}- + + - name: Install dependencies + run: yarn install --check-files --frozen-lockfile --non-interactive + + - name: Build + run: yarn run build + + - name: BundleWatch + run: yarn run bundlewatch + if: matrix.node == '16' + env: + BUNDLEWATCH_GITHUB_TOKEN: "${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 00000000000..9df8190ff4e --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,44 @@ +name: "CodeQL" + +on: + push: + branches: + - dev + - master + - "!dependabot/**" + pull_request: + # The branches below must be a subset of the branches above + branches: + - dev + - master + - "!dependabot/**" + schedule: + - cron: "0 2 * * 5" + +permissions: + contents: read + +jobs: + analyze: + permissions: + actions: read # for github/codeql-action/init to get workflow details + contents: read # for actions/checkout to fetch code + security-events: write # for github/codeql-action/autobuild to send a status report + name: Analyze + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: "javascript" + + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000000..4185f1c5f1e --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,143 @@ +name: Tests + +on: + push: + branches: + - dev + - master + pull_request: + branches: + - dev + - master + +permissions: + contents: read + +jobs: + lint: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest] + node: [16] + + steps: + - name: Clone repository + uses: actions/checkout@v3 + + - name: Set Node.js version + uses: actions/setup-node@v3.5.1 + with: + node-version: ${{ matrix.node }} + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + + - name: Cache node_modules + uses: actions/cache@v3.0.11 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ matrix.os }}-node-v${{ matrix.node }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ matrix.os }}-node-v${{ matrix.node }}-yarn- + ${{ matrix.os }}-node-v${{ matrix.node }}- + ${{ matrix.os }}- + + - name: Install dependencies + run: yarn install --check-files --frozen-lockfile --non-interactive + + - name: Lint + run: yarn run test:lint + + audit: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest] + node: [16] + + steps: + - name: Clone repository + uses: actions/checkout@v3 + + - name: Set Node.js version + uses: actions/setup-node@v3.5.1 + with: + node-version: ${{ matrix.node }} + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + + - name: Cache node_modules + uses: actions/cache@v3.0.11 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ matrix.os }}-node-v${{ matrix.node }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ matrix.os }}-node-v${{ matrix.node }}-yarn- + ${{ matrix.os }}-node-v${{ matrix.node }}- + ${{ matrix.os }}- + + - name: Install dependencies + run: yarn install --check-files --frozen-lockfile --non-interactive + + - name: Audit + run: yarn run audit + + test-unit: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest] + node: [12, 14, 16] + + steps: + - name: Clone repository + uses: actions/checkout@v3 + + - name: Set Node.js version + uses: actions/setup-node@v3.5.1 + with: + node-version: ${{ matrix.node }} + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + + - name: Cache node_modules + uses: actions/cache@v3.0.11 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ matrix.os }}-node-v${{ matrix.node }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ matrix.os }}-node-v${{ matrix.node }}-yarn- + ${{ matrix.os }}-node-v${{ matrix.node }}- + ${{ matrix.os }}- + + - name: Install dependencies + run: yarn install --check-files --frozen-lockfile --non-interactive + + - name: Test unit + run: yarn run test:unit --coverage --maxWorkers=2 + + - name: Test unit (Vue 3) + run: yarn run test:unit --coverage --maxWorkers=2 + env: + USE_VUE3: '1' + + - name: Merge coverage + run: + npx istanbul-merge --out ./coverage-final.json coverage/coverage-final.json + coverage-vue3/coverage-final.json + + - name: CodeCov + uses: codecov/codecov-action@v3.1.1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + flags: unittests + files: ./coverage-final.json diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 index 18f97364ce4..38d10d68e50 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,19 @@ +.idea/ +.now/ +.nuxt/ +.vercel/ +.vscode/ +coverage/ +coverage-vue3/ +dist/ +docs-dist/ +esm/ node_modules/ -*.log -/dist *.iml -.idea -.nuxt -docs-dist +*.log +*.swp +.DS_Store +RELEASE-NOTES.md +package-lock.json sw.js -workbox*.js -.DS_Store \ No newline at end of file +workbox*.js* diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 00000000000..31354ec1389 --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000000..d2ae35e84b0 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +yarn lint-staged diff --git a/.npmignore b/.npmignore deleted file mode 100755 index b8522792f27..00000000000 --- a/.npmignore +++ /dev/null @@ -1,13 +0,0 @@ -docs -build -.nuxt -.idea -.circleci -*.iml -banner.png -.npmignore -.babelrc -docs-dist -examples -RELEASE_NOTES_TEMPLATE.ejs -CONTRIBUTING.md \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000000..a85108a8ec6 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,12 @@ +.now/ +.nuxt/ +.vercel/ +coverage/ +dist/ +docs-dist/ +esm/ +node_modules/ +nuxt/plugin.template.js +nuxt/plugin.prod.js +nuxt/plugin.dev.js +src/icons/icons.js diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000000..7af097e27c0 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,21 @@ +{ + "printWidth": 100, + "proseWrap": "always", + "semi": false, + "singleQuote": true, + "tabWidth": 2, + "overrides": [ + { + "files": ".github/**/*.md", + "options": { + "proseWrap": "preserve" + } + }, + { + "files": "*.scss", + "options": { + "singleQuote": false + } + } + ] +} diff --git a/.versionrc b/.versionrc new file mode 100644 index 00000000000..da7d73a2476 --- /dev/null +++ b/.versionrc @@ -0,0 +1,43 @@ +{ + "scripts": { + "postchangelog": "./node_modules/.bin/prettier --write CHANGELOG.md" + }, + "skip": { + "commit": true, + "tag": true + }, + "types": [ + { + "type": "fix", + "section": "Bug Fixes" + }, + { + "type": "feat", + "section": "Features" + }, + { + "type": "perf", + "section": "Performance" + }, + { + "type": "docs", + "hidden": true + }, + { + "type": "style", + "hidden": true + }, + { + "type": "refactor", + "hidden": true + }, + { + "type": "chore", + "hidden": true + }, + { + "type": "test", + "hidden": true + } + ] +} diff --git a/CHANGELOG-OLD.md b/CHANGELOG-OLD.md new file mode 100644 index 00000000000..dffab368223 --- /dev/null +++ b/CHANGELOG-OLD.md @@ -0,0 +1,3558 @@ +# Changelog - previous commits + +This changelog file contains all previous commits. For the latest changes, refer to the current +[CHANGELOG](https://github.com/bootstrap-vue/bootstrap-vue/blob/master/CHANGELOG.md) file. + + + +## [v2.0.0-rc.28](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0-rc.27...v2.0.0-rc.28) + +Released: 2019-08-12 + +**This release is expected to be the last RC release. Next release (hopefully) will be v2.0.0 +stable.** + +### Bug Fixes v2.0.0-rc.28 + +- **b-modal:** prevent page scroll when tabbing to bottom of modal + better tab containment in + enforceFocus (closes [#3842](https://github.com/bootstrap-vue/bootstrap-vue/issues/3842)) + ([#3846](https://github.com/bootstrap-vue/bootstrap-vue/issues/3846)) + ([ed99f9c](https://github.com/bootstrap-vue/bootstrap-vue/commit/ed99f9c)) +- **b-carousel:** reset `touchDeltaX` to prevent click transformed in swipe + ([#3734](https://github.com/bootstrap-vue/bootstrap-vue/issues/3734)) + ([0e54839](https://github.com/bootstrap-vue/bootstrap-vue/commit/0e54839)) +- **b-table:** better detection of active text selection during click events + ([#3763](https://github.com/bootstrap-vue/bootstrap-vue/issues/3763)) + ([1a9c688](https://github.com/bootstrap-vue/bootstrap-vue/commit/1a9c688)) +- **b-tabs:** fix nav item `id` and `aria-controls` on tab buttons + ([#3832](https://github.com/bootstrap-vue/bootstrap-vue/issues/3832)) + ([06c6119](https://github.com/bootstrap-vue/bootstrap-vue/commit/06c6119)) + +### Features v2.0.0-rc.28 + +- **form controls:** add support for control sizing of `b-form-file`, `b-form-checkbox`, and + `b-form-radio` (closes [#3745](https://github.com/bootstrap-vue/bootstrap-vue/issues/3745)) + ([#3794](https://github.com/bootstrap-vue/bootstrap-vue/issues/3794)) + ([18c3957](https://github.com/bootstrap-vue/bootstrap-vue/commit/18c3957)) +- **b-form-file, b-form-checkbox, b-form-radio:** make input element inherit non-prop attributes + (addresses [#3752](https://github.com/bootstrap-vue/bootstrap-vue/issues/3752)) + ([#3754](https://github.com/bootstrap-vue/bootstrap-vue/issues/3754)) + ([722f9db](https://github.com/bootstrap-vue/bootstrap-vue/commit/722f9db)) +- **b-table:** allow users to specify top-level keys to be ignored or included when filtering, plus + add option to filter based on formatted value (closes + [#3749](https://github.com/bootstrap-vue/bootstrap-vue/issues/3749)) + ([#3786](https://github.com/bootstrap-vue/bootstrap-vue/issues/3786)) + ([142b31b](https://github.com/bootstrap-vue/bootstrap-vue/commit/142b31b)) +- **b-table:** make sorting by formated value opt-in per field + add TypeScript declarations for + locale options ([#3778](https://github.com/bootstrap-vue/bootstrap-vue/issues/3778)) + ([9716850](https://github.com/bootstrap-vue/bootstrap-vue/commit/9716850)) +- **b-table:** programmatic row selection (closes + [#3064](https://github.com/bootstrap-vue/bootstrap-vue/issues/3064), + [#3370](https://github.com/bootstrap-vue/bootstrap-vue/issues/3370)) + ([#3844](https://github.com/bootstrap-vue/bootstrap-vue/issues/3844)) + ([9a4fe24](https://github.com/bootstrap-vue/bootstrap-vue/commit/9a4fe24)) +- **b-table-simple:** new `` wrapper component that allows users to render their own + ``, ``, `` + ([#3799](https://github.com/bootstrap-vue/bootstrap-vue/issues/3799)) + ([998bd4f](https://github.com/bootstrap-vue/bootstrap-vue/commit/998bd4f)) +- **b-table, b-table-lite:** new field scoped slot naming convention + new fallback scoped slots, + deprecated old field slot convention (closes + [#3731](https://github.com/bootstrap-vue/bootstrap-vue/issues/3731)) + ([#3741](https://github.com/bootstrap-vue/bootstrap-vue/issues/3741)) + ([f53360d](https://github.com/bootstrap-vue/bootstrap-vue/commit/f53360d)) +- **b-table, b-table-lite:** place `` after `` element per HTML5 spec + ([#3807](https://github.com/bootstrap-vue/bootstrap-vue/issues/3807)) + ([e885d6d](https://github.com/bootstrap-vue/bootstrap-vue/commit/e885d6d)) +- **tables:** add sticky header support (closes + [#2085](https://github.com/bootstrap-vue/bootstrap-vue/issues/2085)) + ([#3831](https://github.com/bootstrap-vue/bootstrap-vue/issues/3831)) + ([a5f7266](https://github.com/bootstrap-vue/bootstrap-vue/commit/a5f7266)) +- **tables:** create table child element helper components, plus new `sort-null-last` and + `table-variant` props. ([#3808](https://github.com/bootstrap-vue/bootstrap-vue/issues/3808)) + ([981114b](https://github.com/bootstrap-vue/bootstrap-vue/commit/981114b)) +- **tables:** add support for sticky columns + ([#3847](https://github.com/bootstrap-vue/bootstrap-vue/issues/3847)) + ([5b5f2b8](https://github.com/bootstrap-vue/bootstrap-vue/commit/5b5f2b8)) +- **b-toast:** add SCSS variable for default toast background opacity + standardize a few + BootstrapVue SCSS variable names + ([#3775](https://github.com/bootstrap-vue/bootstrap-vue/issues/3775)) + ([5799075](https://github.com/bootstrap-vue/bootstrap-vue/commit/5799075)) +- **config:** defaults for all `size` properties (closes + [#3805](https://github.com/bootstrap-vue/bootstrap-vue/issues/3805)) + ([#3841](https://github.com/bootstrap-vue/bootstrap-vue/issues/3841)) + ([1389efa](https://github.com/bootstrap-vue/bootstrap-vue/commit/1389efa)) +- **docs:** updates to the theming reference section + ([#3790](https://github.com/bootstrap-vue/bootstrap-vue/issues/3790)) + ([e080bf7](https://github.com/bootstrap-vue/bootstrap-vue/commit/e080bf7)) + +### Potential breaking changes v2.0.0-rc.28 + +- `b-table`: based on user feedback, sorting by formatted value is now **opt-in** _per field_. + **This is a change from the default sorting by formatted value behaviour of versions 2.0.0-rc.25 + through rc.27**. Sorting by formatted value was introduced in 2.0.0-rc.25. + +### Deprecation notes v2.0.0-rc.28 + +- `b-table` and `b-table-lite` field scoped slot naming syntax (for custom data and header/footer + formatting) has been changed in this version to use a new square bracketed syntax. While the + previous naming syntax still works, it has been deprecated in favour of the newer naming + convention (which prevents potential slot-name conflicts with fields named `default` and other + table slots). **Users are encouraged to switch to the new table field slot name syntax, as the old + slot name syntax will be removed in 2.0.0 stable release!** + +- Users should switch to the simplified import syntax (introduced in v2.0.0-rc.22) when importing + individual plugins, components, and/or directives. **Importing from the `es/` build directory has + been deprecated and will be removed in 2.0.0 stable release!** + + + +## [v2.0.0-rc.27](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0-rc.26...v2.0.0-rc.27) + +Released: 2019-07-21 + +### Bug Fixes v2.0.0-rc.27 + +- **b-modal:** ensure header is read for accessibility with JAWS (closes + [#3712](https://github.com/bootstrap-vue/bootstrap-vue/issues/3712)) + ([#3713](https://github.com/bootstrap-vue/bootstrap-vue/issues/3713)) + ([6a9d0ce](https://github.com/bootstrap-vue/bootstrap-vue/commit/6a9d0ce)) +- **b-nav-item-dropdown:** clicking toggle a second time should close menu (closes + [#3707](https://github.com/bootstrap-vue/bootstrap-vue/issues/3707)) + ([#3706](https://github.com/bootstrap-vue/bootstrap-vue/issues/3706)) + ([629951e](https://github.com/bootstrap-vue/bootstrap-vue/commit/629951e)) +- **b-table:** IE 11 edge case where custom inputs were not clickable in clickable/sortable cells + (fixes [#3693](https://github.com/bootstrap-vue/bootstrap-vue/issues/3693)) + ([#3697](https://github.com/bootstrap-vue/bootstrap-vue/issues/3697)) + ([fce8b5b](https://github.com/bootstrap-vue/bootstrap-vue/commit/fce8b5b)) +- **tooltip, popover:** handle case where tooltips are applied to dropdown root elements (closes + [#3703](https://github.com/bootstrap-vue/bootstrap-vue/issues/3703)) + ([#3704](https://github.com/bootstrap-vue/bootstrap-vue/issues/3704)) + ([39df4f1](https://github.com/bootstrap-vue/bootstrap-vue/commit/39df4f1)) + +### Features v2.0.0-rc.27 + +- **b-dropdown:** new `split-button-type` prop to specify split button type (closes + [#3694](https://github.com/bootstrap-vue/bootstrap-vue/issues/3694)) + ([#3695](https://github.com/bootstrap-vue/bootstrap-vue/issues/3695)) + ([1157589](https://github.com/bootstrap-vue/bootstrap-vue/commit/1157589)) +- **b-modal:** for accessibility, read only modal title and not whole header + additional A11Y + options (addresses [#3712](https://github.com/bootstrap-vue/bootstrap-vue/issues/3712)) + ([#3715](https://github.com/bootstrap-vue/bootstrap-vue/issues/3715)) + ([1ce8c6d](https://github.com/bootstrap-vue/bootstrap-vue/commit/1ce8c6d)) +- **b-tabs:** new named slot `tabs-start` for prepending tab buttons, deprecates `tabs` slot in + favour of `tabs-end` (closes [#3678](https://github.com/bootstrap-vue/bootstrap-vue/issues/3678)) + ([#3679](https://github.com/bootstrap-vue/bootstrap-vue/issues/3679)) + ([0b5f552](https://github.com/bootstrap-vue/bootstrap-vue/commit/0b5f552)) +- minor code improvements ([#3682](https://github.com/bootstrap-vue/bootstrap-vue/issues/3682)) + ([2fb5ce8](https://github.com/bootstrap-vue/bootstrap-vue/commit/2fb5ce8)) + +### Notes v2.0.0-rc.27 + +Users should switch to the simplified import syntax (introduced in `v2.0.0-rc.22`) when importing +individual plugins, components, and/or directives. **Importing from the `es/` build directory has +been deprecated and will be removed in 2.0.0 stable release!** + + + +## [v2.0.0-rc.26](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0-rc.25...v2.0.0-rc.26) + +Released 2019-07-09 + +### Bug Fixes v2.0.0-rc.26 + +- **b-collapse:** fix memory leak from `$root` listener (fixes + [#3607](https://github.com/bootstrap-vue/bootstrap-vue/issues/3607)) + ([#3608](https://github.com/bootstrap-vue/bootstrap-vue/issues/3608)) + ([10cb3a9](https://github.com/bootstrap-vue/bootstrap-vue/commit/10cb3a9)) +- **b-carousel-slide**: do not render `carousel-caption` wrapper if no content + ([#3662](https://github.com/bootstrap-vue/bootstrap-vue/issues/3662)) + ([615a719](https://github.com/bootstrap-vue/bootstrap-vue/commit/615a719)) +- **b-table:** add clearfix to table cells in case label wraps in stacked mode + ([#3652](https://github.com/bootstrap-vue/bootstrap-vue/issues/3652)) + ([3115dae](https://github.com/bootstrap-vue/bootstrap-vue/commit/3115dae)) +- **docs:** correct polyfilling suggestions + ([#3605](https://github.com/bootstrap-vue/bootstrap-vue/issues/3605)) + ([35806e7](https://github.com/bootstrap-vue/bootstrap-vue/commit/35806e7)) +- **playground:** fix undefined variable error in IE 11 + ([#3606](https://github.com/bootstrap-vue/bootstrap-vue/issues/3606)) + ([b3f7053](https://github.com/bootstrap-vue/bootstrap-vue/commit/b3f7053)) + +### Features v2.0.0-rc.26 + +- **b-dropdown, b-nav-item-dropdown:** add new lazy prop (addresses + [#3634](https://github.com/bootstrap-vue/bootstrap-vue/issues/3634)) + ([#3639](https://github.com/bootstrap-vue/bootstrap-vue/issues/3639)) + ([f742a8a](https://github.com/bootstrap-vue/bootstrap-vue/commit/f742a8a)) +- **tooltip, popover:** add support for contextual variants and custom class (closes + [#1983](https://github.com/bootstrap-vue/bootstrap-vue/issues/1983), + [#2075](https://github.com/bootstrap-vue/bootstrap-vue/issues/2075)) + ([#3644](https://github.com/bootstrap-vue/bootstrap-vue/issues/3644)) + ([695edae](https://github.com/bootstrap-vue/bootstrap-vue/commit/695edae)) +- **tooltip:** add in SCSS support for specifying tooltip variant background color level + ([#3653](https://github.com/bootstrap-vue/bootstrap-vue/issues/3653)) + ([d7cb071](https://github.com/bootstrap-vue/bootstrap-vue/commit/d7cb071)) +- **docs:** add home and playground links to sidebar navigation + ([#3654](https://github.com/bootstrap-vue/bootstrap-vue/issues/3654)) + ([e5eb9fc](https://github.com/bootstrap-vue/bootstrap-vue/commit/e5eb9fc)) +- **types:** add `noCloseButton` property to `BvToastOptions` type declaration + ([#3636](https://github.com/bootstrap-vue/bootstrap-vue/issues/3636)) + ([5aa9211](https://github.com/bootstrap-vue/bootstrap-vue/commit/5aa9211)) + +### Performance v2.0.0-rc.26 + +- **b-link**: convert from functional component to regular component + ([#3637](https://github.com/bootstrap-vue/bootstrap-vue/issues/3637)) + ([d3641ba](https://github.com/bootstrap-vue/bootstrap-vue/commit/d3641ba)) +- remove default array and object polyfills + ([#3641](https://github.com/bootstrap-vue/bootstrap-vue/issues/3641)) + ([8b34bf2](https://github.com/bootstrap-vue/bootstrap-vue/commit/8b34bf2)) + +### Notes v2.0.0-rc.26 + +Users should switch to the simplified import syntax (introduced in `v2.0.0-rc.22`) when importing +individual plugins, components, and/or directives. **Importing from the `es/` build directory has +been deprecated and will be removed in 2.0.0 stable release!** + + + +## [v2.0.0-rc.25](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0-rc.24...v2.0.0-rc.25) + +Released 2019-06-30 + +### Bug Fixes v2.0.0-rc.25 + +- **b-input-group:** fix kebab-case prop names for `prepend-html` and `append-html` (fixes + [#3565](https://github.com/bootstrap-vue/bootstrap-vue/issues/3565)) + ([#3567](https://github.com/bootstrap-vue/bootstrap-vue/issues/3567) + [e48d3dc](https://github.com/bootstrap-vue/bootstrap-vue/commit/e48d3dc)) +- **b-table:** adjustments to sort icon positioning SCSS (closes + [#3563](https://github.com/bootstrap-vue/bootstrap-vue/issues/3563)) + ([#3568](https://github.com/bootstrap-vue/bootstrap-vue/issues/3568) + [5c572e8](https://github.com/bootstrap-vue/bootstrap-vue/commit/5c572e8)) + +### Features v2.0.0-rc.25 + +- **b-table:** sort fields by formatted value for fields that have a formatter function + support + for optional `localCompare` options and locale (closes + [#3178](https://github.com/bootstrap-vue/bootstrap-vue/issues/3178), + [#1173](https://github.com/bootstrap-vue/bootstrap-vue/issues/1173)) + ([#3585](https://github.com/bootstrap-vue/bootstrap-vue/issues/3585) + [c0ca1fd](https://github.com/bootstrap-vue/bootstrap-vue/commit/c0ca1fd)) +- **b-table, b-table-lite:** don't render `thead` or `tfoot` if no detected fields for accessibility + reasons (closes [#3547](https://github.com/bootstrap-vue/bootstrap-vue/issues/3547)) + ([#3553](https://github.com/bootstrap-vue/bootstrap-vue/issues/3553) + [a924889](https://github.com/bootstrap-vue/bootstrap-vue/commit/a924889)) +- **b-tabs:** emit new `changed` event whenever tabs are added, removed or re-ordered (closes + [#3575](https://github.com/bootstrap-vue/bootstrap-vue/issues/3575)) + ([#3577](https://github.com/bootstrap-vue/bootstrap-vue/issues/3577) + [841419a](https://github.com/bootstrap-vue/bootstrap-vue/commit/841419a)) +- **tooltips, popovers:** remove need for route watcher, preventing open tooltip/popover from + automatically closing if child route changes and trigger element is still in document + ([#3583](https://github.com/bootstrap-vue/bootstrap-vue/issues/3583) + [98844b4](https://github.com/bootstrap-vue/bootstrap-vue/commit/98844b4)) + +### Notes v2.0.0-rc.25 + +Users should switch to the simplified import syntax (introduced in `v2.0.0-rc.22`) when importing +individual plugins, components, and/or directives. **Importing from the `es/` build directory has +been deprecated and will be removed in 2.0.0 stable release.** + + + +## [v2.0.0-rc.24](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0-rc.23...v2.0.0-rc.24) + +Released 2019-06-17 + +### Bug Fixes v2.0.0-rc.24 + +- **b-table:** ensure `ctx.sortBy` is an empty string when no sort key specified (closes + [#3532](https://github.com/bootstrap-vue/bootstrap-vue/issues/3532)) + ([#3534](https://github.com/bootstrap-vue/bootstrap-vue/issues/3534) + [d451687](https://github.com/bootstrap-vue/bootstrap-vue/commit/d451687)) +- **b-table-lite:** add checks to helper mixins for existence of `stopIfBusy` (fixes + [#3518](https://github.com/bootstrap-vue/bootstrap-vue/issues/3518)) + ([#3520](https://github.com/bootstrap-vue/bootstrap-vue/issues/3520)) + ([285cf94](https://github.com/bootstrap-vue/bootstrap-vue/commit/285cf94)) +- **b-tabs:** add detection of when registered tabs change order (closes + [#3506](https://github.com/bootstrap-vue/bootstrap-vue/issues/3506)) + ([#3513](https://github.com/bootstrap-vue/bootstrap-vue/issues/3513) + [130f8ff](https://github.com/bootstrap-vue/bootstrap-vue/commit/130f8ff), + [#3537](https://github.com/bootstrap-vue/bootstrap-vue/issues/3537) + [b80b2b4](https://github.com/bootstrap-vue/bootstrap-vue/commit/b80b2b4)) +- **config:** avoid using `of` operator (closes + [#3525](https://github.com/bootstrap-vue/bootstrap-vue/issues/3525)) + ([#3526](https://github.com/bootstrap-vue/bootstrap-vue/issues/3526) + [17ec8d0](https://github.com/bootstrap-vue/bootstrap-vue/commit/17ec8d0)) +- **nuxt module:** correct `transformAssetUrls` value for `b-card-img` (fixes + [#3521](https://github.com/bootstrap-vue/bootstrap-vue/issues/3521)) + ([#3523](https://github.com/bootstrap-vue/bootstrap-vue/issues/3523) + [db8c6fd](https://github.com/bootstrap-vue/bootstrap-vue/commit/db8c6fd)) + + + +## [v2.0.0-rc.23](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0-rc.22...v2.0.0-rc.23) + +Released 2019-06-13 + +### Bug Fixes v2.0.0-rc.23 + +- **b-dropdown:** close when clicking on nested elements inside items with `to` prop + ([#3476](https://github.com/bootstrap-vue/bootstrap-vue/issues/3476) + [8ec2eb1](https://github.com/bootstrap-vue/bootstrap-vue/commit/8ec2eb1)) +- **b-form-input, b-form-textarea:** handle case where input has been removed from document (closes + [#3498](https://github.com/bootstrap-vue/bootstrap-vue/issues/3498)) + ([#3501](https://github.com/bootstrap-vue/bootstrap-vue/issues/3501) + [9a62e44](https://github.com/bootstrap-vue/bootstrap-vue/commit/9a62e44)) +- **b-modal:** ensure `ignoreBackdropClick` flag is cleared in `clickOutHandler` + ([#3488](https://github.com/bootstrap-vue/bootstrap-vue/issues/3488) + [afb4680](https://github.com/bootstrap-vue/bootstrap-vue/commit/afb4680)) +- **b-modal:** fix IE 11 issue with copy/paste from modal into MS Word (fixes + [#3457](https://github.com/bootstrap-vue/bootstrap-vue/issues/3457)) + ([#3489](https://github.com/bootstrap-vue/bootstrap-vue/issues/3489) + [16dbdf1](https://github.com/bootstrap-vue/bootstrap-vue/commit/16dbdf1)) +- **b-modal:** properly render `*-html` props if provided (closes + [#3491](https://github.com/bootstrap-vue/bootstrap-vue/issues/3491)) + ([#3492](https://github.com/bootstrap-vue/bootstrap-vue/issues/3492) + [c1ada9f](https://github.com/bootstrap-vue/bootstrap-vue/commit/c1ada9f)) +- **b-pagination-nav:** fix incorrect name in component package.json file (closes + [#3458](https://github.com/bootstrap-vue/bootstrap-vue/issues/3458)) + ([#3459](https://github.com/bootstrap-vue/bootstrap-vue/issues/3459) + [ef252df](https://github.com/bootstrap-vue/bootstrap-vue/commit/ef252df)) +- **b-pagination-nav:** attempt to auto-detect current page when `pages` array or `number of pages` + changes (closes [#3443](https://github.com/bootstrap-vue/bootstrap-vue/issues/3443)) + ([#3444](https://github.com/bootstrap-vue/bootstrap-vue/issues/3444) + [88b95c6](https://github.com/bootstrap-vue/bootstrap-vue/commit/88b95c6)) +- **b-table:** ensure provider is refreshed when filter is an object (closes + [#3428](https://github.com/bootstrap-vue/bootstrap-vue/issues/3428)) + ([#3429](https://github.com/bootstrap-vue/bootstrap-vue/issues/3429) + [b95c614](https://github.com/bootstrap-vue/bootstrap-vue/commit/b95c614)) +- **b-tabs:** improve child `b-tab` detection routine and fix bug with IDs (closes + [#3260](https://github.com/bootstrap-vue/bootstrap-vue/issues/3260)) + ([#3442](https://github.com/bootstrap-vue/bootstrap-vue/issues/3442) + [4a54e8d](https://github.com/bootstrap-vue/bootstrap-vue/commit/4a54e8d)) +- **types:** add missing `BInputGroup` to TypeScript definitions + ([#3487](https://github.com/bootstrap-vue/bootstrap-vue/issues/3487) + [b4ac081](https://github.com/bootstrap-vue/bootstrap-vue/commit/b4ac081)) +- **utils/get:** handle edge case with inherited object getters (fixes + [#3463](https://github.com/bootstrap-vue/bootstrap-vue/issues/3463)) + ([#3465](https://github.com/bootstrap-vue/bootstrap-vue/issues/3465) + [e2c8cb1](https://github.com/bootstrap-vue/bootstrap-vue/commit/e2c8cb1)) + +### Features v2.0.0-rc.23 + +- **b-table-lite:** new `` light-weight table component + ([#3447](https://github.com/bootstrap-vue/bootstrap-vue/issues/3447) + [0477941](https://github.com/bootstrap-vue/bootstrap-vue/commit/0477941)) +- improved tree-shaking when importing individual components + ([#3462](https://github.com/bootstrap-vue/bootstrap-vue/issues/3462) + [2df1ab9](https://github.com/bootstrap-vue/bootstrap-vue/commit/2df1ab9)) + +### Deprecation v2.0.0-rc.23 + +Users should switch to the simplified import syntax (introduced in `v2.0.0-rc.22`) when importing +individual plugins, components, and/or directives. **Importing from the `es/` build directory has +been deprecated and will be removed in 2.0.0 stable release.** + + + +## [v2.0.0-rc.22](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0-rc.21...v2.0.0-rc.22) + +Released 2019-05-31 + +### Notable Changes v2.0.0-rc.22 + +- Improved/shortened method for importing of plugins, components, and directives, as top-level named + exports. The ESM and CJS builds now both include these top level named exports: + - Default export is still the BootstrapVue plugin + - Simplified import format for importing components, directives, plugins:
+ `import { ModalPlugin, CardPlugin, BAlert, BRow, BCol, VBScrollspyPlugin } from 'bootstrap-vue'` + - New `esm/` modular build with top-level named exports (tree shakeable) + - New `dist/bootstrap-vue.esm.js` esm bundle with top-level named exports + - New `dist/bootstrap-vue.common.js` cjs bundle with top-level named exports + - No need to cherry-pick from sub directories for plugins/components/directives + - Most package bundlers will pick the appropriate build automatically +- Nuxt module: + - Improved tree shaking using the new import syntax + - Automatically adds `transformAssetUrls` settings for BootstrapVue component props. +- Reverted the `es/` build directory back to mini-commonjs modules (from true ES modules introduced + in v2.0.0-rc.21) due to issues with Nuxt.js and some webpack builds expecting CJS format when + cherry-picking individual components, directives and plugins from sub-directories. +- **DEPRECATION: The `es/` build has been deprecated in favour of the newer `esm` build and `cjs` + bundle, which allow for importing individual components, directives and plugins from top-level + named exports.** Users are encouraged to convert their existing imports to the new syntax. + +### Bug Fixes v2.0.0-rc.22 + +- **b-modal:** use `safeId()` when comparing `id` received by hide/show handler (closes + [#3389](https://github.com/bootstrap-vue/bootstrap-vue/issues/3389) + ([#3394](https://github.com/bootstrap-vue/bootstrap-vue/issues/3394) + [fae3d25](https://github.com/bootstrap-vue/bootstrap-vue/commit/fae3d25)) +- **b-tabs:** fix regression with dynamically added tabs (fixes + [#3395](https://github.com/bootstrap-vue/bootstrap-vue/issues/3395)) + ([#3396](https://github.com/bootstrap-vue/bootstrap-vue/issues/3396) + [f254f90](https://github.com/bootstrap-vue/bootstrap-vue/commit/f254f90)) +- **form controls:** handle autofocus inside modal or when inside a transition + ([#3386](https://github.com/bootstrap-vue/bootstrap-vue/issues/3386) + [c4a8edb](https://github.com/bootstrap-vue/bootstrap-vue/commit/c4a8edb)) +- **es:** revert to tranforming `es/` modules into CJS, and simplify main build with top-level named + import/exports (closes [#3397](https://github.com/bootstrap-vue/bootstrap-vue/issues/3397), + [#3393](https://github.com/bootstrap-vue/bootstrap-vue/issues/3393), + [#3323](https://github.com/bootstrap-vue/bootstrap-vue/issues/3323)) + ([#3404](https://github.com/bootstrap-vue/bootstrap-vue/issues/3404) + [6c386d3](https://github.com/bootstrap-vue/bootstrap-vue/commit/6c386d3)) +- **nuxt:** use new bundle for development mode (closes + [#3397](https://github.com/bootstrap-vue/bootstrap-vue/issues/3397)) + ([#3399](https://github.com/bootstrap-vue/bootstrap-vue/issues/3399) + [f43097e](https://github.com/bootstrap-vue/bootstrap-vue/commit/f43097e), + [#3404](https://github.com/bootstrap-vue/bootstrap-vue/issues/3404) + [6c386d3](https://github.com/bootstrap-vue/bootstrap-vue/commit/6c386d3)) +- **types:** fix typing error for `BvComponent` and `BvPlugin` (closes + [#3390](https://github.com/bootstrap-vue/bootstrap-vue/issues/3390)) + ([#3391](https://github.com/bootstrap-vue/bootstrap-vue/issues/3391) + [6f0f3fd](https://github.com/bootstrap-vue/bootstrap-vue/commit/6f0f3fd)) + +### Features v2.0.0-rc.22 + +- **b-button:** add new `squared` prop for making buttons with square corners + ([#3387](https://github.com/bootstrap-vue/bootstrap-vue/issues/3387) + [004963d](https://github.com/bootstrap-vue/bootstrap-vue/commit/004963d)) +- **b-tooltip, b-popover:** allow global `delay` customization via config + ([#3426](https://github.com/bootstrap-vue/bootstrap-vue/issues/3426) + [2aaec76](https://github.com/bootstrap-vue/bootstrap-vue/commit/2aaec76)) +- **nuxt:** handle edge cases where component, directive and plugin names are passed as `camelCase` + or `kebab-case` and convert to new `PascalCase` names + ([#3418](https://github.com/bootstrap-vue/bootstrap-vue/issues/3418) + [ce3ba73](https://github.com/bootstrap-vue/bootstrap-vue/commit/ce3ba73)) +- **nuxt module:** alias `esm/` and `es/` to `src/` for Nuxt prod mode + ([#3423](https://github.com/bootstrap-vue/bootstrap-vue/issues/3423) + [ae2040b](https://github.com/bootstrap-vue/bootstrap-vue/commit/ae2040b)) +- add `"source": "src/index.js"` entry in package.json for Parcel bundler + ([#3422](https://github.com/bootstrap-vue/bootstrap-vue/issues/3422) + [0878ca6](https://github.com/bootstrap-vue/bootstrap-vue/commit/0878ca6)) + + + +## [v2.0.0-rc.21](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0-rc.20...v2.0.0-rc.21) + +Released 2019-05-26 + +Note: this version introduced a bug when using BootstrapVue with Nuxt.js module in dev mode. Please +use version v2.0.0-rc.22 or newer. + +### Bug Fixes v2.0.0-rc.21 + +- **b-alert:** handle case where dismiss countdown changes to a boolean value (closes + [#3346](https://github.com/bootstrap-vue/bootstrap-vue/issues/3346)) + ([#3347](https://github.com/bootstrap-vue/bootstrap-vue/issues/3347) + [14ad833](https://github.com/bootstrap-vue/bootstrap-vue/commit/14ad833)) +- **b-dropdown:** delay show of dropdown when calling `show()` (closes + [#3366](https://github.com/bootstrap-vue/bootstrap-vue/issues/3366)) + ([#3367](https://github.com/bootstrap-vue/bootstrap-vue/issues/3367) + [1604022](https://github.com/bootstrap-vue/bootstrap-vue/commit/1604022)) +- **b-input-group:** fix issue with slots (closes + [#3284](https://github.com/bootstrap-vue/bootstrap-vue/issues/3284)) + ([#3288](https://github.com/bootstrap-vue/bootstrap-vue/issues/3288) + [5639e8f](https://github.com/bootstrap-vue/bootstrap-vue/commit/5639e8f)) +- **b-input-group:** use same input-group-prepend/append for both props and slots + ([#3321](https://github.com/bootstrap-vue/bootstrap-vue/issues/3321) + [fb7386e](https://github.com/bootstrap-vue/bootstrap-vue/commit/fb7386e)) +- **b-modal:** delay initially open modal via nextTick when using v-model or visible prop + ([#3320](https://github.com/bootstrap-vue/bootstrap-vue/issues/3320) + [6f3010a](https://github.com/bootstrap-vue/bootstrap-vue/commit/6f3010a)) +- **b-table:** don't use css `grid` for stacked table SCSS - for IE 11 compatibility (closes + [#3307](https://github.com/bootstrap-vue/bootstrap-vue/issues/3307)) + ([#3383](https://github.com/bootstrap-vue/bootstrap-vue/issues/3383) + [ce19fc7](https://github.com/bootstrap-vue/bootstrap-vue/commit/ce19fc7)) +- **b-tabs:** fix regression of tabs in lazy modals - use DOM query for probing tabs after mount + (closes: [#3361](https://github.com/bootstrap-vue/bootstrap-vue/issues/3361)) + ([#3375](https://github.com/bootstrap-vue/bootstrap-vue/issues/3375) + [2b188a2](https://github.com/bootstrap-vue/bootstrap-vue/commit/2b188a2)) +- **b-toast:** accessibility - prevent duplicate toast announcements for screen readers (closes + [#3322](https://github.com/bootstrap-vue/bootstrap-vue/issues/3322)) + ([#3329](https://github.com/bootstrap-vue/bootstrap-vue/issues/3329) + [d44fba5](https://github.com/bootstrap-vue/bootstrap-vue/commit/d44fba5)) +- **b-toaster:** CSS fix for IE 11 support (fixes + [#3327](https://github.com/bootstrap-vue/bootstrap-vue/issues/3327)) + ([#3328](https://github.com/bootstrap-vue/bootstrap-vue/issues/3328) + [88b1cfd](https://github.com/bootstrap-vue/bootstrap-vue/commit/88b1cfd)) +- **docs:** correct modal directive name + ([#3335](https://github.com/bootstrap-vue/bootstrap-vue/issues/3335) + [d4dcc35](https://github.com/bootstrap-vue/bootstrap-vue/commit/d4dcc35)) +- **docs:** correct Vuelidate validation example and some minor tweaks + ([#3332](https://github.com/bootstrap-vue/bootstrap-vue/issues/3332) + [d5c22a8](https://github.com/bootstrap-vue/bootstrap-vue/commit/d5c22a8)) +- **docs:** `b-progress-bar` label HTML support examples (closes + [#3333](https://github.com/bootstrap-vue/bootstrap-vue/issues/3333)) + ([#3336](https://github.com/bootstrap-vue/bootstrap-vue/issues/3336) + [526f274](https://github.com/bootstrap-vue/bootstrap-vue/commit/526f274)) +- **types:** fix msxBoxConfirm typo + ([#3280](https://github.com/bootstrap-vue/bootstrap-vue/issues/3280) + [8027e5a](https://github.com/bootstrap-vue/bootstrap-vue/commit/8027e5a)) +- use `installFactory` for main `BootstrapVue` plugin (closes + [#3338](https://github.com/bootstrap-vue/bootstrap-vue/issues/3338)) + ([#3340](https://github.com/bootstrap-vue/bootstrap-vue/issues/3340) + [4c0c445](https://github.com/bootstrap-vue/bootstrap-vue/commit/4c0c445)) + +### Features v2.0.0-rc.21 + +- **b-img-lazy:** add support for IntersectionObserver (closes + [#3276](https://github.com/bootstrap-vue/bootstrap-vue/issues/3276)) + ([#3279](https://github.com/bootstrap-vue/bootstrap-vue/issues/3279) + [5cf71cf](https://github.com/bootstrap-vue/bootstrap-vue/commit/5cf71cf)) +- **b-modal:** improved portaling - retaining parent-child hierarchy (addresses + [#3312](https://github.com/bootstrap-vue/bootstrap-vue/issues/3312)) + ([#3326](https://github.com/bootstrap-vue/bootstrap-vue/issues/3326) + [3728892](https://github.com/bootstrap-vue/bootstrap-vue/commit/3728892)) +- **b-tooltip, b-popover:** add `fallback-placement` prop (closes + [#3348](https://github.com/bootstrap-vue/bootstrap-vue/issues/3348)) + ([#3349](https://github.com/bootstrap-vue/bootstrap-vue/issues/3349) + [ab42b4c](https://github.com/bootstrap-vue/bootstrap-vue/commit/ab42b4c)) +- **es build:** don't transpile import/export statements to require/exports, for better tree shaking + (closes [#3323](https://github.com/bootstrap-vue/bootstrap-vue/issues/3323)) + ([#3358](https://github.com/bootstrap-vue/bootstrap-vue/issues/3358) + [3c1866d](https://github.com/bootstrap-vue/bootstrap-vue/commit/3c1866d)) +- **form controls:** add `autofocus` prop to all `b-form-*` controls + ([#3341](https://github.com/bootstrap-vue/bootstrap-vue/issues/3341) + [e7eb1b4](https://github.com/bootstrap-vue/bootstrap-vue/commit/e7eb1b4)) +- **nuxt module:** optimize imports into single import statements + ([#3325](https://github.com/bootstrap-vue/bootstrap-vue/issues/3325) + [ef71a3b](https://github.com/bootstrap-vue/bootstrap-vue/commit/ef71a3b)) +- **types:** better type declarations (closes + [#1976](https://github.com/bootstrap-vue/bootstrap-vue/issues/1976)) + ([#3283](https://github.com/bootstrap-vue/bootstrap-vue/issues/3283) + [a42abd0](https://github.com/bootstrap-vue/bootstrap-vue/commit/a42abd0)) +- don't warn about multiple Vue instances when testing in JSDOM (closes + [#3303](https://github.com/bootstrap-vue/bootstrap-vue/issues/3303)) + ([#3315](https://github.com/bootstrap-vue/bootstrap-vue/issues/3315) + [0caa29b](https://github.com/bootstrap-vue/bootstrap-vue/commit/0caa29b)) + + + +## [v2.0.0-rc.20](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0-rc.19...v2.0.0-rc.20) + +Released 2019-05-12 + +### Bug Fixes v2.0.0-rc.20 + +- **$bvToast,$bvModal:** ensure values passed to slots are arrays for Vue.js 2.5.x compatibility + (closes [#3174](https://github.com/bootstrap-vue/bootstrap-vue/issues/3174)) + ([#3252](https://github.com/bootstrap-vue/bootstrap-vue/issues/3252) + [f46b5d8](https://github.com/bootstrap-vue/bootstrap-vue/commit/f46b5d8)) +- **b-nav-item-dropdown:** fix disabled state (fixes + [#3264](https://github.com/bootstrap-vue/bootstrap-vue/issues/3264)) + ([#3266](https://github.com/bootstrap-vue/bootstrap-vue/issues/3266) + [10d4c4d](https://github.com/bootstrap-vue/bootstrap-vue/commit/10d4c4d)) +- **b-collapse:** is-nav link click behaviour - check if collapse has `display: block !important` + before attempting to close collapse + ([#3199](https://github.com/bootstrap-vue/bootstrap-vue/issues/3199) + [b0729cc](https://github.com/bootstrap-vue/bootstrap-vue/commit/b0729cc)) +- **b-form-input:** properly handle out-of-sync values (closes + [#2657](https://github.com/bootstrap-vue/bootstrap-vue/issues/2657)) + ([#3172](https://github.com/bootstrap-vue/bootstrap-vue/issues/3172) + [976f9c1](https://github.com/bootstrap-vue/bootstrap-vue/commit/976f9c1)) +- **b-modal:** exclude document.body when determining return focus element + ([#3228](https://github.com/bootstrap-vue/bootstrap-vue/issues/3228) + [092ab2d](https://github.com/bootstrap-vue/bootstrap-vue/commit/092ab2d)) +- **b-modal:** prevent duplicate key when sending to portal-target + ([#3235](https://github.com/bootstrap-vue/bootstrap-vue/issues/3235)) + ([5204ad7](https://github.com/bootstrap-vue/bootstrap-vue/commit/5204ad7)) +- **b-modal:** return focus edge case bug in IE 11 (fixes + [#3206](https://github.com/bootstrap-vue/bootstrap-vue/issues/3206)) + ([#3207](https://github.com/bootstrap-vue/bootstrap-vue/issues/3207) + [7ef36c2](https://github.com/bootstrap-vue/bootstrap-vue/commit/7ef36c2)) +- **b-pagination:** use unicode escape sequence for default bookend button text + ([#3186](https://github.com/bootstrap-vue/bootstrap-vue/issues/3186) + [dfb6af7](https://github.com/bootstrap-vue/bootstrap-vue/commit/dfb6af7)) +- **b-toast:** use appendChild instead of append for IE 11 support + ([#3160](https://github.com/bootstrap-vue/bootstrap-vue/issues/3160) + [be118a9](https://github.com/bootstrap-vue/bootstrap-vue/commit/be118a9)) + +### Features v2.0.0-rc.20 + +- **b-dropdown & b-nav-item-dropdown:** pass optional scope to default slot & fixes keyboard nav + with dropdown forms ([#3242](https://github.com/bootstrap-vue/bootstrap-vue/issues/3242) + [3d1d777](https://github.com/bootstrap-vue/bootstrap-vue/commit/3d1d777)) +- **b-button:** add prop `pill` for pill style buttons + ([#3214](https://github.com/bootstrap-vue/bootstrap-vue/issues/3214) + [c26298b](https://github.com/bootstrap-vue/bootstrap-vue/commit/c26298b)) +- **config:** add option in config to set global tooltip and popover boundary + ([#3229](https://github.com/bootstrap-vue/bootstrap-vue/issues/3229) + [00e4fc9](https://github.com/bootstrap-vue/bootstrap-vue/commit/00e4fc9)) +- **b-dropdown:** additional semantic markup optimizations for A11Y + ([#3196](https://github.com/bootstrap-vue/bootstrap-vue/issues/3196) + [91d893e](https://github.com/bootstrap-vue/bootstrap-vue/commit/91d893e)) +- **b-modal:** use PortalVue for modal placement + ([#3157](https://github.com/bootstrap-vue/bootstrap-vue/issues/3157) + [6325528](https://github.com/bootstrap-vue/bootstrap-vue/commit/6325528)) +- **b-table:** make table sort icons configurable via SCSS variables + ([#3156](https://github.com/bootstrap-vue/bootstrap-vue/issues/3156) + [a72f134](https://github.com/bootstrap-vue/bootstrap-vue/commit/a72f134)) +- **b-toast:** add additional options to global default config (closes + [#3169](https://github.com/bootstrap-vue/bootstrap-vue/issues/3169)) + ([#3170](https://github.com/bootstrap-vue/bootstrap-vue/issues/3170) + [b01e01c](https://github.com/bootstrap-vue/bootstrap-vue/commit/b01e01c)) +- **v-b-toggle:** make targets reactive to updates (closes + [#3165](https://github.com/bootstrap-vue/bootstrap-vue/issues/3165)) + ([#3167](https://github.com/bootstrap-vue/bootstrap-vue/issues/3167) + [6eff6d9](https://github.com/bootstrap-vue/bootstrap-vue/commit/6eff6d9)) +- console warn if multiple instances of Vue detected (addresses + [#3040](https://github.com/bootstrap-vue/bootstrap-vue/issues/3040)) + ([#3220](https://github.com/bootstrap-vue/bootstrap-vue/issues/3220) + [41db3e2](https://github.com/bootstrap-vue/bootstrap-vue/commit/41db3e2)) +- make more component appearance prop defaults globally configurable (closes + [#3173](https://github.com/bootstrap-vue/bootstrap-vue/issues/3173)) + ([#3175](https://github.com/bootstrap-vue/bootstrap-vue/issues/3175) + [f7cf28c](https://github.com/bootstrap-vue/bootstrap-vue/commit/f7cf28c)) +- **types:** create more typescript typings, and simplify component/directive/plugin imports. + ([#3209](https://github.com/bootstrap-vue/bootstrap-vue/issues/3209) + [50bbe6a](https://github.com/bootstrap-vue/bootstrap-vue/commit/50bbe6a)) + + + +## [v2.0.0-rc.19](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0-rc.18...v2.0.0-rc.19) + +Released 2019-04-21 + +### Bug Fixes v2.0.0-rc.19 + +- **b-link:** ensure href prop is not passed to router-links (fixes + [#3066](https://github.com/bootstrap-vue/bootstrap-vue/issues/3066)) + ([#3084](https://github.com/bootstrap-vue/bootstrap-vue/issues/3084) + [f679c11](https://github.com/bootstrap-vue/bootstrap-vue/commit/f679c11)) +- **b-col, b-form-group:** implement self overwriting lazy props getter (fixes: + [#3080](https://github.com/bootstrap-vue/bootstrap-vue/issues/3080)) + ([#3125](https://github.com/bootstrap-vue/bootstrap-vue/issues/3125) + [92756bd](https://github.com/bootstrap-vue/bootstrap-vue/commit/92756bd)) +- **b-form-textarea:** improve auto-row height calculation timing (closes + [#3103](https://github.com/bootstrap-vue/bootstrap-vue/issues/3103)) + ([#3105](https://github.com/bootstrap-vue/bootstrap-vue/issues/3105) + [dfc662e](https://github.com/bootstrap-vue/bootstrap-vue/commit/dfc662e)) +- **b-modal:** clear internal return_focus after modal closes (fixes + [#3067](https://github.com/bootstrap-vue/bootstrap-vue/issues/3067)) + ([#3068](https://github.com/bootstrap-vue/bootstrap-vue/issues/3068) + [971556f](https://github.com/bootstrap-vue/bootstrap-vue/commit/971556f)) +- **b-modal:** ensure that v-model is updated when show or hide is canceled + ([#3131](https://github.com/bootstrap-vue/bootstrap-vue/issues/3131) + [6726a33](https://github.com/bootstrap-vue/bootstrap-vue/commit/6726a33)) +- **b-modal:** fix close on click-out for IE 11 + ([#3117](https://github.com/bootstrap-vue/bootstrap-vue/issues/3117) + [9b09e52](https://github.com/bootstrap-vue/bootstrap-vue/commit/9b09e52)) +- **b-modal:** handle HMR when defining property on Vue prototype + ([#3123](https://github.com/bootstrap-vue/bootstrap-vue/issues/3123) + [a4e7f21](https://github.com/bootstrap-vue/bootstrap-vue/commit/a4e7f21)) +- **b-tab:** don't use `aria-expanded` on the panel + ([#3143](https://github.com/bootstrap-vue/bootstrap-vue/issues/3143) + [381eacf](https://github.com/bootstrap-vue/bootstrap-vue/commit/381eacf)) +- **b-table:** prevent hover style on busy/empty row (closes + [#3079](https://github.com/bootstrap-vue/bootstrap-vue/issues/3079)) + ([#3086](https://github.com/bootstrap-vue/bootstrap-vue/issues/3086) + [c53ffd4](https://github.com/bootstrap-vue/bootstrap-vue/commit/c53ffd4)) +- **utils:** improve `dom`, `env`, `inspect` and test utils + ([#3085](https://github.com/bootstrap-vue/bootstrap-vue/issues/3085) + [bd85049](https://github.com/bootstrap-vue/bootstrap-vue/commit/bd85049)) +- **nuxt module:** ensure that css and transpile are arrays (fixes: + [#3141](https://github.com/bootstrap-vue/bootstrap-vue/issues/3141)) + ([#3142](https://github.com/bootstrap-vue/bootstrap-vue/issues/3142) + [239da77](https://github.com/bootstrap-vue/bootstrap-vue/commit/239da77)) +- **docs:** improve `` prevent closing example + ([#3054](https://github.com/bootstrap-vue/bootstrap-vue/issues/3054) + [f609316](https://github.com/bootstrap-vue/bootstrap-vue/commit/f609316)) +- **docs:** improve code highlighting + table styles + ([#3078](https://github.com/bootstrap-vue/bootstrap-vue/issues/3078) + [d4b9895](https://github.com/bootstrap-vue/bootstrap-vue/commit/d4b9895)) +- **docs:** overall improvements + ([#3129](https://github.com/bootstrap-vue/bootstrap-vue/issues/3129) + [be53376](https://github.com/bootstrap-vue/bootstrap-vue/commit/be53376)) + +### Features v2.0.0-rc.19 + +- **b-dropdown:** use semantic `
` ([#4276](https://github.com/bootstrap-vue/bootstrap-vue/issues/4276)) + ([702a1ef](https://github.com/bootstrap-vue/bootstrap-vue/commit/702a1ef)) +- **b-tabs:** emit cancelable BvEvent before changing tabs via new `activate-tab` event (closes + [#4273](https://github.com/bootstrap-vue/bootstrap-vue/issues/4273)) + ([#4274](https://github.com/bootstrap-vue/bootstrap-vue/issues/4274)) + ([9b195dd](https://github.com/bootstrap-vue/bootstrap-vue/commit/9b195dd)) +- **v-b-visible:** make `v-b-visible` directive available for public use + ([#4318](https://github.com/bootstrap-vue/bootstrap-vue/issues/4318)) + ([5fa7e22](https://github.com/bootstrap-vue/bootstrap-vue/commit/5fa7e22)) + +### Bug Fixes v2.1.0 + +- **b-dropdown:** handle issue with touch devices on MacOS using Safari/Firefox (Fixes + [#4328](https://github.com/bootstrap-vue/bootstrap-vue/issues/4328), + [#4344](https://github.com/bootstrap-vue/bootstrap-vue/issues/4344)) + ([#4329](https://github.com/bootstrap-vue/bootstrap-vue/issues/4329)) + ([2779a0a](https://github.com/bootstrap-vue/bootstrap-vue/commit/2779a0a)) +- **b-nav-form, b-nav-text:** ensure these sub-components have `
  • ` as root element for + accessibility ([#4100](https://github.com/bootstrap-vue/bootstrap-vue/issues/4100)) + ([6774800](https://github.com/bootstrap-vue/bootstrap-vue/commit/6774800)) +- **b-pagination, b-pagination-nav:** add UP/DOWN keyboard navigation support for JAWS (fixes + [#4322](https://github.com/bootstrap-vue/bootstrap-vue/issues/4322)) + ([#4325](https://github.com/bootstrap-vue/bootstrap-vue/issues/4325)) + ([c686088](https://github.com/bootstrap-vue/bootstrap-vue/commit/c686088)) +- **b-table, b-table-lite, b-table-simple:** fix issue with sticky columns when table is not + responsive but has sticky headers (fixes + [#4354](https://github.com/bootstrap-vue/bootstrap-vue/issues/4354)) + ([#4356](https://github.com/bootstrap-vue/bootstrap-vue/issues/4356)) + ([56b3958](https://github.com/bootstrap-vue/bootstrap-vue/commit/56b3958)) +- **b-table, b-table-lite, b-tbody:** fix delegated event handlers when transition + minor + adjustment to row `key` generation (fixes + [#4370](https://github.com/bootstrap-vue/bootstrap-vue/issues/4370), + [#4360](https://github.com/bootstrap-vue/bootstrap-vue/issues/4360)) + ([#4372](https://github.com/bootstrap-vue/bootstrap-vue/issues/4372)) + ([030a3d8](https://github.com/bootstrap-vue/bootstrap-vue/commit/030a3d8)) +- **b-tabs:** allow space to trigger tab activation when `no-key-nav` is enabled (fixes + [#4323](https://github.com/bootstrap-vue/bootstrap-vue/issues/4323)) + ([#4326](https://github.com/bootstrap-vue/bootstrap-vue/issues/4326)) + ([731365b](https://github.com/bootstrap-vue/bootstrap-vue/commit/731365b)) +- **v-b-modal:** ensure trigger element is keyboard accessible if not a link or button, for A11Y + ([#4365](https://github.com/bootstrap-vue/bootstrap-vue/issues/4365)) + ([f54ca29](https://github.com/bootstrap-vue/bootstrap-vue/commit/f54ca29)) +- **v-b-modal:** open modal using `ENTER` key on non-button elements for A11Y + ([#4364](https://github.com/bootstrap-vue/bootstrap-vue/issues/4364)) + ([0d27d7b](https://github.com/bootstrap-vue/bootstrap-vue/commit/0d27d7b)) +- **v-b-tooltip, v-b-popover:** ensure reference to trigger element is passed to title/content + function (fixes [#4331](https://github.com/bootstrap-vue/bootstrap-vue/issues/4331)) + ([#4332](https://github.com/bootstrap-vue/bootstrap-vue/issues/4332)) + ([ea0cbda](https://github.com/bootstrap-vue/bootstrap-vue/commit/ea0cbda)) +- **v-b-visible:** fix type error in `componentUpdated` hook + minor docs update/fixes + ([#4327](https://github.com/bootstrap-vue/bootstrap-vue/issues/4327)) + ([5f3ba9e](https://github.com/bootstrap-vue/bootstrap-vue/commit/5f3ba9e)) +- **web-types:** update web-types code generation to match latest schema + ([#4271](https://github.com/bootstrap-vue/bootstrap-vue/issues/4271)) + ([009431e](https://github.com/bootstrap-vue/bootstrap-vue/commit/009431e)) + +### Other v2.1.0 + +- **b-table:** deprecate prop `filter-debounce` in favour of `b-form-input` debouncing +- documentation updates and fixes + + + +## [v2.0.4](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.3...v2.0.4) + +Released: 2019-10-11 + +### Bug Fixes v2.0.4 + +- **b-carousel:** disable the next/prev controls when the carousel is sliding (closes + [#4210](https://github.com/bootstrap-vue/bootstrap-vue/issues/4210)) + ([#4212](https://github.com/bootstrap-vue/bootstrap-vue/issues/4212)) + ([64d556d](https://github.com/bootstrap-vue/bootstrap-vue/commit/64d556d)) +- **b-dropdown-form:** fix SCSS styling when placed in a nav dropdown (fixes + [#4220](https://github.com/bootstrap-vue/bootstrap-vue/issues/4220)) + ([#4223](https://github.com/bootstrap-vue/bootstrap-vue/issues/4223)) + ([b852bba](https://github.com/bootstrap-vue/bootstrap-vue/commit/b852bba)) +- **types:** correct the declared export name for `BCardSubTitle` component + ([#4229](https://github.com/bootstrap-vue/bootstrap-vue/issues/4229)) + ([9f216df](https://github.com/bootstrap-vue/bootstrap-vue/commit/9f216df)) + +### Performance v2.0.4 + +- **b-table, b-table-lite:** improve render performance for large tables (closes + [#4211](https://github.com/bootstrap-vue/bootstrap-vue/issues/4211), + [#4155](https://github.com/bootstrap-vue/bootstrap-vue/issues/4155)) + ([#4213](https://github.com/bootstrap-vue/bootstrap-vue/issues/4213)) + ([f3f42f2](https://github.com/bootstrap-vue/bootstrap-vue/commit/f3f42f2)) + +### Other v2.0.4 + +- add `"sass"` entry in `package.json` +- minor docs fixes and updates + + + +## [v2.0.3](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.2...v2.0.3) + +Released: 2019-10-05 + +### Bug Fixes v2.0.3 + +- **b-form-file:** fix prop type checking for `value` prop + ([#4168](https://github.com/bootstrap-vue/bootstrap-vue/issues/4168)) + ([a8e2e56](https://github.com/bootstrap-vue/bootstrap-vue/commit/a8e2e56)) +- **b-nav-item-dropdown:** focus-out handling when new focus comes from another `dropdown-toggle` + (closes [#4113](https://github.com/bootstrap-vue/bootstrap-vue/issues/4113)) + ([#4139](https://github.com/bootstrap-vue/bootstrap-vue/issues/4139)) + ([9c37875](https://github.com/bootstrap-vue/bootstrap-vue/commit/9c37875)) +- **b-table:** minor code optimizations to filter debouncing + ([#4167](https://github.com/bootstrap-vue/bootstrap-vue/issues/4167)) + ([018eef1](https://github.com/bootstrap-vue/bootstrap-vue/commit/018eef1)) +- **b-table, b-table-lite, b-table-simple:** disable sticky header max-height on printers / print + media ([#4147](https://github.com/bootstrap-vue/bootstrap-vue/issues/4147)) + ([24c62c5](https://github.com/bootstrap-vue/bootstrap-vue/commit/24c62c5)) +- **b-tooltip, b-popover:** add `SVGElement` as acceptable prop type (closes + [#4173](https://github.com/bootstrap-vue/bootstrap-vue/issues/4173)) + ([#4174](https://github.com/bootstrap-vue/bootstrap-vue/issues/4174)) + ([fab7fea](https://github.com/bootstrap-vue/bootstrap-vue/commit/fab7fea)) +- **v-b-modal:** bind to inner link or button for dropdown items or nav items (fixes + [#4149](https://github.com/bootstrap-vue/bootstrap-vue/issues/4149)) + ([#4187](https://github.com/bootstrap-vue/bootstrap-vue/issues/4187)) + ([5c28bd2](https://github.com/bootstrap-vue/bootstrap-vue/commit/5c28bd2)) + +### Performance v2.0.3 + +- **b-table, b-table-lite:** delegate row event handlers to the tbody element + ([#4192](https://github.com/bootstrap-vue/bootstrap-vue/issues/4192)) + ([3f0d46a](https://github.com/bootstrap-vue/bootstrap-vue/commit/3f0d46a)) +- **tables:** make `b-th` extend `b-td` instead of using functional wrappers + ([#4156](https://github.com/bootstrap-vue/bootstrap-vue/issues/4156)) + ([c9715a8](https://github.com/bootstrap-vue/bootstrap-vue/commit/c9715a8)) +- **tables:** improve provide/inject performance (addresses + [#4155](https://github.com/bootstrap-vue/bootstrap-vue/issues/4155)) + ([#4164](https://github.com/bootstrap-vue/bootstrap-vue/issues/4164)) + ([152fefc](https://github.com/bootstrap-vue/bootstrap-vue/commit/152fefc)) + +### Docs v2.0.3 + +- add prop descriptions to component reference tables (closes + [#3647](https://github.com/bootstrap-vue/bootstrap-vue/issues/3647)) + ([#4161](https://github.com/bootstrap-vue/bootstrap-vue/issues/4161)) + ([fdd2a83](https://github.com/bootstrap-vue/bootstrap-vue/commit/fdd2a83)) +- add quick links (page table of contents) to docs pages for small screens, and add table of + contents to section index pages (instead of a redirect to first child page) + ([#4145](https://github.com/bootstrap-vue/bootstrap-vue/issues/4145)) + ([22268aa](https://github.com/bootstrap-vue/bootstrap-vue/commit/22268aa)) + + + +## [v2.0.2](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.1...v2.0.2) + +Released: 2019-09-20 + +This patch release includes a few minor bug fixes and documentation updates. + +### Bug Fixes v2.0.2 + +- **b-popover, b-tooltip:** ensure prop `boundary-padding` is passed to popper instance (fixes + [#4131](https://github.com/bootstrap-vue/bootstrap-vue/issues/4131)) + ([#4133](https://github.com/bootstrap-vue/bootstrap-vue/issues/4133)) + ([a54a647](https://github.com/bootstrap-vue/bootstrap-vue/commit/a54a647)) +- **b-collapse:** make `id` prop not required + ([#4109](https://github.com/bootstrap-vue/bootstrap-vue/issues/4109)) + ([4f935ce](https://github.com/bootstrap-vue/bootstrap-vue/commit/4f935ce)) +- **tables:** add in missing Bootstrap variant class `bg-active` for dark tables + ([#4098](https://github.com/bootstrap-vue/bootstrap-vue/issues/4098)) + ([d9900ab](https://github.com/bootstrap-vue/bootstrap-vue/commit/d9900ab)) +- **tables:** ensure row variant `active` (class `table-active`) takes precedence over other row + variants (addresses [#3008](https://github.com/bootstrap-vue/bootstrap-vue/issues/3008)) + ([#4127](https://github.com/bootstrap-vue/bootstrap-vue/issues/4127)) + ([fdb8bb6](https://github.com/bootstrap-vue/bootstrap-vue/commit/fdb8bb6)) +- **tooltips, popovers:** hide trigger element `title` attribute during show delay (fixes + [#4114](https://github.com/bootstrap-vue/bootstrap-vue/issues/4114)) + ([#4120](https://github.com/bootstrap-vue/bootstrap-vue/issues/4120)) + ([2dd8d5a](https://github.com/bootstrap-vue/bootstrap-vue/commit/2dd8d5a)) + + + +## [v2.0.1](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0...v2.0.1) + +Released: 2019-09-13 + +This patch release includes a few minor bug fixes and documentation updates. + +### Bug Fixes v2.0.1 + +- **b-media:** fix vertical align class when `top` or `bottom` selected (fixes + [#4052](https://github.com/bootstrap-vue/bootstrap-vue/issues/4052)) + ([#4055](https://github.com/bootstrap-vue/bootstrap-vue/issues/4055)) + ([9ccfe4c](https://github.com/bootstrap-vue/bootstrap-vue/commit/9ccfe4c)) +- **b-table:** handle filter as an object when using items provider, and prevent duplicate provider + calls on mount (fixes [#4065](https://github.com/bootstrap-vue/bootstrap-vue/issues/4065)) + ([#4068](https://github.com/bootstrap-vue/bootstrap-vue/issues/4068)) + ([9ddd115](https://github.com/bootstrap-vue/bootstrap-vue/commit/9ddd115)) +- **b-table:** remove extra slashes in mixins imports + ([#4087](https://github.com/bootstrap-vue/bootstrap-vue/issues/4087)) + ([77f5be1](https://github.com/bootstrap-vue/bootstrap-vue/commit/77f5be1)) +- **tooltips, popovers:** check `document.body` instead of `document` for IE 11 support (fixes + [#4074](https://github.com/bootstrap-vue/bootstrap-vue/issues/4074)) + ([#4075](https://github.com/bootstrap-vue/bootstrap-vue/issues/4075)) + ([1eda4fe](https://github.com/bootstrap-vue/bootstrap-vue/commit/1eda4fe)) +- **v-b-tooltip, v-b-popover:** add missing `disabled` config option + ([#4057](https://github.com/bootstrap-vue/bootstrap-vue/issues/4057)) + ([f488dc1](https://github.com/bootstrap-vue/bootstrap-vue/commit/f488dc1)) +- **v-b-tooltip, v-b-popover:** don't show if no title/content provided (closes + [#4064](https://github.com/bootstrap-vue/bootstrap-vue/issues/4064)) + ([#4076](https://github.com/bootstrap-vue/bootstrap-vue/issues/4076)) + ([0b7de29](https://github.com/bootstrap-vue/bootstrap-vue/commit/0b7de29)) + + + +## [v2.0.0](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.0.0-rc.28...v2.0.0) + +Released: 2019-09-06 + +> **BootstrapVue 2.0.0 stable** introduces several new features and bug fixes. Please note that this +> release also _includes several breaking changes_. + +**Notable improvements:** + +- Tooltips and popovers have been completely re-written for better reactivity and stability. The + directive versions are now reactive to trigger element `title` attribute changes and configuration + changes. The component versions now perform better when quickly hovering/un-hovering the trigger + element. Component and directive versions now have a default delay of `50`ms (affects `'hover'` + and `'focus'` triggers only). They can now have a trigger of `'manual'` (when used by itself) of + which they can only be opened or closed programmatically. Users can now optionally specify the ID + that the tooltip or popover uses. For accessibility reasons, the `title` attribute is removed from + the trigger element (target) only when the tooltip or popover is showing, and is restored when + hidden. +- Modals, tooltips, popovers, and toasts now work with scoped style classes (requires the use of + vue-loader's `/deep/`, `::v-deep` or `>>>` + [deep selectors](https://vue-loader.vuejs.org/guide/scoped-css.html#child-component-root-elements) + for targeting inner elements, just like with any other component). +- New SVG background image based sorting indicator icons for ``, with the ability to place + them on either the right (default) or left of the table cell headers (via a new prop). +- Programmatic selection of `` selectable rows. +- Ability to provide your own custom footer structure for `` and ``. + +### Breaking changes and deprecated features removal v2.0.0 + +**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 and + simplify code. + +**Two notable breaking changes are:** + +- **changes to the table slot naming syntax:** the table slot syntax introduced in rc.28 has been + modified in v2.0.0 stable for better compatibility with the new Vue `v-slot` syntax and its + limitations (which currently are not documented in the Vue.JS docs). +- **the removal of the deprecated `/es` build directory:** Users should now be importing the new + top-level named exports when importing individual components, directives, and plugins. + +Read the following migration guide for more details. + +### Migration guide v2.0.0 + +- **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 rely only on `IntersectionObserver` support (native or via a + 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 (e.g. + IE 11) +- `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 scoped slot naming convention + has changed**. Users should be using the new table round bracketed slot naming syntax: use slot + `cell(field)` instead of `field` or `[field]`, use slot `head(field)` instead of `HEAD_field` or + `HEAD[field]`, use `foot(field)` instead of `FOOT_field` or `FOOT[field]`. This change was + _required_ for better compatibility with the new Vue `v-slot` syntax. The square bracket syntax + introduced in `2.0.0-rc.28` has been replaced with the round bracket syntax to reduce possible + confusion and potential future issues with Vue 2.6's new + [dynamic slot name](https://vuejs.org/v2/guide/components-slots.html#Dynamic-Slot-Names) 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 the filter's _criteria_ (i.e. the search value, search + `RegExpr`, 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 the two) fields definition format instead. +- `b-table`: sorting icon SASS variables have been changed to handle the new SVG backgrounds. If you + previously had custom CSS styling/icons, they will not work as expected - but sorting will still + work. the SVG backgrounds can be controlled via SASS variables. +- `b-tab`: removal of deprecated `href` prop. Use `` for controlling panes that change with + URL changes. +- `b-tabs`: removal of deprecated `tabs` slot. Use slot `tabs-end` instead. +- `b-tabs`: removal of deprecated `bottom` prop. Use the `end` prop instead. +- 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. + +Please refer to the [documentation](https://bootstrap-vue.org/) for the latest usage and examples, +and below for a list of fixes and new features. + +### Bug Fixes v2.0.0 + +- **b-dropdown-\*:** ensure class bindings are placed on root element for all dropdown + sub-components (closes [#4022](https://github.com/bootstrap-vue/bootstrap-vue/issues/4022)) + ([#4024](https://github.com/bootstrap-vue/bootstrap-vue/issues/4024)) + ([81efb89](https://github.com/bootstrap-vue/bootstrap-vue/commit/81efb89)) +- **b-form-textarea:** handle initial auto-height when in modal, tabs, or other component with + transition or which uses `v-show` (fixes + [#3936](https://github.com/bootstrap-vue/bootstrap-vue/issues/3936), + [#3702](https://github.com/bootstrap-vue/bootstrap-vue/issues/3702)) + ([#3937](https://github.com/bootstrap-vue/bootstrap-vue/issues/3937)) + ([be3ac62](https://github.com/bootstrap-vue/bootstrap-vue/commit/be3ac62)) +- **b-link:** only add the `nativeOn` property to componentData when rendering a router link + ([#3976](https://github.com/bootstrap-vue/bootstrap-vue/issues/3976)) + ([62fb0b6](https://github.com/bootstrap-vue/bootstrap-vue/commit/62fb0b6)) +- **b-modal:** ensure non-prop attributes are transferred to the modal outer wrapper `div` (closes + [#3896](https://github.com/bootstrap-vue/bootstrap-vue/issues/3896)) + ([#3921](https://github.com/bootstrap-vue/bootstrap-vue/issues/3921)) + ([8bf3a55](https://github.com/bootstrap-vue/bootstrap-vue/commit/8bf3a55)) +- **b-modal:** fix scroll to top issue when modal has `no-fade` set + ([#4004](https://github.com/bootstrap-vue/bootstrap-vue/issues/4004)) + ([332b79f](https://github.com/bootstrap-vue/bootstrap-vue/commit/332b79f)) +- **b-table, b-table-lite:** handle edge case where field slot returns no vNodes (fixes + [#3919](https://github.com/bootstrap-vue/bootstrap-vue/issues/3919)) + ([#3920](https://github.com/bootstrap-vue/bootstrap-vue/issues/3920)) + ([a392059](https://github.com/bootstrap-vue/bootstrap-vue/commit/a392059)) +- **b-table, b-table-lite:** render header when not always stacked mode (fixes + [#3886](https://github.com/bootstrap-vue/bootstrap-vue/issues/3886)) + ([#3887](https://github.com/bootstrap-vue/bootstrap-vue/issues/3887)) + ([2302b31](https://github.com/bootstrap-vue/bootstrap-vue/commit/2302b31)) +- **b-table, b-table-lite:** generate `:key` for `row-details` row based on the `primary-key` field + value if available ([#4025](https://github.com/bootstrap-vue/bootstrap-vue/issues/4025)) + ([c7cb16f](https://github.com/bootstrap-vue/bootstrap-vue/commit/c7cb16f)) +- **v-b-toggle:** don't override `role` if element has a `role` assigned + ([#3889](https://github.com/bootstrap-vue/bootstrap-vue/issues/3889)) + ([5d155ba](https://github.com/bootstrap-vue/bootstrap-vue/commit/5d155ba)) +- **tooltip, popover:** overall code refactor for better reactivity and performance (fixes: + [#1990](https://github.com/bootstrap-vue/bootstrap-vue/issues/1990), + [#2937](https://github.com/bootstrap-vue/bootstrap-vue/issues/2937), + [#3480](https://github.com/bootstrap-vue/bootstrap-vue/issues/3480), + [#3717](https://github.com/bootstrap-vue/bootstrap-vue/issues/3717), + [#3854](https://github.com/bootstrap-vue/bootstrap-vue/issues/3854), closes + [#3451](https://github.com/bootstrap-vue/bootstrap-vue/issues/3451)) + ([#3908](https://github.com/bootstrap-vue/bootstrap-vue/issues/3908)) + ([eebab43](https://github.com/bootstrap-vue/bootstrap-vue/commit/eebab43)) + +### Features v2.0.0 + +- **b-carousel:** add prop `no-wrap` for disabling wrapping to start/end (closes + [#3902](https://github.com/bootstrap-vue/bootstrap-vue/issues/3902)) + ([#3905](https://github.com/bootstrap-vue/bootstrap-vue/issues/3905)) + ([2c8bd23](https://github.com/bootstrap-vue/bootstrap-vue/commit/2c8bd23)) +- **b-dropdown:** add `role=presentation` to `
  • ` elements for improved a11y + ([#3996](https://github.com/bootstrap-vue/bootstrap-vue/issues/3996)) + ([464d257](https://github.com/bootstrap-vue/bootstrap-vue/commit/464d257)) +- **b-img-lazy:** switch IntersectionObserver to use private `v-b-visible` directive + ([#3977](https://github.com/bootstrap-vue/bootstrap-vue/issues/3977)) + ([249ccfa](https://github.com/bootstrap-vue/bootstrap-vue/commit/249ccfa)) +- **b-modal:** add scoped style support when portalled (non-static modal) + ([#3962](https://github.com/bootstrap-vue/bootstrap-vue/issues/3962)) + ([77ad6b9](https://github.com/bootstrap-vue/bootstrap-vue/commit/77ad6b9)) +- **b-nav:** add card header support + ([#3883](https://github.com/bootstrap-vue/bootstrap-vue/issues/3883)) + ([4046a53](https://github.com/bootstrap-vue/bootstrap-vue/commit/4046a53)) +- **b-pagination:** if number of pages changes, try and keep current page active (closes + [#3716](https://github.com/bootstrap-vue/bootstrap-vue/issues/3716)) + ([#3990](https://github.com/bootstrap-vue/bootstrap-vue/issues/3990)) + ([ae8ce78](https://github.com/bootstrap-vue/bootstrap-vue/commit/ae8ce78)) +- **b-modal:** add prop for auto focusing one of the built in-buttons once `shown` (closes + [#3945](https://github.com/bootstrap-vue/bootstrap-vue/issues/3945)) + ([#3979](https://github.com/bootstrap-vue/bootstrap-vue/issues/3979)) + ([6f2827e](https://github.com/bootstrap-vue/bootstrap-vue/commit/6f2827e)) +- **b-table:** allow field definition properties `filterByFormatted` and `sortByFormatted` to accept + a formatter function reference (closes + [#3892](https://github.com/bootstrap-vue/bootstrap-vue/issues/3892)) + ([#3898](https://github.com/bootstrap-vue/bootstrap-vue/issues/3898)) + ([5492b38](https://github.com/bootstrap-vue/bootstrap-vue/commit/5492b38)) +- **b-table:** new sorting icons using SVG, plus option to place icon on left of header cell (closes + [#3687](https://github.com/bootstrap-vue/bootstrap-vue/issues/3687), + [#3696](https://github.com/bootstrap-vue/bootstrap-vue/issues/3696), + [#3918](https://github.com/bootstrap-vue/bootstrap-vue/issues/3918), + [#3966](https://github.com/bootstrap-vue/bootstrap-vue/issues/3966)) + ([#3968](https://github.com/bootstrap-vue/bootstrap-vue/issues/3968)) + ([c4442f4](https://github.com/bootstrap-vue/bootstrap-vue/commit/c4442f4)) +- **b-table:** add `filter-debounce` prop for debouncing filter updates + ([#3891](https://github.com/bootstrap-vue/bootstrap-vue/issues/3891)) + ([03536a5](https://github.com/bootstrap-vue/bootstrap-vue/commit/03536a5)) +- **b-table:** add `selectAllRows()` and `clearSelected()` to thead/tfoot slot scopes (addresses + [#3901](https://github.com/bootstrap-vue/bootstrap-vue/issues/3901)) + ([#3907](https://github.com/bootstrap-vue/bootstrap-vue/issues/3907)) + ([86c53dd](https://github.com/bootstrap-vue/bootstrap-vue/commit/86c53dd)) +- **b-table, b-table-lite:** switch slot name syntax to use round brackets instead of square + brackets ([#3986](https://github.com/bootstrap-vue/bootstrap-vue/issues/3986)) + ([fca7bd5](https://github.com/bootstrap-vue/bootstrap-vue/commit/fca7bd5)) +- **b-table, b-table-lite:** remove deprecated slot names, introduce new slot names + ([#3866](https://github.com/bootstrap-vue/bootstrap-vue/issues/3866)) + ([249efd9](https://github.com/bootstrap-vue/bootstrap-vue/commit/249efd9)) +- **b-table, b-table-lite:** use `aria-details` rather than `aria-describedby` when details row + showing (addresses [#3801](https://github.com/bootstrap-vue/bootstrap-vue/issues/3801)) + ([#3992](https://github.com/bootstrap-vue/bootstrap-vue/issues/3992)) + ([f6f73c7](https://github.com/bootstrap-vue/bootstrap-vue/commit/f6f73c7)) +- **b-table, b-table-lite:** add support for custom header attributes (closes + [#2244](https://github.com/bootstrap-vue/bootstrap-vue/issues/2244)) + ([#3876](https://github.com/bootstrap-vue/bootstrap-vue/issues/3876)) + ([8784f31](https://github.com/bootstrap-vue/bootstrap-vue/commit/8784f31)) +- **b-table, b-table-lite:** add new scoped slot `custom-foot` to allow user to create their own + table footer (closes [#3960](https://github.com/bootstrap-vue/bootstrap-vue/issues/3960)) + ([#4027](https://github.com/bootstrap-vue/bootstrap-vue/issues/4027)) + ([cbeeef9](https://github.com/bootstrap-vue/bootstrap-vue/commit/cbeeef9)) +- **b-table, b-table-lite, b-table-simple:** add `no-border-collapse` prop and SCSS + ([#3987](https://github.com/bootstrap-vue/bootstrap-vue/issues/3987)) + ([253b4f6](https://github.com/bootstrap-vue/bootstrap-vue/commit/253b4f6)) +- **b-toast:** add support for scoped styles + ([#3963](https://github.com/bootstrap-vue/bootstrap-vue/issues/3963)) + ([ca1b5de](https://github.com/bootstrap-vue/bootstrap-vue/commit/ca1b5de)) +- **tooltip, popover:** overall code refactor for better reactivity and performance (fixes: + [#1990](https://github.com/bootstrap-vue/bootstrap-vue/issues/1990), + [#2937](https://github.com/bootstrap-vue/bootstrap-vue/issues/2937), + [#3480](https://github.com/bootstrap-vue/bootstrap-vue/issues/3480), + [#3717](https://github.com/bootstrap-vue/bootstrap-vue/issues/3717), + [#3854](https://github.com/bootstrap-vue/bootstrap-vue/issues/3854), closes + [#3451](https://github.com/bootstrap-vue/bootstrap-vue/issues/3451)) + ([#3908](https://github.com/bootstrap-vue/bootstrap-vue/issues/3908)) + ([eebab43](https://github.com/bootstrap-vue/bootstrap-vue/commit/eebab43)) + +### Deprecation removals v2.0.0 + +- **b-dropdown:** remove deprecated slot `text` + ([#3868](https://github.com/bootstrap-vue/bootstrap-vue/issues/3868)) + ([29eb8b1](https://github.com/bootstrap-vue/bootstrap-vue/commit/29eb8b1)) +- **b-form-group:** remove deprecated prop `horizontal` and `breakpoint` + ([#3879](https://github.com/bootstrap-vue/bootstrap-vue/issues/3879)) + ([b301822](https://github.com/bootstrap-vue/bootstrap-vue/commit/b301822)) +- **b-nav, b-nav-item-dropdown:** remove deprecated slot and props + ([#3867](https://github.com/bootstrap-vue/bootstrap-vue/issues/3867)) + ([21fab35](https://github.com/bootstrap-vue/bootstrap-vue/commit/21fab35)) +- **b-modal:** remove `BvModalEvent` deprecations + ([#3864](https://github.com/bootstrap-vue/bootstrap-vue/issues/3864)) + ([90c299c](https://github.com/bootstrap-vue/bootstrap-vue/commit/90c299c)) +- **b-table, b-table-lite:** switch slot name syntax to use round brackets instead of square + brackets ([#3986](https://github.com/bootstrap-vue/bootstrap-vue/issues/3986)) + ([fca7bd5](https://github.com/bootstrap-vue/bootstrap-vue/commit/fca7bd5)) +- **b-table, b-table-lite:** remove deprecated slot names, introduce new slot names + ([#3866](https://github.com/bootstrap-vue/bootstrap-vue/issues/3866)) + ([249efd9](https://github.com/bootstrap-vue/bootstrap-vue/commit/249efd9)) +- **b-tabs:** remove deprecations + ([#3863](https://github.com/bootstrap-vue/bootstrap-vue/issues/3863)) + ([0edac49](https://github.com/bootstrap-vue/bootstrap-vue/commit/0edac49)) +- **tooltip/popover:** remove SCSS deprecations + ([#3869](https://github.com/bootstrap-vue/bootstrap-vue/issues/3869)) + ([bea49d4](https://github.com/bootstrap-vue/bootstrap-vue/commit/bea49d4)) +- **build:** remove deprecated `es/` build + ([#3604](https://github.com/bootstrap-vue/bootstrap-vue/issues/3604)) + ([3828f59](https://github.com/bootstrap-vue/bootstrap-vue/commit/3828f59)) + +
    +
    + +## Older releases -* **tooltip:** inline-block element for wrappers ([#572](https://github.com/bootstrap-vue/bootstrap-vue/issues/572)) ([4b680ee](https://github.com/bootstrap-vue/bootstrap-vue/commit/4b680ee)) +For prior release notes and commits, please refer to the +[CHANGELOG-OLD](https://github.com/bootstrap-vue/bootstrap-vue/blob/master/CHANGELOG-OLD.md) file. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index ccd62f4d70b..fb779a4ee99 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,46 +1,65 @@ # Contributor Covenant Code of Conduct -## Our Pledge +## Our pledge -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. +In the interest of fostering an open and welcoming environment, we as contributors and maintainers +pledge to making participation in our project and our community a harassment-free experience for +everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level +of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. -## Our Standards +## Our standards Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit + permission +- Other conduct which could reasonably be considered inappropriate in a professional setting -## Our Responsibilities +## Our responsibilities -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. +Project maintainers are responsible for clarifying the standards of acceptable behavior and are +expected to take appropriate and fair corrective action in response to any instances of unacceptable +behavior. -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, +code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or +to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. ## Scope -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. +This Code of Conduct applies both within project spaces and in public spaces when an individual is +representing the project or its community. Examples of representing a project or community include +using an official project e-mail address, posting via an official social media account, or acting as +an appointed representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at pooya@pi0.ir. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting +the project team at pooya@pi0.ir. The project team will review and investigate all complaints, and +will respond in a way that it deems appropriate to the circumstances. The project team is obligated +to maintain confidentiality with regard to the reporter of an incident. Further details of specific +enforcement policies may be posted separately. -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face +temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at +[https://contributor-covenant.org/version/1/4][version] -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ +[homepage]: https://contributor-covenant.org +[version]: https://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md old mode 100755 new mode 100644 index 526d8bdb66e..3f2fe93edb8 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,30 +1,67 @@ # Contributing -👍🎉 First off, thanks for taking the time to contribute! 🎉👍 +> 👍🎉 First off, thanks for taking the time to contribute! 🎉👍 -### Playground & Issue Reports -If you want to play with BootstrapVue components without any local setup just head to -[OnlinePlayground](https://bootstrap-vue.github.io/play) and you can interactively play and test components with a fresh Vue instance. -If you want to keep your changes or make PRs reporting a component's misbehaviour you can save them in JSFiddle and provide that link in issues. +## Playground & Issue reports -### Setup -- Clone this repo. -- Make sure you have node & yarn installed locally. -- Run `yarn install` to get all dependencies installed. +If you want to play with BootstrapVue components without any local setup just head to our +[Online Playground](https://bootstrap-vue.org/play) and you can interactively play and test +components with a fresh Vue instance. If you want to keep your changes or make PRs reporting a +component's misbehaviour you can save them to _CodePen_, _CodeSandbox_ or _JSFiddle_ and provide +that link in issues. + +## Setup + +- Clone this repo (`git clone https://github.com/bootstrap-vue/bootstrap-vue --branch=dev`) +- Make sure you have `node` & `yarn` installed locally +- `cd bootstrap-vue` +- Run `yarn install` to get all dependencies installed + +## Work on components -### Work on components If you want to hack and improve components locally, you can follow these steps: -- Run `yarn docs-dev` to run a local development server. -- Head to `http://localhost:3000/play`. -- Now you can locally make changes to components (they are located in the `components` directory). - Changes will be applied with webpack hot-reloading without needing to reload the page. -- Finally feel free to share your awesome hacks with others and opening a PR. +- Run `yarn docs-dev` to run a local development server +- Head to `http://localhost:3000/play` +- Now you can locally make changes to components (they are located in the `components` directory) + Changes will be applied with webpack hot-reloading without needing to reload the page +- Finally feel free to share your awesome hacks with others and opening a PR + +## Test inside your project -### Test inside your project If you want to see your changes in your project instead of the playground: -- Execute `yarn link` inside *bootstrap-vue* directory. +- Execute `yarn link` inside _bootstrap-vue_ directory - In your project run `yarn link bootstrap-vue` -- Run `yarn watch` inside *bootstrap-vue* -- Now every time you change a component, a new production version will be built and ready on your project. +- Run `yarn watch` inside _bootstrap-vue_ +- Now every time you change a component, a new production version will be built and ready on your + project + +## Pull requests + +Please ensure all pull requests are made against the `dev` branch on GitHub. See the +[Conventional Commits](https://conventionalcommits.org/) spec for commit and PR naming guidelines. +This is very important, as the `CHANGELOG` is generated from these messages. + +Examples: + +- `fix(b-modal): fixes some broken modal stuff` +- `feat(b-table): add a feature to the table component` + +## Financial contributions + +We also welcome financial contributions in full transparency on our +[Open Collective](https://opencollective.com/bootstrap-vue). Anyone can file an expense. If the +expense makes sense for the development of the community, it will be "merged" in the ledger of our +open collective by the core contributors and the person who filed the expense will be reimbursed. + +Consider asking your company to also support this open source project by +[becoming a sponsor](https://opencollective.com/bootstrap-vue/contribute/). + +## Contributors + +Thank you to all the people who have already contributed to BootstrapVue! + +
    + +
    diff --git a/LICENSE b/LICENSE index 25f291d4b5d..80d672f72fb 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 Pooya Parsa +Copyright (c) 2016-2020 - BootstrapVue Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md old mode 100755 new mode 100644 index f21dd9a79b5..ca6ea40e486 --- a/README.md +++ b/README.md @@ -1,87 +1,108 @@

    - - - + + + +


    - - - - - - - - - - - - - - - - - - - - - - - - + +

    + 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. +

    +
    + +

    + + Current version + + + Bootstrap version + + + Vue.js version + + + Build status + + + Dependencies status + +
    + + Coverage + + + Package quality + + + Code quality + + + npm downloads + + + npm weekly downloads + +
    + + Open Collective sponsors + + + Open Collective backers + + + Open Collective balance +

    -> [Bootstrap 4](https://v4-alpha.getbootstrap.com/) components for [Vue.js 2](https://vuejs.org/) - - ⚠ [Release Notes](https://github.com/bootstrap-vue/bootstrap-vue/releases) - -# ✔ Getting started -Please refer to [Official Documentation](https://bootstrap-vue.github.io) for setup guide, examples and documentation. - -1. Download dependencies: -```bash -yarn add bootstrap-vue -yarn add bootstrap@4.0.0-alpha.6 -yarn add -D style-loader -``` - -2. Register BootstrapVue in your app entrypoint: -```js -import Vue from 'vue' -import BootstrapVue from 'bootstrap-vue'; - -Vue.use(BootstrapVue); -``` - -3. Import styles using style-loader: -```js -import 'bootstrap/dist/css/bootstrap.css' -import 'bootstrap-vue/dist/bootstrap-vue.css' -``` - -##### For users of Webpack or Webpack-Simple from `vue-cli` follow these instructions: -1. Download the dependencies: -```bash -yarn add bootstrap-vue -yarn add bootstrap@4.0.0-alpha.6 -yarn add -D style-loader -``` - -2. In `src/main.js`, add the following lines, in priority order: -```js -import Vue from 'vue'; -/* ( there may be other imports here ) */ -import BootstrapVue from 'bootstrap-vue/dist/bootstrap-vue.esm'; -import 'bootstrap-vue/dist/bootstrap-vue.css'; -import 'bootstrap/dist/css/bootstrap.css'; -/* ( there may be other imports here ) */ - -Vue.use(BootstrapVue); -``` - -#### Note on style-loader: -If you are unable or do not want to add style-loader as a developer dependency, you have to -manually include both [Bootstrap's](https://v4-alpha.getbootstrap.com/getting-started/download/) -and [BootstrapVue's](https://unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.css) CSS files -in your bundle or reference them from `static/` via `index.html`. - -# License -MIT +

    Links

    + +- 📘 [Documentation](https://bootstrap-vue.org) +- 🔨 [Release Notes](https://bootstrap-vue.org/docs/reference/changelog) +- 💬 [Discord Chat](https://discord.gg/j2Mtcny) +- 🐦 [Twitter](https://twitter.com/BootstrapVue) + +

    Sponsors

    + +Support this project by becoming a sponsor. + +Your logo will show up here with a link to your website. +[[Become a sponsor](https://opencollective.com/bootstrap-vue#sponsor)] + + + + + + + + + + + + +

    Backers

    + +Thank you to all our backers! 🙏 +[[Become a backer](https://opencollective.com/bootstrap-vue#backer)] + + + +

    Contributors

    + +This project exists thanks to all the people who contribute. [[Contribute]](CONTRIBUTING.md). + + + +

    Partners

    + +

    + Powered by Vercel +

    + +

    License

    + +Released under the MIT [License](./LICENSE). Copyright (c) BootstrapVue. + +[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fbootstrap-vue%2Fbootstrap-vue.svg?type=small)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fbootstrap-vue%2Fbootstrap-vue?ref=badge_small) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000000..0418354d1aa --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,20 @@ +# Security Policy + +## Supported Versions + +| Version | Supported | +| ------- | ------------------ | +| 2.x | :white_check_mark: | +| 1.x | :x: | +| < 1.0 | :x: | + +## Reporting a Vulnerability + +The BootstrapVue team takes security issues very seriously. We appreciate your efforts to +responsibly disclose your findings, and will make every effort to acknowledge your contributions. + +To report a security issue, email +[bootstrapvue.js@gmail.com](mailto:security@bootstrapvue.js@gmail.com) and include the word +"SECURITY" in the subject line. + +We'll endeavor to respond quickly, and will keep you updated throughout the process. diff --git a/__tests__/.eslintrc b/__tests__/.eslintrc deleted file mode 100755 index 7bc296da26e..00000000000 --- a/__tests__/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "env": { - "jest": true - } -} \ No newline at end of file diff --git a/__tests__/components/alert.spec.js b/__tests__/components/alert.spec.js deleted file mode 100755 index d8afdb77ab8..00000000000 --- a/__tests__/components/alert.spec.js +++ /dev/null @@ -1,38 +0,0 @@ -import {loadFixture, testVM, nextTick, setData} from '../helpers'; -import Vue from 'vue/dist/vue.common'; - -describe('alert', async () => { - beforeEach(loadFixture('alert')); - testVM(); - - it('check class names', async () => { - const {app: {$refs, $el}} = window; - - expect($refs.default_alert).toHaveClass('alert alert-info'); - expect($refs.success_alert).toHaveClass('alert alert-success'); - }); - - it('show prop', async () => { - const {app: {$refs, $el}} = window; - - // Default is hidden - expect($el.textContent).not.toContain('Dismissible Alert!'); - - // Make visible by changing visible state - await setData(app, 'showDismissibleAlert', true); - expect($el.textContent).toContain('Dismissible Alert!'); - }); - - it('dismiss button', async () => { - const {app: {$refs, $el}} = window; - const alert = $refs.success_alert; - - expect(alert).toHaveClass('alert-dismissible'); - - const closeBtn = alert.$el.querySelector('.close'); - expect(closeBtn).not.toBeNull(); - closeBtn.click(); - await nextTick(); - expect($el.textContent).not.toContain('Success Alert'); - }); -}); \ No newline at end of file diff --git a/__tests__/components/badge.spec.js b/__tests__/components/badge.spec.js deleted file mode 100755 index f8703a5ebba..00000000000 --- a/__tests__/components/badge.spec.js +++ /dev/null @@ -1,42 +0,0 @@ -import { loadFixture, testVM } from '../helpers' - -const variantList = [ - 'default', - 'primary', - 'success', - 'info', - 'warning', - 'danger', -].map(variant => { - return { ref: `badge_${variant}`, variant } -}) - -describe('badge', async() => { - beforeEach(loadFixture('badge')) - testVM() - - it('should apply variant classes', async() => { - const { app: { $refs, $el } } = window - - expect($refs.badge_pill).toHaveAllClasses(['badge', 'badge-pill']) - - variantList.forEach(({ ref, variant }) => { - const vm = $refs[ref][0] - expect(vm).toHaveAllClasses(['badge', `badge-${variant}`]) - }) - }) - - it('should apply default pill class when not passed variant', async() => { - const { app: { $refs, $el } } = window - - const vm = $refs.no_props - expect(vm).toHaveClass('badge-default') - }) - - it('should not apply pill class when not passed pill boolean prop', async() => { - const { app: { $refs, $el } } = window - - const vm = $refs.no_props - expect(vm).not.toHaveClass('badge-pill') - }) -}); diff --git a/__tests__/components/breadcrumb.spec.js b/__tests__/components/breadcrumb.spec.js deleted file mode 100755 index eb65f681110..00000000000 --- a/__tests__/components/breadcrumb.spec.js +++ /dev/null @@ -1,89 +0,0 @@ -import { loadFixture, testVM } from '../helpers' - -describe('breadcrumb', async() => { - beforeEach(loadFixture('breadcrumb')) - testVM() - - it('should apply bootstrap breadcrumb classes', async() => { - const { app: { $refs, $el } } = window - const vm = $refs.breadcrumb1 - const $ol = vm.$el - - expect($ol.classList.contains('breadcrumb')).toBe(true) - - Array.from($ol.children).forEach($li => { - if ($li.tagName === 'LI') { - expect($li.classList.contains('breadcrumb-item')).toBe(true) - } - }) - }) - - it('should apply ARIA roles', async() => { - const { app: { $refs, $el } } = window - const vm = $refs.breadcrumb1 - const $ol = vm.$el - - Array.from($ol.children).forEach($li => { - if ($li.tagName === 'LI') { - expect($li.getAttribute('role')).toBe('presentation') - } - }) - }) - - it('should apply active class', async() => { - const { app: { $refs, $el } } = window - const vm = $refs.breadcrumb2 - const $listItems = Array.from(vm.$el.children) - - app.items2.forEach((item, i) => { - if (item.active) { - expect($listItems[i].classList.contains('active')).toBe(true) - } - }) - }) - - it('should apply aria-current to active class element', async() => { - const { app: { $refs, $el } } = window - const vm = $refs.breadcrumb2 - const $listItems = Array.from(vm.$el.children) - - app.items2.forEach((item, i) => { - if (item.active) { - expect($listItems[i].firstElementChild.hasAttribute('aria-current')).toBe(true) - } else { - expect($listItems[i].firstElementChild.hasAttribute('aria-current')).toBe(false) - } - }) - }) - - it('should default active class to last item only when no true active prop provided', async() => { - const { app: { $refs, $el } } = window - const vm = $refs.breadcrumb1 - const $listItems = Array.from(vm.$el.children) - const itemsLength = app.items.length - - app.items.forEach((item, i) => { - const isLast = i === itemsLength - 1 - - if (isLast) { - expect($listItems[i].classList.contains('active')).toBe(true) - } else { - expect($listItems[i].classList.contains('active')).toBe(false) - } - }) - }) - - it('should emit a click event with the item when clicked', async() => { - const { app: { $refs, $el } } = window - const vm = $refs.breadcrumb2 - const spy = jest.fn(); - - vm.$on('click', spy) - const $listItems = Array.from(vm.$el.children) - - app.items2.forEach((item, index) => { - $listItems[index].click() - expect(spy).toHaveBeenCalledWith(item) - }) - }) -}); diff --git a/__tests__/components/button-group.spec.js b/__tests__/components/button-group.spec.js deleted file mode 100755 index e6e3a4e1baa..00000000000 --- a/__tests__/components/button-group.spec.js +++ /dev/null @@ -1,6 +0,0 @@ -import {loadFixture, testVM} from '../helpers'; - -describe('button-group', async() => { - beforeEach(loadFixture('button-group')); - testVM(); -}); \ No newline at end of file diff --git a/__tests__/components/button.spec.js b/__tests__/components/button.spec.js deleted file mode 100755 index a7027f361e1..00000000000 --- a/__tests__/components/button.spec.js +++ /dev/null @@ -1,152 +0,0 @@ -import {loadFixture, testVM, setData, nextTick} from '../helpers'; -import { bLink } from '../../lib/components' -import Vue from 'vue/dist/vue.common'; - -/** - * Button functionality to test: - * - Style variants: [ 'primary','secondary','success','outline-success','warning','danger','link' ] - * - Sizes: [ 'sm','','lg' ] - * - Props: [ disabled, block ] - * - elements: [