(e: FocusEvent)
| 2033 | } |
| 2034 | |
| 2035 | inputFocusOut(e: FocusEvent) { |
| 2036 | const responsivePopover = this._getResponsivePopover(); |
| 2037 | const popover = this._getPopover(); |
| 2038 | const focusIsGoingInPopover = [responsivePopover, popover].some(popup => popup?.contains(e.relatedTarget as Node)); |
| 2039 | const focusIsGoingInValueStatePopup = this?.contains(e.relatedTarget as Node); |
| 2040 | |
| 2041 | if (focusIsGoingInValueStatePopup || this._handleLinkNavigation) { |
| 2042 | this.focused = false; |
| 2043 | e.stopImmediatePropagation(); |
| 2044 | return; |
| 2045 | } |
| 2046 | |
| 2047 | if ((!this.shadowRoot!.contains(e.relatedTarget as Node) || focusIsGoingInPopover) && !this._deleting && !this._clearingValue) { |
| 2048 | this.focused = false; |
| 2049 | |
| 2050 | if (!this.noValidation && this.value) { |
| 2051 | this.value = ""; |
| 2052 | this._lastValue = ""; |
| 2053 | if (this.valueState === ValueState.Negative && this._effectiveValueState !== ValueState.Negative) { |
| 2054 | this._updateValueState(this._effectiveValueState); |
| 2055 | } |
| 2056 | } |
| 2057 | |
| 2058 | if (this._lastValue !== this.value) { |
| 2059 | this._inputChange(); |
| 2060 | } |
| 2061 | |
| 2062 | this._tokenizer.expanded = this.open; |
| 2063 | } |
| 2064 | } |
| 2065 | /** |
| 2066 | * Enables IME composition handling. |
| 2067 | * Dynamically loads the InputComposition feature and sets up event listeners. |
nothing calls this directly
no test coverage detected