diff --git a/.changeset/fix-card-entry-name.md b/.changeset/fix-card-entry-name.md new file mode 100644 index 0000000000..51bcad5c5c --- /dev/null +++ b/.changeset/fix-card-entry-name.md @@ -0,0 +1,5 @@ +--- +"@lynx-js/web-core": patch +--- + +fix(web-core): skip setting lynxEntryNameAttribute for **Card** and use constants for server element APIs diff --git a/.changeset/solid-boats-lead.md b/.changeset/solid-boats-lead.md new file mode 100644 index 0000000000..f2093636f2 --- /dev/null +++ b/.changeset/solid-boats-lead.md @@ -0,0 +1,5 @@ +--- +"@lynx-js/web-core": patch +--- + +fix: add cardType resolution for legacy json lynx bundle diff --git a/packages/web-platform/web-core/tests/element-apis.spec.ts b/packages/web-platform/web-core/tests/element-apis.spec.ts index 702cf2c33b..4daef9ec3b 100644 --- a/packages/web-platform/web-core/tests/element-apis.spec.ts +++ b/packages/web-platform/web-core/tests/element-apis.spec.ts @@ -3,7 +3,7 @@ import { describe, test, expect, beforeEach, beforeAll } from 'vitest'; import { createElementAPI } from '../ts/client/mainthread/elementAPIs/createElementAPI.js'; import { WASMJSBinding } from '../ts/client/mainthread/elementAPIs/WASMJSBinding.js'; import { vi } from 'vitest'; -import { cssIdAttribute } from '../ts/constants.js'; +import { cssIdAttribute, lynxEntryNameAttribute } from '../ts/constants.js'; import { createElementAPI as createServerElementAPI, SSRBinding, @@ -128,6 +128,21 @@ describe('Element APIs', () => { expect(mtsGlobalThis.__GetAttributeByName(ret, 'name')).toBe('name'); }); + test('__CreateComponent drops __Card__ entryName', () => { + const ret = mtsGlobalThis.__CreateComponent( + 0, + 'id', + 0, + '__Card__', + 'name', + 'path', + {}, + {}, + ); + expect(mtsGlobalThis.__GetAttributeByName(ret, lynxEntryNameAttribute)) + .toBe(null); + }); + test('client component_css_id properly cascades to child element', () => { const root = mtsGlobalThis.__CreatePage('page', 0); const comp = mtsGlobalThis.__CreateComponent( diff --git a/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts b/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts index 600e3fb5c9..6532376b4b 100644 --- a/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts +++ b/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts @@ -349,6 +349,7 @@ async function handleJSON( ?? (json.lepusCode.root.startsWith('(function (globDynamicComponentEntry') ? 'lazy' : 'card'); + config.cardType = json.cardType ?? json.pageConfig?.cardType ?? 'react'; config.appType = config.appType ?? appType; config.isLazy = (appType === 'card') ? 'false' : 'true'; } diff --git a/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts index 7f03e3812d..55e77438e2 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts @@ -224,7 +224,7 @@ export function createElementAPI( componentCSSID, componentID, ); - if (entryName) { + if (entryName && entryName !== '__Card__') { dom.setAttribute(lynxEntryNameAttribute, entryName); } if (name) { diff --git a/packages/web-platform/web-core/ts/server/elementAPIs/createElementAPI.ts b/packages/web-platform/web-core/ts/server/elementAPIs/createElementAPI.ts index 9c2a2ff3f4..955a31b235 100644 --- a/packages/web-platform/web-core/ts/server/elementAPIs/createElementAPI.ts +++ b/packages/web-platform/web-core/ts/server/elementAPIs/createElementAPI.ts @@ -10,7 +10,9 @@ import { LYNX_TAG_TO_HTML_TAG_MAP, uniqueIdSymbol, lynxDefaultDisplayLinearAttribute, + lynxDefaultOverflowVisibleAttribute, lynxEntryNameAttribute, + lynxUniqueIdAttribute, } from '../../constants.js'; import type { AddClassPAPI, @@ -309,7 +311,7 @@ export function createElementAPI( const id = wasmContext.create_element(htmlTag, parentComponentUniqueId); const el = { [uniqueIdSymbol]: id }; if (!config.enableCSSSelector) { - wasmContext.set_attribute(id, 'l-uid', id.toString()); + wasmContext.set_attribute(id, lynxUniqueIdAttribute, id.toString()); } return el as unknown as DecoratedHTMLElement; }) as CreateElementPAPI, @@ -328,10 +330,10 @@ export function createElementAPI( ); // Component host const el = { [uniqueIdSymbol]: id } as ServerElement; if (!config.enableCSSSelector) { - wasmContext.set_attribute(id, 'l-uid', id.toString()); + wasmContext.set_attribute(id, lynxUniqueIdAttribute, id.toString()); } - if (entryName) { - wasmContext.set_attribute(id, 'lynx-entry-name', entryName); + if (entryName && entryName !== '__Card__') { + wasmContext.set_attribute(id, lynxEntryNameAttribute, entryName); } if (name) { wasmContext.set_attribute(id, 'name', name); @@ -362,7 +364,7 @@ export function createElementAPI( pageElementId = id; const el = { [uniqueIdSymbol]: id } as ServerElement; if (!config.enableCSSSelector) { - wasmContext.set_attribute(id, 'l-uid', id.toString()); + wasmContext.set_attribute(id, lynxUniqueIdAttribute, id.toString()); } wasmContext.set_attribute(id, 'part', 'page'); @@ -376,7 +378,7 @@ export function createElementAPI( if (config.defaultOverflowVisible === true) { wasmContext.set_attribute( id, - 'lynx-default-overflow-visible', + lynxDefaultOverflowVisibleAttribute, 'true', ); }