@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-popover-menu.js","mappings":";;;AAAA,MAAM,cAAc,GAAG,oUAAoU;;MCS9U,WAAW;;;;;oBAIK,EAAE;;gBAML,KAAK;qBAGE,MAAM;0BAGJ,CAAC;0BAGD,CAAC;6BAEI,KAAK;;;;EAO3C,kBAAkB;IAChB,IAAI,IAAI,CAAC,IAAI,EAAE;MACb,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACnB;GACF;EAED,gBAAgB;;IACd,IAAI,CAAC,MAAM,GAAG,MAAA,IAAI,CAAC,WAAW,mCAAI,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC;IAEnC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE;MACvE,QAAQ,EAAE,OAAO;MACjB,SAAS,EAAE,IAAI,CAAC,SAAS;MACzB,SAAS,EAAE;QACT;UACE,IAAI,EAAE,QAAQ;UACd,OAAO,EAAE;YACP,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC;WACnD;SACF;OACF;KACF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG;MACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB,CAAC;IAEF,MAAM,QAAQ,GAAG;MACf,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACnB,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,KAAK;MAC9C,KAAK,CAAC,eAAe,EAAE,CAAC;MAExB,IAAI,IAAI,CAAC,IAAI,EAAE;QACb,QAAQ,EAAE,CAAC;OACZ;WAAM;QACL,QAAQ,EAAE,CAAC;OACZ;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,KAAK;MAC1D,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,KAAK;MAC1D,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB,CAAC,CAAC;GACJ;EAED,kBAAkB;IAChB,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;;;MAGxC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;KAC9B;IACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC;GACpC;EAED,oBAAoB;;IAClB,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,EAAE,CAAC;GAChC;EAED,MAAM;IACJ,QACE,EAAC,IAAI,IAAC,KAAK,EAAE,qBAAqB,IAAI,CAAC,IAAI,GAAG,wBAAwB,GAAG,EAAE,EAAE,IAC3E,eAAa,CACR,EACP;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/popover-menu/popover-menu.scss?tag=sdds-popover-menu&encapsulation=shadow","./src/components/popover-menu/popover-menu.tsx"],"sourcesContent":["@import '../../mixins/box-sizing';\n\n@import '../../mixins/z-index';\n\n:host {\n @include sdds-box-sizing;\n\n overflow: hidden;\n width: 160px;\n background-color: var(--sdds-popover-menu-background);\n padding: 16px;\n box-shadow: 0 3px 3px rgb(0 0 0 / 15%), 0 -1px 1px rgb(0 0 0 / 10%);\n border-radius: 4px;\n display: none;\n z-index: z(tooltip);\n}\n\n:host(.sdds-popover-menu-show) {\n opacity: 1;\n display: block;\n}\n","import { Component, Element, Host, Listen, h, Prop, State } from '@stencil/core';\nimport { createPopper } from '@popperjs/core';\nimport type { Placement, Instance } from '@popperjs/core';\n\n@Component({\n tag: 'sdds-popover-menu',\n styleUrl: 'popover-menu.scss',\n shadow: true,\n})\nexport class PopoverMenu {\n @Element() popoverMenuElement!: HTMLElement;\n\n /** The CSS-selector for an element that will trigger the popover */\n @Prop() selector: string = '';\n\n /** Element that will trigger the popover (takes priority over selector) */\n @Prop() referenceEl: HTMLElement;\n\n /** Decides if the Popover Menu should be visible from the start */\n @Prop() show: boolean = false;\n\n /** Decides the placement of the Popover Menu */\n @Prop() placement: Placement = 'auto';\n\n /** Sets the offset skidding */\n @Prop() offsetSkidding: number = 0;\n\n /** Sets the offset distance */\n @Prop() offsetDistance: number = 8;\n\n @State() renderedShowValue: boolean = false;\n\n @State() popperInstance: Instance;\n\n @State() target: any;\n\n @Listen('mousedown', { target: 'window' })\n handleOutsideClick() {\n if (this.show) {\n this.show = false;\n }\n }\n\n componentDidLoad() {\n this.target = this.referenceEl ?? document.querySelector(this.selector);\n this.renderedShowValue = this.show;\n\n this.popperInstance = createPopper(this.target, this.popoverMenuElement, {\n strategy: 'fixed',\n placement: this.placement,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [this.offsetSkidding, this.offsetDistance],\n },\n },\n ],\n });\n\n const showMenu = () => {\n this.show = true;\n };\n\n const hideMenu = () => {\n this.show = false;\n };\n\n this.target.addEventListener('mousedown', (event) => {\n event.stopPropagation();\n\n if (this.show) {\n hideMenu();\n } else {\n showMenu();\n }\n });\n\n this.popoverMenuElement.addEventListener('mousemove', (event) => {\n event.stopPropagation();\n });\n\n this.popoverMenuElement.addEventListener('mousedown', (event) => {\n event.stopPropagation();\n });\n }\n\n componentDidRender() {\n if (this.show && !this.renderedShowValue) {\n // Here we update the popper position since its position is wrong\n // before it is rendered.\n this.popperInstance.update();\n }\n this.renderedShowValue = this.show;\n }\n\n disconnectedCallback() {\n this.popperInstance?.destroy();\n }\n\n render() {\n return (\n <Host class={`sdds-popover-menu ${this.show ? 'sdds-popover-menu-show' : ''}`}>\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 SddsRadioButton extends Components.SddsRadioButton, HTMLElement {}
|
|
4
|
+
export const SddsRadioButton: {
|
|
5
|
+
prototype: SddsRadioButton;
|
|
6
|
+
new (): SddsRadioButton;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
|
2
|
+
|
|
3
|
+
const radioButtonComponentCss = ".sc-sdds-radio-button:root,.sdds-mode-light.sc-sdds-radio-button{--sdds-radio-button-color:var(--sdds-grey-958);--sdds-radio-button-interaction-01:var(--sdds-blue-800);--sdds-radio-button-interaction-02:var(--sdds-white);--sdds-radio-button-background-hover:var(--sdds-blue-800);--sdds-radio-button-background-focus:var(--sdds-blue-800);--sdds-radio-button-disabled:var(--sdds-grey-600);--sdds-radio-button-border-color-disabled-after:var(--sdds-grey-700);--sdds-radio-button-color-disabled-after:var(--sdds-grey-700);--sdds-radio-button-color-disabled-before:var(--sdds-grey-700)}.sdds-mode-dark.sc-sdds-radio-button{--sdds-radio-button-color:var(--sdds-white);--sdds-radio-button-interaction-01:var(--sdds-white);--sdds-radio-button-interaction-02:var(--sdds-grey-958);--sdds-radio-button-background-hover:var(--sdds-white);--sdds-radio-button-background-focus:var(--sdds-white);--sdds-radio-button-disabled:var(--sdds-grey-600);--sdds-radio-button-border-color-disabled-after:var(--sdds-grey-700);--sdds-radio-button-color-disabled-after:var(--sdds-grey-700)}.sdds-radio-button.sc-sdds-radio-button{box-sizing:border-box;display:flex;align-items:center;margin-left:-4px;font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls);color:var(--sdds-radio-button-color)}.sdds-radio-button.sc-sdds-radio-button *.sc-sdds-radio-button{box-sizing:border-box}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button{appearance:none;outline:none;margin:0;border:0;width:24px;height:24px;border-radius:50%;position:relative;cursor:pointer}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button+label.sc-sdds-radio-button{padding:var(--sdds-spacing-element-4) 0 var(--sdds-spacing-element-4) var(--sdds-spacing-element-4);cursor:pointer}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button::before,.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button::after{content:\"\";position:absolute;border-radius:50%;box-sizing:border-box}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button::before{width:24px;height:24px;left:0;top:0}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button::after{border:1px solid var(--sdds-radio-button-interaction-01);background-color:var(--sdds-radio-button-interaction-02);width:16px;height:16px;left:4px;top:4px}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:hover::before{background-color:var(--sdds-radio-button-background-hover);opacity:0.12}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:focus::before{background-color:var(--sdds-radio-button-background-focus);opacity:0.24;animation:rb-focus 0.4s cubic-bezier(0.65, 0.05, 0.38, 0.95) forwards}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:disabled,.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].disabled.sc-sdds-radio-button{cursor:not-allowed}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:disabled::after,.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].disabled.sc-sdds-radio-button::after{border-color:var(--sdds-radio-button-border-color-disabled-after);background-color:var(--sdds-radio-button-interaction-02)}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:disabled+label.sc-sdds-radio-button,.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].disabled.sc-sdds-radio-button+label.sc-sdds-radio-button{color:var(--sdds-radio-button-disabled);cursor:not-allowed}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:disabled:hover::before,.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].disabled.sc-sdds-radio-button:hover::before{display:none;opacity:1}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:checked::after{border:4px solid var(--sdds-radio-button-interaction-01)}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:checked:disabled:hover::before,.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:checked:disabled::before,.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:checked.disabled:hover::before,.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:checked.disabled::before{display:block;width:16px;height:16px;left:4px;top:4px;border:1px solid var(--sdds-radio-button-color-disabled-before);box-sizing:content-box}.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:checked:disabled::after,.sdds-radio-button.sc-sdds-radio-button .sdds-form-input[type=radio].sc-sdds-radio-button:checked.disabled::after{border:4px solid var(--sdds-radio-button-interaction-02);background-color:var(--sdds-radio-button-color-disabled-after);left:5px;top:5px}@keyframes rb-focus{0%{transform:scale(0);opacity:0}100%{transform:scale(1);opacity:0.24}}";
|
|
4
|
+
|
|
5
|
+
const RadioButton = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.__registerHost();
|
|
9
|
+
this.sddsChange = createEvent(this, "sddsChange", 7);
|
|
10
|
+
this.name = undefined;
|
|
11
|
+
this.value = undefined;
|
|
12
|
+
this.radioId = crypto.randomUUID();
|
|
13
|
+
this.checked = false;
|
|
14
|
+
this.required = false;
|
|
15
|
+
this.disabled = false;
|
|
16
|
+
}
|
|
17
|
+
render() {
|
|
18
|
+
return (h("div", { class: "sdds-radio-button" }, h("input", { class: "sdds-form-input", type: "radio", name: this.name, id: this.radioId, value: this.value, checked: this.checked, "aria-checked": this.checked, "aria-describedby": this.host.getAttribute('aria-describedby'), required: this.required, disabled: this.disabled, onChange: () => {
|
|
19
|
+
this.sddsChange.emit({
|
|
20
|
+
radioId: this.radioId,
|
|
21
|
+
value: this.value,
|
|
22
|
+
});
|
|
23
|
+
} }), h("label", { htmlFor: this.radioId }, h("slot", null))));
|
|
24
|
+
}
|
|
25
|
+
get host() { return this; }
|
|
26
|
+
static get style() { return radioButtonComponentCss; }
|
|
27
|
+
}, [6, "sdds-radio-button", {
|
|
28
|
+
"name": [1],
|
|
29
|
+
"value": [1],
|
|
30
|
+
"radioId": [1, "radio-id"],
|
|
31
|
+
"checked": [516],
|
|
32
|
+
"required": [4],
|
|
33
|
+
"disabled": [4]
|
|
34
|
+
}]);
|
|
35
|
+
function defineCustomElement$1() {
|
|
36
|
+
if (typeof customElements === "undefined") {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const components = ["sdds-radio-button"];
|
|
40
|
+
components.forEach(tagName => { switch (tagName) {
|
|
41
|
+
case "sdds-radio-button":
|
|
42
|
+
if (!customElements.get(tagName)) {
|
|
43
|
+
customElements.define(tagName, RadioButton);
|
|
44
|
+
}
|
|
45
|
+
break;
|
|
46
|
+
} });
|
|
47
|
+
}
|
|
48
|
+
defineCustomElement$1();
|
|
49
|
+
|
|
50
|
+
const SddsRadioButton = RadioButton;
|
|
51
|
+
const defineCustomElement = defineCustomElement$1;
|
|
52
|
+
|
|
53
|
+
export { SddsRadioButton, defineCustomElement };
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=sdds-radio-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sdds-radio-button.js","mappings":";;AAAA,MAAM,uBAAuB,GAAG,smKAAsmK;;MCSznK,WAAW;;;;;;;mBAiBI,MAAM,CAAC,UAAU,EAAE;mBAGD,KAAK;oBAGrB,KAAK;oBAGL,KAAK;;EAgBjC,MAAM;IACJ,QACE,WAAK,KAAK,EAAC,mBAAmB,IAC5B,aACA,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,EAAE,EAAE,IAAI,CAAC,OAAO,EAChB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,OAAO,EAAE,IAAI,CAAC,OAAO,kBACP,IAAI,CAAC,OAAO,sBAIR,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAC5D,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE;QACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;UAClB,OAAO,EAAE,IAAI,CAAC,OAAO;UACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SACnB,CAAC,CAAA;OACH,GAAI,EACL,aAAO,OAAO,EAAE,IAAI,CAAC,OAAO,IAC1B,eAAa,CACP,CACF,EACR;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/radio-button/radio-button-component.scss?tag=sdds-radio-button&encapsulation=scoped","./src/components/radio-button/radio-button.tsx"],"sourcesContent":["@import './radio-button-theme-vars.scss';\n@import '../../mixins/box-sizing';\n\n.sdds-radio-button {\n @include sdds-box-sizing;\n\n display: flex;\n align-items: center;\n margin-left: -4px;\n\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n color: var(--sdds-radio-button-color);\n \n .sdds-form-input[type='radio'] {\n appearance: none;\n outline: none;\n margin: 0;\n border: 0;\n width: 24px;\n height: 24px;\n border-radius: 50%;\n position: relative;\n cursor: pointer;\n\n + label {\n padding: var(--sdds-spacing-element-4) 0 var(--sdds-spacing-element-4) var(--sdds-spacing-element-4);\n cursor: pointer;\n }\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n border-radius: 50%;\n box-sizing: border-box;\n }\n\n &::before {\n width: 24px;\n height: 24px;\n left: 0;\n top: 0;\n }\n\n &::after {\n border: 1px solid var(--sdds-radio-button-interaction-01);\n background-color: var(--sdds-radio-button-interaction-02);\n width: 16px;\n height: 16px;\n left: 4px;\n top: 4px;\n }\n\n &:hover {\n &::before {\n background-color: var(--sdds-radio-button-background-hover);\n opacity: 0.12;\n }\n }\n\n &:focus {\n &::before {\n background-color: var(--sdds-radio-button-background-focus);\n opacity: 0.24;\n animation: rb-focus 0.4s cubic-bezier(0.65, 0.05, 0.38, 0.95) forwards;\n }\n }\n\n &:disabled,\n &.disabled {\n cursor: not-allowed;\n\n &::after {\n border-color: var(--sdds-radio-button-border-color-disabled-after);\n background-color: var(--sdds-radio-button-interaction-02);\n }\n\n + label {\n color: var(--sdds-radio-button-disabled);\n cursor: not-allowed;\n }\n\n &:hover {\n &::before {\n display: none;\n opacity: 1;\n }\n }\n }\n }\n\n .sdds-form-input[type='radio']:checked {\n &::after {\n border: 4px solid var(--sdds-radio-button-interaction-01);\n }\n\n &:disabled,\n &.disabled {\n &:hover::before,\n &::before {\n display: block;\n width: 16px;\n height: 16px;\n left: 4px;\n top: 4px;\n border: 1px solid var(--sdds-radio-button-color-disabled-before);\n box-sizing: content-box;\n }\n\n &::after {\n border: 4px solid var(--sdds-radio-button-interaction-02);\n background-color: var(--sdds-radio-button-color-disabled-after);\n left: calc(4px + 1px);\n top: calc(4px + 1px);\n }\n }\n }\n\n @keyframes rb-focus {\n 0% {\n transform: scale(0);\n opacity: 0;\n }\n \n 100% {\n transform: scale(1);\n opacity: 0.24;\n }\n }\n}\n","import { Component, h, Prop, Event, EventEmitter, Element } from '@stencil/core';\nimport { HostElement } from '@stencil/core/internal';\n\n@Component({\n tag: 'sdds-radio-button',\n styleUrl: 'radio-button-component.scss',\n shadow: false,\n scoped: true,\n})\nexport class RadioButton {\n\n /** Name of radio button, used for reference. */\n @Prop() name: string;\n\n /** Value of input. */\n @Prop() value: string;\n\n /** REMEMBER TO ENABLE ARIA PROPS ONCE ALIGNMET HAS BEEN MADE! */\n\n /** Label mainly used for accesibility tools. */\n // @Prop() ariaLabelledBy: string;\n\n /** Label mainly used for accesibility tools. */\n // @Prop() ariaDescribedBy: string;\n\n /** Unique radio button identifier. */\n @Prop() radioId: string = crypto.randomUUID();\n \n /** Decides if the radio button is checked or not. */\n @Prop({ reflect: true }) checked: boolean = false;\n \n /** Decides if the radio button is required or not. */\n @Prop() required: boolean = false;\n \n /** Decides if the radio button is disabled or not. */\n @Prop() disabled: boolean = false;\n\n @Element() host: HostElement;\n\n /** Sends unique radio button identifier and status when it is checked. If no ID is specified a random one will be generated. To use this listener don't use the randomized ID, use a specific one of your choosing. */\n @Event({\n eventName: 'sddsChange',\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n sddsChange: EventEmitter<{\n radioId: string;\n value: string;\n }>;\n\n render() {\n return (\n <div class=\"sdds-radio-button\">\n <input \n class=\"sdds-form-input\" \n type=\"radio\" \n name={this.name}\n id={this.radioId} \n value={this.value}\n checked={this.checked} \n aria-checked={this.checked} \n\n // REMEMBER TO ENABLE ARIA PROPS ONCE ALIGNMENT HAS BEEN MADE!\n // aria-labelledby={this.ariaLabelledBy} \n aria-describedby={this.host.getAttribute('aria-describedby')}\n required={this.required} \n disabled={this.disabled}\n onChange={() => {\n this.sddsChange.emit({\n radioId: this.radioId,\n value: this.value,\n })\n }} />\n <label htmlFor={this.radioId}>\n <slot></slot>\n </label>\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SddsSlider extends Components.SddsSlider, HTMLElement {}
|
|
4
|
+
export const SddsSlider: {
|
|
5
|
+
prototype: SddsSlider;
|
|
6
|
+
new (): SddsSlider;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
|
2
|
+
import { d as defineCustomElement$2 } from './icon.js';
|
|
3
|
+
|
|
4
|
+
const sliderCss = ":root,.sdds-mode-light{--sdds-slider-label-color:var(--sdds-grey-958);--sdds-slider-label-color-disabled:var(--sdds-grey-400);--sdds-slider-thumb-color:var(--sdds-blue-800);--sdds-slider-divider-color:var(--sdds-grey-400);--sdds-slider-track-color:var(--sdds-grey-400);--sdds-slider-track-fill-color:var(--sdds-blue-800);--sdds-slider-input-inputfield-color:var(--sdds-grey-700);--sdds-slider-inputfield-color:var(--sdds-grey-400);--sdds-slider-controls-color:var(--sdds-grey-958);--sdds-slider-inputfield-background:var(--sdds-white);--sdds-slider-inputfield-box-shadow:var(--sdds-grey-400);--sdds-slider-divider-values-color:var(--sdds-grey-958)}.sdds-mode-dark{--sdds-slider-label-color:var(--sdds-grey-100);--sdds-slider-label-color-disabled:var(--sdds-grey-700);--sdds-slider-thumb-color:var(--sdds-grey-100);--sdds-slider-divider-color:var(--sdds-grey-700);--sdds-slider-track-color:var(--sdds-grey-700);--sdds-slider-track-fill-color:var(--sdds-grey-100);--sdds-slider-inputfield-color:var(--sdds-grey-700);--sdds-slider-input-inputfield-color:var(--sdds-grey-400);--sdds-slider-controls-color:var(--sdds-grey-100);--sdds-slider-inputfield-background:var(--sdds-grey-900);--sdds-slider-inputfield-box-shadow:var(--sdds-grey-800);--sdds-slider-divider-values-color:var(--sdds-grey-100)}sdds-slider{box-sizing:border-box;width:100%}sdds-slider *{box-sizing:border-box}sdds-slider input[type=range].sdds-slider-native-element{display:none}.sdds-slider-wrapper{width:100%}.sdds-slider-wrapper.read-only{pointer-events:none}.sdds-slider{width:100%;display:flex;flex-wrap:nowrap;padding-top:65px}.sdds-slider .sdds-slider-inner{width:100%;height:20px;position:relative}.sdds-slider .sdds-slider__controls{position:relative;top:-25px}.sdds-slider .sdds-slider__controls .sdds-slider__control{cursor:pointer}.sdds-slider .sdds-slider__controls .sdds-slider__control.sdds-slider__control-minus{padding:18px 18px 18px 0}.sdds-slider .sdds-slider__controls .sdds-slider__control.sdds-slider__control-plus{padding:18px 0 18px 18px}.sdds-slider .sdds-slider__input-values{position:relative;top:-25px;display:flex;flex-wrap:nowrap;align-items:center}.sdds-slider .sdds-slider__input-values .sdds-slider__input-value{user-select:none;padding:18px;color:var(--sdds-grey-700);font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls)}.sdds-slider .sdds-slider__input-values .sdds-slider__input-field-wrapper{background-color:var(--sdds-slider-inputfield-background);display:flex;align-items:center;justify-content:center}.sdds-slider .sdds-slider__input-values .sdds-slider__input-field-wrapper input.sdds-slider__input-field{font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls);color:var(--sdds-slider-input-inputfield-color);border:0;background-color:transparent;text-align:center;padding:12px;box-shadow:inset 0 -1px 0 var(--sdds-slider-inputfield-box-shadow);border-radius:4px 4px 0 0}.sdds-slider .sdds-slider__input-values .sdds-slider__input-field-wrapper input.sdds-slider__input-field:hover{box-shadow:inset 0 -1px 0 var(--sdds-grey-600)}.sdds-slider .sdds-slider__input-values .sdds-slider__input-field-wrapper input.sdds-slider__input-field:focus{box-shadow:inset 0 -2px 0 var(--sdds-blue-400);outline:0}.sdds-slider label{font:var(--sdds-detail-05);letter-spacing:var(--sdds-detail-05-ls);user-select:none;position:absolute;color:var(--sdds-slider-label-color);top:-16px;transform:translateY(-100%)}.sdds-slider label.offset{top:-35px}.sdds-slider .sdds-slider__value{font:var(--sdds-detail-01);letter-spacing:var(--sdds-detail-01-ls);user-select:none;border-radius:4px;padding:8px;position:absolute;transform:translate(-50%, -100%);top:-24px;background-color:var(--sdds-grey-800);color:var(--sdds-white)}.sdds-slider .sdds-slider__value svg{position:absolute;left:50%;transform:translateX(-50%);top:34px}.sdds-slider .sdds-slider__scrubber{position:absolute}.sdds-slider .sdds-slider__scrubber .sdds-slider__scrubber-inner{width:20px;height:20px;border-radius:100%;background-color:var(--sdds-slider-thumb-color);position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);cursor:pointer}.sdds-slider .sdds-slider__scrubber .sdds-slider__scrubber-inner::before{content:\" \";display:none;width:48px;height:48px;background-color:var(--sdds-slider-thumb-color);position:absolute;border-radius:100%;top:50%;left:50%;transform:translate(-50%, -50%)}.sdds-slider .sdds-slider__scrubber .sdds-slider__scrubber-inner:hover::before{display:block;opacity:0.08}.sdds-slider .sdds-slider__scrubber .sdds-slider__scrubber-inner.pressed{width:24px;height:24px}.sdds-slider .sdds-slider__scrubber .sdds-slider__scrubber-inner.pressed::before{display:block;opacity:0.16 !important}.sdds-slider .sdds-slider__value-dividers-wrapper{position:relative;width:100%;pointer-events:none}.sdds-slider .sdds-slider__value-dividers{pointer-events:none;position:absolute;display:flex;justify-content:space-between;width:100%}.sdds-slider .sdds-slider__value-dividers .sdds-slider__value-divider{transform:translateY(-50%);height:16px;background-color:var(--sdds-slider-divider-color);color:var(--sdds-slider-divider-values-color);width:1px}.sdds-slider .sdds-slider__value-dividers .sdds-slider__value-divider span{display:block;user-select:none;color:var(-sdds-grey-700);font:var(--sdds-detail-05);letter-spacing:var(--sdds-detail-05-ls);position:relative;top:-7px;left:50%;transform:translate(-50%, -100%);width:50px;text-align:center}.sdds-slider .sdds-slider__track{width:100%;height:2px;border-radius:1px;background-color:var(--sdds-slider-track-color);position:relative}.sdds-slider .sdds-slider__track:focus{outline:0}.sdds-slider .sdds-slider__track:focus .sdds-slider__scrubber .sdds-slider__scrubber-inner{width:24px;height:24px}.sdds-slider .sdds-slider__track:focus .sdds-slider__scrubber .sdds-slider__scrubber-inner::before{display:block;opacity:0.08}.sdds-slider .sdds-slider__track .sdds-slider__track-fill{background-color:var(--sdds-slider-track-fill-color);border-radius:2px;height:4px;position:absolute;left:0;top:-1px}.sdds-slider.disabled{cursor:not-allowed}.sdds-slider.disabled>*{pointer-events:none}.sdds-slider.disabled label{color:var(--sdds-slider-label-color-disabled)}.sdds-slider.disabled .sdds-slider__controls .sdds-slider__control{cursor:default}.sdds-slider.disabled .sdds-slider__controls .sdds-slider__control.sdds-slider__control-minus svg,.sdds-slider.disabled .sdds-slider__controls .sdds-slider__control.sdds-slider__control-plus svg{fill:var(--sdds-slider-controls-color)}.sdds-slider.disabled .sdds-slider__input-values .sdds-slider__input-value{color:var(--sdds-slider-controls-color)}.sdds-slider.disabled .sdds-slider__input-values .sdds-slider__input-field-wrapper{pointer-events:none}.sdds-slider.disabled .sdds-slider__input-values .sdds-slider__input-field-wrapper input.sdds-slider__input-field{color:var(--sdds-slider-controls-color);pointer-events:none}.sdds-slider.disabled .sdds-slider__value{display:none}.sdds-slider.disabled .sdds-slider__track .sdds-slider__track-fill{background-color:var(--sdds-slider-track-fill-color)}.sdds-slider.disabled .sdds-slider__value-dividers .sdds-slider__value-divider span{color:var(--sdds-slider-track-fill-color)}.sdds-slider.disabled .sdds-slider__scrubber{pointer-events:none}.sdds-slider.disabled .sdds-slider__scrubber .sdds-slider__scrubber-inner{background:var(--sdds-slider-track-color);cursor:default}.sdds-slider.sdds-slider-small .sdds-slider__scrubber .sdds-slider__scrubber-inner{width:16px;height:16px}.sdds-slider.sdds-slider-small .sdds-slider__scrubber .sdds-slider__scrubber-inner::before{width:40px;height:40px}.sdds-slider.sdds-slider-small .sdds-slider__scrubber .sdds-slider__scrubber-inner.pressed{width:20px;height:20px}.sdds-slider__controls .sdds-slider__control{cursor:default}.sdds-slider__controls .sdds-slider__control.sdds-slider__control-minus svg,.sdds-slider__controls .sdds-slider__control.sdds-slider__control-plus svg{fill:var(--sdds-slider-controls-color)}";
|
|
5
|
+
|
|
6
|
+
const Slider = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
this.__registerHost();
|
|
10
|
+
this.sddsChange = createEvent(this, "sddsChange", 7);
|
|
11
|
+
this.wrapperElement = null;
|
|
12
|
+
this.scrubberElement = null;
|
|
13
|
+
this.scrubberInnerElement = null;
|
|
14
|
+
this.dividersElement = null;
|
|
15
|
+
this.trackElement = null;
|
|
16
|
+
this.trackFillElement = null;
|
|
17
|
+
this.minusElement = null;
|
|
18
|
+
this.plusElement = null;
|
|
19
|
+
this.inputElement = null;
|
|
20
|
+
this.nativeRangeInputElement = null;
|
|
21
|
+
this.scrubberGrabPos = { x: 0, y: 0 };
|
|
22
|
+
this.scrubberGrabbed = false;
|
|
23
|
+
this.scrubberLeft = 0;
|
|
24
|
+
this.tickValues = [];
|
|
25
|
+
this.disabledState = false;
|
|
26
|
+
this.readonlyState = false;
|
|
27
|
+
this.useControls = false;
|
|
28
|
+
this.useInput = false;
|
|
29
|
+
this.useSmall = false;
|
|
30
|
+
this.useSnapping = false;
|
|
31
|
+
this.supposedValueSlot = -1;
|
|
32
|
+
this.eventListenersAdded = false;
|
|
33
|
+
this.resizeObserverAdded = false;
|
|
34
|
+
this.label = '';
|
|
35
|
+
this.value = '0';
|
|
36
|
+
this.min = '0';
|
|
37
|
+
this.max = '100';
|
|
38
|
+
this.ticks = '0';
|
|
39
|
+
this.showTickNumbers = false;
|
|
40
|
+
this.tooltip = null;
|
|
41
|
+
this.disabled = null;
|
|
42
|
+
this.readOnly = null;
|
|
43
|
+
this.controls = null;
|
|
44
|
+
this.input = null;
|
|
45
|
+
this.step = '1';
|
|
46
|
+
this.name = '';
|
|
47
|
+
this.size = '';
|
|
48
|
+
this.snap = null;
|
|
49
|
+
this.sliderId = crypto.randomUUID();
|
|
50
|
+
}
|
|
51
|
+
/** Public method to re-initialise the slider if some configuration props are changed */
|
|
52
|
+
async reset() {
|
|
53
|
+
// @TODO: maybe refactor to use watch-decorators instead
|
|
54
|
+
this.componentWillLoad();
|
|
55
|
+
this.componentDidLoad();
|
|
56
|
+
}
|
|
57
|
+
handleKeydown(event) {
|
|
58
|
+
switch (event.key) {
|
|
59
|
+
case 'ArrowLeft':
|
|
60
|
+
this.stepLeft();
|
|
61
|
+
break;
|
|
62
|
+
case 'ArrowRight':
|
|
63
|
+
this.stepRight();
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
handleMouseUp() {
|
|
68
|
+
if (!this.scrubberGrabbed) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
this.scrubberGrabbed = false;
|
|
72
|
+
this.scrubberInnerElement.classList.remove('pressed');
|
|
73
|
+
this.updateValue();
|
|
74
|
+
this.trackElement.focus();
|
|
75
|
+
}
|
|
76
|
+
handleTouchEnd() {
|
|
77
|
+
if (!this.scrubberGrabbed) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
this.scrubberGrabbed = false;
|
|
81
|
+
this.scrubberInnerElement.classList.remove('pressed');
|
|
82
|
+
this.updateValue();
|
|
83
|
+
this.trackElement.focus();
|
|
84
|
+
}
|
|
85
|
+
handleMouseMove(event) {
|
|
86
|
+
if (!this.scrubberGrabbed) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const numTicks = parseInt(this.ticks);
|
|
90
|
+
const trackRect = this.trackElement.getBoundingClientRect();
|
|
91
|
+
let localLeft = event.clientX - trackRect.left;
|
|
92
|
+
this.supposedValueSlot = -1;
|
|
93
|
+
if (this.useSnapping && numTicks > 0) {
|
|
94
|
+
const v = Math.round(this.getTrackWidth() / (numTicks + 1));
|
|
95
|
+
localLeft = Math.round(localLeft / v) * v;
|
|
96
|
+
this.supposedValueSlot = Math.round(localLeft / v);
|
|
97
|
+
}
|
|
98
|
+
this.scrubberLeft = this.constrainScrubber(localLeft);
|
|
99
|
+
this.scrubberElement.style.left = `${this.scrubberLeft}px`;
|
|
100
|
+
this.updateValue();
|
|
101
|
+
this.updateTrack();
|
|
102
|
+
}
|
|
103
|
+
handleTouchMove(event) {
|
|
104
|
+
event.preventDefault();
|
|
105
|
+
if (!this.scrubberGrabbed) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const numTicks = parseInt(this.ticks);
|
|
109
|
+
const trackRect = this.trackElement.getBoundingClientRect();
|
|
110
|
+
let localLeft = event.touches[0].clientX - trackRect.left;
|
|
111
|
+
this.supposedValueSlot = -1;
|
|
112
|
+
if (this.useSnapping && numTicks > 0) {
|
|
113
|
+
const v = Math.round(this.getTrackWidth() / (numTicks + 1));
|
|
114
|
+
localLeft = Math.round(localLeft / v) * v;
|
|
115
|
+
this.supposedValueSlot = Math.round(localLeft / v);
|
|
116
|
+
}
|
|
117
|
+
this.scrubberLeft = this.constrainScrubber(localLeft);
|
|
118
|
+
this.scrubberElement.style.left = `${this.scrubberLeft}px`;
|
|
119
|
+
this.updateValue();
|
|
120
|
+
this.updateTrack();
|
|
121
|
+
}
|
|
122
|
+
updateTrack() {
|
|
123
|
+
const trackWidth = this.getTrackWidth();
|
|
124
|
+
const percentageFilled = (this.scrubberLeft / trackWidth) * 100;
|
|
125
|
+
this.trackFillElement.style.width = `${percentageFilled}%`;
|
|
126
|
+
}
|
|
127
|
+
dispatchChangeEvent() {
|
|
128
|
+
this.sddsChange.emit({ value: this.value });
|
|
129
|
+
}
|
|
130
|
+
updateValue() {
|
|
131
|
+
const trackWidth = this.getTrackWidth();
|
|
132
|
+
/* if snapping (supposedValueSlot > 0) is enabled, make sure we display the supposed value (instead of maybe getting a -1/+1 depending on rounding) */
|
|
133
|
+
if (this.supposedValueSlot > 0) {
|
|
134
|
+
const supposedValue = this.tickValues[this.supposedValueSlot];
|
|
135
|
+
this.value = `${supposedValue}`;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
const percentage = this.scrubberLeft / trackWidth;
|
|
139
|
+
this.value = `${Math.trunc(this.getMin() + percentage * (this.getMax() - this.getMin()))}`;
|
|
140
|
+
}
|
|
141
|
+
this.dispatchChangeEvent();
|
|
142
|
+
}
|
|
143
|
+
updateValueForced(value) {
|
|
144
|
+
this.value = value;
|
|
145
|
+
this.dispatchChangeEvent();
|
|
146
|
+
}
|
|
147
|
+
getMin() {
|
|
148
|
+
return parseFloat(this.min);
|
|
149
|
+
}
|
|
150
|
+
getMax() {
|
|
151
|
+
return parseFloat(this.max);
|
|
152
|
+
}
|
|
153
|
+
constrainScrubber(x) {
|
|
154
|
+
const width = this.getTrackWidth();
|
|
155
|
+
if (x < 0) {
|
|
156
|
+
return 0;
|
|
157
|
+
}
|
|
158
|
+
if (x > width) {
|
|
159
|
+
return width;
|
|
160
|
+
}
|
|
161
|
+
return x;
|
|
162
|
+
}
|
|
163
|
+
getTrackWidth() {
|
|
164
|
+
const trackRect = this.trackElement.getBoundingClientRect();
|
|
165
|
+
return trackRect.right - trackRect.left;
|
|
166
|
+
}
|
|
167
|
+
calculateScrubberLeftFromValue(value) {
|
|
168
|
+
const initValue = value;
|
|
169
|
+
const trackWidth = this.getTrackWidth();
|
|
170
|
+
const normalizedValue = initValue - this.getMin();
|
|
171
|
+
const normalizedMax = this.getMax() - this.getMin();
|
|
172
|
+
const calculatedLeft = (normalizedValue / normalizedMax) * trackWidth;
|
|
173
|
+
this.scrubberLeft = calculatedLeft;
|
|
174
|
+
this.scrubberElement.style.left = `${this.scrubberLeft}px`;
|
|
175
|
+
}
|
|
176
|
+
componentDidLoad() {
|
|
177
|
+
if (!this.resizeObserverAdded) {
|
|
178
|
+
this.resizeObserverAdded = true;
|
|
179
|
+
const resizeObserver = new ResizeObserver(( /* entries */) => {
|
|
180
|
+
this.calculateScrubberLeftFromValue(this.value);
|
|
181
|
+
this.updateTrack();
|
|
182
|
+
});
|
|
183
|
+
resizeObserver.observe(this.wrapperElement);
|
|
184
|
+
}
|
|
185
|
+
if (!this.eventListenersAdded) {
|
|
186
|
+
this.eventListenersAdded = true;
|
|
187
|
+
this.scrubberElement.addEventListener('mousedown', (event) => {
|
|
188
|
+
event.preventDefault();
|
|
189
|
+
this.grabScrubber(event.offsetX, event.offsetY);
|
|
190
|
+
});
|
|
191
|
+
this.scrubberElement.addEventListener('touchstart', (event) => {
|
|
192
|
+
const rect = this.scrubberElement.getBoundingClientRect();
|
|
193
|
+
const x = event.targetTouches[0].pageX - rect.left;
|
|
194
|
+
const y = event.targetTouches[0].pageY - rect.top;
|
|
195
|
+
this.grabScrubber(x, y);
|
|
196
|
+
});
|
|
197
|
+
if (this.useControls) {
|
|
198
|
+
this.minusElement.addEventListener('click', () => {
|
|
199
|
+
this.stepLeft();
|
|
200
|
+
});
|
|
201
|
+
this.plusElement.addEventListener('click', () => {
|
|
202
|
+
this.stepRight();
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
if (this.inputElement) {
|
|
206
|
+
this.inputElement.addEventListener('keydown', (event) => {
|
|
207
|
+
event.stopPropagation();
|
|
208
|
+
if (event.key === 'Enter') {
|
|
209
|
+
let newValue = parseInt(this.inputElement.value);
|
|
210
|
+
if (newValue < this.getMin()) {
|
|
211
|
+
newValue = this.getMin();
|
|
212
|
+
}
|
|
213
|
+
else if (newValue > this.getMax()) {
|
|
214
|
+
newValue = this.getMax();
|
|
215
|
+
}
|
|
216
|
+
this.calculateScrubberLeftFromValue(newValue);
|
|
217
|
+
this.updateValueForced(newValue);
|
|
218
|
+
this.updateTrack();
|
|
219
|
+
this.inputElement.blur();
|
|
220
|
+
this.wrapperElement.focus();
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
this.calculateScrubberLeftFromValue(this.value);
|
|
226
|
+
this.updateTrack();
|
|
227
|
+
}
|
|
228
|
+
grabScrubber(xOffset, yOffset) {
|
|
229
|
+
if (this.readonlyState) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
this.scrubberGrabPos = {
|
|
233
|
+
x: xOffset,
|
|
234
|
+
y: yOffset,
|
|
235
|
+
};
|
|
236
|
+
this.scrubberGrabbed = true;
|
|
237
|
+
this.scrubberInnerElement.classList.add('pressed');
|
|
238
|
+
}
|
|
239
|
+
calculateInputSizeFromMax() {
|
|
240
|
+
return this.max.length;
|
|
241
|
+
}
|
|
242
|
+
controlsStep(delta) {
|
|
243
|
+
if (this.readonlyState || this.disabled) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
const trackWidth = this.getTrackWidth();
|
|
247
|
+
const percentage = this.scrubberLeft / trackWidth;
|
|
248
|
+
const numTicks = parseInt(this.ticks);
|
|
249
|
+
let currentValue = this.getMin() + percentage * (this.getMax() - this.getMin());
|
|
250
|
+
currentValue += delta;
|
|
251
|
+
if (currentValue < this.getMin()) {
|
|
252
|
+
currentValue = this.getMin();
|
|
253
|
+
}
|
|
254
|
+
else if (currentValue > this.getMax()) {
|
|
255
|
+
currentValue = this.getMax();
|
|
256
|
+
}
|
|
257
|
+
this.value = `${currentValue}`;
|
|
258
|
+
/* if snapping is enabled, instead just increment or decrement the current "fixed" value from our ticknumber array */
|
|
259
|
+
if (this.useSnapping && numTicks > 0) {
|
|
260
|
+
const stepDir = delta > 0 ? 1 : -1;
|
|
261
|
+
this.supposedValueSlot += stepDir;
|
|
262
|
+
if (this.supposedValueSlot < 0) {
|
|
263
|
+
this.supposedValueSlot = 0;
|
|
264
|
+
}
|
|
265
|
+
else if (this.supposedValueSlot > numTicks + 1) {
|
|
266
|
+
this.supposedValueSlot = numTicks + 1;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
this.calculateScrubberLeftFromValue(currentValue);
|
|
270
|
+
this.updateTrack();
|
|
271
|
+
this.updateValue();
|
|
272
|
+
}
|
|
273
|
+
stepLeft() {
|
|
274
|
+
this.controlsStep(-parseInt(this.step));
|
|
275
|
+
}
|
|
276
|
+
stepRight() {
|
|
277
|
+
this.controlsStep(parseInt(this.step));
|
|
278
|
+
}
|
|
279
|
+
componentWillLoad() {
|
|
280
|
+
const numTicks = parseInt(this.ticks);
|
|
281
|
+
if (numTicks > 0) {
|
|
282
|
+
this.tickValues = [this.getMin()];
|
|
283
|
+
const step = (this.getMax() - this.getMin()) / (numTicks + 1);
|
|
284
|
+
for (let i = 1; i < numTicks + 1; i++) {
|
|
285
|
+
this.tickValues.push(this.getMin() + Math.round(step * i));
|
|
286
|
+
}
|
|
287
|
+
this.tickValues.push(this.getMax());
|
|
288
|
+
}
|
|
289
|
+
if (this.disabled !== null) {
|
|
290
|
+
this.disabledState = true;
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
this.disabledState = false;
|
|
294
|
+
}
|
|
295
|
+
if (this.readOnly !== null) {
|
|
296
|
+
this.readonlyState = true;
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
this.readonlyState = false;
|
|
300
|
+
}
|
|
301
|
+
this.useInput = false;
|
|
302
|
+
this.useControls = false;
|
|
303
|
+
if (this.controls !== null) {
|
|
304
|
+
this.useControls = true;
|
|
305
|
+
}
|
|
306
|
+
else if (this.input !== null) {
|
|
307
|
+
this.useInput = true;
|
|
308
|
+
}
|
|
309
|
+
this.useSmall = false;
|
|
310
|
+
if (this.size === 'sm') {
|
|
311
|
+
this.useSmall = true;
|
|
312
|
+
}
|
|
313
|
+
this.useSnapping = false;
|
|
314
|
+
if (this.snap !== null) {
|
|
315
|
+
this.useSnapping = true;
|
|
316
|
+
}
|
|
317
|
+
const min = this.getMin();
|
|
318
|
+
const max = this.getMax();
|
|
319
|
+
if (min > max) {
|
|
320
|
+
console.warn('min-prop must have a higher value than max-prop for the component to work correctly.');
|
|
321
|
+
this.disabledState = true;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
render() {
|
|
325
|
+
return (h("div", { class: `sdds-slider-wrapper ${this.readonlyState ? 'read-only' : ''}` }, h("input", { ref: (el) => {
|
|
326
|
+
this.nativeRangeInputElement = el;
|
|
327
|
+
}, class: "sdds-slider-native-element", type: "range", value: this.value, name: this.name, min: this.min, max: this.max, disabled: this.disabled, id: this.sliderId }), h("div", { class: `sdds-slider ${this.disabledState ? 'disabled' : ''} ${this.useSmall ? 'sdds-slider-small' : ''}`, ref: (el) => {
|
|
328
|
+
this.wrapperElement = el;
|
|
329
|
+
} }, this.useInput && (h("div", { class: "sdds-slider__input-values" }, h("div", { ref: (el) => {
|
|
330
|
+
this.minusElement = el;
|
|
331
|
+
}, class: "sdds-slider__input-value" }, this.min))), this.useControls && (h("div", { class: "sdds-slider__controls" }, h("div", { ref: (el) => (this.minusElement = el), class: "sdds-slider__control sdds-slider__control-minus" }, h("sdds-icon", { name: "minus", size: "16px" })))), h("div", { class: "sdds-slider-inner" }, h("label", { class: this.tickValues.length > 0 && 'offset' }, this.label), this.tickValues.length > 0 && (h("div", { class: "sdds-slider__value-dividers-wrapper" }, h("div", { ref: (el) => {
|
|
332
|
+
this.dividersElement = el;
|
|
333
|
+
}, class: "sdds-slider__value-dividers" }, this.tickValues.map((value) => (h("div", { class: "sdds-slider__value-divider" }, this.showTickNumbers && h("span", null, value))))))), h("div", { class: "sdds-slider__track", ref: (el) => {
|
|
334
|
+
this.trackElement = el;
|
|
335
|
+
}, tabindex: this.disabled ? '-1' : '0' }, h("div", { class: "sdds-slider__track-fill", ref: (el) => {
|
|
336
|
+
this.trackFillElement = el;
|
|
337
|
+
} }), h("div", { class: "sdds-slider__scrubber", ref: (el) => {
|
|
338
|
+
this.scrubberElement = el;
|
|
339
|
+
} }, this.tooltip !== null && (h("div", { class: "sdds-slider__value" }, this.value, h("svg", { width: "18", height: "14", viewBox: "0 0 18 14", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { d: "M8.15882 12.6915L0.990487 1.54076C0.562658 0.875246 1.0405 0 1.83167 0H16.1683C16.9595 0 17.4373 0.875246 17.0095 1.54076L9.84118 12.6915C9.44754 13.3038 8.55246 13.3038 8.15882 12.6915Z", fill: "#37414F" })))), h("div", { class: "sdds-slider__scrubber-inner", ref: (el) => {
|
|
340
|
+
this.scrubberInnerElement = el;
|
|
341
|
+
} })))), this.useInput && (h("div", { class: "sdds-slider__input-values" }, h("div", { ref: (el) => {
|
|
342
|
+
this.minusElement = el;
|
|
343
|
+
}, class: "sdds-slider__input-value" }, this.max), h("div", { class: "sdds-slider__input-field-wrapper" }, h("input", { onFocus: (e) => {
|
|
344
|
+
if (this.readonlyState) {
|
|
345
|
+
e.preventDefault();
|
|
346
|
+
this.inputElement.blur();
|
|
347
|
+
}
|
|
348
|
+
}, size: this.calculateInputSizeFromMax(), class: "sdds-slider__input-field", value: this.value, ref: (el) => {
|
|
349
|
+
this.inputElement = el;
|
|
350
|
+
} })))), this.useControls && (h("div", { class: "sdds-slider__controls" }, h("div", { ref: (el) => (this.plusElement = el), class: "sdds-slider__control sdds-slider__control-plus" }, h("sdds-icon", { name: "plus", size: "16px" })))))));
|
|
351
|
+
}
|
|
352
|
+
static get style() { return sliderCss; }
|
|
353
|
+
}, [0, "sdds-slider", {
|
|
354
|
+
"label": [1],
|
|
355
|
+
"value": [1],
|
|
356
|
+
"min": [1],
|
|
357
|
+
"max": [1],
|
|
358
|
+
"ticks": [1],
|
|
359
|
+
"showTickNumbers": [4, "show-tick-numbers"],
|
|
360
|
+
"tooltip": [4],
|
|
361
|
+
"disabled": [4],
|
|
362
|
+
"readOnly": [4, "read-only"],
|
|
363
|
+
"controls": [4],
|
|
364
|
+
"input": [4],
|
|
365
|
+
"step": [1],
|
|
366
|
+
"name": [1],
|
|
367
|
+
"size": [1],
|
|
368
|
+
"snap": [4],
|
|
369
|
+
"sliderId": [1, "slider-id"],
|
|
370
|
+
"reset": [64]
|
|
371
|
+
}, [[0, "keydown", "handleKeydown"], [9, "mouseup", "handleMouseUp"], [9, "touchend", "handleTouchEnd"], [9, "mousemove", "handleMouseMove"], [9, "touchmove", "handleTouchMove"]]]);
|
|
372
|
+
function defineCustomElement$1() {
|
|
373
|
+
if (typeof customElements === "undefined") {
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
const components = ["sdds-slider", "sdds-icon"];
|
|
377
|
+
components.forEach(tagName => { switch (tagName) {
|
|
378
|
+
case "sdds-slider":
|
|
379
|
+
if (!customElements.get(tagName)) {
|
|
380
|
+
customElements.define(tagName, Slider);
|
|
381
|
+
}
|
|
382
|
+
break;
|
|
383
|
+
case "sdds-icon":
|
|
384
|
+
if (!customElements.get(tagName)) {
|
|
385
|
+
defineCustomElement$2();
|
|
386
|
+
}
|
|
387
|
+
break;
|
|
388
|
+
} });
|
|
389
|
+
}
|
|
390
|
+
defineCustomElement$1();
|
|
391
|
+
|
|
392
|
+
const SddsSlider = Slider;
|
|
393
|
+
const defineCustomElement = defineCustomElement$1;
|
|
394
|
+
|
|
395
|
+
export { SddsSlider, defineCustomElement };
|
|
396
|
+
|
|
397
|
+
//# sourceMappingURL=sdds-slider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sdds-slider.js","mappings":"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","names":[],"sources":["./src/components/slider/slider.scss?tag=sdds-slider","./src/components/slider/slider.tsx"],"sourcesContent":["@import 'slider-theme-vars';\n@import '../../mixins/box-sizing';\n\nsdds-slider {\n @include sdds-box-sizing;\n\n width: 100%;\n\n input[type='range'].sdds-slider-native-element {\n display: none;\n }\n}\n\n.sdds-slider-wrapper {\n width: 100%;\n\n &.read-only {\n pointer-events: none;\n }\n}\n\n.sdds-slider {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n padding-top: 65px;\n\n .sdds-slider-inner {\n width: 100%;\n height: 20px;\n position: relative;\n }\n\n .sdds-slider__controls {\n position: relative;\n top: -25px;\n\n .sdds-slider__control {\n cursor: pointer;\n\n &.sdds-slider__control-minus {\n padding: 18px 18px 18px 0;\n }\n\n &.sdds-slider__control-plus {\n padding: 18px 0 18px 18px;\n }\n }\n }\n\n .sdds-slider__input-values {\n position: relative;\n top: -25px;\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n\n .sdds-slider__input-value {\n user-select: none;\n padding: 18px;\n color: var(--sdds-grey-700);\n\n //@include type-style('detail-02');\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n }\n\n .sdds-slider__input-field-wrapper {\n background-color: var(--sdds-slider-inputfield-background);\n display: flex;\n align-items: center;\n justify-content: center;\n\n input.sdds-slider__input-field {\n // @include type-style('detail-02');\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n color: var(--sdds-slider-input-inputfield-color);\n border: 0;\n background-color: transparent;\n text-align: center;\n padding: 12px;\n box-shadow: inset 0 -1px 0 var(--sdds-slider-inputfield-box-shadow);\n border-radius: 4px 4px 0 0;\n\n &:hover {\n box-shadow: inset 0 -1px 0 var(--sdds-grey-600);\n }\n\n &:focus {\n box-shadow: inset 0 -2px 0 var(--sdds-blue-400);\n outline: 0;\n }\n }\n }\n }\n\n label {\n // @include type-style('detail-05');\n font: var(--sdds-detail-05);\n letter-spacing: var(--sdds-detail-05-ls);\n user-select: none;\n position: absolute;\n color: var(--sdds-slider-label-color);\n top: -16px;\n transform: translateY(-100%);\n\n &.offset {\n top: -35px;\n }\n }\n\n .sdds-slider__value {\n // @include type-style('detail-01');\n font: var(--sdds-detail-01);\n letter-spacing: var(--sdds-detail-01-ls);\n user-select: none;\n border-radius: 4px;\n padding: 8px;\n position: absolute;\n transform: translate(-50%, -100%);\n top: -24px;\n background-color: var(--sdds-grey-800);\n color: var(--sdds-white);\n\n svg {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n top: 34px;\n }\n }\n\n .sdds-slider__scrubber {\n position: absolute;\n\n .sdds-slider__scrubber-inner {\n width: 20px;\n height: 20px;\n border-radius: 100%;\n background-color: var(--sdds-slider-thumb-color);\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n cursor: pointer;\n\n &::before {\n content: ' ';\n display: none;\n width: 48px;\n height: 48px;\n background-color: var(--sdds-slider-thumb-color);\n position: absolute;\n border-radius: 100%;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n &:hover {\n &::before {\n display: block;\n opacity: 0.08;\n }\n }\n\n &.pressed {\n width: 24px;\n height: 24px;\n\n &::before {\n display: block;\n opacity: 0.16 !important;\n }\n }\n }\n }\n\n .sdds-slider__value-dividers-wrapper {\n position: relative;\n width: 100%;\n pointer-events: none;\n }\n\n .sdds-slider__value-dividers {\n pointer-events: none;\n position: absolute;\n display: flex;\n justify-content: space-between;\n width: 100%;\n\n .sdds-slider__value-divider {\n transform: translateY(-50%);\n height: 16px;\n background-color: var(--sdds-slider-divider-color);\n color:var(--sdds-slider-divider-values-color);\n width: 1px;\n\n span {\n display: block;\n user-select: none;\n color: var(-sdds-grey-700);\n\n // @include type-style('detail-05');\n font: var(--sdds-detail-05);\n letter-spacing: var(--sdds-detail-05-ls);\n position: relative;\n top: -7px;\n left: 50%;\n transform: translate(-50%, -100%);\n width: 50px;\n text-align: center;\n }\n }\n }\n\n .sdds-slider__track {\n width: 100%;\n height: 2px;\n border-radius: 1px;\n background-color: var(--sdds-slider-track-color);\n position: relative;\n\n &:focus {\n outline: 0;\n\n .sdds-slider__scrubber {\n .sdds-slider__scrubber-inner {\n width: 24px;\n height: 24px;\n\n &::before {\n display: block;\n opacity: 0.08;\n }\n }\n }\n }\n\n .sdds-slider__track-fill {\n background-color: var(--sdds-slider-track-fill-color);\n border-radius: 2px;\n height: 4px;\n position: absolute;\n left: 0;\n top: -1px;\n }\n }\n\n &.disabled {\n // pointer-events: none;\n cursor: not-allowed;\n\n > * {\n pointer-events: none;\n }\n\n label {\n color: var(--sdds-slider-label-color-disabled);\n }\n\n .sdds-slider__controls {\n .sdds-slider__control {\n cursor: default;\n\n &.sdds-slider__control-minus,\n &.sdds-slider__control-plus {\n svg {\n fill: var(--sdds-slider-controls-color);\n }\n }\n }\n }\n\n .sdds-slider__input-values {\n .sdds-slider__input-value {\n color: var(--sdds-slider-controls-color);\n }\n\n .sdds-slider__input-field-wrapper {\n pointer-events: none;\n\n input.sdds-slider__input-field {\n color: var(--sdds-slider-controls-color);\n pointer-events: none;\n }\n }\n }\n\n .sdds-slider__value {\n display: none;\n }\n\n .sdds-slider__track {\n .sdds-slider__track-fill {\n background-color: var(--sdds-slider-track-fill-color);\n }\n }\n\n .sdds-slider__value-dividers {\n .sdds-slider__value-divider {\n span {\n color: var(--sdds-slider-track-fill-color);\n }\n }\n }\n\n .sdds-slider__scrubber {\n pointer-events: none;\n\n .sdds-slider__scrubber-inner {\n background: var(--sdds-slider-track-color);\n cursor: default;\n }\n }\n }\n\n &.sdds-slider-small {\n .sdds-slider__scrubber {\n .sdds-slider__scrubber-inner {\n width: 16px;\n height: 16px;\n\n &::before {\n width: 40px;\n height: 40px;\n }\n\n &.pressed {\n width: 20px;\n height: 20px;\n }\n }\n }\n }\n}\n.sdds-slider__controls {\n .sdds-slider__control {\n cursor: default;\n\n &.sdds-slider__control-minus,\n &.sdds-slider__control-plus {\n svg {\n fill: var(--sdds-slider-controls-color);\n }\n }\n }\n}","import { Component, h, Prop, Listen, EventEmitter, Event, Method } from '@stencil/core';\n\n@Component({\n tag: 'sdds-slider',\n styleUrl: 'slider.scss',\n shadow: false,\n})\nexport class Slider {\n /** Text for label */\n @Prop() label: string = '';\n\n /** Initial value */\n @Prop() value: string = '0';\n\n /** Minimum value */\n @Prop() min: string = '0';\n\n /** Maximum value */\n @Prop() max: string = '100';\n\n /** Number of tick markers (tick for min- and max-value will be added automatically) */\n @Prop() ticks: string = '0';\n\n /** Decide to show numbers above the tick markers or not */\n @Prop() showTickNumbers: boolean = false;\n\n /** Decide to show the tooltip or not */\n @Prop() tooltip: boolean = null;\n\n /** Sets the disabled state for the whole component */\n @Prop() disabled: boolean = null;\n\n /** Sets the read only state for the whole component */\n @Prop() readOnly: boolean = null;\n\n /** Decide to show the controls or not */\n @Prop() controls: boolean = null;\n\n /** Decide to show the input field or not */\n @Prop() input: boolean = null;\n\n /** Defines how much to increment/decrement the value when using controls */\n @Prop() step: string = '1';\n\n /** Name property (will be inherited by the native slider component) */\n @Prop() name: string = '';\n\n /** Sets the size of the scrubber */\n @Prop() size: 'sm' | '' = '';\n\n /** Snap to the ticks grid */\n @Prop() snap: boolean = null;\n\n /** Id for the sliders input element, randomly generated if not specified. */\n @Prop() sliderId: string = crypto.randomUUID();\n\n wrapperElement: HTMLElement = null;\n\n scrubberElement: HTMLElement = null;\n\n scrubberInnerElement: HTMLElement = null;\n\n dividersElement: HTMLElement = null;\n\n trackElement: HTMLElement = null;\n\n trackFillElement: HTMLElement = null;\n\n minusElement: HTMLElement = null;\n\n plusElement: HTMLElement = null;\n\n inputElement: HTMLInputElement = null;\n\n nativeRangeInputElement: HTMLInputElement = null;\n\n scrubberGrabPos: object = { x: 0, y: 0 };\n\n scrubberGrabbed: boolean = false;\n\n scrubberLeft: number = 0;\n\n tickValues: Array<number> = [];\n\n disabledState: boolean = false;\n\n readonlyState: boolean = false;\n\n useControls: boolean = false;\n\n useInput: boolean = false;\n\n useSmall: boolean = false;\n\n useSnapping: boolean = false;\n\n supposedValueSlot: number = -1;\n\n eventListenersAdded: boolean = false;\n\n resizeObserverAdded: boolean = false;\n\n /** Sends unique checkbox identifier and value when the slider has a change in value. */\n @Event({\n eventName: 'sddsChange',\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n sddsChange: EventEmitter<{\n value: string;\n }>;\n\n /** Public method to re-initialise the slider if some configuration props are changed */\n @Method() async reset() {\n // @TODO: maybe refactor to use watch-decorators instead\n this.componentWillLoad();\n this.componentDidLoad();\n }\n\n @Listen('keydown')\n handleKeydown(event) {\n switch (event.key) {\n case 'ArrowLeft':\n this.stepLeft();\n break;\n\n case 'ArrowRight':\n this.stepRight();\n break;\n\n default:\n break;\n }\n }\n\n @Listen('mouseup', { target: 'window' })\n handleMouseUp() {\n if (!this.scrubberGrabbed) {\n return;\n }\n\n this.scrubberGrabbed = false;\n this.scrubberInnerElement.classList.remove('pressed');\n this.updateValue();\n\n this.trackElement.focus();\n }\n\n @Listen('touchend', { target: 'window' })\n handleTouchEnd() {\n if (!this.scrubberGrabbed) {\n return;\n }\n\n this.scrubberGrabbed = false;\n this.scrubberInnerElement.classList.remove('pressed');\n this.updateValue();\n\n this.trackElement.focus();\n }\n\n @Listen('mousemove', { target: 'window' })\n handleMouseMove(event) {\n if (!this.scrubberGrabbed) {\n return;\n }\n\n const numTicks = parseInt(this.ticks);\n const trackRect = this.trackElement.getBoundingClientRect();\n let localLeft = event.clientX - trackRect.left;\n this.supposedValueSlot = -1;\n\n if (this.useSnapping && numTicks > 0) {\n const v = Math.round(this.getTrackWidth() / (numTicks + 1));\n localLeft = Math.round(localLeft / v) * v;\n\n this.supposedValueSlot = Math.round(localLeft / v);\n }\n\n this.scrubberLeft = this.constrainScrubber(localLeft);\n this.scrubberElement.style.left = `${this.scrubberLeft}px`;\n\n this.updateValue();\n this.updateTrack();\n }\n\n @Listen('touchmove', { target: 'window' })\n handleTouchMove(event) {\n event.preventDefault();\n\n if (!this.scrubberGrabbed) {\n return;\n }\n\n const numTicks = parseInt(this.ticks);\n const trackRect = this.trackElement.getBoundingClientRect();\n let localLeft = event.touches[0].clientX - trackRect.left;\n\n this.supposedValueSlot = -1;\n\n if (this.useSnapping && numTicks > 0) {\n const v = Math.round(this.getTrackWidth() / (numTicks + 1));\n localLeft = Math.round(localLeft / v) * v;\n\n this.supposedValueSlot = Math.round(localLeft / v);\n }\n\n this.scrubberLeft = this.constrainScrubber(localLeft);\n this.scrubberElement.style.left = `${this.scrubberLeft}px`;\n\n this.updateValue();\n this.updateTrack();\n }\n\n updateTrack() {\n const trackWidth = this.getTrackWidth();\n const percentageFilled = (this.scrubberLeft / trackWidth) * 100;\n\n this.trackFillElement.style.width = `${percentageFilled}%`;\n }\n\n dispatchChangeEvent() {\n this.sddsChange.emit({ value: this.value });\n }\n\n updateValue() {\n const trackWidth = this.getTrackWidth();\n\n /* if snapping (supposedValueSlot > 0) is enabled, make sure we display the supposed value (instead of maybe getting a -1/+1 depending on rounding) */\n if (this.supposedValueSlot > 0) {\n const supposedValue = this.tickValues[this.supposedValueSlot];\n this.value = `${supposedValue}`;\n } else {\n const percentage = this.scrubberLeft / trackWidth;\n this.value = `${Math.trunc(this.getMin() + percentage * (this.getMax() - this.getMin()))}`;\n }\n\n this.dispatchChangeEvent();\n }\n\n updateValueForced(value) {\n this.value = value;\n this.dispatchChangeEvent();\n }\n\n getMin() {\n return parseFloat(this.min);\n }\n\n getMax() {\n return parseFloat(this.max);\n }\n\n constrainScrubber(x) {\n const width = this.getTrackWidth();\n\n if (x < 0) {\n return 0;\n }\n\n if (x > width) {\n return width;\n }\n\n return x;\n }\n\n getTrackWidth() {\n const trackRect = this.trackElement.getBoundingClientRect();\n return trackRect.right - trackRect.left;\n }\n\n calculateScrubberLeftFromValue(value) {\n const initValue = value;\n const trackWidth = this.getTrackWidth();\n\n const normalizedValue = initValue - this.getMin();\n const normalizedMax = this.getMax() - this.getMin();\n\n const calculatedLeft = (normalizedValue / normalizedMax) * trackWidth;\n\n this.scrubberLeft = calculatedLeft;\n\n this.scrubberElement.style.left = `${this.scrubberLeft}px`;\n }\n\n componentDidLoad() {\n if (!this.resizeObserverAdded) {\n this.resizeObserverAdded = true;\n\n const resizeObserver = new ResizeObserver((/* entries */) => {\n this.calculateScrubberLeftFromValue(this.value);\n this.updateTrack();\n });\n\n resizeObserver.observe(this.wrapperElement);\n }\n\n if (!this.eventListenersAdded) {\n this.eventListenersAdded = true;\n\n this.scrubberElement.addEventListener('mousedown', (event) => {\n event.preventDefault();\n this.grabScrubber(event.offsetX, event.offsetY);\n });\n\n this.scrubberElement.addEventListener('touchstart', (event) => {\n const rect = this.scrubberElement.getBoundingClientRect();\n const x = event.targetTouches[0].pageX - rect.left;\n const y = event.targetTouches[0].pageY - rect.top;\n this.grabScrubber(x, y);\n });\n\n if (this.useControls) {\n this.minusElement.addEventListener('click', () => {\n this.stepLeft();\n });\n\n this.plusElement.addEventListener('click', () => {\n this.stepRight();\n });\n }\n\n if (this.inputElement) {\n this.inputElement.addEventListener('keydown', (event) => {\n event.stopPropagation();\n\n if (event.key === 'Enter') {\n let newValue = parseInt(this.inputElement.value);\n\n if (newValue < this.getMin()) {\n newValue = this.getMin();\n } else if (newValue > this.getMax()) {\n newValue = this.getMax();\n }\n\n this.calculateScrubberLeftFromValue(newValue);\n this.updateValueForced(newValue);\n this.updateTrack();\n\n this.inputElement.blur();\n this.wrapperElement.focus();\n }\n });\n }\n }\n\n this.calculateScrubberLeftFromValue(this.value);\n this.updateTrack();\n }\n\n grabScrubber(xOffset, yOffset) {\n if (this.readonlyState) {\n return;\n }\n\n this.scrubberGrabPos = {\n x: xOffset,\n y: yOffset,\n };\n\n this.scrubberGrabbed = true;\n this.scrubberInnerElement.classList.add('pressed');\n }\n\n calculateInputSizeFromMax() {\n return this.max.length;\n }\n\n controlsStep(delta) {\n if (this.readonlyState || this.disabled) {\n return;\n }\n\n const trackWidth = this.getTrackWidth();\n const percentage = this.scrubberLeft / trackWidth;\n const numTicks = parseInt(this.ticks);\n\n let currentValue = this.getMin() + percentage * (this.getMax() - this.getMin());\n\n currentValue += delta;\n\n if (currentValue < this.getMin()) {\n currentValue = this.getMin();\n } else if (currentValue > this.getMax()) {\n currentValue = this.getMax();\n }\n\n this.value = `${currentValue}`;\n\n /* if snapping is enabled, instead just increment or decrement the current \"fixed\" value from our ticknumber array */\n if (this.useSnapping && numTicks > 0) {\n const stepDir = delta > 0 ? 1 : -1;\n this.supposedValueSlot += stepDir;\n\n if (this.supposedValueSlot < 0) {\n this.supposedValueSlot = 0;\n } else if (this.supposedValueSlot > numTicks + 1) {\n this.supposedValueSlot = numTicks + 1;\n }\n }\n\n this.calculateScrubberLeftFromValue(currentValue);\n this.updateTrack();\n this.updateValue();\n }\n\n stepLeft() {\n this.controlsStep(-parseInt(this.step));\n }\n\n stepRight() {\n this.controlsStep(parseInt(this.step));\n }\n\n componentWillLoad() {\n const numTicks = parseInt(this.ticks);\n\n if (numTicks > 0) {\n this.tickValues = [this.getMin()];\n\n const step = (this.getMax() - this.getMin()) / (numTicks + 1);\n\n for (let i = 1; i < numTicks + 1; i++) {\n this.tickValues.push(this.getMin() + Math.round(step * i));\n }\n\n this.tickValues.push(this.getMax());\n }\n\n if (this.disabled !== null) {\n this.disabledState = true;\n } else {\n this.disabledState = false;\n }\n\n if (this.readOnly !== null) {\n this.readonlyState = true;\n } else {\n this.readonlyState = false;\n }\n\n this.useInput = false;\n this.useControls = false;\n\n if (this.controls !== null) {\n this.useControls = true;\n } else if (this.input !== null) {\n this.useInput = true;\n }\n\n this.useSmall = false;\n\n if (this.size === 'sm') {\n this.useSmall = true;\n }\n\n this.useSnapping = false;\n\n if (this.snap !== null) {\n this.useSnapping = true;\n }\n\n const min = this.getMin();\n const max = this.getMax();\n\n if (min > max) {\n console.warn(\n 'min-prop must have a higher value than max-prop for the component to work correctly.',\n );\n this.disabledState = true;\n }\n }\n\n render() {\n return (\n <div class={`sdds-slider-wrapper ${this.readonlyState ? 'read-only' : ''}`}>\n <input\n ref={(el) => {\n this.nativeRangeInputElement = el as HTMLInputElement;\n }}\n class=\"sdds-slider-native-element\"\n type=\"range\"\n value={this.value}\n name={this.name}\n min={this.min}\n max={this.max}\n disabled={this.disabled}\n id={this.sliderId}\n ></input>\n\n <div\n class={`sdds-slider ${this.disabledState ? 'disabled' : ''} ${\n this.useSmall ? 'sdds-slider-small' : ''\n }`}\n ref={(el) => {\n this.wrapperElement = el as HTMLElement;\n }}\n >\n {this.useInput && (\n <div class=\"sdds-slider__input-values\">\n <div\n ref={(el) => {\n this.minusElement = el as HTMLElement;\n }}\n class=\"sdds-slider__input-value\"\n >\n {this.min}\n </div>\n </div>\n )}\n\n {this.useControls && (\n <div class=\"sdds-slider__controls\">\n <div\n ref={(el) => (this.minusElement = el as HTMLElement)}\n class=\"sdds-slider__control sdds-slider__control-minus\"\n >\n <sdds-icon name=\"minus\" size=\"16px\"></sdds-icon>\n </div>\n </div>\n )}\n\n <div class=\"sdds-slider-inner\">\n <label class={this.tickValues.length > 0 && 'offset'}>{this.label}</label>\n\n {this.tickValues.length > 0 && (\n <div class=\"sdds-slider__value-dividers-wrapper\">\n <div\n ref={(el) => {\n this.dividersElement = el as HTMLElement;\n }}\n class=\"sdds-slider__value-dividers\"\n >\n {this.tickValues.map((value) => (\n <div class=\"sdds-slider__value-divider\">\n {this.showTickNumbers && <span>{value}</span>}\n </div>\n ))}\n </div>\n </div>\n )}\n\n <div\n class=\"sdds-slider__track\"\n ref={(el) => {\n this.trackElement = el as HTMLElement;\n }}\n tabindex={this.disabled ? '-1' : '0'}\n >\n <div\n class=\"sdds-slider__track-fill\"\n ref={(el) => {\n this.trackFillElement = el as HTMLElement;\n }}\n ></div>\n\n <div\n class=\"sdds-slider__scrubber\"\n ref={(el) => {\n this.scrubberElement = el as HTMLElement;\n }}\n >\n {this.tooltip !== null && (\n <div class=\"sdds-slider__value\">\n {this.value}\n <svg\n width=\"18\"\n height=\"14\"\n viewBox=\"0 0 18 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.15882 12.6915L0.990487 1.54076C0.562658 0.875246 1.0405 0 1.83167 0H16.1683C16.9595 0 17.4373 0.875246 17.0095 1.54076L9.84118 12.6915C9.44754 13.3038 8.55246 13.3038 8.15882 12.6915Z\"\n fill=\"#37414F\"\n />\n </svg>\n </div>\n )}\n\n <div\n class=\"sdds-slider__scrubber-inner\"\n ref={(el) => {\n this.scrubberInnerElement = el as HTMLElement;\n }}\n ></div>\n </div>\n </div>\n </div>\n\n {this.useInput && (\n <div class=\"sdds-slider__input-values\">\n <div\n ref={(el) => {\n this.minusElement = el as HTMLElement;\n }}\n class=\"sdds-slider__input-value\"\n >\n {this.max}\n </div>\n <div class=\"sdds-slider__input-field-wrapper\">\n <input\n onFocus={(e) => {\n if (this.readonlyState) {\n e.preventDefault();\n this.inputElement.blur();\n }\n }}\n size={this.calculateInputSizeFromMax()}\n class=\"sdds-slider__input-field\"\n value={this.value}\n ref={(el) => {\n this.inputElement = el as HTMLInputElement;\n }}\n />\n </div>\n </div>\n )}\n\n {this.useControls && (\n <div class=\"sdds-slider__controls\">\n <div\n ref={(el) => (this.plusElement = el as HTMLElement)}\n class=\"sdds-slider__control sdds-slider__control-plus\"\n >\n <sdds-icon name=\"plus\" size=\"16px\"></sdds-icon>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SddsSpinner extends Components.SddsSpinner, HTMLElement {}
|
|
4
|
+
export const SddsSpinner: {
|
|
5
|
+
prototype: SddsSpinner;
|
|
6
|
+
new (): SddsSpinner;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|