1.8.2 • Published 1 year ago
@inotom/sws-drawer v1.8.2
sws-drawer
A web Components to add drawer element.
Demo
Usage
Place sws-drawer
sws-drawer-toggle-button
sws-drawer-close-button
custom element.
<sws-drawer-toggle-button>
Toggle Button
</sws-drawer-toggle-button>
<sws-drawer>
<sws-drawer-close-button>
Close Button
</sws-drawer-close-button>
<p>
Content
</p>
</sws-drawer>
<script type="module" src="sws-drawer.min.js" defer></script>
Set element's style by css custom properties.
sws-drawer {
--sws-drawer-position: fixed;
--sws-drawer-top: 0;
--sws-drawer-right: 0;
--sws-drawer-bottom: 0;
--sws-drawer-left: 0;
--sws-drawer-z-index: 1000;
--sws-drawer-width: 80%;
--sws-drawer-visibility: hidden;
--sws-drawer-opacity: 0;
--sws-drawer-main-position: absolute;
--sws-drawer-main-top: 0;
--sws-drawer-main-bottom: 0;
--sws-drawer-main-left: calc(100% - var(--sws-drawer-width));
--sws-drawer-main-overflow-x: visible;
--sws-drawer-main-overflow-y: auto;
--sws-drawer-main-overscroll-behavior: contain;
--sws-drawer-box-shadow: -2px 0 4px rgba(0, 0, 0, 0.2);
--sws-drawer-color: currentColor;
--sws-drawer-background: #fff;
--sws-drawer-layer-color: currentColor;
--sws-drawer-layer-background: rgba(0, 0, 0, 0.5);
--sws-drawer-layer-backdrop-filter: blur(5px);
--sws-drawer-animation-speed: 0.3s;
--sws-drawer-translate: translate3d(100%, 0, 0);
--sws-drawer-transition-hide: visibility 0s linear var(--sws-drawer-animation-speed),
opacity 0s linear var(--sws-drawer-animation-speed);
--sws-drawer-transition-show: visibility 0s, opacity 0s;
}
sws-drawer-toggle-button {
--sws-drawer-toggle-button-display: inline-block;
--sws-drawer-toggle-button-appearance: none;
--sws-drawer-toggle-button-width: auto;
--sws-drawer-toggle-button-height: initial;
--sws-drawer-toggle-button-margin: 0;
--sws-drawer-toggle-button-padding: 0;
--sws-drawer-toggle-button-color: currentColor;
--sws-drawer-toggle-button-background: transparent;
--sws-drawer-toggle-text-align: center;
--sws-drawer-toggle-button-border: 0 none;
--sws-drawer-toggle-button-font-size: inherit;
--sws-drawer-toggle-button-font-family: inherit;
--sws-drawer-toggle-button-cursor: inherit;
}
sws-drawer-close-button {
--sws-drawer-close-button-display: inline-block;
--sws-drawer-close-button-appearance: none;
--sws-drawer-close-button-width: auto;
--sws-drawer-close-button-height: initial;
--sws-drawer-close-button-margin: 0;
--sws-drawer-close-button-padding: 0;
--sws-drawer-close-button-color: currentColor;
--sws-drawer-close-button-background: transparent;
--sws-drawer-close-text-align: center;
--sws-drawer-close-button-border: 0 none;
--sws-drawer-close-button-font-size: inherit;
--sws-drawer-close-button-font-family: inherit;
--sws-drawer-close-button-cursor: inherit;
}
CSS custom properties
sws-drawer
css custom property name | content | defaults |
---|---|---|
--sws-drawer-position | Position property | fixed |
--sws-drawer-top | Position top property | 0 |
--sws-drawer-right | Position right property | 0 |
--sws-drawer-bottom | Position bottom property | 0 |
--sws-drawer-left | Position left property | 0 |
--sws-drawer-z-index | Position z-index property | 1000 |
--sws-drawer-width | Width property | 80% |
--sws-drawer-visibility | Visibility property | hidden |
--sws-drawer-opacity | Opacity property | 0 |
--sws-drawer-position | Position property | absolute |
--sws-drawer-main-top | Content element position top property | 0 |
--sws-drawer-main-bottom | Content element position bottom property | 0 |
--sws-drawer-main-left | Content element position left property | calc(100% - var(--sws-drawer-width)) |
--sws-drawer-main-overflow-x | Content element overflow-x property | visible |
--sws-drawer-main-overflow-y | Content element overflow-y property | auto |
--sws-drawer-main-overscroll-behavior | Content element overscroll-behavior property | contain |
--sws-drawer-box-shadow | Content element box-shadow property | -2px 0 4px rgba(0, 0, 0, 0.2) |
--sws-drawer-color | Content element color property | currentColor |
--sws-drawer-background | Content element background property | #fff |
--sws-drawer-layer-color | Background layer color property | currentColor |
--sws-drawer-layer-background | Background layer background property | rgba(0, 0, 0, 0.5) |
--sws-drawer-layer-backdrop-filter | Background layer blur size property | blur(5px) |
--sws-drawer-animation-speed | Animation speed property | 0.3s |
--sws-drawer-translate | Drawer initial translated property | translate3d(100%, 0, 0) |
--sws-drawer-transition-hide | Hide transition property | visibility 0s linear var(--sws-drawer-animation-speed), opacity 0s linear var(--sws-drawer-animation-speed) |
--sws-drawer-transition-show | Show transition property | visibility 0s, opacity 0s |
sws-drawer-toggle-button
css custom property name | content | defaults |
---|---|---|
--sws-drawer-toggle-button-display | Button element display property | inline-block |
--sws-drawer-toggle-button-appearance | Button element appearance property | none |
--sws-drawer-toggle-button-width | Button element width property | auto |
--sws-drawer-toggle-button-height | Button element height property | initial |
--sws-drawer-toggle-button-margin | Button element margin property | 0 |
--sws-drawer-toggle-button-padding | Button element padding property | 0 |
--sws-drawer-toggle-button-color | Button element color property | currentColor |
--sws-drawer-toggle-button-background | Button element background property | transparent |
--sws-drawer-toggle-text-align | Button element text alignment property | center |
--sws-drawer-toggle-button-border | Button element border property | 0 none |
--sws-drawer-toggle-button-font-size | Button element font-size property | inherit |
--sws-drawer-toggle-button-font-family | Button element font-family property | inherit |
--sws-drawer-toggle-button-cursor | Button element cursor property | inherit |
sws-drawer-close-button
css custom property name | content | defaults |
---|---|---|
--sws-drawer-close-button-display | Button element display property | inline-block |
--sws-drawer-close-button-appearance | Button element appearance property | none |
--sws-drawer-close-button-width | Button element width property | auto |
--sws-drawer-close-button-height | Button element height property | initial |
--sws-drawer-close-button-margin | Button element margin property | 0 |
--sws-drawer-close-button-padding | Button element padding property | 0 |
--sws-drawer-close-button-color | Button element color property | currentColor |
--sws-drawer-close-button-background | Button element background property | transparent |
--sws-drawer-close-text-align | Button element text alignment property | center |
--sws-drawer-close-button-border | Button element border property | 0 none |
--sws-drawer-close-button-font-size | Button element font-size property | inherit |
--sws-drawer-close-button-font-family | Button element font-family property | inherit |
--sws-drawer-close-button-cursor | Button element cursor property | inherit |
Options
<sws-drawer-toggle-button
status-key="is-sws-drawer-active"
body-top-key=""
x-tabindex="0"
group-keys="['is-sws-drawer-active', 'is-sws-drawer-active-other']"
>
Toggle Button
</sws-drawer-toggle-button>
<sws-drawer
status-key="is-sws-drawer-active"
body-top-key=""
>
<sws-drawer-close-button
status-key="is-sws-drawer-active"
body-top-key=""
x-tabindex="0"
>
Close Button
</sws-drawer-close-button>
<p>
Content
</p>
</sws-drawer>
If the body-top-key
property is not set, the position top of the body tag will not change.
sws-drawer
option name | content | defaults |
---|---|---|
status-key | Change active status attribute name of root element. | is-sws-drawer-active |
body-top-key | Change the position top of the body tag on browsers that do not support overscroll-behavior . |
|
sws-drawer-toggle-button
option name | content | defaults |
---|---|---|
status-key | Change active status attribute name of root element. | is-sws-drawer-active |
body-top-key | Change the position top of the body tag on browsers that do not support overscroll-behavior . |
|
x-tabindex | Button element tabindex attribute value. | 0 |
group-keys | Array of status-key string. Limit the number of active Drawers to one. | [] |
sws-drawer-close-button
option name | content | defaults |
---|---|---|
status-key | Change active status attribute name of root element. | is-sws-drawer-active |
body-top-key | Change the position top of the body tag on browsers that do not support overscroll-behavior . |
|
x-tabindex | Button element tabindex attribute value. | 0 |
License
MIT
Author
inotom