@mittwald/flow-react-components 0.2.0-alpha.661 → 0.2.0-alpha.663
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.
- package/CHANGELOG.md +16 -0
- package/dist/assets/doc-properties.json +3120 -4899
- package/dist/css/all.css +1 -1
- package/dist/js/_virtual/_.locale.json@16189d7d260d7331b0e0a1936d5c7c52.mjs +12 -0
- package/dist/js/_virtual/_.locale.json@16189d7d260d7331b0e0a1936d5c7c52.mjs.map +1 -0
- package/dist/js/_virtual/_.locale.json@6922640321d6c379322b09cbcf0dcdb3.mjs +8 -0
- package/dist/js/_virtual/_.locale.json@6922640321d6c379322b09cbcf0dcdb3.mjs.map +1 -0
- package/dist/js/_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs +6 -0
- package/dist/js/_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs.map +1 -1
- package/dist/js/components/src/components/CartesianChart/CartesianChart.mjs +4 -2
- package/dist/js/components/src/components/CartesianChart/CartesianChart.mjs.map +1 -1
- package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/ChartTooltip.mjs +20 -14
- package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/ChartTooltip.mjs.map +1 -1
- package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/TooltipContent.mjs +22 -20
- package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/TooltipContent.mjs.map +1 -1
- package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/TooltipLegendItem.mjs +26 -0
- package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/TooltipLegendItem.mjs.map +1 -0
- package/dist/js/components/src/components/List/components/Header/Header.mjs +8 -8
- package/dist/js/components/src/components/List/components/Header/Header.mjs.map +1 -1
- package/dist/js/components/src/components/List/components/Header/Header.module.css.mjs +5 -5
- package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs +114 -0
- package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs.map +1 -0
- package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordion.mjs +26 -0
- package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordion.mjs.map +1 -0
- package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/SortingAccordion.mjs +57 -0
- package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/SortingAccordion.mjs.map +1 -0
- package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.mjs +50 -0
- package/dist/js/components/src/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.mjs.map +1 -0
- package/dist/js/components/src/components/List/components/Header/components/{Filters/FilterMenu.mjs → FilterContextMenu/FilterContextMenu.mjs} +4 -4
- package/dist/js/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenu.mjs.map +1 -0
- package/dist/js/components/src/components/List/components/Header/components/{Filters/FilterMenuList.mjs → FilterContextMenu/FilterContextMenus.mjs} +5 -5
- package/dist/js/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.mjs.map +1 -0
- package/dist/js/components/src/components/List/components/Header/components/FilterContextMenu/FilterMenuItem.mjs.map +1 -0
- package/dist/js/components/src/components/List/components/Header/components/{Settings/SortingMenu.mjs → SortingContextMenu/SortingContextMenu.mjs} +4 -4
- package/dist/js/components/src/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.mjs.map +1 -0
- package/dist/js/components/src/components/List/components/Header/components/SortingContextMenu/SortingMenuItem.mjs.map +1 -0
- package/dist/js/components/src/components/List/components/Header/components/{Settings/ViewModeMenu.mjs → ViewModeContextMenu/ViewModeContextMenu.mjs} +4 -4
- package/dist/js/components/src/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.mjs.map +1 -0
- package/dist/js/components/src/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem.mjs.map +1 -0
- package/dist/js/components/src/components/List/model/filter/Filter.mjs +2 -0
- package/dist/js/components/src/components/List/model/filter/Filter.mjs.map +1 -1
- package/dist/js/components/src/components/TextArea/TextArea.mjs +54 -31
- package/dist/js/components/src/components/TextArea/TextArea.mjs.map +1 -1
- package/dist/js/components/src/components/TextArea/TextArea.module.scss.mjs +3 -3
- package/dist/js/components/src/components/TextField/TextField.mjs +92 -20
- package/dist/js/components/src/components/TextField/TextField.mjs.map +1 -1
- package/dist/js/components/src/components/TextField/TextField.module.scss.mjs +7 -3
- package/dist/js/components/src/components/TextField/TextField.module.scss.mjs.map +1 -1
- package/dist/js/components/src/views/AccordionView.mjs +15 -0
- package/dist/js/components/src/views/AccordionView.mjs.map +1 -0
- package/dist/js/components/src/views/ActionGroupView.mjs +15 -0
- package/dist/js/components/src/views/ActionGroupView.mjs.map +1 -0
- package/dist/js/components/src/views/CheckboxGroupView.mjs +15 -0
- package/dist/js/components/src/views/CheckboxGroupView.mjs.map +1 -0
- package/dist/js/components/src/views/CheckboxView.mjs +15 -0
- package/dist/js/components/src/views/CheckboxView.mjs.map +1 -0
- package/dist/js/components/src/views/ContentView.mjs +15 -0
- package/dist/js/components/src/views/ContentView.mjs.map +1 -0
- package/dist/js/components/src/views/RadioGroupView.mjs +15 -0
- package/dist/js/components/src/views/RadioGroupView.mjs.map +1 -0
- package/dist/js/components/src/views/RadioView.mjs +15 -0
- package/dist/js/components/src/views/RadioView.mjs.map +1 -0
- package/dist/js/components/src/views/SectionView.mjs +15 -0
- package/dist/js/components/src/views/SectionView.mjs.map +1 -0
- package/dist/js/flr-universal.mjs +4 -2
- package/dist/js/flr-universal.mjs.map +1 -1
- package/dist/types/components/CartesianChart/components/ChartTooltip/ChartTooltip.d.ts +5 -4
- package/dist/types/components/CartesianChart/components/ChartTooltip/ChartTooltip.d.ts.map +1 -1
- package/dist/types/components/CartesianChart/components/ChartTooltip/TooltipContent.d.ts +0 -6
- package/dist/types/components/CartesianChart/components/ChartTooltip/TooltipContent.d.ts.map +1 -1
- package/dist/types/components/CartesianChart/components/ChartTooltip/TooltipLegendItem.d.ts +2 -0
- package/dist/types/components/CartesianChart/components/ChartTooltip/TooltipLegendItem.d.ts.map +1 -0
- package/dist/types/components/CartesianChart/stories/Default.stories.d.ts.map +1 -1
- package/dist/types/components/List/components/Header/Header.d.ts.map +1 -1
- package/dist/types/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.d.ts +3 -0
- package/dist/types/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.d.ts.map +1 -0
- package/dist/types/components/List/components/Header/components/{Filters/FilterMenu.d.ts → AllFiltersModal/FilterAccordion.d.ts} +2 -2
- package/dist/types/components/List/components/Header/components/AllFiltersModal/FilterAccordion.d.ts.map +1 -0
- package/dist/types/components/List/components/Header/components/AllFiltersModal/SortingAccordion.d.ts +3 -0
- package/dist/types/components/List/components/Header/components/AllFiltersModal/SortingAccordion.d.ts.map +1 -0
- package/dist/types/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.d.ts +3 -0
- package/dist/types/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.d.ts.map +1 -0
- package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenu.d.ts +8 -0
- package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenu.d.ts.map +1 -0
- package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.d.ts +3 -0
- package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.d.ts.map +1 -0
- package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterMenuItem.d.ts.map +1 -0
- package/dist/types/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.d.ts +3 -0
- package/dist/types/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.d.ts.map +1 -0
- package/dist/types/components/List/components/Header/components/SortingContextMenu/SortingMenuItem.d.ts.map +1 -0
- package/dist/types/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.d.ts +3 -0
- package/dist/types/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.d.ts.map +1 -0
- package/dist/types/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem.d.ts.map +1 -0
- package/dist/types/components/List/model/filter/Filter.d.ts +1 -0
- package/dist/types/components/List/model/filter/Filter.d.ts.map +1 -1
- package/dist/types/components/List/model/filter/types.d.ts +1 -0
- package/dist/types/components/List/model/filter/types.d.ts.map +1 -1
- package/dist/types/components/List/stories/Default.stories.d.ts +1 -0
- package/dist/types/components/List/stories/Default.stories.d.ts.map +1 -1
- package/dist/types/components/TextArea/TextArea.browser.test.d.ts +2 -0
- package/dist/types/components/TextArea/TextArea.browser.test.d.ts.map +1 -0
- package/dist/types/components/TextArea/TextArea.d.ts +4 -2
- package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/types/components/TextField/TextField.browser.test.d.ts +2 -0
- package/dist/types/components/TextField/TextField.browser.test.d.ts.map +1 -0
- package/dist/types/components/TextField/TextField.d.ts +4 -3
- package/dist/types/components/TextField/TextField.d.ts.map +1 -1
- package/dist/types/components/TextField/stories/Default.stories.d.ts +2 -0
- package/dist/types/components/TextField/stories/Default.stories.d.ts.map +1 -1
- package/package.json +9 -10
- package/dist/js/_virtual/_.locale.json@444629885187f8ca5450a1c8b14fb45c.mjs +0 -8
- package/dist/js/_virtual/_.locale.json@444629885187f8ca5450a1c8b14fb45c.mjs.map +0 -1
- package/dist/js/components/src/components/List/components/Header/components/Filters/CombinedFilterMenu.mjs +0 -106
- package/dist/js/components/src/components/List/components/Header/components/Filters/CombinedFilterMenu.mjs.map +0 -1
- package/dist/js/components/src/components/List/components/Header/components/Filters/FilterMenu.mjs.map +0 -1
- package/dist/js/components/src/components/List/components/Header/components/Filters/FilterMenuItem.mjs.map +0 -1
- package/dist/js/components/src/components/List/components/Header/components/Filters/FilterMenuList.mjs.map +0 -1
- package/dist/js/components/src/components/List/components/Header/components/Settings/SortingMenu.mjs.map +0 -1
- package/dist/js/components/src/components/List/components/Header/components/Settings/SortingMenuItem.mjs.map +0 -1
- package/dist/js/components/src/components/List/components/Header/components/Settings/ViewModeMenu.mjs.map +0 -1
- package/dist/js/components/src/components/List/components/Header/components/Settings/ViewModeMenuItem.mjs.map +0 -1
- package/dist/js/components/src/components/TextFieldBase/TextFieldBase.mjs +0 -51
- package/dist/js/components/src/components/TextFieldBase/TextFieldBase.mjs.map +0 -1
- package/dist/js/components/src/views/SeparatorView.mjs +0 -15
- package/dist/js/components/src/views/SeparatorView.mjs.map +0 -1
- package/dist/types/components/List/components/Header/components/Filters/CombinedFilterMenu.d.ts +0 -3
- package/dist/types/components/List/components/Header/components/Filters/CombinedFilterMenu.d.ts.map +0 -1
- package/dist/types/components/List/components/Header/components/Filters/FilterMenu.d.ts.map +0 -1
- package/dist/types/components/List/components/Header/components/Filters/FilterMenuItem.d.ts.map +0 -1
- package/dist/types/components/List/components/Header/components/Filters/FilterMenuList.d.ts +0 -3
- package/dist/types/components/List/components/Header/components/Filters/FilterMenuList.d.ts.map +0 -1
- package/dist/types/components/List/components/Header/components/Settings/SortingMenu.d.ts +0 -3
- package/dist/types/components/List/components/Header/components/Settings/SortingMenu.d.ts.map +0 -1
- package/dist/types/components/List/components/Header/components/Settings/SortingMenuItem.d.ts.map +0 -1
- package/dist/types/components/List/components/Header/components/Settings/ViewModeMenu.d.ts +0 -3
- package/dist/types/components/List/components/Header/components/Settings/ViewModeMenu.d.ts.map +0 -1
- package/dist/types/components/List/components/Header/components/Settings/ViewModeMenuItem.d.ts.map +0 -1
- package/dist/types/components/Modal/view.d.ts +0 -8
- package/dist/types/components/Modal/view.d.ts.map +0 -1
- package/dist/types/components/TextFieldBase/TextFieldBase.browser.test.d.ts +0 -2
- package/dist/types/components/TextFieldBase/TextFieldBase.browser.test.d.ts.map +0 -1
- package/dist/types/components/TextFieldBase/TextFieldBase.d.ts +0 -13
- package/dist/types/components/TextFieldBase/TextFieldBase.d.ts.map +0 -1
- package/dist/types/components/TextFieldBase/index.d.ts +0 -3
- package/dist/types/components/TextFieldBase/index.d.ts.map +0 -1
- /package/dist/js/components/src/components/List/components/Header/components/{Filters → FilterContextMenu}/FilterMenuItem.mjs +0 -0
- /package/dist/js/components/src/components/List/components/Header/components/{Settings → SortingContextMenu}/SortingMenuItem.mjs +0 -0
- /package/dist/js/components/src/components/List/components/Header/components/{Settings → ViewModeContextMenu}/ViewModeMenuItem.mjs +0 -0
- /package/dist/types/components/List/components/Header/components/{Filters → FilterContextMenu}/FilterMenuItem.d.ts +0 -0
- /package/dist/types/components/List/components/Header/components/{Settings → SortingContextMenu}/SortingMenuItem.d.ts +0 -0
- /package/dist/types/components/List/components/Header/components/{Settings → ViewModeContextMenu}/ViewModeMenuItem.d.ts +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
/* */
|
|
3
|
+
const locales = {"de-DE": { "textField.characters": (args, formatter) => `${formatter.select({0: () => `${args.count}`, other: () => `${args.count}/${args.maxCount}`}, args.maxCount)} Zeichen`,
|
|
4
|
+
"textField.password.hide": `Passwort verbergen`,
|
|
5
|
+
"textField.password.show": `Passwort anzeigen`,
|
|
6
|
+
},"en-US": { "textField.characters": (args, formatter) => `${formatter.select({0: () => `${args.count}`, other: () => `${args.count}/${args.maxCount}`}, args.maxCount)} characters`,
|
|
7
|
+
"textField.password.hide": `Show password`,
|
|
8
|
+
"textField.password.show": `Hide password`,
|
|
9
|
+
}};
|
|
10
|
+
|
|
11
|
+
export { locales as default };
|
|
12
|
+
//# sourceMappingURL=_.locale.json@16189d7d260d7331b0e0a1936d5c7c52.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_.locale.json@16189d7d260d7331b0e0a1936d5c7c52.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
/* */
|
|
3
|
+
const locales = {"de-DE": { "textArea.characters": (args, formatter) => `${formatter.select({0: () => `${args.count}`, other: () => `${args.count}/${args.maxCount}`}, args.maxCount)} Zeichen`,
|
|
4
|
+
},"en-US": { "textArea.characters": (args, formatter) => `${formatter.select({0: () => `${args.count}`, other: () => `${args.count}/${args.maxCount}`}, args.maxCount)} characters`,
|
|
5
|
+
}};
|
|
6
|
+
|
|
7
|
+
export { locales as default };
|
|
8
|
+
//# sourceMappingURL=_.locale.json@6922640321d6c379322b09cbcf0dcdb3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_.locale.json@6922640321d6c379322b09cbcf0dcdb3.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
3
|
const locales = {"de-DE": { "list.filters": `Filter`,
|
|
4
|
+
"list.filters.all": `Alle Filter`,
|
|
4
5
|
"list.filters.clear": `Filter entfernen`,
|
|
5
6
|
"list.filters.reset": `Filter zurücksetzen`,
|
|
6
7
|
"list.filters.store": `Filter speichern`,
|
|
@@ -8,6 +9,8 @@ const locales = {"de-DE": { "list.filters": `Filter`,
|
|
|
8
9
|
"list.noResult.text": `Deine Suche ergab keine Ergebnisse. Bitte passe die Suchanfrage oder deine Filter an.`,
|
|
9
10
|
"list.options": `Optionen`,
|
|
10
11
|
"list.paginationInfo": (args) => `${args.visibleItemsCount} von insgesamt ${args.totalItemsCount} angezeigt`,
|
|
12
|
+
"list.reset": `Zurücksetzen`,
|
|
13
|
+
"list.results.show": (args, formatter) => `${formatter.select({1: () => `${args.totalItemCount} Ergebnis`, other: () => `${args.totalItemCount} Ergebnisse`}, args.totalItemCount)} anzeigen`,
|
|
11
14
|
"list.search.announce.noResult": (args) => `Keine Treffer für "${args.searchTerm}"`,
|
|
12
15
|
"list.search.announce.result": (args) => `${args.resultCount} Treffer für "${args.searchTerm}"`,
|
|
13
16
|
"list.settings": `Einstellungen`,
|
|
@@ -20,6 +23,7 @@ const locales = {"de-DE": { "list.filters": `Filter`,
|
|
|
20
23
|
"list.toggleExpandButton.collapse": `Weniger anzeigen`,
|
|
21
24
|
"list.toggleExpandButton.expand": `Mehr anzeigen`,
|
|
22
25
|
},"en-US": { "list.filters": `Filters`,
|
|
26
|
+
"list.filters.all": `All filters`,
|
|
23
27
|
"list.filters.clear": `Clear filters`,
|
|
24
28
|
"list.filters.reset": `Reset filters`,
|
|
25
29
|
"list.filters.store": `Store filters`,
|
|
@@ -27,6 +31,8 @@ const locales = {"de-DE": { "list.filters": `Filter`,
|
|
|
27
31
|
"list.noResult.text": `Your search did not return any results. Please adjust the search query or your filters.`,
|
|
28
32
|
"list.options": `Options`,
|
|
29
33
|
"list.paginationInfo": (args) => `Showing ${args.visibleItemsCount} of ${args.totalItemsCount}`,
|
|
34
|
+
"list.reset": `Reset`,
|
|
35
|
+
"list.results.show": (args, formatter) => `Show ${formatter.select({1: () => `${args.totalItemCount} result`, other: () => `${args.totalItemCount} Results`}, args.totalItemCount)}`,
|
|
30
36
|
"list.search.announce.noResult": (args) => `${args.resultCount} matches for "${args.searchTerm}"`,
|
|
31
37
|
"list.search.announce.result": (args) => `No matches for "${args.searchTerm}"`,
|
|
32
38
|
"list.settings": `Settings`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -33,8 +33,11 @@ import 'remeda';
|
|
|
33
33
|
import '@react-aria/utils';
|
|
34
34
|
import 'dot-prop';
|
|
35
35
|
import '../../lib/tokens/CategoricalColors.mjs';
|
|
36
|
-
import '../Heading/Heading.mjs';
|
|
37
36
|
import '../Text/Text.mjs';
|
|
37
|
+
import '@mittwald/react-use-promise';
|
|
38
|
+
import '../Heading/Heading.mjs';
|
|
39
|
+
import '../../views/SkeletonTextView.mjs';
|
|
40
|
+
import '../../views/LoadingSpinnerView.mjs';
|
|
38
41
|
import { CartesianGrid } from './components/CartesianGrid/CartesianGrid.mjs';
|
|
39
42
|
import '../Checkbox/Checkbox.mjs';
|
|
40
43
|
import '../CheckboxButton/CheckboxButton.mjs';
|
|
@@ -91,7 +94,6 @@ import 'luxon';
|
|
|
91
94
|
import '../NumberField/NumberField.mjs';
|
|
92
95
|
import '../Option/Option.mjs';
|
|
93
96
|
import '../../views/OverlayContentView.mjs';
|
|
94
|
-
import '../../views/LoadingSpinnerView.mjs';
|
|
95
97
|
import '../PasswordCreationField/PasswordCreationField.mjs';
|
|
96
98
|
import '../Popover/components/PopoverTrigger/PopoverTrigger.mjs';
|
|
97
99
|
import '../Popover/Popover.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CartesianChart.mjs","sources":["../../../../../../src/components/CartesianChart/CartesianChart.tsx"],"sourcesContent":["import * as Recharts from \"recharts\";\nimport React, {\n Children,\n useEffect,\n useRef,\n useState,\n type ComponentProps,\n type FC,\n type PropsWithChildren,\n type ReactElement,\n type SVGProps,\n} from \"react\";\nimport clsx from \"clsx\";\nimport styles from \"./CartesianChart.module.scss\";\nimport Wrap from \"../Wrap\";\nimport { CartesianGrid } from \"../public\";\n\nexport interface CartesianChartEmptyViewProps {\n data?: ComponentProps<typeof Recharts.ComposedChart>[\"data\"];\n}\n\nexport interface CartesianChartProps\n extends\n Pick<\n ComponentProps<typeof Recharts.ComposedChart>,\n \"data\" | \"className\" | \"syncId\" | \"syncMethod\"\n >,\n PropsWithChildren {\n height?: string;\n /** View that is provided when data is empty/undefined */\n emptyView?: React.ComponentType<CartesianChartEmptyViewProps>;\n /**\n * Allow the height controlling container to set flex-grow: 1. Can only be\n * used in combination with `height`\n */\n flexGrow?: boolean;\n}\n\n/** @flr-generate all */\nexport const CartesianChart: FC<CartesianChartProps> = (props) => {\n const {\n children,\n data,\n className,\n height,\n flexGrow,\n emptyView: EmptyView,\n ...rest\n } = props;\n const rootClassName = clsx(styles.cartesianChart, className);\n\n const otherChildren: ReactElement[] = [];\n const gridChildren: ReactElement[] = [];\n\n Children.forEach(children, (child) => {\n if (!child) return;\n const element = child as ReactElement;\n\n if (element.type === CartesianGrid) {\n gridChildren.push(element);\n } else {\n otherChildren.push(element);\n }\n });\n\n const showEmptyView = (!data || data.length === 0) && EmptyView;\n\n const chartContainerRef = useRef<HTMLDivElement>(null);\n const [viewDimensions, setViewDimensions] = useState<Partial<\n SVGProps<SVGForeignObjectElement>\n > | null>(null);\n\n // resizing the foreignObject for the EmptyView on size changes\n useEffect(() => {\n if (showEmptyView) {\n const updateDimensions = () => {\n const svg = chartContainerRef.current?.querySelector(\n \"svg\",\n ) as SVGSVGElement | null;\n if (!svg) return;\n\n const clip = svg.querySelector(\"clipPath rect\");\n if (clip) {\n const x = parseFloat(clip.getAttribute(\"x\") ?? \"0\");\n const y = parseFloat(clip.getAttribute(\"y\") ?? \"0\");\n const width = parseFloat(clip.getAttribute(\"width\") ?? \"0\");\n const height = parseFloat(clip.getAttribute(\"height\") ?? \"0\");\n setViewDimensions({ x, y, width, height });\n }\n };\n\n updateDimensions();\n\n const container = chartContainerRef.current;\n const observer = new ResizeObserver(updateDimensions);\n if (container) observer.observe(container);\n\n return () => {\n observer.disconnect();\n };\n }\n }, [showEmptyView, chartContainerRef.current]);\n\n return (\n <Wrap if={height}>\n <div\n style={{ height, flex: flexGrow ? 1 : undefined }}\n ref={chartContainerRef}\n >\n <Recharts.ResponsiveContainer\n initialDimension={{\n // fix warning on initial render\n width: 1,\n height: 1,\n }}\n >\n <Recharts.ComposedChart\n data={data}\n className={rootClassName}\n {...rest}\n >\n {!showEmptyView && gridChildren}\n {otherChildren}\n {showEmptyView && viewDimensions && (\n <foreignObject {...viewDimensions}>\n <div className={styles.emptyViewContainer}>\n <EmptyView data={data} />\n </div>\n </foreignObject>\n )}\n </Recharts.ComposedChart>\n </Recharts.ResponsiveContainer>\n </div>\n </Wrap>\n );\n};\n\nexport default CartesianChart;\n"],"names":["height"],"mappings":"
|
|
1
|
+
{"version":3,"file":"CartesianChart.mjs","sources":["../../../../../../src/components/CartesianChart/CartesianChart.tsx"],"sourcesContent":["import * as Recharts from \"recharts\";\nimport React, {\n Children,\n useEffect,\n useRef,\n useState,\n type ComponentProps,\n type FC,\n type PropsWithChildren,\n type ReactElement,\n type SVGProps,\n} from \"react\";\nimport clsx from \"clsx\";\nimport styles from \"./CartesianChart.module.scss\";\nimport Wrap from \"../Wrap\";\nimport { CartesianGrid } from \"../public\";\n\nexport interface CartesianChartEmptyViewProps {\n data?: ComponentProps<typeof Recharts.ComposedChart>[\"data\"];\n}\n\nexport interface CartesianChartProps\n extends\n Pick<\n ComponentProps<typeof Recharts.ComposedChart>,\n \"data\" | \"className\" | \"syncId\" | \"syncMethod\"\n >,\n PropsWithChildren {\n height?: string;\n /** View that is provided when data is empty/undefined */\n emptyView?: React.ComponentType<CartesianChartEmptyViewProps>;\n /**\n * Allow the height controlling container to set flex-grow: 1. Can only be\n * used in combination with `height`\n */\n flexGrow?: boolean;\n}\n\n/** @flr-generate all */\nexport const CartesianChart: FC<CartesianChartProps> = (props) => {\n const {\n children,\n data,\n className,\n height,\n flexGrow,\n emptyView: EmptyView,\n ...rest\n } = props;\n const rootClassName = clsx(styles.cartesianChart, className);\n\n const otherChildren: ReactElement[] = [];\n const gridChildren: ReactElement[] = [];\n\n Children.forEach(children, (child) => {\n if (!child) return;\n const element = child as ReactElement;\n\n if (element.type === CartesianGrid) {\n gridChildren.push(element);\n } else {\n otherChildren.push(element);\n }\n });\n\n const showEmptyView = (!data || data.length === 0) && EmptyView;\n\n const chartContainerRef = useRef<HTMLDivElement>(null);\n const [viewDimensions, setViewDimensions] = useState<Partial<\n SVGProps<SVGForeignObjectElement>\n > | null>(null);\n\n // resizing the foreignObject for the EmptyView on size changes\n useEffect(() => {\n if (showEmptyView) {\n const updateDimensions = () => {\n const svg = chartContainerRef.current?.querySelector(\n \"svg\",\n ) as SVGSVGElement | null;\n if (!svg) return;\n\n const clip = svg.querySelector(\"clipPath rect\");\n if (clip) {\n const x = parseFloat(clip.getAttribute(\"x\") ?? \"0\");\n const y = parseFloat(clip.getAttribute(\"y\") ?? \"0\");\n const width = parseFloat(clip.getAttribute(\"width\") ?? \"0\");\n const height = parseFloat(clip.getAttribute(\"height\") ?? \"0\");\n setViewDimensions({ x, y, width, height });\n }\n };\n\n updateDimensions();\n\n const container = chartContainerRef.current;\n const observer = new ResizeObserver(updateDimensions);\n if (container) observer.observe(container);\n\n return () => {\n observer.disconnect();\n };\n }\n }, [showEmptyView, chartContainerRef.current]);\n\n return (\n <Wrap if={height}>\n <div\n style={{ height, flex: flexGrow ? 1 : undefined }}\n ref={chartContainerRef}\n >\n <Recharts.ResponsiveContainer\n initialDimension={{\n // fix warning on initial render\n width: 1,\n height: 1,\n }}\n >\n <Recharts.ComposedChart\n data={data}\n className={rootClassName}\n {...rest}\n >\n {!showEmptyView && gridChildren}\n {otherChildren}\n {showEmptyView && viewDimensions && (\n <foreignObject {...viewDimensions}>\n <div className={styles.emptyViewContainer}>\n <EmptyView data={data} />\n </div>\n </foreignObject>\n )}\n </Recharts.ComposedChart>\n </Recharts.ResponsiveContainer>\n </div>\n </Wrap>\n );\n};\n\nexport default CartesianChart;\n"],"names":["height"],"mappings":"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"}
|
package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/ChartTooltip.mjs
CHANGED
|
@@ -1,31 +1,37 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
3
|
import { jsx } from 'react/jsx-runtime';
|
|
4
|
-
import
|
|
4
|
+
import { Suspense } from 'react';
|
|
5
|
+
import { Tooltip } from 'recharts';
|
|
6
|
+
import '../../../Text/Text.mjs';
|
|
7
|
+
import clsx from 'clsx';
|
|
8
|
+
import '../../../../lib/tokens/CategoricalColors.mjs';
|
|
9
|
+
import '@mittwald/react-use-promise';
|
|
5
10
|
import { TooltipContent } from './TooltipContent.mjs';
|
|
11
|
+
import styles from './ChartTooltip.module.scss.mjs';
|
|
12
|
+
import LoadingSpinnerView from '../../../../views/LoadingSpinnerView.mjs';
|
|
6
13
|
|
|
7
14
|
const ChartTooltip = (props) => {
|
|
8
|
-
const {
|
|
15
|
+
const { headingFormatter, formatter, ...rest } = props;
|
|
9
16
|
return /* @__PURE__ */ jsx(
|
|
10
|
-
|
|
17
|
+
Tooltip,
|
|
11
18
|
{
|
|
12
19
|
...rest,
|
|
20
|
+
cursor: false,
|
|
13
21
|
content: (props2) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
return /* @__PURE__ */ jsx(
|
|
22
|
+
if (!props2.active || !props2.payload || props2.payload.length === 0) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const className = clsx(props2.wrapperClassName, styles.tooltip);
|
|
26
|
+
return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingSpinnerView, {}), children: /* @__PURE__ */ jsx(
|
|
20
27
|
TooltipContent,
|
|
21
28
|
{
|
|
22
|
-
|
|
29
|
+
...props2,
|
|
23
30
|
headingFormatter,
|
|
24
|
-
|
|
31
|
+
formatter
|
|
25
32
|
}
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
cursor: false
|
|
33
|
+
) }) });
|
|
34
|
+
}
|
|
29
35
|
}
|
|
30
36
|
);
|
|
31
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartTooltip.mjs","sources":["../../../../../../../../src/components/CartesianChart/components/ChartTooltip/ChartTooltip.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"ChartTooltip.mjs","sources":["../../../../../../../../src/components/CartesianChart/components/ChartTooltip/ChartTooltip.tsx"],"sourcesContent":["import React, { type FC, Suspense } from \"react\";\nimport { Tooltip, type TooltipProps } from \"recharts\";\nimport type {\n NameType,\n ValueType,\n} from \"recharts/types/component/DefaultTooltipContent\";\nimport { type TooltipPayloadItem } from \"@/components/CartesianChart/components/ChartTooltip/TooltipLegendItem\";\nimport { TooltipContent } from \"@/components/CartesianChart/components/ChartTooltip/TooltipContent\";\nimport clsx from \"clsx\";\nimport styles from \"./ChartTooltip.module.scss\";\nimport LoadingSpinnerView from \"@/views/LoadingSpinnerView\";\n\nexport type TooltipLineFormatter = (\n value: TooltipPayloadItem[\"value\"],\n name: TooltipPayloadItem[\"dataKey\"],\n index: number,\n unit?: TooltipPayloadItem[\"unit\"],\n) => Promise<string> | string;\n\nexport type TooltipHeadingFormatter = (\n title: string | number | undefined,\n) => Promise<string> | string;\n\nexport interface WithTooltipFormatters {\n /**\n * A formatter function for the lines in the tooltip. Can be used for purposes\n * like translations.\n */\n formatter?: TooltipLineFormatter;\n /**\n * A formatter function for the heading of the tooltip. Can be used for\n * purposes like translations.\n */\n headingFormatter?: TooltipHeadingFormatter;\n}\n\nexport interface ChartTooltipProps\n extends\n Pick<\n TooltipProps<ValueType, NameType>,\n \"wrapperClassName\" | \"allowEscapeViewBox\"\n >,\n WithTooltipFormatters {}\n\n/** @flr-generate all */\nexport const ChartTooltip: FC<ChartTooltipProps> = (props) => {\n const { headingFormatter, formatter, ...rest } = props;\n\n return (\n <Tooltip\n {...rest}\n cursor={false}\n content={(props) => {\n if (!props.active || !props.payload || props.payload.length === 0) {\n return null;\n }\n\n const className = clsx(props.wrapperClassName, styles.tooltip);\n return (\n <div className={className}>\n <Suspense fallback={<LoadingSpinnerView />}>\n <TooltipContent\n {...props}\n headingFormatter={headingFormatter}\n formatter={formatter}\n />\n </Suspense>\n </div>\n );\n }}\n />\n );\n};\n\nexport default ChartTooltip;\n"],"names":["props"],"mappings":";;;;;;;;;;;AA6CO,MAAM,YAAA,GAAsC,CAAC,KAAA,KAAU;AAC5D,EAAA,MAAM,EAAE,gBAAA,EAAkB,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAEjD,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,CAACA,MAAAA,KAAU;AAClB,QAAA,IAAI,CAACA,OAAM,MAAA,IAAU,CAACA,OAAM,OAAA,IAAWA,MAAAA,CAAM,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AACjE,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAM,SAAA,GAAY,IAAA,CAAKA,MAAAA,CAAM,gBAAA,EAAkB,OAAO,OAAO,CAAA;AAC7D,QAAA,uBACE,GAAA,CAAC,SAAI,SAAA,EACH,QAAA,kBAAA,GAAA,CAAC,YAAS,QAAA,kBAAU,GAAA,CAAC,sBAAmB,CAAA,EACtC,QAAA,kBAAA,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACE,GAAGA,MAAAA;AAAA,YACJ,gBAAA;AAAA,YACA;AAAA;AAAA,WAEJ,CAAA,EACF,CAAA;AAAA,MAEJ;AAAA;AAAA,GACF;AAEJ;;;;"}
|
package/dist/js/components/src/components/CartesianChart/components/ChartTooltip/TooltipContent.mjs
CHANGED
|
@@ -1,28 +1,30 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
|
-
import { jsxs,
|
|
4
|
-
import
|
|
3
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
|
+
import { Suspense } from 'react';
|
|
5
|
+
import { usePromise } from '@mittwald/react-use-promise';
|
|
5
6
|
import { Heading } from '../../../Heading/Heading.mjs';
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
7
|
+
import { TooltipLegendItem } from './TooltipLegendItem.mjs';
|
|
8
|
+
import SkeletonTextView from '../../../../views/SkeletonTextView.mjs';
|
|
8
9
|
|
|
9
10
|
const TooltipContent = (props) => {
|
|
10
|
-
const {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
11
|
+
const { headingFormatter, formatter, label, payload } = props;
|
|
12
|
+
const formattedHeading = usePromise(
|
|
13
|
+
async (label2, formatter2) => {
|
|
14
|
+
if (!formatter2) {
|
|
15
|
+
return label2;
|
|
16
|
+
}
|
|
17
|
+
return formatter2(label2);
|
|
18
|
+
},
|
|
19
|
+
[label, headingFormatter]
|
|
20
|
+
);
|
|
21
|
+
const items = payload.filter((item) => item.fill !== "none").map((item, index) => {
|
|
22
|
+
return /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(SkeletonTextView, {}), children: /* @__PURE__ */ jsx(TooltipLegendItem, { formatter, item, index }) }, item.dataKey);
|
|
23
|
+
});
|
|
24
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
25
|
+
/* @__PURE__ */ jsx(Heading, { level: 4, children: formattedHeading }),
|
|
26
|
+
items
|
|
27
|
+
] });
|
|
26
28
|
};
|
|
27
29
|
|
|
28
30
|
export { TooltipContent };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipContent.mjs","sources":["../../../../../../../../src/components/CartesianChart/components/ChartTooltip/TooltipContent.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"TooltipContent.mjs","sources":["../../../../../../../../src/components/CartesianChart/components/ChartTooltip/TooltipContent.tsx"],"sourcesContent":["import React, { type FC, Suspense } from \"react\";\nimport type { TooltipContentProps } from \"recharts\";\nimport type {\n NameType,\n ValueType,\n} from \"recharts/types/component/DefaultTooltipContent\";\nimport { usePromise } from \"@mittwald/react-use-promise\";\nimport Heading from \"@/components/Heading\";\nimport type { WithTooltipFormatters } from \"@/components/CartesianChart\";\nimport { TooltipLegendItem } from \"@/components/CartesianChart/components/ChartTooltip/TooltipLegendItem\";\nimport SkeletonTextView from \"@/views/SkeletonTextView\";\n\n/** @internal */\nexport const TooltipContent: FC<\n WithTooltipFormatters &\n Omit<TooltipContentProps<ValueType, NameType>, \"formatter\">\n> = (props) => {\n const { headingFormatter, formatter, label, payload } = props;\n\n const formattedHeading = usePromise(\n async (label, formatter) => {\n if (!formatter) {\n return label;\n }\n\n return formatter(label);\n },\n [label, headingFormatter] as const,\n );\n\n const items = payload\n .filter((item) => item.fill !== \"none\")\n .map((item, index) => {\n return (\n <Suspense key={item.dataKey} fallback={<SkeletonTextView />}>\n <TooltipLegendItem formatter={formatter} item={item} index={index} />\n </Suspense>\n );\n });\n\n return (\n <>\n <Heading level={4}>{formattedHeading}</Heading>\n {items}\n </>\n );\n};\n"],"names":["label","formatter"],"mappings":";;;;;;;AAaO,MAAM,cAAA,GAGT,CAAC,KAAA,KAAU;AACb,EAAA,MAAM,EAAE,gBAAA,EAAkB,SAAA,EAAW,KAAA,EAAO,SAAQ,GAAI,KAAA;AAExD,EAAA,MAAM,gBAAA,GAAmB,UAAA;AAAA,IACvB,OAAOA,QAAOC,UAAAA,KAAc;AAC1B,MAAA,IAAI,CAACA,UAAAA,EAAW;AACd,QAAA,OAAOD,MAAAA;AAAA,MACT;AAEA,MAAA,OAAOC,WAAUD,MAAK,CAAA;AAAA,IACxB,CAAA;AAAA,IACA,CAAC,OAAO,gBAAgB;AAAA,GAC1B;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA,CACX,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS,MAAM,CAAA,CACrC,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AACpB,IAAA,uBACE,GAAA,CAAC,QAAA,EAAA,EAA4B,QAAA,kBAAU,GAAA,CAAC,gBAAA,EAAA,EAAiB,CAAA,EACvD,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAsB,IAAA,EAAY,KAAA,EAAc,CAAA,EAAA,EADtD,KAAK,OAEpB,CAAA;AAAA,EAEJ,CAAC,CAAA;AAEH,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,CAAA,EAAI,QAAA,EAAA,gBAAA,EAAiB,CAAA;AAAA,IACpC;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
/* */
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
import { LegendItem } from '../../../Legend/components/LegendItem/LegendItem.mjs';
|
|
5
|
+
import { usePromise } from '@mittwald/react-use-promise';
|
|
6
|
+
|
|
7
|
+
const TooltipLegendItem = ({
|
|
8
|
+
formatter,
|
|
9
|
+
item,
|
|
10
|
+
index
|
|
11
|
+
}) => {
|
|
12
|
+
const { value, dataKey, unit, fill } = item;
|
|
13
|
+
const formattedLabel = usePromise(
|
|
14
|
+
async (value2, dataKey2, index2, unit2, formatter2) => {
|
|
15
|
+
if (!formatter2) {
|
|
16
|
+
return `${dataKey2}: ${value2}${unit2 ? ` ${unit2}` : ""}`;
|
|
17
|
+
}
|
|
18
|
+
return formatter2(value2, dataKey2, index2, unit2);
|
|
19
|
+
},
|
|
20
|
+
[value, dataKey, index, unit, formatter]
|
|
21
|
+
);
|
|
22
|
+
return /* @__PURE__ */ jsx(LegendItem, { color: fill, children: formattedLabel });
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { TooltipLegendItem };
|
|
26
|
+
//# sourceMappingURL=TooltipLegendItem.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TooltipLegendItem.mjs","sources":["../../../../../../../../src/components/CartesianChart/components/ChartTooltip/TooltipLegendItem.tsx"],"sourcesContent":["import { LegendItem } from \"@/components/Legend/components/LegendItem\";\nimport type { WithTooltipFormatters } from \"./ChartTooltip\";\nimport type { FC } from \"react\";\nimport type { DefaultTooltipContentProps } from \"recharts\";\nimport type {\n NameType,\n ValueType,\n} from \"recharts/types/component/DefaultTooltipContent\";\nimport { usePromise } from \"@mittwald/react-use-promise\";\n\n/** @internal */\nexport type TooltipPayloadItem = NonNullable<\n DefaultTooltipContentProps<ValueType, NameType>[\"payload\"]\n>[number];\n\n/** @internal */\ninterface LegendItemLabelProps extends Pick<\n WithTooltipFormatters,\n \"formatter\"\n> {\n item: TooltipPayloadItem;\n index: number;\n}\n\n/** @internal */\nexport const TooltipLegendItem: FC<LegendItemLabelProps> = ({\n formatter,\n item,\n index,\n}) => {\n const { value, dataKey, unit, fill } = item;\n\n const formattedLabel = usePromise(\n async (value, dataKey, index, unit, formatter) => {\n if (!formatter) {\n return `${dataKey}: ${value}${unit ? ` ${unit}` : \"\"}`;\n }\n\n return formatter(value, dataKey, index, unit);\n },\n [value, dataKey, index, unit, formatter] as const,\n );\n\n return <LegendItem color={fill}>{formattedLabel}</LegendItem>;\n};\n"],"names":["value","dataKey","index","unit","formatter"],"mappings":";;;;AAyBO,MAAM,oBAA8C,CAAC;AAAA,EAC1D,SAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,IAAA,EAAM,MAAK,GAAI,IAAA;AAEvC,EAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,IACrB,OAAOA,MAAAA,EAAOC,QAAAA,EAASC,MAAAA,EAAOC,OAAMC,UAAAA,KAAc;AAChD,MAAA,IAAI,CAACA,UAAAA,EAAW;AACd,QAAA,OAAO,CAAA,EAAGH,QAAO,CAAA,EAAA,EAAKD,MAAK,GAAGG,KAAAA,GAAO,CAAA,CAAA,EAAIA,KAAI,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AAAA,MACtD;AAEA,MAAA,OAAOC,UAAAA,CAAUJ,MAAAA,EAAOC,QAAAA,EAASC,MAAAA,EAAOC,KAAI,CAAA;AAAA,IAC9C,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,MAAM,SAAS;AAAA,GACzC;AAEA,EAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,IAAA,EAAO,QAAA,EAAA,cAAA,EAAe,CAAA;AAClD;;;;"}
|
|
@@ -7,12 +7,12 @@ import clsx from 'clsx';
|
|
|
7
7
|
import { ActiveFilters } from './components/ActiveFilters/ActiveFilters.mjs';
|
|
8
8
|
import { useList } from '../../hooks/useList.mjs';
|
|
9
9
|
import { SearchField } from './components/SearchField/SearchField.mjs';
|
|
10
|
-
import {
|
|
10
|
+
import { ViewModeContextMenu } from './components/ViewModeContextMenu/ViewModeContextMenu.mjs';
|
|
11
11
|
import { TunnelExit } from '@mittwald/react-tunnel';
|
|
12
12
|
import DivView from '../../../../views/DivView.mjs';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
13
|
+
import { SortingContextMenu } from './components/SortingContextMenu/SortingContextMenu.mjs';
|
|
14
|
+
import { FilterContextMenus } from './components/FilterContextMenu/FilterContextMenus.mjs';
|
|
15
|
+
import { AllFiltersModal } from './components/AllFiltersModal/AllFiltersModal.mjs';
|
|
16
16
|
import { useAvailableViewModes } from './lib.mjs';
|
|
17
17
|
|
|
18
18
|
const Header = (props) => {
|
|
@@ -32,10 +32,10 @@ const Header = (props) => {
|
|
|
32
32
|
/* @__PURE__ */ jsxs(DivView, { className: headerStyles.headerContent, children: [
|
|
33
33
|
/* @__PURE__ */ jsx(TunnelExit, { id: "actions" }),
|
|
34
34
|
hasOptions && /* @__PURE__ */ jsxs(DivView, { className: headerStyles.options, children: [
|
|
35
|
-
/* @__PURE__ */ jsx(
|
|
36
|
-
/* @__PURE__ */ jsx(
|
|
37
|
-
/* @__PURE__ */ jsx(
|
|
38
|
-
/* @__PURE__ */ jsx(
|
|
35
|
+
/* @__PURE__ */ jsx(ViewModeContextMenu, {}),
|
|
36
|
+
/* @__PURE__ */ jsx(SortingContextMenu, {}),
|
|
37
|
+
/* @__PURE__ */ jsx(FilterContextMenus, {}),
|
|
38
|
+
/* @__PURE__ */ jsx(AllFiltersModal, {}),
|
|
39
39
|
list.search && /* @__PURE__ */ jsx(SearchField, { search: list.search })
|
|
40
40
|
] })
|
|
41
41
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.mjs","sources":["../../../../../../../../src/components/List/components/Header/Header.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport styles from \"./Header.module.css\";\nimport clsx from \"clsx\";\nimport { ActiveFilters } from \"@/components/List/components/Header/components/ActiveFilters\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport { SearchField } from \"@/components/List/components/Header/components/SearchField/SearchField\";\nimport {
|
|
1
|
+
{"version":3,"file":"Header.mjs","sources":["../../../../../../../../src/components/List/components/Header/Header.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport styles from \"./Header.module.css\";\nimport clsx from \"clsx\";\nimport { ActiveFilters } from \"@/components/List/components/Header/components/ActiveFilters\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport { SearchField } from \"@/components/List/components/Header/components/SearchField/SearchField\";\nimport { ViewModeContextMenu } from \"@/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu\";\nimport { TunnelExit } from \"@mittwald/react-tunnel\";\nimport DivView from \"@/views/DivView\";\nimport { SortingContextMenu } from \"@/components/List/components/Header/components/SortingContextMenu/SortingContextMenu\";\nimport { FilterContextMenus } from \"@/components/List/components/Header/components/FilterContextMenu/FilterContextMenus\";\nimport { AllFiltersModal } from \"@/components/List/components/Header/components/AllFiltersModal/AllFiltersModal\";\nimport { useAvailableViewModes } from \"@/components/List/components/Header/lib\";\n\nexport const Header: FC<PropsWithClassName> = (props) => {\n const { className } = props;\n const list = useList();\n\n const availableViewModes = useAvailableViewModes();\n\n const hasOptions =\n list.filters.length > 0 ||\n list.visibleSorting.length > 0 ||\n list.search ||\n availableViewModes.length > 1;\n\n return (\n <DivView\n className={clsx(\n className,\n styles.header,\n list.search && styles.withSearch,\n )}\n >\n <DivView className={styles.headerContent}>\n <TunnelExit id=\"actions\" />\n {hasOptions && (\n <DivView className={styles.options}>\n <ViewModeContextMenu />\n <SortingContextMenu />\n <FilterContextMenus />\n <AllFiltersModal />\n\n {list.search && <SearchField search={list.search} />}\n </DivView>\n )}\n </DivView>\n <ActiveFilters />\n </DivView>\n );\n};\n\nexport default Header;\n"],"names":["styles"],"mappings":";;;;;;;;;;;;;;;AAgBO,MAAM,MAAA,GAAiC,CAAC,KAAA,KAAU;AACvD,EAAA,MAAM,EAAE,WAAU,GAAI,KAAA;AACtB,EAAA,MAAM,OAAO,OAAA,EAAQ;AAErB,EAAA,MAAM,qBAAqB,qBAAA,EAAsB;AAEjD,EAAA,MAAM,UAAA,GACJ,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,IACtB,IAAA,CAAK,cAAA,CAAe,MAAA,GAAS,CAAA,IAC7B,IAAA,CAAK,MAAA,IACL,kBAAA,CAAmB,MAAA,GAAS,CAAA;AAE9B,EAAA,uBACE,IAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,IAAA;AAAA,QACT,SAAA;AAAA,QACAA,YAAA,CAAO,MAAA;AAAA,QACP,IAAA,CAAK,UAAUA,YAAA,CAAO;AAAA,OACxB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAWA,YAAA,CAAO,aAAA,EACzB,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,UAAA,EAAA,EAAW,IAAG,SAAA,EAAU,CAAA;AAAA,UACxB,UAAA,oBACC,IAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAWA,aAAO,OAAA,EACzB,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA;AAAA,gCACpB,kBAAA,EAAA,EAAmB,CAAA;AAAA,gCACnB,kBAAA,EAAA,EAAmB,CAAA;AAAA,gCACnB,eAAA,EAAA,EAAgB,CAAA;AAAA,YAEhB,KAAK,MAAA,oBAAU,GAAA,CAAC,WAAA,EAAA,EAAY,MAAA,EAAQ,KAAK,MAAA,EAAQ;AAAA,WAAA,EACpD;AAAA,SAAA,EAEJ,CAAA;AAAA,4BACC,aAAA,EAAA,EAAc;AAAA;AAAA;AAAA,GACjB;AAEJ;;;;"}
|
|
@@ -5,8 +5,8 @@ const headerContent = "flow--list--header--header-content";
|
|
|
5
5
|
const actions = "flow--list--header--actions";
|
|
6
6
|
const options = "flow--list--header--options";
|
|
7
7
|
const withSearch = "flow--list--header--with-search";
|
|
8
|
-
const
|
|
9
|
-
const
|
|
8
|
+
const hideOnDesktop = "flow--list--header--hide-on-desktop";
|
|
9
|
+
const hideOnMobile = "flow--list--header--hide-on-mobile";
|
|
10
10
|
const action = "flow--list--header--action";
|
|
11
11
|
const headerStyles = {
|
|
12
12
|
header: header,
|
|
@@ -14,10 +14,10 @@ const headerStyles = {
|
|
|
14
14
|
actions: actions,
|
|
15
15
|
options: options,
|
|
16
16
|
withSearch: withSearch,
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
hideOnDesktop: hideOnDesktop,
|
|
18
|
+
hideOnMobile: hideOnMobile,
|
|
19
19
|
action: action
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
export { action, actions, headerStyles as default,
|
|
22
|
+
export { action, actions, headerStyles as default, header, headerContent, hideOnDesktop, hideOnMobile, options, withSearch };
|
|
23
23
|
//# sourceMappingURL=Header.module.css.mjs.map
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
/* */
|
|
3
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
|
+
import 'react';
|
|
5
|
+
import '@tabler/icons-react';
|
|
6
|
+
import '../../../../../Icon/Icon.mjs';
|
|
7
|
+
import '../../../../../../views/IconView.mjs';
|
|
8
|
+
import { IconFilter } from '../../../../../Icon/components/icons/IconFilter.mjs';
|
|
9
|
+
import ButtonView from '../../../../../../views/ButtonView.mjs';
|
|
10
|
+
import 'invariant';
|
|
11
|
+
import 'react-aria-components';
|
|
12
|
+
import '../../../../../IllustratedMessage/IllustratedMessage.mjs';
|
|
13
|
+
import '../../../../../Heading/Heading.mjs';
|
|
14
|
+
import '../../../../../Text/Text.mjs';
|
|
15
|
+
import locales from '../../../../../../../../_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs';
|
|
16
|
+
import { useLocalizedStringFormatter } from 'react-aria';
|
|
17
|
+
import clsx from 'clsx';
|
|
18
|
+
import '@mittwald/react-tunnel';
|
|
19
|
+
import '../../../../../../views/ListItemViewContentView.mjs';
|
|
20
|
+
import '../../../../../../lib/propsContext/propsContext.mjs';
|
|
21
|
+
import '../../../../../../lib/propsContext/components/PropsContextProvider.mjs';
|
|
22
|
+
import '../../../../../../views/ContextMenuTriggerView.mjs';
|
|
23
|
+
import '../../../../../ColumnLayout/ColumnLayout.mjs';
|
|
24
|
+
import '../../../ListSummary/ListSummary.mjs';
|
|
25
|
+
import { useList } from '../../../../hooks/useList.mjs';
|
|
26
|
+
import '../../../../listContext.mjs';
|
|
27
|
+
import 'mobx';
|
|
28
|
+
import '../../../../List.mjs';
|
|
29
|
+
import headerStyles from '../../Header.module.css.mjs';
|
|
30
|
+
import ContentView from '../../../../../../views/ContentView.mjs';
|
|
31
|
+
import SectionView from '../../../../../../views/SectionView.mjs';
|
|
32
|
+
import { FilterAccordion } from './FilterAccordion.mjs';
|
|
33
|
+
import { ViewModeAccordion } from './ViewModeAccordion.mjs';
|
|
34
|
+
import TextView from '../../../../../../views/TextView.mjs';
|
|
35
|
+
import { SortingAccordion } from './SortingAccordion.mjs';
|
|
36
|
+
import ActionGroupView from '../../../../../../views/ActionGroupView.mjs';
|
|
37
|
+
import { useOverlayController } from '../../../../../../lib/controller/overlay/useOverlayController.mjs';
|
|
38
|
+
import HeadingView from '../../../../../../views/HeadingView.mjs';
|
|
39
|
+
import { ModalTrigger } from '../../../../../Modal/components/ModalTrigger/ModalTrigger.mjs';
|
|
40
|
+
import { Modal } from '../../../../../Modal/Modal.mjs';
|
|
41
|
+
import { SkeletonText } from '../../../../../SkeletonText/SkeletonText.mjs';
|
|
42
|
+
|
|
43
|
+
const AllFiltersModal = () => {
|
|
44
|
+
const list = useList();
|
|
45
|
+
const stringFormatter = useLocalizedStringFormatter(locales);
|
|
46
|
+
const isInitiallyLoading = list.loader.useIsInitiallyLoading();
|
|
47
|
+
const totalItemCount = list.batches.getTotalItemsCount() ?? list.items.entries.length;
|
|
48
|
+
const filterAccordions = list.filters.map((f) => /* @__PURE__ */ jsx(FilterAccordion, { filter: f }, f.name));
|
|
49
|
+
const accordions = [
|
|
50
|
+
/* @__PURE__ */ jsx(ViewModeAccordion, {}, "viewMode"),
|
|
51
|
+
/* @__PURE__ */ jsx(SortingAccordion, {}, "sorting"),
|
|
52
|
+
...filterAccordions
|
|
53
|
+
].filter(Boolean);
|
|
54
|
+
const hasSecondaryFilters = list.filters.some(
|
|
55
|
+
(f) => f.priority === "secondary"
|
|
56
|
+
);
|
|
57
|
+
const controller = useOverlayController("Modal");
|
|
58
|
+
if (accordions.length === 0) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return /* @__PURE__ */ jsxs(ModalTrigger, { controller, children: [
|
|
62
|
+
/* @__PURE__ */ jsxs(
|
|
63
|
+
ButtonView,
|
|
64
|
+
{
|
|
65
|
+
className: clsx(
|
|
66
|
+
headerStyles.hideOnMobile,
|
|
67
|
+
hasSecondaryFilters ? void 0 : headerStyles.hideOnDesktop
|
|
68
|
+
),
|
|
69
|
+
variant: "outline",
|
|
70
|
+
color: "secondary",
|
|
71
|
+
children: [
|
|
72
|
+
/* @__PURE__ */ jsx(TextView, { children: stringFormatter.format("list.filters.all") }),
|
|
73
|
+
/* @__PURE__ */ jsx(IconFilter, {})
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
),
|
|
77
|
+
/* @__PURE__ */ jsx(
|
|
78
|
+
ButtonView,
|
|
79
|
+
{
|
|
80
|
+
className: headerStyles.hideOnDesktop,
|
|
81
|
+
variant: "outline",
|
|
82
|
+
color: "secondary",
|
|
83
|
+
"aria-label": stringFormatter.format("list.filters.all"),
|
|
84
|
+
children: /* @__PURE__ */ jsx(IconFilter, {})
|
|
85
|
+
}
|
|
86
|
+
),
|
|
87
|
+
/* @__PURE__ */ jsxs(Modal, { offCanvas: true, controller, children: [
|
|
88
|
+
/* @__PURE__ */ jsx(HeadingView, { children: stringFormatter.format("list.filters.all") }),
|
|
89
|
+
/* @__PURE__ */ jsx(ContentView, { children: /* @__PURE__ */ jsxs(SectionView, { children: [
|
|
90
|
+
...accordions
|
|
91
|
+
] }) }),
|
|
92
|
+
/* @__PURE__ */ jsxs(ActionGroupView, { children: [
|
|
93
|
+
/* @__PURE__ */ jsx(ButtonView, { onPress: () => controller.close(), children: /* @__PURE__ */ jsx(TextView, { children: isInitiallyLoading ? /* @__PURE__ */ jsx(SkeletonText, { width: "16ch" }) : stringFormatter.format("list.results.show", {
|
|
94
|
+
totalItemCount
|
|
95
|
+
}) }) }),
|
|
96
|
+
/* @__PURE__ */ jsx(
|
|
97
|
+
ButtonView,
|
|
98
|
+
{
|
|
99
|
+
color: "secondary",
|
|
100
|
+
variant: "soft",
|
|
101
|
+
onPress: () => {
|
|
102
|
+
list.resetFilters();
|
|
103
|
+
controller.close();
|
|
104
|
+
},
|
|
105
|
+
children: stringFormatter.format("list.reset")
|
|
106
|
+
}
|
|
107
|
+
)
|
|
108
|
+
] })
|
|
109
|
+
] })
|
|
110
|
+
] });
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export { AllFiltersModal };
|
|
114
|
+
//# sourceMappingURL=AllFiltersModal.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AllFiltersModal.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport { IconFilter } from \"@/components/Icon/components/icons\";\nimport ButtonView from \"@/views/ButtonView\";\nimport { useList } from \"@/components/List\";\nimport styles from \"@/components/List/components/Header/Header.module.css\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport locales from \"../../../../locales/*.locale.json\";\nimport ContentView from \"@/views/ContentView\";\nimport SectionView from \"@/views/SectionView\";\nimport { FilterAccordion } from \"@/components/List/components/Header/components/AllFiltersModal/FilterAccordion\";\nimport { ViewModeAccordion } from \"@/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion\";\nimport TextView from \"@/views/TextView\";\nimport { SortingAccordion } from \"@/components/List/components/Header/components/AllFiltersModal/SortingAccordion\";\nimport ActionGroupView from \"@/views/ActionGroupView\";\nimport { useOverlayController } from \"@/lib/controller\";\nimport HeadingView from \"@/views/HeadingView\";\nimport clsx from \"clsx\";\nimport Modal, { ModalTrigger } from \"@/components/Modal\";\nimport { SkeletonText } from \"@/components/SkeletonText\";\n\nexport const AllFiltersModal: FC = () => {\n const list = useList();\n const stringFormatter = useLocalizedStringFormatter(locales);\n\n const isInitiallyLoading = list.loader.useIsInitiallyLoading();\n const totalItemCount =\n list.batches.getTotalItemsCount() ?? list.items.entries.length;\n\n const filterAccordions = list.filters.map((f) => (\n <FilterAccordion filter={f} key={f.name} />\n ));\n\n const accordions = [\n <ViewModeAccordion key=\"viewMode\" />,\n <SortingAccordion key=\"sorting\" />,\n ...filterAccordions,\n ].filter(Boolean);\n\n const hasSecondaryFilters = list.filters.some(\n (f) => f.priority === \"secondary\",\n );\n\n const controller = useOverlayController(\"Modal\");\n\n if (accordions.length === 0) {\n return null;\n }\n\n return (\n <ModalTrigger controller={controller}>\n <ButtonView\n className={clsx(\n styles.hideOnMobile,\n hasSecondaryFilters ? undefined : styles.hideOnDesktop,\n )}\n variant=\"outline\"\n color=\"secondary\"\n >\n <TextView>{stringFormatter.format(\"list.filters.all\")}</TextView>\n <IconFilter />\n </ButtonView>\n\n <ButtonView\n className={styles.hideOnDesktop}\n variant=\"outline\"\n color=\"secondary\"\n aria-label={stringFormatter.format(\"list.filters.all\")}\n >\n <IconFilter />\n </ButtonView>\n\n <Modal offCanvas controller={controller}>\n <HeadingView>{stringFormatter.format(\"list.filters.all\")}</HeadingView>\n <ContentView>\n <SectionView>{...accordions}</SectionView>\n </ContentView>\n\n <ActionGroupView>\n <ButtonView onPress={() => controller.close()}>\n <TextView>\n {isInitiallyLoading ? (\n <SkeletonText width=\"16ch\" />\n ) : (\n stringFormatter.format(\"list.results.show\", {\n totalItemCount,\n })\n )}\n </TextView>\n </ButtonView>\n <ButtonView\n color=\"secondary\"\n variant=\"soft\"\n onPress={() => {\n list.resetFilters();\n controller.close();\n }}\n >\n {stringFormatter.format(\"list.reset\")}\n </ButtonView>\n </ActionGroupView>\n </Modal>\n </ModalTrigger>\n );\n};\n"],"names":["styles"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
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 CheckboxGroupView from '../../../../../../views/CheckboxGroupView.mjs';
|
|
11
|
+
import CheckboxView from '../../../../../../views/CheckboxView.mjs';
|
|
12
|
+
|
|
13
|
+
const FilterAccordion = (props) => {
|
|
14
|
+
const { filter } = props;
|
|
15
|
+
const activeKeys = filter.values.filter((v) => v.isActive).map((v) => v.id);
|
|
16
|
+
return /* @__PURE__ */ jsxs(AccordionView, { children: [
|
|
17
|
+
/* @__PURE__ */ jsx(HeadingView, { children: filter.name ?? filter.property }),
|
|
18
|
+
/* @__PURE__ */ jsxs(ContentView, { children: [
|
|
19
|
+
filter.mode === "one" && /* @__PURE__ */ jsx(RadioGroupView, { value: activeKeys[0], m: [1, 1], children: filter.values.map((v) => /* @__PURE__ */ jsx(RadioView, { value: v.id, onPress: () => v.toggle(), children: v.render() }, v.id)) }),
|
|
20
|
+
filter.mode !== "one" && /* @__PURE__ */ jsx(CheckboxGroupView, { value: activeKeys, m: [1, 1], children: filter.values.map((v) => /* @__PURE__ */ jsx(CheckboxView, { value: v.id, onPress: () => v.toggle(), children: v.render() }, v.id)) })
|
|
21
|
+
] })
|
|
22
|
+
] });
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { FilterAccordion };
|
|
26
|
+
//# sourceMappingURL=FilterAccordion.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterAccordion.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/AllFiltersModal/FilterAccordion.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 CheckboxGroupView from \"@/views/CheckboxGroupView\";\nimport CheckboxView from \"@/views/CheckboxView\";\nimport type { Filter } from \"@/components/List/model/filter/Filter\";\n\ninterface Props {\n filter: Filter<never, never, never>;\n}\n\nexport const FilterAccordion: FC<Props> = (props) => {\n const { filter } = props;\n\n const activeKeys = filter.values.filter((v) => v.isActive).map((v) => v.id);\n\n return (\n <AccordionView>\n <HeadingView>{filter.name ?? filter.property}</HeadingView>\n <ContentView>\n {filter.mode === \"one\" && (\n <RadioGroupView value={activeKeys[0]} m={[1, 1]}>\n {filter.values.map((v) => (\n <RadioView key={v.id} value={v.id} onPress={() => v.toggle()}>\n {v.render()}\n </RadioView>\n ))}\n </RadioGroupView>\n )}\n {filter.mode !== \"one\" && (\n <CheckboxGroupView value={activeKeys} m={[1, 1]}>\n {filter.values.map((v) => (\n <CheckboxView key={v.id} value={v.id} onPress={() => v.toggle()}>\n {v.render()}\n </CheckboxView>\n ))}\n </CheckboxGroupView>\n )}\n </ContentView>\n </AccordionView>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AAcO,MAAM,eAAA,GAA6B,CAAC,KAAA,KAAU;AACnD,EAAA,MAAM,EAAE,QAAO,GAAI,KAAA;AAEnB,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AAE1E,EAAA,4BACG,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,MAAA,CAAO,IAAA,IAAQ,MAAA,CAAO,QAAA,EAAS,CAAA;AAAA,yBAC5C,WAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,MAAA,CAAO,IAAA,KAAS,KAAA,oBACf,GAAA,CAAC,cAAA,EAAA,EAAe,OAAO,UAAA,CAAW,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG,CAAC,CAAA,EAC3C,QAAA,EAAA,MAAA,CAAO,OAAO,GAAA,CAAI,CAAC,CAAA,qBAClB,GAAA,CAAC,SAAA,EAAA,EAAqB,KAAA,EAAO,CAAA,CAAE,EAAA,EAAI,SAAS,MAAM,CAAA,CAAE,MAAA,EAAO,EACxD,YAAE,MAAA,EAAO,EAAA,EADI,CAAA,CAAE,EAElB,CACD,CAAA,EACH,CAAA;AAAA,MAED,MAAA,CAAO,IAAA,KAAS,KAAA,oBACf,GAAA,CAAC,qBAAkB,KAAA,EAAO,UAAA,EAAY,CAAA,EAAG,CAAC,CAAA,EAAG,CAAC,CAAA,EAC3C,QAAA,EAAA,MAAA,CAAO,OAAO,GAAA,CAAI,CAAC,CAAA,qBAClB,GAAA,CAAC,YAAA,EAAA,EAAwB,KAAA,EAAO,CAAA,CAAE,EAAA,EAAI,SAAS,MAAM,CAAA,CAAE,MAAA,EAAO,EAC3D,YAAE,MAAA,EAAO,EAAA,EADO,CAAA,CAAE,EAErB,CACD,CAAA,EACH;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|