@vonage/vivid 5.2.0 → 5.3.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 (373) hide show
  1. package/accordion-item/definition.cjs +2 -1
  2. package/accordion-item/definition.js +2 -1
  3. package/alert/index.cjs +1 -1
  4. package/alert/index.js +1 -1
  5. package/audio-player/definition.cjs +4 -2
  6. package/audio-player/definition.js +4 -2
  7. package/audio-player/index.cjs +5 -3
  8. package/audio-player/index.js +5 -3
  9. package/badge/index.cjs +2 -2
  10. package/badge/index.js +4 -4
  11. package/banner/index.cjs +3 -3
  12. package/banner/index.js +6 -6
  13. package/breadcrumb-item/index.cjs +1 -1
  14. package/breadcrumb-item/index.js +1 -1
  15. package/bundled/affix.cjs +7 -7
  16. package/bundled/affix.js +5 -5
  17. package/bundled/anchored.cjs +1 -1
  18. package/bundled/anchored.js +6 -6
  19. package/bundled/attribute-binding-behaviour.cjs +1 -1
  20. package/bundled/attribute-binding-behaviour.js +15 -13
  21. package/bundled/base-color-picker.cjs +13 -0
  22. package/bundled/base-color-picker.js +194 -0
  23. package/bundled/button.cjs +1 -1
  24. package/bundled/button.js +2 -2
  25. package/bundled/calendar-picker.template.cjs +1 -1
  26. package/bundled/calendar-picker.template.js +21 -21
  27. package/bundled/char-count.cjs +1 -1
  28. package/bundled/char-count.js +1 -1
  29. package/bundled/children.cjs +1 -1
  30. package/bundled/children.js +28 -20
  31. package/bundled/definition.cjs +3 -3
  32. package/bundled/definition.js +38 -38
  33. package/bundled/definition10.cjs +72 -18
  34. package/bundled/definition10.js +351 -65
  35. package/bundled/definition11.cjs +19 -10
  36. package/bundled/definition11.js +66 -37
  37. package/bundled/definition12.cjs +10 -1
  38. package/bundled/definition12.js +38 -14
  39. package/bundled/definition13.cjs +1 -73
  40. package/bundled/definition13.js +15 -354
  41. package/bundled/definition15.cjs +1 -1
  42. package/bundled/definition15.js +1 -1
  43. package/bundled/definition16.cjs +2 -2
  44. package/bundled/definition16.js +8 -8
  45. package/bundled/definition17.cjs +7 -7
  46. package/bundled/definition17.js +17 -17
  47. package/bundled/definition19.cjs +5 -5
  48. package/bundled/definition19.js +8 -8
  49. package/bundled/definition2.cjs +9 -5
  50. package/bundled/definition2.js +21 -17
  51. package/bundled/definition22.cjs +9 -9
  52. package/bundled/definition22.js +31 -31
  53. package/bundled/definition3.cjs +1 -1
  54. package/bundled/definition3.js +1 -1
  55. package/bundled/definition6.cjs +1 -1
  56. package/bundled/definition6.js +10 -10
  57. package/bundled/definition7.cjs +1 -1
  58. package/bundled/definition7.js +6 -6
  59. package/bundled/definition8.cjs +2 -2
  60. package/bundled/definition8.js +4 -4
  61. package/bundled/definition9.cjs +1 -1
  62. package/bundled/definition9.js +1 -1
  63. package/bundled/delegates-aria.cjs +1 -1
  64. package/bundled/delegates-aria.js +59 -46
  65. package/bundled/form-associated.cjs +1 -1
  66. package/bundled/form-associated.js +3 -3
  67. package/bundled/host-semantics.cjs +1 -1
  68. package/bundled/host-semantics.js +48 -34
  69. package/bundled/localized.cjs +1 -1
  70. package/bundled/localized.js +41 -30
  71. package/bundled/mixins.cjs +18 -18
  72. package/bundled/mixins.js +99 -93
  73. package/bundled/normalize.cjs +1 -0
  74. package/bundled/normalize.js +7 -0
  75. package/bundled/picker-field.template.cjs +1 -1
  76. package/bundled/picker-field.template.js +4 -4
  77. package/bundled/ref.cjs +1 -1
  78. package/bundled/ref.js +8 -25
  79. package/bundled/repeat.cjs +1 -1
  80. package/bundled/repeat.js +459 -233
  81. package/bundled/slider.template.cjs +1 -1
  82. package/bundled/slider.template.js +2 -2
  83. package/bundled/slotted.cjs +1 -1
  84. package/bundled/slotted.js +62 -45
  85. package/bundled/time-selection-picker.template.cjs +1 -1
  86. package/bundled/time-selection-picker.template.js +5 -5
  87. package/bundled/vivid-element.cjs +1 -1
  88. package/bundled/vivid-element.js +2126 -1172
  89. package/bundled/when.cjs +1 -1
  90. package/bundled/when.js +8 -7
  91. package/calendar/definition.cjs +1 -1
  92. package/calendar/definition.js +2 -2
  93. package/calendar/index.cjs +1 -1
  94. package/calendar/index.js +6 -6
  95. package/calendar-event/index.cjs +1 -1
  96. package/calendar-event/index.js +1 -1
  97. package/card/definition.cjs +10 -2
  98. package/card/definition.js +10 -2
  99. package/card/index.cjs +19 -11
  100. package/card/index.js +35 -27
  101. package/color-picker/definition.cjs +1079 -0
  102. package/color-picker/definition.js +1073 -0
  103. package/color-picker/index.cjs +127 -0
  104. package/color-picker/index.js +726 -0
  105. package/combobox/definition.cjs +1 -1
  106. package/combobox/definition.js +2 -2
  107. package/combobox/index.cjs +4 -4
  108. package/combobox/index.js +15 -15
  109. package/contextual-help/index.cjs +1 -1
  110. package/contextual-help/index.js +1 -1
  111. package/custom-elements.json +1365 -161
  112. package/data-grid/definition.cjs +862 -27
  113. package/data-grid/definition.js +863 -28
  114. package/data-grid/index.cjs +25 -25
  115. package/data-grid/index.js +175 -168
  116. package/date-picker/index.cjs +1 -1
  117. package/date-picker/index.js +2 -2
  118. package/date-range-picker/index.cjs +1 -1
  119. package/date-range-picker/index.js +2 -2
  120. package/date-time-picker/index.cjs +1 -1
  121. package/date-time-picker/index.js +2 -2
  122. package/dial-pad/definition.cjs +4 -0
  123. package/dial-pad/definition.js +4 -0
  124. package/dial-pad/index.cjs +3 -3
  125. package/dial-pad/index.js +42 -39
  126. package/dialog/definition.cjs +4 -1
  127. package/dialog/definition.js +4 -1
  128. package/dialog/index.cjs +21 -18
  129. package/dialog/index.js +43 -40
  130. package/empty-state/definition.cjs +7 -2
  131. package/empty-state/definition.js +7 -2
  132. package/empty-state/index.cjs +10 -5
  133. package/empty-state/index.js +18 -13
  134. package/fab/index.cjs +2 -2
  135. package/fab/index.js +4 -4
  136. package/file-picker/definition.cjs +2 -2
  137. package/file-picker/definition.js +3 -3
  138. package/file-picker/index.cjs +1 -1
  139. package/file-picker/index.js +4 -4
  140. package/icon/definition.cjs +10 -6
  141. package/icon/definition.js +10 -6
  142. package/index.cjs +4 -0
  143. package/index.js +1 -0
  144. package/lib/accordion-item/accordion-item.d.ts +2 -2
  145. package/lib/action-group/action-group.d.ts +2 -2
  146. package/lib/alert/alert.d.ts +4 -4
  147. package/lib/audio-player/audio-player.d.ts +2 -2
  148. package/lib/avatar/avatar.d.ts +2 -2
  149. package/lib/badge/badge.d.ts +2 -2
  150. package/lib/banner/banner.d.ts +6 -6
  151. package/lib/breadcrumb/breadcrumb.d.ts +2 -2
  152. package/lib/breadcrumb-item/breadcrumb-item.d.ts +2 -2
  153. package/lib/button/button.d.ts +6 -6
  154. package/lib/button/button.template.d.ts +2 -1
  155. package/lib/calendar/calendar.d.ts +1 -1
  156. package/lib/calendar-event/calendar-event.d.ts +2 -2
  157. package/lib/card/card.d.ts +2 -2
  158. package/lib/checkbox/checkbox.d.ts +12 -12
  159. package/lib/color-picker/color-picker.d.ts +2420 -0
  160. package/lib/color-picker/color-picker.template.d.ts +3 -0
  161. package/lib/color-picker/definition.d.ts +4 -0
  162. package/lib/color-picker/locale.d.ts +9 -0
  163. package/lib/combobox/combobox.d.ts +14 -14
  164. package/lib/components.d.ts +1 -0
  165. package/lib/data-grid/data-grid-cell.d.ts +4 -4
  166. package/lib/data-grid/data-grid-row.d.ts +3 -4
  167. package/lib/data-grid/data-grid.d.ts +1 -2
  168. package/lib/date-picker/date-picker.d.ts +54 -54
  169. package/lib/date-range-picker/date-range-picker.d.ts +28 -28
  170. package/lib/date-time-picker/date-time-picker.d.ts +56 -56
  171. package/lib/dial-pad/dial-pad.d.ts +3 -2
  172. package/lib/dialog/dialog.d.ts +4 -4
  173. package/lib/divider/divider.d.ts +2 -2
  174. package/lib/fab/fab.d.ts +2 -2
  175. package/lib/file-picker/file-picker.d.ts +14 -14
  176. package/lib/header/header.d.ts +2 -2
  177. package/lib/menu/menu.d.ts +4 -4
  178. package/lib/menu-item/menu-item.d.ts +4 -4
  179. package/lib/nav/nav.d.ts +2 -2
  180. package/lib/nav-disclosure/nav-disclosure.d.ts +4 -4
  181. package/lib/nav-item/nav-item.d.ts +4 -4
  182. package/lib/note/note.d.ts +2 -2
  183. package/lib/number-field/number-field.d.ts +18 -18
  184. package/lib/option/option.d.ts +4 -4
  185. package/lib/pagination/pagination.d.ts +2 -2
  186. package/lib/progress/progress.d.ts +2 -2
  187. package/lib/progress-ring/progress-ring.d.ts +2 -2
  188. package/lib/radio/radio.d.ts +6 -6
  189. package/lib/radio-group/radio-group.d.ts +2 -2
  190. package/lib/range-slider/range-slider.d.ts +6 -6
  191. package/lib/rich-text-editor/menubar/menubar.d.ts +2 -2
  192. package/lib/rich-text-editor/rich-text-editor.d.ts +2 -2
  193. package/lib/searchable-select/option-tag.d.ts +2 -2
  194. package/lib/searchable-select/searchable-select.d.ts +18 -18
  195. package/lib/select/select.d.ts +16 -16
  196. package/lib/selectable-box/selectable-box.d.ts +2 -2
  197. package/lib/simple-color-picker/locale.d.ts +0 -1
  198. package/lib/simple-color-picker/simple-color-picker.d.ts +47 -821
  199. package/lib/slider/slider.d.ts +6 -6
  200. package/lib/split-button/split-button.d.ts +6 -6
  201. package/lib/switch/switch.d.ts +4 -4
  202. package/lib/tab/tab.d.ts +6 -6
  203. package/lib/tab-panel/tab-panel.d.ts +2 -2
  204. package/lib/tag/tag.d.ts +6 -6
  205. package/lib/tag-group/tag-group.d.ts +2 -2
  206. package/lib/tag-name-map.d.ts +2 -1
  207. package/lib/text-area/text-area.d.ts +16 -16
  208. package/lib/text-field/text-field.d.ts +18 -18
  209. package/lib/time-picker/time-picker.d.ts +28 -28
  210. package/lib/toggletip/toggletip.d.ts +4 -4
  211. package/lib/tooltip/tooltip.d.ts +2 -2
  212. package/lib/tree-item/tree-item.d.ts +4 -4
  213. package/lib/tree-view/tree-view.d.ts +2 -2
  214. package/lib/video-player/video-player.d.ts +2 -2
  215. package/locales/de-DE.cjs +13 -2
  216. package/locales/de-DE.js +13 -2
  217. package/locales/en-GB.cjs +13 -2
  218. package/locales/en-GB.js +13 -2
  219. package/locales/en-US.cjs +13 -2
  220. package/locales/en-US.js +13 -2
  221. package/locales/ja-JP.cjs +13 -2
  222. package/locales/ja-JP.js +13 -2
  223. package/locales/zh-CN.cjs +13 -2
  224. package/locales/zh-CN.js +13 -2
  225. package/menu/definition.cjs +2 -2
  226. package/menu/definition.js +3 -3
  227. package/note/index.cjs +2 -2
  228. package/note/index.js +4 -4
  229. package/number-field/definition.cjs +1 -1
  230. package/number-field/definition.js +2 -2
  231. package/number-field/index.cjs +5 -5
  232. package/number-field/index.js +21 -21
  233. package/option/index.cjs +1 -1
  234. package/option/index.js +1 -1
  235. package/package.json +5 -5
  236. package/pagination/definition.cjs +2 -1
  237. package/pagination/definition.js +2 -1
  238. package/pagination/index.cjs +12 -12
  239. package/pagination/index.js +59 -59
  240. package/progress/index.cjs +1 -1
  241. package/progress/index.js +1 -1
  242. package/radio/definition.cjs +9 -9
  243. package/radio/definition.js +10 -10
  244. package/radio-group/definition.cjs +2 -1
  245. package/radio-group/definition.js +2 -1
  246. package/radio-group/index.cjs +5 -5
  247. package/radio-group/index.js +80 -77
  248. package/range-slider/index.cjs +1 -1
  249. package/range-slider/index.js +1 -1
  250. package/rich-text-editor/definition.cjs +1 -1
  251. package/rich-text-editor/definition.js +2 -2
  252. package/rich-text-editor/index.cjs +2 -2
  253. package/rich-text-editor/index.js +3 -3
  254. package/searchable-select/definition.cjs +3 -3
  255. package/searchable-select/definition.js +4 -4
  256. package/searchable-select/index.cjs +4 -4
  257. package/searchable-select/index.js +8 -8
  258. package/select/definition.cjs +1 -1
  259. package/select/definition.js +2 -2
  260. package/selectable-box/definition.cjs +1 -1
  261. package/selectable-box/definition.js +1 -1
  262. package/selectable-box/index.cjs +3 -3
  263. package/selectable-box/index.js +20 -20
  264. package/shared/aria/aria-change-subscription.d.ts +0 -1
  265. package/shared/aria/aria-mixin.d.ts +2 -2
  266. package/shared/aria/delegate-aria-behavior.d.ts +5 -10
  267. package/shared/aria/delegates-aria.d.ts +3 -3
  268. package/shared/aria/host-semantics-behavior.d.ts +5 -8
  269. package/shared/aria/host-semantics.d.ts +3 -3
  270. package/shared/color-picker/base-color-picker.d.ts +436 -0
  271. package/shared/color-picker/index.d.ts +1 -0
  272. package/shared/color-picker/locale.d.ts +3 -0
  273. package/shared/color-picker/utils.d.ts +1 -0
  274. package/shared/deprecation/replaced-props.d.ts +317 -2
  275. package/shared/design-system/defineVividComponent.d.ts +2 -2
  276. package/shared/feedback/feedback-message.d.ts +2 -2
  277. package/shared/feedback/mixins.d.ts +4 -4
  278. package/shared/foundation/button/button.d.ts +4 -4
  279. package/shared/foundation/form-associated/form-associated.d.ts +4 -4
  280. package/shared/foundation/vivid-element/vivid-element.d.ts +335 -8
  281. package/shared/localization/Locale.d.ts +4 -0
  282. package/shared/patterns/affix.d.ts +4 -4
  283. package/shared/patterns/anchored.d.ts +4 -4
  284. package/shared/patterns/char-count/char-count.d.ts +2 -2
  285. package/shared/patterns/form-elements/form-element.d.ts +4 -4
  286. package/shared/patterns/form-elements/with-contextual-help.d.ts +6 -6
  287. package/shared/patterns/form-elements/with-error-text.d.ts +6 -6
  288. package/shared/patterns/form-elements/with-success-text.d.ts +2 -2
  289. package/shared/patterns/linkable.d.ts +2 -2
  290. package/shared/patterns/localized.d.ts +2 -2
  291. package/shared/patterns/trapped-focus.d.ts +2 -2
  292. package/shared/picker-field/mixins/calendar-picker.d.ts +14 -14
  293. package/shared/picker-field/mixins/calendar-picker.template.d.ts +14 -14
  294. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +2 -2
  295. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +28 -28
  296. package/shared/picker-field/mixins/single-date-picker.d.ts +40 -40
  297. package/shared/picker-field/mixins/single-value-picker.d.ts +12 -12
  298. package/shared/picker-field/mixins/time-selection-picker.d.ts +29 -29
  299. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +28 -28
  300. package/shared/picker-field/picker-field.d.ts +14 -14
  301. package/shared/templating/attribute-binding-behaviour.d.ts +3 -4
  302. package/shared/templating/render-in-light-dom.d.ts +13 -12
  303. package/side-drawer/index.cjs +1 -1
  304. package/side-drawer/index.js +1 -1
  305. package/simple-color-picker/definition.cjs +28 -215
  306. package/simple-color-picker/definition.js +29 -216
  307. package/simple-color-picker/index.cjs +9 -21
  308. package/simple-color-picker/index.js +71 -185
  309. package/styles/core/all.css +1 -1
  310. package/styles/core/theme.css +1 -1
  311. package/styles/core/typography.css +1 -1
  312. package/styles/tokens/theme-dark.css +4 -4
  313. package/styles/tokens/theme-light.css +4 -4
  314. package/styles/tokens/vivid-2-compat.css +1 -1
  315. package/switch/index.cjs +2 -2
  316. package/switch/index.js +4 -4
  317. package/tabs/definition.cjs +1 -1
  318. package/tabs/definition.js +2 -2
  319. package/tabs/index.cjs +2 -2
  320. package/tabs/index.js +16 -16
  321. package/tag/index.cjs +1 -1
  322. package/tag/index.js +1 -1
  323. package/text-area/index.cjs +3 -3
  324. package/text-area/index.js +8 -8
  325. package/text-field/definition.cjs +2 -2
  326. package/text-field/definition.js +3 -3
  327. package/text-field/index.cjs +1 -1
  328. package/text-field/index.js +1 -1
  329. package/time-picker/index.cjs +1 -1
  330. package/time-picker/index.js +2 -2
  331. package/toggletip/definition.cjs +1 -1
  332. package/toggletip/definition.js +2 -2
  333. package/tree-view/definition.cjs +1 -1
  334. package/tree-view/definition.js +2 -2
  335. package/tree-view/index.cjs +2 -2
  336. package/tree-view/index.js +6 -6
  337. package/unbundled/_commonjsHelpers.cjs +36 -0
  338. package/unbundled/_commonjsHelpers.js +32 -0
  339. package/unbundled/affix.cjs +1 -1
  340. package/unbundled/affix.js +1 -1
  341. package/unbundled/attribute-binding-behaviour.cjs +11 -10
  342. package/unbundled/attribute-binding-behaviour.js +11 -10
  343. package/unbundled/base-color-picker.cjs +278 -0
  344. package/unbundled/base-color-picker.js +275 -0
  345. package/unbundled/button.cjs +1 -1
  346. package/unbundled/button.js +2 -2
  347. package/unbundled/calendar-picker.template.cjs +3 -3
  348. package/unbundled/calendar-picker.template.js +4 -4
  349. package/unbundled/definition2.cjs +1 -1
  350. package/unbundled/definition2.js +2 -2
  351. package/unbundled/definition3.cjs +2 -1
  352. package/unbundled/definition3.js +2 -1
  353. package/unbundled/delegates-aria.cjs +67 -33
  354. package/unbundled/delegates-aria.js +69 -35
  355. package/unbundled/form-associated.cjs +2 -2
  356. package/unbundled/form-associated.js +3 -3
  357. package/unbundled/host-semantics.cjs +47 -22
  358. package/unbundled/host-semantics.js +48 -23
  359. package/unbundled/mixins.cjs +34 -27
  360. package/unbundled/mixins.js +35 -28
  361. package/unbundled/picker-field.template.cjs +2 -2
  362. package/unbundled/picker-field.template.js +3 -3
  363. package/unbundled/time-selection-picker.template.cjs +4 -4
  364. package/unbundled/time-selection-picker.template.js +5 -5
  365. package/unbundled/vivid-element.cjs +22 -15
  366. package/unbundled/vivid-element.js +23 -15
  367. package/video-player/definition.cjs +69007 -1
  368. package/video-player/definition.js +69007 -1
  369. package/video-player/index.cjs +35 -35
  370. package/video-player/index.js +1358 -1384
  371. package/visually-hidden/index.cjs +1 -1
  372. package/visually-hidden/index.js +1 -1
  373. package/vivid.api.json +317 -69
@@ -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 {
@@ -64,35 +64,39 @@ const feedbackMessageDefinition = vividElement.defineVividComponent(
64
64
  );
65
65
 
66
66
  class RenderInLightDomBehaviour {
67
- constructor(templateBinding, isTemplateBindingVolatile) {
67
+ constructor(directive) {
68
68
  this.source = null;
69
- this.templateBindingObserver = fastElement.Observable.binding(
70
- templateBinding,
69
+ this.templateBindingObserver = directive.templateBinding.createObserver(
71
70
  this,
72
- isTemplateBindingVolatile
71
+ directive
73
72
  );
74
73
  }
75
- bind(source, context) {
76
- this.source = source;
77
- this.context = context;
74
+ bind(controller) {
75
+ this.source = controller.source;
76
+ this.context = controller.context;
77
+ this.controller = controller;
78
78
  if (!this.insertionPoint) {
79
79
  this.insertionPoint = document.createComment("");
80
- source.appendChild(this.insertionPoint);
80
+ this.source.appendChild(this.insertionPoint);
81
81
  }
82
- this.handleChange();
83
- }
84
- unbind() {
85
- this.source = null;
86
- this.view.unbind();
87
- this.templateBindingObserver.disconnect();
82
+ this.templateBindingObserver.bind(controller);
83
+ this.handleChange(this.source, this.templateBindingObserver);
88
84
  }
85
+ // unbind(): void {
86
+ // this.source = null;
87
+ // if (this.view) {
88
+ // this.view.unbind();
89
+ // }
90
+ // // The observer will be automatically cleaned up when the behavior is destroyed
91
+ // }
89
92
  /**
90
93
  * Handles change of the template itself.
91
94
  */
92
- handleChange() {
93
- this.instantiateTemplate(
94
- this.templateBindingObserver.observe(this.source, this.context)
95
- );
95
+ handleChange(source, args) {
96
+ if (args === this.templateBindingObserver) {
97
+ const template = this.templateBindingObserver.bind(this.controller);
98
+ this.instantiateTemplate(template);
99
+ }
96
100
  }
97
101
  instantiateTemplate(template) {
98
102
  if (this.view) {
@@ -103,22 +107,25 @@ class RenderInLightDomBehaviour {
103
107
  this.view.insertBefore(this.insertionPoint);
104
108
  }
105
109
  }
106
- class RenderInLightDomDirective extends fastElement.HTMLDirective {
110
+ class RenderInLightDomDirective {
107
111
  constructor(templateBinding) {
108
- super();
112
+ /**
113
+ * The structural id of the DOM node to which the created behavior will apply.
114
+ */
115
+ this.targetNodeId = "";
109
116
  this.templateBinding = templateBinding;
110
- this.createPlaceholder = fastElement.DOM.createBlockPlaceholder;
111
- this.isTemplateBindingVolatile = fastElement.Observable.isVolatileBinding(templateBinding);
117
+ this.dataBinding = templateBinding;
118
+ }
119
+ createHTML(add) {
120
+ return fastElement.Markup.comment(add(this));
112
121
  }
113
122
  createBehavior() {
114
- return new RenderInLightDomBehaviour(
115
- this.templateBinding,
116
- this.isTemplateBindingVolatile
117
- );
123
+ return new RenderInLightDomBehaviour(this);
118
124
  }
119
125
  }
126
+ fastElement.HTMLDirective.define(RenderInLightDomDirective);
120
127
  function renderInLightDOM(templateOrTemplateBinding) {
121
- const templateBinding = typeof templateOrTemplateBinding === "function" ? templateOrTemplateBinding : () => templateOrTemplateBinding;
128
+ const templateBinding = fastElement.normalizeBinding(templateOrTemplateBinding);
122
129
  return new RenderInLightDomDirective(templateBinding);
123
130
  }
124
131
 
@@ -1,4 +1,4 @@
1
- import { html, when, attr, HTMLDirective, DOM, Observable, observable, slotted } from '@microsoft/fast-element';
1
+ import { html, when, attr, normalizeBinding, Markup, HTMLDirective, observable, slotted } from '@microsoft/fast-element';
2
2
  import { v4 } from 'uuid';
3
3
  import { classNames } from '@microsoft/fast-web-utilities';
4
4
  import { iconDefinition, VwcIconElement as Icon } from '../icon/definition.js';
@@ -62,35 +62,39 @@ const feedbackMessageDefinition = defineVividComponent(
62
62
  );
63
63
 
64
64
  class RenderInLightDomBehaviour {
65
- constructor(templateBinding, isTemplateBindingVolatile) {
65
+ constructor(directive) {
66
66
  this.source = null;
67
- this.templateBindingObserver = Observable.binding(
68
- templateBinding,
67
+ this.templateBindingObserver = directive.templateBinding.createObserver(
69
68
  this,
70
- isTemplateBindingVolatile
69
+ directive
71
70
  );
72
71
  }
73
- bind(source, context) {
74
- this.source = source;
75
- this.context = context;
72
+ bind(controller) {
73
+ this.source = controller.source;
74
+ this.context = controller.context;
75
+ this.controller = controller;
76
76
  if (!this.insertionPoint) {
77
77
  this.insertionPoint = document.createComment("");
78
- source.appendChild(this.insertionPoint);
78
+ this.source.appendChild(this.insertionPoint);
79
79
  }
80
- this.handleChange();
81
- }
82
- unbind() {
83
- this.source = null;
84
- this.view.unbind();
85
- this.templateBindingObserver.disconnect();
80
+ this.templateBindingObserver.bind(controller);
81
+ this.handleChange(this.source, this.templateBindingObserver);
86
82
  }
83
+ // unbind(): void {
84
+ // this.source = null;
85
+ // if (this.view) {
86
+ // this.view.unbind();
87
+ // }
88
+ // // The observer will be automatically cleaned up when the behavior is destroyed
89
+ // }
87
90
  /**
88
91
  * Handles change of the template itself.
89
92
  */
90
- handleChange() {
91
- this.instantiateTemplate(
92
- this.templateBindingObserver.observe(this.source, this.context)
93
- );
93
+ handleChange(source, args) {
94
+ if (args === this.templateBindingObserver) {
95
+ const template = this.templateBindingObserver.bind(this.controller);
96
+ this.instantiateTemplate(template);
97
+ }
94
98
  }
95
99
  instantiateTemplate(template) {
96
100
  if (this.view) {
@@ -101,22 +105,25 @@ class RenderInLightDomBehaviour {
101
105
  this.view.insertBefore(this.insertionPoint);
102
106
  }
103
107
  }
104
- class RenderInLightDomDirective extends HTMLDirective {
108
+ class RenderInLightDomDirective {
105
109
  constructor(templateBinding) {
106
- super();
110
+ /**
111
+ * The structural id of the DOM node to which the created behavior will apply.
112
+ */
113
+ this.targetNodeId = "";
107
114
  this.templateBinding = templateBinding;
108
- this.createPlaceholder = DOM.createBlockPlaceholder;
109
- this.isTemplateBindingVolatile = Observable.isVolatileBinding(templateBinding);
115
+ this.dataBinding = templateBinding;
116
+ }
117
+ createHTML(add) {
118
+ return Markup.comment(add(this));
110
119
  }
111
120
  createBehavior() {
112
- return new RenderInLightDomBehaviour(
113
- this.templateBinding,
114
- this.isTemplateBindingVolatile
115
- );
121
+ return new RenderInLightDomBehaviour(this);
116
122
  }
117
123
  }
124
+ HTMLDirective.define(RenderInLightDomDirective);
118
125
  function renderInLightDOM(templateOrTemplateBinding) {
119
- const templateBinding = typeof templateOrTemplateBinding === "function" ? templateOrTemplateBinding : () => templateOrTemplateBinding;
126
+ const templateBinding = normalizeBinding(templateOrTemplateBinding);
120
127
  return new RenderInLightDomDirective(templateBinding);
121
128
  }
122
129
 
@@ -146,10 +146,10 @@ class PickerField extends withContextualHelp.WithContextualHelp(
146
146
  () => this.locale,
147
147
  this.#localeChangeHandler
148
148
  );
149
- this.#localeChangeObserver.observe(this, fastElement.defaultExecutionContext);
149
+ this.#localeChangeObserver.observe(this, fastElement.ExecutionContext.default);
150
150
  }
151
151
  #stopObservingLocaleChanges() {
152
- this.#localeChangeObserver.disconnect();
152
+ this.#localeChangeObserver.dispose();
153
153
  }
154
154
  #dismissOnClickOutside;
155
155
  #openPopupIfPossible() {
@@ -1,4 +1,4 @@
1
- import { Observable, defaultExecutionContext, attr, observable, ref, slotted, html } from '@microsoft/fast-element';
1
+ import { Observable, ExecutionContext, attr, observable, ref, slotted, html } from '@microsoft/fast-element';
2
2
  import { h as handleEscapeKeyAndStopPropogation } from './index.js';
3
3
  import { a as WithFeedback } from './mixins.js';
4
4
  import { F as FormAssociated } from './form-associated.js';
@@ -144,10 +144,10 @@ class PickerField extends WithContextualHelp(
144
144
  () => this.locale,
145
145
  this.#localeChangeHandler
146
146
  );
147
- this.#localeChangeObserver.observe(this, defaultExecutionContext);
147
+ this.#localeChangeObserver.observe(this, ExecutionContext.default);
148
148
  }
149
149
  #stopObservingLocaleChanges() {
150
- this.#localeChangeObserver.disconnect();
150
+ this.#localeChangeObserver.dispose();
151
151
  }
152
152
  #dismissOnClickOutside;
153
153
  #openPopupIfPossible() {
@@ -562,10 +562,10 @@ const TimeSelectionPicker = (Base) => {
562
562
  () => this._use12hClock,
563
563
  this.#clockChangeHandler
564
564
  );
565
- this.#clockChangeObserver.observe(this, fastElement.defaultExecutionContext);
565
+ this.#clockChangeObserver.observe(this, fastElement.ExecutionContext.default);
566
566
  }
567
567
  #stopObservingClockChanges() {
568
- this.#clockChangeObserver.disconnect();
568
+ this.#clockChangeObserver.dispose();
569
569
  }
570
570
  /**
571
571
  * @internal
@@ -588,7 +588,7 @@ const TimeSelectionPicker = (Base) => {
588
588
  _onPickerButtonClick() {
589
589
  super._onPickerButtonClick();
590
590
  if (this._popupOpen) {
591
- fastElement.DOM.processUpdates();
591
+ fastElement.Updates.process();
592
592
  this._inlineTimePickerEl.scrollSelectedOptionsToTop();
593
593
  }
594
594
  }
@@ -748,7 +748,7 @@ class TimePicker extends TimeSelectionPicker(
748
748
  _onPickerButtonClick() {
749
749
  super._onPickerButtonClick();
750
750
  if (this._popupOpen) {
751
- fastElement.DOM.processUpdates();
751
+ fastElement.Updates.process();
752
752
  this._focusableElsWithinDialog()[0]?.focus();
753
753
  }
754
754
  }