@fluentui/react-dialog 9.0.0-beta.7 → 9.0.0-beta.9

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 (198) hide show
  1. package/CHANGELOG.json +189 -5
  2. package/CHANGELOG.md +44 -6
  3. package/Spec.md +44 -25
  4. package/dist/index.d.ts +99 -55
  5. package/lib/Dialog.js.map +1 -1
  6. package/lib/DialogActions.js.map +1 -1
  7. package/lib/DialogBody.js.map +1 -1
  8. package/lib/DialogContent.js +2 -0
  9. package/lib/DialogContent.js.map +1 -0
  10. package/lib/DialogSurface.js.map +1 -1
  11. package/lib/DialogTitle.js.map +1 -1
  12. package/lib/DialogTrigger.js.map +1 -1
  13. package/lib/components/Dialog/Dialog.js +0 -2
  14. package/lib/components/Dialog/Dialog.js.map +1 -1
  15. package/lib/components/Dialog/Dialog.types.js.map +1 -1
  16. package/lib/components/Dialog/index.js +0 -1
  17. package/lib/components/Dialog/index.js.map +1 -1
  18. package/lib/components/Dialog/renderDialog.js +2 -10
  19. package/lib/components/Dialog/renderDialog.js.map +1 -1
  20. package/lib/components/Dialog/useDialog.js +19 -129
  21. package/lib/components/Dialog/useDialog.js.map +1 -1
  22. package/lib/components/Dialog/useDialogContextValues.js +4 -4
  23. package/lib/components/Dialog/useDialogContextValues.js.map +1 -1
  24. package/lib/components/DialogActions/DialogActions.js.map +1 -1
  25. package/lib/components/DialogActions/DialogActions.types.js.map +1 -1
  26. package/lib/components/DialogActions/index.js.map +1 -1
  27. package/lib/components/DialogActions/renderDialogActions.js.map +1 -1
  28. package/lib/components/DialogActions/useDialogActions.js.map +1 -1
  29. package/lib/components/DialogActions/useDialogActionsStyles.js +3 -5
  30. package/lib/components/DialogActions/useDialogActionsStyles.js.map +1 -1
  31. package/lib/components/DialogBody/DialogBody.js.map +1 -1
  32. package/lib/components/DialogBody/DialogBody.types.js.map +1 -1
  33. package/lib/components/DialogBody/index.js.map +1 -1
  34. package/lib/components/DialogBody/renderDialogBody.js.map +1 -1
  35. package/lib/components/DialogBody/useDialogBody.js.map +1 -1
  36. package/lib/components/DialogBody/useDialogBodyStyles.js +5 -5
  37. package/lib/components/DialogBody/useDialogBodyStyles.js.map +1 -1
  38. package/lib/components/DialogContent/DialogContent.js +15 -0
  39. package/lib/components/DialogContent/DialogContent.js.map +1 -0
  40. package/lib/components/DialogContent/DialogContent.types.js +2 -0
  41. package/lib/components/DialogContent/DialogContent.types.js.map +1 -0
  42. package/lib/components/DialogContent/index.js +6 -0
  43. package/lib/components/DialogContent/index.js.map +1 -0
  44. package/lib/components/DialogContent/renderDialogContent.js +16 -0
  45. package/lib/components/DialogContent/renderDialogContent.js.map +1 -0
  46. package/lib/components/DialogContent/useDialogContent.js +27 -0
  47. package/lib/components/DialogContent/useDialogContent.js.map +1 -0
  48. package/lib/components/DialogContent/useDialogContentStyles.js +26 -0
  49. package/lib/components/DialogContent/useDialogContentStyles.js.map +1 -0
  50. package/lib/components/DialogSurface/DialogSurface.js.map +1 -1
  51. package/lib/components/DialogSurface/DialogSurface.types.js.map +1 -1
  52. package/lib/components/DialogSurface/index.js.map +1 -1
  53. package/lib/components/DialogSurface/renderDialogSurface.js +4 -2
  54. package/lib/components/DialogSurface/renderDialogSurface.js.map +1 -1
  55. package/lib/components/DialogSurface/useDialogSurface.js +120 -21
  56. package/lib/components/DialogSurface/useDialogSurface.js.map +1 -1
  57. package/lib/components/DialogSurface/useDialogSurfaceContextValues.js.map +1 -1
  58. package/lib/components/DialogSurface/useDialogSurfaceStyles.js +57 -7
  59. package/lib/components/DialogSurface/useDialogSurfaceStyles.js.map +1 -1
  60. package/lib/components/DialogTitle/DialogTitle.js +2 -3
  61. package/lib/components/DialogTitle/DialogTitle.js.map +1 -1
  62. package/lib/components/DialogTitle/DialogTitle.types.js.map +1 -1
  63. package/lib/components/DialogTitle/index.js.map +1 -1
  64. package/lib/components/DialogTitle/renderDialogTitle.js +2 -5
  65. package/lib/components/DialogTitle/renderDialogTitle.js.map +1 -1
  66. package/lib/components/DialogTitle/useDialogTitle.js +15 -9
  67. package/lib/components/DialogTitle/useDialogTitle.js.map +1 -1
  68. package/lib/components/DialogTitle/useDialogTitleStyles.js +61 -54
  69. package/lib/components/DialogTitle/useDialogTitleStyles.js.map +1 -1
  70. package/lib/components/DialogTrigger/DialogTrigger.js.map +1 -1
  71. package/lib/components/DialogTrigger/DialogTrigger.types.js.map +1 -1
  72. package/lib/components/DialogTrigger/index.js.map +1 -1
  73. package/lib/components/DialogTrigger/renderDialogTrigger.js.map +1 -1
  74. package/lib/components/DialogTrigger/useDialogTrigger.js +3 -22
  75. package/lib/components/DialogTrigger/useDialogTrigger.js.map +1 -1
  76. package/lib/contexts/constants.js +1 -1
  77. package/lib/contexts/constants.js.map +1 -1
  78. package/lib/contexts/dialogContext.js +2 -4
  79. package/lib/contexts/dialogContext.js.map +1 -1
  80. package/lib/contexts/dialogSurfaceContext.js.map +1 -1
  81. package/lib/contexts/index.js.map +1 -1
  82. package/lib/index.js +2 -1
  83. package/lib/index.js.map +1 -1
  84. package/lib/utils/index.js +4 -3
  85. package/lib/utils/index.js.map +1 -1
  86. package/lib/utils/isEscapeKeyDown.js +5 -4
  87. package/lib/utils/isEscapeKeyDown.js.map +1 -1
  88. package/lib/utils/isHTMLDialogElement.js +4 -0
  89. package/lib/utils/isHTMLDialogElement.js.map +1 -0
  90. package/lib/utils/useControlNativeDialogOpenState.js +20 -0
  91. package/lib/utils/useControlNativeDialogOpenState.js.map +1 -0
  92. package/lib/utils/useDisableBodyScroll.js +60 -0
  93. package/lib/utils/useDisableBodyScroll.js.map +1 -0
  94. package/lib/utils/useFocusFirstElement.js +41 -0
  95. package/lib/utils/useFocusFirstElement.js.map +1 -0
  96. package/lib-commonjs/Dialog.js.map +1 -1
  97. package/lib-commonjs/DialogActions.js.map +1 -1
  98. package/lib-commonjs/DialogBody.js.map +1 -1
  99. package/lib-commonjs/DialogContent.js +10 -0
  100. package/lib-commonjs/DialogContent.js.map +1 -0
  101. package/lib-commonjs/DialogSurface.js.map +1 -1
  102. package/lib-commonjs/DialogTitle.js.map +1 -1
  103. package/lib-commonjs/DialogTrigger.js.map +1 -1
  104. package/lib-commonjs/components/Dialog/Dialog.js +0 -3
  105. package/lib-commonjs/components/Dialog/Dialog.js.map +1 -1
  106. package/lib-commonjs/components/Dialog/index.js +0 -2
  107. package/lib-commonjs/components/Dialog/index.js.map +1 -1
  108. package/lib-commonjs/components/Dialog/renderDialog.js +2 -12
  109. package/lib-commonjs/components/Dialog/renderDialog.js.map +1 -1
  110. package/lib-commonjs/components/Dialog/useDialog.js +18 -128
  111. package/lib-commonjs/components/Dialog/useDialog.js.map +1 -1
  112. package/lib-commonjs/components/Dialog/useDialogContextValues.js +4 -4
  113. package/lib-commonjs/components/Dialog/useDialogContextValues.js.map +1 -1
  114. package/lib-commonjs/components/DialogActions/DialogActions.js.map +1 -1
  115. package/lib-commonjs/components/DialogActions/index.js.map +1 -1
  116. package/lib-commonjs/components/DialogActions/renderDialogActions.js.map +1 -1
  117. package/lib-commonjs/components/DialogActions/useDialogActions.js.map +1 -1
  118. package/lib-commonjs/components/DialogActions/useDialogActionsStyles.js +3 -6
  119. package/lib-commonjs/components/DialogActions/useDialogActionsStyles.js.map +1 -1
  120. package/lib-commonjs/components/DialogBody/DialogBody.js.map +1 -1
  121. package/lib-commonjs/components/DialogBody/index.js.map +1 -1
  122. package/lib-commonjs/components/DialogBody/renderDialogBody.js.map +1 -1
  123. package/lib-commonjs/components/DialogBody/useDialogBody.js.map +1 -1
  124. package/lib-commonjs/components/DialogBody/useDialogBodyStyles.js +4 -5
  125. package/lib-commonjs/components/DialogBody/useDialogBodyStyles.js.map +1 -1
  126. package/lib-commonjs/components/DialogContent/DialogContent.js +26 -0
  127. package/lib-commonjs/components/DialogContent/DialogContent.js.map +1 -0
  128. package/lib-commonjs/components/DialogContent/DialogContent.types.js +6 -0
  129. package/lib-commonjs/components/DialogContent/DialogContent.types.js.map +1 -0
  130. package/lib-commonjs/components/DialogContent/index.js +18 -0
  131. package/lib-commonjs/components/DialogContent/index.js.map +1 -0
  132. package/lib-commonjs/components/DialogContent/renderDialogContent.js +27 -0
  133. package/lib-commonjs/components/DialogContent/renderDialogContent.js.map +1 -0
  134. package/lib-commonjs/components/DialogContent/useDialogContent.js +37 -0
  135. package/lib-commonjs/components/DialogContent/useDialogContent.js.map +1 -0
  136. package/lib-commonjs/components/DialogContent/useDialogContentStyles.js +36 -0
  137. package/lib-commonjs/components/DialogContent/useDialogContentStyles.js.map +1 -0
  138. package/lib-commonjs/components/DialogSurface/DialogSurface.js.map +1 -1
  139. package/lib-commonjs/components/DialogSurface/index.js.map +1 -1
  140. package/lib-commonjs/components/DialogSurface/renderDialogSurface.js +5 -2
  141. package/lib-commonjs/components/DialogSurface/renderDialogSurface.js.map +1 -1
  142. package/lib-commonjs/components/DialogSurface/useDialogSurface.js +120 -21
  143. package/lib-commonjs/components/DialogSurface/useDialogSurface.js.map +1 -1
  144. package/lib-commonjs/components/DialogSurface/useDialogSurfaceContextValues.js.map +1 -1
  145. package/lib-commonjs/components/DialogSurface/useDialogSurfaceStyles.js +57 -6
  146. package/lib-commonjs/components/DialogSurface/useDialogSurfaceStyles.js.map +1 -1
  147. package/lib-commonjs/components/DialogTitle/DialogTitle.js +2 -3
  148. package/lib-commonjs/components/DialogTitle/DialogTitle.js.map +1 -1
  149. package/lib-commonjs/components/DialogTitle/index.js.map +1 -1
  150. package/lib-commonjs/components/DialogTitle/renderDialogTitle.js +2 -6
  151. package/lib-commonjs/components/DialogTitle/renderDialogTitle.js.map +1 -1
  152. package/lib-commonjs/components/DialogTitle/useDialogTitle.js +18 -10
  153. package/lib-commonjs/components/DialogTitle/useDialogTitle.js.map +1 -1
  154. package/lib-commonjs/components/DialogTitle/useDialogTitleStyles.js +62 -56
  155. package/lib-commonjs/components/DialogTitle/useDialogTitleStyles.js.map +1 -1
  156. package/lib-commonjs/components/DialogTrigger/DialogTrigger.js.map +1 -1
  157. package/lib-commonjs/components/DialogTrigger/index.js.map +1 -1
  158. package/lib-commonjs/components/DialogTrigger/renderDialogTrigger.js.map +1 -1
  159. package/lib-commonjs/components/DialogTrigger/useDialogTrigger.js +4 -24
  160. package/lib-commonjs/components/DialogTrigger/useDialogTrigger.js.map +1 -1
  161. package/lib-commonjs/contexts/constants.js +2 -2
  162. package/lib-commonjs/contexts/constants.js.map +1 -1
  163. package/lib-commonjs/contexts/dialogContext.js +2 -4
  164. package/lib-commonjs/contexts/dialogContext.js.map +1 -1
  165. package/lib-commonjs/contexts/dialogSurfaceContext.js.map +1 -1
  166. package/lib-commonjs/contexts/index.js.map +1 -1
  167. package/lib-commonjs/index.js +34 -13
  168. package/lib-commonjs/index.js.map +1 -1
  169. package/lib-commonjs/utils/index.js +5 -3
  170. package/lib-commonjs/utils/index.js.map +1 -1
  171. package/lib-commonjs/utils/isEscapeKeyDown.js +5 -4
  172. package/lib-commonjs/utils/isEscapeKeyDown.js.map +1 -1
  173. package/lib-commonjs/utils/isHTMLDialogElement.js +13 -0
  174. package/lib-commonjs/utils/isHTMLDialogElement.js.map +1 -0
  175. package/lib-commonjs/utils/useControlNativeDialogOpenState.js +31 -0
  176. package/lib-commonjs/utils/useControlNativeDialogOpenState.js.map +1 -0
  177. package/lib-commonjs/utils/useDisableBodyScroll.js +73 -0
  178. package/lib-commonjs/utils/useDisableBodyScroll.js.map +1 -0
  179. package/lib-commonjs/utils/useFocusFirstElement.js +54 -0
  180. package/lib-commonjs/utils/useFocusFirstElement.js.map +1 -0
  181. package/package.json +15 -16
  182. package/dist/tsdoc-metadata.json +0 -11
  183. package/lib/components/Dialog/useDialogStyles.js +0 -41
  184. package/lib/components/Dialog/useDialogStyles.js.map +0 -1
  185. package/lib/utils/isTargetDisabled.js +0 -14
  186. package/lib/utils/isTargetDisabled.js.map +0 -1
  187. package/lib/utils/localShorthands.js +0 -9
  188. package/lib/utils/localShorthands.js.map +0 -1
  189. package/lib/utils/normalizeDefaultPrevented.js +0 -11
  190. package/lib/utils/normalizeDefaultPrevented.js.map +0 -1
  191. package/lib-commonjs/components/Dialog/useDialogStyles.js +0 -53
  192. package/lib-commonjs/components/Dialog/useDialogStyles.js.map +0 -1
  193. package/lib-commonjs/utils/isTargetDisabled.js +0 -23
  194. package/lib-commonjs/utils/isTargetDisabled.js.map +0 -1
  195. package/lib-commonjs/utils/localShorthands.js +0 -18
  196. package/lib-commonjs/utils/localShorthands.js.map +0 -1
  197. package/lib-commonjs/utils/normalizeDefaultPrevented.js +0 -20
  198. package/lib-commonjs/utils/normalizeDefaultPrevented.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["packages/react-components/react-dialog/src/utils/useControlNativeDialogOpenState.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,MAAA,qBAAA,gBAAA,OAAA,CAAA,uBAAA,CAAA;;AAIA,SAAgB,+BAAhB,CAAgD,IAAhD,EAA+D,SAA/D,EAAyF;EACvF,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAN,CAAmC,IAAnC,CAAzB;EAEA,KAAK,CAAC,SAAN,CAAgB,MAAK;IACnB,IAAI,qBAAA,CAAA,mBAAA,CAAoB,gBAAgB,CAAC,OAArC,KAAiD,gBAAgB,CAAC,OAAjB,CAAyB,IAAzB,KAAkC,IAAvF,EAA6F;MAC3F,IAAI,IAAJ,EAAU;QACR,IAAI,SAAS,KAAK,WAAlB,EAA+B;UAC7B,gBAAgB,CAAC,OAAjB,CAAyB,IAAzB;QACD,CAFD,MAEO;UACL,gBAAgB,CAAC,OAAjB,CAAyB,SAAzB;QACD;MACF,CAND,MAMO;QACL,gBAAgB,CAAC,OAAjB,CAAyB,KAAzB;MACD;IACF;EACF,CAZD,EAYG,CAAC,IAAD,EAAO,SAAP,CAZH;EAcA,OAAO,gBAAP;AACD;;AAlBD,OAAA,CAAA,+BAAA,GAAA,+BAAA","sourcesContent":["import * as React from 'react';\nimport { isHTMLDialogElement } from './isHTMLDialogElement';\nimport type { DialogModalType } from '../Dialog';\nimport type { DialogSurfaceElement } from '../DialogSurface';\n\nexport function useControlNativeDialogOpenState(open: boolean, modalType: DialogModalType) {\n const dialogSurfaceRef = React.useRef<DialogSurfaceElement>(null);\n\n React.useEffect(() => {\n if (isHTMLDialogElement(dialogSurfaceRef.current) && dialogSurfaceRef.current.open !== open) {\n if (open) {\n if (modalType === 'non-modal') {\n dialogSurfaceRef.current.show();\n } else {\n dialogSurfaceRef.current.showModal();\n }\n } else {\n dialogSurfaceRef.current.close();\n }\n }\n }, [open, modalType]);\n\n return dialogSurfaceRef;\n}\n"],"sourceRoot":"../src/"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.disableScroll = exports.useDisableBodyScroll = void 0;
7
+
8
+ const react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
9
+
10
+ const react_1 = /*#__PURE__*/require("react");
11
+
12
+ const disableScrollElementProp = '__fluentDisableScrollElement';
13
+ /**
14
+ * hook that disables body scrolling through `overflow: hidden` CSS property
15
+ */
16
+
17
+ function useDisableBodyScroll() {
18
+ const {
19
+ targetDocument
20
+ } = react_shared_contexts_1.useFluent_unstable();
21
+ return react_1.useCallback(() => {
22
+ if (targetDocument) {
23
+ return disableScroll(targetDocument.body);
24
+ }
25
+ }, [targetDocument]);
26
+ }
27
+
28
+ exports.useDisableBodyScroll = useDisableBodyScroll;
29
+ /**
30
+ * disables scrolling from a given element through `overflow: hidden` CSS property
31
+ * @param target - element to disable scrolling from
32
+ * @returns a method for enabling scrolling again
33
+ */
34
+
35
+ function disableScroll(target) {
36
+ var _a, _b;
37
+
38
+ const {
39
+ clientWidth
40
+ } = target.ownerDocument.documentElement;
41
+ const innerWidth = (_b = (_a = target.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.innerWidth) !== null && _b !== void 0 ? _b : 0;
42
+ assertIsDisableScrollElement(target);
43
+
44
+ if (target[disableScrollElementProp].count === 0) {
45
+ target.style.overflow = 'hidden';
46
+ target.style.paddingRight = `${innerWidth - clientWidth}px`;
47
+ }
48
+
49
+ target[disableScrollElementProp].count++;
50
+ return () => {
51
+ target[disableScrollElementProp].count--;
52
+
53
+ if (target[disableScrollElementProp].count === 0) {
54
+ target.style.overflow = target[disableScrollElementProp].previousOverflowStyle;
55
+ target.style.paddingRight = target[disableScrollElementProp].previousPaddingRightStyle;
56
+ }
57
+ };
58
+ }
59
+
60
+ exports.disableScroll = disableScroll;
61
+
62
+ function assertIsDisableScrollElement(element) {
63
+ var _a;
64
+
65
+ var _b;
66
+
67
+ (_a = (_b = element)[disableScrollElementProp]) !== null && _a !== void 0 ? _a : _b[disableScrollElementProp] = {
68
+ count: 0,
69
+ previousOverflowStyle: element.style.overflow,
70
+ previousPaddingRightStyle: element.style.paddingRight
71
+ };
72
+ }
73
+ //# sourceMappingURL=useDisableBodyScroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["packages/react-components/react-dialog/src/utils/useDisableBodyScroll.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,uBAAA,gBAAA,OAAA,CAAA,iCAAA,CAAA;;AACA,MAAA,OAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AAEA,MAAM,wBAAwB,GAAG,8BAAjC;AAUA;;AAEG;;AACH,SAAgB,oBAAhB,GAAoC;EAClC,MAAM;IAAE;EAAF,IAAqB,uBAAA,CAAA,kBAAA,EAA3B;EACA,OAAO,OAAA,CAAA,WAAA,CAAY,MAAK;IACtB,IAAI,cAAJ,EAAoB;MAClB,OAAO,aAAa,CAAC,cAAc,CAAC,IAAhB,CAApB;IACD;EACF,CAJM,EAIJ,CAAC,cAAD,CAJI,CAAP;AAKD;;AAPD,OAAA,CAAA,oBAAA,GAAA,oBAAA;AASA;;;;AAIG;;AACH,SAAgB,aAAhB,CAA8B,MAA9B,EAAiD;;;EAC/C,MAAM;IAAE;EAAF,IAAkB,MAAM,CAAC,aAAP,CAAqB,eAA7C;EACA,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,aAAP,CAAqB,WAArB,MAAgC,IAAhC,IAAgC,EAAA,KAAA,KAAA,CAAhC,GAAgC,KAAA,CAAhC,GAAgC,EAAA,CAAE,UAAlC,MAA4C,IAA5C,IAA4C,EAAA,KAAA,KAAA,CAA5C,GAA4C,EAA5C,GAAgD,CAAnE;EACA,4BAA4B,CAAC,MAAD,CAA5B;;EACA,IAAI,MAAM,CAAC,wBAAD,CAAN,CAAiC,KAAjC,KAA2C,CAA/C,EAAkD;IAChD,MAAM,CAAC,KAAP,CAAa,QAAb,GAAwB,QAAxB;IACA,MAAM,CAAC,KAAP,CAAa,YAAb,GAA4B,GAAG,UAAU,GAAG,WAAW,IAAvD;EACD;;EACD,MAAM,CAAC,wBAAD,CAAN,CAAiC,KAAjC;EACA,OAAO,MAAK;IACV,MAAM,CAAC,wBAAD,CAAN,CAAiC,KAAjC;;IACA,IAAI,MAAM,CAAC,wBAAD,CAAN,CAAiC,KAAjC,KAA2C,CAA/C,EAAkD;MAChD,MAAM,CAAC,KAAP,CAAa,QAAb,GAAwB,MAAM,CAAC,wBAAD,CAAN,CAAiC,qBAAzD;MACA,MAAM,CAAC,KAAP,CAAa,YAAb,GAA4B,MAAM,CAAC,wBAAD,CAAN,CAAiC,yBAA7D;IACD;EACF,CAND;AAOD;;AAhBD,OAAA,CAAA,aAAA,GAAA,aAAA;;AAkBA,SAAS,4BAAT,CAAsC,OAAtC,EAA0D;;;;;EACxD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAC,OAAD,EAAwC,wBAAxC,CAAA,MAAgE,IAAhE,IAAgE,EAAA,KAAA,KAAA,CAAhE,GAAgE,EAAhE,GAAgE,EAAA,CAAxB,wBAAwB,CAAA,GAAM;IACpE,KAAK,EAAE,CAD6D;IAEpE,qBAAqB,EAAE,OAAO,CAAC,KAAR,CAAc,QAF+B;IAGpE,yBAAyB,EAAE,OAAO,CAAC,KAAR,CAAc;EAH2B,CAAtE;AAKD","sourcesContent":["import { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { useCallback } from 'react';\n\nconst disableScrollElementProp = '__fluentDisableScrollElement' as const;\n\ntype FluentDisableScrollElement = HTMLElement & {\n [disableScrollElementProp]: {\n count: number;\n previousOverflowStyle: string;\n previousPaddingRightStyle: string;\n };\n};\n\n/**\n * hook that disables body scrolling through `overflow: hidden` CSS property\n */\nexport function useDisableBodyScroll() {\n const { targetDocument } = useFluent_unstable();\n return useCallback(() => {\n if (targetDocument) {\n return disableScroll(targetDocument.body);\n }\n }, [targetDocument]);\n}\n\n/**\n * disables scrolling from a given element through `overflow: hidden` CSS property\n * @param target - element to disable scrolling from\n * @returns a method for enabling scrolling again\n */\nexport function disableScroll(target: HTMLElement) {\n const { clientWidth } = target.ownerDocument.documentElement;\n const innerWidth = target.ownerDocument.defaultView?.innerWidth ?? 0;\n assertIsDisableScrollElement(target);\n if (target[disableScrollElementProp].count === 0) {\n target.style.overflow = 'hidden';\n target.style.paddingRight = `${innerWidth - clientWidth}px`;\n }\n target[disableScrollElementProp].count++;\n return () => {\n target[disableScrollElementProp].count--;\n if (target[disableScrollElementProp].count === 0) {\n target.style.overflow = target[disableScrollElementProp].previousOverflowStyle;\n target.style.paddingRight = target[disableScrollElementProp].previousPaddingRightStyle;\n }\n };\n}\n\nfunction assertIsDisableScrollElement(element: HTMLElement): asserts element is FluentDisableScrollElement {\n (element as FluentDisableScrollElement)[disableScrollElementProp] ??= {\n count: 0,\n previousOverflowStyle: element.style.overflow,\n previousPaddingRightStyle: element.style.paddingRight,\n };\n}\n"],"sourceRoot":"../src/"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useFocusFirstElement = void 0;
7
+
8
+ const React = /*#__PURE__*/require("react");
9
+
10
+ const react_tabster_1 = /*#__PURE__*/require("@fluentui/react-tabster");
11
+
12
+ const react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
13
+
14
+ const isHTMLDialogElement_1 = /*#__PURE__*/require("./isHTMLDialogElement");
15
+ /**
16
+ * Focus first element on content when dialog is opened,
17
+ */
18
+
19
+
20
+ function useFocusFirstElement(open, modalType) {
21
+ const {
22
+ findFirstFocusable
23
+ } = react_tabster_1.useFocusFinders();
24
+ const {
25
+ targetDocument
26
+ } = react_shared_contexts_1.useFluent_unstable();
27
+ const dialogRef = React.useRef(null);
28
+ const triggerRef = React.useRef();
29
+ React.useEffect(() => {
30
+ var _a, _b;
31
+
32
+ if (!open) {
33
+ return (_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.focus();
34
+ }
35
+
36
+ triggerRef.current = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.activeElement;
37
+ const element = dialogRef.current && findFirstFocusable(dialogRef.current);
38
+
39
+ if (element) {
40
+ // this is only required for non native dialogs
41
+ if (!isHTMLDialogElement_1.isHTMLDialogElement(dialogRef.current)) {
42
+ element.focus();
43
+ }
44
+ } else if (process.env.NODE_ENV !== 'production') {
45
+ (_b = triggerRef.current) === null || _b === void 0 ? void 0 : _b.blur(); // eslint-disable-next-line no-console
46
+
47
+ console.warn('A Dialog should have at least one focusable element inside DialogSurface');
48
+ }
49
+ }, [findFirstFocusable, open, modalType, targetDocument]);
50
+ return dialogRef;
51
+ }
52
+
53
+ exports.useFocusFirstElement = useFocusFirstElement;
54
+ //# sourceMappingURL=useFocusFirstElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["packages/react-components/react-dialog/src/utils/useFocusFirstElement.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,MAAA,eAAA,gBAAA,OAAA,CAAA,yBAAA,CAAA;;AACA,MAAA,uBAAA,gBAAA,OAAA,CAAA,iCAAA,CAAA;;AAGA,MAAA,qBAAA,gBAAA,OAAA,CAAA,uBAAA,CAAA;AAEA;;AAEG;;;AACH,SAAgB,oBAAhB,CAAqC,IAArC,EAAoD,SAApD,EAA8E;EAC5E,MAAM;IAAE;EAAF,IAAyB,eAAA,CAAA,eAAA,EAA/B;EACA,MAAM;IAAE;EAAF,IAAqB,uBAAA,CAAA,kBAAA,EAA3B;EACA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAN,CAAmC,IAAnC,CAAlB;EACA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAN,EAAnB;EAEA,KAAK,CAAC,SAAN,CAAgB,MAAK;;;IACnB,IAAI,CAAC,IAAL,EAAW;MACT,OAAO,CAAA,EAAA,GAAA,UAAU,CAAC,OAAX,MAAkB,IAAlB,IAAkB,EAAA,KAAA,KAAA,CAAlB,GAAkB,KAAA,CAAlB,GAAkB,EAAA,CAAE,KAAF,EAAzB;IACD;;IACD,UAAU,CAAC,OAAX,GAAqB,cAAc,KAAA,IAAd,IAAA,cAAc,KAAA,KAAA,CAAd,GAAc,KAAA,CAAd,GAAA,cAAc,CAAE,aAArC;IACA,MAAM,OAAO,GAAG,SAAS,CAAC,OAAV,IAAqB,kBAAkB,CAAC,SAAS,CAAC,OAAX,CAAvD;;IACA,IAAI,OAAJ,EAAa;MACX;MACA,IAAI,CAAC,qBAAA,CAAA,mBAAA,CAAoB,SAAS,CAAC,OAA9B,CAAL,EAA6C;QAC3C,OAAO,CAAC,KAAR;MACD;IACF,CALD,MAKO,IAAI,OAAO,CAAC,GAAR,CAAY,QAAZ,KAAyB,YAA7B,EAA2C;MAChD,CAAA,EAAA,GAAA,UAAU,CAAC,OAAX,MAAkB,IAAlB,IAAkB,EAAA,KAAA,KAAA,CAAlB,GAAkB,KAAA,CAAlB,GAAkB,EAAA,CAAE,IAAF,EAAlB,CADgD,CAEhD;;MACA,OAAO,CAAC,IAAR,CAAa,0EAAb;IACD;EACF,CAhBD,EAgBG,CAAC,kBAAD,EAAqB,IAArB,EAA2B,SAA3B,EAAsC,cAAtC,CAhBH;EAkBA,OAAO,SAAP;AACD;;AAzBD,OAAA,CAAA,oBAAA,GAAA,oBAAA","sourcesContent":["import * as React from 'react';\nimport { useFocusFinders } from '@fluentui/react-tabster';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport type { DialogSurfaceElement } from '../DialogSurface';\nimport type { DialogModalType } from '../Dialog';\nimport { isHTMLDialogElement } from './isHTMLDialogElement';\n\n/**\n * Focus first element on content when dialog is opened,\n */\nexport function useFocusFirstElement(open: boolean, modalType: DialogModalType) {\n const { findFirstFocusable } = useFocusFinders();\n const { targetDocument } = useFluent_unstable();\n const dialogRef = React.useRef<DialogSurfaceElement>(null);\n const triggerRef = React.useRef<HTMLElement>();\n\n React.useEffect(() => {\n if (!open) {\n return triggerRef.current?.focus();\n }\n triggerRef.current = targetDocument?.activeElement as HTMLElement | undefined;\n const element = dialogRef.current && findFirstFocusable(dialogRef.current);\n if (element) {\n // this is only required for non native dialogs\n if (!isHTMLDialogElement(dialogRef.current)) {\n element.focus();\n }\n } else if (process.env.NODE_ENV !== 'production') {\n triggerRef.current?.blur();\n // eslint-disable-next-line no-console\n console.warn('A Dialog should have at least one focusable element inside DialogSurface');\n }\n }, [findFirstFocusable, open, modalType, targetDocument]);\n\n return dialogRef;\n}\n"],"sourceRoot":"../src/"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-dialog",
3
- "version": "9.0.0-beta.7",
3
+ "version": "9.0.0-beta.9",
4
4
  "description": "Dialog component for Fluent UI React",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -20,30 +20,29 @@
20
20
  "lint": "just-scripts lint",
21
21
  "start": "yarn storybook",
22
22
  "test": "jest --passWithNoTests",
23
- "e2e": "yarn cypress run --component",
24
- "e2e:local": "yarn cypress open --component",
25
- "docs": "api-extractor run --config=config/api-extractor.local.json --local",
26
- "build:local": "tsc -p ./tsconfig.lib.json --module esnext --emitDeclarationOnly && node ../../../scripts/typescript/normalize-import --output ./dist/types/packages/react-components/react-dialog/src && yarn docs",
27
- "storybook": "node ../../../scripts/storybook/runner",
28
- "type-check": "tsc -b tsconfig.json"
23
+ "e2e": "cypress run --component",
24
+ "e2e:local": "cypress open --component",
25
+ "storybook": "start-storybook",
26
+ "type-check": "tsc -b tsconfig.json",
27
+ "generate-api": "tsc -p ./tsconfig.lib.json --emitDeclarationOnly && just-scripts api-extractor"
29
28
  },
30
29
  "devDependencies": {
31
30
  "@fluentui/eslint-plugin": "*",
32
31
  "@fluentui/react-conformance": "*",
33
- "@fluentui/react-conformance-griffel": "9.0.0-beta.12",
32
+ "@fluentui/react-conformance-griffel": "9.0.0-beta.14",
34
33
  "@fluentui/scripts": "^1.0.0"
35
34
  },
36
35
  "dependencies": {
37
- "@griffel/react": "^1.2.3",
38
- "@fluentui/react-utilities": "^9.0.2",
36
+ "@griffel/react": "^1.3.0",
37
+ "@fluentui/react-utilities": "^9.1.0",
39
38
  "@fluentui/keyboard-keys": "^9.0.0",
40
- "@fluentui/react-context-selector": "^9.0.2",
41
- "@fluentui/react-shared-contexts": "^9.0.0",
42
- "@fluentui/react-aria": "^9.1.0",
39
+ "@fluentui/react-context-selector": "^9.0.3",
40
+ "@fluentui/react-shared-contexts": "^9.0.1",
41
+ "@fluentui/react-aria": "^9.2.0",
43
42
  "@fluentui/react-icons": "^2.0.175",
44
- "@fluentui/react-tabster": "^9.1.0",
45
- "@fluentui/react-theme": "^9.0.0",
46
- "@fluentui/react-portal": "^9.0.4",
43
+ "@fluentui/react-tabster": "^9.1.1",
44
+ "@fluentui/react-theme": "^9.1.0",
45
+ "@fluentui/react-portal": "^9.0.5",
47
46
  "tslib": "^2.1.0"
48
47
  },
49
48
  "peerDependencies": {
@@ -1,11 +0,0 @@
1
- // This file is read by tools that parse documentation comments conforming to the TSDoc standard.
2
- // It should be published with your NPM package. It should not be tracked by Git.
3
- {
4
- "tsdocVersion": "0.12",
5
- "toolPackages": [
6
- {
7
- "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.18.1"
9
- }
10
- ]
11
- }
@@ -1,41 +0,0 @@
1
- import { __styles, mergeClasses, shorthands } from '@griffel/react';
2
- import { useHasParentContext } from '@fluentui/react-context-selector';
3
- import { DialogContext } from '../../contexts/dialogContext';
4
- export const dialogClassNames = {
5
- overlay: 'fui-Dialog__overlay'
6
- };
7
- /**
8
- * Styles for the root slot
9
- */
10
-
11
- const useStyles = /*#__PURE__*/__styles({
12
- "overlay": {
13
- "qhf8xq": "f19dog8a",
14
- "De3pzq": "fju19wo",
15
- "Bhzewxz": "f113wtx2",
16
- "j35jbq": ["f10k790i", "f1xynx9j"],
17
- "B5kzvoi": "f5gq2j6",
18
- "oyh7mz": ["f1xynx9j", "f10k790i"]
19
- },
20
- "nestedDialogOverlay": {
21
- "De3pzq": "f3rmtva"
22
- }
23
- }, {
24
- "d": [".f19dog8a{position:fixed;}", ".fju19wo{background-color:rgba(0, 0, 0, 0.4);}", ".f113wtx2{top:0px;}", ".f10k790i{right:0px;}", ".f1xynx9j{left:0px;}", ".f5gq2j6{bottom:0px;}", ".f3rmtva{background-color:transparent;}"]
25
- });
26
- /**
27
- * Apply styling to the Dialog slots based on the state
28
- */
29
-
30
-
31
- export const useDialogStyles_unstable = state => {
32
- const styles = useStyles();
33
- const isNestedDialog = useHasParentContext(DialogContext);
34
-
35
- if (state.overlay) {
36
- state.overlay.className = mergeClasses(dialogClassNames.overlay, styles.overlay, isNestedDialog && styles.nestedDialogOverlay, state.overlay.className);
37
- }
38
-
39
- return state;
40
- };
41
- //# sourceMappingURL=useDialogStyles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/Dialog/useDialogStyles.ts"],"names":[],"mappings":"AACA,mBAAqB,YAArB,EAAmC,UAAnC,QAAqD,gBAArD;AACA,SAAS,mBAAT,QAAoC,kCAApC;AACA,SAAS,aAAT,QAA8B,8BAA9B;AAGA,OAAO,MAAM,gBAAgB,GAAgC;EAC3D,OAAO,EAAE;AADkD,CAAtD;AAGP;;AAEG;;AACH,MAAM,SAAS,gBAAG;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;IAAA;EAAA;AAAA;EAAA;AAAA,EAAlB;AAWA;;AAEG;;;AACH,OAAO,MAAM,wBAAwB,GAAI,KAAD,IAAoC;EAC1E,MAAM,MAAM,GAAG,SAAS,EAAxB;EACA,MAAM,cAAc,GAAG,mBAAmB,CAAC,aAAD,CAA1C;;EAEA,IAAI,KAAK,CAAC,OAAV,EAAmB;IACjB,KAAK,CAAC,OAAN,CAAc,SAAd,GAA0B,YAAY,CACpC,gBAAgB,CAAC,OADmB,EAEpC,MAAM,CAAC,OAF6B,EAGpC,cAAc,IAAI,MAAM,CAAC,mBAHW,EAIpC,KAAK,CAAC,OAAN,CAAc,SAJsB,CAAtC;EAMD;;EAED,OAAO,KAAP;AACD,CAdM","sourcesContent":["import type { SlotClassNames } from '@fluentui/react-utilities';\nimport { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { useHasParentContext } from '@fluentui/react-context-selector';\nimport { DialogContext } from '../../contexts/dialogContext';\nimport type { DialogSlots, DialogState } from './Dialog.types';\n\nexport const dialogClassNames: SlotClassNames<DialogSlots> = {\n overlay: 'fui-Dialog__overlay',\n};\n/**\n * Styles for the root slot\n */\nconst useStyles = makeStyles({\n overlay: {\n position: 'fixed',\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n ...shorthands.inset('0px'),\n },\n nestedDialogOverlay: {\n backgroundColor: 'transparent',\n },\n});\n\n/**\n * Apply styling to the Dialog slots based on the state\n */\nexport const useDialogStyles_unstable = (state: DialogState): DialogState => {\n const styles = useStyles();\n const isNestedDialog = useHasParentContext(DialogContext);\n\n if (state.overlay) {\n state.overlay.className = mergeClasses(\n dialogClassNames.overlay,\n styles.overlay,\n isNestedDialog && styles.nestedDialogOverlay,\n state.overlay.className,\n );\n }\n\n return state;\n};\n"],"sourceRoot":"../src/"}
@@ -1,14 +0,0 @@
1
- export function isTargetDisabled(event) {
2
- const isDisabled = el => el.hasAttribute('disabled') || el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true';
3
-
4
- if (isHTMLElement(event.target) && isDisabled(event.target)) {
5
- return true;
6
- }
7
-
8
- return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);
9
- }
10
-
11
- function isHTMLElement(element) {
12
- return Boolean(element && typeof element === 'object' && 'hasAttribute' in element && 'getAttribute' in element);
13
- }
14
- //# sourceMappingURL=isTargetDisabled.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["utils/isTargetDisabled.ts"],"names":[],"mappings":"AAEA,OAAM,SAAU,gBAAV,CAA2B,KAA3B,EAA8D;EAClE,MAAM,UAAU,GAAI,EAAD,IACjB,EAAE,CAAC,YAAH,CAAgB,UAAhB,KAAgC,EAAE,CAAC,YAAH,CAAgB,eAAhB,KAAoC,EAAE,CAAC,YAAH,CAAgB,eAAhB,MAAqC,MAD3G;;EAEA,IAAI,aAAa,CAAC,KAAK,CAAC,MAAP,CAAb,IAA+B,UAAU,CAAC,KAAK,CAAC,MAAP,CAA7C,EAA4E;IAC1E,OAAO,IAAP;EACD;;EAED,OAAO,aAAa,CAAC,KAAK,CAAC,aAAP,CAAb,IAAsC,UAAU,CAAC,KAAK,CAAC,aAAP,CAAvD;AACD;;AAED,SAAS,aAAT,CAAuB,OAAvB,EAA6C;EAC3C,OAAO,OAAO,CAAC,OAAO,IAAI,OAAO,OAAP,KAAmB,QAA9B,IAA0C,kBAAkB,OAA5D,IAAuE,kBAAkB,OAA1F,CAAd;AACD","sourcesContent":["import * as React from 'react';\n\nexport function isTargetDisabled(event: React.SyntheticEvent | Event) {\n const isDisabled = (el: HTMLElement) =>\n el.hasAttribute('disabled') || (el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true');\n if (isHTMLElement(event.target) && isDisabled(event.target as HTMLElement)) {\n return true;\n }\n\n return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);\n}\n\nfunction isHTMLElement(element: object | null): element is HTMLElement {\n return Boolean(element && typeof element === 'object' && 'hasAttribute' in element && 'getAttribute' in element);\n}\n"],"sourceRoot":"../src/"}
@@ -1,9 +0,0 @@
1
- export function gridArea(name) {
2
- return {
3
- gridRowStart: name,
4
- gridRowEnd: name,
5
- gridColumnStart: name,
6
- gridColumnEnd: name
7
- };
8
- }
9
- //# sourceMappingURL=localShorthands.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["utils/localShorthands.ts"],"names":[],"mappings":"AAAA,OAAM,SAAU,QAAV,CAAmB,IAAnB,EAA+B;EACnC,OAAO;IACL,YAAY,EAAE,IADT;IAEL,UAAU,EAAE,IAFP;IAGL,eAAe,EAAE,IAHZ;IAIL,aAAa,EAAE;EAJV,CAAP;AAMD","sourcesContent":["export function gridArea(name: string) {\n return {\n gridRowStart: name,\n gridRowEnd: name,\n gridColumnStart: name,\n gridColumnEnd: name,\n };\n}\n"],"sourceRoot":"../src/"}
@@ -1,11 +0,0 @@
1
- /**
2
- * normalizes defaultPrevented to work the same way between synthetic events and regular event
3
- */
4
- export function normalizeDefaultPrevented(event) {
5
- if (event instanceof Event) {
6
- return () => event.defaultPrevented;
7
- }
8
-
9
- return event.isDefaultPrevented;
10
- }
11
- //# sourceMappingURL=normalizeDefaultPrevented.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["utils/normalizeDefaultPrevented.ts"],"names":[],"mappings":"AAEA;;AAEG;AACH,OAAM,SAAU,yBAAV,CAAoC,KAApC,EAAuE;EAC3E,IAAI,KAAK,YAAY,KAArB,EAA4B;IAC1B,OAAO,MAAM,KAAK,CAAC,gBAAnB;EACD;;EACD,OAAO,KAAK,CAAC,kBAAb;AACD","sourcesContent":["import * as React from 'react';\n\n/**\n * normalizes defaultPrevented to work the same way between synthetic events and regular event\n */\nexport function normalizeDefaultPrevented(event: React.SyntheticEvent | Event) {\n if (event instanceof Event) {\n return () => event.defaultPrevented;\n }\n return event.isDefaultPrevented;\n}\n"],"sourceRoot":"../src/"}
@@ -1,53 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useDialogStyles_unstable = exports.dialogClassNames = void 0;
7
-
8
- const react_1 = /*#__PURE__*/require("@griffel/react");
9
-
10
- const react_context_selector_1 = /*#__PURE__*/require("@fluentui/react-context-selector");
11
-
12
- const dialogContext_1 = /*#__PURE__*/require("../../contexts/dialogContext");
13
-
14
- exports.dialogClassNames = {
15
- overlay: 'fui-Dialog__overlay'
16
- };
17
- /**
18
- * Styles for the root slot
19
- */
20
-
21
- const useStyles = /*#__PURE__*/react_1.__styles({
22
- "overlay": {
23
- "qhf8xq": "f19dog8a",
24
- "De3pzq": "fju19wo",
25
- "Bhzewxz": "f113wtx2",
26
- "j35jbq": ["f10k790i", "f1xynx9j"],
27
- "B5kzvoi": "f5gq2j6",
28
- "oyh7mz": ["f1xynx9j", "f10k790i"]
29
- },
30
- "nestedDialogOverlay": {
31
- "De3pzq": "f3rmtva"
32
- }
33
- }, {
34
- "d": [".f19dog8a{position:fixed;}", ".fju19wo{background-color:rgba(0, 0, 0, 0.4);}", ".f113wtx2{top:0px;}", ".f10k790i{right:0px;}", ".f1xynx9j{left:0px;}", ".f5gq2j6{bottom:0px;}", ".f3rmtva{background-color:transparent;}"]
35
- });
36
- /**
37
- * Apply styling to the Dialog slots based on the state
38
- */
39
-
40
-
41
- const useDialogStyles_unstable = state => {
42
- const styles = useStyles();
43
- const isNestedDialog = react_context_selector_1.useHasParentContext(dialogContext_1.DialogContext);
44
-
45
- if (state.overlay) {
46
- state.overlay.className = react_1.mergeClasses(exports.dialogClassNames.overlay, styles.overlay, isNestedDialog && styles.nestedDialogOverlay, state.overlay.className);
47
- }
48
-
49
- return state;
50
- };
51
-
52
- exports.useDialogStyles_unstable = useDialogStyles_unstable;
53
- //# sourceMappingURL=useDialogStyles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/Dialog/useDialogStyles.ts"],"names":[],"mappings":";;;;;;;AACA,MAAA,OAAA,gBAAA,OAAA,CAAA,gBAAA,CAAA;;AACA,MAAA,wBAAA,gBAAA,OAAA,CAAA,kCAAA,CAAA;;AACA,MAAA,eAAA,gBAAA,OAAA,CAAA,8BAAA,CAAA;;AAGa,OAAA,CAAA,gBAAA,GAAgD;EAC3D,OAAO,EAAE;AADkD,CAAhD;AAGb;;AAEG;;AACH,MAAM,SAAS,gBAAG,OAAA,SAAA;EAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;EAAA;IAAA;EAAA;AAAA;EAAA;AAAA,EAAlB;AAWA;;AAEG;;;AACI,MAAM,wBAAwB,GAAI,KAAD,IAAoC;EAC1E,MAAM,MAAM,GAAG,SAAS,EAAxB;EACA,MAAM,cAAc,GAAG,wBAAA,CAAA,mBAAA,CAAoB,eAAA,CAAA,aAApB,CAAvB;;EAEA,IAAI,KAAK,CAAC,OAAV,EAAmB;IACjB,KAAK,CAAC,OAAN,CAAc,SAAd,GAA0B,OAAA,CAAA,YAAA,CACxB,OAAA,CAAA,gBAAA,CAAiB,OADO,EAExB,MAAM,CAAC,OAFiB,EAGxB,cAAc,IAAI,MAAM,CAAC,mBAHD,EAIxB,KAAK,CAAC,OAAN,CAAc,SAJU,CAA1B;EAMD;;EAED,OAAO,KAAP;AACD,CAdM;;AAAM,OAAA,CAAA,wBAAA,GAAwB,wBAAxB","sourcesContent":["import type { SlotClassNames } from '@fluentui/react-utilities';\nimport { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { useHasParentContext } from '@fluentui/react-context-selector';\nimport { DialogContext } from '../../contexts/dialogContext';\nimport type { DialogSlots, DialogState } from './Dialog.types';\n\nexport const dialogClassNames: SlotClassNames<DialogSlots> = {\n overlay: 'fui-Dialog__overlay',\n};\n/**\n * Styles for the root slot\n */\nconst useStyles = makeStyles({\n overlay: {\n position: 'fixed',\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n ...shorthands.inset('0px'),\n },\n nestedDialogOverlay: {\n backgroundColor: 'transparent',\n },\n});\n\n/**\n * Apply styling to the Dialog slots based on the state\n */\nexport const useDialogStyles_unstable = (state: DialogState): DialogState => {\n const styles = useStyles();\n const isNestedDialog = useHasParentContext(DialogContext);\n\n if (state.overlay) {\n state.overlay.className = mergeClasses(\n dialogClassNames.overlay,\n styles.overlay,\n isNestedDialog && styles.nestedDialogOverlay,\n state.overlay.className,\n );\n }\n\n return state;\n};\n"],"sourceRoot":"../src/"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.isTargetDisabled = void 0;
7
-
8
- function isTargetDisabled(event) {
9
- const isDisabled = el => el.hasAttribute('disabled') || el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true';
10
-
11
- if (isHTMLElement(event.target) && isDisabled(event.target)) {
12
- return true;
13
- }
14
-
15
- return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);
16
- }
17
-
18
- exports.isTargetDisabled = isTargetDisabled;
19
-
20
- function isHTMLElement(element) {
21
- return Boolean(element && typeof element === 'object' && 'hasAttribute' in element && 'getAttribute' in element);
22
- }
23
- //# sourceMappingURL=isTargetDisabled.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["utils/isTargetDisabled.ts"],"names":[],"mappings":";;;;;;;AAEA,SAAgB,gBAAhB,CAAiC,KAAjC,EAAoE;EAClE,MAAM,UAAU,GAAI,EAAD,IACjB,EAAE,CAAC,YAAH,CAAgB,UAAhB,KAAgC,EAAE,CAAC,YAAH,CAAgB,eAAhB,KAAoC,EAAE,CAAC,YAAH,CAAgB,eAAhB,MAAqC,MAD3G;;EAEA,IAAI,aAAa,CAAC,KAAK,CAAC,MAAP,CAAb,IAA+B,UAAU,CAAC,KAAK,CAAC,MAAP,CAA7C,EAA4E;IAC1E,OAAO,IAAP;EACD;;EAED,OAAO,aAAa,CAAC,KAAK,CAAC,aAAP,CAAb,IAAsC,UAAU,CAAC,KAAK,CAAC,aAAP,CAAvD;AACD;;AARD,OAAA,CAAA,gBAAA,GAAA,gBAAA;;AAUA,SAAS,aAAT,CAAuB,OAAvB,EAA6C;EAC3C,OAAO,OAAO,CAAC,OAAO,IAAI,OAAO,OAAP,KAAmB,QAA9B,IAA0C,kBAAkB,OAA5D,IAAuE,kBAAkB,OAA1F,CAAd;AACD","sourcesContent":["import * as React from 'react';\n\nexport function isTargetDisabled(event: React.SyntheticEvent | Event) {\n const isDisabled = (el: HTMLElement) =>\n el.hasAttribute('disabled') || (el.hasAttribute('aria-disabled') && el.getAttribute('aria-disabled') === 'true');\n if (isHTMLElement(event.target) && isDisabled(event.target as HTMLElement)) {\n return true;\n }\n\n return isHTMLElement(event.currentTarget) && isDisabled(event.currentTarget);\n}\n\nfunction isHTMLElement(element: object | null): element is HTMLElement {\n return Boolean(element && typeof element === 'object' && 'hasAttribute' in element && 'getAttribute' in element);\n}\n"],"sourceRoot":"../src/"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.gridArea = void 0;
7
-
8
- function gridArea(name) {
9
- return {
10
- gridRowStart: name,
11
- gridRowEnd: name,
12
- gridColumnStart: name,
13
- gridColumnEnd: name
14
- };
15
- }
16
-
17
- exports.gridArea = gridArea;
18
- //# sourceMappingURL=localShorthands.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["utils/localShorthands.ts"],"names":[],"mappings":";;;;;;;AAAA,SAAgB,QAAhB,CAAyB,IAAzB,EAAqC;EACnC,OAAO;IACL,YAAY,EAAE,IADT;IAEL,UAAU,EAAE,IAFP;IAGL,eAAe,EAAE,IAHZ;IAIL,aAAa,EAAE;EAJV,CAAP;AAMD;;AAPD,OAAA,CAAA,QAAA,GAAA,QAAA","sourcesContent":["export function gridArea(name: string) {\n return {\n gridRowStart: name,\n gridRowEnd: name,\n gridColumnStart: name,\n gridColumnEnd: name,\n };\n}\n"],"sourceRoot":"../src/"}
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.normalizeDefaultPrevented = void 0;
7
- /**
8
- * normalizes defaultPrevented to work the same way between synthetic events and regular event
9
- */
10
-
11
- function normalizeDefaultPrevented(event) {
12
- if (event instanceof Event) {
13
- return () => event.defaultPrevented;
14
- }
15
-
16
- return event.isDefaultPrevented;
17
- }
18
-
19
- exports.normalizeDefaultPrevented = normalizeDefaultPrevented;
20
- //# sourceMappingURL=normalizeDefaultPrevented.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["utils/normalizeDefaultPrevented.ts"],"names":[],"mappings":";;;;;;AAEA;;AAEG;;AACH,SAAgB,yBAAhB,CAA0C,KAA1C,EAA6E;EAC3E,IAAI,KAAK,YAAY,KAArB,EAA4B;IAC1B,OAAO,MAAM,KAAK,CAAC,gBAAnB;EACD;;EACD,OAAO,KAAK,CAAC,kBAAb;AACD;;AALD,OAAA,CAAA,yBAAA,GAAA,yBAAA","sourcesContent":["import * as React from 'react';\n\n/**\n * normalizes defaultPrevented to work the same way between synthetic events and regular event\n */\nexport function normalizeDefaultPrevented(event: React.SyntheticEvent | Event) {\n if (event instanceof Event) {\n return () => event.defaultPrevented;\n }\n return event.isDefaultPrevented;\n}\n"],"sourceRoot":"../src/"}