@microsoft/fast-element 2.10.4 → 3.0.0-rc.1
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/ARCHITECTURE_HTML_TAGGED_TEMPLATE_LITERAL.md +1 -1
- package/ARCHITECTURE_OVERVIEW.md +2 -2
- package/CHANGELOG.json +1 -1
- package/CHANGELOG.md +2 -2
- package/DECLARATIVE_DESIGN.md +806 -0
- package/DECLARATIVE_HTML.md +470 -0
- package/DECLARATIVE_MIGRATION.md +215 -0
- package/DECLARATIVE_RENDERING.md +530 -0
- package/DECLARATIVE_RENDERING_LIFECYCLE.md +288 -0
- package/DECLARATIVE_SCHEMA_OBSERVER_MAP.md +489 -0
- package/DESIGN.md +138 -33
- package/MIGRATION.md +387 -0
- package/README.md +208 -1
- package/SIZES.md +25 -0
- package/api-extractor.arrays.json +15 -0
- package/api-extractor.context.json +1 -0
- package/api-extractor.declarative.json +15 -0
- package/api-extractor.di.json +1 -0
- package/api-extractor.hydration.json +15 -0
- package/api-extractor.styles.json +15 -0
- package/dist/arrays/arrays.api.json +2621 -0
- package/dist/declarative/declarative.api.json +7844 -0
- package/dist/di/di.api.json +1 -1
- package/dist/dts/array-observer.d.ts +2 -0
- package/dist/dts/arrays.d.ts +2 -0
- package/dist/dts/attr.d.ts +1 -0
- package/dist/dts/binding/signal.d.ts +6 -6
- package/dist/dts/binding/two-way.d.ts +1 -0
- package/dist/dts/binding.d.ts +7 -0
- package/dist/dts/components/attributes.d.ts +2 -5
- package/dist/dts/components/definition-schema-transforms.d.ts +9 -0
- package/dist/dts/components/element-controller.d.ts +80 -114
- package/dist/dts/components/element-hydration.d.ts +1 -1
- package/dist/dts/components/enable-hydration.d.ts +34 -0
- package/dist/dts/components/fast-definitions.d.ts +91 -42
- package/dist/dts/components/fast-element.d.ts +5 -8
- package/dist/dts/components/hydration-tracker.d.ts +40 -0
- package/dist/dts/components/hydration.d.ts +18 -53
- package/dist/dts/components/schema.d.ts +205 -0
- package/dist/dts/context.d.ts +6 -6
- package/dist/dts/css.d.ts +3 -0
- package/dist/dts/debug.d.ts +5 -1
- package/dist/dts/declarative/attribute-map.d.ts +58 -0
- package/dist/dts/declarative/debug.d.ts +5 -0
- package/dist/dts/declarative/index.d.ts +13 -0
- package/dist/dts/declarative/interfaces.d.ts +9 -0
- package/dist/dts/declarative/observer-map-utilities.d.ts +58 -0
- package/dist/dts/declarative/observer-map.d.ts +89 -0
- package/dist/dts/declarative/runtime.d.ts +5 -0
- package/dist/dts/declarative/syntax.d.ts +21 -0
- package/dist/dts/declarative/template-bridge.d.ts +33 -0
- package/dist/dts/declarative/template-parser.d.ts +98 -0
- package/dist/dts/declarative/template.d.ts +9 -0
- package/dist/dts/declarative/utilities.d.ts +312 -0
- package/dist/dts/di/di.d.ts +1 -1
- package/dist/dts/directives/children.d.ts +2 -0
- package/dist/dts/directives/node-observation.d.ts +2 -0
- package/dist/dts/directives/ref.d.ts +2 -0
- package/dist/dts/directives/repeat.d.ts +4 -0
- package/dist/dts/directives/slotted.d.ts +2 -0
- package/dist/dts/directives/when.d.ts +3 -0
- package/dist/dts/dom-policy.d.ts +1 -1
- package/dist/dts/html.d.ts +5 -0
- package/dist/dts/hydration/runtime.d.ts +7 -0
- package/dist/dts/hydration/target-builder.d.ts +15 -12
- package/dist/dts/hydration.d.ts +14 -0
- package/dist/dts/index.d.ts +38 -42
- package/dist/dts/index.debug.d.ts +0 -1
- package/dist/dts/index.rollup.debug.d.ts +0 -1
- package/dist/dts/interfaces.d.ts +1 -49
- package/dist/dts/observable.d.ts +3 -6
- package/dist/dts/observation/arrays.d.ts +1 -1
- package/dist/dts/observation/update-queue.d.ts +1 -1
- package/dist/dts/platform.d.ts +25 -4
- package/dist/dts/render.d.ts +7 -0
- package/dist/dts/schema.d.ts +1 -0
- package/dist/dts/state/exports.d.ts +1 -1
- package/dist/dts/state/state.d.ts +2 -2
- package/dist/dts/styles/css-directive.d.ts +5 -12
- package/dist/dts/styles/css.d.ts +5 -7
- package/dist/dts/styles/element-styles.d.ts +0 -10
- package/dist/dts/styles.d.ts +6 -0
- package/dist/dts/templating/children.d.ts +1 -1
- package/dist/dts/templating/html-binding-directive.d.ts +4 -0
- package/dist/dts/templating/html-directive.d.ts +17 -0
- package/dist/dts/templating/hydration-view.d.ts +109 -0
- package/dist/dts/templating/ref.d.ts +1 -1
- package/dist/dts/templating/render.d.ts +1 -1
- package/dist/dts/templating/repeat.d.ts +2 -2
- package/dist/dts/templating/slotted.d.ts +1 -1
- package/dist/dts/templating/template.d.ts +17 -9
- package/dist/dts/templating/view.d.ts +25 -102
- package/dist/dts/templating/when.d.ts +1 -1
- package/dist/dts/templating.d.ts +10 -0
- package/dist/dts/testing/exports.d.ts +2 -2
- package/dist/dts/updates.d.ts +1 -0
- package/dist/dts/volatile.d.ts +2 -0
- package/dist/esm/array-observer.js +1 -0
- package/dist/esm/arrays.js +1 -0
- package/dist/esm/attr.js +1 -0
- package/dist/esm/binding/normalize.js +1 -1
- package/dist/esm/binding/signal.js +4 -4
- package/dist/esm/binding/two-way.js +2 -1
- package/dist/esm/binding.js +4 -0
- package/dist/esm/components/attributes.js +8 -5
- package/dist/esm/components/definition-schema-transforms.js +23 -0
- package/dist/esm/components/element-controller.js +200 -269
- package/dist/esm/components/element-hydration.js +1 -1
- package/dist/esm/components/enable-hydration.js +100 -0
- package/dist/esm/components/fast-definitions.js +211 -49
- package/dist/esm/components/fast-element.js +18 -27
- package/dist/esm/components/hydration-tracker.js +93 -0
- package/dist/esm/components/hydration.js +62 -144
- package/dist/esm/components/schema.js +253 -0
- package/dist/esm/context.js +6 -6
- package/dist/esm/css.js +3 -0
- package/dist/esm/debug.js +26 -26
- package/dist/esm/declarative/attribute-map.js +121 -0
- package/dist/esm/declarative/debug.js +5 -0
- package/dist/esm/declarative/index.js +3 -0
- package/dist/esm/declarative/interfaces.js +10 -0
- package/dist/esm/declarative/observer-map-utilities.js +562 -0
- package/dist/esm/declarative/observer-map.js +216 -0
- package/dist/esm/declarative/runtime.js +14 -0
- package/dist/esm/declarative/syntax.js +36 -0
- package/dist/esm/declarative/template-bridge.js +170 -0
- package/dist/esm/declarative/template-parser.js +306 -0
- package/dist/esm/declarative/template.js +142 -0
- package/dist/esm/declarative/utilities.js +834 -0
- package/dist/esm/di/di.js +6 -8
- package/dist/esm/directives/children.js +1 -0
- package/dist/esm/directives/node-observation.js +1 -0
- package/dist/esm/directives/ref.js +1 -0
- package/dist/esm/directives/repeat.js +1 -0
- package/dist/esm/directives/slotted.js +1 -0
- package/dist/esm/directives/when.js +1 -0
- package/dist/esm/dom-policy.js +2 -2
- package/dist/esm/dom.js +1 -1
- package/dist/esm/html.js +2 -0
- package/dist/esm/hydration/runtime.js +33 -0
- package/dist/esm/hydration/target-builder.js +97 -90
- package/dist/esm/hydration.js +4 -0
- package/dist/esm/index.debug.js +2 -1
- package/dist/esm/index.js +34 -29
- package/dist/esm/index.rollup.debug.js +3 -2
- package/dist/esm/index.rollup.js +1 -1
- package/dist/esm/interfaces.js +1 -45
- package/dist/esm/observable.js +1 -4
- package/dist/esm/observation/arrays.js +1 -1
- package/dist/esm/observation/observable.js +5 -5
- package/dist/esm/observation/update-queue.js +47 -58
- package/dist/esm/platform.js +31 -30
- package/dist/esm/render.js +1 -0
- package/dist/esm/schema.js +1 -0
- package/dist/esm/state/exports.js +1 -1
- package/dist/esm/styles/css-directive.js +1 -2
- package/dist/esm/styles/css.js +15 -56
- package/dist/esm/styles/element-styles.js +69 -15
- package/dist/esm/styles.js +2 -0
- package/dist/esm/templating/html-binding-directive.js +10 -8
- package/dist/esm/templating/hydration-view.js +235 -0
- package/dist/esm/templating/render.js +1 -1
- package/dist/esm/templating/repeat.js +36 -34
- package/dist/esm/templating/template.js +7 -7
- package/dist/esm/templating/view.js +24 -233
- package/dist/esm/templating.js +7 -0
- package/dist/esm/testing/exports.js +2 -2
- package/dist/esm/updates.js +1 -0
- package/dist/esm/volatile.js +1 -0
- package/dist/fast-element.api.json +9016 -6995
- package/dist/fast-element.d.ts +3557 -796
- package/dist/fast-element.debug.js +5088 -4437
- package/dist/fast-element.debug.min.js +2 -2
- package/dist/fast-element.js +5369 -4649
- package/dist/fast-element.min.js +2 -2
- package/dist/fast-element.untrimmed.d.ts +863 -475
- package/dist/hydration/hydration.api.json +5237 -0
- package/dist/styles/styles.api.json +2672 -0
- package/docs/api-report.api.md +343 -166
- package/docs/arrays/api-report.api.md +114 -0
- package/docs/declarative/api-report.api.md +397 -0
- package/docs/hydration/api-report.api.md +285 -0
- package/docs/styles/api-report.api.md +135 -0
- package/package.json +149 -41
- package/playwright.declarative.config.ts +26 -0
- package/playwright.declarative.webui.config.ts +20 -0
- package/scripts/declarative/build-fixtures-with-webui.js +135 -0
- package/scripts/declarative/build-fixtures.js +49 -0
- package/scripts/declarative/build-fixtures.utilities.js +101 -0
- package/scripts/measure-sizes.js +219 -0
- package/scripts/run-api-extractor.js +39 -20
- package/test/declarative/fixtures/README.md +72 -0
- package/test/declarative/fixtures/WRITING_FIXTURES.md +330 -0
- package/test/declarative/fixtures/bindings/README.md +12 -0
- package/test/declarative/fixtures/bindings/attribute/entry.html +13 -0
- package/test/declarative/fixtures/bindings/attribute/fast-build.config.json +6 -0
- package/test/declarative/fixtures/bindings/attribute/index.html +25 -0
- package/test/declarative/fixtures/bindings/attribute/main.ts +41 -0
- package/test/declarative/fixtures/bindings/attribute/state.json +8 -0
- package/test/declarative/fixtures/bindings/attribute/templates.html +11 -0
- package/test/declarative/fixtures/bindings/content/entry.html +12 -0
- package/test/declarative/fixtures/bindings/content/fast-build.config.json +6 -0
- package/test/declarative/fixtures/bindings/content/index.html +19 -0
- package/test/declarative/fixtures/bindings/content/main.ts +27 -0
- package/test/declarative/fixtures/bindings/content/state.json +4 -0
- package/test/declarative/fixtures/bindings/content/templates.html +6 -0
- package/test/declarative/fixtures/bindings/dot-syntax/entry.html +11 -0
- package/test/declarative/fixtures/bindings/dot-syntax/fast-build.config.json +6 -0
- package/test/declarative/fixtures/bindings/dot-syntax/index.html +47 -0
- package/test/declarative/fixtures/bindings/dot-syntax/main.ts +59 -0
- package/test/declarative/fixtures/bindings/dot-syntax/state.json +16 -0
- package/test/declarative/fixtures/bindings/dot-syntax/templates.html +17 -0
- package/test/declarative/fixtures/bindings/event/entry.html +11 -0
- package/test/declarative/fixtures/bindings/event/fast-build.config.json +6 -0
- package/test/declarative/fixtures/bindings/event/index.html +43 -0
- package/test/declarative/fixtures/bindings/event/main.ts +43 -0
- package/test/declarative/fixtures/bindings/event/state.json +3 -0
- package/test/declarative/fixtures/bindings/event/templates.html +18 -0
- package/test/declarative/fixtures/bindings/host/entry.html +40 -0
- package/test/declarative/fixtures/bindings/host/fast-build.config.json +6 -0
- package/test/declarative/fixtures/bindings/host/index.html +96 -0
- package/test/declarative/fixtures/bindings/host/main.ts +222 -0
- package/test/declarative/fixtures/bindings/host/state.json +9 -0
- package/test/declarative/fixtures/bindings/host/templates.html +55 -0
- package/test/declarative/fixtures/directives/README.md +12 -0
- package/test/declarative/fixtures/directives/children/entry.html +11 -0
- package/test/declarative/fixtures/directives/children/fast-build.config.json +6 -0
- package/test/declarative/fixtures/directives/children/index.html +15 -0
- package/test/declarative/fixtures/directives/children/main.ts +22 -0
- package/test/declarative/fixtures/directives/children/state.json +3 -0
- package/test/declarative/fixtures/directives/children/templates.html +3 -0
- package/test/declarative/fixtures/directives/ref/entry.html +11 -0
- package/test/declarative/fixtures/directives/ref/fast-build.config.json +6 -0
- package/test/declarative/fixtures/directives/ref/index.html +15 -0
- package/test/declarative/fixtures/directives/ref/main.ts +17 -0
- package/test/declarative/fixtures/directives/ref/state.json +1 -0
- package/test/declarative/fixtures/directives/ref/templates.html +3 -0
- package/test/declarative/fixtures/directives/repeat/entry.html +21 -0
- package/test/declarative/fixtures/directives/repeat/fast-build.config.json +6 -0
- package/test/declarative/fixtures/directives/repeat/index.html +133 -0
- package/test/declarative/fixtures/directives/repeat/main.ts +110 -0
- package/test/declarative/fixtures/directives/repeat/sprites.svg +8 -0
- package/test/declarative/fixtures/directives/repeat/state.json +10 -0
- package/test/declarative/fixtures/directives/repeat/templates.html +75 -0
- package/test/declarative/fixtures/directives/slotted/entry.html +17 -0
- package/test/declarative/fixtures/directives/slotted/fast-build.config.json +6 -0
- package/test/declarative/fixtures/directives/slotted/index.html +27 -0
- package/test/declarative/fixtures/directives/slotted/main.ts +29 -0
- package/test/declarative/fixtures/directives/slotted/state.json +1 -0
- package/test/declarative/fixtures/directives/slotted/templates.html +7 -0
- package/test/declarative/fixtures/directives/when/entry.html +51 -0
- package/test/declarative/fixtures/directives/when/fast-build.config.json +6 -0
- package/test/declarative/fixtures/directives/when/index.html +136 -0
- package/test/declarative/fixtures/directives/when/main.ts +172 -0
- package/test/declarative/fixtures/directives/when/state.json +12 -0
- package/test/declarative/fixtures/directives/when/templates.html +75 -0
- package/test/declarative/fixtures/ecosystem/README.md +11 -0
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/entry.html +12 -0
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/fast-build.config.json +6 -0
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/index.html +20 -0
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/main.ts +68 -0
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/state.json +4 -0
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/templates.html +7 -0
- package/test/declarative/fixtures/ecosystem/errors/entry.html +12 -0
- package/test/declarative/fixtures/ecosystem/errors/fast-build.config.json +6 -0
- package/test/declarative/fixtures/ecosystem/errors/index.html +20 -0
- package/test/declarative/fixtures/ecosystem/errors/main.ts +17 -0
- package/test/declarative/fixtures/ecosystem/errors/state.json +1 -0
- package/test/declarative/fixtures/ecosystem/errors/templates.html +7 -0
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/entry.html +17 -0
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/fast-build.config.json +6 -0
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/index.html +56 -0
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/main.ts +134 -0
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/state.json +12 -0
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/templates.html +34 -0
- package/test/declarative/fixtures/ecosystem/performance-metrics/entry.html +25 -0
- package/test/declarative/fixtures/ecosystem/performance-metrics/fast-build.config.json +6 -0
- package/test/declarative/fixtures/ecosystem/performance-metrics/fast-card.css +10 -0
- package/test/declarative/fixtures/ecosystem/performance-metrics/index.html +181 -0
- package/test/declarative/fixtures/ecosystem/performance-metrics/main.ts +58 -0
- package/test/declarative/fixtures/ecosystem/performance-metrics/state.json +6 -0
- package/test/declarative/fixtures/ecosystem/performance-metrics/templates.html +15 -0
- package/test/declarative/fixtures/extensions/README.md +15 -0
- package/test/declarative/fixtures/extensions/attribute-map/entry.html +14 -0
- package/test/declarative/fixtures/extensions/attribute-map/fast-build.config.json +6 -0
- package/test/declarative/fixtures/extensions/attribute-map/index.html +31 -0
- package/test/declarative/fixtures/extensions/attribute-map/main.ts +40 -0
- package/test/declarative/fixtures/extensions/attribute-map/state.json +4 -0
- package/test/declarative/fixtures/extensions/attribute-map/templates.html +14 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/entry.html +12 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/fast-build.config.json +7 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/index.html +25 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/main.ts +31 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/state.json +5 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/templates.html +11 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/entry.html +13 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/fast-build.config.json +7 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/index.html +23 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/main.ts +37 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/state.json +1 -0
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/templates.html +9 -0
- package/test/declarative/fixtures/extensions/observer-map/entry.html +15 -0
- package/test/declarative/fixtures/extensions/observer-map/fast-build.config.json +6 -0
- package/test/declarative/fixtures/extensions/observer-map/index.html +442 -0
- package/test/declarative/fixtures/extensions/observer-map/main.ts +482 -0
- package/test/declarative/fixtures/extensions/observer-map/state.json +158 -0
- package/test/declarative/fixtures/extensions/observer-map/templates.html +172 -0
- package/test/declarative/fixtures/extensions/observer-map-config-object/entry.html +16 -0
- package/test/declarative/fixtures/extensions/observer-map-config-object/fast-build.config.json +6 -0
- package/test/declarative/fixtures/extensions/observer-map-config-object/index.html +27 -0
- package/test/declarative/fixtures/extensions/observer-map-config-object/main.ts +53 -0
- package/test/declarative/fixtures/extensions/observer-map-config-object/state.json +9 -0
- package/test/declarative/fixtures/extensions/observer-map-config-object/templates.html +12 -0
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/README.md +98 -0
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/entry.html +156 -0
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/fast-build.config.json +6 -0
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/index.html +376 -0
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/main.ts +366 -0
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/state.json +69 -0
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/templates.html +91 -0
- package/test/declarative/fixtures/extensions/observer-map-properties/entry.html +14 -0
- package/test/declarative/fixtures/extensions/observer-map-properties/fast-build.config.json +6 -0
- package/test/declarative/fixtures/extensions/observer-map-properties/index.html +110 -0
- package/test/declarative/fixtures/extensions/observer-map-properties/main.ts +175 -0
- package/test/declarative/fixtures/extensions/observer-map-properties/state.json +29 -0
- package/test/declarative/fixtures/extensions/observer-map-properties/templates.html +55 -0
- package/test/declarative/fixtures/scenarios/README.md +7 -0
- package/test/declarative/fixtures/scenarios/nested-elements/entry.html +16 -0
- package/test/declarative/fixtures/scenarios/nested-elements/fast-build.config.json +6 -0
- package/test/declarative/fixtures/scenarios/nested-elements/index.html +126 -0
- package/test/declarative/fixtures/scenarios/nested-elements/main.ts +214 -0
- package/test/declarative/fixtures/scenarios/nested-elements/state.json +10 -0
- package/test/declarative/fixtures/scenarios/nested-elements/templates.html +54 -0
- package/test/declarative/index.html +12 -0
- package/test/declarative/vite.config.ts +55 -0
- package/test/declarative-main.ts +6 -0
- package/test/extension-subpaths-main.ts +9 -0
- package/test/main.ts +38 -33
- package/test/pure-declarative-main.ts +1 -0
- package/dist/dts/components/install-hydration.d.ts +0 -1
- package/dist/dts/pending-task.d.ts +0 -32
- package/dist/dts/polyfills.d.ts +0 -0
- package/dist/dts/styles/css-binding-directive.d.ts +0 -60
- package/dist/dts/templating/install-hydratable-view-templates.d.ts +0 -1
- package/dist/esm/components/install-hydration.js +0 -3
- package/dist/esm/pending-task.js +0 -28
- package/dist/esm/polyfills.js +0 -60
- package/dist/esm/styles/css-binding-directive.js +0 -76
- package/dist/esm/templating/install-hydratable-view-templates.js +0 -23
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title></title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<!-- multiple -->
|
|
9
|
+
<test-element-multiple id="multiple1" planet="earth"><template shadowrootmode="open" shadowroot="open">Hello <!--fe:b-->world<!--fe:/b--><!--fe:b--><!--fe:/b--><!--fe:b--><!--fe:/b--></template></test-element-multiple>
|
|
10
|
+
<test-element-multiple id="multiple2" planet="pluto"><template shadowrootmode="open" shadowroot="open">Hello <!--fe:b--><!--fe:/b--><!--fe:b-->pluto<!--fe:/b--><!--fe:b--><!--fe:/b--></template></test-element-multiple>
|
|
11
|
+
<test-element-multiple id="multiple3" planet="mars"><template shadowrootmode="open" shadowroot="open">Hello <!--fe:b--><!--fe:/b--><!--fe:b--><!--fe:/b--><!--fe:b-->mars<!--fe:/b--></template></test-element-multiple>
|
|
12
|
+
<!-- boolean -->
|
|
13
|
+
<test-element id="show" show><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Hello world<!--fe:/b--></template></test-element>
|
|
14
|
+
<test-element id="hide"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element>
|
|
15
|
+
<!-- not -->
|
|
16
|
+
<test-element-not id="show-not"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Hello world<!--fe:/b--></template></test-element-not>
|
|
17
|
+
<test-element-not id="hide-not" hide><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-not>
|
|
18
|
+
<!-- equals -->
|
|
19
|
+
<test-element-equals id="equals-true" vara="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Equals 3<!--fe:/b--></template></test-element-equals>
|
|
20
|
+
<test-element-equals id="equals-false" vara="4"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-equals>
|
|
21
|
+
<!-- not equals -->
|
|
22
|
+
<test-element-not-equals id="not-equals-true" vara="4"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Not equals 3<!--fe:/b--></template></test-element-not-equals>
|
|
23
|
+
<test-element-not-equals id="not-equals-false" vara="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-not-equals>
|
|
24
|
+
<!-- greater than or equals -->
|
|
25
|
+
<test-element-ge id="ge-true" vara="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Two and Over<!--fe:/b--></template></test-element-ge>
|
|
26
|
+
<test-element-ge id="ge-false" vara="0"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-ge>
|
|
27
|
+
<!-- greater than -->
|
|
28
|
+
<test-element-gt id="gt-true" vara="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Over two<!--fe:/b--></template></test-element-gt>
|
|
29
|
+
<test-element-gt id="gt-false" vara="0"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-gt>
|
|
30
|
+
<!-- less than or equals -->
|
|
31
|
+
<test-element-le id="le-true" vara="2"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Two and Under<!--fe:/b--></template></test-element-le>
|
|
32
|
+
<test-element-le id="le-false" vara="4"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-le>
|
|
33
|
+
<!-- less than -->
|
|
34
|
+
<test-element-lt id="lt-true" vara="1"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Under two<!--fe:/b--></template></test-element-lt>
|
|
35
|
+
<test-element-lt id="lt-false" vara="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-lt>
|
|
36
|
+
<!-- or -->
|
|
37
|
+
<test-element-or id="or-true" thisvar="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->This or That<!--fe:/b--></template></test-element-or>
|
|
38
|
+
<test-element-or id="or-false"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-or>
|
|
39
|
+
<!-- and -->
|
|
40
|
+
<test-element-and id="and-true" thisvar thatvar><template shadowrootmode="open" shadowroot="open"><!--fe:b-->This and That<!--fe:/b--></template></test-element-and>
|
|
41
|
+
<test-element-and id="and-false" thisvar><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-and>
|
|
42
|
+
<!-- nested when -->
|
|
43
|
+
<nested-when id="nested-when" error="false"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b-->
|
|
44
|
+
<div class="buttons">
|
|
45
|
+
<!--fe:b-->
|
|
46
|
+
<!--fe:b-->
|
|
47
|
+
<progress></progress>
|
|
48
|
+
<!--fe:/b-->
|
|
49
|
+
<!--fe:b--><!--fe:/b-->
|
|
50
|
+
<!--fe:/b-->
|
|
51
|
+
<!--fe:b--><!--fe:/b-->
|
|
52
|
+
</div></template></nested-when>
|
|
53
|
+
<!-- when false with repeat -->
|
|
54
|
+
<test-element-when-false-repeat id="when-false-repeat"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-when-false-repeat>
|
|
55
|
+
<!-- event -->
|
|
56
|
+
<test-element-event id="event-show" show><template shadowrootmode="open" shadowroot="open"><!--fe:b--><button data-fe="1">Click me</button><!--fe:/b--></template></test-element-event>
|
|
57
|
+
<test-element-event id="event-hide"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-event>
|
|
58
|
+
<!-- multiple -->
|
|
59
|
+
<f-template name="test-element-multiple">
|
|
60
|
+
<template>Hello <f-when value="{{planet == 'earth'}}">world</f-when><f-when value="{{planet == 'pluto'}}">pluto</f-when><f-when value="{{planet == 'mars'}}">mars</f-when></template>
|
|
61
|
+
</f-template>
|
|
62
|
+
<!-- boolean -->
|
|
63
|
+
<f-template name="test-element">
|
|
64
|
+
<template><f-when value="{{show}}">Hello world</f-when></template>
|
|
65
|
+
</f-template>
|
|
66
|
+
<!-- not -->
|
|
67
|
+
<f-template name="test-element-not">
|
|
68
|
+
<template><f-when value="{{!hide}}">Hello world</f-when></template>
|
|
69
|
+
</f-template>
|
|
70
|
+
<!-- equals -->
|
|
71
|
+
<f-template name="test-element-equals">
|
|
72
|
+
<template><f-when value="{{vara == 3}}">Equals 3</f-when></template>
|
|
73
|
+
</f-template>
|
|
74
|
+
<!-- not equals -->
|
|
75
|
+
<f-template name="test-element-not-equals">
|
|
76
|
+
<template><f-when value="{{vara != 3}}">Not equals 3</f-when></template>
|
|
77
|
+
</f-template>
|
|
78
|
+
<!-- greater than or equals -->
|
|
79
|
+
<f-template name="test-element-ge">
|
|
80
|
+
<template><f-when value="{{vara >= 2}}">Two and Over</f-when></template>
|
|
81
|
+
</f-template>
|
|
82
|
+
<!-- greater than -->
|
|
83
|
+
<f-template name="test-element-gt">
|
|
84
|
+
<template><f-when value="{{vara > 2}}">Over two</f-when></template>
|
|
85
|
+
</f-template>
|
|
86
|
+
<!-- less than or equals -->
|
|
87
|
+
<f-template name="test-element-le">
|
|
88
|
+
<template><f-when value="{{vara <= 2}}">Two and Under</f-when></template>
|
|
89
|
+
</f-template>
|
|
90
|
+
<!-- less than -->
|
|
91
|
+
<f-template name="test-element-lt">
|
|
92
|
+
<template><f-when value="{{vara < 2}}">Under two</f-when></template>
|
|
93
|
+
</f-template>
|
|
94
|
+
<!-- or -->
|
|
95
|
+
<f-template name="test-element-or">
|
|
96
|
+
<template><f-when value="{{thisvar || thatvar}}">This or That</f-when></template>
|
|
97
|
+
</f-template>
|
|
98
|
+
<!-- and -->
|
|
99
|
+
<f-template name="test-element-and">
|
|
100
|
+
<template><f-when value="{{thisvar && thatvar}}">This and That</f-when></template>
|
|
101
|
+
</f-template>
|
|
102
|
+
<!-- nested when -->
|
|
103
|
+
<f-template name="nested-when">
|
|
104
|
+
<template>
|
|
105
|
+
<f-when value="{{error}}">
|
|
106
|
+
<div class="error" role="alert">{{strings.errorMessage}}</div>
|
|
107
|
+
</f-when>
|
|
108
|
+
<div class="buttons">
|
|
109
|
+
<f-when value="{{!error}}">
|
|
110
|
+
<f-when value="{{showProgress}}">
|
|
111
|
+
<progress></progress>
|
|
112
|
+
</f-when>
|
|
113
|
+
<f-when value="{{!showProgress}}">
|
|
114
|
+
<button ?disabled="{{!enableContinue}}" @click="{handleClick()}">
|
|
115
|
+
{{strings.continueButtonText}}
|
|
116
|
+
</button>
|
|
117
|
+
</f-when>
|
|
118
|
+
</f-when>
|
|
119
|
+
<f-when value="{{error}}">
|
|
120
|
+
<button>{{strings.retryButtonText}}</button>
|
|
121
|
+
</f-when>
|
|
122
|
+
</div>
|
|
123
|
+
</template>
|
|
124
|
+
</f-template>
|
|
125
|
+
<!-- when false with repeat -->
|
|
126
|
+
<f-template name="test-element-when-false-repeat">
|
|
127
|
+
<template><f-when value="{{show}}"><ul><f-repeat value="{{item in list}}"><li>{{item}}</li></f-repeat></ul></f-when></template>
|
|
128
|
+
</f-template>
|
|
129
|
+
<!-- event -->
|
|
130
|
+
<f-template name="test-element-event">
|
|
131
|
+
<template><f-when value="{{show}}"><button @click="{handleClick()}">Click me</button></f-when></template>
|
|
132
|
+
</f-template>
|
|
133
|
+
|
|
134
|
+
<script type="module" src="./main.ts"></script>
|
|
135
|
+
</body>
|
|
136
|
+
</html>
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { attr } from "@microsoft/fast-element/attr.js";
|
|
2
|
+
import { declarativeTemplate } from "@microsoft/fast-element/declarative.js";
|
|
3
|
+
import { FASTElement } from "@microsoft/fast-element/fast-element.js";
|
|
4
|
+
import { enableHydration } from "@microsoft/fast-element/hydration.js";
|
|
5
|
+
import { observable } from "@microsoft/fast-element/observable.js";
|
|
6
|
+
|
|
7
|
+
class TestElementMultiple extends FASTElement {
|
|
8
|
+
@attr()
|
|
9
|
+
planet: string = "";
|
|
10
|
+
}
|
|
11
|
+
TestElementMultiple.define({
|
|
12
|
+
name: "test-element-multiple",
|
|
13
|
+
template: declarativeTemplate(),
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
class TestElement extends FASTElement {
|
|
17
|
+
@attr({ mode: "boolean" })
|
|
18
|
+
show: boolean = false;
|
|
19
|
+
}
|
|
20
|
+
TestElement.define({
|
|
21
|
+
name: "test-element",
|
|
22
|
+
template: declarativeTemplate(),
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
class TestElementNot extends FASTElement {
|
|
26
|
+
@attr({ mode: "boolean" })
|
|
27
|
+
hide: boolean = false;
|
|
28
|
+
}
|
|
29
|
+
TestElementNot.define({
|
|
30
|
+
name: "test-element-not",
|
|
31
|
+
template: declarativeTemplate(),
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
class TestElementEquals extends FASTElement {
|
|
35
|
+
@attr({ attribute: "vara" })
|
|
36
|
+
vara: number = 0;
|
|
37
|
+
}
|
|
38
|
+
TestElementEquals.define({
|
|
39
|
+
name: "test-element-equals",
|
|
40
|
+
template: declarativeTemplate(),
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
class TestElementNotEquals extends FASTElement {
|
|
44
|
+
@attr({ attribute: "vara" })
|
|
45
|
+
vara: number = 0;
|
|
46
|
+
}
|
|
47
|
+
TestElementNotEquals.define({
|
|
48
|
+
name: "test-element-not-equals",
|
|
49
|
+
template: declarativeTemplate(),
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
class TestElementGe extends FASTElement {
|
|
53
|
+
@attr({ attribute: "vara" })
|
|
54
|
+
vara: number = 0;
|
|
55
|
+
}
|
|
56
|
+
TestElementGe.define({
|
|
57
|
+
name: "test-element-ge",
|
|
58
|
+
template: declarativeTemplate(),
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
class TestElementGt extends FASTElement {
|
|
62
|
+
@attr({ attribute: "vara" })
|
|
63
|
+
vara: number = 0;
|
|
64
|
+
}
|
|
65
|
+
TestElementGt.define({
|
|
66
|
+
name: "test-element-gt",
|
|
67
|
+
template: declarativeTemplate(),
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
class TestElementLe extends FASTElement {
|
|
71
|
+
@attr({ attribute: "vara" })
|
|
72
|
+
vara: number = 0;
|
|
73
|
+
}
|
|
74
|
+
TestElementLe.define({
|
|
75
|
+
name: "test-element-le",
|
|
76
|
+
template: declarativeTemplate(),
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
class TestElementLt extends FASTElement {
|
|
80
|
+
@attr({ attribute: "vara" })
|
|
81
|
+
vara: number = 0;
|
|
82
|
+
}
|
|
83
|
+
TestElementLt.define({
|
|
84
|
+
name: "test-element-lt",
|
|
85
|
+
template: declarativeTemplate(),
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
class TestElementOr extends FASTElement {
|
|
89
|
+
@attr({ attribute: "thisvar", mode: "boolean" })
|
|
90
|
+
thisvar: boolean = false;
|
|
91
|
+
|
|
92
|
+
@attr({ attribute: "thatvar", mode: "boolean" })
|
|
93
|
+
thatvar: boolean = false;
|
|
94
|
+
}
|
|
95
|
+
TestElementOr.define({
|
|
96
|
+
name: "test-element-or",
|
|
97
|
+
template: declarativeTemplate(),
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
class TestElementAnd extends FASTElement {
|
|
101
|
+
@attr({ attribute: "thisvar", mode: "boolean" })
|
|
102
|
+
thisvar: boolean = false;
|
|
103
|
+
|
|
104
|
+
@attr({ attribute: "thatvar", mode: "boolean" })
|
|
105
|
+
thatvar: boolean = false;
|
|
106
|
+
}
|
|
107
|
+
TestElementAnd.define({
|
|
108
|
+
name: "test-element-and",
|
|
109
|
+
template: declarativeTemplate(),
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
export class TestElementWhenFalseRepeat extends FASTElement {
|
|
113
|
+
@attr({ mode: "boolean" })
|
|
114
|
+
show: boolean = false;
|
|
115
|
+
|
|
116
|
+
@observable
|
|
117
|
+
list: Array<string> = ["Alpha", "Beta", "Gamma"];
|
|
118
|
+
}
|
|
119
|
+
TestElementWhenFalseRepeat.define({
|
|
120
|
+
name: "test-element-when-false-repeat",
|
|
121
|
+
template: declarativeTemplate(),
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
export class TestElementEvent extends FASTElement {
|
|
125
|
+
@attr({ mode: "boolean" })
|
|
126
|
+
show: boolean = false;
|
|
127
|
+
|
|
128
|
+
@observable
|
|
129
|
+
clickCount: number = 0;
|
|
130
|
+
|
|
131
|
+
public handleClick = (): void => {
|
|
132
|
+
this.clickCount++;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
TestElementEvent.define({
|
|
136
|
+
name: "test-element-event",
|
|
137
|
+
template: declarativeTemplate(),
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
export class NestedWhenElement extends FASTElement {
|
|
141
|
+
strings = {
|
|
142
|
+
errorMessage: "Error occurred",
|
|
143
|
+
continueButtonText: "Continue",
|
|
144
|
+
retryButtonText: "Retry",
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
@observable
|
|
148
|
+
error: boolean = false;
|
|
149
|
+
|
|
150
|
+
@observable
|
|
151
|
+
showProgress: boolean = true;
|
|
152
|
+
|
|
153
|
+
@observable
|
|
154
|
+
enableContinue: boolean = false;
|
|
155
|
+
|
|
156
|
+
@observable
|
|
157
|
+
clickCount: number = 0;
|
|
158
|
+
|
|
159
|
+
public handleClick = (): void => {
|
|
160
|
+
this.clickCount++;
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
NestedWhenElement.define({
|
|
164
|
+
name: "nested-when",
|
|
165
|
+
template: declarativeTemplate(),
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
enableHydration({
|
|
169
|
+
hydrationComplete() {
|
|
170
|
+
(window as any).hydrationCompleted = true;
|
|
171
|
+
},
|
|
172
|
+
});
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<!-- multiple -->
|
|
2
|
+
<f-template name="test-element-multiple">
|
|
3
|
+
<template>Hello <f-when value="{{planet == 'earth'}}">world</f-when><f-when value="{{planet == 'pluto'}}">pluto</f-when><f-when value="{{planet == 'mars'}}">mars</f-when></template>
|
|
4
|
+
</f-template>
|
|
5
|
+
<!-- boolean -->
|
|
6
|
+
<f-template name="test-element">
|
|
7
|
+
<template><f-when value="{{show}}">Hello world</f-when></template>
|
|
8
|
+
</f-template>
|
|
9
|
+
<!-- not -->
|
|
10
|
+
<f-template name="test-element-not">
|
|
11
|
+
<template><f-when value="{{!hide}}">Hello world</f-when></template>
|
|
12
|
+
</f-template>
|
|
13
|
+
<!-- equals -->
|
|
14
|
+
<f-template name="test-element-equals">
|
|
15
|
+
<template><f-when value="{{vara == 3}}">Equals 3</f-when></template>
|
|
16
|
+
</f-template>
|
|
17
|
+
<!-- not equals -->
|
|
18
|
+
<f-template name="test-element-not-equals">
|
|
19
|
+
<template><f-when value="{{vara != 3}}">Not equals 3</f-when></template>
|
|
20
|
+
</f-template>
|
|
21
|
+
<!-- greater than or equals -->
|
|
22
|
+
<f-template name="test-element-ge">
|
|
23
|
+
<template><f-when value="{{vara >= 2}}">Two and Over</f-when></template>
|
|
24
|
+
</f-template>
|
|
25
|
+
<!-- greater than -->
|
|
26
|
+
<f-template name="test-element-gt">
|
|
27
|
+
<template><f-when value="{{vara > 2}}">Over two</f-when></template>
|
|
28
|
+
</f-template>
|
|
29
|
+
<!-- less than or equals -->
|
|
30
|
+
<f-template name="test-element-le">
|
|
31
|
+
<template><f-when value="{{vara <= 2}}">Two and Under</f-when></template>
|
|
32
|
+
</f-template>
|
|
33
|
+
<!-- less than -->
|
|
34
|
+
<f-template name="test-element-lt">
|
|
35
|
+
<template><f-when value="{{vara < 2}}">Under two</f-when></template>
|
|
36
|
+
</f-template>
|
|
37
|
+
<!-- or -->
|
|
38
|
+
<f-template name="test-element-or">
|
|
39
|
+
<template><f-when value="{{thisvar || thatvar}}">This or That</f-when></template>
|
|
40
|
+
</f-template>
|
|
41
|
+
<!-- and -->
|
|
42
|
+
<f-template name="test-element-and">
|
|
43
|
+
<template><f-when value="{{thisvar && thatvar}}">This and That</f-when></template>
|
|
44
|
+
</f-template>
|
|
45
|
+
<!-- nested when -->
|
|
46
|
+
<f-template name="nested-when">
|
|
47
|
+
<template>
|
|
48
|
+
<f-when value="{{error}}">
|
|
49
|
+
<div class="error" role="alert">{{strings.errorMessage}}</div>
|
|
50
|
+
</f-when>
|
|
51
|
+
<div class="buttons">
|
|
52
|
+
<f-when value="{{!error}}">
|
|
53
|
+
<f-when value="{{showProgress}}">
|
|
54
|
+
<progress></progress>
|
|
55
|
+
</f-when>
|
|
56
|
+
<f-when value="{{!showProgress}}">
|
|
57
|
+
<button ?disabled="{{!enableContinue}}" @click="{handleClick()}">
|
|
58
|
+
{{strings.continueButtonText}}
|
|
59
|
+
</button>
|
|
60
|
+
</f-when>
|
|
61
|
+
</f-when>
|
|
62
|
+
<f-when value="{{error}}">
|
|
63
|
+
<button>{{strings.retryButtonText}}</button>
|
|
64
|
+
</f-when>
|
|
65
|
+
</div>
|
|
66
|
+
</template>
|
|
67
|
+
</f-template>
|
|
68
|
+
<!-- when false with repeat -->
|
|
69
|
+
<f-template name="test-element-when-false-repeat">
|
|
70
|
+
<template><f-when value="{{show}}"><ul><f-repeat value="{{item in list}}"><li>{{item}}</li></f-repeat></ul></f-when></template>
|
|
71
|
+
</f-template>
|
|
72
|
+
<!-- event -->
|
|
73
|
+
<f-template name="test-element-event">
|
|
74
|
+
<template><f-when value="{{show}}"><button @click="{handleClick()}">Click me</button></f-when></template>
|
|
75
|
+
</f-template>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Ecosystem
|
|
2
|
+
|
|
3
|
+
Fixtures for other APIs and behaviors that are part of FAST Element's
|
|
4
|
+
declarative ecosystem, including error handling, lifecycle management, and
|
|
5
|
+
performance monitoring.
|
|
6
|
+
|
|
7
|
+
| Fixture | Description |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `errors` | Error handling and edge cases in template rendering. |
|
|
10
|
+
| `lifecycle-callbacks` | `declarativeTemplate()` and `enableHydration()` lifecycle callbacks such as `elementDidRegister`, `elementDidHydrate`, and `hydrationComplete`. |
|
|
11
|
+
| `performance-metrics` | Performance monitoring and measurements during the component lifecycle. |
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Declarative Template Without Hydration</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<basic-element greeting="Hi"></basic-element>
|
|
9
|
+
<counter-element></counter-element>
|
|
10
|
+
<script type="module" src="./main.ts"></script>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Declarative Template Without Hydration</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<basic-element greeting="Hi"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Hi<!--fe:/b--> World</template></basic-element>
|
|
9
|
+
<counter-element><template shadowrootmode="open" shadowroot="open"><span>Count: <!--fe:b-->0<!--fe:/b--></span></template></counter-element>
|
|
10
|
+
<f-template name="basic-element">
|
|
11
|
+
<template>{{greeting}} World</template>
|
|
12
|
+
</f-template>
|
|
13
|
+
|
|
14
|
+
<f-template name="counter-element">
|
|
15
|
+
<template><span>Count: {{count}}</span></template>
|
|
16
|
+
</f-template>
|
|
17
|
+
|
|
18
|
+
<script type="module" src="./main.ts"></script>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { attr } from "@microsoft/fast-element/attr.js";
|
|
2
|
+
import { declarativeTemplate } from "@microsoft/fast-element/declarative.js";
|
|
3
|
+
import { FASTElement } from "@microsoft/fast-element/fast-element.js";
|
|
4
|
+
import { observable } from "@microsoft/fast-element/observable.js";
|
|
5
|
+
|
|
6
|
+
// No enableHydration() — test declarative template without hydration
|
|
7
|
+
|
|
8
|
+
const lifecycleEvents: Array<{ callback: string; name?: string }> = [];
|
|
9
|
+
|
|
10
|
+
class BasicElement extends FASTElement {
|
|
11
|
+
@attr
|
|
12
|
+
greeting: string = "Hello";
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
BasicElement.define({
|
|
16
|
+
name: "basic-element",
|
|
17
|
+
template: declarativeTemplate({
|
|
18
|
+
elementDidRegister(name: string) {
|
|
19
|
+
lifecycleEvents.push({ callback: "elementDidRegister", name });
|
|
20
|
+
},
|
|
21
|
+
templateWillUpdate(name: string) {
|
|
22
|
+
lifecycleEvents.push({ callback: "templateWillUpdate", name });
|
|
23
|
+
},
|
|
24
|
+
templateDidUpdate(name: string) {
|
|
25
|
+
lifecycleEvents.push({ callback: "templateDidUpdate", name });
|
|
26
|
+
},
|
|
27
|
+
elementDidDefine(name: string) {
|
|
28
|
+
lifecycleEvents.push({ callback: "elementDidDefine", name });
|
|
29
|
+
(window as any).elementsDefined = ((window as any).elementsDefined ?? 0) + 1;
|
|
30
|
+
if ((window as any).elementsDefined >= 2) {
|
|
31
|
+
(window as any).allDefined = true;
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
}),
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
class CounterElement extends FASTElement {
|
|
38
|
+
@observable
|
|
39
|
+
count: number = 0;
|
|
40
|
+
|
|
41
|
+
increment() {
|
|
42
|
+
this.count++;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
CounterElement.define({
|
|
47
|
+
name: "counter-element",
|
|
48
|
+
template: declarativeTemplate({
|
|
49
|
+
elementDidRegister(name: string) {
|
|
50
|
+
lifecycleEvents.push({ callback: "elementDidRegister", name });
|
|
51
|
+
},
|
|
52
|
+
templateWillUpdate(name: string) {
|
|
53
|
+
lifecycleEvents.push({ callback: "templateWillUpdate", name });
|
|
54
|
+
},
|
|
55
|
+
templateDidUpdate(name: string) {
|
|
56
|
+
lifecycleEvents.push({ callback: "templateDidUpdate", name });
|
|
57
|
+
},
|
|
58
|
+
elementDidDefine(name: string) {
|
|
59
|
+
lifecycleEvents.push({ callback: "elementDidDefine", name });
|
|
60
|
+
(window as any).elementsDefined = ((window as any).elementsDefined ?? 0) + 1;
|
|
61
|
+
if ((window as any).elementsDefined >= 2) {
|
|
62
|
+
(window as any).allDefined = true;
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
}),
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
(window as any).lifecycleEvents = lifecycleEvents;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title></title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<test-element-no-template></test-element-no-template>
|
|
9
|
+
<test-element-multiple-templates></test-element-multiple-templates>
|
|
10
|
+
<script type="module" src="./main.ts"></script>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title></title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<test-element-no-template><template shadowrootmode="open" shadowroot="open"><span>No template element provided</span></template></test-element-no-template>
|
|
9
|
+
<test-element-multiple-templates><template shadowrootmode="open" shadowroot="open"><span>First template</span></template></test-element-multiple-templates>
|
|
10
|
+
<f-template name="test-element-no-template">
|
|
11
|
+
<span>No template element provided</span>
|
|
12
|
+
</f-template>
|
|
13
|
+
<f-template name="test-element-multiple-templates">
|
|
14
|
+
<template><span>First template</span></template>
|
|
15
|
+
<template><span>Second template</span></template>
|
|
16
|
+
</f-template>
|
|
17
|
+
|
|
18
|
+
<script type="module" src="./main.ts"></script>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { enableDebug } from "@microsoft/fast-element/debug.js";
|
|
2
|
+
import { declarativeTemplate } from "@microsoft/fast-element/declarative.js";
|
|
3
|
+
import { FASTElement } from "@microsoft/fast-element/fast-element.js";
|
|
4
|
+
|
|
5
|
+
enableDebug();
|
|
6
|
+
|
|
7
|
+
class TestElementNoTemplate extends FASTElement {}
|
|
8
|
+
FASTElement.define(TestElementNoTemplate, {
|
|
9
|
+
name: "test-element-no-template",
|
|
10
|
+
template: declarativeTemplate(),
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
class TestElementMultipleTemplates extends FASTElement {}
|
|
14
|
+
FASTElement.define(TestElementMultipleTemplates, {
|
|
15
|
+
name: "test-element-multiple-templates",
|
|
16
|
+
template: declarativeTemplate(),
|
|
17
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<f-template name="test-element-no-template">
|
|
2
|
+
<span>No template element provided</span>
|
|
3
|
+
</f-template>
|
|
4
|
+
<f-template name="test-element-multiple-templates">
|
|
5
|
+
<template><span>First template</span></template>
|
|
6
|
+
<template><span>Second template</span></template>
|
|
7
|
+
</f-template>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Lifecycle Callbacks Test</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<simple-element needs-hydration></simple-element>
|
|
9
|
+
<complex-element needs-hydration count="{{count}}"></complex-element>
|
|
10
|
+
<deferred-element needs-hydration defer-hydration></deferred-element>
|
|
11
|
+
<deferred-parent-element
|
|
12
|
+
needs-hydration
|
|
13
|
+
defer-hydration
|
|
14
|
+
></deferred-parent-element>
|
|
15
|
+
<script type="module" src="./main.ts"></script>
|
|
16
|
+
</body>
|
|
17
|
+
</html>
|