@vonage/vivid 5.2.0 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/accordion-item/definition.cjs +2 -1
  2. package/accordion-item/definition.js +3 -2
  3. package/alert/definition.cjs +1 -1
  4. package/alert/definition.js +2 -2
  5. package/alert/index.cjs +1 -1
  6. package/alert/index.js +1 -1
  7. package/audio-player/definition.cjs +4 -2
  8. package/audio-player/definition.js +4 -2
  9. package/audio-player/index.cjs +5 -3
  10. package/audio-player/index.js +5 -3
  11. package/badge/definition.js +1 -1
  12. package/badge/index.cjs +2 -2
  13. package/badge/index.js +4 -4
  14. package/banner/definition.js +1 -1
  15. package/banner/index.cjs +3 -3
  16. package/banner/index.js +6 -6
  17. package/breadcrumb-item/index.cjs +1 -1
  18. package/breadcrumb-item/index.js +1 -1
  19. package/bundled/affix.cjs +7 -7
  20. package/bundled/affix.js +5 -5
  21. package/bundled/anchored.cjs +1 -1
  22. package/bundled/anchored.js +6 -6
  23. package/bundled/attribute-binding-behaviour.cjs +1 -1
  24. package/bundled/attribute-binding-behaviour.js +15 -13
  25. package/bundled/base-color-picker.cjs +13 -0
  26. package/bundled/base-color-picker.js +194 -0
  27. package/bundled/button.cjs +1 -1
  28. package/bundled/button.js +2 -2
  29. package/bundled/calendar-picker.template.cjs +7 -7
  30. package/bundled/calendar-picker.template.js +118 -118
  31. package/bundled/char-count.cjs +1 -1
  32. package/bundled/char-count.js +1 -1
  33. package/bundled/children.cjs +1 -1
  34. package/bundled/children.js +28 -20
  35. package/bundled/definition.cjs +3 -3
  36. package/bundled/definition.js +38 -38
  37. package/bundled/definition10.cjs +72 -18
  38. package/bundled/definition10.js +351 -65
  39. package/bundled/definition11.cjs +19 -10
  40. package/bundled/definition11.js +217 -36
  41. package/bundled/definition12.cjs +10 -1
  42. package/bundled/definition12.js +38 -14
  43. package/bundled/definition13.cjs +1 -73
  44. package/bundled/definition13.js +15 -354
  45. package/bundled/definition15.cjs +1 -1
  46. package/bundled/definition15.js +1 -1
  47. package/bundled/definition16.cjs +2 -2
  48. package/bundled/definition16.js +8 -8
  49. package/bundled/definition17.cjs +7 -7
  50. package/bundled/definition17.js +17 -17
  51. package/bundled/definition19.cjs +23 -24
  52. package/bundled/definition19.js +151 -163
  53. package/bundled/definition2.cjs +9 -5
  54. package/bundled/definition2.js +21 -17
  55. package/bundled/definition22.cjs +9 -9
  56. package/bundled/definition22.js +31 -31
  57. package/bundled/definition3.cjs +1 -1
  58. package/bundled/definition3.js +1 -1
  59. package/bundled/definition6.cjs +3 -3
  60. package/bundled/definition6.js +28 -28
  61. package/bundled/definition7.cjs +1 -1
  62. package/bundled/definition7.js +6 -6
  63. package/bundled/definition8.cjs +2 -2
  64. package/bundled/definition8.js +4 -4
  65. package/bundled/definition9.cjs +5 -5
  66. package/bundled/definition9.js +394 -392
  67. package/bundled/delegates-aria.cjs +1 -1
  68. package/bundled/delegates-aria.js +59 -46
  69. package/bundled/form-associated.cjs +1 -1
  70. package/bundled/form-associated.js +3 -3
  71. package/bundled/host-semantics.cjs +1 -1
  72. package/bundled/host-semantics.js +48 -34
  73. package/bundled/listbox.cjs +1 -1
  74. package/bundled/listbox.js +82 -102
  75. package/bundled/localized.cjs +1 -1
  76. package/bundled/localized.js +51 -36
  77. package/bundled/mixins.cjs +18 -18
  78. package/bundled/mixins.js +99 -93
  79. package/bundled/normalize.cjs +1 -0
  80. package/bundled/normalize.js +7 -0
  81. package/bundled/picker-field.template.cjs +1 -1
  82. package/bundled/picker-field.template.js +4 -4
  83. package/bundled/ref.cjs +1 -1
  84. package/bundled/ref.js +8 -25
  85. package/bundled/repeat.cjs +1 -1
  86. package/bundled/repeat.js +459 -233
  87. package/bundled/slider.template.cjs +1 -1
  88. package/bundled/slider.template.js +2 -2
  89. package/bundled/slotted.cjs +1 -1
  90. package/bundled/slotted.js +62 -45
  91. package/bundled/time-selection-picker.template.cjs +1 -1
  92. package/bundled/time-selection-picker.template.js +5 -5
  93. package/bundled/vivid-element.cjs +5 -1
  94. package/bundled/vivid-element.js +2159 -1162
  95. package/bundled/when.cjs +1 -1
  96. package/bundled/when.js +8 -7
  97. package/calendar/definition.cjs +1 -1
  98. package/calendar/definition.js +2 -2
  99. package/calendar/index.cjs +1 -1
  100. package/calendar/index.js +15 -15
  101. package/calendar-event/index.cjs +1 -1
  102. package/calendar-event/index.js +1 -1
  103. package/card/definition.cjs +11 -3
  104. package/card/definition.js +11 -3
  105. package/card/index.cjs +19 -11
  106. package/card/index.js +35 -27
  107. package/color-picker/definition.cjs +1079 -0
  108. package/color-picker/definition.js +1073 -0
  109. package/color-picker/index.cjs +127 -0
  110. package/color-picker/index.js +726 -0
  111. package/combobox/definition.cjs +8 -28
  112. package/combobox/definition.js +10 -30
  113. package/combobox/index.cjs +7 -7
  114. package/combobox/index.js +60 -74
  115. package/contextual-help/index.cjs +1 -1
  116. package/contextual-help/index.js +1 -1
  117. package/custom-elements.json +1670 -163
  118. package/data-grid/definition.cjs +862 -27
  119. package/data-grid/definition.js +863 -28
  120. package/data-grid/index.cjs +25 -25
  121. package/data-grid/index.js +175 -168
  122. package/date-picker/definition.cjs +1 -1
  123. package/date-picker/definition.js +1 -1
  124. package/date-picker/index.cjs +1 -1
  125. package/date-picker/index.js +2 -2
  126. package/date-range-picker/definition.cjs +1 -1
  127. package/date-range-picker/definition.js +1 -1
  128. package/date-range-picker/index.cjs +1 -1
  129. package/date-range-picker/index.js +2 -2
  130. package/date-time-picker/definition.cjs +1 -1
  131. package/date-time-picker/definition.js +1 -1
  132. package/date-time-picker/index.cjs +1 -1
  133. package/date-time-picker/index.js +2 -2
  134. package/dial-pad/definition.cjs +4 -0
  135. package/dial-pad/definition.js +4 -0
  136. package/dial-pad/index.cjs +3 -3
  137. package/dial-pad/index.js +42 -39
  138. package/dialog/definition.cjs +6 -3
  139. package/dialog/definition.js +6 -3
  140. package/dialog/index.cjs +22 -19
  141. package/dialog/index.js +48 -45
  142. package/elevation/definition.cjs +1 -1
  143. package/elevation/definition.js +1 -1
  144. package/empty-state/definition.cjs +7 -2
  145. package/empty-state/definition.js +7 -2
  146. package/empty-state/index.cjs +10 -5
  147. package/empty-state/index.js +18 -13
  148. package/fab/definition.js +1 -1
  149. package/fab/index.cjs +2 -2
  150. package/fab/index.js +4 -4
  151. package/file-picker/definition.cjs +2 -2
  152. package/file-picker/definition.js +3 -3
  153. package/file-picker/index.cjs +1 -1
  154. package/file-picker/index.js +4 -4
  155. package/header/definition.cjs +1 -1
  156. package/header/definition.js +1 -1
  157. package/icon/definition.cjs +10 -6
  158. package/icon/definition.js +10 -6
  159. package/index.cjs +7 -4
  160. package/index.js +3 -3
  161. package/lib/accordion/accordion.d.ts +1 -1
  162. package/lib/accordion/definition.d.ts +1 -1
  163. package/lib/accordion-item/accordion-item.d.ts +2 -2
  164. package/lib/action-group/action-group.d.ts +2 -2
  165. package/lib/alert/alert.d.ts +4 -4
  166. package/lib/audio-player/audio-player.d.ts +3 -3
  167. package/lib/avatar/avatar.d.ts +2 -2
  168. package/lib/badge/badge.d.ts +2 -2
  169. package/lib/banner/banner.d.ts +6 -6
  170. package/lib/breadcrumb/breadcrumb.d.ts +2 -2
  171. package/lib/breadcrumb-item/breadcrumb-item.d.ts +2 -2
  172. package/lib/button/button.d.ts +6 -6
  173. package/lib/button/button.template.d.ts +2 -1
  174. package/lib/calendar/calendar.d.ts +1 -1
  175. package/lib/calendar-event/calendar-event.d.ts +2 -2
  176. package/lib/card/card.d.ts +2 -2
  177. package/lib/checkbox/checkbox.d.ts +12 -12
  178. package/lib/color-picker/color-picker.d.ts +2420 -0
  179. package/lib/color-picker/color-picker.template.d.ts +3 -0
  180. package/lib/color-picker/definition.d.ts +4 -0
  181. package/lib/color-picker/locale.d.ts +9 -0
  182. package/lib/combobox/combobox.d.ts +15 -14
  183. package/lib/combobox/combobox.options.d.ts +1 -1
  184. package/lib/components.d.ts +1 -0
  185. package/lib/data-grid/data-grid-cell.d.ts +4 -4
  186. package/lib/data-grid/data-grid-row.d.ts +3 -4
  187. package/lib/data-grid/data-grid.d.ts +1 -2
  188. package/lib/date-picker/date-picker.d.ts +54 -54
  189. package/lib/date-range-picker/date-range-picker.d.ts +28 -28
  190. package/lib/date-time-picker/date-time-picker.d.ts +56 -56
  191. package/lib/dial-pad/dial-pad.d.ts +3 -2
  192. package/lib/dialog/dialog.d.ts +4 -4
  193. package/lib/divider/divider.d.ts +3 -3
  194. package/lib/fab/fab.d.ts +2 -2
  195. package/lib/file-picker/file-picker.d.ts +14 -14
  196. package/lib/header/header.d.ts +2 -2
  197. package/lib/menu/menu.d.ts +4 -4
  198. package/lib/menu-item/menu-item-role.d.ts +1 -1
  199. package/lib/menu-item/menu-item.d.ts +4 -4
  200. package/lib/nav/nav.d.ts +2 -2
  201. package/lib/nav-disclosure/nav-disclosure.d.ts +4 -4
  202. package/lib/nav-item/nav-item.d.ts +4 -4
  203. package/lib/note/note.d.ts +2 -2
  204. package/lib/number-field/number-field.d.ts +18 -18
  205. package/lib/option/option.d.ts +4 -4
  206. package/lib/pagination/pagination.d.ts +2 -2
  207. package/lib/popup/popup.d.ts +1 -1
  208. package/lib/progress/progress.d.ts +2 -2
  209. package/lib/progress-ring/progress-ring.d.ts +2 -2
  210. package/lib/radio/radio.d.ts +6 -6
  211. package/lib/radio-group/radio-group.d.ts +2 -2
  212. package/lib/range-slider/range-slider.d.ts +6 -6
  213. package/lib/rich-text-editor/menubar/menubar.d.ts +2 -2
  214. package/lib/rich-text-editor/rich-text-editor.d.ts +2 -2
  215. package/lib/searchable-select/locale.d.ts +4 -0
  216. package/lib/searchable-select/option-tag.d.ts +2 -2
  217. package/lib/searchable-select/searchable-select.d.ts +21 -18
  218. package/lib/select/select.d.ts +19 -17
  219. package/lib/selectable-box/selectable-box.d.ts +2 -2
  220. package/lib/simple-color-picker/locale.d.ts +0 -1
  221. package/lib/simple-color-picker/simple-color-picker.d.ts +47 -821
  222. package/lib/slider/slider.d.ts +7 -7
  223. package/lib/split-button/split-button.d.ts +6 -6
  224. package/lib/switch/switch.d.ts +4 -4
  225. package/lib/tab/tab.d.ts +6 -6
  226. package/lib/tab-panel/tab-panel.d.ts +2 -2
  227. package/lib/tabs/tabs.d.ts +2 -2
  228. package/lib/tag/tag.d.ts +6 -6
  229. package/lib/tag-group/tag-group.d.ts +2 -2
  230. package/lib/tag-name-map.d.ts +2 -1
  231. package/lib/text-area/text-area.d.ts +17 -17
  232. package/lib/text-field/text-field.d.ts +19 -19
  233. package/lib/time-picker/time-picker.d.ts +28 -28
  234. package/lib/toggletip/toggletip.d.ts +4 -4
  235. package/lib/tooltip/tooltip.d.ts +2 -2
  236. package/lib/tree-item/tree-item.d.ts +4 -4
  237. package/lib/tree-view/tree-view.d.ts +2 -2
  238. package/lib/video-player/video-player.d.ts +2 -2
  239. package/locales/de-DE.cjs +17 -2
  240. package/locales/de-DE.js +17 -2
  241. package/locales/en-GB.cjs +17 -2
  242. package/locales/en-GB.js +17 -2
  243. package/locales/en-US.cjs +17 -2
  244. package/locales/en-US.js +17 -2
  245. package/locales/ja-JP.cjs +17 -2
  246. package/locales/ja-JP.js +17 -2
  247. package/locales/zh-CN.cjs +17 -2
  248. package/locales/zh-CN.js +17 -2
  249. package/menu/definition.cjs +6 -6
  250. package/menu/definition.js +7 -7
  251. package/nav-disclosure/definition.js +1 -1
  252. package/nav-item/definition.js +1 -1
  253. package/note/definition.js +1 -1
  254. package/note/index.cjs +2 -2
  255. package/note/index.js +4 -4
  256. package/number-field/definition.cjs +1 -1
  257. package/number-field/definition.js +3 -3
  258. package/number-field/index.cjs +5 -5
  259. package/number-field/index.js +21 -21
  260. package/option/definition.cjs +6 -77
  261. package/option/definition.js +3 -78
  262. package/option/index.cjs +1 -1
  263. package/option/index.js +1 -1
  264. package/package.json +34 -8
  265. package/pagination/definition.cjs +2 -1
  266. package/pagination/definition.js +2 -1
  267. package/pagination/index.cjs +12 -12
  268. package/pagination/index.js +59 -59
  269. package/popup/definition.cjs +2 -2
  270. package/popup/definition.js +2 -2
  271. package/progress/index.cjs +1 -1
  272. package/progress/index.js +1 -1
  273. package/radio/definition.cjs +9 -9
  274. package/radio/definition.js +10 -10
  275. package/radio-group/definition.cjs +2 -1
  276. package/radio-group/definition.js +2 -1
  277. package/radio-group/index.cjs +5 -5
  278. package/radio-group/index.js +80 -77
  279. package/range-slider/definition.cjs +1 -1
  280. package/range-slider/definition.js +1 -1
  281. package/range-slider/index.cjs +1 -1
  282. package/range-slider/index.js +1 -1
  283. package/rich-text-editor/definition.cjs +3 -4
  284. package/rich-text-editor/definition.js +3 -4
  285. package/rich-text-editor/index.cjs +27 -27
  286. package/rich-text-editor/index.js +1208 -1198
  287. package/searchable-select/definition.cjs +106 -14
  288. package/searchable-select/definition.js +107 -15
  289. package/searchable-select/index.cjs +81 -69
  290. package/searchable-select/index.js +362 -276
  291. package/select/definition.cjs +25 -42
  292. package/select/definition.js +26 -43
  293. package/selectable-box/definition.cjs +1 -1
  294. package/selectable-box/definition.js +1 -1
  295. package/selectable-box/index.cjs +3 -3
  296. package/selectable-box/index.js +20 -20
  297. package/shared/aria/aria-change-subscription.d.ts +0 -1
  298. package/shared/aria/aria-mixin.d.ts +3 -3
  299. package/shared/aria/delegate-aria-behavior.d.ts +5 -10
  300. package/shared/aria/delegates-aria.d.ts +3 -3
  301. package/shared/aria/host-semantics-behavior.d.ts +5 -8
  302. package/shared/aria/host-semantics.d.ts +3 -3
  303. package/shared/color-picker/base-color-picker.d.ts +436 -0
  304. package/shared/color-picker/index.d.ts +1 -0
  305. package/shared/color-picker/locale.d.ts +3 -0
  306. package/shared/color-picker/utils.d.ts +1 -0
  307. package/shared/deprecation/replaced-props.d.ts +317 -2
  308. package/shared/design-system/defineVividComponent.d.ts +2 -2
  309. package/shared/feedback/feedback-message.d.ts +2 -2
  310. package/shared/feedback/mixins.d.ts +4 -4
  311. package/shared/foundation/button/button.d.ts +4 -4
  312. package/shared/foundation/form-associated/form-associated.d.ts +4 -4
  313. package/shared/foundation/listbox/listbox.d.ts +4 -0
  314. package/shared/foundation/vivid-element/vivid-element.d.ts +335 -8
  315. package/shared/localization/Locale.d.ts +4 -0
  316. package/shared/patterns/affix.d.ts +4 -4
  317. package/shared/patterns/anchored.d.ts +4 -4
  318. package/shared/patterns/char-count/char-count.d.ts +2 -2
  319. package/shared/patterns/form-elements/form-element.d.ts +4 -4
  320. package/shared/patterns/form-elements/with-contextual-help.d.ts +6 -6
  321. package/shared/patterns/form-elements/with-error-text.d.ts +6 -6
  322. package/shared/patterns/form-elements/with-success-text.d.ts +2 -2
  323. package/shared/patterns/linkable.d.ts +2 -2
  324. package/shared/patterns/localized.d.ts +2 -2
  325. package/shared/patterns/trapped-focus.d.ts +2 -2
  326. package/shared/picker-field/mixins/calendar-picker.d.ts +14 -14
  327. package/shared/picker-field/mixins/calendar-picker.template.d.ts +14 -14
  328. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +2 -2
  329. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +28 -28
  330. package/shared/picker-field/mixins/single-date-picker.d.ts +40 -40
  331. package/shared/picker-field/mixins/single-value-picker.d.ts +12 -12
  332. package/shared/picker-field/mixins/time-selection-picker.d.ts +29 -29
  333. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +28 -28
  334. package/shared/picker-field/picker-field.d.ts +14 -14
  335. package/shared/templating/attribute-binding-behaviour.d.ts +3 -4
  336. package/shared/templating/render-in-light-dom.d.ts +13 -12
  337. package/side-drawer/index.cjs +1 -1
  338. package/side-drawer/index.js +1 -1
  339. package/simple-color-picker/definition.cjs +29 -216
  340. package/simple-color-picker/definition.js +30 -217
  341. package/simple-color-picker/index.cjs +9 -21
  342. package/simple-color-picker/index.js +71 -185
  343. package/slider/definition.cjs +1 -1
  344. package/slider/definition.js +1 -1
  345. package/split-button/definition.js +1 -1
  346. package/styles/core/all.css +1 -1
  347. package/styles/core/theme.css +1 -1
  348. package/styles/core/typography.css +1 -1
  349. package/styles/tokens/theme-dark.css +4 -4
  350. package/styles/tokens/theme-light.css +4 -4
  351. package/styles/tokens/vivid-2-compat.css +1 -1
  352. package/switch/index.cjs +2 -2
  353. package/switch/index.js +4 -4
  354. package/tab/definition.js +1 -1
  355. package/tabs/definition.cjs +1 -1
  356. package/tabs/definition.js +2 -2
  357. package/tabs/index.cjs +2 -2
  358. package/tabs/index.js +16 -16
  359. package/tag/definition.js +1 -1
  360. package/tag/index.cjs +1 -1
  361. package/tag/index.js +1 -1
  362. package/text-area/index.cjs +3 -3
  363. package/text-area/index.js +8 -8
  364. package/text-field/definition.cjs +2 -2
  365. package/text-field/definition.js +4 -4
  366. package/text-field/index.cjs +1 -1
  367. package/text-field/index.js +1 -1
  368. package/time-picker/definition.cjs +1 -1
  369. package/time-picker/definition.js +1 -1
  370. package/time-picker/index.cjs +1 -1
  371. package/time-picker/index.js +2 -2
  372. package/toggletip/definition.cjs +2 -2
  373. package/toggletip/definition.js +3 -3
  374. package/tooltip/definition.cjs +1 -1
  375. package/tooltip/definition.js +1 -1
  376. package/tree-item/definition.cjs +1 -1
  377. package/tree-item/definition.js +1 -1
  378. package/tree-view/definition.cjs +2 -2
  379. package/tree-view/definition.js +3 -3
  380. package/tree-view/index.cjs +2 -2
  381. package/tree-view/index.js +6 -6
  382. package/unbundled/_commonjsHelpers.cjs +36 -0
  383. package/unbundled/_commonjsHelpers.js +32 -0
  384. package/unbundled/affix.cjs +1 -1
  385. package/unbundled/affix.js +2 -2
  386. package/unbundled/attribute-binding-behaviour.cjs +11 -10
  387. package/unbundled/attribute-binding-behaviour.js +11 -10
  388. package/unbundled/base-color-picker.cjs +278 -0
  389. package/unbundled/base-color-picker.js +275 -0
  390. package/unbundled/button.cjs +1 -1
  391. package/unbundled/button.js +2 -2
  392. package/unbundled/calendar-picker.template.cjs +4 -4
  393. package/unbundled/calendar-picker.template.js +5 -5
  394. package/unbundled/definition.js +1 -1
  395. package/unbundled/definition2.cjs +1 -1
  396. package/unbundled/definition2.js +3 -3
  397. package/unbundled/definition3.cjs +222 -140
  398. package/unbundled/definition3.js +220 -138
  399. package/unbundled/definition4.cjs +145 -235
  400. package/unbundled/definition4.js +143 -233
  401. package/unbundled/definition5.cjs +269 -27
  402. package/unbundled/definition5.js +267 -26
  403. package/unbundled/definition6.cjs +56 -0
  404. package/unbundled/definition6.js +52 -0
  405. package/unbundled/delegates-aria.cjs +67 -33
  406. package/unbundled/delegates-aria.js +69 -35
  407. package/unbundled/form-associated.cjs +2 -2
  408. package/unbundled/form-associated.js +3 -3
  409. package/unbundled/host-semantics.cjs +47 -22
  410. package/unbundled/host-semantics.js +48 -23
  411. package/unbundled/listbox.cjs +41 -63
  412. package/unbundled/listbox.js +39 -61
  413. package/unbundled/mixins.cjs +34 -27
  414. package/unbundled/mixins.js +35 -28
  415. package/unbundled/picker-field.template.cjs +3 -3
  416. package/unbundled/picker-field.template.js +4 -4
  417. package/unbundled/slider.template.cjs +1 -1
  418. package/unbundled/slider.template.js +1 -1
  419. package/unbundled/time-selection-picker.template.cjs +4 -4
  420. package/unbundled/time-selection-picker.template.js +5 -5
  421. package/unbundled/vivid-element.cjs +22 -15
  422. package/unbundled/vivid-element.js +23 -15
  423. package/video-player/definition.cjs +69047 -1
  424. package/video-player/definition.js +69047 -1
  425. package/video-player/index.cjs +36 -36
  426. package/video-player/index.js +1895 -1905
  427. package/visually-hidden/index.cjs +1 -1
  428. package/visually-hidden/index.js +1 -1
  429. package/vivid.api.json +719 -224
  430. package/bundled/option.cjs +0 -1
  431. package/bundled/option.js +0 -158
  432. package/unbundled/option.cjs +0 -217
  433. package/unbundled/option.js +0 -214
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ const vividElement = require('./vivid-element.cjs');
4
+ const fastElement = require('@microsoft/fast-element');
5
+ const fastWebUtilities = require('@microsoft/fast-web-utilities');
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __decorateClass = (decorators, target, key, kind) => {
9
+ var result = void 0 ;
10
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
11
+ if (decorator = decorators[i])
12
+ result = (decorator(target, key, result) ) || result;
13
+ if (result) __defProp(target, key, result);
14
+ return result;
15
+ };
16
+ class Elevation extends vividElement.VividElement {
17
+ }
18
+ __decorateClass([
19
+ fastElement.attr
20
+ ], Elevation.prototype, "dp");
21
+ __decorateClass([
22
+ fastElement.attr({ attribute: "no-shadow", mode: "boolean" })
23
+ ], Elevation.prototype, "noShadow");
24
+ __decorateClass([
25
+ fastElement.attr({ attribute: "not-relative", mode: "boolean" })
26
+ ], Elevation.prototype, "notRelative");
27
+
28
+ const styles = ":host{display:contents}.control{display:contents}.control.dp-0{--_elevation-fill: var(--_vvd-tinted-color-surface-0dp, var(--vvd-color-surface-0dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-0dp, var(--vvd-shadow-surface-0dp))}.control.dp-4{--_elevation-fill: var(--_vvd-tinted-color-surface-4dp, var(--vvd-color-surface-4dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-4dp, var(--vvd-shadow-surface-4dp))}.control.dp-8{--_elevation-fill: var(--_vvd-tinted-color-surface-8dp, var(--vvd-color-surface-8dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-8dp, var(--vvd-shadow-surface-8dp))}.control.dp-12{--_elevation-fill: var(--_vvd-tinted-color-surface-12dp, var(--vvd-color-surface-12dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-12dp, var(--vvd-shadow-surface-12dp))}.control.dp-16{--_elevation-fill: var(--_vvd-tinted-color-surface-16dp, var(--vvd-color-surface-16dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-16dp, var(--vvd-shadow-surface-16dp))}.control.dp-24{--_elevation-fill: var(--_vvd-tinted-color-surface-24dp, var(--vvd-color-surface-24dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-24dp, var(--vvd-shadow-surface-24dp))}.control:not(.dp-0,.dp-4,.dp-8,.dp-12,.dp-16,.dp-24){--_elevation-fill: var(--_vvd-tinted-color-surface-2dp, var(--vvd-color-surface-2dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-2dp, var(--vvd-shadow-surface-2dp))}.control ::slotted(*){isolation:isolate}.control ::slotted(*):before{position:absolute;z-index:-1;border-radius:inherit;background:var(--_elevation-fill);block-size:100%;content:\"\";filter:var(--_elevation-shadow);inline-size:100%;inset-block-start:0;inset-inline-start:0;transition:background-color .15s linear,filter .15s linear}.control:not(.not-relative) ::slotted(*){position:relative}.control.no-shadow ::slotted(*):before{filter:none}";
29
+
30
+ const getClasses = ({ dp, noShadow, notRelative }) => fastWebUtilities.classNames(
31
+ "control",
32
+ [`dp-${dp}`, Boolean(dp)],
33
+ ["no-shadow", Boolean(noShadow)],
34
+ ["not-relative", Boolean(notRelative)]
35
+ );
36
+ const elevationTemplate = fastElement.html` <div
37
+ class="${getClasses}"
38
+ part="base"
39
+ >
40
+ <slot></slot>
41
+ </div>`;
42
+
43
+ const elevationDefinition = vividElement.defineVividComponent(
44
+ "elevation",
45
+ Elevation,
46
+ elevationTemplate,
47
+ [],
48
+ {
49
+ styles
50
+ }
51
+ );
52
+ const registerElevation = vividElement.createRegisterFunction(elevationDefinition);
53
+
54
+ exports.Elevation = Elevation;
55
+ exports.elevationDefinition = elevationDefinition;
56
+ exports.registerElevation = registerElevation;
@@ -0,0 +1,52 @@
1
+ import { V as VividElement, d as defineVividComponent, c as createRegisterFunction } from './vivid-element.js';
2
+ import { attr, html } from '@microsoft/fast-element';
3
+ import { classNames } from '@microsoft/fast-web-utilities';
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __decorateClass = (decorators, target, key, kind) => {
7
+ var result = void 0 ;
8
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
9
+ if (decorator = decorators[i])
10
+ result = (decorator(target, key, result) ) || result;
11
+ if (result) __defProp(target, key, result);
12
+ return result;
13
+ };
14
+ class Elevation extends VividElement {
15
+ }
16
+ __decorateClass([
17
+ attr
18
+ ], Elevation.prototype, "dp");
19
+ __decorateClass([
20
+ attr({ attribute: "no-shadow", mode: "boolean" })
21
+ ], Elevation.prototype, "noShadow");
22
+ __decorateClass([
23
+ attr({ attribute: "not-relative", mode: "boolean" })
24
+ ], Elevation.prototype, "notRelative");
25
+
26
+ const styles = ":host{display:contents}.control{display:contents}.control.dp-0{--_elevation-fill: var(--_vvd-tinted-color-surface-0dp, var(--vvd-color-surface-0dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-0dp, var(--vvd-shadow-surface-0dp))}.control.dp-4{--_elevation-fill: var(--_vvd-tinted-color-surface-4dp, var(--vvd-color-surface-4dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-4dp, var(--vvd-shadow-surface-4dp))}.control.dp-8{--_elevation-fill: var(--_vvd-tinted-color-surface-8dp, var(--vvd-color-surface-8dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-8dp, var(--vvd-shadow-surface-8dp))}.control.dp-12{--_elevation-fill: var(--_vvd-tinted-color-surface-12dp, var(--vvd-color-surface-12dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-12dp, var(--vvd-shadow-surface-12dp))}.control.dp-16{--_elevation-fill: var(--_vvd-tinted-color-surface-16dp, var(--vvd-color-surface-16dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-16dp, var(--vvd-shadow-surface-16dp))}.control.dp-24{--_elevation-fill: var(--_vvd-tinted-color-surface-24dp, var(--vvd-color-surface-24dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-24dp, var(--vvd-shadow-surface-24dp))}.control:not(.dp-0,.dp-4,.dp-8,.dp-12,.dp-16,.dp-24){--_elevation-fill: var(--_vvd-tinted-color-surface-2dp, var(--vvd-color-surface-2dp));--_elevation-shadow: var(--_vvd-tinted-shadow-surface-2dp, var(--vvd-shadow-surface-2dp))}.control ::slotted(*){isolation:isolate}.control ::slotted(*):before{position:absolute;z-index:-1;border-radius:inherit;background:var(--_elevation-fill);block-size:100%;content:\"\";filter:var(--_elevation-shadow);inline-size:100%;inset-block-start:0;inset-inline-start:0;transition:background-color .15s linear,filter .15s linear}.control:not(.not-relative) ::slotted(*){position:relative}.control.no-shadow ::slotted(*):before{filter:none}";
27
+
28
+ const getClasses = ({ dp, noShadow, notRelative }) => classNames(
29
+ "control",
30
+ [`dp-${dp}`, Boolean(dp)],
31
+ ["no-shadow", Boolean(noShadow)],
32
+ ["not-relative", Boolean(notRelative)]
33
+ );
34
+ const elevationTemplate = html` <div
35
+ class="${getClasses}"
36
+ part="base"
37
+ >
38
+ <slot></slot>
39
+ </div>`;
40
+
41
+ const elevationDefinition = defineVividComponent(
42
+ "elevation",
43
+ Elevation,
44
+ elevationTemplate,
45
+ [],
46
+ {
47
+ styles
48
+ }
49
+ );
50
+ const registerElevation = createRegisterFunction(elevationDefinition);
51
+
52
+ export { Elevation as E, elevationDefinition as e, registerElevation as r };
@@ -6,20 +6,35 @@ const vividElement = require('./vivid-element.cjs');
6
6
 
7
7
  class DelegateAriaBehavior {
8
8
  constructor(target, params) {
9
- this.target = target;
10
- this.source = null;
9
+ this.target = null;
10
+ // unbind() {
11
+ // if (this.source === null) {
12
+ // return;
13
+ // }
14
+ // this.releasePropertyBindings(this.source);
15
+ // this.stopForwardingPropertiesToTarget(this.source);
16
+ // this.source = null;
17
+ // }
11
18
  this.bindingBehaviours = [];
19
+ // private stopForwardingPropertiesToTarget(source: DelegatesAriaElement) {
20
+ // unsubscribeFromAriaPropertyChanges(
21
+ // source as AriaMixinElement,
22
+ // this.onSourceAriaPropertyChanged
23
+ // );
24
+ // }
12
25
  this.onSourceAriaPropertyChanged = (source, property) => {
13
- if (!this.forwardedProperties.has(property)) {
26
+ if (!this.forwardedProperties.has(property) || property in this.boundProperties) {
14
27
  return;
15
28
  }
16
29
  this.forwardPropertyToTarget(this.target, property, source[property]);
17
30
  };
31
+ this.target = target;
18
32
  this.boundProperties = params.boundProperties;
19
33
  this.forwardedProperties = params.forwardedProperties;
20
34
  }
21
- bind(source) {
22
- this.source = source;
35
+ // private source: DelegatesAriaElement | null = null;
36
+ bind(controller) {
37
+ const source = controller.source;
23
38
  this.bindPropertiesToTarget(source, this.boundProperties, this.target);
24
39
  this.startForwardingPropertiesToTarget(
25
40
  source,
@@ -27,63 +42,82 @@ class DelegateAriaBehavior {
27
42
  this.target
28
43
  );
29
44
  }
30
- unbind() {
31
- if (this.source === null) {
32
- return;
33
- }
34
- this.releasePropertyBindings(this.source);
35
- this.stopForwardingPropertiesToTarget(this.source);
36
- this.source = null;
37
- }
38
45
  bindPropertiesToTarget(source, boundProperties, target) {
39
46
  for (const [property, binding] of Object.entries(boundProperties)) {
40
47
  const bindingFn = binding instanceof Function ? binding : () => binding;
41
48
  this.bindingBehaviours.push(
42
49
  new attributeBindingBehaviour.AttributeBindingBehavior(
43
50
  target,
44
- bindingFn,
51
+ fastElement.oneWay(bindingFn),
45
52
  fastElement.Observable.isVolatileBinding(bindingFn),
46
53
  vividElement.ariaAttributeName(property)
47
54
  )
48
55
  );
49
56
  }
50
- source.$fastController.addBehaviors(this.bindingBehaviours);
51
- }
52
- releasePropertyBindings(source) {
53
- source.$fastController.removeBehaviors(this.bindingBehaviours);
54
- this.bindingBehaviours = [];
57
+ for (const behavior of this.bindingBehaviours) {
58
+ behavior.bind({
59
+ source,
60
+ context: source.$fastController.context
61
+ });
62
+ }
55
63
  }
64
+ // private releasePropertyBindings(source: DelegatesAriaElement) {
65
+ // for (const behavior of this.bindingBehaviours) {
66
+ // (behavior as any).unbind(); // TODO: fix type
67
+ // }
68
+ // this.bindingBehaviours = [];
69
+ // }
56
70
  startForwardingPropertiesToTarget(source, delegatedProperties, target) {
57
71
  for (const key of delegatedProperties) {
58
- this.forwardPropertyToTarget(target, key, source[key]);
72
+ if (!(key in this.boundProperties)) {
73
+ this.forwardPropertyToTarget(target, key, source[key]);
74
+ }
59
75
  }
60
- vividElement.subscribeToAriaPropertyChanges(source, this.onSourceAriaPropertyChanged);
61
- }
62
- stopForwardingPropertiesToTarget(source) {
63
- vividElement.unsubscribeFromAriaPropertyChanges(
76
+ vividElement.subscribeToAriaPropertyChanges(
64
77
  source,
65
78
  this.onSourceAriaPropertyChanged
66
79
  );
67
80
  }
68
81
  forwardPropertyToTarget(target, property, value) {
69
- fastElement.DOM.setAttribute(target, vividElement.ariaAttributeName(property), value);
82
+ if (value === null || value === void 0 || value === false) {
83
+ target.removeAttribute(vividElement.ariaAttributeName(property));
84
+ } else {
85
+ target.setAttribute(vividElement.ariaAttributeName(property), String(value));
86
+ }
70
87
  }
71
88
  }
72
89
 
90
+ class DelegateAriaDirective extends fastElement.StatelessAttachedAttributeDirective {
91
+ constructor(boundProperties, forwardedProperties) {
92
+ super("vvd-delegate-aria");
93
+ this.boundProperties = boundProperties;
94
+ this.forwardedProperties = forwardedProperties;
95
+ /**
96
+ * The structural id of the DOM node to which the created behavior will apply.
97
+ */
98
+ this.targetNodeId = "";
99
+ }
100
+ bind(controller) {
101
+ const targetElement = controller.targets[this.targetNodeId];
102
+ const behavior = new DelegateAriaBehavior(
103
+ targetElement,
104
+ // Pass the target element as target
105
+ {
106
+ boundProperties: this.boundProperties,
107
+ forwardedProperties: this.forwardedProperties
108
+ }
109
+ );
110
+ behavior.bind(controller);
111
+ }
112
+ }
113
+ fastElement.HTMLDirective.define(DelegateAriaDirective);
73
114
  function delegateAria(boundProperties = {}, options = {}) {
74
115
  const forwardedProperties = new Set(
75
116
  (options.onlySpecified ? [] : vividElement.ariaMixinProperties).filter(
76
117
  (p) => !(p in boundProperties)
77
118
  )
78
119
  );
79
- return new fastElement.AttachedBehaviorHTMLDirective(
80
- "vvd-delegate-aria",
81
- DelegateAriaBehavior,
82
- {
83
- boundProperties,
84
- forwardedProperties
85
- }
86
- );
120
+ return new DelegateAriaDirective(boundProperties, forwardedProperties);
87
121
  }
88
122
  const DelegatesAria = (Base) => {
89
123
  class DelegatesAriaElement extends Base {
@@ -1,23 +1,38 @@
1
- import { Observable, DOM, AttachedBehaviorHTMLDirective } from '@microsoft/fast-element';
1
+ import { oneWay, Observable, StatelessAttachedAttributeDirective, HTMLDirective } from '@microsoft/fast-element';
2
2
  import { A as AttributeBindingBehavior } from './attribute-binding-behaviour.js';
3
- import { a as ariaAttributeName, s as subscribeToAriaPropertyChanges, u as unsubscribeFromAriaPropertyChanges, b as ariaMixinProperties } from './vivid-element.js';
3
+ import { a as ariaAttributeName, s as subscribeToAriaPropertyChanges, b as ariaMixinProperties } from './vivid-element.js';
4
4
 
5
5
  class DelegateAriaBehavior {
6
6
  constructor(target, params) {
7
- this.target = target;
8
- this.source = null;
7
+ this.target = null;
8
+ // unbind() {
9
+ // if (this.source === null) {
10
+ // return;
11
+ // }
12
+ // this.releasePropertyBindings(this.source);
13
+ // this.stopForwardingPropertiesToTarget(this.source);
14
+ // this.source = null;
15
+ // }
9
16
  this.bindingBehaviours = [];
17
+ // private stopForwardingPropertiesToTarget(source: DelegatesAriaElement) {
18
+ // unsubscribeFromAriaPropertyChanges(
19
+ // source as AriaMixinElement,
20
+ // this.onSourceAriaPropertyChanged
21
+ // );
22
+ // }
10
23
  this.onSourceAriaPropertyChanged = (source, property) => {
11
- if (!this.forwardedProperties.has(property)) {
24
+ if (!this.forwardedProperties.has(property) || property in this.boundProperties) {
12
25
  return;
13
26
  }
14
27
  this.forwardPropertyToTarget(this.target, property, source[property]);
15
28
  };
29
+ this.target = target;
16
30
  this.boundProperties = params.boundProperties;
17
31
  this.forwardedProperties = params.forwardedProperties;
18
32
  }
19
- bind(source) {
20
- this.source = source;
33
+ // private source: DelegatesAriaElement | null = null;
34
+ bind(controller) {
35
+ const source = controller.source;
21
36
  this.bindPropertiesToTarget(source, this.boundProperties, this.target);
22
37
  this.startForwardingPropertiesToTarget(
23
38
  source,
@@ -25,63 +40,82 @@ class DelegateAriaBehavior {
25
40
  this.target
26
41
  );
27
42
  }
28
- unbind() {
29
- if (this.source === null) {
30
- return;
31
- }
32
- this.releasePropertyBindings(this.source);
33
- this.stopForwardingPropertiesToTarget(this.source);
34
- this.source = null;
35
- }
36
43
  bindPropertiesToTarget(source, boundProperties, target) {
37
44
  for (const [property, binding] of Object.entries(boundProperties)) {
38
45
  const bindingFn = binding instanceof Function ? binding : () => binding;
39
46
  this.bindingBehaviours.push(
40
47
  new AttributeBindingBehavior(
41
48
  target,
42
- bindingFn,
49
+ oneWay(bindingFn),
43
50
  Observable.isVolatileBinding(bindingFn),
44
51
  ariaAttributeName(property)
45
52
  )
46
53
  );
47
54
  }
48
- source.$fastController.addBehaviors(this.bindingBehaviours);
49
- }
50
- releasePropertyBindings(source) {
51
- source.$fastController.removeBehaviors(this.bindingBehaviours);
52
- this.bindingBehaviours = [];
55
+ for (const behavior of this.bindingBehaviours) {
56
+ behavior.bind({
57
+ source,
58
+ context: source.$fastController.context
59
+ });
60
+ }
53
61
  }
62
+ // private releasePropertyBindings(source: DelegatesAriaElement) {
63
+ // for (const behavior of this.bindingBehaviours) {
64
+ // (behavior as any).unbind(); // TODO: fix type
65
+ // }
66
+ // this.bindingBehaviours = [];
67
+ // }
54
68
  startForwardingPropertiesToTarget(source, delegatedProperties, target) {
55
69
  for (const key of delegatedProperties) {
56
- this.forwardPropertyToTarget(target, key, source[key]);
70
+ if (!(key in this.boundProperties)) {
71
+ this.forwardPropertyToTarget(target, key, source[key]);
72
+ }
57
73
  }
58
- subscribeToAriaPropertyChanges(source, this.onSourceAriaPropertyChanged);
59
- }
60
- stopForwardingPropertiesToTarget(source) {
61
- unsubscribeFromAriaPropertyChanges(
74
+ subscribeToAriaPropertyChanges(
62
75
  source,
63
76
  this.onSourceAriaPropertyChanged
64
77
  );
65
78
  }
66
79
  forwardPropertyToTarget(target, property, value) {
67
- DOM.setAttribute(target, ariaAttributeName(property), value);
80
+ if (value === null || value === void 0 || value === false) {
81
+ target.removeAttribute(ariaAttributeName(property));
82
+ } else {
83
+ target.setAttribute(ariaAttributeName(property), String(value));
84
+ }
68
85
  }
69
86
  }
70
87
 
88
+ class DelegateAriaDirective extends StatelessAttachedAttributeDirective {
89
+ constructor(boundProperties, forwardedProperties) {
90
+ super("vvd-delegate-aria");
91
+ this.boundProperties = boundProperties;
92
+ this.forwardedProperties = forwardedProperties;
93
+ /**
94
+ * The structural id of the DOM node to which the created behavior will apply.
95
+ */
96
+ this.targetNodeId = "";
97
+ }
98
+ bind(controller) {
99
+ const targetElement = controller.targets[this.targetNodeId];
100
+ const behavior = new DelegateAriaBehavior(
101
+ targetElement,
102
+ // Pass the target element as target
103
+ {
104
+ boundProperties: this.boundProperties,
105
+ forwardedProperties: this.forwardedProperties
106
+ }
107
+ );
108
+ behavior.bind(controller);
109
+ }
110
+ }
111
+ HTMLDirective.define(DelegateAriaDirective);
71
112
  function delegateAria(boundProperties = {}, options = {}) {
72
113
  const forwardedProperties = new Set(
73
114
  (options.onlySpecified ? [] : ariaMixinProperties).filter(
74
115
  (p) => !(p in boundProperties)
75
116
  )
76
117
  );
77
- return new AttachedBehaviorHTMLDirective(
78
- "vvd-delegate-aria",
79
- DelegateAriaBehavior,
80
- {
81
- boundProperties,
82
- forwardedProperties
83
- }
84
- );
118
+ return new DelegateAriaDirective(boundProperties, forwardedProperties);
85
119
  }
86
120
  const DelegatesAria = (Base) => {
87
121
  class DelegatesAriaElement extends Base {
@@ -133,7 +133,7 @@ const FormAssociated = (Base) => {
133
133
  if (this.proxy instanceof HTMLElement) {
134
134
  this.proxy.disabled = this.disabled;
135
135
  }
136
- fastElement.DOM.queueUpdate(() => this.classList.toggle("disabled", this.disabled));
136
+ fastElement.Updates.enqueue(() => this.classList.toggle("disabled", this.disabled));
137
137
  }
138
138
  /**
139
139
  * @internal
@@ -150,7 +150,7 @@ const FormAssociated = (Base) => {
150
150
  if (this.proxy instanceof HTMLElement) {
151
151
  this.proxy.required = this.required;
152
152
  }
153
- fastElement.DOM.queueUpdate(() => this.classList.toggle("required", this.required));
153
+ fastElement.Updates.enqueue(() => this.classList.toggle("required", this.required));
154
154
  this.validate();
155
155
  }
156
156
  /**
@@ -1,4 +1,4 @@
1
- import { attr, emptyArray, DOM } from '@microsoft/fast-element';
1
+ import { attr, emptyArray, Updates } from '@microsoft/fast-element';
2
2
  import { keyEnter } from '@microsoft/fast-web-utilities';
3
3
 
4
4
  var __defProp = Object.defineProperty;
@@ -131,7 +131,7 @@ const FormAssociated = (Base) => {
131
131
  if (this.proxy instanceof HTMLElement) {
132
132
  this.proxy.disabled = this.disabled;
133
133
  }
134
- DOM.queueUpdate(() => this.classList.toggle("disabled", this.disabled));
134
+ Updates.enqueue(() => this.classList.toggle("disabled", this.disabled));
135
135
  }
136
136
  /**
137
137
  * @internal
@@ -148,7 +148,7 @@ const FormAssociated = (Base) => {
148
148
  if (this.proxy instanceof HTMLElement) {
149
149
  this.proxy.required = this.required;
150
150
  }
151
- DOM.queueUpdate(() => this.classList.toggle("required", this.required));
151
+ Updates.enqueue(() => this.classList.toggle("required", this.required));
152
152
  this.validate();
153
153
  }
154
154
  /**
@@ -6,51 +6,76 @@ const attributeBindingBehaviour = require('./attribute-binding-behaviour.cjs');
6
6
 
7
7
  class HostSemanticsBehavior {
8
8
  constructor(target, params) {
9
- this.target = target;
9
+ this.target = null;
10
+ // unbind(controller: ViewController) {
11
+ // const source = controller.source as HostSemanticsElement;
12
+ // this.releasePropertyBindings(source);
13
+ // }
10
14
  this.bindingBehaviours = [];
15
+ this.target = target;
11
16
  this.boundProperties = params.boundProperties;
12
17
  }
13
- bind(source) {
18
+ bind(controller) {
19
+ const source = controller.source;
14
20
  if (this.target !== source) {
15
21
  throw new Error("Target element must be the same as the source element");
16
22
  }
17
23
  this.bindPropertiesToTarget(source, this.boundProperties, this.target);
18
24
  }
19
- unbind(source) {
20
- this.releasePropertyBindings(source);
21
- }
22
25
  bindPropertiesToTarget(source, boundProperties, target) {
23
26
  for (const [property, binding] of Object.entries(boundProperties)) {
24
27
  const bindingFn = binding instanceof Function ? binding : (x) => x[property] ?? binding;
25
28
  this.bindingBehaviours.push(
26
29
  new attributeBindingBehaviour.AttributeBindingBehavior(
27
30
  target,
28
- bindingFn,
31
+ fastElement.oneWay(bindingFn),
29
32
  true,
30
33
  vividElement.ariaAttributeName(property)
31
34
  )
32
35
  );
33
36
  }
34
- source.$fastController.addBehaviors(this.bindingBehaviours);
35
- }
36
- releasePropertyBindings(source) {
37
- source.$fastController.removeBehaviors(this.bindingBehaviours);
38
- this.bindingBehaviours = [];
37
+ for (const behavior of this.bindingBehaviours) {
38
+ behavior.bind({
39
+ source,
40
+ context: source.$fastController.context
41
+ });
42
+ }
39
43
  }
44
+ // private releasePropertyBindings(source: HostSemanticsElement) {
45
+ // for (const behavior of this.bindingBehaviours) {
46
+ // (behavior as any).unbind();
47
+ // }
48
+ // this.bindingBehaviours = [];
49
+ // }
40
50
  }
41
51
 
52
+ class HostSemanticsDirective extends fastElement.StatelessAttachedAttributeDirective {
53
+ constructor(boundProperties) {
54
+ super("vvd-host-semantics");
55
+ this.boundProperties = boundProperties;
56
+ /**
57
+ * The structural id of the DOM node to which the created behavior will apply.
58
+ */
59
+ this.targetNodeId = "";
60
+ }
61
+ bind(controller) {
62
+ const targetElement = controller.targets[this.targetNodeId];
63
+ const behavior = new HostSemanticsBehavior(
64
+ targetElement,
65
+ // Pass the target element as target
66
+ {
67
+ boundProperties: this.boundProperties,
68
+ forwardedProperties: new Set(
69
+ vividElement.ariaMixinProperties.filter((p) => !(p in this.boundProperties))
70
+ )
71
+ }
72
+ );
73
+ behavior.bind(controller);
74
+ }
75
+ }
76
+ fastElement.HTMLDirective.define(HostSemanticsDirective);
42
77
  function applyHostSemantics(boundProperties = {}) {
43
- const forwardedProperties = new Set(
44
- vividElement.ariaMixinProperties.filter((p) => !(p in boundProperties))
45
- );
46
- return new fastElement.AttachedBehaviorHTMLDirective(
47
- "vvd-host-semantics",
48
- HostSemanticsBehavior,
49
- {
50
- boundProperties,
51
- forwardedProperties
52
- }
53
- );
78
+ return new HostSemanticsDirective(boundProperties);
54
79
  }
55
80
  const HostSemantics = (Base) => {
56
81
  class HostSemanticsElement extends Base {
@@ -1,54 +1,79 @@
1
- import { AttachedBehaviorHTMLDirective } from '@microsoft/fast-element';
1
+ import { oneWay, StatelessAttachedAttributeDirective, HTMLDirective } from '@microsoft/fast-element';
2
2
  import { a as ariaAttributeName, b as ariaMixinProperties } from './vivid-element.js';
3
3
  import { A as AttributeBindingBehavior } from './attribute-binding-behaviour.js';
4
4
 
5
5
  class HostSemanticsBehavior {
6
6
  constructor(target, params) {
7
- this.target = target;
7
+ this.target = null;
8
+ // unbind(controller: ViewController) {
9
+ // const source = controller.source as HostSemanticsElement;
10
+ // this.releasePropertyBindings(source);
11
+ // }
8
12
  this.bindingBehaviours = [];
13
+ this.target = target;
9
14
  this.boundProperties = params.boundProperties;
10
15
  }
11
- bind(source) {
16
+ bind(controller) {
17
+ const source = controller.source;
12
18
  if (this.target !== source) {
13
19
  throw new Error("Target element must be the same as the source element");
14
20
  }
15
21
  this.bindPropertiesToTarget(source, this.boundProperties, this.target);
16
22
  }
17
- unbind(source) {
18
- this.releasePropertyBindings(source);
19
- }
20
23
  bindPropertiesToTarget(source, boundProperties, target) {
21
24
  for (const [property, binding] of Object.entries(boundProperties)) {
22
25
  const bindingFn = binding instanceof Function ? binding : (x) => x[property] ?? binding;
23
26
  this.bindingBehaviours.push(
24
27
  new AttributeBindingBehavior(
25
28
  target,
26
- bindingFn,
29
+ oneWay(bindingFn),
27
30
  true,
28
31
  ariaAttributeName(property)
29
32
  )
30
33
  );
31
34
  }
32
- source.$fastController.addBehaviors(this.bindingBehaviours);
33
- }
34
- releasePropertyBindings(source) {
35
- source.$fastController.removeBehaviors(this.bindingBehaviours);
36
- this.bindingBehaviours = [];
35
+ for (const behavior of this.bindingBehaviours) {
36
+ behavior.bind({
37
+ source,
38
+ context: source.$fastController.context
39
+ });
40
+ }
37
41
  }
42
+ // private releasePropertyBindings(source: HostSemanticsElement) {
43
+ // for (const behavior of this.bindingBehaviours) {
44
+ // (behavior as any).unbind();
45
+ // }
46
+ // this.bindingBehaviours = [];
47
+ // }
38
48
  }
39
49
 
50
+ class HostSemanticsDirective extends StatelessAttachedAttributeDirective {
51
+ constructor(boundProperties) {
52
+ super("vvd-host-semantics");
53
+ this.boundProperties = boundProperties;
54
+ /**
55
+ * The structural id of the DOM node to which the created behavior will apply.
56
+ */
57
+ this.targetNodeId = "";
58
+ }
59
+ bind(controller) {
60
+ const targetElement = controller.targets[this.targetNodeId];
61
+ const behavior = new HostSemanticsBehavior(
62
+ targetElement,
63
+ // Pass the target element as target
64
+ {
65
+ boundProperties: this.boundProperties,
66
+ forwardedProperties: new Set(
67
+ ariaMixinProperties.filter((p) => !(p in this.boundProperties))
68
+ )
69
+ }
70
+ );
71
+ behavior.bind(controller);
72
+ }
73
+ }
74
+ HTMLDirective.define(HostSemanticsDirective);
40
75
  function applyHostSemantics(boundProperties = {}) {
41
- const forwardedProperties = new Set(
42
- ariaMixinProperties.filter((p) => !(p in boundProperties))
43
- );
44
- return new AttachedBehaviorHTMLDirective(
45
- "vvd-host-semantics",
46
- HostSemanticsBehavior,
47
- {
48
- boundProperties,
49
- forwardedProperties
50
- }
51
- );
76
+ return new HostSemanticsDirective(boundProperties);
52
77
  }
53
78
  const HostSemantics = (Base) => {
54
79
  class HostSemanticsElement extends Base {