@cas-smartdesign/tab-bar 4.1.1 → 4.1.3
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/dist/docs/doc.mjs +16 -16
- package/dist/tab-bar-with-externals.js +4 -4
- package/dist/tab-bar-with-externals.js.map +3 -3
- package/dist/tab-bar.mjs +15 -11
- package/dist/tab-bar.mjs.map +1 -1
- package/npm-third-party-licenses.json +45 -40
- package/package.json +4 -4
package/dist/tab-bar.mjs
CHANGED
|
@@ -8,7 +8,7 @@ var C = Object.defineProperty, p = (c, t, e, o) => {
|
|
|
8
8
|
(n = c[i]) && (s = n(t, e, s) || s);
|
|
9
9
|
return s && C(t, e, s), s;
|
|
10
10
|
};
|
|
11
|
-
const
|
|
11
|
+
const v = navigator.userAgent.indexOf("Trident") !== -1, b = class b extends f {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments), this.minimumOverlayWidth = 150, this.handleKeyDown = (t) => {
|
|
14
14
|
this.hasAnchors ? (this.vertical ? ["Left", "ArrowLeft", "Right", "ArrowRight", "Enter"] : ["Down", "ArrowDown", "Up", "ArrowUp", "Enter"]).indexOf(t.key) === -1 ? (this.hideAnchors(), this.focus()) : (this.anchorsShown || (this.showAnchors(), window.requestAnimationFrame(() => {
|
|
@@ -17,7 +17,7 @@ const w = navigator.userAgent.indexOf("Trident") !== -1, b = class b extends f {
|
|
|
17
17
|
}, this.handleListSelection = (t) => {
|
|
18
18
|
this.hideAnchors(), t.stopPropagation(), this.dispatchSelectionEvent(this.anchors[t.detail.index]), this.focus();
|
|
19
19
|
}, this.handlePointerLeave = (t) => {
|
|
20
|
-
(
|
|
20
|
+
(v || this.list && !this.list.contains(t.target)) && window.addEventListener("pointermove", this.handlePointerMove);
|
|
21
21
|
}, this.handlePointerMove = (t) => {
|
|
22
22
|
!this.isPointerAbove(t, this) && !this.isPointerAbove(t, this.list) && (this.hideAnchors(), window.removeEventListener("pointermove", this.handlePointerMove));
|
|
23
23
|
};
|
|
@@ -27,8 +27,8 @@ const w = navigator.userAgent.indexOf("Trident") !== -1, b = class b extends f {
|
|
|
27
27
|
}
|
|
28
28
|
set selected(t) {
|
|
29
29
|
if (t)
|
|
30
|
-
this.setAttribute("selected", "");
|
|
31
|
-
else if (this.removeAttribute("selected"), this.shadowRoot && this.showRipple) {
|
|
30
|
+
this.setAttribute("selected", ""), this.setAttribute("aria-selected", "true");
|
|
31
|
+
else if (this.removeAttribute("selected"), this.setAttribute("aria-selected", "false"), this.shadowRoot && this.showRipple) {
|
|
32
32
|
const e = this.shadowRoot.querySelector(".ripple");
|
|
33
33
|
e.style.display = "none", this.showRipple = !1;
|
|
34
34
|
}
|
|
@@ -55,7 +55,7 @@ const w = navigator.userAgent.indexOf("Trident") !== -1, b = class b extends f {
|
|
|
55
55
|
}
|
|
56
56
|
}), this.addEventListener("click", (s) => {
|
|
57
57
|
s.composedPath().indexOf(this.list) === -1 && (this.dispatchSelectionEvent(), s.preventDefault(), s.stopPropagation());
|
|
58
|
-
}), this.addEventListener("keydown", this.handleKeyDown), this.
|
|
58
|
+
}), this.addEventListener("keydown", this.handleKeyDown), this.setAttribute("tabindex", "-1"), this.role = "tab";
|
|
59
59
|
}
|
|
60
60
|
disconnectedCallback() {
|
|
61
61
|
super.disconnectedCallback(), this.hideAnchors();
|
|
@@ -106,7 +106,7 @@ const w = navigator.userAgent.indexOf("Trident") !== -1, b = class b extends f {
|
|
|
106
106
|
{
|
|
107
107
|
name: "computeStyles",
|
|
108
108
|
options: {
|
|
109
|
-
gpuAcceleration: !
|
|
109
|
+
gpuAcceleration: !v
|
|
110
110
|
}
|
|
111
111
|
},
|
|
112
112
|
{
|
|
@@ -181,7 +181,7 @@ var B = Object.defineProperty, d = (c, t, e, o) => {
|
|
|
181
181
|
(n = c[i]) && (s = n(t, e, s) || s);
|
|
182
182
|
return s && B(t, e, s), s;
|
|
183
183
|
};
|
|
184
|
-
const
|
|
184
|
+
const w = 40, u = class u extends f {
|
|
185
185
|
constructor() {
|
|
186
186
|
super(...arguments), this.handleSlotChange = () => {
|
|
187
187
|
this.tabElements = this.shadowRoot.querySelector("slot").assignedNodes().filter((e) => e instanceof r);
|
|
@@ -227,7 +227,11 @@ const v = 40, u = class u extends f {
|
|
|
227
227
|
e.adoptedStyleSheets && (this.shadowRoot.adoptedStyleSheets = [
|
|
228
228
|
...this.shadowRoot.adoptedStyleSheets,
|
|
229
229
|
...e.adoptedStyleSheets
|
|
230
|
-
]), this.shadowRoot.querySelector("slot").addEventListener("slotchange", this.handleSlotChange), this.addEventListener("keydown", this.handleKeyDown), this.
|
|
230
|
+
]), this.shadowRoot.querySelector("slot").addEventListener("slotchange", this.handleSlotChange), this.addEventListener("keydown", this.handleKeyDown), this.addEventListener("focusin", (s) => {
|
|
231
|
+
this.contains(s.relatedTarget) || (this.focusedIndex = this.selectedIndex, this.updateFocusedState(), this.shadowRoot.querySelector(".root").tabIndex = -1);
|
|
232
|
+
}), this.addEventListener("focusout", (s) => {
|
|
233
|
+
this.contains(s.relatedTarget) || (this.shadowRoot.querySelector(".root").tabIndex = 0);
|
|
234
|
+
}), this.tabButtonContainer.addEventListener("wheel", (s) => {
|
|
231
235
|
if (this.tabButtonContainer.scrollWidth > this.tabButtonContainer.offsetWidth) {
|
|
232
236
|
const i = document.elementsFromPoint(s.x, s.y)[0];
|
|
233
237
|
this.tabButtonContainer.scrollLeft += s.deltaY;
|
|
@@ -246,10 +250,10 @@ const v = 40, u = class u extends f {
|
|
|
246
250
|
// prettier-ignore
|
|
247
251
|
render() {
|
|
248
252
|
return l`
|
|
249
|
-
<div class="root">
|
|
253
|
+
<div class="root" tabindex="0" role="tablist" aria-orientation="${this.vertical ? "vertical" : "horizontal"}">
|
|
250
254
|
${!this.vertical && this.showLeftScrollButton ? l`
|
|
251
255
|
<div class="scroll-button left" @pointerdown="${() => {
|
|
252
|
-
this.tabButtonContainer.scrollLeft -=
|
|
256
|
+
this.tabButtonContainer.scrollLeft -= w;
|
|
253
257
|
}}">
|
|
254
258
|
<div class="ripple"></div>
|
|
255
259
|
<svg><g><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></g></svg>
|
|
@@ -260,7 +264,7 @@ const v = 40, u = class u extends f {
|
|
|
260
264
|
</div>
|
|
261
265
|
${!this.vertical && this.showRightScrollButton ? l`
|
|
262
266
|
<div class="scroll-button right" @pointerdown="${() => {
|
|
263
|
-
this.tabButtonContainer.scrollLeft +=
|
|
267
|
+
this.tabButtonContainer.scrollLeft += w;
|
|
264
268
|
}}">
|
|
265
269
|
<div class="ripple"></div>
|
|
266
270
|
<svg><g><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></g></svg>
|
package/dist/tab-bar.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-bar.mjs","sources":["../tab.ts","../tab-bar.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS, PropertyValues, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { createPopper, Instance as Popper } from \"@popperjs/core\";\nimport \"@cas-smartdesign/virtual-list\";\nimport VirtualList, { ListDataProvider, SelectionType } from \"@cas-smartdesign/virtual-list\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [Tab.ID]: Tab;\n }\n}\nimport style from \"./tab-style.scss?inline\";\n\nconst isIE11 = navigator.userAgent.indexOf(\"Trident\") !== -1;\n\nexport interface ISelectionEvent {\n anchor: string;\n}\n\nexport interface CustomEventMap extends HTMLElementEventMap {\n selection: CustomEvent<ISelectionEvent>;\n}\n\nexport default interface Tab {\n addEventListener<K extends keyof CustomEventMap>(\n event: K,\n listener: ((this: this, ev: CustomEventMap[K]) => unknown) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n addEventListener(\n type: string,\n callback: EventListenerOrEventListenerObject | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener<K extends keyof CustomEventMap>(\n type: K,\n listener: (this: this, ev: CustomEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n dispatchEvent<EventType extends CustomEventMap[keyof CustomEventMap]>(event: EventType): boolean;\n}\n\nexport default class Tab extends LitElement {\n public static readonly ID = \"sd-tab\";\n\n @property({ type: String })\n public text: string;\n @property({ type: Array })\n public anchors: string[];\n @property()\n public index: number;\n @property()\n public showCounter: boolean;\n\n @property({ type: Boolean, reflect: true, attribute: \"anchors-shown\" })\n private anchorsShown: boolean;\n\n public noInk: boolean;\n public vertical: boolean;\n\n public minimumOverlayWidth = 150;\n\n private showRipple: boolean;\n private popper: Popper;\n private list: VirtualList;\n private dataProvider: ListDataProvider;\n private _cssMathMaxSupported: boolean;\n\n get selected(): boolean {\n return this.hasAttribute(\"selected\");\n }\n\n set selected(newValue: boolean) {\n if (newValue) {\n this.setAttribute(\"selected\", \"\");\n } else {\n this.removeAttribute(\"selected\");\n if (this.shadowRoot && this.showRipple) {\n const rippleElement = this.shadowRoot.querySelector(\".ripple\") as HTMLElement;\n rippleElement.style.display = \"none\";\n this.showRipple = false;\n }\n }\n }\n\n public firstUpdated(changedProperties: PropertyValues): void {\n super.firstUpdated(changedProperties);\n const supportsCSS = window.CSS && window.CSS.supports;\n this._cssMathMaxSupported = supportsCSS && CSS.supports(\"max-width\", \"max(50vw)\");\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const ownerDocument = this.ownerDocument as any;\n if (ownerDocument.adoptedStyleSheets) {\n (this.shadowRoot as any).adoptedStyleSheets = [\n ...(this.shadowRoot as any).adoptedStyleSheets,\n ...ownerDocument.adoptedStyleSheets,\n ];\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n this.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n if (!this.noInk && !this.showRipple) {\n this.showRipple = true;\n const rect: DOMRect = this.getBoundingClientRect();\n const rippleElement = this.shadowRoot.querySelector(\".ripple\") as HTMLElement;\n rippleElement.style.left = `${event.clientX - rect.left}px`;\n rippleElement.style.top = `${event.clientY - rect.top}px`;\n rippleElement.style.display = \"\";\n rippleElement.addEventListener(\n \"animationend\",\n () => {\n rippleElement.style.display = \"none\";\n this.showRipple = false;\n },\n { once: true },\n );\n }\n });\n this.addEventListener(\"click\", (event: MouseEvent) => {\n if (event.composedPath().indexOf(this.list) === -1) {\n this.dispatchSelectionEvent();\n event.preventDefault();\n event.stopPropagation();\n }\n });\n this.addEventListener(\"keydown\", this.handleKeyDown);\n if (!this.hasAttribute(\"tabindex\")) {\n this.setAttribute(\"tabindex\", \"0\");\n }\n }\n\n public disconnectedCallback(): void {\n super.disconnectedCallback();\n this.hideAnchors();\n }\n\n static get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n\n public render() {\n return html`\n <div class=\"root\" @pointerover=${this.showAnchors} @pointerdown=${this.showAnchors}>\n ${this.showCounter ? html` <span class=\"counter\">${this.index + 1}</span> ` : \"\"}\n <div class=\"text\">${this.text}</div>\n <div class=\"ripple\" style=\"display: none\"></div>\n ${this.hasAnchors\n ? html`\n <svg class=\"down-arrow\" tabindex=\"-1\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n <path d=\"M13 4v2l-5 5-5-5v-2l5 5z\"></path>\n </svg>\n `\n : \"\"}\n </div>\n `;\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (this.hasAnchors) {\n const anchorTriggerKeys = this.vertical\n ? [\"Left\", \"ArrowLeft\", \"Right\", \"ArrowRight\", \"Enter\"]\n : [\"Down\", \"ArrowDown\", \"Up\", \"ArrowUp\", \"Enter\"];\n if (anchorTriggerKeys.indexOf(event.key) === -1) {\n this.hideAnchors();\n this.focus();\n } else {\n if (!this.anchorsShown) {\n this.showAnchors();\n window.requestAnimationFrame(() => {\n // IE would scroll down to bottom because the anchor list has not yet positioned there.\n this.list.focusIndex = 0;\n this.list.focus();\n\n this.updateDropdownSizes();\n });\n }\n event.preventDefault();\n event.stopPropagation();\n }\n } else if (event.key === \"Enter\") {\n this.dispatchSelectionEvent();\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n private updateDropdownSizes(): void {\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n const overlayMaxHeight = (viewportHeight - this.offsetHeight) * 0.5;\n Object.assign(this.list.style, {\n maxHeight: `${overlayMaxHeight}px`,\n minWidth: `${Math.max(this.offsetWidth, this.minimumOverlayWidth)}px`,\n maxWidth: this._cssMathMaxSupported\n ? `max(50vw, ${this.offsetWidth}px)`\n : Math.max((window.innerWidth || document.documentElement.clientWidth) / 2, this.offsetWidth) + \"px\",\n });\n }\n\n private handleListSelection = (event: CustomEvent) => {\n this.hideAnchors();\n event.stopPropagation();\n this.dispatchSelectionEvent(this.anchors[event.detail.index]);\n this.focus();\n };\n\n private dispatchSelectionEvent(selectedAnchor?: string): void {\n this.dispatchEvent(new CustomEvent<ISelectionEvent>(\"selection\", { detail: { anchor: selectedAnchor } }));\n }\n\n private handlePointerLeave = (event: PointerEvent) => {\n if (isIE11 || (this.list && !this.list.contains(event.target as HTMLElement))) {\n window.addEventListener(\"pointermove\", this.handlePointerMove);\n }\n };\n\n private handlePointerMove = (event: PointerEvent) => {\n if (!this.isPointerAbove(event, this) && !this.isPointerAbove(event, this.list)) {\n this.hideAnchors();\n window.removeEventListener(\"pointermove\", this.handlePointerMove);\n }\n };\n\n private isPointerAbove(event: PointerEvent, element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n return (\n rect.left <= event.clientX &&\n rect.right >= event.clientX &&\n rect.top <= event.clientY &&\n rect.bottom >= event.clientY\n );\n }\n\n public showAnchors() {\n if (!this.anchorsShown && this.hasAnchors) {\n this.root.addEventListener(\"pointerleave\", this.handlePointerLeave);\n if (!this.list) {\n this.createList();\n }\n this.dataProvider.items = this.anchors.map((anchor, index) => {\n return {\n caption: anchor,\n index,\n };\n });\n\n this.updateDropdownSizes();\n this.ownerDocument.body.appendChild(this.list);\n if (!this.popper) {\n this.popper = createPopper(this, this.list, {\n placement: this.vertical ? \"right-start\" : \"bottom-start\",\n modifiers: [\n {\n name: \"computeStyles\",\n options: {\n gpuAcceleration: !isIE11,\n },\n },\n {\n name: \"hide\",\n enabled: false,\n },\n {\n name: \"preventOverflow\",\n options: {\n padding: 0,\n },\n },\n {\n name: \"adjustWidthIfNeeded\",\n enabled: true,\n phase: \"read\",\n fn({ state }) {\n const list = state.elements.popper as VirtualList;\n list.increaseWidthOnNextRenderIfNeeded();\n },\n },\n ],\n });\n }\n\n window.requestAnimationFrame(() => {\n if (this.popper) {\n this.popper.update();\n }\n });\n\n this.anchorsShown = true;\n }\n }\n\n private createList(): void {\n this.list = document.createElement(VirtualList.ID) as VirtualList;\n this.dataProvider = new ListDataProvider();\n this.dataProvider.finalSizeIsKnown = true;\n this.dataProvider.connectList(this.list);\n this.list.classList.add(\"anchor-list\");\n this.list.tabIndex = 0;\n this.list.selectionType = SelectionType.TriggerOnly;\n this.list.addEventListener(\"selection\", this.handleListSelection);\n this.list.addEventListener(\"keydown\", (e) => {\n if (e.key == \"Escape\") {\n this.hideAnchors();\n this.focus();\n }\n });\n this.list.addEventListener(\"focusout\", () => {\n this.hideAnchors();\n });\n this.list.setAttribute(\"slot\", \"anchors\");\n this.list.itemHeight = 50;\n Object.assign(this.list.style, {\n zIndex: \"21000\",\n boxShadow: `rgba(0, 0, 0, 0.14) 0px 2px 2px 0px,\n rgba(0, 0, 0, 0.12) 0px 1px 5px 0px,\n rgba(0, 0, 0, 0.2) 0px 3px 1px -2px`,\n background: \"white\",\n overflowY: \"auto\",\n });\n }\n\n hideAnchors(): void {\n if (this.anchorsShown) {\n this.anchorsShown = false;\n this.root.removeEventListener(\"pointerleave\", this.handlePointerLeave);\n if (this.list) {\n this.list.focusIndex = -1;\n this.list.parentElement.removeChild(this.list);\n }\n }\n if (this.popper) {\n this.popper.destroy();\n this.popper = null;\n }\n }\n\n private get hasAnchors(): boolean {\n return !!(this.anchors && this.anchors.length);\n }\n\n private get root(): HTMLElement {\n if (this.shadowRoot) {\n return this.shadowRoot.querySelector(\".root\");\n }\n return null;\n }\n}\n\nVirtualList.ensureDefined();\nif (!customElements.get(Tab.ID)) {\n customElements.define(Tab.ID, Tab);\n}\n","import { LitElement, html, PropertyValues, unsafeCSS, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport \"./tab\";\nimport Tab from \"./tab\";\nexport { default as Tab } from \"./tab\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TabBar.ID]: TabBar;\n }\n}\nimport style from \"./tab-bar-style.scss?inline\";\n\nconst SCROLL_STEP = 40;\n\nexport interface ISelectionEvent {\n selectedTab: {\n index: number;\n tabElement: Tab;\n };\n anchor: string;\n}\n\nexport interface CustomEventMap extends HTMLElementEventMap {\n selection: CustomEvent<ISelectionEvent>;\n}\n\nexport default interface TabBar {\n addEventListener<K extends keyof CustomEventMap>(\n event: K,\n listener: ((this: this, ev: CustomEventMap[K]) => unknown) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n addEventListener(\n type: string,\n callback: EventListenerOrEventListenerObject | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener<K extends keyof CustomEventMap>(\n type: K,\n listener: (this: this, ev: CustomEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n dispatchEvent<EventType extends CustomEventMap[keyof CustomEventMap]>(event: EventType): boolean;\n}\n\nexport default class TabBar extends LitElement {\n public static readonly ID = \"sd-tab-bar\";\n\n @property({ type: Boolean, reflect: true, attribute: \"no-bar\" })\n public noBar: boolean;\n @property({ type: Boolean, reflect: true, attribute: \"no-slide\" })\n public noSlide: boolean;\n @property({ type: Boolean, reflect: true })\n public vertical: boolean;\n @property({ type: Boolean, reflect: true, attribute: \"show-counter\" })\n public showCounter: boolean;\n\n public tabElements: Tab[];\n\n @property()\n private showLeftScrollButton: boolean;\n @property()\n private showRightScrollButton: boolean;\n\n private _focusedIndex: number;\n private _selectedIndex: number;\n private resizeObserver: ResizeObserver;\n private lastKnownWidth: number;\n private _tabButtonContainer: HTMLElement;\n\n static shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n public connectedCallback() {\n super.connectedCallback();\n this.resizeObserver = new ResizeObserver(() => {\n this.debounce(\"update-scroll-button-visibility\", () => {\n if (this.lastKnownWidth !== this.offsetWidth) {\n this.lastKnownWidth = this.offsetWidth;\n this.updateScrollButtonVisibility();\n }\n });\n });\n this.resizeObserver.observe(this);\n }\n\n public disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver.disconnect();\n }\n\n public firstUpdated(changedProperties: PropertyValues): void {\n super.firstUpdated(changedProperties);\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const ownerDocument = this.ownerDocument as any;\n if (ownerDocument.adoptedStyleSheets) {\n (this.shadowRoot as any).adoptedStyleSheets = [\n ...(this.shadowRoot as any).adoptedStyleSheets,\n ...ownerDocument.adoptedStyleSheets,\n ];\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n const slot = this.shadowRoot.querySelector(\"slot\");\n slot.addEventListener(\"slotchange\", this.handleSlotChange);\n\n this.addEventListener(\"keydown\", this.handleKeyDown);\n\n this.tabButtonContainer.addEventListener(\"wheel\", (e) => {\n if (this.tabButtonContainer.scrollWidth > this.tabButtonContainer.offsetWidth) {\n const oldTab = document.elementsFromPoint(e.x, e.y)[0];\n\n this.tabButtonContainer.scrollLeft += e.deltaY;\n\n const newTab = document.elementsFromPoint(e.x, e.y)[0];\n\n if (oldTab != newTab) {\n if (oldTab instanceof Tab) {\n oldTab.hideAnchors();\n }\n if (newTab instanceof Tab) {\n newTab.showAnchors();\n }\n }\n\n e.preventDefault();\n }\n });\n }\n\n static get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n\n // prettier-ignore\n public render() {\n return html`\n <div class=\"root\">\n ${!this.vertical && this.showLeftScrollButton ? html`\n <div class=\"scroll-button left\" @pointerdown=\"${() => {\n this.tabButtonContainer.scrollLeft -= SCROLL_STEP;\n }}\">\n <div class=\"ripple\"></div>\n <svg><g><path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"></path></g></svg>\n </div>` : \"\"}\n <div class=\"tab-button-container\" @scroll=\"${this.updateScrollButtonVisibility}\">\n <slot></slot>\n ${this.noBar ? \"\" : html` <div class=\"slider\"></div>`}\n </div>\n ${!this.vertical && this.showRightScrollButton ? html`\n <div class=\"scroll-button right\" @pointerdown=\"${() => {\n this.tabButtonContainer.scrollLeft += SCROLL_STEP;\n }}\">\n <div class=\"ripple\"></div>\n <svg><g><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path></g></svg>\n </div>` : \"\"}\n </div>\n `;\n }\n\n public set selectedIndex(newValue: number) {\n if (this._selectedIndex !== newValue) {\n this.focusedIndex = newValue;\n this._selectedIndex = newValue;\n this.updateSelectionState();\n }\n }\n\n public get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n private updateSelectionState(): void {\n if (this.tabElements) {\n this.tabElements.forEach((node: HTMLElement, ind: number) => {\n if (ind === this._selectedIndex) {\n (node as Tab).selected = true;\n if (this.slider) {\n window.requestAnimationFrame(() => {\n let offsetLeft = node.offsetLeft;\n let offsetTop = node.offsetTop;\n\n if (node.offsetParent != this._tabButtonContainer) {\n offsetLeft -= this._tabButtonContainer.offsetLeft;\n offsetTop -= this._tabButtonContainer.offsetTop;\n }\n\n const slider = this.slider;\n if (this.vertical) {\n slider.style.height = node.offsetHeight + \"px\";\n slider.style.transform = `translateY(${offsetTop}px)`;\n } else {\n slider.style.width = node.offsetWidth + \"px\";\n slider.style.transform = `translateX(${offsetLeft}px)`;\n }\n });\n }\n } else {\n (node as Tab).selected = false;\n }\n });\n }\n }\n\n public set focusedIndex(newValue: number) {\n if (this._focusedIndex !== newValue) {\n this._focusedIndex = newValue;\n this.updateFocusedState();\n }\n }\n\n public get focusedIndex(): number {\n return this._focusedIndex;\n }\n\n private updateFocusedState() {\n if (this.tabElements && this.focusedIndex >= 0 && this.focusedIndex < this.tabElements.length) {\n this.scrollToFocusedIfNeeded();\n this.tabElements[this.focusedIndex].focus();\n }\n }\n\n private get slider(): HTMLElement {\n return this.shadowRoot.querySelector(\".slider\");\n }\n\n private get tabButtonContainer(): HTMLElement {\n if (!this._tabButtonContainer) {\n this._tabButtonContainer = this.shadowRoot.querySelector(\".tab-button-container\");\n }\n return this._tabButtonContainer;\n }\n\n private scrollToFocusedIfNeeded(): void {\n if (this.tabElements && this.focusedIndex >= 0 && this.focusedIndex < this.tabElements.length) {\n const selectedNode = this.tabElements[this.focusedIndex] as HTMLElement;\n let nodeLeft: number = selectedNode.offsetLeft;\n if (selectedNode.offsetParent != this._tabButtonContainer) {\n nodeLeft -= this._tabButtonContainer.offsetLeft;\n }\n const nodeWidth: number = selectedNode.offsetWidth;\n const nodeRight: number = nodeLeft + nodeWidth;\n if (\n nodeLeft > this.tabButtonContainer.scrollLeft &&\n nodeRight < this.tabButtonContainer.scrollLeft + this.tabButtonContainer.offsetWidth\n ) {\n return;\n }\n if (this.tabButtonContainer.scrollLeft < nodeLeft) {\n this.tabButtonContainer.scrollLeft = nodeRight - this.tabButtonContainer.offsetWidth;\n } else if (this.tabButtonContainer.scrollLeft + this.tabButtonContainer.offsetWidth > nodeRight) {\n this.tabButtonContainer.scrollLeft = nodeLeft;\n }\n }\n }\n\n private handleSlotChange = () => {\n this.tabElements = this.shadowRoot\n .querySelector(\"slot\")\n .assignedNodes()\n .filter((node) => node instanceof Tab) as Tab[];\n let index = 0;\n this.tabElements.forEach((tab) => {\n tab.vertical = this.vertical;\n tab.showCounter = this.showCounter;\n tab.index = index++;\n tab.addEventListener(\"focus\", this.handleTabFocus);\n tab.addEventListener(\"selection\", this.handleTabSelection);\n });\n this.updateScrollButtonVisibility();\n if (this.selectedIndex == null) {\n this._focusedIndex = 0;\n this._selectedIndex = 0;\n }\n this.updateSelectionState();\n };\n\n private handleTabFocus = (event: FocusEvent) => {\n const index = (event.target as Tab).index;\n if (this.focusedIndex !== index) {\n this._focusedIndex = index;\n this.scrollToFocusedIfNeeded();\n }\n };\n\n private handleTabSelection = (event: CustomEvent) => {\n this.selectedIndex = (event.target as Tab).index;\n this.dispatchSelectionEvent(event.detail.anchor);\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case \"Up\":\n case \"ArrowUp\":\n case \"Left\":\n case \"ArrowLeft\":\n event.preventDefault();\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\n break;\n case \"Down\":\n case \"ArrowDown\":\n case \"Right\":\n case \"ArrowRight\":\n event.preventDefault();\n this.focusedIndex = Math.min(this.focusedIndex + 1, this.tabElements.length - 1);\n break;\n }\n };\n\n private updateScrollButtonVisibility(): void {\n this.showLeftScrollButton = this.tabButtonContainer.scrollLeft !== 0;\n this.showRightScrollButton =\n this.tabButtonContainer.scrollLeft <\n this.tabButtonContainer.scrollWidth - this.tabButtonContainer.offsetWidth;\n }\n\n private dispatchSelectionEvent(selectedAnchor?: string): void {\n this.dispatchEvent(\n new CustomEvent<ISelectionEvent>(\"selection\", {\n detail: {\n selectedTab: {\n index: this.selectedIndex,\n tabElement: this.tabElements[this.selectedIndex],\n },\n anchor: selectedAnchor,\n },\n }),\n );\n }\n\n private debounced = {};\n private debounce(id: string, actor: () => void) {\n if (this.debounced[id]) {\n return;\n }\n this.debounced[id] = true;\n requestAnimationFrame(() => {\n delete this.debounced[id];\n actor();\n });\n }\n}\n\nif (!customElements.get(TabBar.ID)) {\n customElements.define(TabBar.ID, TabBar);\n}\n"],"names":["isIE11","_Tab","LitElement","event","newValue","rippleElement","changedProperties","supportsCSS","ownerDocument","rect","css","unsafeCSS","style","html","overlayMaxHeight","selectedAnchor","element","anchor","index","createPopper","state","VirtualList","ListDataProvider","SelectionType","e","Tab","__decorateClass","property","SCROLL_STEP","_TabBar","node","tab","oldTab","newTab","ind","offsetLeft","offsetTop","slider","selectedNode","nodeLeft","nodeWidth","nodeRight","id","actor","TabBar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tab-bar.mjs","sources":["../tab.ts","../tab-bar.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS, PropertyValues, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { createPopper, Instance as Popper } from \"@popperjs/core\";\nimport \"@cas-smartdesign/virtual-list\";\nimport VirtualList, { ListDataProvider, SelectionType } from \"@cas-smartdesign/virtual-list\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [Tab.ID]: Tab;\n }\n}\nimport style from \"./tab-style.scss?inline\";\n\nconst isIE11 = navigator.userAgent.indexOf(\"Trident\") !== -1;\n\nexport interface ISelectionEvent {\n anchor: string;\n}\n\nexport interface CustomEventMap extends HTMLElementEventMap {\n selection: CustomEvent<ISelectionEvent>;\n}\n\nexport default interface Tab {\n addEventListener<K extends keyof CustomEventMap>(\n event: K,\n listener: ((this: this, ev: CustomEventMap[K]) => unknown) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n addEventListener(\n type: string,\n callback: EventListenerOrEventListenerObject | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener<K extends keyof CustomEventMap>(\n type: K,\n listener: (this: this, ev: CustomEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n dispatchEvent<EventType extends CustomEventMap[keyof CustomEventMap]>(event: EventType): boolean;\n}\n\nexport default class Tab extends LitElement {\n public static readonly ID = \"sd-tab\";\n\n @property({ type: String })\n public text: string;\n @property({ type: Array })\n public anchors: string[];\n @property()\n public index: number;\n @property()\n public showCounter: boolean;\n\n @property({ type: Boolean, reflect: true, attribute: \"anchors-shown\" })\n private anchorsShown: boolean;\n\n public noInk: boolean;\n public vertical: boolean;\n\n public minimumOverlayWidth = 150;\n\n private showRipple: boolean;\n private popper: Popper;\n private list: VirtualList;\n private dataProvider: ListDataProvider;\n private _cssMathMaxSupported: boolean;\n\n get selected(): boolean {\n return this.hasAttribute(\"selected\");\n }\n\n set selected(newValue: boolean) {\n if (newValue) {\n this.setAttribute(\"selected\", \"\");\n this.setAttribute(\"aria-selected\", \"true\");\n } else {\n this.removeAttribute(\"selected\");\n this.setAttribute(\"aria-selected\", \"false\");\n if (this.shadowRoot && this.showRipple) {\n const rippleElement = this.shadowRoot.querySelector(\".ripple\") as HTMLElement;\n rippleElement.style.display = \"none\";\n this.showRipple = false;\n }\n }\n }\n\n public firstUpdated(changedProperties: PropertyValues): void {\n super.firstUpdated(changedProperties);\n const supportsCSS = window.CSS && window.CSS.supports;\n this._cssMathMaxSupported = supportsCSS && CSS.supports(\"max-width\", \"max(50vw)\");\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const ownerDocument = this.ownerDocument as any;\n if (ownerDocument.adoptedStyleSheets) {\n (this.shadowRoot as any).adoptedStyleSheets = [\n ...(this.shadowRoot as any).adoptedStyleSheets,\n ...ownerDocument.adoptedStyleSheets,\n ];\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n this.addEventListener(\"pointerdown\", (event: PointerEvent) => {\n if (!this.noInk && !this.showRipple) {\n this.showRipple = true;\n const rect: DOMRect = this.getBoundingClientRect();\n const rippleElement = this.shadowRoot.querySelector(\".ripple\") as HTMLElement;\n rippleElement.style.left = `${event.clientX - rect.left}px`;\n rippleElement.style.top = `${event.clientY - rect.top}px`;\n rippleElement.style.display = \"\";\n rippleElement.addEventListener(\n \"animationend\",\n () => {\n rippleElement.style.display = \"none\";\n this.showRipple = false;\n },\n { once: true },\n );\n }\n });\n this.addEventListener(\"click\", (event: MouseEvent) => {\n if (event.composedPath().indexOf(this.list) === -1) {\n this.dispatchSelectionEvent();\n event.preventDefault();\n event.stopPropagation();\n }\n });\n this.addEventListener(\"keydown\", this.handleKeyDown);\n\n this.setAttribute(\"tabindex\", \"-1\");\n this.role = \"tab\";\n }\n\n public disconnectedCallback(): void {\n super.disconnectedCallback();\n this.hideAnchors();\n }\n\n static get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n\n public render() {\n return html`\n <div class=\"root\" @pointerover=${this.showAnchors} @pointerdown=${this.showAnchors}>\n ${this.showCounter ? html` <span class=\"counter\">${this.index + 1}</span> ` : \"\"}\n <div class=\"text\">${this.text}</div>\n <div class=\"ripple\" style=\"display: none\"></div>\n ${this.hasAnchors\n ? html`\n <svg class=\"down-arrow\" tabindex=\"-1\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n <path d=\"M13 4v2l-5 5-5-5v-2l5 5z\"></path>\n </svg>\n `\n : \"\"}\n </div>\n `;\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (this.hasAnchors) {\n const anchorTriggerKeys = this.vertical\n ? [\"Left\", \"ArrowLeft\", \"Right\", \"ArrowRight\", \"Enter\"]\n : [\"Down\", \"ArrowDown\", \"Up\", \"ArrowUp\", \"Enter\"];\n if (anchorTriggerKeys.indexOf(event.key) === -1) {\n this.hideAnchors();\n this.focus();\n } else {\n if (!this.anchorsShown) {\n this.showAnchors();\n window.requestAnimationFrame(() => {\n // IE would scroll down to bottom because the anchor list has not yet positioned there.\n this.list.focusIndex = 0;\n this.list.focus();\n\n this.updateDropdownSizes();\n });\n }\n event.preventDefault();\n event.stopPropagation();\n }\n } else if (event.key === \"Enter\") {\n this.dispatchSelectionEvent();\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n private updateDropdownSizes(): void {\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n const overlayMaxHeight = (viewportHeight - this.offsetHeight) * 0.5;\n Object.assign(this.list.style, {\n maxHeight: `${overlayMaxHeight}px`,\n minWidth: `${Math.max(this.offsetWidth, this.minimumOverlayWidth)}px`,\n maxWidth: this._cssMathMaxSupported\n ? `max(50vw, ${this.offsetWidth}px)`\n : Math.max((window.innerWidth || document.documentElement.clientWidth) / 2, this.offsetWidth) + \"px\",\n });\n }\n\n private handleListSelection = (event: CustomEvent) => {\n this.hideAnchors();\n event.stopPropagation();\n this.dispatchSelectionEvent(this.anchors[event.detail.index]);\n this.focus();\n };\n\n private dispatchSelectionEvent(selectedAnchor?: string): void {\n this.dispatchEvent(new CustomEvent<ISelectionEvent>(\"selection\", { detail: { anchor: selectedAnchor } }));\n }\n\n private handlePointerLeave = (event: PointerEvent) => {\n if (isIE11 || (this.list && !this.list.contains(event.target as HTMLElement))) {\n window.addEventListener(\"pointermove\", this.handlePointerMove);\n }\n };\n\n private handlePointerMove = (event: PointerEvent) => {\n if (!this.isPointerAbove(event, this) && !this.isPointerAbove(event, this.list)) {\n this.hideAnchors();\n window.removeEventListener(\"pointermove\", this.handlePointerMove);\n }\n };\n\n private isPointerAbove(event: PointerEvent, element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n return (\n rect.left <= event.clientX &&\n rect.right >= event.clientX &&\n rect.top <= event.clientY &&\n rect.bottom >= event.clientY\n );\n }\n\n public showAnchors() {\n if (!this.anchorsShown && this.hasAnchors) {\n this.root.addEventListener(\"pointerleave\", this.handlePointerLeave);\n if (!this.list) {\n this.createList();\n }\n this.dataProvider.items = this.anchors.map((anchor, index) => {\n return {\n caption: anchor,\n index,\n };\n });\n\n this.updateDropdownSizes();\n this.ownerDocument.body.appendChild(this.list);\n if (!this.popper) {\n this.popper = createPopper(this, this.list, {\n placement: this.vertical ? \"right-start\" : \"bottom-start\",\n modifiers: [\n {\n name: \"computeStyles\",\n options: {\n gpuAcceleration: !isIE11,\n },\n },\n {\n name: \"hide\",\n enabled: false,\n },\n {\n name: \"preventOverflow\",\n options: {\n padding: 0,\n },\n },\n {\n name: \"adjustWidthIfNeeded\",\n enabled: true,\n phase: \"read\",\n fn({ state }) {\n const list = state.elements.popper as VirtualList;\n list.increaseWidthOnNextRenderIfNeeded();\n },\n },\n ],\n });\n }\n\n window.requestAnimationFrame(() => {\n if (this.popper) {\n this.popper.update();\n }\n });\n\n this.anchorsShown = true;\n }\n }\n\n private createList(): void {\n this.list = document.createElement(VirtualList.ID) as VirtualList;\n this.dataProvider = new ListDataProvider();\n this.dataProvider.finalSizeIsKnown = true;\n this.dataProvider.connectList(this.list);\n this.list.classList.add(\"anchor-list\");\n this.list.tabIndex = 0;\n this.list.selectionType = SelectionType.TriggerOnly;\n this.list.addEventListener(\"selection\", this.handleListSelection);\n this.list.addEventListener(\"keydown\", (e) => {\n if (e.key == \"Escape\") {\n this.hideAnchors();\n this.focus();\n }\n });\n this.list.addEventListener(\"focusout\", () => {\n this.hideAnchors();\n });\n this.list.setAttribute(\"slot\", \"anchors\");\n this.list.itemHeight = 50;\n Object.assign(this.list.style, {\n zIndex: \"21000\",\n boxShadow: `rgba(0, 0, 0, 0.14) 0px 2px 2px 0px,\n rgba(0, 0, 0, 0.12) 0px 1px 5px 0px,\n rgba(0, 0, 0, 0.2) 0px 3px 1px -2px`,\n background: \"white\",\n overflowY: \"auto\",\n });\n }\n\n hideAnchors(): void {\n if (this.anchorsShown) {\n this.anchorsShown = false;\n this.root.removeEventListener(\"pointerleave\", this.handlePointerLeave);\n if (this.list) {\n this.list.focusIndex = -1;\n this.list.parentElement.removeChild(this.list);\n }\n }\n if (this.popper) {\n this.popper.destroy();\n this.popper = null;\n }\n }\n\n private get hasAnchors(): boolean {\n return !!(this.anchors && this.anchors.length);\n }\n\n private get root(): HTMLElement {\n if (this.shadowRoot) {\n return this.shadowRoot.querySelector(\".root\");\n }\n return null;\n }\n}\n\nVirtualList.ensureDefined();\nif (!customElements.get(Tab.ID)) {\n customElements.define(Tab.ID, Tab);\n}\n","import { LitElement, html, PropertyValues, unsafeCSS, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport \"./tab\";\nimport Tab from \"./tab\";\nexport { default as Tab } from \"./tab\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TabBar.ID]: TabBar;\n }\n}\nimport style from \"./tab-bar-style.scss?inline\";\n\nconst SCROLL_STEP = 40;\n\nexport interface ISelectionEvent {\n selectedTab: {\n index: number;\n tabElement: Tab;\n };\n anchor: string;\n}\n\nexport interface CustomEventMap extends HTMLElementEventMap {\n selection: CustomEvent<ISelectionEvent>;\n}\n\nexport default interface TabBar {\n addEventListener<K extends keyof CustomEventMap>(\n event: K,\n listener: ((this: this, ev: CustomEventMap[K]) => unknown) | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n addEventListener(\n type: string,\n callback: EventListenerOrEventListenerObject | null,\n options?: AddEventListenerOptions | boolean,\n ): void;\n removeEventListener<K extends keyof CustomEventMap>(\n type: K,\n listener: (this: this, ev: CustomEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n dispatchEvent<EventType extends CustomEventMap[keyof CustomEventMap]>(event: EventType): boolean;\n}\n\nexport default class TabBar extends LitElement {\n public static readonly ID = \"sd-tab-bar\";\n\n @property({ type: Boolean, reflect: true, attribute: \"no-bar\" })\n public noBar: boolean;\n @property({ type: Boolean, reflect: true, attribute: \"no-slide\" })\n public noSlide: boolean;\n @property({ type: Boolean, reflect: true })\n public vertical: boolean;\n @property({ type: Boolean, reflect: true, attribute: \"show-counter\" })\n public showCounter: boolean;\n\n public tabElements: Tab[];\n\n @property()\n private showLeftScrollButton: boolean;\n @property()\n private showRightScrollButton: boolean;\n\n private _focusedIndex: number;\n private _selectedIndex: number;\n private resizeObserver: ResizeObserver;\n private lastKnownWidth: number;\n private _tabButtonContainer: HTMLElement;\n\n static shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n public connectedCallback() {\n super.connectedCallback();\n this.resizeObserver = new ResizeObserver(() => {\n this.debounce(\"update-scroll-button-visibility\", () => {\n if (this.lastKnownWidth !== this.offsetWidth) {\n this.lastKnownWidth = this.offsetWidth;\n this.updateScrollButtonVisibility();\n }\n });\n });\n this.resizeObserver.observe(this);\n }\n\n public disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver.disconnect();\n }\n\n public firstUpdated(changedProperties: PropertyValues): void {\n super.firstUpdated(changedProperties);\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const ownerDocument = this.ownerDocument as any;\n if (ownerDocument.adoptedStyleSheets) {\n (this.shadowRoot as any).adoptedStyleSheets = [\n ...(this.shadowRoot as any).adoptedStyleSheets,\n ...ownerDocument.adoptedStyleSheets,\n ];\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n const slot = this.shadowRoot.querySelector(\"slot\");\n slot.addEventListener(\"slotchange\", this.handleSlotChange);\n\n this.addEventListener(\"keydown\", this.handleKeyDown);\n\n this.addEventListener(\"focusin\", (e) => {\n if (!this.contains(e.relatedTarget as Node)) {\n this.focusedIndex = this.selectedIndex;\n this.updateFocusedState();\n (this.shadowRoot.querySelector(\".root\") as HTMLElement).tabIndex = -1;\n }\n });\n this.addEventListener(\"focusout\", (e) => {\n if (!this.contains(e.relatedTarget as Node)) {\n (this.shadowRoot.querySelector(\".root\") as HTMLElement).tabIndex = 0;\n }\n });\n\n this.tabButtonContainer.addEventListener(\"wheel\", (e) => {\n if (this.tabButtonContainer.scrollWidth > this.tabButtonContainer.offsetWidth) {\n const oldTab = document.elementsFromPoint(e.x, e.y)[0];\n\n this.tabButtonContainer.scrollLeft += e.deltaY;\n\n const newTab = document.elementsFromPoint(e.x, e.y)[0];\n\n if (oldTab != newTab) {\n if (oldTab instanceof Tab) {\n oldTab.hideAnchors();\n }\n if (newTab instanceof Tab) {\n newTab.showAnchors();\n }\n }\n\n e.preventDefault();\n }\n });\n }\n\n static get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n\n // prettier-ignore\n public render() {\n return html`\n <div class=\"root\" tabindex=\"0\" role=\"tablist\" aria-orientation=\"${this.vertical ? \"vertical\" : \"horizontal\"}\">\n ${!this.vertical && this.showLeftScrollButton ? html`\n <div class=\"scroll-button left\" @pointerdown=\"${() => {\n this.tabButtonContainer.scrollLeft -= SCROLL_STEP;\n }}\">\n <div class=\"ripple\"></div>\n <svg><g><path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"></path></g></svg>\n </div>` : \"\"}\n <div class=\"tab-button-container\" @scroll=\"${this.updateScrollButtonVisibility}\">\n <slot></slot>\n ${this.noBar ? \"\" : html` <div class=\"slider\"></div>`}\n </div>\n ${!this.vertical && this.showRightScrollButton ? html`\n <div class=\"scroll-button right\" @pointerdown=\"${() => {\n this.tabButtonContainer.scrollLeft += SCROLL_STEP;\n }}\">\n <div class=\"ripple\"></div>\n <svg><g><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path></g></svg>\n </div>` : \"\"}\n </div>\n `;\n }\n\n public set selectedIndex(newValue: number) {\n if (this._selectedIndex !== newValue) {\n this.focusedIndex = newValue;\n this._selectedIndex = newValue;\n this.updateSelectionState();\n }\n }\n\n public get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n private updateSelectionState(): void {\n if (this.tabElements) {\n this.tabElements.forEach((node: HTMLElement, ind: number) => {\n if (ind === this._selectedIndex) {\n (node as Tab).selected = true;\n if (this.slider) {\n window.requestAnimationFrame(() => {\n let offsetLeft = node.offsetLeft;\n let offsetTop = node.offsetTop;\n\n if (node.offsetParent != this._tabButtonContainer) {\n offsetLeft -= this._tabButtonContainer.offsetLeft;\n offsetTop -= this._tabButtonContainer.offsetTop;\n }\n\n const slider = this.slider;\n if (this.vertical) {\n slider.style.height = node.offsetHeight + \"px\";\n slider.style.transform = `translateY(${offsetTop}px)`;\n } else {\n slider.style.width = node.offsetWidth + \"px\";\n slider.style.transform = `translateX(${offsetLeft}px)`;\n }\n });\n }\n } else {\n (node as Tab).selected = false;\n }\n });\n }\n }\n\n public set focusedIndex(newValue: number) {\n if (this._focusedIndex !== newValue) {\n this._focusedIndex = newValue;\n this.updateFocusedState();\n }\n }\n\n public get focusedIndex(): number {\n return this._focusedIndex;\n }\n\n private updateFocusedState() {\n if (this.tabElements && this.focusedIndex >= 0 && this.focusedIndex < this.tabElements.length) {\n this.scrollToFocusedIfNeeded();\n this.tabElements[this.focusedIndex].focus();\n }\n }\n\n private get slider(): HTMLElement {\n return this.shadowRoot.querySelector(\".slider\");\n }\n\n private get tabButtonContainer(): HTMLElement {\n if (!this._tabButtonContainer) {\n this._tabButtonContainer = this.shadowRoot.querySelector(\".tab-button-container\");\n }\n return this._tabButtonContainer;\n }\n\n private scrollToFocusedIfNeeded(): void {\n if (this.tabElements && this.focusedIndex >= 0 && this.focusedIndex < this.tabElements.length) {\n const selectedNode = this.tabElements[this.focusedIndex] as HTMLElement;\n let nodeLeft: number = selectedNode.offsetLeft;\n if (selectedNode.offsetParent != this._tabButtonContainer) {\n nodeLeft -= this._tabButtonContainer.offsetLeft;\n }\n const nodeWidth: number = selectedNode.offsetWidth;\n const nodeRight: number = nodeLeft + nodeWidth;\n if (\n nodeLeft > this.tabButtonContainer.scrollLeft &&\n nodeRight < this.tabButtonContainer.scrollLeft + this.tabButtonContainer.offsetWidth\n ) {\n return;\n }\n if (this.tabButtonContainer.scrollLeft < nodeLeft) {\n this.tabButtonContainer.scrollLeft = nodeRight - this.tabButtonContainer.offsetWidth;\n } else if (this.tabButtonContainer.scrollLeft + this.tabButtonContainer.offsetWidth > nodeRight) {\n this.tabButtonContainer.scrollLeft = nodeLeft;\n }\n }\n }\n\n private handleSlotChange = () => {\n this.tabElements = this.shadowRoot\n .querySelector(\"slot\")\n .assignedNodes()\n .filter((node) => node instanceof Tab) as Tab[];\n let index = 0;\n this.tabElements.forEach((tab) => {\n tab.vertical = this.vertical;\n tab.showCounter = this.showCounter;\n tab.index = index++;\n tab.addEventListener(\"focus\", this.handleTabFocus);\n tab.addEventListener(\"selection\", this.handleTabSelection);\n });\n this.updateScrollButtonVisibility();\n if (this.selectedIndex == null) {\n this._focusedIndex = 0;\n this._selectedIndex = 0;\n }\n this.updateSelectionState();\n };\n\n private handleTabFocus = (event: FocusEvent) => {\n const index = (event.target as Tab).index;\n if (this.focusedIndex !== index) {\n this._focusedIndex = index;\n this.scrollToFocusedIfNeeded();\n }\n };\n\n private handleTabSelection = (event: CustomEvent) => {\n this.selectedIndex = (event.target as Tab).index;\n this.dispatchSelectionEvent(event.detail.anchor);\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case \"Up\":\n case \"ArrowUp\":\n case \"Left\":\n case \"ArrowLeft\":\n event.preventDefault();\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\n break;\n case \"Down\":\n case \"ArrowDown\":\n case \"Right\":\n case \"ArrowRight\":\n event.preventDefault();\n this.focusedIndex = Math.min(this.focusedIndex + 1, this.tabElements.length - 1);\n break;\n }\n };\n\n private updateScrollButtonVisibility(): void {\n this.showLeftScrollButton = this.tabButtonContainer.scrollLeft !== 0;\n this.showRightScrollButton =\n this.tabButtonContainer.scrollLeft <\n this.tabButtonContainer.scrollWidth - this.tabButtonContainer.offsetWidth;\n }\n\n private dispatchSelectionEvent(selectedAnchor?: string): void {\n this.dispatchEvent(\n new CustomEvent<ISelectionEvent>(\"selection\", {\n detail: {\n selectedTab: {\n index: this.selectedIndex,\n tabElement: this.tabElements[this.selectedIndex],\n },\n anchor: selectedAnchor,\n },\n }),\n );\n }\n\n private debounced = {};\n private debounce(id: string, actor: () => void) {\n if (this.debounced[id]) {\n return;\n }\n this.debounced[id] = true;\n requestAnimationFrame(() => {\n delete this.debounced[id];\n actor();\n });\n }\n}\n\nif (!customElements.get(TabBar.ID)) {\n customElements.define(TabBar.ID, TabBar);\n}\n"],"names":["isIE11","_Tab","LitElement","event","newValue","rippleElement","changedProperties","supportsCSS","ownerDocument","rect","css","unsafeCSS","style","html","overlayMaxHeight","selectedAnchor","element","anchor","index","createPopper","state","VirtualList","ListDataProvider","SelectionType","e","Tab","__decorateClass","property","SCROLL_STEP","_TabBar","node","tab","oldTab","newTab","ind","offsetLeft","offsetTop","slider","selectedNode","nodeLeft","nodeWidth","nodeRight","id","actor","TabBar"],"mappings":"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"}
|
|
@@ -7,57 +7,62 @@
|
|
|
7
7
|
"@eslint/js@9.34.0": {
|
|
8
8
|
"licenses": "MIT",
|
|
9
9
|
"repository": "https://github.com/eslint/eslint",
|
|
10
|
-
"licenseUrl": "https://
|
|
10
|
+
"licenseUrl": "https://unpkg.com/@eslint/js@9.34.0/LICENSE"
|
|
11
11
|
},
|
|
12
12
|
"@popperjs/core@2.11.8": {
|
|
13
13
|
"licenses": "MIT",
|
|
14
14
|
"repository": "https://github.com/popperjs/popper-core",
|
|
15
|
-
"licenseUrl": "https://
|
|
15
|
+
"licenseUrl": "https://unpkg.com/@popperjs/core@2.11.8/LICENSE.md"
|
|
16
16
|
},
|
|
17
17
|
"@rollup/plugin-node-resolve@16.0.1": {
|
|
18
18
|
"licenses": "MIT",
|
|
19
19
|
"repository": "https://github.com/rollup/plugins",
|
|
20
|
-
"licenseUrl": "https://
|
|
20
|
+
"licenseUrl": "https://unpkg.com/@rollup/plugin-node-resolve@16.0.1/LICENSE"
|
|
21
|
+
},
|
|
22
|
+
"@types/d3-color@3.1.3": {
|
|
23
|
+
"licenses": "MIT",
|
|
24
|
+
"repository": "https://github.com/DefinitelyTyped/DefinitelyTyped",
|
|
25
|
+
"licenseUrl": "https://unpkg.com/@types/d3-color@3.1.3/LICENSE"
|
|
21
26
|
},
|
|
22
27
|
"@types/node@24.3.0": {
|
|
23
28
|
"licenses": "MIT",
|
|
24
29
|
"repository": "https://github.com/DefinitelyTyped/DefinitelyTyped",
|
|
25
|
-
"licenseUrl": "https://
|
|
30
|
+
"licenseUrl": "https://unpkg.com/@types/node@24.3.0/LICENSE"
|
|
26
31
|
},
|
|
27
32
|
"@types/postcss-prefix-selector@1.16.3": {
|
|
28
33
|
"licenses": "MIT",
|
|
29
34
|
"repository": "https://github.com/DefinitelyTyped/DefinitelyTyped",
|
|
30
|
-
"licenseUrl": "https://
|
|
35
|
+
"licenseUrl": "https://unpkg.com/@types/postcss-prefix-selector@1.16.3/LICENSE"
|
|
31
36
|
},
|
|
32
37
|
"@typescript-eslint/eslint-plugin@8.41.0": {
|
|
33
38
|
"licenses": "MIT",
|
|
34
39
|
"repository": "https://github.com/typescript-eslint/typescript-eslint",
|
|
35
|
-
"licenseUrl": "https://
|
|
40
|
+
"licenseUrl": "https://unpkg.com/@typescript-eslint/eslint-plugin@8.41.0/LICENSE"
|
|
36
41
|
},
|
|
37
42
|
"@typescript-eslint/parser@8.41.0": {
|
|
38
43
|
"licenses": "MIT",
|
|
39
44
|
"repository": "https://github.com/typescript-eslint/typescript-eslint",
|
|
40
|
-
"licenseUrl": "https://
|
|
45
|
+
"licenseUrl": "https://unpkg.com/@typescript-eslint/parser@8.41.0/LICENSE"
|
|
41
46
|
},
|
|
42
47
|
"@vitest/coverage-v8@3.2.4": {
|
|
43
48
|
"licenses": "MIT",
|
|
44
49
|
"repository": "https://github.com/vitest-dev/vitest",
|
|
45
|
-
"licenseUrl": "https://
|
|
50
|
+
"licenseUrl": "https://unpkg.com/@vitest/coverage-v8@3.2.4/LICENSE"
|
|
46
51
|
},
|
|
47
52
|
"@vitest/ui@3.2.4": {
|
|
48
53
|
"licenses": "MIT",
|
|
49
54
|
"repository": "https://github.com/vitest-dev/vitest",
|
|
50
|
-
"licenseUrl": "https://
|
|
55
|
+
"licenseUrl": "https://unpkg.com/@vitest/ui@3.2.4/LICENSE"
|
|
51
56
|
},
|
|
52
57
|
"axe-core@4.10.3": {
|
|
53
58
|
"licenses": "MPL-2.0",
|
|
54
59
|
"repository": "https://github.com/dequelabs/axe-core",
|
|
55
|
-
"licenseUrl": "https://
|
|
60
|
+
"licenseUrl": "https://unpkg.com/axe-core@4.10.3/LICENSE"
|
|
56
61
|
},
|
|
57
62
|
"cypress-axe@1.7.0": {
|
|
58
63
|
"licenses": "MIT",
|
|
59
64
|
"repository": "https://github.com/component-driven/cypress-axe",
|
|
60
|
-
"licenseUrl": "https://
|
|
65
|
+
"licenseUrl": "https://unpkg.com/cypress-axe@1.7.0/License.md"
|
|
61
66
|
},
|
|
62
67
|
"cypress@15.0.0": {
|
|
63
68
|
"licenses": "MIT",
|
|
@@ -67,146 +72,146 @@
|
|
|
67
72
|
"d3-color@3.1.0": {
|
|
68
73
|
"licenses": "ISC",
|
|
69
74
|
"repository": "https://github.com/d3/d3-color",
|
|
70
|
-
"licenseUrl": "https://
|
|
75
|
+
"licenseUrl": "https://unpkg.com/d3-color@3.1.0/LICENSE"
|
|
71
76
|
},
|
|
72
77
|
"esbuild@0.25.9": {
|
|
73
78
|
"licenses": "MIT",
|
|
74
79
|
"repository": "https://github.com/evanw/esbuild",
|
|
75
|
-
"licenseUrl": "https://
|
|
80
|
+
"licenseUrl": "https://unpkg.com/esbuild@0.25.9/LICENSE.md"
|
|
76
81
|
},
|
|
77
82
|
"eslint-config-google@0.14.0": {
|
|
78
83
|
"licenses": "Apache-2.0",
|
|
79
84
|
"repository": "https://github.com/google/eslint-config-google",
|
|
80
|
-
"licenseUrl": "https://
|
|
85
|
+
"licenseUrl": "https://unpkg.com/eslint-config-google@0.14.0/LICENSE"
|
|
81
86
|
},
|
|
82
87
|
"eslint-config-prettier@10.1.8": {
|
|
83
88
|
"licenses": "MIT",
|
|
84
89
|
"repository": "https://github.com/prettier/eslint-config-prettier",
|
|
85
|
-
"licenseUrl": "https://
|
|
90
|
+
"licenseUrl": "https://unpkg.com/eslint-config-prettier@10.1.8/LICENSE"
|
|
86
91
|
},
|
|
87
92
|
"eslint@9.34.0": {
|
|
88
93
|
"licenses": "MIT",
|
|
89
94
|
"repository": "https://github.com/eslint/eslint",
|
|
90
|
-
"licenseUrl": "https://
|
|
95
|
+
"licenseUrl": "https://unpkg.com/eslint@9.34.0/LICENSE"
|
|
91
96
|
},
|
|
92
97
|
"github-markdown-css@5.8.1": {
|
|
93
98
|
"licenses": "MIT",
|
|
94
99
|
"repository": "https://github.com/sindresorhus/github-markdown-css",
|
|
95
|
-
"licenseUrl": "https://
|
|
100
|
+
"licenseUrl": "https://unpkg.com/github-markdown-css@5.8.1/license"
|
|
96
101
|
},
|
|
97
102
|
"highlight.js@11.11.1": {
|
|
98
103
|
"licenses": "BSD-3-Clause",
|
|
99
104
|
"repository": "https://github.com/highlightjs/highlight.js",
|
|
100
|
-
"licenseUrl": "https://
|
|
105
|
+
"licenseUrl": "https://unpkg.com/highlight.js@11.11.1/LICENSE"
|
|
101
106
|
},
|
|
102
107
|
"junit-report-builder@5.1.1": {
|
|
103
108
|
"licenses": "MIT",
|
|
104
109
|
"repository": "https://github.com/davidparsson/junit-report-builder",
|
|
105
|
-
"licenseUrl": "https://
|
|
110
|
+
"licenseUrl": "https://unpkg.com/junit-report-builder@5.1.1/LICENSE"
|
|
106
111
|
},
|
|
107
112
|
"lint-staged@16.1.5": {
|
|
108
113
|
"licenses": "MIT",
|
|
109
114
|
"repository": "https://github.com/lint-staged/lint-staged",
|
|
110
|
-
"licenseUrl": "https://
|
|
115
|
+
"licenseUrl": "https://unpkg.com/lint-staged@16.1.5/LICENSE"
|
|
111
116
|
},
|
|
112
117
|
"lit-html@3.3.1": {
|
|
113
118
|
"licenses": "BSD-3-Clause",
|
|
114
119
|
"repository": "https://github.com/lit/lit",
|
|
115
|
-
"licenseUrl": "https://
|
|
120
|
+
"licenseUrl": "https://unpkg.com/lit-html@3.3.1/LICENSE"
|
|
116
121
|
},
|
|
117
122
|
"lit@3.3.1": {
|
|
118
123
|
"licenses": "BSD-3-Clause",
|
|
119
124
|
"repository": "https://github.com/lit/lit",
|
|
120
|
-
"licenseUrl": "https://
|
|
125
|
+
"licenseUrl": "https://unpkg.com/lit@3.3.1/LICENSE"
|
|
121
126
|
},
|
|
122
127
|
"marked@16.2.1": {
|
|
123
128
|
"licenses": "MIT",
|
|
124
129
|
"repository": "https://github.com/markedjs/marked",
|
|
125
|
-
"licenseUrl": "https://
|
|
130
|
+
"licenseUrl": "https://unpkg.com/marked@16.2.1/LICENSE.md"
|
|
126
131
|
},
|
|
127
132
|
"postcss-prefix-selector@2.1.1": {
|
|
128
133
|
"licenses": "MIT",
|
|
129
134
|
"repository": "https://github.com/RadValentin/postcss-prefix-selector",
|
|
130
|
-
"licenseUrl": "https://
|
|
135
|
+
"licenseUrl": "https://unpkg.com/postcss-prefix-selector@2.1.1/LICENSE"
|
|
131
136
|
},
|
|
132
137
|
"postcss@8.5.6": {
|
|
133
138
|
"licenses": "MIT",
|
|
134
139
|
"repository": "https://github.com/postcss/postcss",
|
|
135
|
-
"licenseUrl": "https://
|
|
140
|
+
"licenseUrl": "https://unpkg.com/postcss@8.5.6/LICENSE"
|
|
136
141
|
},
|
|
137
142
|
"prettier@3.6.2": {
|
|
138
143
|
"licenses": "MIT",
|
|
139
144
|
"repository": "https://github.com/prettier/prettier",
|
|
140
|
-
"licenseUrl": "https://
|
|
145
|
+
"licenseUrl": "https://unpkg.com/prettier@3.6.2/LICENSE"
|
|
141
146
|
},
|
|
142
147
|
"resolve-pkg@2.0.0": {
|
|
143
148
|
"licenses": "MIT",
|
|
144
149
|
"repository": "https://github.com/sindresorhus/resolve-pkg",
|
|
145
|
-
"licenseUrl": "https://
|
|
150
|
+
"licenseUrl": "https://unpkg.com/resolve-pkg@2.0.0/license"
|
|
146
151
|
},
|
|
147
152
|
"sass@1.91.0": {
|
|
148
153
|
"licenses": "MIT",
|
|
149
154
|
"repository": "https://github.com/sass/dart-sass",
|
|
150
|
-
"licenseUrl": "https://
|
|
155
|
+
"licenseUrl": "https://unpkg.com/sass@1.91.0/LICENSE"
|
|
151
156
|
},
|
|
152
157
|
"stylelint-config-recommended-scss@16.0.0": {
|
|
153
158
|
"licenses": "MIT",
|
|
154
159
|
"repository": "https://github.com/stylelint-scss/stylelint-config-recommended-scss",
|
|
155
|
-
"licenseUrl": "https://
|
|
160
|
+
"licenseUrl": "https://unpkg.com/stylelint-config-recommended-scss@16.0.0/LICENSE"
|
|
156
161
|
},
|
|
157
162
|
"stylelint-config-standard@39.0.0": {
|
|
158
163
|
"licenses": "MIT",
|
|
159
164
|
"repository": "https://github.com/stylelint/stylelint-config-standard",
|
|
160
|
-
"licenseUrl": "https://
|
|
165
|
+
"licenseUrl": "https://unpkg.com/stylelint-config-standard@39.0.0/LICENSE"
|
|
161
166
|
},
|
|
162
167
|
"stylelint-scss@6.12.1": {
|
|
163
168
|
"licenses": "MIT",
|
|
164
169
|
"repository": "https://github.com/stylelint-scss/stylelint-scss",
|
|
165
|
-
"licenseUrl": "https://
|
|
170
|
+
"licenseUrl": "https://unpkg.com/stylelint-scss@6.12.1/LICENSE"
|
|
166
171
|
},
|
|
167
172
|
"stylelint@16.23.1": {
|
|
168
173
|
"licenses": "MIT",
|
|
169
174
|
"repository": "https://github.com/stylelint/stylelint",
|
|
170
|
-
"licenseUrl": "https://
|
|
175
|
+
"licenseUrl": "https://unpkg.com/stylelint@16.23.1/LICENSE"
|
|
171
176
|
},
|
|
172
177
|
"tsup@8.5.0": {
|
|
173
178
|
"licenses": "MIT",
|
|
174
179
|
"repository": "https://github.com/egoist/tsup",
|
|
175
|
-
"licenseUrl": "https://
|
|
180
|
+
"licenseUrl": "https://unpkg.com/tsup@8.5.0/LICENSE"
|
|
176
181
|
},
|
|
177
182
|
"turbo@2.5.6": {
|
|
178
183
|
"licenses": "MIT",
|
|
179
184
|
"repository": "https://github.com/vercel/turborepo",
|
|
180
|
-
"licenseUrl": "https://
|
|
185
|
+
"licenseUrl": "https://unpkg.com/turbo@2.5.6/LICENSE"
|
|
181
186
|
},
|
|
182
187
|
"typescript-eslint@8.41.0": {
|
|
183
188
|
"licenses": "MIT",
|
|
184
189
|
"repository": "https://github.com/typescript-eslint/typescript-eslint",
|
|
185
|
-
"licenseUrl": "https://
|
|
190
|
+
"licenseUrl": "https://unpkg.com/typescript-eslint@8.41.0/LICENSE"
|
|
186
191
|
},
|
|
187
192
|
"typescript@5.9.2": {
|
|
188
193
|
"licenses": "Apache-2.0",
|
|
189
194
|
"repository": "https://github.com/microsoft/TypeScript",
|
|
190
|
-
"licenseUrl": "https://
|
|
195
|
+
"licenseUrl": "https://unpkg.com/typescript@5.9.2/LICENSE.txt"
|
|
191
196
|
},
|
|
192
197
|
"vite-tsconfig-paths@5.1.4": {
|
|
193
198
|
"licenses": "MIT",
|
|
194
199
|
"repository": "https://github.com/aleclarson/vite-tsconfig-paths",
|
|
195
|
-
"licenseUrl": "https://
|
|
200
|
+
"licenseUrl": "https://unpkg.com/vite-tsconfig-paths@5.1.4/LICENSE"
|
|
196
201
|
},
|
|
197
202
|
"vite@7.1.3": {
|
|
198
203
|
"licenses": "MIT",
|
|
199
204
|
"repository": "https://github.com/vitejs/vite",
|
|
200
|
-
"licenseUrl": "https://
|
|
205
|
+
"licenseUrl": "https://unpkg.com/vite@7.1.3/LICENSE.md"
|
|
201
206
|
},
|
|
202
207
|
"vitest@3.2.4": {
|
|
203
208
|
"licenses": "MIT",
|
|
204
209
|
"repository": "https://github.com/vitest-dev/vitest",
|
|
205
|
-
"licenseUrl": "https://
|
|
210
|
+
"licenseUrl": "https://unpkg.com/vitest@3.2.4/LICENSE.md"
|
|
206
211
|
},
|
|
207
212
|
"yargs@18.0.0": {
|
|
208
213
|
"licenses": "MIT",
|
|
209
214
|
"repository": "https://github.com/yargs/yargs",
|
|
210
|
-
"licenseUrl": "https://
|
|
215
|
+
"licenseUrl": "https://unpkg.com/yargs@18.0.0/LICENSE"
|
|
211
216
|
}
|
|
212
217
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cas-smartdesign/tab-bar",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.3",
|
|
4
4
|
"description": "A TabBar element with SmartDesign look & feel",
|
|
5
5
|
"main": "dist/tab-bar-with-externals.js",
|
|
6
6
|
"module": "dist/tab-bar.mjs",
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@popperjs/core": "^2.11.8",
|
|
11
11
|
"lit": "^3.3.1",
|
|
12
|
-
"@cas-smartdesign/virtual-list": "^
|
|
12
|
+
"@cas-smartdesign/virtual-list": "^7.0.1"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@cas-smartdesign/
|
|
16
|
-
"@cas-smartdesign/
|
|
15
|
+
"@cas-smartdesign/element-preview": "^0.3.1",
|
|
16
|
+
"@cas-smartdesign/license-generator": "^1.8.1"
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
19
|
"dist",
|