@fluentui/web-components 3.0.0-beta.21 → 3.0.0-beta.23

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 (250) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/dist/dts/accordion/accordion.bench.d.ts +3 -0
  3. package/dist/dts/accordion/accordion.options.d.ts +3 -3
  4. package/dist/dts/accordion-item/accordion-item.bench.d.ts +3 -0
  5. package/dist/dts/accordion-item/accordion-item.d.ts +2 -5
  6. package/dist/dts/accordion-item/accordion-item.options.d.ts +2 -2
  7. package/dist/dts/accordion-item/accordion-item.template.d.ts +1 -1
  8. package/dist/dts/accordion-item/index.d.ts +2 -1
  9. package/dist/dts/anchor-button/anchor-button.bench.d.ts +3 -0
  10. package/dist/dts/anchor-button/anchor-button.d.ts +1 -1
  11. package/dist/dts/anchor-button/anchor-button.options.d.ts +4 -4
  12. package/dist/dts/anchor-button/index.d.ts +3 -2
  13. package/dist/dts/avatar/avatar.bench.d.ts +3 -0
  14. package/dist/dts/avatar/avatar.options.d.ts +6 -6
  15. package/dist/dts/badge/badge.bench.d.ts +3 -0
  16. package/dist/dts/badge/badge.options.d.ts +5 -5
  17. package/dist/dts/button/button.bench.d.ts +3 -0
  18. package/dist/dts/button/button.options.d.ts +6 -6
  19. package/dist/dts/button/index.d.ts +4 -3
  20. package/dist/dts/checkbox/checkbox.bench.d.ts +3 -0
  21. package/dist/dts/checkbox/checkbox.d.ts +1 -4
  22. package/dist/dts/checkbox/checkbox.options.d.ts +3 -3
  23. package/dist/dts/checkbox/index.d.ts +4 -3
  24. package/dist/dts/compound-button/compound-button.bench.d.ts +3 -0
  25. package/dist/dts/compound-button/compound-button.options.d.ts +3 -3
  26. package/dist/dts/counter-badge/counter-badge.bench.d.ts +3 -0
  27. package/dist/dts/counter-badge/counter-badge.options.d.ts +5 -5
  28. package/dist/dts/dialog/dialog.bench.d.ts +3 -0
  29. package/dist/dts/dialog/dialog.d.ts +12 -146
  30. package/dist/dts/dialog/dialog.options.d.ts +2 -2
  31. package/dist/dts/dialog/index.d.ts +1 -1
  32. package/dist/dts/dialog-body/define.d.ts +1 -0
  33. package/dist/dts/dialog-body/dialog-body.bench.d.ts +3 -0
  34. package/dist/dts/dialog-body/dialog-body.d.ts +14 -0
  35. package/dist/dts/dialog-body/dialog-body.definition.d.ts +9 -0
  36. package/dist/dts/dialog-body/dialog-body.styles.d.ts +4 -0
  37. package/dist/dts/dialog-body/dialog-body.template.d.ts +6 -0
  38. package/dist/dts/dialog-body/index.d.ts +4 -0
  39. package/dist/dts/divider/divider.bench.d.ts +3 -0
  40. package/dist/dts/divider/divider.d.ts +4 -7
  41. package/dist/dts/divider/divider.options.d.ts +4 -4
  42. package/dist/dts/form-associated/form-associated.d.ts +4 -4
  43. package/dist/dts/image/image.bench.d.ts +3 -0
  44. package/dist/dts/image/image.options.d.ts +2 -2
  45. package/dist/dts/index-rollup.d.ts +30 -35
  46. package/dist/dts/index.d.ts +50 -34
  47. package/dist/dts/label/label.bench.d.ts +3 -0
  48. package/dist/dts/label/label.d.ts +0 -2
  49. package/dist/dts/label/label.options.d.ts +2 -2
  50. package/dist/dts/menu/menu.bench.d.ts +3 -0
  51. package/dist/dts/menu/menu.d.ts +27 -25
  52. package/dist/dts/menu-button/index.d.ts +4 -3
  53. package/dist/dts/menu-button/menu-button.bench.d.ts +3 -0
  54. package/dist/dts/menu-button/menu-button.options.d.ts +4 -4
  55. package/dist/dts/menu-item/index.d.ts +4 -3
  56. package/dist/dts/menu-item/menu-item.bench.d.ts +3 -0
  57. package/dist/dts/menu-item/menu-item.d.ts +2 -2
  58. package/dist/dts/menu-item/menu-item.options.d.ts +1 -1
  59. package/dist/dts/menu-list/menu-list.bench.d.ts +3 -0
  60. package/dist/dts/patterns/start-end.d.ts +3 -3
  61. package/dist/dts/progress-bar/index.d.ts +3 -2
  62. package/dist/dts/progress-bar/progress-bar.bench.d.ts +3 -0
  63. package/dist/dts/progress-bar/progress-bar.options.d.ts +4 -4
  64. package/dist/dts/radio/index.d.ts +2 -1
  65. package/dist/dts/radio/radio.bench.d.ts +3 -0
  66. package/dist/dts/radio/radio.d.ts +2 -2
  67. package/dist/dts/radio-group/radio-group.bench.d.ts +3 -0
  68. package/dist/dts/radio-group/radio-group.options.d.ts +1 -1
  69. package/dist/dts/slider/index.d.ts +3 -2
  70. package/dist/dts/slider/slider.bench.d.ts +3 -0
  71. package/dist/dts/slider/slider.options.d.ts +4 -4
  72. package/dist/dts/spinner/spinner.bench.d.ts +3 -0
  73. package/dist/dts/spinner/spinner.d.ts +0 -2
  74. package/dist/dts/spinner/spinner.options.d.ts +2 -2
  75. package/dist/dts/switch/index.d.ts +3 -2
  76. package/dist/dts/switch/switch.bench.d.ts +3 -0
  77. package/dist/dts/switch/switch.d.ts +1 -2
  78. package/dist/dts/switch/switch.options.d.ts +1 -1
  79. package/dist/dts/tab/index.d.ts +4 -3
  80. package/dist/dts/tab/tab.bench.d.ts +3 -0
  81. package/dist/dts/tab/tab.d.ts +1 -1
  82. package/dist/dts/tab/tab.template.d.ts +1 -1
  83. package/dist/dts/tab-panel/tab-panel.bench.d.ts +3 -0
  84. package/dist/dts/tabs/index.d.ts +4 -3
  85. package/dist/dts/tabs/tabs.bench.d.ts +3 -0
  86. package/dist/dts/tabs/tabs.d.ts +13 -9
  87. package/dist/dts/tabs/tabs.options.d.ts +4 -4
  88. package/dist/dts/text/text.bench.d.ts +3 -0
  89. package/dist/dts/text/text.options.d.ts +4 -4
  90. package/dist/dts/text-input/text-input.bench.d.ts +3 -0
  91. package/dist/dts/text-input/text-input.d.ts +0 -3
  92. package/dist/dts/text-input/text-input.options.d.ts +4 -4
  93. package/dist/dts/theme/design-tokens.d.ts +1744 -0
  94. package/dist/dts/theme/set-theme.d.ts +5 -1
  95. package/dist/dts/toggle-button/index.d.ts +4 -3
  96. package/dist/dts/toggle-button/toggle-button.bench.d.ts +3 -0
  97. package/dist/dts/toggle-button/toggle-button.options.d.ts +4 -4
  98. package/dist/dts/utils/behaviors/match-media-stylesheet-behavior.d.ts +1 -1
  99. package/dist/dts/utils/display.d.ts +1 -1
  100. package/dist/dts/utils/template-helpers.d.ts +1 -1
  101. package/dist/dts/utils/typings.d.ts +1 -1
  102. package/dist/esm/accordion/accordion.bench.js +30 -0
  103. package/dist/esm/accordion/accordion.bench.js.map +1 -0
  104. package/dist/esm/accordion/accordion.options.js +1 -1
  105. package/dist/esm/accordion-item/accordion-item.bench.js +14 -0
  106. package/dist/esm/accordion-item/accordion-item.bench.js.map +1 -0
  107. package/dist/esm/accordion-item/accordion-item.js +0 -1
  108. package/dist/esm/accordion-item/accordion-item.js.map +1 -1
  109. package/dist/esm/accordion-item/index.js.map +1 -1
  110. package/dist/esm/anchor-button/anchor-button.bench.js +11 -0
  111. package/dist/esm/anchor-button/anchor-button.bench.js.map +1 -0
  112. package/dist/esm/anchor-button/index.js +2 -2
  113. package/dist/esm/anchor-button/index.js.map +1 -1
  114. package/dist/esm/avatar/avatar.bench.js +10 -0
  115. package/dist/esm/avatar/avatar.bench.js.map +1 -0
  116. package/dist/esm/badge/badge.bench.js +11 -0
  117. package/dist/esm/badge/badge.bench.js.map +1 -0
  118. package/dist/esm/button/button.bench.js +11 -0
  119. package/dist/esm/button/button.bench.js.map +1 -0
  120. package/dist/esm/button/button.js +26 -26
  121. package/dist/esm/button/button.js.map +1 -1
  122. package/dist/esm/button/index.js +3 -3
  123. package/dist/esm/button/index.js.map +1 -1
  124. package/dist/esm/checkbox/checkbox.bench.js +11 -0
  125. package/dist/esm/checkbox/checkbox.bench.js.map +1 -0
  126. package/dist/esm/checkbox/checkbox.js.map +1 -1
  127. package/dist/esm/checkbox/index.js +2 -2
  128. package/dist/esm/checkbox/index.js.map +1 -1
  129. package/dist/esm/compound-button/compound-button.bench.js +15 -0
  130. package/dist/esm/compound-button/compound-button.bench.js.map +1 -0
  131. package/dist/esm/counter-badge/counter-badge.bench.js +11 -0
  132. package/dist/esm/counter-badge/counter-badge.bench.js.map +1 -0
  133. package/dist/esm/dialog/dialog.bench.js +11 -0
  134. package/dist/esm/dialog/dialog.bench.js.map +1 -0
  135. package/dist/esm/dialog/dialog.js +32 -306
  136. package/dist/esm/dialog/dialog.js.map +1 -1
  137. package/dist/esm/dialog/dialog.options.js +1 -1
  138. package/dist/esm/dialog/dialog.options.js.map +1 -1
  139. package/dist/esm/dialog/dialog.styles.js +61 -84
  140. package/dist/esm/dialog/dialog.styles.js.map +1 -1
  141. package/dist/esm/dialog/dialog.template.js +17 -54
  142. package/dist/esm/dialog/dialog.template.js.map +1 -1
  143. package/dist/esm/dialog/index.js +1 -1
  144. package/dist/esm/dialog/index.js.map +1 -1
  145. package/dist/esm/dialog-body/define.js +4 -0
  146. package/dist/esm/dialog-body/define.js.map +1 -0
  147. package/dist/esm/dialog-body/dialog-body.bench.js +11 -0
  148. package/dist/esm/dialog-body/dialog-body.bench.js.map +1 -0
  149. package/dist/esm/dialog-body/dialog-body.definition.js +17 -0
  150. package/dist/esm/dialog-body/dialog-body.definition.js.map +1 -0
  151. package/dist/esm/dialog-body/dialog-body.js +22 -0
  152. package/dist/esm/dialog-body/dialog-body.js.map +1 -0
  153. package/dist/esm/dialog-body/dialog-body.styles.js +79 -0
  154. package/dist/esm/dialog-body/dialog-body.styles.js.map +1 -0
  155. package/dist/esm/dialog-body/dialog-body.template.js +42 -0
  156. package/dist/esm/dialog-body/dialog-body.template.js.map +1 -0
  157. package/dist/esm/dialog-body/index.js +5 -0
  158. package/dist/esm/dialog-body/index.js.map +1 -0
  159. package/dist/esm/divider/divider.bench.js +10 -0
  160. package/dist/esm/divider/divider.bench.js.map +1 -0
  161. package/dist/esm/divider/divider.js +1 -1
  162. package/dist/esm/divider/divider.js.map +1 -1
  163. package/dist/esm/form-associated/form-associated.js +66 -66
  164. package/dist/esm/form-associated/form-associated.js.map +1 -1
  165. package/dist/esm/image/image.bench.js +14 -0
  166. package/dist/esm/image/image.bench.js.map +1 -0
  167. package/dist/esm/index-rollup.js +30 -35
  168. package/dist/esm/index-rollup.js.map +1 -1
  169. package/dist/esm/index.js +34 -33
  170. package/dist/esm/index.js.map +1 -1
  171. package/dist/esm/label/label.bench.js +11 -0
  172. package/dist/esm/label/label.bench.js.map +1 -0
  173. package/dist/esm/label/label.js.map +1 -1
  174. package/dist/esm/menu/menu.bench.js +31 -0
  175. package/dist/esm/menu/menu.bench.js.map +1 -0
  176. package/dist/esm/menu/menu.js +25 -23
  177. package/dist/esm/menu/menu.js.map +1 -1
  178. package/dist/esm/menu-button/index.js +2 -2
  179. package/dist/esm/menu-button/index.js.map +1 -1
  180. package/dist/esm/menu-button/menu-button.bench.js +11 -0
  181. package/dist/esm/menu-button/menu-button.bench.js.map +1 -0
  182. package/dist/esm/menu-item/index.js +2 -2
  183. package/dist/esm/menu-item/index.js.map +1 -1
  184. package/dist/esm/menu-item/menu-item.bench.js +11 -0
  185. package/dist/esm/menu-item/menu-item.bench.js.map +1 -0
  186. package/dist/esm/menu-list/menu-list.bench.js +21 -0
  187. package/dist/esm/menu-list/menu-list.bench.js.map +1 -0
  188. package/dist/esm/menu-list/menu-list.js +2 -1
  189. package/dist/esm/menu-list/menu-list.js.map +1 -1
  190. package/dist/esm/progress-bar/index.js +2 -2
  191. package/dist/esm/progress-bar/index.js.map +1 -1
  192. package/dist/esm/progress-bar/progress-bar.bench.js +10 -0
  193. package/dist/esm/progress-bar/progress-bar.bench.js.map +1 -0
  194. package/dist/esm/radio/index.js +1 -1
  195. package/dist/esm/radio/index.js.map +1 -1
  196. package/dist/esm/radio/radio.bench.js +11 -0
  197. package/dist/esm/radio/radio.bench.js.map +1 -0
  198. package/dist/esm/radio/radio.js +11 -11
  199. package/dist/esm/radio/radio.js.map +1 -1
  200. package/dist/esm/radio-group/radio-group.bench.js +21 -0
  201. package/dist/esm/radio-group/radio-group.bench.js.map +1 -0
  202. package/dist/esm/slider/index.js +1 -1
  203. package/dist/esm/slider/index.js.map +1 -1
  204. package/dist/esm/slider/slider.bench.js +10 -0
  205. package/dist/esm/slider/slider.bench.js.map +1 -0
  206. package/dist/esm/slider/slider.template.js +1 -1
  207. package/dist/esm/slider/slider.template.js.map +1 -1
  208. package/dist/esm/spinner/spinner.bench.js +10 -0
  209. package/dist/esm/spinner/spinner.bench.js.map +1 -0
  210. package/dist/esm/spinner/spinner.js.map +1 -1
  211. package/dist/esm/switch/index.js +1 -1
  212. package/dist/esm/switch/index.js.map +1 -1
  213. package/dist/esm/switch/switch.bench.js +11 -0
  214. package/dist/esm/switch/switch.bench.js.map +1 -0
  215. package/dist/esm/switch/switch.js +5 -5
  216. package/dist/esm/switch/switch.js.map +1 -1
  217. package/dist/esm/tab/index.js +2 -2
  218. package/dist/esm/tab/index.js.map +1 -1
  219. package/dist/esm/tab/tab.bench.js +11 -0
  220. package/dist/esm/tab/tab.bench.js.map +1 -0
  221. package/dist/esm/tab-panel/tab-panel.bench.js +13 -0
  222. package/dist/esm/tab-panel/tab-panel.bench.js.map +1 -0
  223. package/dist/esm/tabs/index.js +2 -2
  224. package/dist/esm/tabs/index.js.map +1 -1
  225. package/dist/esm/tabs/tabs.bench.js +32 -0
  226. package/dist/esm/tabs/tabs.bench.js.map +1 -0
  227. package/dist/esm/tabs/tabs.js +13 -9
  228. package/dist/esm/tabs/tabs.js.map +1 -1
  229. package/dist/esm/text/text.bench.js +13 -0
  230. package/dist/esm/text/text.bench.js.map +1 -0
  231. package/dist/esm/text-input/text-input.bench.js +10 -0
  232. package/dist/esm/text-input/text-input.bench.js.map +1 -0
  233. package/dist/esm/text-input/text-input.js.map +1 -1
  234. package/dist/esm/theme/design-tokens.js +1744 -0
  235. package/dist/esm/theme/design-tokens.js.map +1 -1
  236. package/dist/esm/theme/set-theme.js +5 -1
  237. package/dist/esm/theme/set-theme.js.map +1 -1
  238. package/dist/esm/toggle-button/index.js +3 -3
  239. package/dist/esm/toggle-button/index.js.map +1 -1
  240. package/dist/esm/toggle-button/toggle-button.bench.js +11 -0
  241. package/dist/esm/toggle-button/toggle-button.bench.js.map +1 -0
  242. package/dist/web-components.d.ts +1850 -213
  243. package/dist/web-components.js +1325 -2747
  244. package/dist/web-components.min.js +253 -255
  245. package/package.json +19 -3
  246. package/dist/fluent-web-components.api.json +0 -29683
  247. package/docs/api-report.md +0 -3212
  248. package/playwright.config.ts +0 -24
  249. package/project.json +0 -6
  250. package/tensile.config.js +0 -22
@@ -1,251 +1,41 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { attr, FASTElement, observable, Updates } from '@microsoft/fast-element';
3
- import { isTabbable } from 'tabbable';
4
- import { keyEscape, keyTab } from '@microsoft/fast-web-utilities';
5
- import { DialogModalType } from './dialog.options.js';
3
+ import { DialogType } from './dialog.options.js';
6
4
  /**
7
- * Dialog component that extends the FASTElement class.
5
+ * A Dialog Custom HTML Element.
8
6
  *
9
7
  * @public
10
- * @extends FASTElement
11
8
  */
12
9
  export class Dialog extends FASTElement {
13
10
  constructor() {
14
11
  super(...arguments);
15
- /**
16
- * @private
17
- * Indicates whether focus is being trapped within the dialog
18
- */
19
- this.isTrappingFocus = false;
20
- /**
21
- * @public
22
- * The title action elements
23
- */
24
- this.titleAction = [];
25
12
  /**
26
13
  * @public
27
14
  * The type of the dialog modal
28
15
  */
29
- this.modalType = DialogModalType.modal;
30
- /**
31
- * @public
32
- * Indicates whether the dialog is open
33
- */
34
- this.open = false;
16
+ this.type = DialogType.modal;
35
17
  /**
36
18
  * @public
37
- * Indicates whether the dialog has a title action
38
- */
39
- this.noTitleAction = false;
40
- /**
41
- * @private
42
- * Indicates whether focus should be trapped within the dialog
43
- */
44
- this.trapFocus = false;
45
- /**
46
- * @public
47
- * Method to emit an event when the dialog's open state changes
48
- * @param dismissed - Indicates whether the dialog was dismissed
49
- */
50
- this.onOpenChangeEvent = (dismissed = false) => {
51
- this.$emit('onOpenChange', { open: this.dialog.open, dismissed: dismissed });
19
+ * Method to emit an event before the dialog's open state changes
20
+ * HTML spec proposal: https://github.com/whatwg/html/issues/9733
21
+ */
22
+ this.emitBeforeToggle = () => {
23
+ this.$emit('beforetoggle', {
24
+ oldState: this.dialog.open ? 'open' : 'closed',
25
+ newState: this.dialog.open ? 'closed' : 'open',
26
+ });
52
27
  };
53
28
  /**
54
29
  * @public
55
- * Handles keydown events on the dialog
56
- * @param e - The keydown event
57
- * @returns boolean | void
58
- */
59
- this.handleKeydown = (e) => {
60
- if (e.defaultPrevented) {
61
- return;
62
- }
63
- switch (e.key) {
64
- case keyEscape:
65
- if (this.modalType !== DialogModalType.alert) {
66
- this.hide(true);
67
- this.$emit('dismiss');
68
- }
69
- break;
70
- default:
71
- return true;
72
- }
73
- };
74
- /**
75
- * @private
76
- * Handles keydown events on the document
77
- * @param e - The keydown event
78
- */
79
- this.handleDocumentKeydown = (e) => {
80
- if (!e.defaultPrevented && this.dialog.open) {
81
- switch (e.key) {
82
- case keyTab:
83
- this.handleTabKeyDown(e);
84
- break;
85
- }
86
- }
30
+ * Method to emit an event after the dialog's open state changes
31
+ * HTML spec proposal: https://github.com/whatwg/html/issues/9733
32
+ */
33
+ this.emitToggle = () => {
34
+ this.$emit('toggle', {
35
+ oldState: this.dialog.open ? 'closed' : 'open',
36
+ newState: this.dialog.open ? 'open' : 'closed',
37
+ });
87
38
  };
88
- /**
89
- * @private
90
- * Handles tab keydown events
91
- * @param e - The keydown event
92
- */
93
- this.handleTabKeyDown = (e) => {
94
- if (!this.trapFocus || !this.dialog.open) {
95
- return;
96
- }
97
- const bounds = this.getTabQueueBounds();
98
- if (bounds.length === 1) {
99
- bounds[0].focus();
100
- e.preventDefault();
101
- return;
102
- }
103
- if (e.shiftKey && e.target === bounds[0]) {
104
- bounds[bounds.length - 1].focus();
105
- e.preventDefault();
106
- }
107
- else if (!e.shiftKey && e.target === bounds[bounds.length - 1]) {
108
- bounds[0].focus();
109
- e.preventDefault();
110
- }
111
- return;
112
- };
113
- /**
114
- * @private
115
- * Gets the bounds of the tab queue
116
- * @returns (HTMLElement | SVGElement)[]
117
- */
118
- this.getTabQueueBounds = () => {
119
- const bounds = [];
120
- return Dialog.reduceTabbableItems(bounds, this);
121
- };
122
- /**
123
- * @private
124
- * Focuses the first element in the tab queue
125
- */
126
- this.focusFirstElement = () => {
127
- const bounds = this.getTabQueueBounds();
128
- if (bounds.length > 0) {
129
- bounds[0].focus();
130
- }
131
- else {
132
- if (this.dialog instanceof HTMLElement) {
133
- this.dialog.focus();
134
- }
135
- }
136
- };
137
- /**
138
- * @private
139
- * Determines if focus should be forced
140
- * @param currentFocusElement - The currently focused element
141
- * @returns boolean
142
- */
143
- this.shouldForceFocus = (currentFocusElement) => {
144
- return this.isTrappingFocus && !this.contains(currentFocusElement);
145
- };
146
- /**
147
- * @private
148
- * Determines if focus should be trapped
149
- * @returns boolean
150
- */
151
- this.shouldTrapFocus = () => {
152
- return this.trapFocus && this.dialog.open;
153
- };
154
- /**
155
- * @private
156
- * Handles focus events on the document
157
- * @param e - The focus event
158
- */
159
- this.handleDocumentFocus = (e) => {
160
- if (!e.defaultPrevented && this.shouldForceFocus(e.target)) {
161
- this.focusFirstElement();
162
- e.preventDefault();
163
- }
164
- };
165
- /**
166
- * @private
167
- * Updates the state of focus trapping
168
- * @param shouldTrapFocusOverride - Optional override for whether focus should be trapped
169
- */
170
- this.updateTrapFocus = (shouldTrapFocusOverride) => {
171
- const shouldTrapFocus = shouldTrapFocusOverride === undefined ? this.shouldTrapFocus() : shouldTrapFocusOverride;
172
- if (shouldTrapFocus && !this.isTrappingFocus) {
173
- this.isTrappingFocus = true;
174
- // Add an event listener for focusin events if we are trapping focus
175
- document.addEventListener('focusin', this.handleDocumentFocus);
176
- Updates.enqueue(() => {
177
- if (this.shouldForceFocus(document.activeElement)) {
178
- this.focusFirstElement();
179
- }
180
- });
181
- }
182
- else if (!shouldTrapFocus && this.isTrappingFocus) {
183
- this.isTrappingFocus = false;
184
- // remove event listener if we are not trapping focus
185
- document.removeEventListener('focusin', this.handleDocumentFocus);
186
- }
187
- };
188
- }
189
- /**
190
- * @public
191
- * Lifecycle method called when the element is connected to the DOM
192
- */
193
- connectedCallback() {
194
- super.connectedCallback();
195
- document.addEventListener('keydown', this.handleDocumentKeydown);
196
- Updates.enqueue(() => {
197
- this.updateTrapFocus();
198
- this.setComponent();
199
- });
200
- }
201
- /**
202
- * @public
203
- * Lifecycle method called when the element is disconnected from the DOM
204
- */
205
- disconnectedCallback() {
206
- super.disconnectedCallback();
207
- document.removeEventListener('keydown', this.handleDocumentKeydown);
208
- this.updateTrapFocus(false);
209
- }
210
- /**
211
- * @public
212
- * Method called when the 'open' attribute changes
213
- */
214
- openChanged(oldValue, newValue) {
215
- if (newValue !== oldValue) {
216
- if (newValue && !oldValue) {
217
- this.show();
218
- }
219
- else if (!newValue && oldValue) {
220
- this.hide();
221
- }
222
- }
223
- }
224
- /**
225
- * @public
226
- * Method called when the 'modalType' attribute changes
227
- */
228
- modalTypeChanged(oldValue, newValue) {
229
- if (newValue !== oldValue) {
230
- if (newValue == DialogModalType.alert || newValue == DialogModalType.modal) {
231
- this.trapFocus = true;
232
- }
233
- else {
234
- this.trapFocus = false;
235
- }
236
- }
237
- }
238
- /**
239
- * @public
240
- * Method to set the component's state based on its attributes
241
- */
242
- setComponent() {
243
- if (this.modalType == DialogModalType.modal || this.modalType == DialogModalType.alert) {
244
- this.trapFocus = true;
245
- }
246
- else {
247
- this.trapFocus = false;
248
- }
249
39
  }
250
40
  /**
251
41
  * @public
@@ -253,100 +43,42 @@ export class Dialog extends FASTElement {
253
43
  */
254
44
  show() {
255
45
  Updates.enqueue(() => {
256
- if (this.modalType === DialogModalType.alert || this.modalType === DialogModalType.modal) {
46
+ this.emitBeforeToggle();
47
+ if (this.type === DialogType.alert || this.type === DialogType.modal) {
257
48
  this.dialog.showModal();
258
- this.open = true;
259
- this.updateTrapFocus(true);
260
49
  }
261
- else if (this.modalType === DialogModalType.nonModal) {
50
+ else if (this.type === DialogType.nonModal) {
262
51
  this.dialog.show();
263
- this.open = true;
264
52
  }
265
- this.onOpenChangeEvent();
53
+ this.emitToggle();
266
54
  });
267
55
  }
268
56
  /**
269
57
  * @public
270
58
  * Method to hide the dialog
271
- * @param dismissed - Indicates whether the dialog was dismissed
272
59
  */
273
- hide(dismissed = false) {
60
+ hide() {
61
+ this.emitBeforeToggle();
274
62
  this.dialog.close();
275
- this.open = false;
276
- this.onOpenChangeEvent(dismissed);
63
+ this.emitToggle();
277
64
  }
278
65
  /**
279
66
  * @public
280
- * Method to dismiss the dialog
281
- */
282
- dismiss() {
283
- if (this.modalType === DialogModalType.alert) {
284
- return;
285
- }
286
- this.hide(true);
287
- }
288
- /**
289
- * @public
290
- * Handles click events on the dialog
67
+ * Handles click events on the dialog overlay for light-dismiss
291
68
  * @param event - The click event
292
69
  * @returns boolean
293
70
  */
294
- handleClick(event) {
71
+ clickHandler(event) {
295
72
  event.preventDefault();
296
- if (this.dialog.open && this.modalType !== DialogModalType.alert && event.target === this.dialog) {
297
- this.dismiss();
73
+ if (this.dialog.open && this.type !== DialogType.alert && event.target === this.dialog) {
74
+ this.hide();
298
75
  }
299
76
  return true;
300
77
  }
301
- /**
302
- * @private
303
- * Reduces the list of tabbable items
304
- * @param elements - The current list of elements
305
- * @param element - The element to consider adding to the list
306
- * @returns HTMLElement[]
307
- */
308
- static reduceTabbableItems(elements, element) {
309
- if (element.getAttribute('tabindex') === '-1') {
310
- return elements;
311
- }
312
- if (isTabbable(element) || (Dialog.isFocusableFastElement(element) && Dialog.hasTabbableShadow(element))) {
313
- elements.push(element);
314
- return elements;
315
- }
316
- return Array.from(element.children).reduce((elements, currentElement) => Dialog.reduceTabbableItems(elements, currentElement), elements);
317
- }
318
- /**
319
- * @private
320
- * Determines if an element is a focusable FASTElement
321
- * @param element - The element to check
322
- * @returns boolean
323
- */
324
- static isFocusableFastElement(element) {
325
- var _a, _b;
326
- return !!((_b = (_a = element.$fastController) === null || _a === void 0 ? void 0 : _a.definition.shadowOptions) === null || _b === void 0 ? void 0 : _b.delegatesFocus);
327
- }
328
- /**
329
- * @private
330
- * Determines if an element has a tabbable shadow
331
- * @param element - The element to check
332
- * @returns boolean
333
- */
334
- static hasTabbableShadow(element) {
335
- var _a, _b;
336
- return Array.from((_b = (_a = element.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('*')) !== null && _b !== void 0 ? _b : []).some(x => {
337
- return isTabbable(x);
338
- });
339
- }
340
78
  }
341
79
  __decorate([
342
80
  observable
343
81
  ], Dialog.prototype, "dialog", void 0);
344
- __decorate([
345
- observable
346
- ], Dialog.prototype, "titleAction", void 0);
347
- __decorate([
348
- observable
349
- ], Dialog.prototype, "defaultTitleAction", void 0);
350
82
  __decorate([
351
83
  attr({ attribute: 'aria-describedby' })
352
84
  ], Dialog.prototype, "ariaDescribedby", void 0);
@@ -354,12 +86,6 @@ __decorate([
354
86
  attr({ attribute: 'aria-labelledby' })
355
87
  ], Dialog.prototype, "ariaLabelledby", void 0);
356
88
  __decorate([
357
- attr({ attribute: 'modal-type' })
358
- ], Dialog.prototype, "modalType", void 0);
359
- __decorate([
360
- attr({ mode: 'boolean' })
361
- ], Dialog.prototype, "open", void 0);
362
- __decorate([
363
- attr({ mode: 'boolean', attribute: 'no-title-action' })
364
- ], Dialog.prototype, "noTitleAction", void 0);
89
+ attr
90
+ ], Dialog.prototype, "type", void 0);
365
91
  //# sourceMappingURL=dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/dialog/dialog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/dialog/dialog.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,OAAO,MAAO,SAAQ,WAAW;IAAvC;;QAsBE;;;WAGG;QAEI,SAAI,GAAe,UAAU,CAAC,KAAK,CAAC;QAE3C;;;;WAIG;QACI,qBAAgB,GAAG,GAAS,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;gBACzB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;gBAC9C,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;aAC/C,CAAC,CAAC;QACL,CAAC,CAAC;QAEF;;;;WAIG;QACI,eAAU,GAAG,GAAS,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACnB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;gBAC9C,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;aAC/C,CAAC,CAAC;QACL,CAAC,CAAC;IAyCJ,CAAC;IAvCC;;;OAGG;IACI,IAAI;QACT,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,EAAE;gBACpE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;aACzB;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,EAAE;gBAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;aACpB;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,IAAI;QACT,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,KAAY;QAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YACtF,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAtFC;IADC,UAAU;sCACuB;AAOlC;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;+CACR;AAOhC;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;8CACR;AAO/B;IADC,IAAI;oCACsC"}
@@ -2,7 +2,7 @@
2
2
  * Dialog modal type
3
3
  * @public
4
4
  */
5
- export const DialogModalType = {
5
+ export const DialogType = {
6
6
  modal: 'modal',
7
7
  nonModal: 'non-modal',
8
8
  alert: 'alert',
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.options.js","sourceRoot":"","sources":["../../../src/dialog/dialog.options.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,OAAO;CACN,CAAC"}
1
+ {"version":3,"file":"dialog.options.js","sourceRoot":"","sources":["../../../src/dialog/dialog.options.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,OAAO;CACN,CAAC"}
@@ -1,101 +1,78 @@
1
1
  import { css } from '@microsoft/fast-element';
2
- import { display } from '../utils/index.js';
3
- import { borderRadiusXLarge, colorBackgroundOverlay, colorNeutralBackground1, colorNeutralForeground1, colorTransparentStroke, fontFamilyBase, fontSizeBase300, fontSizeBase500, fontWeightRegular, fontWeightSemibold, lineHeightBase300, lineHeightBase500, shadow64, spacingHorizontalS, spacingHorizontalXXL, spacingVerticalS, spacingVerticalXXL, strokeWidthThin, } from '../theme/design-tokens.js';
2
+ import { borderRadiusXLarge, colorBackgroundOverlay, colorNeutralBackground1, colorNeutralForeground1, colorTransparentStroke, curveAccelerateMid, curveDecelerateMid, curveLinear, durationGentle, shadow64, strokeWidthThin, } from '../theme/design-tokens.js';
4
3
  /** Dialog styles
5
4
  * @public
6
5
  */
7
6
  export const styles = css `
8
- ${display('flex')}
7
+ @layer base {
8
+ :host {
9
+ --dialog-backdrop: ${colorBackgroundOverlay};
10
+ --dialog-starting-scale: 0.85;
11
+ }
9
12
 
10
- :host {
11
- --dialog-backdrop: ${colorBackgroundOverlay};
12
- }
13
+ ::backdrop {
14
+ background: var(--dialog-backdrop, rgba(0, 0, 0, 0.4));
15
+ }
13
16
 
14
- dialog {
15
- background: ${colorNeutralBackground1};
16
- border: ${strokeWidthThin} solid ${colorTransparentStroke};
17
- z-index: 2;
18
- margin: auto auto;
19
- max-width: 100%;
20
- width: 100vw;
21
- border-radius: ${borderRadiusXLarge};
22
- box-shadow: ${shadow64};
23
- max-height: 100vh;
24
- height: fit-content;
25
- overflow: unset;
26
- position: fixed;
27
- inset: 0;
28
- padding: 0;
29
- }
17
+ dialog {
18
+ background: ${colorNeutralBackground1};
19
+ border-radius: ${borderRadiusXLarge};
20
+ border: ${strokeWidthThin} solid ${colorTransparentStroke};
21
+ box-shadow: ${shadow64};
22
+ color: ${colorNeutralForeground1};
23
+ max-height: calc(-48px + 100vh);
24
+ padding: 0;
25
+ width: 100%;
26
+ max-width: 600px;
27
+ }
30
28
 
31
- dialog::backdrop {
32
- background: var(--dialog-backdrop, rgba(0, 0, 0, 0.4));
29
+ :host([type='non-modal']) dialog {
30
+ inset: 0;
31
+ position: fixed;
32
+ z-index: 2;
33
+ overflow: auto;
34
+ }
33
35
  }
34
36
 
35
- .root {
36
- box-sizing: border-box;
37
- display: flex;
38
- flex-direction: column;
39
- overflow: unset;
40
- max-height: calc(100vh - 48px);
41
- padding: ${spacingVerticalXXL} ${spacingHorizontalXXL};
42
- }
37
+ @layer animations {
38
+ /* Disable animations for reduced motion */
39
+ @media (prefers-reduced-motion: no-preference) {
40
+ dialog,
41
+ ::backdrop {
42
+ transition: display allow-discrete, opacity, overlay allow-discrete, scale;
43
+ transition-duration: ${durationGentle};
44
+ transition-timing-function: ${curveDecelerateMid};
45
+ /* Set opacity to 0 when closed */
46
+ opacity: 0;
47
+ }
48
+ ::backdrop {
49
+ transition-timing-function: ${curveLinear};
50
+ }
43
51
 
44
- .title {
45
- font-size: ${fontSizeBase500};
46
- line-height: ${lineHeightBase500};
47
- font-weight: ${fontWeightSemibold};
48
- font-family: ${fontFamilyBase};
49
- color: ${colorNeutralForeground1};
50
- margin-bottom: ${spacingVerticalS};
51
- display: flex;
52
- justify-content: space-between;
53
- align-items: flex-start;
54
- column-gap: 8px;
55
- }
52
+ /* Set opacity to 1 when open */
53
+ [open],
54
+ [open]::backdrop {
55
+ opacity: 1;
56
+ }
56
57
 
57
- .content {
58
- vertical-align: top;
59
- min-height: 32px;
60
- color: ${colorNeutralForeground1};
61
- font-size: ${fontSizeBase300};
62
- line-height: ${lineHeightBase300};
63
- font-weight: ${fontWeightRegular};
64
- font-family: ${fontFamilyBase};
65
- overflow-y: auto;
66
- box-sizing: border-box;
67
- }
58
+ /* Exit styles for dialog */
59
+ dialog:not([open]) {
60
+ /* Make small when leaving */
61
+ scale: var(--dialog-starting-scale);
62
+ /* Faster leaving the stage then entering */
63
+ transition-timing-function: ${curveAccelerateMid};
64
+ }
65
+ }
68
66
 
69
- .actions {
70
- display: flex;
71
- grid-column-start: 1;
72
- flex-direction: column;
73
- max-width: 100vw;
74
- row-gap: ${spacingVerticalS};
75
- padding-top: ${spacingVerticalXXL};
76
- justify-self: stretch;
77
- width: 100%;
78
- }
79
- ::slotted([slot='action']) {
80
- width: 100%;
81
- }
67
+ @starting-style {
68
+ [open],
69
+ [open]::backdrop {
70
+ opacity: 0;
71
+ }
82
72
 
83
- @media screen and (min-width: 480px) {
84
- ::slotted([slot='action']) {
85
- width: fit-content;
86
- }
87
- dialog {
88
- max-width: 600px;
89
- width: 100%;
90
- }
91
- .actions {
92
- display: flex;
93
- flex-direction: row;
94
- justify-content: flex-end;
95
- align-items: center;
96
- column-gap: ${spacingHorizontalS};
97
- padding-top: ${spacingVerticalS};
98
- box-sizing: border-box;
73
+ dialog {
74
+ scale: var(--dialog-starting-scale);
75
+ }
99
76
  }
100
77
  }
101
78
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.styles.js","sourceRoot":"","sources":["../../../src/dialog/dialog.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,OAAO,CAAC,MAAM,CAAC;;;yBAGM,sBAAsB;;;;kBAI7B,uBAAuB;cAC3B,eAAe,UAAU,sBAAsB;;;;;qBAKxC,kBAAkB;kBACrB,QAAQ;;;;;;;;;;;;;;;;;;;eAmBX,kBAAkB,IAAI,oBAAoB;;;;iBAIxC,eAAe;mBACb,iBAAiB;mBACjB,kBAAkB;mBAClB,cAAc;aACpB,uBAAuB;qBACf,gBAAgB;;;;;;;;;;aAUxB,uBAAuB;iBACnB,eAAe;mBACb,iBAAiB;mBACjB,iBAAiB;mBACjB,cAAc;;;;;;;;;;eAUlB,gBAAgB;mBACZ,kBAAkB;;;;;;;;;;;;;;;;;;;;;oBAqBjB,kBAAkB;qBACjB,gBAAgB;;;;CAIpC,CAAC"}
1
+ {"version":3,"file":"dialog.styles.js","sourceRoot":"","sources":["../../../src/dialog/dialog.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,QAAQ,EACR,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;2BAGE,sBAAsB;;;;;;;;;oBAS7B,uBAAuB;uBACpB,kBAAkB;gBACzB,eAAe,UAAU,sBAAsB;oBAC3C,QAAQ;eACb,uBAAuB;;;;;;;;;;;;;;;;;;;;;+BAqBP,cAAc;sCACP,kBAAkB;;;;;sCAKlB,WAAW;;;;;;;;;;;;;;sCAcX,kBAAkB;;;;;;;;;;;;;;;CAevD,CAAC"}