@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.
Files changed (286) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/README.md +50 -14
  3. package/dist/context/context.api.json +13 -13
  4. package/dist/declarative/declarative.api.json +654 -15
  5. package/dist/di/di.api.json +15 -15
  6. package/dist/dts/__test__/helpers.d.ts +6 -0
  7. package/dist/dts/__test__/setup-node.d.ts +0 -0
  8. package/dist/dts/binding/binding.d.ts +15 -5
  9. package/dist/dts/binding/one-time.d.ts +1 -1
  10. package/dist/dts/binding/one-way.d.ts +1 -1
  11. package/dist/dts/binding/signal.d.ts +1 -1
  12. package/dist/dts/binding/two-way.d.ts +1 -1
  13. package/dist/dts/components/attributes.d.ts +1 -1
  14. package/dist/dts/components/enable-hydration.d.ts +22 -2
  15. package/dist/dts/components/fast-definitions.d.ts +7 -4
  16. package/dist/dts/components/fast-element.d.ts +42 -12
  17. package/dist/dts/components/hydration-tracker.d.ts +47 -4
  18. package/dist/dts/components/hydration.d.ts +5 -0
  19. package/dist/dts/context.d.ts +7 -7
  20. package/dist/dts/declarative/debug.d.ts +2 -3
  21. package/dist/dts/declarative/index.d.ts +3 -2
  22. package/dist/dts/declarative/interfaces.d.ts +1 -2
  23. package/dist/dts/declarative/template.d.ts +2 -1
  24. package/dist/dts/declarative/utilities.d.ts +50 -4
  25. package/dist/dts/di/di.d.ts +6 -6
  26. package/dist/dts/dom-policy.d.ts +22 -4
  27. package/dist/dts/dom.d.ts +4 -16
  28. package/dist/dts/hydration/diagnostics.d.ts +93 -0
  29. package/dist/dts/hydration/hydration-debugger.d.ts +35 -0
  30. package/dist/dts/hydration/messages.d.ts +62 -0
  31. package/dist/dts/hydration/target-builder.d.ts +26 -1
  32. package/dist/dts/hydration.d.ts +7 -3
  33. package/dist/dts/index.d.ts +7 -3
  34. package/dist/dts/interfaces.d.ts +1 -0
  35. package/dist/dts/observation/observable.d.ts +3 -3
  36. package/dist/dts/platform.d.ts +20 -4
  37. package/dist/dts/registry.d.ts +1 -0
  38. package/dist/dts/templating/children.d.ts +1 -1
  39. package/dist/dts/templating/compiler.d.ts +1 -1
  40. package/dist/dts/templating/html-binding-directive.d.ts +6 -2
  41. package/dist/dts/templating/html-directive.d.ts +2 -1
  42. package/dist/dts/templating/hydration-view.d.ts +24 -3
  43. package/dist/dts/templating/ref.d.ts +1 -1
  44. package/dist/dts/templating/render.d.ts +2 -2
  45. package/dist/dts/templating/repeat.d.ts +1 -1
  46. package/dist/dts/templating/slotted.d.ts +1 -1
  47. package/dist/dts/templating/template.d.ts +5 -5
  48. package/dist/dts/templating/when.d.ts +1 -1
  49. package/dist/dts/testing/fakes.d.ts +4 -4
  50. package/dist/esm/__test__/helpers.js +22 -0
  51. package/dist/esm/__test__/setup-node.js +18 -0
  52. package/dist/esm/binding/two-way.js +1 -2
  53. package/dist/esm/components/attributes.js +12 -8
  54. package/dist/esm/components/element-controller.js +11 -6
  55. package/dist/esm/components/enable-hydration.js +27 -3
  56. package/dist/esm/components/fast-definitions.js +19 -18
  57. package/dist/esm/components/hydration-tracker.js +34 -5
  58. package/dist/esm/components/hydration.js +85 -6
  59. package/dist/esm/debug.js +1 -0
  60. package/dist/esm/declarative/attribute-map.js +2 -1
  61. package/dist/esm/declarative/debug.js +0 -1
  62. package/dist/esm/declarative/index.js +1 -0
  63. package/dist/esm/declarative/interfaces.js +0 -1
  64. package/dist/esm/declarative/observer-map-utilities.js +58 -55
  65. package/dist/esm/declarative/template-bridge.js +4 -14
  66. package/dist/esm/declarative/template.js +4 -3
  67. package/dist/esm/declarative/utilities.js +236 -1
  68. package/dist/esm/di/di.js +2 -1
  69. package/dist/esm/dom-policy.js +33 -4
  70. package/dist/esm/hydration/diagnostics.js +50 -0
  71. package/dist/esm/hydration/hydration-debugger.js +112 -0
  72. package/dist/esm/hydration/messages.js +84 -0
  73. package/dist/esm/hydration/target-builder.js +65 -19
  74. package/dist/esm/hydration.js +3 -1
  75. package/dist/esm/index.js +6 -2
  76. package/dist/esm/interfaces.js +1 -0
  77. package/dist/esm/metadata.js +2 -8
  78. package/dist/esm/observation/notifier.js +2 -4
  79. package/dist/esm/registry.js +1 -0
  80. package/dist/esm/templating/html-binding-directive.js +1 -1
  81. package/dist/esm/templating/hydration-view.js +20 -27
  82. package/dist/esm/templating/render.js +39 -18
  83. package/dist/esm/templating/repeat.js +51 -17
  84. package/dist/esm/templating/view.js +1 -1
  85. package/dist/esm/testing/fixture.js +2 -2
  86. package/dist/esm/testing/timeout.js +2 -2
  87. package/dist/fast-element.api.json +1329 -99
  88. package/dist/fast-element.d.ts +147 -66
  89. package/dist/fast-element.debug.js +392 -99
  90. package/dist/fast-element.debug.min.js +2 -2
  91. package/dist/fast-element.js +392 -99
  92. package/dist/fast-element.min.js +2 -2
  93. package/dist/fast-element.untrimmed.d.ts +133 -70
  94. package/dist/hydration/hydration.api.json +1280 -57
  95. package/dist/styles/styles.api.json +1 -1
  96. package/package.json +21 -9
  97. package/ARCHITECTURE_FASTELEMENT.md +0 -63
  98. package/ARCHITECTURE_HTML_TAGGED_TEMPLATE_LITERAL.md +0 -36
  99. package/ARCHITECTURE_INTRO.md +0 -10
  100. package/ARCHITECTURE_OVERVIEW.md +0 -52
  101. package/ARCHITECTURE_UPDATES.md +0 -11
  102. package/CHANGELOG.json +0 -2275
  103. package/DECLARATIVE_DESIGN.md +0 -806
  104. package/DECLARATIVE_HTML.md +0 -470
  105. package/DECLARATIVE_MIGRATION.md +0 -215
  106. package/DECLARATIVE_RENDERING.md +0 -530
  107. package/DECLARATIVE_RENDERING_LIFECYCLE.md +0 -288
  108. package/DECLARATIVE_SCHEMA_OBSERVER_MAP.md +0 -489
  109. package/DESIGN.md +0 -615
  110. package/MIGRATION.md +0 -387
  111. package/SIZES.md +0 -25
  112. package/api-extractor.arrays.json +0 -15
  113. package/api-extractor.context.json +0 -15
  114. package/api-extractor.declarative.json +0 -15
  115. package/api-extractor.di.json +0 -15
  116. package/api-extractor.hydration.json +0 -15
  117. package/api-extractor.styles.json +0 -15
  118. package/biome.json +0 -4
  119. package/docs/ACKNOWLEDGEMENTS.md +0 -12
  120. package/docs/api-report.api.md +0 -1299
  121. package/docs/arrays/api-report.api.md +0 -114
  122. package/docs/context/api-report.api.md +0 -69
  123. package/docs/declarative/api-report.api.md +0 -397
  124. package/docs/di/api-report.api.md +0 -315
  125. package/docs/fast-element-2-changes.md +0 -15
  126. package/docs/hydration/api-report.api.md +0 -285
  127. package/docs/styles/api-report.api.md +0 -135
  128. package/playwright.config.ts +0 -26
  129. package/playwright.declarative.config.ts +0 -26
  130. package/playwright.declarative.webui.config.ts +0 -20
  131. package/scripts/declarative/build-fixtures-with-webui.js +0 -135
  132. package/scripts/declarative/build-fixtures.js +0 -49
  133. package/scripts/declarative/build-fixtures.utilities.js +0 -101
  134. package/scripts/measure-sizes.js +0 -219
  135. package/scripts/run-api-extractor.js +0 -70
  136. package/test/declarative/fixtures/README.md +0 -72
  137. package/test/declarative/fixtures/WRITING_FIXTURES.md +0 -330
  138. package/test/declarative/fixtures/bindings/README.md +0 -12
  139. package/test/declarative/fixtures/bindings/attribute/entry.html +0 -13
  140. package/test/declarative/fixtures/bindings/attribute/fast-build.config.json +0 -6
  141. package/test/declarative/fixtures/bindings/attribute/index.html +0 -25
  142. package/test/declarative/fixtures/bindings/attribute/main.ts +0 -41
  143. package/test/declarative/fixtures/bindings/attribute/state.json +0 -8
  144. package/test/declarative/fixtures/bindings/attribute/templates.html +0 -11
  145. package/test/declarative/fixtures/bindings/content/entry.html +0 -12
  146. package/test/declarative/fixtures/bindings/content/fast-build.config.json +0 -6
  147. package/test/declarative/fixtures/bindings/content/index.html +0 -19
  148. package/test/declarative/fixtures/bindings/content/main.ts +0 -27
  149. package/test/declarative/fixtures/bindings/content/state.json +0 -4
  150. package/test/declarative/fixtures/bindings/content/templates.html +0 -6
  151. package/test/declarative/fixtures/bindings/dot-syntax/entry.html +0 -11
  152. package/test/declarative/fixtures/bindings/dot-syntax/fast-build.config.json +0 -6
  153. package/test/declarative/fixtures/bindings/dot-syntax/index.html +0 -47
  154. package/test/declarative/fixtures/bindings/dot-syntax/main.ts +0 -59
  155. package/test/declarative/fixtures/bindings/dot-syntax/state.json +0 -16
  156. package/test/declarative/fixtures/bindings/dot-syntax/templates.html +0 -17
  157. package/test/declarative/fixtures/bindings/event/entry.html +0 -11
  158. package/test/declarative/fixtures/bindings/event/fast-build.config.json +0 -6
  159. package/test/declarative/fixtures/bindings/event/index.html +0 -43
  160. package/test/declarative/fixtures/bindings/event/main.ts +0 -43
  161. package/test/declarative/fixtures/bindings/event/state.json +0 -3
  162. package/test/declarative/fixtures/bindings/event/templates.html +0 -18
  163. package/test/declarative/fixtures/bindings/host/entry.html +0 -40
  164. package/test/declarative/fixtures/bindings/host/fast-build.config.json +0 -6
  165. package/test/declarative/fixtures/bindings/host/index.html +0 -96
  166. package/test/declarative/fixtures/bindings/host/main.ts +0 -222
  167. package/test/declarative/fixtures/bindings/host/state.json +0 -9
  168. package/test/declarative/fixtures/bindings/host/templates.html +0 -55
  169. package/test/declarative/fixtures/directives/README.md +0 -12
  170. package/test/declarative/fixtures/directives/children/entry.html +0 -11
  171. package/test/declarative/fixtures/directives/children/fast-build.config.json +0 -6
  172. package/test/declarative/fixtures/directives/children/index.html +0 -15
  173. package/test/declarative/fixtures/directives/children/main.ts +0 -22
  174. package/test/declarative/fixtures/directives/children/state.json +0 -3
  175. package/test/declarative/fixtures/directives/children/templates.html +0 -3
  176. package/test/declarative/fixtures/directives/ref/entry.html +0 -11
  177. package/test/declarative/fixtures/directives/ref/fast-build.config.json +0 -6
  178. package/test/declarative/fixtures/directives/ref/index.html +0 -15
  179. package/test/declarative/fixtures/directives/ref/main.ts +0 -17
  180. package/test/declarative/fixtures/directives/ref/state.json +0 -1
  181. package/test/declarative/fixtures/directives/ref/templates.html +0 -3
  182. package/test/declarative/fixtures/directives/repeat/entry.html +0 -21
  183. package/test/declarative/fixtures/directives/repeat/fast-build.config.json +0 -6
  184. package/test/declarative/fixtures/directives/repeat/index.html +0 -133
  185. package/test/declarative/fixtures/directives/repeat/main.ts +0 -110
  186. package/test/declarative/fixtures/directives/repeat/sprites.svg +0 -8
  187. package/test/declarative/fixtures/directives/repeat/state.json +0 -10
  188. package/test/declarative/fixtures/directives/repeat/templates.html +0 -75
  189. package/test/declarative/fixtures/directives/slotted/entry.html +0 -17
  190. package/test/declarative/fixtures/directives/slotted/fast-build.config.json +0 -6
  191. package/test/declarative/fixtures/directives/slotted/index.html +0 -27
  192. package/test/declarative/fixtures/directives/slotted/main.ts +0 -29
  193. package/test/declarative/fixtures/directives/slotted/state.json +0 -1
  194. package/test/declarative/fixtures/directives/slotted/templates.html +0 -7
  195. package/test/declarative/fixtures/directives/when/entry.html +0 -51
  196. package/test/declarative/fixtures/directives/when/fast-build.config.json +0 -6
  197. package/test/declarative/fixtures/directives/when/index.html +0 -136
  198. package/test/declarative/fixtures/directives/when/main.ts +0 -172
  199. package/test/declarative/fixtures/directives/when/state.json +0 -12
  200. package/test/declarative/fixtures/directives/when/templates.html +0 -75
  201. package/test/declarative/fixtures/ecosystem/README.md +0 -11
  202. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/entry.html +0 -12
  203. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/fast-build.config.json +0 -6
  204. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/index.html +0 -20
  205. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/main.ts +0 -68
  206. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/state.json +0 -4
  207. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/templates.html +0 -7
  208. package/test/declarative/fixtures/ecosystem/errors/entry.html +0 -12
  209. package/test/declarative/fixtures/ecosystem/errors/fast-build.config.json +0 -6
  210. package/test/declarative/fixtures/ecosystem/errors/index.html +0 -20
  211. package/test/declarative/fixtures/ecosystem/errors/main.ts +0 -17
  212. package/test/declarative/fixtures/ecosystem/errors/state.json +0 -1
  213. package/test/declarative/fixtures/ecosystem/errors/templates.html +0 -7
  214. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/entry.html +0 -17
  215. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/fast-build.config.json +0 -6
  216. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/index.html +0 -56
  217. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/main.ts +0 -134
  218. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/state.json +0 -12
  219. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/templates.html +0 -34
  220. package/test/declarative/fixtures/ecosystem/performance-metrics/entry.html +0 -25
  221. package/test/declarative/fixtures/ecosystem/performance-metrics/fast-build.config.json +0 -6
  222. package/test/declarative/fixtures/ecosystem/performance-metrics/fast-card.css +0 -10
  223. package/test/declarative/fixtures/ecosystem/performance-metrics/index.html +0 -181
  224. package/test/declarative/fixtures/ecosystem/performance-metrics/main.ts +0 -58
  225. package/test/declarative/fixtures/ecosystem/performance-metrics/state.json +0 -6
  226. package/test/declarative/fixtures/ecosystem/performance-metrics/templates.html +0 -15
  227. package/test/declarative/fixtures/extensions/README.md +0 -15
  228. package/test/declarative/fixtures/extensions/attribute-map/entry.html +0 -14
  229. package/test/declarative/fixtures/extensions/attribute-map/fast-build.config.json +0 -6
  230. package/test/declarative/fixtures/extensions/attribute-map/index.html +0 -31
  231. package/test/declarative/fixtures/extensions/attribute-map/main.ts +0 -40
  232. package/test/declarative/fixtures/extensions/attribute-map/state.json +0 -4
  233. package/test/declarative/fixtures/extensions/attribute-map/templates.html +0 -14
  234. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/entry.html +0 -12
  235. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/fast-build.config.json +0 -7
  236. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/index.html +0 -25
  237. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/main.ts +0 -31
  238. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/state.json +0 -5
  239. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/templates.html +0 -11
  240. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/entry.html +0 -13
  241. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/fast-build.config.json +0 -7
  242. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/index.html +0 -23
  243. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/main.ts +0 -37
  244. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/state.json +0 -1
  245. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/templates.html +0 -9
  246. package/test/declarative/fixtures/extensions/observer-map/entry.html +0 -15
  247. package/test/declarative/fixtures/extensions/observer-map/fast-build.config.json +0 -6
  248. package/test/declarative/fixtures/extensions/observer-map/index.html +0 -442
  249. package/test/declarative/fixtures/extensions/observer-map/main.ts +0 -482
  250. package/test/declarative/fixtures/extensions/observer-map/state.json +0 -158
  251. package/test/declarative/fixtures/extensions/observer-map/templates.html +0 -172
  252. package/test/declarative/fixtures/extensions/observer-map-config-object/entry.html +0 -16
  253. package/test/declarative/fixtures/extensions/observer-map-config-object/fast-build.config.json +0 -6
  254. package/test/declarative/fixtures/extensions/observer-map-config-object/index.html +0 -27
  255. package/test/declarative/fixtures/extensions/observer-map-config-object/main.ts +0 -53
  256. package/test/declarative/fixtures/extensions/observer-map-config-object/state.json +0 -9
  257. package/test/declarative/fixtures/extensions/observer-map-config-object/templates.html +0 -12
  258. package/test/declarative/fixtures/extensions/observer-map-deep-merge/README.md +0 -98
  259. package/test/declarative/fixtures/extensions/observer-map-deep-merge/entry.html +0 -156
  260. package/test/declarative/fixtures/extensions/observer-map-deep-merge/fast-build.config.json +0 -6
  261. package/test/declarative/fixtures/extensions/observer-map-deep-merge/index.html +0 -376
  262. package/test/declarative/fixtures/extensions/observer-map-deep-merge/main.ts +0 -366
  263. package/test/declarative/fixtures/extensions/observer-map-deep-merge/state.json +0 -69
  264. package/test/declarative/fixtures/extensions/observer-map-deep-merge/templates.html +0 -91
  265. package/test/declarative/fixtures/extensions/observer-map-properties/entry.html +0 -14
  266. package/test/declarative/fixtures/extensions/observer-map-properties/fast-build.config.json +0 -6
  267. package/test/declarative/fixtures/extensions/observer-map-properties/index.html +0 -110
  268. package/test/declarative/fixtures/extensions/observer-map-properties/main.ts +0 -175
  269. package/test/declarative/fixtures/extensions/observer-map-properties/state.json +0 -29
  270. package/test/declarative/fixtures/extensions/observer-map-properties/templates.html +0 -55
  271. package/test/declarative/fixtures/scenarios/README.md +0 -7
  272. package/test/declarative/fixtures/scenarios/nested-elements/entry.html +0 -16
  273. package/test/declarative/fixtures/scenarios/nested-elements/fast-build.config.json +0 -6
  274. package/test/declarative/fixtures/scenarios/nested-elements/index.html +0 -126
  275. package/test/declarative/fixtures/scenarios/nested-elements/main.ts +0 -214
  276. package/test/declarative/fixtures/scenarios/nested-elements/state.json +0 -10
  277. package/test/declarative/fixtures/scenarios/nested-elements/templates.html +0 -54
  278. package/test/declarative/index.html +0 -12
  279. package/test/declarative/vite.config.ts +0 -55
  280. package/test/declarative-main.ts +0 -6
  281. package/test/extension-subpaths-main.ts +0 -9
  282. package/test/index.html +0 -11
  283. package/test/main.ts +0 -109
  284. package/test/pure-declarative-main.ts +0 -1
  285. package/test/vite.config.ts +0 -19
  286. 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,12 +0,0 @@
1
- {
2
- "error": false,
3
- "showprogress": true,
4
- "enablecontinue": false,
5
- "showProgress": true,
6
- "enableContinue": false,
7
- "strings": {
8
- "errorMessage": "Error occurred",
9
- "continueButtonText": "Continue",
10
- "retryButtonText": "Retry"
11
- }
12
- }
@@ -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,6 +0,0 @@
1
- {
2
- "entry": "entry.html",
3
- "state": "state.json",
4
- "output": "index.html",
5
- "templates": "templates.html"
6
- }
@@ -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,4 +0,0 @@
1
- {
2
- "greeting": "Hi",
3
- "count": 0
4
- }
@@ -1,7 +0,0 @@
1
- <f-template name="basic-element">
2
- <template>{{greeting}} World</template>
3
- </f-template>
4
-
5
- <f-template name="counter-element">
6
- <template><span>Count: {{count}}</span></template>
7
- </f-template>
@@ -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,6 +0,0 @@
1
- {
2
- "entry": "entry.html",
3
- "state": "state.json",
4
- "output": "index.html",
5
- "templates": "templates.html"
6
- }
@@ -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,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,6 +0,0 @@
1
- {
2
- "entry": "entry.html",
3
- "state": "state.json",
4
- "output": "index.html",
5
- "templates": "templates.html"
6
- }
@@ -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>