@activecollab/components 2.0.435 → 2.0.437

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 (95) hide show
  1. package/dist/cjs/components/ConfirmDialog/ConfirmDialog.js +6 -5
  2. package/dist/cjs/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
  3. package/dist/cjs/components/Dialog/Dialog.js +65 -43
  4. package/dist/cjs/components/Dialog/Dialog.js.map +1 -1
  5. package/dist/cjs/components/Dialog/DialogActions.js +13 -5
  6. package/dist/cjs/components/Dialog/DialogActions.js.map +1 -1
  7. package/dist/cjs/components/Dialog/DialogContent.js +4 -5
  8. package/dist/cjs/components/Dialog/DialogContent.js.map +1 -1
  9. package/dist/cjs/components/Dialog/DialogContext.js +14 -7
  10. package/dist/cjs/components/Dialog/DialogContext.js.map +1 -1
  11. package/dist/cjs/components/Dialog/DialogTitle.js +19 -5
  12. package/dist/cjs/components/Dialog/DialogTitle.js.map +1 -1
  13. package/dist/cjs/components/Dialog/Styles.js +55 -13
  14. package/dist/cjs/components/Dialog/Styles.js.map +1 -1
  15. package/dist/cjs/components/Dialog/index.js +11 -0
  16. package/dist/cjs/components/Dialog/index.js.map +1 -1
  17. package/dist/cjs/components/Modal/Modal.js +3 -2
  18. package/dist/cjs/components/Modal/Modal.js.map +1 -1
  19. package/dist/cjs/components/Transitions/Fade/Fade.js +11 -2
  20. package/dist/cjs/components/Transitions/Fade/Fade.js.map +1 -1
  21. package/dist/cjs/components/Transitions/SlideFromTop/SlideFromTop.js +46 -30
  22. package/dist/cjs/components/Transitions/SlideFromTop/SlideFromTop.js.map +1 -1
  23. package/dist/cjs/components/Wizard/Step.js +4 -1
  24. package/dist/cjs/components/Wizard/Step.js.map +1 -1
  25. package/dist/cjs/components/Wizard/Wizard.js +14 -2
  26. package/dist/cjs/components/Wizard/Wizard.js.map +1 -1
  27. package/dist/cjs/presentation/shared/ConnectRepositoryDialog.js +0 -3
  28. package/dist/cjs/presentation/shared/ConnectRepositoryDialog.js.map +1 -1
  29. package/dist/cjs/presentation/shared/LinkBranchOrPullRequestDialog.js +0 -3
  30. package/dist/cjs/presentation/shared/LinkBranchOrPullRequestDialog.js.map +1 -1
  31. package/dist/cjs/presentation/shared/TwoFactorDialogs.js +0 -9
  32. package/dist/cjs/presentation/shared/TwoFactorDialogs.js.map +1 -1
  33. package/dist/esm/components/ConfirmDialog/ConfirmDialog.d.ts +3 -0
  34. package/dist/esm/components/ConfirmDialog/ConfirmDialog.d.ts.map +1 -1
  35. package/dist/esm/components/ConfirmDialog/ConfirmDialog.js +6 -5
  36. package/dist/esm/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
  37. package/dist/esm/components/Dialog/Dialog.d.ts +7 -2
  38. package/dist/esm/components/Dialog/Dialog.d.ts.map +1 -1
  39. package/dist/esm/components/Dialog/Dialog.js +65 -48
  40. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  41. package/dist/esm/components/Dialog/DialogActions.d.ts.map +1 -1
  42. package/dist/esm/components/Dialog/DialogActions.js +10 -5
  43. package/dist/esm/components/Dialog/DialogActions.js.map +1 -1
  44. package/dist/esm/components/Dialog/DialogContent.d.ts +5 -1
  45. package/dist/esm/components/Dialog/DialogContent.d.ts.map +1 -1
  46. package/dist/esm/components/Dialog/DialogContent.js +4 -5
  47. package/dist/esm/components/Dialog/DialogContent.js.map +1 -1
  48. package/dist/esm/components/Dialog/DialogContext.d.ts +11 -1
  49. package/dist/esm/components/Dialog/DialogContext.d.ts.map +1 -1
  50. package/dist/esm/components/Dialog/DialogContext.js +10 -8
  51. package/dist/esm/components/Dialog/DialogContext.js.map +1 -1
  52. package/dist/esm/components/Dialog/DialogTitle.d.ts +4 -1
  53. package/dist/esm/components/Dialog/DialogTitle.d.ts.map +1 -1
  54. package/dist/esm/components/Dialog/DialogTitle.js +20 -6
  55. package/dist/esm/components/Dialog/DialogTitle.js.map +1 -1
  56. package/dist/esm/components/Dialog/Styles.d.ts +19 -2
  57. package/dist/esm/components/Dialog/Styles.d.ts.map +1 -1
  58. package/dist/esm/components/Dialog/Styles.js +47 -11
  59. package/dist/esm/components/Dialog/Styles.js.map +1 -1
  60. package/dist/esm/components/Dialog/index.d.ts +1 -0
  61. package/dist/esm/components/Dialog/index.d.ts.map +1 -1
  62. package/dist/esm/components/Dialog/index.js +1 -0
  63. package/dist/esm/components/Dialog/index.js.map +1 -1
  64. package/dist/esm/components/Modal/Modal.d.ts.map +1 -1
  65. package/dist/esm/components/Modal/Modal.js +3 -2
  66. package/dist/esm/components/Modal/Modal.js.map +1 -1
  67. package/dist/esm/components/Transitions/Fade/Fade.d.ts.map +1 -1
  68. package/dist/esm/components/Transitions/Fade/Fade.js +11 -2
  69. package/dist/esm/components/Transitions/Fade/Fade.js.map +1 -1
  70. package/dist/esm/components/Transitions/SlideFromTop/SlideFromTop.d.ts +2 -0
  71. package/dist/esm/components/Transitions/SlideFromTop/SlideFromTop.d.ts.map +1 -1
  72. package/dist/esm/components/Transitions/SlideFromTop/SlideFromTop.js +46 -30
  73. package/dist/esm/components/Transitions/SlideFromTop/SlideFromTop.js.map +1 -1
  74. package/dist/esm/components/Wizard/Step.d.ts +4 -0
  75. package/dist/esm/components/Wizard/Step.d.ts.map +1 -1
  76. package/dist/esm/components/Wizard/Step.js +4 -1
  77. package/dist/esm/components/Wizard/Step.js.map +1 -1
  78. package/dist/esm/components/Wizard/Wizard.d.ts +3 -0
  79. package/dist/esm/components/Wizard/Wizard.d.ts.map +1 -1
  80. package/dist/esm/components/Wizard/Wizard.js +14 -2
  81. package/dist/esm/components/Wizard/Wizard.js.map +1 -1
  82. package/dist/esm/presentation/shared/ConnectRepositoryDialog.d.ts.map +1 -1
  83. package/dist/esm/presentation/shared/ConnectRepositoryDialog.js +0 -3
  84. package/dist/esm/presentation/shared/ConnectRepositoryDialog.js.map +1 -1
  85. package/dist/esm/presentation/shared/LinkBranchOrPullRequestDialog.d.ts.map +1 -1
  86. package/dist/esm/presentation/shared/LinkBranchOrPullRequestDialog.js +0 -3
  87. package/dist/esm/presentation/shared/LinkBranchOrPullRequestDialog.js.map +1 -1
  88. package/dist/esm/presentation/shared/TwoFactorDialogs.d.ts.map +1 -1
  89. package/dist/esm/presentation/shared/TwoFactorDialogs.js +0 -9
  90. package/dist/esm/presentation/shared/TwoFactorDialogs.js.map +1 -1
  91. package/dist/index.js +257 -116
  92. package/dist/index.js.map +1 -1
  93. package/dist/index.min.js +1 -1
  94. package/dist/index.min.js.map +1 -1
  95. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TwoFactorDialogs.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_interopRequireDefault","_Button","_Dialog","_IconButton","_Icons","_InfoBox","_Input","_Label","_Loaders","_ToastMessage","_Tooltip","_Transitions","_Typography","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","length","l","Symbol","iterator","u","next","done","push","value","return","isArray","SANS","MONO","asInputChange","fn","SAMPLE_BACKUP_CODES","SAMPLE_LOGIN_CODE","StyledToastAnchor","styled","div","withConfig","displayName","componentId","CopyToast","_ref","open","toastKey","text","onClose","createElement","SlideFromTop","in","ToastMessage","key","className","type","dismissible","dropShadow","timeout","StyledGateBody","BackupCodesDialogs","exports","_ref2","_useState","useState","_useState2","password","setPassword","_useState3","_useState4","attempted","setAttempted","_useState5","_useState6","revealOpen","setRevealOpen","_useState7","_useState8","loading","setLoading","_useState9","_useState0","copyOpen","setCopyOpen","_useState1","_useState10","copyKey","setCopyKey","useEffect","undefined","timer","window","setTimeout","clearTimeout","passwordInvalid","trim","handleConfirm","handleCopy","k","closeReveal","Fragment","Dialog","disableCloseOnEsc","Title","ContentDivider","Content","Body2","color","lineHeight","Label","htmlFor","InputPassword","id","wrapperClassName","onChange","invalid","errorMessage","autoFocus","autoComplete","Actions","Button","variant","style","marginRight","onClick","BackupCodesRevealDialog","onCopy","StyledRevealBody","_ref3","map","_","index","SkeletonLoader","code","InfoBox","showIcon","title","disabled","StyledCodeRow","StyledRevealTitle","CreateLoginCodeDialogs","_ref4","userName","firstName","useMemo","split","_useState11","_useState12","_useState13","_useState14","_useState15","_useState16","_useState17","_useState18","expiry","setExpiry","_useState19","_useState20","_useState21","_useState22","when","Date","now","hh","String","getHours","padStart","mm","getMinutes","concat","disableDefaultHeading","Header3","IconButton","CancelCrossIcon","Tooltip","CopyIcon","Caption1"],"sources":["../../../../src/presentation/shared/TwoFactorDialogs.tsx"],"sourcesContent":["import React, { ReactElement, useEffect, useMemo, useState } from \"react\";\n\nimport styled from \"styled-components\";\n\nimport { Button } from \"../../components/Button\";\nimport { Dialog } from \"../../components/Dialog\";\nimport { IconButton } from \"../../components/IconButton\";\nimport { CancelCrossIcon, CopyIcon } from \"../../components/Icons\";\nimport { InfoBox } from \"../../components/InfoBox\";\nimport { InputPassword } from \"../../components/Input\";\nimport { Label } from \"../../components/Label\";\nimport { SkeletonLoader } from \"../../components/Loaders\";\nimport { ToastMessage } from \"../../components/ToastMessage\";\nimport { Tooltip } from \"../../components/Tooltip\";\nimport { SlideFromTop } from \"../../components/Transitions\";\nimport { Body2, Caption1, Header3 } from \"../../components/Typography\";\n\n/**\n * Self-hosted 2FA dialogs shared by the People stories (Users list + User\n * profile). Two flows, both reached from the user three-dot menu and both\n * gated (in the menu) behind the self-hosted + 2FA-enabled guard:\n *\n * - **Backup Codes** (own account, `self` menu): a single dialog that both\n * explains the destructive regenerate and takes the password (identity\n * confirmation is \"valid password + submit\", no separate confirm step).\n * Submitting opens the reveal dialog, which shows a skeleton while the new\n * set \"loads\", then the 10 codes once.\n * - **Create Login Code** (another user, `member`/`client` menu): an owner\n * re-enters their own password, then a one-time code is revealed once with\n * its expiry and a \"user notified\" note. (Task #18.)\n *\n * Everything is mocked locally: passwords aren't checked, the \"load\" is a\n * timer, and the codes are static samples.\n */\n\nconst SANS =\n '-apple-system, BlinkMacSystemFont, \"Roboto\", \"Helvetica Neue\", Arial, sans-serif';\nconst MONO =\n '\"SF Mono\", \"Roboto Mono\", Menlo, Consolas, \"Courier New\", monospace';\n\n/**\n * DS `InputPassword` calls `onChange` with the string value at runtime, but its\n * type is still inherited from the native input (`ChangeEventHandler`). Adapt a\n * string handler so TypeScript is satisfied without lying about the value.\n */\nconst asInputChange = (\n fn: (value: string) => void\n): React.ChangeEventHandler<HTMLInputElement> =>\n fn as unknown as React.ChangeEventHandler<HTMLInputElement>;\n\n/* Sample codes (10+10 A-Z0-9), mirroring the real generator's format. */\nconst SAMPLE_BACKUP_CODES = [\n \"4K7Q9ZM2XN-8V3TJRD6WP\",\n \"P2W8XK4M9Q-3RJ7VND5TZ\",\n \"9ZM2XN4K7Q-6WP8V3TJRD\",\n \"TJRD6WP8V3-2XN4K7Q9ZM\",\n \"V3TJRD6WP8-K7Q9ZM2XN4\",\n \"8V3TJRD6WP-Q9ZM2XN4K7\",\n \"RD5TZP2W8X-M9Q3RJ7VND\",\n \"3RJ7VND5TZ-8XK4M9QP2W\",\n \"N4K7Q9ZM2X-6WP8V3TJRD\",\n \"Q9ZM2XN4K7-8V3TJRD6WP\",\n];\n\nconst SAMPLE_LOGIN_CODE = \"4K7Q9ZM2XN-8V3TJRD6WP\";\n\n/* ------------------------------------------------------------------ */\n/* Toast (reuses the fixed upper-right anchor pattern from headers) */\n/* ------------------------------------------------------------------ */\n\nconst StyledToastAnchor = styled.div`\n position: fixed;\n top: 16px;\n right: 16px;\n z-index: 10000;\n pointer-events: none;\n\n .c-toast-message {\n pointer-events: auto;\n }\n`;\n\ninterface CopyToastProps {\n open: boolean;\n toastKey: number;\n text: string;\n onClose: () => void;\n}\n\nconst CopyToast = ({\n open,\n toastKey,\n text,\n onClose,\n}: CopyToastProps): ReactElement => (\n <StyledToastAnchor>\n <SlideFromTop in={open}>\n <ToastMessage\n key={toastKey}\n className=\"c-toast-message\"\n type=\"success\"\n text={text}\n dismissible\n dropShadow\n timeout={3000}\n onClose={onClose}\n />\n </SlideFromTop>\n </StyledToastAnchor>\n);\n\n/* ------------------------------------------------------------------ */\n/* Shared password-gate body (describe + password in one dialog) */\n/* ------------------------------------------------------------------ */\n\nconst StyledGateBody = styled.div`\n font-family: ${SANS};\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n .pg-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n /* DS InputPassword wrapper is fixed-width — fill the dialog. */\n .pg-input.c-input-wrapper,\n .pg-input {\n width: 100%;\n max-width: none;\n }\n`;\n\n/* ------------------------------------------------------------------ */\n/* Backup Codes — combined describe + password dialog */\n/* ------------------------------------------------------------------ */\n\nexport interface BackupCodesDialogsProps {\n open: boolean;\n onClose: () => void;\n}\n\n/**\n * The full Backup Codes flow: the combined regenerate/password dialog, then the\n * one-time reveal dialog with its loading skeleton. Cancelling the first dialog\n * is a pure no-op — no codes are issued, no toast.\n */\nexport const BackupCodesDialogs = ({\n open,\n onClose,\n}: BackupCodesDialogsProps): ReactElement => {\n const [password, setPassword] = useState(\"\");\n const [attempted, setAttempted] = useState(false);\n const [revealOpen, setRevealOpen] = useState(false);\n const [loading, setLoading] = useState(true);\n\n const [copyOpen, setCopyOpen] = useState(false);\n const [copyKey, setCopyKey] = useState(0);\n\n // Reset the gate each time it (re)opens.\n useEffect(() => {\n if (open) {\n setPassword(\"\");\n setAttempted(false);\n }\n }, [open]);\n\n // Simulate the API generating the new set: a ~1s skeleton on reveal.\n useEffect(() => {\n if (!revealOpen) {\n return undefined;\n }\n setLoading(true);\n const timer = window.setTimeout(() => setLoading(false), 1100);\n return () => window.clearTimeout(timer);\n }, [revealOpen]);\n\n const passwordInvalid = attempted && password.trim() === \"\";\n\n const handleConfirm = (): void => {\n if (password.trim() === \"\") {\n setAttempted(true);\n return;\n }\n // Valid password + submit is all the confirmation we need: close the gate\n // and open the reveal (which regenerates the set).\n onClose();\n setRevealOpen(true);\n };\n\n const handleCopy = (): void => {\n setCopyOpen(true);\n setCopyKey((k) => k + 1);\n };\n\n const closeReveal = (): void => {\n setRevealOpen(false);\n };\n\n return (\n <>\n <Dialog open={open} onClose={onClose} disableCloseOnEsc>\n <Dialog.Title>Regenerate Backup Codes</Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <StyledGateBody>\n <Body2 color=\"secondary\" lineHeight=\"loose\">\n This drops all of your existing backup codes and creates a new set\n of 10. Any codes you saved before will stop working. The new codes\n are shown only once. Enter your password to confirm it&apos;s you.\n </Body2>\n <div className=\"pg-field\">\n <Label htmlFor=\"backup-codes-password\">Your Password</Label>\n <InputPassword\n id=\"backup-codes-password\"\n wrapperClassName=\"pg-input\"\n value={password}\n onChange={asInputChange((value) => {\n setPassword(value);\n setAttempted(false);\n })}\n invalid={passwordInvalid}\n errorMessage={\n passwordInvalid ? \"Your password is required.\" : undefined\n }\n autoFocus\n autoComplete=\"current-password\"\n />\n </div>\n </StyledGateBody>\n </Dialog.Content>\n <Dialog.ContentDivider />\n <Dialog.Actions>\n <Button\n variant=\"primary\"\n style={{ marginRight: 12 }}\n onClick={handleConfirm}\n >\n Regenerate Codes\n </Button>\n <Button variant=\"secondary\" onClick={onClose}>\n Cancel\n </Button>\n </Dialog.Actions>\n </Dialog>\n\n <BackupCodesRevealDialog\n open={revealOpen}\n loading={loading}\n onClose={closeReveal}\n onCopy={handleCopy}\n />\n\n <CopyToast\n open={copyOpen}\n toastKey={copyKey}\n text=\"Backup codes copied to clipboard.\"\n onClose={() => setCopyOpen(false)}\n />\n </>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* Backup Codes — one-time reveal (skeleton while loading) */\n/* ------------------------------------------------------------------ */\n\nconst StyledRevealBody = styled.div`\n font-family: ${SANS};\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n .bc-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px 16px;\n }\n\n .bc-code {\n font-family: ${MONO};\n font-size: 14px;\n letter-spacing: 0.5px;\n color: var(--color-theme-900);\n padding: 6px 10px;\n border-radius: 6px;\n background-color: var(--color-theme-200);\n text-align: center;\n }\n\n .bc-skeleton {\n height: 32px;\n border-radius: 6px;\n width: 100%;\n }\n`;\n\ninterface BackupCodesRevealDialogProps {\n open: boolean;\n loading: boolean;\n onClose: () => void;\n onCopy: () => void;\n}\n\nconst BackupCodesRevealDialog = ({\n open,\n loading,\n onClose,\n onCopy,\n}: BackupCodesRevealDialogProps): ReactElement => (\n <Dialog open={open} onClose={onClose} disableCloseOnEsc>\n <Dialog.Title>Your Backup Codes</Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <StyledRevealBody>\n <Body2 color=\"secondary\" lineHeight=\"loose\">\n Use a backup code to log in when email isn&apos;t available. Each code\n works once.\n </Body2>\n <div className=\"bc-grid\">\n {loading\n ? [...Array(10)].map((_, index) => (\n <SkeletonLoader key={index} className=\"bc-skeleton\" />\n ))\n : SAMPLE_BACKUP_CODES.map((code) => (\n <div key={code} className=\"bc-code\">\n {code}\n </div>\n ))}\n </div>\n <InfoBox type=\"note\" showIcon title=\"Codes are shown only once\">\n <Body2 color=\"secondary\">\n Save them somewhere safe, they can&apos;t be displayed again. You\n can generate a new set from your profile at any time.\n </Body2>\n </InfoBox>\n </StyledRevealBody>\n </Dialog.Content>\n <Dialog.ContentDivider />\n <Dialog.Actions>\n <Button\n variant=\"primary\"\n style={{ marginRight: 12 }}\n onClick={onClose}\n disabled={loading}\n >\n I&apos;ve Saved My Codes\n </Button>\n <Button variant=\"secondary\" onClick={onCopy} disabled={loading}>\n Copy Codes\n </Button>\n </Dialog.Actions>\n </Dialog>\n);\n\n/* ------------------------------------------------------------------ */\n/* Create Login Code — password gate + one-time reveal */\n/* ------------------------------------------------------------------ */\n\nconst StyledCodeRow = styled.div`\n font-family: ${SANS};\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n .lc-label {\n display: block;\n margin-bottom: 6px;\n }\n\n .lc-code-field {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n background-color: var(--color-theme-200);\n }\n\n .lc-code {\n font-family: ${MONO};\n font-size: 15px;\n letter-spacing: 0.5px;\n color: var(--color-theme-900);\n flex: 1 1 auto;\n }\n\n .lc-copy svg {\n fill: var(--color-theme-600);\n }\n\n .lc-caption {\n display: block;\n margin-top: 6px;\n }\n`;\n\n/* Title row for the reveal dialog: heading on the left, X close on the right\n (the app's Use Token dialog pattern). Applied via className since\n Dialog.Title doesn't accept inline style. */\nconst StyledRevealTitle = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n\n .lc-close svg {\n fill: var(--color-theme-600);\n }\n`;\n\nexport interface CreateLoginCodeDialogsProps {\n open: boolean;\n onClose: () => void;\n /** Target user's full name (drives the dialog copy). */\n userName: string;\n}\n\n/**\n * Owner-minted login code flow (task #18): password gate first, then the\n * one-time reveal. The reveal has no footer — an X in the title closes it —\n * mirroring the app's Use Token dialog.\n */\nexport const CreateLoginCodeDialogs = ({\n open,\n onClose,\n userName,\n}: CreateLoginCodeDialogsProps): ReactElement => {\n const firstName = useMemo(\n () => userName.split(\" \")[0] || userName,\n [userName]\n );\n\n const [password, setPassword] = useState(\"\");\n const [attempted, setAttempted] = useState(false);\n const [revealOpen, setRevealOpen] = useState(false);\n // Expiry copy: computed as \"now + 10 min\" at the moment the code is minted.\n const [expiry, setExpiry] = useState(\"\");\n\n const [copyOpen, setCopyOpen] = useState(false);\n const [copyKey, setCopyKey] = useState(0);\n\n useEffect(() => {\n if (open) {\n setPassword(\"\");\n setAttempted(false);\n }\n }, [open]);\n\n const passwordInvalid = attempted && password.trim() === \"\";\n\n const handleConfirm = (): void => {\n if (password.trim() === \"\") {\n setAttempted(true);\n return;\n }\n const when = new Date(Date.now() + 10 * 60000);\n const hh = String(when.getHours()).padStart(2, \"0\");\n const mm = String(when.getMinutes()).padStart(2, \"0\");\n setExpiry(`${hh}:${mm}`);\n onClose();\n setRevealOpen(true);\n };\n\n const handleCopy = (): void => {\n setCopyOpen(true);\n setCopyKey((k) => k + 1);\n };\n\n return (\n <>\n <Dialog open={open} onClose={onClose} disableCloseOnEsc>\n <Dialog.Title>Confirm Password</Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <StyledGateBody>\n <Body2 color=\"secondary\" lineHeight=\"loose\">\n You&apos;re about to create a one-time login code for {userName}.\n Any code they already had pending will be replaced.\n </Body2>\n <div className=\"pg-field\">\n <Label htmlFor=\"login-code-password\">Your Password</Label>\n <InputPassword\n id=\"login-code-password\"\n wrapperClassName=\"pg-input\"\n value={password}\n onChange={asInputChange((value) => {\n setPassword(value);\n setAttempted(false);\n })}\n invalid={passwordInvalid}\n errorMessage={\n passwordInvalid ? \"Your password is required.\" : undefined\n }\n autoFocus\n autoComplete=\"current-password\"\n />\n </div>\n </StyledGateBody>\n </Dialog.Content>\n <Dialog.ContentDivider />\n <Dialog.Actions>\n <Button\n variant=\"primary\"\n style={{ marginRight: 12 }}\n onClick={handleConfirm}\n >\n Confirm\n </Button>\n <Button variant=\"secondary\" onClick={onClose}>\n Cancel\n </Button>\n </Dialog.Actions>\n </Dialog>\n\n <Dialog open={revealOpen} onClose={() => setRevealOpen(false)}>\n <Dialog.Title disableDefaultHeading>\n <StyledRevealTitle>\n <Header3>One-Time Login Code</Header3>\n <IconButton\n variant=\"text gray\"\n className=\"lc-close\"\n onClick={() => setRevealOpen(false)}\n >\n <CancelCrossIcon />\n </IconButton>\n </StyledRevealTitle>\n </Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <StyledCodeRow>\n <Body2 color=\"secondary\" lineHeight=\"loose\">\n Share this code with {firstName} through a secure channel.\n They&apos;ll still need their password to log in, the code alone\n won&apos;t work.\n </Body2>\n <div>\n <Label className=\"lc-label\">Login Code</Label>\n <div className=\"lc-code-field\">\n <span className=\"lc-code\">{SAMPLE_LOGIN_CODE}</span>\n <Tooltip title=\"Copy code\">\n <IconButton\n variant=\"text gray\"\n className=\"lc-copy\"\n onClick={handleCopy}\n >\n <CopyIcon />\n </IconButton>\n </Tooltip>\n </div>\n <Caption1 color=\"tertiary\" className=\"lc-caption\">\n Expires at {expiry} (in 10 minutes), it can&apos;t be shown\n again.\n </Caption1>\n </div>\n <InfoBox\n type=\"default\"\n showIcon\n title={`${firstName} has been notified`}\n >\n <Body2 color=\"secondary\">\n They received an email saying you created this code for their\n account. The email doesn&apos;t include the code.\n </Body2>\n </InfoBox>\n </StyledCodeRow>\n </Dialog.Content>\n </Dialog>\n\n <CopyToast\n open={copyOpen}\n toastKey={copyKey}\n text=\"Login code copied to clipboard.\"\n onClose={() => setCopyOpen(false)}\n />\n </>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TwoFactorDialogs.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_interopRequireDefault","_Button","_Dialog","_IconButton","_Icons","_InfoBox","_Input","_Label","_Loaders","_ToastMessage","_Tooltip","_Transitions","_Typography","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","length","l","Symbol","iterator","u","next","done","push","value","return","isArray","SANS","MONO","asInputChange","fn","SAMPLE_BACKUP_CODES","SAMPLE_LOGIN_CODE","StyledToastAnchor","styled","div","withConfig","displayName","componentId","CopyToast","_ref","open","toastKey","text","onClose","createElement","SlideFromTop","in","ToastMessage","key","className","type","dismissible","dropShadow","timeout","StyledGateBody","BackupCodesDialogs","exports","_ref2","_useState","useState","_useState2","password","setPassword","_useState3","_useState4","attempted","setAttempted","_useState5","_useState6","revealOpen","setRevealOpen","_useState7","_useState8","loading","setLoading","_useState9","_useState0","copyOpen","setCopyOpen","_useState1","_useState10","copyKey","setCopyKey","useEffect","undefined","timer","window","setTimeout","clearTimeout","passwordInvalid","trim","handleConfirm","handleCopy","k","closeReveal","Fragment","Dialog","disableCloseOnEsc","Title","ContentDivider","Content","Body2","color","lineHeight","Label","htmlFor","InputPassword","id","wrapperClassName","onChange","invalid","errorMessage","autoFocus","autoComplete","Actions","Button","variant","onClick","BackupCodesRevealDialog","onCopy","StyledRevealBody","_ref3","map","_","index","SkeletonLoader","code","InfoBox","showIcon","title","disabled","StyledCodeRow","StyledRevealTitle","CreateLoginCodeDialogs","_ref4","userName","firstName","useMemo","split","_useState11","_useState12","_useState13","_useState14","_useState15","_useState16","_useState17","_useState18","expiry","setExpiry","_useState19","_useState20","_useState21","_useState22","when","Date","now","hh","String","getHours","padStart","mm","getMinutes","concat","disableDefaultHeading","Header3","IconButton","CancelCrossIcon","Tooltip","CopyIcon","Caption1"],"sources":["../../../../src/presentation/shared/TwoFactorDialogs.tsx"],"sourcesContent":["import React, { ReactElement, useEffect, useMemo, useState } from \"react\";\n\nimport styled from \"styled-components\";\n\nimport { Button } from \"../../components/Button\";\nimport { Dialog } from \"../../components/Dialog\";\nimport { IconButton } from \"../../components/IconButton\";\nimport { CancelCrossIcon, CopyIcon } from \"../../components/Icons\";\nimport { InfoBox } from \"../../components/InfoBox\";\nimport { InputPassword } from \"../../components/Input\";\nimport { Label } from \"../../components/Label\";\nimport { SkeletonLoader } from \"../../components/Loaders\";\nimport { ToastMessage } from \"../../components/ToastMessage\";\nimport { Tooltip } from \"../../components/Tooltip\";\nimport { SlideFromTop } from \"../../components/Transitions\";\nimport { Body2, Caption1, Header3 } from \"../../components/Typography\";\n\n/**\n * Self-hosted 2FA dialogs shared by the People stories (Users list + User\n * profile). Two flows, both reached from the user three-dot menu and both\n * gated (in the menu) behind the self-hosted + 2FA-enabled guard:\n *\n * - **Backup Codes** (own account, `self` menu): a single dialog that both\n * explains the destructive regenerate and takes the password (identity\n * confirmation is \"valid password + submit\", no separate confirm step).\n * Submitting opens the reveal dialog, which shows a skeleton while the new\n * set \"loads\", then the 10 codes once.\n * - **Create Login Code** (another user, `member`/`client` menu): an owner\n * re-enters their own password, then a one-time code is revealed once with\n * its expiry and a \"user notified\" note. (Task #18.)\n *\n * Everything is mocked locally: passwords aren't checked, the \"load\" is a\n * timer, and the codes are static samples.\n */\n\nconst SANS =\n '-apple-system, BlinkMacSystemFont, \"Roboto\", \"Helvetica Neue\", Arial, sans-serif';\nconst MONO =\n '\"SF Mono\", \"Roboto Mono\", Menlo, Consolas, \"Courier New\", monospace';\n\n/**\n * DS `InputPassword` calls `onChange` with the string value at runtime, but its\n * type is still inherited from the native input (`ChangeEventHandler`). Adapt a\n * string handler so TypeScript is satisfied without lying about the value.\n */\nconst asInputChange = (\n fn: (value: string) => void\n): React.ChangeEventHandler<HTMLInputElement> =>\n fn as unknown as React.ChangeEventHandler<HTMLInputElement>;\n\n/* Sample codes (10+10 A-Z0-9), mirroring the real generator's format. */\nconst SAMPLE_BACKUP_CODES = [\n \"4K7Q9ZM2XN-8V3TJRD6WP\",\n \"P2W8XK4M9Q-3RJ7VND5TZ\",\n \"9ZM2XN4K7Q-6WP8V3TJRD\",\n \"TJRD6WP8V3-2XN4K7Q9ZM\",\n \"V3TJRD6WP8-K7Q9ZM2XN4\",\n \"8V3TJRD6WP-Q9ZM2XN4K7\",\n \"RD5TZP2W8X-M9Q3RJ7VND\",\n \"3RJ7VND5TZ-8XK4M9QP2W\",\n \"N4K7Q9ZM2X-6WP8V3TJRD\",\n \"Q9ZM2XN4K7-8V3TJRD6WP\",\n];\n\nconst SAMPLE_LOGIN_CODE = \"4K7Q9ZM2XN-8V3TJRD6WP\";\n\n/* ------------------------------------------------------------------ */\n/* Toast (reuses the fixed upper-right anchor pattern from headers) */\n/* ------------------------------------------------------------------ */\n\nconst StyledToastAnchor = styled.div`\n position: fixed;\n top: 16px;\n right: 16px;\n z-index: 10000;\n pointer-events: none;\n\n .c-toast-message {\n pointer-events: auto;\n }\n`;\n\ninterface CopyToastProps {\n open: boolean;\n toastKey: number;\n text: string;\n onClose: () => void;\n}\n\nconst CopyToast = ({\n open,\n toastKey,\n text,\n onClose,\n}: CopyToastProps): ReactElement => (\n <StyledToastAnchor>\n <SlideFromTop in={open}>\n <ToastMessage\n key={toastKey}\n className=\"c-toast-message\"\n type=\"success\"\n text={text}\n dismissible\n dropShadow\n timeout={3000}\n onClose={onClose}\n />\n </SlideFromTop>\n </StyledToastAnchor>\n);\n\n/* ------------------------------------------------------------------ */\n/* Shared password-gate body (describe + password in one dialog) */\n/* ------------------------------------------------------------------ */\n\nconst StyledGateBody = styled.div`\n font-family: ${SANS};\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n .pg-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n /* DS InputPassword wrapper is fixed-width — fill the dialog. */\n .pg-input.c-input-wrapper,\n .pg-input {\n width: 100%;\n max-width: none;\n }\n`;\n\n/* ------------------------------------------------------------------ */\n/* Backup Codes — combined describe + password dialog */\n/* ------------------------------------------------------------------ */\n\nexport interface BackupCodesDialogsProps {\n open: boolean;\n onClose: () => void;\n}\n\n/**\n * The full Backup Codes flow: the combined regenerate/password dialog, then the\n * one-time reveal dialog with its loading skeleton. Cancelling the first dialog\n * is a pure no-op — no codes are issued, no toast.\n */\nexport const BackupCodesDialogs = ({\n open,\n onClose,\n}: BackupCodesDialogsProps): ReactElement => {\n const [password, setPassword] = useState(\"\");\n const [attempted, setAttempted] = useState(false);\n const [revealOpen, setRevealOpen] = useState(false);\n const [loading, setLoading] = useState(true);\n\n const [copyOpen, setCopyOpen] = useState(false);\n const [copyKey, setCopyKey] = useState(0);\n\n // Reset the gate each time it (re)opens.\n useEffect(() => {\n if (open) {\n setPassword(\"\");\n setAttempted(false);\n }\n }, [open]);\n\n // Simulate the API generating the new set: a ~1s skeleton on reveal.\n useEffect(() => {\n if (!revealOpen) {\n return undefined;\n }\n setLoading(true);\n const timer = window.setTimeout(() => setLoading(false), 1100);\n return () => window.clearTimeout(timer);\n }, [revealOpen]);\n\n const passwordInvalid = attempted && password.trim() === \"\";\n\n const handleConfirm = (): void => {\n if (password.trim() === \"\") {\n setAttempted(true);\n return;\n }\n // Valid password + submit is all the confirmation we need: close the gate\n // and open the reveal (which regenerates the set).\n onClose();\n setRevealOpen(true);\n };\n\n const handleCopy = (): void => {\n setCopyOpen(true);\n setCopyKey((k) => k + 1);\n };\n\n const closeReveal = (): void => {\n setRevealOpen(false);\n };\n\n return (\n <>\n <Dialog open={open} onClose={onClose} disableCloseOnEsc>\n <Dialog.Title>Regenerate Backup Codes</Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <StyledGateBody>\n <Body2 color=\"secondary\" lineHeight=\"loose\">\n This drops all of your existing backup codes and creates a new set\n of 10. Any codes you saved before will stop working. The new codes\n are shown only once. Enter your password to confirm it&apos;s you.\n </Body2>\n <div className=\"pg-field\">\n <Label htmlFor=\"backup-codes-password\">Your Password</Label>\n <InputPassword\n id=\"backup-codes-password\"\n wrapperClassName=\"pg-input\"\n value={password}\n onChange={asInputChange((value) => {\n setPassword(value);\n setAttempted(false);\n })}\n invalid={passwordInvalid}\n errorMessage={\n passwordInvalid ? \"Your password is required.\" : undefined\n }\n autoFocus\n autoComplete=\"current-password\"\n />\n </div>\n </StyledGateBody>\n </Dialog.Content>\n <Dialog.ContentDivider />\n <Dialog.Actions>\n <Button variant=\"primary\" onClick={handleConfirm}>\n Regenerate Codes\n </Button>\n <Button variant=\"secondary\" onClick={onClose}>\n Cancel\n </Button>\n </Dialog.Actions>\n </Dialog>\n\n <BackupCodesRevealDialog\n open={revealOpen}\n loading={loading}\n onClose={closeReveal}\n onCopy={handleCopy}\n />\n\n <CopyToast\n open={copyOpen}\n toastKey={copyKey}\n text=\"Backup codes copied to clipboard.\"\n onClose={() => setCopyOpen(false)}\n />\n </>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* Backup Codes — one-time reveal (skeleton while loading) */\n/* ------------------------------------------------------------------ */\n\nconst StyledRevealBody = styled.div`\n font-family: ${SANS};\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n .bc-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px 16px;\n }\n\n .bc-code {\n font-family: ${MONO};\n font-size: 14px;\n letter-spacing: 0.5px;\n color: var(--color-theme-900);\n padding: 6px 10px;\n border-radius: 6px;\n background-color: var(--color-theme-200);\n text-align: center;\n }\n\n .bc-skeleton {\n height: 32px;\n border-radius: 6px;\n width: 100%;\n }\n`;\n\ninterface BackupCodesRevealDialogProps {\n open: boolean;\n loading: boolean;\n onClose: () => void;\n onCopy: () => void;\n}\n\nconst BackupCodesRevealDialog = ({\n open,\n loading,\n onClose,\n onCopy,\n}: BackupCodesRevealDialogProps): ReactElement => (\n <Dialog open={open} onClose={onClose} disableCloseOnEsc>\n <Dialog.Title>Your Backup Codes</Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <StyledRevealBody>\n <Body2 color=\"secondary\" lineHeight=\"loose\">\n Use a backup code to log in when email isn&apos;t available. Each code\n works once.\n </Body2>\n <div className=\"bc-grid\">\n {loading\n ? [...Array(10)].map((_, index) => (\n <SkeletonLoader key={index} className=\"bc-skeleton\" />\n ))\n : SAMPLE_BACKUP_CODES.map((code) => (\n <div key={code} className=\"bc-code\">\n {code}\n </div>\n ))}\n </div>\n <InfoBox type=\"note\" showIcon title=\"Codes are shown only once\">\n <Body2 color=\"secondary\">\n Save them somewhere safe, they can&apos;t be displayed again. You\n can generate a new set from your profile at any time.\n </Body2>\n </InfoBox>\n </StyledRevealBody>\n </Dialog.Content>\n <Dialog.ContentDivider />\n <Dialog.Actions>\n <Button variant=\"primary\" onClick={onClose} disabled={loading}>\n I&apos;ve Saved My Codes\n </Button>\n <Button variant=\"secondary\" onClick={onCopy} disabled={loading}>\n Copy Codes\n </Button>\n </Dialog.Actions>\n </Dialog>\n);\n\n/* ------------------------------------------------------------------ */\n/* Create Login Code — password gate + one-time reveal */\n/* ------------------------------------------------------------------ */\n\nconst StyledCodeRow = styled.div`\n font-family: ${SANS};\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n .lc-label {\n display: block;\n margin-bottom: 6px;\n }\n\n .lc-code-field {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n background-color: var(--color-theme-200);\n }\n\n .lc-code {\n font-family: ${MONO};\n font-size: 15px;\n letter-spacing: 0.5px;\n color: var(--color-theme-900);\n flex: 1 1 auto;\n }\n\n .lc-copy svg {\n fill: var(--color-theme-600);\n }\n\n .lc-caption {\n display: block;\n margin-top: 6px;\n }\n`;\n\n/* Title row for the reveal dialog: heading on the left, X close on the right\n (the app's Use Token dialog pattern). Applied via className since\n Dialog.Title doesn't accept inline style. */\nconst StyledRevealTitle = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n\n .lc-close svg {\n fill: var(--color-theme-600);\n }\n`;\n\nexport interface CreateLoginCodeDialogsProps {\n open: boolean;\n onClose: () => void;\n /** Target user's full name (drives the dialog copy). */\n userName: string;\n}\n\n/**\n * Owner-minted login code flow (task #18): password gate first, then the\n * one-time reveal. The reveal has no footer — an X in the title closes it —\n * mirroring the app's Use Token dialog.\n */\nexport const CreateLoginCodeDialogs = ({\n open,\n onClose,\n userName,\n}: CreateLoginCodeDialogsProps): ReactElement => {\n const firstName = useMemo(\n () => userName.split(\" \")[0] || userName,\n [userName]\n );\n\n const [password, setPassword] = useState(\"\");\n const [attempted, setAttempted] = useState(false);\n const [revealOpen, setRevealOpen] = useState(false);\n // Expiry copy: computed as \"now + 10 min\" at the moment the code is minted.\n const [expiry, setExpiry] = useState(\"\");\n\n const [copyOpen, setCopyOpen] = useState(false);\n const [copyKey, setCopyKey] = useState(0);\n\n useEffect(() => {\n if (open) {\n setPassword(\"\");\n setAttempted(false);\n }\n }, [open]);\n\n const passwordInvalid = attempted && password.trim() === \"\";\n\n const handleConfirm = (): void => {\n if (password.trim() === \"\") {\n setAttempted(true);\n return;\n }\n const when = new Date(Date.now() + 10 * 60000);\n const hh = String(when.getHours()).padStart(2, \"0\");\n const mm = String(when.getMinutes()).padStart(2, \"0\");\n setExpiry(`${hh}:${mm}`);\n onClose();\n setRevealOpen(true);\n };\n\n const handleCopy = (): void => {\n setCopyOpen(true);\n setCopyKey((k) => k + 1);\n };\n\n return (\n <>\n <Dialog open={open} onClose={onClose} disableCloseOnEsc>\n <Dialog.Title>Confirm Password</Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <StyledGateBody>\n <Body2 color=\"secondary\" lineHeight=\"loose\">\n You&apos;re about to create a one-time login code for {userName}.\n Any code they already had pending will be replaced.\n </Body2>\n <div className=\"pg-field\">\n <Label htmlFor=\"login-code-password\">Your Password</Label>\n <InputPassword\n id=\"login-code-password\"\n wrapperClassName=\"pg-input\"\n value={password}\n onChange={asInputChange((value) => {\n setPassword(value);\n setAttempted(false);\n })}\n invalid={passwordInvalid}\n errorMessage={\n passwordInvalid ? \"Your password is required.\" : undefined\n }\n autoFocus\n autoComplete=\"current-password\"\n />\n </div>\n </StyledGateBody>\n </Dialog.Content>\n <Dialog.ContentDivider />\n <Dialog.Actions>\n <Button variant=\"primary\" onClick={handleConfirm}>\n Confirm\n </Button>\n <Button variant=\"secondary\" onClick={onClose}>\n Cancel\n </Button>\n </Dialog.Actions>\n </Dialog>\n\n <Dialog open={revealOpen} onClose={() => setRevealOpen(false)}>\n <Dialog.Title disableDefaultHeading>\n <StyledRevealTitle>\n <Header3>One-Time Login Code</Header3>\n <IconButton\n variant=\"text gray\"\n className=\"lc-close\"\n onClick={() => setRevealOpen(false)}\n >\n <CancelCrossIcon />\n </IconButton>\n </StyledRevealTitle>\n </Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <StyledCodeRow>\n <Body2 color=\"secondary\" lineHeight=\"loose\">\n Share this code with {firstName} through a secure channel.\n They&apos;ll still need their password to log in, the code alone\n won&apos;t work.\n </Body2>\n <div>\n <Label className=\"lc-label\">Login Code</Label>\n <div className=\"lc-code-field\">\n <span className=\"lc-code\">{SAMPLE_LOGIN_CODE}</span>\n <Tooltip title=\"Copy code\">\n <IconButton\n variant=\"text gray\"\n className=\"lc-copy\"\n onClick={handleCopy}\n >\n <CopyIcon />\n </IconButton>\n </Tooltip>\n </div>\n <Caption1 color=\"tertiary\" className=\"lc-caption\">\n Expires at {expiry} (in 10 minutes), it can&apos;t be shown\n again.\n </Caption1>\n </div>\n <InfoBox\n type=\"default\"\n showIcon\n title={`${firstName} has been notified`}\n >\n <Body2 color=\"secondary\">\n They received an email saying you created this code for their\n account. The email doesn&apos;t include the code.\n </Body2>\n </InfoBox>\n </StyledCodeRow>\n </Dialog.Content>\n </Dialog>\n\n <CopyToast\n open={copyOpen}\n toastKey={copyKey}\n text=\"Login code copied to clipboard.\"\n onClose={() => setCopyOpen(false)}\n />\n </>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { DialogSize } from "../Dialog/Styles";
2
3
  export interface ConfirmDialogProps {
3
4
  open?: boolean;
4
5
  onCancel?: () => void;
@@ -11,6 +12,8 @@ export interface ConfirmDialogProps {
11
12
  shouldShowCancelButton?: boolean;
12
13
  isLoading?: boolean;
13
14
  confirmationLabel?: string;
15
+ size?: DialogSize;
16
+ height?: string;
14
17
  }
15
18
  export declare const ConfirmDialog: React.ForwardRefExoticComponent<ConfirmDialogProps & React.RefAttributes<HTMLDivElement>>;
16
19
  //# sourceMappingURL=ConfirmDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/ConfirmDialog/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAY5E,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,aAAa,2FAsGzB,CAAC"}
1
+ {"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/ConfirmDialog/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAQ5E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK9C,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,2FAyGzB,CAAC"}
@@ -24,7 +24,9 @@ export const ConfirmDialog = /*#__PURE__*/forwardRef((_ref, ref) => {
24
24
  shouldShowCancelButton = _ref$shouldShowCancel === void 0 ? true : _ref$shouldShowCancel,
25
25
  _ref$isLoading = _ref.isLoading,
26
26
  isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
27
- confirmationLabel = _ref.confirmationLabel;
27
+ confirmationLabel = _ref.confirmationLabel,
28
+ size = _ref.size,
29
+ height = _ref.height;
28
30
  const _useState = useState(false),
29
31
  confirmed = _useState[0],
30
32
  setConfirmed = _useState[1];
@@ -54,7 +56,9 @@ export const ConfirmDialog = /*#__PURE__*/forwardRef((_ref, ref) => {
54
56
  open: open,
55
57
  onClose: onCancel,
56
58
  className: classnames("c-confirm-dialog", className),
57
- disableCloseOnEsc: isLoading
59
+ disableCloseOnEsc: isLoading,
60
+ size: size,
61
+ height: height
58
62
  }, /*#__PURE__*/React.createElement(Dialog.Title, null, dialogTitle), /*#__PURE__*/React.createElement(Dialog.ContentDivider, null), /*#__PURE__*/React.createElement(Dialog.Content, null, /*#__PURE__*/React.createElement(Body2, {
59
63
  lineHeight: "loose",
60
64
  color: "secondary",
@@ -72,9 +76,6 @@ export const ConfirmDialog = /*#__PURE__*/forwardRef((_ref, ref) => {
72
76
  color: "secondary"
73
77
  }, confirmationLabel))) : null), /*#__PURE__*/React.createElement(Dialog.ContentDivider, null), /*#__PURE__*/React.createElement(Dialog.Actions, null, /*#__PURE__*/React.createElement(Button, {
74
78
  variant: "primary",
75
- style: {
76
- marginRight: "12px"
77
- },
78
79
  onClick: onConfirm,
79
80
  disabled: isLoading || isConfirmBlocked
80
81
  }, confirmBtnText), shouldShowCancelButton ? /*#__PURE__*/React.createElement(Button, {
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmDialog.js","names":["React","forwardRef","useCallback","useEffect","useState","classnames","Button","Checkbox","Dialog","StyledConfirmation","Body2","CONFIRMATION_CHECKBOX_ID","ConfirmDialog","_ref","ref","_ref$open","open","onCancel","onConfirm","className","_ref$dialogTitle","dialogTitle","_ref$dialogContent","dialogContent","_ref$confirmBtnText","confirmBtnText","_ref$cancelBtnText","cancelBtnText","_ref$shouldShowCancel","shouldShowCancelButton","_ref$isLoading","isLoading","confirmationLabel","_useState","confirmed","setConfirmed","isConfirmBlocked","Boolean","handleToggleConfirmed","event","target","checked","handleKeyDown","key","preventDefault","window","addEventListener","removeEventListener","createElement","onClose","disableCloseOnEsc","Title","ContentDivider","Content","lineHeight","color","whitespace","id","onChange","disabled","htmlFor","Actions","variant","style","marginRight","onClick","type","displayName"],"sources":["../../../../src/components/ConfirmDialog/ConfirmDialog.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useEffect, useState } from \"react\";\n\nimport classnames from \"classnames\";\n\nimport { Button } from \"../Button/Button\";\nimport { Checkbox } from \"../Checkbox\";\nimport { Dialog } from \"../Dialog\";\nimport { StyledConfirmation } from \"./Styles\";\nimport { Body2 } from \"../Typography/Variants/Body2\";\n\nconst CONFIRMATION_CHECKBOX_ID = \"confirm-dialog-confirmation\";\n\nexport interface ConfirmDialogProps {\n open?: boolean;\n onCancel?: () => void;\n onConfirm?: () => void;\n className?: string;\n dialogTitle?: string;\n dialogContent?: React.ReactNode;\n confirmBtnText?: string;\n cancelBtnText?: string;\n shouldShowCancelButton?: boolean;\n isLoading?: boolean;\n confirmationLabel?: string;\n}\n\nexport const ConfirmDialog = forwardRef<HTMLDivElement, ConfirmDialogProps>(\n (\n {\n open = false,\n onCancel,\n onConfirm,\n className,\n dialogTitle = \"Discard changes?\",\n dialogContent = \"All unsaved changes will be lost.\",\n confirmBtnText = \"OK\",\n cancelBtnText = \"Cancel\",\n shouldShowCancelButton = true,\n isLoading = false,\n confirmationLabel,\n },\n ref\n ) => {\n const [confirmed, setConfirmed] = useState(false);\n const isConfirmBlocked = Boolean(confirmationLabel) && !confirmed;\n\n const handleToggleConfirmed = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) =>\n setConfirmed(event.target.checked),\n []\n );\n\n useEffect(() => {\n if (!open) {\n setConfirmed(false);\n }\n }, [open]);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Enter\" && onConfirm && !isConfirmBlocked) {\n event.preventDefault();\n onConfirm();\n }\n };\n\n if (open) {\n window.addEventListener(\"keydown\", handleKeyDown);\n }\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [open, onConfirm, isConfirmBlocked]);\n\n return (\n <Dialog\n ref={ref}\n open={open}\n onClose={onCancel}\n className={classnames(\"c-confirm-dialog\", className)}\n disableCloseOnEsc={isLoading}\n >\n <Dialog.Title>{dialogTitle}</Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <Body2 lineHeight=\"loose\" color=\"secondary\" whitespace=\"pre-line\">\n {dialogContent}\n </Body2>\n {confirmationLabel ? (\n <StyledConfirmation className=\"c-confirm-dialog--confirmation\">\n <Checkbox\n id={CONFIRMATION_CHECKBOX_ID}\n checked={confirmed}\n onChange={handleToggleConfirmed}\n disabled={isLoading}\n />\n <label htmlFor={CONFIRMATION_CHECKBOX_ID}>\n <Body2 color=\"secondary\">{confirmationLabel}</Body2>\n </label>\n </StyledConfirmation>\n ) : null}\n </Dialog.Content>\n <Dialog.ContentDivider />\n <Dialog.Actions>\n <Button\n variant=\"primary\"\n style={{ marginRight: \"12px\" }}\n onClick={onConfirm}\n disabled={isLoading || isConfirmBlocked}\n >\n {confirmBtnText}\n </Button>\n {shouldShowCancelButton ? (\n <Button\n variant=\"secondary\"\n data-action=\"cancel\"\n onClick={onCancel}\n type=\"button\"\n disabled={isLoading}\n >\n {cancelBtnText}\n </Button>\n ) : null}\n </Dialog.Actions>\n </Dialog>\n );\n }\n);\n\nConfirmDialog.displayName = \"ConfirmDialog\";\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ConfirmDialog.js","names":["React","forwardRef","useCallback","useEffect","useState","classnames","Button","Checkbox","Dialog","StyledConfirmation","Body2","CONFIRMATION_CHECKBOX_ID","ConfirmDialog","_ref","ref","_ref$open","open","onCancel","onConfirm","className","_ref$dialogTitle","dialogTitle","_ref$dialogContent","dialogContent","_ref$confirmBtnText","confirmBtnText","_ref$cancelBtnText","cancelBtnText","_ref$shouldShowCancel","shouldShowCancelButton","_ref$isLoading","isLoading","confirmationLabel","size","height","_useState","confirmed","setConfirmed","isConfirmBlocked","Boolean","handleToggleConfirmed","event","target","checked","handleKeyDown","key","preventDefault","window","addEventListener","removeEventListener","createElement","onClose","disableCloseOnEsc","Title","ContentDivider","Content","lineHeight","color","whitespace","id","onChange","disabled","htmlFor","Actions","variant","onClick","type","displayName"],"sources":["../../../../src/components/ConfirmDialog/ConfirmDialog.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useEffect, useState } from \"react\";\n\nimport classnames from \"classnames\";\n\nimport { Button } from \"../Button/Button\";\nimport { Checkbox } from \"../Checkbox\";\nimport { Dialog } from \"../Dialog\";\nimport { StyledConfirmation } from \"./Styles\";\nimport { DialogSize } from \"../Dialog/Styles\";\nimport { Body2 } from \"../Typography/Variants/Body2\";\n\nconst CONFIRMATION_CHECKBOX_ID = \"confirm-dialog-confirmation\";\n\nexport interface ConfirmDialogProps {\n open?: boolean;\n onCancel?: () => void;\n onConfirm?: () => void;\n className?: string;\n dialogTitle?: string;\n dialogContent?: React.ReactNode;\n confirmBtnText?: string;\n cancelBtnText?: string;\n shouldShowCancelButton?: boolean;\n isLoading?: boolean;\n confirmationLabel?: string;\n size?: DialogSize;\n height?: string;\n}\n\nexport const ConfirmDialog = forwardRef<HTMLDivElement, ConfirmDialogProps>(\n (\n {\n open = false,\n onCancel,\n onConfirm,\n className,\n dialogTitle = \"Discard changes?\",\n dialogContent = \"All unsaved changes will be lost.\",\n confirmBtnText = \"OK\",\n cancelBtnText = \"Cancel\",\n shouldShowCancelButton = true,\n isLoading = false,\n confirmationLabel,\n size,\n height,\n },\n ref\n ) => {\n const [confirmed, setConfirmed] = useState(false);\n const isConfirmBlocked = Boolean(confirmationLabel) && !confirmed;\n\n const handleToggleConfirmed = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) =>\n setConfirmed(event.target.checked),\n []\n );\n\n useEffect(() => {\n if (!open) {\n setConfirmed(false);\n }\n }, [open]);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Enter\" && onConfirm && !isConfirmBlocked) {\n event.preventDefault();\n onConfirm();\n }\n };\n\n if (open) {\n window.addEventListener(\"keydown\", handleKeyDown);\n }\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [open, onConfirm, isConfirmBlocked]);\n\n return (\n <Dialog\n ref={ref}\n open={open}\n onClose={onCancel}\n className={classnames(\"c-confirm-dialog\", className)}\n disableCloseOnEsc={isLoading}\n size={size}\n height={height}\n >\n <Dialog.Title>{dialogTitle}</Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n <Body2 lineHeight=\"loose\" color=\"secondary\" whitespace=\"pre-line\">\n {dialogContent}\n </Body2>\n {confirmationLabel ? (\n <StyledConfirmation className=\"c-confirm-dialog--confirmation\">\n <Checkbox\n id={CONFIRMATION_CHECKBOX_ID}\n checked={confirmed}\n onChange={handleToggleConfirmed}\n disabled={isLoading}\n />\n <label htmlFor={CONFIRMATION_CHECKBOX_ID}>\n <Body2 color=\"secondary\">{confirmationLabel}</Body2>\n </label>\n </StyledConfirmation>\n ) : null}\n </Dialog.Content>\n <Dialog.ContentDivider />\n <Dialog.Actions>\n <Button\n variant=\"primary\"\n onClick={onConfirm}\n disabled={isLoading || isConfirmBlocked}\n >\n {confirmBtnText}\n </Button>\n {shouldShowCancelButton ? (\n <Button\n variant=\"secondary\"\n data-action=\"cancel\"\n onClick={onCancel}\n type=\"button\"\n disabled={isLoading}\n >\n {cancelBtnText}\n </Button>\n ) : null}\n </Dialog.Actions>\n </Dialog>\n );\n }\n);\n\nConfirmDialog.displayName = \"ConfirmDialog\";\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import React, { HTMLAttributes, PropsWithChildren } from "react";
2
+ import { DialogSize } from "./Styles";
2
3
  export interface DialogProps extends HTMLAttributes<HTMLDivElement> {
3
4
  open?: boolean;
4
5
  onClose?: () => void;
@@ -7,6 +8,10 @@ export interface DialogProps extends HTMLAttributes<HTMLDivElement> {
7
8
  disableCloseOnEsc?: boolean;
8
9
  animate?: "fade" | "slide";
9
10
  onClickOutside?: (event: any) => void;
11
+ /** Width step. Every step is a max-width; the dialog always fills it when there is room. */
12
+ size?: DialogSize;
13
+ /** "fluid" follows the content. A CSS length ("95%", "600px") pins the height instead. */
14
+ height?: string;
10
15
  }
11
16
  export declare const _Dialog: React.ForwardRefExoticComponent<DialogProps & {
12
17
  children?: React.ReactNode | undefined;
@@ -15,11 +20,11 @@ export declare const Dialog: React.ForwardRefExoticComponent<DialogProps & {
15
20
  children?: React.ReactNode | undefined;
16
21
  } & React.RefAttributes<HTMLDivElement>> & {
17
22
  Title: {
18
- ({ children, className, disableDefaultHeading, ...rest }: PropsWithChildren<import("./DialogTitle").DialogTitleProps>): React.JSX.Element;
23
+ ({ children, className, disableDefaultHeading, onClose, closeLabel, ...rest }: PropsWithChildren<import("./DialogTitle").DialogTitleProps>): React.JSX.Element;
19
24
  displayName: string;
20
25
  };
21
26
  Content: {
22
- ({ className, children, ...rest }: HTMLAttributes<HTMLDivElement>): React.JSX.Element;
27
+ ({ className, children, scroll, ...rest }: import("./DialogContent").DialogContentProps): React.JSX.Element;
23
28
  displayName: string;
24
29
  };
25
30
  ContentDivider: {
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,cAAc,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAe7E,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,cAAc,CAAC;IACjE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,KAAK,KAAA,KAAK,IAAI,CAAC;CAClC;AAED,eAAO,MAAM,OAAO;;wCAwDnB,CAAC;AAKF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CAKjB,CAAC"}
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,cAAc,EACd,iBAAiB,EAGlB,MAAM,OAAO,CAAC;AASf,OAAO,EACL,UAAU,EAIX,MAAM,UAAU,CAAC;AAKlB,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,cAAc,CAAC;IACjE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,KAAK,KAAA,KAAK,IAAI,CAAC;IACjC,4FAA4F;IAC5F,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA0CD,eAAO,MAAM,OAAO;;wCA0CnB,CAAC;AAKF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CAKjB,CAAC"}
@@ -1,62 +1,79 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["children", "open", "onClose", "className", "enableBackgroundClick", "disableCloseOnEsc", "animate", "onClickOutside"];
4
- import React, { forwardRef } from "react";
3
+ const _excluded = ["children", "open", "onClose", "className", "enableBackgroundClick", "disableCloseOnEsc", "animate", "onClickOutside", "size", "height"];
4
+ import React, { forwardRef, useMemo } from "react";
5
5
  import classnames from "classnames";
6
-
7
- // import { DialogContext } from "./DialogContext";
8
-
9
6
  import { DialogActions } from "./DialogActions";
10
7
  import { DialogContent } from "./DialogContent";
11
8
  import { DialogContentDivider } from "./DialogContentDivider";
9
+ import { DialogContext } from "./DialogContext";
12
10
  import { DialogTitle } from "./DialogTitle";
13
- import { StyledDialog } from "./Styles";
11
+ import { dialogSizes, StyledDialog, StyledDialogViewport } from "./Styles";
14
12
  import { Modal } from "../Modal";
15
13
  import { Fade } from "../Transitions";
16
14
  import { SlideFromTop } from "../Transitions/SlideFromTop";
17
- export const _Dialog = /*#__PURE__*/forwardRef((_ref, ref) => {
18
- let children = _ref.children,
19
- _ref$open = _ref.open,
20
- open = _ref$open === void 0 ? false : _ref$open,
15
+ // Modal only treats a child as a transition when its props already carry `in`, so this element
16
+ // must declare it even though Modal overwrites it on clone.
17
+ const DialogSurface = _ref => {
18
+ let _ref$in = _ref.in,
19
+ inProp = _ref$in === void 0 ? false : _ref$in,
20
+ onEnter = _ref.onEnter,
21
+ onExited = _ref.onExited,
22
+ forceClose = _ref.forceClose,
21
23
  onClose = _ref.onClose,
22
- className = _ref.className,
23
- _ref$enableBackground = _ref.enableBackgroundClick,
24
- enableBackgroundClick = _ref$enableBackground === void 0 ? false : _ref$enableBackground,
25
- _ref$disableCloseOnEs = _ref.disableCloseOnEsc,
26
- disableCloseOnEsc = _ref$disableCloseOnEs === void 0 ? false : _ref$disableCloseOnEs,
27
- _ref$animate = _ref.animate,
28
- animate = _ref$animate === void 0 ? "slide" : _ref$animate,
29
- onClickOutside = _ref.onClickOutside,
30
- rest = _objectWithoutPropertiesLoose(_ref, _excluded);
31
- const animateDialog = () => {
32
- switch (animate) {
33
- case "fade":
34
- return /*#__PURE__*/React.createElement(Fade, {
35
- in: open
36
- }, /*#__PURE__*/React.createElement(StyledDialog, {
37
- className: classnames("c-dialog", className)
38
- }, children));
39
- default:
40
- return /*#__PURE__*/React.createElement(SlideFromTop, {
41
- in: open
42
- }, /*#__PURE__*/React.createElement(StyledDialog, {
43
- className: classnames("c-dialog", className)
44
- }, children));
45
- }
46
- };
47
- return (
48
- /*#__PURE__*/
49
- // <DialogContext.Provider value={{}}>
50
- React.createElement(Modal, _extends({
51
- ref: ref,
52
- open: open,
53
- onClose: onClose,
54
- disableBackgroundClick: !enableBackgroundClick,
55
- disableCloseOnEsc: disableCloseOnEsc,
56
- onClickOutside: onClickOutside
57
- }, rest), animateDialog())
58
- // </DialogContext.Provider>
59
- );
24
+ animate = _ref.animate,
25
+ children = _ref.children;
26
+ const Animation = animate === "fade" ? Fade : SlideFromTop;
27
+ const value = useMemo(() => ({
28
+ requestClose: forceClose,
29
+ onClose
30
+ }), [forceClose, onClose]);
31
+ return /*#__PURE__*/React.createElement(DialogContext.Provider, {
32
+ value: value
33
+ }, /*#__PURE__*/React.createElement(StyledDialogViewport, {
34
+ className: "c-dialog-viewport"
35
+ }, /*#__PURE__*/React.createElement(Animation, {
36
+ in: inProp,
37
+ onEnter: onEnter,
38
+ onExited: onExited
39
+ }, children)));
40
+ };
41
+ DialogSurface.displayName = "DialogSurface";
42
+ export const _Dialog = /*#__PURE__*/forwardRef((_ref2, ref) => {
43
+ var _dialogSizes$size;
44
+ let children = _ref2.children,
45
+ _ref2$open = _ref2.open,
46
+ open = _ref2$open === void 0 ? false : _ref2$open,
47
+ onClose = _ref2.onClose,
48
+ className = _ref2.className,
49
+ _ref2$enableBackgroun = _ref2.enableBackgroundClick,
50
+ enableBackgroundClick = _ref2$enableBackgroun === void 0 ? false : _ref2$enableBackgroun,
51
+ _ref2$disableCloseOnE = _ref2.disableCloseOnEsc,
52
+ disableCloseOnEsc = _ref2$disableCloseOnE === void 0 ? false : _ref2$disableCloseOnE,
53
+ _ref2$animate = _ref2.animate,
54
+ animate = _ref2$animate === void 0 ? "slide" : _ref2$animate,
55
+ onClickOutside = _ref2.onClickOutside,
56
+ _ref2$size = _ref2.size,
57
+ size = _ref2$size === void 0 ? "m" : _ref2$size,
58
+ _ref2$height = _ref2.height,
59
+ height = _ref2$height === void 0 ? "fluid" : _ref2$height,
60
+ rest = _objectWithoutPropertiesLoose(_ref2, _excluded);
61
+ return /*#__PURE__*/React.createElement(Modal, _extends({
62
+ ref: ref,
63
+ open: open,
64
+ onClose: onClose,
65
+ disableBackgroundClick: !enableBackgroundClick,
66
+ disableCloseOnEsc: disableCloseOnEsc,
67
+ onClickOutside: onClickOutside
68
+ }, rest), /*#__PURE__*/React.createElement(DialogSurface, {
69
+ in: open,
70
+ onClose: onClose,
71
+ animate: animate
72
+ }, /*#__PURE__*/React.createElement(StyledDialog, {
73
+ $maxWidth: (_dialogSizes$size = dialogSizes[size]) != null ? _dialogSizes$size : dialogSizes.m,
74
+ $height: height === "fluid" ? undefined : height,
75
+ className: classnames("c-dialog", className)
76
+ }, children)));
60
77
  });
61
78
  _Dialog.displayName = "Dialog";
62
79
 
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","names":["React","forwardRef","classnames","DialogActions","DialogContent","DialogContentDivider","DialogTitle","StyledDialog","Modal","Fade","SlideFromTop","_Dialog","_ref","ref","children","_ref$open","open","onClose","className","_ref$enableBackground","enableBackgroundClick","_ref$disableCloseOnEs","disableCloseOnEsc","_ref$animate","animate","onClickOutside","rest","_objectWithoutPropertiesLoose","_excluded","animateDialog","createElement","in","_extends","disableBackgroundClick","displayName","Dialog","Object","assign","Title","Content","ContentDivider","Actions"],"sources":["../../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import React, { forwardRef, HTMLAttributes, PropsWithChildren } from \"react\";\n\nimport classnames from \"classnames\";\n\n// import { DialogContext } from \"./DialogContext\";\n\nimport { DialogActions } from \"./DialogActions\";\nimport { DialogContent } from \"./DialogContent\";\nimport { DialogContentDivider } from \"./DialogContentDivider\";\nimport { DialogTitle } from \"./DialogTitle\";\nimport { StyledDialog } from \"./Styles\";\nimport { Modal } from \"../Modal\";\nimport { Fade } from \"../Transitions\";\nimport { SlideFromTop } from \"../Transitions/SlideFromTop\";\n\nexport interface DialogProps extends HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n onClose?: () => void;\n className?: string;\n enableBackgroundClick?: boolean;\n disableCloseOnEsc?: boolean;\n animate?: \"fade\" | \"slide\";\n onClickOutside?: (event) => void;\n}\n\nexport const _Dialog = forwardRef<\n HTMLDivElement,\n PropsWithChildren<DialogProps>\n>(\n (\n {\n children,\n open = false,\n onClose,\n className,\n enableBackgroundClick = false,\n disableCloseOnEsc = false,\n animate = \"slide\",\n onClickOutside,\n ...rest\n },\n ref\n ) => {\n const animateDialog = () => {\n switch (animate) {\n case \"fade\":\n return (\n <Fade in={open}>\n <StyledDialog className={classnames(\"c-dialog\", className)}>\n {children}\n </StyledDialog>\n </Fade>\n );\n default:\n return (\n <SlideFromTop in={open}>\n <StyledDialog className={classnames(\"c-dialog\", className)}>\n {children}\n </StyledDialog>\n </SlideFromTop>\n );\n }\n };\n\n return (\n // <DialogContext.Provider value={{}}>\n\n <Modal\n ref={ref}\n open={open}\n onClose={onClose}\n disableBackgroundClick={!enableBackgroundClick}\n disableCloseOnEsc={disableCloseOnEsc}\n onClickOutside={onClickOutside}\n {...rest}\n >\n {animateDialog()}\n </Modal>\n // </DialogContext.Provider>\n );\n }\n);\n\n_Dialog.displayName = \"Dialog\";\n\n// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/34757\nexport const Dialog = Object.assign({}, _Dialog, {\n Title: DialogTitle,\n Content: DialogContent,\n ContentDivider: DialogContentDivider,\n Actions: DialogActions,\n});\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAA2C,OAAO;AAE5E,OAAOC,UAAU,MAAM,YAAY;;AAEnC;;AAEA,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,YAAY,QAAQ,UAAU;AACvC,SAASC,KAAK,QAAQ,UAAU;AAChC,SAASC,IAAI,QAAQ,gBAAgB;AACrC,SAASC,YAAY,QAAQ,6BAA6B;AAY1D,OAAO,MAAMC,OAAO,gBAAGV,UAAU,CAI/B,CAAAW,IAAA,EAYEC,GAAG,KACA;EAAA,IAXDC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IAAAC,SAAA,GAAAH,IAAA,CACRI,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,KAAK,GAAAA,SAAA;IACZE,OAAO,GAAAL,IAAA,CAAPK,OAAO;IACPC,SAAS,GAAAN,IAAA,CAATM,SAAS;IAAAC,qBAAA,GAAAP,IAAA,CACTQ,qBAAqB;IAArBA,qBAAqB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAAAE,qBAAA,GAAAT,IAAA,CAC7BU,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAAAE,YAAA,GAAAX,IAAA,CACzBY,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAG,OAAO,GAAAA,YAAA;IACjBE,cAAc,GAAAb,IAAA,CAAda,cAAc;IACXC,IAAI,GAAAC,6BAAA,CAAAf,IAAA,EAAAgB,SAAA;EAIT,MAAMC,aAAa,GAAGA,CAAA,KAAM;IAC1B,QAAQL,OAAO;MACb,KAAK,MAAM;QACT,oBACExB,KAAA,CAAA8B,aAAA,CAACrB,IAAI;UAACsB,EAAE,EAAEf;QAAK,gBACbhB,KAAA,CAAA8B,aAAA,CAACvB,YAAY;UAACW,SAAS,EAAEhB,UAAU,CAAC,UAAU,EAAEgB,SAAS;QAAE,GACxDJ,QACW,CACV,CAAC;MAEX;QACE,oBACEd,KAAA,CAAA8B,aAAA,CAACpB,YAAY;UAACqB,EAAE,EAAEf;QAAK,gBACrBhB,KAAA,CAAA8B,aAAA,CAACvB,YAAY;UAACW,SAAS,EAAEhB,UAAU,CAAC,UAAU,EAAEgB,SAAS;QAAE,GACxDJ,QACW,CACF,CAAC;IAErB;EACF,CAAC;EAED;IAAA;IACE;IAEAd,KAAA,CAAA8B,aAAA,CAACtB,KAAK,EAAAwB,QAAA;MACJnB,GAAG,EAAEA,GAAI;MACTG,IAAI,EAAEA,IAAK;MACXC,OAAO,EAAEA,OAAQ;MACjBgB,sBAAsB,EAAE,CAACb,qBAAsB;MAC/CE,iBAAiB,EAAEA,iBAAkB;MACrCG,cAAc,EAAEA;IAAe,GAC3BC,IAAI,GAEPG,aAAa,CAAC,CACV;IACP;EAAA;AAEJ,CACF,CAAC;AAEDlB,OAAO,CAACuB,WAAW,GAAG,QAAQ;;AAE9B;AACA,OAAO,MAAMC,MAAM,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAE1B,OAAO,EAAE;EAC/C2B,KAAK,EAAEhC,WAAW;EAClBiC,OAAO,EAAEnC,aAAa;EACtBoC,cAAc,EAAEnC,oBAAoB;EACpCoC,OAAO,EAAEtC;AACX,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Dialog.js","names":["React","forwardRef","useMemo","classnames","DialogActions","DialogContent","DialogContentDivider","DialogContext","DialogTitle","dialogSizes","StyledDialog","StyledDialogViewport","Modal","Fade","SlideFromTop","DialogSurface","_ref","_ref$in","in","inProp","onEnter","onExited","forceClose","onClose","animate","children","Animation","value","requestClose","createElement","Provider","className","displayName","_Dialog","_ref2","ref","_dialogSizes$size","_ref2$open","open","_ref2$enableBackgroun","enableBackgroundClick","_ref2$disableCloseOnE","disableCloseOnEsc","_ref2$animate","onClickOutside","_ref2$size","size","_ref2$height","height","rest","_objectWithoutPropertiesLoose","_excluded","_extends","disableBackgroundClick","$maxWidth","m","$height","undefined","Dialog","Object","assign","Title","Content","ContentDivider","Actions"],"sources":["../../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import React, {\n forwardRef,\n HTMLAttributes,\n PropsWithChildren,\n ReactElement,\n useMemo,\n} from \"react\";\n\nimport classnames from \"classnames\";\n\nimport { DialogActions } from \"./DialogActions\";\nimport { DialogContent } from \"./DialogContent\";\nimport { DialogContentDivider } from \"./DialogContentDivider\";\nimport { DialogContext } from \"./DialogContext\";\nimport { DialogTitle } from \"./DialogTitle\";\nimport {\n DialogSize,\n dialogSizes,\n StyledDialog,\n StyledDialogViewport,\n} from \"./Styles\";\nimport { Modal } from \"../Modal\";\nimport { Fade } from \"../Transitions\";\nimport { SlideFromTop } from \"../Transitions/SlideFromTop\";\n\nexport interface DialogProps extends HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n onClose?: () => void;\n className?: string;\n enableBackgroundClick?: boolean;\n disableCloseOnEsc?: boolean;\n animate?: \"fade\" | \"slide\";\n onClickOutside?: (event) => void;\n /** Width step. Every step is a max-width; the dialog always fills it when there is room. */\n size?: DialogSize;\n /** \"fluid\" follows the content. A CSS length (\"95%\", \"600px\") pins the height instead. */\n height?: string;\n}\n\ninterface DialogSurfaceProps {\n in?: boolean;\n onEnter?: () => void;\n onExited?: () => void;\n forceClose?: () => void;\n onClose?: () => void;\n animate: \"fade\" | \"slide\";\n children: ReactElement;\n}\n\n// Modal only treats a child as a transition when its props already carry `in`, so this element\n// must declare it even though Modal overwrites it on clone.\nconst DialogSurface = ({\n in: inProp = false,\n onEnter,\n onExited,\n forceClose,\n onClose,\n animate,\n children,\n}: DialogSurfaceProps) => {\n const Animation = animate === \"fade\" ? Fade : SlideFromTop;\n const value = useMemo(\n () => ({ requestClose: forceClose, onClose }),\n [forceClose, onClose]\n );\n\n return (\n <DialogContext.Provider value={value}>\n <StyledDialogViewport className=\"c-dialog-viewport\">\n <Animation in={inProp} onEnter={onEnter} onExited={onExited}>\n {children}\n </Animation>\n </StyledDialogViewport>\n </DialogContext.Provider>\n );\n};\n\nDialogSurface.displayName = \"DialogSurface\";\n\nexport const _Dialog = forwardRef<\n HTMLDivElement,\n PropsWithChildren<DialogProps>\n>(\n (\n {\n children,\n open = false,\n onClose,\n className,\n enableBackgroundClick = false,\n disableCloseOnEsc = false,\n animate = \"slide\",\n onClickOutside,\n size = \"m\",\n height = \"fluid\",\n ...rest\n },\n ref\n ) => {\n return (\n <Modal\n ref={ref}\n open={open}\n onClose={onClose}\n disableBackgroundClick={!enableBackgroundClick}\n disableCloseOnEsc={disableCloseOnEsc}\n onClickOutside={onClickOutside}\n {...rest}\n >\n <DialogSurface in={open} onClose={onClose} animate={animate}>\n <StyledDialog\n $maxWidth={dialogSizes[size] ?? dialogSizes.m}\n $height={height === \"fluid\" ? undefined : height}\n className={classnames(\"c-dialog\", className)}\n >\n {children}\n </StyledDialog>\n </DialogSurface>\n </Modal>\n );\n }\n);\n\n_Dialog.displayName = \"Dialog\";\n\n// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/34757\nexport const Dialog = Object.assign({}, _Dialog, {\n Title: DialogTitle,\n Content: DialogContent,\n ContentDivider: DialogContentDivider,\n Actions: DialogActions,\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"DialogActions.d.ts","sourceRoot":"","sources":["../../../../src/components/Dialog/DialogActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAO9C,eAAO,MAAM,aAAa;uCAIvB,cAAc,CAAC,cAAc,CAAC;;CAWhC,CAAC"}
1
+ {"version":3,"file":"DialogActions.d.ts","sourceRoot":"","sources":["../../../../src/components/Dialog/DialogActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAGZ,cAAc,EAEf,MAAM,OAAO,CAAC;AAOf,eAAO,MAAM,aAAa;uCAIvB,cAAc,CAAC,cAAc,CAAC;;CAuBhC,CAAC"}
@@ -1,20 +1,25 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  const _excluded = ["className", "children"];
4
- import React from "react";
4
+ import React, { Children, cloneElement, isValidElement } from "react";
5
5
  import classnames from "classnames";
6
+ import { useDialogContext } from "./DialogContext";
6
7
  import { StyledDialogActions } from "./Styles";
7
- // import { useDialogContext } from "./DialogContext";
8
-
9
8
  export const DialogActions = _ref => {
10
9
  let className = _ref.className,
11
10
  children = _ref.children,
12
11
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
13
- // useDialogContext();
12
+ const dialog = useDialogContext();
14
13
 
14
+ // A footer button that does nothing but close gets the same path as clicking the overlay, so the
15
+ // exit transition runs before the caller unmounts the dialog. Matching on identity leaves a
16
+ // button that does anything else alone.
17
+ const wired = dialog != null && dialog.requestClose && dialog != null && dialog.onClose ? Children.map(children, child => /*#__PURE__*/isValidElement(child) && child.props.onClick === dialog.onClose ? /*#__PURE__*/cloneElement(child, {
18
+ onClick: dialog.requestClose
19
+ }) : child) : children;
15
20
  return /*#__PURE__*/React.createElement(StyledDialogActions, _extends({
16
21
  className: classnames("c-dialog-actions", className)
17
- }, rest), children);
22
+ }, rest), wired);
18
23
  };
19
24
  DialogActions.displayName = "DialogActions";
20
25
  //# sourceMappingURL=DialogActions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogActions.js","names":["React","classnames","StyledDialogActions","DialogActions","_ref","className","children","rest","_objectWithoutPropertiesLoose","_excluded","createElement","_extends","displayName"],"sources":["../../../../src/components/Dialog/DialogActions.tsx"],"sourcesContent":["import React, { HTMLAttributes } from \"react\";\n\nimport classnames from \"classnames\";\n\nimport { StyledDialogActions } from \"./Styles\";\n// import { useDialogContext } from \"./DialogContext\";\n\nexport const DialogActions = ({\n className,\n children,\n ...rest\n}: HTMLAttributes<HTMLDivElement>) => {\n // useDialogContext();\n\n return (\n <StyledDialogActions\n className={classnames(\"c-dialog-actions\", className)}\n {...rest}\n >\n {children}\n </StyledDialogActions>\n );\n};\n\nDialogActions.displayName = \"DialogActions\";\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAA0B,OAAO;AAE7C,OAAOC,UAAU,MAAM,YAAY;AAEnC,SAASC,mBAAmB,QAAQ,UAAU;AAC9C;;AAEA,OAAO,MAAMC,aAAa,GAAGC,IAAA,IAIS;EAAA,IAHpCC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACLC,IAAI,GAAAC,6BAAA,CAAAJ,IAAA,EAAAK,SAAA;EAEP;;EAEA,oBACET,KAAA,CAAAU,aAAA,CAACR,mBAAmB,EAAAS,QAAA;IAClBN,SAAS,EAAEJ,UAAU,CAAC,kBAAkB,EAAEI,SAAS;EAAE,GACjDE,IAAI,GAEPD,QACkB,CAAC;AAE1B,CAAC;AAEDH,aAAa,CAACS,WAAW,GAAG,eAAe","ignoreList":[]}
1
+ {"version":3,"file":"DialogActions.js","names":["React","Children","cloneElement","isValidElement","classnames","useDialogContext","StyledDialogActions","DialogActions","_ref","className","children","rest","_objectWithoutPropertiesLoose","_excluded","dialog","wired","requestClose","onClose","map","child","props","onClick","createElement","_extends","displayName"],"sources":["../../../../src/components/Dialog/DialogActions.tsx"],"sourcesContent":["import React, {\n Children,\n cloneElement,\n HTMLAttributes,\n isValidElement,\n} from \"react\";\n\nimport classnames from \"classnames\";\n\nimport { useDialogContext } from \"./DialogContext\";\nimport { StyledDialogActions } from \"./Styles\";\n\nexport const DialogActions = ({\n className,\n children,\n ...rest\n}: HTMLAttributes<HTMLDivElement>) => {\n const dialog = useDialogContext();\n\n // A footer button that does nothing but close gets the same path as clicking the overlay, so the\n // exit transition runs before the caller unmounts the dialog. Matching on identity leaves a\n // button that does anything else alone.\n const wired =\n dialog?.requestClose && dialog?.onClose\n ? Children.map(children, (child) =>\n isValidElement(child) && child.props.onClick === dialog.onClose\n ? cloneElement(child, { onClick: dialog.requestClose })\n : child\n )\n : children;\n\n return (\n <StyledDialogActions\n className={classnames(\"c-dialog-actions\", className)}\n {...rest}\n >\n {wired}\n </StyledDialogActions>\n );\n};\n\nDialogActions.displayName = \"DialogActions\";\n"],"mappings":";;;AAAA,OAAOA,KAAK,IACVC,QAAQ,EACRC,YAAY,EAEZC,cAAc,QACT,OAAO;AAEd,OAAOC,UAAU,MAAM,YAAY;AAEnC,SAASC,gBAAgB,QAAQ,iBAAiB;AAClD,SAASC,mBAAmB,QAAQ,UAAU;AAE9C,OAAO,MAAMC,aAAa,GAAGC,IAAA,IAIS;EAAA,IAHpCC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACLC,IAAI,GAAAC,6BAAA,CAAAJ,IAAA,EAAAK,SAAA;EAEP,MAAMC,MAAM,GAAGT,gBAAgB,CAAC,CAAC;;EAEjC;EACA;EACA;EACA,MAAMU,KAAK,GACTD,MAAM,YAANA,MAAM,CAAEE,YAAY,IAAIF,MAAM,YAANA,MAAM,CAAEG,OAAO,GACnChB,QAAQ,CAACiB,GAAG,CAACR,QAAQ,EAAGS,KAAK,IAC3B,aAAAhB,cAAc,CAACgB,KAAK,CAAC,IAAIA,KAAK,CAACC,KAAK,CAACC,OAAO,KAAKP,MAAM,CAACG,OAAO,gBAC3Df,YAAY,CAACiB,KAAK,EAAE;IAAEE,OAAO,EAAEP,MAAM,CAACE;EAAa,CAAC,CAAC,GACrDG,KACN,CAAC,GACDT,QAAQ;EAEd,oBACEV,KAAA,CAAAsB,aAAA,CAAChB,mBAAmB,EAAAiB,QAAA;IAClBd,SAAS,EAAEL,UAAU,CAAC,kBAAkB,EAAEK,SAAS;EAAE,GACjDE,IAAI,GAEPI,KACkB,CAAC;AAE1B,CAAC;AAEDR,aAAa,CAACiB,WAAW,GAAG,eAAe","ignoreList":[]}
@@ -1,6 +1,10 @@
1
1
  import React, { HTMLAttributes } from "react";
2
+ export interface DialogContentProps extends HTMLAttributes<HTMLDivElement> {
3
+ /** Turn off when the content runs its own scroll container. */
4
+ scroll?: boolean;
5
+ }
2
6
  export declare const DialogContent: {
3
- ({ className, children, ...rest }: HTMLAttributes<HTMLDivElement>): React.JSX.Element;
7
+ ({ className, children, scroll, ...rest }: DialogContentProps): React.JSX.Element;
4
8
  displayName: string;
5
9
  };
6
10
  //# sourceMappingURL=DialogContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogContent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dialog/DialogContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAO9C,eAAO,MAAM,aAAa;uCAIvB,cAAc,CAAC,cAAc,CAAC;;CAWhC,CAAC"}
1
+ {"version":3,"file":"DialogContent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dialog/DialogContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAM9C,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACxE,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,aAAa;+CAKvB,kBAAkB;;CAUpB,CAAC"}