separate autocomplete options in ha-code-editor

This commit is contained in:
piitaya 2022-06-30 11:22:30 +02:00
parent b633067e5c
commit 830364721b
No known key found for this signature in database
GPG Key ID: D192CCCCCBBB0A19

View File

@ -2,6 +2,7 @@ import type {
Completion, Completion,
CompletionContext, CompletionContext,
CompletionResult, CompletionResult,
CompletionSource,
} from "@codemirror/autocomplete"; } from "@codemirror/autocomplete";
import type { EditorView, KeyBinding, ViewUpdate } from "@codemirror/view"; import type { EditorView, KeyBinding, ViewUpdate } from "@codemirror/view";
import { HassEntities } from "home-assistant-js-websocket"; import { HassEntities } from "home-assistant-js-websocket";
@ -48,6 +49,9 @@ export class HaCodeEditor extends ReactiveElement {
@property({ type: Boolean, attribute: "autocomplete-entities" }) @property({ type: Boolean, attribute: "autocomplete-entities" })
public autocompleteEntities = false; public autocompleteEntities = false;
@property({ type: Boolean, attribute: "autocomplete-icons" })
public autocompleteIcons = false;
@property() public error = false; @property() public error = false;
@state() private _value = ""; @state() private _value = "";
@ -160,17 +164,23 @@ export class HaCodeEditor extends ReactiveElement {
), ),
]; ];
if (!this.readOnly && this.autocompleteEntities && this.hass) { if (!this.readOnly) {
const completionSources: CompletionSource[] = [];
if (this.autocompleteEntities && this.hass) {
completionSources.push(this._entityCompletions.bind(this));
}
if (this.autocompleteIcons) {
completionSources.push(this._mdiCompletions.bind(this));
}
if (completionSources.length > 0) {
extensions.push( extensions.push(
this._loadedCodeMirror.autocompletion({ this._loadedCodeMirror.autocompletion({
override: [ override: completionSources,
this._entityCompletions.bind(this),
this._mdiCompletions.bind(this),
],
maxRenderedOptions: 10, maxRenderedOptions: 10,
}) })
); );
} }
}
this.codemirror = new this._loadedCodeMirror.EditorView({ this.codemirror = new this._loadedCodeMirror.EditorView({
state: this._loadedCodeMirror.EditorState.create({ state: this._loadedCodeMirror.EditorState.create({