From 1c1258c3bef8de8ae5e952bc9ab4b7ba7f871b35 Mon Sep 17 00:00:00 2001 From: Sharon Stratsianis Date: Thu, 22 Oct 2026 11:50:06 +0000 Subject: [PATCH 1/2] fix login --- src/lib/auth/context.ts | 2 +- src/lib/components/decorators.ts | 13 +++++++++++++ src/lib/dialogs/helpers.ts | 4 ++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/lib/auth/context.ts b/src/lib/auth/context.ts index 977570f75..059780b99 100644 --- a/src/lib/auth/context.ts +++ b/src/lib/auth/context.ts @@ -13,4 +13,4 @@ export interface AuthContext { } export const DEFAULT_AUTH_CONTEXT = new NoopAuth() -export const authContext = createContext(Symbol('auth')) +export const authContext = createContext(Symbol.for('solid-ui.auth')) diff --git a/src/lib/components/decorators.ts b/src/lib/components/decorators.ts index 856d21afd..3b14a2927 100644 --- a/src/lib/components/decorators.ts +++ b/src/lib/components/decorators.ts @@ -8,6 +8,8 @@ * See https://github.com/SolidOS/solidos/issues/300 */ +const customElementTagNames = new WeakMap() + function defineCustomElement (tagName: string, elementClass: CustomElementConstructor): void { if (customElements.get(tagName)) { return @@ -16,8 +18,19 @@ function defineCustomElement (tagName: string, elementClass: CustomElementConstr customElements.define(tagName, elementClass) } +export function getCustomElementTagName (elementClass: CustomElementConstructor): string { + const tagName = customElementTagNames.get(elementClass) + if (!tagName) { + throw new Error('Cannot create dialog: the component is not registered with customElement().') + } + + return tagName +} + export function customElement (tagName: string) { return (elementClass: CustomElementConstructor, context?: ClassDecoratorContext) => { + customElementTagNames.set(elementClass, tagName) + if (context) { context.addInitializer(() => defineCustomElement(tagName, elementClass)) diff --git a/src/lib/dialogs/helpers.ts b/src/lib/dialogs/helpers.ts index 891a5d302..d0053aab0 100644 --- a/src/lib/dialogs/helpers.ts +++ b/src/lib/dialogs/helpers.ts @@ -1,7 +1,7 @@ import { ShowDialogEvent } from './events/show-dialog' import Dialog, { DialogConfig } from './Dialog' import type WebComponent from '@/lib/components/web-component/WebComponent' -import type { GetWebComponentMetadata, WebComponentConstructor } from '@/lib/components/web-component/WebComponent' +import { getCustomElementTagName, type GetWebComponentMetadata, type WebComponentConstructor } from '@/lib/components/web-component/WebComponent' export type GetDialogResult = GetWebComponentMetadata extends { dialogResult: infer TResult } ? TResult : TFallback @@ -9,7 +9,7 @@ export function showDialog ( DialogComponent: WebComponentConstructor, config?: DialogConfig> & { props?: Partial } ): T { - const element = new DialogComponent() + const element = document.createElement(getCustomElementTagName(DialogComponent)) as T Object.assign(element, config?.props) From 74fdb67f676290a0eacd04e3380e332a908e41c0 Mon Sep 17 00:00:00 2001 From: Sharon Stratsianis Date: Fri, 23 Oct 2026 20:58:48 +1100 Subject: [PATCH 2/2] fix dialog for login --- src/lib/dialogs/helpers.ts | 3 ++- test/unit/index.test.ts | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/dialogs/helpers.ts b/src/lib/dialogs/helpers.ts index d0053aab0..08d00fd67 100644 --- a/src/lib/dialogs/helpers.ts +++ b/src/lib/dialogs/helpers.ts @@ -1,7 +1,8 @@ import { ShowDialogEvent } from './events/show-dialog' import Dialog, { DialogConfig } from './Dialog' import type WebComponent from '@/lib/components/web-component/WebComponent' -import { getCustomElementTagName, type GetWebComponentMetadata, type WebComponentConstructor } from '@/lib/components/web-component/WebComponent' +import { getCustomElementTagName } from '@/lib/components/decorators' +import type { GetWebComponentMetadata, WebComponentConstructor } from '@/lib/components/web-component/WebComponent' export type GetDialogResult = GetWebComponentMetadata extends { dialogResult: infer TResult } ? TResult : TFallback diff --git a/test/unit/index.test.ts b/test/unit/index.test.ts index 33bf40ebb..78ba30143 100644 --- a/test/unit/index.test.ts +++ b/test/unit/index.test.ts @@ -37,6 +37,7 @@ describe('Index', () => { 'dom', 'fileExplorerContext', 'generateId', + 'getCustomElementTagName', 'getRelevantPanes', 'icons', 'infiniteMessageArea',