From 4fe99bbb905d207fd669b3c6267a4b1d0980b053 Mon Sep 17 00:00:00 2001 From: Justin Fagnani Date: Wed, 11 Oct 2023 09:25:42 -0700 Subject: [PATCH 1/3] Allow @query() decorated fields to be null --- .changeset/lemon-lamps-shave.md | 7 +++++++ packages/reactive-element/src/decorators/query.ts | 2 +- .../src/test/decorators-modern/query_test.ts | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 .changeset/lemon-lamps-shave.md diff --git a/.changeset/lemon-lamps-shave.md b/.changeset/lemon-lamps-shave.md new file mode 100644 index 0000000000..a43ad828e6 --- /dev/null +++ b/.changeset/lemon-lamps-shave.md @@ -0,0 +1,7 @@ +--- +'@lit/reactive-element': patch +'lit-element': patch +'lit': patch +--- + +Allow null to be in the type of @query() decorated fields diff --git a/packages/reactive-element/src/decorators/query.ts b/packages/reactive-element/src/decorators/query.ts index aa57a770f5..ed98291af9 100644 --- a/packages/reactive-element/src/decorators/query.ts +++ b/packages/reactive-element/src/decorators/query.ts @@ -26,7 +26,7 @@ export type QueryDecorator = { ): void | any; // standard - , V extends Element>( + , V extends Element | null>( value: ClassAccessorDecoratorTarget, context: ClassAccessorDecoratorContext ): ClassAccessorDecoratorResult; diff --git a/packages/reactive-element/src/test/decorators-modern/query_test.ts b/packages/reactive-element/src/test/decorators-modern/query_test.ts index 65603ebd6a..e1da3e89ad 100644 --- a/packages/reactive-element/src/test/decorators-modern/query_test.ts +++ b/packages/reactive-element/src/test/decorators-modern/query_test.ts @@ -24,8 +24,9 @@ import {assert} from '@esm-bundle/chai'; @query('#blah', true) accessor divCached!: HTMLDivElement; + // The span is conditional, so this query could return null @query('span', true) - accessor span!: HTMLSpanElement; + accessor span!: HTMLSpanElement | null; static override properties = {condition: {}}; From 0916cabf3945d2c63d3f05943e7f4ff464279c7f Mon Sep 17 00:00:00 2001 From: Justin Fagnani Date: Wed, 11 Oct 2023 09:48:49 -0700 Subject: [PATCH 2/3] Add null to one more place --- packages/reactive-element/src/decorators/query.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/reactive-element/src/decorators/query.ts b/packages/reactive-element/src/decorators/query.ts index ed98291af9..0347f440ec 100644 --- a/packages/reactive-element/src/decorators/query.ts +++ b/packages/reactive-element/src/decorators/query.ts @@ -58,7 +58,7 @@ export type QueryDecorator = { * @category Decorator */ export function query(selector: string, cache?: boolean): QueryDecorator { - return (, V extends Element>( + return (, V extends Element | null>( protoOrTarget: ClassAccessorDecoratorTarget, nameOrContext: PropertyKey | ClassAccessorDecoratorContext, descriptor?: PropertyDescriptor From 19d13acc23ff082e97fc18c084c1267f09c32f20 Mon Sep 17 00:00:00 2001 From: Justin Fagnani Date: Wed, 11 Oct 2023 10:07:42 -0700 Subject: [PATCH 3/3] Update .changeset/lemon-lamps-shave.md Co-authored-by: Augustine Kim --- .changeset/lemon-lamps-shave.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/lemon-lamps-shave.md b/.changeset/lemon-lamps-shave.md index a43ad828e6..87f02537eb 100644 --- a/.changeset/lemon-lamps-shave.md +++ b/.changeset/lemon-lamps-shave.md @@ -4,4 +4,4 @@ 'lit': patch --- -Allow null to be in the type of @query() decorated fields +Allow `null` to be in the type of `@query()` decorated fields