Sha256: 6809a6643399caa5249802697666c75e60020baaba307e5cf1522f2ac355c4b0

Contents?: true

Size: 1.42 KB

Versions: 2

Compression:

Stored size: 1.42 KB

Contents

/* eslint-disable custom-elements/no-constructor */
export default class SegmentedControlElement extends HTMLElement {
    constructor() {
        super();
        this.addEventListener('click', (event) => {
            var _a, _b;
            const controls = Array.from(this.querySelectorAll('ul button')).filter(tab => tab instanceof HTMLElement && tab.closest(this.tagName) === this);
            if (!(event.target instanceof Element))
                return;
            if (event.target.closest(this.tagName) !== this)
                return;
            const selectedControl = event.target.closest('button');
            if (!(selectedControl instanceof HTMLElement) || !selectedControl.closest('ul'))
                return;
            for (const control of controls) {
                (_a = control.closest('li')) === null || _a === void 0 ? void 0 : _a.classList.remove('SegmentedControl-item--selected');
                control.setAttribute('aria-current', 'false');
            }
            (_b = selectedControl.closest('li')) === null || _b === void 0 ? void 0 : _b.classList.add('SegmentedControl-item--selected');
            selectedControl.setAttribute('aria-current', 'true');
            selectedControl.focus();
        });
    }
}
if (!window.customElements.get('segmented-control')) {
    window.SegmentedControlElement = SegmentedControlElement;
    window.customElements.define('segmented-control', SegmentedControlElement);
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
primer_view_components-0.0.92 app/components/primer/alpha/segmented-control-element.js
primer_view_components-0.0.91 app/components/primer/alpha/segmented-control-element.js