@microsoft/fast-element 3.0.0-rc.1 → 3.0.0-rc.2
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/CHANGELOG.md +51 -1
- package/README.md +50 -14
- package/dist/context/context.api.json +13 -13
- package/dist/declarative/declarative.api.json +654 -15
- package/dist/di/di.api.json +15 -15
- package/dist/dts/__test__/helpers.d.ts +6 -0
- package/dist/dts/__test__/setup-node.d.ts +0 -0
- package/dist/dts/binding/binding.d.ts +15 -5
- package/dist/dts/binding/one-time.d.ts +1 -1
- package/dist/dts/binding/one-way.d.ts +1 -1
- package/dist/dts/binding/signal.d.ts +1 -1
- package/dist/dts/binding/two-way.d.ts +1 -1
- package/dist/dts/components/attributes.d.ts +1 -1
- package/dist/dts/components/enable-hydration.d.ts +22 -2
- package/dist/dts/components/fast-definitions.d.ts +7 -4
- package/dist/dts/components/fast-element.d.ts +42 -12
- package/dist/dts/components/hydration-tracker.d.ts +47 -4
- package/dist/dts/components/hydration.d.ts +5 -0
- package/dist/dts/context.d.ts +7 -7
- package/dist/dts/declarative/debug.d.ts +2 -3
- package/dist/dts/declarative/index.d.ts +3 -2
- package/dist/dts/declarative/interfaces.d.ts +1 -2
- package/dist/dts/declarative/template.d.ts +2 -1
- package/dist/dts/declarative/utilities.d.ts +50 -4
- package/dist/dts/di/di.d.ts +6 -6
- package/dist/dts/dom-policy.d.ts +22 -4
- package/dist/dts/dom.d.ts +4 -16
- package/dist/dts/hydration/diagnostics.d.ts +93 -0
- package/dist/dts/hydration/hydration-debugger.d.ts +35 -0
- package/dist/dts/hydration/messages.d.ts +62 -0
- package/dist/dts/hydration/target-builder.d.ts +26 -1
- package/dist/dts/hydration.d.ts +7 -3
- package/dist/dts/index.d.ts +7 -3
- package/dist/dts/interfaces.d.ts +1 -0
- package/dist/dts/observation/observable.d.ts +3 -3
- package/dist/dts/platform.d.ts +20 -4
- package/dist/dts/registry.d.ts +1 -0
- package/dist/dts/templating/children.d.ts +1 -1
- package/dist/dts/templating/compiler.d.ts +1 -1
- package/dist/dts/templating/html-binding-directive.d.ts +6 -2
- package/dist/dts/templating/html-directive.d.ts +2 -1
- package/dist/dts/templating/hydration-view.d.ts +24 -3
- package/dist/dts/templating/ref.d.ts +1 -1
- package/dist/dts/templating/render.d.ts +2 -2
- package/dist/dts/templating/repeat.d.ts +1 -1
- package/dist/dts/templating/slotted.d.ts +1 -1
- package/dist/dts/templating/template.d.ts +5 -5
- package/dist/dts/templating/when.d.ts +1 -1
- package/dist/dts/testing/fakes.d.ts +4 -4
- package/dist/esm/__test__/helpers.js +22 -0
- package/dist/esm/__test__/setup-node.js +18 -0
- package/dist/esm/binding/two-way.js +1 -2
- package/dist/esm/components/attributes.js +12 -8
- package/dist/esm/components/element-controller.js +11 -6
- package/dist/esm/components/enable-hydration.js +27 -3
- package/dist/esm/components/fast-definitions.js +19 -18
- package/dist/esm/components/hydration-tracker.js +34 -5
- package/dist/esm/components/hydration.js +85 -6
- package/dist/esm/debug.js +1 -0
- package/dist/esm/declarative/attribute-map.js +2 -1
- package/dist/esm/declarative/debug.js +0 -1
- package/dist/esm/declarative/index.js +1 -0
- package/dist/esm/declarative/interfaces.js +0 -1
- package/dist/esm/declarative/observer-map-utilities.js +58 -55
- package/dist/esm/declarative/template-bridge.js +4 -14
- package/dist/esm/declarative/template.js +4 -3
- package/dist/esm/declarative/utilities.js +236 -1
- package/dist/esm/di/di.js +2 -1
- package/dist/esm/dom-policy.js +33 -4
- package/dist/esm/hydration/diagnostics.js +50 -0
- package/dist/esm/hydration/hydration-debugger.js +112 -0
- package/dist/esm/hydration/messages.js +84 -0
- package/dist/esm/hydration/target-builder.js +65 -19
- package/dist/esm/hydration.js +3 -1
- package/dist/esm/index.js +6 -2
- package/dist/esm/interfaces.js +1 -0
- package/dist/esm/metadata.js +2 -8
- package/dist/esm/observation/notifier.js +2 -4
- package/dist/esm/registry.js +1 -0
- package/dist/esm/templating/html-binding-directive.js +1 -1
- package/dist/esm/templating/hydration-view.js +20 -27
- package/dist/esm/templating/render.js +39 -18
- package/dist/esm/templating/repeat.js +51 -17
- package/dist/esm/templating/view.js +1 -1
- package/dist/esm/testing/fixture.js +2 -2
- package/dist/esm/testing/timeout.js +2 -2
- package/dist/fast-element.api.json +1329 -99
- package/dist/fast-element.d.ts +147 -66
- package/dist/fast-element.debug.js +392 -99
- package/dist/fast-element.debug.min.js +2 -2
- package/dist/fast-element.js +392 -99
- package/dist/fast-element.min.js +2 -2
- package/dist/fast-element.untrimmed.d.ts +133 -70
- package/dist/hydration/hydration.api.json +1280 -57
- package/dist/styles/styles.api.json +1 -1
- package/package.json +21 -9
- package/ARCHITECTURE_FASTELEMENT.md +0 -63
- package/ARCHITECTURE_HTML_TAGGED_TEMPLATE_LITERAL.md +0 -36
- package/ARCHITECTURE_INTRO.md +0 -10
- package/ARCHITECTURE_OVERVIEW.md +0 -52
- package/ARCHITECTURE_UPDATES.md +0 -11
- package/CHANGELOG.json +0 -2275
- package/DECLARATIVE_DESIGN.md +0 -806
- package/DECLARATIVE_HTML.md +0 -470
- package/DECLARATIVE_MIGRATION.md +0 -215
- package/DECLARATIVE_RENDERING.md +0 -530
- package/DECLARATIVE_RENDERING_LIFECYCLE.md +0 -288
- package/DECLARATIVE_SCHEMA_OBSERVER_MAP.md +0 -489
- package/DESIGN.md +0 -615
- package/MIGRATION.md +0 -387
- package/SIZES.md +0 -25
- package/api-extractor.arrays.json +0 -15
- package/api-extractor.context.json +0 -15
- package/api-extractor.declarative.json +0 -15
- package/api-extractor.di.json +0 -15
- package/api-extractor.hydration.json +0 -15
- package/api-extractor.styles.json +0 -15
- package/biome.json +0 -4
- package/docs/ACKNOWLEDGEMENTS.md +0 -12
- package/docs/api-report.api.md +0 -1299
- package/docs/arrays/api-report.api.md +0 -114
- package/docs/context/api-report.api.md +0 -69
- package/docs/declarative/api-report.api.md +0 -397
- package/docs/di/api-report.api.md +0 -315
- package/docs/fast-element-2-changes.md +0 -15
- package/docs/hydration/api-report.api.md +0 -285
- package/docs/styles/api-report.api.md +0 -135
- package/playwright.config.ts +0 -26
- package/playwright.declarative.config.ts +0 -26
- package/playwright.declarative.webui.config.ts +0 -20
- package/scripts/declarative/build-fixtures-with-webui.js +0 -135
- package/scripts/declarative/build-fixtures.js +0 -49
- package/scripts/declarative/build-fixtures.utilities.js +0 -101
- package/scripts/measure-sizes.js +0 -219
- package/scripts/run-api-extractor.js +0 -70
- package/test/declarative/fixtures/README.md +0 -72
- package/test/declarative/fixtures/WRITING_FIXTURES.md +0 -330
- package/test/declarative/fixtures/bindings/README.md +0 -12
- package/test/declarative/fixtures/bindings/attribute/entry.html +0 -13
- package/test/declarative/fixtures/bindings/attribute/fast-build.config.json +0 -6
- package/test/declarative/fixtures/bindings/attribute/index.html +0 -25
- package/test/declarative/fixtures/bindings/attribute/main.ts +0 -41
- package/test/declarative/fixtures/bindings/attribute/state.json +0 -8
- package/test/declarative/fixtures/bindings/attribute/templates.html +0 -11
- package/test/declarative/fixtures/bindings/content/entry.html +0 -12
- package/test/declarative/fixtures/bindings/content/fast-build.config.json +0 -6
- package/test/declarative/fixtures/bindings/content/index.html +0 -19
- package/test/declarative/fixtures/bindings/content/main.ts +0 -27
- package/test/declarative/fixtures/bindings/content/state.json +0 -4
- package/test/declarative/fixtures/bindings/content/templates.html +0 -6
- package/test/declarative/fixtures/bindings/dot-syntax/entry.html +0 -11
- package/test/declarative/fixtures/bindings/dot-syntax/fast-build.config.json +0 -6
- package/test/declarative/fixtures/bindings/dot-syntax/index.html +0 -47
- package/test/declarative/fixtures/bindings/dot-syntax/main.ts +0 -59
- package/test/declarative/fixtures/bindings/dot-syntax/state.json +0 -16
- package/test/declarative/fixtures/bindings/dot-syntax/templates.html +0 -17
- package/test/declarative/fixtures/bindings/event/entry.html +0 -11
- package/test/declarative/fixtures/bindings/event/fast-build.config.json +0 -6
- package/test/declarative/fixtures/bindings/event/index.html +0 -43
- package/test/declarative/fixtures/bindings/event/main.ts +0 -43
- package/test/declarative/fixtures/bindings/event/state.json +0 -3
- package/test/declarative/fixtures/bindings/event/templates.html +0 -18
- package/test/declarative/fixtures/bindings/host/entry.html +0 -40
- package/test/declarative/fixtures/bindings/host/fast-build.config.json +0 -6
- package/test/declarative/fixtures/bindings/host/index.html +0 -96
- package/test/declarative/fixtures/bindings/host/main.ts +0 -222
- package/test/declarative/fixtures/bindings/host/state.json +0 -9
- package/test/declarative/fixtures/bindings/host/templates.html +0 -55
- package/test/declarative/fixtures/directives/README.md +0 -12
- package/test/declarative/fixtures/directives/children/entry.html +0 -11
- package/test/declarative/fixtures/directives/children/fast-build.config.json +0 -6
- package/test/declarative/fixtures/directives/children/index.html +0 -15
- package/test/declarative/fixtures/directives/children/main.ts +0 -22
- package/test/declarative/fixtures/directives/children/state.json +0 -3
- package/test/declarative/fixtures/directives/children/templates.html +0 -3
- package/test/declarative/fixtures/directives/ref/entry.html +0 -11
- package/test/declarative/fixtures/directives/ref/fast-build.config.json +0 -6
- package/test/declarative/fixtures/directives/ref/index.html +0 -15
- package/test/declarative/fixtures/directives/ref/main.ts +0 -17
- package/test/declarative/fixtures/directives/ref/state.json +0 -1
- package/test/declarative/fixtures/directives/ref/templates.html +0 -3
- package/test/declarative/fixtures/directives/repeat/entry.html +0 -21
- package/test/declarative/fixtures/directives/repeat/fast-build.config.json +0 -6
- package/test/declarative/fixtures/directives/repeat/index.html +0 -133
- package/test/declarative/fixtures/directives/repeat/main.ts +0 -110
- package/test/declarative/fixtures/directives/repeat/sprites.svg +0 -8
- package/test/declarative/fixtures/directives/repeat/state.json +0 -10
- package/test/declarative/fixtures/directives/repeat/templates.html +0 -75
- package/test/declarative/fixtures/directives/slotted/entry.html +0 -17
- package/test/declarative/fixtures/directives/slotted/fast-build.config.json +0 -6
- package/test/declarative/fixtures/directives/slotted/index.html +0 -27
- package/test/declarative/fixtures/directives/slotted/main.ts +0 -29
- package/test/declarative/fixtures/directives/slotted/state.json +0 -1
- package/test/declarative/fixtures/directives/slotted/templates.html +0 -7
- package/test/declarative/fixtures/directives/when/entry.html +0 -51
- package/test/declarative/fixtures/directives/when/fast-build.config.json +0 -6
- package/test/declarative/fixtures/directives/when/index.html +0 -136
- package/test/declarative/fixtures/directives/when/main.ts +0 -172
- package/test/declarative/fixtures/directives/when/state.json +0 -12
- package/test/declarative/fixtures/directives/when/templates.html +0 -75
- package/test/declarative/fixtures/ecosystem/README.md +0 -11
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/entry.html +0 -12
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/fast-build.config.json +0 -6
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/index.html +0 -20
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/main.ts +0 -68
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/state.json +0 -4
- package/test/declarative/fixtures/ecosystem/declarative-no-hydration/templates.html +0 -7
- package/test/declarative/fixtures/ecosystem/errors/entry.html +0 -12
- package/test/declarative/fixtures/ecosystem/errors/fast-build.config.json +0 -6
- package/test/declarative/fixtures/ecosystem/errors/index.html +0 -20
- package/test/declarative/fixtures/ecosystem/errors/main.ts +0 -17
- package/test/declarative/fixtures/ecosystem/errors/state.json +0 -1
- package/test/declarative/fixtures/ecosystem/errors/templates.html +0 -7
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/entry.html +0 -17
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/fast-build.config.json +0 -6
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/index.html +0 -56
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/main.ts +0 -134
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/state.json +0 -12
- package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/templates.html +0 -34
- package/test/declarative/fixtures/ecosystem/performance-metrics/entry.html +0 -25
- package/test/declarative/fixtures/ecosystem/performance-metrics/fast-build.config.json +0 -6
- package/test/declarative/fixtures/ecosystem/performance-metrics/fast-card.css +0 -10
- package/test/declarative/fixtures/ecosystem/performance-metrics/index.html +0 -181
- package/test/declarative/fixtures/ecosystem/performance-metrics/main.ts +0 -58
- package/test/declarative/fixtures/ecosystem/performance-metrics/state.json +0 -6
- package/test/declarative/fixtures/ecosystem/performance-metrics/templates.html +0 -15
- package/test/declarative/fixtures/extensions/README.md +0 -15
- package/test/declarative/fixtures/extensions/attribute-map/entry.html +0 -14
- package/test/declarative/fixtures/extensions/attribute-map/fast-build.config.json +0 -6
- package/test/declarative/fixtures/extensions/attribute-map/index.html +0 -31
- package/test/declarative/fixtures/extensions/attribute-map/main.ts +0 -40
- package/test/declarative/fixtures/extensions/attribute-map/state.json +0 -4
- package/test/declarative/fixtures/extensions/attribute-map/templates.html +0 -14
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/entry.html +0 -12
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/fast-build.config.json +0 -7
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/index.html +0 -25
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/main.ts +0 -31
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/state.json +0 -5
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/templates.html +0 -11
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/entry.html +0 -13
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/fast-build.config.json +0 -7
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/index.html +0 -23
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/main.ts +0 -37
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/state.json +0 -1
- package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/templates.html +0 -9
- package/test/declarative/fixtures/extensions/observer-map/entry.html +0 -15
- package/test/declarative/fixtures/extensions/observer-map/fast-build.config.json +0 -6
- package/test/declarative/fixtures/extensions/observer-map/index.html +0 -442
- package/test/declarative/fixtures/extensions/observer-map/main.ts +0 -482
- package/test/declarative/fixtures/extensions/observer-map/state.json +0 -158
- package/test/declarative/fixtures/extensions/observer-map/templates.html +0 -172
- package/test/declarative/fixtures/extensions/observer-map-config-object/entry.html +0 -16
- package/test/declarative/fixtures/extensions/observer-map-config-object/fast-build.config.json +0 -6
- package/test/declarative/fixtures/extensions/observer-map-config-object/index.html +0 -27
- package/test/declarative/fixtures/extensions/observer-map-config-object/main.ts +0 -53
- package/test/declarative/fixtures/extensions/observer-map-config-object/state.json +0 -9
- package/test/declarative/fixtures/extensions/observer-map-config-object/templates.html +0 -12
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/README.md +0 -98
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/entry.html +0 -156
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/fast-build.config.json +0 -6
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/index.html +0 -376
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/main.ts +0 -366
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/state.json +0 -69
- package/test/declarative/fixtures/extensions/observer-map-deep-merge/templates.html +0 -91
- package/test/declarative/fixtures/extensions/observer-map-properties/entry.html +0 -14
- package/test/declarative/fixtures/extensions/observer-map-properties/fast-build.config.json +0 -6
- package/test/declarative/fixtures/extensions/observer-map-properties/index.html +0 -110
- package/test/declarative/fixtures/extensions/observer-map-properties/main.ts +0 -175
- package/test/declarative/fixtures/extensions/observer-map-properties/state.json +0 -29
- package/test/declarative/fixtures/extensions/observer-map-properties/templates.html +0 -55
- package/test/declarative/fixtures/scenarios/README.md +0 -7
- package/test/declarative/fixtures/scenarios/nested-elements/entry.html +0 -16
- package/test/declarative/fixtures/scenarios/nested-elements/fast-build.config.json +0 -6
- package/test/declarative/fixtures/scenarios/nested-elements/index.html +0 -126
- package/test/declarative/fixtures/scenarios/nested-elements/main.ts +0 -214
- package/test/declarative/fixtures/scenarios/nested-elements/state.json +0 -10
- package/test/declarative/fixtures/scenarios/nested-elements/templates.html +0 -54
- package/test/declarative/index.html +0 -12
- package/test/declarative/vite.config.ts +0 -55
- package/test/declarative-main.ts +0 -6
- package/test/extension-subpaths-main.ts +0 -9
- package/test/index.html +0 -11
- package/test/main.ts +0 -109
- package/test/pure-declarative-main.ts +0 -1
- package/test/vite.config.ts +0 -19
- package/tsconfig.api-extractor.json +0 -6
|
@@ -1,172 +0,0 @@
|
|
|
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
|
-
});
|
|
@@ -1,75 +0,0 @@
|
|
|
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>
|
|
@@ -1,11 +0,0 @@
|
|
|
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. |
|
|
@@ -1,12 +0,0 @@
|
|
|
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>
|
|
@@ -1,20 +0,0 @@
|
|
|
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>
|
|
@@ -1,68 +0,0 @@
|
|
|
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;
|
|
@@ -1,12 +0,0 @@
|
|
|
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>
|
|
@@ -1,20 +0,0 @@
|
|
|
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>
|
|
@@ -1,17 +0,0 @@
|
|
|
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
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{}
|
|
@@ -1,7 +0,0 @@
|
|
|
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>
|
|
@@ -1,17 +0,0 @@
|
|
|
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>
|
|
@@ -1,56 +0,0 @@
|
|
|
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><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Hello<!--fe:/b--> World</template></simple-element>
|
|
9
|
-
<complex-element needs-hydration count="0"><template shadowrootmode="open" shadowroot="open"><div>
|
|
10
|
-
<h2><!--fe:b-->Complex<!--fe:/b--></h2>
|
|
11
|
-
<p>Count: <!--fe:b-->0<!--fe:/b--></p>
|
|
12
|
-
<nested-element label="Complex" data-fe="1"><template shadowrootmode="open" shadowroot="open"><span><!--fe:b-->Complex<!--fe:/b--></span></template></nested-element>
|
|
13
|
-
</div></template></complex-element>
|
|
14
|
-
<deferred-element needs-hydration defer-hydration><template shadowrootmode="open" shadowroot="open"><p>Status: <!--fe:b-->pending<!--fe:/b--></p></template></deferred-element>
|
|
15
|
-
<deferred-parent-element needs-hydration defer-hydration><template shadowrootmode="open" shadowroot="open"><section>
|
|
16
|
-
<p><!--fe:b-->Parent<!--fe:/b--></p>
|
|
17
|
-
<deferred-child-element label="Parent" data-fe="1"><template shadowrootmode="open" shadowroot="open"><span><!--fe:b-->Parent<!--fe:/b--></span></template></deferred-child-element>
|
|
18
|
-
</section></template></deferred-parent-element>
|
|
19
|
-
<f-template name="simple-element">
|
|
20
|
-
<template>{{message}} World</template>
|
|
21
|
-
</f-template>
|
|
22
|
-
|
|
23
|
-
<f-template name="complex-element">
|
|
24
|
-
<template>
|
|
25
|
-
<div>
|
|
26
|
-
<h2>{{title}}</h2>
|
|
27
|
-
<p>Count: {{count}}</p>
|
|
28
|
-
<nested-element label="{{title}}"></nested-element>
|
|
29
|
-
</div>
|
|
30
|
-
</template>
|
|
31
|
-
</f-template>
|
|
32
|
-
|
|
33
|
-
<f-template name="nested-element">
|
|
34
|
-
<template><span>{{label}}</span></template>
|
|
35
|
-
</f-template>
|
|
36
|
-
|
|
37
|
-
<f-template name="deferred-element">
|
|
38
|
-
<template><p>Status: {{status}}</p></template>
|
|
39
|
-
</f-template>
|
|
40
|
-
|
|
41
|
-
<f-template name="deferred-parent-element">
|
|
42
|
-
<template>
|
|
43
|
-
<section>
|
|
44
|
-
<p>{{label}}</p>
|
|
45
|
-
<deferred-child-element label="{{label}}"></deferred-child-element>
|
|
46
|
-
</section>
|
|
47
|
-
</template>
|
|
48
|
-
</f-template>
|
|
49
|
-
|
|
50
|
-
<f-template name="deferred-child-element">
|
|
51
|
-
<template><span>{{label}}</span></template>
|
|
52
|
-
</f-template>
|
|
53
|
-
|
|
54
|
-
<script type="module" src="./main.ts"></script>
|
|
55
|
-
</body>
|
|
56
|
-
</html>
|