UNPKG

@sandlada/mdc

Version:

@sandlada/mdc is an open source component library that follows the Material Design 3 design specifications.

8 lines 4.17 kB
import{property as e}from"../../node_modules/@lit/reactive-element/decorators/property.js";import{query as t}from"../../node_modules/@lit/reactive-element/decorators/query.js";import"../../node_modules/lit/decorators.js";import{html as n}from"../../node_modules/lit-html/lit-html.js";import"../../node_modules/lit/index.js";import r from"../../_virtual/_@oxc-project_runtime@0.144.0/helpers/esm/decorate.js"; /** * @license * Copyright 2026 Kai-Orion & Sandlada * SPDX-License-Identifier: MIT */ function i(i){class a extends i{constructor(...e){super(...e),this._ignoreGlobalConfig=!1,this._focusRingDisabled=!1,this._focusRingDisabledConfigured=!1,this._focusRingAttributeSyncSource=null,this.focusRingShapeInherit=!0,this.focusRingInward=!1,this.focusRingAnimationDisabled=!1,this.focusRingFocused=!1}get ignoreGlobalConfig(){return this._ignoreGlobalConfig}set ignoreGlobalConfig(e){let t=this._ignoreGlobalConfig;t!==e&&(this._ignoreGlobalConfig=e,this._focusRingAttributeSyncSource=`property`,this.toggleAttribute(`ignore-global-config`,e),this._focusRingAttributeSyncSource=null,this.requestUpdate(`ignoreGlobalConfig`,t))}get focusRingDisabled(){return this._focusRingDisabled}set focusRingDisabled(e){if(this._focusRingAttributeSyncSource)return;let t=this._focusRingDisabled,n=this._focusRingDisabledConfigured;this._focusRingDisabled=e,this._focusRingDisabledConfigured=!0,this._focusRingAttributeSyncSource=`property`,this.toggleAttribute(`focus-ring-disabled`,e),this._focusRingAttributeSyncSource=null,(t!==e||!n)&&this.requestUpdate(`focusRingDisabled`,t)}get focusRingHtmlFor(){return this.focusRingElement?.htmlFor??null}get focusRingControl(){return this.focusRingElement?.control??null}get useLocalConfig(){return this._ignoreGlobalConfig||this._focusRingDisabledConfigured}attributeChangedCallback(e,t,n){if(e===`ignore-global-config`){if(this._focusRingAttributeSyncSource)return;let e=this._ignoreGlobalConfig;this._ignoreGlobalConfig=n!==null,this.requestUpdate(`ignoreGlobalConfig`,e);return}if(e===`focus-ring-disabled`){if(this._focusRingAttributeSyncSource)return;let e=this._focusRingDisabled;this._focusRingDisabled=n!==null,this._focusRingDisabledConfigured=!0,this.requestUpdate(`focusRingDisabled`,e);return}super.attributeChangedCallback(e,t,n)}updated(e){super.updated(e),this.focusRingElement&&(this.focusRingElement.control!==this.focusRingControl&&(this.focusRingElement.control=this.focusRingControl),this.focusRingElement.htmlFor!==this.focusRingHtmlFor&&(this.focusRingElement.htmlFor=this.focusRingHtmlFor),this.useLocalConfig&&this.focusRingElement.disabled!==this.focusRingDisabled&&(this.focusRingElement.disabled=this.focusRingDisabled),this.focusRingElement.animationDisabled!==this.focusRingAnimationDisabled&&(this.focusRingElement.animationDisabled=this.focusRingAnimationDisabled),this.focusRingFocused&&!this.focusRingElement.focused&&(this.focusRingElement.focused=!0))}renderFocusRing(){return this.useLocalConfig?n`<mdc-focus-ring part="focus-ring" id="focus-ring-part" ignore-global-config .disabled="${this.focusRingDisabled}" ?inward="${this.focusRingInward}" .shapeInherit="${this.focusRingShapeInherit}"></mdc-focus-ring>`:n`<mdc-focus-ring part="focus-ring" id="focus-ring-part" ?inward="${this.focusRingInward}" .shapeInherit="${this.focusRingShapeInherit}"></mdc-focus-ring>`}}return r([e({type:Boolean,reflect:!0,attribute:`ignore-global-config`,noAccessor:!0})],a.prototype,`ignoreGlobalConfig`,null),r([e({type:Boolean,reflect:!0,attribute:`focus-ring-shape-inherit`})],a.prototype,`focusRingShapeInherit`,void 0),r([e({type:Boolean,reflect:!0,attribute:`focus-ring-inward`})],a.prototype,`focusRingInward`,void 0),r([e({type:Boolean,attribute:`focus-ring-disabled`,noAccessor:!0})],a.prototype,`focusRingDisabled`,null),r([e({type:Boolean,reflect:!0,attribute:`focus-ring-animation-disabled`})],a.prototype,`focusRingAnimationDisabled`,void 0),r([e({type:Boolean,reflect:!0,attribute:`focus-ring-focused`})],a.prototype,`focusRingFocused`,void 0),r([t(`#focus-ring-part`)],a.prototype,`focusRingElement`,void 0),a}export{i as mixinFocusRingOptions}; //# sourceMappingURL=focus-ring-options.mixin.js.map