@sky.ui/core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +139 -0
- package/README.md +113 -0
- package/auto-import-loader.js +60 -0
- package/auto-import.js +93 -0
- package/dist/custom-elements.json +27051 -0
- package/dist/helper/controllers/animation-controller.d.ts +120 -0
- package/dist/helper/controllers/animation-controller.js +2 -0
- package/dist/helper/controllers/animation-controller.js.map +1 -0
- package/dist/helper/controllers/index.d.ts +2 -0
- package/dist/helper/controllers/popover-controller.d.ts +162 -0
- package/dist/helper/controllers/popover-controller.js +2 -0
- package/dist/helper/controllers/popover-controller.js.map +1 -0
- package/dist/helper/form-control-base.d.ts +1 -0
- package/dist/helper/iconify-offline.d.ts +73 -0
- package/dist/helper/iconify-offline.js +2 -0
- package/dist/helper/iconify-offline.js.map +1 -0
- package/dist/helper/index.d.ts +5 -0
- package/dist/helper/internals/form-control-base.d.ts +81 -0
- package/dist/helper/internals/form-control-base.js +2 -0
- package/dist/helper/internals/form-control-base.js.map +1 -0
- package/dist/helper/internals/index.d.ts +1 -0
- package/dist/helper/utils/color-resolver.d.ts +139 -0
- package/dist/helper/utils/color-resolver.js +2 -0
- package/dist/helper/utils/color-resolver.js.map +1 -0
- package/dist/helper/utils/index.d.ts +2 -0
- package/dist/helper/utils/size-resolver.d.ts +6 -0
- package/dist/helper/utils/size-resolver.js +2 -0
- package/dist/helper/utils/size-resolver.js.map +1 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/sky-accordion/index.d.ts +1 -0
- package/dist/sky-accordion/index.js +1 -0
- package/dist/sky-accordion/sky-accordion.d.ts +201 -0
- package/dist/sky-accordion/sky-accordion.js +85 -0
- package/dist/sky-accordion/sky-accordion.js.map +1 -0
- package/dist/sky-accordion-item/index.d.ts +1 -0
- package/dist/sky-accordion-item/index.js +1 -0
- package/dist/sky-accordion-item/sky-accordion-item.d.ts +161 -0
- package/dist/sky-accordion-item/sky-accordion-item.js +191 -0
- package/dist/sky-accordion-item/sky-accordion-item.js.map +1 -0
- package/dist/sky-alert/index.d.ts +1 -0
- package/dist/sky-alert/index.js +1 -0
- package/dist/sky-alert/sky-alert.d.ts +136 -0
- package/dist/sky-alert/sky-alert.js +292 -0
- package/dist/sky-alert/sky-alert.js.map +1 -0
- package/dist/sky-appbar/index.d.ts +1 -0
- package/dist/sky-appbar/index.js +1 -0
- package/dist/sky-appbar/sky-appbar.d.ts +84 -0
- package/dist/sky-appbar/sky-appbar.js +173 -0
- package/dist/sky-appbar/sky-appbar.js.map +1 -0
- package/dist/sky-avatar/index.d.ts +1 -0
- package/dist/sky-avatar/index.js +1 -0
- package/dist/sky-avatar/sky-avatar.d.ts +104 -0
- package/dist/sky-avatar/sky-avatar.js +152 -0
- package/dist/sky-avatar/sky-avatar.js.map +1 -0
- package/dist/sky-badge/index.d.ts +1 -0
- package/dist/sky-badge/index.js +1 -0
- package/dist/sky-badge/sky-badge.d.ts +154 -0
- package/dist/sky-badge/sky-badge.js +148 -0
- package/dist/sky-badge/sky-badge.js.map +1 -0
- package/dist/sky-breadcrumb/index.d.ts +1 -0
- package/dist/sky-breadcrumb/index.js +1 -0
- package/dist/sky-breadcrumb/sky-breadcrumb.d.ts +111 -0
- package/dist/sky-breadcrumb/sky-breadcrumb.js +230 -0
- package/dist/sky-breadcrumb/sky-breadcrumb.js.map +1 -0
- package/dist/sky-button/index.d.ts +1 -0
- package/dist/sky-button/index.js +1 -0
- package/dist/sky-button/sky-button.d.ts +118 -0
- package/dist/sky-button/sky-button.js +172 -0
- package/dist/sky-button/sky-button.js.map +1 -0
- package/dist/sky-button-group/index.d.ts +1 -0
- package/dist/sky-button-group/index.js +1 -0
- package/dist/sky-button-group/sky-button-group.d.ts +93 -0
- package/dist/sky-button-group/sky-button-group.js +281 -0
- package/dist/sky-button-group/sky-button-group.js.map +1 -0
- package/dist/sky-card/index.d.ts +1 -0
- package/dist/sky-card/index.js +1 -0
- package/dist/sky-card/sky-card.d.ts +143 -0
- package/dist/sky-card/sky-card.js +186 -0
- package/dist/sky-card/sky-card.js.map +1 -0
- package/dist/sky-carousel/index.d.ts +1 -0
- package/dist/sky-carousel/index.js +1 -0
- package/dist/sky-carousel/sky-carousel.d.ts +265 -0
- package/dist/sky-carousel/sky-carousel.js +211 -0
- package/dist/sky-carousel/sky-carousel.js.map +1 -0
- package/dist/sky-checkbox/index.d.ts +1 -0
- package/dist/sky-checkbox/index.js +1 -0
- package/dist/sky-checkbox/sky-checkbox.d.ts +165 -0
- package/dist/sky-checkbox/sky-checkbox.js +276 -0
- package/dist/sky-checkbox/sky-checkbox.js.map +1 -0
- package/dist/sky-chip/index.d.ts +1 -0
- package/dist/sky-chip/index.js +1 -0
- package/dist/sky-chip/sky-chip.d.ts +95 -0
- package/dist/sky-chip/sky-chip.js +210 -0
- package/dist/sky-chip/sky-chip.js.map +1 -0
- package/dist/sky-col/index.d.ts +1 -0
- package/dist/sky-col/index.js +1 -0
- package/dist/sky-col/sky-col.d.ts +84 -0
- package/dist/sky-col/sky-col.js +46 -0
- package/dist/sky-col/sky-col.js.map +1 -0
- package/dist/sky-combobox/index.d.ts +1 -0
- package/dist/sky-combobox/index.js +1 -0
- package/dist/sky-combobox/sky-combobox.d.ts +313 -0
- package/dist/sky-combobox/sky-combobox.js +1146 -0
- package/dist/sky-combobox/sky-combobox.js.map +1 -0
- package/dist/sky-counter/index.d.ts +1 -0
- package/dist/sky-counter/index.js +1 -0
- package/dist/sky-counter/sky-counter.d.ts +130 -0
- package/dist/sky-counter/sky-counter.js +101 -0
- package/dist/sky-counter/sky-counter.js.map +1 -0
- package/dist/sky-dialog/index.d.ts +1 -0
- package/dist/sky-dialog/index.js +1 -0
- package/dist/sky-dialog/sky-dialog.d.ts +237 -0
- package/dist/sky-dialog/sky-dialog.js +265 -0
- package/dist/sky-dialog/sky-dialog.js.map +1 -0
- package/dist/sky-divider/index.d.ts +1 -0
- package/dist/sky-divider/index.js +1 -0
- package/dist/sky-divider/sky-divider.d.ts +120 -0
- package/dist/sky-divider/sky-divider.js +42 -0
- package/dist/sky-divider/sky-divider.js.map +1 -0
- package/dist/sky-drawer/index.d.ts +1 -0
- package/dist/sky-drawer/index.js +1 -0
- package/dist/sky-drawer/sky-drawer.d.ts +161 -0
- package/dist/sky-drawer/sky-drawer.js +177 -0
- package/dist/sky-drawer/sky-drawer.js.map +1 -0
- package/dist/sky-dropdown/index.d.ts +1 -0
- package/dist/sky-dropdown/index.js +1 -0
- package/dist/sky-dropdown/sky-dropdown.d.ts +252 -0
- package/dist/sky-dropdown/sky-dropdown.js +58 -0
- package/dist/sky-dropdown/sky-dropdown.js.map +1 -0
- package/dist/sky-dropdown-item/index.d.ts +1 -0
- package/dist/sky-dropdown-item/index.js +1 -0
- package/dist/sky-dropdown-item/sky-dropdown-item.d.ts +207 -0
- package/dist/sky-dropdown-item/sky-dropdown-item.js +341 -0
- package/dist/sky-dropdown-item/sky-dropdown-item.js.map +1 -0
- package/dist/sky-flexbar/index.d.ts +1 -0
- package/dist/sky-flexbar/index.js +1 -0
- package/dist/sky-flexbar/sky-flexbar.d.ts +189 -0
- package/dist/sky-flexbar/sky-flexbar.js +148 -0
- package/dist/sky-flexbar/sky-flexbar.js.map +1 -0
- package/dist/sky-flexbox/index.d.ts +1 -0
- package/dist/sky-flexbox/index.js +1 -0
- package/dist/sky-flexbox/sky-flexbox.d.ts +156 -0
- package/dist/sky-flexbox/sky-flexbox.js +40 -0
- package/dist/sky-flexbox/sky-flexbox.js.map +1 -0
- package/dist/sky-flexcol/index.d.ts +1 -0
- package/dist/sky-flexcol/index.js +1 -0
- package/dist/sky-flexcol/sky-flexcol.d.ts +154 -0
- package/dist/sky-flexcol/sky-flexcol.js +14 -0
- package/dist/sky-flexcol/sky-flexcol.js.map +1 -0
- package/dist/sky-flexitem/index.d.ts +1 -0
- package/dist/sky-flexitem/index.js +1 -0
- package/dist/sky-flexitem/sky-flexitem.d.ts +114 -0
- package/dist/sky-flexitem/sky-flexitem.js +45 -0
- package/dist/sky-flexitem/sky-flexitem.js.map +1 -0
- package/dist/sky-form/index.d.ts +1 -0
- package/dist/sky-form/index.js +1 -0
- package/dist/sky-form/sky-form.d.ts +286 -0
- package/dist/sky-form/sky-form.js +66 -0
- package/dist/sky-form/sky-form.js.map +1 -0
- package/dist/sky-grid/index.d.ts +1 -0
- package/dist/sky-grid/index.js +1 -0
- package/dist/sky-grid/sky-grid.d.ts +78 -0
- package/dist/sky-grid/sky-grid.js +40 -0
- package/dist/sky-grid/sky-grid.js.map +1 -0
- package/dist/sky-icon/index.d.ts +1 -0
- package/dist/sky-icon/index.js +1 -0
- package/dist/sky-icon/ion-local.json.js +2 -0
- package/dist/sky-icon/ion-local.json.js.map +1 -0
- package/dist/sky-icon/sky-icon.d.ts +123 -0
- package/dist/sky-icon/sky-icon.js +40 -0
- package/dist/sky-icon/sky-icon.js.map +1 -0
- package/dist/sky-image/index.d.ts +1 -0
- package/dist/sky-image/index.js +1 -0
- package/dist/sky-image/sky-image.d.ts +102 -0
- package/dist/sky-image/sky-image.js +29 -0
- package/dist/sky-image/sky-image.js.map +1 -0
- package/dist/sky-input/index.d.ts +1 -0
- package/dist/sky-input/index.js +1 -0
- package/dist/sky-input/sky-input.d.ts +345 -0
- package/dist/sky-input/sky-input.js +820 -0
- package/dist/sky-input/sky-input.js.map +1 -0
- package/dist/sky-list/index.d.ts +1 -0
- package/dist/sky-list/index.js +1 -0
- package/dist/sky-list/sky-list.d.ts +85 -0
- package/dist/sky-list/sky-list.js +41 -0
- package/dist/sky-list/sky-list.js.map +1 -0
- package/dist/sky-listitem/index.d.ts +1 -0
- package/dist/sky-listitem/index.js +1 -0
- package/dist/sky-listitem/sky-listitem.d.ts +76 -0
- package/dist/sky-listitem/sky-listitem.js +104 -0
- package/dist/sky-listitem/sky-listitem.js.map +1 -0
- package/dist/sky-navbar/index.d.ts +1 -0
- package/dist/sky-navbar/index.js +1 -0
- package/dist/sky-navbar/sky-navbar.d.ts +207 -0
- package/dist/sky-navbar/sky-navbar.js +521 -0
- package/dist/sky-navbar/sky-navbar.js.map +1 -0
- package/dist/sky-navpanel/index.d.ts +1 -0
- package/dist/sky-navpanel/index.js +1 -0
- package/dist/sky-navpanel/sky-navpanel.d.ts +186 -0
- package/dist/sky-navpanel/sky-navpanel.js +404 -0
- package/dist/sky-navpanel/sky-navpanel.js.map +1 -0
- package/dist/sky-notification/index.d.ts +1 -0
- package/dist/sky-notification/index.js +1 -0
- package/dist/sky-notification/sky-notification.d.ts +152 -0
- package/dist/sky-notification/sky-notification.js +456 -0
- package/dist/sky-notification/sky-notification.js.map +1 -0
- package/dist/sky-otp/index.d.ts +1 -0
- package/dist/sky-otp/index.js +1 -0
- package/dist/sky-otp/sky-otp.d.ts +101 -0
- package/dist/sky-otp/sky-otp.js +96 -0
- package/dist/sky-otp/sky-otp.js.map +1 -0
- package/dist/sky-overlay/index.d.ts +1 -0
- package/dist/sky-overlay/index.js +1 -0
- package/dist/sky-overlay/sky-overlay.d.ts +71 -0
- package/dist/sky-overlay/sky-overlay.js +26 -0
- package/dist/sky-overlay/sky-overlay.js.map +1 -0
- package/dist/sky-pagination/index.d.ts +1 -0
- package/dist/sky-pagination/index.js +1 -0
- package/dist/sky-pagination/sky-pagination.d.ts +167 -0
- package/dist/sky-pagination/sky-pagination.js +453 -0
- package/dist/sky-pagination/sky-pagination.js.map +1 -0
- package/dist/sky-progress/index.d.ts +1 -0
- package/dist/sky-progress/index.js +1 -0
- package/dist/sky-progress/sky-progress.d.ts +70 -0
- package/dist/sky-progress/sky-progress.js +87 -0
- package/dist/sky-progress/sky-progress.js.map +1 -0
- package/dist/sky-radio/index.d.ts +1 -0
- package/dist/sky-radio/index.js +1 -0
- package/dist/sky-radio/sky-radio.d.ts +118 -0
- package/dist/sky-radio/sky-radio.js +109 -0
- package/dist/sky-radio/sky-radio.js.map +1 -0
- package/dist/sky-radio-group/index.d.ts +1 -0
- package/dist/sky-radio-group/index.js +1 -0
- package/dist/sky-radio-group/sky-radio-group.d.ts +186 -0
- package/dist/sky-radio-group/sky-radio-group.js +239 -0
- package/dist/sky-radio-group/sky-radio-group.js.map +1 -0
- package/dist/sky-range/index.d.ts +1 -0
- package/dist/sky-range/index.js +1 -0
- package/dist/sky-range/sky-range.d.ts +110 -0
- package/dist/sky-range/sky-range.js +196 -0
- package/dist/sky-range/sky-range.js.map +1 -0
- package/dist/sky-row/index.d.ts +1 -0
- package/dist/sky-row/index.js +1 -0
- package/dist/sky-row/sky-row.d.ts +57 -0
- package/dist/sky-row/sky-row.js +6 -0
- package/dist/sky-row/sky-row.js.map +1 -0
- package/dist/sky-serial/index.d.ts +1 -0
- package/dist/sky-serial/index.js +1 -0
- package/dist/sky-serial/sky-serial.d.ts +127 -0
- package/dist/sky-serial/sky-serial.js +133 -0
- package/dist/sky-serial/sky-serial.js.map +1 -0
- package/dist/sky-sheet/index.d.ts +1 -0
- package/dist/sky-sheet/index.js +1 -0
- package/dist/sky-sheet/sky-sheet.d.ts +70 -0
- package/dist/sky-sheet/sky-sheet.js +47 -0
- package/dist/sky-sheet/sky-sheet.js.map +1 -0
- package/dist/sky-skeleton/index.d.ts +1 -0
- package/dist/sky-skeleton/index.js +1 -0
- package/dist/sky-skeleton/sky-skeleton.d.ts +80 -0
- package/dist/sky-skeleton/sky-skeleton.js +233 -0
- package/dist/sky-skeleton/sky-skeleton.js.map +1 -0
- package/dist/sky-slider/index.d.ts +1 -0
- package/dist/sky-slider/index.js +1 -0
- package/dist/sky-slider/sky-slider.d.ts +96 -0
- package/dist/sky-slider/sky-slider.js +139 -0
- package/dist/sky-slider/sky-slider.js.map +1 -0
- package/dist/sky-speeddial/index.d.ts +1 -0
- package/dist/sky-speeddial/index.js +1 -0
- package/dist/sky-speeddial/sky-speeddial.d.ts +86 -0
- package/dist/sky-speeddial/sky-speeddial.js +154 -0
- package/dist/sky-speeddial/sky-speeddial.js.map +1 -0
- package/dist/sky-spinner/index.d.ts +1 -0
- package/dist/sky-spinner/index.js +1 -0
- package/dist/sky-spinner/sky-spinner.d.ts +87 -0
- package/dist/sky-spinner/sky-spinner.js +334 -0
- package/dist/sky-spinner/sky-spinner.js.map +1 -0
- package/dist/sky-steps/index.d.ts +1 -0
- package/dist/sky-steps/index.js +1 -0
- package/dist/sky-steps/sky-steps.d.ts +170 -0
- package/dist/sky-steps/sky-steps.js +455 -0
- package/dist/sky-steps/sky-steps.js.map +1 -0
- package/dist/sky-switch/index.d.ts +1 -0
- package/dist/sky-switch/index.js +1 -0
- package/dist/sky-switch/sky-switch.d.ts +116 -0
- package/dist/sky-switch/sky-switch.js +191 -0
- package/dist/sky-switch/sky-switch.js.map +1 -0
- package/dist/sky-tab/index.d.ts +1 -0
- package/dist/sky-tab/index.js +1 -0
- package/dist/sky-tab/sky-tab.d.ts +188 -0
- package/dist/sky-tab/sky-tab.js +390 -0
- package/dist/sky-tab/sky-tab.js.map +1 -0
- package/dist/sky-tab-button/index.d.ts +1 -0
- package/dist/sky-tab-button/index.js +1 -0
- package/dist/sky-tab-button/sky-tab-button.d.ts +114 -0
- package/dist/sky-tab-button/sky-tab-button.js +167 -0
- package/dist/sky-tab-button/sky-tab-button.js.map +1 -0
- package/dist/sky-theme-provider/index.d.ts +1 -0
- package/dist/sky-theme-provider/index.js +1 -0
- package/dist/sky-theme-provider/sky-theme-provider.d.ts +169 -0
- package/dist/sky-theme-provider/sky-theme-provider.js +12 -0
- package/dist/sky-theme-provider/sky-theme-provider.js.map +1 -0
- package/dist/sky-theme-switcher/index.d.ts +1 -0
- package/dist/sky-theme-switcher/index.js +1 -0
- package/dist/sky-theme-switcher/sky-theme-switcher.d.ts +92 -0
- package/dist/sky-theme-switcher/sky-theme-switcher.js +43 -0
- package/dist/sky-theme-switcher/sky-theme-switcher.js.map +1 -0
- package/dist/sky-tooltip/index.d.ts +1 -0
- package/dist/sky-tooltip/index.js +1 -0
- package/dist/sky-tooltip/sky-tooltip.d.ts +156 -0
- package/dist/sky-tooltip/sky-tooltip.js +242 -0
- package/dist/sky-tooltip/sky-tooltip.js.map +1 -0
- package/package.json +475 -0
- package/plugins/rollup-plugin.d.ts +19 -0
- package/plugins/rollup-plugin.js +129 -0
- package/plugins/vite-plugin.d.ts +22 -0
- package/plugins/vite-plugin.js +116 -0
- package/plugins/webpack-plugin.d.ts +12 -0
- package/plugins/webpack-plugin.js +46 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import{__decorate as t,__metadata as e}from"tslib";import{LitElement as i,css as s,html as r}from"lit";import{property as o,state as n,customElement as a}from"lit/decorators.js";import{when as l}from"lit/directives/when.js";import{classMap as h}from"lit/directives/class-map.js";import{styleMap as d}from"lit/directives/style-map.js";import{resolveColor as c,resolveTextColorForToken as p}from"../helper/utils/color-resolver.js";import{SkyIcon as b}from"../sky-icon/sky-icon.js";let u=class extends i{constructor(){super(...arguments),this.selectedIndex=0,this.tabBarPosition="top",this.panelHeight="auto",this.panelWidth="auto",this.gutter="0",this.mountStrategy="lazy",this.keepAlive=!0,this.overflowButton=!1,this.scrollMode="tab",this.scrollPx=120,this.edgePad=12,this.holdDelay=250,this.holdInterval=120,this.neighbors=1,this.neighborPad=8,this.keyNavDebounce=140,this.navSelectOnButtons=!1,this._ready=!1,this.color="primary",this._cache=new Map,this._canBack=!1,this._canFwd=!1,this._holdTimer=null,this._holdStartTimer=null,this._held=!1,this._keyNavLocked=!1,this._keyNavTimer=null,this._keyNavDebouncing=!1,this._keyQueuedDir=null,this.#t=()=>{this.#e(),requestAnimationFrame(()=>{this.#i(),this.#s(),this.#r()})},this.#o=t=>{const e=this.#n().indexOf(t.currentTarget);e>=0&&this.selectTab(e)},this.#a=()=>{this.#i(),this.#s(),this.#r()},this.#l=t=>{if(!this.overflowButton)return;const e=this._tray;if(!e)return;if(t.ctrlKey)return;if("left"===this.tabBarPosition||"right"===this.tabBarPosition){if(Math.abs(t.deltaY)<Math.abs(t.deltaX))return;const i=Math.max(0,e.scrollHeight-e.clientHeight);if(i<=0)return;const s=e.scrollTop+t.deltaY;if(!(t.deltaY<0?e.scrollTop>0:e.scrollTop<i)||s===e.scrollTop)return;t.preventDefault(),e.scrollBy({top:t.deltaY,behavior:"auto"})}else{const i=t.shiftKey&&Math.abs(t.deltaY)>=Math.abs(t.deltaX)?t.deltaY:Math.abs(t.deltaX)>Math.abs(t.deltaY)?t.deltaX:0;if(!i)return;const s=Math.max(0,e.scrollWidth-e.clientWidth);if(s<=0)return;if(!(i<0?e.scrollLeft>0:e.scrollLeft<s))return;t.preventDefault(),e.scrollBy({left:i,behavior:"auto"})}},this.#h=()=>this.#r(),this.#d=t=>{const e=t.composedPath();if(!(e.some(t=>"tab"===t?.getAttribute?.("role"))||e.includes(this)))return;const i=this.#n().length;if(!i)return;const s="top"===this.tabBarPosition||"bottom"===this.tabBarPosition;let r=0;switch(t.key){case"ArrowRight":if(!s)return;t.preventDefault(),r=1;break;case"ArrowLeft":if(!s)return;t.preventDefault(),r=-1;break;case"ArrowDown":if(s)return;t.preventDefault(),r=1;break;case"ArrowUp":if(s)return;t.preventDefault(),r=-1;break;case"Home":return t.preventDefault(),void this.#c(0);case"End":return t.preventDefault(),void this.#c(i-1);default:return}this.#p(r)}}static{this.dependencies={"sky-icon":b}}static{this.styles=s`
|
|
2
|
+
:host {
|
|
3
|
+
--sky-tab-anim-ms: 280ms;
|
|
4
|
+
--sky-tab-anim-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
5
|
+
width: 100%;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.tabs {
|
|
9
|
+
position: relative;
|
|
10
|
+
display: inline-flex;
|
|
11
|
+
gap: 4px;
|
|
12
|
+
padding: 4px;
|
|
13
|
+
align-items: center;
|
|
14
|
+
|
|
15
|
+
background: var(--sky-glass-primary);
|
|
16
|
+
border: var(--sky-border-primary);
|
|
17
|
+
box-shadow: var(--sky-box-shadow-inset);
|
|
18
|
+
border-radius: var(--sky-radius-full);
|
|
19
|
+
/* Add these: */
|
|
20
|
+
flex-shrink: 0; /* Don't shrink */
|
|
21
|
+
white-space: nowrap; /* Prevent tabs from wrapping */
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.tabs.top,
|
|
25
|
+
.tabs.bottom {
|
|
26
|
+
flex-direction: row;
|
|
27
|
+
width: max-content;
|
|
28
|
+
align-items: center;
|
|
29
|
+
}
|
|
30
|
+
.tabs.left,
|
|
31
|
+
.tabs.right {
|
|
32
|
+
flex-direction: column;
|
|
33
|
+
align-items: center;
|
|
34
|
+
width: max-content;
|
|
35
|
+
border-radius: var(--sky-radius-tertiary);
|
|
36
|
+
height: 100%;
|
|
37
|
+
box-sizing: border-box;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.thumb {
|
|
41
|
+
position: absolute;
|
|
42
|
+
border-radius: var(--sky-radius-full);
|
|
43
|
+
top: 4px;
|
|
44
|
+
left: 4px;
|
|
45
|
+
width: var(--thumb-w, 0px);
|
|
46
|
+
height: var(--thumb-h, 0px);
|
|
47
|
+
transform: translate(var(--thumb-x, 0px), var(--thumb-y, 0px));
|
|
48
|
+
background: var(--sky-tab-color, #111);
|
|
49
|
+
box-shadow: var(--sky-box-shadow-inset);
|
|
50
|
+
transition: none;
|
|
51
|
+
z-index: 0;
|
|
52
|
+
pointer-events: none;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Fallback for reduced motion – use CSS transitions */
|
|
56
|
+
@media (prefers-reduced-motion: reduce) {
|
|
57
|
+
.tabs[data-ready="true"] .thumb {
|
|
58
|
+
transition:
|
|
59
|
+
transform var(--sky-tab-anim-ms) var(--sky-tab-anim-ease),
|
|
60
|
+
width var(--sky-tab-anim-ms) var(--sky-tab-anim-ease),
|
|
61
|
+
height var(--sky-tab-anim-ms) var(--sky-tab-anim-ease);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.tabs.left .thumb,
|
|
66
|
+
.tabs.right .thumb {
|
|
67
|
+
border-radius: var(--sky-radius-tertiary);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
::slotted([slot="tab"]) {
|
|
71
|
+
position: relative;
|
|
72
|
+
z-index: 1;
|
|
73
|
+
appearance: none;
|
|
74
|
+
border: 0;
|
|
75
|
+
background: transparent;
|
|
76
|
+
padding: 8px 14px;
|
|
77
|
+
font: inherit;
|
|
78
|
+
border-radius: var(--sky-radius-full);
|
|
79
|
+
color: currentColor;
|
|
80
|
+
cursor: pointer;
|
|
81
|
+
white-space: nowrap;
|
|
82
|
+
outline: none;
|
|
83
|
+
transition:
|
|
84
|
+
color 0.18s ease,
|
|
85
|
+
transform 0.18s ease;
|
|
86
|
+
display: inline-flex;
|
|
87
|
+
align-items: center;
|
|
88
|
+
justify-content: center;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.tabs.left ::slotted([slot="tab"]),
|
|
92
|
+
.tabs.right ::slotted([slot="tab"]) {
|
|
93
|
+
width: var(--sky-seg-vert-item-width, auto);
|
|
94
|
+
border-radius: var(--sky-radius-tertiary);
|
|
95
|
+
align-self: flex-start;
|
|
96
|
+
justify-content: flex-start;
|
|
97
|
+
text-align: left;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
::slotted([slot="tab"][aria-selected="true"]) {
|
|
101
|
+
color: var(--sky-tab-text-color-active, currentColor);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.tabbtn {
|
|
105
|
+
position: relative;
|
|
106
|
+
z-index: 1;
|
|
107
|
+
appearance: none;
|
|
108
|
+
border: 0;
|
|
109
|
+
background: transparent;
|
|
110
|
+
padding: 8px 14px;
|
|
111
|
+
font: inherit;
|
|
112
|
+
border-radius: var(--sky-radius-full);
|
|
113
|
+
color: currentColor;
|
|
114
|
+
cursor: pointer;
|
|
115
|
+
white-space: nowrap;
|
|
116
|
+
outline: none;
|
|
117
|
+
transition:
|
|
118
|
+
color 0.18s ease,
|
|
119
|
+
transform 0.18s ease;
|
|
120
|
+
display: inline-flex;
|
|
121
|
+
align-items: center;
|
|
122
|
+
justify-content: center;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.tabs.left .tabbtn,
|
|
126
|
+
.tabs.right .tabbtn {
|
|
127
|
+
width: var(--sky-seg-vert-item-width, auto);
|
|
128
|
+
align-self: flex-start;
|
|
129
|
+
justify-content: flex-start;
|
|
130
|
+
text-align: left;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.tabbtn[aria-selected="true"] {
|
|
134
|
+
color: var(--sky-text-primary, currentColor);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.tabbtn:focus-visible {
|
|
138
|
+
box-shadow: 0 0 0 2px var(--sky-tab-color);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.rails {
|
|
142
|
+
display: inline-flex;
|
|
143
|
+
align-items: center;
|
|
144
|
+
justify-content: center;
|
|
145
|
+
position: relative;
|
|
146
|
+
/* Add these: */
|
|
147
|
+
overflow: hidden; /* This is likely what's missing! */
|
|
148
|
+
|
|
149
|
+
}
|
|
150
|
+
.rails.top,
|
|
151
|
+
.rails.bottom {
|
|
152
|
+
width: 100%;
|
|
153
|
+
justify-content: center;
|
|
154
|
+
align-items: center;
|
|
155
|
+
width: 100%; /* Take full width of parent */
|
|
156
|
+
flex-shrink: 0; /* Don't shrink */
|
|
157
|
+
}
|
|
158
|
+
.rails.left,
|
|
159
|
+
.rails.right {
|
|
160
|
+
height: 100%;
|
|
161
|
+
flex-direction: column;
|
|
162
|
+
justify-content: start;
|
|
163
|
+
align-items: center;
|
|
164
|
+
flex: 0 0 auto;
|
|
165
|
+
flex-shrink: 0;
|
|
166
|
+
width: max-content;
|
|
167
|
+
min-width: min-content;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.rails.left .tray,
|
|
171
|
+
.rails.right .tray {
|
|
172
|
+
flex: 1 1 auto;
|
|
173
|
+
flex-shrink: 0;
|
|
174
|
+
min-height: 0;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.tray {
|
|
178
|
+
max-width: 100%;
|
|
179
|
+
max-height: 100%;
|
|
180
|
+
overflow: clip;
|
|
181
|
+
contain: content;
|
|
182
|
+
padding: 5px;
|
|
183
|
+
border-radius: inherit;
|
|
184
|
+
box-sizing: border-box;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.tray--buttons {
|
|
188
|
+
overflow: hidden;
|
|
189
|
+
scrollbar-width: none;
|
|
190
|
+
}
|
|
191
|
+
.tray--buttons::-webkit-scrollbar {
|
|
192
|
+
width: 0;
|
|
193
|
+
height: 0;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.tray--native {
|
|
197
|
+
overflow: auto;
|
|
198
|
+
scrollbar-width: auto;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.tray > .tabs {
|
|
202
|
+
display: inline-flex;
|
|
203
|
+
will-change: transform;
|
|
204
|
+
/* Add these: */
|
|
205
|
+
flex-shrink: 0; /* Prevent tabs from shrinking */
|
|
206
|
+
flex-wrap: nowrap; /* Ensure tabs stay in a single line */
|
|
207
|
+
height: 100%; /* Match tray height */
|
|
208
|
+
align-items: center; /* Center vertically for horizontal tabs */
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.navbtn {
|
|
212
|
+
appearance: none;
|
|
213
|
+
border: 0;
|
|
214
|
+
border-radius: var(--sky-radius-full);
|
|
215
|
+
display: inline-flex;
|
|
216
|
+
font-size: 24px;
|
|
217
|
+
align-items: center;
|
|
218
|
+
justify-content: center;
|
|
219
|
+
background: var(--sky-glass-primary);
|
|
220
|
+
border: var(--sky-border-primary);
|
|
221
|
+
color: var(--sky-tab-color);
|
|
222
|
+
box-shadow: var(--sky-box-shadow-primary);
|
|
223
|
+
cursor: pointer;
|
|
224
|
+
|
|
225
|
+
transition:
|
|
226
|
+
opacity 0.15s ease,
|
|
227
|
+
transform 0.15s ease;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.navbtn::before,
|
|
231
|
+
.tabs::before {
|
|
232
|
+
content: "";
|
|
233
|
+
inset: 0;
|
|
234
|
+
position: absolute;
|
|
235
|
+
border-radius: inherit;
|
|
236
|
+
z-index: -1;
|
|
237
|
+
pointer-events: none;
|
|
238
|
+
backdrop-filter: var(--sky-blur-primary) var(--sky-brightness-primary)
|
|
239
|
+
var(--sky-saturation-primary);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.rails.top .navbtn,
|
|
243
|
+
.rails.bottom .navbtn {
|
|
244
|
+
width: auto;
|
|
245
|
+
height: calc(100% - 10px);
|
|
246
|
+
aspect-ratio: 1;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.rails.left .navbtn,
|
|
250
|
+
.rails.right .navbtn {
|
|
251
|
+
width: calc(100% - 10px);
|
|
252
|
+
min-height: 45px;
|
|
253
|
+
aspect-ratio: auto;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.navbtn:disabled {
|
|
257
|
+
opacity: 0.6;
|
|
258
|
+
cursor: default;
|
|
259
|
+
}
|
|
260
|
+
.navbtn:active {
|
|
261
|
+
transform: scale(0.98);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.tabs .thumb {
|
|
265
|
+
position: absolute;
|
|
266
|
+
z-index: 1;
|
|
267
|
+
}
|
|
268
|
+
.tabs .tabbtn {
|
|
269
|
+
z-index: 2;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.wrapper.top,
|
|
273
|
+
.wrapper.bottom {
|
|
274
|
+
flex-direction: column;
|
|
275
|
+
}
|
|
276
|
+
.wrapper.left,
|
|
277
|
+
.wrapper.right {
|
|
278
|
+
flex-direction: row;
|
|
279
|
+
gap: var(--sky-tab-gap, 12px);
|
|
280
|
+
align-items: stretch;
|
|
281
|
+
}
|
|
282
|
+
.wrapper {
|
|
283
|
+
display: flex;
|
|
284
|
+
width: 100%;
|
|
285
|
+
height: 100%;
|
|
286
|
+
overflow: auto;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.content {
|
|
290
|
+
position: relative;
|
|
291
|
+
flex: 1 1 auto;
|
|
292
|
+
width: 100%;
|
|
293
|
+
height: 100%;
|
|
294
|
+
overflow: auto;
|
|
295
|
+
contain: layout paint;
|
|
296
|
+
/* Allow scroll chaining to the page (avoid scroll-trapping). */
|
|
297
|
+
overscroll-behavior: auto;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
::slotted([slot="tab-content"]) {
|
|
301
|
+
display: none;
|
|
302
|
+
position: relative;
|
|
303
|
+
inset: auto;
|
|
304
|
+
width: 100%;
|
|
305
|
+
height: 100%;
|
|
306
|
+
transition: none !important;
|
|
307
|
+
will-change: auto;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
::slotted([slot="tab-content"][selected]) {
|
|
311
|
+
display: block;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.navbtn[hidden] {
|
|
315
|
+
display: none;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
sky-icon {
|
|
319
|
+
display: inline-block;
|
|
320
|
+
width: 1em;
|
|
321
|
+
height: 1em;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
@media (prefers-reduced-motion: reduce) {
|
|
325
|
+
.thumb,
|
|
326
|
+
::slotted([slot="tab-content"]) {
|
|
327
|
+
transition: none !important;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
`}firstUpdated(){this._resizeObs=new ResizeObserver(()=>{this.#i(),this.#s(),this.#r()}),this._tray=this.renderRoot.querySelector(".tray"),this._labelSlot=this.renderRoot.querySelector('slot[name="tab"]'),this._tabsEl=this.renderRoot.querySelector(".tabs"),this._contentSlot=this.renderRoot.querySelector('slot[name="tab-content"]');const t=this.renderRoot.querySelector(".wrapper");t&&this._resizeObs?.observe(t),this._tabsEl&&this._resizeObs?.observe(this._tabsEl),this._tray&&(this._tray.addEventListener("scroll",this.#h,{passive:!0}),this._tray.addEventListener("wheel",this.#l,{passive:!1})),window.addEventListener("resize",this.#a,{passive:!0}),this.#e(),this.addEventListener("keydown",this.#d,{capture:!0});const e=this.renderRoot.querySelector(".tabs");if(e){const t=parseFloat(getComputedStyle(e).getPropertyValue("--sky-tab-anim-ms"))||280;this.keyNavDebounce=Math.round(.5*t)}this._btnPrev=this.renderRoot.querySelector(".navbtn.prev"),this._btnNext=this.renderRoot.querySelector(".navbtn.next"),this.#b(),queueMicrotask(()=>{this.#u(),this.#i(),this.#s(),this.#y(!1),this.#r(),this._ready=!0})}#m(){return this._contentSlot?.assignedElements({flatten:!0})??[]}#f(t,e){if(null==t||""===t)return`__index:${e}`;const i=t.match(/^tab-(\d+)$/);return i?`__index:${i[1]}`:t}#g(t,e){if(null==t||""===t)return`__index:${e}`;if(t.startsWith("panel-unpaired-"))return`__index:${e}`;const i=t.match(/^panel-(\d+)$/);return i?`__index:${i[1]}`:t}#v(){const t=this.#n(),e=new Set;return t.map((t,i)=>{const s=this.#f(t.id??null,i);return s.startsWith("__index:")?s:e.has(s)?`__index:${i}`:(e.add(s),s)})}#w(){const t=this.#m(),e=new Map;return t.forEach((t,i)=>{const s=this.#g(t.id??null,i);e.has(s)||e.set(s,t)}),e}#x(){const t=this.#v(),e=this.#w();return t.map(t=>e.get(t))}#u(){const t=this.#x(),e=new Set(t.filter(t=>null!=t)),i=this.#n();t.forEach((t,e)=>{if(!t)return;const s=String(e);(!t.id||t.id.startsWith("panel-unpaired-")||/^panel-\d+$/.test(t.id))&&(t.id=`panel-${s}`);const r=this.selectedIndex===e;t.toggleAttribute("selected",r),t.setAttribute("role","tabpanel"),t.setAttribute("aria-labelledby",i[e]?.id??`tab-${s}`)}),i.forEach((e,i)=>{e.setAttribute("aria-controls",t[i]?.id??`panel-${i}`)}),this.#m().forEach(t=>{e.has(t)||(t.toggleAttribute("selected",!1),t.setAttribute("role","tabpanel"),t.id&&!t.id.startsWith("panel-")||(t.id=`panel-unpaired-${Math.random().toString(36).slice(2)}`))})}#t;#e(){const t=this.#n();t.forEach((t,e)=>{const i=String(e);t.setAttribute("role","tab"),t.id||(t.id=`tab-${i}`),t.setAttribute("aria-controls",`panel-${i}`);const s=e===this.selectedIndex;t.setAttribute("aria-selected",String(s)),t.setAttribute("tabindex",s?"0":"-1"),"number"==typeof t.tabIndex&&t.tabIndex<0&&(t.tabIndex=s?0:-1),t.removeEventListener("click",this.#o),t.addEventListener("click",this.#o)});const e=t.map(t=>t.id);new Set(e).size!==e.length&&t.forEach((t,e)=>{const i=String(e);t.id=`tab-${i}`,t.setAttribute("aria-controls",`panel-${i}`)})}#n(){return this._labelSlot?.assignedElements({flatten:!0})??[]}#o;disconnectedCallback(){super.disconnectedCallback(),this._thumbAnimation?.cancel(),this._resizeObs?.disconnect(),window.removeEventListener("resize",this.#a),this._tray?.removeEventListener("scroll",this.#h),this._tray?.removeEventListener("wheel",this.#l),this._holdTimer&&(window.clearInterval(this._holdTimer),this._holdTimer=null),this._holdStartTimer&&(window.clearTimeout(this._holdStartTimer),this._holdStartTimer=null),this._keyNavTimer&&(window.clearTimeout(this._keyNavTimer),this._keyNavTimer=null)}updated(t){if(t.has("color")){const t=c(this.color),e=p(this.color);this.style.setProperty("--sky-tab-color",t),this.style.setProperty("--sky-tab-text-color-active",e)}(t.has("selectedIndex")||t.has("tabBarPosition")||t.has("overflowButton"))&&(this.#i(),this.#s(),requestAnimationFrame(()=>{this.#y(!0),this.#r()}))}#a;#r(t=!1){if(!this.overflowButton)return;const e=this._tray;if(!e)return;const i="left"===this.tabBarPosition||"right"===this.tabBarPosition,s=i?e.scrollHeight:e.scrollWidth,r=i?e.clientHeight:e.clientWidth,o=i?e.scrollTop:e.scrollLeft,n=o>0,a=o+r<s-1,l=this._canBack!==n||this._canFwd!==a;this._canBack=n,this._canFwd=a,!t&&l&&(this.#b(),this.requestUpdate())}#l;#h;#k(t){if(!this.overflowButton)return;const e=this._tray;if(!e)return;if(this.navSelectOnButtons&&"tab"===this.scrollMode)return void this.#_(t);const i="left"===this.tabBarPosition||"right"===this.tabBarPosition;if("px"===this.scrollMode){const s=t*this.scrollPx;return void e.scrollBy({left:i?0:s,top:i?s:0,behavior:"smooth"})}if("page"===this.scrollMode){const{start:s,end:r}=this.#S(),o=(i?e.clientHeight:e.clientWidth)-(s+r),n=.8*Math.max(0,o);return void e.scrollBy({left:i?0:t*n,top:i?t*n:0,behavior:"smooth"})}const s=this.#n();if(!s.length)return;const r=i?e.scrollTop:e.scrollLeft,o=s.map(t=>({el:t,start:i?t.offsetTop:t.offsetLeft,end:i?t.offsetTop+t.offsetHeight:t.offsetLeft+t.offsetWidth}));let n=o.findIndex(t=>t.start>=r-1);-1===n&&(n=o.length-1);const a=o[t>0?Math.min(n+1,o.length-1):Math.max(n-1,0)].el;this.#P(a,i),requestAnimationFrame(()=>this.#r())}#B(t){this.overflowButton&&(this._held=!1,this._holdSign=t,this._holdStartTimer=window.setTimeout(()=>{this._held=!0,this.#k(t),this._holdTimer=window.setInterval(()=>this.#k(t),this.holdInterval)},this.holdDelay))}#T(){this.overflowButton&&(this._holdStartTimer&&(window.clearTimeout(this._holdStartTimer),this._holdStartTimer=null),this._holdTimer&&(window.clearInterval(this._holdTimer),this._holdTimer=null),!this._held&&this._holdSign&&this.#k(this._holdSign),this._held=!1,this._holdSign=void 0)}#P(t,e){const i=this._tray,s=e?t.offsetTop:t.offsetLeft;i.scrollTo({left:e?0:s,top:e?s:0,behavior:"smooth"})}#y(t=!0){const e=this._tray,i=this._tabsEl,s=this.#n(),r=this.selectedIndex,o=s[r];if(!(e&&i&&o&&s.length))return;const n="left"===this.tabBarPosition||"right"===this.tabBarPosition,a=n?e.scrollTop:e.scrollLeft,l=n?e.clientHeight:e.clientWidth,{start:h,end:d}=this.#S(),c=a,p=Math.max(0,l-(h+d)),b=c+h,u=b+p,y=n?e.scrollHeight:e.scrollWidth;if(y<=l+1)return;const m=this.neighborPad??8,f=t=>{const e=n?t.offsetTop:t.offsetLeft,i=n?t.offsetHeight:t.offsetWidth;return{start:e,end:e+i,size:i}},g=f(o),v=r>0?f(s[r-1]):null,w=r<s.length-1?f(s[r+1]):null,x=v?Math.min(v.size+m,Math.floor(.35*p)):0,k=w?Math.min(w.size+m,Math.floor(.35*p)):0;let _=c;g.start<b+x&&(_=g.start-x-h),g.end>u-k&&(_=g.end-(p-k)-h),_=Math.max(0,Math.min(_,y-l));{const t=Math.max(0,g.end-(p-k)-h),e=Math.min(y-l,g.start-x-h);_<t&&(_=t),_>e&&(_=e),_=Math.max(0,Math.min(_,y-l))}e.scrollTo({left:n?0:_,top:n?_:0,behavior:t?"smooth":"auto"}),requestAnimationFrame(()=>this.#r())}#s(){const t=this.renderRoot.querySelector(".tabs"),e=this.#n()[this.selectedIndex],i=t?.querySelector(".thumb");if(!t||!e||!i)return;const s=getComputedStyle(t),r=parseFloat(s.paddingLeft||"4"),o=parseFloat(s.paddingTop||"4"),n=t.getBoundingClientRect(),a=e.getBoundingClientRect(),l=n.width/t.clientWidth||1,h=n.height/t.clientHeight||1,d=(a.left-n.left-r*l)/l,c=(a.top-n.top-o*h)/h,p=`translate(${d}px, ${c}px)`,b=`${a.width/l}px`,u=`${a.height/h}px`;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches||!this._ready)return t.style.setProperty("--thumb-x",`${d}px`),t.style.setProperty("--thumb-y",`${c}px`),t.style.setProperty("--thumb-w",b),void t.style.setProperty("--thumb-h",u);const y=getComputedStyle(i),m=[{transform:y.transform||"translate(0, 0)",width:y.width||"0px",height:y.height||"0px"},{transform:p,width:b,height:u}],f=parseFloat(getComputedStyle(t).getPropertyValue("--sky-tab-anim-ms"))||280,g=getComputedStyle(t).getPropertyValue("--sky-tab-anim-ease")||"cubic-bezier(0.2, 0.8, 0.2, 1)";this._thumbAnimation?.cancel(),this._thumbAnimation=i.animate(m,{duration:f,easing:g,fill:"forwards"}),t.style.setProperty("--thumb-x",`${d}px`),t.style.setProperty("--thumb-y",`${c}px`),t.style.setProperty("--thumb-w",b),t.style.setProperty("--thumb-h",u)}#i(){const t=this.renderRoot.querySelector(".tabs");if(!t)return;if(!("left"===this.tabBarPosition||"right"===this.tabBarPosition))return void t.style.removeProperty("--sky-seg-vert-item-width");const e=this.#n();if(!e.length)return;const i=e.map(t=>{const e=t.style.alignSelf,i=t.style.width;t.style.alignSelf="flex-start",t.style.width="auto";const s=Math.ceil(t.getBoundingClientRect().width);return t.style.alignSelf=e,t.style.width=i,s}),s=Math.max(...i);t.style.setProperty("--sky-seg-vert-item-width",`${s}px`)}#S(){if(!this.overflowButton||!this._tray)return{start:0,end:0};const t="left"===this.tabBarPosition||"right"===this.tabBarPosition,e=this._btnPrev&&!this._btnPrev.hasAttribute("hidden")&&!this._btnPrev.disabled,i=this._btnNext&&!this._btnNext.hasAttribute("hidden")&&!this._btnNext.disabled;let s=0,r=0;if(e){const e=this._btnPrev.getBoundingClientRect();s=t?e.height:e.width}if(i){const e=this._btnNext.getBoundingClientRect();r=t?e.height:e.width}const o=getComputedStyle(this._tray);return{start:s+(t?parseFloat(o.paddingTop||"0"):parseFloat(o.paddingLeft||"0"))+20,end:r+(t?parseFloat(o.paddingBottom||"0"):parseFloat(o.paddingRight||"0"))+20}}#b(){const t=this._tray;if(!t)return;const e="left"===this.tabBarPosition||"right"===this.tabBarPosition,{start:i,end:s}=this.#S();e?(t.style.scrollPaddingBlockStart=`${i}px`,t.style.scrollPaddingBlockEnd=`${s}px`,t.style.scrollPaddingInlineStart="",t.style.scrollPaddingInlineEnd=""):(t.style.scrollPaddingInlineStart=`${i}px`,t.style.scrollPaddingInlineEnd=`${s}px`,t.style.scrollPaddingBlockStart="",t.style.scrollPaddingBlockEnd="")}selectTab(t){if(t===this.selectedIndex)return;const e=this.#x(),i=this.#n(),s=this.selectedIndex;if("unmount"===this.mountStrategy&&e[s]){const t=document.createDocumentFragment();t.append(...Array.from(e[s].childNodes)),this.keepAlive&&this._cache.set(s,t)}if(this.selectedIndex=t,"unmount"===this.mountStrategy&&e[t]){const i=e[t],s=this._cache.get(t);s&&i&&i.append(s)}e.forEach((e,i)=>{e&&e.toggleAttribute("selected",i===t)}),i.forEach((e,i)=>{e.setAttribute("aria-selected",String(i===t)),e.setAttribute("tabindex",i===t?"0":"-1")}),this.updateComplete.then(()=>{this.#s(),this.#y(!0),this.#r(),this.dispatchEvent(new CustomEvent("tab-change",{detail:{activeIndex:this.selectedIndex},bubbles:!1,composed:!1}))})}activate(t=this.selectedIndex){const e=this.#n().length-1;if(e<0)return;const i=Math.max(0,Math.min(t,e));this.selectTab(i)}#d;#c(t){this._keyNavLocked||(this._keyNavLocked=!0,this.selectTab(t),this.#y(!0),requestAnimationFrame(()=>{this.#n()[this.selectedIndex]?.focus({preventScroll:!0}),this._keyNavLocked=!1}))}#p(t){this._keyNavDebouncing?this._keyQueuedDir=t:(this.#_(t),this._keyNavDebouncing=!0,this._keyQueuedDir=null,this._keyNavTimer&&window.clearTimeout(this._keyNavTimer),this._keyNavTimer=window.setTimeout(()=>{this._keyNavDebouncing=!1;const t=this._keyQueuedDir;this._keyQueuedDir=null,t&&this.#p(t)},Math.max(0,this.keyNavDebounce)))}#_(t){const e=this.#n().length;if(!e)return;const i=(this.selectedIndex+t+e)%e;this.#c(i)}renderTabs(){const t="top"===this.tabBarPosition||"bottom"===this.tabBarPosition,e=l(t,()=>r`<sky-icon icon="ion:chevron-back" aria-hidden="true"></sky-icon>`,()=>r`<sky-icon icon="ion:chevron-up" aria-hidden="true"></sky-icon>`),i=l(t,()=>r`<sky-icon icon="ion:chevron-forward" aria-hidden="true"></sky-icon>`,()=>r`<sky-icon icon="ion:chevron-down" aria-hidden="true"></sky-icon>`),s=this.overflowButton,o=s&&(this._canBack||this._canFwd),n=h({rails:!0,top:"top"===this.tabBarPosition,bottom:"bottom"===this.tabBarPosition,left:"left"===this.tabBarPosition,right:"right"===this.tabBarPosition}),a=h({tray:!0,"tray--buttons":s,"tray--native":!s}),d=h({tabs:!0,top:"top"===this.tabBarPosition,bottom:"bottom"===this.tabBarPosition,left:"left"===this.tabBarPosition,right:"right"===this.tabBarPosition});return r`
|
|
331
|
+
<div class=${n} part="rails">
|
|
332
|
+
<button
|
|
333
|
+
class="navbtn prev"
|
|
334
|
+
?hidden=${!s||!o}
|
|
335
|
+
.disabled=${!this._canBack&&!this.navSelectOnButtons}
|
|
336
|
+
@pointerdown=${()=>this.#B(-1)}
|
|
337
|
+
@pointerup=${this.#T}
|
|
338
|
+
@pointerleave=${this.#T}
|
|
339
|
+
@pointercancel=${this.#T}
|
|
340
|
+
aria-label=${t?"Scroll tabs left":"Scroll tabs up"}
|
|
341
|
+
>
|
|
342
|
+
${e}
|
|
343
|
+
</button>
|
|
344
|
+
|
|
345
|
+
<div class=${a} part="tray">
|
|
346
|
+
<div
|
|
347
|
+
class=${d}
|
|
348
|
+
part="tabs"
|
|
349
|
+
role="tablist"
|
|
350
|
+
tabindex="-1"
|
|
351
|
+
data-ready=${String(this._ready)}
|
|
352
|
+
aria-orientation=${t?"horizontal":"vertical"}
|
|
353
|
+
>
|
|
354
|
+
<span class="thumb" part="indicator" aria-hidden="true"></span>
|
|
355
|
+
<slot name="tab" @slotchange=${this.#t}></slot>
|
|
356
|
+
</div>
|
|
357
|
+
</div>
|
|
358
|
+
|
|
359
|
+
<button
|
|
360
|
+
class="navbtn next"
|
|
361
|
+
?hidden=${!s||!o}
|
|
362
|
+
.disabled=${!this._canFwd&&!this.navSelectOnButtons}
|
|
363
|
+
@pointerdown=${()=>this.#B(1)}
|
|
364
|
+
@pointerup=${this.#T}
|
|
365
|
+
@pointerleave=${this.#T}
|
|
366
|
+
@pointercancel=${this.#T}
|
|
367
|
+
aria-label=${t?"Scroll tabs right":"Scroll tabs down"}
|
|
368
|
+
>
|
|
369
|
+
${i}
|
|
370
|
+
</button>
|
|
371
|
+
</div>
|
|
372
|
+
`}renderContent(){return this.#u(),r`
|
|
373
|
+
<div
|
|
374
|
+
class="content"
|
|
375
|
+
part="content"
|
|
376
|
+
style=${d({...this.panelWidth?{width:this.panelWidth}:{},...this.panelHeight?{height:this.panelHeight}:{}})}
|
|
377
|
+
>
|
|
378
|
+
<slot
|
|
379
|
+
name="tab-content"
|
|
380
|
+
@slotchange=${()=>{this.#u(),this.#i(),this.#s()}}
|
|
381
|
+
></slot>
|
|
382
|
+
</div>
|
|
383
|
+
`}render(){const t=h({wrapper:!0,top:"top"===this.tabBarPosition,bottom:"bottom"===this.tabBarPosition,left:"left"===this.tabBarPosition,right:"right"===this.tabBarPosition}),e="left"===this.tabBarPosition||"top"===this.tabBarPosition,i="right"===this.tabBarPosition||"bottom"===this.tabBarPosition;return r`
|
|
384
|
+
<div class=${t} style=${d({gap:this.gutter})}>
|
|
385
|
+
${l(e,()=>this.renderTabs())}
|
|
386
|
+
${this.renderContent()}
|
|
387
|
+
${l(i,()=>this.renderTabs())}
|
|
388
|
+
</div>
|
|
389
|
+
`}};t([o({type:Number}),e("design:type",Object)],u.prototype,"selectedIndex",void 0),t([o({type:String}),e("design:type",String)],u.prototype,"tabBarPosition",void 0),t([o({type:String}),e("design:type",Object)],u.prototype,"panelHeight",void 0),t([o({type:String}),e("design:type",Object)],u.prototype,"panelWidth",void 0),t([o({type:String}),e("design:type",Object)],u.prototype,"gutter",void 0),t([o({type:String}),e("design:type",String)],u.prototype,"mountStrategy",void 0),t([o({type:Boolean}),e("design:type",Object)],u.prototype,"keepAlive",void 0),t([o({type:Boolean}),e("design:type",Object)],u.prototype,"overflowButton",void 0),t([o({type:String}),e("design:type",String)],u.prototype,"scrollMode",void 0),t([o({type:Number}),e("design:type",Object)],u.prototype,"scrollPx",void 0),t([o({type:Number}),e("design:type",Object)],u.prototype,"edgePad",void 0),t([o({type:Number}),e("design:type",Object)],u.prototype,"holdDelay",void 0),t([o({type:Number}),e("design:type",Object)],u.prototype,"holdInterval",void 0),t([o({type:Number}),e("design:type",Object)],u.prototype,"neighbors",void 0),t([o({type:Number}),e("design:type",Object)],u.prototype,"neighborPad",void 0),t([o({type:Number}),e("design:type",Object)],u.prototype,"keyNavDebounce",void 0),t([o({type:Boolean}),e("design:type",Object)],u.prototype,"navSelectOnButtons",void 0),t([n(),e("design:type",Object)],u.prototype,"_ready",void 0),t([o({type:String}),e("design:type",Object)],u.prototype,"color",void 0),u=t([a("sky-tab")],u);export{u as SkyTab};
|
|
390
|
+
//# sourceMappingURL=sky-tab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sky-tab.js","sources":["../../src/sky-tab/sky-tab.ts"],"sourcesContent":[null],"names":["SkyTab","LitElement","constructor","this","selectedIndex","tabBarPosition","panelHeight","panelWidth","gutter","mountStrategy","keepAlive","overflowButton","scrollMode","scrollPx","edgePad","holdDelay","holdInterval","neighbors","neighborPad","keyNavDebounce","navSelectOnButtons","_ready","color","_cache","Map","_canBack","_canFwd","_holdTimer","_holdStartTimer","_held","_keyNavLocked","_keyNavTimer","_keyNavDebouncing","_keyQueuedDir","onLabelSlotChange","hydrateLabels","requestAnimationFrame","syncVertWidth","positionThumb","updateOverflowState","onLabelClick","e","idx","labels","indexOf","currentTarget","selectTab","onResize","onWheel","tray","_tray","ctrlKey","Math","abs","deltaY","deltaX","max","scrollHeight","clientHeight","next","scrollTop","preventDefault","scrollBy","top","behavior","delta","shiftKey","scrollWidth","clientWidth","scrollLeft","left","onScroll","onHostKeydown","path","composedPath","some","n","getAttribute","includes","count","length","horiz","dir","key","goToIndex","scheduleKeyNav","dependencies","SkyIcon","styles","css","firstUpdated","_resizeObs","ResizeObserver","renderRoot","querySelector","_labelSlot","_tabsEl","_contentSlot","wrapper","observe","addEventListener","passive","window","capture","tabs","ms","parseFloat","getComputedStyle","getPropertyValue","round","_btnPrev","_btnNext","applyScrollPadding","queueMicrotask","hydratePanels","scrollActiveIntoView","panels","assignedElements","flatten","labelKey","id","i","m","match","panelKey","startsWith","getLabelKeys","used","Set","map","el","has","add","panelByKey","forEach","p","set","orderedPanels","keys","byKey","k","get","pairedSet","filter","fallbackId","String","test","isSelected","toggleAttribute","setAttribute","random","toString","slice","selected","tabIndex","removeEventListener","tabIds","size","disconnectedCallback","super","_thumbAnimation","cancel","disconnect","clearInterval","clearTimeout","updated","changed","baseColor","resolveColor","activeTextColor","resolveTextColorForToken","style","setProperty","isVertical","extent","viewport","pos","canBack","canFwd","requestUpdate","scrollStep","sign","stepOnce","vertical","start","end","getInsets","usable","page","btns","viewStart","positions","b","offsetTop","offsetLeft","offsetHeight","offsetWidth","leftIndex","findIndex","target","min","scrollToElement","holdStart","_holdSign","setTimeout","setInterval","holdStop","undefined","offset","scrollTo","smooth","tabsEl","active","rawStart","rawSize","insetStart","insetEnd","effSize","effStart","effEnd","contentExtent","pad","a","prev","minLead","floor","minTrail","targetStart","windowStartAllowed","windowEndAllowed","wrap","thumb","wrapStyles","padL","paddingLeft","padT","paddingTop","wr","getBoundingClientRect","ar","scaleX","width","scaleY","height","xLocal","yLocal","targetTransform","targetWidth","targetHeight","matchMedia","matches","cs","keyframes","transform","animMs","animEase","animate","duration","easing","fill","removeProperty","widths","prevAlign","alignSelf","prevWidth","w","ceil","maxW","prevVisible","hasAttribute","disabled","nextVisible","r","trayStyles","paddingBottom","paddingRight","scrollPaddingBlockStart","scrollPaddingBlockEnd","scrollPaddingInlineStart","scrollPaddingInlineEnd","index","oldIdx","frag","document","createDocumentFragment","append","Array","from","childNodes","cached","updateComplete","then","dispatchEvent","CustomEvent","detail","activeIndex","bubbles","composed","activate","focus","preventScroll","queued","renderTabs","prevIcon","when","html","nextIcon","useButtons","showNav","railsClasses","classMap","rails","bottom","right","trayClasses","tabsClasses","renderContent","styleMap","render","wrapperClasses","tabsFirst","tabsLast","gap","__decorate","property","type","Number","prototype","Boolean","state","customElement"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./sky-tab-button";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './sky-tab-button.js';
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { LitElement, PropertyValues } from "lit";
|
|
2
|
+
export type Size = "xs" | "sm" | "md" | "lg" | "xl";
|
|
3
|
+
export type RadiusSize = "none" | "sm" | "md" | "lg" | "full";
|
|
4
|
+
export type SwitchItem = string | {
|
|
5
|
+
value: string;
|
|
6
|
+
label?: string;
|
|
7
|
+
icon?: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
color?: string;
|
|
10
|
+
};
|
|
11
|
+
type NormalizedItem = {
|
|
12
|
+
value: string;
|
|
13
|
+
label?: string;
|
|
14
|
+
icon?: string;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
color?: string;
|
|
17
|
+
};
|
|
18
|
+
export type SkyTabButtonStateChangeDetail = {
|
|
19
|
+
value: string;
|
|
20
|
+
index: number;
|
|
21
|
+
item: NormalizedItem;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* `<sky-tab-button>` — A segmented tab/switch-style button group with smooth animated thumb indicator.
|
|
25
|
+
* Supports icons, labels, keyboard navigation, dynamic resizing, and accessibility features.
|
|
26
|
+
*
|
|
27
|
+
* @element sky-tab-button
|
|
28
|
+
* @status stable
|
|
29
|
+
* @since 1.0.0
|
|
30
|
+
*
|
|
31
|
+
* @summary Segmented tab-button control with animated thumb and keyboard navigation.
|
|
32
|
+
*
|
|
33
|
+
* @documentation https://library.sky-ui.com/components/tab-button
|
|
34
|
+
* @dependency sky-icon
|
|
35
|
+
*
|
|
36
|
+
* @uiVModel value state-change
|
|
37
|
+
*
|
|
38
|
+
* @slot - Default slot for additional content (not typically used).
|
|
39
|
+
*
|
|
40
|
+
* @csspart wrap - The outer wrapper of the control (radiogroup).
|
|
41
|
+
* @csspart thumb - The animated highlight element behind the active button.
|
|
42
|
+
* @csspart btn - Each individual button element.
|
|
43
|
+
* @csspart label - The optional label span inside each button.
|
|
44
|
+
* @csspart icon - The optional icon inside each button.
|
|
45
|
+
*
|
|
46
|
+
* @property {Array<string|{value:string,label?:string,icon?:string,disabled?:boolean,color?:string}>} states - List of states. Each can be a string or an object with `value`, optional `label`, optional `icon`, optional `disabled`, and optional `color`. Default: []
|
|
47
|
+
* @property {string} value - Currently selected state value. Reflected as attribute. Default: ""
|
|
48
|
+
* @property {boolean} disabled - If true, disables all buttons. Reflected as attribute. Default: false
|
|
49
|
+
* @property {"xs"|"sm"|"md"|"lg"|"xl"} size - Size of the control. Affects padding, font size, and dimensions. Default: "sm"
|
|
50
|
+
* @property {"none"|"sm"|"md"|"lg"|"full"} radius - Border radius of the control. Default: "full"
|
|
51
|
+
* @property {boolean} showCurrentLabelOnly - If true, only the currently selected label is shown. Otherwise, all labels are shown. Default: false
|
|
52
|
+
* @property {string} color - Base color for the active thumb indicator. Supports CSS tokens like "primary", "success", etc. Default: "primary"
|
|
53
|
+
*
|
|
54
|
+
* @fires {CustomEvent<SkyTabButtonStateChangeDetail>} state-change - Fired when the selected value changes.
|
|
55
|
+
* @method focusButton Focuses the currently active tab button.
|
|
56
|
+
*
|
|
57
|
+
* @Behavior
|
|
58
|
+
* - Normalizes string/object states into a single selectable item model.
|
|
59
|
+
* - Animates active thumb position and optional label visibility.
|
|
60
|
+
* - Supports keyboard navigation and per-item disabled states.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```html
|
|
64
|
+
* <sky-tab-button size="md" radius="full" color="primary" value="active"></sky-tab-button>
|
|
65
|
+
* ```
|
|
66
|
+
* ```vue
|
|
67
|
+
* <template>
|
|
68
|
+
* <sky-tab-button :states="states" size="md" radius="full" color="primary" value="active" show-current-label-only></sky-tab-button>
|
|
69
|
+
* </template>
|
|
70
|
+
* ```
|
|
71
|
+
* ```jsx
|
|
72
|
+
* export default function Demo() {
|
|
73
|
+
* return <sky-tab-button states={[{ value: "draft", label: "Draft" }, { value: "active", label: "Active", icon: "mdi:check" }, { value: "archived", label: "Archived" }]} size="md" radius="full" color="primary" value="active" showCurrentLabelOnly></sky-tab-button>;
|
|
74
|
+
* }
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare class SkyTabButton extends LitElement {
|
|
78
|
+
#private;
|
|
79
|
+
static dependencies: Record<string, CustomElementConstructor>;
|
|
80
|
+
states: SwitchItem[];
|
|
81
|
+
value: string;
|
|
82
|
+
disabled: boolean;
|
|
83
|
+
size: Size;
|
|
84
|
+
radius: RadiusSize;
|
|
85
|
+
showCurrentLabelOnly: boolean;
|
|
86
|
+
color: string;
|
|
87
|
+
private _labelWidths;
|
|
88
|
+
private _ready;
|
|
89
|
+
private _containerWidth;
|
|
90
|
+
/** Cached normalized items; updated in willUpdate to avoid repeated array creation. */
|
|
91
|
+
private _itemsCache;
|
|
92
|
+
private _canvasContext?;
|
|
93
|
+
private _thumbAnimation?;
|
|
94
|
+
private _labelAnimations;
|
|
95
|
+
private _updateScheduled;
|
|
96
|
+
private _resizeTimeout?;
|
|
97
|
+
private _windowResizeTimeout?;
|
|
98
|
+
private _visibilityRetryTimer?;
|
|
99
|
+
private _visibilityRetryAttempts;
|
|
100
|
+
static styles: import("lit").CSSResult;
|
|
101
|
+
connectedCallback(): void;
|
|
102
|
+
disconnectedCallback(): void;
|
|
103
|
+
protected firstUpdated(_changed: PropertyValues): void;
|
|
104
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
105
|
+
protected updated(changed: Map<string, unknown>): void;
|
|
106
|
+
get items(): NormalizedItem[];
|
|
107
|
+
get index(): number;
|
|
108
|
+
set index(i: number);
|
|
109
|
+
/** Re-measure and reposition the active thumb (e.g. after parent layout/visibility changes). */
|
|
110
|
+
refresh(): void;
|
|
111
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
112
|
+
focusButton(): void;
|
|
113
|
+
}
|
|
114
|
+
export {};
|