UNPKG

@scania/tegel

Version:
44 lines (39 loc) 6.37 kB
'use strict'; var index = require('./index-DGsdvbvx.js'); var generateUniqueId = require('./generateUniqueId-ComXTAM_.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) { index.registerInstance(this, hostRef); this.tdsChange = index.createEvent(this, "tdsChange", 6); /** Unique Radio Button identifier. */ this.radioId = generateUniqueId.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 (index.h("div", { key: 'f0a5a86e2ba270ab7c9f6bd4028765fcbd6b178f', class: "tds-radio-button" }, index.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 }), index.h("label", { key: 'aa5928d97053deb16341661ba8bb218e2f12eb73', htmlFor: this.radioId }, index.h("slot", { key: '631da0a3930529351185f3b287ba9269caa0159b', name: "label" })))); } get host() { return index.getElement(this); } }; TdsRadioButton.style = radioButtonCss(); exports.tds_radio_button = TdsRadioButton;