@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,12 +0,0 @@
1
- # Bindings
2
-
3
- Fixtures for testing the various binding types supported by FAST Element's
4
- declarative templates.
5
-
6
- | Fixture | Description |
7
- |---|---|
8
- | `attribute` | Attribute binding via `@attr` and `@observable` decorators on custom elements. |
9
- | `content` | Content binding with `{{text}}` for escaped HTML and `{{{html}}}` for unescaped HTML injection. |
10
- | `dot-syntax` | Dot-notation path access in bindings (e.g., `{{user.name}}`, `{{user.address.city}}`). |
11
- | `event` | Event binding syntax with `@click="{handleClick()}"`, DOM event access via `$e`, and context access via `$c`. |
12
- | `host` | Host element bindings for applying styles and attributes to the host element. |
@@ -1,13 +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 type="{{type}}"></test-element>
9
- <test-element-property></test-element-property>
10
- <test-element-expression></test-element-expression>
11
- <script type="module" src="./main.ts"></script>
12
- </body>
13
- </html>
@@ -1,6 +0,0 @@
1
- {
2
- "entry": "entry.html",
3
- "state": "state.json",
4
- "output": "index.html",
5
- "templates": "templates.html"
6
- }
@@ -1,25 +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 type="checkbox"><template shadowrootmode="open" shadowroot="open"><input type="checkbox" disabled data-fe="1"></template></test-element>
9
- <test-element-property><template shadowrootmode="open" shadowroot="open"><input type="checkbox" disabled data-fe="1"></template></test-element-property>
10
- <test-element-expression><template shadowrootmode="open" shadowroot="open"><input disabled type="button" data-fe="1"></template></test-element-expression>
11
- <f-template name="test-element">
12
- <template> <input type="{{type}}" disabled> </template>
13
- </f-template>
14
- <f-template name="test-element-property">
15
- <template> <input type="checkbox" ?disabled="{{!isEnabled}}"> </template>
16
- </f-template>
17
- <f-template name="test-element-expression">
18
- <template>
19
- <input ?disabled="{{activeGroup == currentGroup}}" type="button">
20
- </template>
21
- </f-template>
22
-
23
- <script type="module" src="./main.ts"></script>
24
- </body>
25
- </html>
@@ -1,41 +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 TestElement extends FASTElement {
8
- @attr
9
- type: string = "radio";
10
- }
11
- TestElement.define({
12
- name: "test-element",
13
- template: declarativeTemplate(),
14
- });
15
-
16
- class TestElementProperty extends FASTElement {
17
- @observable
18
- isEnabled: boolean = false;
19
- }
20
- TestElementProperty.define({
21
- name: "test-element-property",
22
- template: declarativeTemplate(),
23
- });
24
-
25
- class TestElementExpression extends FASTElement {
26
- @attr({ attribute: "active-group" })
27
- activeGroup: string = "";
28
-
29
- @attr({ attribute: "current-group" })
30
- currentGroup: string = "";
31
- }
32
- TestElementExpression.define({
33
- name: "test-element-expression",
34
- template: declarativeTemplate(),
35
- });
36
-
37
- enableHydration({
38
- hydrationComplete() {
39
- (window as any).hydrationCompleted = true;
40
- },
41
- });
@@ -1,8 +0,0 @@
1
- {
2
- "type": "checkbox",
3
- "active-group": "work",
4
- "current-group": "work",
5
- "activeGroup": "work",
6
- "currentGroup": "work",
7
- "isEnabled": false
8
- }
@@ -1,11 +0,0 @@
1
- <f-template name="test-element">
2
- <template> <input type="{{type}}" disabled> </template>
3
- </f-template>
4
- <f-template name="test-element-property">
5
- <template> <input type="checkbox" ?disabled="{{!isEnabled}}"> </template>
6
- </f-template>
7
- <f-template name="test-element-expression">
8
- <template>
9
- <input ?disabled="{{activeGroup == currentGroup}}" type="button">
10
- </template>
11
- </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 text="{{text}}"></test-element>
9
- <test-element-unescaped html="{{html}}"></test-element-unescaped>
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,19 +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 text="Hello world"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Hello world<!--fe:/b--></template></test-element>
9
- <test-element-unescaped html="&lt;p&gt;Hello world&lt;/p&gt;"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><p>Hello world</p><!--fe:/b--></template></test-element-unescaped>
10
- <f-template name="test-element">
11
- <template>{{text}}</template>
12
- </f-template>
13
- <f-template name="test-element-unescaped">
14
- <template>{{{html}}}</template>
15
- </f-template>
16
-
17
- <script type="module" src="./main.ts"></script>
18
- </body>
19
- </html>
@@ -1,27 +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
-
6
- class TestElement extends FASTElement {
7
- @attr
8
- text: string = "Hello";
9
- }
10
- TestElement.define({
11
- name: "test-element",
12
- template: declarativeTemplate(),
13
- });
14
-
15
- class TestElementUnescaped extends FASTElement {
16
- public html = `<p>Hello world</p>`;
17
- }
18
- TestElementUnescaped.define({
19
- name: "test-element-unescaped",
20
- template: declarativeTemplate(),
21
- });
22
-
23
- enableHydration({
24
- hydrationComplete() {
25
- (window as any).hydrationCompleted = true;
26
- },
27
- });
@@ -1,4 +0,0 @@
1
- {
2
- "text": "Hello world",
3
- "html": "<p>Hello world</p>"
4
- }
@@ -1,6 +0,0 @@
1
- <f-template name="test-element">
2
- <template>{{text}}</template>
3
- </f-template>
4
- <f-template name="test-element-unescaped">
5
- <template>{{{html}}}</template>
6
- </f-template>
@@ -1,11 +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></test-element>
9
- <script type="module" src="./main.ts"></script>
10
- </body>
11
- </html>
@@ -1,6 +0,0 @@
1
- {
2
- "entry": "entry.html",
3
- "state": "state.json",
4
- "output": "index.html",
5
- "templates": "templates.html"
6
- }
@@ -1,47 +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><template shadowrootmode="open" shadowroot="open"><span><!--fe:b-->bar<!--fe:/b--></span>
9
- <span><!--fe:b--><!--fe:/b--></span>
10
- <span><!--fe:b-->FOO<!--fe:/b--></span>
11
- <button data-fe="1">Set b</button>
12
- <button data-fe="1">Set a.b1</button>
13
- <button data-fe="1">Set a.b2.c</button>
14
- <!--fe:b-->
15
- <!--fe:b--><!--fe:r-->
16
- <!--fe:b-->
17
- <div><!--fe:b-->Item 1<!--fe:/b--></div>
18
- <!--fe:/b-->
19
- <!--fe:/r--><!--fe:r-->
20
- <!--fe:b-->
21
- <div><!--fe:b-->Item 2<!--fe:/b--></div>
22
- <!--fe:/b-->
23
- <!--fe:/r--><!--fe:r-->
24
- <!--fe:b--><!--fe:/b-->
25
- <!--fe:/r--><!--fe:/b-->
26
- <!--fe:/b--></template></test-element>
27
- <f-template name="test-element">
28
- <template>
29
- <span>{{object.b}}</span>
30
- <span>{{object.a.b1}}</span>
31
- <span>{{object.a.b2.c}}</span>
32
- <button @click="{handleBClick()}">Set b</button>
33
- <button @click="{handleAB1Click()}">Set a.b1</button>
34
- <button @click="{handleAB2CClick()}">Set a.b2.c</button>
35
- <f-when value="{{object.c}}">
36
- <f-repeat value="{{item in object.c}}">
37
- <f-when value="{{item.name && item.status == 'active'}}">
38
- <div>{{item.name}}</div>
39
- </f-when>
40
- </f-repeat>
41
- </f-when>
42
- </template>
43
- </f-template>
44
-
45
- <script type="module" src="./main.ts"></script>
46
- </body>
47
- </html>
@@ -1,59 +0,0 @@
1
- import { declarativeTemplate } from "@microsoft/fast-element/declarative.js";
2
- import { FASTElement } from "@microsoft/fast-element/fast-element.js";
3
- import { enableHydration } from "@microsoft/fast-element/hydration.js";
4
- import { observerMap } from "@microsoft/fast-element/observer-map.js";
5
-
6
- class TestElement extends FASTElement {
7
- public object: any = {
8
- a: {
9
- b2: {
10
- c: "FOO",
11
- },
12
- },
13
- b: "bar",
14
- c: [
15
- {
16
- name: "Item 1",
17
- status: "active",
18
- },
19
- {
20
- name: "Item 2",
21
- status: "active",
22
- },
23
- {
24
- status: "active",
25
- },
26
- ],
27
- };
28
-
29
- public handleBClick = () => {
30
- this.object.b = "Hello";
31
- };
32
-
33
- public handleAB1Click = () => {
34
- if (this.object.a) {
35
- this.object.a.b1 = "World";
36
- } else {
37
- this.object.a = {
38
- b1: "World",
39
- };
40
- }
41
- };
42
-
43
- public handleAB2CClick = () => {
44
- this.object.a.b2.c = "Pluto";
45
- };
46
- }
47
- TestElement.define(
48
- {
49
- name: "test-element",
50
- template: declarativeTemplate(),
51
- },
52
- [observerMap()],
53
- );
54
-
55
- enableHydration({
56
- hydrationComplete() {
57
- (window as any).hydrationCompleted = true;
58
- },
59
- });
@@ -1,16 +0,0 @@
1
- {
2
- "object": {
3
- "a": {
4
- "b1": null,
5
- "b2": {
6
- "c": "FOO"
7
- }
8
- },
9
- "b": "bar",
10
- "c": [
11
- { "name": "Item 1", "status": "active" },
12
- { "name": "Item 2", "status": "active" },
13
- { "status": "active" }
14
- ]
15
- }
16
- }
@@ -1,17 +0,0 @@
1
- <f-template name="test-element">
2
- <template>
3
- <span>{{object.b}}</span>
4
- <span>{{object.a.b1}}</span>
5
- <span>{{object.a.b2.c}}</span>
6
- <button @click="{handleBClick()}">Set b</button>
7
- <button @click="{handleAB1Click()}">Set a.b1</button>
8
- <button @click="{handleAB2CClick()}">Set a.b2.c</button>
9
- <f-when value="{{object.c}}">
10
- <f-repeat value="{{item in object.c}}">
11
- <f-when value="{{item.name && item.status == 'active'}}">
12
- <div>{{item.name}}</div>
13
- </f-when>
14
- </f-repeat>
15
- </f-when>
16
- </template>
17
- </f-template>
@@ -1,11 +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 foo="{{foo}}"></test-element>
9
- <script type="module" src="./main.ts"></script>
10
- </body>
11
- </html>
@@ -1,6 +0,0 @@
1
- {
2
- "entry": "entry.html",
3
- "state": "state.json",
4
- "output": "index.html",
5
- "templates": "templates.html"
6
- }
@@ -1,43 +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 foo="bar"><template shadowrootmode="open" shadowroot="open"><button type="button" data-fe="1">No arguments</button>
9
- <button type="button" data-fe="1">modify foo</button>
10
- <button type="button" data-fe="1">
11
- event argument ($e)
12
- </button>
13
- <button type="button" data-fe="1">
14
- context argument ($c)
15
- </button>
16
- <button type="button" data-fe="1">
17
- multiple arguments ($e, $c)
18
- </button>
19
- <button type="button" data-fe="1">
20
- context event argument ($c.event)
21
- </button></template></test-element>
22
- <f-template name="test-element">
23
- <template>
24
- <button type="button" @click="{handleNoArgsClick()}">No arguments</button>
25
- <button type="button" @click="{handleModifyAttributeClick()}">modify foo</button>
26
- <button type="button" @click="{handleDollarEArgClick($e)}">
27
- event argument ($e)
28
- </button>
29
- <button type="button" @click="{handleContextArgClick($c)}">
30
- context argument ($c)
31
- </button>
32
- <button type="button" @click="{handleMultiArgClick($e, $c)}">
33
- multiple arguments ($e, $c)
34
- </button>
35
- <button type="button" @click="{handleContextEventArgClick($c.event)}">
36
- context event argument ($c.event)
37
- </button>
38
- </template>
39
- </f-template>
40
-
41
- <script type="module" src="./main.ts"></script>
42
- </body>
43
- </html>
@@ -1,43 +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
-
6
- class TestElement extends FASTElement {
7
- @attr
8
- foo: string = "";
9
-
10
- public handleNoArgsClick = (): void => {
11
- console.log("no args");
12
- };
13
-
14
- public handleModifyAttributeClick = (): void => {
15
- this.foo = "modified-by-click";
16
- };
17
-
18
- public handleDollarEArgClick = (e: MouseEvent): void => {
19
- console.log(e.type);
20
- };
21
-
22
- public handleContextArgClick = (c: any): void => {
23
- console.log(c.event.type);
24
- };
25
-
26
- public handleMultiArgClick = (e: MouseEvent, c: any): void => {
27
- console.log(`${e.type},${c.event.type}`);
28
- };
29
-
30
- public handleContextEventArgClick = (e: MouseEvent): void => {
31
- console.log(e.type);
32
- };
33
- }
34
- TestElement.define({
35
- name: "test-element",
36
- template: declarativeTemplate(),
37
- });
38
-
39
- enableHydration({
40
- hydrationComplete() {
41
- (window as any).hydrationCompleted = true;
42
- },
43
- });
@@ -1,3 +0,0 @@
1
- {
2
- "foo": "bar"
3
- }
@@ -1,18 +0,0 @@
1
- <f-template name="test-element">
2
- <template>
3
- <button type="button" @click="{handleNoArgsClick()}">No arguments</button>
4
- <button type="button" @click="{handleModifyAttributeClick()}">modify foo</button>
5
- <button type="button" @click="{handleDollarEArgClick($e)}">
6
- event argument ($e)
7
- </button>
8
- <button type="button" @click="{handleContextArgClick($c)}">
9
- context argument ($c)
10
- </button>
11
- <button type="button" @click="{handleMultiArgClick($e, $c)}">
12
- multiple arguments ($e, $c)
13
- </button>
14
- <button type="button" @click="{handleContextEventArgClick($c.event)}">
15
- context event argument ($c.event)
16
- </button>
17
- </template>
18
- </f-template>
@@ -1,40 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en-US">
3
- <head>
4
- <meta charset="utf-8">
5
- <title>Host Bindings Test</title>
6
- <style>
7
- /* Ensure custom elements display as block to prevent overlap */
8
- host-event-element,
9
- host-multi-element,
10
- host-static-element,
11
- host-events-element,
12
- host-multi-content-element,
13
- host-text-binding-element,
14
- host-property-element,
15
- host-all-types-element,
16
- host-perm-attr-first,
17
- host-perm-bool-first,
18
- host-perm-prop-first {
19
- display: block;
20
- margin: 10px 0;
21
- padding: 10px;
22
- border: 1px solid #ccc;
23
- }
24
- </style>
25
- </head>
26
- <body>
27
- <host-event-element></host-event-element>
28
- <host-multi-element disabled></host-multi-element>
29
- <host-static-element id="static-host"></host-static-element>
30
- <host-events-element text="content text"></host-events-element>
31
- <host-multi-content-element first="a" second="b"></host-multi-content-element>
32
- <host-text-binding-element text="text content"></host-text-binding-element>
33
- <host-property-element text="property test"></host-property-element>
34
- <host-all-types-element text="all types" attr="value" disabled></host-all-types-element>
35
- <host-perm-attr-first text="perm attr first" attr="value" disabled></host-perm-attr-first>
36
- <host-perm-bool-first text="perm bool first" attr="value" disabled></host-perm-bool-first>
37
- <host-perm-prop-first text="perm prop first" attr="value" disabled></host-perm-prop-first>
38
- <script type="module" src="./main.ts"></script>
39
- </body>
40
- </html>
@@ -1,6 +0,0 @@
1
- {
2
- "entry": "entry.html",
3
- "state": "state.json",
4
- "output": "index.html",
5
- "templates": "templates.html"
6
- }