UNPKG

@scania/tegel

Version:
42 lines (38 loc) 6.36 kB
import { r as registerInstance, c as createEvent, h, a as getElement } from './index-9xxNGlso.js'; import { g as generateUniqueId } from './generateUniqueId-Cn4f8w1e.js'; const radioButtonCss = () => `.tds-radio-button.sc-tds-radio-button{box-sizing:border-box;display:flex;align-items:center;margin-left:-4px;font:var(--tds-detail-02);letter-spacing:var(--tds-detail-02-ls);color:var(--tds-radio-button-color)}.tds-radio-button.sc-tds-radio-button *.sc-tds-radio-button{box-sizing:border-box}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button{appearance:none;outline:none;margin:0;border:0;width:20px;height:24px;border-radius:50%;position:relative;cursor:pointer;flex-shrink:0;align-self:flex-start}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button+label.sc-tds-radio-button{padding:var(--tds-spacing-element-4) 0 var(--tds-spacing-element-4) 6px;cursor:pointer}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button::before,.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button::after{content:"";position:absolute;border-radius:50%;box-sizing:border-box}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button::before{width:20px;height:20px;top:2px}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button::after{border:1px solid var(--tds-radio-button-interaction-01);background-color:var(--tds-radio-button-interaction-02);width:16px;height:16px;left:50%;top:50%;transform:translate(-50%, -50%)}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:hover::before{background-color:var(--tds-radio-button-background-hover)}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:focus-visible::before{background-color:var(--tds-radio-button-background-focus);box-shadow:0 0 0 1px var(--tds-radio-button-background-focus);animation:rb-focus var(--tds-motion-duration-moderate-02) var(--tds-motion-easing-enter) forwards}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:focus-visible::after{outline:1px solid var(--tds-radio-button-interaction-outline)}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:disabled,.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].disabled.sc-tds-radio-button{cursor:not-allowed}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:disabled::after,.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].disabled.sc-tds-radio-button::after{border-color:var(--tds-radio-button-border-color-disabled-after);background-color:var(--tds-radio-button-interaction-02)}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:disabled+label.sc-tds-radio-button,.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].disabled.sc-tds-radio-button+label.sc-tds-radio-button{color:var(--tds-radio-button-disabled);cursor:not-allowed}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:disabled:hover::before,.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].disabled.sc-tds-radio-button:hover::before{display:none;opacity:1}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:checked::after{border:4px solid var(--tds-radio-button-interaction-01)}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:checked:disabled:hover::before,.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:checked:disabled::before,.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:checked.disabled:hover::before,.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:checked.disabled::before{display:block;background-color:transparent;width:16px;height:16px;left:2px;top:4px;box-shadow:inset 0 0 0 1px var(--tds-radio-button-border-color-disabled-after)}.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:checked:disabled::after,.tds-radio-button.sc-tds-radio-button .tds-form-input[type=radio].sc-tds-radio-button:checked.disabled::after{border:4px solid var(--tds-radio-button-interaction-02);background-color:var(--tds-radio-button-color-disabled-after);clip-path:inset(1px 1px round 50%)}@keyframes rb-focus{0%{transform:scale(0);opacity:0}100%{transform:scale(1)}}`; const TdsRadioButton = class { constructor(hostRef) { registerInstance(this, hostRef); this.tdsChange = createEvent(this, "tdsChange", 6); /** Unique Radio Button identifier. */ this.radioId = generateUniqueId(); /** Decides if the Radio Button is checked or not. */ this.checked = false; /** Decides if the Radio Button is required or not. */ this.required = false; /** Decides if the Radio Button is disabled or not. */ this.disabled = false; this.handleChange = () => { this.tdsChange.emit({ radioId: this.radioId, value: this.value, }); }; } /** Method to programmatically focus the radio button element */ async focusElement() { if (this.inputElement) { this.inputElement.focus(); } } render() { return (h("div", { key: 'f0a5a86e2ba270ab7c9f6bd4028765fcbd6b178f', class: "tds-radio-button" }, h("input", { key: '70a293a321ad72ba290a1274bfad25954895ec69', ref: (inputEl) => { if (inputEl) this.inputElement = inputEl; }, "aria-label": this.tdsAriaLabel, class: "tds-form-input", type: "radio", role: "radio", name: this.name, id: this.radioId, value: this.value, checked: this.checked, "aria-checked": this.checked, required: this.required, disabled: this.disabled, onChange: () => this.handleChange(), tabIndex: this.tdsTabIndex }), h("label", { key: 'aa5928d97053deb16341661ba8bb218e2f12eb73', htmlFor: this.radioId }, h("slot", { key: '631da0a3930529351185f3b287ba9269caa0159b', name: "label" })))); } get host() { return getElement(this); } }; TdsRadioButton.style = radioButtonCss(); export { TdsRadioButton as tds_radio_button };