mirror of
https://github.com/twbs/bootstrap.git
synced 2025-02-17 14:54:30 +01:00
Add horizontal collapse support
This commit is contained in:
parent
8bc89b273d
commit
359ed099e5
@ -50,6 +50,7 @@ const CLASS_NAME_SHOW = 'show'
|
|||||||
const CLASS_NAME_COLLAPSE = 'collapse'
|
const CLASS_NAME_COLLAPSE = 'collapse'
|
||||||
const CLASS_NAME_COLLAPSING = 'collapsing'
|
const CLASS_NAME_COLLAPSING = 'collapsing'
|
||||||
const CLASS_NAME_COLLAPSED = 'collapsed'
|
const CLASS_NAME_COLLAPSED = 'collapsed'
|
||||||
|
const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'
|
||||||
|
|
||||||
const WIDTH = 'width'
|
const WIDTH = 'width'
|
||||||
const HEIGHT = 'height'
|
const HEIGHT = 'height'
|
||||||
@ -266,7 +267,7 @@ class Collapse extends BaseComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_getDimension() {
|
_getDimension() {
|
||||||
return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT
|
return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT
|
||||||
}
|
}
|
||||||
|
|
||||||
_getParent() {
|
_getParent() {
|
||||||
|
@ -225,7 +225,7 @@ describe('Collapse', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
it('should show a collapsed element on width', done => {
|
it('should show a collapsed element on width', done => {
|
||||||
fixtureEl.innerHTML = '<div class="collapse width" style="width: 0px;"></div>'
|
fixtureEl.innerHTML = '<div class="collapse collapse-horizontal" style="width: 0px;"></div>'
|
||||||
|
|
||||||
const collapseEl = fixtureEl.querySelector('div')
|
const collapseEl = fixtureEl.querySelector('div')
|
||||||
const collapse = new Collapse(collapseEl, {
|
const collapse = new Collapse(collapseEl, {
|
||||||
|
@ -17,5 +17,11 @@
|
|||||||
height: 0;
|
height: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@include transition($transition-collapse);
|
@include transition($transition-collapse);
|
||||||
|
|
||||||
|
&.collapse-horizontal {
|
||||||
|
width: 0;
|
||||||
|
height: auto;
|
||||||
|
@include transition($transition-collapse-width);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// scss-docs-end collapse-classes
|
// scss-docs-end collapse-classes
|
||||||
|
@ -398,6 +398,7 @@ $transition-base: all .2s ease-in-out !default;
|
|||||||
$transition-fade: opacity .15s linear !default;
|
$transition-fade: opacity .15s linear !default;
|
||||||
// scss-docs-start collapse-transition
|
// scss-docs-start collapse-transition
|
||||||
$transition-collapse: height .35s ease !default;
|
$transition-collapse: height .35s ease !default;
|
||||||
|
$transition-collapse-width: width .35s ease !default;
|
||||||
// scss-docs-end collapse-transition
|
// scss-docs-end collapse-transition
|
||||||
|
|
||||||
// stylelint-disable function-disallowed-list
|
// stylelint-disable function-disallowed-list
|
||||||
|
@ -40,6 +40,29 @@ Generally, we recommend using a button with the `data-bs-target` attribute. Whil
|
|||||||
</div>
|
</div>
|
||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
|
|
||||||
|
## Horizontal
|
||||||
|
|
||||||
|
The collapse plugin also supports horizontal collapsing. Add the `.collapse-horizontal` modifier class to transition the `width` instead of `height` and set a `width` on the immediate child element. Feel free to write your own custom Sass, use inline styles, or use our [width utilities]({{< docsref "/utilities/sizing" >}}).
|
||||||
|
|
||||||
|
{{< callout info >}}
|
||||||
|
Please note that while the example below has a `min-height` set to avoid excessive repaints in our docs, this is not explicitly required. **Only the `width` on the child element is required.**
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
{{< example >}}
|
||||||
|
<p>
|
||||||
|
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWidthExample" aria-expanded="false" aria-controls="collapseWidthExample">
|
||||||
|
Toggle width collapse
|
||||||
|
</button>
|
||||||
|
</p>
|
||||||
|
<div style="min-height: 120px;">
|
||||||
|
<div class="collapse collapse-horizontal" id="collapseWidthExample">
|
||||||
|
<div class="card card-body" style="width: 300px;">
|
||||||
|
This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{< /example >}}
|
||||||
|
|
||||||
## Multiple targets
|
## Multiple targets
|
||||||
|
|
||||||
A `<button>` or `<a>` can show and hide multiple elements by referencing them with a selector in its `href` or `data-bs-target` attribute.
|
A `<button>` or `<a>` can show and hide multiple elements by referencing them with a selector in its `href` or `data-bs-target` attribute.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user