@astral/ui 4.34.0 → 4.34.2
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/components/Badge/styles.js +5 -0
- package/components/Badge/types.d.ts +1 -1
- package/components/Chip/Chip.js +3 -3
- package/components/Chip/ChipProvider/ChipProvider.d.ts +26 -0
- package/components/Chip/ChipProvider/ChipProvider.js +13 -0
- package/components/Chip/ChipProvider/index.d.ts +1 -0
- package/components/Chip/ChipProvider/index.js +1 -0
- package/components/Chip/index.d.ts +2 -1
- package/components/Chip/index.js +1 -0
- package/components/Chip/public.d.ts +2 -1
- package/components/Chip/public.js +1 -0
- package/components/Chip/styles.d.ts +7 -3
- package/components/Chip/styles.js +26 -2
- package/components/Chip/types.d.ts +21 -1
- package/components/Chip/useLogic/useLogic.d.ts +5 -4
- package/components/Chip/useLogic/useLogic.js +11 -3
- package/components/Counter/Counter.d.ts +5 -1
- package/components/Counter/Counter.js +1 -1
- package/components/Counter/types.d.ts +1 -1
- package/components/DashboardSidebarCounter/styles.d.ts +1 -0
- package/components/DataGridPaginationContainer/styles.js +1 -1
- package/components/MenuOrganization/faker.js +112 -18
- package/components/PageContent/styles.js +1 -0
- package/components/PageHeader/HeaderContent/FormFiltersProvider/FormFiltersProvider.d.ts +15 -0
- package/components/PageHeader/HeaderContent/FormFiltersProvider/FormFiltersProvider.js +8 -0
- package/components/PageHeader/HeaderContent/FormFiltersProvider/index.d.ts +1 -0
- package/components/PageHeader/HeaderContent/FormFiltersProvider/index.js +1 -0
- package/components/PageHeader/HeaderContent/HeaderContent.js +3 -2
- package/components/PageHeader/HeaderContent/index.d.ts +1 -0
- package/components/PageHeader/HeaderContent/index.js +1 -0
- package/components/PageHeader/HeaderContent/styles.d.ts +0 -4
- package/components/PageHeader/HeaderContent/styles.js +1 -10
- package/components/PageHeader/PageActions/PageActions.js +1 -1
- package/components/PageHeader/constants.d.ts +2 -0
- package/components/PageHeader/constants.js +2 -0
- package/components/PageHeader/index.d.ts +1 -0
- package/components/PageHeader/index.js +1 -0
- package/components/PageHeader/styles.js +21 -0
- package/components/PageLayoutContainer/styles.js +6 -0
- package/components/TagBadge/styles.js +2 -1
- package/hook-form/FormFilters/AllFiltersButton/styles.d.ts +1 -0
- package/hook-form/FormFilters/AllFiltersButton/types.d.ts +1 -0
- package/hook-form/FormFilters/AllFiltersButton/useLogic/useLogic.d.ts +1 -1
- package/hook-form/FormFilters/AllFiltersButton/useLogic/useLogic.js +21 -5
- package/hook-form/FormFilters/FormFilters.js +7 -4
- package/hook-form/FormFilters/FormFiltersDialog/FormFiltersDialog.js +4 -4
- package/hook-form/FormFilters/FormFiltersDialog/ResetButton/ResetButton.d.ts +6 -0
- package/hook-form/FormFilters/FormFiltersDialog/ResetButton/ResetButton.js +11 -0
- package/hook-form/FormFilters/FormFiltersDialog/ResetButton/index.d.ts +1 -0
- package/hook-form/FormFilters/FormFiltersDialog/ResetButton/index.js +1 -0
- package/hook-form/FormFilters/FormFiltersDialog/ResetButton/styles.d.ts +14 -0
- package/hook-form/FormFilters/FormFiltersDialog/ResetButton/styles.js +14 -0
- package/hook-form/FormFilters/FormFiltersDialog/ResetButton/useLogic/index.d.ts +1 -0
- package/hook-form/FormFilters/FormFiltersDialog/ResetButton/useLogic/index.js +1 -0
- package/hook-form/FormFilters/FormFiltersDialog/ResetButton/useLogic/useLogic.d.ts +6 -0
- package/hook-form/FormFilters/FormFiltersDialog/ResetButton/useLogic/useLogic.js +11 -0
- package/hook-form/FormFilters/FormFiltersDialog/styles.d.ts +1 -10
- package/hook-form/FormFilters/FormFiltersDialog/styles.js +1 -9
- package/hook-form/FormFilters/FormFiltersDialog/useLogic/useLogic.d.ts +4 -2
- package/hook-form/FormFilters/FormFiltersDialog/useLogic/useLogic.js +4 -5
- package/hook-form/FormFilters/FormFiltersSkeleton/FormFiltersSkeleton.js +4 -1
- package/hook-form/FormFilters/styles.d.ts +4 -0
- package/hook-form/FormFilters/styles.js +11 -2
- package/hook-form/FormFilters/types.d.ts +24 -4
- package/hook-form/FormFilters/useLogic/useLogic.d.ts +2 -1
- package/hook-form/FormFilters/useLogic/useLogic.js +13 -2
- package/hook-form/FormFilters/utils/checkIsFilledValue/checkIsFilledValue.d.ts +1 -0
- package/hook-form/FormFilters/utils/checkIsFilledValue/checkIsFilledValue.js +18 -0
- package/hook-form/FormFilters/utils/checkIsFilledValue/index.d.ts +1 -0
- package/hook-form/FormFilters/utils/checkIsFilledValue/index.js +1 -0
- package/hook-form/FormFilters/utils/getFilledCount/getFilledCount.d.ts +1 -0
- package/hook-form/FormFilters/utils/getFilledCount/getFilledCount.js +4 -0
- package/hook-form/FormFilters/utils/getFilledCount/index.d.ts +1 -0
- package/hook-form/FormFilters/utils/getFilledCount/index.js +1 -0
- package/hook-form/FormFilters/utils/index.d.ts +2 -0
- package/hook-form/FormFilters/utils/index.js +2 -0
- package/hook-form/FormQuickFilters/FormQuickFilters.d.ts +26 -0
- package/hook-form/FormQuickFilters/FormQuickFilters.js +46 -0
- package/hook-form/FormQuickFilters/constants.d.ts +6 -0
- package/hook-form/FormQuickFilters/constants.js +6 -0
- package/hook-form/FormQuickFilters/index.d.ts +2 -0
- package/hook-form/FormQuickFilters/index.js +1 -0
- package/hook-form/FormQuickFilters/public.d.ts +2 -0
- package/hook-form/FormQuickFilters/public.js +1 -0
- package/hook-form/FormQuickFilters/styles.d.ts +9 -0
- package/hook-form/FormQuickFilters/styles.js +16 -0
- package/hook-form/FormQuickFilters/types.d.ts +62 -0
- package/hook-form/FormQuickFilters/types.js +1 -0
- package/hook-form/FormQuickFilters/useLogic/useLogic.d.ts +18 -0
- package/hook-form/FormQuickFilters/useLogic/useLogic.js +59 -0
- package/hook-form/FormWizard/Footer/Footer.js +1 -1
- package/node/components/Badge/styles.js +5 -0
- package/node/components/Badge/types.d.ts +1 -1
- package/node/components/Chip/Chip.js +2 -2
- package/node/components/Chip/ChipProvider/ChipProvider.d.ts +26 -0
- package/node/components/Chip/ChipProvider/ChipProvider.js +17 -0
- package/node/components/Chip/ChipProvider/index.d.ts +1 -0
- package/node/components/Chip/ChipProvider/index.js +17 -0
- package/node/components/Chip/index.d.ts +2 -1
- package/node/components/Chip/index.js +3 -1
- package/node/components/Chip/public.d.ts +2 -1
- package/node/components/Chip/public.js +3 -1
- package/node/components/Chip/styles.d.ts +7 -3
- package/node/components/Chip/styles.js +27 -3
- package/node/components/Chip/types.d.ts +21 -1
- package/node/components/Chip/useLogic/useLogic.d.ts +5 -4
- package/node/components/Chip/useLogic/useLogic.js +10 -2
- package/node/components/Counter/Counter.d.ts +5 -1
- package/node/components/Counter/Counter.js +1 -1
- package/node/components/Counter/types.d.ts +1 -1
- package/node/components/DashboardSidebarCounter/styles.d.ts +1 -0
- package/node/components/DataGridPaginationContainer/styles.js +1 -1
- package/node/components/MenuOrganization/faker.js +112 -18
- package/node/components/PageContent/styles.js +1 -0
- package/node/components/PageHeader/HeaderContent/FormFiltersProvider/FormFiltersProvider.d.ts +15 -0
- package/node/components/PageHeader/HeaderContent/FormFiltersProvider/FormFiltersProvider.js +12 -0
- package/node/components/PageHeader/HeaderContent/FormFiltersProvider/index.d.ts +1 -0
- package/node/components/PageHeader/HeaderContent/FormFiltersProvider/index.js +6 -0
- package/node/components/PageHeader/HeaderContent/HeaderContent.js +2 -1
- package/node/components/PageHeader/HeaderContent/index.d.ts +1 -0
- package/node/components/PageHeader/HeaderContent/index.js +1 -0
- package/node/components/PageHeader/HeaderContent/styles.d.ts +0 -4
- package/node/components/PageHeader/HeaderContent/styles.js +2 -11
- package/node/components/PageHeader/PageActions/PageActions.js +1 -1
- package/node/components/PageHeader/constants.d.ts +2 -0
- package/node/components/PageHeader/constants.js +2 -0
- package/node/components/PageHeader/index.d.ts +1 -0
- package/node/components/PageHeader/index.js +3 -1
- package/node/components/PageHeader/styles.js +21 -0
- package/node/components/PageLayoutContainer/styles.js +6 -0
- package/node/components/TagBadge/styles.js +2 -1
- package/node/hook-form/FormFilters/AllFiltersButton/styles.d.ts +1 -0
- package/node/hook-form/FormFilters/AllFiltersButton/types.d.ts +1 -0
- package/node/hook-form/FormFilters/AllFiltersButton/useLogic/useLogic.d.ts +1 -1
- package/node/hook-form/FormFilters/AllFiltersButton/useLogic/useLogic.js +27 -11
- package/node/hook-form/FormFilters/FormFilters.js +5 -2
- package/node/hook-form/FormFilters/FormFiltersDialog/FormFiltersDialog.js +3 -3
- package/node/hook-form/FormFilters/FormFiltersDialog/ResetButton/ResetButton.d.ts +6 -0
- package/node/hook-form/FormFilters/FormFiltersDialog/ResetButton/ResetButton.js +15 -0
- package/node/hook-form/FormFilters/FormFiltersDialog/ResetButton/index.d.ts +1 -0
- package/node/hook-form/FormFilters/FormFiltersDialog/ResetButton/index.js +17 -0
- package/node/hook-form/FormFilters/FormFiltersDialog/ResetButton/styles.d.ts +14 -0
- package/node/hook-form/FormFilters/FormFiltersDialog/ResetButton/styles.js +17 -0
- package/node/hook-form/FormFilters/FormFiltersDialog/ResetButton/useLogic/index.d.ts +1 -0
- package/node/hook-form/FormFilters/FormFiltersDialog/ResetButton/useLogic/index.js +17 -0
- package/node/hook-form/FormFilters/FormFiltersDialog/ResetButton/useLogic/useLogic.d.ts +6 -0
- package/node/hook-form/FormFilters/FormFiltersDialog/ResetButton/useLogic/useLogic.js +15 -0
- package/node/hook-form/FormFilters/FormFiltersDialog/styles.d.ts +1 -10
- package/node/hook-form/FormFilters/FormFiltersDialog/styles.js +2 -10
- package/node/hook-form/FormFilters/FormFiltersDialog/useLogic/useLogic.d.ts +4 -2
- package/node/hook-form/FormFilters/FormFiltersDialog/useLogic/useLogic.js +4 -5
- package/node/hook-form/FormFilters/FormFiltersSkeleton/FormFiltersSkeleton.js +4 -1
- package/node/hook-form/FormFilters/styles.d.ts +4 -0
- package/node/hook-form/FormFilters/styles.js +12 -3
- package/node/hook-form/FormFilters/types.d.ts +24 -4
- package/node/hook-form/FormFilters/useLogic/useLogic.d.ts +2 -1
- package/node/hook-form/FormFilters/useLogic/useLogic.js +12 -1
- package/node/hook-form/FormFilters/utils/checkIsFilledValue/checkIsFilledValue.d.ts +1 -0
- package/node/hook-form/FormFilters/utils/checkIsFilledValue/checkIsFilledValue.js +22 -0
- package/node/hook-form/FormFilters/utils/checkIsFilledValue/index.d.ts +1 -0
- package/node/hook-form/FormFilters/utils/checkIsFilledValue/index.js +5 -0
- package/node/hook-form/FormFilters/utils/getFilledCount/getFilledCount.d.ts +1 -0
- package/node/hook-form/FormFilters/utils/getFilledCount/getFilledCount.js +8 -0
- package/node/hook-form/FormFilters/utils/getFilledCount/index.d.ts +1 -0
- package/node/hook-form/FormFilters/utils/getFilledCount/index.js +5 -0
- package/node/hook-form/FormFilters/utils/index.d.ts +2 -0
- package/node/hook-form/FormFilters/utils/index.js +7 -0
- package/node/hook-form/FormQuickFilters/FormQuickFilters.d.ts +26 -0
- package/node/hook-form/FormQuickFilters/FormQuickFilters.js +50 -0
- package/node/hook-form/FormQuickFilters/constants.d.ts +6 -0
- package/node/hook-form/FormQuickFilters/constants.js +9 -0
- package/node/hook-form/FormQuickFilters/index.d.ts +2 -0
- package/node/hook-form/FormQuickFilters/index.js +5 -0
- package/node/hook-form/FormQuickFilters/public.d.ts +2 -0
- package/node/hook-form/FormQuickFilters/public.js +5 -0
- package/node/hook-form/FormQuickFilters/styles.d.ts +9 -0
- package/node/hook-form/FormQuickFilters/styles.js +19 -0
- package/node/hook-form/FormQuickFilters/types.d.ts +62 -0
- package/node/hook-form/FormQuickFilters/types.js +2 -0
- package/node/hook-form/FormQuickFilters/useLogic/useLogic.d.ts +18 -0
- package/node/hook-form/FormQuickFilters/useLogic/useLogic.js +63 -0
- package/node/hook-form/FormWizard/Footer/Footer.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./useLogic"), exports);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useLogic = void 0;
|
|
4
|
+
const react_hook_form_1 = require("react-hook-form");
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
6
|
+
const useLogic = ({ modalForm, }) => {
|
|
7
|
+
const formValues = (0, react_hook_form_1.useWatch)({
|
|
8
|
+
control: modalForm.control,
|
|
9
|
+
});
|
|
10
|
+
const isResetButtonDisabled = (0, utils_1.getFilledCount)(formValues) === 0;
|
|
11
|
+
return {
|
|
12
|
+
isResetButtonDisabled,
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
exports.useLogic = useLogic;
|
|
@@ -3,16 +3,7 @@ export declare const FiltersModalContent: import("@emotion/styled/dist/declarati
|
|
|
3
3
|
theme?: import("@emotion/react").Theme | undefined;
|
|
4
4
|
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
5
5
|
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
6
|
-
export declare const
|
|
7
|
-
variant?: "light" | "link" | "text" | "contained" | "outlined" | undefined;
|
|
8
|
-
loading?: boolean | undefined;
|
|
9
|
-
color?: "primary" | "success" | "warning" | "error" | "grey" | undefined;
|
|
10
|
-
component?: import("react").ElementType | undefined;
|
|
11
|
-
selected?: boolean | undefined;
|
|
12
|
-
} & Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, ""> & import("react").RefAttributes<HTMLButtonElement> & {
|
|
13
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
14
|
-
}, {}, {}>;
|
|
15
|
-
export declare const DesktopResetButton: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
|
|
6
|
+
export declare const QuickFiltersWrapper: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
|
|
16
7
|
theme?: import("@emotion/react").Theme | undefined;
|
|
17
8
|
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
18
9
|
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -1,26 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StyledDialogContent = exports.StyledDialog = exports.
|
|
3
|
+
exports.StyledDialogContent = exports.StyledDialog = exports.QuickFiltersWrapper = exports.FiltersModalContent = void 0;
|
|
4
4
|
const Dialog_1 = require("@mui/material/Dialog");
|
|
5
|
-
const Button_1 = require("../../../components/Button");
|
|
6
5
|
const Dialog_2 = require("../../../components/Dialog");
|
|
7
6
|
const DialogActions_1 = require("../../../components/DialogActions");
|
|
8
7
|
const styled_1 = require("../../../components/styled");
|
|
9
8
|
exports.FiltersModalContent = styled_1.styled.div `
|
|
10
9
|
display: grid;
|
|
11
10
|
`;
|
|
12
|
-
exports.
|
|
13
|
-
margin-left: auto;
|
|
14
|
-
|
|
11
|
+
exports.QuickFiltersWrapper = styled_1.styled.div `
|
|
15
12
|
${({ theme }) => theme.breakpoints.up('sm')} {
|
|
16
13
|
display: none;
|
|
17
14
|
}
|
|
18
15
|
`;
|
|
19
|
-
exports.DesktopResetButton = styled_1.styled.div `
|
|
20
|
-
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
21
|
-
display: none;
|
|
22
|
-
}
|
|
23
|
-
`;
|
|
24
16
|
exports.StyledDialog = (0, styled_1.styled)(Dialog_2.Dialog) `
|
|
25
17
|
.${Dialog_1.dialogClasses.paper} {
|
|
26
18
|
min-width: 500px;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { type FormFiltersDialogProps } from '../types';
|
|
3
|
-
export declare const useLogic: <TFieldValues extends Record<string, unknown>>({ validationSchema, mainFilters, secondaryFilters, isModalOpen, setIsModalOpen, onSubmit, form, }: FormFiltersDialogProps<TFieldValues>) => {
|
|
3
|
+
export declare const useLogic: <TFieldValues extends Record<string, unknown>>({ validationSchema, defaultValues, mainFilters, quickFilters, secondaryFilters, isModalOpen, setIsModalOpen, onSubmit, form, }: FormFiltersDialogProps<TFieldValues>) => {
|
|
4
4
|
modalForm: import("react-hook-form").UseFormReturn<TFieldValues, any>;
|
|
5
5
|
onCloseModal: () => void;
|
|
6
6
|
onResetModal: () => void;
|
|
@@ -10,9 +10,11 @@ export declare const useLogic: <TFieldValues extends Record<string, unknown>>({
|
|
|
10
10
|
} & {
|
|
11
11
|
isModal?: boolean | undefined;
|
|
12
12
|
}) => import("react").ReactNode) | undefined;
|
|
13
|
+
quickFilters: ((props: Pick<{
|
|
14
|
+
control: import("react-hook-form").Control<TFieldValues>;
|
|
15
|
+
}, "control">) => import("react").ReactNode) | undefined;
|
|
13
16
|
secondaryFilters: ((props: {
|
|
14
17
|
control: import("react-hook-form").Control<TFieldValues>;
|
|
15
18
|
}) => import("react").ReactNode) | undefined;
|
|
16
19
|
isModalOpen: boolean;
|
|
17
|
-
isResetButtonDisabled: boolean;
|
|
18
20
|
};
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useLogic = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const useForm_1 = require("../../../useForm");
|
|
6
|
-
const useLogic = ({ validationSchema, mainFilters, secondaryFilters, isModalOpen, setIsModalOpen, onSubmit, form, }) => {
|
|
6
|
+
const useLogic = ({ validationSchema, defaultValues, mainFilters, quickFilters, secondaryFilters, isModalOpen, setIsModalOpen, onSubmit, form, }) => {
|
|
7
7
|
const modalForm = (0, useForm_1.useForm)({
|
|
8
8
|
validationSchema,
|
|
9
9
|
defaultValues: form.getValues(),
|
|
@@ -13,16 +13,15 @@ const useLogic = ({ validationSchema, mainFilters, secondaryFilters, isModalOpen
|
|
|
13
13
|
modalForm.reset();
|
|
14
14
|
};
|
|
15
15
|
const onResetModal = () => {
|
|
16
|
-
modalForm.reset(
|
|
16
|
+
modalForm.reset(defaultValues);
|
|
17
17
|
};
|
|
18
18
|
const onSubmitModal = (submittedValues) => {
|
|
19
19
|
onSubmit(submittedValues);
|
|
20
20
|
setIsModalOpen(false);
|
|
21
21
|
};
|
|
22
|
-
const isResetButtonDisabled = !modalForm.formState.isDirty;
|
|
23
22
|
(0, react_1.useEffect)(() => {
|
|
24
23
|
if (isModalOpen) {
|
|
25
|
-
|
|
24
|
+
modalForm.reset(form.getValues());
|
|
26
25
|
}
|
|
27
26
|
}, [isModalOpen]);
|
|
28
27
|
return {
|
|
@@ -31,9 +30,9 @@ const useLogic = ({ validationSchema, mainFilters, secondaryFilters, isModalOpen
|
|
|
31
30
|
onResetModal,
|
|
32
31
|
onSubmitModal,
|
|
33
32
|
mainFilters,
|
|
33
|
+
quickFilters,
|
|
34
34
|
secondaryFilters,
|
|
35
35
|
isModalOpen,
|
|
36
|
-
isResetButtonDisabled,
|
|
37
36
|
};
|
|
38
37
|
};
|
|
39
38
|
exports.useLogic = useLogic;
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FormFiltersSkeleton = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const PageHeader_1 = require("../../../components/PageHeader");
|
|
5
7
|
const Skeleton_1 = require("../../../components/Skeleton");
|
|
6
8
|
const styles_1 = require("./styles");
|
|
7
9
|
const FormFiltersSkeleton = () => {
|
|
8
|
-
|
|
10
|
+
const { filtersClassName } = (0, react_1.useContext)(PageHeader_1.FormFiltersLayoutContext) ?? {};
|
|
11
|
+
return ((0, jsx_runtime_1.jsxs)(styles_1.SkeletonWrapper, { className: filtersClassName, children: [(0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton, { variant: "rounded" }), (0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton, { variant: "rounded" }), (0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton, { variant: "rounded" }), (0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton, { variant: "rounded" })] }));
|
|
9
12
|
};
|
|
10
13
|
exports.FormFiltersSkeleton = FormFiltersSkeleton;
|
|
@@ -13,3 +13,7 @@ export declare const SubmitButtonWrapper: import("@emotion/styled/dist/declarati
|
|
|
13
13
|
theme?: import("@emotion/react").Theme | undefined;
|
|
14
14
|
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
15
15
|
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
16
|
+
export declare const QuickFiltersWrapper: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
|
|
17
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
18
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
19
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SubmitButtonWrapper = exports.MainFiltersWrapper = exports.Wrapper = void 0;
|
|
3
|
+
exports.QuickFiltersWrapper = exports.SubmitButtonWrapper = exports.MainFiltersWrapper = exports.Wrapper = void 0;
|
|
4
4
|
const FormLabel_1 = require("@mui/material/FormLabel");
|
|
5
5
|
const InputBase_1 = require("@mui/material/InputBase");
|
|
6
6
|
const styled_1 = require("../../components/styled");
|
|
@@ -10,13 +10,13 @@ exports.Wrapper = styled_1.styled.div `
|
|
|
10
10
|
gap: ${({ theme }) => theme.spacing(2)};
|
|
11
11
|
justify-content: space-between;
|
|
12
12
|
|
|
13
|
-
width: 100%;
|
|
13
|
+
width: 100%;
|
|
14
14
|
margin-top: ${({ theme }) => theme.spacing(4)};
|
|
15
15
|
|
|
16
16
|
.${FormLabel_1.formLabelClasses.root} {
|
|
17
17
|
display: none;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
${({ theme }) => theme.breakpoints.down('laptop')} {
|
|
21
21
|
margin-top: 0;
|
|
22
22
|
padding-right: ${({ theme }) => theme.spacing(2)};
|
|
@@ -55,3 +55,12 @@ exports.SubmitButtonWrapper = styled_1.styled.div `
|
|
|
55
55
|
display: none;
|
|
56
56
|
}
|
|
57
57
|
`;
|
|
58
|
+
exports.QuickFiltersWrapper = styled_1.styled.div `
|
|
59
|
+
display: flex;
|
|
60
|
+
|
|
61
|
+
width: 100%;
|
|
62
|
+
|
|
63
|
+
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
64
|
+
display: none;
|
|
65
|
+
}
|
|
66
|
+
`;
|
|
@@ -18,18 +18,38 @@ export type FormFiltersProps<TFieldValues extends Record<string, unknown>> = {
|
|
|
18
18
|
* @example
|
|
19
19
|
* ```ts
|
|
20
20
|
* <FormFilters
|
|
21
|
-
*
|
|
21
|
+
* searchField={({control}) => <FormFiltersSearchField control={control} placeholder="Поиск..." />}
|
|
22
22
|
* />
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
25
|
searchField?: (props: InputsProps<TFieldValues>) => ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* Быстрые фильтры — группа чипов.
|
|
28
|
+
* На больших экранах отображаются строкой чипов под mainFilters,
|
|
29
|
+
* на маленьких разрешениях — последним элементом внутри модалки (как Select).
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* <FormFilters
|
|
34
|
+
* quickFilters={({ control }) => (
|
|
35
|
+
* <FormQuickFilters
|
|
36
|
+
* control={control}
|
|
37
|
+
* name="status"
|
|
38
|
+
* label="Статус"
|
|
39
|
+
* options={[{ label: 'Активные', value: 'active' }]}
|
|
40
|
+
* />
|
|
41
|
+
* )}
|
|
42
|
+
* />
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
quickFilters?: (props: Pick<InputsProps<TFieldValues>, 'control'>) => ReactNode;
|
|
26
46
|
/**
|
|
27
47
|
* Основные фильтры
|
|
28
48
|
*
|
|
29
49
|
* @example
|
|
30
50
|
* ```ts
|
|
31
51
|
* <FormFilters
|
|
32
|
-
*
|
|
52
|
+
* mainFilters={({ control, isModal }) =>
|
|
33
53
|
* <FormTextField
|
|
34
54
|
* control={control}
|
|
35
55
|
* name="name"
|
|
@@ -48,7 +68,7 @@ export type FormFiltersProps<TFieldValues extends Record<string, unknown>> = {
|
|
|
48
68
|
* @example
|
|
49
69
|
* ```ts
|
|
50
70
|
* <FormFilters
|
|
51
|
-
*
|
|
71
|
+
* secondaryFilters={({ control }) => <FormTextField control={control} name="name" label="Название" placeholder="Введите название" />}
|
|
52
72
|
* />
|
|
53
73
|
* ```
|
|
54
74
|
*/
|
|
@@ -59,7 +79,7 @@ export type FormFiltersProps<TFieldValues extends Record<string, unknown>> = {
|
|
|
59
79
|
* @example
|
|
60
80
|
* ```ts
|
|
61
81
|
* <FormFilters
|
|
62
|
-
*
|
|
82
|
+
* submitButton={(props) => <Button {...props} loading={isLoading}>Применить</Button>}
|
|
63
83
|
* />
|
|
64
84
|
* ```
|
|
65
85
|
*/
|
|
@@ -6,6 +6,7 @@ type UseLogicReturn<TFieldValues extends Record<string, unknown>> = {
|
|
|
6
6
|
onSubmit?: (values: TFieldValues) => void;
|
|
7
7
|
searchField: FormFiltersProps<TFieldValues>['searchField'];
|
|
8
8
|
mainFilters: FormFiltersProps<TFieldValues>['mainFilters'];
|
|
9
|
+
quickFilters: FormFiltersProps<TFieldValues>['quickFilters'];
|
|
9
10
|
submitButton: FormFiltersProps<TFieldValues>['submitButton'];
|
|
10
11
|
secondaryFilters: FormFiltersProps<TFieldValues>['secondaryFilters'];
|
|
11
12
|
onOpenModal: () => void;
|
|
@@ -13,5 +14,5 @@ type UseLogicReturn<TFieldValues extends Record<string, unknown>> = {
|
|
|
13
14
|
mainFiltersColumns?: string;
|
|
14
15
|
isLoading?: boolean;
|
|
15
16
|
};
|
|
16
|
-
export declare const useLogic: <TFieldValues extends Record<string, unknown>>({ form, onSubmit, validationSchema, searchField, mainFilters, secondaryFilters, submitButton, mainFiltersColumns, isLoading, }: FormFiltersProps<TFieldValues>) => UseLogicReturn<TFieldValues>;
|
|
17
|
+
export declare const useLogic: <TFieldValues extends Record<string, unknown>>({ form, onSubmit, validationSchema, searchField, mainFilters, quickFilters, secondaryFilters, submitButton, mainFiltersColumns, isLoading, }: FormFiltersProps<TFieldValues>) => UseLogicReturn<TFieldValues>;
|
|
17
18
|
export {};
|
|
@@ -2,8 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useLogic = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
|
-
const
|
|
5
|
+
const hooks_1 = require("./hooks");
|
|
6
|
+
const useLogic = ({ form, onSubmit, validationSchema, searchField, mainFilters, quickFilters, secondaryFilters, submitButton, mainFiltersColumns, isLoading, }) => {
|
|
6
7
|
const [isModalOpen, setIsModalOpen] = (0, react_1.useState)(false);
|
|
8
|
+
const [defaultValues, setDefaultValues] = (0, react_1.useState)({});
|
|
9
|
+
const isFirstMountAfterLoading = (0, hooks_1.useFirstMountAfterLoading)(isLoading);
|
|
10
|
+
(0, react_1.useEffect)(() => {
|
|
11
|
+
if (isFirstMountAfterLoading) {
|
|
12
|
+
setDefaultValues(form.getValues());
|
|
13
|
+
}
|
|
14
|
+
}, [form]);
|
|
7
15
|
const onOpenModal = () => {
|
|
8
16
|
setIsModalOpen(true);
|
|
9
17
|
};
|
|
@@ -15,16 +23,19 @@ const useLogic = ({ form, onSubmit, validationSchema, searchField, mainFilters,
|
|
|
15
23
|
validationSchema,
|
|
16
24
|
form,
|
|
17
25
|
mainFilters,
|
|
26
|
+
quickFilters,
|
|
18
27
|
secondaryFilters,
|
|
19
28
|
onSubmit: onSubmitModal,
|
|
20
29
|
isModalOpen,
|
|
21
30
|
setIsModalOpen,
|
|
31
|
+
defaultValues,
|
|
22
32
|
};
|
|
23
33
|
return {
|
|
24
34
|
form,
|
|
25
35
|
onSubmit,
|
|
26
36
|
searchField,
|
|
27
37
|
mainFilters,
|
|
38
|
+
quickFilters,
|
|
28
39
|
secondaryFilters,
|
|
29
40
|
submitButton,
|
|
30
41
|
onOpenModal,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function checkIsFilledValue(value: unknown): boolean;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkIsFilledValue = void 0;
|
|
4
|
+
function checkIsFilledValue(value) {
|
|
5
|
+
if (value === null || value === undefined) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
if (typeof value === 'string') {
|
|
9
|
+
return value.trim() !== '';
|
|
10
|
+
}
|
|
11
|
+
if (Array.isArray(value)) {
|
|
12
|
+
return Boolean(value?.length);
|
|
13
|
+
}
|
|
14
|
+
if (typeof value === 'object') {
|
|
15
|
+
return Object.values(value).some((v) => checkIsFilledValue(v));
|
|
16
|
+
}
|
|
17
|
+
if (typeof value === 'number') {
|
|
18
|
+
return Number.isFinite(value);
|
|
19
|
+
}
|
|
20
|
+
return Boolean(value);
|
|
21
|
+
}
|
|
22
|
+
exports.checkIsFilledValue = checkIsFilledValue;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { checkIsFilledValue } from './checkIsFilledValue';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkIsFilledValue = void 0;
|
|
4
|
+
var checkIsFilledValue_1 = require("./checkIsFilledValue");
|
|
5
|
+
Object.defineProperty(exports, "checkIsFilledValue", { enumerable: true, get: function () { return checkIsFilledValue_1.checkIsFilledValue; } });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getFilledCount: (formValues: Record<string, unknown>) => number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFilledCount = void 0;
|
|
4
|
+
const checkIsFilledValue_1 = require("../checkIsFilledValue/checkIsFilledValue");
|
|
5
|
+
const getFilledCount = (formValues) => {
|
|
6
|
+
return Object.values(formValues || {}).filter(checkIsFilledValue_1.checkIsFilledValue).length;
|
|
7
|
+
};
|
|
8
|
+
exports.getFilledCount = getFilledCount;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getFilledCount } from './getFilledCount';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFilledCount = void 0;
|
|
4
|
+
var getFilledCount_1 = require("./getFilledCount");
|
|
5
|
+
Object.defineProperty(exports, "getFilledCount", { enumerable: true, get: function () { return getFilledCount_1.getFilledCount; } });
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFilledCount = exports.checkIsFilledValue = void 0;
|
|
4
|
+
var checkIsFilledValue_1 = require("./checkIsFilledValue");
|
|
5
|
+
Object.defineProperty(exports, "checkIsFilledValue", { enumerable: true, get: function () { return checkIsFilledValue_1.checkIsFilledValue; } });
|
|
6
|
+
var getFilledCount_1 = require("./getFilledCount");
|
|
7
|
+
Object.defineProperty(exports, "getFilledCount", { enumerable: true, get: function () { return getFilledCount_1.getFilledCount; } });
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { FormQuickFiltersProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Группа чипов для быстрых фильтров внутри FormFilters (слот quickFilters).
|
|
4
|
+
*
|
|
5
|
+
* Поведение чипов задаётся параметром `multiple` через `ChipProvider mode`:
|
|
6
|
+
* - false (default) — `single` (radio)
|
|
7
|
+
* - true — `multiple` (checkbox)
|
|
8
|
+
*
|
|
9
|
+
* - На мобильных устройствах отображается как Select
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <FormFilters
|
|
13
|
+
* quickFilters={({ control }) => (
|
|
14
|
+
* <FormQuickFilters
|
|
15
|
+
* control={control}
|
|
16
|
+
* name="status"
|
|
17
|
+
* label="Статус"
|
|
18
|
+
* options={[
|
|
19
|
+
* { label: 'Активные', value: 'active' },
|
|
20
|
+
* { label: 'Архив', value: 'archived' },
|
|
21
|
+
* ]}
|
|
22
|
+
* />
|
|
23
|
+
* )}
|
|
24
|
+
* />
|
|
25
|
+
*/
|
|
26
|
+
export declare const FormQuickFilters: <TFieldValues extends object>(props: FormQuickFiltersProps<TFieldValues>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FormQuickFilters = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const Checkbox_1 = require("../../components/Checkbox");
|
|
6
|
+
const Chip_1 = require("../../components/Chip");
|
|
7
|
+
const ListItemIcon_1 = require("../../components/ListItemIcon");
|
|
8
|
+
const MenuItem_1 = require("../../components/MenuItem");
|
|
9
|
+
const FormSelect_1 = require("../FormSelect");
|
|
10
|
+
const constants_1 = require("./constants");
|
|
11
|
+
const styles_1 = require("./styles");
|
|
12
|
+
const useLogic_1 = require("./useLogic/useLogic");
|
|
13
|
+
/**
|
|
14
|
+
* Группа чипов для быстрых фильтров внутри FormFilters (слот quickFilters).
|
|
15
|
+
*
|
|
16
|
+
* Поведение чипов задаётся параметром `multiple` через `ChipProvider mode`:
|
|
17
|
+
* - false (default) — `single` (radio)
|
|
18
|
+
* - true — `multiple` (checkbox)
|
|
19
|
+
*
|
|
20
|
+
* - На мобильных устройствах отображается как Select
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* <FormFilters
|
|
24
|
+
* quickFilters={({ control }) => (
|
|
25
|
+
* <FormQuickFilters
|
|
26
|
+
* control={control}
|
|
27
|
+
* name="status"
|
|
28
|
+
* label="Статус"
|
|
29
|
+
* options={[
|
|
30
|
+
* { label: 'Активные', value: 'active' },
|
|
31
|
+
* { label: 'Архив', value: 'archived' },
|
|
32
|
+
* ]}
|
|
33
|
+
* />
|
|
34
|
+
* )}
|
|
35
|
+
* />
|
|
36
|
+
*/
|
|
37
|
+
const FormQuickFilters = (props) => {
|
|
38
|
+
const { field, filterOptions, checkIsAllSelected, handleChipChange, isSelected, label, allLabel, allCounter, multiple, maxCount, name, placeholder, control, getOptionLabel, getCounterLabel, } = (0, useLogic_1.useLogic)(props);
|
|
39
|
+
const renderMultipleOptions = () => {
|
|
40
|
+
return filterOptions.map((option) => {
|
|
41
|
+
const checked = control._formValues[name]?.includes(option.value);
|
|
42
|
+
return ((0, jsx_runtime_1.jsxs)(MenuItem_1.MenuItem, { value: option.value, children: [(0, jsx_runtime_1.jsx)(ListItemIcon_1.ListItemIcon, { children: (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { checked: checked }) }), option.label, getCounterLabel(option)] }, option.value));
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
const renderSingleOptions = () => {
|
|
46
|
+
return filterOptions.map((option) => ((0, jsx_runtime_1.jsxs)(MenuItem_1.MenuItem, { value: option.value, children: [option.label, getCounterLabel(option)] }, option.value)));
|
|
47
|
+
};
|
|
48
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(styles_1.Wrapper, { children: (0, jsx_runtime_1.jsxs)(Chip_1.ChipProvider, { mode: multiple ? 'multiple' : 'single', name: name, children: [(0, jsx_runtime_1.jsx)(Chip_1.Chip, { label: allLabel, isSelected: checkIsAllSelected(), onChange: () => handleChipChange(constants_1.FORM_QUICK_FILTERS_ALL_VALUE), counter: allCounter, size: "medium", maxCount: maxCount, value: constants_1.FORM_QUICK_FILTERS_ALL_VALUE }, constants_1.FORM_QUICK_FILTERS_ALL_CHIP_KEY), filterOptions.map((option) => ((0, jsx_runtime_1.jsx)(Chip_1.Chip, { label: option.label, isSelected: isSelected(option.value), onChange: () => handleChipChange(option.value), status: option.status, counter: option.counter, size: "medium", maxCount: maxCount, value: String(option.value) }, option.value)))] }) }), (0, jsx_runtime_1.jsx)(styles_1.MobileWrapper, { children: (0, jsx_runtime_1.jsx)(FormSelect_1.FormSelect, { control: control, name: name, inputProps: { id: constants_1.FORM_FILTERS_QUICK_FILTERS_ID }, label: label, getOptionLabel: getOptionLabel, multiple: multiple, onChange: field.onChange, onBlur: field.onBlur, fullWidth: true, placeholder: placeholder, children: multiple ? renderMultipleOptions() : renderSingleOptions() }) })] }));
|
|
49
|
+
};
|
|
50
|
+
exports.FormQuickFilters = FormQuickFilters;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const FORM_FILTERS_QUICK_FILTERS_ID = "form-filters-quick-filters";
|
|
2
|
+
/** Значение поля при выборе «Все» (ничего не выбрано) */
|
|
3
|
+
export declare const FORM_QUICK_FILTERS_ALL_VALUE = "";
|
|
4
|
+
export declare const FORM_QUICK_FILTERS_DEFAULT_ALL_LABEL = "\u0412\u0441\u0435";
|
|
5
|
+
/** Стабильный key для чипа «Все» (value поля при этом остаётся пустой строкой) */
|
|
6
|
+
export declare const FORM_QUICK_FILTERS_ALL_CHIP_KEY = "form_quick_filters_all_key";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FORM_QUICK_FILTERS_ALL_CHIP_KEY = exports.FORM_QUICK_FILTERS_DEFAULT_ALL_LABEL = exports.FORM_QUICK_FILTERS_ALL_VALUE = exports.FORM_FILTERS_QUICK_FILTERS_ID = void 0;
|
|
4
|
+
exports.FORM_FILTERS_QUICK_FILTERS_ID = 'form-filters-quick-filters';
|
|
5
|
+
/** Значение поля при выборе «Все» (ничего не выбрано) */
|
|
6
|
+
exports.FORM_QUICK_FILTERS_ALL_VALUE = '';
|
|
7
|
+
exports.FORM_QUICK_FILTERS_DEFAULT_ALL_LABEL = 'Все';
|
|
8
|
+
/** Стабильный key для чипа «Все» (value поля при этом остаётся пустой строкой) */
|
|
9
|
+
exports.FORM_QUICK_FILTERS_ALL_CHIP_KEY = 'form_quick_filters_all_key';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FormQuickFilters = void 0;
|
|
4
|
+
var FormQuickFilters_1 = require("./FormQuickFilters");
|
|
5
|
+
Object.defineProperty(exports, "FormQuickFilters", { enumerable: true, get: function () { return FormQuickFilters_1.FormQuickFilters; } });
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FormQuickFilters = void 0;
|
|
4
|
+
var FormQuickFilters_1 = require("./FormQuickFilters");
|
|
5
|
+
Object.defineProperty(exports, "FormQuickFilters", { enumerable: true, get: function () { return FormQuickFilters_1.FormQuickFilters; } });
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const Wrapper: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
|
|
3
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
4
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
5
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
6
|
+
export declare const MobileWrapper: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
|
|
7
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
8
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
9
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MobileWrapper = exports.Wrapper = void 0;
|
|
4
|
+
const styled_1 = require("../../components/styled");
|
|
5
|
+
exports.Wrapper = styled_1.styled.div `
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-wrap: wrap;
|
|
8
|
+
gap: ${({ theme }) => theme.spacing(2)};
|
|
9
|
+
align-items: center;
|
|
10
|
+
|
|
11
|
+
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
12
|
+
display: none;
|
|
13
|
+
}
|
|
14
|
+
`;
|
|
15
|
+
exports.MobileWrapper = styled_1.styled.div `
|
|
16
|
+
${({ theme }) => theme.breakpoints.up('sm')} {
|
|
17
|
+
display: none;
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Control, Path } from 'react-hook-form';
|
|
2
|
+
import type { ChipStatus } from '../../components/Chip';
|
|
3
|
+
export type QuickFilterValue = string | number;
|
|
4
|
+
export type QuickFilterOption = {
|
|
5
|
+
/**
|
|
6
|
+
* Текст чипа / пункта списка
|
|
7
|
+
*/
|
|
8
|
+
label: string;
|
|
9
|
+
/**
|
|
10
|
+
* Значение опции
|
|
11
|
+
*/
|
|
12
|
+
value: QuickFilterValue;
|
|
13
|
+
/**
|
|
14
|
+
* Статус чипа
|
|
15
|
+
*/
|
|
16
|
+
status?: ChipStatus;
|
|
17
|
+
/**
|
|
18
|
+
* Число счетчика справа от `label`
|
|
19
|
+
*/
|
|
20
|
+
counter?: number;
|
|
21
|
+
};
|
|
22
|
+
export type FormQuickFiltersProps<TFieldValues extends object> = {
|
|
23
|
+
/**
|
|
24
|
+
* Объект control из react-hook-form
|
|
25
|
+
*/
|
|
26
|
+
control: Control<TFieldValues>;
|
|
27
|
+
/**
|
|
28
|
+
* Имя поля формы
|
|
29
|
+
*/
|
|
30
|
+
name: Path<TFieldValues>;
|
|
31
|
+
/**
|
|
32
|
+
* Лейбл — отображается в заголовке Select-режима (внутри модалки на мобиле)
|
|
33
|
+
*/
|
|
34
|
+
label: string;
|
|
35
|
+
/**
|
|
36
|
+
* Список опций (без пункта «Все» — он добавляется автоматически и соответствует пустому значению поля)
|
|
37
|
+
*/
|
|
38
|
+
options: QuickFilterOption[];
|
|
39
|
+
/**
|
|
40
|
+
* Подпись встроенного чипа «Все»
|
|
41
|
+
* @default 'Все'
|
|
42
|
+
*/
|
|
43
|
+
allLabel?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Счётчик у чипа «Все»
|
|
46
|
+
*/
|
|
47
|
+
allCounter?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Максимальное чисто счетчика у чипов
|
|
50
|
+
*/
|
|
51
|
+
maxCount?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Режим мультивыбора.
|
|
54
|
+
* - false (default) — одиночный выбор (radio-поведение)
|
|
55
|
+
* - true — множественный выбор (checkbox-поведение)
|
|
56
|
+
*/
|
|
57
|
+
multiple?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Плейсхолдер для Select-режима (внутри модалки на мобиле)
|
|
60
|
+
*/
|
|
61
|
+
placeholder?: string;
|
|
62
|
+
};
|