@mittwald/flow-react-components 0.2.0-alpha.677 → 0.2.0-alpha.679

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 (72) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/assets/doc-properties.json +4390 -4138
  3. package/dist/js/components/src/components/Action/ActionBatch.mjs +12 -0
  4. package/dist/js/components/src/components/Action/ActionBatch.mjs.map +1 -0
  5. package/dist/js/components/src/components/Action/models/ActionModel.mjs +15 -3
  6. package/dist/js/components/src/components/Action/models/ActionModel.mjs.map +1 -1
  7. package/dist/js/components/src/components/Action/models/getExecutionFunction.mjs +16 -8
  8. package/dist/js/components/src/components/Action/models/getExecutionFunction.mjs.map +1 -1
  9. package/dist/js/components/src/components/Autocomplete/Autocomplete.mjs +3 -0
  10. package/dist/js/components/src/components/Autocomplete/Autocomplete.mjs.map +1 -1
  11. package/dist/js/components/src/components/ComboBox/ComboBox.mjs +3 -0
  12. package/dist/js/components/src/components/ComboBox/ComboBox.mjs.map +1 -1
  13. package/dist/js/components/src/components/ContextMenu/ContextMenu.mjs +4 -1
  14. package/dist/js/components/src/components/ContextMenu/ContextMenu.mjs.map +1 -1
  15. package/dist/js/components/src/components/ContextualHelp/ContextualHelp.mjs +3 -0
  16. package/dist/js/components/src/components/ContextualHelp/ContextualHelp.mjs.map +1 -1
  17. package/dist/js/components/src/components/DatePicker/DatePicker.mjs +3 -0
  18. package/dist/js/components/src/components/DatePicker/DatePicker.mjs.map +1 -1
  19. package/dist/js/components/src/components/DateRangePicker/DateRangePicker.mjs +3 -0
  20. package/dist/js/components/src/components/DateRangePicker/DateRangePicker.mjs.map +1 -1
  21. package/dist/js/components/src/components/LightBox/LightBox.mjs +3 -0
  22. package/dist/js/components/src/components/LightBox/LightBox.mjs.map +1 -1
  23. package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs +3 -0
  24. package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs.map +1 -1
  25. package/dist/js/components/src/components/Modal/Modal.mjs +1 -9
  26. package/dist/js/components/src/components/Modal/Modal.mjs.map +1 -1
  27. package/dist/js/components/src/components/Overlay/Overlay.mjs +14 -2
  28. package/dist/js/components/src/components/Overlay/Overlay.mjs.map +1 -1
  29. package/dist/js/components/src/components/OverlayTrigger/OverlayTrigger.mjs +3 -0
  30. package/dist/js/components/src/components/OverlayTrigger/OverlayTrigger.mjs.map +1 -1
  31. package/dist/js/components/src/components/Popover/Popover.mjs +4 -0
  32. package/dist/js/components/src/components/Popover/Popover.mjs.map +1 -1
  33. package/dist/js/components/src/components/Select/Select.mjs +3 -0
  34. package/dist/js/components/src/components/Select/Select.mjs.map +1 -1
  35. package/dist/js/components/src/lib/controller/overlay/OverlayController.mjs +57 -29
  36. package/dist/js/components/src/lib/controller/overlay/OverlayController.mjs.map +1 -1
  37. package/dist/js/components/src/lib/controller/overlay/useModalController.mjs +14 -0
  38. package/dist/js/components/src/lib/controller/overlay/useModalController.mjs.map +1 -0
  39. package/dist/js/components/src/lib/controller/overlay/useOverlayController.mjs +7 -15
  40. package/dist/js/components/src/lib/controller/overlay/useOverlayController.mjs.map +1 -1
  41. package/dist/js/default.mjs +2 -0
  42. package/dist/js/default.mjs.map +1 -1
  43. package/dist/js/flr-universal.mjs +2 -0
  44. package/dist/js/flr-universal.mjs.map +1 -1
  45. package/dist/types/components/Action/ActionBatch.d.ts +13 -0
  46. package/dist/types/components/Action/ActionBatch.d.ts.map +1 -0
  47. package/dist/types/components/Action/index.d.ts +1 -0
  48. package/dist/types/components/Action/index.d.ts.map +1 -1
  49. package/dist/types/components/Action/models/ActionModel.d.ts +1 -1
  50. package/dist/types/components/Action/models/ActionModel.d.ts.map +1 -1
  51. package/dist/types/components/Action/models/getExecutionFunction.d.ts.map +1 -1
  52. package/dist/types/components/Action/types.d.ts +3 -0
  53. package/dist/types/components/Action/types.d.ts.map +1 -1
  54. package/dist/types/components/Modal/Modal.browser.test.d.ts +2 -0
  55. package/dist/types/components/Modal/Modal.browser.test.d.ts.map +1 -0
  56. package/dist/types/components/Modal/Modal.d.ts +3 -1
  57. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  58. package/dist/types/components/Modal/stories/Default.stories.d.ts.map +1 -1
  59. package/dist/types/components/Modal/stories/EdgeCases.stories.d.ts.map +1 -1
  60. package/dist/types/components/Overlay/Overlay.d.ts +5 -0
  61. package/dist/types/components/Overlay/Overlay.d.ts.map +1 -1
  62. package/dist/types/index/flr-universal.d.ts +1 -1
  63. package/dist/types/index/flr-universal.d.ts.map +1 -1
  64. package/dist/types/lib/controller/overlay/OverlayController.d.ts +17 -5
  65. package/dist/types/lib/controller/overlay/OverlayController.d.ts.map +1 -1
  66. package/dist/types/lib/controller/overlay/index.d.ts +2 -1
  67. package/dist/types/lib/controller/overlay/index.d.ts.map +1 -1
  68. package/dist/types/lib/controller/overlay/useModalController.d.ts +5 -0
  69. package/dist/types/lib/controller/overlay/useModalController.d.ts.map +1 -0
  70. package/dist/types/lib/controller/overlay/useOverlayController.d.ts +2 -3
  71. package/dist/types/lib/controller/overlay/useOverlayController.d.ts.map +1 -1
  72. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayTrigger.mjs","sources":["../../../../../../src/components/OverlayTrigger/OverlayTrigger.tsx"],"sourcesContent":["import type { ComponentType, FC, PropsWithChildren, ReactNode } from \"react\";\nimport { OverlayController } from \"@/lib/controller\";\nimport type { PropsContext } from \"@/lib/propsContext\";\nimport { PropsContextProvider } from \"@/lib/propsContext\";\nimport type { FlowComponentName } from \"@/components/propTypes\";\nimport OverlayContextProvider from \"@/lib/controller/overlay/OverlayContextProvider\";\nimport type { FlowComponentProps } from \"@/lib/componentFactory/flowComponent\";\n\ntype AriaComponentType = ComponentType<{\n isOpen?: boolean;\n children: ReactNode;\n}>;\n\nexport interface OverlayTriggerProps\n extends FlowComponentProps, PropsWithChildren {\n /** Whether the overlay should be open initially. */\n isDefaultOpen?: boolean;\n /** A controller to control the state of the overlay. */\n controller?: OverlayController;\n}\n\ninterface Props extends OverlayTriggerProps {\n overlayType: FlowComponentName;\n component: AriaComponentType;\n}\n\nexport const OverlayTrigger: FC<Props> = (props) => {\n const {\n overlayType,\n isDefaultOpen = false,\n component: AriaOverlayTrigger,\n children,\n controller: controllerFromProps,\n } = props;\n\n const newOverlayController = OverlayController.useNew({ isDefaultOpen });\n const overlayController = controllerFromProps ?? newOverlayController;\n const isOpen = overlayController.useIsOpen();\n\n const propsContext: PropsContext = {\n Button: {\n onPress: overlayController.open,\n },\n };\n\n return (\n <OverlayContextProvider type={overlayType} controller={overlayController}>\n <PropsContextProvider props={propsContext}>\n <AriaOverlayTrigger isOpen={isOpen}>{children}</AriaOverlayTrigger>\n </PropsContextProvider>\n </OverlayContextProvider>\n );\n};\n\nexport default OverlayTrigger;\n"],"names":[],"mappings":";;;;;;;;AA0BO,MAAM,cAAA,GAA4B,CAAC,KAAA,KAAU;AAClD,EAAA,MAAM;AAAA,IACJ,WAAA;AAAA,IACA,aAAA,GAAgB,KAAA;AAAA,IAChB,SAAA,EAAW,kBAAA;AAAA,IACX,QAAA;AAAA,IACA,UAAA,EAAY;AAAA,GACd,GAAI,KAAA;AAEJ,EAAA,MAAM,oBAAA,GAAuB,iBAAA,CAAkB,MAAA,CAAO,EAAE,eAAe,CAAA;AACvE,EAAA,MAAM,oBAAoB,mBAAA,IAAuB,oBAAA;AACjD,EAAA,MAAM,MAAA,GAAS,kBAAkB,SAAA,EAAU;AAE3C,EAAA,MAAM,YAAA,GAA6B;AAAA,IACjC,MAAA,EAAQ;AAAA,MACN,SAAS,iBAAA,CAAkB;AAAA;AAC7B,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,sBAAA,EAAA,EAAuB,IAAA,EAAM,WAAA,EAAa,YAAY,iBAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,KAAA,EAAO,cAC3B,QAAA,kBAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,MAAA,EAAiB,QAAA,EAAS,GAChD,CAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"OverlayTrigger.mjs","sources":["../../../../../../src/components/OverlayTrigger/OverlayTrigger.tsx"],"sourcesContent":["import type { ComponentType, FC, PropsWithChildren, ReactNode } from \"react\";\nimport { OverlayController } from \"@/lib/controller\";\nimport type { PropsContext } from \"@/lib/propsContext\";\nimport { PropsContextProvider } from \"@/lib/propsContext\";\nimport type { FlowComponentName } from \"@/components/propTypes\";\nimport OverlayContextProvider from \"@/lib/controller/overlay/OverlayContextProvider\";\nimport type { FlowComponentProps } from \"@/lib/componentFactory/flowComponent\";\n\ntype AriaComponentType = ComponentType<{\n isOpen?: boolean;\n children: ReactNode;\n}>;\n\nexport interface OverlayTriggerProps\n extends FlowComponentProps, PropsWithChildren {\n /** Whether the overlay should be open initially. */\n isDefaultOpen?: boolean;\n /** A controller to control the state of the overlay. */\n controller?: OverlayController;\n}\n\ninterface Props extends OverlayTriggerProps {\n overlayType: FlowComponentName;\n component: AriaComponentType;\n}\n\nexport const OverlayTrigger: FC<Props> = (props) => {\n const {\n overlayType,\n isDefaultOpen = false,\n component: AriaOverlayTrigger,\n children,\n controller: controllerFromProps,\n } = props;\n\n const newOverlayController = OverlayController.useNew({ isDefaultOpen });\n const overlayController = controllerFromProps ?? newOverlayController;\n const isOpen = overlayController.useIsOpen();\n\n const propsContext: PropsContext = {\n Button: {\n onPress: overlayController.open,\n },\n };\n\n return (\n <OverlayContextProvider type={overlayType} controller={overlayController}>\n <PropsContextProvider props={propsContext}>\n <AriaOverlayTrigger isOpen={isOpen}>{children}</AriaOverlayTrigger>\n </PropsContextProvider>\n </OverlayContextProvider>\n );\n};\n\nexport default OverlayTrigger;\n"],"names":[],"mappings":";;;;;;;;;;;AA0BO,MAAM,cAAA,GAA4B,CAAC,KAAA,KAAU;AAClD,EAAA,MAAM;AAAA,IACJ,WAAA;AAAA,IACA,aAAA,GAAgB,KAAA;AAAA,IAChB,SAAA,EAAW,kBAAA;AAAA,IACX,QAAA;AAAA,IACA,UAAA,EAAY;AAAA,GACd,GAAI,KAAA;AAEJ,EAAA,MAAM,oBAAA,GAAuB,iBAAA,CAAkB,MAAA,CAAO,EAAE,eAAe,CAAA;AACvE,EAAA,MAAM,oBAAoB,mBAAA,IAAuB,oBAAA;AACjD,EAAA,MAAM,MAAA,GAAS,kBAAkB,SAAA,EAAU;AAE3C,EAAA,MAAM,YAAA,GAA6B;AAAA,IACjC,MAAA,EAAQ;AAAA,MACN,SAAS,iBAAA,CAAkB;AAAA;AAC7B,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,sBAAA,EAAA,EAAuB,IAAA,EAAM,WAAA,EAAa,YAAY,iBAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,KAAA,EAAO,cAC3B,QAAA,kBAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,MAAA,EAAiB,QAAA,EAAS,GAChD,CAAA,EACF,CAAA;AAEJ;;;;"}
@@ -5,6 +5,10 @@ import 'react';
5
5
  import clsx from 'clsx';
6
6
  import 'mobx';
7
7
  import { useOverlayController } from '../../lib/controller/overlay/useOverlayController.mjs';
8
+ import '../../lib/propsContext/propsContext.mjs';
9
+ import 'remeda';
10
+ import '@react-aria/utils';
11
+ import 'dot-prop';
8
12
  import { flowComponent } from '../../lib/componentFactory/flowComponent.mjs';
9
13
  import { OverlayContextProvider } from '../../lib/controller/overlay/OverlayContextProvider.mjs';
10
14
  import styles from './Popover.module.scss.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.mjs","sources":["../../../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import { type PropsWithChildren } from \"react\";\nimport type * as Aria from \"react-aria-components\";\nimport clsx from \"clsx\";\nimport { type OverlayController, useOverlayController } from \"@/lib/controller\";\nimport {\n flowComponent,\n type FlowComponentProps,\n} from \"@/lib/componentFactory/flowComponent\";\nimport OverlayContextProvider from \"@/lib/controller/overlay/OverlayContextProvider\";\nimport styles from \"./Popover.module.scss\";\nimport PopoverContentView from \"@/views/PopoverContentView\";\n\nexport interface PopoverProps\n extends\n PropsWithChildren<Omit<Aria.PopoverProps, \"children\" | \"ref\">>,\n FlowComponentProps<HTMLDivElement> {\n /**\n * Whether the popover should display a tip, pointing towards the trigger\n * element.\n */\n withTip?: boolean;\n /** Whether the popover contains a dialog. */\n isDialogContent?: boolean;\n /** An overlay controller to control the popover state. */\n controller?: OverlayController;\n /** A fixed width for the popover. */\n width?: string | number;\n}\n\nexport const Popover = flowComponent(\"Popover\", (props) => {\n const {\n children,\n className,\n controller: controllerFromProps,\n onOpenChange: onOpenChangeFromProps,\n defaultOpen = false,\n ...contentProps\n } = props;\n\n const controllerFromContext = useOverlayController(\"Popover\", {\n reuseControllerFromContext: true,\n isDefaultOpen: defaultOpen,\n });\n\n const controller = controllerFromProps ?? controllerFromContext;\n const isOpen = controller.useIsOpen();\n\n const rootClassName = clsx(styles.popover, className);\n\n return (\n <PopoverContentView\n {...contentProps}\n className={rootClassName}\n isOpen={isOpen}\n onOpenChange={(isOpen) => {\n if (!onOpenChangeFromProps) {\n controller.setOpen(isOpen);\n } else {\n onOpenChangeFromProps(isOpen);\n }\n }}\n >\n <OverlayContextProvider type=\"Popover\" controller={controller}>\n {children}\n </OverlayContextProvider>\n </PopoverContentView>\n );\n});\n\nexport default Popover;\n"],"names":["isOpen"],"mappings":";;;;;;;;;;AA6BO,MAAM,OAAA,GAAU,aAAA,CAAc,SAAA,EAAW,CAAC,KAAA,KAAU;AACzD,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA,EAAY,mBAAA;AAAA,IACZ,YAAA,EAAc,qBAAA;AAAA,IACd,WAAA,GAAc,KAAA;AAAA,IACd,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,qBAAA,GAAwB,qBAAqB,SAAA,EAAW;AAAA,IAC5D,0BAAA,EAA4B,IAAA;AAAA,IAC5B,aAAA,EAAe;AAAA,GAChB,CAAA;AAED,EAAA,MAAM,aAAa,mBAAA,IAAuB,qBAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,WAAW,SAAA,EAAU;AAEpC,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,MAAA,CAAO,OAAA,EAAS,SAAS,CAAA;AAEpD,EAAA,uBACE,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACE,GAAG,YAAA;AAAA,MACJ,SAAA,EAAW,aAAA;AAAA,MACX,MAAA;AAAA,MACA,YAAA,EAAc,CAACA,OAAAA,KAAW;AACxB,QAAA,IAAI,CAAC,qBAAA,EAAuB;AAC1B,UAAA,UAAA,CAAW,QAAQA,OAAM,CAAA;AAAA,QAC3B,CAAA,MAAO;AACL,UAAA,qBAAA,CAAsBA,OAAM,CAAA;AAAA,QAC9B;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,kBAAA,GAAA,CAAC,sBAAA,EAAA,EAAuB,IAAA,EAAK,SAAA,EAAU,YACpC,QAAA,EACH;AAAA;AAAA,GACF;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"Popover.mjs","sources":["../../../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import { type PropsWithChildren } from \"react\";\nimport type * as Aria from \"react-aria-components\";\nimport clsx from \"clsx\";\nimport { type OverlayController, useOverlayController } from \"@/lib/controller\";\nimport {\n flowComponent,\n type FlowComponentProps,\n} from \"@/lib/componentFactory/flowComponent\";\nimport OverlayContextProvider from \"@/lib/controller/overlay/OverlayContextProvider\";\nimport styles from \"./Popover.module.scss\";\nimport PopoverContentView from \"@/views/PopoverContentView\";\n\nexport interface PopoverProps\n extends\n PropsWithChildren<Omit<Aria.PopoverProps, \"children\" | \"ref\">>,\n FlowComponentProps<HTMLDivElement> {\n /**\n * Whether the popover should display a tip, pointing towards the trigger\n * element.\n */\n withTip?: boolean;\n /** Whether the popover contains a dialog. */\n isDialogContent?: boolean;\n /** An overlay controller to control the popover state. */\n controller?: OverlayController;\n /** A fixed width for the popover. */\n width?: string | number;\n}\n\nexport const Popover = flowComponent(\"Popover\", (props) => {\n const {\n children,\n className,\n controller: controllerFromProps,\n onOpenChange: onOpenChangeFromProps,\n defaultOpen = false,\n ...contentProps\n } = props;\n\n const controllerFromContext = useOverlayController(\"Popover\", {\n reuseControllerFromContext: true,\n isDefaultOpen: defaultOpen,\n });\n\n const controller = controllerFromProps ?? controllerFromContext;\n const isOpen = controller.useIsOpen();\n\n const rootClassName = clsx(styles.popover, className);\n\n return (\n <PopoverContentView\n {...contentProps}\n className={rootClassName}\n isOpen={isOpen}\n onOpenChange={(isOpen) => {\n if (!onOpenChangeFromProps) {\n controller.setOpen(isOpen);\n } else {\n onOpenChangeFromProps(isOpen);\n }\n }}\n >\n <OverlayContextProvider type=\"Popover\" controller={controller}>\n {children}\n </OverlayContextProvider>\n </PopoverContentView>\n );\n});\n\nexport default Popover;\n"],"names":["isOpen"],"mappings":";;;;;;;;;;;;;;AA6BO,MAAM,OAAA,GAAU,aAAA,CAAc,SAAA,EAAW,CAAC,KAAA,KAAU;AACzD,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA,EAAY,mBAAA;AAAA,IACZ,YAAA,EAAc,qBAAA;AAAA,IACd,WAAA,GAAc,KAAA;AAAA,IACd,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,qBAAA,GAAwB,qBAAqB,SAAA,EAAW;AAAA,IAC5D,0BAAA,EAA4B,IAAA;AAAA,IAC5B,aAAA,EAAe;AAAA,GAChB,CAAA;AAED,EAAA,MAAM,aAAa,mBAAA,IAAuB,qBAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,WAAW,SAAA,EAAU;AAEpC,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,MAAA,CAAO,OAAA,EAAS,SAAS,CAAA;AAEpD,EAAA,uBACE,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACE,GAAG,YAAA;AAAA,MACJ,SAAA,EAAW,aAAA;AAAA,MACX,MAAA;AAAA,MACA,YAAA,EAAc,CAACA,OAAAA,KAAW;AACxB,QAAA,IAAI,CAAC,qBAAA,EAAuB;AAC1B,UAAA,UAAA,CAAW,QAAQA,OAAM,CAAA;AAAA,QAC3B,CAAA,MAAO;AACL,UAAA,qBAAA,CAAsBA,OAAM,CAAA;AAAA,QAC9B;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,kBAAA,GAAA,CAAC,sBAAA,EAAA,EAAuB,IAAA,EAAK,SAAA,EAAU,YACpC,QAAA,EACH;AAAA;AAAA,GACF;AAEJ,CAAC;;;;"}
@@ -17,6 +17,9 @@ import { Options } from '../Options/Options.mjs';
17
17
  import { TunnelProvider, TunnelExit } from '@mittwald/react-tunnel';
18
18
  import 'mobx';
19
19
  import { useOverlayController } from '../../lib/controller/overlay/useOverlayController.mjs';
20
+ import 'remeda';
21
+ import '@react-aria/utils';
22
+ import 'dot-prop';
20
23
  import { useFieldComponent } from '../../lib/hooks/useFieldComponent.mjs';
21
24
 
22
25
  const Select = flowComponent("Select", (props) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Select.mjs","sources":["../../../../../../src/components/Select/Select.tsx"],"sourcesContent":["import { type PropsWithChildren } from \"react\";\nimport type { Key } from \"react-aria-components\";\nimport * as Aria from \"react-aria-components\";\nimport type { PropsContext } from \"@/lib/propsContext\";\nimport { PropsContextProvider } from \"@/lib/propsContext\";\nimport formFieldStyles from \"@/components/FormField/FormField.module.scss\";\nimport styles from \"./Select.module.scss\";\nimport clsx from \"clsx\";\nimport { IconChevronDown } from \"@/components/Icon/components/icons\";\nimport type { FlowComponentProps } from \"@/lib/componentFactory/flowComponent\";\nimport { flowComponent } from \"@/lib/componentFactory/flowComponent\";\nimport { Options } from \"@/components/Options\";\nimport { TunnelExit, TunnelProvider } from \"@mittwald/react-tunnel\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport { useOverlayController } from \"@/lib/controller\";\nimport { useFieldComponent } from \"@/lib/hooks/useFieldComponent\";\n\nexport interface SelectProps\n extends\n PropsWithChildren<Omit<Aria.SelectProps, \"children\" | \"className\" | \"ref\">>,\n FlowComponentProps<HTMLButtonElement>,\n PropsWithClassName {\n /** Handler that is called when the selected value changes. */\n onChange?: (value: Key | null) => void;\n /** Whether the component is read only. */\n isReadOnly?: boolean;\n}\n\n/** @flr-generate all */\nexport const Select = flowComponent(\"Select\", (props) => {\n const {\n children,\n className,\n onChange,\n onSelectionChange,\n isReadOnly,\n ref,\n ...rest\n } = props;\n\n const {\n FieldErrorView,\n fieldPropsContext,\n fieldProps,\n FieldErrorCaptureContext,\n } = useFieldComponent(props);\n\n const rootClassName = clsx(\n styles.select,\n formFieldStyles.formField,\n className,\n );\n\n const propsContext: PropsContext = {\n Option: {\n tunnelId: \"options\",\n },\n ...fieldPropsContext,\n };\n\n const controller = useOverlayController(\"Select\", {\n reuseControllerFromContext: false,\n });\n const isOpen = controller.useIsOpen();\n\n return (\n <Aria.Select\n {...rest}\n {...fieldProps}\n className={clsx(rootClassName, fieldProps.className)}\n onChange={(value) => {\n if (!isReadOnly) {\n onChange?.(value);\n onSelectionChange?.(value);\n }\n }}\n onOpenChange={(isOpen) => !isReadOnly && controller.setOpen(isOpen)}\n isOpen={isOpen}\n data-readonly={isReadOnly}\n >\n <TunnelProvider>\n <FieldErrorCaptureContext>\n <PropsContextProvider props={propsContext}>\n <Aria.Button\n data-readonly={isReadOnly}\n className={styles.toggle}\n ref={ref}\n >\n <Aria.SelectValue />\n <IconChevronDown />\n </Aria.Button>\n {children}\n <Options controller={controller}>\n <TunnelExit id=\"options\" />\n </Options>\n </PropsContextProvider>\n </FieldErrorCaptureContext>\n <FieldErrorView />\n </TunnelProvider>\n </Aria.Select>\n );\n});\n\nexport default Select;\n"],"names":["isOpen"],"mappings":";;;;;;;;;;;;;;;;;;;AA6BO,MAAM,MAAA,GAAS,aAAA,CAAc,QAAA,EAAU,CAAC,KAAA,KAAU;AACvD,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM;AAAA,IACJ,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,kBAAkB,KAAK,CAAA;AAE3B,EAAA,MAAM,aAAA,GAAgB,IAAA;AAAA,IACpB,MAAA,CAAO,MAAA;AAAA,IACP,eAAA,CAAgB,SAAA;AAAA,IAChB;AAAA,GACF;AAEA,EAAA,MAAM,YAAA,GAA6B;AAAA,IACjC,MAAA,EAAQ;AAAA,MACN,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,UAAA,GAAa,qBAAqB,QAAA,EAAU;AAAA,IAChD,0BAAA,EAA4B;AAAA,GAC7B,CAAA;AACD,EAAA,MAAM,MAAA,GAAS,WAAW,SAAA,EAAU;AAEpC,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA,CAAK,MAAA;AAAA,IAAL;AAAA,MACE,GAAG,IAAA;AAAA,MACH,GAAG,UAAA;AAAA,MACJ,SAAA,EAAW,IAAA,CAAK,aAAA,EAAe,UAAA,CAAW,SAAS,CAAA;AAAA,MACnD,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,QAAA,GAAW,KAAK,CAAA;AAChB,UAAA,iBAAA,GAAoB,KAAK,CAAA;AAAA,QAC3B;AAAA,MACF,CAAA;AAAA,MACA,cAAc,CAACA,OAAAA,KAAW,CAAC,UAAA,IAAc,UAAA,CAAW,QAAQA,OAAM,CAAA;AAAA,MAClE,MAAA;AAAA,MACA,eAAA,EAAe,UAAA;AAAA,MAEf,+BAAC,cAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,wBAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,oBAAA,EAAA,EAAqB,KAAA,EAAO,YAAA,EAC3B,QAAA,EAAA;AAAA,0BAAA,IAAA;AAAA,YAAC,IAAA,CAAK,MAAA;AAAA,YAAL;AAAA,cACC,eAAA,EAAe,UAAA;AAAA,cACf,WAAW,MAAA,CAAO,MAAA;AAAA,cAClB,GAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,IAAA,CAAK,aAAL,EAAiB,CAAA;AAAA,oCACjB,eAAA,EAAA,EAAgB;AAAA;AAAA;AAAA,WACnB;AAAA,UACC,QAAA;AAAA,8BACA,OAAA,EAAA,EAAQ,UAAA,EACP,8BAAC,UAAA,EAAA,EAAW,EAAA,EAAG,WAAU,CAAA,EAC3B;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,4BACC,cAAA,EAAA,EAAe;AAAA,OAAA,EAClB;AAAA;AAAA,GACF;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"Select.mjs","sources":["../../../../../../src/components/Select/Select.tsx"],"sourcesContent":["import { type PropsWithChildren } from \"react\";\nimport type { Key } from \"react-aria-components\";\nimport * as Aria from \"react-aria-components\";\nimport type { PropsContext } from \"@/lib/propsContext\";\nimport { PropsContextProvider } from \"@/lib/propsContext\";\nimport formFieldStyles from \"@/components/FormField/FormField.module.scss\";\nimport styles from \"./Select.module.scss\";\nimport clsx from \"clsx\";\nimport { IconChevronDown } from \"@/components/Icon/components/icons\";\nimport type { FlowComponentProps } from \"@/lib/componentFactory/flowComponent\";\nimport { flowComponent } from \"@/lib/componentFactory/flowComponent\";\nimport { Options } from \"@/components/Options\";\nimport { TunnelExit, TunnelProvider } from \"@mittwald/react-tunnel\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport { useOverlayController } from \"@/lib/controller\";\nimport { useFieldComponent } from \"@/lib/hooks/useFieldComponent\";\n\nexport interface SelectProps\n extends\n PropsWithChildren<Omit<Aria.SelectProps, \"children\" | \"className\" | \"ref\">>,\n FlowComponentProps<HTMLButtonElement>,\n PropsWithClassName {\n /** Handler that is called when the selected value changes. */\n onChange?: (value: Key | null) => void;\n /** Whether the component is read only. */\n isReadOnly?: boolean;\n}\n\n/** @flr-generate all */\nexport const Select = flowComponent(\"Select\", (props) => {\n const {\n children,\n className,\n onChange,\n onSelectionChange,\n isReadOnly,\n ref,\n ...rest\n } = props;\n\n const {\n FieldErrorView,\n fieldPropsContext,\n fieldProps,\n FieldErrorCaptureContext,\n } = useFieldComponent(props);\n\n const rootClassName = clsx(\n styles.select,\n formFieldStyles.formField,\n className,\n );\n\n const propsContext: PropsContext = {\n Option: {\n tunnelId: \"options\",\n },\n ...fieldPropsContext,\n };\n\n const controller = useOverlayController(\"Select\", {\n reuseControllerFromContext: false,\n });\n const isOpen = controller.useIsOpen();\n\n return (\n <Aria.Select\n {...rest}\n {...fieldProps}\n className={clsx(rootClassName, fieldProps.className)}\n onChange={(value) => {\n if (!isReadOnly) {\n onChange?.(value);\n onSelectionChange?.(value);\n }\n }}\n onOpenChange={(isOpen) => !isReadOnly && controller.setOpen(isOpen)}\n isOpen={isOpen}\n data-readonly={isReadOnly}\n >\n <TunnelProvider>\n <FieldErrorCaptureContext>\n <PropsContextProvider props={propsContext}>\n <Aria.Button\n data-readonly={isReadOnly}\n className={styles.toggle}\n ref={ref}\n >\n <Aria.SelectValue />\n <IconChevronDown />\n </Aria.Button>\n {children}\n <Options controller={controller}>\n <TunnelExit id=\"options\" />\n </Options>\n </PropsContextProvider>\n </FieldErrorCaptureContext>\n <FieldErrorView />\n </TunnelProvider>\n </Aria.Select>\n );\n});\n\nexport default Select;\n"],"names":["isOpen"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA6BO,MAAM,MAAA,GAAS,aAAA,CAAc,QAAA,EAAU,CAAC,KAAA,KAAU;AACvD,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM;AAAA,IACJ,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,kBAAkB,KAAK,CAAA;AAE3B,EAAA,MAAM,aAAA,GAAgB,IAAA;AAAA,IACpB,MAAA,CAAO,MAAA;AAAA,IACP,eAAA,CAAgB,SAAA;AAAA,IAChB;AAAA,GACF;AAEA,EAAA,MAAM,YAAA,GAA6B;AAAA,IACjC,MAAA,EAAQ;AAAA,MACN,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,UAAA,GAAa,qBAAqB,QAAA,EAAU;AAAA,IAChD,0BAAA,EAA4B;AAAA,GAC7B,CAAA;AACD,EAAA,MAAM,MAAA,GAAS,WAAW,SAAA,EAAU;AAEpC,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA,CAAK,MAAA;AAAA,IAAL;AAAA,MACE,GAAG,IAAA;AAAA,MACH,GAAG,UAAA;AAAA,MACJ,SAAA,EAAW,IAAA,CAAK,aAAA,EAAe,UAAA,CAAW,SAAS,CAAA;AAAA,MACnD,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,QAAA,GAAW,KAAK,CAAA;AAChB,UAAA,iBAAA,GAAoB,KAAK,CAAA;AAAA,QAC3B;AAAA,MACF,CAAA;AAAA,MACA,cAAc,CAACA,OAAAA,KAAW,CAAC,UAAA,IAAc,UAAA,CAAW,QAAQA,OAAM,CAAA;AAAA,MAClE,MAAA;AAAA,MACA,eAAA,EAAe,UAAA;AAAA,MAEf,+BAAC,cAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,wBAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,oBAAA,EAAA,EAAqB,KAAA,EAAO,YAAA,EAC3B,QAAA,EAAA;AAAA,0BAAA,IAAA;AAAA,YAAC,IAAA,CAAK,MAAA;AAAA,YAAL;AAAA,cACC,eAAA,EAAe,UAAA;AAAA,cACf,WAAW,MAAA,CAAO,MAAA;AAAA,cAClB,GAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,IAAA,CAAK,aAAL,EAAiB,CAAA;AAAA,oCACjB,eAAA,EAAA,EAAgB;AAAA;AAAA;AAAA,WACnB;AAAA,UACC,QAAA;AAAA,8BACA,OAAA,EAAA,EAAQ,UAAA,EACP,8BAAC,UAAA,EAAA,EAAW,EAAA,EAAG,WAAU,CAAA,EAC3B;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,4BACC,cAAA,EAAA,EAAe;AAAA,OAAA,EAClB;AAAA;AAAA,GACF;AAEJ,CAAC;;;;"}
@@ -3,11 +3,13 @@
3
3
  import { makeObservable, action, observable } from 'mobx';
4
4
  import useSelector from '../../mobx/useSelector.mjs';
5
5
  import { useStatic } from '../../hooks/useStatic.mjs';
6
+ import { useEffect } from 'react';
6
7
 
7
8
  class OverlayController {
8
9
  isOpen = false;
9
10
  onOpenHandlers = /* @__PURE__ */ new Set();
10
11
  onCloseHandlers = /* @__PURE__ */ new Set();
12
+ onOpenChangeHandlers = /* @__PURE__ */ new Set();
11
13
  constructor(options) {
12
14
  makeObservable(this, {
13
15
  isOpen: observable,
@@ -23,56 +25,82 @@ class OverlayController {
23
25
  if (options?.onClose) {
24
26
  this.onCloseHandlers.add(options.onClose);
25
27
  }
28
+ if (options?.onOpenChange) {
29
+ this.onOpenChangeHandlers.add(options.onOpenChange);
30
+ }
26
31
  }
27
- static useNew(options) {
32
+ static useNew(options = {}) {
28
33
  return useStatic(() => new OverlayController(options));
29
34
  }
30
- addOnOpen(handler) {
31
- this.onOpenHandlers.add(handler);
35
+ addOpenStateHandler(handler, handlersSet) {
36
+ handlersSet.add(handler);
32
37
  return () => {
33
- this.onOpenHandlers.delete(handler);
38
+ handlersSet.delete(handler);
34
39
  };
35
40
  }
41
+ addOnOpen(handler) {
42
+ return this.addOpenStateHandler(handler, this.onOpenHandlers);
43
+ }
36
44
  addOnClose(handler) {
37
- this.onCloseHandlers.add(handler);
38
- return () => {
39
- this.onCloseHandlers.delete(handler);
40
- };
45
+ return this.addOpenStateHandler(handler, this.onCloseHandlers);
46
+ }
47
+ addOnOpenChange(handler) {
48
+ return this.addOpenStateHandler(handler, this.onOpenChangeHandlers);
49
+ }
50
+ useOnHandler(handler, addHandlerFn) {
51
+ useEffect(
52
+ () => handler ? addHandlerFn(handler) : void 0,
53
+ [handler, this]
54
+ );
55
+ }
56
+ useOnOpen(handler) {
57
+ this.useOnHandler(handler, (h) => this.addOnOpen(h));
58
+ }
59
+ useOnClose(handler) {
60
+ this.useOnHandler(handler, (h) => this.addOnClose(h));
61
+ }
62
+ useOnOpenChange(handler) {
63
+ this.useOnHandler(handler, (h) => this.addOnOpenChange(h));
64
+ }
65
+ executeHandlers(isOpen, handlers) {
66
+ const handlerResult = Array.from(handlers).map(
67
+ (handler) => handler(isOpen)
68
+ );
69
+ return handlerResult.some((result) => result === false);
41
70
  }
42
71
  executeOnClose() {
43
- this.onCloseHandlers.forEach((handler) => handler());
72
+ return this.executeHandlers(false, this.onCloseHandlers);
44
73
  }
45
74
  executeOnOpen() {
46
- this.onOpenHandlers.forEach((handler) => handler());
75
+ return this.executeHandlers(true, this.onOpenHandlers);
76
+ }
77
+ executeOnOpenChange(isOpen) {
78
+ return this.executeHandlers(isOpen, this.onOpenChangeHandlers);
47
79
  }
48
80
  open() {
49
- if (this.isOpen) {
50
- return;
51
- }
52
- this.isOpen = true;
53
- this.executeOnOpen();
81
+ this.setOpen(true);
54
82
  }
55
83
  close() {
56
- if (!this.isOpen) {
57
- return;
58
- }
59
- this.isOpen = false;
60
- this.executeOnClose();
84
+ this.setOpen(false);
61
85
  }
62
86
  toggle() {
63
- this.isOpen = !this.isOpen;
64
- if (this.isOpen) {
65
- this.executeOnOpen();
66
- } else {
67
- this.executeOnClose();
68
- }
87
+ this.setOpen(!this.isOpen);
69
88
  }
70
89
  setOpen(to) {
71
- this.isOpen = to;
90
+ if (this.isOpen === to) {
91
+ return;
92
+ }
93
+ let aborted = false;
72
94
  if (to) {
73
- this.executeOnOpen();
95
+ aborted = this.executeOnOpen();
74
96
  } else {
75
- this.executeOnClose();
97
+ aborted = this.executeOnClose();
98
+ }
99
+ if (!aborted) {
100
+ aborted = this.executeOnOpenChange(to);
101
+ }
102
+ if (!aborted) {
103
+ this.isOpen = to;
76
104
  }
77
105
  }
78
106
  useIsOpen() {
@@ -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\";\n\ntype OpenStateHandler = () => void;\ntype DisposerFn = () => void;\n\nexport interface OverlayControllerOptions {\n isDefaultOpen?: boolean;\n onOpen?: OpenStateHandler;\n onClose?: OpenStateHandler;\n}\n\nexport class OverlayController {\n public isOpen = false;\n private onOpenHandlers = new Set<OpenStateHandler>();\n private onCloseHandlers = new Set<OpenStateHandler>();\n\n public constructor(options?: OverlayControllerOptions) {\n makeObservable(this, {\n isOpen: observable,\n open: action.bound,\n close: action.bound,\n toggle: action.bound,\n setOpen: action.bound,\n });\n this.isOpen = options?.isDefaultOpen ?? false;\n\n if (options?.onOpen) {\n this.onOpenHandlers.add(options.onOpen);\n }\n if (options?.onClose) {\n this.onCloseHandlers.add(options.onClose);\n }\n }\n\n public static useNew(options?: OverlayControllerOptions): OverlayController {\n return useStatic(() => new OverlayController(options));\n }\n\n public addOnOpen(handler: OpenStateHandler): DisposerFn {\n this.onOpenHandlers.add(handler);\n return () => {\n this.onOpenHandlers.delete(handler);\n };\n }\n\n public addOnClose(handler: OpenStateHandler): DisposerFn {\n this.onCloseHandlers.add(handler);\n return () => {\n this.onCloseHandlers.delete(handler);\n };\n }\n\n private executeOnClose(): void {\n this.onCloseHandlers.forEach((handler) => handler());\n }\n\n private executeOnOpen(): void {\n this.onOpenHandlers.forEach((handler) => handler());\n }\n\n public open(): void {\n if (this.isOpen) {\n return;\n }\n this.isOpen = true;\n this.executeOnOpen();\n }\n\n public close(): void {\n if (!this.isOpen) {\n return;\n }\n this.isOpen = false;\n this.executeOnClose();\n }\n\n public toggle(): void {\n this.isOpen = !this.isOpen;\n\n if (this.isOpen) {\n this.executeOnOpen();\n } else {\n this.executeOnClose();\n }\n }\n\n public setOpen(to: boolean): void {\n this.isOpen = to;\n\n if (to) {\n this.executeOnOpen();\n } else {\n this.executeOnClose();\n }\n }\n\n public useIsOpen(): boolean {\n return useSelector(() => this.isOpen);\n }\n}\n"],"names":[],"mappings":"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"}
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 } from \"react\";\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 OverlayControllerOptions {\n isDefaultOpen?: boolean;\n onOpen?: OverlayOpenHandler;\n onClose?: OverlayCloseHandler;\n onOpenChange?: OverlayOpenStateHandler;\n}\n\nexport class OverlayController {\n public isOpen = false;\n private onOpenHandlers = new Set<OverlayOpenHandler>();\n private onCloseHandlers = new Set<OverlayCloseHandler>();\n private onOpenChangeHandlers = new Set<OverlayOpenStateHandler>();\n\n public constructor(options?: OverlayControllerOptions) {\n makeObservable(this, {\n isOpen: observable,\n open: action.bound,\n close: action.bound,\n toggle: action.bound,\n setOpen: action.bound,\n });\n this.isOpen = options?.isDefaultOpen ?? false;\n\n if (options?.onOpen) {\n this.onOpenHandlers.add(options.onOpen);\n }\n if (options?.onClose) {\n this.onCloseHandlers.add(options.onClose);\n }\n if (options?.onOpenChange) {\n this.onOpenChangeHandlers.add(options.onOpenChange);\n }\n }\n\n public static useNew(\n options: OverlayControllerOptions = {},\n ): OverlayController {\n return useStatic(() => new OverlayController(options));\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 public addOnOpen(handler: OverlayOpenHandler): DisposerFn {\n return this.addOpenStateHandler(handler, this.onOpenHandlers);\n }\n\n public addOnClose(handler: OverlayCloseHandler): DisposerFn {\n return this.addOpenStateHandler(handler, this.onCloseHandlers);\n }\n\n public addOnOpenChange(handler: OverlayOpenStateHandler): DisposerFn {\n return this.addOpenStateHandler(handler, this.onOpenChangeHandlers);\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 public useOnOpen(handler?: OverlayOpenHandler): void {\n this.useOnHandler(handler, (h) => this.addOnOpen(h));\n }\n\n public useOnClose(handler?: OverlayCloseHandler): void {\n this.useOnHandler(handler, (h) => this.addOnClose(h));\n }\n\n public useOnOpenChange(handler?: OverlayOpenStateHandler): void {\n this.useOnHandler(handler, (h) => this.addOnOpenChange(h));\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 open(): void {\n this.setOpen(true);\n }\n\n public close(): void {\n this.setOpen(false);\n }\n\n public toggle(): void {\n this.setOpen(!this.isOpen);\n }\n\n public setOpen(to: boolean): void {\n if (this.isOpen === to) {\n return;\n }\n\n let aborted = false;\n if (to) {\n aborted = this.executeOnOpen();\n } else {\n aborted = this.executeOnClose();\n }\n if (!aborted) {\n aborted = this.executeOnOpenChange(to);\n }\n\n if (!aborted) {\n this.isOpen = to;\n }\n }\n\n public useIsOpen() {\n return useSelector(() => this.isOpen);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ "use client"
2
+ /* */
3
+ import 'mobx';
4
+ import 'react';
5
+ import { useOverlayController } from './useOverlayController.mjs';
6
+ import '../../propsContext/propsContext.mjs';
7
+ import 'remeda';
8
+ import '@react-aria/utils';
9
+ import 'dot-prop';
10
+
11
+ const useModalController = (options) => useOverlayController("Modal", options);
12
+
13
+ export { useModalController };
14
+ //# sourceMappingURL=useModalController.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useModalController.mjs","sources":["../../../../../../../src/lib/controller/overlay/useModalController.ts"],"sourcesContent":["import { useOverlayController } from \"@/lib/hooks\";\n\ntype UseModalControllerArgs = Parameters<typeof useOverlayController>;\n\nexport const useModalController = (options?: UseModalControllerArgs[1]) =>\n useOverlayController(\"Modal\", options);\n"],"names":[],"mappings":";;;;;;;;AAIO,MAAM,kBAAA,GAAqB,CAAC,OAAA,KACjC,oBAAA,CAAqB,SAAS,OAAO;;;;"}
@@ -2,34 +2,26 @@
2
2
  /* */
3
3
  import { useOverlayContext } from './context.mjs';
4
4
  import { OverlayController } from './OverlayController.mjs';
5
- import { useEffect } from 'react';
6
5
 
7
6
  const useOverlayController = (overlayType, opts = {}) => {
8
7
  const {
9
8
  reuseControllerFromContext = true,
10
9
  isDefaultOpen,
11
10
  onOpen,
12
- onClose
11
+ onClose,
12
+ onOpenChange
13
13
  } = opts;
14
14
  const newController = OverlayController.useNew({
15
15
  isDefaultOpen,
16
16
  onOpen,
17
- onClose
17
+ onClose,
18
+ onOpenChange
18
19
  });
19
20
  const controllerFromContext = useOverlayContext()[overlayType];
20
21
  const controller = reuseControllerFromContext && controllerFromContext ? controllerFromContext : newController;
21
- useEffect(() => {
22
- const disposers = [];
23
- if (onOpen) {
24
- disposers.push(controller.addOnOpen(onOpen));
25
- }
26
- if (onClose) {
27
- disposers.push(controller.addOnClose(onClose));
28
- }
29
- return () => {
30
- disposers.forEach((dispose) => dispose());
31
- };
32
- }, [onOpen, onClose]);
22
+ controller.useOnOpen(onOpen);
23
+ controller.useOnClose(onClose);
24
+ controller.useOnOpenChange(onOpenChange);
33
25
  return controller;
34
26
  };
35
27
 
@@ -1 +1 @@
1
- {"version":3,"file":"useOverlayController.mjs","sources":["../../../../../../../src/lib/controller/overlay/useOverlayController.ts"],"sourcesContent":["import { useOverlayContext } from \"@/lib/controller/overlay/context\";\nimport type { OverlayControllerOptions } from \"@/lib/controller/overlay/OverlayController\";\nimport { OverlayController } from \"@/lib/controller/overlay/OverlayController\";\nimport type { FlowComponentName } from \"@/components/propTypes\";\nimport { useEffect } from \"react\";\n\ninterface Options extends OverlayControllerOptions {\n reuseControllerFromContext?: boolean;\n}\n\nexport const useOverlayController = (\n overlayType: FlowComponentName,\n opts: Options = {},\n): OverlayController => {\n const {\n reuseControllerFromContext = true,\n isDefaultOpen,\n onOpen,\n onClose,\n } = opts;\n\n const newController = OverlayController.useNew({\n isDefaultOpen,\n onOpen,\n onClose,\n });\n const controllerFromContext = useOverlayContext()[overlayType];\n\n const controller =\n reuseControllerFromContext && controllerFromContext\n ? controllerFromContext\n : newController;\n\n useEffect(() => {\n const disposers: (() => void)[] = [];\n\n if (onOpen) {\n disposers.push(controller.addOnOpen(onOpen));\n }\n\n if (onClose) {\n disposers.push(controller.addOnClose(onClose));\n }\n\n return () => {\n disposers.forEach((dispose) => dispose());\n };\n }, [onOpen, onClose]);\n\n return controller;\n};\n"],"names":[],"mappings":";;;;AAUO,MAAM,oBAAA,GAAuB,CAClC,WAAA,EACA,IAAA,GAAgB,EAAC,KACK;AACtB,EAAA,MAAM;AAAA,IACJ,0BAAA,GAA6B,IAAA;AAAA,IAC7B,aAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,GAAI,IAAA;AAEJ,EAAA,MAAM,aAAA,GAAgB,kBAAkB,MAAA,CAAO;AAAA,IAC7C,aAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,qBAAA,GAAwB,iBAAA,EAAkB,CAAE,WAAW,CAAA;AAE7D,EAAA,MAAM,UAAA,GACJ,0BAAA,IAA8B,qBAAA,GAC1B,qBAAA,GACA,aAAA;AAEN,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,YAA4B,EAAC;AAEnC,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,SAAA,CAAU,IAAA,CAAK,UAAA,CAAW,SAAA,CAAU,MAAM,CAAC,CAAA;AAAA,IAC7C;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,SAAA,CAAU,IAAA,CAAK,UAAA,CAAW,UAAA,CAAW,OAAO,CAAC,CAAA;AAAA,IAC/C;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,OAAA,KAAY,OAAA,EAAS,CAAA;AAAA,IAC1C,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEpB,EAAA,OAAO,UAAA;AACT;;;;"}
1
+ {"version":3,"file":"useOverlayController.mjs","sources":["../../../../../../../src/lib/controller/overlay/useOverlayController.ts"],"sourcesContent":["import { useOverlayContext } from \"@/lib/controller/overlay/context\";\nimport type { OverlayControllerOptions } from \"@/lib/controller/overlay/OverlayController\";\nimport { OverlayController } from \"@/lib/controller/overlay/OverlayController\";\nimport type { FlowComponentName } from \"@/components/propTypes\";\n\nexport interface UseOverlayControllerOptions extends OverlayControllerOptions {\n reuseControllerFromContext?: boolean;\n}\n\nexport const useOverlayController = (\n overlayType: FlowComponentName,\n opts: UseOverlayControllerOptions = {},\n): OverlayController => {\n const {\n reuseControllerFromContext = true,\n isDefaultOpen,\n onOpen,\n onClose,\n onOpenChange,\n } = opts;\n\n const newController = OverlayController.useNew({\n isDefaultOpen,\n onOpen,\n onClose,\n onOpenChange,\n });\n const controllerFromContext = useOverlayContext()[overlayType];\n\n const controller =\n reuseControllerFromContext && controllerFromContext\n ? controllerFromContext\n : newController;\n\n controller.useOnOpen(onOpen);\n controller.useOnClose(onClose);\n controller.useOnOpenChange(onOpenChange);\n\n return controller;\n};\n"],"names":[],"mappings":";;;AASO,MAAM,oBAAA,GAAuB,CAClC,WAAA,EACA,IAAA,GAAoC,EAAC,KACf;AACtB,EAAA,MAAM;AAAA,IACJ,0BAAA,GAA6B,IAAA;AAAA,IAC7B,aAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAI,IAAA;AAEJ,EAAA,MAAM,aAAA,GAAgB,kBAAkB,MAAA,CAAO;AAAA,IAC7C,aAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,qBAAA,GAAwB,iBAAA,EAAkB,CAAE,WAAW,CAAA;AAE7D,EAAA,MAAM,UAAA,GACJ,0BAAA,IAA8B,qBAAA,GAC1B,qBAAA,GACA,aAAA;AAEN,EAAA,UAAA,CAAW,UAAU,MAAM,CAAA;AAC3B,EAAA,UAAA,CAAW,WAAW,OAAO,CAAA;AAC7B,EAAA,UAAA,CAAW,gBAAgB,YAAY,CAAA;AAEvC,EAAA,OAAO,UAAA;AACT;;;;"}
@@ -4,6 +4,7 @@ export { AccentBox } from './components/src/components/AccentBox/AccentBox.mjs';
4
4
  export { Accordion } from './components/src/components/Accordion/Accordion.mjs';
5
5
  export { Action } from './components/src/components/Action/Action.mjs';
6
6
  export { MutedActionError } from './components/src/components/Action/MutedActionError.mjs';
7
+ export { ActionBatch } from './components/src/components/Action/ActionBatch.mjs';
7
8
  export { useAriaAnnounceSuspense } from './components/src/components/Action/lib/ariaLive.mjs';
8
9
  export { ActionGroup } from './components/src/components/ActionGroup/ActionGroup.mjs';
9
10
  export { Activity } from './components/src/components/Activity/Activity.mjs';
@@ -280,6 +281,7 @@ export { Wrap } from './components/src/components/Wrap/Wrap.mjs';
280
281
  export { Render } from './components/src/lib/react/components/Render/Render.mjs';
281
282
  export { OverlayController } from './components/src/lib/controller/overlay/OverlayController.mjs';
282
283
  export { useOverlayController } from './components/src/lib/controller/overlay/useOverlayController.mjs';
284
+ export { useModalController } from './components/src/lib/controller/overlay/useModalController.mjs';
283
285
  export { useOnChange } from './components/src/lib/hooks/useOnChange.mjs';
284
286
  export { useIsMounted } from './components/src/lib/hooks/useIsMounted.mjs';
285
287
  export { useProps } from './components/src/lib/hooks/useProps.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"default.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"default.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -131,6 +131,7 @@ import './components/src/components/Button/Button.mjs';
131
131
  import '@mittwald/react-tunnel';
132
132
  import './components/src/components/Activity/Activity.mjs';
133
133
  export { Action } from './components/src/components/Action/Action.mjs';
134
+ export { ActionBatch } from './components/src/components/Action/ActionBatch.mjs';
134
135
  import 'react-aria';
135
136
  import '@react-aria/live-announcer';
136
137
  import './components/src/components/ActionGroup/ActionGroup.mjs';
@@ -211,6 +212,7 @@ import './components/src/components/NumberField/NumberField.mjs';
211
212
  import './components/src/components/Option/Option.mjs';
212
213
  export { OverlayController } from './components/src/lib/controller/overlay/OverlayController.mjs';
213
214
  export { useOverlayController } from './components/src/lib/controller/overlay/useOverlayController.mjs';
215
+ export { useModalController } from './components/src/lib/controller/overlay/useModalController.mjs';
214
216
  import './components/src/lib/controller/overlay/context.mjs';
215
217
  import './components/src/views/OverlayContentView.mjs';
216
218
  import './components/src/components/OverlayTrigger/components/MenuTrigger/MenuTrigger.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"flr-universal.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"flr-universal.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,13 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ export type ActionBatchProps = PropsWithChildren;
3
+ /**
4
+ * Batches multiple actions together and shows feedback when all actions have
5
+ * completed.
6
+ *
7
+ * By default function actions are automatically batched. You can use this
8
+ * component to split function actions into multiple batches with separate
9
+ * feedback.
10
+ */
11
+ export declare const ActionBatch: FC<ActionBatchProps>;
12
+ export default ActionBatch;
13
+ //# sourceMappingURL=ActionBatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionBatch.d.ts","sourceRoot":"","sources":["../../../../src/components/Action/ActionBatch.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAI5C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export { Action } from './Action';
2
2
  export { MutedActionError } from './MutedActionError';
3
+ export { ActionBatch } from './ActionBatch';
3
4
  export * from './types';
4
5
  export { default } from './Action';
5
6
  export { useAriaAnnounceSuspense } from './lib/ariaLive';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Action/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Action/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -22,7 +22,7 @@ export declare class ActionModel {
22
22
  static useNew(actionProps: ActionProps, init?: Partial<InitObject>): ActionModel;
23
23
  static use(): ActionModel;
24
24
  static useConfirmationAction(): ActionModel;
25
- getOverlayController(component: FlowComponentName): OverlayController | undefined;
25
+ getOverlayController(from: FlowComponentName | OverlayController): OverlayController | undefined;
26
26
  execute: (...args: unknown[]) => void;
27
27
  }
28
28
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ActionModel.d.ts","sourceRoot":"","sources":["../../../../../src/components/Action/models/ActionModel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAGrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,UAAU,UAAU;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,2BAA2B,EAAE,iBAAiB,CAAC;IAC/C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,qBAAa,WAAW;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAClC,SAAgB,WAAW,EAAE,WAAW,CAAC;IACzC,SAAgB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3C,SAAgB,2BAA2B,EAAE,iBAAiB,CAAC;IAC/D,SAAgB,cAAc,EAAE,cAAc,CAAC;IAE/C,OAAO;WAkBO,MAAM,CAClB,WAAW,EAAE,WAAW,EACxB,IAAI,GAAE,OAAO,CAAC,UAAU,CAAM,GAC7B,WAAW;WAiBA,GAAG,IAAI,WAAW;WAOlB,qBAAqB,IAAI,WAAW;IAoB3C,oBAAoB,CACzB,SAAS,EAAE,iBAAiB,GAC3B,iBAAiB,GAAG,SAAS;IAkBzB,OAAO,GAAI,GAAG,MAAM,OAAO,EAAE,KAAG,IAAI,CAEzC;CACH"}
1
+ {"version":3,"file":"ActionModel.d.ts","sourceRoot":"","sources":["../../../../../src/components/Action/models/ActionModel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAGrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,UAAU,UAAU;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,2BAA2B,EAAE,iBAAiB,CAAC;IAC/C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,qBAAa,WAAW;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAClC,SAAgB,WAAW,EAAE,WAAW,CAAC;IACzC,SAAgB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3C,SAAgB,2BAA2B,EAAE,iBAAiB,CAAC;IAC/D,SAAgB,cAAc,EAAE,cAAc,CAAC;IAE/C,OAAO;WAkBO,MAAM,CAClB,WAAW,EAAE,WAAW,EACxB,IAAI,GAAE,OAAO,CAAC,UAAU,CAAM,GAC7B,WAAW;WAiBA,GAAG,IAAI,WAAW;WAOlB,qBAAqB,IAAI,WAAW;IAoB3C,oBAAoB,CACzB,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,GAC1C,iBAAiB,GAAG,SAAS;IAyBzB,OAAO,GAAI,GAAG,MAAM,OAAO,EAAE,KAAG,IAAI,CAEzC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"getExecutionFunction.d.ts","sourceRoot":"","sources":["../../../../../src/components/Action/models/getExecutionFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAQpD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CA4BlE"}
1
+ {"version":3,"file":"getExecutionFunction.d.ts","sourceRoot":"","sources":["../../../../../src/components/Action/models/getExecutionFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAMpD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAgClE"}
@@ -10,6 +10,9 @@ export interface ActionProps extends PropsWithChildren, FlowComponentProps {
10
10
  closeOverlay?: FlowComponentName | OverlayController;
11
11
  openOverlay?: FlowComponentName | OverlayController;
12
12
  toggleOverlay?: FlowComponentName | OverlayController;
13
+ closeModal?: boolean;
14
+ openModal?: boolean;
15
+ toggleModal?: boolean;
13
16
  break?: boolean;
14
17
  skip?: number | boolean;
15
18
  showFeedback?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/Action/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAEvD,MAAM,WAAW,WAAY,SAAQ,iBAAiB,EAAE,kBAAkB;IACxE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IACrD,WAAW,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IACpD,aAAa,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IACtD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/Action/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAEvD,MAAM,WAAW,WAAY,SAAQ,iBAAiB,EAAE,kBAAkB;IACxE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IACrD,WAAW,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IACpD,aAAa,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Modal.browser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.browser.test.d.ts","sourceRoot":"","sources":["../../../../src/components/Modal/Modal.browser.test.tsx"],"names":[],"mappings":""}
@@ -1,8 +1,10 @@
1
1
  import { PropsWithChildren } from 'react';
2
2
  import { OverlayController } from '../../lib/controller/overlay';
3
3
  import { FlowComponentProps } from '../../lib/componentFactory/flowComponent';
4
+ import { OverlayProps } from '../Overlay/Overlay';
4
5
  import { PropsWithClassName } from '../../lib/types/props';
5
- export interface ModalProps extends PropsWithChildren, FlowComponentProps, PropsWithClassName {
6
+ type SupportedOverlayProps = Pick<OverlayProps, "isOpen" | "isDefaultOpen" | "onOpen" | "onClose" | "onOpenChange">;
7
+ export interface ModalProps extends PropsWithChildren, FlowComponentProps, PropsWithClassName, SupportedOverlayProps {
6
8
  /** The size of the modal. @default "s" */
7
9
  size?: "s" | "m" | "l";
8
10
  /** Whether the modal should be displayed as an off canvas. */
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,iBAAiB,EAAkB,MAAM,OAAO,CAAC;AAQzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAK/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAM5D,MAAM,WAAW,UACf,SAAQ,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB;IACjE,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;CACzB;AAED,eAAO,MAAM,KAAK,+FAsFhB,CAAC;AAEH,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,iBAAiB,EAAkB,MAAM,OAAO,CAAC;AAQzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,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;AAM5D,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;CACzB;AAED,eAAO,MAAM,KAAK,+FAkFhB,CAAC;AAEH,eAAe,KAAK,CAAC"}
@@ -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,CA+C5B,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,KAmC5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAoBzB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAEpB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAEvB,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,KAEtC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAG7B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAkCtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAkC/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAqC5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAqC5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAiE7B,CAAC;AAUF,eAAO,MAAM,YAAY,EAAE,KAa1B,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;AAoBzD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CA4C5B,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,KAmC5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAoBzB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAEpB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAEvB,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,KAEtC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAG7B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAkCtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAkC/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAqC5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAqC5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAiE7B,CAAC;AAUF,eAAO,MAAM,YAAY,EAAE,KAU1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EdgeCases.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/stories/EdgeCases.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAA0B,MAAM,UAAU,CAAC;AAelD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CAG5B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AAEpC,eAAO,MAAM,WAAW,EAAE,KAkCzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAmClC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAoCxB,CAAC"}
1
+ {"version":3,"file":"EdgeCases.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/stories/EdgeCases.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAA0B,MAAM,UAAU,CAAC;AAclD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CAG5B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AAEpC,eAAO,MAAM,WAAW,EAAE,KA+BzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KA+BlC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KA+BxB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { FC, PropsWithChildren, Ref } from 'react';
2
2
  import { OverlayController } from '../../lib/controller';
3
3
  import { PropsWithClassName } from '../../lib/types/props';
4
+ import { OverlayCloseHandler, OverlayOpenHandler, OverlayOpenStateHandler } from '../../lib/controller/overlay/OverlayController';
4
5
  export interface OverlayProps extends PropsWithChildren, PropsWithClassName {
5
6
  ref?: Ref<HTMLDivElement>;
6
7
  /** The controller to control the overlay state. */
@@ -10,6 +11,10 @@ export interface OverlayProps extends PropsWithChildren, PropsWithClassName {
10
11
  /** Whether the overlay is a modal or a light box. */
11
12
  overlayType?: "Modal" | "LightBox";
12
13
  isOpen?: boolean;
14
+ isDefaultOpen?: boolean;
15
+ onOpen?: OverlayOpenHandler;
16
+ onClose?: OverlayCloseHandler;
17
+ onOpenChange?: OverlayOpenStateHandler;
13
18
  }
14
19
  export declare const Overlay: FC<OverlayProps>;
15
20
  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;AAG5D,MAAM,WAAW,YAAa,SAAQ,iBAAiB,EAAE,kBAAkB;IACzE,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;CAClB;AAED,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,YAAY,CAkCpC,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;AAEpD,MAAM,WAAW,YAAa,SAAQ,iBAAiB,EAAE,kBAAkB;IACzE,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,CA0CpC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export * from '../components/Icon/components/icons';
2
- export { Action, type ActionFn, type ActionProps, BrowserOnly, type BrowserOnlyProps, CountryOptions, type CountryOptionsProps, LightBox, type LightBoxProps, LightBoxTrigger, type LightBoxTriggerProps, List, type ListProps, ListItemView, type ListItemViewProps, Modal, type ModalProps, ModalTrigger, type ModalTriggerProps, Popover, type PopoverProps, PopoverTrigger, type PopoverTriggerProps, SettingsProvider, typedList, NotificationProvider, type NotificationProviderProps, Wrap, type WrapProps, } from '../components/public';
2
+ export { Action, ActionBatch, type ActionFn, type ActionProps, BrowserOnly, type BrowserOnlyProps, CountryOptions, type CountryOptionsProps, LightBox, type LightBoxProps, LightBoxTrigger, type LightBoxTriggerProps, List, type ListProps, ListItemView, type ListItemViewProps, Modal, type ModalProps, ModalTrigger, type ModalTriggerProps, Popover, type PopoverProps, PopoverTrigger, type PopoverTriggerProps, SettingsProvider, typedList, NotificationProvider, type NotificationProviderProps, Wrap, type WrapProps, } from '../components/public';
3
3
  export * from '../lib/controller/public';
4
4
  export * from '../lib/hooks/public';
5
5
  //# sourceMappingURL=flr-universal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flr-universal.d.ts","sourceRoot":"","sources":["../../../src/index/flr-universal.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AAEnD,OAAO,EACL,MAAM,EACN,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,WAAW,EACX,KAAK,gBAAgB,EACrB,cAAc,EACd,KAAK,mBAAmB,EACxB,QAAQ,EACR,KAAK,aAAa,EAClB,eAAe,EACf,KAAK,oBAAoB,EACzB,IAAI,EACJ,KAAK,SAAS,EACd,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,EACL,KAAK,UAAU,EACf,YAAY,EACZ,KAAK,iBAAiB,EACtB,OAAO,EACP,KAAK,YAAY,EACjB,cAAc,EACd,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,SAAS,EACT,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,IAAI,EACJ,KAAK,SAAS,GACf,MAAM,qBAAqB,CAAC;AAE7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"flr-universal.d.ts","sourceRoot":"","sources":["../../../src/index/flr-universal.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AAEnD,OAAO,EACL,MAAM,EACN,WAAW,EACX,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,WAAW,EACX,KAAK,gBAAgB,EACrB,cAAc,EACd,KAAK,mBAAmB,EACxB,QAAQ,EACR,KAAK,aAAa,EAClB,eAAe,EACf,KAAK,oBAAoB,EACzB,IAAI,EACJ,KAAK,SAAS,EACd,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,EACL,KAAK,UAAU,EACf,YAAY,EACZ,KAAK,iBAAiB,EACtB,OAAO,EACP,KAAK,YAAY,EACjB,cAAc,EACd,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,SAAS,EACT,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,IAAI,EACJ,KAAK,SAAS,GACf,MAAM,qBAAqB,CAAC;AAE7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC"}
@@ -1,20 +1,32 @@
1
- type OpenStateHandler = () => void;
1
+ export type OverlayOpenHandler = () => unknown;
2
+ export type OverlayCloseHandler = () => unknown;
3
+ export type OverlayOpenStateHandler = (isOpen: boolean) => unknown;
2
4
  type DisposerFn = () => void;
3
5
  export interface OverlayControllerOptions {
4
6
  isDefaultOpen?: boolean;
5
- onOpen?: OpenStateHandler;
6
- onClose?: OpenStateHandler;
7
+ onOpen?: OverlayOpenHandler;
8
+ onClose?: OverlayCloseHandler;
9
+ onOpenChange?: OverlayOpenStateHandler;
7
10
  }
8
11
  export declare class OverlayController {
9
12
  isOpen: boolean;
10
13
  private onOpenHandlers;
11
14
  private onCloseHandlers;
15
+ private onOpenChangeHandlers;
12
16
  constructor(options?: OverlayControllerOptions);
13
17
  static useNew(options?: OverlayControllerOptions): OverlayController;
14
- addOnOpen(handler: OpenStateHandler): DisposerFn;
15
- addOnClose(handler: OpenStateHandler): DisposerFn;
18
+ private addOpenStateHandler;
19
+ addOnOpen(handler: OverlayOpenHandler): DisposerFn;
20
+ addOnClose(handler: OverlayCloseHandler): DisposerFn;
21
+ addOnOpenChange(handler: OverlayOpenStateHandler): DisposerFn;
22
+ private useOnHandler;
23
+ useOnOpen(handler?: OverlayOpenHandler): void;
24
+ useOnClose(handler?: OverlayCloseHandler): void;
25
+ useOnOpenChange(handler?: OverlayOpenStateHandler): void;
26
+ private executeHandlers;
16
27
  private executeOnClose;
17
28
  private executeOnOpen;
29
+ private executeOnOpenChange;
18
30
  open(): void;
19
31
  close(): void;
20
32
  toggle(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayController.d.ts","sourceRoot":"","sources":["../../../../../src/lib/controller/overlay/OverlayController.ts"],"names":[],"mappings":"AAIA,KAAK,gBAAgB,GAAG,MAAM,IAAI,CAAC;AACnC,KAAK,UAAU,GAAG,MAAM,IAAI,CAAC;AAE7B,MAAM,WAAW,wBAAwB;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,qBAAa,iBAAiB;IACrB,MAAM,UAAS;IACtB,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,eAAe,CAA+B;gBAEnC,OAAO,CAAC,EAAE,wBAAwB;WAkBvC,MAAM,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,iBAAiB;IAIpE,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU;IAOhD,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU;IAOxD,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAId,IAAI,IAAI,IAAI;IAQZ,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,IAAI;IAUd,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAU1B,SAAS,IAAI,OAAO;CAG5B"}
1
+ {"version":3,"file":"OverlayController.d.ts","sourceRoot":"","sources":["../../../../../src/lib/controller/overlay/OverlayController.ts"],"names":[],"mappings":"AAKA,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,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;CACxC;AAED,qBAAa,iBAAiB;IACrB,MAAM,UAAS;IACtB,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,oBAAoB,CAAsC;gBAE/C,OAAO,CAAC,EAAE,wBAAwB;WAqBvC,MAAM,CAClB,OAAO,GAAE,wBAA6B,GACrC,iBAAiB;IAIpB,OAAO,CAAC,mBAAmB;IAUpB,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU;IAIlD,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,UAAU;IAIpD,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,UAAU;IAIpE,OAAO,CAAC,YAAY;IAUb,SAAS,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAI7C,UAAU,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAI/C,eAAe,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,IAAI;IAI/D,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,mBAAmB;IAIpB,IAAI,IAAI,IAAI;IAIZ,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAoB1B,SAAS;CAGjB"}
@@ -1,3 +1,4 @@
1
1
  export { OverlayController } from './OverlayController';
2
- export { useOverlayController } from './useOverlayController';
2
+ export { useOverlayController, type UseOverlayControllerOptions, } from './useOverlayController';
3
+ export { useModalController } from './useModalController';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/controller/overlay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/controller/overlay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC"}