@zeix/le-truc 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai-context.md +234 -0
- package/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc +111 -0
- package/.editorconfig +12 -0
- package/.github/copilot-instructions.md +62 -0
- package/.github/workflows/codeql.yml +108 -0
- package/.github/workflows/static.yml +43 -0
- package/.prettierrc +17 -0
- package/CLAUDE.md +215 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/CONTRIBUTING.md +160 -0
- package/LICENSE +21 -0
- package/README.md +474 -0
- package/biome.json +295 -0
- package/bun.lock +239 -0
- package/docs/about.html +105 -0
- package/docs/assets/main.css +1 -0
- package/docs/assets/main.js +10 -0
- package/docs/assets/main.js.map +66 -0
- package/docs/components.html +293 -0
- package/docs/data-flow.html +308 -0
- package/docs/examples/basic-button.html +367 -0
- package/docs/examples/basic-counter.html +188 -0
- package/docs/examples/basic-hello.html +138 -0
- package/docs/examples/basic-number.html +271 -0
- package/docs/examples/basic-pluralize.html +214 -0
- package/docs/examples/card-callout.html +152 -0
- package/docs/examples/card-mediaqueries.html +138 -0
- package/docs/examples/context-media.html +198 -0
- package/docs/examples/empty.html +37 -0
- package/docs/examples/form-checkbox.html +233 -0
- package/docs/examples/form-combobox.html +420 -0
- package/docs/examples/form-listbox.html +434 -0
- package/docs/examples/form-radiogroup.html +296 -0
- package/docs/examples/form-spinbutton.html +402 -0
- package/docs/examples/form-textbox.html +361 -0
- package/docs/examples/layout.html +67 -0
- package/docs/examples/module-carousel.html +552 -0
- package/docs/examples/module-catalog.html +241 -0
- package/docs/examples/module-codeblock.html +270 -0
- package/docs/examples/module-dialog.html +343 -0
- package/docs/examples/module-lazyload.html +289 -0
- package/docs/examples/module-list.html +197 -0
- package/docs/examples/module-pagination.html +283 -0
- package/docs/examples/module-scrollarea.html +447 -0
- package/docs/examples/module-tabgroup.html +526 -0
- package/docs/examples/module-todo.html +367 -0
- package/docs/examples/module-with-type.html +63 -0
- package/docs/examples/nested-components.html +88 -0
- package/docs/examples/recursive.html +56 -0
- package/docs/examples/simple-text.html +39 -0
- package/docs/examples/snippet.html +93 -0
- package/docs/examples/with-styles.html +75 -0
- package/docs/getting-started.html +143 -0
- package/docs/index.html +112 -0
- package/docs/sitemap.xml +28 -0
- package/docs/styling.html +160 -0
- package/docs/sw.js +112 -0
- package/docs-src/api/README.md +478 -0
- package/docs-src/api/_media/LICENSE +21 -0
- package/docs-src/api/classes/CircularDependencyError.md +299 -0
- package/docs-src/api/classes/CircularMutationError.md +301 -0
- package/docs-src/api/classes/ContextRequestEvent.md +590 -0
- package/docs-src/api/classes/DependencyTimeoutError.md +301 -0
- package/docs-src/api/classes/InvalidCallbackError.md +303 -0
- package/docs-src/api/classes/InvalidComponentNameError.md +295 -0
- package/docs-src/api/classes/InvalidCustomElementError.md +301 -0
- package/docs-src/api/classes/InvalidEffectsError.md +301 -0
- package/docs-src/api/classes/InvalidPropertyNameError.md +307 -0
- package/docs-src/api/classes/InvalidReactivesError.md +307 -0
- package/docs-src/api/classes/InvalidSignalValueError.md +303 -0
- package/docs-src/api/classes/MissingElementError.md +307 -0
- package/docs-src/api/classes/NullishSignalValueError.md +299 -0
- package/docs-src/api/classes/StoreKeyExistsError.md +303 -0
- package/docs-src/api/classes/StoreKeyRangeError.md +299 -0
- package/docs-src/api/classes/StoreKeyReadonlyError.md +303 -0
- package/docs-src/api/functions/asBoolean.md +21 -0
- package/docs-src/api/functions/asEnum.md +31 -0
- package/docs-src/api/functions/asInteger.md +39 -0
- package/docs-src/api/functions/asJSON.md +49 -0
- package/docs-src/api/functions/asNumber.md +37 -0
- package/docs-src/api/functions/asString.md +37 -0
- package/docs-src/api/functions/createCollection.md +83 -0
- package/docs-src/api/functions/createSensor.md +71 -0
- package/docs-src/api/functions/dangerouslySetInnerHTML.md +48 -0
- package/docs-src/api/functions/defineComponent.md +65 -0
- package/docs-src/api/functions/isCollection.md +37 -0
- package/docs-src/api/functions/isParser.md +41 -0
- package/docs-src/api/functions/match.md +47 -0
- package/docs-src/api/functions/on.md +58 -0
- package/docs-src/api/functions/pass.md +53 -0
- package/docs-src/api/functions/provideContexts.md +47 -0
- package/docs-src/api/functions/read.md +47 -0
- package/docs-src/api/functions/requestContext.md +51 -0
- package/docs-src/api/functions/resolve.md +40 -0
- package/docs-src/api/functions/runEffects.md +51 -0
- package/docs-src/api/functions/runElementEffects.md +57 -0
- package/docs-src/api/functions/schedule.md +33 -0
- package/docs-src/api/functions/setAttribute.md +48 -0
- package/docs-src/api/functions/setProperty.md +52 -0
- package/docs-src/api/functions/setStyle.md +48 -0
- package/docs-src/api/functions/setText.md +42 -0
- package/docs-src/api/functions/show.md +42 -0
- package/docs-src/api/functions/toSignal.md +37 -0
- package/docs-src/api/functions/toggleAttribute.md +48 -0
- package/docs-src/api/functions/toggleClass.md +48 -0
- package/docs-src/api/functions/updateElement.md +53 -0
- package/docs-src/api/globals.md +131 -0
- package/docs-src/api/type-aliases/Cleanup.md +27 -0
- package/docs-src/api/type-aliases/Collection.md +91 -0
- package/docs-src/api/type-aliases/CollectionListener.md +27 -0
- package/docs-src/api/type-aliases/Component.md +17 -0
- package/docs-src/api/type-aliases/ComponentProp.md +11 -0
- package/docs-src/api/type-aliases/ComponentProps.md +11 -0
- package/docs-src/api/type-aliases/ComponentSetup.md +31 -0
- package/docs-src/api/type-aliases/ComponentUI.md +27 -0
- package/docs-src/api/type-aliases/Computed.md +49 -0
- package/docs-src/api/type-aliases/ComputedCallback.md +29 -0
- package/docs-src/api/type-aliases/Context.md +33 -0
- package/docs-src/api/type-aliases/ContextType.md +19 -0
- package/docs-src/api/type-aliases/DangerouslySetInnerHTMLOptions.md +27 -0
- package/docs-src/api/type-aliases/DiffResult.md +61 -0
- package/docs-src/api/type-aliases/Effect.md +35 -0
- package/docs-src/api/type-aliases/EffectCallback.md +23 -0
- package/docs-src/api/type-aliases/Effects.md +21 -0
- package/docs-src/api/type-aliases/ElementEffects.md +21 -0
- package/docs-src/api/type-aliases/ElementFromKey.md +21 -0
- package/docs-src/api/type-aliases/ElementQueries.md +27 -0
- package/docs-src/api/type-aliases/ElementUpdater.md +131 -0
- package/docs-src/api/type-aliases/EventHandler.md +31 -0
- package/docs-src/api/type-aliases/EventType.md +17 -0
- package/docs-src/api/type-aliases/Fallback.md +21 -0
- package/docs-src/api/type-aliases/Initializers.md +21 -0
- package/docs-src/api/type-aliases/LooseReader.md +31 -0
- package/docs-src/api/type-aliases/MatchHandlers.md +77 -0
- package/docs-src/api/type-aliases/MaybeCleanup.md +23 -0
- package/docs-src/api/type-aliases/MaybeSignal.md +17 -0
- package/docs-src/api/type-aliases/Parser.md +39 -0
- package/docs-src/api/type-aliases/ParserOrFallback.md +21 -0
- package/docs-src/api/type-aliases/PassedProp.md +25 -0
- package/docs-src/api/type-aliases/PassedProps.md +21 -0
- package/docs-src/api/type-aliases/Reactive.md +25 -0
- package/docs-src/api/type-aliases/Reader.md +31 -0
- package/docs-src/api/type-aliases/ReservedWords.md +11 -0
- package/docs-src/api/type-aliases/ResolveResult.md +29 -0
- package/docs-src/api/type-aliases/SensorEvents.md +25 -0
- package/docs-src/api/type-aliases/Signal.md +41 -0
- package/docs-src/api/type-aliases/State.md +85 -0
- package/docs-src/api/type-aliases/Store.md +29 -0
- package/docs-src/api/type-aliases/UI.md +11 -0
- package/docs-src/api/type-aliases/UnknownContext.md +13 -0
- package/docs-src/api/variables/CONTEXT_REQUEST.md +11 -0
- package/docs-src/api/variables/UNSET.md +23 -0
- package/docs-src/api/variables/batch.md +25 -0
- package/docs-src/api/variables/createComputed.md +41 -0
- package/docs-src/api/variables/createEffect.md +35 -0
- package/docs-src/api/variables/createState.md +37 -0
- package/docs-src/api/variables/createStore.md +42 -0
- package/docs-src/api/variables/diff.md +43 -0
- package/docs-src/api/variables/isAbortError.md +33 -0
- package/docs-src/api/variables/isAsyncFunction.md +39 -0
- package/docs-src/api/variables/isComputed.md +37 -0
- package/docs-src/api/variables/isEqual.md +49 -0
- package/docs-src/api/variables/isFunction.md +39 -0
- package/docs-src/api/variables/isMutableSignal.md +37 -0
- package/docs-src/api/variables/isNumber.md +33 -0
- package/docs-src/api/variables/isRecord.md +39 -0
- package/docs-src/api/variables/isRecordOrArray.md +39 -0
- package/docs-src/api/variables/isSignal.md +37 -0
- package/docs-src/api/variables/isState.md +37 -0
- package/docs-src/api/variables/isStore.md +37 -0
- package/docs-src/api/variables/isString.md +33 -0
- package/docs-src/api/variables/isSymbol.md +33 -0
- package/docs-src/api/variables/toError.md +33 -0
- package/docs-src/api/variables/valueString.md +33 -0
- package/docs-src/includes/menu.html +44 -0
- package/docs-src/pages/about.md +89 -0
- package/docs-src/pages/components.md +437 -0
- package/docs-src/pages/data-flow.md +449 -0
- package/docs-src/pages/getting-started.md +170 -0
- package/docs-src/pages/index.md +98 -0
- package/docs-src/pages/styling.md +165 -0
- package/eslint.config.js +64 -0
- package/examples/_common/clear.ts +49 -0
- package/examples/_common/fetch.ts +160 -0
- package/examples/_common/focus.ts +45 -0
- package/examples/_common/highlight.ts +5 -0
- package/examples/_global.css +463 -0
- package/examples/basic-button/basic-button.css +176 -0
- package/examples/basic-button/basic-button.html +46 -0
- package/examples/basic-button/basic-button.spec.ts +160 -0
- package/examples/basic-button/basic-button.ts +45 -0
- package/examples/basic-button/copyToClipboard.ts +37 -0
- package/examples/basic-counter/basic-counter.css +21 -0
- package/examples/basic-counter/basic-counter.html +24 -0
- package/examples/basic-counter/basic-counter.spec.ts +85 -0
- package/examples/basic-counter/basic-counter.ts +43 -0
- package/examples/basic-hello/basic-hello.html +34 -0
- package/examples/basic-hello/basic-hello.spec.ts +110 -0
- package/examples/basic-hello/basic-hello.ts +36 -0
- package/examples/basic-number/basic-number.html +79 -0
- package/examples/basic-number/basic-number.spec.ts +175 -0
- package/examples/basic-number/basic-number.ts +124 -0
- package/examples/basic-pluralize/basic-pluralize.html +64 -0
- package/examples/basic-pluralize/basic-pluralize.spec.ts +258 -0
- package/examples/basic-pluralize/basic-pluralize.ts +82 -0
- package/examples/card-callout/card-callout.css +79 -0
- package/examples/card-callout/card-callout.html +5 -0
- package/examples/card-mediaqueries/card-mediaqueries.html +29 -0
- package/examples/card-mediaqueries/card-mediaqueries.spec.ts +300 -0
- package/examples/card-mediaqueries/card-mediaqueries.ts +41 -0
- package/examples/context-media/context-media.html +3 -0
- package/examples/context-media/context-media.ts +127 -0
- package/examples/form-checkbox/form-checkbox.css +70 -0
- package/examples/form-checkbox/form-checkbox.html +13 -0
- package/examples/form-checkbox/form-checkbox.spec.ts +357 -0
- package/examples/form-checkbox/form-checkbox.ts +50 -0
- package/examples/form-checkbox/vanilla-checkbox.ts +101 -0
- package/examples/form-combobox/form-combobox.css +118 -0
- package/examples/form-combobox/form-combobox.html +74 -0
- package/examples/form-combobox/form-combobox.spec.ts +977 -0
- package/examples/form-combobox/form-combobox.ts +128 -0
- package/examples/form-listbox/form-listbox.css +71 -0
- package/examples/form-listbox/form-listbox.html +67 -0
- package/examples/form-listbox/form-listbox.spec.ts +1050 -0
- package/examples/form-listbox/form-listbox.ts +196 -0
- package/examples/form-listbox/mocks/timezones.json +495 -0
- package/examples/form-radiogroup/form-radiogroup.css +87 -0
- package/examples/form-radiogroup/form-radiogroup.html +51 -0
- package/examples/form-radiogroup/form-radiogroup.spec.ts +515 -0
- package/examples/form-radiogroup/form-radiogroup.ts +58 -0
- package/examples/form-spinbutton/form-spinbutton.css +95 -0
- package/examples/form-spinbutton/form-spinbutton.html +96 -0
- package/examples/form-spinbutton/form-spinbutton.spec.ts +688 -0
- package/examples/form-spinbutton/form-spinbutton.ts +111 -0
- package/examples/form-textbox/form-textbox.css +104 -0
- package/examples/form-textbox/form-textbox.html +53 -0
- package/examples/form-textbox/form-textbox.spec.ts +542 -0
- package/examples/form-textbox/form-textbox.ts +104 -0
- package/examples/main.css +22 -0
- package/examples/main.ts +23 -0
- package/examples/module-carousel/module-carousel.css +113 -0
- package/examples/module-carousel/module-carousel.html +208 -0
- package/examples/module-carousel/module-carousel.spec.ts +523 -0
- package/examples/module-carousel/module-carousel.ts +131 -0
- package/examples/module-catalog/module-catalog.css +22 -0
- package/examples/module-catalog/module-catalog.html +82 -0
- package/examples/module-catalog/module-catalog.spec.ts +396 -0
- package/examples/module-catalog/module-catalog.ts +37 -0
- package/examples/module-codeblock/module-codeblock.css +95 -0
- package/examples/module-codeblock/module-codeblock.html +28 -0
- package/examples/module-codeblock/module-codeblock.ts +47 -0
- package/examples/module-demo/module-demo.css +13 -0
- package/examples/module-dialog/module-dialog.css +96 -0
- package/examples/module-dialog/module-dialog.html +66 -0
- package/examples/module-dialog/module-dialog.spec.ts +557 -0
- package/examples/module-dialog/module-dialog.ts +81 -0
- package/examples/module-lazyload/mocks/empty.html +1 -0
- package/examples/module-lazyload/mocks/module-with-type.html +27 -0
- package/examples/module-lazyload/mocks/nested-components.html +52 -0
- package/examples/module-lazyload/mocks/recursive.html +20 -0
- package/examples/module-lazyload/mocks/simple-text.html +3 -0
- package/examples/module-lazyload/mocks/snippet.html +57 -0
- package/examples/module-lazyload/mocks/with-styles.html +39 -0
- package/examples/module-lazyload/module-lazyload.html +132 -0
- package/examples/module-lazyload/module-lazyload.spec.ts +734 -0
- package/examples/module-lazyload/module-lazyload.ts +89 -0
- package/examples/module-list/module-list.html +30 -0
- package/examples/module-list/module-list.spec.ts +592 -0
- package/examples/module-list/module-list.ts +99 -0
- package/examples/module-pagination/module-pagination.css +79 -0
- package/examples/module-pagination/module-pagination.html +16 -0
- package/examples/module-pagination/module-pagination.spec.ts +701 -0
- package/examples/module-pagination/module-pagination.ts +88 -0
- package/examples/module-scrollarea/module-scrollarea.css +77 -0
- package/examples/module-scrollarea/module-scrollarea.html +189 -0
- package/examples/module-scrollarea/module-scrollarea.spec.ts +445 -0
- package/examples/module-scrollarea/module-scrollarea.ts +81 -0
- package/examples/module-tabgroup/module-tabgroup.css +55 -0
- package/examples/module-tabgroup/module-tabgroup.html +269 -0
- package/examples/module-tabgroup/module-tabgroup.spec.ts +631 -0
- package/examples/module-tabgroup/module-tabgroup.ts +102 -0
- package/examples/module-toc/module-toc.css +34 -0
- package/examples/module-todo/module-todo.css +84 -0
- package/examples/module-todo/module-todo.html +92 -0
- package/examples/module-todo/module-todo.spec.ts +528 -0
- package/examples/module-todo/module-todo.ts +91 -0
- package/examples/section-hero/section-hero.css +37 -0
- package/examples/section-menu/section-menu.css +81 -0
- package/examples/server.ts +95 -0
- package/examples/test-setup.md +314 -0
- package/index.dev.js +1688 -0
- package/index.dev.ts +127 -0
- package/index.js +3 -0
- package/index.js.map +42 -0
- package/index.ts +127 -0
- package/package.json +64 -0
- package/playwright.config.ts +31 -0
- package/server/BUILD_SYSTEM.md +428 -0
- package/server/SERVER.md +286 -0
- package/server/build.ts +91 -0
- package/server/config.ts +130 -0
- package/server/effects/api.ts +28 -0
- package/server/effects/css.ts +31 -0
- package/server/effects/examples.ts +109 -0
- package/server/effects/js.ts +32 -0
- package/server/effects/menu.ts +34 -0
- package/server/effects/pages.ts +178 -0
- package/server/effects/service-worker.ts +57 -0
- package/server/effects/sitemap.ts +27 -0
- package/server/file-signals.ts +361 -0
- package/server/file-watcher.ts +77 -0
- package/server/io.ts +174 -0
- package/server/layout-engine.ts +470 -0
- package/server/layout-utils.ts +615 -0
- package/server/layouts/api.html +76 -0
- package/server/layouts/base.html +37 -0
- package/server/layouts/blog.html +115 -0
- package/server/layouts/example.html +104 -0
- package/server/layouts/overview.html +165 -0
- package/server/layouts/page.html +36 -0
- package/server/layouts/test.html +24 -0
- package/server/markdoc-helpers.ts +217 -0
- package/server/markdoc.config.ts +29 -0
- package/server/schema/callout.markdoc.ts +17 -0
- package/server/schema/carousel.markdoc.ts +118 -0
- package/server/schema/demo.markdoc.ts +74 -0
- package/server/schema/fence.markdoc.ts +84 -0
- package/server/schema/heading.markdoc.ts +23 -0
- package/server/schema/hero.markdoc.ts +59 -0
- package/server/schema/section.markdoc.ts +10 -0
- package/server/schema/slide.markdoc.ts +17 -0
- package/server/schema/source.markdoc.ts +53 -0
- package/server/schema/tabgroup.markdoc.ts +102 -0
- package/server/serve.ts +635 -0
- package/server/templates/README.md +352 -0
- package/server/templates/constants.ts +236 -0
- package/server/templates/fragments.ts +159 -0
- package/server/templates/hmr.ts +269 -0
- package/server/templates/menu.ts +33 -0
- package/server/templates/performance-hints.ts +94 -0
- package/server/templates/service-worker.ts +403 -0
- package/server/templates/sitemap.ts +57 -0
- package/server/templates/toc.ts +41 -0
- package/server/templates/utils.ts +378 -0
- package/src/component.ts +215 -0
- package/src/context.ts +156 -0
- package/src/effects/attribute.ts +82 -0
- package/src/effects/class.ts +28 -0
- package/src/effects/event.ts +67 -0
- package/src/effects/html.ts +60 -0
- package/src/effects/method.ts +57 -0
- package/src/effects/pass.ts +103 -0
- package/src/effects/property.ts +57 -0
- package/src/effects/style.ts +34 -0
- package/src/effects/text.ts +28 -0
- package/src/effects.ts +412 -0
- package/src/errors.ts +160 -0
- package/src/parsers/boolean.ts +14 -0
- package/src/parsers/json.ts +33 -0
- package/src/parsers/number.ts +55 -0
- package/src/parsers/string.ts +32 -0
- package/src/parsers.ts +90 -0
- package/src/scheduler.ts +47 -0
- package/src/signals/collection.ts +253 -0
- package/src/signals/sensor.ts +131 -0
- package/src/ui.ts +236 -0
- package/src/util.ts +187 -0
- package/tsconfig.json +34 -0
- package/types/examples/basic-button/basic-button.d.ts +16 -0
- package/types/examples/basic-hello/basic-hello.d.ts +18 -0
- package/types/index.d.ts +27 -0
- package/types/index.dev.d.ts +27 -0
- package/types/src/collection.d.ts +27 -0
- package/types/src/component.d.ts +32 -0
- package/types/src/context.d.ts +85 -0
- package/types/src/effects/attribute.d.ts +23 -0
- package/types/src/effects/callMethod.d.ts +23 -0
- package/types/src/effects/class.d.ts +13 -0
- package/types/src/effects/dangerouslySetInnerHTML.d.ts +18 -0
- package/types/src/effects/event.d.ts +18 -0
- package/types/src/effects/html.d.ts +17 -0
- package/types/src/effects/method.d.ts +22 -0
- package/types/src/effects/pass.d.ts +18 -0
- package/types/src/effects/property.d.ts +22 -0
- package/types/src/effects/setAttribute.d.ts +24 -0
- package/types/src/effects/setProperty.d.ts +23 -0
- package/types/src/effects/setStyle.d.ts +14 -0
- package/types/src/effects/setText.d.ts +13 -0
- package/types/src/effects/style.d.ts +13 -0
- package/types/src/effects/text.d.ts +12 -0
- package/types/src/effects/toggleClass.d.ts +14 -0
- package/types/src/effects.d.ts +153 -0
- package/types/src/errors.d.ts +99 -0
- package/types/src/events.d.ts +27 -0
- package/types/src/extractors.d.ts +23 -0
- package/types/src/parsers/boolean.d.ts +10 -0
- package/types/src/parsers/json.d.ts +13 -0
- package/types/src/parsers/number.d.ts +21 -0
- package/types/src/parsers/string.d.ts +19 -0
- package/types/src/parsers.d.ts +41 -0
- package/types/src/scheduler.d.ts +11 -0
- package/types/src/sensor.d.ts +27 -0
- package/types/src/signals/collection.d.ts +32 -0
- package/types/src/signals/sensor.d.ts +27 -0
- package/types/src/ui.d.ts +37 -0
- package/types/src/util.d.ts +65 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<h3>Nested Components</h3>
|
|
2
|
+
<p>
|
|
3
|
+
This snippet contains nested custom components to test initialization order:
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
<card-callout>
|
|
7
|
+
<h4>Nested Card</h4>
|
|
8
|
+
<p>
|
|
9
|
+
This is a card-callout component nested inside the lazy-loaded content.
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<basic-counter class="counter">
|
|
13
|
+
<button type="button">💐 <span class="value">42</span></button>
|
|
14
|
+
</basic-counter>
|
|
15
|
+
</card-callout>
|
|
16
|
+
|
|
17
|
+
<basic-hello>
|
|
18
|
+
<label for="name">Your name</label>
|
|
19
|
+
<input id="name" name="name" type="text" autocomplete="given-name" />
|
|
20
|
+
<p>Hello, <output for="name">World</output>!</p>
|
|
21
|
+
</basic-hello>
|
|
22
|
+
|
|
23
|
+
<style>
|
|
24
|
+
.counter {
|
|
25
|
+
display: flex;
|
|
26
|
+
align-items: center;
|
|
27
|
+
gap: 0.5rem;
|
|
28
|
+
margin: 0.5rem 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.counter button {
|
|
32
|
+
background: #3b82f6;
|
|
33
|
+
color: white;
|
|
34
|
+
border: none;
|
|
35
|
+
border-radius: 0.25rem;
|
|
36
|
+
height: 2rem;
|
|
37
|
+
display: flex;
|
|
38
|
+
align-items: center;
|
|
39
|
+
justify-content: center;
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.counter button:hover {
|
|
44
|
+
background: #2563eb;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.counter .value {
|
|
48
|
+
font-weight: 600;
|
|
49
|
+
min-width: 2rem;
|
|
50
|
+
text-align: center;
|
|
51
|
+
}
|
|
52
|
+
</style>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<h3>Recursive Content Test</h3>
|
|
2
|
+
<p>
|
|
3
|
+
This snippet attempts to create recursive loading by including another
|
|
4
|
+
module-lazyload:
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<module-lazyload src="/module-lazyload/recursive.html">
|
|
8
|
+
<card-callout>
|
|
9
|
+
<p class="loading" role="status">
|
|
10
|
+
This should not load due to recursion protection...
|
|
11
|
+
</p>
|
|
12
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
13
|
+
</card-callout>
|
|
14
|
+
<div class="content" hidden></div>
|
|
15
|
+
</module-lazyload>
|
|
16
|
+
|
|
17
|
+
<p>
|
|
18
|
+
The above nested module-lazyload should show an error instead of loading
|
|
19
|
+
content.
|
|
20
|
+
</p>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<h2>Lazy Loaded</h2>
|
|
2
|
+
<p>I come from the server and I bring an additional web component:</p>
|
|
3
|
+
<style>
|
|
4
|
+
shake-hands {
|
|
5
|
+
display: inline-block;
|
|
6
|
+
|
|
7
|
+
& button {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: row;
|
|
10
|
+
gap: var(--space-s);
|
|
11
|
+
border: 1px solid var(--color-orange-50);
|
|
12
|
+
border-radius: var(--space-xs);
|
|
13
|
+
background-color: var(--color-orange-20);
|
|
14
|
+
color: var(--color-text);
|
|
15
|
+
padding: var(--space-xs) var(--space-s);
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
font-size: var(--font-size-m);
|
|
18
|
+
line-height: var(--line-height-xs);
|
|
19
|
+
transition: transform var(--transition-short) var(--easing-inout);
|
|
20
|
+
|
|
21
|
+
&:hover {
|
|
22
|
+
background-color: var(--color-orange-30);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
&:active {
|
|
26
|
+
background-color: var(--color-orange-40);
|
|
27
|
+
|
|
28
|
+
.emoji {
|
|
29
|
+
transform: scale(1.1);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
</style>
|
|
35
|
+
<shake-hands aria-label="shake hands">
|
|
36
|
+
<button type="button">
|
|
37
|
+
<span class="emoji">🫱🏼🫲🏾</span>
|
|
38
|
+
<span class="count">42</span>
|
|
39
|
+
</button>
|
|
40
|
+
</shake-hands>
|
|
41
|
+
<script>
|
|
42
|
+
customElements.get('shake-hands')
|
|
43
|
+
|| customElements.define(
|
|
44
|
+
'shake-hands',
|
|
45
|
+
class extends HTMLElement {
|
|
46
|
+
connectedCallback() {
|
|
47
|
+
const countEl = this.querySelector('.count')
|
|
48
|
+
let count = parseInt(countEl.textContent, 10)
|
|
49
|
+
|
|
50
|
+
this.querySelector('button').onclick = () => {
|
|
51
|
+
count++
|
|
52
|
+
countEl.textContent = count
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
)
|
|
57
|
+
</script>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<style>
|
|
2
|
+
.styled-content {
|
|
3
|
+
background: linear-gradient(135deg, #fef3c7, #fcd34d);
|
|
4
|
+
border: 2px solid #f59e0b;
|
|
5
|
+
border-radius: 0.5rem;
|
|
6
|
+
padding: 1rem;
|
|
7
|
+
margin: 0.5rem 0;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.styled-title {
|
|
11
|
+
color: #92400e;
|
|
12
|
+
font-size: 1.25rem;
|
|
13
|
+
font-weight: 600;
|
|
14
|
+
margin: 0 0 0.5rem 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.styled-text {
|
|
18
|
+
color: #374151;
|
|
19
|
+
line-height: 1.5;
|
|
20
|
+
margin: 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.highlight {
|
|
24
|
+
background-color: #fbbf24;
|
|
25
|
+
padding: 0 0.25rem;
|
|
26
|
+
border-radius: 0.25rem;
|
|
27
|
+
}
|
|
28
|
+
</style>
|
|
29
|
+
|
|
30
|
+
<div class="styled-content">
|
|
31
|
+
<h3 class="styled-title">Styled Content</h3>
|
|
32
|
+
<p class="styled-text">
|
|
33
|
+
This snippet includes <span class="highlight">custom CSS styles</span>
|
|
34
|
+
that should be applied when the content is loaded.
|
|
35
|
+
</p>
|
|
36
|
+
<p class="styled-text">
|
|
37
|
+
The styles use CSS custom properties from the design system.
|
|
38
|
+
</p>
|
|
39
|
+
</div>
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
<!-- Default example - tests basic loading functionality -->
|
|
2
|
+
<module-lazyload src="/module-lazyload/mocks/simple-text.html">
|
|
3
|
+
<card-callout>
|
|
4
|
+
<p class="loading" role="status">Loading...</p>
|
|
5
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
6
|
+
</card-callout>
|
|
7
|
+
<div class="content" hidden></div>
|
|
8
|
+
</module-lazyload>
|
|
9
|
+
|
|
10
|
+
<!-- Complex content test - tests loading of components and styles -->
|
|
11
|
+
<module-lazyload
|
|
12
|
+
id="complex-content-test"
|
|
13
|
+
src="/module-lazyload/with-styles.html"
|
|
14
|
+
>
|
|
15
|
+
<card-callout>
|
|
16
|
+
<p class="loading" role="status">Loading styled content...</p>
|
|
17
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
18
|
+
</card-callout>
|
|
19
|
+
<div class="content" hidden></div>
|
|
20
|
+
</module-lazyload>
|
|
21
|
+
|
|
22
|
+
<!-- Nested components test - tests initialization of nested custom components -->
|
|
23
|
+
<module-lazyload
|
|
24
|
+
id="nested-components-test"
|
|
25
|
+
src="/module-lazyload/mocks/nested-components.html"
|
|
26
|
+
>
|
|
27
|
+
<card-callout>
|
|
28
|
+
<p class="loading" role="status">Loading nested components...</p>
|
|
29
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
30
|
+
</card-callout>
|
|
31
|
+
<div class="content" hidden></div>
|
|
32
|
+
</module-lazyload>
|
|
33
|
+
|
|
34
|
+
<!-- Empty content test - tests handling of empty/whitespace responses -->
|
|
35
|
+
<module-lazyload
|
|
36
|
+
id="empty-content-test"
|
|
37
|
+
src="/module-lazyload/mocks/empty.html"
|
|
38
|
+
>
|
|
39
|
+
<card-callout>
|
|
40
|
+
<p class="loading" role="status">Loading empty content...</p>
|
|
41
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
42
|
+
</card-callout>
|
|
43
|
+
<div class="content" hidden></div>
|
|
44
|
+
</module-lazyload>
|
|
45
|
+
|
|
46
|
+
<!-- Original complex snippet test - tests the existing shake-hands component -->
|
|
47
|
+
<module-lazyload
|
|
48
|
+
id="original-snippet-test"
|
|
49
|
+
src="/module-lazyload/mocks/snippet.html"
|
|
50
|
+
allow-scripts
|
|
51
|
+
>
|
|
52
|
+
<template shadowrootmode="open">
|
|
53
|
+
<card-callout>
|
|
54
|
+
<p class="loading" role="status">Loading shake-hands...</p>
|
|
55
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
56
|
+
</card-callout>
|
|
57
|
+
<div class="content" hidden>
|
|
58
|
+
<slot></slot>
|
|
59
|
+
</div>
|
|
60
|
+
</template>
|
|
61
|
+
</module-lazyload>
|
|
62
|
+
|
|
63
|
+
<!-- Invalid URL test - tests error handling for malformed URLs -->
|
|
64
|
+
<module-lazyload id="invalid-url-test" src="not-a-valid-url">
|
|
65
|
+
<card-callout>
|
|
66
|
+
<p class="loading" role="status">Loading invalid URL...</p>
|
|
67
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
68
|
+
</card-callout>
|
|
69
|
+
<div class="content" hidden></div>
|
|
70
|
+
</module-lazyload>
|
|
71
|
+
|
|
72
|
+
<!-- 404 error test - tests error handling for missing files -->
|
|
73
|
+
<module-lazyload
|
|
74
|
+
id="not-found-test"
|
|
75
|
+
src="/module-lazyload/mocks/does-not-exist.html"
|
|
76
|
+
>
|
|
77
|
+
<card-callout>
|
|
78
|
+
<p class="loading" role="status">Loading non-existent file...</p>
|
|
79
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
80
|
+
</card-callout>
|
|
81
|
+
<div class="content" hidden></div>
|
|
82
|
+
</module-lazyload>
|
|
83
|
+
|
|
84
|
+
<!-- Cross-origin URL test - tests error handling for cross-origin requests -->
|
|
85
|
+
<module-lazyload id="cross-origin-test" src="https://example.com/test.html">
|
|
86
|
+
<card-callout>
|
|
87
|
+
<p class="loading" role="status">Loading cross-origin...</p>
|
|
88
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
89
|
+
</card-callout>
|
|
90
|
+
<div class="content" hidden></div>
|
|
91
|
+
</module-lazyload>
|
|
92
|
+
|
|
93
|
+
<!-- No src attribute test - tests handling when src is missing -->
|
|
94
|
+
<module-lazyload id="no-src-test">
|
|
95
|
+
<card-callout>
|
|
96
|
+
<p class="loading" role="status">Loading without src...</p>
|
|
97
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
98
|
+
</card-callout>
|
|
99
|
+
<div class="content" hidden></div>
|
|
100
|
+
</module-lazyload>
|
|
101
|
+
|
|
102
|
+
<!-- Dynamic src test - tests programmatic src changes -->
|
|
103
|
+
<module-lazyload id="dynamic-src-test">
|
|
104
|
+
<card-callout>
|
|
105
|
+
<p class="loading" role="status">Loading dynamic src...</p>
|
|
106
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
107
|
+
</card-callout>
|
|
108
|
+
<div class="content" hidden></div>
|
|
109
|
+
</module-lazyload>
|
|
110
|
+
|
|
111
|
+
<!-- Missing elements test - tests graceful handling when required elements are missing -->
|
|
112
|
+
<module-lazyload
|
|
113
|
+
id="missing-elements-test"
|
|
114
|
+
src="/module-lazyload/simple-text.html"
|
|
115
|
+
>
|
|
116
|
+
<!-- No card-callout wrapper -->
|
|
117
|
+
<p class="loading" role="status">Loading without wrapper...</p>
|
|
118
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
119
|
+
<div class="content" hidden></div>
|
|
120
|
+
</module-lazyload>
|
|
121
|
+
|
|
122
|
+
<!-- Recursive loading test - tests prevention of recursive loading -->
|
|
123
|
+
<module-lazyload
|
|
124
|
+
id="recursive-test"
|
|
125
|
+
src="/module-lazyload/mocks/recursive.html"
|
|
126
|
+
>
|
|
127
|
+
<card-callout>
|
|
128
|
+
<p class="loading" role="status">Loading recursive content...</p>
|
|
129
|
+
<p class="error" role="alert" aria-live="assertive" hidden></p>
|
|
130
|
+
</card-callout>
|
|
131
|
+
<div class="content" hidden></div>
|
|
132
|
+
</module-lazyload>
|