@cas-smartdesign/button 7.0.0 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/button.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ElementBase as e } from "@cas-smartdesign/element-base";
2
2
  import { ImageEmbed as t } from "@cas-smartdesign/image-embed";
3
3
  //#region button.html?raw
4
- var n = "<slot name=\"icon\">\n <sd-image-embed class=\"icon\" part=\"icon\"></sd-image-embed>\n</slot>\n<div class=\"content\">\n <slot></slot>\n</div>\n", r = ":host{contain:content;box-sizing:border-box;vertical-align:middle;min-height:36px;padding:var(--spacing-x3,6px) var(--spacing-x4,8px);border-radius:var(--radius-s,4px);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;justify-content:center;align-items:center;display:inline-flex}:host:focus-visible{outline:1px solid var(--color-border-interaction-focus,#111);outline-offset:var(--spacing-x1,2px)}:host:is(:disabled,[disabled],[aria-disabled=true]){cursor:default}:host{background-color:var(--sd-button-background-color,var(--color-bg-action-neutral-default,#d4d4d4));color:var(--sd-button-color,var(--color-fg-action-neutral-default,#111))}:host:after{content:\"\";border:var(--sd-button-border,none);border-radius:inherit;position:absolute;inset:0}:host(:is(:focus,:hover)){background-color:var(--sd-button-background-color-hover,var(--color-bg-action-neutral-default-hover,#c6c6c6));color:var(--sd-button-color-hover,var(--color-fg-action-neutral-default-hover,#111))}:host(:is(:focus,:hover)):after{border-color:var(--sd-button-border-color-hover,transparent)}:host(:active){background-color:var(--sd-button-background-color-pressed,var(--color-bg-action-neutral-default-pressed,#b3b3b3));color:var(--sd-button-color-pressed,var(--color-fg-action-neutral-default-pressed,#111))}:host(:active):after{border-color:var(--sd-button-border-color-pressed,transparent)}:host(:is([aria-disabled=true],[disabled])){background-color:var(--sd-button-background-color-disabled,var(--color-bg-interaction-disabled,#e7e7e7));color:var(--sd-button-color-disabled,var(--color-fg-interaction-disabled,#999))}:host(:is([aria-disabled=true],[disabled])):after{border-color:var(--sd-button-border-color-disabled,transparent)}:host(:is([aria-disabled=true],[disabled])){cursor:default}:host(:focus-visible){outline:1px solid var(--color-border-interaction-focus,#111);outline-offset:var(--spacing-x1,2px)}:host([variant=primary i]){--sd-button-background-color:var(--color-bg-action-accent-default,#1467ba);--sd-button-color:var(--color-fg-interaction-on-color,#fff);--sd-button-background-color-hover:var(--color-bg-action-accent-default-hover,#0f4d8b);--sd-button-color-hover:var(--color-fg-interaction-on-color,#fff);--sd-button-background-color-pressed:var(--color-bg-action-accent-default-pressed,#0b3a69);--sd-button-color-pressed:var(--color-fg-interaction-on-color,#fff)}:host([variant=outline i]){--sd-button-background-color:var(--color-bg-action-accent-weak,#e0ebf6);--sd-button-color:var(--color-fg-action-accent-default,#1467ba);--sd-button-border:1px solid var(--color-border-action-accent-default,#1467ba);--sd-button-background-color-hover:var(--color-bg-action-accent-weak-hover,#d5e4f3);--sd-button-color-hover:var(--color-fg-action-accent-default-hover,#0f4d8b);--sd-button-border-color-hover:var(--color-border-action-accent-default-hover,#0f4d8b);--sd-button-background-color-pressed:var(--color-bg-action-accent-weak-pressed,#c7dbef);--sd-button-color-pressed:var(--color-fg-action-accent-default-pressed,#0b3a69);--sd-button-border-color-pressed:var(--color-border-action-accent-default-pressed,#0b3a69);--sd-button-background-color-disabled:transparent;--sd-button-border-color-disabled:var(--color-border-interaction-disabled,#c6c6c6)}:host([variant=ghost i]){--sd-button-background-color:transparent;--sd-button-color:var(--color-fg-action-accent-default,#1467ba);--sd-button-background-color-hover:var(--color-bg-action-accent-weakest-hover,#e0ebf6);--sd-button-color-hover:var(--color-fg-action-accent-default-hover,#0f4d8b);--sd-button-background-color-pressed:var(--color-bg-action-accent-weakest-pressed,#c7dbef);--sd-button-color-pressed:var(--color-fg-action-accent-default-pressed,#0b3a69);--sd-button-background-color-disabled:transparent}:host([variant=outline-danger i]){--sd-button-background-color:var(--color-bg-action-danger-default,#fbdde0);--sd-button-color:var(--color-fg-action-danger-default,#a90014);--sd-button-border:1px solid var(--color-border-action-danger-default,#a90014);--sd-button-background-color-hover:var(--color-bg-action-danger-default-hover,#fad2d6);--sd-button-color-hover:var(--color-fg-action-danger-default-hover,#7f000f);--sd-button-border-color-hover:var(--color-border-action-danger-default-hover,#7f000f);--sd-button-background-color-pressed:var(--color-bg-action-danger-default-pressed,#f8c3c9);--sd-button-color-pressed:var(--color-fg-action-danger-default-pressed,#5f000b);--sd-button-border-color-pressed:var(--color-border-action-danger-default-pressed,#5f000b);--sd-button-background-color-disabled:transparent;--sd-button-border-color-disabled:var(--color-border-interaction-disabled,#c6c6c6)}:host([variant=ghost-danger i]){--sd-button-background-color:transparent;--sd-button-color:var(--color-fg-action-danger-default,#a90014);--sd-button-background-color-hover:var(--color-bg-action-danger-default-hover,#fad2d6);--sd-button-color-hover:var(--color-fg-action-danger-default-hover,#7f000f);--sd-button-background-color-pressed:var(--color-bg-action-danger-default-pressed,#f8c3c9);--sd-button-color-pressed:var(--color-fg-action-danger-default-pressed,#5f000b);--sd-button-background-color-disabled:transparent}:host([variant=selection i]){--sd-button-background-color:var(--color-bg-selection-neutral-weakest,#fff);--sd-button-color:var(--color-fg-selection-neutral-default,#111);--sd-button-border:1px solid var(--color-border-selection-neutral-default,#999);--sd-button-background-color-hover:var(--color-bg-selection-accent-weak-hover,#e0ebf6);--sd-button-color-hover:var(--color-fg-selection-neutral-default,#111);--sd-button-border-color-hover:var(--color-border-selection-neutral-default,#999);--sd-button-background-color-pressed:var(--color-bg-selection-accent-weak,#c7dbef);--sd-button-color-pressed:var(--color-fg-selection-neutral-default,#111);--sd-button-border-color-pressed:var(--color-border-selection-accent-default,#1467ba);--sd-button-border-color-disabled:var(--color-border-interaction-disabled,#c6c6c6)}:host([variant=custom i]){--sd-button-background-color-hover:color-mix(in oklab, var(--sd-button-background-color,var(--color-bg-action-neutral-default,#d4d4d4)), var(--color-fg-default,#111) 12%);--sd-button-color-hover:var(--sd-button-color,var(--color-fg-action-neutral-default,#111));--sd-button-background-color-pressed:color-mix(in oklab, var(--sd-button-background-color,var(--color-bg-action-neutral-default,#d4d4d4)), var(--color-fg-default,#111) 22%);--sd-button-color-pressed:var(--sd-button-color,var(--color-fg-action-neutral-default,#111))}:host([variant=selection i][aria-pressed=true]){--sd-button-background-color:var(--color-bg-selection-accent-weak,#c7dbef);--sd-button-border:1px solid var(--color-border-selection-accent-default,#1467ba);--sd-button-background-color-hover:var(--color-bg-selection-accent-weak,#c7dbef);--sd-button-border-color-hover:var(--color-border-selection-accent-default,#1467ba)}.icon:is(:not([src]),[src=\"\"],[src=\"data:,\"]){display:none}.content{align-items:center;min-width:0;display:flex}.content ::slotted(*){font:var(--text-body);margin-left:var(--sd-button-content-padding,8px)}.content ::slotted(:last-child){margin-right:var(--sd-button-content-padding,8px)}.icon{max-height:var(--sd-button-max-icon-size,24px);max-width:var(--sd-button-max-icon-size,24px)}", i = [
4
+ var n = "<slot name=\"icon\">\n <sd-image-embed class=\"icon\" part=\"icon\" exportparts=\"img, svg\"></sd-image-embed>\n</slot>\n<div class=\"content\">\n <slot></slot>\n</div>\n", r = ":host{contain:content;box-sizing:border-box;vertical-align:middle;min-height:36px;padding:var(--spacing-x3,6px) var(--spacing-x4,8px);border-radius:var(--radius-s,4px);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;justify-content:center;align-items:center;display:inline-flex}:host:focus-visible{outline:1px solid var(--color-border-interaction-focus,#111);outline-offset:var(--spacing-x1,2px)}:host:is(:disabled,[disabled],[aria-disabled=true]){cursor:default}:host{background-color:var(--sd-button-background-color,var(--color-bg-action-neutral-default,#d4d4d4));color:var(--sd-button-color,var(--color-fg-action-neutral-default,#111))}:host:after{content:\"\";border:var(--sd-button-border,none);border-radius:inherit;position:absolute;inset:0}:host(:is(:focus,:hover)){background-color:var(--sd-button-background-color-hover,var(--color-bg-action-neutral-default-hover,#c6c6c6));color:var(--sd-button-color-hover,var(--color-fg-action-neutral-default-hover,#111))}:host(:is(:focus,:hover)):after{border-color:var(--sd-button-border-color-hover,transparent)}:host(:active){background-color:var(--sd-button-background-color-pressed,var(--color-bg-action-neutral-default-pressed,#b3b3b3));color:var(--sd-button-color-pressed,var(--color-fg-action-neutral-default-pressed,#111))}:host(:active):after{border-color:var(--sd-button-border-color-pressed,transparent)}:host(:is([aria-disabled=true],[disabled])){background-color:var(--sd-button-background-color-disabled,var(--color-bg-interaction-disabled,#e7e7e7));color:var(--sd-button-color-disabled,var(--color-fg-interaction-disabled,#999))}:host(:is([aria-disabled=true],[disabled])):after{border-color:var(--sd-button-border-color-disabled,transparent)}:host(:is([aria-disabled=true],[disabled])){cursor:default}:host(:focus-visible){outline:1px solid var(--color-border-interaction-focus,#111);outline-offset:var(--spacing-x1,2px)}:host([variant=primary i]){--sd-button-background-color:var(--color-bg-action-accent-default,#1467ba);--sd-button-color:var(--color-fg-interaction-on-color,#fff);--sd-button-background-color-hover:var(--color-bg-action-accent-default-hover,#0f4d8b);--sd-button-color-hover:var(--color-fg-interaction-on-color,#fff);--sd-button-background-color-pressed:var(--color-bg-action-accent-default-pressed,#0b3a69);--sd-button-color-pressed:var(--color-fg-interaction-on-color,#fff)}:host([variant=outline i]){--sd-button-background-color:var(--color-bg-action-accent-weak,#e0ebf6);--sd-button-color:var(--color-fg-action-accent-default,#1467ba);--sd-button-border:1px solid var(--color-border-action-accent-default,#1467ba);--sd-button-background-color-hover:var(--color-bg-action-accent-weak-hover,#d5e4f3);--sd-button-color-hover:var(--color-fg-action-accent-default-hover,#0f4d8b);--sd-button-border-color-hover:var(--color-border-action-accent-default-hover,#0f4d8b);--sd-button-background-color-pressed:var(--color-bg-action-accent-weak-pressed,#c7dbef);--sd-button-color-pressed:var(--color-fg-action-accent-default-pressed,#0b3a69);--sd-button-border-color-pressed:var(--color-border-action-accent-default-pressed,#0b3a69);--sd-button-background-color-disabled:transparent;--sd-button-border-color-disabled:var(--color-border-interaction-disabled,#c6c6c6)}:host([variant=ghost i]){--sd-button-background-color:transparent;--sd-button-color:var(--color-fg-action-accent-default,#1467ba);--sd-button-background-color-hover:var(--color-bg-action-accent-weakest-hover,#e0ebf6);--sd-button-color-hover:var(--color-fg-action-accent-default-hover,#0f4d8b);--sd-button-background-color-pressed:var(--color-bg-action-accent-weakest-pressed,#c7dbef);--sd-button-color-pressed:var(--color-fg-action-accent-default-pressed,#0b3a69);--sd-button-background-color-disabled:transparent}:host([variant=outline-danger i]){--sd-button-background-color:var(--color-bg-action-danger-default,#fbdde0);--sd-button-color:var(--color-fg-action-danger-default,#a90014);--sd-button-border:1px solid var(--color-border-action-danger-default,#a90014);--sd-button-background-color-hover:var(--color-bg-action-danger-default-hover,#fad2d6);--sd-button-color-hover:var(--color-fg-action-danger-default-hover,#7f000f);--sd-button-border-color-hover:var(--color-border-action-danger-default-hover,#7f000f);--sd-button-background-color-pressed:var(--color-bg-action-danger-default-pressed,#f8c3c9);--sd-button-color-pressed:var(--color-fg-action-danger-default-pressed,#5f000b);--sd-button-border-color-pressed:var(--color-border-action-danger-default-pressed,#5f000b);--sd-button-background-color-disabled:transparent;--sd-button-border-color-disabled:var(--color-border-interaction-disabled,#c6c6c6)}:host([variant=ghost-danger i]){--sd-button-background-color:transparent;--sd-button-color:var(--color-fg-action-danger-default,#a90014);--sd-button-background-color-hover:var(--color-bg-action-danger-default-hover,#fad2d6);--sd-button-color-hover:var(--color-fg-action-danger-default-hover,#7f000f);--sd-button-background-color-pressed:var(--color-bg-action-danger-default-pressed,#f8c3c9);--sd-button-color-pressed:var(--color-fg-action-danger-default-pressed,#5f000b);--sd-button-background-color-disabled:transparent}:host([variant=selection i]){--sd-button-background-color:var(--color-bg-selection-neutral-weakest,#fff);--sd-button-color:var(--color-fg-selection-neutral-default,#111);--sd-button-border:1px solid var(--color-border-selection-neutral-default,#999);--sd-button-background-color-hover:var(--color-bg-selection-accent-weak-hover,#e0ebf6);--sd-button-color-hover:var(--color-fg-selection-neutral-default,#111);--sd-button-border-color-hover:var(--color-border-selection-neutral-default,#999);--sd-button-background-color-pressed:var(--color-bg-selection-accent-weak,#c7dbef);--sd-button-color-pressed:var(--color-fg-selection-neutral-default,#111);--sd-button-border-color-pressed:var(--color-border-selection-accent-default,#1467ba);--sd-button-border-color-disabled:var(--color-border-interaction-disabled,#c6c6c6)}:host([variant=custom i]){--sd-button-background-color-hover:color-mix(in oklab, var(--sd-button-background-color,var(--color-bg-action-neutral-default,#d4d4d4)), var(--color-fg-default,#111) 12%);--sd-button-color-hover:var(--sd-button-color,var(--color-fg-action-neutral-default,#111));--sd-button-background-color-pressed:color-mix(in oklab, var(--sd-button-background-color,var(--color-bg-action-neutral-default,#d4d4d4)), var(--color-fg-default,#111) 22%);--sd-button-color-pressed:var(--sd-button-color,var(--color-fg-action-neutral-default,#111))}:host([variant=selection i][aria-pressed=true]){--sd-button-background-color:var(--color-bg-selection-accent-weak,#c7dbef);--sd-button-border:1px solid var(--color-border-selection-accent-default,#1467ba);--sd-button-background-color-hover:var(--color-bg-selection-accent-weak,#c7dbef);--sd-button-border-color-hover:var(--color-border-selection-accent-default,#1467ba)}.icon:is(:not([src]),[src=\"\"],[src=\"data:,\"]){display:none}.content{align-items:center;min-width:0;display:flex}.content ::slotted(*){font:var(--text-body);margin-left:var(--sd-button-content-padding,8px)}.content ::slotted(:last-child){margin-right:var(--sd-button-content-padding,8px)}.icon{max-height:var(--sd-button-max-icon-size,24px);max-width:var(--sd-button-max-icon-size,24px)}", i = [
5
5
  "primary",
6
6
  "outline",
7
7
  "standard",
@@ -1 +1 @@
1
- {"version":3,"file":"button.mjs","names":[],"sources":["../button.html?raw","../styles.scss?inline","../button.ts"],"sourcesContent":["export default \"<slot name=\\\"icon\\\">\\n\\t<sd-image-embed class=\\\"icon\\\" part=\\\"icon\\\"></sd-image-embed>\\n</slot>\\n<div class=\\\"content\\\">\\n\\t<slot></slot>\\n</div>\\n\"","@use \"scss/config\";\n@use \"scss/button\";\n\n:host {\n\tcontain: content;\n\n\t@include button.base;\n\t@include config.state(\"base\");\n\t&::after {\n\t\tcontent: \"\";\n\t\tposition: absolute;\n\t\tinset: 0;\n\t\tborder: var(--sd-button-border, none);\n\t\tborder-radius: inherit;\n\t}\n}\n\n:host(:is(:focus, :hover)) {\n\t@include config.state(\"hover\");\n}\n\n:host(:active) {\n\t@include config.state(\"pressed\");\n}\n\n:host(:is([aria-disabled=\"true\"], [disabled])) {\n\t@include config.state(\"disabled\");\n\tcursor: default;\n}\n\n:host(:focus-visible) {\n\toutline: 1px solid var(--color-border-interaction-focus, #111);\n\toutline-offset: var(--spacing-x1, 2px);\n}\n\n@each $name, $props in config.$variants {\n\t:host([variant=\"#{$name}\" i]) {\n\t\t@include config.variant-vars($name);\n\t}\n}\n\n:host([variant=\"selection\" i][aria-pressed=\"true\"]) {\n\t@include config.selection-checked-vars;\n}\n\n.icon:is(:not([src]), [src=\"\"], [src=\"data:,\"]) {\n\tdisplay: none;\n}\n\n.content {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-width: 0px;\n}\n\n.content ::slotted(*) {\n\tfont: var(--text-body);\n\tmargin-left: var(--sd-button-content-padding, 8px);\n}\n\n.content ::slotted(*:last-child) {\n\tmargin-right: var(--sd-button-content-padding, 8px);\n}\n\n.icon {\n\tmax-height: var(--sd-button-max-icon-size, 24px);\n\tmax-width: var(--sd-button-max-icon-size, 24px);\n}\n","import { ElementBase } from \"@cas-smartdesign/element-base\";\nimport { ImageEmbed } from \"@cas-smartdesign/image-embed\";\n\nimport { default as htmlTemplate } from \"./button.html?raw\";\nimport { default as styles } from \"./styles.scss?inline\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [Button.ID]: Button;\n }\n}\n\nexport type ButtonVariant =\n | \"primary\"\n | \"outline\"\n | \"standard\"\n | \"ghost\"\n | \"outline-danger\"\n | \"ghost-danger\"\n | \"selection\"\n | \"custom\";\nexport const BUTTON_VARIANTS: ButtonVariant[] = [\n \"primary\",\n \"outline\",\n \"standard\",\n \"ghost\",\n \"outline-danger\",\n \"ghost-danger\",\n \"selection\",\n \"custom\",\n];\nconst DEFAULT_BUTTON_VARIANT: ButtonVariant = \"standard\";\nfunction isButtonVariant(value: string | null): value is ButtonVariant {\n return BUTTON_VARIANTS.includes(value as ButtonVariant);\n}\n\nexport class Button extends ElementBase {\n public static readonly ID = \"sd-button\";\n public static ensureDefined = () => {\n if (!customElements.get(Button.ID)) {\n customElements.define(Button.ID, Button);\n ImageEmbed.ensureDefined();\n }\n };\n\n static styleSheet = new CSSStyleSheet();\n\n static {\n this.styleSheet.replaceSync(styles);\n }\n\n private _image?: ImageEmbed | HTMLImageElement;\n private _isSpaceOrEnterKeyDown = false;\n\n public get imageElement() {\n return this._image;\n }\n\n public get icon(): string | undefined | null {\n return this.getAttribute(\"icon\");\n }\n\n public set icon(icon: string | undefined | null) {\n if (this.icon !== icon) {\n if (icon) {\n this.setAttribute(\"icon\", icon);\n } else {\n this.removeAttribute(\"icon\");\n }\n this.updateIcon();\n }\n }\n\n get variant(): ButtonVariant {\n const attr = this.getAttribute(\"variant\");\n return isButtonVariant(attr) ? attr : DEFAULT_BUTTON_VARIANT;\n }\n\n set variant(value: ButtonVariant | (string & {}) | null) {\n this.setAttribute(\"variant\", isButtonVariant(value) ? value : DEFAULT_BUTTON_VARIANT);\n }\n\n public get disabled(): boolean {\n return this.getAttribute(\"aria-disabled\") == \"true\";\n }\n\n public set disabled(disabled: boolean) {\n this.setAttribute(\"aria-disabled\", disabled.toString());\n }\n\n static get observedAttributes() {\n return [\"icon\", \"variant\"];\n }\n\n public is(): string {\n return Button.ID;\n }\n\n protected template(): HTMLTemplateElement {\n const template = document.createElement(\"template\");\n template.innerHTML = htmlTemplate;\n return template;\n }\n\n constructor() {\n super();\n this.addEventListener(\"keydown\", (e) => {\n if (this.isSpaceOrEnter(e)) {\n this._isSpaceOrEnterKeyDown = true;\n e.preventDefault(); // prevent potential scroll-down triggered by space\n }\n });\n this.addEventListener(\"keyup\", (e) => {\n if (this.isSpaceOrEnter(e) && this._isSpaceOrEnterKeyDown == true) {\n this._isSpaceOrEnterKeyDown = false;\n this.click();\n }\n });\n // As Button is not an input element, click is fired even in disabled state\n this.addEventListener(\n \"click\",\n (event) => {\n if (this.disabled || this.hasAttribute(\"disabled\")) {\n event.stopImmediatePropagation();\n return;\n }\n\n const type = this.getAttribute(\"type\")?.toLowerCase()?.trim();\n\n if (type !== \"submit\" && type !== \"reset\") {\n return;\n }\n\n const form = this.closest(\"form\");\n\n if (form && type === \"submit\") {\n form.requestSubmit();\n }\n\n if (form && type === \"reset\") {\n form.reset();\n }\n },\n { capture: true },\n );\n }\n\n private isSpaceOrEnter(event: KeyboardEvent): boolean {\n switch (event.key) {\n case \" \":\n case \"Space\":\n case \"Enter\":\n return true;\n default:\n return false;\n }\n }\n\n public override click() {\n if (!this.disabled && !this.hasAttribute(\"disabled\")) {\n super.click();\n }\n }\n\n public override connectedCallback() {\n const initStyles = this.shadowRoot == null;\n super.connectedCallback();\n if (initStyles) {\n this.shadowRoot!.adoptedStyleSheets = [Button.styleSheet];\n }\n\n if (!this.hasAttribute(\"tabIndex\")) {\n this.tabIndex = 0;\n }\n\n this._image = this.shadowRoot!.querySelector(\".icon\") as HTMLImageElement;\n\n this.updateIcon();\n if (!this.hasAttribute(\"role\")) {\n this.setAttribute(\"role\", \"button\");\n }\n }\n\n public override attributeChangedCallback(name: string, oldValue: string | null): void {\n switch (name) {\n case \"icon\": {\n this.updateIcon();\n break;\n }\n case \"variant\": {\n if (this.variant === \"selection\") {\n // Expose toggle semantics, but don't clobber an\n // aria-pressed value already managed by the consumer.\n if (!this.hasAttribute(\"aria-pressed\")) {\n this.setAttribute(\"aria-pressed\", \"false\");\n }\n } else if (oldValue?.toLowerCase() === \"selection\") {\n this.removeAttribute(\"aria-pressed\");\n }\n break;\n }\n }\n }\n\n private updateIcon() {\n if (this._image) {\n const iconSrc = this.getAttribute(\"icon\");\n if (iconSrc) {\n this._image.src = iconSrc;\n }\n }\n }\n}\nButton.ensureDefined();\n"],"mappings":"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"}
1
+ {"version":3,"file":"button.mjs","names":[],"sources":["../button.html?raw","../styles.scss?inline","../button.ts"],"sourcesContent":["export default \"<slot name=\\\"icon\\\">\\n\\t<sd-image-embed class=\\\"icon\\\" part=\\\"icon\\\" exportparts=\\\"img, svg\\\"></sd-image-embed>\\n</slot>\\n<div class=\\\"content\\\">\\n\\t<slot></slot>\\n</div>\\n\"","@use \"scss/config\";\n@use \"scss/button\";\n\n:host {\n\tcontain: content;\n\n\t@include button.base;\n\t@include config.state(\"base\");\n\t&::after {\n\t\tcontent: \"\";\n\t\tposition: absolute;\n\t\tinset: 0;\n\t\tborder: var(--sd-button-border, none);\n\t\tborder-radius: inherit;\n\t}\n}\n\n:host(:is(:focus, :hover)) {\n\t@include config.state(\"hover\");\n}\n\n:host(:active) {\n\t@include config.state(\"pressed\");\n}\n\n:host(:is([aria-disabled=\"true\"], [disabled])) {\n\t@include config.state(\"disabled\");\n\tcursor: default;\n}\n\n:host(:focus-visible) {\n\toutline: 1px solid var(--color-border-interaction-focus, #111);\n\toutline-offset: var(--spacing-x1, 2px);\n}\n\n@each $name, $props in config.$variants {\n\t:host([variant=\"#{$name}\" i]) {\n\t\t@include config.variant-vars($name);\n\t}\n}\n\n:host([variant=\"selection\" i][aria-pressed=\"true\"]) {\n\t@include config.selection-checked-vars;\n}\n\n.icon:is(:not([src]), [src=\"\"], [src=\"data:,\"]) {\n\tdisplay: none;\n}\n\n.content {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-width: 0px;\n}\n\n.content ::slotted(*) {\n\tfont: var(--text-body);\n\tmargin-left: var(--sd-button-content-padding, 8px);\n}\n\n.content ::slotted(*:last-child) {\n\tmargin-right: var(--sd-button-content-padding, 8px);\n}\n\n.icon {\n\tmax-height: var(--sd-button-max-icon-size, 24px);\n\tmax-width: var(--sd-button-max-icon-size, 24px);\n}\n","import { ElementBase } from \"@cas-smartdesign/element-base\";\nimport { ImageEmbed } from \"@cas-smartdesign/image-embed\";\n\nimport { default as htmlTemplate } from \"./button.html?raw\";\nimport { default as styles } from \"./styles.scss?inline\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [Button.ID]: Button;\n }\n}\n\nexport type ButtonVariant =\n | \"primary\"\n | \"outline\"\n | \"standard\"\n | \"ghost\"\n | \"outline-danger\"\n | \"ghost-danger\"\n | \"selection\"\n | \"custom\";\nexport const BUTTON_VARIANTS: ButtonVariant[] = [\n \"primary\",\n \"outline\",\n \"standard\",\n \"ghost\",\n \"outline-danger\",\n \"ghost-danger\",\n \"selection\",\n \"custom\",\n];\nconst DEFAULT_BUTTON_VARIANT: ButtonVariant = \"standard\";\nfunction isButtonVariant(value: string | null): value is ButtonVariant {\n return BUTTON_VARIANTS.includes(value as ButtonVariant);\n}\n\nexport class Button extends ElementBase {\n public static readonly ID = \"sd-button\";\n public static ensureDefined = () => {\n if (!customElements.get(Button.ID)) {\n customElements.define(Button.ID, Button);\n ImageEmbed.ensureDefined();\n }\n };\n\n static styleSheet = new CSSStyleSheet();\n\n static {\n this.styleSheet.replaceSync(styles);\n }\n\n private _image?: ImageEmbed | HTMLImageElement;\n private _isSpaceOrEnterKeyDown = false;\n\n public get imageElement() {\n return this._image;\n }\n\n public get icon(): string | undefined | null {\n return this.getAttribute(\"icon\");\n }\n\n public set icon(icon: string | undefined | null) {\n if (this.icon !== icon) {\n if (icon) {\n this.setAttribute(\"icon\", icon);\n } else {\n this.removeAttribute(\"icon\");\n }\n this.updateIcon();\n }\n }\n\n get variant(): ButtonVariant {\n const attr = this.getAttribute(\"variant\");\n return isButtonVariant(attr) ? attr : DEFAULT_BUTTON_VARIANT;\n }\n\n set variant(value: ButtonVariant | (string & {}) | null) {\n this.setAttribute(\"variant\", isButtonVariant(value) ? value : DEFAULT_BUTTON_VARIANT);\n }\n\n public get disabled(): boolean {\n return this.getAttribute(\"aria-disabled\") == \"true\";\n }\n\n public set disabled(disabled: boolean) {\n this.setAttribute(\"aria-disabled\", disabled.toString());\n }\n\n static get observedAttributes() {\n return [\"icon\", \"variant\"];\n }\n\n public is(): string {\n return Button.ID;\n }\n\n protected template(): HTMLTemplateElement {\n const template = document.createElement(\"template\");\n template.innerHTML = htmlTemplate;\n return template;\n }\n\n constructor() {\n super();\n this.addEventListener(\"keydown\", (e) => {\n if (this.isSpaceOrEnter(e)) {\n this._isSpaceOrEnterKeyDown = true;\n e.preventDefault(); // prevent potential scroll-down triggered by space\n }\n });\n this.addEventListener(\"keyup\", (e) => {\n if (this.isSpaceOrEnter(e) && this._isSpaceOrEnterKeyDown == true) {\n this._isSpaceOrEnterKeyDown = false;\n this.click();\n }\n });\n // As Button is not an input element, click is fired even in disabled state\n this.addEventListener(\n \"click\",\n (event) => {\n if (this.disabled || this.hasAttribute(\"disabled\")) {\n event.stopImmediatePropagation();\n return;\n }\n\n const type = this.getAttribute(\"type\")?.toLowerCase()?.trim();\n\n if (type !== \"submit\" && type !== \"reset\") {\n return;\n }\n\n const form = this.closest(\"form\");\n\n if (form && type === \"submit\") {\n form.requestSubmit();\n }\n\n if (form && type === \"reset\") {\n form.reset();\n }\n },\n { capture: true },\n );\n }\n\n private isSpaceOrEnter(event: KeyboardEvent): boolean {\n switch (event.key) {\n case \" \":\n case \"Space\":\n case \"Enter\":\n return true;\n default:\n return false;\n }\n }\n\n public override click() {\n if (!this.disabled && !this.hasAttribute(\"disabled\")) {\n super.click();\n }\n }\n\n public override connectedCallback() {\n const initStyles = this.shadowRoot == null;\n super.connectedCallback();\n if (initStyles) {\n this.shadowRoot!.adoptedStyleSheets = [Button.styleSheet];\n }\n\n if (!this.hasAttribute(\"tabIndex\")) {\n this.tabIndex = 0;\n }\n\n this._image = this.shadowRoot!.querySelector(\".icon\") as HTMLImageElement;\n\n this.updateIcon();\n if (!this.hasAttribute(\"role\")) {\n this.setAttribute(\"role\", \"button\");\n }\n }\n\n public override attributeChangedCallback(name: string, oldValue: string | null): void {\n switch (name) {\n case \"icon\": {\n this.updateIcon();\n break;\n }\n case \"variant\": {\n if (this.variant === \"selection\") {\n // Expose toggle semantics, but don't clobber an\n // aria-pressed value already managed by the consumer.\n if (!this.hasAttribute(\"aria-pressed\")) {\n this.setAttribute(\"aria-pressed\", \"false\");\n }\n } else if (oldValue?.toLowerCase() === \"selection\") {\n this.removeAttribute(\"aria-pressed\");\n }\n break;\n }\n }\n }\n\n private updateIcon() {\n if (this._image) {\n const iconSrc = this.getAttribute(\"icon\");\n if (iconSrc) {\n this._image.src = iconSrc;\n }\n }\n }\n}\nButton.ensureDefined();\n"],"mappings":"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"}
package/dist/docs/doc.mjs CHANGED
@@ -305,7 +305,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
305
305
  min-width: min(100%, var(--natural-width));
306
306
  object-fit: scale-down;
307
307
  }`)}static get observedAttributes(){return[`src`,`placeholder-src`]}constructor(){super(),this._loadPending=null,this._renderedPlaceholder=null,this._renderedSrc=null,this.trustedTypePolicy=null;let t=this.attachShadow({mode:`open`});this._privateStyleSheet=new CSSStyleSheet,t.adoptedStyleSheets=[e.styleSheet,this._privateStyleSheet],this._sanitizer=new ot}connectedCallback(){this.svgContent&&this.inlineSVG(this.svgContent),this.role||=`img`,this.updateContentDependentStyle()}attributeChangedCallback(e,t,n){(e===`src`||e===`placeholder-src`)&&t!==n&&this._loadPending==null&&(this._loadPending=window.requestAnimationFrame(()=>{this._loadPending=null,this.loadSvg()}))}updateContentDependentStyle(){let e=!!this.src||!!this.placeholderSrc||this.shadowRoot?.querySelector(`svg`)!=null;this.classList.toggle(`no-image`,!e)}async loadSvg(){this.shadowRoot&&(this._renderedSrc===this.src&&this.shadowRoot.querySelector(`img:not(.placeholder),svg:not(.placeholder)`)!=null||(this.placeholderSrc!=this._renderedPlaceholder&&(this._renderedPlaceholder=this.placeholderSrc,this.placeholderSrc&&this.renderUrl(this.placeholderSrc,!0)),this.src!=this._renderedSrc&&(this._renderedSrc=this.src,this.src&&this.renderUrl(this.src,!1))))}async renderUrl(e,t){let n=new URL(e,document.baseURI);if(n.protocol===`data:`){this.renderDataUrl(e,t);return}n.protocol.startsWith(`http`)&&n.origin===new URL(document.baseURI).origin&&n.searchParams.set(`skip-token-processing`,``);try{let r=await fetch(n);if(!r.ok)if(r.status==404){this.updateContentDependentStyle();return}else throw Error();if(r.headers.get(`content-type`)?.includes(`image/svg+xml`)){let n=await r.text();this.isRelevantRendering(e,t)&&this.inlineSVG(n,t);return}r.status==204?this.updateContentDependentStyle():this.handleImageFallback(e,t,await r.blob())}catch{this.handleImageFallback(e,t)}}renderDataUrl(e,t){let n=/^data:([^,]*),(.*)$/s.exec(e);if(n&&/^image\/svg\+xml/i.test(n[1])){let r=/;base64/i.test(n[1])?atob(n[2]):decodeURIComponent(n[2]);this.isRelevantRendering(e,t)&&this.inlineSVG(r,t)}else this.handleImageFallback(e,t)}get src(){return this.getAttribute(`src`)}set src(e){e?this.setAttribute(`src`,e):this.removeAttribute(`src`)}get placeholderSrc(){return this.getAttribute(`placeholder-src`)}set placeholderSrc(e){e?this.setAttribute(`placeholder-src`,e):this.removeAttribute(`placeholder-src`)}get svgContent(){return this._svgContent}set svgContent(e){this.inlineSVG(e)}inlineSVG(e,t){if(this._svgContent=this.svgContent,!this.shadowRoot)return;this.initShadowRoot();let n=new DOMParser,r=(e?n.parseFromString(this._sanitizer.sanitize(this.trustedTypePolicy,e),`image/svg+xml`):void 0)?.querySelector(`svg`);if(r){let e=parseFloat(r.getAttribute(`width`)||`0`),n=parseFloat(r.getAttribute(`height`)||`0`),i=r.getAttribute(`viewBox`);if((!e||!n)&&i){let t=i.split(/\s+/);t.length===4&&(e||=parseFloat(t[2]),n||=parseFloat(t[3]))}e&&n&&(this.style.setProperty(`--image-aspect-ratio`,`${e} / ${n}`),this.style.setProperty(`--natural-width`,`${e}px`),this.style.maxWidth=`${e}px`),r.setAttribute(`preserveAspectRatio`,`xMidYMid meet`),r.removeAttribute(`width`),r.removeAttribute(`height`),(i==null||i.trim()==``&&e&&n)&&r.setAttribute(`viewBox`,`0 0 ${e} ${n}`);let a=r.getAttribute(`color`);r.removeAttribute(`color`),a?this._privateStyleSheet.replaceSync(`:host {color: var(--sd-image-embed-color, ${a})}`):this._privateStyleSheet.replaceSync(`:host {color: var(--sd-image-embed-color)}`),this.shadowRoot.appendChild(r),r.classList.toggle(`placeholder`,t),r.part=`svg`,this.dispatchEvent(new CustomEvent(`load`))}else this.dispatchEvent(new CustomEvent(`error`));this.updateContentDependentStyle()}handleImageFallback(e,t,n){if(this.shadowRoot&&(this.initShadowRoot(),this.isRelevantRendering(e,t))){if(!t){let e=this.shadowRoot.querySelector(`.placeholder`);e&&e.remove()}let r=document.createElement(`img`);r.classList.toggle(`placeholder`,t),r.src=n==null?e:URL.createObjectURL(n),r.part=`img`;let i=()=>{n!=null&&URL.revokeObjectURL(r.src)};r.onload=()=>{this.style.setProperty(`--image-aspect-ratio`,`${r.naturalWidth} / ${r.naturalHeight}`),this.style.maxWidth=`${r.naturalWidth}px`,this.style.setProperty(`--natural-width`,`${r.naturalWidth}px`),this.dispatchEvent(new CustomEvent(`load`)),i()},r.onerror=()=>{this.dispatchEvent(new CustomEvent(`error`)),i()},this.shadowRoot.appendChild(r),this.updateContentDependentStyle()}}isRelevantRendering(e,t){return this.shadowRoot?t?this.placeholderSrc==e&&this.shadowRoot.querySelector(`svg,img`)==null:this.src==e:!1}initShadowRoot(){this.shadowRoot&&(this.shadowRoot.innerHTML=``)}};st.ensureDefined();var ct=`<slot name="icon">
308
- <sd-image-embed class="icon" part="icon"></sd-image-embed>
308
+ <sd-image-embed class="icon" part="icon" exportparts="img, svg"></sd-image-embed>
309
309
  </slot>
310
310
  <div class="content">
311
311
  <slot></slot>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cas-smartdesign/button",
3
- "version": "7.0.0",
3
+ "version": "7.0.1",
4
4
  "description": "A button element which encloses the look and feel of the smartdesign button",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "files": [
@@ -17,8 +17,8 @@
17
17
  "registry": "https://registry.npmjs.org/"
18
18
  },
19
19
  "dependencies": {
20
- "@cas-smartdesign/element-base": "^6.0.0",
21
- "@cas-smartdesign/image-embed": "^1.0.1"
20
+ "@cas-smartdesign/image-embed": "^1.0.1",
21
+ "@cas-smartdesign/element-base": "^6.0.0"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@cas-smartdesign/element-preview": "^1.1.0",