@scania/tegel 0.0.31 → 0.0.33
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/cjs/sdds-toast.cjs.entry.js +1 -1
- package/dist/cjs/sdds-toast.cjs.entry.js.map +1 -1
- package/dist/collection/components/toast/sdds-toast.js +2 -2
- package/dist/collection/components/toast/sdds-toast.js.map +1 -1
- package/dist/components/dropdown-option.js +103 -0
- package/dist/components/dropdown-option.js.map +1 -0
- package/dist/components/dropdown.js +306 -0
- package/dist/components/dropdown.js.map +1 -0
- package/dist/components/icon.js +61 -0
- package/dist/components/icon.js.map +1 -0
- package/dist/components/index.d.ts +27 -0
- package/dist/components/index.js +3 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/popper.js +1801 -0
- package/dist/components/popper.js.map +1 -0
- package/dist/components/sdds-accordion-item.d.ts +11 -0
- package/dist/components/sdds-accordion-item.js +63 -0
- package/dist/components/sdds-accordion-item.js.map +1 -0
- package/dist/components/sdds-accordion.d.ts +11 -0
- package/dist/components/sdds-accordion.js +41 -0
- package/dist/components/sdds-accordion.js.map +1 -0
- package/dist/components/sdds-badges.d.ts +11 -0
- package/dist/components/sdds-badges.js +78 -0
- package/dist/components/sdds-badges.js.map +1 -0
- package/dist/components/sdds-banner.d.ts +11 -0
- package/dist/components/sdds-banner.js +122 -0
- package/dist/components/sdds-banner.js.map +1 -0
- package/dist/components/sdds-block.d.ts +11 -0
- package/dist/components/sdds-block.js +51 -0
- package/dist/components/sdds-block.js.map +1 -0
- package/dist/components/sdds-body-cell.d.ts +11 -0
- package/dist/components/sdds-body-cell.js +8 -0
- package/dist/components/sdds-body-cell.js.map +1 -0
- package/dist/components/sdds-breadcrumb-item.d.ts +11 -0
- package/dist/components/sdds-breadcrumb-item.js +46 -0
- package/dist/components/sdds-breadcrumb-item.js.map +1 -0
- package/dist/components/sdds-breadcrumb.d.ts +11 -0
- package/dist/components/sdds-breadcrumb.js +40 -0
- package/dist/components/sdds-breadcrumb.js.map +1 -0
- package/dist/components/sdds-button.d.ts +11 -0
- package/dist/components/sdds-button.js +62 -0
- package/dist/components/sdds-button.js.map +1 -0
- package/dist/components/sdds-card.d.ts +11 -0
- package/dist/components/sdds-card.js +87 -0
- package/dist/components/sdds-card.js.map +1 -0
- package/dist/components/sdds-checkbox.d.ts +11 -0
- package/dist/components/sdds-checkbox.js +79 -0
- package/dist/components/sdds-checkbox.js.map +1 -0
- package/dist/components/sdds-datetime.d.ts +11 -0
- package/dist/components/sdds-datetime.js +132 -0
- package/dist/components/sdds-datetime.js.map +1 -0
- package/dist/components/sdds-dropdown-filter.d.ts +11 -0
- package/dist/components/sdds-dropdown-filter.js +141 -0
- package/dist/components/sdds-dropdown-filter.js.map +1 -0
- package/dist/components/sdds-dropdown-option.d.ts +11 -0
- package/dist/components/sdds-dropdown-option.js +8 -0
- package/dist/components/sdds-dropdown-option.js.map +1 -0
- package/dist/components/sdds-dropdown.d.ts +11 -0
- package/dist/components/sdds-dropdown.js +8 -0
- package/dist/components/sdds-dropdown.js.map +1 -0
- package/dist/components/sdds-header-cell.d.ts +11 -0
- package/dist/components/sdds-header-cell.js +173 -0
- package/dist/components/sdds-header-cell.js.map +1 -0
- package/dist/components/sdds-icon.d.ts +11 -0
- package/dist/components/sdds-icon.js +8 -0
- package/dist/components/sdds-icon.js.map +1 -0
- package/dist/components/sdds-inline-tab.d.ts +11 -0
- package/dist/components/sdds-inline-tab.js +43 -0
- package/dist/components/sdds-inline-tab.js.map +1 -0
- package/dist/components/sdds-inline-tabs-fullbleed.d.ts +11 -0
- package/dist/components/sdds-inline-tabs-fullbleed.js +120 -0
- package/dist/components/sdds-inline-tabs-fullbleed.js.map +1 -0
- package/dist/components/sdds-inline-tabs.d.ts +11 -0
- package/dist/components/sdds-inline-tabs.js +248 -0
- package/dist/components/sdds-inline-tabs.js.map +1 -0
- package/dist/components/sdds-link.d.ts +11 -0
- package/dist/components/sdds-link.js +8 -0
- package/dist/components/sdds-link.js.map +1 -0
- package/dist/components/sdds-link2.js +47 -0
- package/dist/components/sdds-link2.js.map +1 -0
- package/dist/components/sdds-message.d.ts +11 -0
- package/dist/components/sdds-message.js +70 -0
- package/dist/components/sdds-message.js.map +1 -0
- package/dist/components/sdds-modal.d.ts +11 -0
- package/dist/components/sdds-modal.js +80 -0
- package/dist/components/sdds-modal.js.map +1 -0
- package/dist/components/sdds-navigation-tabs.d.ts +11 -0
- package/dist/components/sdds-navigation-tabs.js +120 -0
- package/dist/components/sdds-navigation-tabs.js.map +1 -0
- package/dist/components/sdds-popover-canvas.d.ts +11 -0
- package/dist/components/sdds-popover-canvas.js +111 -0
- package/dist/components/sdds-popover-canvas.js.map +1 -0
- package/dist/components/sdds-popover-menu.d.ts +11 -0
- package/dist/components/sdds-popover-menu.js +112 -0
- package/dist/components/sdds-popover-menu.js.map +1 -0
- package/dist/components/sdds-radio-button.d.ts +11 -0
- package/dist/components/sdds-radio-button.js +55 -0
- package/dist/components/sdds-radio-button.js.map +1 -0
- package/dist/components/sdds-slider.d.ts +11 -0
- package/dist/components/sdds-slider.js +397 -0
- package/dist/components/sdds-slider.js.map +1 -0
- package/dist/components/sdds-spinner.d.ts +11 -0
- package/dist/components/sdds-spinner.js +40 -0
- package/dist/components/sdds-spinner.js.map +1 -0
- package/dist/components/sdds-table-body-row-expandable.d.ts +11 -0
- package/dist/components/sdds-table-body-row-expandable.js +108 -0
- package/dist/components/sdds-table-body-row-expandable.js.map +1 -0
- package/dist/components/sdds-table-body-row.d.ts +11 -0
- package/dist/components/sdds-table-body-row.js +8 -0
- package/dist/components/sdds-table-body-row.js.map +1 -0
- package/dist/components/sdds-table-body.d.ts +11 -0
- package/dist/components/sdds-table-body.js +340 -0
- package/dist/components/sdds-table-body.js.map +1 -0
- package/dist/components/sdds-table-footer.d.ts +11 -0
- package/dist/components/sdds-table-footer.js +198 -0
- package/dist/components/sdds-table-footer.js.map +1 -0
- package/dist/components/sdds-table-header.d.ts +11 -0
- package/dist/components/sdds-table-header.js +127 -0
- package/dist/components/sdds-table-header.js.map +1 -0
- package/dist/components/sdds-table-toolbar.d.ts +11 -0
- package/dist/components/sdds-table-toolbar.js +90 -0
- package/dist/components/sdds-table-toolbar.js.map +1 -0
- package/dist/components/sdds-table.d.ts +11 -0
- package/dist/components/sdds-table.js +94 -0
- package/dist/components/sdds-table.js.map +1 -0
- package/dist/components/sdds-textarea.d.ts +11 -0
- package/dist/components/sdds-textarea.js +112 -0
- package/dist/components/sdds-textarea.js.map +1 -0
- package/dist/components/sdds-textfield.d.ts +11 -0
- package/dist/components/sdds-textfield.js +130 -0
- package/dist/components/sdds-textfield.js.map +1 -0
- package/dist/components/sdds-toast.d.ts +11 -0
- package/dist/components/sdds-toast.js +120 -0
- package/dist/components/sdds-toast.js.map +1 -0
- package/dist/components/sdds-toggle.d.ts +11 -0
- package/dist/components/sdds-toggle.js +72 -0
- package/dist/components/sdds-toggle.js.map +1 -0
- package/dist/components/sdds-tooltip.d.ts +11 -0
- package/dist/components/sdds-tooltip.js +130 -0
- package/dist/components/sdds-tooltip.js.map +1 -0
- package/dist/components/table-body-cell.js +104 -0
- package/dist/components/table-body-cell.js.map +1 -0
- package/dist/components/table-body-row.js +123 -0
- package/dist/components/table-body-row.js.map +1 -0
- package/dist/esm/sdds-toast.entry.js +1 -1
- package/dist/esm/sdds-toast.entry.js.map +1 -1
- package/{loader → dist/loader}/cdn.js +1 -1
- package/{loader → dist/loader}/index.cjs.js +1 -1
- package/{loader → dist/loader}/index.d.ts +1 -1
- package/dist/loader/index.es2017.js +3 -0
- package/{loader → dist/loader}/index.js +2 -2
- package/{loader → dist/loader}/package.json +0 -0
- package/dist/tegel/{p-46013562.entry.js → p-f51fe381.entry.js} +2 -2
- package/dist/tegel/p-f51fe381.entry.js.map +1 -0
- package/dist/tegel/tegel.esm.js +1 -1
- package/dist/types/components/toast/sdds-toast.d.ts +1 -1
- package/dist/types/components.d.ts +2 -2
- package/package.json +3 -3
- package/dist/tegel/p-46013562.entry.js.map +0 -1
- package/loader/index.es2017.js +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sdds-inline-tab.js","mappings":";;AAAA,MAAM,YAAY,GAAG,sBAAsB;;MCO9B,eAAe;;;;;;oBAGE,KAAK;mBAEN,KAAK;;EAEhC,MAAM;IACJ,QACE,EAAC,IAAI,QACH,eAAa,CACR,EACP;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/tabs/inline-tabs-default/inline-tab/inline-tab.scss?tag=sdds-inline-tab&encapsulation=shadow","./src/components/tabs/inline-tabs-default/inline-tab/inline-tab.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'sdds-inline-tab',\n styleUrl: 'inline-tab.scss',\n shadow: true,\n})\nexport class InlineTabsChild {\n @Prop() label: string;\n\n @Prop() disabled: boolean = false;\n\n @Prop() default: boolean = false;\n\n render() {\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SddsInlineTabsFullbleed extends Components.SddsInlineTabsFullbleed, HTMLElement {}
|
|
4
|
+
export const SddsInlineTabsFullbleed: {
|
|
5
|
+
prototype: SddsInlineTabsFullbleed;
|
|
6
|
+
new (): SddsInlineTabsFullbleed;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
|
|
3
|
+
const inlineTabsFullbleedCss = ".sdds-inline-tabs-fullbleed{box-sizing:border-box;display:flex;position:relative;}.sdds-inline-tabs-fullbleed *{box-sizing:border-box}.sdds-inline-tabs-fullbleed::after{content:\" \";display:block;border-bottom:1px solid var(--sdds-inline-tabs-fullbleed-horizontal-divider-background);opacity:var(--sdds-inline-tabs-fullbleed-horizontal-divider-opacity);left:0;right:0;bottom:0;position:absolute}.sdds-inline-tabs-fullbleed-wrapper{display:flex;flex-wrap:nowrap;width:100%;overflow-x:scroll;scrollbar-width:none}.sdds-inline-tabs-fullbleed-wrapper::-webkit-scrollbar{display:none}.sdds-inline-tabs-fullbleed--forward,.sdds-inline-tabs-fullbleed--back{cursor:pointer;width:48px;height:100%;border:0;position:absolute;right:0;top:0;background-color:var(--sdds-inline-tabs-fullbleed-scroll-btn-background);display:flex;justify-content:center;align-items:center;opacity:0;pointer-events:none}.sdds-inline-tabs-fullbleed--forward__show,.sdds-inline-tabs-fullbleed--back__show{opacity:1;pointer-events:all}.sdds-inline-tabs-fullbleed--forward:hover,.sdds-inline-tabs-fullbleed--back:hover{background-color:var(--sdds-inline-tabs-fullbleed-scroll-btn-background-hover)}.sdds-inline-tabs-fullbleed--forward:active,.sdds-inline-tabs-fullbleed--back:active{background-color:var(--sdds-inline-tabs-fullbleed-scroll-btn-background-active)}.sdds-inline-tabs-fullbleed--forward:focus,.sdds-inline-tabs-fullbleed--back:focus{outline:2px solid var(--sdds-blue-400);outline-offset:-2px}.sdds-inline-tabs-fullbleed--forward svg,.sdds-inline-tabs-fullbleed--back svg{fill:var(--sdds-inline-tabs-scroll-btn-color)}.sdds-inline-tabs-fullbleed-centered{justify-content:center}::slotted(.sdds-inline-tabs-fullbleed--tab){font:var(--sdds-headline-07);letter-spacing:var(--sdds-headline-07-ls);color:var(--sdds-inline-tabs-fullbleed-tab-color);opacity:0.6;padding:16px 0;margin-right:32px;text-decoration:none;display:block;position:relative;transition:color 0.15s ease-in-out;white-space:nowrap;text-align:left}::slotted(.sdds-inline-tabs-fullbleed--tab)::after{content:\" \";position:absolute;bottom:0;right:0;left:0;margin-left:auto;width:0;margin-right:auto;height:2px;background-color:var(--sdds-inline-tabs-fullbleed-tab-indicator-background-hover);transition:width 0.15s ease-in-out;z-index:1}::slotted(.sdds-inline-tabs-fullbleed--tab__active){color:var(--sdds-inline-tabs-fullbleed-tab-color-active);opacity:1}::slotted(.sdds-inline-tabs-fullbleed--tab__active)::after{width:100%;background-color:var(--sdds-inline-tabs-fullbleed-tab-indicator-background-active)}::slotted(.sdds-inline-tabs-fullbleed--tab:first-child){margin-left:32px}::slotted(.sdds-inline-tabs-fullbleed--tab:last-child){margin-right:32px}::slotted(.sdds-inline-tabs-fullbleed--tab:hover){color:var(--sdds-inline-tabs-fullbleed-tab-color-hover);opacity:1}::slotted(.sdds-inline-tabs-fullbleed--tab:hover)::after{width:100%}::slotted(.sdds-inline-tabs-fullbleed--tab:focus){outline:2px solid var(--sdds-blue-400);outline-offset:-2px;color:var(--sdds-inline-tabs-fullbleed-tab-color-focus);opacity:1}::slotted(.sdds-inline-tabs-fullbleed--tab:focus)::after{width:0}::slotted(.sdds-inline-tabs-fullbleed--tab__active:focus)::after{width:100%}::slotted(.sdds-inline-tabs-fullbleed--tab__disabled){color:var(--sdds-inline-tabs-fullbleed-tab-color-disabled);pointer-events:none;opacity:var(--sdds-inline-tabs-fullbleed-tab-color-opacity-disabled)}.sdds-inline-tabs-fullbleed{background-color:var(--sdds-inline-tabs-fullbleed-tab-background)}.sdds-inline-tabs-fullbleed .sdds-inline-tabs-fullbleed--forward{background-color:var(--sdds-inline-tabs-fullbleed-tab-background)}.sdds-inline-tabs-fullbleed .sdds-inline-tabs-fullbleed--back{background-color:var(--sdds-inline-tabs-fullbleed-tab-background)}";
|
|
4
|
+
|
|
5
|
+
const InlineTabsFullbleed = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.__registerHost();
|
|
9
|
+
this.__attachShadow();
|
|
10
|
+
this.navWrapperElement = null; // reference to container with nav buttons
|
|
11
|
+
this.componentWidth = 0; // visible width of this component
|
|
12
|
+
this.buttonsWidth = 0; // total width of all nav items combined
|
|
13
|
+
this.scrollWidth = 0; // total amount that is possible to scroll in the nav wrapper
|
|
14
|
+
this.buttonWidth = 0; // current calculated width of the largest nav button
|
|
15
|
+
this.modeVariant = null;
|
|
16
|
+
this.tabs = [];
|
|
17
|
+
this.showLeftScroll = false;
|
|
18
|
+
this.showRightScroll = false;
|
|
19
|
+
}
|
|
20
|
+
componentDidRender() {
|
|
21
|
+
this.calculateButtonWidth();
|
|
22
|
+
}
|
|
23
|
+
componentDidLoad() {
|
|
24
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
25
|
+
entries.forEach((entry) => {
|
|
26
|
+
const componentWidth = entry.contentRect.width;
|
|
27
|
+
let buttonsWidth = 0;
|
|
28
|
+
const navButtons = Array.from(this.host.children);
|
|
29
|
+
navButtons.forEach((navButton) => {
|
|
30
|
+
const style = window.getComputedStyle(navButton);
|
|
31
|
+
buttonsWidth +=
|
|
32
|
+
navButton.clientWidth + parseFloat(style.marginLeft) + parseFloat(style.marginRight);
|
|
33
|
+
navButton.classList.add('sdds-inline-tabs-fullbleed--tab');
|
|
34
|
+
});
|
|
35
|
+
this.componentWidth = componentWidth;
|
|
36
|
+
this.buttonsWidth = buttonsWidth;
|
|
37
|
+
this.scrollWidth = buttonsWidth - componentWidth;
|
|
38
|
+
if (this.buttonsWidth > this.componentWidth) {
|
|
39
|
+
this.evaluateScrollButtons();
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.showLeftScroll = false;
|
|
43
|
+
this.showRightScroll = false;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
resizeObserver.observe(this.navWrapperElement);
|
|
48
|
+
this.calculateButtonWidth();
|
|
49
|
+
}
|
|
50
|
+
calculateButtonWidth() {
|
|
51
|
+
let best = 0;
|
|
52
|
+
const navButtons = Array.from(this.host.children);
|
|
53
|
+
navButtons.forEach((navButton) => {
|
|
54
|
+
const style = window.getComputedStyle(navButton);
|
|
55
|
+
const width = navButton.clientWidth + parseFloat(style.marginLeft) + parseFloat(style.marginRight);
|
|
56
|
+
if (width > best) {
|
|
57
|
+
best = width;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
this.buttonWidth = best;
|
|
61
|
+
}
|
|
62
|
+
scrollRight() {
|
|
63
|
+
const scroll = this.navWrapperElement.scrollLeft;
|
|
64
|
+
this.navWrapperElement.scrollLeft = scroll + this.buttonWidth;
|
|
65
|
+
this.evaluateScrollButtons();
|
|
66
|
+
}
|
|
67
|
+
scrollLeft() {
|
|
68
|
+
const scroll = this.navWrapperElement.scrollLeft;
|
|
69
|
+
this.navWrapperElement.scrollLeft = scroll - this.buttonWidth;
|
|
70
|
+
this.evaluateScrollButtons();
|
|
71
|
+
}
|
|
72
|
+
evaluateScrollButtons() {
|
|
73
|
+
const scroll = this.navWrapperElement.scrollLeft;
|
|
74
|
+
if (scroll >= this.scrollWidth) {
|
|
75
|
+
this.showRightScroll = false;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.showRightScroll = true;
|
|
79
|
+
}
|
|
80
|
+
if (scroll <= 0) {
|
|
81
|
+
this.showLeftScroll = false;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.showLeftScroll = true;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
render() {
|
|
88
|
+
return (h(Host, { class: `${this.modeVariant !== null ? `sdds-mode-variant-${this.modeVariant}` : ''}` }, h("div", { class: `sdds-inline-tabs-fullbleed` }, h("div", { class: "sdds-inline-tabs-fullbleed-wrapper", ref: (el) => {
|
|
89
|
+
this.navWrapperElement = el;
|
|
90
|
+
} }, h("slot", null)), h("div", { class: "sdds-inline-tabs-fullbleed-navigation" }, h("button", { class: `sdds-inline-tabs-fullbleed--forward ${this.showRightScroll ? 'sdds-inline-tabs-fullbleed--back__show' : ''}`, onClick: () => this.scrollRight(), disabled: !this.showRightScroll }, h("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg" }, h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M6.1147 17.3291C5.87062 17.0851 5.87062 16.6893 6.1147 16.4453L12.2948 10.2652C12.4412 10.1187 12.4412 9.8813 12.2948 9.73485L6.1147 3.55476C5.87062 3.31068 5.87062 2.91496 6.1147 2.67088C6.35878 2.4268 6.75451 2.4268 6.99858 2.67088L13.1787 8.85097C13.8133 9.48557 13.8133 10.5145 13.1787 11.1491L6.99858 17.3291C6.75451 17.5732 6.35878 17.5732 6.1147 17.3291Z" }))), h("button", { class: `sdds-inline-tabs-fullbleed--back ${this.showLeftScroll ? 'sdds-inline-tabs-fullbleed--back__show' : ''}`, onClick: () => this.scrollLeft(), disabled: !this.showLeftScroll }, h("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg" }, h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M13.8853 2.67085C14.1294 2.91493 14.1294 3.31066 13.8853 3.55473L7.70522 9.73482C7.55878 9.88127 7.55878 10.1187 7.70522 10.2652L13.8853 16.4452C14.1294 16.6893 14.1294 17.085 13.8853 17.3291C13.6412 17.5732 13.2455 17.5732 13.0014 17.3291L6.82134 11.149C6.18674 10.5144 6.18674 9.48554 6.82134 8.85094L13.0014 2.67085C13.2455 2.42677 13.6412 2.42677 13.8853 2.67085Z" })))))));
|
|
91
|
+
}
|
|
92
|
+
get host() { return this; }
|
|
93
|
+
static get style() { return inlineTabsFullbleedCss; }
|
|
94
|
+
}, [1, "sdds-inline-tabs-fullbleed", {
|
|
95
|
+
"modeVariant": [1, "mode-variant"],
|
|
96
|
+
"tabs": [32],
|
|
97
|
+
"showLeftScroll": [32],
|
|
98
|
+
"showRightScroll": [32]
|
|
99
|
+
}]);
|
|
100
|
+
function defineCustomElement$1() {
|
|
101
|
+
if (typeof customElements === "undefined") {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const components = ["sdds-inline-tabs-fullbleed"];
|
|
105
|
+
components.forEach(tagName => { switch (tagName) {
|
|
106
|
+
case "sdds-inline-tabs-fullbleed":
|
|
107
|
+
if (!customElements.get(tagName)) {
|
|
108
|
+
customElements.define(tagName, InlineTabsFullbleed);
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
} });
|
|
112
|
+
}
|
|
113
|
+
defineCustomElement$1();
|
|
114
|
+
|
|
115
|
+
const SddsInlineTabsFullbleed = InlineTabsFullbleed;
|
|
116
|
+
const defineCustomElement = defineCustomElement$1;
|
|
117
|
+
|
|
118
|
+
export { SddsInlineTabsFullbleed, defineCustomElement };
|
|
119
|
+
|
|
120
|
+
//# sourceMappingURL=sdds-inline-tabs-fullbleed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sdds-inline-tabs-fullbleed.js","mappings":"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","names":[],"sources":["./src/components/tabs/inline-tabs-fullbleed/inline-tabs-fullbleed.scss?tag=sdds-inline-tabs-fullbleed&encapsulation=shadow","./src/components/tabs/inline-tabs-fullbleed/inline-tabs-fullbleed.tsx"],"sourcesContent":["@import '../../../mixins/focus-state';\n@import '../../../mixins/box-sizing';\n\n.sdds-inline-tabs-fullbleed {\n @include sdds-box-sizing;\n\n display: flex;\n position: relative;\n\n &::after {\n content: ' ';\n display: block;\n border-bottom: 1px solid var(--sdds-inline-tabs-fullbleed-horizontal-divider-background);\n opacity: var(--sdds-inline-tabs-fullbleed-horizontal-divider-opacity);\n left: 0;\n right: 0;\n bottom: 0;\n position: absolute;\n }\n\n &-wrapper {\n display: flex;\n flex-wrap: nowrap;\n width: 100%;\n overflow-x: scroll;\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n &--forward,\n &--back {\n cursor: pointer;\n width: 48px;\n height: 100%;\n border: 0;\n position: absolute;\n right: 0;\n top: 0;\n background-color: var(--sdds-inline-tabs-fullbleed-scroll-btn-background);\n display: flex;\n justify-content: center;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n\n &__show {\n opacity: 1;\n pointer-events: all;\n }\n\n &:hover {\n background-color: var(--sdds-inline-tabs-fullbleed-scroll-btn-background-hover);\n }\n\n &:active {\n background-color: var(--sdds-inline-tabs-fullbleed-scroll-btn-background-active);\n }\n\n &:focus {\n @include sdds-focus-state;\n }\n svg{\n fill:var(--sdds-inline-tabs-scroll-btn-color);\n }\n }\n\n &-centered {\n justify-content: center;\n }\n\n /* tab */\n ::slotted(&--tab) {\n //fixme: headline-07 has a line-height that is not matching old storybook\n font: var(--sdds-headline-07);\n letter-spacing: var(--sdds-headline-07-ls);\n color: var(--sdds-inline-tabs-fullbleed-tab-color);\n opacity: 0.6;\n padding: 16px 0;\n margin-right: 32px;\n text-decoration: none;\n display: block;\n position: relative;\n transition: color 0.15s ease-in-out;\n white-space: nowrap;\n text-align: left;\n\n &::after {\n content: ' ';\n position: absolute;\n bottom: 0;\n right: 0;\n left: 0;\n margin-left: auto;\n width: 0;\n margin-right: auto;\n height: 2px;\n background-color: var(--sdds-inline-tabs-fullbleed-tab-indicator-background-hover);\n transition: width 0.15s ease-in-out;\n z-index: 1;\n }\n }\n \n ::slotted(&--tab__active) {\n color: var(--sdds-inline-tabs-fullbleed-tab-color-active);\n opacity:1;\n\n &::after {\n width: 100%;\n background-color: var(--sdds-inline-tabs-fullbleed-tab-indicator-background-active);\n }\n }\n\n ::slotted(&--tab:first-child) {\n margin-left: 32px;\n }\n\n ::slotted(&--tab:last-child) {\n margin-right: 32px;\n }\n\n /* tab states */\n ::slotted(&--tab:hover) {\n color: var(--sdds-inline-tabs-fullbleed-tab-color-hover);\n opacity:1;\n\n &::after {\n width: 100%;\n }\n }\n\n ::slotted(&--tab:focus) {\n @include sdds-focus-state;\n\n color: var(--sdds-inline-tabs-fullbleed-tab-color-focus);\n opacity:1;\n \n &::after {\n width: 0;\n }\n }\n\n ::slotted(&--tab__active:focus)::after {\n width: 100%;\n }\n\n ::slotted(&--tab__disabled) {\n color: var(--sdds-inline-tabs-fullbleed-tab-color-disabled);\n pointer-events: none;\n opacity: var(--sdds-inline-tabs-fullbleed-tab-color-opacity-disabled);\n }\n}\n\n.sdds-inline-tabs-fullbleed {\n background-color: var(--sdds-inline-tabs-fullbleed-tab-background);\n\n .sdds-inline-tabs-fullbleed--forward {\n background-color: var(--sdds-inline-tabs-fullbleed-tab-background);\n }\n\n .sdds-inline-tabs-fullbleed--back {\n background-color: var(--sdds-inline-tabs-fullbleed-tab-background);\n }\n}\n","import { Component, Host, State, Element, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'sdds-inline-tabs-fullbleed',\n styleUrl: 'inline-tabs-fullbleed.scss',\n shadow: true,\n})\nexport class InlineTabsFullbleed {\n /** Variant of the tabs, primary= on white, secondary= on grey50 */\n @Prop() modeVariant: 'primary' | 'secondary' = null;\n\n @Element() host: HTMLElement;\n\n @State() tabs: Array<any> = []; // array with metadata for slotted children\n\n @State() showLeftScroll: boolean = false;\n\n @State() showRightScroll: boolean = false;\n\n navWrapperElement: HTMLElement = null; // reference to container with nav buttons\n\n componentWidth: number = 0; // visible width of this component\n\n buttonsWidth: number = 0; // total width of all nav items combined\n\n scrollWidth: number = 0; // total amount that is possible to scroll in the nav wrapper\n\n buttonWidth: number = 0; // current calculated width of the largest nav button\n\n componentDidRender() {\n this.calculateButtonWidth();\n }\n\n componentDidLoad() {\n const resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const componentWidth = entry.contentRect.width;\n let buttonsWidth = 0;\n\n const navButtons = Array.from(this.host.children);\n navButtons.forEach((navButton: HTMLElement) => {\n const style = window.getComputedStyle(navButton);\n buttonsWidth +=\n navButton.clientWidth + parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n\n navButton.classList.add('sdds-inline-tabs-fullbleed--tab');\n });\n\n this.componentWidth = componentWidth;\n this.buttonsWidth = buttonsWidth;\n this.scrollWidth = buttonsWidth - componentWidth;\n\n if (this.buttonsWidth > this.componentWidth) {\n this.evaluateScrollButtons();\n } else {\n this.showLeftScroll = false;\n this.showRightScroll = false;\n }\n });\n });\n\n resizeObserver.observe(this.navWrapperElement);\n\n this.calculateButtonWidth();\n }\n\n calculateButtonWidth() {\n let best = 0;\n const navButtons = Array.from(this.host.children);\n navButtons.forEach((navButton: HTMLElement) => {\n const style = window.getComputedStyle(navButton);\n const width =\n navButton.clientWidth + parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n\n if (width > best) {\n best = width;\n }\n });\n\n this.buttonWidth = best;\n }\n\n scrollRight() {\n const scroll = this.navWrapperElement.scrollLeft;\n this.navWrapperElement.scrollLeft = scroll + this.buttonWidth;\n\n this.evaluateScrollButtons();\n }\n\n scrollLeft() {\n const scroll = this.navWrapperElement.scrollLeft;\n this.navWrapperElement.scrollLeft = scroll - this.buttonWidth;\n\n this.evaluateScrollButtons();\n }\n\n evaluateScrollButtons() {\n const scroll = this.navWrapperElement.scrollLeft;\n\n if (scroll >= this.scrollWidth) {\n this.showRightScroll = false;\n } else {\n this.showRightScroll = true;\n }\n\n if (scroll <= 0) {\n this.showLeftScroll = false;\n } else {\n this.showLeftScroll = true;\n }\n }\n\n render() {\n return (\n <Host class={`${this.modeVariant !== null ? `sdds-mode-variant-${this.modeVariant}`: ''}`}>\n <div class={`sdds-inline-tabs-fullbleed`}>\n <div\n class=\"sdds-inline-tabs-fullbleed-wrapper\"\n ref={(el) => {\n this.navWrapperElement = el as HTMLElement;\n }}\n >\n <slot />\n </div>\n <div class=\"sdds-inline-tabs-fullbleed-navigation\">\n <button\n class={`sdds-inline-tabs-fullbleed--forward ${\n this.showRightScroll ? 'sdds-inline-tabs-fullbleed--back__show' : ''\n }`}\n onClick={() => this.scrollRight()}\n disabled={!this.showRightScroll}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M6.1147 17.3291C5.87062 17.0851 5.87062 16.6893 6.1147 16.4453L12.2948 10.2652C12.4412 10.1187 12.4412 9.8813 12.2948 9.73485L6.1147 3.55476C5.87062 3.31068 5.87062 2.91496 6.1147 2.67088C6.35878 2.4268 6.75451 2.4268 6.99858 2.67088L13.1787 8.85097C13.8133 9.48557 13.8133 10.5145 13.1787 11.1491L6.99858 17.3291C6.75451 17.5732 6.35878 17.5732 6.1147 17.3291Z\"\n ></path>\n </svg>\n </button>\n <button\n class={`sdds-inline-tabs-fullbleed--back ${\n this.showLeftScroll ? 'sdds-inline-tabs-fullbleed--back__show' : ''\n }`}\n onClick={() => this.scrollLeft()}\n disabled={!this.showLeftScroll}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.8853 2.67085C14.1294 2.91493 14.1294 3.31066 13.8853 3.55473L7.70522 9.73482C7.55878 9.88127 7.55878 10.1187 7.70522 10.2652L13.8853 16.4452C14.1294 16.6893 14.1294 17.085 13.8853 17.3291C13.6412 17.5732 13.2455 17.5732 13.0014 17.3291L6.82134 11.149C6.18674 10.5144 6.18674 9.48554 6.82134 8.85094L13.0014 2.67085C13.2455 2.42677 13.6412 2.42677 13.8853 2.67085Z\"\n ></path>\n </svg>\n </button>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SddsInlineTabs extends Components.SddsInlineTabs, HTMLElement {}
|
|
4
|
+
export const SddsInlineTabs: {
|
|
5
|
+
prototype: SddsInlineTabs;
|
|
6
|
+
new (): SddsInlineTabs;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
|
|
3
|
+
const inlineTabsCss = ":host{outline:0 !important;box-sizing:border-box}:host *{box-sizing:border-box}.sdds-inline-tabs{overflow:hidden;outline:0}.sdds-inline-tabs-header{position:relative}.sdds-inline-tabs-main{background-color:var(--sdds-inline-tabs-main-background);padding:24px 24px 48px}.sdds-inline-tabs-wrapper{display:flex;overflow-x:scroll;scrollbar-width:none}.sdds-inline-tabs-wrapper::-webkit-scrollbar{display:none}.sdds-inline-tabs--forward,.sdds-inline-tabs--back{cursor:pointer;width:48px;height:100%;border:0;position:absolute;top:0;background-color:var(--sdds-inline-tabs-scroll-btn-background);display:flex;justify-content:center;align-items:center;opacity:0;pointer-events:none}.sdds-inline-tabs--forward__show,.sdds-inline-tabs--back__show{opacity:1;pointer-events:all}.sdds-inline-tabs--forward:hover,.sdds-inline-tabs--back:hover{background-color:var(--sdds-inline-tabs-scroll-btn-background-hover)}.sdds-inline-tabs--forward:active,.sdds-inline-tabs--back:active{background-color:var(--sdds-inline-tabs-scroll-btn-background-active)}.sdds-inline-tabs--forward:focus,.sdds-inline-tabs--back:focus{outline:2px solid var(--sdds-blue-400);outline-offset:-2px}.sdds-inline-tabs--forward svg,.sdds-inline-tabs--back svg{fill:var(--sdds-inline-tabs-scroll-btn-color)}.sdds-inline-tabs--back{left:0}.sdds-inline-tabs--forward{right:0}.sdds-inline-tabs--tab{font:var(--sdds-headline-07);letter-spacing:var(--sdds-headline-07-ls);cursor:pointer;border:0;color:var(--sdds-inline-tabs-tab-color);background-color:var(--sdds-inline-tabs-tab-background);padding:16px;min-width:142px;text-decoration:none;display:block;position:relative;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out;white-space:nowrap;flex-shrink:0;text-align:left;outline:none}.sdds-inline-tabs--tab>*{opacity:0.6}.sdds-inline-tabs--tab:not(:last-child){border-right:1px solid var(--sdds-inline-tabs-tab-border-color)}.sdds-inline-tabs--tab::after{content:\" \";position:absolute;top:0;right:0;left:0;margin-left:auto;width:0;margin-right:auto;height:2px;background-color:var(--sdds-inline-tabs-tab-indicator-background);transition:width 0.15s ease-in-out}.sdds-inline-tabs--tab:hover{background-color:var(--sdds-inline-tabs-tab-background-hover);color:var(--sdds-inline-tabs-tab-color-hover);text-decoration:none}.sdds-inline-tabs--tab:focus{outline:2px solid var(--sdds-blue-400);outline-offset:-2px}.sdds-inline-tabs--tab__active{background-color:var(--sdds-inline-tabs-tab-background-active);color:var(--sdds-inline-tabs-tab-color-active);cursor:initial;border-right:1px solid transparent !important}.sdds-inline-tabs--tab__active>*{opacity:1}.sdds-inline-tabs--tab__active:hover{background-color:var(--sdds-inline-tabs-tab-background-active)}.sdds-inline-tabs--tab__active::after{width:calc(100% + 2px);left:-1px;background-color:var(--sdds-inline-tabs-tab-indicator-background-active)}.sdds-inline-tabs--tab__active::before{content:\" \";background-color:var(--sdds-inline-tabs-tab-background-active);width:1px;top:0;bottom:0;left:-1px;display:block;position:absolute}.sdds-inline-tabs--tab__active:first-child:focus::before{left:0}.sdds-inline-tabs--tab:disabled,.sdds-inline-tabs--tab__disabled{cursor:initial;color:var(--sdds-navigation-tabs-tab-color-disabled);pointer-events:none}.sdds-inline-tabs--tab:disabled>*,.sdds-inline-tabs--tab__disabled>*{opacity:0.16}.sdds-inline-tabs--tab__active{background-color:var(--sdds-inline-tabs-tab-background-active)}.sdds-inline-tabs-main{background-color:var(--sdds-inline-tabs-main-background)}";
|
|
4
|
+
|
|
5
|
+
function generateKeyFromName(name) {
|
|
6
|
+
return name
|
|
7
|
+
.replace(/\s/g, '-')
|
|
8
|
+
.replace(/[^a-z0-9-]/gi, '')
|
|
9
|
+
.toLowerCase();
|
|
10
|
+
}
|
|
11
|
+
const InlineTabs = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
this.__registerHost();
|
|
15
|
+
this.__attachShadow();
|
|
16
|
+
this.startingTab = null; // name of the tab to show by default (infered from either "default-tab"-prop (on component) or "default"-prop (on a slotted child)
|
|
17
|
+
this.navWrapperElement = null; // reference to container with nav buttons
|
|
18
|
+
this.tabWrapperElement = null; // reference to container with slotted children
|
|
19
|
+
this.componentWidth = 0; // visible width of this component
|
|
20
|
+
this.buttonsWidth = 0; // total width of all nav items combined
|
|
21
|
+
this.scrollWidth = 0; // total amount that is possible to scroll in the nav wrapper
|
|
22
|
+
this.useAutoHeight = false; // set height for slotted children or not
|
|
23
|
+
this.defaultTab = '';
|
|
24
|
+
this.autoHeight = false;
|
|
25
|
+
this.modeVariant = null;
|
|
26
|
+
this.tabs = [];
|
|
27
|
+
this.buttonWidth = 0;
|
|
28
|
+
this.tabHeight = 0;
|
|
29
|
+
this.showLeftScroll = false;
|
|
30
|
+
this.showRightScroll = false;
|
|
31
|
+
}
|
|
32
|
+
/** used for switching to a tab programmatically */
|
|
33
|
+
async showTab(key) {
|
|
34
|
+
this.switchToTab(key);
|
|
35
|
+
}
|
|
36
|
+
componentWillLoad() {
|
|
37
|
+
this.initComponent();
|
|
38
|
+
}
|
|
39
|
+
initComponent(createInitialState = true) {
|
|
40
|
+
if (this.autoHeight) {
|
|
41
|
+
this.useAutoHeight = true;
|
|
42
|
+
}
|
|
43
|
+
this.tabs = Array.from(this.host.children).map((item, index) => {
|
|
44
|
+
const name = item.label ? item.label : item.getAttribute('name') || `Tab ${index + 1}`;
|
|
45
|
+
const key = generateKeyFromName(name);
|
|
46
|
+
if (item.default) {
|
|
47
|
+
this.startingTab = key;
|
|
48
|
+
}
|
|
49
|
+
let disabled = false;
|
|
50
|
+
if (item.disabled) {
|
|
51
|
+
disabled = true;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
name,
|
|
55
|
+
key,
|
|
56
|
+
element: item,
|
|
57
|
+
disabled,
|
|
58
|
+
visible: true,
|
|
59
|
+
initialDisplay: window.getComputedStyle(item).display,
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
if (createInitialState) {
|
|
63
|
+
this.setInitialState();
|
|
64
|
+
}
|
|
65
|
+
this.tabs = Array.from(this.tabs);
|
|
66
|
+
}
|
|
67
|
+
calculateButtonWidth() {
|
|
68
|
+
const navButtons = this.navWrapperElement.querySelectorAll('button.sdds-inline-tabs--tab');
|
|
69
|
+
let best = 0;
|
|
70
|
+
Array.from(navButtons).forEach((navButton) => {
|
|
71
|
+
const oldStyle = navButton.style.width;
|
|
72
|
+
// eslint-disable-next-line no-param-reassign
|
|
73
|
+
navButton.style.width = '';
|
|
74
|
+
const width = navButton.clientWidth;
|
|
75
|
+
// eslint-disable-next-line no-param-reassign
|
|
76
|
+
navButton.style.width = oldStyle;
|
|
77
|
+
if (navButton.clientWidth > best) {
|
|
78
|
+
best = width;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
this.buttonWidth = best;
|
|
82
|
+
}
|
|
83
|
+
calculateTabHeight() {
|
|
84
|
+
let best = 0;
|
|
85
|
+
this.tabs.forEach((_, tabIndex) => {
|
|
86
|
+
const tab = this.tabs[tabIndex];
|
|
87
|
+
// TODO: add comment on what this does
|
|
88
|
+
const oldStyle = tab.element.style.display;
|
|
89
|
+
tab.element.style.display = '';
|
|
90
|
+
const height = tab.element.clientHeight;
|
|
91
|
+
tab.element.style.display = oldStyle;
|
|
92
|
+
if (height > best) {
|
|
93
|
+
best = height;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
this.tabHeight = best;
|
|
97
|
+
}
|
|
98
|
+
componentDidRender() {
|
|
99
|
+
this.calculateTabHeight();
|
|
100
|
+
this.calculateButtonWidth();
|
|
101
|
+
}
|
|
102
|
+
componentDidLoad() {
|
|
103
|
+
const mutationObserver = new MutationObserver(( /* mutations, observer */) => {
|
|
104
|
+
const visibleTab = this.tabs.find((tab) => tab.visible);
|
|
105
|
+
this.initComponent(false);
|
|
106
|
+
this.calculateTabHeight();
|
|
107
|
+
this.calculateButtonWidth();
|
|
108
|
+
if (visibleTab) {
|
|
109
|
+
this.switchToTab(visibleTab.key);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
113
|
+
entries.forEach((entry) => {
|
|
114
|
+
const componentWidth = entry.contentRect.width;
|
|
115
|
+
let buttonsWidth = 0;
|
|
116
|
+
const navButtons = entry.target.querySelectorAll('button.sdds-inline-tabs--tab');
|
|
117
|
+
Array.from(navButtons).forEach((navButton) => {
|
|
118
|
+
buttonsWidth += navButton.clientWidth;
|
|
119
|
+
});
|
|
120
|
+
this.componentWidth = componentWidth;
|
|
121
|
+
this.buttonsWidth = buttonsWidth;
|
|
122
|
+
this.scrollWidth = buttonsWidth - componentWidth;
|
|
123
|
+
if (this.buttonsWidth > this.componentWidth) {
|
|
124
|
+
this.evaluateScrollButtons();
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.showLeftScroll = false;
|
|
128
|
+
this.showRightScroll = false;
|
|
129
|
+
}
|
|
130
|
+
this.calculateTabHeight();
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
mutationObserver.observe(this.host, {
|
|
134
|
+
childList: true,
|
|
135
|
+
attributes: true,
|
|
136
|
+
});
|
|
137
|
+
resizeObserver.observe(this.navWrapperElement);
|
|
138
|
+
this.calculateButtonWidth();
|
|
139
|
+
this.calculateTabHeight();
|
|
140
|
+
}
|
|
141
|
+
setInitialState() {
|
|
142
|
+
if (this.defaultTab) {
|
|
143
|
+
this.startingTab = this.defaultTab;
|
|
144
|
+
}
|
|
145
|
+
this.tabs.forEach((tab, index) => {
|
|
146
|
+
if (this.startingTab) {
|
|
147
|
+
if (tab.key !== this.startingTab) {
|
|
148
|
+
this.hideTab(index);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
if (index > 0) {
|
|
153
|
+
this.hideTab(index);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
unhideTab(tabIndex) {
|
|
159
|
+
const tab = this.tabs[tabIndex];
|
|
160
|
+
tab.element.style.display = '';
|
|
161
|
+
tab.visible = true;
|
|
162
|
+
}
|
|
163
|
+
hideTab(tabIndex) {
|
|
164
|
+
const tab = this.tabs[tabIndex];
|
|
165
|
+
tab.element.style.display = 'none';
|
|
166
|
+
tab.visible = false;
|
|
167
|
+
}
|
|
168
|
+
switchToTab(key) {
|
|
169
|
+
this.tabs.forEach((tab, index) => {
|
|
170
|
+
if (tab.key === key) {
|
|
171
|
+
this.unhideTab(index);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
this.hideTab(index);
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
this.tabs = Array.from(this.tabs);
|
|
178
|
+
}
|
|
179
|
+
scrollRight() {
|
|
180
|
+
const scroll = this.navWrapperElement.scrollLeft;
|
|
181
|
+
this.navWrapperElement.scrollLeft = scroll + this.buttonWidth;
|
|
182
|
+
this.evaluateScrollButtons();
|
|
183
|
+
}
|
|
184
|
+
scrollLeft() {
|
|
185
|
+
const scroll = this.navWrapperElement.scrollLeft;
|
|
186
|
+
this.navWrapperElement.scrollLeft = scroll - this.buttonWidth;
|
|
187
|
+
this.evaluateScrollButtons();
|
|
188
|
+
}
|
|
189
|
+
evaluateScrollButtons() {
|
|
190
|
+
const scroll = this.navWrapperElement.scrollLeft;
|
|
191
|
+
if (scroll >= this.scrollWidth) {
|
|
192
|
+
this.showRightScroll = false;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
this.showRightScroll = true;
|
|
196
|
+
}
|
|
197
|
+
if (scroll <= 0) {
|
|
198
|
+
this.showLeftScroll = false;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
this.showLeftScroll = true;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
render() {
|
|
205
|
+
const style = {};
|
|
206
|
+
if (this.useAutoHeight) {
|
|
207
|
+
style.height = `${this.tabHeight}px`;
|
|
208
|
+
}
|
|
209
|
+
return (h(Host, { class: `${this.modeVariant !== null ? `sdds-mode-variant-${this.modeVariant}` : ''}` }, h("div", { class: `sdds-inline-tabs sdds-inline-tabs` }, h("nav", { class: "sdds-inline-tabs-header" }, h("div", { ref: (el) => {
|
|
210
|
+
this.navWrapperElement = el;
|
|
211
|
+
}, class: "sdds-inline-tabs-wrapper" }, this.tabs.map((tab) => (h("button", { style: { width: `${this.buttonWidth}px` }, disabled: tab.disabled, class: `sdds-inline-tabs--tab ${tab.visible ? 'sdds-inline-tabs--tab__active' : ''}`, onClick: () => this.switchToTab(tab.key) }, h("span", null, tab.name))))), h("div", { class: "sdds-inline-tabs-header-navigation" }, h("button", { class: `sdds-inline-tabs--forward ${this.showRightScroll ? 'sdds-inline-tabs--back__show' : ''}`, disabled: !this.showRightScroll, onClick: () => this.scrollRight() }, h("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M6.1147 17.3291C5.87062 17.0851 5.87062 16.6893 6.1147 16.4453L12.2948 10.2652C12.4412 10.1187 12.4412 9.8813 12.2948 9.73485L6.1147 3.55476C5.87062 3.31068 5.87062 2.91496 6.1147 2.67088C6.35878 2.4268 6.75451 2.4268 6.99858 2.67088L13.1787 8.85097C13.8133 9.48557 13.8133 10.5145 13.1787 11.1491L6.99858 17.3291C6.75451 17.5732 6.35878 17.5732 6.1147 17.3291Z" }))), h("button", { class: `sdds-inline-tabs--back ${this.showLeftScroll ? 'sdds-inline-tabs--back__show' : ''}`, disabled: !this.showLeftScroll, onClick: () => this.scrollLeft() }, h("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M13.8853 2.67085C14.1294 2.91493 14.1294 3.31066 13.8853 3.55473L7.70522 9.73482C7.55878 9.88127 7.55878 10.1187 7.70522 10.2652L13.8853 16.4452C14.1294 16.6893 14.1294 17.085 13.8853 17.3291C13.6412 17.5732 13.2455 17.5732 13.0014 17.3291L6.82134 11.149C6.18674 10.5144 6.18674 9.48554 6.82134 8.85094L13.0014 2.67085C13.2455 2.42677 13.6412 2.42677 13.8853 2.67085Z" }))))), h("div", { ref: (el) => {
|
|
212
|
+
this.tabWrapperElement = el;
|
|
213
|
+
}, class: "sdds-inline-tabs-main", style: style }, h("slot", null)))));
|
|
214
|
+
}
|
|
215
|
+
get host() { return this; }
|
|
216
|
+
static get style() { return inlineTabsCss; }
|
|
217
|
+
}, [1, "sdds-inline-tabs", {
|
|
218
|
+
"defaultTab": [1, "default-tab"],
|
|
219
|
+
"autoHeight": [4, "auto-height"],
|
|
220
|
+
"modeVariant": [1, "mode-variant"],
|
|
221
|
+
"tabs": [32],
|
|
222
|
+
"buttonWidth": [32],
|
|
223
|
+
"tabHeight": [32],
|
|
224
|
+
"showLeftScroll": [32],
|
|
225
|
+
"showRightScroll": [32],
|
|
226
|
+
"showTab": [64]
|
|
227
|
+
}]);
|
|
228
|
+
function defineCustomElement$1() {
|
|
229
|
+
if (typeof customElements === "undefined") {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const components = ["sdds-inline-tabs"];
|
|
233
|
+
components.forEach(tagName => { switch (tagName) {
|
|
234
|
+
case "sdds-inline-tabs":
|
|
235
|
+
if (!customElements.get(tagName)) {
|
|
236
|
+
customElements.define(tagName, InlineTabs);
|
|
237
|
+
}
|
|
238
|
+
break;
|
|
239
|
+
} });
|
|
240
|
+
}
|
|
241
|
+
defineCustomElement$1();
|
|
242
|
+
|
|
243
|
+
const SddsInlineTabs = InlineTabs;
|
|
244
|
+
const defineCustomElement = defineCustomElement$1;
|
|
245
|
+
|
|
246
|
+
export { SddsInlineTabs, defineCustomElement };
|
|
247
|
+
|
|
248
|
+
//# sourceMappingURL=sdds-inline-tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sdds-inline-tabs.js","mappings":"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","names":[],"sources":["./src/components/tabs/inline-tabs-default/inline-tabs.scss?tag=sdds-inline-tabs&encapsulation=shadow","./src/components/tabs/inline-tabs-default/inline-tabs.tsx"],"sourcesContent":["@import '../../../mixins/focus-state';\n@import '../../../mixins/box-sizing';\n\n:host {\n outline: 0 !important;\n @include sdds-box-sizing;\n}\n\n.sdds-inline-tabs {\n overflow: hidden;\n outline: 0;\n\n &-header {\n position: relative;\n }\n\n &-main {\n background-color: var(--sdds-inline-tabs-main-background);\n padding: 24px 24px 48px;\n }\n\n &-wrapper {\n display: flex;\n overflow-x: scroll;\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n &--forward,\n &--back {\n cursor: pointer;\n width: 48px;\n height: 100%;\n border: 0;\n position: absolute;\n top: 0;\n background-color: var(--sdds-inline-tabs-scroll-btn-background);\n display: flex;\n justify-content: center;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n\n &__show {\n opacity: 1;\n pointer-events: all;\n }\n\n &:hover {\n background-color: var(--sdds-inline-tabs-scroll-btn-background-hover);\n }\n\n &:active {\n background-color: var(--sdds-inline-tabs-scroll-btn-background-active);\n }\n\n &:focus {\n @include sdds-focus-state;\n }\n svg{\n fill:var(--sdds-inline-tabs-scroll-btn-color);\n }\n }\n\n &--back {\n left: 0;\n }\n\n &--forward {\n right: 0;\n }\n\n &--tab {\n font: var(--sdds-headline-07);\n letter-spacing: var(--sdds-headline-07-ls);\n cursor: pointer;\n border: 0;\n color: var(--sdds-inline-tabs-tab-color);\n background-color: var(--sdds-inline-tabs-tab-background);\n padding: 16px;\n min-width: 142px;\n text-decoration: none;\n display: block;\n position: relative;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out;\n white-space: nowrap;\n flex-shrink: 0;\n text-align: left;\n outline: none;\n\n & > * {\n opacity: 0.6;\n }\n\n &:not(:last-child) {\n border-right: 1px solid var(--sdds-inline-tabs-tab-border-color);\n }\n\n &::after {\n content: ' ';\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n margin-left: auto;\n width: 0;\n margin-right: auto;\n height: 2px;\n background-color: var(--sdds-inline-tabs-tab-indicator-background);\n transition: width 0.15s ease-in-out;\n }\n\n &:hover {\n background-color: var(--sdds-inline-tabs-tab-background-hover);\n color: var(--sdds-inline-tabs-tab-color-hover);\n text-decoration: none;\n }\n\n &:focus {\n @include sdds-focus-state;\n }\n\n &__active {\n background-color: var(--sdds-inline-tabs-tab-background-active);\n color: var(--sdds-inline-tabs-tab-color-active);\n cursor: initial;\n border-right: 1px solid transparent !important;\n\n & > * {\n opacity: 1;\n }\n\n &:hover {\n background-color: var(--sdds-inline-tabs-tab-background-active);\n }\n\n &::after {\n width: calc(100% + 2px);\n left: -1px;\n background-color: var(--sdds-inline-tabs-tab-indicator-background-active);\n }\n\n &::before {\n content: ' ';\n background-color: var(--sdds-inline-tabs-tab-background-active);\n width: 1px;\n top: 0;\n bottom: 0;\n left: -1px;\n display: block;\n position: absolute;\n }\n\n &:first-child {\n &:focus {\n &::before {\n left: 0;\n }\n }\n }\n }\n\n &:disabled,\n &__disabled {\n cursor: initial;\n color: var(--sdds-navigation-tabs-tab-color-disabled);\n pointer-events: none;\n\n & > * {\n opacity: 0.16;\n }\n }\n }\n}\n\n .sdds-inline-tabs--tab__active {\n background-color: var(--sdds-inline-tabs-tab-background-active);\n }\n\n .sdds-inline-tabs-main {\n background-color: var(--sdds-inline-tabs-main-background);\n }\n","import { Component, Host, State, Element, Prop, h, Method } from '@stencil/core';\n\nfunction generateKeyFromName(name: string) {\n return name\n .replace(/\\s/g, '-')\n .replace(/[^a-z0-9-]/gi, '')\n .toLowerCase();\n}\n\n@Component({\n tag: 'sdds-inline-tabs',\n styleUrl: 'inline-tabs.scss',\n shadow: true,\n})\nexport class InlineTabs {\n @Element() host: HTMLElement;\n\n /** either use this (default-tab=\"...\") or read attribute \"default\" from one of the slotted children. */\n @Prop() defaultTab: string = '';\n\n /** different height settings. right now only supports \"auto\", otherwise ignored */\n @Prop() autoHeight: boolean = false;\n\n /** Variant of the tabs, primary= on white, secondary= on grey50 */\n @Prop() modeVariant: 'primary' | 'secondary' = null;\n\n /** array with metadata for slotted children */\n @State() tabs: Array<any> = [];\n\n /** current calculated width of each nav button (calculated from the largest one) */\n @State() buttonWidth: number = 0;\n\n /** current calculated tab height (calculated from the one with the most height) */\n @State() tabHeight: number = 0;\n\n @State() showLeftScroll: boolean = false;\n\n @State() showRightScroll: boolean = false;\n\n /** used for switching to a tab programmatically */\n @Method()\n async showTab(key: string) {\n this.switchToTab(key);\n }\n\n startingTab: string = null; // name of the tab to show by default (infered from either \"default-tab\"-prop (on component) or \"default\"-prop (on a slotted child)\n\n navWrapperElement: HTMLElement = null; // reference to container with nav buttons\n\n tabWrapperElement: HTMLElement = null; // reference to container with slotted children\n\n componentWidth: number = 0; // visible width of this component\n\n buttonsWidth: number = 0; // total width of all nav items combined\n\n scrollWidth: number = 0; // total amount that is possible to scroll in the nav wrapper\n\n useAutoHeight: boolean = false; // set height for slotted children or not\n\n componentWillLoad() {\n this.initComponent();\n }\n\n initComponent(createInitialState = true) {\n if (this.autoHeight) {\n this.useAutoHeight = true;\n }\n\n this.tabs = Array.from(this.host.children).map((item: HTMLSddsInlineTabElement, index) => {\n const name = item.label ? item.label : item.getAttribute('name') || `Tab ${index + 1}`;\n const key = generateKeyFromName(name);\n if (item.default) {\n this.startingTab = key;\n }\n let disabled = false;\n if (item.disabled) {\n disabled = true;\n }\n return {\n name,\n key,\n element: item,\n disabled,\n visible: true,\n initialDisplay: window.getComputedStyle(item).display,\n };\n });\n\n if (createInitialState) {\n this.setInitialState();\n }\n this.tabs = Array.from(this.tabs);\n }\n\n calculateButtonWidth() {\n const navButtons = this.navWrapperElement.querySelectorAll('button.sdds-inline-tabs--tab');\n let best = 0;\n Array.from(navButtons).forEach((navButton: HTMLElement) => {\n const oldStyle = navButton.style.width;\n // eslint-disable-next-line no-param-reassign\n navButton.style.width = '';\n const width = navButton.clientWidth;\n // eslint-disable-next-line no-param-reassign\n navButton.style.width = oldStyle;\n\n if (navButton.clientWidth > best) {\n best = width;\n }\n });\n\n this.buttonWidth = best;\n }\n\n calculateTabHeight() {\n let best = 0;\n this.tabs.forEach((_, tabIndex) => {\n const tab = this.tabs[tabIndex];\n // TODO: add comment on what this does\n const oldStyle = tab.element.style.display;\n tab.element.style.display = '';\n const height = tab.element.clientHeight;\n tab.element.style.display = oldStyle;\n\n if (height > best) {\n best = height;\n }\n });\n\n this.tabHeight = best;\n }\n\n componentDidRender() {\n this.calculateTabHeight();\n this.calculateButtonWidth();\n }\n\n componentDidLoad() {\n const mutationObserver = new MutationObserver((/* mutations, observer */) => {\n const visibleTab = this.tabs.find((tab) => tab.visible);\n this.initComponent(false);\n this.calculateTabHeight();\n this.calculateButtonWidth();\n if (visibleTab) {\n this.switchToTab(visibleTab.key);\n }\n });\n\n const resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const componentWidth = entry.contentRect.width;\n let buttonsWidth = 0;\n\n const navButtons = entry.target.querySelectorAll('button.sdds-inline-tabs--tab');\n Array.from(navButtons).forEach((navButton: HTMLElement) => {\n buttonsWidth += navButton.clientWidth;\n });\n\n this.componentWidth = componentWidth;\n this.buttonsWidth = buttonsWidth;\n this.scrollWidth = buttonsWidth - componentWidth;\n\n if (this.buttonsWidth > this.componentWidth) {\n this.evaluateScrollButtons();\n } else {\n this.showLeftScroll = false;\n this.showRightScroll = false;\n }\n\n this.calculateTabHeight();\n });\n });\n\n mutationObserver.observe(this.host, {\n childList: true,\n attributes: true,\n });\n\n resizeObserver.observe(this.navWrapperElement);\n\n this.calculateButtonWidth();\n this.calculateTabHeight();\n }\n\n setInitialState() {\n if (this.defaultTab) {\n this.startingTab = this.defaultTab;\n }\n\n this.tabs.forEach((tab, index) => {\n if (this.startingTab) {\n if (tab.key !== this.startingTab) {\n this.hideTab(index);\n }\n } else {\n if (index > 0) {\n this.hideTab(index);\n }\n }\n });\n }\n\n unhideTab(tabIndex) {\n const tab = this.tabs[tabIndex];\n tab.element.style.display = '';\n tab.visible = true;\n }\n\n hideTab(tabIndex) {\n const tab = this.tabs[tabIndex];\n tab.element.style.display = 'none';\n tab.visible = false;\n }\n\n switchToTab(key: string) {\n this.tabs.forEach((tab, index) => {\n if (tab.key === key) {\n this.unhideTab(index);\n } else {\n this.hideTab(index);\n }\n });\n\n this.tabs = Array.from(this.tabs);\n }\n\n scrollRight() {\n const scroll = this.navWrapperElement.scrollLeft;\n this.navWrapperElement.scrollLeft = scroll + this.buttonWidth;\n\n this.evaluateScrollButtons();\n }\n\n scrollLeft() {\n const scroll = this.navWrapperElement.scrollLeft;\n this.navWrapperElement.scrollLeft = scroll - this.buttonWidth;\n\n this.evaluateScrollButtons();\n }\n\n evaluateScrollButtons() {\n const scroll = this.navWrapperElement.scrollLeft;\n\n if (scroll >= this.scrollWidth) {\n this.showRightScroll = false;\n } else {\n this.showRightScroll = true;\n }\n\n if (scroll <= 0) {\n this.showLeftScroll = false;\n } else {\n this.showLeftScroll = true;\n }\n }\n\n render() {\n const style: Record<string, string> = {};\n if (this.useAutoHeight) {\n style.height = `${this.tabHeight}px`;\n }\n\n return (\n <Host class={`${this.modeVariant !== null ? `sdds-mode-variant-${this.modeVariant}`: ''}`}>\n <div class={`sdds-inline-tabs sdds-inline-tabs`}>\n <nav class=\"sdds-inline-tabs-header\">\n <div\n ref={(el) => {\n this.navWrapperElement = el as HTMLDivElement;\n }}\n class=\"sdds-inline-tabs-wrapper\"\n >\n {this.tabs.map((tab) => (\n <button\n style={{ width: `${this.buttonWidth}px` }}\n disabled={tab.disabled}\n class={`sdds-inline-tabs--tab ${\n tab.visible ? 'sdds-inline-tabs--tab__active' : ''\n }`}\n onClick={() => this.switchToTab(tab.key)}\n >\n <span>{tab.name}</span>\n </button>\n ))}\n </div>\n <div class=\"sdds-inline-tabs-header-navigation\">\n <button\n class={`sdds-inline-tabs--forward ${\n this.showRightScroll ? 'sdds-inline-tabs--back__show' : ''\n }`}\n disabled={!this.showRightScroll}\n onClick={() => this.scrollRight()}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M6.1147 17.3291C5.87062 17.0851 5.87062 16.6893 6.1147 16.4453L12.2948 10.2652C12.4412 10.1187 12.4412 9.8813 12.2948 9.73485L6.1147 3.55476C5.87062 3.31068 5.87062 2.91496 6.1147 2.67088C6.35878 2.4268 6.75451 2.4268 6.99858 2.67088L13.1787 8.85097C13.8133 9.48557 13.8133 10.5145 13.1787 11.1491L6.99858 17.3291C6.75451 17.5732 6.35878 17.5732 6.1147 17.3291Z\"\n />\n </svg>\n </button>\n <button\n class={`sdds-inline-tabs--back ${\n this.showLeftScroll ? 'sdds-inline-tabs--back__show' : ''\n }`}\n disabled={!this.showLeftScroll}\n onClick={() => this.scrollLeft()}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.8853 2.67085C14.1294 2.91493 14.1294 3.31066 13.8853 3.55473L7.70522 9.73482C7.55878 9.88127 7.55878 10.1187 7.70522 10.2652L13.8853 16.4452C14.1294 16.6893 14.1294 17.085 13.8853 17.3291C13.6412 17.5732 13.2455 17.5732 13.0014 17.3291L6.82134 11.149C6.18674 10.5144 6.18674 9.48554 6.82134 8.85094L13.0014 2.67085C13.2455 2.42677 13.6412 2.42677 13.8853 2.67085Z\"\n />\n </svg>\n </button>\n </div>\n </nav>\n <div\n ref={(el) => {\n this.tabWrapperElement = el as HTMLElement;\n }}\n class=\"sdds-inline-tabs-main\"\n style={style}\n >\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SddsLink extends Components.SddsLink, HTMLElement {}
|
|
4
|
+
export const SddsLink: {
|
|
5
|
+
prototype: SddsLink;
|
|
6
|
+
new (): SddsLink;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sdds-link.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
|
|
2
|
+
|
|
3
|
+
const sddsLinkCss = "a{cursor:pointer;outline:none;color:var(--sdds-link)}a:active{color:var(--sdds-link);text-decoration:underline;text-decoration-color:var(--sdds-link)}a:hover{color:var(--sdds-link-hover);text-decoration:underline;text-decoration-color:var(--sdds-link-hover)}a:visited{color:var(--sdds-link-visited);text-decoration-color:var(--sdds-link-visited)}a:focus{color:var(--sdds-link-focus);text-decoration:none;outline:2px solid var(--sdds-link-focus);outline-offset:-2px}a.disabled{color:var(--sdds-link-disabled);text-decoration-color:var(--sdds-link-disabled);pointer-events:none}a.no-underline{text-decoration:none}a.no-underline:hover{text-decoration:none}";
|
|
4
|
+
|
|
5
|
+
const SddsLink = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.__registerHost();
|
|
9
|
+
this.href = undefined;
|
|
10
|
+
this.target = '_self';
|
|
11
|
+
this.disabled = false;
|
|
12
|
+
this.underline = true;
|
|
13
|
+
this.rel = 'noopener';
|
|
14
|
+
}
|
|
15
|
+
render() {
|
|
16
|
+
return (h("a", { class: `
|
|
17
|
+
${this.disabled ? 'disabled' : ''}
|
|
18
|
+
${this.underline ? '' : 'no-underline'}
|
|
19
|
+
|
|
20
|
+
`, href: this.href, target: this.target, rel: this.rel }, h("slot", null)));
|
|
21
|
+
}
|
|
22
|
+
static get style() { return sddsLinkCss; }
|
|
23
|
+
}, [4, "sdds-link", {
|
|
24
|
+
"href": [1],
|
|
25
|
+
"target": [1],
|
|
26
|
+
"disabled": [4],
|
|
27
|
+
"underline": [4],
|
|
28
|
+
"rel": [1]
|
|
29
|
+
}]);
|
|
30
|
+
function defineCustomElement() {
|
|
31
|
+
if (typeof customElements === "undefined") {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const components = ["sdds-link"];
|
|
35
|
+
components.forEach(tagName => { switch (tagName) {
|
|
36
|
+
case "sdds-link":
|
|
37
|
+
if (!customElements.get(tagName)) {
|
|
38
|
+
customElements.define(tagName, SddsLink);
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
} });
|
|
42
|
+
}
|
|
43
|
+
defineCustomElement();
|
|
44
|
+
|
|
45
|
+
export { SddsLink as S, defineCustomElement as d };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=sdds-link2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sdds-link2.js","mappings":";;AAAA,MAAM,WAAW,GAAG,gpBAAgpB;;MCOvpB,QAAQ;;;;;kBAKuC,OAAO;oBAGrC,KAAK;qBAGJ,IAAI;eAGX,UAAU;;EAEhC,MAAM;IACJ,QACE,SACE,KAAK,EAAE;UACL,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE;UAC/B,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,cAAc;;SAErC,EACD,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,GAAG,EAAE,IAAI,CAAC,GAAG,IAEb,eAAa,CACX,EACJ;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/link/sdds-link.scss?tag=sdds-link","./src/components/link/sdds-link.tsx"],"sourcesContent":["a {\n cursor: pointer;\n outline: none;\n color: var(--sdds-link);\n\n &:active {\n color: var(--sdds-link);\n text-decoration: underline;\n text-decoration-color: var(--sdds-link);\n }\n\n &:hover {\n color: var(--sdds-link-hover);\n text-decoration: underline;\n text-decoration-color: var(--sdds-link-hover);\n }\n\n &:visited {\n color: var(--sdds-link-visited);\n text-decoration-color: var(--sdds-link-visited);\n }\n\n &:focus {\n color: var(--sdds-link-focus);\n text-decoration: none;\n outline: 2px solid var(--sdds-link-focus);\n outline-offset: -2px;\n }\n\n &.disabled {\n color: var(--sdds-link-disabled);\n text-decoration-color: var(--sdds-link-disabled);\n pointer-events: none;\n }\n\n &.no-underline {\n text-decoration: none;\n\n &:hover {\n text-decoration: none;\n }\n }\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'sdds-link',\n styleUrl: 'sdds-link.scss',\n shadow: false,\n})\nexport class SddsLink {\n /** URL for the link */\n @Prop() href: string;\n\n /** Where to open the linked URL */\n @Prop() target: '_self' | '_blank' | '_parent' | '_top' = '_self';\n\n /** Disables the link */\n @Prop() disabled: boolean = false;\n\n /** Displays the link with an underline. */\n @Prop() underline: boolean = true;\n\n /** 'noopener' is a security measure for legacy browsers that preventsthe opened page from getting access to the original page when using target='_blank'. */\n @Prop() rel: string = 'noopener';\n\n render() {\n return (\n <a\n class={`\n ${this.disabled ? 'disabled' : ''}\n ${this.underline ? '' : 'no-underline'}\n \n `}\n href={this.href}\n target={this.target}\n rel={this.rel}\n >\n <slot></slot>\n </a>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SddsMessage extends Components.SddsMessage, HTMLElement {}
|
|
4
|
+
export const SddsMessage: {
|
|
5
|
+
prototype: SddsMessage;
|
|
6
|
+
new (): SddsMessage;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|