@mittwald/flow-react-components 0.2.0-alpha.660 → 0.2.0-alpha.662

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 (133) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/assets/doc-properties.json +25395 -24790
  3. package/dist/css/all.css +1 -1
  4. package/dist/js/_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs +6 -0
  5. package/dist/js/_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs.map +1 -1
  6. package/dist/js/components/src/components/CartesianChart/CartesianChart.mjs +4 -2
  7. package/dist/js/components/src/components/CartesianChart/CartesianChart.mjs.map +1 -1
  8. package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/ChartTooltip.mjs +20 -14
  9. package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/ChartTooltip.mjs.map +1 -1
  10. package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/TooltipContent.mjs +22 -20
  11. package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/TooltipContent.mjs.map +1 -1
  12. package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/TooltipLegendItem.mjs +26 -0
  13. package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/TooltipLegendItem.mjs.map +1 -0
  14. package/dist/js/components/src/components/List/components/Header/Header.mjs +8 -8
  15. package/dist/js/components/src/components/List/components/Header/Header.mjs.map +1 -1
  16. package/dist/js/components/src/components/List/components/Header/Header.module.css.mjs +5 -5
  17. package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs +114 -0
  18. package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs.map +1 -0
  19. package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordion.mjs +26 -0
  20. package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordion.mjs.map +1 -0
  21. package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/SortingAccordion.mjs +57 -0
  22. package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/SortingAccordion.mjs.map +1 -0
  23. package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.mjs +50 -0
  24. package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.mjs.map +1 -0
  25. package/dist/js/components/src/components/List/components/Header/components/{Filters/FilterMenu.mjs → FilterContextMenu/FilterContextMenu.mjs} +4 -4
  26. package/dist/js/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenu.mjs.map +1 -0
  27. package/dist/js/components/src/components/List/components/Header/components/{Filters/FilterMenuList.mjs → FilterContextMenu/FilterContextMenus.mjs} +5 -5
  28. package/dist/js/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.mjs.map +1 -0
  29. package/dist/js/components/src/components/List/components/Header/components/FilterContextMenu/FilterMenuItem.mjs.map +1 -0
  30. package/dist/js/components/src/components/List/components/Header/components/{Settings/SortingMenu.mjs → SortingContextMenu/SortingContextMenu.mjs} +4 -4
  31. package/dist/js/components/src/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.mjs.map +1 -0
  32. package/dist/js/components/src/components/List/components/Header/components/SortingContextMenu/SortingMenuItem.mjs.map +1 -0
  33. package/dist/js/components/src/components/List/components/Header/components/{Settings/ViewModeMenu.mjs → ViewModeContextMenu/ViewModeContextMenu.mjs} +4 -4
  34. package/dist/js/components/src/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.mjs.map +1 -0
  35. package/dist/js/components/src/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem.mjs.map +1 -0
  36. package/dist/js/components/src/components/List/model/filter/Filter.mjs +2 -0
  37. package/dist/js/components/src/components/List/model/filter/Filter.mjs.map +1 -1
  38. package/dist/js/components/src/integrations/react-hook-form/components/Form/Form.mjs +18 -2
  39. package/dist/js/components/src/integrations/react-hook-form/components/Form/Form.mjs.map +1 -1
  40. package/dist/js/components/src/integrations/react-hook-form/components/FormContextProvider/FormContextProvider.mjs +9 -2
  41. package/dist/js/components/src/integrations/react-hook-form/components/FormContextProvider/FormContextProvider.mjs.map +1 -1
  42. package/dist/js/components/src/integrations/react-hook-form/components/FormContextProvider/useFormSubmitAction.mjs +4 -3
  43. package/dist/js/components/src/integrations/react-hook-form/components/FormContextProvider/useFormSubmitAction.mjs.map +1 -1
  44. package/dist/js/components/src/views/AccordionView.mjs +15 -0
  45. package/dist/js/components/src/views/AccordionView.mjs.map +1 -0
  46. package/dist/js/components/src/views/ActionGroupView.mjs +15 -0
  47. package/dist/js/components/src/views/ActionGroupView.mjs.map +1 -0
  48. package/dist/js/components/src/views/CheckboxGroupView.mjs +15 -0
  49. package/dist/js/components/src/views/CheckboxGroupView.mjs.map +1 -0
  50. package/dist/js/components/src/views/CheckboxView.mjs +15 -0
  51. package/dist/js/components/src/views/CheckboxView.mjs.map +1 -0
  52. package/dist/js/components/src/views/ContentView.mjs +15 -0
  53. package/dist/js/components/src/views/ContentView.mjs.map +1 -0
  54. package/dist/js/components/src/views/RadioGroupView.mjs +15 -0
  55. package/dist/js/components/src/views/RadioGroupView.mjs.map +1 -0
  56. package/dist/js/components/src/views/RadioView.mjs +15 -0
  57. package/dist/js/components/src/views/RadioView.mjs.map +1 -0
  58. package/dist/js/components/src/views/SectionView.mjs +15 -0
  59. package/dist/js/components/src/views/SectionView.mjs.map +1 -0
  60. package/dist/js/flr-universal.mjs +4 -2
  61. package/dist/js/flr-universal.mjs.map +1 -1
  62. package/dist/types/components/CartesianChart/components/ChartTooltip/ChartTooltip.d.ts +5 -4
  63. package/dist/types/components/CartesianChart/components/ChartTooltip/ChartTooltip.d.ts.map +1 -1
  64. package/dist/types/components/CartesianChart/components/ChartTooltip/TooltipContent.d.ts +0 -6
  65. package/dist/types/components/CartesianChart/components/ChartTooltip/TooltipContent.d.ts.map +1 -1
  66. package/dist/types/components/CartesianChart/components/ChartTooltip/TooltipLegendItem.d.ts +2 -0
  67. package/dist/types/components/CartesianChart/components/ChartTooltip/TooltipLegendItem.d.ts.map +1 -0
  68. package/dist/types/components/CartesianChart/stories/Default.stories.d.ts.map +1 -1
  69. package/dist/types/components/List/components/Header/Header.d.ts.map +1 -1
  70. package/dist/types/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.d.ts +3 -0
  71. package/dist/types/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.d.ts.map +1 -0
  72. package/dist/types/components/List/components/Header/components/{Filters/FilterMenu.d.ts → AllFiltersModal/FilterAccordion.d.ts} +2 -2
  73. package/dist/types/components/List/components/Header/components/AllFiltersModal/FilterAccordion.d.ts.map +1 -0
  74. package/dist/types/components/List/components/Header/components/AllFiltersModal/SortingAccordion.d.ts +3 -0
  75. package/dist/types/components/List/components/Header/components/AllFiltersModal/SortingAccordion.d.ts.map +1 -0
  76. package/dist/types/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.d.ts +3 -0
  77. package/dist/types/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.d.ts.map +1 -0
  78. package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenu.d.ts +8 -0
  79. package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenu.d.ts.map +1 -0
  80. package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.d.ts +3 -0
  81. package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.d.ts.map +1 -0
  82. package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterMenuItem.d.ts.map +1 -0
  83. package/dist/types/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.d.ts +3 -0
  84. package/dist/types/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.d.ts.map +1 -0
  85. package/dist/types/components/List/components/Header/components/SortingContextMenu/SortingMenuItem.d.ts.map +1 -0
  86. package/dist/types/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.d.ts +3 -0
  87. package/dist/types/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.d.ts.map +1 -0
  88. package/dist/types/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem.d.ts.map +1 -0
  89. package/dist/types/components/List/model/filter/Filter.d.ts +1 -0
  90. package/dist/types/components/List/model/filter/Filter.d.ts.map +1 -1
  91. package/dist/types/components/List/model/filter/types.d.ts +1 -0
  92. package/dist/types/components/List/model/filter/types.d.ts.map +1 -1
  93. package/dist/types/components/List/stories/Default.stories.d.ts +1 -0
  94. package/dist/types/components/List/stories/Default.stories.d.ts.map +1 -1
  95. package/dist/types/integrations/react-hook-form/components/Form/Form.d.ts +1 -0
  96. package/dist/types/integrations/react-hook-form/components/Form/Form.d.ts.map +1 -1
  97. package/dist/types/integrations/react-hook-form/components/Form/stories/Form.stories.d.ts.map +1 -1
  98. package/dist/types/integrations/react-hook-form/components/FormContextProvider/FormContextProvider.d.ts +2 -0
  99. package/dist/types/integrations/react-hook-form/components/FormContextProvider/FormContextProvider.d.ts.map +1 -1
  100. package/dist/types/integrations/react-hook-form/components/FormContextProvider/useFormSubmitAction.d.ts +2 -0
  101. package/dist/types/integrations/react-hook-form/components/FormContextProvider/useFormSubmitAction.d.ts.map +1 -1
  102. package/package.json +9 -10
  103. package/dist/js/components/src/components/List/components/Header/components/Filters/CombinedFilterMenu.mjs +0 -106
  104. package/dist/js/components/src/components/List/components/Header/components/Filters/CombinedFilterMenu.mjs.map +0 -1
  105. package/dist/js/components/src/components/List/components/Header/components/Filters/FilterMenu.mjs.map +0 -1
  106. package/dist/js/components/src/components/List/components/Header/components/Filters/FilterMenuItem.mjs.map +0 -1
  107. package/dist/js/components/src/components/List/components/Header/components/Filters/FilterMenuList.mjs.map +0 -1
  108. package/dist/js/components/src/components/List/components/Header/components/Settings/SortingMenu.mjs.map +0 -1
  109. package/dist/js/components/src/components/List/components/Header/components/Settings/SortingMenuItem.mjs.map +0 -1
  110. package/dist/js/components/src/components/List/components/Header/components/Settings/ViewModeMenu.mjs.map +0 -1
  111. package/dist/js/components/src/components/List/components/Header/components/Settings/ViewModeMenuItem.mjs.map +0 -1
  112. package/dist/js/components/src/views/SeparatorView.mjs +0 -15
  113. package/dist/js/components/src/views/SeparatorView.mjs.map +0 -1
  114. package/dist/types/components/List/components/Header/components/Filters/CombinedFilterMenu.d.ts +0 -3
  115. package/dist/types/components/List/components/Header/components/Filters/CombinedFilterMenu.d.ts.map +0 -1
  116. package/dist/types/components/List/components/Header/components/Filters/FilterMenu.d.ts.map +0 -1
  117. package/dist/types/components/List/components/Header/components/Filters/FilterMenuItem.d.ts.map +0 -1
  118. package/dist/types/components/List/components/Header/components/Filters/FilterMenuList.d.ts +0 -3
  119. package/dist/types/components/List/components/Header/components/Filters/FilterMenuList.d.ts.map +0 -1
  120. package/dist/types/components/List/components/Header/components/Settings/SortingMenu.d.ts +0 -3
  121. package/dist/types/components/List/components/Header/components/Settings/SortingMenu.d.ts.map +0 -1
  122. package/dist/types/components/List/components/Header/components/Settings/SortingMenuItem.d.ts.map +0 -1
  123. package/dist/types/components/List/components/Header/components/Settings/ViewModeMenu.d.ts +0 -3
  124. package/dist/types/components/List/components/Header/components/Settings/ViewModeMenu.d.ts.map +0 -1
  125. package/dist/types/components/List/components/Header/components/Settings/ViewModeMenuItem.d.ts.map +0 -1
  126. package/dist/types/components/Modal/view.d.ts +0 -8
  127. package/dist/types/components/Modal/view.d.ts.map +0 -1
  128. /package/dist/js/components/src/components/List/components/Header/components/{Filters → FilterContextMenu}/FilterMenuItem.mjs +0 -0
  129. /package/dist/js/components/src/components/List/components/Header/components/{Settings → SortingContextMenu}/SortingMenuItem.mjs +0 -0
  130. /package/dist/js/components/src/components/List/components/Header/components/{Settings → ViewModeContextMenu}/ViewModeMenuItem.mjs +0 -0
  131. /package/dist/types/components/List/components/Header/components/{Filters → FilterContextMenu}/FilterMenuItem.d.ts +0 -0
  132. /package/dist/types/components/List/components/Header/components/{Settings → SortingContextMenu}/SortingMenuItem.d.ts +0 -0
  133. /package/dist/types/components/List/components/Header/components/{Settings → ViewModeContextMenu}/ViewModeMenuItem.d.ts +0 -0
@@ -0,0 +1,50 @@
1
+ "use client"
2
+ /* */
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+ import 'react';
5
+ import AccordionView from '../../../../../../views/AccordionView.mjs';
6
+ import HeadingView from '../../../../../../views/HeadingView.mjs';
7
+ import ContentView from '../../../../../../views/ContentView.mjs';
8
+ import RadioGroupView from '../../../../../../views/RadioGroupView.mjs';
9
+ import RadioView from '../../../../../../views/RadioView.mjs';
10
+ import { useAvailableViewModes } from '../../lib.mjs';
11
+ import 'invariant';
12
+ import 'react-aria-components';
13
+ import '../../../../../IllustratedMessage/IllustratedMessage.mjs';
14
+ import '@tabler/icons-react';
15
+ import '../../../../../Icon/Icon.mjs';
16
+ import '../../../../../../views/IconView.mjs';
17
+ import '../../../../../Heading/Heading.mjs';
18
+ import '../../../../../Text/Text.mjs';
19
+ import locales from '../../../../../../../../_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs';
20
+ import { useLocalizedStringFormatter } from 'react-aria';
21
+ import 'clsx';
22
+ import '@mittwald/react-tunnel';
23
+ import '../../../../../../views/ListItemViewContentView.mjs';
24
+ import '../../../../../../lib/propsContext/propsContext.mjs';
25
+ import '../../../../../../lib/propsContext/components/PropsContextProvider.mjs';
26
+ import '../../../../../../views/ButtonView.mjs';
27
+ import '../../../../../../views/ContextMenuTriggerView.mjs';
28
+ import '../../../../../ColumnLayout/ColumnLayout.mjs';
29
+ import '../../../ListSummary/ListSummary.mjs';
30
+ import { useList } from '../../../../hooks/useList.mjs';
31
+ import '../../../../listContext.mjs';
32
+ import 'mobx';
33
+ import '../../../../List.mjs';
34
+
35
+ const ViewModeAccordion = () => {
36
+ const list = useList();
37
+ const stringFormatter = useLocalizedStringFormatter(locales);
38
+ const availableViewModes = useAvailableViewModes();
39
+ const selectedViewMode = list.viewMode;
40
+ if (availableViewModes.length <= 1) {
41
+ return null;
42
+ }
43
+ return /* @__PURE__ */ jsxs(AccordionView, { children: [
44
+ /* @__PURE__ */ jsx(HeadingView, { children: stringFormatter.format("list.settings.viewMode") }),
45
+ /* @__PURE__ */ jsx(ContentView, { children: /* @__PURE__ */ jsx(RadioGroupView, { value: selectedViewMode, m: [1, 1], children: availableViewModes.map((v) => /* @__PURE__ */ jsx(RadioView, { value: v, onPress: () => list.setViewMode(v), children: stringFormatter.format(`list.settings.viewMode.${v}`) }, v)) }) })
46
+ ] });
47
+ };
48
+
49
+ export { ViewModeAccordion };
50
+ //# sourceMappingURL=ViewModeAccordion.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewModeAccordion.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.tsx"],"sourcesContent":["import React, { type FC } from \"react\";\nimport AccordionView from \"@/views/AccordionView\";\nimport HeadingView from \"@/views/HeadingView\";\nimport ContentView from \"@/views/ContentView\";\nimport RadioGroupView from \"@/views/RadioGroupView\";\nimport RadioView from \"@/views/RadioView\";\nimport { useAvailableViewModes } from \"@/components/List/components/Header/lib\";\nimport { useList } from \"@/components/List\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport locales from \"../../../../locales/*.locale.json\";\n\nexport const ViewModeAccordion: FC = () => {\n const list = useList();\n const stringFormatter = useLocalizedStringFormatter(locales);\n\n const availableViewModes = useAvailableViewModes();\n const selectedViewMode = list.viewMode;\n\n if (availableViewModes.length <= 1) {\n return null;\n }\n\n return (\n <AccordionView>\n <HeadingView>\n {stringFormatter.format(\"list.settings.viewMode\")}\n </HeadingView>\n <ContentView>\n <RadioGroupView value={selectedViewMode} m={[1, 1]}>\n {availableViewModes.map((v) => (\n <RadioView key={v} value={v} onPress={() => list.setViewMode(v)}>\n {stringFormatter.format(`list.settings.viewMode.${v}`)}\n </RadioView>\n ))}\n </RadioGroupView>\n </ContentView>\n </AccordionView>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAM,oBAAwB,MAAM;AACzC,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,eAAA,GAAkB,4BAA4B,OAAO,CAAA;AAE3D,EAAA,MAAM,qBAAqB,qBAAA,EAAsB;AACjD,EAAA,MAAM,mBAAmB,IAAA,CAAK,QAAA;AAE9B,EAAA,IAAI,kBAAA,CAAmB,UAAU,CAAA,EAAG;AAClC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,4BACG,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EACE,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,wBAAwB,CAAA,EAClD,CAAA;AAAA,oBACA,GAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,OAAO,gBAAA,EAAkB,CAAA,EAAG,CAAC,CAAA,EAAG,CAAC,CAAA,EAC9C,QAAA,EAAA,kBAAA,CAAmB,GAAA,CAAI,CAAC,sBACvB,GAAA,CAAC,SAAA,EAAA,EAAkB,KAAA,EAAO,CAAA,EAAG,OAAA,EAAS,MAAM,IAAA,CAAK,WAAA,CAAY,CAAC,CAAA,EAC3D,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,CAAA,uBAAA,EAA0B,CAAC,CAAA,CAAE,CAAA,EAAA,EADvC,CAEhB,CACD,GACH,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -13,7 +13,7 @@ import headerStyles from '../../Header.module.css.mjs';
13
13
  import ContextMenuTriggerView from '../../../../../../views/ContextMenuTriggerView.mjs';
14
14
  import ContextMenuView from '../../../../../../views/ContextMenuView.mjs';
15
15
 
16
- const FilterMenu = (props) => {
16
+ const FilterContextMenu = (props) => {
17
17
  const { filter } = props;
18
18
  const { values, mode, name, property } = filter;
19
19
  const filterItems = values.map((v) => /* @__PURE__ */ jsx(FilterMenuItem, { filterValue: v }, v.id));
@@ -22,7 +22,7 @@ const FilterMenu = (props) => {
22
22
  /* @__PURE__ */ jsxs(
23
23
  ButtonView,
24
24
  {
25
- className: headerStyles.desktop,
25
+ className: headerStyles.hideOnMobile,
26
26
  variant: "outline",
27
27
  color: "secondary",
28
28
  children: [
@@ -42,5 +42,5 @@ const FilterMenu = (props) => {
42
42
  ] });
43
43
  };
44
44
 
45
- export { FilterMenu };
46
- //# sourceMappingURL=FilterMenu.mjs.map
45
+ export { FilterContextMenu };
46
+ //# sourceMappingURL=FilterContextMenu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterContextMenu.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/FilterContextMenu/FilterContextMenu.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport type { Filter } from \"@/components/List/model/filter/Filter\";\nimport { IconFilter } from \"@/components/Icon/components/icons\";\nimport TextView from \"@/views/TextView\";\nimport ButtonView from \"@/views/ButtonView\";\nimport { FilterMenuItem } from \"@/components/List/components/Header/components/FilterContextMenu/FilterMenuItem\";\nimport styles from \"@/components/List/components/Header/Header.module.css\";\nimport ContextMenuTriggerView from \"@/views/ContextMenuTriggerView\";\nimport ContextMenuView from \"@/views/ContextMenuView\";\n\ninterface Props {\n filter: Filter<never, never, never>;\n}\n\nexport const FilterContextMenu: FC<Props> = (props) => {\n const { filter } = props;\n\n const { values, mode, name, property } = filter;\n\n const filterItems = values.map((v) => (\n <FilterMenuItem filterValue={v} key={v.id} />\n ));\n\n const activeFilterKeys = values.filter((v) => v.isActive).map((v) => v.id);\n\n return (\n <ContextMenuTriggerView>\n <ButtonView\n className={styles.hideOnMobile}\n variant=\"outline\"\n color=\"secondary\"\n >\n <TextView>{name ?? property}</TextView>\n <IconFilter />\n </ButtonView>\n <ContextMenuView\n selectionMode={mode === \"one\" ? \"single\" : \"multiple\"}\n selectedKeys={activeFilterKeys}\n >\n {filterItems}\n </ContextMenuView>\n </ContextMenuTriggerView>\n );\n};\n"],"names":["styles"],"mappings":";;;;;;;;;;;;;AAcO,MAAM,iBAAA,GAA+B,CAAC,KAAA,KAAU;AACrD,EAAA,MAAM,EAAE,QAAO,GAAI,KAAA;AAEnB,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,UAAS,GAAI,MAAA;AAEzC,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,qBAC9B,GAAA,CAAC,cAAA,EAAA,EAAe,WAAA,EAAa,CAAA,EAAA,EAAQ,CAAA,CAAE,EAAI,CAC5C,CAAA;AAED,EAAA,MAAM,gBAAA,GAAmB,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,EAAE,CAAA;AAEzE,EAAA,4BACG,sBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,WAAWA,YAAA,CAAO,YAAA;AAAA,QAClB,OAAA,EAAQ,SAAA;AAAA,QACR,KAAA,EAAM,WAAA;AAAA,QAEN,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAU,kBAAQ,QAAA,EAAS,CAAA;AAAA,8BAC3B,UAAA,EAAA,EAAW;AAAA;AAAA;AAAA,KACd;AAAA,oBACA,GAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAe,IAAA,KAAS,KAAA,GAAQ,QAAA,GAAW,UAAA;AAAA,QAC3C,YAAA,EAAc,gBAAA;AAAA,QAEb,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -24,12 +24,12 @@ import { useList } from '../../../../hooks/useList.mjs';
24
24
  import '../../../../listContext.mjs';
25
25
  import 'mobx';
26
26
  import '../../../../List.mjs';
27
- import { FilterMenu } from './FilterMenu.mjs';
27
+ import { FilterContextMenu } from './FilterContextMenu.mjs';
28
28
 
29
- const FilterMenuList = () => {
29
+ const FilterContextMenus = () => {
30
30
  const list = useList();
31
- return list.filters.map((filter) => /* @__PURE__ */ jsx(FilterMenu, { filter }, filter.property));
31
+ return list.filters.filter((f) => f.priority === "primary").map((filter) => /* @__PURE__ */ jsx(FilterContextMenu, { filter }, filter.property));
32
32
  };
33
33
 
34
- export { FilterMenuList };
35
- //# sourceMappingURL=FilterMenuList.mjs.map
34
+ export { FilterContextMenus };
35
+ //# sourceMappingURL=FilterContextMenus.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterContextMenus.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport { useList } from \"@/components/List\";\nimport { FilterContextMenu } from \"@/components/List/components/Header/components/FilterContextMenu/FilterContextMenu\";\n\nexport const FilterContextMenus: FC = () => {\n const list = useList();\n\n return list.filters\n .filter((f) => f.priority === \"primary\")\n .map((filter) => (\n <FilterContextMenu key={filter.property} filter={filter} />\n ));\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,MAAM,qBAAyB,MAAM;AAC1C,EAAA,MAAM,OAAO,OAAA,EAAQ;AAErB,EAAA,OAAO,KAAK,OAAA,CACT,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,QAAA,KAAa,SAAS,CAAA,CACtC,GAAA,CAAI,CAAC,MAAA,qBACJ,GAAA,CAAC,qBAAwC,MAAA,EAAA,EAAjB,MAAA,CAAO,QAA0B,CAC1D,CAAA;AACL;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterMenuItem.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/FilterContextMenu/FilterMenuItem.tsx"],"sourcesContent":["import MenuItemView from \"@/views/MenuItemView\";\nimport { type FC } from \"react\";\nimport type { FilterValue } from \"@/components/List/model/filter/FilterValue\";\n\ninterface Props {\n filterValue: FilterValue;\n}\n\nexport const FilterMenuItem: FC<Props> = (props) => {\n const { filterValue } = props;\n\n return (\n <MenuItemView\n id={filterValue.id}\n onAction={() => {\n filterValue.toggle();\n }}\n >\n {filterValue.render()}\n </MenuItemView>\n );\n};\n"],"names":[],"mappings":";;;;AAQO,MAAM,cAAA,GAA4B,CAAC,KAAA,KAAU;AAClD,EAAA,MAAM,EAAE,aAAY,GAAI,KAAA;AAExB,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,IAAI,WAAA,CAAY,EAAA;AAAA,MAChB,UAAU,MAAM;AACd,QAAA,WAAA,CAAY,MAAA,EAAO;AAAA,MACrB,CAAA;AAAA,MAEC,sBAAY,MAAA;AAAO;AAAA,GACtB;AAEJ;;;;"}
@@ -16,7 +16,7 @@ import { SortingMenuItem } from './SortingMenuItem.mjs';
16
16
  import ContextMenuTriggerView from '../../../../../../views/ContextMenuTriggerView.mjs';
17
17
  import ContextMenuView from '../../../../../../views/ContextMenuView.mjs';
18
18
 
19
- const SortingMenu = () => {
19
+ const SortingContextMenu = () => {
20
20
  const list = useList();
21
21
  const sortingItems = list.visibleSorting.map((s) => /* @__PURE__ */ jsx(SortingMenuItem, { sorting: s }, s.id));
22
22
  if (sortingItems.length === 0) {
@@ -30,7 +30,7 @@ const SortingMenu = () => {
30
30
  {
31
31
  variant: "outline",
32
32
  color: "secondary",
33
- className: headerStyles.desktop,
33
+ className: headerStyles.hideOnMobile,
34
34
  children: [
35
35
  text,
36
36
  /* @__PURE__ */ jsx(IconSorting, {})
@@ -48,5 +48,5 @@ const SortingMenu = () => {
48
48
  ] });
49
49
  };
50
50
 
51
- export { SortingMenu };
52
- //# sourceMappingURL=SortingMenu.mjs.map
51
+ export { SortingContextMenu };
52
+ //# sourceMappingURL=SortingContextMenu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortingContextMenu.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport locales from \"../../../../locales/*.locale.json\";\nimport { Translate } from \"@/lib/react/components/Translate\";\nimport TextView from \"@/views/TextView\";\nimport ButtonView from \"@/views/ButtonView\";\nimport { IconSorting } from \"@/components/Icon/components/icons\";\nimport styles from \"@/components/List/components/Header/Header.module.css\";\nimport { SortingMenuItem } from \"@/components/List/components/Header/components/SortingContextMenu/SortingMenuItem\";\nimport ContextMenuTriggerView from \"@/views/ContextMenuTriggerView\";\nimport ContextMenuView from \"@/views/ContextMenuView\";\n\nexport const SortingContextMenu: FC = () => {\n const list = useList();\n\n const sortingItems = list.visibleSorting.map((s) => (\n <SortingMenuItem sorting={s} key={s.id} />\n ));\n\n if (sortingItems.length === 0) {\n return null;\n }\n\n const labelSorting = list.visibleSorting.find((s) => s.isSorted());\n\n const text = (\n <TextView>\n {labelSorting ? (\n <>{labelSorting.name ?? labelSorting.property}</>\n ) : (\n <Translate locales={locales}>list.sorting</Translate>\n )}\n </TextView>\n );\n\n return (\n <ContextMenuTriggerView>\n <ButtonView\n variant=\"outline\"\n color=\"secondary\"\n className={styles.hideOnMobile}\n >\n {text}\n <IconSorting />\n </ButtonView>\n <ContextMenuView\n selectionMode=\"single\"\n selectedKeys={labelSorting ? [labelSorting.id] : []}\n >\n {sortingItems}\n </ContextMenuView>\n </ContextMenuTriggerView>\n );\n};\n"],"names":["styles"],"mappings":";;;;;;;;;;;;;;;;AAYO,MAAM,qBAAyB,MAAM;AAC1C,EAAA,MAAM,OAAO,OAAA,EAAQ;AAErB,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,CAAC,CAAA,qBAC5C,GAAA,CAAC,eAAA,EAAA,EAAgB,OAAA,EAAS,CAAA,EAAA,EAAQ,CAAA,CAAE,EAAI,CACzC,CAAA;AAED,EAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,YAAA,GAAe,KAAK,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,CAAA;AAEjE,EAAA,MAAM,IAAA,mBACJ,GAAA,CAAC,QAAA,EAAA,EACE,QAAA,EAAA,YAAA,mCACI,QAAA,EAAA,YAAA,CAAa,IAAA,IAAQ,YAAA,CAAa,QAAA,EAAS,CAAA,mBAE9C,GAAA,CAAC,SAAA,EAAA,EAAU,OAAA,EAAkB,0BAAY,CAAA,EAE7C,CAAA;AAGF,EAAA,4BACG,sBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,SAAA;AAAA,QACR,KAAA,EAAM,WAAA;AAAA,QACN,WAAWA,YAAA,CAAO,YAAA;AAAA,QAEjB,QAAA,EAAA;AAAA,UAAA,IAAA;AAAA,8BACA,WAAA,EAAA,EAAY;AAAA;AAAA;AAAA,KACf;AAAA,oBACA,GAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAc,QAAA;AAAA,QACd,cAAc,YAAA,GAAe,CAAC,YAAA,CAAa,EAAE,IAAI,EAAC;AAAA,QAEjD,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortingMenuItem.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/SortingContextMenu/SortingMenuItem.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport type { Sorting } from \"@/components/List/model/sorting/Sorting\";\nimport MenuItemView from \"@/views/MenuItemView\";\nimport { useList } from \"@/components/List\";\n\ninterface Props {\n sorting: Sorting<never>;\n}\n\nexport const SortingMenuItem: FC<Props> = (props) => {\n const { sorting } = props;\n\n const list = useList();\n\n return (\n <MenuItemView\n id={sorting.id}\n onAction={() => {\n list.getSorting(sorting.id).enable();\n }}\n >\n {sorting.name ?? sorting.property}\n </MenuItemView>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,MAAM,eAAA,GAA6B,CAAC,KAAA,KAAU;AACnD,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AAEpB,EAAA,MAAM,OAAO,OAAA,EAAQ;AAErB,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,IAAI,OAAA,CAAQ,EAAA;AAAA,MACZ,UAAU,MAAM;AACd,QAAA,IAAA,CAAK,UAAA,CAAW,OAAA,CAAQ,EAAE,CAAA,CAAE,MAAA,EAAO;AAAA,MACrC,CAAA;AAAA,MAEC,QAAA,EAAA,OAAA,CAAQ,QAAQ,OAAA,CAAQ;AAAA;AAAA,GAC3B;AAEJ;;;;"}
@@ -32,7 +32,7 @@ import { useAvailableViewModes } from '../../lib.mjs';
32
32
  import headerStyles from '../../Header.module.css.mjs';
33
33
  import ContextMenuView from '../../../../../../views/ContextMenuView.mjs';
34
34
 
35
- const ViewModeMenu = () => {
35
+ const ViewModeContextMenu = () => {
36
36
  const stringFormatter = useLocalizedStringFormatter(locales);
37
37
  const list = useList();
38
38
  const selectedViewMode = list.viewMode;
@@ -47,7 +47,7 @@ const ViewModeMenu = () => {
47
47
  variant: "outline",
48
48
  color: "secondary",
49
49
  "aria-label": stringFormatter.format("list.settings"),
50
- className: headerStyles.desktop,
50
+ className: headerStyles.hideOnMobile,
51
51
  children: [
52
52
  /* @__PURE__ */ jsx(TextView, { children: stringFormatter.format(`list.settings.viewMode.${selectedViewMode}`) }),
53
53
  /* @__PURE__ */ jsx(IconView, {})
@@ -58,5 +58,5 @@ const ViewModeMenu = () => {
58
58
  ] });
59
59
  };
60
60
 
61
- export { ViewModeMenu };
62
- //# sourceMappingURL=ViewModeMenu.mjs.map
61
+ export { ViewModeContextMenu };
62
+ //# sourceMappingURL=ViewModeContextMenu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewModeContextMenu.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport locales from \"../../../../locales/*.locale.json\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport { useList } from \"@/components/List\";\nimport { IconView } from \"@/components/Icon/components/icons\";\nimport ButtonView from \"@/views/ButtonView\";\nimport TextView from \"@/views/TextView\";\nimport { ViewModeMenuItem } from \"@/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem\";\nimport { useAvailableViewModes } from \"@/components/List/components/Header/lib\";\nimport styles from \"@/components/List/components/Header/Header.module.css\";\nimport ContextMenuTriggerView from \"@/views/ContextMenuTriggerView\";\nimport ContextMenuView from \"@/views/ContextMenuView\";\n\nexport const ViewModeContextMenu: FC = () => {\n const stringFormatter = useLocalizedStringFormatter(locales);\n const list = useList();\n const selectedViewMode = list.viewMode;\n\n const availableViewModes = useAvailableViewModes();\n\n if (availableViewModes.length <= 1) {\n return null;\n }\n\n return (\n <ContextMenuTriggerView>\n <ButtonView\n variant=\"outline\"\n color=\"secondary\"\n aria-label={stringFormatter.format(\"list.settings\")}\n className={styles.hideOnMobile}\n >\n <TextView>\n {stringFormatter.format(`list.settings.viewMode.${selectedViewMode}`)}\n </TextView>\n <IconView />\n </ButtonView>\n <ContextMenuView selectionMode=\"single\" selectedKeys={[selectedViewMode]}>\n {availableViewModes.map((viewMode) => (\n <ViewModeMenuItem viewMode={viewMode} key={viewMode} />\n ))}\n </ContextMenuView>\n </ContextMenuTriggerView>\n );\n};\n"],"names":["styles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,MAAM,sBAA0B,MAAM;AAC3C,EAAA,MAAM,eAAA,GAAkB,4BAA4B,OAAO,CAAA;AAC3D,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,mBAAmB,IAAA,CAAK,QAAA;AAE9B,EAAA,MAAM,qBAAqB,qBAAA,EAAsB;AAEjD,EAAA,IAAI,kBAAA,CAAmB,UAAU,CAAA,EAAG;AAClC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,4BACG,sBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,SAAA;AAAA,QACR,KAAA,EAAM,WAAA;AAAA,QACN,YAAA,EAAY,eAAA,CAAgB,MAAA,CAAO,eAAe,CAAA;AAAA,QAClD,WAAWA,YAAA,CAAO,YAAA;AAAA,QAElB,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YACE,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,CAAA,uBAAA,EAA0B,gBAAgB,EAAE,CAAA,EACtE,CAAA;AAAA,8BACC,QAAA,EAAA,EAAS;AAAA;AAAA;AAAA,KACZ;AAAA,wBACC,eAAA,EAAA,EAAgB,aAAA,EAAc,QAAA,EAAS,YAAA,EAAc,CAAC,gBAAgB,CAAA,EACpE,QAAA,EAAA,kBAAA,CAAmB,GAAA,CAAI,CAAC,QAAA,qBACvB,GAAA,CAAC,oBAAiB,QAAA,EAAA,EAAyB,QAAU,CACtD,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewModeMenuItem.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem.tsx"],"sourcesContent":["import { type FC } from \"react\";\nimport MenuItemView from \"@/views/MenuItemView\";\nimport type { ListViewMode } from \"@/components/List/model/types\";\nimport { useList } from \"@/components/List\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport locales from \"../../../../locales/*.locale.json\";\n\ninterface Props {\n viewMode: ListViewMode;\n}\n\nexport const ViewModeMenuItem: FC<Props> = (props) => {\n const { viewMode } = props;\n const list = useList();\n const stringFormatter = useLocalizedStringFormatter(locales);\n\n return (\n <MenuItemView\n id={viewMode}\n onAction={() => {\n list.setViewMode(viewMode);\n }}\n >\n {stringFormatter.format(`list.settings.viewMode.${viewMode}`)}\n </MenuItemView>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAM,gBAAA,GAA8B,CAAC,KAAA,KAAU;AACpD,EAAA,MAAM,EAAE,UAAS,GAAI,KAAA;AACrB,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,eAAA,GAAkB,4BAA4B,OAAO,CAAA;AAE3D,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,QAAA;AAAA,MACJ,UAAU,MAAM;AACd,QAAA,IAAA,CAAK,YAAY,QAAQ,CAAA;AAAA,MAC3B,CAAA;AAAA,MAEC,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,CAAA,uBAAA,EAA0B,QAAQ,CAAA,CAAE;AAAA;AAAA,GAC9D;AAEJ;;;;"}
@@ -21,6 +21,7 @@ class Filter {
21
21
  name;
22
22
  onFilterUpdateCallbacks = /* @__PURE__ */ new Set();
23
23
  defaultSelectedValues;
24
+ priority;
24
25
  constructor(list, shape) {
25
26
  this.list = list;
26
27
  this.property = shape.property;
@@ -29,6 +30,7 @@ class Filter {
29
30
  this.matcher = shape.matcher ?? equalsPropertyMatcher;
30
31
  this.renderItem = shape.renderItem ?? stringCastRenderMethod;
31
32
  this.name = shape.name;
33
+ this.priority = shape.priority ?? "primary";
32
34
  this.defaultSelectedValues = shape.defaultSelected;
33
35
  }
34
36
  getStoredSelectedIds() {
@@ -1 +1 @@
1
- {"version":3,"file":"Filter.mjs","sources":["../../../../../../../../src/components/List/model/filter/Filter.ts"],"sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnFilter,\n InitialTableState,\n} from \"@tanstack/react-table\";\nimport type List from \"@/components/List/model/List\";\nimport { getProperty } from \"dot-prop\";\nimport type {\n FilterMatcher,\n FilterMode,\n FilterShape,\n} from \"@/components/List/model/filter/types\";\nimport type {\n PropertyName,\n PropertyValueRenderMethod,\n} from \"@/components/List/model/types\";\nimport { customPropertyPrefix } from \"@/components/List/model/types\";\nimport { difference, unique } from \"remeda\";\nimport { FilterValue } from \"@/components/List/model/filter/FilterValue\";\nimport z from \"zod\";\nimport { toArray } from \"@/lib/array/toArray\";\n\nconst equalsPropertyMatcher: FilterMatcher<unknown, never, never> = (\n filterValue,\n propertyValue,\n) => filterValue === propertyValue;\n\nconst stringCastRenderMethod: PropertyValueRenderMethod<unknown> = (value) =>\n String(value);\n\nexport class Filter<T, TProp extends PropertyName<T>, TMatchValue> {\n public static readonly settingsStorageSchema = z\n .record(z.string().or(z.symbol()), z.array(z.string()))\n .optional();\n\n private _values?: FilterValue[] | undefined;\n private _valuesFromTableState?: FilterValue[];\n public readonly list: List<T>;\n public readonly property: PropertyName<T>;\n public readonly mode: FilterMode;\n public readonly matcher: FilterMatcher<T, never, never>;\n public readonly renderItem: PropertyValueRenderMethod<TMatchValue>;\n public readonly name?: string;\n private onFilterUpdateCallbacks = new Set<() => unknown>();\n private readonly defaultSelectedValues?: readonly NonNullable<TMatchValue>[];\n\n public constructor(list: List<T>, shape: FilterShape<T, TProp, TMatchValue>) {\n this.list = list;\n this.property = shape.property;\n this.mode = shape.mode ?? \"some\";\n this._values = shape.values?.map((v) => FilterValue.create(this, v));\n this.matcher = shape.matcher ?? equalsPropertyMatcher;\n this.renderItem = shape.renderItem ?? stringCastRenderMethod;\n this.name = shape.name;\n\n this.defaultSelectedValues = shape.defaultSelected;\n }\n\n private getStoredSelectedIds() {\n return this.list.getStoredFilterDefaultSettings()?.[String(this.property)];\n }\n\n public updateInitialState(initialState: InitialTableState) {\n const initialValues = this.getInitialValues();\n\n if (initialValues?.length) {\n initialState.columnFilters = [\n ...(initialState.columnFilters ?? []),\n {\n id: this.property as string,\n value: initialValues,\n },\n ];\n }\n }\n\n public updateTableColumnDef(def: ColumnDef<T>): void {\n def.enableColumnFilter = true;\n def.filterFn = this.getReactTableFilterFn();\n }\n\n private getReactTableFilterFn(): ColumnDef<T>[\"filterFn\"] {\n return (row, _, filterValue) => {\n const propertyAsString = this.property as string;\n\n const filterBy = propertyAsString.startsWith(customPropertyPrefix)\n ? row.original\n : getProperty(row.original, propertyAsString);\n\n return this.checkFilterMatches(filterBy, filterValue);\n };\n }\n\n private checkFilterMatches(\n property: unknown,\n filterValueInput: unknown,\n ): boolean {\n if (filterValueInput === null) {\n return true;\n }\n\n const predicate = (filterValue: FilterValue) =>\n this.matcher(filterValue.value as never, property as never);\n\n const toFilterValue = (something: unknown) =>\n FilterValue.create(this, something);\n\n if (this.mode === \"all\") {\n return toArray(filterValueInput).map(toFilterValue).every(predicate);\n } else if (this.mode === \"some\") {\n const filterArr = toArray(filterValueInput);\n return (\n filterArr.length === 0 || filterArr.map(toFilterValue).some(predicate)\n );\n } else if (this.mode === \"one\") {\n return predicate(toFilterValue(filterValueInput));\n }\n\n throw new Error(`Unknown filter mode '${this.mode}'`);\n }\n\n protected getTableColumnFilter(): ColumnFilter | undefined {\n return this.list.reactTable.table\n .getState()\n .columnFilters.find((f) => f.id === this.property);\n }\n\n private getTableColumn(): Column<T> {\n return this.list.reactTable.getTableColumn(this.property);\n }\n\n public getValue(): unknown {\n return this.getTableColumnFilter()?.value ?? null;\n }\n\n private getValuesFromTableState() {\n return unique(\n Array.from(this.getTableColumn().getFacetedUniqueValues().keys())\n .flatMap((v) => v)\n .filter((v) => v !== undefined && v !== null),\n ).map((v) => FilterValue.create(this, v));\n }\n\n private checkIfValueIsUnknown(value: FilterValue) {\n const isKnown = this.values.some((v) => v.id === value.id);\n return !isKnown;\n }\n\n public deleteUnknownFilterValues() {\n if (this.values === this.valuesFromTableState) {\n return;\n }\n\n for (const currentValues of this.getArrayValue()) {\n if (this.checkIfValueIsUnknown(currentValues)) {\n this.deactivateValue(currentValues);\n }\n }\n }\n\n public get values(): FilterValue[] {\n return this._values ?? this.valuesFromTableState;\n }\n\n private get valuesFromTableState(): FilterValue[] {\n if (!this._valuesFromTableState) {\n this._valuesFromTableState = this.getValuesFromTableState();\n }\n return this._valuesFromTableState;\n }\n\n public getArrayValue(): FilterValue[] {\n const value = this.getValue();\n return value === null\n ? []\n : toArray(value).map((v) => FilterValue.create(this, v));\n }\n\n public isValueActive(value: FilterValue): boolean {\n return this.getArrayValue().some((v) => v.equals(value));\n }\n\n public isActive(): boolean {\n return this.getArrayValue().length > 0;\n }\n\n public deactivateValue(value: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: unknown;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(value));\n } else {\n updatedValue = null;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public hasChanged(): boolean {\n const currentValues = this.getArrayValue().map((v) => v.value);\n const initialValues =\n this.getInitialFilterValues()?.map((v) => v.value) ?? [];\n\n return (\n currentValues.length !== initialValues.length ||\n difference(currentValues, initialValues).length > 0\n );\n }\n\n private getInitialValues() {\n return this.getStoredSelectedIds() ?? this.defaultSelectedValues;\n }\n\n private getInitialFilterValues() {\n return this.getInitialValues()?.map((v) => FilterValue.create(this, v));\n }\n\n public resetValues(): void {\n let resetTo: unknown;\n const initialValues = this.getInitialValues();\n\n if (initialValues) {\n resetTo = initialValues;\n } else {\n if (this.mode === \"all\" || this.mode === \"some\") {\n resetTo = [];\n } else {\n resetTo = null;\n }\n }\n\n this.list.reactTable.getTableColumn(this.property).setFilterValue(resetTo);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public clear(): void {\n this.list.reactTable.getTableColumn(this.property).setFilterValue(null);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public toggleValue(newValue: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: unknown;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n if (newValue.isActive) {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(newValue));\n } else {\n updatedValue = [...currentValueAsArray, newValue];\n }\n } else {\n updatedValue = newValue.isActive ? null : newValue;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public onFilterUpdated(cb: () => unknown): void {\n this.onFilterUpdateCallbacks.add(cb);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Filter.mjs","sources":["../../../../../../../../src/components/List/model/filter/Filter.ts"],"sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnFilter,\n InitialTableState,\n} from \"@tanstack/react-table\";\nimport type List from \"@/components/List/model/List\";\nimport { getProperty } from \"dot-prop\";\nimport type {\n FilterMatcher,\n FilterMode,\n FilterShape,\n} from \"@/components/List/model/filter/types\";\nimport type {\n PropertyName,\n PropertyValueRenderMethod,\n} from \"@/components/List/model/types\";\nimport { customPropertyPrefix } from \"@/components/List/model/types\";\nimport { difference, unique } from \"remeda\";\nimport { FilterValue } from \"@/components/List/model/filter/FilterValue\";\nimport z from \"zod\";\nimport { toArray } from \"@/lib/array/toArray\";\n\nconst equalsPropertyMatcher: FilterMatcher<unknown, never, never> = (\n filterValue,\n propertyValue,\n) => filterValue === propertyValue;\n\nconst stringCastRenderMethod: PropertyValueRenderMethod<unknown> = (value) =>\n String(value);\n\nexport class Filter<T, TProp extends PropertyName<T>, TMatchValue> {\n public static readonly settingsStorageSchema = z\n .record(z.string().or(z.symbol()), z.array(z.string()))\n .optional();\n\n private _values?: FilterValue[] | undefined;\n private _valuesFromTableState?: FilterValue[];\n public readonly list: List<T>;\n public readonly property: PropertyName<T>;\n public readonly mode: FilterMode;\n public readonly matcher: FilterMatcher<T, never, never>;\n public readonly renderItem: PropertyValueRenderMethod<TMatchValue>;\n public readonly name?: string;\n private onFilterUpdateCallbacks = new Set<() => unknown>();\n private readonly defaultSelectedValues?: readonly NonNullable<TMatchValue>[];\n public readonly priority: \"primary\" | \"secondary\";\n\n public constructor(list: List<T>, shape: FilterShape<T, TProp, TMatchValue>) {\n this.list = list;\n this.property = shape.property;\n this.mode = shape.mode ?? \"some\";\n this._values = shape.values?.map((v) => FilterValue.create(this, v));\n this.matcher = shape.matcher ?? equalsPropertyMatcher;\n this.renderItem = shape.renderItem ?? stringCastRenderMethod;\n this.name = shape.name;\n this.priority = shape.priority ?? \"primary\";\n\n this.defaultSelectedValues = shape.defaultSelected;\n }\n\n private getStoredSelectedIds() {\n return this.list.getStoredFilterDefaultSettings()?.[String(this.property)];\n }\n\n public updateInitialState(initialState: InitialTableState) {\n const initialValues = this.getInitialValues();\n\n if (initialValues?.length) {\n initialState.columnFilters = [\n ...(initialState.columnFilters ?? []),\n {\n id: this.property as string,\n value: initialValues,\n },\n ];\n }\n }\n\n public updateTableColumnDef(def: ColumnDef<T>): void {\n def.enableColumnFilter = true;\n def.filterFn = this.getReactTableFilterFn();\n }\n\n private getReactTableFilterFn(): ColumnDef<T>[\"filterFn\"] {\n return (row, _, filterValue) => {\n const propertyAsString = this.property as string;\n\n const filterBy = propertyAsString.startsWith(customPropertyPrefix)\n ? row.original\n : getProperty(row.original, propertyAsString);\n\n return this.checkFilterMatches(filterBy, filterValue);\n };\n }\n\n private checkFilterMatches(\n property: unknown,\n filterValueInput: unknown,\n ): boolean {\n if (filterValueInput === null) {\n return true;\n }\n\n const predicate = (filterValue: FilterValue) =>\n this.matcher(filterValue.value as never, property as never);\n\n const toFilterValue = (something: unknown) =>\n FilterValue.create(this, something);\n\n if (this.mode === \"all\") {\n return toArray(filterValueInput).map(toFilterValue).every(predicate);\n } else if (this.mode === \"some\") {\n const filterArr = toArray(filterValueInput);\n return (\n filterArr.length === 0 || filterArr.map(toFilterValue).some(predicate)\n );\n } else if (this.mode === \"one\") {\n return predicate(toFilterValue(filterValueInput));\n }\n\n throw new Error(`Unknown filter mode '${this.mode}'`);\n }\n\n protected getTableColumnFilter(): ColumnFilter | undefined {\n return this.list.reactTable.table\n .getState()\n .columnFilters.find((f) => f.id === this.property);\n }\n\n private getTableColumn(): Column<T> {\n return this.list.reactTable.getTableColumn(this.property);\n }\n\n public getValue(): unknown {\n return this.getTableColumnFilter()?.value ?? null;\n }\n\n private getValuesFromTableState() {\n return unique(\n Array.from(this.getTableColumn().getFacetedUniqueValues().keys())\n .flatMap((v) => v)\n .filter((v) => v !== undefined && v !== null),\n ).map((v) => FilterValue.create(this, v));\n }\n\n private checkIfValueIsUnknown(value: FilterValue) {\n const isKnown = this.values.some((v) => v.id === value.id);\n return !isKnown;\n }\n\n public deleteUnknownFilterValues() {\n if (this.values === this.valuesFromTableState) {\n return;\n }\n\n for (const currentValues of this.getArrayValue()) {\n if (this.checkIfValueIsUnknown(currentValues)) {\n this.deactivateValue(currentValues);\n }\n }\n }\n\n public get values(): FilterValue[] {\n return this._values ?? this.valuesFromTableState;\n }\n\n private get valuesFromTableState(): FilterValue[] {\n if (!this._valuesFromTableState) {\n this._valuesFromTableState = this.getValuesFromTableState();\n }\n return this._valuesFromTableState;\n }\n\n public getArrayValue(): FilterValue[] {\n const value = this.getValue();\n return value === null\n ? []\n : toArray(value).map((v) => FilterValue.create(this, v));\n }\n\n public isValueActive(value: FilterValue): boolean {\n return this.getArrayValue().some((v) => v.equals(value));\n }\n\n public isActive(): boolean {\n return this.getArrayValue().length > 0;\n }\n\n public deactivateValue(value: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: unknown;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(value));\n } else {\n updatedValue = null;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public hasChanged(): boolean {\n const currentValues = this.getArrayValue().map((v) => v.value);\n const initialValues =\n this.getInitialFilterValues()?.map((v) => v.value) ?? [];\n\n return (\n currentValues.length !== initialValues.length ||\n difference(currentValues, initialValues).length > 0\n );\n }\n\n private getInitialValues() {\n return this.getStoredSelectedIds() ?? this.defaultSelectedValues;\n }\n\n private getInitialFilterValues() {\n return this.getInitialValues()?.map((v) => FilterValue.create(this, v));\n }\n\n public resetValues(): void {\n let resetTo: unknown;\n const initialValues = this.getInitialValues();\n\n if (initialValues) {\n resetTo = initialValues;\n } else {\n if (this.mode === \"all\" || this.mode === \"some\") {\n resetTo = [];\n } else {\n resetTo = null;\n }\n }\n\n this.list.reactTable.getTableColumn(this.property).setFilterValue(resetTo);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public clear(): void {\n this.list.reactTable.getTableColumn(this.property).setFilterValue(null);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public toggleValue(newValue: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: unknown;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n if (newValue.isActive) {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(newValue));\n } else {\n updatedValue = [...currentValueAsArray, newValue];\n }\n } else {\n updatedValue = newValue.isActive ? null : newValue;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public onFilterUpdated(cb: () => unknown): void {\n this.onFilterUpdateCallbacks.add(cb);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
  import { useHotkeySubmit } from './useHotkeySubmit.mjs';
5
5
  import { FormContextProvider } from '../FormContextProvider/FormContextProvider.mjs';
6
- import { useId, useMemo } from 'react';
6
+ import { useId, useMemo, useRef } from 'react';
7
7
  import { FormProvider } from 'react-hook-form';
8
8
 
9
9
  const DefaultFormComponent = (p) => /* @__PURE__ */ jsx("form", { ...p });
@@ -21,10 +21,25 @@ function Form(props) {
21
21
  const newFormId = useId();
22
22
  const formId = idProp ?? newFormId;
23
23
  const FormComponent = useMemo(() => formComponent, [formId]);
24
+ const afterSubmitCallback = useRef(void 0);
25
+ const handleSubmitResult = (result) => {
26
+ if (typeof result === "function") {
27
+ afterSubmitCallback.current = result;
28
+ }
29
+ };
24
30
  const handleSubmit = (e) => {
25
31
  const formEvent = e && "nativeEvent" in e ? e : void 0;
26
32
  formEvent?.stopPropagation();
27
- return form.handleSubmit(onSubmit)(formEvent);
33
+ return form.handleSubmit((e2) => {
34
+ const submitResult = onSubmit(e2);
35
+ if (submitResult instanceof Promise) {
36
+ return submitResult.then(handleSubmitResult);
37
+ }
38
+ handleSubmitResult(submitResult);
39
+ })(formEvent);
40
+ };
41
+ const onAfterSuccessFeedback = () => {
42
+ afterSubmitCallback.current?.();
28
43
  };
29
44
  const refWithHotkeySubmit = useHotkeySubmit({
30
45
  ref,
@@ -36,6 +51,7 @@ function Form(props) {
36
51
  form,
37
52
  isReadOnly,
38
53
  id: formId,
54
+ onAfterSuccessFeedback,
39
55
  children: /* @__PURE__ */ jsx(
40
56
  FormComponent,
41
57
  {
@@ -1 +1 @@
1
- {"version":3,"file":"Form.mjs","sources":["../../../../../../../../src/integrations/react-hook-form/components/Form/Form.tsx"],"sourcesContent":["import { useHotkeySubmit } from \"@/integrations/react-hook-form/components/Form/useHotkeySubmit\";\nimport { FormContextProvider } from \"@/integrations/react-hook-form/components/FormContextProvider/FormContextProvider\";\nimport {\n type ComponentProps,\n type FC,\n type FormEvent,\n type FormEventHandler,\n type PropsWithChildren,\n type Ref,\n useId,\n useMemo,\n} from \"react\";\nimport type {\n FieldValues,\n SubmitHandler,\n UseFormReturn,\n} from \"react-hook-form\";\nimport { FormProvider as RhfFormContextProvider } from \"react-hook-form\";\n\nexport type FormOnSubmitHandler<F extends FieldValues> = SubmitHandler<F>;\n\ntype FormComponentType = FC<\n PropsWithChildren<{\n id: string;\n onSubmit?: FormEventHandler | FormOnSubmitHandler<never>;\n ref?: Ref<HTMLFormElement>;\n }>\n>;\n\nexport interface FormProps<F extends FieldValues>\n extends Omit<ComponentProps<\"form\">, \"onSubmit\">, PropsWithChildren {\n form: UseFormReturn<F>;\n onSubmit: FormOnSubmitHandler<F>;\n formComponent?: FC<Omit<FormComponentType, \"ref\">>;\n isReadOnly?: boolean;\n}\n\nconst DefaultFormComponent: FormComponentType = (p) => <form {...p} />;\n\nexport function Form<F extends FieldValues>(props: FormProps<F>) {\n const {\n form,\n children,\n onSubmit,\n formComponent = DefaultFormComponent,\n isReadOnly,\n ref,\n id: idProp,\n ...formProps\n } = props;\n\n const newFormId = useId();\n const formId = idProp ?? newFormId;\n const FormComponent = useMemo(() => formComponent, [formId]);\n\n const handleSubmit = (e?: FormEvent | F) => {\n const formEvent = e && \"nativeEvent\" in e ? (e as FormEvent) : undefined;\n formEvent?.stopPropagation();\n return form.handleSubmit(onSubmit)(formEvent);\n };\n\n const refWithHotkeySubmit = useHotkeySubmit({\n ref,\n handleSubmit,\n });\n\n return (\n <RhfFormContextProvider {...form}>\n <FormContextProvider\n form={form as UseFormReturn}\n isReadOnly={isReadOnly}\n id={formId}\n >\n <FormComponent\n {...formProps}\n ref={refWithHotkeySubmit}\n id={formId}\n onSubmit={handleSubmit}\n >\n {children}\n </FormComponent>\n </FormContextProvider>\n </RhfFormContextProvider>\n );\n}\n\nexport default Form;\n"],"names":["RhfFormContextProvider"],"mappings":";;;;;;AAqCA,MAAM,uBAA0C,CAAC,CAAA,qBAAM,GAAA,CAAC,MAAA,EAAA,EAAM,GAAG,CAAA,EAAG,CAAA;AAE7D,SAAS,KAA4B,KAAA,EAAqB;AAC/D,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA,GAAgB,oBAAA;AAAA,IAChB,UAAA;AAAA,IACA,GAAA;AAAA,IACA,EAAA,EAAI,MAAA;AAAA,IACJ,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,YAAY,KAAA,EAAM;AACxB,EAAA,MAAM,SAAS,MAAA,IAAU,SAAA;AACzB,EAAA,MAAM,gBAAgB,OAAA,CAAQ,MAAM,aAAA,EAAe,CAAC,MAAM,CAAC,CAAA;AAE3D,EAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAsB;AAC1C,IAAA,MAAM,SAAA,GAAY,CAAA,IAAK,aAAA,IAAiB,CAAA,GAAK,CAAA,GAAkB,MAAA;AAC/D,IAAA,SAAA,EAAW,eAAA,EAAgB;AAC3B,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,QAAQ,CAAA,CAAE,SAAS,CAAA;AAAA,EAC9C,CAAA;AAEA,EAAA,MAAM,sBAAsB,eAAA,CAAgB;AAAA,IAC1C,GAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,uBACE,GAAA,CAACA,YAAA,EAAA,EAAwB,GAAG,IAAA,EAC1B,QAAA,kBAAA,GAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,UAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACE,GAAG,SAAA;AAAA,UACJ,GAAA,EAAK,mBAAA;AAAA,UACL,EAAA,EAAI,MAAA;AAAA,UACJ,QAAA,EAAU,YAAA;AAAA,UAET;AAAA;AAAA;AACH;AAAA,GACF,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Form.mjs","sources":["../../../../../../../../src/integrations/react-hook-form/components/Form/Form.tsx"],"sourcesContent":["import { useHotkeySubmit } from \"@/integrations/react-hook-form/components/Form/useHotkeySubmit\";\nimport { FormContextProvider } from \"@/integrations/react-hook-form/components/FormContextProvider/FormContextProvider\";\nimport {\n type ComponentProps,\n type FC,\n type FormEvent,\n type FormEventHandler,\n type PropsWithChildren,\n type Ref,\n useId,\n useMemo,\n useRef,\n} from \"react\";\nimport type {\n FieldValues,\n SubmitHandler,\n UseFormReturn,\n} from \"react-hook-form\";\nimport { FormProvider as RhfFormContextProvider } from \"react-hook-form\";\n\nexport type FormOnSubmitHandler<F extends FieldValues> = SubmitHandler<F>;\n\nexport type AfterFormSubmitCallback = (...unknownArgs: unknown[]) => unknown;\n\ntype FormComponentType = FC<\n PropsWithChildren<{\n id: string;\n onSubmit?: FormEventHandler | FormOnSubmitHandler<never>;\n ref?: Ref<HTMLFormElement>;\n }>\n>;\n\nexport interface FormProps<F extends FieldValues>\n extends Omit<ComponentProps<\"form\">, \"onSubmit\">, PropsWithChildren {\n form: UseFormReturn<F>;\n onSubmit: FormOnSubmitHandler<F>;\n formComponent?: FC<Omit<FormComponentType, \"ref\">>;\n isReadOnly?: boolean;\n}\n\nconst DefaultFormComponent: FormComponentType = (p) => <form {...p} />;\n\nexport function Form<F extends FieldValues>(props: FormProps<F>) {\n const {\n form,\n children,\n onSubmit,\n formComponent = DefaultFormComponent,\n isReadOnly,\n ref,\n id: idProp,\n ...formProps\n } = props;\n\n const newFormId = useId();\n const formId = idProp ?? newFormId;\n const FormComponent = useMemo(() => formComponent, [formId]);\n const afterSubmitCallback = useRef<AfterFormSubmitCallback>(undefined);\n\n const handleSubmitResult = (result: unknown) => {\n if (typeof result === \"function\") {\n afterSubmitCallback.current = result as AfterFormSubmitCallback;\n }\n };\n\n const handleSubmit = (e?: FormEvent | F) => {\n const formEvent = e && \"nativeEvent\" in e ? (e as FormEvent) : undefined;\n formEvent?.stopPropagation();\n return form.handleSubmit((e) => {\n const submitResult = onSubmit(e);\n if (submitResult instanceof Promise) {\n return submitResult.then(handleSubmitResult);\n }\n handleSubmitResult(submitResult);\n })(formEvent);\n };\n\n const onAfterSuccessFeedback = () => {\n afterSubmitCallback.current?.();\n };\n\n const refWithHotkeySubmit = useHotkeySubmit({\n ref,\n handleSubmit,\n });\n\n return (\n <RhfFormContextProvider {...form}>\n <FormContextProvider\n form={form as UseFormReturn}\n isReadOnly={isReadOnly}\n id={formId}\n onAfterSuccessFeedback={onAfterSuccessFeedback}\n >\n <FormComponent\n {...formProps}\n ref={refWithHotkeySubmit}\n id={formId}\n onSubmit={handleSubmit}\n >\n {children}\n </FormComponent>\n </FormContextProvider>\n </RhfFormContextProvider>\n );\n}\n\nexport default Form;\n"],"names":["e","RhfFormContextProvider"],"mappings":";;;;;;AAwCA,MAAM,uBAA0C,CAAC,CAAA,qBAAM,GAAA,CAAC,MAAA,EAAA,EAAM,GAAG,CAAA,EAAG,CAAA;AAE7D,SAAS,KAA4B,KAAA,EAAqB;AAC/D,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA,GAAgB,oBAAA;AAAA,IAChB,UAAA;AAAA,IACA,GAAA;AAAA,IACA,EAAA,EAAI,MAAA;AAAA,IACJ,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,YAAY,KAAA,EAAM;AACxB,EAAA,MAAM,SAAS,MAAA,IAAU,SAAA;AACzB,EAAA,MAAM,gBAAgB,OAAA,CAAQ,MAAM,aAAA,EAAe,CAAC,MAAM,CAAC,CAAA;AAC3D,EAAA,MAAM,mBAAA,GAAsB,OAAgC,MAAS,CAAA;AAErE,EAAA,MAAM,kBAAA,GAAqB,CAAC,MAAA,KAAoB;AAC9C,IAAA,IAAI,OAAO,WAAW,UAAA,EAAY;AAChC,MAAA,mBAAA,CAAoB,OAAA,GAAU,MAAA;AAAA,IAChC;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAsB;AAC1C,IAAA,MAAM,SAAA,GAAY,CAAA,IAAK,aAAA,IAAiB,CAAA,GAAK,CAAA,GAAkB,MAAA;AAC/D,IAAA,SAAA,EAAW,eAAA,EAAgB;AAC3B,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,CAACA,EAAAA,KAAM;AAC9B,MAAA,MAAM,YAAA,GAAe,SAASA,EAAC,CAAA;AAC/B,MAAA,IAAI,wBAAwB,OAAA,EAAS;AACnC,QAAA,OAAO,YAAA,CAAa,KAAK,kBAAkB,CAAA;AAAA,MAC7C;AACA,MAAA,kBAAA,CAAmB,YAAY,CAAA;AAAA,IACjC,CAAC,EAAE,SAAS,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,mBAAA,CAAoB,OAAA,IAAU;AAAA,EAChC,CAAA;AAEA,EAAA,MAAM,sBAAsB,eAAA,CAAgB;AAAA,IAC1C,GAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,uBACE,GAAA,CAACC,YAAA,EAAA,EAAwB,GAAG,IAAA,EAC1B,QAAA,kBAAA,GAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,UAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,sBAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACE,GAAG,SAAA;AAAA,UACJ,GAAA,EAAK,mBAAA;AAAA,UACL,EAAA,EAAI,MAAA;AAAA,UACJ,QAAA,EAAU,YAAA;AAAA,UAET;AAAA;AAAA;AACH;AAAA,GACF,EACF,CAAA;AAEJ;;;;"}
@@ -9,12 +9,19 @@ const FormContext = createContext(
9
9
  void 0
10
10
  );
11
11
  const FormContextProvider = (props) => {
12
- const { form, id, isReadOnly: isReadOnlyProp = false, children } = props;
12
+ const {
13
+ form,
14
+ id,
15
+ isReadOnly: isReadOnlyProp = false,
16
+ onAfterSuccessFeedback,
17
+ children
18
+ } = props;
13
19
  const [isReadOnlyState, setReadOnly] = useState(isReadOnlyProp);
14
20
  const isReadOnly = isReadOnlyProp || isReadOnlyState;
15
21
  const formSubmitAction = useFormSubmitAction({
16
22
  form,
17
- setReadOnly
23
+ setReadOnly,
24
+ onAfterSuccessFeedback
18
25
  });
19
26
  return /* @__PURE__ */ jsx(
20
27
  FormContext,
@@ -1 +1 @@
1
- {"version":3,"file":"FormContextProvider.mjs","sources":["../../../../../../../../src/integrations/react-hook-form/components/FormContextProvider/FormContextProvider.tsx"],"sourcesContent":["import type { FieldValues, UseFormReturn } from \"react-hook-form\";\nimport {\n createContext,\n useContext,\n useState,\n type Dispatch,\n type PropsWithChildren,\n type SetStateAction,\n} from \"react\";\nimport type { ActionModel } from \"@/components/Action/models/ActionModel\";\nimport invariant from \"invariant\";\nimport { useFormSubmitAction } from \"@/integrations/react-hook-form/components/FormContextProvider/useFormSubmitAction\";\n\ninterface FormContext<F extends FieldValues> {\n form: UseFormReturn<F>;\n id: string;\n isReadOnly: boolean;\n setReadOnly: Dispatch<SetStateAction<boolean>>;\n formSubmitAction: ActionModel;\n}\n\nexport const FormContext = createContext<FormContext<FieldValues> | undefined>(\n undefined,\n);\n\nexport interface FormContextProviderProps extends PropsWithChildren {\n form: UseFormReturn;\n id: string;\n isReadOnly?: boolean;\n}\n\nexport const FormContextProvider = (props: FormContextProviderProps) => {\n const { form, id, isReadOnly: isReadOnlyProp = false, children } = props;\n\n const [isReadOnlyState, setReadOnly] = useState(isReadOnlyProp);\n const isReadOnly = isReadOnlyProp || isReadOnlyState;\n\n const formSubmitAction = useFormSubmitAction({\n form,\n setReadOnly,\n });\n\n return (\n <FormContext\n value={{\n isReadOnly,\n setReadOnly,\n id,\n form,\n formSubmitAction,\n }}\n >\n {children}\n </FormContext>\n );\n};\n\nexport const useFormContext = <F extends FieldValues>() => {\n const ctx = useOptionalFormContext<F>();\n invariant(\n !!ctx,\n \"Could not useFormContext() outside a Form, or multiple versions of Flow installed.\",\n );\n return ctx;\n};\n\nexport const useOptionalFormContext = <F extends FieldValues>() =>\n useContext(FormContext) as FormContext<F> | undefined;\n\nexport default FormContextProvider;\n"],"names":[],"mappings":";;;;;AAqBO,MAAM,WAAA,GAAc,aAAA;AAAA,EACzB;AACF;AAQO,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAAoC;AACtE,EAAA,MAAM,EAAE,IAAA,EAAM,EAAA,EAAI,YAAY,cAAA,GAAiB,KAAA,EAAO,UAAS,GAAI,KAAA;AAEnE,EAAA,MAAM,CAAC,eAAA,EAAiB,WAAW,CAAA,GAAI,SAAS,cAAc,CAAA;AAC9D,EAAA,MAAM,aAAa,cAAA,IAAkB,eAAA;AAErC,EAAA,MAAM,mBAAmB,mBAAA,CAAoB;AAAA,IAC3C,IAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,uBACE,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,UAAA;AAAA,QACA,WAAA;AAAA,QACA,EAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AAEO,MAAM,iBAAiB,MAA6B;AACzD,EAAA,MAAM,MAAM,sBAAA,EAA0B;AACtC,EAAA,SAAA;AAAA,IACE,CAAC,CAAC,GAAA;AAAA,IACF;AAAA,GACF;AACA,EAAA,OAAO,GAAA;AACT;AAEO,MAAM,sBAAA,GAAyB,MACpC,UAAA,CAAW,WAAW;;;;"}
1
+ {"version":3,"file":"FormContextProvider.mjs","sources":["../../../../../../../../src/integrations/react-hook-form/components/FormContextProvider/FormContextProvider.tsx"],"sourcesContent":["import type { FieldValues, UseFormReturn } from \"react-hook-form\";\nimport {\n createContext,\n useContext,\n useState,\n type Dispatch,\n type PropsWithChildren,\n type SetStateAction,\n} from \"react\";\nimport type { ActionModel } from \"@/components/Action/models/ActionModel\";\nimport invariant from \"invariant\";\nimport { useFormSubmitAction } from \"@/integrations/react-hook-form/components/FormContextProvider/useFormSubmitAction\";\nimport type { AfterFormSubmitCallback } from \"@/integrations/react-hook-form/components/Form/Form\";\n\ninterface FormContext<F extends FieldValues> {\n form: UseFormReturn<F>;\n id: string;\n isReadOnly: boolean;\n setReadOnly: Dispatch<SetStateAction<boolean>>;\n formSubmitAction: ActionModel;\n}\n\nexport const FormContext = createContext<FormContext<FieldValues> | undefined>(\n undefined,\n);\n\nexport interface FormContextProviderProps extends PropsWithChildren {\n form: UseFormReturn;\n id: string;\n isReadOnly?: boolean;\n onAfterSuccessFeedback?: AfterFormSubmitCallback;\n}\n\nexport const FormContextProvider = (props: FormContextProviderProps) => {\n const {\n form,\n id,\n isReadOnly: isReadOnlyProp = false,\n onAfterSuccessFeedback,\n children,\n } = props;\n const [isReadOnlyState, setReadOnly] = useState(isReadOnlyProp);\n const isReadOnly = isReadOnlyProp || isReadOnlyState;\n\n const formSubmitAction = useFormSubmitAction({\n form,\n setReadOnly,\n onAfterSuccessFeedback,\n });\n\n return (\n <FormContext\n value={{\n isReadOnly,\n setReadOnly,\n id,\n form,\n formSubmitAction,\n }}\n >\n {children}\n </FormContext>\n );\n};\n\nexport const useFormContext = <F extends FieldValues>() => {\n const ctx = useOptionalFormContext<F>();\n invariant(\n !!ctx,\n \"Could not useFormContext() outside a Form, or multiple versions of Flow installed.\",\n );\n return ctx;\n};\n\nexport const useOptionalFormContext = <F extends FieldValues>() =>\n useContext(FormContext) as FormContext<F> | undefined;\n\nexport default FormContextProvider;\n"],"names":[],"mappings":";;;;;AAsBO,MAAM,WAAA,GAAc,aAAA;AAAA,EACzB;AACF;AASO,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAAoC;AACtE,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,EAAA;AAAA,IACA,YAAY,cAAA,GAAiB,KAAA;AAAA,IAC7B,sBAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,CAAC,eAAA,EAAiB,WAAW,CAAA,GAAI,SAAS,cAAc,CAAA;AAC9D,EAAA,MAAM,aAAa,cAAA,IAAkB,eAAA;AAErC,EAAA,MAAM,mBAAmB,mBAAA,CAAoB;AAAA,IAC3C,IAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,uBACE,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,UAAA;AAAA,QACA,WAAA;AAAA,QACA,EAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AAEO,MAAM,iBAAiB,MAA6B;AACzD,EAAA,MAAM,MAAM,sBAAA,EAA0B;AACtC,EAAA,SAAA;AAAA,IACE,CAAC,CAAC,GAAA;AAAA,IACF;AAAA,GACF;AACA,EAAA,OAAO,GAAA;AACT;AAEO,MAAM,sBAAA,GAAyB,MACpC,UAAA,CAAW,WAAW;;;;"}
@@ -4,7 +4,7 @@ import { ActionModel } from '../../../../components/Action/models/ActionModel.mj
4
4
  import { useRef, useEffect } from 'react';
5
5
 
6
6
  const useFormSubmitAction = (options) => {
7
- const { form, setReadOnly } = options;
7
+ const { form, setReadOnly, onAfterSuccessFeedback } = options;
8
8
  const formSubmitAction = ActionModel.useNew({});
9
9
  const { isSubmitting, isSubmitted, isSubmitSuccessful } = form.formState;
10
10
  const wasSubmitting = useRef(isSubmitting);
@@ -16,7 +16,7 @@ const useFormSubmitAction = (options) => {
16
16
  formSubmitAction.state.onAsyncStart();
17
17
  } else if (submittingDone) {
18
18
  if (isSubmitSuccessful) {
19
- formSubmitAction.state.onSucceeded();
19
+ formSubmitAction.state.onSucceeded().then(onAfterSuccessFeedback);
20
20
  } else {
21
21
  formSubmitAction.state.onFailed(new Error("Form submission failed"));
22
22
  }
@@ -28,7 +28,8 @@ const useFormSubmitAction = (options) => {
28
28
  isSubmitted,
29
29
  isSubmitSuccessful,
30
30
  formSubmitAction,
31
- setReadOnly
31
+ setReadOnly,
32
+ onAfterSuccessFeedback
32
33
  ]);
33
34
  return formSubmitAction;
34
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useFormSubmitAction.mjs","sources":["../../../../../../../../src/integrations/react-hook-form/components/FormContextProvider/useFormSubmitAction.ts"],"sourcesContent":["import { ActionModel } from \"@/components/Action/models/ActionModel\";\nimport { useEffect, useRef } from \"react\";\nimport type { UseFormReturn } from \"react-hook-form\";\n\ninterface Options {\n form: UseFormReturn;\n setReadOnly: (isReadOnly: boolean) => void;\n}\n\nexport const useFormSubmitAction = (options: Options) => {\n const { form, setReadOnly } = options;\n\n const formSubmitAction = ActionModel.useNew({});\n\n const { isSubmitting, isSubmitted, isSubmitSuccessful } = form.formState;\n const wasSubmitting = useRef(isSubmitting);\n\n useEffect(() => {\n const submittingDone = wasSubmitting.current && !isSubmitting;\n wasSubmitting.current = isSubmitting;\n\n if (isSubmitting) {\n setReadOnly(true);\n formSubmitAction.state.onAsyncStart();\n } else if (submittingDone) {\n if (isSubmitSuccessful) {\n formSubmitAction.state.onSucceeded();\n } else {\n formSubmitAction.state.onFailed(new Error(\"Form submission failed\"));\n }\n setReadOnly(false);\n }\n }, [\n wasSubmitting,\n isSubmitting,\n isSubmitted,\n isSubmitSuccessful,\n formSubmitAction,\n setReadOnly,\n ]);\n\n return formSubmitAction;\n};\n"],"names":[],"mappings":";;;AASO,MAAM,mBAAA,GAAsB,CAAC,OAAA,KAAqB;AACvD,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAY,GAAI,OAAA;AAE9B,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,MAAA,CAAO,EAAE,CAAA;AAE9C,EAAA,MAAM,EAAE,YAAA,EAAc,WAAA,EAAa,kBAAA,KAAuB,IAAA,CAAK,SAAA;AAC/D,EAAA,MAAM,aAAA,GAAgB,OAAO,YAAY,CAAA;AAEzC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,cAAA,GAAiB,aAAA,CAAc,OAAA,IAAW,CAAC,YAAA;AACjD,IAAA,aAAA,CAAc,OAAA,GAAU,YAAA;AAExB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,gBAAA,CAAiB,MAAM,YAAA,EAAa;AAAA,IACtC,WAAW,cAAA,EAAgB;AACzB,MAAA,IAAI,kBAAA,EAAoB;AACtB,QAAA,gBAAA,CAAiB,MAAM,WAAA,EAAY;AAAA,MACrC,CAAA,MAAO;AACL,QAAA,gBAAA,CAAiB,KAAA,CAAM,QAAA,CAAS,IAAI,KAAA,CAAM,wBAAwB,CAAC,CAAA;AAAA,MACrE;AACA,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA,IACnB;AAAA,EACF,CAAA,EAAG;AAAA,IACD,aAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,kBAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,OAAO,gBAAA;AACT;;;;"}
1
+ {"version":3,"file":"useFormSubmitAction.mjs","sources":["../../../../../../../../src/integrations/react-hook-form/components/FormContextProvider/useFormSubmitAction.ts"],"sourcesContent":["import { ActionModel } from \"@/components/Action/models/ActionModel\";\nimport type { AfterFormSubmitCallback } from \"@/integrations/react-hook-form/components/Form/Form\";\nimport { useEffect, useRef } from \"react\";\nimport type { UseFormReturn } from \"react-hook-form\";\n\ninterface Options {\n form: UseFormReturn;\n setReadOnly: (isReadOnly: boolean) => void;\n onAfterSuccessFeedback?: AfterFormSubmitCallback;\n}\n\nexport const useFormSubmitAction = (options: Options) => {\n const { form, setReadOnly, onAfterSuccessFeedback } = options;\n\n const formSubmitAction = ActionModel.useNew({});\n\n const { isSubmitting, isSubmitted, isSubmitSuccessful } = form.formState;\n const wasSubmitting = useRef(isSubmitting);\n\n useEffect(() => {\n const submittingDone = wasSubmitting.current && !isSubmitting;\n wasSubmitting.current = isSubmitting;\n\n if (isSubmitting) {\n setReadOnly(true);\n formSubmitAction.state.onAsyncStart();\n } else if (submittingDone) {\n if (isSubmitSuccessful) {\n formSubmitAction.state.onSucceeded().then(onAfterSuccessFeedback);\n } else {\n formSubmitAction.state.onFailed(new Error(\"Form submission failed\"));\n }\n setReadOnly(false);\n }\n }, [\n wasSubmitting,\n isSubmitting,\n isSubmitted,\n isSubmitSuccessful,\n formSubmitAction,\n setReadOnly,\n onAfterSuccessFeedback,\n ]);\n\n return formSubmitAction;\n};\n"],"names":[],"mappings":";;;AAWO,MAAM,mBAAA,GAAsB,CAAC,OAAA,KAAqB;AACvD,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAa,sBAAA,EAAuB,GAAI,OAAA;AAEtD,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,MAAA,CAAO,EAAE,CAAA;AAE9C,EAAA,MAAM,EAAE,YAAA,EAAc,WAAA,EAAa,kBAAA,KAAuB,IAAA,CAAK,SAAA;AAC/D,EAAA,MAAM,aAAA,GAAgB,OAAO,YAAY,CAAA;AAEzC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,cAAA,GAAiB,aAAA,CAAc,OAAA,IAAW,CAAC,YAAA;AACjD,IAAA,aAAA,CAAc,OAAA,GAAU,YAAA;AAExB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,gBAAA,CAAiB,MAAM,YAAA,EAAa;AAAA,IACtC,WAAW,cAAA,EAAgB;AACzB,MAAA,IAAI,kBAAA,EAAoB;AACtB,QAAA,gBAAA,CAAiB,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA,CAAK,sBAAsB,CAAA;AAAA,MAClE,CAAA,MAAO;AACL,QAAA,gBAAA,CAAiB,KAAA,CAAM,QAAA,CAAS,IAAI,KAAA,CAAM,wBAAwB,CAAC,CAAA;AAAA,MACrE;AACA,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA,IACnB;AAAA,EACF,CAAA,EAAG;AAAA,IACD,aAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,kBAAA;AAAA,IACA,gBAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,OAAO,gBAAA;AACT;;;;"}
@@ -0,0 +1,15 @@
1
+ "use client"
2
+ /* */
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { memo, useContext } from 'react';
5
+ import { Accordion } from '../components/Accordion/Accordion.mjs';
6
+ import { viewComponentContext } from '../lib/viewComponentContext/viewComponentContext.mjs';
7
+
8
+ const AccordionView = memo((props) => {
9
+ const View = useContext(viewComponentContext)["Accordion"] ?? Accordion;
10
+ return /* @__PURE__ */ jsx(View, { ...props });
11
+ });
12
+ AccordionView.displayName = "AccordionView";
13
+
14
+ export { AccordionView as default };
15
+ //# sourceMappingURL=AccordionView.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionView.mjs","sources":["../../../../../src/views/AccordionView.tsx"],"sourcesContent":["/* prettier-ignore */\n/* This file is auto-generated with the remote-components-generator */\nimport React, { memo, type FC, useContext } from \"react\";\nimport {\n Accordion,\n type AccordionProps,\n} from \"@/components/Accordion/Accordion\";\nimport { viewComponentContext } from \"@/lib/viewComponentContext/viewComponentContext\";\n\nconst AccordionView: FC<AccordionProps> = memo((props) => {\n const View = useContext(viewComponentContext)[\"Accordion\"] ?? Accordion;\n return <View {...props} />;\n});\nAccordionView.displayName = \"AccordionView\";\n\nexport default AccordionView;\n"],"names":[],"mappings":";;;;;AASA,MAAM,aAAA,GAAoC,IAAA,CAAK,CAAC,KAAA,KAAU;AACxD,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,oBAAoB,CAAA,CAAE,WAAW,CAAA,IAAK,SAAA;AAC9D,EAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AAC1B,CAAC;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;;;;"}
@@ -0,0 +1,15 @@
1
+ "use client"
2
+ /* */
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { memo, useContext } from 'react';
5
+ import { ActionGroup } from '../components/ActionGroup/ActionGroup.mjs';
6
+ import { viewComponentContext } from '../lib/viewComponentContext/viewComponentContext.mjs';
7
+
8
+ const ActionGroupView = memo((props) => {
9
+ const View = useContext(viewComponentContext)["ActionGroup"] ?? ActionGroup;
10
+ return /* @__PURE__ */ jsx(View, { ...props });
11
+ });
12
+ ActionGroupView.displayName = "ActionGroupView";
13
+
14
+ export { ActionGroupView as default };
15
+ //# sourceMappingURL=ActionGroupView.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionGroupView.mjs","sources":["../../../../../src/views/ActionGroupView.tsx"],"sourcesContent":["/* prettier-ignore */\n/* This file is auto-generated with the remote-components-generator */\nimport React, { memo, type FC, useContext } from \"react\";\nimport {\n ActionGroup,\n type ActionGroupProps,\n} from \"@/components/ActionGroup/ActionGroup\";\nimport { viewComponentContext } from \"@/lib/viewComponentContext/viewComponentContext\";\n\nconst ActionGroupView: FC<ActionGroupProps> = memo((props) => {\n const View = useContext(viewComponentContext)[\"ActionGroup\"] ?? ActionGroup;\n return <View {...props} />;\n});\nActionGroupView.displayName = \"ActionGroupView\";\n\nexport default ActionGroupView;\n"],"names":[],"mappings":";;;;;AASA,MAAM,eAAA,GAAwC,IAAA,CAAK,CAAC,KAAA,KAAU;AAC5D,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,oBAAoB,CAAA,CAAE,aAAa,CAAA,IAAK,WAAA;AAChE,EAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AAC1B,CAAC;AACD,eAAA,CAAgB,WAAA,GAAc,iBAAA;;;;"}
@@ -0,0 +1,15 @@
1
+ "use client"
2
+ /* */
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { memo, useContext } from 'react';
5
+ import { CheckboxGroup } from '../components/CheckboxGroup/CheckboxGroup.mjs';
6
+ import { viewComponentContext } from '../lib/viewComponentContext/viewComponentContext.mjs';
7
+
8
+ const CheckboxGroupView = memo((props) => {
9
+ const View = useContext(viewComponentContext)["CheckboxGroup"] ?? CheckboxGroup;
10
+ return /* @__PURE__ */ jsx(View, { ...props });
11
+ });
12
+ CheckboxGroupView.displayName = "CheckboxGroupView";
13
+
14
+ export { CheckboxGroupView as default };
15
+ //# sourceMappingURL=CheckboxGroupView.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxGroupView.mjs","sources":["../../../../../src/views/CheckboxGroupView.tsx"],"sourcesContent":["/* prettier-ignore */\n/* This file is auto-generated with the remote-components-generator */\nimport React, { memo, type FC, useContext } from \"react\";\nimport {\n CheckboxGroup,\n type CheckboxGroupProps,\n} from \"@/components/CheckboxGroup/CheckboxGroup\";\nimport { viewComponentContext } from \"@/lib/viewComponentContext/viewComponentContext\";\n\nconst CheckboxGroupView: FC<CheckboxGroupProps> = memo((props) => {\n const View =\n useContext(viewComponentContext)[\"CheckboxGroup\"] ?? CheckboxGroup;\n return <View {...props} />;\n});\nCheckboxGroupView.displayName = \"CheckboxGroupView\";\n\nexport default CheckboxGroupView;\n"],"names":[],"mappings":";;;;;AASA,MAAM,iBAAA,GAA4C,IAAA,CAAK,CAAC,KAAA,KAAU;AAChE,EAAA,MAAM,IAAA,GACJ,UAAA,CAAW,oBAAoB,CAAA,CAAE,eAAe,CAAA,IAAK,aAAA;AACvD,EAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AAC1B,CAAC;AACD,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;;;"}
@@ -0,0 +1,15 @@
1
+ "use client"
2
+ /* */
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { memo, useContext } from 'react';
5
+ import { Checkbox } from '../components/Checkbox/Checkbox.mjs';
6
+ import { viewComponentContext } from '../lib/viewComponentContext/viewComponentContext.mjs';
7
+
8
+ const CheckboxView = memo((props) => {
9
+ const View = useContext(viewComponentContext)["Checkbox"] ?? Checkbox;
10
+ return /* @__PURE__ */ jsx(View, { ...props });
11
+ });
12
+ CheckboxView.displayName = "CheckboxView";
13
+
14
+ export { CheckboxView as default };
15
+ //# sourceMappingURL=CheckboxView.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxView.mjs","sources":["../../../../../src/views/CheckboxView.tsx"],"sourcesContent":["/* prettier-ignore */\n/* This file is auto-generated with the remote-components-generator */\nimport React, { memo, type FC, useContext } from \"react\";\nimport { Checkbox, type CheckboxProps } from \"@/components/Checkbox/Checkbox\";\nimport { viewComponentContext } from \"@/lib/viewComponentContext/viewComponentContext\";\n\nconst CheckboxView: FC<CheckboxProps> = memo((props) => {\n const View = useContext(viewComponentContext)[\"Checkbox\"] ?? Checkbox;\n return <View {...props} />;\n});\nCheckboxView.displayName = \"CheckboxView\";\n\nexport default CheckboxView;\n"],"names":[],"mappings":";;;;;AAMA,MAAM,YAAA,GAAkC,IAAA,CAAK,CAAC,KAAA,KAAU;AACtD,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,oBAAoB,CAAA,CAAE,UAAU,CAAA,IAAK,QAAA;AAC7D,EAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AAC1B,CAAC;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;;;;"}
@@ -0,0 +1,15 @@
1
+ "use client"
2
+ /* */
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { memo, useContext } from 'react';
5
+ import { Content } from '../components/Content/Content.mjs';
6
+ import { viewComponentContext } from '../lib/viewComponentContext/viewComponentContext.mjs';
7
+
8
+ const ContentView = memo((props) => {
9
+ const View = useContext(viewComponentContext)["Content"] ?? Content;
10
+ return /* @__PURE__ */ jsx(View, { ...props });
11
+ });
12
+ ContentView.displayName = "ContentView";
13
+
14
+ export { ContentView as default };
15
+ //# sourceMappingURL=ContentView.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentView.mjs","sources":["../../../../../src/views/ContentView.tsx"],"sourcesContent":["/* prettier-ignore */\n/* This file is auto-generated with the remote-components-generator */\nimport React, { memo, type FC, useContext } from \"react\";\nimport { Content, type ContentProps } from \"@/components/Content/Content\";\nimport { viewComponentContext } from \"@/lib/viewComponentContext/viewComponentContext\";\n\nconst ContentView: FC<ContentProps> = memo((props) => {\n const View = useContext(viewComponentContext)[\"Content\"] ?? Content;\n return <View {...props} />;\n});\nContentView.displayName = \"ContentView\";\n\nexport default ContentView;\n"],"names":[],"mappings":";;;;;AAMA,MAAM,WAAA,GAAgC,IAAA,CAAK,CAAC,KAAA,KAAU;AACpD,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,oBAAoB,CAAA,CAAE,SAAS,CAAA,IAAK,OAAA;AAC5D,EAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AAC1B,CAAC;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;;;;"}
@@ -0,0 +1,15 @@
1
+ "use client"
2
+ /* */
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { memo, useContext } from 'react';
5
+ import { RadioGroup } from '../components/RadioGroup/RadioGroup.mjs';
6
+ import { viewComponentContext } from '../lib/viewComponentContext/viewComponentContext.mjs';
7
+
8
+ const RadioGroupView = memo((props) => {
9
+ const View = useContext(viewComponentContext)["RadioGroup"] ?? RadioGroup;
10
+ return /* @__PURE__ */ jsx(View, { ...props });
11
+ });
12
+ RadioGroupView.displayName = "RadioGroupView";
13
+
14
+ export { RadioGroupView as default };
15
+ //# sourceMappingURL=RadioGroupView.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroupView.mjs","sources":["../../../../../src/views/RadioGroupView.tsx"],"sourcesContent":["/* prettier-ignore */\n/* This file is auto-generated with the remote-components-generator */\nimport React, { memo, type FC, useContext } from \"react\";\nimport {\n RadioGroup,\n type RadioGroupProps,\n} from \"@/components/RadioGroup/RadioGroup\";\nimport { viewComponentContext } from \"@/lib/viewComponentContext/viewComponentContext\";\n\nconst RadioGroupView: FC<RadioGroupProps> = memo((props) => {\n const View = useContext(viewComponentContext)[\"RadioGroup\"] ?? RadioGroup;\n return <View {...props} />;\n});\nRadioGroupView.displayName = \"RadioGroupView\";\n\nexport default RadioGroupView;\n"],"names":[],"mappings":";;;;;AASA,MAAM,cAAA,GAAsC,IAAA,CAAK,CAAC,KAAA,KAAU;AAC1D,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,oBAAoB,CAAA,CAAE,YAAY,CAAA,IAAK,UAAA;AAC/D,EAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AAC1B,CAAC;AACD,cAAA,CAAe,WAAA,GAAc,gBAAA;;;;"}