Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Accessibility fixes to dynamic tabs (aria-selected, remove dynamic tabs with dropdowns) #23907

Merged
merged 7 commits into from
Sep 24, 2017
Merged

Accessibility fixes to dynamic tabs (aria-selected, remove dynamic tabs with dropdowns) #23907

merged 7 commits into from
Sep 24, 2017

Conversation

patrickhlauke
Copy link
Member

@patrickhlauke patrickhlauke commented Sep 10, 2017

  • Fixes our current incorrect use of aria-expanded rather than the proper aria-selected (see https://www.w3.org/TR/wai-aria-practices/#tabpanel)
  • Removes dynamic tabbed interfaces with dropdowns, as they're not good for usability and more importantly not a pattern that can be expressed/conveyed to assistive tech

Closes #23035
Further closes #23903

@patrickhlauke
Copy link
Member Author

This still leaves open a deviation from the spec with regards to keyboard navigation - per ARIA, the whole tablist should just be a single tab stop, and moving between tabs achieved through cursor keys (only in case of dynamic/js tabs, mind). May either note it or tackle it at a later point.

tmorehouse added a commit to bootstrap-vue/bootstrap-vue that referenced this pull request Sep 10, 2017
@danijelGombac
Copy link

danijelGombac commented Sep 11, 2017

@patrickhlauke

Hello, i have a question about aria attributes. i check this site for aria:

http://accessibility.athena-ict.com/aria/examples/tabpanel2.shtml

The role="tab" has aria-selected, but role="tabpanel" has aria-hidden.

The bootstrap tab.js add to both role="tab" and role="tabpanel" aria-selected. Is this ok?

@patrickhlauke
Copy link
Member Author

aria-hidden is not necessary if using display:none. and ah, hadn't looked at what the effect on the actual tabpanel is (was only focused on the effect on the tabs themselves). that shouldn't have any aria-expanded or aria-selected itself. will add that fix to this PR as well

@patrickhlauke
Copy link
Member Author

@danijelGombac pushed a new commit (and rebased) that addresses this. in short: aria-selected should only be set on the role="tab", not the tab panel itself. thanks for the question which pointed me to the error 👍

@patrickhlauke
Copy link
Member Author

@Johann-S no idea why/how, but rebasing this seems to have pulled in some changes to collapse.js you made...admit at this point my github-fu is stretched, so this will likely need to be properly looked at by @mdo or whoever before being merge-able. sorry...

@Johann-S
Copy link
Member

your rebase result is a bit strange 😄 to rebase personaly I use this command : git pull upstream v4-dev --rebase

tmorehouse added a commit to bootstrap-vue/bootstrap-vue that referenced this pull request Sep 12, 2017
* chore(docs): Minor update to popover example

* fix(carousel): Prevent reflow trigger from being optimised out (#995)

* Update carousel.vue

* fix(popover+tooltip): Allow indiviual component imports (#999)

* [tooltip class] import BvEvent direct
* [popover class] Import ToolTip direct

* fix(form-group): Not applying label-for prop value (#1000)

* feat(modal): Add props to change the variant of the default modal buttons (#1004)

* Add props to set variant of modal footer buttons

* update docs

* feat(popover+tooltip): Add hide event listener on $root (#1003)

* feat(popover/tooltip): Add hide on $root events

Optimized adding/removing of events.

Only listen/watch to certain events while the tooltip/popover is open

Adds listener for `bv::hide::(popover|tooltip)` event on root to allow user to close all popovers or tooltips via emitting on $root.

* [popover component] Document bv:hide::popover event

* [tooltip component] Document bv:hide:tooltip event

* [popover directive] Document bv:hide:popover event

* [tooltip directive]: Document bv:hide::tooltip event

* feat(table): Refactor field formatter support + optimized sort-compare handling (#991)

* refactor(b-table): use original item object

* chore(table.spec): eslint format

* feat(b-table): Allow usr provided sortCopmpare to handle only specific fields

if user provided sortCompare returns `null` (or `undefined`), then we assume it doesn't handle sorting for the field specified by `sortBy`

* ESLint

* Always return formattedValue as `value` in scoped slot.

Unformatted value is available as property `unformatted` on scoped slot data.

* Update docs

* Update README.md

* Allow formattter to return html content

* Update README.md

* fix(table-docs): unexpected identifier error

* fix(table-docs): typo corrections ⌨💥

* Allow v-html without need for wrapper div via v-if/v-else

* fix(tooltip-popover): Click not triggered for elements with inner HTML elements in Chrome (#1006)

Issue #1005

* docs: Update getting started

* feat(dropdowns): Add hide() and show() methods (#1012)

Addresses issue #1011

* [form-group] Use dom utils

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* feat(dom utils): Add getById method

* feat(tooltip+popover): Create mixin for common props and methods (#1021)

* feat(tooltip+popover): Create mixin for common props and methods

* make mixin available

* ESLint

* Update toolpop.js

* Update toolpop.js

* [tooltip.vue] use toolpop mixin

* [popover.vue] Use toolpop mixin

* chore: Update getting started

* fix type

* fix(lform-group): Missing return in target ID selection

* fix(link): clear router-link/href collision and remove old link mixin (#1016)

* fix(link): don't use href for router-links

* Merged dev into fix/link-router-to (#1018)

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* fix: add fixes from PR #940

* fix: don't change href when disabled

Previously, we we're altering the href to a "#" when disabled. Since we already handle disabling the link via click handlers, there is no reason to alter the semantics of the link.

* Update toolpop.js

* Update popover.vue

* Update tooltip.vue

* fix: typos

* refactor: remove link mixin usage

* fix(docs): proper component reference

* fix: incorporate @pi0's typo fix

* fix(tooltip.js) Remove unneeded line of code

* fix(tabs): Remove aria-expanded in favor of aria-seleted

As per Bootstrap V4 PR twbs/bootstrap#23907

* fix: Add lodash.startcase to dependancies

`b-table` requires `lodash.startcase`

* feat(modal): Improve modal transitions, padding adjustments, and aditional features (#1024)

* [modal] Fix transitions

* Update modal.vue

* Update modal.vue

* [v-b-modal] Use new namespaced $root event

* [modal] Incorporate BvEvent

* Update modal.vue

* [modal] Scrolbar adjustments & observeDom

* Update modal.vue

* [modal] Add variants

* Update demo.html

* Update demo.js

* Update meta.json

* Update README.md

* [modal] Add modal-header-close slot

* Update meta.json

* [b-button-close] New functional component for close button

Used by b-modal and b-alert

* make b-button-close available

* Update button-close.js

* [button-close] Ensure click event propagation is stopped when disabled

* [modal] use b-btn-close functional component

* [alert] Use b-btn-close component

* Update modal.vue

* add b-button-close to b-button meta.json

* [tooltip.js] Update to use only new modal close namespaced event

* [tooltip+popover] Auto-append tooltip/popover to modal if in a modal

Save user from having to specify the modal as a container when tooltip/popover is inside a modal

* [popover.js] Use dom utils

* [dom utils] Add class and attribute methods

* Update dom.js

* [modal] Use new dom utils class/atttr methods

* Update dom.js

* Update dom.js

* Update dom.js

* [tooltip.js] Use new DOM utils methods

* [popover.js] Use new dom utils class/attribute methods

* [modal] Update docs

* fix: correct some typos

* fix: clear console errors

* fix: add const declarations

* [modal] Call onAfterEvent transition handler

* fix: evt names for modal triggering & is_visible typo

* fix: modal v-model typo

* fix(btn-close): allow for innerHTML override

* refactor(modal): use object for conditional props

* feat(docs): new modal examples

* Classes: Wrap in Boolean and remove dangling commas

* [modal] minor updates to docs

* feat(form-file): Add focus styling for custom-file input (#1033)

* feat(form-file): Add focus styling for custom-file input

* Update form-file.vue

* [form-file] Remove wrapper div when in plain mode

* add sizing to plain file input

Unfortunately there doesn't appear to be an option to size the custom-file input.

* Update form-file.vue

* fix(observedom): Callback not being called for changes other than childList changes (#1025)

* fix(observedom): Callback not being called for changes other than node inert/remove

Allow callback to be called based on passed options.

Previously it was only being called if nodes were added or inserted, regardless of which options were passed (i.e. attribute changes, childList, textnode changes, etc.)

This fix remove this restriction.

* Create loose-equal.js

* Update index.js

* Update observe-dom.js

* Update index.js

* Delete loose-equal.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* [WIP] feat(collpase): Use new $root namespaced events (#1037)

feat(collpase): Use new $root namespaced events + dom utils
tmorehouse added a commit to bootstrap-vue/bootstrap-vue that referenced this pull request Sep 12, 2017
* chore(docs): Minor update to popover example

* fix(carousel): Prevent reflow trigger from being optimised out (#995)

* Update carousel.vue

* fix(popover+tooltip): Allow indiviual component imports (#999)

* [tooltip class] import BvEvent direct
* [popover class] Import ToolTip direct

* fix(form-group): Not applying label-for prop value (#1000)

* feat(modal): Add props to change the variant of the default modal buttons (#1004)

* Add props to set variant of modal footer buttons

* update docs

* feat(popover+tooltip): Add hide event listener on $root (#1003)

* feat(popover/tooltip): Add hide on $root events

Optimized adding/removing of events.

Only listen/watch to certain events while the tooltip/popover is open

Adds listener for `bv::hide::(popover|tooltip)` event on root to allow user to close all popovers or tooltips via emitting on $root.

* [popover component] Document bv:hide::popover event

* [tooltip component] Document bv:hide:tooltip event

* [popover directive] Document bv:hide:popover event

* [tooltip directive]: Document bv:hide::tooltip event

* feat(table): Refactor field formatter support + optimized sort-compare handling (#991)

* refactor(b-table): use original item object

* chore(table.spec): eslint format

* feat(b-table): Allow usr provided sortCopmpare to handle only specific fields

if user provided sortCompare returns `null` (or `undefined`), then we assume it doesn't handle sorting for the field specified by `sortBy`

* ESLint

* Always return formattedValue as `value` in scoped slot.

Unformatted value is available as property `unformatted` on scoped slot data.

* Update docs

* Update README.md

* Allow formattter to return html content

* Update README.md

* fix(table-docs): unexpected identifier error

* fix(table-docs): typo corrections ⌨💥

* Allow v-html without need for wrapper div via v-if/v-else

* fix(tooltip-popover): Click not triggered for elements with inner HTML elements in Chrome (#1006)

Issue #1005

* docs: Update getting started

* feat(dropdowns): Add hide() and show() methods (#1012)

Addresses issue #1011

* [form-group] Use dom utils

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* feat(dom utils): Add getById method

* feat(tooltip+popover): Create mixin for common props and methods (#1021)

* feat(tooltip+popover): Create mixin for common props and methods

* make mixin available

* ESLint

* Update toolpop.js

* Update toolpop.js

* [tooltip.vue] use toolpop mixin

* [popover.vue] Use toolpop mixin

* chore: Update getting started

* fix type

* fix(lform-group): Missing return in target ID selection

* fix(link): clear router-link/href collision and remove old link mixin (#1016)

* fix(link): don't use href for router-links

* Merged dev into fix/link-router-to (#1018)

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* fix: add fixes from PR #940

* fix: don't change href when disabled

Previously, we we're altering the href to a "#" when disabled. Since we already handle disabling the link via click handlers, there is no reason to alter the semantics of the link.

* Update toolpop.js

* Update popover.vue

* Update tooltip.vue

* fix: typos

* refactor: remove link mixin usage

* fix(docs): proper component reference

* fix: incorporate @pi0's typo fix

* fix(tooltip.js) Remove unneeded line of code

* fix(tabs): Remove aria-expanded in favor of aria-seleted

As per Bootstrap V4 PR twbs/bootstrap#23907

* fix: Add lodash.startcase to dependancies

`b-table` requires `lodash.startcase`

* feat(modal): Improve modal transitions, padding adjustments, and aditional features (#1024)

* [modal] Fix transitions

* Update modal.vue

* Update modal.vue

* [v-b-modal] Use new namespaced $root event

* [modal] Incorporate BvEvent

* Update modal.vue

* [modal] Scrolbar adjustments & observeDom

* Update modal.vue

* [modal] Add variants

* Update demo.html

* Update demo.js

* Update meta.json

* Update README.md

* [modal] Add modal-header-close slot

* Update meta.json

* [b-button-close] New functional component for close button

Used by b-modal and b-alert

* make b-button-close available

* Update button-close.js

* [button-close] Ensure click event propagation is stopped when disabled

* [modal] use b-btn-close functional component

* [alert] Use b-btn-close component

* Update modal.vue

* add b-button-close to b-button meta.json

* [tooltip.js] Update to use only new modal close namespaced event

* [tooltip+popover] Auto-append tooltip/popover to modal if in a modal

Save user from having to specify the modal as a container when tooltip/popover is inside a modal

* [popover.js] Use dom utils

* [dom utils] Add class and attribute methods

* Update dom.js

* [modal] Use new dom utils class/atttr methods

* Update dom.js

* Update dom.js

* Update dom.js

* [tooltip.js] Use new DOM utils methods

* [popover.js] Use new dom utils class/attribute methods

* [modal] Update docs

* fix: correct some typos

* fix: clear console errors

* fix: add const declarations

* [modal] Call onAfterEvent transition handler

* fix: evt names for modal triggering & is_visible typo

* fix: modal v-model typo

* fix(btn-close): allow for innerHTML override

* refactor(modal): use object for conditional props

* feat(docs): new modal examples

* Classes: Wrap in Boolean and remove dangling commas

* [modal] minor updates to docs

* feat(form-file): Add focus styling for custom-file input (#1033)

* feat(form-file): Add focus styling for custom-file input

* Update form-file.vue

* [form-file] Remove wrapper div when in plain mode

* add sizing to plain file input

Unfortunately there doesn't appear to be an option to size the custom-file input.

* Update form-file.vue

* fix(observedom): Callback not being called for changes other than childList changes (#1025)

* fix(observedom): Callback not being called for changes other than node inert/remove

Allow callback to be called based on passed options.

Previously it was only being called if nodes were added or inserted, regardless of which options were passed (i.e. attribute changes, childList, textnode changes, etc.)

This fix remove this restriction.

* Create loose-equal.js

* Update index.js

* Update observe-dom.js

* Update index.js

* Delete loose-equal.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* [WIP] feat(collpase): Use new $root namespaced events (#1037)

feat(collpase): Use new $root namespaced events + dom utils

* Revert "fix(observedom): Callback not being called for changes other than childList changes" (#1039)

This reverts commit f44c5eb.

* Revert "fix(observedom): Callback not being called for changes other than childList changes (#1025)"

This reverts commit 88cfaef.
tmorehouse added a commit to bootstrap-vue/bootstrap-vue that referenced this pull request Sep 14, 2017
…oxes (#994)

* Create loose-equal.js

* Update loose-equal.js

* Add looseEqual to utils

* Create form-option.vue

* Create form-optgroup.js

* Make b-form-optgroup and b-form-option available

alias b-form-optgroup as b-optgroup, and b-form-option as b-option

* Create form-radios.vue

* Update form-select.vue

* Update form-radios.vue

* Update index.js

* Create form-checkboxes.vue

* Update index.js

* Update form-options.js

* Update form-checkbox.vue

* Update form-radio.vue

* Update form-checkbox.vue

* Update form-radio.vue

* Update form-checkbox.vue

* Update form-radio.vue

* Update form-checkbox.vue

* Update form-checkbox.vue

* Update form-radio.vue

* Update form-radio.vue

* Update form-select.vue

* Update form-checkboxes.vue

* Update form-optgroup.js

* Update index.js

* Update meta.json

* Update index.js

* Rename docs/components/form-checkbox/meta.json to docs/components/form-checkboxes/meta.json

* Rename docs/components/form-checkbox/README.md to docs/components/form-checkboxes/README.md

* Rename docs/components/form-checkbox/index.js to docs/components/form-checkboxes/index.js

* Update and rename docs/components/form-radio/meta.json to docs/components/form-radios/meta.json

* Rename docs/components/form-radio/index.js to docs/components/form-radios/index.js

* Rename docs/components/form-radio/README.md to docs/components/form-radios/README.md

* Update meta.json

* Update meta.json

* Update index.js

* [form-select] Docs update

* Update form-checkboxes.vue

* [form-radios] Updated docs

* Update README.md

* Update README.md

* Update README.md

* Update index.js

* Rename form-checkboxes.vue to form-checkbox-group.vue

* Rename form-radios.vue to form-radio-group.vue

* Update meta.json

* Update meta.json

* Update index.js

* Update README.md

* Update README.md

* Update README.md

* Update demo.html

* [form-select] Docs: Switch to native <option> and <optgroup>

* Update meta.json

* [form-select] Switch to native browser <option>

* Update index.js

* Delete form-optgroup.js

* Delete form-option.vue

* resolve conflict

* Delete README.md

* Resolve conflict: This file should be deleted after merge

* Update README.md

* Update README.md

* Update form-options.js

* Update form-radio-group.vue

* Update form-checkbox-group.vue

* Update form-radio-group.vue

* Update form-radio.vue

* Create form-radio-check.js

* add new mixin

* [form-radio] Use form-radio-check mixin

* Update form-radio-check.js

* [form-checkbox] Use form-radio-check mixin

* Update form-checkbox.vue

* Update form-checkbox.vue

* Delete form-checkbox.js

* Update form-radio-group.vue

* Update form-checkbox-group.vue

* Update form-radio-group.vue

* [form-file] Add focus styling

* [form-file] Move focus styling to separate PR

* Update form-radio-check.js

* Update form-checkbox.vue

* Update form-options.js

* Update form-checkbox-group.vue

* Update form-checkbox.vue

* Update form-select.vue

* Update form-radio-check.js

* Update form-options.js

* Update form-radio-check.js

* Update form-radio.vue

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update form-checkbox-group.vue

* Update form-radio-group.vue

* Update README.md

* Update form-radio.vue

* Update form-checkbox.vue

* Update form-checkbox.vue

* Update form-checkbox.vue

* Update README.md

* Mrged dev into forms/1x (#1038)

* chore(docs): Minor update to popover example

* fix(carousel): Prevent reflow trigger from being optimised out (#995)

* Update carousel.vue

* fix(popover+tooltip): Allow indiviual component imports (#999)

* [tooltip class] import BvEvent direct
* [popover class] Import ToolTip direct

* fix(form-group): Not applying label-for prop value (#1000)

* feat(modal): Add props to change the variant of the default modal buttons (#1004)

* Add props to set variant of modal footer buttons

* update docs

* feat(popover+tooltip): Add hide event listener on $root (#1003)

* feat(popover/tooltip): Add hide on $root events

Optimized adding/removing of events.

Only listen/watch to certain events while the tooltip/popover is open

Adds listener for `bv::hide::(popover|tooltip)` event on root to allow user to close all popovers or tooltips via emitting on $root.

* [popover component] Document bv:hide::popover event

* [tooltip component] Document bv:hide:tooltip event

* [popover directive] Document bv:hide:popover event

* [tooltip directive]: Document bv:hide::tooltip event

* feat(table): Refactor field formatter support + optimized sort-compare handling (#991)

* refactor(b-table): use original item object

* chore(table.spec): eslint format

* feat(b-table): Allow usr provided sortCopmpare to handle only specific fields

if user provided sortCompare returns `null` (or `undefined`), then we assume it doesn't handle sorting for the field specified by `sortBy`

* ESLint

* Always return formattedValue as `value` in scoped slot.

Unformatted value is available as property `unformatted` on scoped slot data.

* Update docs

* Update README.md

* Allow formattter to return html content

* Update README.md

* fix(table-docs): unexpected identifier error

* fix(table-docs): typo corrections ⌨💥

* Allow v-html without need for wrapper div via v-if/v-else

* fix(tooltip-popover): Click not triggered for elements with inner HTML elements in Chrome (#1006)

Issue #1005

* docs: Update getting started

* feat(dropdowns): Add hide() and show() methods (#1012)

Addresses issue #1011

* [form-group] Use dom utils

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* feat(dom utils): Add getById method

* feat(tooltip+popover): Create mixin for common props and methods (#1021)

* feat(tooltip+popover): Create mixin for common props and methods

* make mixin available

* ESLint

* Update toolpop.js

* Update toolpop.js

* [tooltip.vue] use toolpop mixin

* [popover.vue] Use toolpop mixin

* chore: Update getting started

* fix type

* fix(lform-group): Missing return in target ID selection

* fix(link): clear router-link/href collision and remove old link mixin (#1016)

* fix(link): don't use href for router-links

* Merged dev into fix/link-router-to (#1018)

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* fix: add fixes from PR #940

* fix: don't change href when disabled

Previously, we we're altering the href to a "#" when disabled. Since we already handle disabling the link via click handlers, there is no reason to alter the semantics of the link.

* Update toolpop.js

* Update popover.vue

* Update tooltip.vue

* fix: typos

* refactor: remove link mixin usage

* fix(docs): proper component reference

* fix: incorporate @pi0's typo fix

* fix(tooltip.js) Remove unneeded line of code

* fix(tabs): Remove aria-expanded in favor of aria-seleted

As per Bootstrap V4 PR twbs/bootstrap#23907

* fix: Add lodash.startcase to dependancies

`b-table` requires `lodash.startcase`

* feat(modal): Improve modal transitions, padding adjustments, and aditional features (#1024)

* [modal] Fix transitions

* Update modal.vue

* Update modal.vue

* [v-b-modal] Use new namespaced $root event

* [modal] Incorporate BvEvent

* Update modal.vue

* [modal] Scrolbar adjustments & observeDom

* Update modal.vue

* [modal] Add variants

* Update demo.html

* Update demo.js

* Update meta.json

* Update README.md

* [modal] Add modal-header-close slot

* Update meta.json

* [b-button-close] New functional component for close button

Used by b-modal and b-alert

* make b-button-close available

* Update button-close.js

* [button-close] Ensure click event propagation is stopped when disabled

* [modal] use b-btn-close functional component

* [alert] Use b-btn-close component

* Update modal.vue

* add b-button-close to b-button meta.json

* [tooltip.js] Update to use only new modal close namespaced event

* [tooltip+popover] Auto-append tooltip/popover to modal if in a modal

Save user from having to specify the modal as a container when tooltip/popover is inside a modal

* [popover.js] Use dom utils

* [dom utils] Add class and attribute methods

* Update dom.js

* [modal] Use new dom utils class/atttr methods

* Update dom.js

* Update dom.js

* Update dom.js

* [tooltip.js] Use new DOM utils methods

* [popover.js] Use new dom utils class/attribute methods

* [modal] Update docs

* fix: correct some typos

* fix: clear console errors

* fix: add const declarations

* [modal] Call onAfterEvent transition handler

* fix: evt names for modal triggering & is_visible typo

* fix: modal v-model typo

* fix(btn-close): allow for innerHTML override

* refactor(modal): use object for conditional props

* feat(docs): new modal examples

* Classes: Wrap in Boolean and remove dangling commas

* [modal] minor updates to docs

* feat(form-file): Add focus styling for custom-file input (#1033)

* feat(form-file): Add focus styling for custom-file input

* Update form-file.vue

* [form-file] Remove wrapper div when in plain mode

* add sizing to plain file input

Unfortunately there doesn't appear to be an option to size the custom-file input.

* Update form-file.vue

* fix(observedom): Callback not being called for changes other than childList changes (#1025)

* fix(observedom): Callback not being called for changes other than node inert/remove

Allow callback to be called based on passed options.

Previously it was only being called if nodes were added or inserted, regardless of which options were passed (i.e. attribute changes, childList, textnode changes, etc.)

This fix remove this restriction.

* Create loose-equal.js

* Update index.js

* Update observe-dom.js

* Update index.js

* Delete loose-equal.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* [WIP] feat(collpase): Use new $root namespaced events (#1037)

feat(collpase): Use new $root namespaced events + dom utils

* Merge dev into forms/1x (#1040)

* chore(docs): Minor update to popover example

* fix(carousel): Prevent reflow trigger from being optimised out (#995)

* Update carousel.vue

* fix(popover+tooltip): Allow indiviual component imports (#999)

* [tooltip class] import BvEvent direct
* [popover class] Import ToolTip direct

* fix(form-group): Not applying label-for prop value (#1000)

* feat(modal): Add props to change the variant of the default modal buttons (#1004)

* Add props to set variant of modal footer buttons

* update docs

* feat(popover+tooltip): Add hide event listener on $root (#1003)

* feat(popover/tooltip): Add hide on $root events

Optimized adding/removing of events.

Only listen/watch to certain events while the tooltip/popover is open

Adds listener for `bv::hide::(popover|tooltip)` event on root to allow user to close all popovers or tooltips via emitting on $root.

* [popover component] Document bv:hide::popover event

* [tooltip component] Document bv:hide:tooltip event

* [popover directive] Document bv:hide:popover event

* [tooltip directive]: Document bv:hide::tooltip event

* feat(table): Refactor field formatter support + optimized sort-compare handling (#991)

* refactor(b-table): use original item object

* chore(table.spec): eslint format

* feat(b-table): Allow usr provided sortCopmpare to handle only specific fields

if user provided sortCompare returns `null` (or `undefined`), then we assume it doesn't handle sorting for the field specified by `sortBy`

* ESLint

* Always return formattedValue as `value` in scoped slot.

Unformatted value is available as property `unformatted` on scoped slot data.

* Update docs

* Update README.md

* Allow formattter to return html content

* Update README.md

* fix(table-docs): unexpected identifier error

* fix(table-docs): typo corrections ⌨💥

* Allow v-html without need for wrapper div via v-if/v-else

* fix(tooltip-popover): Click not triggered for elements with inner HTML elements in Chrome (#1006)

Issue #1005

* docs: Update getting started

* feat(dropdowns): Add hide() and show() methods (#1012)

Addresses issue #1011

* [form-group] Use dom utils

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* feat(dom utils): Add getById method

* feat(tooltip+popover): Create mixin for common props and methods (#1021)

* feat(tooltip+popover): Create mixin for common props and methods

* make mixin available

* ESLint

* Update toolpop.js

* Update toolpop.js

* [tooltip.vue] use toolpop mixin

* [popover.vue] Use toolpop mixin

* chore: Update getting started

* fix type

* fix(lform-group): Missing return in target ID selection

* fix(link): clear router-link/href collision and remove old link mixin (#1016)

* fix(link): don't use href for router-links

* Merged dev into fix/link-router-to (#1018)

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* fix: add fixes from PR #940

* fix: don't change href when disabled

Previously, we we're altering the href to a "#" when disabled. Since we already handle disabling the link via click handlers, there is no reason to alter the semantics of the link.

* Update toolpop.js

* Update popover.vue

* Update tooltip.vue

* fix: typos

* refactor: remove link mixin usage

* fix(docs): proper component reference

* fix: incorporate @pi0's typo fix

* fix(tooltip.js) Remove unneeded line of code

* fix(tabs): Remove aria-expanded in favor of aria-seleted

As per Bootstrap V4 PR twbs/bootstrap#23907

* fix: Add lodash.startcase to dependancies

`b-table` requires `lodash.startcase`

* feat(modal): Improve modal transitions, padding adjustments, and aditional features (#1024)

* [modal] Fix transitions

* Update modal.vue

* Update modal.vue

* [v-b-modal] Use new namespaced $root event

* [modal] Incorporate BvEvent

* Update modal.vue

* [modal] Scrolbar adjustments & observeDom

* Update modal.vue

* [modal] Add variants

* Update demo.html

* Update demo.js

* Update meta.json

* Update README.md

* [modal] Add modal-header-close slot

* Update meta.json

* [b-button-close] New functional component for close button

Used by b-modal and b-alert

* make b-button-close available

* Update button-close.js

* [button-close] Ensure click event propagation is stopped when disabled

* [modal] use b-btn-close functional component

* [alert] Use b-btn-close component

* Update modal.vue

* add b-button-close to b-button meta.json

* [tooltip.js] Update to use only new modal close namespaced event

* [tooltip+popover] Auto-append tooltip/popover to modal if in a modal

Save user from having to specify the modal as a container when tooltip/popover is inside a modal

* [popover.js] Use dom utils

* [dom utils] Add class and attribute methods

* Update dom.js

* [modal] Use new dom utils class/atttr methods

* Update dom.js

* Update dom.js

* Update dom.js

* [tooltip.js] Use new DOM utils methods

* [popover.js] Use new dom utils class/attribute methods

* [modal] Update docs

* fix: correct some typos

* fix: clear console errors

* fix: add const declarations

* [modal] Call onAfterEvent transition handler

* fix: evt names for modal triggering & is_visible typo

* fix: modal v-model typo

* fix(btn-close): allow for innerHTML override

* refactor(modal): use object for conditional props

* feat(docs): new modal examples

* Classes: Wrap in Boolean and remove dangling commas

* [modal] minor updates to docs

* feat(form-file): Add focus styling for custom-file input (#1033)

* feat(form-file): Add focus styling for custom-file input

* Update form-file.vue

* [form-file] Remove wrapper div when in plain mode

* add sizing to plain file input

Unfortunately there doesn't appear to be an option to size the custom-file input.

* Update form-file.vue

* fix(observedom): Callback not being called for changes other than childList changes (#1025)

* fix(observedom): Callback not being called for changes other than node inert/remove

Allow callback to be called based on passed options.

Previously it was only being called if nodes were added or inserted, regardless of which options were passed (i.e. attribute changes, childList, textnode changes, etc.)

This fix remove this restriction.

* Create loose-equal.js

* Update index.js

* Update observe-dom.js

* Update index.js

* Delete loose-equal.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* [WIP] feat(collpase): Use new $root namespaced events (#1037)

feat(collpase): Use new $root namespaced events + dom utils

* Revert "fix(observedom): Callback not being called for changes other than childList changes" (#1039)

This reverts commit f44c5eb.

* Revert "fix(observedom): Callback not being called for changes other than childList changes (#1025)"

This reverts commit 88cfaef.

* revert observerdom changes

* Update form-checkbox.vue

* Update form-checkbox-group.vue

* Update form-checkbox.vue

* Update form-checkbox.vue

* Update form-checkbox.vue

* Update form-radio-check.js

* [form-group] include role=group in input-selector

* Update form-checkbox.vue

* Update README.md

* Update README.md

* Update README.md

* Update form-radio-check.js

* [form-checkbox-group]: Emit change event on user interaction

* [form-radio-group] Emit change event on user interaction

* Update meta.json

* Update meta.json

* Update sidebar.vue

* Update index.js

* [form-radios] Docs breaking change notice

* [form-select] Update docs with extra example
tmorehouse added a commit to bootstrap-vue/bootstrap-vue that referenced this pull request Sep 14, 2017
* fix: Add lodash.startcase to dependancies

`b-table` requires `lodash.startcase`

* feat(modal): Improve modal transitions, padding adjustments, and aditional features (#1024)

* [modal] Fix transitions

* Update modal.vue

* Update modal.vue

* [v-b-modal] Use new namespaced $root event

* [modal] Incorporate BvEvent

* Update modal.vue

* [modal] Scrolbar adjustments & observeDom

* Update modal.vue

* [modal] Add variants

* Update demo.html

* Update demo.js

* Update meta.json

* Update README.md

* [modal] Add modal-header-close slot

* Update meta.json

* [b-button-close] New functional component for close button

Used by b-modal and b-alert

* make b-button-close available

* Update button-close.js

* [button-close] Ensure click event propagation is stopped when disabled

* [modal] use b-btn-close functional component

* [alert] Use b-btn-close component

* Update modal.vue

* add b-button-close to b-button meta.json

* [tooltip.js] Update to use only new modal close namespaced event

* [tooltip+popover] Auto-append tooltip/popover to modal if in a modal

Save user from having to specify the modal as a container when tooltip/popover is inside a modal

* [popover.js] Use dom utils

* [dom utils] Add class and attribute methods

* Update dom.js

* [modal] Use new dom utils class/atttr methods

* Update dom.js

* Update dom.js

* Update dom.js

* [tooltip.js] Use new DOM utils methods

* [popover.js] Use new dom utils class/attribute methods

* [modal] Update docs

* fix: correct some typos

* fix: clear console errors

* fix: add const declarations

* [modal] Call onAfterEvent transition handler

* fix: evt names for modal triggering & is_visible typo

* fix: modal v-model typo

* fix(btn-close): allow for innerHTML override

* refactor(modal): use object for conditional props

* feat(docs): new modal examples

* Classes: Wrap in Boolean and remove dangling commas

* [modal] minor updates to docs

* feat(form-file): Add focus styling for custom-file input (#1033)

* feat(form-file): Add focus styling for custom-file input

* Update form-file.vue

* [form-file] Remove wrapper div when in plain mode

* add sizing to plain file input

Unfortunately there doesn't appear to be an option to size the custom-file input.

* Update form-file.vue

* fix(observedom): Callback not being called for changes other than childList changes (#1025)

* fix(observedom): Callback not being called for changes other than node inert/remove

Allow callback to be called based on passed options.

Previously it was only being called if nodes were added or inserted, regardless of which options were passed (i.e. attribute changes, childList, textnode changes, etc.)

This fix remove this restriction.

* Create loose-equal.js

* Update index.js

* Update observe-dom.js

* Update index.js

* Delete loose-equal.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* [WIP] feat(collpase): Use new $root namespaced events (#1037)

feat(collpase): Use new $root namespaced events + dom utils

* Revert "fix(observedom): Callback not being called for changes other than childList changes" (#1039)

This reverts commit f44c5eb.

* Revert "fix(observedom): Callback not being called for changes other than childList changes (#1025)"

This reverts commit 88cfaef.

* chore(form-file): Minor uopdate

* chore(form-file): Minor update

* fix(modal): Minor bug fixes

* fix(modal): Fix aria hidden attr and observeDom target element

* fix(popover): getting title from title attribute

* fix(b-col): handle bool style prop for sm,md,lg,xl (#1042)

Fixes #1041

* fix(form-file): Selected file name(s) not always showing

Due to Bootstrap V4.beta CSS specificity, teh cutom props or filenames were not always being displayed

* docs(modal): Additional examples

* feat(docs): Add a new reference section (#1050)

* feat(docs): Add reference section

* Create SIZES.md

* Rename docs/reference/SIZES.md to docs/reference/sizes/README.md

* Rename docs/reference/VARIANTS.md to docs/reference/variants/README.md

* Create index.js

* Create index.js

* Update index.js

* Create index.js

* Update index.js

* Create README.md

* Create index.js

* Update index.js

* Update README.md

* Create README.md

* Update README.md

* Create index.js

* Update index.js

* Update README.md

* Update index.js

* Update index.js

* Update README.md

* Create _reference.vue

* Update README.md

* chore(dom-utls): Add reflow method

* [dom utils] Add getBoundingClientRect method

* feat(forms): New handling of form-select, form-radios and form-checkboxes (#994)

* Create loose-equal.js

* Update loose-equal.js

* Add looseEqual to utils

* Create form-option.vue

* Create form-optgroup.js

* Make b-form-optgroup and b-form-option available

alias b-form-optgroup as b-optgroup, and b-form-option as b-option

* Create form-radios.vue

* Update form-select.vue

* Update form-radios.vue

* Update index.js

* Create form-checkboxes.vue

* Update index.js

* Update form-options.js

* Update form-checkbox.vue

* Update form-radio.vue

* Update form-checkbox.vue

* Update form-radio.vue

* Update form-checkbox.vue

* Update form-radio.vue

* Update form-checkbox.vue

* Update form-checkbox.vue

* Update form-radio.vue

* Update form-radio.vue

* Update form-select.vue

* Update form-checkboxes.vue

* Update form-optgroup.js

* Update index.js

* Update meta.json

* Update index.js

* Rename docs/components/form-checkbox/meta.json to docs/components/form-checkboxes/meta.json

* Rename docs/components/form-checkbox/README.md to docs/components/form-checkboxes/README.md

* Rename docs/components/form-checkbox/index.js to docs/components/form-checkboxes/index.js

* Update and rename docs/components/form-radio/meta.json to docs/components/form-radios/meta.json

* Rename docs/components/form-radio/index.js to docs/components/form-radios/index.js

* Rename docs/components/form-radio/README.md to docs/components/form-radios/README.md

* Update meta.json

* Update meta.json

* Update index.js

* [form-select] Docs update

* Update form-checkboxes.vue

* [form-radios] Updated docs

* Update README.md

* Update README.md

* Update README.md

* Update index.js

* Rename form-checkboxes.vue to form-checkbox-group.vue

* Rename form-radios.vue to form-radio-group.vue

* Update meta.json

* Update meta.json

* Update index.js

* Update README.md

* Update README.md

* Update README.md

* Update demo.html

* [form-select] Docs: Switch to native <option> and <optgroup>

* Update meta.json

* [form-select] Switch to native browser <option>

* Update index.js

* Delete form-optgroup.js

* Delete form-option.vue

* resolve conflict

* Delete README.md

* Resolve conflict: This file should be deleted after merge

* Update README.md

* Update README.md

* Update form-options.js

* Update form-radio-group.vue

* Update form-checkbox-group.vue

* Update form-radio-group.vue

* Update form-radio.vue

* Create form-radio-check.js

* add new mixin

* [form-radio] Use form-radio-check mixin

* Update form-radio-check.js

* [form-checkbox] Use form-radio-check mixin

* Update form-checkbox.vue

* Update form-checkbox.vue

* Delete form-checkbox.js

* Update form-radio-group.vue

* Update form-checkbox-group.vue

* Update form-radio-group.vue

* [form-file] Add focus styling

* [form-file] Move focus styling to separate PR

* Update form-radio-check.js

* Update form-checkbox.vue

* Update form-options.js

* Update form-checkbox-group.vue

* Update form-checkbox.vue

* Update form-select.vue

* Update form-radio-check.js

* Update form-options.js

* Update form-radio-check.js

* Update form-radio.vue

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update form-checkbox-group.vue

* Update form-radio-group.vue

* Update README.md

* Update form-radio.vue

* Update form-checkbox.vue

* Update form-checkbox.vue

* Update form-checkbox.vue

* Update README.md

* Mrged dev into forms/1x (#1038)

* chore(docs): Minor update to popover example

* fix(carousel): Prevent reflow trigger from being optimised out (#995)

* Update carousel.vue

* fix(popover+tooltip): Allow indiviual component imports (#999)

* [tooltip class] import BvEvent direct
* [popover class] Import ToolTip direct

* fix(form-group): Not applying label-for prop value (#1000)

* feat(modal): Add props to change the variant of the default modal buttons (#1004)

* Add props to set variant of modal footer buttons

* update docs

* feat(popover+tooltip): Add hide event listener on $root (#1003)

* feat(popover/tooltip): Add hide on $root events

Optimized adding/removing of events.

Only listen/watch to certain events while the tooltip/popover is open

Adds listener for `bv::hide::(popover|tooltip)` event on root to allow user to close all popovers or tooltips via emitting on $root.

* [popover component] Document bv:hide::popover event

* [tooltip component] Document bv:hide:tooltip event

* [popover directive] Document bv:hide:popover event

* [tooltip directive]: Document bv:hide::tooltip event

* feat(table): Refactor field formatter support + optimized sort-compare handling (#991)

* refactor(b-table): use original item object

* chore(table.spec): eslint format

* feat(b-table): Allow usr provided sortCopmpare to handle only specific fields

if user provided sortCompare returns `null` (or `undefined`), then we assume it doesn't handle sorting for the field specified by `sortBy`

* ESLint

* Always return formattedValue as `value` in scoped slot.

Unformatted value is available as property `unformatted` on scoped slot data.

* Update docs

* Update README.md

* Allow formattter to return html content

* Update README.md

* fix(table-docs): unexpected identifier error

* fix(table-docs): typo corrections ⌨💥

* Allow v-html without need for wrapper div via v-if/v-else

* fix(tooltip-popover): Click not triggered for elements with inner HTML elements in Chrome (#1006)

Issue #1005

* docs: Update getting started

* feat(dropdowns): Add hide() and show() methods (#1012)

Addresses issue #1011

* [form-group] Use dom utils

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* feat(dom utils): Add getById method

* feat(tooltip+popover): Create mixin for common props and methods (#1021)

* feat(tooltip+popover): Create mixin for common props and methods

* make mixin available

* ESLint

* Update toolpop.js

* Update toolpop.js

* [tooltip.vue] use toolpop mixin

* [popover.vue] Use toolpop mixin

* chore: Update getting started

* fix type

* fix(lform-group): Missing return in target ID selection

* fix(link): clear router-link/href collision and remove old link mixin (#1016)

* fix(link): don't use href for router-links

* Merged dev into fix/link-router-to (#1018)

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* fix: add fixes from PR #940

* fix: don't change href when disabled

Previously, we we're altering the href to a "#" when disabled. Since we already handle disabling the link via click handlers, there is no reason to alter the semantics of the link.

* Update toolpop.js

* Update popover.vue

* Update tooltip.vue

* fix: typos

* refactor: remove link mixin usage

* fix(docs): proper component reference

* fix: incorporate @pi0's typo fix

* fix(tooltip.js) Remove unneeded line of code

* fix(tabs): Remove aria-expanded in favor of aria-seleted

As per Bootstrap V4 PR twbs/bootstrap#23907

* fix: Add lodash.startcase to dependancies

`b-table` requires `lodash.startcase`

* feat(modal): Improve modal transitions, padding adjustments, and aditional features (#1024)

* [modal] Fix transitions

* Update modal.vue

* Update modal.vue

* [v-b-modal] Use new namespaced $root event

* [modal] Incorporate BvEvent

* Update modal.vue

* [modal] Scrolbar adjustments & observeDom

* Update modal.vue

* [modal] Add variants

* Update demo.html

* Update demo.js

* Update meta.json

* Update README.md

* [modal] Add modal-header-close slot

* Update meta.json

* [b-button-close] New functional component for close button

Used by b-modal and b-alert

* make b-button-close available

* Update button-close.js

* [button-close] Ensure click event propagation is stopped when disabled

* [modal] use b-btn-close functional component

* [alert] Use b-btn-close component

* Update modal.vue

* add b-button-close to b-button meta.json

* [tooltip.js] Update to use only new modal close namespaced event

* [tooltip+popover] Auto-append tooltip/popover to modal if in a modal

Save user from having to specify the modal as a container when tooltip/popover is inside a modal

* [popover.js] Use dom utils

* [dom utils] Add class and attribute methods

* Update dom.js

* [modal] Use new dom utils class/atttr methods

* Update dom.js

* Update dom.js

* Update dom.js

* [tooltip.js] Use new DOM utils methods

* [popover.js] Use new dom utils class/attribute methods

* [modal] Update docs

* fix: correct some typos

* fix: clear console errors

* fix: add const declarations

* [modal] Call onAfterEvent transition handler

* fix: evt names for modal triggering & is_visible typo

* fix: modal v-model typo

* fix(btn-close): allow for innerHTML override

* refactor(modal): use object for conditional props

* feat(docs): new modal examples

* Classes: Wrap in Boolean and remove dangling commas

* [modal] minor updates to docs

* feat(form-file): Add focus styling for custom-file input (#1033)

* feat(form-file): Add focus styling for custom-file input

* Update form-file.vue

* [form-file] Remove wrapper div when in plain mode

* add sizing to plain file input

Unfortunately there doesn't appear to be an option to size the custom-file input.

* Update form-file.vue

* fix(observedom): Callback not being called for changes other than childList changes (#1025)

* fix(observedom): Callback not being called for changes other than node inert/remove

Allow callback to be called based on passed options.

Previously it was only being called if nodes were added or inserted, regardless of which options were passed (i.e. attribute changes, childList, textnode changes, etc.)

This fix remove this restriction.

* Create loose-equal.js

* Update index.js

* Update observe-dom.js

* Update index.js

* Delete loose-equal.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* [WIP] feat(collpase): Use new $root namespaced events (#1037)

feat(collpase): Use new $root namespaced events + dom utils

* Merge dev into forms/1x (#1040)

* chore(docs): Minor update to popover example

* fix(carousel): Prevent reflow trigger from being optimised out (#995)

* Update carousel.vue

* fix(popover+tooltip): Allow indiviual component imports (#999)

* [tooltip class] import BvEvent direct
* [popover class] Import ToolTip direct

* fix(form-group): Not applying label-for prop value (#1000)

* feat(modal): Add props to change the variant of the default modal buttons (#1004)

* Add props to set variant of modal footer buttons

* update docs

* feat(popover+tooltip): Add hide event listener on $root (#1003)

* feat(popover/tooltip): Add hide on $root events

Optimized adding/removing of events.

Only listen/watch to certain events while the tooltip/popover is open

Adds listener for `bv::hide::(popover|tooltip)` event on root to allow user to close all popovers or tooltips via emitting on $root.

* [popover component] Document bv:hide::popover event

* [tooltip component] Document bv:hide:tooltip event

* [popover directive] Document bv:hide:popover event

* [tooltip directive]: Document bv:hide::tooltip event

* feat(table): Refactor field formatter support + optimized sort-compare handling (#991)

* refactor(b-table): use original item object

* chore(table.spec): eslint format

* feat(b-table): Allow usr provided sortCopmpare to handle only specific fields

if user provided sortCompare returns `null` (or `undefined`), then we assume it doesn't handle sorting for the field specified by `sortBy`

* ESLint

* Always return formattedValue as `value` in scoped slot.

Unformatted value is available as property `unformatted` on scoped slot data.

* Update docs

* Update README.md

* Allow formattter to return html content

* Update README.md

* fix(table-docs): unexpected identifier error

* fix(table-docs): typo corrections ⌨💥

* Allow v-html without need for wrapper div via v-if/v-else

* fix(tooltip-popover): Click not triggered for elements with inner HTML elements in Chrome (#1006)

Issue #1005

* docs: Update getting started

* feat(dropdowns): Add hide() and show() methods (#1012)

Addresses issue #1011

* [form-group] Use dom utils

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* feat(dom utils): Add getById method

* feat(tooltip+popover): Create mixin for common props and methods (#1021)

* feat(tooltip+popover): Create mixin for common props and methods

* make mixin available

* ESLint

* Update toolpop.js

* Update toolpop.js

* [tooltip.vue] use toolpop mixin

* [popover.vue] Use toolpop mixin

* chore: Update getting started

* fix type

* fix(lform-group): Missing return in target ID selection

* fix(link): clear router-link/href collision and remove old link mixin (#1016)

* fix(link): don't use href for router-links

* Merged dev into fix/link-router-to (#1018)

* [carousel] Use dom utils

* feat: dom utility methods (#1013)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat: Use dom utils (#1017)

* feat: dom utility methods

* Update index.js

* [tooltip.js] Use dom utils

* [dropdown.js] Use dom utils

* [scrollspy.js] Use dom utils

* feat(array mixin): Add polyfill for Array.find for IE

* [modal] use dom utils

* [popover.vue] Use dom utils

* [tooltip.vue] Use dom utils

* fix: add fixes from PR #940

* fix: don't change href when disabled

Previously, we we're altering the href to a "#" when disabled. Since we already handle disabling the link via click handlers, there is no reason to alter the semantics of the link.

* Update toolpop.js

* Update popover.vue

* Update tooltip.vue

* fix: typos

* refactor: remove link mixin usage

* fix(docs): proper component reference

* fix: incorporate @pi0's typo fix

* fix(tooltip.js) Remove unneeded line of code

* fix(tabs): Remove aria-expanded in favor of aria-seleted

As per Bootstrap V4 PR twbs/bootstrap#23907

* fix: Add lodash.startcase to dependancies

`b-table` requires `lodash.startcase`

* feat(modal): Improve modal transitions, padding adjustments, and aditional features (#1024)

* [modal] Fix transitions

* Update modal.vue

* Update modal.vue

* [v-b-modal] Use new namespaced $root event

* [modal] Incorporate BvEvent

* Update modal.vue

* [modal] Scrolbar adjustments & observeDom

* Update modal.vue

* [modal] Add variants

* Update demo.html

* Update demo.js

* Update meta.json

* Update README.md

* [modal] Add modal-header-close slot

* Update meta.json

* [b-button-close] New functional component for close button

Used by b-modal and b-alert

* make b-button-close available

* Update button-close.js

* [button-close] Ensure click event propagation is stopped when disabled

* [modal] use b-btn-close functional component

* [alert] Use b-btn-close component

* Update modal.vue

* add b-button-close to b-button meta.json

* [tooltip.js] Update to use only new modal close namespaced event

* [tooltip+popover] Auto-append tooltip/popover to modal if in a modal

Save user from having to specify the modal as a container when tooltip/popover is inside a modal

* [popover.js] Use dom utils

* [dom utils] Add class and attribute methods

* Update dom.js

* [modal] Use new dom utils class/atttr methods

* Update dom.js

* Update dom.js

* Update dom.js

* [tooltip.js] Use new DOM utils methods

* [popover.js] Use new dom utils class/attribute methods

* [modal] Update docs

* fix: correct some typos

* fix: clear console errors

* fix: add const declarations

* [modal] Call onAfterEvent transition handler

* fix: evt names for modal triggering & is_visible typo

* fix: modal v-model typo

* fix(btn-close): allow for innerHTML override

* refactor(modal): use object for conditional props

* feat(docs): new modal examples

* Classes: Wrap in Boolean and remove dangling commas

* [modal] minor updates to docs

* feat(form-file): Add focus styling for custom-file input (#1033)

* feat(form-file): Add focus styling for custom-file input

* Update form-file.vue

* [form-file] Remove wrapper div when in plain mode

* add sizing to plain file input

Unfortunately there doesn't appear to be an option to size the custom-file input.

* Update form-file.vue

* fix(observedom): Callback not being called for changes other than childList changes (#1025)

* fix(observedom): Callback not being called for changes other than node inert/remove

Allow callback to be called based on passed options.

Previously it was only being called if nodes were added or inserted, regardless of which options were passed (i.e. attribute changes, childList, textnode changes, etc.)

This fix remove this restriction.

* Create loose-equal.js

* Update index.js

* Update observe-dom.js

* Update index.js

* Delete loose-equal.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* Update observe-dom.js

* [WIP] feat(collpase): Use new $root namespaced events (#1037)

feat(collpase): Use new $root namespaced events + dom utils

* Revert "fix(observedom): Callback not being called for changes other than childList changes" (#1039)

This reverts commit f44c5eb.

* Revert "fix(observedom): Callback not being called for changes other than childList changes (#1025)"

This reverts commit 88cfaef.

* revert observerdom changes

* Update form-checkbox.vue

* Update form-checkbox-group.vue

* Update form-checkbox.vue

* Update form-checkbox.vue

* Update form-checkbox.vue

* Update form-radio-check.js

* [form-group] include role=group in input-selector

* Update form-checkbox.vue

* Update README.md

* Update README.md

* Update README.md

* Update form-radio-check.js

* [form-checkbox-group]: Emit change event on user interaction

* [form-radio-group] Emit change event on user interaction

* Update meta.json

* Update meta.json

* Update sidebar.vue

* Update index.js

* [form-radios] Docs breaking change notice

* [form-select] Update docs with extra example

* feat(modal): Add lazy loaded modal support (#1046)

* feat(modal): Add lazy loaded modal support

New `lazy` prop allows modal to be taken out of dom (`v-if`) when not visible

* ESLint

* [modal] prevent backdrop FOUC in no-fade mode

* Prevent backrop from disapearing before modal finishes closing

* [observe-dom] return observer refernce

So we can call the observer.disconnect() method

* [modal] only observerdom while open

* Update observe-dom.js

* [observe-dom] Ensure we have an element reference

* chore(docs): minor update

* chore(docs): minor udpate

* chore(docs): minor update

* chore(docs): minor update

* docs(modal): Minor update

* chore(docs): remove old form-checkbox docs

* chore(docs): Adjust title for sizing reference

* Update README.md

* chore(docs): minor update

* feat(dom util): new reflow, getBoundingClientRect, eventOn, eventOff methods (#1052)

* feat(dom): b-modal use dom.reflow method

* [collapse] Use dom.reflow from dom-utls

* [carousel] use dom.reflow method from dom utils

* [dom utils] Add getBoundingClientRect method (#1051)

* [dom utils] add eventPOn and eventOff methods

* [img-lazy] Use new dom utils methods

* [carousel] use new dom util methods

* Update img-lazy.vue

* Update img-lazy.vue

* Update img-lazy.vue

* [scrollspy] use dom utils event methods

* [ttoltip.js] Use dom event methods

* [dropdown mixin] Use new dom util methods

* [button] use dom utils

* [button-toolbar] use dom utils

* [pagination] use dom utils

* Update scrollspy.js

* Update button-toolbar.vue

* [pagination-nav] use DOM utils

* Update pagination.vue

* chore(docs): fix typo

* chore(docs): minor update

* chore(docs): minor update

* chore(docs): minor update to form-checkboxes

* Update carousel.vue

* Update carousel.vue

* Update dom.js

* Update dom.js

* Update img-lazy.vue

* Update button-toolbar.vue

* Update dropdown.js

* Update scrollspy.js
@twbs twbs deleted a comment from patrickhlauke Sep 17, 2017
@patrickhlauke
Copy link
Member Author

ping @mdo ... keen to get this reviewed/merged (though merge may require some git-fu)

@bardiharborow
Copy link
Member

bardiharborow commented Sep 24, 2017

@patrickhlauke this should recover you (warning that this will wipe any changes on the v4-dev and v4-dev-tabs-a11y-fix branches other than those I can see on this PR):

git checkout v4-dev
git pull --ff-only # if this errors, then your v4-dev branch is not clean
git checkout v4-dev-tabs-a11y-fix
git reset v4-dev --hard
git cherry-pick c3acb29 7346eb3 812b069 9411480 62f4c21 3fa84b0
git push -f

@patrickhlauke
Copy link
Member Author

@bardiharborow thanks, i think that did it (though i now still need to "Update branch" here...is it safe to do, or will it get me in the same mess as before?)

@patrickhlauke
Copy link
Member Author

also, mind reviewing this so it can be merged?

@bardiharborow
Copy link
Member

@patrickhlauke it's safe now, but it says that because your branch is one commit out of sync and I'm surprised that git pull didn't pick up that last commit.

Copy link
Member

@bardiharborow bardiharborow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not familiar enough with the intricacies of ARIA to know if there's anything that can be done about dynamic tabbed interfaces, but I doubt anyone else on the team is either, so happy to defer to you on that one. aria-expanded makes more sense according to the spec, so that's fine. As long as you have tested the documentation on both Chrome, and some form of assistive tech (I have not), I don't see any issues with merging this.

@patrickhlauke
Copy link
Member Author

As long as you have tested the documentation on both Chrome, and some form of assistive tech (I have not), I don't see any issues with merging this.

I did test it when I filed it (but can't double-check it now, due to the issue in #24034).

@patrickhlauke patrickhlauke merged commit fd56ea3 into twbs:v4-dev Sep 24, 2017
@mdo mdo mentioned this pull request Sep 24, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants