scb-wc-test 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -0
- package/all.js +54 -0
- package/dummy.png +0 -0
- package/index.d.ts +54 -0
- package/index.js +108 -0
- package/mvc/components/all.js +53 -0
- package/mvc/components/scb-accordion/scb-accordion-item.js +194 -0
- package/mvc/components/scb-accordion/scb-accordion.js +5 -0
- package/mvc/components/scb-app-bar/scb-app-bar.js +144 -0
- package/mvc/components/scb-avatar/scb-avatar.js +99 -0
- package/mvc/components/scb-breadcrumb/scb-breadcrumb-item.js +17 -0
- package/mvc/components/scb-breadcrumb/scb-breadcrumb.js +52 -0
- package/mvc/components/scb-button/scb-button.js +121 -0
- package/mvc/components/scb-calendar-card/scb-calendar-card.js +140 -0
- package/mvc/components/scb-card/scb-card.js +256 -0
- package/mvc/components/scb-checkbox/scb-checkbox-group.js +33 -0
- package/mvc/components/scb-checkbox/scb-checkbox.js +99 -0
- package/mvc/components/scb-chips/scb-chip.js +46 -0
- package/mvc/components/scb-dialog/scb-dialog.js +158 -0
- package/mvc/components/scb-divider/scb-divider.js +53 -0
- package/mvc/components/scb-drawer/scb-drawer-item.js +114 -0
- package/mvc/components/scb-drawer/scb-drawer-section.js +19 -0
- package/mvc/components/scb-drawer/scb-drawer.js +79 -0
- package/mvc/components/scb-drawer/scb-sub-drawer.js +10 -0
- package/mvc/components/scb-fact-card/scb-fact-card-content.js +44 -0
- package/mvc/components/scb-fact-card/scb-fact-card.js +66 -0
- package/mvc/components/scb-footer/scb-footer-section.js +3 -0
- package/mvc/components/scb-footer/scb-footer.js +205 -0
- package/mvc/components/scb-grid/scb-grid-item.js +9 -0
- package/mvc/components/scb-grid/scb-grid.js +81 -0
- package/mvc/components/scb-grid/scb-stack.js +16 -0
- package/mvc/components/scb-header/scb-header-drawer-group.js +1 -0
- package/mvc/components/scb-header/scb-header-drawer-item.js +1 -0
- package/mvc/components/scb-header/scb-header-tab.js +1 -0
- package/mvc/components/scb-header/scb-header-utility.js +1 -0
- package/mvc/components/scb-header/scb-header.js +240 -0
- package/mvc/components/scb-icon-button/scb-icon-button.js +95 -0
- package/mvc/components/scb-keyfigure-card/scb-keyfigure-card.js +69 -0
- package/mvc/components/scb-link/scb-link.js +31 -0
- package/mvc/components/scb-list/scb-list-item.js +38 -0
- package/mvc/components/scb-list/scb-list.js +10 -0
- package/mvc/components/scb-menu/scb-menu-item.js +44 -0
- package/mvc/components/scb-menu/scb-menu.js +17 -0
- package/mvc/components/scb-menu/scb-sub-menu.js +29 -0
- package/mvc/components/scb-notification/scb-notification.js +120 -0
- package/mvc/components/scb-progress-indicator/scb-progress-indicator.js +84 -0
- package/mvc/components/scb-radio-button/scb-radio-button.js +95 -0
- package/mvc/components/scb-radio-button/scb-radio-group.js +28 -0
- package/mvc/components/scb-search/scb-search.js +211 -0
- package/mvc/components/scb-snackbar/scb-snackbar.js +83 -0
- package/mvc/components/scb-status-pill/scb-status-pill.js +31 -0
- package/mvc/components/scb-switch/scb-switch.js +54 -0
- package/mvc/components/scb-tabs/scb-primary-tab.js +7 -0
- package/mvc/components/scb-tabs/scb-secondary-tab.js +7 -0
- package/mvc/components/scb-tabs/scb-tabs.js +23 -0
- package/mvc/components/scb-textfield/scb-textfield.js +135 -0
- package/mvc/components/scb-toc/scb-toc-item.js +84 -0
- package/mvc/components/scb-toc/scb-toc.js +6 -0
- package/mvc/components/scb-tooltip/scb-tooltip.js +216 -0
- package/mvc/scb-logo.svg +21 -0
- package/mvc/scb-wc-test.css +1 -0
- package/mvc/scb.svg +14 -0
- package/mvc/vendor/preload-helper.js +1 -0
- package/mvc/vendor/vendor-lit.js +1 -0
- package/mvc/vendor/vendor-material.js +764 -0
- package/mvc/vendor/vendor.js +68 -0
- package/package.json +248 -0
- package/scb-accordion/scb-accordion-item.d.ts +37 -0
- package/scb-accordion/scb-accordion-item.js +343 -0
- package/scb-accordion/scb-accordion.d.ts +6 -0
- package/scb-accordion/scb-accordion.js +33 -0
- package/scb-app-bar/scb-app-bar.d.ts +10 -0
- package/scb-app-bar/scb-app-bar.js +192 -0
- package/scb-avatar/scb-avatar.d.ts +30 -0
- package/scb-avatar/scb-avatar.js +169 -0
- package/scb-breadcrumb/scb-breadcrumb-item.d.ts +9 -0
- package/scb-breadcrumb/scb-breadcrumb-item.js +54 -0
- package/scb-breadcrumb/scb-breadcrumb.d.ts +16 -0
- package/scb-breadcrumb/scb-breadcrumb.js +105 -0
- package/scb-button/scb-button.d.ts +26 -0
- package/scb-button/scb-button.js +247 -0
- package/scb-calendar-card/scb-calendar-card.d.ts +20 -0
- package/scb-calendar-card/scb-calendar-card.js +191 -0
- package/scb-card/scb-card.d.ts +24 -0
- package/scb-card/scb-card.js +345 -0
- package/scb-checkbox/scb-checkbox-group.d.ts +17 -0
- package/scb-checkbox/scb-checkbox-group.js +80 -0
- package/scb-checkbox/scb-checkbox.d.ts +20 -0
- package/scb-checkbox/scb-checkbox.js +157 -0
- package/scb-chips/scb-chip.d.ts +24 -0
- package/scb-chips/scb-chip.js +150 -0
- package/scb-dialog/scb-dialog.d.ts +58 -0
- package/scb-dialog/scb-dialog.js +390 -0
- package/scb-divider/scb-divider.d.ts +9 -0
- package/scb-divider/scb-divider.js +85 -0
- package/scb-drawer/scb-drawer-item.d.ts +61 -0
- package/scb-drawer/scb-drawer-item.js +220 -0
- package/scb-drawer/scb-drawer-section.d.ts +7 -0
- package/scb-drawer/scb-drawer-section.js +44 -0
- package/scb-drawer/scb-drawer.d.ts +97 -0
- package/scb-drawer/scb-drawer.js +258 -0
- package/scb-drawer/scb-sub-drawer.d.ts +10 -0
- package/scb-drawer/scb-sub-drawer.js +43 -0
- package/scb-fact-card/scb-fact-card-content.d.ts +10 -0
- package/scb-fact-card/scb-fact-card-content.js +83 -0
- package/scb-fact-card/scb-fact-card.d.ts +15 -0
- package/scb-fact-card/scb-fact-card.js +110 -0
- package/scb-footer/scb-footer-section.d.ts +21 -0
- package/scb-footer/scb-footer-section.js +28 -0
- package/scb-footer/scb-footer.d.ts +27 -0
- package/scb-footer/scb-footer.js +326 -0
- package/scb-grid/scb-grid-item.d.ts +28 -0
- package/scb-grid/scb-grid-item.js +66 -0
- package/scb-grid/scb-grid.d.ts +33 -0
- package/scb-grid/scb-grid.js +152 -0
- package/scb-grid/scb-stack.d.ts +29 -0
- package/scb-grid/scb-stack.js +82 -0
- package/scb-header/scb-header-drawer-group.d.ts +13 -0
- package/scb-header/scb-header-drawer-group.js +28 -0
- package/scb-header/scb-header-drawer-item.d.ts +14 -0
- package/scb-header/scb-header-drawer-item.js +31 -0
- package/scb-header/scb-header-tab.d.ts +13 -0
- package/scb-header/scb-header-tab.js +28 -0
- package/scb-header/scb-header-utility.d.ts +14 -0
- package/scb-header/scb-header-utility.js +31 -0
- package/scb-header/scb-header.d.ts +105 -0
- package/scb-header/scb-header.js +618 -0
- package/scb-icon-button/scb-icon-button.d.ts +31 -0
- package/scb-icon-button/scb-icon-button.js +208 -0
- package/scb-keyfigure-card/scb-keyfigure-card.d.ts +13 -0
- package/scb-keyfigure-card/scb-keyfigure-card.js +119 -0
- package/scb-link/scb-link.d.ts +17 -0
- package/scb-link/scb-link.js +74 -0
- package/scb-list/scb-list-item.d.ts +32 -0
- package/scb-list/scb-list-item.js +144 -0
- package/scb-list/scb-list.d.ts +8 -0
- package/scb-list/scb-list.js +39 -0
- package/scb-logo.svg +21 -0
- package/scb-menu/scb-menu-item.d.ts +22 -0
- package/scb-menu/scb-menu-item.js +107 -0
- package/scb-menu/scb-menu.d.ts +21 -0
- package/scb-menu/scb-menu.js +98 -0
- package/scb-menu/scb-sub-menu.d.ts +12 -0
- package/scb-menu/scb-sub-menu.js +69 -0
- package/scb-notification/scb-notification.d.ts +16 -0
- package/scb-notification/scb-notification.js +187 -0
- package/scb-progress-indicator/scb-progress-indicator.d.ts +11 -0
- package/scb-progress-indicator/scb-progress-indicator.js +122 -0
- package/scb-radio-button/scb-radio-button.d.ts +19 -0
- package/scb-radio-button/scb-radio-button.js +176 -0
- package/scb-radio-button/scb-radio-group.d.ts +20 -0
- package/scb-radio-button/scb-radio-group.js +81 -0
- package/scb-search/scb-search.d.ts +45 -0
- package/scb-search/scb-search.js +410 -0
- package/scb-snackbar/scb-snackbar.d.ts +17 -0
- package/scb-snackbar/scb-snackbar.js +140 -0
- package/scb-status-pill/scb-status-pill.d.ts +9 -0
- package/scb-status-pill/scb-status-pill.js +62 -0
- package/scb-switch/scb-switch.d.ts +21 -0
- package/scb-switch/scb-switch.js +111 -0
- package/scb-tabs/scb-primary-tab.d.ts +17 -0
- package/scb-tabs/scb-primary-tab.js +93 -0
- package/scb-tabs/scb-secondary-tab.d.ts +17 -0
- package/scb-tabs/scb-secondary-tab.js +97 -0
- package/scb-tabs/scb-tabs.d.ts +10 -0
- package/scb-tabs/scb-tabs.js +66 -0
- package/scb-textfield/scb-textfield.d.ts +41 -0
- package/scb-textfield/scb-textfield.js +258 -0
- package/scb-toc/scb-toc-item.d.ts +21 -0
- package/scb-toc/scb-toc-item.js +196 -0
- package/scb-toc/scb-toc.d.ts +6 -0
- package/scb-toc/scb-toc.js +27 -0
- package/scb-tooltip/scb-tooltip.d.ts +32 -0
- package/scb-tooltip/scb-tooltip.js +329 -0
- package/scb-wc-test.bundle.js +5429 -0
- package/scb-wc-test.css +1 -0
- package/scb-wc-test.d.ts +106 -0
- package/scb.svg +14 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import{b as y,n as h,i as x,E as b,x as d,t as A}from"../../vendor/vendor.js";import"../scb-list/scb-list.js";import"../../vendor/vendor-material.js";import"../../vendor/preload-helper.js";import"../scb-list/scb-list-item.js";var w=Object.defineProperty,I=Object.getOwnPropertyDescriptor,l=(e,t,s,n)=>{for(var i=n>1?void 0:n?I(t,s):t,r=e.length-1,a;r>=0;r--)(a=e[r])&&(i=(n?a(t,s,i):a(i))||i);return n&&i&&w(t,s,i),i};let S=0,o=class extends x{constructor(){super(...arguments),this.supportingText="Hinted search text",this.value="",this.size="default",this.fullScreen=!1,this._inputFocused=!1,this._visibleSuggestions=0,this._activeIndex=-1,this._listboxId=`scb-search-listbox-${++S}`,this._kbMode=!1}connectedCallback(){super.connectedCallback()}disconnectedCallback(){const e=this._inputEl();e&&this._boundNativeKeydown&&e.removeEventListener("keydown",this._boundNativeKeydown,!0),super.disconnectedCallback()}firstUpdated(){this._ensureListboxA11y(),this._updateComboboxA11y();const e=this._inputEl();e&&(this._boundNativeKeydown=t=>this._handleKey(t),e.addEventListener("keydown",this._boundNativeKeydown,!0))}updated(){this._ensureListboxA11y(),this._updateComboboxA11y()}render(){const e=(this.value??"").trim().length>0,t=this._inputFocused&&e&&this._hasSuggestions;return d`
|
|
2
|
+
<div class="ripple-wrapper">
|
|
3
|
+
<md-icon class="leading">${e?"arrow_back":"search"}</md-icon>
|
|
4
|
+
|
|
5
|
+
<input
|
|
6
|
+
id="searchInput"
|
|
7
|
+
type="search"
|
|
8
|
+
name="textfield"
|
|
9
|
+
class=${t?"with-list":""}
|
|
10
|
+
.value=${this.value}
|
|
11
|
+
placeholder=${this.supportingText}
|
|
12
|
+
autocomplete="off"
|
|
13
|
+
@input=${this._onInput}
|
|
14
|
+
@focus=${this._onFocus}
|
|
15
|
+
@blur=${this._onBlur}
|
|
16
|
+
aria-label=${this.supportingText||"Sök"}
|
|
17
|
+
/>
|
|
18
|
+
|
|
19
|
+
${e?d`<button class="clear-btn" @click=${this._clearInput} tabindex="-1" aria-label="Rensa sökfält">
|
|
20
|
+
<md-icon>close</md-icon>
|
|
21
|
+
</button>`:this.trailingIcon?d`<span class="trailing"><md-icon>${this.trailingIcon}</md-icon></span>`:b}
|
|
22
|
+
|
|
23
|
+
<md-ripple></md-ripple>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="list-divider" aria-hidden=${String(!(this.fullScreen&&t))}></div>
|
|
27
|
+
|
|
28
|
+
${t?d`<scb-list class="suggestion-list" id=${this._listboxId}>
|
|
29
|
+
<slot @slotchange=${this._onSlotChange}></slot>
|
|
30
|
+
</scb-list>`:b}
|
|
31
|
+
`}submit(){const e=this._getActiveItem(),t={value:this.value};e&&(t.active=this._itemPayload(e)),this.dispatchEvent(new CustomEvent("scb-search-submit",{detail:t,bubbles:!0,composed:!0}))}get _hasSuggestions(){return this._visibleSuggestions>=0?this._visibleSuggestions>0:Array.from(this.getElementsByTagName("scb-list-item")).some(t=>!t.hasAttribute("hidden")&&t.style.display!=="none")}_onSlotChange(){this._filterSuggestions(this.value)}_onInput(e){const t=e.target;this.value=t.value,this._filterSuggestions(this.value),this._activeIndex=-1,this._kbMode=!1,this._updateComboboxA11y(),this.dispatchEvent(new CustomEvent("scb-search-input",{detail:{value:this.value},bubbles:!0,composed:!0}))}_onFocus(){this._inputFocused=!0,this._filterSuggestions(this.value),this._updateComboboxA11y(),this.requestUpdate()}_onBlur(){setTimeout(()=>{this._inputFocused=!1,this._activeIndex=-1,this._kbMode=!1,this._updateComboboxA11y(),this.requestUpdate()},100)}_handleKey(e){if(!this._inputEl())return;const s=this._getVisibleItems(),n=(this.value??"").trim().length>0,i=this._inputFocused&&n&&s.length>0,r=e.key,a=e.keyCode,c=r==="ArrowDown"||r==="Down"||a===40,p=r==="ArrowUp"||r==="Up"||a===38,v=r==="Home"||a===36,g=r==="End"||a===35,m=r==="Enter"||a===13,f=r==="Escape"||r==="Esc"||a===27;if(c){if(!i)return;e.preventDefault(),this._kbMode=!0,this._moveActive(s,1);return}if(p){if(!i)return;e.preventDefault(),this._kbMode=!0,this._moveActive(s,-1);return}if(v){if(!i)return;e.preventDefault(),this._kbMode=!0,this._activeIndex=s.length?0:-1,this._updateComboboxA11y(),this._scrollActiveIntoView();return}if(g){if(!i)return;e.preventDefault(),this._kbMode=!0,this._activeIndex=s.length?s.length-1:-1,this._updateComboboxA11y(),this._scrollActiveIntoView();return}if(m){if(!i){this.submit();return}e.preventDefault();const u=this._getActiveItem();if(u){const _=u.getAttribute("label")||"";this.value=_,this.dispatchEvent(new CustomEvent("scb-search-submit",{detail:{value:this.value,active:this._itemPayload(u)},bubbles:!0,composed:!0})),this._visibleSuggestions=0,this._activeIndex=-1,this._kbMode=!1,this.requestUpdate()}else this.submit();return}if(f){e.preventDefault(),this._clearInput();return}}_clearInput(){this.value="",this._activeIndex=-1,this._kbMode=!1;const e=this._inputEl();e?.focus(),e&&(e.value=""),this._filterSuggestions(""),this._updateComboboxA11y(),this.dispatchEvent(new CustomEvent("scb-search-clear",{bubbles:!0,composed:!0}))}_filterSuggestions(e){const t=(e??"").trim().toLowerCase(),s=Array.from(this.querySelectorAll("scb-list-item"));let n=0;for(const i of s){const r=(i.getAttribute("label")||"").toLowerCase(),a=(i.getAttribute("supporting-text")||"").toLowerCase(),c=`${r} ${a}`.trim();t!==""&&c.includes(t)?(i.removeAttribute("hidden"),n++):i.setAttribute("hidden",""),this._ensureOptionA11y(i)}this._visibleSuggestions=n,this._activeIndex>=n&&(this._activeIndex=-1),this._updateComboboxA11y(),this.requestUpdate()}_inputEl(){return this.renderRoot?.querySelector("#searchInput")??null}_listEl(){return this.renderRoot?.querySelector("scb-list.suggestion-list")??null}_getVisibleItems(){return Array.from(this.querySelectorAll("scb-list-item")).filter(t=>!t.hasAttribute("hidden")&&t.style.display!=="none")}_getActiveItem(){const e=this._getVisibleItems();return this._activeIndex<0||this._activeIndex>=e.length?null:e[this._activeIndex]??null}_moveActive(e,t){if(!e.length){this._activeIndex=-1,this._updateComboboxA11y();return}let s=this._activeIndex+t;this._activeIndex===-1?s=t>0?0:e.length-1:(s<0&&(s=0),s>=e.length&&(s=e.length-1)),this._activeIndex=s,this._updateComboboxA11y(),this._scrollActiveIntoView()}_scrollActiveIntoView(){const e=this._getActiveItem();e&&e.scrollIntoView({block:"nearest"})}_itemPayload(e){return{label:e.getAttribute("label")||"",supportingText:e.getAttribute("supporting-text")||"",href:e.getAttribute("href")||"",type:e.getAttribute("type")||"",id:e.id||""}}_ensureListboxA11y(){const e=this._listEl();e&&(e.id||(e.id=this._listboxId),e.setAttribute("role","listbox"),e.setAttribute("aria-label","Sökförslag")),Array.from(this.querySelectorAll("scb-list-item")).forEach(s=>this._ensureOptionA11y(s))}_ensureOptionA11y(e){e.id||(e.id=`${this._listboxId}-opt-${Math.random().toString(36).slice(2,8)}`),e.setAttribute("role","option"),e.setAttribute("tabindex","-1")}_updateComboboxA11y(){const e=this._inputEl();if(!e)return;const t=this._getVisibleItems(),s=(this.value??"").trim().length>0,n=this._inputFocused&&s&&t.length>0;e.setAttribute("role","combobox"),e.setAttribute("aria-autocomplete","list"),e.setAttribute("aria-controls",this._listboxId),e.setAttribute("aria-expanded",String(n));const i=n?this._getActiveItem():null;i?.id?e.setAttribute("aria-activedescendant",i.id):e.removeAttribute("aria-activedescendant"),t.forEach((r,a)=>{const c=a===this._activeIndex;r.setAttribute("aria-selected",String(c)),r.style.boxShadow="",r.style.borderRadius="",this._kbMode&&c&&(r.style.boxShadow="inset 0 0 0 var(--md-focus-ring-width, 2px) var(--md-focus-ring-color, var(--p-40))",r.style.borderRadius="var(--md-sys-shape-corner-small, 8px)")})}};o.styles=y`
|
|
32
|
+
:host {
|
|
33
|
+
display: flex;
|
|
34
|
+
flex-direction: column;
|
|
35
|
+
position: relative;
|
|
36
|
+
color: var(--md-sys-color-on-surface);
|
|
37
|
+
-webkit-tap-highlight-color: transparent;
|
|
38
|
+
|
|
39
|
+
--scb-search-radius: var(--radius-full, 1000px);
|
|
40
|
+
--scb-search-open-radius: var(--radius-xl, 24px);
|
|
41
|
+
|
|
42
|
+
--scb-search-height: 56px;
|
|
43
|
+
--scb-search-padding-x: var(--spacing-5, 16px);
|
|
44
|
+
--scb-search-padding-y: var(--spacing-5, 16px);
|
|
45
|
+
|
|
46
|
+
--scb-search-leading-size: var(--scale-11, 48px);
|
|
47
|
+
--scb-search-trailing-size: var(--scale-11, 48px);
|
|
48
|
+
--scb-search-gap: var(--spacing-2, 4px);
|
|
49
|
+
|
|
50
|
+
letter-spacing: var(--md-sys-typescale-body-large-tracking, -0.3px);
|
|
51
|
+
|
|
52
|
+
--scb-search-leading-gap: calc(
|
|
53
|
+
var(--scb-search-padding-x) + var(--scb-search-leading-size) + var(--scb-search-gap)
|
|
54
|
+
);
|
|
55
|
+
--scb-search-trailing-gap: calc(
|
|
56
|
+
var(--scb-search-padding-x) + var(--scb-search-trailing-size) + var(--scb-search-gap)
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
--scb-search-font-size: var(--md-sys-typescale-body-large-size, 18px);
|
|
60
|
+
--scb-search-line-height: var(--md-sys-typescale-body-large-line-height, 24px);
|
|
61
|
+
--scb-search-icon-size: var(--icon-size-small, 24px);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:host([size="compact"]) {
|
|
65
|
+
--scb-search-height: var(--scale-11, 40px);
|
|
66
|
+
--scb-search-padding-x: var(--spacing-4, 12px);
|
|
67
|
+
--scb-search-padding-y: var(--spacing-3, 8px);
|
|
68
|
+
--scb-search-open-radius: var(--radius-l, 16px);
|
|
69
|
+
--scb-search-font-size: var(--md-sys-typescale-body-medium-size, 0.875rem);
|
|
70
|
+
--scb-search-line-height: var(--md-sys-typescale-body-medium-line-height, 20px);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.ripple-wrapper {
|
|
74
|
+
position: relative;
|
|
75
|
+
display: flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
width: 100%;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.leading {
|
|
81
|
+
position: absolute;
|
|
82
|
+
left: var(--scb-search-padding-x);
|
|
83
|
+
top: 50%;
|
|
84
|
+
transform: translateY(-50%);
|
|
85
|
+
width: var(--scb-search-leading-size);
|
|
86
|
+
height: var(--scb-search-leading-size);
|
|
87
|
+
display: flex;
|
|
88
|
+
align-items: center;
|
|
89
|
+
justify-content: center;
|
|
90
|
+
pointer-events: none;
|
|
91
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
92
|
+
z-index: 2;
|
|
93
|
+
}
|
|
94
|
+
.leading md-icon {
|
|
95
|
+
font-size: var(--scb-search-icon-size);
|
|
96
|
+
line-height: 1;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.trailing,
|
|
100
|
+
.clear-btn {
|
|
101
|
+
position: absolute;
|
|
102
|
+
right: var(--scb-search-padding-x);
|
|
103
|
+
top: 50%;
|
|
104
|
+
transform: translateY(-50%);
|
|
105
|
+
width: var(--scb-search-trailing-size);
|
|
106
|
+
height: var(--scb-search-trailing-size);
|
|
107
|
+
display: inline-flex;
|
|
108
|
+
align-items: center;
|
|
109
|
+
justify-content: center;
|
|
110
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
111
|
+
z-index: 3;
|
|
112
|
+
}
|
|
113
|
+
.trailing md-icon { pointer-events: none; font-size: var(--scb-search-icon-size); }
|
|
114
|
+
|
|
115
|
+
.clear-btn {
|
|
116
|
+
background: none;
|
|
117
|
+
border: 0;
|
|
118
|
+
padding: 0;
|
|
119
|
+
cursor: pointer;
|
|
120
|
+
}
|
|
121
|
+
.clear-btn[hidden] { display: none; }
|
|
122
|
+
|
|
123
|
+
input[type="search"] {
|
|
124
|
+
padding:
|
|
125
|
+
var(--scb-search-padding-y)
|
|
126
|
+
var(--scb-search-trailing-gap)
|
|
127
|
+
var(--scb-search-padding-y)
|
|
128
|
+
var(--scb-search-leading-gap);
|
|
129
|
+
min-height: var(--scb-search-height);
|
|
130
|
+
width: 100%;
|
|
131
|
+
box-sizing: border-box;
|
|
132
|
+
|
|
133
|
+
border: var(--stroke-border, 1px) solid var(--md-sys-color-outline);
|
|
134
|
+
border-radius: var(--scb-search-radius);
|
|
135
|
+
|
|
136
|
+
font-family: var(--md-sys-typescale-body-large-font, var(--brand-font, Inter), sans-serif);
|
|
137
|
+
font-size: var(--scb-search-font-size);
|
|
138
|
+
line-height: var(--scb-search-line-height);
|
|
139
|
+
|
|
140
|
+
color: var(--md-sys-color-on-surface);
|
|
141
|
+
background: var(--md-sys-color-surface);
|
|
142
|
+
|
|
143
|
+
position: relative;
|
|
144
|
+
z-index: 1;
|
|
145
|
+
}
|
|
146
|
+
input[type="search"]::placeholder {
|
|
147
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
148
|
+
font-size: var(--scb-search-font-size);
|
|
149
|
+
line-height: var(--scb-search-line-height);
|
|
150
|
+
}
|
|
151
|
+
input[type="search"]:hover { outline: var(--md-sys-color-outline) auto var(--stroke-border, 1px); }
|
|
152
|
+
input[type="search"]:focus { outline: none; }
|
|
153
|
+
|
|
154
|
+
md-ripple {
|
|
155
|
+
border-radius: var(--scb-search-radius);
|
|
156
|
+
position: absolute;
|
|
157
|
+
inset: 0;
|
|
158
|
+
z-index: 2;
|
|
159
|
+
pointer-events: none;
|
|
160
|
+
--md-ripple-hover-color: transparent;
|
|
161
|
+
--md-ripple-hover-opacity: 0;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
input[type="search"]::-webkit-search-cancel-button {
|
|
165
|
+
-webkit-appearance: none;
|
|
166
|
+
appearance: none;
|
|
167
|
+
display: none;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
input.with-list { border-radius: var(--scb-search-open-radius) var(--scb-search-open-radius) 0 0; }
|
|
171
|
+
input.with-list ~ md-ripple { border-radius: var(--scb-search-open-radius) var(--scb-search-open-radius) 0 0; }
|
|
172
|
+
|
|
173
|
+
scb-list.suggestion-list {
|
|
174
|
+
position: absolute;
|
|
175
|
+
top: 100%;
|
|
176
|
+
left: 0;
|
|
177
|
+
width: 100%;
|
|
178
|
+
z-index: 10;
|
|
179
|
+
background: var(--md-sys-color-surface);
|
|
180
|
+
border: var(--stroke-border, 1px) solid var(--md-sys-color-outline);
|
|
181
|
+
border-top: 0;
|
|
182
|
+
border-radius: 0 0 var(--scb-search-open-radius) var(--scb-search-open-radius);
|
|
183
|
+
overflow: hidden;
|
|
184
|
+
box-sizing: border-box;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
:host([full-screen]) input[type="search"],
|
|
188
|
+
:host([full-screen]) input.with-list,
|
|
189
|
+
:host([full-screen]) input.with-list ~ md-ripple,
|
|
190
|
+
:host([full-screen]) md-ripple {
|
|
191
|
+
border-radius: var(--radius-none, 0px) !important;
|
|
192
|
+
}
|
|
193
|
+
:host([full-screen]) scb-list.suggestion-list {
|
|
194
|
+
position: static;
|
|
195
|
+
border: 0;
|
|
196
|
+
border-radius: 0;
|
|
197
|
+
background: transparent;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.list-divider {
|
|
201
|
+
display: none;
|
|
202
|
+
height: var(--stroke-border, 1px);
|
|
203
|
+
background: var(--md-sys-color-outline);
|
|
204
|
+
width: 100%;
|
|
205
|
+
}
|
|
206
|
+
:host([full-screen]) .list-divider[aria-hidden="false"] { display: block; }
|
|
207
|
+
|
|
208
|
+
@media (prefers-color-scheme: dark) {
|
|
209
|
+
:host { color: var(--md-sys-color-on-surface); }
|
|
210
|
+
}
|
|
211
|
+
`;l([h({type:String,attribute:"trailing-icon"})],o.prototype,"trailingIcon",2);l([h({type:String,attribute:"supporting-text"})],o.prototype,"supportingText",2);l([h({type:String})],o.prototype,"value",2);l([h({type:String,reflect:!0})],o.prototype,"size",2);l([h({type:Boolean,attribute:"full-screen",reflect:!0})],o.prototype,"fullScreen",2);o=l([A("scb-search")],o);
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import{b as d,n as r,i as u,x as a,t as b}from"../../vendor/vendor.js";import"../scb-icon-button/scb-icon-button.js";import"../scb-button/scb-button.js";import"../../vendor/preload-helper.js";var h=Object.defineProperty,m=Object.getOwnPropertyDescriptor,s=(t,e,i,c)=>{for(var n=c>1?void 0:c?m(e,i):e,l=t.length-1,p;l>=0;l--)(p=t[l])&&(n=(c?p(e,i,n):p(n))||n);return c&&n&&h(e,i,n),n};let o=class extends u{constructor(){super(...arguments),this.message="",this.open=!1,this.actionText="",this.showClose=!1,this.fixed=!1,this.fadeout=!1,this.withLongerAction=!1}handleAction(){this.dispatchEvent(new CustomEvent("snackbar-action")),this.open=!1}handleClose(){this.dispatchEvent(new CustomEvent("snackbar-close")),this.open=!1}updated(t){super.updated(t),(t.has("open")||t.has("fadeout"))&&(this.open&&this.fadeout?(window.clearTimeout(this._fadeoutTimer),this._fadeoutTimer=window.setTimeout(()=>{this.open=!1},5e3)):window.clearTimeout(this._fadeoutTimer))}render(){const t=!!this.actionText,e=!!this.showClose;let i="snackbar";return!t&&!e&&(i+=" no-actions"),this.withLongerAction&&(i+=" longer-action"),a`
|
|
2
|
+
<div class="${i}" ?hidden=${!this.open}>
|
|
3
|
+
${this.withLongerAction?a`
|
|
4
|
+
<div class="message">${this.message}</div>
|
|
5
|
+
<div class="actions">
|
|
6
|
+
${t?a`<scb-button variant="text" label=${this.actionText} @click=${this.handleAction}></scb-button>`:""}
|
|
7
|
+
${e?a`<scb-icon-button icon="close" @click=${this.handleClose} aria-label="Stäng"></scb-icon-button>`:""}
|
|
8
|
+
</div>
|
|
9
|
+
`:a`
|
|
10
|
+
<span class="message">${this.message}</span>
|
|
11
|
+
${t?a`<scb-button variant="text" label=${this.actionText} @click=${this.handleAction}></scb-button>`:""}
|
|
12
|
+
${e?a`<scb-icon-button icon="close" @click=${this.handleClose} aria-label="Stäng"></scb-icon-button>`:""}
|
|
13
|
+
`}
|
|
14
|
+
|
|
15
|
+
</div>
|
|
16
|
+
`}};o.styles=d`
|
|
17
|
+
:host {
|
|
18
|
+
position: relative;
|
|
19
|
+
display: block;
|
|
20
|
+
min-width: 312px;
|
|
21
|
+
max-width: 560px;
|
|
22
|
+
}
|
|
23
|
+
:host([fixed]) {
|
|
24
|
+
position: fixed;
|
|
25
|
+
z-index: 9999;
|
|
26
|
+
left: 50%;
|
|
27
|
+
bottom: 24px;
|
|
28
|
+
transform: translateX(-50%);
|
|
29
|
+
}
|
|
30
|
+
.snackbar {
|
|
31
|
+
background: var(--md-sys-color-inverse-surface);
|
|
32
|
+
color: var(--md-sys-color-inverse-on-surface);
|
|
33
|
+
border-radius: 4px;
|
|
34
|
+
box-shadow: 0 4px 8px 3px rgba(0, 0, 0, 0.15), 0 1px 3px 0 rgba(0, 0, 0, 0.30);
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
padding: 14px 16px;
|
|
38
|
+
font-size: 16px;
|
|
39
|
+
opacity: 0;
|
|
40
|
+
transition: opacity 0.3s, bottom 0.3s;
|
|
41
|
+
pointer-events: auto;
|
|
42
|
+
position: relative;
|
|
43
|
+
}
|
|
44
|
+
.snackbar.longer-action {
|
|
45
|
+
flex-direction: column;
|
|
46
|
+
align-items: flex-start;
|
|
47
|
+
}
|
|
48
|
+
.snackbar .actions {
|
|
49
|
+
display: flex;
|
|
50
|
+
margin-top: 10px;
|
|
51
|
+
width: 100%;
|
|
52
|
+
justify-content: flex-end;
|
|
53
|
+
|
|
54
|
+
}
|
|
55
|
+
.message.no-actions {
|
|
56
|
+
margin-right: 0;
|
|
57
|
+
}
|
|
58
|
+
:host([open]) .snackbar {
|
|
59
|
+
opacity: 1;
|
|
60
|
+
pointer-events: auto;
|
|
61
|
+
}
|
|
62
|
+
.message {
|
|
63
|
+
flex: 1 1 auto;
|
|
64
|
+
margin-right: 4px;
|
|
65
|
+
}
|
|
66
|
+
.snackbar scb-icon-button{
|
|
67
|
+
--md-icon-button-icon-color: var(--md-sys-color-inverse-on-surface);
|
|
68
|
+
--md-icon-button-hover-icon-color: var(--md-sys-color-inverse-on-surface);
|
|
69
|
+
--md-icon-button-hover-state-layer-color: var(--md-sys-color-surface-container);
|
|
70
|
+
--md-icon-button-focus-icon-color: var(--md-sys-color-inverse-on-surface);
|
|
71
|
+
--md-icon-button-pressed-icon-color: var(--md-sys-color-inverse-on-surface);
|
|
72
|
+
--md-focus-ring-color: var(--md-sys-color-inverse-on-surface);
|
|
73
|
+
}
|
|
74
|
+
.snackbar scb-button{
|
|
75
|
+
--md-text-button-label-text-color: var(--md-sys-color-inverse-primary);
|
|
76
|
+
--md-text-button-hover-label-text-color: var(--md-sys-color-inverse-primary);
|
|
77
|
+
--md-text-button-hover-state-layer-color: var(--md-sys-color-surface-container);
|
|
78
|
+
--md-text-button-focus-label-text-color: var(--md-sys-color-inverse-primary);
|
|
79
|
+
--md-text-button-pressed-label-text-color: var(--md-sys-color-inverse-primary);
|
|
80
|
+
--md-focus-ring-color: var(--md-sys-color-inverse-on-surface);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
`;s([r({type:String})],o.prototype,"message",2);s([r({type:Boolean,reflect:!0})],o.prototype,"open",2);s([r({type:String,attribute:"action-text"})],o.prototype,"actionText",2);s([r({type:Boolean,attribute:"show-close"})],o.prototype,"showClose",2);s([r({type:Boolean,reflect:!0})],o.prototype,"fixed",2);s([r({type:Boolean})],o.prototype,"fadeout",2);s([r({type:Boolean,attribute:"with-longer-action"})],o.prototype,"withLongerAction",2);o=s([b("scb-snackbar")],o);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import{b as u,n as l,i as d,x as n,t as h}from"../../vendor/vendor.js";import"../../vendor/vendor-material.js";var b=Object.defineProperty,m=Object.getOwnPropertyDescriptor,e=(p,o,c,t)=>{for(var s=t>1?void 0:t?m(o,c):o,i=p.length-1,a;i>=0;i--)(a=p[i])&&(s=(t?a(o,c,s):a(s))||s);return t&&s&&b(o,c,s),s};let r=class extends d{constructor(){super(...arguments),this.status="",this.label="",this.showIcon=!1}render(){return n`
|
|
2
|
+
${this.showIcon?this.status==="success"?n`<md-icon>check_circle</md-icon>`:this.status==="warning"?n`<md-icon>warning</md-icon>`:this.status==="error"?n`<md-icon>error</md-icon>`:"":""}
|
|
3
|
+
<span>${this.label}</span>
|
|
4
|
+
`}};r.styles=u`
|
|
5
|
+
:host {
|
|
6
|
+
display: inline-block;
|
|
7
|
+
border-radius: 999px;
|
|
8
|
+
padding: 6px 16px;
|
|
9
|
+
font-size: 14px;
|
|
10
|
+
font-weight: 600;
|
|
11
|
+
border: none;
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
user-select: none;
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
gap: 8px;
|
|
17
|
+
width: fit-content;
|
|
18
|
+
}
|
|
19
|
+
:host([status="success"]) {
|
|
20
|
+
background: var(--md-sys-color-success-container);
|
|
21
|
+
color: var(--md-sys-color-on-success-container);
|
|
22
|
+
}
|
|
23
|
+
:host([status="warning"]) {
|
|
24
|
+
background: var(--md-sys-color-warning-container);
|
|
25
|
+
color: var(--md-sys-color-on-warning-container);
|
|
26
|
+
}
|
|
27
|
+
:host([status="error"]) {
|
|
28
|
+
background: var(--md-sys-color-error-container);
|
|
29
|
+
color: var(--md-sys-color-on-error-container);
|
|
30
|
+
}
|
|
31
|
+
`;e([l({type:String})],r.prototype,"status",2);e([l({type:String})],r.prototype,"label",2);e([l({type:Boolean,attribute:"show-icon"})],r.prototype,"showIcon",2);r=e([h("scb-status-pill")],r);
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../../vendor/vendor-material.js","../../vendor/vendor.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as b}from"../../vendor/preload-helper.js";import{i as v,E as h,x as p,b as w,n as l,t as y}from"../../vendor/vendor.js";var g=Object.defineProperty,m=Object.getOwnPropertyDescriptor,f=t=>{throw TypeError(t)},i=(t,e,s,n)=>{for(var r=n>1?void 0:n?m(e,s):e,c=t.length-1,d;c>=0;c--)(d=t[c])&&(r=(n?d(e,s,r):d(r))||r);return n&&r&&g(e,s,r),r},u=(t,e,s)=>e.has(t)||f("Cannot "+s),_=(t,e,s)=>(u(t,e,"read from private field"),e.get(t)),x=(t,e,s)=>e.has(t)?f("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,s),E=(t,e,s,n)=>(u(t,e,"write to private field"),e.set(t,s),s),o;let a=class extends v{constructor(){super(...arguments),this.label="",this.ariaLabel="",this.icons=!1,this.selected=!1,this.disabled=!1,this.fullWidth=!1,x(this,o,!1)}updated(){this.toggleAttribute("aria-disabled",this.disabled)}async firstUpdated(){_(this,o)||(await b(()=>import("../../vendor/vendor-material.js").then(e=>e._),__vite__mapDeps([0,1]),import.meta.url),E(this,o,!0)),this.shadowRoot?.querySelector("md-switch")?.addEventListener("change",e=>{this.selected=e.target.selected,this.dispatchEvent(new CustomEvent("change",{detail:{selected:this.selected},bubbles:!0,composed:!0}))})}render(){const t=this.label.trim().length>0,e=t?h:this.ariaLabel||h,s=p`
|
|
3
|
+
<md-switch
|
|
4
|
+
?icons=${this.icons}
|
|
5
|
+
?selected=${this.selected}
|
|
6
|
+
?disabled=${this.disabled}
|
|
7
|
+
aria-label=${e}
|
|
8
|
+
></md-switch>
|
|
9
|
+
`;return t?p`
|
|
10
|
+
<label class="switch-container" ?disabled=${this.disabled}>
|
|
11
|
+
<span class="switch-label">${this.label}</span>
|
|
12
|
+
${s}
|
|
13
|
+
</label>
|
|
14
|
+
`:s}};o=new WeakMap;a.styles=w`
|
|
15
|
+
:host {
|
|
16
|
+
display: block;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.switch-container {
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
justify-content: flex-start;
|
|
23
|
+
width: auto;
|
|
24
|
+
|
|
25
|
+
/* Gap hämtas från spacing-tokens och följer density-lägen */
|
|
26
|
+
gap: var(--scb-switch-gap, var(--spacing-3, 8px));
|
|
27
|
+
|
|
28
|
+
cursor: pointer;
|
|
29
|
+
|
|
30
|
+
/* Basfärg för innehållet. Labeln ärver om inget annat anges. */
|
|
31
|
+
color: var(--md-sys-color-on-surface);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* När full-width är true, kör space-between + 100% bredd */
|
|
35
|
+
:host([full-width]) .switch-container {
|
|
36
|
+
justify-content: space-between;
|
|
37
|
+
width: 100%;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.switch-label {
|
|
41
|
+
/* liten vertikal justering kopplad till spacing-tokens */
|
|
42
|
+
transform: translateY(var(--scb-switch-label-offset-y, var(--spacing-1, 2px)));
|
|
43
|
+
|
|
44
|
+
/* Typografiska tokens*/
|
|
45
|
+
font-family: var(--brand-font, 'Inter', sans-serif);
|
|
46
|
+
font-size: var(--md-sys-typescale-title-medium-size, 18px);
|
|
47
|
+
line-height: var(--md-sys-typescale-title-medium-line-height, 26px);
|
|
48
|
+
font-weight: var(--md-sys-typescale-title-large-weight, 600);
|
|
49
|
+
letter-spacing: var(--md-sys-typescale-title-medium-tracking, -0.3px);
|
|
50
|
+
|
|
51
|
+
/* Ärver färg från container */
|
|
52
|
+
color: var(--scb-switch-label-color, inherit);
|
|
53
|
+
}
|
|
54
|
+
`;i([l({type:String})],a.prototype,"label",2);i([l({type:String,reflect:!0,attribute:"aria-label"})],a.prototype,"ariaLabel",2);i([l({type:Boolean,reflect:!0})],a.prototype,"icons",2);i([l({type:Boolean,reflect:!0})],a.prototype,"selected",2);i([l({type:Boolean,reflect:!0})],a.prototype,"disabled",2);i([l({type:Boolean,reflect:!0,attribute:"full-width"})],a.prototype,"fullWidth",2);a=i([y("scb-switch")],a);export{a as ScbSwitch};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../../vendor/vendor-material.js","../../vendor/vendor.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as p}from"../../vendor/preload-helper.js";import{b as d}from"../../vendor/vendor-material.js";import{b as u,n as l,t as h}from"../../vendor/vendor.js";var b=Object.defineProperty,_=Object.getOwnPropertyDescriptor,s=(t,e,r,n)=>{for(var i=n>1?void 0:n?_(e,r):e,c=t.length-1,a;c>=0;c--)(a=t[c])&&(i=(n?a(e,r,i):a(i))||i);return n&&i&&b(e,r,i),i};let o=class extends d{constructor(){super(...arguments),this.iconOnly=!1,this.inlineIcon=!1,this._onActivate=()=>{const t=this.textContent?.trim()??"";this.dispatchEvent(new CustomEvent("activate",{detail:{label:t},bubbles:!0,composed:!0}))}}connectedCallback(){super.connectedCallback(),this.setAttribute("role","tab")}get icon(){return this._icon}set icon(t){const e=this._icon;e!==t&&(this._icon=t,this.requestUpdate("icon",e),this.updateIconSlot())}firstUpdated(t){super.firstUpdated(t),this.addEventListener("click",this._onActivate),this._icon&&this.updateIconSlot()}updated(){if(super.updated(),this.setAttribute("aria-selected",this.active?"true":"false"),this.iconOnly&&!this.hasAttribute("aria-label")){const t=this.textContent?.trim()??"";t&&this.setAttribute("aria-label",t)}}async ensureMdIconLoaded(){const t=globalThis;t.__mdIconLoaded||(await p(()=>import("../../vendor/vendor-material.js").then(e=>e.i),__vite__mapDeps([0,1]),import.meta.url),t.__mdIconLoaded=!0)}async updateIconSlot(){const t=this.querySelector('md-icon[slot="icon"]');if(!this._icon){t?.remove();return}if(await this.ensureMdIconLoaded(),t)t.textContent=this._icon;else{const e=document.createElement("md-icon");e.setAttribute("slot","icon"),e.textContent=this._icon,this.appendChild(e)}}};o.styles=[...d.styles,u`
|
|
3
|
+
/* Icon-only: dölj textslot */
|
|
4
|
+
:host([icon-only]) slot:not([name='icon']) {
|
|
5
|
+
display: none;
|
|
6
|
+
}
|
|
7
|
+
`];s([l({type:String})],o.prototype,"icon",1);s([l({type:Boolean,reflect:!0,attribute:"icon-only"})],o.prototype,"iconOnly",2);s([l({type:Boolean,reflect:!0,attribute:"inline-icon"})],o.prototype,"inlineIcon",2);o=s([h("scb-primary-tab")],o);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../../vendor/vendor-material.js","../../vendor/vendor.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as h}from"../../vendor/preload-helper.js";import{a as l}from"../../vendor/vendor-material.js";import{b as u,n as d,t as p}from"../../vendor/vendor.js";var b=Object.defineProperty,_=Object.getOwnPropertyDescriptor,c=(t,e,s,n)=>{for(var i=n>1?void 0:n?_(e,s):e,r=t.length-1,a;r>=0;r--)(a=t[r])&&(i=(n?a(e,s,i):a(i))||i);return n&&i&&b(e,s,i),i};let o=class extends l{constructor(){super(...arguments),this.iconOnly=!1,this._onActivate=()=>{const t=this.textContent?.trim()??"";this.dispatchEvent(new CustomEvent("activate",{detail:{label:t},bubbles:!0,composed:!0}))}}connectedCallback(){super.connectedCallback(),this.setAttribute("role","tab")}get icon(){return this._icon}set icon(t){const e=this._icon;e!==t&&(this._icon=t,this.requestUpdate("icon",e),this.updateIconSlot())}firstUpdated(t){if(super.firstUpdated(t),this.iconOnly&&!this.hasAttribute("aria-label")){const e=this.textContent?.trim()??"";e&&this.setAttribute("aria-label",e)}this.addEventListener("click",this._onActivate),this._icon&&this.updateIconSlot()}updated(){if(super.updated(),this.iconOnly&&!this.hasAttribute("aria-label")){const t=this.textContent?.trim()??"";t&&this.setAttribute("aria-label",t)}}async ensureMdIconLoaded(){const t=globalThis;t.__mdIconLoaded||(await h(()=>import("../../vendor/vendor-material.js").then(e=>e.i),__vite__mapDeps([0,1]),import.meta.url),t.__mdIconLoaded=!0)}async updateIconSlot(){const t=this.querySelector('md-icon[slot="icon"]');if(!this._icon){t?.remove();return}if(await this.ensureMdIconLoaded(),t)t.textContent=this._icon;else{const e=document.createElement("md-icon");e.setAttribute("slot","icon"),e.textContent=this._icon,this.appendChild(e)}}};o.styles=[...l.styles,u`
|
|
3
|
+
/* Icon-only: göm all text utom slot="icon" */
|
|
4
|
+
:host([icon-only]) slot:not([name='icon']) {
|
|
5
|
+
display: none;
|
|
6
|
+
}
|
|
7
|
+
`];c([d({type:String})],o.prototype,"icon",1);c([d({type:Boolean,reflect:!0,attribute:"icon-only"})],o.prototype,"iconOnly",2);o=c([p("scb-secondary-tab")],o);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import{M as l}from"../../vendor/vendor-material.js";import{b as d,n as m,t as b}from"../../vendor/vendor.js";import"./scb-primary-tab.js";import"./scb-secondary-tab.js";import"../../vendor/preload-helper.js";var p=Object.defineProperty,v=Object.getOwnPropertyDescriptor,n=(r,t,s,e)=>{for(var a=e>1?void 0:e?v(t,s):t,i=r.length-1,c;i>=0;i--)(c=r[i])&&(a=(e?c(t,s,a):c(a))||a);return e&&a&&p(t,s,a),a};let o=class extends l{constructor(){super(...arguments),this.ariaLabel="",this._isDispatching=!1,this._onChange=r=>{if(!r.composed&&!this._isDispatching){r.stopPropagation(),this._isDispatching=!0;const t=r.target.activeTabIndex;this.dispatchEvent(new CustomEvent("change",{detail:{activeTabIndex:t},bubbles:!0,composed:!0})),this._isDispatching=!1}}}connectedCallback(){super.connectedCallback(),this.setAttribute("role","tablist")}firstUpdated(r){super.firstUpdated(r),this.addEventListener("change",this._onChange)}};o.styles=[...l.styles,d`
|
|
2
|
+
:host {
|
|
3
|
+
/*Containerfärg */
|
|
4
|
+
--md-primary-tab-container-color: var(--md-sys-color-surface);
|
|
5
|
+
--md-secondary-tab-container-color: var(--md-sys-color-surface);
|
|
6
|
+
|
|
7
|
+
/* Text- och ikonfärger */
|
|
8
|
+
--md-primary-tab-label-text-color: var(--md-sys-color-on-surface-variant);
|
|
9
|
+
--md-secondary-tab-label-text-color: var(--md-sys-color-on-surface-variant);
|
|
10
|
+
--md-primary-tab-active-label-text-color: var(--md-sys-color-on-surface);
|
|
11
|
+
--md-secondary-tab-active-label-text-color: var(--md-sys-color-on-surface);
|
|
12
|
+
|
|
13
|
+
/* Indikator och divider */
|
|
14
|
+
--md-primary-tab-active-indicator-color: var(--md-sys-color-primary);
|
|
15
|
+
--md-primary-tab-divider-color: var(--md-sys-color-outline-variant);
|
|
16
|
+
--md-secondary-tab-divider-color: var(--md-sys-color-outline-variant);
|
|
17
|
+
|
|
18
|
+
/* State layers (hover/press) */
|
|
19
|
+
--md-primary-tab-hover-state-layer-color: var(--md-sys-color-on-surface);
|
|
20
|
+
--md-secondary-tab-hover-state-layer-color: var(--md-sys-color-on-surface);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
`];n([m({type:String,reflect:!0,attribute:"aria-label"})],o.prototype,"ariaLabel",2);o=n([b("scb-tabs")],o);
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../../vendor/vendor-material.js","../../vendor/vendor.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as c}from"../../vendor/preload-helper.js";import{i as u,x as l,b as h,n as s,t as b}from"../../vendor/vendor.js";var f=Object.defineProperty,x=Object.getOwnPropertyDescriptor,i=(e,t,o,a)=>{for(var n=a>1?void 0:a?x(t,o):t,d=e.length-1,p;d>=0;d--)(p=e[d])&&(n=(a?p(t,o,n):p(n))||n);return a&&n&&f(t,o,n),n};let r=class extends u{constructor(){super(...arguments),this.type="text",this.label="",this.supportingText="",this.errorText="",this.leadingIcon="",this.name="",this.pattern="",this.value="",this.underLabel="",this.error=!1,this.disabled=!1,this.required=!1,this._form=null,this._formSubmitHandler=null,this._formResetHandler=null,this._initialValue="",this._inputId=""}render(){const e=this.leadingIcon?l`<md-icon class="scb-textfield-icon">${this.leadingIcon}</md-icon>`:null,t=this.error?l`<md-icon class="scb-textfield-error-icon" aria-hidden="true">error</md-icon>`:null;this.underLabel=this.error?this.errorText||"Ogiltig inmatning.":this.supportingText,this.value=this.value||"";const o=this.underLabel?`${this._inputId}-supporting-text`:void 0;return this.type==="textarea"?l`
|
|
3
|
+
<label class="scb-textfield-label" for="${this._inputId}">${this.label}</label>
|
|
4
|
+
<span
|
|
5
|
+
class="scb-textfield-supporting-text"
|
|
6
|
+
id="${this.underLabel?`${this._inputId}-supporting-text`:""}"
|
|
7
|
+
>${this.underLabel}</span>
|
|
8
|
+
<div class="scb-textfield-wrapper">
|
|
9
|
+
<textarea
|
|
10
|
+
class="scb-textfield"
|
|
11
|
+
?disabled=${this.disabled}
|
|
12
|
+
name="${this.name}"
|
|
13
|
+
id="${this._inputId}"
|
|
14
|
+
?required=${this.required}
|
|
15
|
+
aria-invalid=${this.error?"true":"false"}
|
|
16
|
+
aria-describedby=${o}
|
|
17
|
+
>${this.value}</textarea>
|
|
18
|
+
</div>
|
|
19
|
+
`:l`
|
|
20
|
+
<label class="scb-textfield-label" for="${this._inputId}">${this.label}</label>
|
|
21
|
+
<span
|
|
22
|
+
class="scb-textfield-supporting-text"
|
|
23
|
+
id="${this.underLabel?`${this._inputId}-supporting-text`:""}"
|
|
24
|
+
>${this.underLabel}</span>
|
|
25
|
+
<div class="scb-textfield-wrapper">
|
|
26
|
+
${e}
|
|
27
|
+
<input
|
|
28
|
+
class="scb-textfield${this.error?" has-error-icon":""}"
|
|
29
|
+
.value=${this.value}
|
|
30
|
+
type="${this.type}"
|
|
31
|
+
name="${this.name}"
|
|
32
|
+
id="${this._inputId}"
|
|
33
|
+
?disabled=${this.disabled}
|
|
34
|
+
?required=${this.required}
|
|
35
|
+
aria-invalid=${this.error?"true":"false"}
|
|
36
|
+
aria-describedby=${o}
|
|
37
|
+
/>
|
|
38
|
+
${t}
|
|
39
|
+
</div>
|
|
40
|
+
`}firstUpdated(e){super.firstUpdated(e),this._initialValue=this.value,(this.leadingIcon||this.error)&&this.__ensureMdIconLoaded();const t=this.shadowRoot?.querySelector(".scb-textfield");t&&(t.addEventListener("input",o=>{const a=t;if(this.value=a.value,this.pattern){const n=new RegExp(this.pattern);this.error=!n.test(this.value)}this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("onValueChanged",{detail:{value:this.value},bubbles:!0,composed:!0}))}),t.addEventListener("change",o=>{this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}),t.addEventListener("select",o=>{this.dispatchEvent(new Event("select",{bubbles:!0,composed:!0}))}))}updated(e){super.updated(e),(e.has("leadingIcon")||e.has("error"))&&(this.leadingIcon&&this.leadingIcon.trim()||this.error)&&this.__ensureMdIconLoaded(),this.toggleAttribute("aria-disabled",this.disabled)}connectedCallback(){super.connectedCallback(),this._inputId=this.id||`scb-textfield-${Math.random().toString(36).substr(2,9)}`,this._formSubmitHandler=e=>{this.reportValidity()||(e.preventDefault(),e.stopPropagation())},this._form=this.closest("form"),this._form&&(this._form.addEventListener("submit",this._formSubmitHandler,!0),this._formResetHandler=()=>{this.value=this._initialValue;const e=this.shadowRoot?.querySelector(".scb-textfield");e&&(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&(e.value=this._initialValue),this.error=!1},this._form.addEventListener("reset",this._formResetHandler,!0))}disconnectedCallback(){super.disconnectedCallback(),this._form&&this._formSubmitHandler&&(this._form.removeEventListener("submit",this._formSubmitHandler,!0),this._formResetHandler&&this._form.removeEventListener("reset",this._formResetHandler,!0))}reportValidity(){const e=this.shadowRoot?.querySelector(".scb-textfield");if(e&&(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)){this.required&&!e.value?e.setCustomValidity(this.errorText||"Ogiltig inmatning."):e.setCustomValidity("");const t=e.reportValidity();return this.error=!t,t||(this.errorText=this.errorText||e.validationMessage||"Ogiltig inmatning."),t}return!0}async __ensureMdIconLoaded(){window.__scb_md_icon_loaded||(await c(()=>import("../../vendor/vendor-material.js").then(e=>e.i),__vite__mapDeps([0,1]),import.meta.url),window.__scb_md_icon_loaded=!0)}};r.styles=[h`
|
|
41
|
+
:host {
|
|
42
|
+
display: flex;
|
|
43
|
+
flex-direction: column;
|
|
44
|
+
max-width: 280px;
|
|
45
|
+
/* Följ aktuellt tema (light/dark) via tokens */
|
|
46
|
+
color: var(--md-sys-color-on-surface);
|
|
47
|
+
}
|
|
48
|
+
:host([error]) .scb-textfield-supporting-text {
|
|
49
|
+
color: var(--md-sys-color-error);
|
|
50
|
+
}
|
|
51
|
+
:host([error]) .scb-textfield {
|
|
52
|
+
border-color: var(--md-sys-color-error);
|
|
53
|
+
}
|
|
54
|
+
:host([error]) .scb-textfield:focus-visible {
|
|
55
|
+
border-color: var(--md-sys-color-error);
|
|
56
|
+
box-shadow: inset 0 0 0 2px var(--md-sys-color-error);
|
|
57
|
+
}
|
|
58
|
+
:host([disabled]) {
|
|
59
|
+
opacity: 0.38;
|
|
60
|
+
cursor: default;
|
|
61
|
+
}
|
|
62
|
+
.scb-textfield-label {
|
|
63
|
+
font-size: 16px;
|
|
64
|
+
line-height: 20px;
|
|
65
|
+
font-weight: 600;
|
|
66
|
+
}
|
|
67
|
+
.scb-textfield-supporting-text {
|
|
68
|
+
font-size: 16px;
|
|
69
|
+
line-height: 24px;
|
|
70
|
+
margin-bottom: 8px;
|
|
71
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
72
|
+
}
|
|
73
|
+
.scb-textfield {
|
|
74
|
+
padding: 4px 16px;
|
|
75
|
+
min-height: 56px;
|
|
76
|
+
border: 1px solid var(--md-sys-color-outline);
|
|
77
|
+
border-radius: 8px;
|
|
78
|
+
font-size: var(--md-sys-typescale-body-large-size, 16px);
|
|
79
|
+
font-family: var(--brand-font);
|
|
80
|
+
line-height: 24px;
|
|
81
|
+
width: 100%;
|
|
82
|
+
box-sizing: border-box;
|
|
83
|
+
}
|
|
84
|
+
md-icon + .scb-textfield {
|
|
85
|
+
padding-left: 48px; /* Extra padding for search icon */
|
|
86
|
+
}
|
|
87
|
+
.scb-textfield-icon {
|
|
88
|
+
position: absolute;
|
|
89
|
+
left: 12px;
|
|
90
|
+
top: 50%;
|
|
91
|
+
transform: translateY(-50%);
|
|
92
|
+
pointer-events: none;
|
|
93
|
+
font-size: 24px;
|
|
94
|
+
}
|
|
95
|
+
.scb-textfield:focus-visible {
|
|
96
|
+
/* Remove outline */
|
|
97
|
+
outline: none;
|
|
98
|
+
/* Add a thicker border inside */
|
|
99
|
+
border-color: var(--md-sys-color-primary);
|
|
100
|
+
box-shadow: inset 0 0 0 2px var(--md-sys-color-primary);
|
|
101
|
+
border: 1px solid var(--md-sys-color-primary);
|
|
102
|
+
}
|
|
103
|
+
.scb-textfield-wrapper {
|
|
104
|
+
position: relative;
|
|
105
|
+
width: 100%;
|
|
106
|
+
}
|
|
107
|
+
input::-webkit-search-cancel-button {
|
|
108
|
+
appearance: none;
|
|
109
|
+
height: 24px;
|
|
110
|
+
width: 24px;
|
|
111
|
+
background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="black" stroke-width="2" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" stroke="black" stroke-width="2"/><line x1="15" y1="9" x2="9" y2="15" stroke="black" stroke-width="2"/><line x1="9" y1="9" x2="15" y2="15" stroke="black" stroke-width="2"/></svg>') no-repeat center center;
|
|
112
|
+
background-size: 22px 22px;
|
|
113
|
+
cursor: pointer;
|
|
114
|
+
}
|
|
115
|
+
input::-webkit-search-cancel-button,
|
|
116
|
+
input::-webkit-search-decoration,
|
|
117
|
+
input::-webkit-search-results-button,
|
|
118
|
+
input::-webkit-search-results-decoration,
|
|
119
|
+
input::-webkit-clear-button {
|
|
120
|
+
filter: brightness(0) saturate(100%) invert(20%) sepia(18%) saturate(2674%) hue-rotate(196deg) brightness(91%) contrast(120%);
|
|
121
|
+
/* This filter closely matches #0f0865. */
|
|
122
|
+
}
|
|
123
|
+
.scb-textfield-error-icon {
|
|
124
|
+
position: absolute;
|
|
125
|
+
right: 12px;
|
|
126
|
+
top: 50%;
|
|
127
|
+
transform: translateY(-50%);
|
|
128
|
+
color: var(--md-sys-color-error);
|
|
129
|
+
font-size: 24px;
|
|
130
|
+
pointer-events: none;
|
|
131
|
+
}
|
|
132
|
+
.scb-textfield.has-error-icon {
|
|
133
|
+
padding-right: 44px; /* Adjust as needed for icon size and spacing */
|
|
134
|
+
}
|
|
135
|
+
`];i([s({type:String,reflect:!0})],r.prototype,"type",2);i([s({type:String})],r.prototype,"label",2);i([s({type:String,attribute:"supporting-text"})],r.prototype,"supportingText",2);i([s({type:String,attribute:"error-text"})],r.prototype,"errorText",2);i([s({type:String,attribute:"leading-icon"})],r.prototype,"leadingIcon",2);i([s({type:String})],r.prototype,"name",2);i([s({type:String})],r.prototype,"pattern",2);i([s({type:String,attribute:"value"})],r.prototype,"value",2);i([s({type:String})],r.prototype,"underLabel",2);i([s({type:Boolean,reflect:!0})],r.prototype,"error",2);i([s({type:Boolean,reflect:!0})],r.prototype,"disabled",2);i([s({type:Boolean,reflect:!0})],r.prototype,"required",2);r=i([b("scb-textfield")],r);export{r as ScbTextField2};
|