@mittwald/flow-react-components 0.2.0-alpha.987 → 0.2.0-alpha.989

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 (40) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/assets/doc-properties.json +22535 -22449
  3. package/dist/js/_virtual/_.locale.json@95341064edeb0e38b66d786dbd62955c.mjs +2 -0
  4. package/dist/js/_virtual/_.locale.json@95341064edeb0e38b66d786dbd62955c.mjs.map +1 -1
  5. package/dist/js/_virtual/_.locale.json@df0c8534e2e4f7c6c3d4365218df7347.mjs +4 -2
  6. package/dist/js/_virtual/_.locale.json@df0c8534e2e4f7c6c3d4365218df7347.mjs.map +1 -1
  7. package/dist/js/packages/components/src/components/ContextualHelp/ContextualHelp.mjs +5 -1
  8. package/dist/js/packages/components/src/components/ContextualHelp/ContextualHelp.mjs.map +1 -1
  9. package/dist/js/packages/components/src/components/ContextualHelp/components/ContextualHelpTrigger/ContextualHelpTrigger.mjs +8 -2
  10. package/dist/js/packages/components/src/components/ContextualHelp/components/ContextualHelpTrigger/ContextualHelpTrigger.mjs.map +1 -1
  11. package/dist/js/packages/components/src/components/Modal/Modal.mjs +7 -3
  12. package/dist/js/packages/components/src/components/Modal/Modal.mjs.map +1 -1
  13. package/dist/js/packages/components/src/components/Modal/components/ConfirmUnsavedChangesModal/ConfirmUnsavedChangesModal.mjs +5 -3
  14. package/dist/js/packages/components/src/components/Modal/components/ConfirmUnsavedChangesModal/ConfirmUnsavedChangesModal.mjs.map +1 -1
  15. package/dist/js/packages/components/src/components/Overlay/Overlay.mjs.map +1 -1
  16. package/dist/js/packages/components/src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.mjs +21 -15
  17. package/dist/js/packages/components/src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.mjs.map +1 -1
  18. package/dist/js/packages/components/src/integrations/react-hook-form/components/Form/Form.mjs +25 -26
  19. package/dist/js/packages/components/src/integrations/react-hook-form/components/Form/Form.mjs.map +1 -1
  20. package/dist/js/packages/components/src/lib/controller/overlay/OverlayController.mjs +47 -12
  21. package/dist/js/packages/components/src/lib/controller/overlay/OverlayController.mjs.map +1 -1
  22. package/dist/types/components/ContextualHelp/ContextualHelp.browser.test.d.ts +2 -0
  23. package/dist/types/components/ContextualHelp/ContextualHelp.browser.test.d.ts.map +1 -0
  24. package/dist/types/components/ContextualHelp/ContextualHelp.d.ts.map +1 -1
  25. package/dist/types/components/ContextualHelp/components/ContextualHelpTrigger/ContextualHelpTrigger.d.ts +15 -2
  26. package/dist/types/components/ContextualHelp/components/ContextualHelpTrigger/ContextualHelpTrigger.d.ts.map +1 -1
  27. package/dist/types/components/ContextualHelp/stories/Default.stories.d.ts.map +1 -1
  28. package/dist/types/components/Modal/Modal.d.ts +5 -0
  29. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  30. package/dist/types/components/Modal/components/ConfirmUnsavedChangesModal/ConfirmUnsavedChangesModal.d.ts +4 -0
  31. package/dist/types/components/Modal/components/ConfirmUnsavedChangesModal/ConfirmUnsavedChangesModal.d.ts.map +1 -1
  32. package/dist/types/components/Modal/stories/Default.stories.d.ts +1 -0
  33. package/dist/types/components/Modal/stories/Default.stories.d.ts.map +1 -1
  34. package/dist/types/components/Overlay/Overlay.d.ts +2 -0
  35. package/dist/types/components/Overlay/Overlay.d.ts.map +1 -1
  36. package/dist/types/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.d.ts.map +1 -1
  37. package/dist/types/integrations/react-hook-form/components/Form/Form.d.ts.map +1 -1
  38. package/dist/types/lib/controller/overlay/OverlayController.d.ts +23 -1
  39. package/dist/types/lib/controller/overlay/OverlayController.d.ts.map +1 -1
  40. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayController.mjs","sources":["../../../../../../../../src/lib/controller/overlay/OverlayController.ts"],"sourcesContent":["import { action, makeObservable, observable } from \"mobx\";\nimport useSelector from \"@/lib/mobx/useSelector\";\nimport { useStatic } from \"@/lib/hooks/useStatic\";\nimport { useEffect, useRef, type DependencyList } from \"react\";\nimport { useCloseOverlayConfirmationController } from \"@/lib/controller/overlay/useCloseOverlayConfirmationController\";\nimport type { FlowComponentName } from \"@/components/propTypes\";\n\nexport type OverlayOpenHandler = () => unknown;\nexport type OverlayCloseHandler = () => unknown;\nexport type OverlayOpenStateHandler = (isOpen: boolean) => unknown;\ntype AnyOverlayOpenStateHandler =\n | OverlayOpenHandler\n | OverlayCloseHandler\n | OverlayOpenStateHandler;\n\ntype DisposerFn = () => void;\n\nexport interface CloseOverlayOptions {\n overlay: FlowComponentName | OverlayController;\n bypassConfirmation?: boolean;\n}\n\nexport interface OnOverlayClosedOptions {\n dependencies?: DependencyList;\n}\n\nexport type CloseModalOptions = Omit<CloseOverlayOptions, \"overlay\">;\n\ntype CloseOptions = CloseOverlayOptions | CloseModalOptions;\n\nexport interface OverlayControllerOptions {\n isDefaultOpen?: boolean;\n onOpen?: OverlayOpenHandler;\n onClose?: OverlayCloseHandler;\n onOpenChange?: OverlayOpenStateHandler;\n confirmOnClose?: boolean;\n}\n\ntype ConstructorOptions = Pick<\n OverlayControllerOptions,\n \"isDefaultOpen\" | \"confirmOnClose\"\n>;\n\nexport class OverlayController {\n public isOpen = false;\n public isContentSuspended = false;\n private onOpenHandlers = new Set<OverlayOpenHandler>();\n private onCloseHandlers = new Set<OverlayCloseHandler>();\n private onOpenChangeHandlers = new Set<OverlayOpenStateHandler>();\n\n public showConfirmationModal = false;\n public closeIsConfirmed = false;\n public confirmOnCloseEnabled: boolean;\n\n public constructor(options: ConstructorOptions = {}) {\n makeObservable(this, {\n isOpen: observable,\n isContentSuspended: observable,\n showConfirmationModal: observable,\n open: action.bound,\n close: action.bound,\n toggle: action.bound,\n setOpen: action.bound,\n setIsContentSuspended: action.bound,\n confirmClose: action.bound,\n });\n const { isDefaultOpen = false, confirmOnClose = false } = options;\n this.isOpen = isDefaultOpen;\n this.confirmOnCloseEnabled = confirmOnClose;\n }\n\n public useUpdateOptions(options: OverlayControllerOptions = {}): void {\n const {\n onOpen,\n onClose,\n onOpenChange,\n confirmOnClose = this.confirmOnCloseEnabled,\n } = options;\n\n this.useOnHandler(onOpen, (h) =>\n this.addOpenStateHandler(h, this.onOpenHandlers),\n );\n this.useOnHandler(onClose, (h) =>\n this.addOpenStateHandler(h, this.onCloseHandlers),\n );\n this.useOnHandler(onOpenChange, (h) =>\n this.addOpenStateHandler(h, this.onOpenChangeHandlers),\n );\n\n this.confirmOnCloseEnabled = confirmOnClose;\n }\n\n /**\n * Can be used to execute a callback when the Overlay has unmounted – means\n * after any closing animation.\n *\n * NOTICE: This hook only works inside the corresponding Overlay!\n */\n public useOnClosed(\n callback: () => unknown,\n options: OnOverlayClosedOptions = {},\n ) {\n const { dependencies = [] } = options;\n const isOpen = this.useIsOpen();\n const wasOpen = useRef(this.isOpen);\n\n this.useUpdateOptions({\n onOpen: () => {\n wasOpen.current = true;\n },\n });\n\n useEffect(() => {\n return () => {\n if (!isOpen && wasOpen.current) {\n wasOpen.current = false;\n callback();\n }\n };\n }, [isOpen, ...dependencies]);\n }\n\n public static useNew(\n options: OverlayControllerOptions = {},\n ): OverlayController {\n const controller = useStatic(() => new OverlayController(options));\n controller.useUpdateOptions(options);\n return controller;\n }\n\n private addOpenStateHandler<T extends AnyOverlayOpenStateHandler>(\n handler: T,\n handlersSet: Set<T>,\n ): DisposerFn {\n handlersSet.add(handler);\n return () => {\n handlersSet.delete(handler);\n };\n }\n\n private useOnHandler<T extends AnyOverlayOpenStateHandler>(\n handler: T | undefined,\n addHandlerFn: (handler: T) => DisposerFn,\n ) {\n useEffect(\n () => (handler ? addHandlerFn(handler) : undefined),\n [handler, this],\n );\n }\n\n private executeHandlers(\n isOpen: boolean,\n handlers: Set<\n OverlayOpenHandler | OverlayCloseHandler | OverlayOpenStateHandler\n >,\n ): boolean {\n const handlerResult = Array.from(handlers).map((handler) =>\n handler(isOpen),\n );\n return handlerResult.some((result) => result === false);\n }\n\n private executeOnClose(): boolean {\n return this.executeHandlers(false, this.onCloseHandlers);\n }\n\n private executeOnOpen(): boolean {\n return this.executeHandlers(true, this.onOpenHandlers);\n }\n\n private executeOnOpenChange(isOpen: boolean): boolean {\n return this.executeHandlers(isOpen, this.onOpenChangeHandlers);\n }\n\n public addOnClose(handler: OverlayCloseHandler) {\n return this.addOpenStateHandler(handler, this.onCloseHandlers);\n }\n\n public addOnOpen(handler: OverlayOpenHandler) {\n return this.addOpenStateHandler(handler, this.onOpenHandlers);\n }\n\n public addOnOpenChange(handler: OverlayOpenStateHandler) {\n return this.addOpenStateHandler(handler, this.onOpenChangeHandlers);\n }\n\n public open(): void {\n this.setOpen(true);\n }\n\n public close(options?: CloseOptions): void {\n this.setOpen(false, options);\n }\n\n public toggle(): void {\n this.setOpen(!this.isOpen);\n }\n\n public setOpen(toOpen: boolean, options: CloseOptions = {}): void {\n if (this.isOpen === toOpen) {\n return;\n }\n\n const { bypassConfirmation = false } = options;\n\n if (\n toOpen === false &&\n this.confirmOnCloseEnabled &&\n !this.closeIsConfirmed &&\n !bypassConfirmation\n ) {\n this.showConfirmationModal = true;\n return;\n }\n\n let aborted: boolean;\n if (toOpen) {\n aborted = this.executeOnOpen();\n } else {\n aborted = this.executeOnClose();\n }\n if (!aborted) {\n aborted = this.executeOnOpenChange(toOpen);\n }\n\n if (!aborted) {\n this.isOpen = toOpen;\n this.closeIsConfirmed = false;\n }\n }\n\n public setIsContentSuspended(to: boolean): void {\n this.isContentSuspended = to;\n }\n\n public useIsOpen() {\n return useSelector(() => this.isOpen);\n }\n\n public useIsContentSuspended() {\n return useSelector(() => this.isContentSuspended);\n }\n\n public useShowConfirmationModal() {\n return useSelector(() => this.showConfirmationModal);\n }\n\n public useConfirmationController() {\n return useCloseOverlayConfirmationController(this);\n }\n\n public confirmClose(): void {\n this.closeIsConfirmed = true;\n this.showConfirmationModal = false;\n }\n\n public cancelConfirmation(): void {\n this.showConfirmationModal = false;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OverlayController.mjs","sources":["../../../../../../../../src/lib/controller/overlay/OverlayController.ts"],"sourcesContent":["import {\n action,\n computed,\n makeObservable,\n observable,\n runInAction,\n} from \"mobx\";\nimport useSelector from \"@/lib/mobx/useSelector\";\nimport { useStatic } from \"@/lib/hooks/useStatic\";\nimport { useEffect, useRef, type DependencyList } from \"react\";\nimport { useCloseOverlayConfirmationController } from \"@/lib/controller/overlay/useCloseOverlayConfirmationController\";\nimport type { FlowComponentName } from \"@/components/propTypes\";\n\nexport type OverlayOpenHandler = () => unknown;\nexport type OverlayCloseHandler = () => unknown;\nexport type OverlayOpenStateHandler = (isOpen: boolean) => unknown;\ntype AnyOverlayOpenStateHandler =\n | OverlayOpenHandler\n | OverlayCloseHandler\n | OverlayOpenStateHandler;\n\ntype DisposerFn = () => void;\n\nexport interface CloseOverlayOptions {\n overlay: FlowComponentName | OverlayController;\n bypassConfirmation?: boolean;\n}\n\nexport interface OnOverlayClosedOptions {\n dependencies?: DependencyList;\n}\n\nexport type CloseModalOptions = Omit<CloseOverlayOptions, \"overlay\">;\n\ntype CloseOptions = CloseOverlayOptions | CloseModalOptions;\n\nexport interface OverlayControllerOptions {\n isDefaultOpen?: boolean;\n onOpen?: OverlayOpenHandler;\n onClose?: OverlayCloseHandler;\n onOpenChange?: OverlayOpenStateHandler;\n /**\n * Whether closing the overlay must be confirmed. `undefined` means \"no\n * opinion\": the value is not contributed at all, so other sources (e.g. a\n * `Modal`'s `confirmOnClose` prop or a dirty `Form`) still decide.\n */\n confirmOnClose?: boolean;\n}\n\ntype ConstructorOptions = Pick<\n OverlayControllerOptions,\n \"isDefaultOpen\" | \"confirmOnClose\"\n>;\n\nexport class OverlayController {\n public isOpen = false;\n public isContentSuspended = false;\n private onOpenHandlers = new Set<OverlayOpenHandler>();\n private onCloseHandlers = new Set<OverlayCloseHandler>();\n private onOpenChangeHandlers = new Set<OverlayOpenStateHandler>();\n\n public showConfirmationModal = false;\n public closeIsConfirmed = false;\n private readonly confirmOnCloseFromOptions: boolean;\n /**\n * Every mounted component that has an opinion on close confirmation\n * contributes one entry here – e.g. a `Modal` with a `confirmOnClose` prop\n * and a `Form` tracking its dirty state. Combining them instead of assigning\n * a single flag keeps them from overwriting each other.\n */\n private confirmOnCloseSources = observable.map<object, boolean>();\n\n public constructor(options: ConstructorOptions = {}) {\n makeObservable(this, {\n isOpen: observable,\n isContentSuspended: observable,\n showConfirmationModal: observable,\n confirmOnCloseEnabled: computed,\n open: action.bound,\n close: action.bound,\n toggle: action.bound,\n setOpen: action.bound,\n setIsContentSuspended: action.bound,\n confirmClose: action.bound,\n cancelConfirmation: action.bound,\n });\n const { isDefaultOpen = false, confirmOnClose = false } = options;\n this.isOpen = isDefaultOpen;\n this.confirmOnCloseFromOptions = confirmOnClose;\n }\n\n /** Whether closing this overlay currently requires a confirmation. */\n public get confirmOnCloseEnabled(): boolean {\n if (this.confirmOnCloseSources.size === 0) {\n return this.confirmOnCloseFromOptions;\n }\n return Array.from(this.confirmOnCloseSources.values()).some(Boolean);\n }\n\n public useUpdateOptions(options: OverlayControllerOptions = {}): void {\n const { onOpen, onClose, onOpenChange, confirmOnClose } = options;\n\n this.useOnHandler(onOpen, (h) =>\n this.addOpenStateHandler(h, this.onOpenHandlers),\n );\n this.useOnHandler(onClose, (h) =>\n this.addOpenStateHandler(h, this.onCloseHandlers),\n );\n this.useOnHandler(onOpenChange, (h) =>\n this.addOpenStateHandler(h, this.onOpenChangeHandlers),\n );\n\n this.useConfirmOnCloseSource(confirmOnClose);\n }\n\n /**\n * Registers the calling component as a close confirmation source for as long\n * as it is mounted. `undefined` contributes nothing at all.\n */\n private useConfirmOnCloseSource(confirmOnClose: boolean | undefined): void {\n const source = useStatic((): object => ({}));\n\n useEffect(() => {\n if (confirmOnClose === undefined) {\n this.removeConfirmOnCloseSource(source);\n return;\n }\n this.setConfirmOnCloseSource(source, confirmOnClose);\n return () => this.removeConfirmOnCloseSource(source);\n }, [this, source, confirmOnClose]);\n }\n\n private setConfirmOnCloseSource(source: object, confirmOnClose: boolean) {\n runInAction(() => this.confirmOnCloseSources.set(source, confirmOnClose));\n }\n\n private removeConfirmOnCloseSource(source: object) {\n runInAction(() => this.confirmOnCloseSources.delete(source));\n }\n\n /**\n * Can be used to execute a callback when the Overlay has unmounted – means\n * after any closing animation.\n *\n * NOTICE: This hook only works inside the corresponding Overlay!\n */\n public useOnClosed(\n callback: () => unknown,\n options: OnOverlayClosedOptions = {},\n ) {\n const { dependencies = [] } = options;\n const isOpen = this.useIsOpen();\n const wasOpen = useRef(this.isOpen);\n\n this.useUpdateOptions({\n onOpen: () => {\n wasOpen.current = true;\n },\n });\n\n useEffect(() => {\n return () => {\n if (!isOpen && wasOpen.current) {\n wasOpen.current = false;\n callback();\n }\n };\n }, [isOpen, ...dependencies]);\n }\n\n public static useNew(\n options: OverlayControllerOptions = {},\n ): OverlayController {\n const controller = useStatic(() => new OverlayController(options));\n controller.useUpdateOptions(options);\n return controller;\n }\n\n private addOpenStateHandler<T extends AnyOverlayOpenStateHandler>(\n handler: T,\n handlersSet: Set<T>,\n ): DisposerFn {\n handlersSet.add(handler);\n return () => {\n handlersSet.delete(handler);\n };\n }\n\n private useOnHandler<T extends AnyOverlayOpenStateHandler>(\n handler: T | undefined,\n addHandlerFn: (handler: T) => DisposerFn,\n ) {\n useEffect(\n () => (handler ? addHandlerFn(handler) : undefined),\n [handler, this],\n );\n }\n\n private executeHandlers(\n isOpen: boolean,\n handlers: Set<\n OverlayOpenHandler | OverlayCloseHandler | OverlayOpenStateHandler\n >,\n ): boolean {\n const handlerResult = Array.from(handlers).map((handler) =>\n handler(isOpen),\n );\n return handlerResult.some((result) => result === false);\n }\n\n private executeOnClose(): boolean {\n return this.executeHandlers(false, this.onCloseHandlers);\n }\n\n private executeOnOpen(): boolean {\n return this.executeHandlers(true, this.onOpenHandlers);\n }\n\n private executeOnOpenChange(isOpen: boolean): boolean {\n return this.executeHandlers(isOpen, this.onOpenChangeHandlers);\n }\n\n public addOnClose(handler: OverlayCloseHandler) {\n return this.addOpenStateHandler(handler, this.onCloseHandlers);\n }\n\n public addOnOpen(handler: OverlayOpenHandler) {\n return this.addOpenStateHandler(handler, this.onOpenHandlers);\n }\n\n public addOnOpenChange(handler: OverlayOpenStateHandler) {\n return this.addOpenStateHandler(handler, this.onOpenChangeHandlers);\n }\n\n public open(): void {\n this.setOpen(true);\n }\n\n public close(options?: CloseOptions): void {\n this.setOpen(false, options);\n }\n\n public toggle(): void {\n this.setOpen(!this.isOpen);\n }\n\n public setOpen(toOpen: boolean, options: CloseOptions = {}): void {\n if (this.isOpen === toOpen) {\n return;\n }\n\n const { bypassConfirmation = false } = options;\n\n if (\n toOpen === false &&\n this.confirmOnCloseEnabled &&\n !this.closeIsConfirmed &&\n !bypassConfirmation\n ) {\n this.showConfirmationModal = true;\n return;\n }\n\n let aborted: boolean;\n if (toOpen) {\n aborted = this.executeOnOpen();\n } else {\n aborted = this.executeOnClose();\n }\n if (!aborted) {\n aborted = this.executeOnOpenChange(toOpen);\n }\n\n if (!aborted) {\n this.isOpen = toOpen;\n this.closeIsConfirmed = false;\n }\n }\n\n public setIsContentSuspended(to: boolean): void {\n this.isContentSuspended = to;\n }\n\n public useIsOpen() {\n return useSelector(() => this.isOpen);\n }\n\n public useIsContentSuspended() {\n return useSelector(() => this.isContentSuspended);\n }\n\n public useShowConfirmationModal() {\n return useSelector(() => this.showConfirmationModal);\n }\n\n public useConfirmOnCloseEnabled() {\n return useSelector(() => this.confirmOnCloseEnabled);\n }\n\n public useConfirmationController() {\n return useCloseOverlayConfirmationController(this);\n }\n\n public confirmClose(): void {\n this.closeIsConfirmed = true;\n this.showConfirmationModal = false;\n }\n\n public cancelConfirmation(): void {\n this.showConfirmationModal = false;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ContextualHelp.browser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextualHelp.browser.test.d.ts","sourceRoot":"","sources":["../../../../src/components/ContextualHelp/ContextualHelp.browser.test.tsx"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ContextualHelp.d.ts","sourceRoot":"","sources":["../../../../src/components/ContextualHelp/ContextualHelp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAQjE,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAEhE,wBAAwB;AACxB,eAAO,MAAM,cAAc,wGA2BzB,CAAC;AAEH,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"ContextualHelp.d.ts","sourceRoot":"","sources":["../../../../src/components/ContextualHelp/ContextualHelp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAQjE,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAEhE,wBAAwB;AACxB,eAAO,MAAM,cAAc,wGA+BzB,CAAC;AAEH,eAAe,cAAc,CAAC"}
@@ -1,6 +1,19 @@
1
1
  import { OverlayTriggerProps } from '../../../OverlayTrigger';
2
- export type ContextualHelpTriggerProps = OverlayTriggerProps;
2
+ export interface ContextualHelpTriggerProps extends OverlayTriggerProps {
3
+ /**
4
+ * The subject the contextual help is about — not a complete accessibility
5
+ * label. It is inserted into the localized template "More information about
6
+ * {subject}", which becomes the accessibility label of the trigger.
7
+ */
8
+ subject?: string;
9
+ /**
10
+ * A complete accessibility label for the trigger, replacing the label built
11
+ * from `subject`. Prefer `subject`, which stays localized — reach for this
12
+ * only when the template does not fit.
13
+ */
14
+ "aria-label"?: string;
15
+ }
3
16
  /** @flr-generate all */
4
- export declare const ContextualHelpTrigger: import('react').FunctionComponent<OverlayTriggerProps & import('react').RefAttributes<HTMLDivElement>>;
17
+ export declare const ContextualHelpTrigger: import('react').FunctionComponent<ContextualHelpTriggerProps & import('react').RefAttributes<HTMLDivElement>>;
5
18
  export default ContextualHelpTrigger;
6
19
  //# sourceMappingURL=ContextualHelpTrigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextualHelpTrigger.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ContextualHelp/components/ContextualHelpTrigger/ContextualHelpTrigger.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AASvE,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,CAAC;AAE7D,wBAAwB;AACxB,eAAO,MAAM,qBAAqB,wGAgCjC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"ContextualHelpTrigger.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ContextualHelp/components/ContextualHelpTrigger/ContextualHelpTrigger.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AASvE,MAAM,WAAW,0BAA2B,SAAQ,mBAAmB;IACrE;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAwB;AACxB,eAAO,MAAM,qBAAqB,+GA2CjC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Default.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/ContextualHelp/stories/Default.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,cAAc,EAEf,MAAM,6BAA6B,CAAC;AAMrC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAoBrC,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7C,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
1
+ {"version":3,"file":"Default.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/ContextualHelp/stories/Default.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,cAAc,EAEf,MAAM,6BAA6B,CAAC;AAKrC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAmBrC,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7C,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
@@ -25,6 +25,11 @@ export interface ModalProps extends PropsWithChildren, FlowComponentProps, Props
25
25
  isDismissable?: boolean;
26
26
  /** Whether the close button should be visible */
27
27
  showCloseButton?: boolean;
28
+ /**
29
+ * Whether closing the modal must be confirmed – use it to protect unsaved
30
+ * changes.
31
+ */
32
+ confirmOnClose?: boolean;
28
33
  }
29
34
  export declare const Modal: import('react').FunctionComponent<ModalProps & import('react').RefAttributes<HTMLDivElement>>;
30
35
  export default Modal;
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAmC,MAAM,OAAO,CAAC;AAQhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAS5D,KAAK,qBAAqB,GAAG,IAAI,CAC/B,YAAY,EACZ,QAAQ,GAAG,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,CACnE,CAAC;AAEF,MAAM,WAAW,UACf,SACE,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB;IACvB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACvB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,wDAAwD;IACxD,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iDAAiD;IACjD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,KAAK,+FA2IhB,CAAC;AAEH,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAmC,MAAM,OAAO,CAAC;AAQhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAU5D,KAAK,qBAAqB,GAAG,IAAI,CAC/B,YAAY,EACZ,QAAQ,GAAG,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,CACnE,CAAC;AAEF,MAAM,WAAW,UACf,SACE,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB;IACvB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACvB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,wDAAwD;IACxD,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iDAAiD;IACjD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,KAAK,+FA4IhB,CAAC;AAEH,eAAe,KAAK,CAAC"}
@@ -1,4 +1,8 @@
1
1
  import { FC } from 'react';
2
+ /**
3
+ * Rendered by every `Modal` and only becomes active once something requires the
4
+ * close to be confirmed – the `confirmOnClose` prop or a dirty `Form`.
5
+ */
2
6
  export declare const ConfirmUnsavedChangesModal: FC;
3
7
  export default ConfirmUnsavedChangesModal;
4
8
  //# sourceMappingURL=ConfirmUnsavedChangesModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmUnsavedChangesModal.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Modal/components/ConfirmUnsavedChangesModal/ConfirmUnsavedChangesModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAUhC,eAAO,MAAM,0BAA0B,EAAE,EAuCxC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"ConfirmUnsavedChangesModal.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Modal/components/ConfirmUnsavedChangesModal/ConfirmUnsavedChangesModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAUhC;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,EAyCxC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -7,6 +7,7 @@ export declare const Default: Story;
7
7
  export declare const WithController: Story;
8
8
  export declare const WithTrigger: Story;
9
9
  export declare const WithForm: Story;
10
+ export declare const WithConfirmOnClose: Story;
10
11
  export declare const WithColumnLayout: Story;
11
12
  export declare const WithSuspense: Story;
12
13
  export declare const LongContent: Story;
@@ -1 +1 @@
1
- {"version":3,"file":"Default.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/stories/Default.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,KAAuB,MAAM,oBAAoB,CAAC;AAmBzD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CAgD5B,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AAEpC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,cAAc,EAAE,KA0B5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAmBzB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KA0CtB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAqC9B,CAAC;AAUF,eAAO,MAAM,YAAY,EAAE,KAiB1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAkEzB,CAAC"}
1
+ {"version":3,"file":"Default.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/stories/Default.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,KAAuB,MAAM,oBAAoB,CAAC;AAmBzD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CAgD5B,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AAEpC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,cAAc,EAAE,KA0B5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAmBzB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KA0CtB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAsChC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAqC9B,CAAC;AAUF,eAAO,MAAM,YAAY,EAAE,KAiB1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAkEzB,CAAC"}
@@ -16,6 +16,8 @@ export interface OverlayProps extends PropsWithChildren, PropsWithClassName, Pic
16
16
  onOpen?: OverlayOpenHandler;
17
17
  onClose?: OverlayCloseHandler;
18
18
  onOpenChange?: OverlayOpenStateHandler;
19
+ /** Whether closing the overlay must be confirmed. */
20
+ confirmOnClose?: boolean;
19
21
  }
20
22
  export declare const Overlay: FC<OverlayProps>;
21
23
  export default Overlay;
@@ -1 +1 @@
1
- {"version":3,"file":"Overlay.d.ts","sourceRoot":"","sources":["../../../../src/components/Overlay/Overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAEnD,MAAM,WAAW,YACf,SACE,iBAAiB,EACjB,kBAAkB,EAClB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAC3C,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,mDAAmD;IACnD,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,mEAAmE;IACnE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qDAAqD;IACrD,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,YAAY,CAAC,EAAE,uBAAuB,CAAC;CACxC;AAED,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,YAAY,CAwCpC,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Overlay.d.ts","sourceRoot":"","sources":["../../../../src/components/Overlay/Overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAEnD,MAAM,WAAW,YACf,SACE,iBAAiB,EACjB,kBAAkB,EAClB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAC3C,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,mDAAmD;IACnD,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,mEAAmE;IACnE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qDAAqD;IACrD,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,qDAAqD;IACrD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,YAAY,CAwCpC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationResultButton.d.ts","sourceRoot":"","sources":["../../../../../../src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,0DAA0D,CAAC;AAQ/G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,UAAU,KAAM,SAAQ,kBAAkB;IACxC,sBAAsB,CAAC,EAAE,8BAA8B,CAAC;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,KAAK,CA0C5C,CAAC"}
1
+ {"version":3,"file":"ValidationResultButton.d.ts","sourceRoot":"","sources":["../../../../../../src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,0DAA0D,CAAC;AAQ/G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,UAAU,KAAM,SAAQ,kBAAkB;IACxC,sBAAsB,CAAC,EAAE,8BAA8B,CAAC;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,KAAK,CA4C5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../../../../../src/integrations/react-hook-form/components/Form/Form.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,EAAE,EACP,KAAK,iBAAiB,EACtB,KAAK,GAAG,EACR,KAAK,kBAAkB,EAIxB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,WAAW,EAEX,aAAa,EACb,aAAa,EACd,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,8EAA8E,CAAC;AAGtF,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,WAAW,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG,CAAC,GAAG,WAAW,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,KAAK,iBAAiB,GAAG,EAAE,CACzB,iBAAiB,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3D,GAAG,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;CAC5B,CAAC,CACH,CAAC;AAEF,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,WAAW,CAC9C,SACE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,EACxC,iBAAiB,EACjB,6BAA6B;IAC/B,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC;CAC5C;AAID,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,+BAwG9D;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../../../../../src/integrations/react-hook-form/components/Form/Form.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,EAAE,EACP,KAAK,iBAAiB,EACtB,KAAK,GAAG,EACR,KAAK,kBAAkB,EAIxB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,WAAW,EAEX,aAAa,EACb,aAAa,EACd,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,8EAA8E,CAAC;AAGtF,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,WAAW,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG,CAAC,GAAG,WAAW,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,KAAK,iBAAiB,GAAG,EAAE,CACzB,iBAAiB,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3D,GAAG,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;CAC5B,CAAC,CACH,CAAC;AAEF,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,WAAW,CAC9C,SACE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,EACxC,iBAAiB,EACjB,6BAA6B;IAC/B,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC;CAC5C;AAID,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,+BA2G9D;AAED,eAAe,IAAI,CAAC"}
@@ -18,6 +18,11 @@ export interface OverlayControllerOptions {
18
18
  onOpen?: OverlayOpenHandler;
19
19
  onClose?: OverlayCloseHandler;
20
20
  onOpenChange?: OverlayOpenStateHandler;
21
+ /**
22
+ * Whether closing the overlay must be confirmed. `undefined` means "no
23
+ * opinion": the value is not contributed at all, so other sources (e.g. a
24
+ * `Modal`'s `confirmOnClose` prop or a dirty `Form`) still decide.
25
+ */
21
26
  confirmOnClose?: boolean;
22
27
  }
23
28
  type ConstructorOptions = Pick<OverlayControllerOptions, "isDefaultOpen" | "confirmOnClose">;
@@ -29,9 +34,25 @@ export declare class OverlayController {
29
34
  private onOpenChangeHandlers;
30
35
  showConfirmationModal: boolean;
31
36
  closeIsConfirmed: boolean;
32
- confirmOnCloseEnabled: boolean;
37
+ private readonly confirmOnCloseFromOptions;
38
+ /**
39
+ * Every mounted component that has an opinion on close confirmation
40
+ * contributes one entry here – e.g. a `Modal` with a `confirmOnClose` prop
41
+ * and a `Form` tracking its dirty state. Combining them instead of assigning
42
+ * a single flag keeps them from overwriting each other.
43
+ */
44
+ private confirmOnCloseSources;
33
45
  constructor(options?: ConstructorOptions);
46
+ /** Whether closing this overlay currently requires a confirmation. */
47
+ get confirmOnCloseEnabled(): boolean;
34
48
  useUpdateOptions(options?: OverlayControllerOptions): void;
49
+ /**
50
+ * Registers the calling component as a close confirmation source for as long
51
+ * as it is mounted. `undefined` contributes nothing at all.
52
+ */
53
+ private useConfirmOnCloseSource;
54
+ private setConfirmOnCloseSource;
55
+ private removeConfirmOnCloseSource;
35
56
  /**
36
57
  * Can be used to execute a callback when the Overlay has unmounted – means
37
58
  * after any closing animation.
@@ -57,6 +78,7 @@ export declare class OverlayController {
57
78
  useIsOpen(): boolean;
58
79
  useIsContentSuspended(): boolean;
59
80
  useShowConfirmationModal(): boolean;
81
+ useConfirmOnCloseEnabled(): boolean;
60
82
  useConfirmationController(): {
61
83
  readonly controller: OverlayController;
62
84
  readonly cancel: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayController.d.ts","sourceRoot":"","sources":["../../../../../src/lib/controller/overlay/OverlayController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC;AAC/C,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC;AAChD,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;AAMnE,KAAK,UAAU,GAAG,MAAM,IAAI,CAAC;AAE7B,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IAC/C,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,cAAc,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;AAErE,KAAK,YAAY,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,KAAK,kBAAkB,GAAG,IAAI,CAC5B,wBAAwB,EACxB,eAAe,GAAG,gBAAgB,CACnC,CAAC;AAEF,qBAAa,iBAAiB;IACrB,MAAM,UAAS;IACf,kBAAkB,UAAS;IAClC,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,oBAAoB,CAAsC;IAE3D,qBAAqB,UAAS;IAC9B,gBAAgB,UAAS;IACzB,qBAAqB,EAAE,OAAO,CAAC;gBAEnB,OAAO,GAAE,kBAAuB;IAiB5C,gBAAgB,CAAC,OAAO,GAAE,wBAA6B,GAAG,IAAI;IAqBrE;;;;;OAKG;IACI,WAAW,CAChB,QAAQ,EAAE,MAAM,OAAO,EACvB,OAAO,GAAE,sBAA2B;WAsBxB,MAAM,CAClB,OAAO,GAAE,wBAA6B,GACrC,iBAAiB;IAMpB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,mBAAmB;IAIpB,UAAU,CAAC,OAAO,EAAE,mBAAmB;IAIvC,SAAS,CAAC,OAAO,EAAE,kBAAkB;IAIrC,eAAe,CAAC,OAAO,EAAE,uBAAuB;IAIhD,IAAI,IAAI,IAAI;IAIZ,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAInC,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,YAAiB,GAAG,IAAI;IAiC1D,qBAAqB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAIxC,SAAS;IAIT,qBAAqB;IAIrB,wBAAwB;IAIxB,yBAAyB;;;;;IAIzB,YAAY,IAAI,IAAI;IAKpB,kBAAkB,IAAI,IAAI;CAGlC"}
1
+ {"version":3,"file":"OverlayController.d.ts","sourceRoot":"","sources":["../../../../../src/lib/controller/overlay/OverlayController.ts"],"names":[],"mappings":"AASA,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC;AAC/C,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC;AAChD,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;AAMnE,KAAK,UAAU,GAAG,MAAM,IAAI,CAAC;AAE7B,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IAC/C,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,cAAc,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;AAErE,KAAK,YAAY,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,KAAK,kBAAkB,GAAG,IAAI,CAC5B,wBAAwB,EACxB,eAAe,GAAG,gBAAgB,CACnC,CAAC;AAEF,qBAAa,iBAAiB;IACrB,MAAM,UAAS;IACf,kBAAkB,UAAS;IAClC,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,oBAAoB,CAAsC;IAE3D,qBAAqB,UAAS;IAC9B,gBAAgB,UAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAU;IACpD;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB,CAAqC;gBAE/C,OAAO,GAAE,kBAAuB;IAmBnD,sEAAsE;IACtE,IAAW,qBAAqB,IAAI,OAAO,CAK1C;IAEM,gBAAgB,CAAC,OAAO,GAAE,wBAA6B,GAAG,IAAI;IAgBrE;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,0BAA0B;IAIlC;;;;;OAKG;IACI,WAAW,CAChB,QAAQ,EAAE,MAAM,OAAO,EACvB,OAAO,GAAE,sBAA2B;WAsBxB,MAAM,CAClB,OAAO,GAAE,wBAA6B,GACrC,iBAAiB;IAMpB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,mBAAmB;IAIpB,UAAU,CAAC,OAAO,EAAE,mBAAmB;IAIvC,SAAS,CAAC,OAAO,EAAE,kBAAkB;IAIrC,eAAe,CAAC,OAAO,EAAE,uBAAuB;IAIhD,IAAI,IAAI,IAAI;IAIZ,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAInC,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,YAAiB,GAAG,IAAI;IAiC1D,qBAAqB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAIxC,SAAS;IAIT,qBAAqB;IAIrB,wBAAwB;IAIxB,wBAAwB;IAIxB,yBAAyB;;;;;IAIzB,YAAY,IAAI,IAAI;IAKpB,kBAAkB,IAAI,IAAI;CAGlC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mittwald/flow-react-components",
3
- "version": "0.2.0-alpha.987",
3
+ "version": "0.2.0-alpha.989",
4
4
  "type": "module",
5
5
  "description": "A React implementation of Flow, mittwald’s design system",
6
6
  "homepage": "https://flow.mittwald.de",
@@ -68,9 +68,9 @@
68
68
  "@internationalized/string-compiler": "^3.4.1",
69
69
  "@lezer/common": "^1.5.2",
70
70
  "@lezer/highlight": "^1.2.3",
71
- "@mittwald/flow-icons": "0.2.0-alpha.987",
71
+ "@mittwald/flow-icons": "0.2.0-alpha.989",
72
72
  "@mittwald/password-tools-js": "3.0.0-alpha.31",
73
- "@mittwald/react-tunnel": "0.2.0-alpha.987",
73
+ "@mittwald/react-tunnel": "0.2.0-alpha.989",
74
74
  "@mittwald/react-use-promise": "^4.2.2",
75
75
  "@react-aria/form": "^3.2.1",
76
76
  "@react-aria/i18n": "^3.13.1",
@@ -125,7 +125,7 @@
125
125
  "@lezer/generator": "^1.8.0",
126
126
  "@lezer/lr": "^1.4.10",
127
127
  "@mittwald/flow-core": "",
128
- "@mittwald/flow-design-tokens": "0.2.0-alpha.987",
128
+ "@mittwald/flow-design-tokens": "0.2.0-alpha.989",
129
129
  "@mittwald/flow-icons-base": "",
130
130
  "@mittwald/react-use-promise": "^4.2.2",
131
131
  "@mittwald/remote-dom-react": "1.2.2-mittwald.10",
@@ -180,7 +180,7 @@
180
180
  },
181
181
  "peerDependencies": {
182
182
  "@internationalized/date": "^3.12.2",
183
- "@mittwald/flow-icons-pro": "0.2.0-alpha.987",
183
+ "@mittwald/flow-icons-pro": "0.2.0-alpha.989",
184
184
  "@mittwald/react-use-promise": "^4.2.2",
185
185
  "next": "^16.2.3",
186
186
  "react": "^19.2.0",
@@ -201,5 +201,5 @@
201
201
  "optional": true
202
202
  }
203
203
  },
204
- "gitHead": "e33bd2c3956350199b51d9ff0659652a4f3b4615"
204
+ "gitHead": "5f93b99b1dc76d62493a18f644e93568d2431598"
205
205
  }