UNPKG

@spectrum-web-components/shared

Version:

The `@spectrum-web-components/shared` package provides essential base classes, mixins, and utilities that support developing Spectrum Web Components. This package contains foundational tools for focus management, slot observation, accessibility enhancemen

41 lines (40 loc) 1.72 kB
/** * Copyright 2026 Adobe. All rights reserved. * This file is licensed to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. You may obtain a copy * of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ declare global { interface Window { applyFocusVisiblePolyfill?: (scope: Document | ShadowRoot) => void; } } type Constructor<T = Record<string, unknown>> = { new (...args: any[]): T; prototype: T; }; interface OptionalLifecycleCallbacks { connectedCallback?(): void; disconnectedCallback?(): void; manageAutoFocus?(): void; } type MixableBaseClass = HTMLElement & OptionalLifecycleCallbacks; /** * This mixin function is designed to be applied to a class that inherits * from HTMLElement. It makes it easy for a custom element to coordinate with * the :focus-visible polyfill. * * NOTE(cdata): The code here was adapted from an example proposed with the * introduction of ShadowDOM support in the :focus-visible polyfill. * * @see https://github.com/WICG/focus-visible/pull/196 * @param {Function} SuperClass The base class implementation to decorate with * implementation that coordinates with the :focus-visible polyfill */ export declare const FocusVisiblePolyfillMixin: <T extends Constructor<MixableBaseClass>>(SuperClass: T) => T; export {};