Initial commit

This commit is contained in:
2025-03-07 19:22:02 +01:00
commit 4a98255d83
55743 changed files with 5280367 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
useDisableBodyScroll: function() {
return _useDisableBodyScroll.useDisableBodyScroll;
},
useFocusFirstElement: function() {
return _useFocusFirstElement.useFocusFirstElement;
}
});
const _useDisableBodyScroll = require("./useDisableBodyScroll");
const _useFocusFirstElement = require("./useFocusFirstElement");
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["../src/utils/index.ts"],"sourcesContent":["export { useDisableBodyScroll } from './useDisableBodyScroll';\nexport { useFocusFirstElement } from './useFocusFirstElement';\n"],"names":["useDisableBodyScroll","useFocusFirstElement"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAASA,oBAAoB;eAApBA,0CAAoB;;IACpBC,oBAAoB;eAApBA,0CAAoB;;;sCADQ;sCACA"}
@@ -0,0 +1,53 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "useDisableBodyScroll", {
enumerable: true,
get: function() {
return useDisableBodyScroll;
}
});
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
const _useDisableBodyScrollstyles = require("./useDisableBodyScroll.styles");
function useDisableBodyScroll() {
const htmlNoScrollStyles = (0, _useDisableBodyScrollstyles.useHTMLNoScrollStyles)();
const bodyNoScrollStyles = (0, _useDisableBodyScrollstyles.useBodyNoScrollStyles)();
const { targetDocument } = (0, _reactsharedcontexts.useFluent_unstable)();
const disableBodyScroll = _react.useCallback(()=>{
var _targetDocument_defaultView;
if (!targetDocument) {
return;
}
var _targetDocument_defaultView_innerHeight;
const isHorizontalScrollbarVisible = // To properly compare the body clientHeight to the window innerHeight, manually round down the fractional value to match innerHeight's calculation.
Math.floor(targetDocument.body.getBoundingClientRect().height) > ((_targetDocument_defaultView_innerHeight = (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.innerHeight) !== null && _targetDocument_defaultView_innerHeight !== void 0 ? _targetDocument_defaultView_innerHeight : 0);
if (!isHorizontalScrollbarVisible) {
return;
}
targetDocument.documentElement.classList.add(htmlNoScrollStyles);
targetDocument.body.classList.add(bodyNoScrollStyles);
return;
}, [
targetDocument,
htmlNoScrollStyles,
bodyNoScrollStyles
]);
const enableBodyScroll = _react.useCallback(()=>{
if (!targetDocument) {
return;
}
targetDocument.documentElement.classList.remove(htmlNoScrollStyles);
targetDocument.body.classList.remove(bodyNoScrollStyles);
}, [
targetDocument,
htmlNoScrollStyles,
bodyNoScrollStyles
]);
return {
disableBodyScroll,
enableBodyScroll
};
}
@@ -0,0 +1 @@
{"version":3,"sources":["../src/utils/useDisableBodyScroll.ts"],"sourcesContent":["import * as React from 'react';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\n\nimport { useBodyNoScrollStyles, useHTMLNoScrollStyles } from './useDisableBodyScroll.styles';\n\n/**\n * @internal\n * A React *hook* that disables body scrolling through `overflowY: hidden` CSS property\n */\nexport function useDisableBodyScroll(): {\n disableBodyScroll: () => void;\n enableBodyScroll: () => void;\n} {\n const htmlNoScrollStyles = useHTMLNoScrollStyles();\n const bodyNoScrollStyles = useBodyNoScrollStyles();\n const { targetDocument } = useFluent_unstable();\n\n const disableBodyScroll = React.useCallback(() => {\n if (!targetDocument) {\n return;\n }\n const isHorizontalScrollbarVisible =\n // When the window is a fractional height, `innerHeight` always rounds down but `clientHeight` rounds either up or down depending on the value.\n // To properly compare the body clientHeight to the window innerHeight, manually round down the fractional value to match innerHeight's calculation.\n Math.floor(targetDocument.body.getBoundingClientRect().height) > (targetDocument.defaultView?.innerHeight ?? 0);\n if (!isHorizontalScrollbarVisible) {\n return;\n }\n targetDocument.documentElement.classList.add(htmlNoScrollStyles);\n targetDocument.body.classList.add(bodyNoScrollStyles);\n return;\n }, [targetDocument, htmlNoScrollStyles, bodyNoScrollStyles]);\n\n const enableBodyScroll = React.useCallback(() => {\n if (!targetDocument) {\n return;\n }\n targetDocument.documentElement.classList.remove(htmlNoScrollStyles);\n targetDocument.body.classList.remove(bodyNoScrollStyles);\n }, [targetDocument, htmlNoScrollStyles, bodyNoScrollStyles]);\n\n return {\n disableBodyScroll,\n enableBodyScroll,\n };\n}\n"],"names":["useDisableBodyScroll","htmlNoScrollStyles","useHTMLNoScrollStyles","bodyNoScrollStyles","useBodyNoScrollStyles","targetDocument","useFluent_unstable","disableBodyScroll","React","useCallback","isHorizontalScrollbarVisible","Math","floor","body","getBoundingClientRect","height","defaultView","innerHeight","documentElement","classList","add","enableBodyScroll","remove"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BASgBA;;;eAAAA;;;;iEATO;qCACY;4CAE0B;AAMtD,SAASA;IAId,MAAMC,qBAAqBC,IAAAA,iDAAAA;IAC3B,MAAMC,qBAAqBC,IAAAA,iDAAAA;IAC3B,MAAM,EAAEC,cAAc,EAAE,GAAGC,IAAAA,uCAAAA;IAE3B,MAAMC,oBAAoBC,OAAMC,WAAW,CAAC;YAO0BJ;QANpE,IAAI,CAACA,gBAAgB;YACnB;QACF;YAIoEA;QAHpE,MAAMK,+BAEJ,oJAAoJ;QACpJC,KAAKC,KAAK,CAACP,eAAeQ,IAAI,CAACC,qBAAqB,GAAGC,MAAM,IAAKV,CAAAA,CAAAA,0CAAAA,CAAAA,8BAAAA,eAAeW,WAAW,AAAXA,MAAW,QAA1BX,gCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA4BY,WAAW,AAAXA,MAAW,QAAvCZ,4CAAAA,KAAAA,IAAAA,0CAA2C,CAAA;QAC/G,IAAI,CAACK,8BAA8B;YACjC;QACF;QACAL,eAAea,eAAe,CAACC,SAAS,CAACC,GAAG,CAACnB;QAC7CI,eAAeQ,IAAI,CAACM,SAAS,CAACC,GAAG,CAACjB;QAClC;IACF,GAAG;QAACE;QAAgBJ;QAAoBE;KAAmB;IAE3D,MAAMkB,mBAAmBb,OAAMC,WAAW,CAAC;QACzC,IAAI,CAACJ,gBAAgB;YACnB;QACF;QACAA,eAAea,eAAe,CAACC,SAAS,CAACG,MAAM,CAACrB;QAChDI,eAAeQ,IAAI,CAACM,SAAS,CAACG,MAAM,CAACnB;IACvC,GAAG;QAACE;QAAgBJ;QAAoBE;KAAmB;IAE3D,OAAO;QACLI;QACAc;IACF;AACF"}
@@ -0,0 +1,25 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
useBodyNoScrollStyles: function() {
return useBodyNoScrollStyles;
},
useHTMLNoScrollStyles: function() {
return useHTMLNoScrollStyles;
}
});
const _react = require("@griffel/react");
const useHTMLNoScrollStyles = /*#__PURE__*/ (0, _react.__resetStyles)("r6pzz3z", null, [
".r6pzz3z{overflow-y:hidden;overflow-y:clip;scrollbar-gutter:stable;}"
]);
const useBodyNoScrollStyles = /*#__PURE__*/ (0, _react.__resetStyles)("r144vlu9", null, [
".r144vlu9{overflow-y:hidden;}"
]);
@@ -0,0 +1 @@
{"version":3,"sources":["useDisableBodyScroll.styles.js"],"sourcesContent":["import { makeResetStyles } from '@griffel/react';\n// this style must be applied to the html element to disable scrolling\nexport const useHTMLNoScrollStyles = makeResetStyles({\n overflowY: [\n 'hidden',\n 'clip'\n ],\n scrollbarGutter: 'stable'\n});\nexport const useBodyNoScrollStyles = makeResetStyles({\n overflowY: 'hidden'\n});\n"],"names":["useBodyNoScrollStyles","useHTMLNoScrollStyles","__resetStyles"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IASaA,qBAAqB;eAArBA;;IAPAC,qBAAqB;eAArBA;;;uBAFmB;AAEzB,MAAMA,wBAAqB,WAAA,GAAGC,IAAAA,oBAAA,EAAA,WAAA,MAAA;IAAA;CAMpC;AACM,MAAMF,wBAAqB,WAAA,GAAGE,IAAAA,oBAAA,EAAA,YAAA,MAAA;IAAA;CAEpC"}
@@ -0,0 +1,43 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "useFocusFirstElement", {
enumerable: true,
get: function() {
return useFocusFirstElement;
}
});
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
const _reacttabster = require("@fluentui/react-tabster");
const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
function useFocusFirstElement(open, modalType) {
const { findFirstFocusable } = (0, _reacttabster.useFocusFinders)();
const { targetDocument } = (0, _reactsharedcontexts.useFluent_unstable)();
const dialogRef = _react.useRef(null);
_react.useEffect(()=>{
if (!open) {
return;
}
const element = dialogRef.current && findFirstFocusable(dialogRef.current);
if (element) {
element.focus();
} else {
var _dialogRef_current;
(_dialogRef_current = dialogRef.current) === null || _dialogRef_current === void 0 ? void 0 : _dialogRef_current.focus(); // https://github.com/microsoft/fluentui/issues/25150
if (process.env.NODE_ENV === 'development') {
// eslint-disable-next-line no-console
console.warn(`@fluentui/react-dialog [useFocusFirstElement]:
A Dialog should have at least one focusable element inside DialogSurface.
Please add at least a close button either on \`DialogTitle\` action slot or inside \`DialogActions\``);
}
}
}, [
findFirstFocusable,
open,
modalType,
targetDocument
]);
return dialogRef;
}
@@ -0,0 +1 @@
{"version":3,"sources":["../src/utils/useFocusFirstElement.ts"],"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';\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\n React.useEffect(() => {\n if (!open) {\n return;\n }\n const element = dialogRef.current && findFirstFocusable(dialogRef.current);\n if (element) {\n element.focus();\n } else {\n dialogRef.current?.focus(); // https://github.com/microsoft/fluentui/issues/25150\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(/** #__DE-INDENT__ */ `\n @fluentui/react-dialog [useFocusFirstElement]:\n A Dialog should have at least one focusable element inside DialogSurface.\n Please add at least a close button either on \\`DialogTitle\\` action slot or inside \\`DialogActions\\`\n `);\n }\n }\n }, [findFirstFocusable, open, modalType, targetDocument]);\n\n return dialogRef;\n}\n"],"names":["useFocusFirstElement","open","modalType","findFirstFocusable","useFocusFinders","targetDocument","useFluent_unstable","dialogRef","React","useRef","useEffect","element","current","focus","process","env","NODE_ENV","console","warn"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BASgBA;;;eAAAA;;;;iEATO;8BACS;qCACG;AAO5B,SAASA,qBAAqBC,IAAa,EAAEC,SAA0B;IAC5E,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,IAAAA,6BAAAA;IAC/B,MAAM,EAAEC,cAAc,EAAE,GAAGC,IAAAA,uCAAAA;IAC3B,MAAMC,YAAYC,OAAMC,MAAM,CAAuB;IAErDD,OAAME,SAAS,CAAC;QACd,IAAI,CAACT,MAAM;YACT;QACF;QACA,MAAMU,UAAUJ,UAAUK,OAAO,IAAIT,mBAAmBI,UAAUK,OAAO;QACzE,IAAID,SAAS;YACXA,QAAQE,KAAK;QACf,OAAO;gBACLN;YAAAA,CAAAA,qBAAAA,UAAUK,OAAO,AAAPA,MAAO,QAAjBL,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAmBM,KAAK,IAAI,qDAAqD;YACjF,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;gBAC1C,sCAAsC;gBACtCC,QAAQC,IAAI,CAAuB,CAAC;;oGAIpC,CAAC;YACH;QACF;IACF,GAAG;QAACf;QAAoBF;QAAMC;QAAWG;KAAe;IAExD,OAAOE;AACT"}