@fabric-msft/fabric-web 5.0.0 → 5.0.1

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 (230) hide show
  1. package/CHANGELOG.json +180 -0
  2. package/CHANGELOG.md +56 -1
  3. package/dist/dts/components/accordion-menu/accordion-menu.d.ts +1 -1
  4. package/dist/dts/components/accordion-menu/accordion-menu.d.ts.map +1 -1
  5. package/dist/dts/components/accordion-menu-panel/accordion-menu-panel.d.ts +2 -2
  6. package/dist/dts/components/accordion-menu-panel/accordion-menu-panel.d.ts.map +1 -1
  7. package/dist/dts/components/component-register.d.ts +67 -0
  8. package/dist/dts/components/component-register.d.ts.map +1 -0
  9. package/dist/dts/components/field/field.d.ts +32 -1
  10. package/dist/dts/components/field/field.d.ts.map +1 -1
  11. package/dist/dts/components/filter-pill/filter-pill.d.ts +1 -1
  12. package/dist/dts/components/filter-pill/filter-pill.d.ts.map +1 -1
  13. package/dist/dts/components/listbox/listbox.d.ts +1 -1
  14. package/dist/dts/components/listbox/listbox.d.ts.map +1 -1
  15. package/dist/dts/components/menu/menu.d.ts +71 -83
  16. package/dist/dts/components/menu/menu.d.ts.map +1 -1
  17. package/dist/dts/components/menu/menu.positioning.d.ts +26 -67
  18. package/dist/dts/components/menu/menu.positioning.d.ts.map +1 -1
  19. package/dist/dts/components/menu/menu.styles.d.ts.map +1 -1
  20. package/dist/dts/components/menu-item/menu-item.d.ts +4 -4
  21. package/dist/dts/components/menu-item/menu-item.d.ts.map +1 -1
  22. package/dist/dts/components/menu-list/menu-list.d.ts +1 -1
  23. package/dist/dts/components/menu-list/menu-list.d.ts.map +1 -1
  24. package/dist/dts/components/option-group/option-group.d.ts +1 -1
  25. package/dist/dts/components/option-group/option-group.d.ts.map +1 -1
  26. package/dist/dts/components/popover/popover.d.ts +48 -69
  27. package/dist/dts/components/popover/popover.d.ts.map +1 -1
  28. package/dist/dts/components/popover/popover.definition.d.ts +1 -1
  29. package/dist/dts/components/popover/popover.definition.d.ts.map +1 -1
  30. package/dist/dts/components/popover/popover.options.d.ts +2 -2
  31. package/dist/dts/components/popover/popover.options.d.ts.map +1 -1
  32. package/dist/dts/components/popover/popover.positioning.d.ts +92 -0
  33. package/dist/dts/components/popover/popover.positioning.d.ts.map +1 -0
  34. package/dist/dts/components/popover/popover.styles.d.ts.map +1 -1
  35. package/dist/dts/components/search-box/search-box.d.ts +1 -1
  36. package/dist/dts/components/search-box/search-box.d.ts.map +1 -1
  37. package/dist/dts/components/search-box/search-box.options.d.ts.map +1 -1
  38. package/dist/dts/components/table/table.d.ts +1 -1
  39. package/dist/dts/components/table/table.d.ts.map +1 -1
  40. package/dist/dts/components/text-input/text-input.base.d.ts +3 -3
  41. package/dist/dts/components/text-input/text-input.base.d.ts.map +1 -1
  42. package/dist/dts/components/text-input/text-input.d.ts.map +1 -1
  43. package/dist/dts/components/tooltip/tooltip.d.ts +5 -0
  44. package/dist/dts/components/tooltip/tooltip.d.ts.map +1 -1
  45. package/dist/dts/components/tooltip/tooltip.template.d.ts +13 -0
  46. package/dist/dts/components/tooltip/tooltip.template.d.ts.map +1 -0
  47. package/dist/dts/components/tree/tree.d.ts +16 -0
  48. package/dist/dts/components/tree/tree.d.ts.map +1 -1
  49. package/dist/dts/components/tree-item/index.d.ts +2 -1
  50. package/dist/dts/components/tree-item/index.d.ts.map +1 -1
  51. package/dist/dts/components/tree-item/tree-item.definition.d.ts.map +1 -1
  52. package/dist/dts/components/tree-item/tree-item.styles.d.ts +2 -0
  53. package/dist/dts/components/tree-item/tree-item.styles.d.ts.map +1 -0
  54. package/dist/dts/components/tree-item/tree-item.template.d.ts +4 -0
  55. package/dist/dts/components/tree-item/tree-item.template.d.ts.map +1 -0
  56. package/dist/dts/components/wizard/wizard.d.ts +1 -1
  57. package/dist/dts/components/wizard/wizard.d.ts.map +1 -1
  58. package/dist/dts/components/wizard-step/wizard-step.d.ts +1 -1
  59. package/dist/dts/components/wizard-step/wizard-step.d.ts.map +1 -1
  60. package/dist/dts/index.d.ts +3 -2
  61. package/dist/dts/index.d.ts.map +1 -1
  62. package/dist/dts/util/accessibility-utilities.d.ts +23 -0
  63. package/dist/dts/util/accessibility-utilities.d.ts.map +1 -0
  64. package/dist/dts/util/attribute-utilities.d.ts +9 -0
  65. package/dist/dts/util/attribute-utilities.d.ts.map +1 -0
  66. package/dist/dts/util/debounce.d.ts.map +1 -0
  67. package/dist/dts/util/debug.d.ts +32 -0
  68. package/dist/dts/util/debug.d.ts.map +1 -0
  69. package/dist/dts/util/direction.d.ts +193 -0
  70. package/dist/dts/util/direction.d.ts.map +1 -1
  71. package/dist/dts/util/dom.d.ts +2 -0
  72. package/dist/dts/util/dom.d.ts.map +1 -0
  73. package/dist/dts/util/element-internal-mocks.d.ts +67 -0
  74. package/dist/dts/util/element-internal-mocks.d.ts.map +1 -0
  75. package/dist/dts/util/focus-management.d.ts +132 -0
  76. package/dist/dts/util/focus-management.d.ts.map +1 -0
  77. package/dist/dts/util/hash-utilities.d.ts +8 -0
  78. package/dist/dts/util/hash-utilities.d.ts.map +1 -0
  79. package/dist/dts/util/index.d.ts +13 -6
  80. package/dist/dts/util/index.d.ts.map +1 -1
  81. package/dist/dts/util/positioning/flexible-position-strategy.d.ts +87 -0
  82. package/dist/dts/util/positioning/flexible-position-strategy.d.ts.map +1 -0
  83. package/dist/dts/util/positioning/index.d.ts +9 -0
  84. package/dist/dts/util/positioning/index.d.ts.map +1 -0
  85. package/dist/dts/util/positioning/position-calculator.d.ts +46 -0
  86. package/dist/dts/util/positioning/position-calculator.d.ts.map +1 -0
  87. package/dist/dts/util/positioning/types.d.ts +181 -0
  88. package/dist/dts/util/positioning/types.d.ts.map +1 -0
  89. package/dist/esm/components/accordion-menu/accordion-menu.js +1 -1
  90. package/dist/esm/components/accordion-menu/accordion-menu.js.map +1 -1
  91. package/dist/esm/components/accordion-menu/accordion-menu.styles.js +1 -1
  92. package/dist/esm/components/accordion-menu-panel/accordion-menu-panel.js +2 -2
  93. package/dist/esm/components/accordion-menu-panel/accordion-menu-panel.js.map +1 -1
  94. package/dist/esm/components/accordion-menu-panel/accordion-menu-panel.styles.js +1 -1
  95. package/dist/esm/components/card/card.styles.js +1 -1
  96. package/dist/esm/components/card-footer/card-footer.styles.js +1 -1
  97. package/dist/esm/components/card-header/card-header.styles.js +1 -1
  98. package/dist/esm/components/card-preview/card-preview.styles.js +1 -1
  99. package/dist/esm/components/carousel/carousel.js +1 -1
  100. package/dist/esm/components/carousel/carousel.js.map +1 -1
  101. package/dist/esm/components/carousel/carousel.styles.js +1 -1
  102. package/dist/esm/components/component-register.js +67 -0
  103. package/dist/esm/components/component-register.js.map +1 -0
  104. package/dist/esm/components/compound-button/compound-button.options.js +1 -1
  105. package/dist/esm/components/field/field.js +68 -1
  106. package/dist/esm/components/field/field.js.map +1 -1
  107. package/dist/esm/components/filter-pill/filter-pill.js +1 -1
  108. package/dist/esm/components/filter-pill/filter-pill.js.map +1 -1
  109. package/dist/esm/components/filter-pill/filter-pill.options.js +1 -1
  110. package/dist/esm/components/filter-pill/filter-pill.styles.js +3 -2
  111. package/dist/esm/components/listbox/listbox.js +1 -1
  112. package/dist/esm/components/listbox/listbox.js.map +1 -1
  113. package/dist/esm/components/loading-button/loading-button.js.map +1 -1
  114. package/dist/esm/components/menu/menu.js +158 -230
  115. package/dist/esm/components/menu/menu.js.map +1 -1
  116. package/dist/esm/components/menu/menu.options.js +1 -1
  117. package/dist/esm/components/menu/menu.options.js.map +1 -1
  118. package/dist/esm/components/menu/menu.positioning.js +98 -201
  119. package/dist/esm/components/menu/menu.positioning.js.map +1 -1
  120. package/dist/esm/components/menu/menu.styles.js +2 -2
  121. package/dist/esm/components/menu/menu.styles.js.map +1 -1
  122. package/dist/esm/components/menu-item/menu-item.js +4 -4
  123. package/dist/esm/components/menu-item/menu-item.js.map +1 -1
  124. package/dist/esm/components/menu-item/menu-item.styles.js +1 -1
  125. package/dist/esm/components/menu-list/menu-list.js +1 -1
  126. package/dist/esm/components/menu-list/menu-list.js.map +1 -1
  127. package/dist/esm/components/menu-list/menu-list.styles.js +1 -1
  128. package/dist/esm/components/multi-view/multi-view.styles.js +1 -1
  129. package/dist/esm/components/multi-view-controller/multi-view-controller.styles.js +1 -1
  130. package/dist/esm/components/multi-view-group/multi-view-group.styles.js +1 -1
  131. package/dist/esm/components/option-group/option-group.js +1 -1
  132. package/dist/esm/components/option-group/option-group.js.map +1 -1
  133. package/dist/esm/components/popover/define.js +2 -2
  134. package/dist/esm/components/popover/define.js.map +1 -1
  135. package/dist/esm/components/popover/popover.definition.js.map +1 -1
  136. package/dist/esm/components/popover/popover.js +82 -122
  137. package/dist/esm/components/popover/popover.js.map +1 -1
  138. package/dist/esm/components/popover/popover.options.js +2 -2
  139. package/dist/esm/components/popover/popover.options.js.map +1 -1
  140. package/dist/esm/components/popover/popover.positioning.js +314 -0
  141. package/dist/esm/components/popover/popover.positioning.js.map +1 -0
  142. package/dist/esm/components/popover/popover.styles.js +14 -18
  143. package/dist/esm/components/popover/popover.styles.js.map +1 -1
  144. package/dist/esm/components/search-box/search-box.js +1 -1
  145. package/dist/esm/components/search-box/search-box.js.map +1 -1
  146. package/dist/esm/components/search-box/search-box.options.js +1 -1
  147. package/dist/esm/components/search-box/search-box.options.js.map +1 -1
  148. package/dist/esm/components/simple-table/simple-table.styles.js +2 -1
  149. package/dist/esm/components/table/table.js +1 -1
  150. package/dist/esm/components/table/table.js.map +1 -1
  151. package/dist/esm/components/table/table.styles.js +1 -1
  152. package/dist/esm/components/table-cell/table-cell.styles.js +1 -1
  153. package/dist/esm/components/tag/tag.styles.js +1 -1
  154. package/dist/esm/components/teaching-bubble/teaching-bubble.styles.js +1 -1
  155. package/dist/esm/components/text-input/text-input.base.js +3 -3
  156. package/dist/esm/components/text-input/text-input.base.js.map +1 -1
  157. package/dist/esm/components/text-input/text-input.js +1 -0
  158. package/dist/esm/components/text-input/text-input.js.map +1 -1
  159. package/dist/esm/components/text-input/text-input.styles.js +1 -1
  160. package/dist/esm/components/tooltip/tooltip.js +23 -0
  161. package/dist/esm/components/tooltip/tooltip.js.map +1 -1
  162. package/dist/esm/components/tooltip/tooltip.template.js +16 -0
  163. package/dist/esm/components/tooltip/tooltip.template.js.map +1 -0
  164. package/dist/esm/components/tree/tree.js +38 -1
  165. package/dist/esm/components/tree/tree.js.map +1 -1
  166. package/dist/esm/components/tree-item/index.js +2 -1
  167. package/dist/esm/components/tree-item/index.js.map +1 -1
  168. package/dist/esm/components/tree-item/tree-item.definition.js +4 -3
  169. package/dist/esm/components/tree-item/tree-item.definition.js.map +1 -1
  170. package/dist/esm/components/tree-item/tree-item.styles.js +9 -0
  171. package/dist/esm/components/tree-item/tree-item.styles.js.map +1 -0
  172. package/dist/esm/components/tree-item/tree-item.template.js +6 -0
  173. package/dist/esm/components/tree-item/tree-item.template.js.map +1 -0
  174. package/dist/esm/components/wizard/wizard.js +3 -3
  175. package/dist/esm/components/wizard/wizard.js.map +1 -1
  176. package/dist/esm/components/wizard/wizard.styles.js +1 -1
  177. package/dist/esm/components/wizard-panel/wizard-panel.styles.js +1 -1
  178. package/dist/esm/components/wizard-step/wizard-step.js +1 -1
  179. package/dist/esm/components/wizard-step/wizard-step.js.map +1 -1
  180. package/dist/esm/components/wizard-step/wizard-step.styles.js +1 -1
  181. package/dist/esm/index.js +17 -7
  182. package/dist/esm/index.js.map +1 -1
  183. package/dist/esm/util/accessibility-utilities.js +40 -0
  184. package/dist/esm/util/accessibility-utilities.js.map +1 -0
  185. package/dist/esm/util/attribute-utilities.js +12 -0
  186. package/dist/esm/util/attribute-utilities.js.map +1 -0
  187. package/dist/esm/util/debounce.js.map +1 -0
  188. package/dist/esm/util/debug.js +74 -0
  189. package/dist/esm/util/debug.js.map +1 -0
  190. package/dist/esm/util/direction.js +240 -8
  191. package/dist/esm/util/direction.js.map +1 -1
  192. package/dist/esm/util/dom.js +3 -0
  193. package/dist/esm/util/dom.js.map +1 -0
  194. package/dist/esm/util/element-internal-mocks.js +114 -0
  195. package/dist/esm/util/element-internal-mocks.js.map +1 -0
  196. package/dist/esm/util/focus-management.js +247 -0
  197. package/dist/esm/util/focus-management.js.map +1 -0
  198. package/dist/esm/util/hash-utilities.js +12 -0
  199. package/dist/esm/util/hash-utilities.js.map +1 -0
  200. package/dist/esm/util/index.js +13 -6
  201. package/dist/esm/util/index.js.map +1 -1
  202. package/dist/esm/util/positioning/flexible-position-strategy.js +232 -0
  203. package/dist/esm/util/positioning/flexible-position-strategy.js.map +1 -0
  204. package/dist/esm/util/positioning/index.js +10 -0
  205. package/dist/esm/util/positioning/index.js.map +1 -0
  206. package/dist/esm/util/positioning/position-calculator.js +196 -0
  207. package/dist/esm/util/positioning/position-calculator.js.map +1 -0
  208. package/dist/esm/util/positioning/types.js +30 -0
  209. package/dist/esm/util/positioning/types.js.map +1 -0
  210. package/dist/index.d.ts +697 -223
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +2365 -1215
  213. package/dist/index.js.map +1 -1
  214. package/dist/index.min.js +109 -110
  215. package/dist/index.min.js.map +1 -1
  216. package/package.json +6 -8
  217. package/dist/component-utilities.js +0 -43
  218. package/dist/dts/components/popover/positioning.d.ts +0 -51
  219. package/dist/dts/components/popover/positioning.d.ts.map +0 -1
  220. package/dist/dts/util/positioning.d.ts +0 -129
  221. package/dist/dts/util/positioning.d.ts.map +0 -1
  222. package/dist/dts/utils/debounce.d.ts.map +0 -1
  223. package/dist/esm/component-utilities.js +0 -13
  224. package/dist/esm/components/popover/positioning.js +0 -189
  225. package/dist/esm/components/popover/positioning.js.map +0 -1
  226. package/dist/esm/util/positioning.js +0 -130
  227. package/dist/esm/util/positioning.js.map +0 -1
  228. package/dist/esm/utils/debounce.js.map +0 -1
  229. /package/dist/dts/{utils → util}/debounce.d.ts +0 -0
  230. /package/dist/esm/{utils → util}/debounce.js +0 -0
@@ -0,0 +1,74 @@
1
+ //-----------------------------------------------------------------------
2
+ // <copyright company="Microsoft Corporation">
3
+ // Copyright (c) Microsoft Corporation. All rights reserved.
4
+ // </copyright>
5
+ //-----------------------------------------------------------------------
6
+ /**
7
+ * Holds a collection of debug-related functions. When the instance is not in debug mode, most/all of
8
+ * the side-effects will be disabled.
9
+ */
10
+ class debug {
11
+ static setAssertFailFunction(f) {
12
+ debug.assertFailFunction = f;
13
+ }
14
+ /**
15
+ * Asserts that the condition is true, fails otherwise.
16
+ */
17
+ static assert(conditionFunc, message) {
18
+ if (!this.enabled) return;
19
+ const condition = conditionFunc();
20
+ message = message !== null && message !== void 0 ? message : "condition: " + condition;
21
+ if (condition !== true) {
22
+ debug.assertFail(message);
23
+ }
24
+ }
25
+ /**
26
+ * Asserts that the value is neither null nor undefined, fails otherwise.
27
+ */
28
+ static assertDefined(value, message) {
29
+ if (!this.enabled) return;
30
+ debug.assert(() => value !== null && value !== undefined, message);
31
+ }
32
+ /**
33
+ * Asserts that the value is neither null nor undefined, and has a length property that returns greater than zero, fails otherwise.
34
+ */
35
+ static assertNonEmpty(value, message) {
36
+ if (!this.enabled) return;
37
+ debug.assert(() => value != null && value.length > 0, message);
38
+ }
39
+ /**
40
+ * Asserts that this function is never called. This is to be used
41
+ */
42
+ static assertNever(neverValue) {
43
+ if (!this.enabled) return;
44
+ debug.assertFail("Expected to never have value " + neverValue);
45
+ }
46
+ static assertFail(message) {
47
+ if (!this.enabled) return;
48
+ (debug.assertFailFunction || alert)(`Debug Assert failed: ${message}`);
49
+ }
50
+ static log(message, ...optionalParams) {
51
+ if (!this.enabled) return;
52
+ console.log(message, ...(optionalParams || []));
53
+ }
54
+ static logDebug(message, ...optionalParams) {
55
+ if (!this.enabled) return;
56
+ console.debug(message, ...(optionalParams || []));
57
+ }
58
+ static warn(message, ...optionalParams) {
59
+ if (!this.enabled) return;
60
+ if (console && console.warn) {
61
+ console.warn(message, ...(optionalParams || []));
62
+ }
63
+ }
64
+ static execute(action) {
65
+ if (!this.enabled) return;
66
+ action();
67
+ }
68
+ static enable() {
69
+ this.enabled = true;
70
+ }
71
+ }
72
+ debug.enabled = false;
73
+
74
+ export { debug };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../../../../src/util/debug.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,8CAA8C;AAC9C,oEAAoE;AACpE,eAAe;AACf,yEAAyE;AAEzE;;;GAGG;AACH,MAAM,OAAO,KAAK;IAET,MAAM,CAAC,qBAAqB,CAAC,CAA4B;QAC9D,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,MAAM,CAAC,aAA4B,EAAE,OAAgB;QACjE,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,aAAa,GAAG,SAAS,CAAC;QAC/C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,aAAa,CAAI,KAAQ,EAAE,OAAe;QACtD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,cAAc,CAAI,KAAmB,EAAE,OAAe;QAClE,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,WAAW,CAAC,UAAiB;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,KAAK,CAAC,UAAU,CAAC,+BAA+B,GAAG,UAAU,CAAC,CAAC;IACjE,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,OAAe;QACtC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,CAAC,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,OAAe,EAAE,GAAG,cAAyB;QAC7D,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,GAAG,cAAyB;QAClE,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,GAAG,cAAyB;QAC9D,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,MAAkB;QACtC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,MAAM,EAAE,CAAC;IACX,CAAC;IAIM,MAAM,CAAC,MAAM;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;;AAJc,aAAO,GAAG,KAAK,CAAC"}
@@ -1,5 +1,88 @@
1
- //Copied from @microsoft/fast-foundation
2
- import { Direction } from "@microsoft/fast-web-utilities";
1
+ import { Direction } from '@microsoft/fast-web-utilities';
2
+
3
+ /**
4
+ * This module provides a composable system for detecting and monitoring text direction
5
+ * (LTR/RTL) changes in web applications. It follows a strategy/observer pattern to allow
6
+ * flexibility for the many ways that direction can be controlled in the document.
7
+ *
8
+ * ## Architecture
9
+ *
10
+ * The system uses two complementary interfaces:
11
+ *
12
+ * - **DirectionStrategy**: Detection - reads direction from a source (CSS, attributes, etc.)
13
+ * - **DirectionObserver**: Change monitoring - watches for direction changes and notifies
14
+ *
15
+ * The `DirectionDetector` class combines the detection and observer strategies to provide
16
+ * robust direction detection with automatic change notifications.
17
+ *
18
+ * ## Built-in Strategies
19
+ *
20
+ * - `DirAttributeStrategy`: Reads the `dir` attribute from elements
21
+ * - `ElementCssStrategy`: Reads computed CSS `direction` property
22
+ *
23
+ * ## Built-in Observers
24
+ *
25
+ * - `DirAttributeObserver`: Watches for `dir` attribute mutations via MutationObserver
26
+ *
27
+ * ## Global DirectionDetector
28
+ *
29
+ * A singleton detector is available via `globalDirectionDetector()`. By default, it
30
+ * monitors the `dir` attribute on the `<html>` element. This is the detector used by the
31
+ * components in this package to correctly adjust layout, keyboard navigation, etc.
32
+ *
33
+ * To customize the global detector, call `setGlobalDirectionDetector()`:
34
+ *
35
+ * ```typescript
36
+ * import {
37
+ * setGlobalDirectionDetector,
38
+ * DirectionDetector,
39
+ * DirAttributeStrategy,
40
+ * DirAttributeObserver
41
+ * } from "@fabric-msft/fabric-web";
42
+ *
43
+ * setGlobalDirectionDetector(
44
+ * new DirectionDetector({
45
+ * strategies: [new DirAttributeStrategy([document.documentElement])],
46
+ * observers: [new DirAttributeObserver("html")],
47
+ * onChange: (dir) => console.log("Global direction:", dir)
48
+ * })
49
+ * );
50
+ * ```
51
+ *
52
+ * ## Defaults
53
+ *
54
+ * The default global DirectionDetector will monitor the `dir` attribute on the
55
+ * `html` element. You do not need to set anything if this is the strategy that your app
56
+ * uses to control document direction.
57
+ *
58
+ * ```html
59
+ * <html dir="rtl">
60
+ * ```
61
+ *
62
+ * ## Custom DirectionDetector
63
+ *
64
+ * ```typescript
65
+ * import {
66
+ * DirectionDetector,
67
+ * DirAttributeStrategy,
68
+ * DirAttributeObserver
69
+ * } from "@fabric-msft/fabric-web";
70
+ *
71
+ * const detector = new DirectionDetector({
72
+ * strategies: [new DirAttributeStrategy([document.documentElement])],
73
+ * observers: [new DirAttributeObserver("html")],
74
+ * onChange: (dir, { previous }) => {
75
+ * console.log(`Direction changed: ${previous} → ${dir}`);
76
+ * }
77
+ * });
78
+ *
79
+ * // Access current direction
80
+ * console.log(detector.value); // 'ltr' or 'rtl'
81
+ *
82
+ * // Clean up when done
83
+ * detector.stop();
84
+ * ```
85
+ */
3
86
  /**
4
87
  * Determines the current localization direction of an element.
5
88
  *
@@ -8,10 +91,159 @@ import { Direction } from "@microsoft/fast-web-utilities";
8
91
  *
9
92
  * @public
10
93
  */
11
- export const getDirection = (rootNode) => {
12
- var _a;
13
- return ((_a = rootNode.closest("[dir]")) === null || _a === void 0 ? void 0 : _a.dir) === "rtl"
14
- ? Direction.rtl
15
- : Direction.ltr;
94
+ const getDirection = rootNode => {
95
+ var _a;
96
+ return ((_a = rootNode.closest("[dir]")) === null || _a === void 0 ? void 0 : _a.dir) === "rtl" ? Direction.rtl : Direction.ltr;
16
97
  };
17
- //# sourceMappingURL=direction.js.map
98
+ function isRtl() {
99
+ return globalDirectionDetector().value === Direction.rtl;
100
+ }
101
+ /**
102
+ * Strategy that reads direction from the dir attribute.
103
+ * Takes a list of elements and checks each element until it finds one with a "dir" attribute specified.
104
+ * @public
105
+ */
106
+ class DirAttributeStrategy {
107
+ constructor(elements) {
108
+ this.elements = elements;
109
+ }
110
+ getDirection() {
111
+ var _a;
112
+ for (const el of this.elements) {
113
+ const raw = ((_a = el.getAttribute("dir")) !== null && _a !== void 0 ? _a : "").trim().toLowerCase();
114
+ if (raw === Direction.rtl || raw === Direction.ltr) return raw;
115
+ if (raw === "auto") return null;
116
+ }
117
+ return null;
118
+ }
119
+ }
120
+ /**
121
+ * Observer that watches for dir attribute changes using MutationObserver.
122
+ * @public
123
+ */
124
+ class DirAttributeObserver {
125
+ constructor(target = "html", doc = document) {
126
+ this.mo = null;
127
+ this.target = target;
128
+ this.doc = doc;
129
+ }
130
+ start(notify) {
131
+ var _a;
132
+ if (this.mo) return;
133
+ const observeEl = typeof this.target === "string" ? (_a = this.doc.querySelector(this.target)) !== null && _a !== void 0 ? _a : this.doc.documentElement : this.target;
134
+ if (!observeEl) return;
135
+ this.mo = new MutationObserver(() => notify());
136
+ this.mo.observe(observeEl, {
137
+ attributes: true,
138
+ attributeFilter: ["dir"]
139
+ });
140
+ }
141
+ stop() {
142
+ var _a;
143
+ (_a = this.mo) === null || _a === void 0 ? void 0 : _a.disconnect();
144
+ this.mo = null;
145
+ }
146
+ }
147
+ /**
148
+ * Detects and (optionally) observes direction using a chain of strategies.
149
+ * The first strategy to return a non-null direction wins.
150
+ * @public
151
+ */
152
+ class DirectionDetector {
153
+ constructor(options) {
154
+ var _a;
155
+ this.rafId = null;
156
+ this._value = null;
157
+ this.observing = false;
158
+ this.strategies = options.strategies;
159
+ this.observers = (_a = options.observers) !== null && _a !== void 0 ? _a : [];
160
+ this.onChange = options.onChange;
161
+ this._value = this.computeDirection();
162
+ if (this.observers.length > 0) this.start();
163
+ }
164
+ get value() {
165
+ var _a;
166
+ return (_a = this._value) !== null && _a !== void 0 ? _a : Direction.ltr;
167
+ }
168
+ /**
169
+ * Start all observers.
170
+ */
171
+ start() {
172
+ if (this.observing) return;
173
+ this.observing = true;
174
+ const scheduleRefresh = () => {
175
+ if (this.rafId != null) return;
176
+ if (typeof requestAnimationFrame === "undefined") {
177
+ this.refresh();
178
+ return;
179
+ }
180
+ this.rafId = requestAnimationFrame(() => {
181
+ this.rafId = null;
182
+ this.refresh();
183
+ });
184
+ };
185
+ for (const observer of this.observers) {
186
+ observer.start(scheduleRefresh);
187
+ }
188
+ // Initial refresh after starting observation
189
+ this.refresh();
190
+ }
191
+ /**
192
+ * Stop observing and cancel any scheduled refresh.
193
+ */
194
+ stop() {
195
+ if (this.rafId != null && typeof cancelAnimationFrame !== "undefined") {
196
+ cancelAnimationFrame(this.rafId);
197
+ }
198
+ this.rafId = null;
199
+ for (const observer of this.observers) {
200
+ observer.stop();
201
+ }
202
+ this.observing = false;
203
+ }
204
+ stable() {
205
+ return this.rafId == null;
206
+ }
207
+ /**
208
+ * Force recomputation; invokes onChange only if the resolved direction changed.
209
+ */
210
+ refresh() {
211
+ var _a;
212
+ const previous = this._value;
213
+ const next = this.computeDirection();
214
+ if (next !== previous) {
215
+ this._value = next;
216
+ try {
217
+ (_a = this.onChange) === null || _a === void 0 ? void 0 : _a.call(this, next, {
218
+ previous
219
+ });
220
+ } catch {
221
+ // ignore callback errors
222
+ }
223
+ }
224
+ return this._value;
225
+ }
226
+ computeDirection() {
227
+ for (const strategy of this.strategies) {
228
+ const dir = strategy.getDirection();
229
+ if (dir) return dir;
230
+ }
231
+ return null;
232
+ }
233
+ }
234
+ let _globalDetector = null;
235
+ function setGlobalDirectionDetector(detector) {
236
+ _globalDetector = detector;
237
+ }
238
+ function globalDirectionDetector() {
239
+ if (!_globalDetector) {
240
+ // Default to a strategy that expects dir to be on the root html element.
241
+ _globalDetector = new DirectionDetector({
242
+ strategies: [new DirAttributeStrategy([document.documentElement])],
243
+ observers: [new DirAttributeObserver("html")]
244
+ });
245
+ }
246
+ return _globalDetector;
247
+ }
248
+
249
+ export { DirAttributeObserver, DirAttributeStrategy, DirectionDetector, getDirection, globalDirectionDetector, isRtl, setGlobalDirectionDetector };
@@ -1 +1 @@
1
- {"version":3,"file":"direction.js","sourceRoot":"","sources":["../../../../../../src/util/direction.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAqB,EAAa,EAAE;;IAC/D,OAAO,CAAA,MAAA,QAAQ,CAAC,OAAO,CAAc,OAAO,CAAC,0CAAE,GAAG,MAAK,KAAK;QAC1D,CAAC,CAAC,SAAS,CAAC,GAAG;QACf,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;AACpB,CAAC,CAAC"}
1
+ {"version":3,"file":"direction.js","sourceRoot":"","sources":["../../../../../../src/util/direction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ const inputElementMethods = ["blur", "click", "focus", "select", "setSelectionRange", "setRangeText", "setCustomValidity", "showPicker", "checkValidity", "reportValidity", "stepUp", "stepDown"];
2
+
3
+ export { inputElementMethods };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../../../../src/util/dom.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,mBAAmB;IACnB,cAAc;IACd,mBAAmB;IACnB,YAAY;IACZ,eAAe;IACf,gBAAgB;IAChB,QAAQ;IACR,UAAU;CACX,CAAC"}
@@ -0,0 +1,114 @@
1
+ class MockElementInternals {
2
+ constructor(element) {
3
+ this.ariaDescription = null;
4
+ this.ariaBrailleLabel = null;
5
+ this.ariaBrailleRoleDescription = null;
6
+ this._form = null;
7
+ this._labels = document.createDocumentFragment().childNodes;
8
+ // ARIA properties
9
+ this.role = "";
10
+ this.ariaAtomic = "";
11
+ this.ariaAutoComplete = "";
12
+ this.ariaBusy = "";
13
+ this.ariaChecked = "";
14
+ this.ariaColCount = "";
15
+ this.ariaColIndex = "";
16
+ this.ariaColIndexText = "";
17
+ this.ariaColSpan = "";
18
+ this.ariaCurrent = "";
19
+ this.ariaDisabled = "";
20
+ this.ariaExpanded = "";
21
+ this.ariaHasPopup = "";
22
+ this.ariaHidden = "";
23
+ this.ariaInvalid = "";
24
+ this.ariaKeyShortcuts = "";
25
+ this.ariaLabel = "";
26
+ this.ariaLevel = "";
27
+ this.ariaLive = "";
28
+ this.ariaModal = "";
29
+ this.ariaMultiLine = "";
30
+ this.ariaMultiSelectable = "";
31
+ this.ariaOrientation = "";
32
+ this.ariaPlaceholder = "";
33
+ this.ariaPosInSet = "";
34
+ this.ariaPressed = "";
35
+ this.ariaReadOnly = "";
36
+ this.ariaRelevant = "";
37
+ this.ariaRequired = "";
38
+ this.ariaRoleDescription = "";
39
+ this.ariaRowCount = "";
40
+ this.ariaRowIndex = "";
41
+ this.ariaRowIndexText = "";
42
+ this.ariaRowSpan = "";
43
+ this.ariaSelected = "";
44
+ this.ariaSetSize = "";
45
+ this.ariaSort = "";
46
+ this.ariaValueMax = "";
47
+ this.ariaValueMin = "";
48
+ this.ariaValueNow = "";
49
+ this.ariaValueText = "";
50
+ // add the element to the MockElementInternals class
51
+ // the constructor is called when attachInternals is called on the element using ElementInternals.
52
+ this._element = element;
53
+ }
54
+ get form() {
55
+ if (!this._form) {
56
+ // get the closest form element from the element
57
+ this._form = this._element.closest("form");
58
+ }
59
+ return this._form;
60
+ }
61
+ get labels() {
62
+ return this._labels;
63
+ }
64
+ get shadowRoot() {
65
+ return null;
66
+ }
67
+ get states() {
68
+ return new Set();
69
+ }
70
+ // Validation properties
71
+ get validationMessage() {
72
+ return "";
73
+ }
74
+ get validity() {
75
+ return {
76
+ badInput: false,
77
+ customError: false,
78
+ patternMismatch: false,
79
+ rangeOverflow: false,
80
+ rangeUnderflow: false,
81
+ stepMismatch: false,
82
+ tooLong: false,
83
+ tooShort: false,
84
+ typeMismatch: false,
85
+ valid: true,
86
+ valueMissing: false
87
+ };
88
+ }
89
+ get willValidate() {
90
+ return true;
91
+ }
92
+ // Methods
93
+ checkValidity() {
94
+ return true;
95
+ }
96
+ reportValidity() {
97
+ return true;
98
+ }
99
+ setFormValue(_value, _state) {}
100
+ setValidity(_flags, _message, _anchor) {}
101
+ }
102
+ /**
103
+ * If the HTMLElement prototype does not have the attachInternals method, add it.
104
+ * This is used to create a new MockElementInternals instance when the element is attached to the DOM.
105
+ */
106
+ function attachMockElementInternals() {
107
+ if (!HTMLElement.prototype.attachInternals) {
108
+ HTMLElement.prototype.attachInternals = function () {
109
+ return new MockElementInternals(this);
110
+ };
111
+ }
112
+ }
113
+
114
+ export { MockElementInternals, attachMockElementInternals };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-internal-mocks.js","sourceRoot":"","sources":["../../../../../../src/util/element-internal-mocks.ts"],"names":[],"mappings":"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"}