@akinon/akifilter 0.5.4 → 1.0.1
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/README.md +44 -0
- package/dist/cjs/akifilter.d.ts +53 -0
- package/dist/cjs/akifilter.d.ts.map +1 -0
- package/dist/cjs/akifilter.js +360 -0
- package/dist/cjs/common/storage.d.ts +10 -0
- package/dist/cjs/common/storage.d.ts.map +1 -0
- package/dist/cjs/common/storage.js +124 -0
- package/dist/cjs/common/theme-overrides.d.ts +3 -0
- package/dist/cjs/common/theme-overrides.d.ts.map +1 -0
- package/dist/cjs/common/theme-overrides.js +6 -0
- package/dist/cjs/components/applied-filters.d.ts +14 -0
- package/dist/cjs/components/applied-filters.d.ts.map +1 -0
- package/dist/cjs/components/applied-filters.js +26 -0
- package/dist/cjs/components/filter-toolbar.d.ts +11 -0
- package/dist/cjs/components/filter-toolbar.d.ts.map +1 -0
- package/dist/cjs/components/filter-toolbar.js +17 -0
- package/dist/cjs/components/visibility-modal.d.ts +19 -0
- package/dist/cjs/components/visibility-modal.d.ts.map +1 -0
- package/dist/cjs/components/visibility-modal.js +30 -0
- package/dist/cjs/constants.d.ts +4 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +6 -0
- package/dist/cjs/hooks/use-debounced-value.d.ts +2 -0
- package/dist/cjs/hooks/use-debounced-value.d.ts.map +1 -0
- package/dist/cjs/hooks/use-debounced-value.js +17 -0
- package/dist/cjs/i18n/index.d.ts +2 -4
- package/dist/cjs/i18n/index.d.ts.map +1 -1
- package/dist/cjs/i18n/index.js +1 -1
- package/dist/cjs/i18n/translations/en.d.ts +33 -3
- package/dist/cjs/i18n/translations/en.d.ts.map +1 -1
- package/dist/cjs/i18n/translations/en.js +33 -3
- package/dist/cjs/i18n/translations/tr.d.ts +33 -3
- package/dist/cjs/i18n/translations/tr.d.ts.map +1 -1
- package/dist/cjs/i18n/translations/tr.js +33 -3
- package/dist/cjs/index.d.ts +3 -14
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +17 -32
- package/dist/cjs/styles.css +179 -0
- package/dist/cjs/types.d.ts +11 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/utils/schema.d.ts +9 -0
- package/dist/cjs/utils/schema.d.ts.map +1 -0
- package/dist/cjs/utils/schema.js +61 -0
- package/dist/cjs/utils/values.d.ts +5 -0
- package/dist/cjs/utils/values.d.ts.map +1 -0
- package/dist/cjs/utils/values.js +44 -0
- package/dist/esm/akifilter.d.ts +53 -0
- package/dist/esm/akifilter.d.ts.map +1 -0
- package/dist/esm/akifilter.js +356 -0
- package/dist/esm/common/storage.d.ts +10 -0
- package/dist/esm/common/storage.d.ts.map +1 -0
- package/dist/esm/common/storage.js +114 -0
- package/dist/esm/common/theme-overrides.d.ts +3 -0
- package/dist/esm/common/theme-overrides.d.ts.map +1 -0
- package/dist/esm/common/theme-overrides.js +3 -0
- package/dist/esm/components/applied-filters.d.ts +14 -0
- package/dist/esm/components/applied-filters.d.ts.map +1 -0
- package/dist/esm/components/applied-filters.js +22 -0
- package/dist/esm/components/filter-toolbar.d.ts +11 -0
- package/dist/esm/components/filter-toolbar.d.ts.map +1 -0
- package/dist/esm/components/filter-toolbar.js +13 -0
- package/dist/esm/components/visibility-modal.d.ts +19 -0
- package/dist/esm/components/visibility-modal.d.ts.map +1 -0
- package/dist/esm/components/visibility-modal.js +26 -0
- package/dist/esm/constants.d.ts +4 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +3 -0
- package/dist/esm/hooks/use-debounced-value.d.ts +2 -0
- package/dist/esm/hooks/use-debounced-value.d.ts.map +1 -0
- package/dist/esm/hooks/use-debounced-value.js +13 -0
- package/dist/esm/i18n/index.d.ts +2 -4
- package/dist/esm/i18n/index.d.ts.map +1 -1
- package/dist/esm/i18n/index.js +5 -5
- package/dist/esm/i18n/translations/en.d.ts +33 -3
- package/dist/esm/i18n/translations/en.d.ts.map +1 -1
- package/dist/esm/i18n/translations/en.js +33 -3
- package/dist/esm/i18n/translations/tr.d.ts +33 -3
- package/dist/esm/i18n/translations/tr.d.ts.map +1 -1
- package/dist/esm/i18n/translations/tr.js +33 -3
- package/dist/esm/index.d.ts +3 -14
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -30
- package/dist/esm/styles.css +179 -0
- package/dist/esm/types.d.ts +11 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/utils/schema.d.ts +9 -0
- package/dist/esm/utils/schema.d.ts.map +1 -0
- package/dist/esm/utils/schema.js +52 -0
- package/dist/esm/utils/values.d.ts +5 -0
- package/dist/esm/utils/values.d.ts.map +1 -0
- package/dist/esm/utils/values.js +39 -0
- package/package.json +39 -33
- package/dist/cjs/components/AppliedFilters/AppliedFilterItem.d.ts +0 -12
- package/dist/cjs/components/AppliedFilters/AppliedFilterItem.d.ts.map +0 -1
- package/dist/cjs/components/AppliedFilters/AppliedFilterItem.js +0 -62
- package/dist/cjs/components/AppliedFilters/common.d.ts +0 -6
- package/dist/cjs/components/AppliedFilters/common.d.ts.map +0 -1
- package/dist/cjs/components/AppliedFilters/common.js +0 -34
- package/dist/cjs/components/AppliedFilters/index.d.ts +0 -4
- package/dist/cjs/components/AppliedFilters/index.d.ts.map +0 -1
- package/dist/cjs/components/AppliedFilters/index.js +0 -26
- package/dist/cjs/components/AppliedFilters/styles.css +0 -65
- package/dist/cjs/components/ConditionalFilters/index.d.ts +0 -3
- package/dist/cjs/components/ConditionalFilters/index.d.ts.map +0 -1
- package/dist/cjs/components/ConditionalFilters/index.js +0 -32
- package/dist/cjs/components/FilterContext/index.d.ts +0 -45
- package/dist/cjs/components/FilterContext/index.d.ts.map +0 -1
- package/dist/cjs/components/FilterContext/index.js +0 -85
- package/dist/cjs/components/SelectShownFilters/index.d.ts +0 -7
- package/dist/cjs/components/SelectShownFilters/index.d.ts.map +0 -1
- package/dist/cjs/components/SelectShownFilters/index.js +0 -111
- package/dist/cjs/components/SelectShownFilters/styles.css +0 -99
- package/dist/cjs/components/ShownFilters/index.d.ts +0 -3
- package/dist/cjs/components/ShownFilters/index.d.ts.map +0 -1
- package/dist/cjs/components/ShownFilters/index.js +0 -45
- package/dist/cjs/components/index.d.ts +0 -6
- package/dist/cjs/components/index.d.ts.map +0 -1
- package/dist/cjs/components/index.js +0 -21
- package/dist/cjs/constants/index.d.ts +0 -56
- package/dist/cjs/constants/index.d.ts.map +0 -1
- package/dist/cjs/constants/index.js +0 -58
- package/dist/cjs/index.css +0 -67
- package/dist/cjs/utils/index.d.ts +0 -25
- package/dist/cjs/utils/index.d.ts.map +0 -1
- package/dist/cjs/utils/index.js +0 -40
- package/dist/esm/components/AppliedFilters/AppliedFilterItem.d.ts +0 -12
- package/dist/esm/components/AppliedFilters/AppliedFilterItem.d.ts.map +0 -1
- package/dist/esm/components/AppliedFilters/AppliedFilterItem.js +0 -58
- package/dist/esm/components/AppliedFilters/common.d.ts +0 -6
- package/dist/esm/components/AppliedFilters/common.d.ts.map +0 -1
- package/dist/esm/components/AppliedFilters/common.js +0 -29
- package/dist/esm/components/AppliedFilters/index.d.ts +0 -4
- package/dist/esm/components/AppliedFilters/index.d.ts.map +0 -1
- package/dist/esm/components/AppliedFilters/index.js +0 -22
- package/dist/esm/components/AppliedFilters/styles.css +0 -65
- package/dist/esm/components/ConditionalFilters/index.d.ts +0 -3
- package/dist/esm/components/ConditionalFilters/index.d.ts.map +0 -1
- package/dist/esm/components/ConditionalFilters/index.js +0 -28
- package/dist/esm/components/FilterContext/index.d.ts +0 -45
- package/dist/esm/components/FilterContext/index.d.ts.map +0 -1
- package/dist/esm/components/FilterContext/index.js +0 -80
- package/dist/esm/components/SelectShownFilters/index.d.ts +0 -7
- package/dist/esm/components/SelectShownFilters/index.d.ts.map +0 -1
- package/dist/esm/components/SelectShownFilters/index.js +0 -107
- package/dist/esm/components/SelectShownFilters/styles.css +0 -99
- package/dist/esm/components/ShownFilters/index.d.ts +0 -3
- package/dist/esm/components/ShownFilters/index.d.ts.map +0 -1
- package/dist/esm/components/ShownFilters/index.js +0 -41
- package/dist/esm/components/index.d.ts +0 -6
- package/dist/esm/components/index.d.ts.map +0 -1
- package/dist/esm/components/index.js +0 -5
- package/dist/esm/constants/index.d.ts +0 -56
- package/dist/esm/constants/index.d.ts.map +0 -1
- package/dist/esm/constants/index.js +0 -55
- package/dist/esm/index.css +0 -67
- package/dist/esm/utils/index.d.ts +0 -25
- package/dist/esm/utils/index.d.ts.map +0 -1
- package/dist/esm/utils/index.js +0 -35
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AppliedFilters = void 0;
|
|
4
|
+
const icons_1 = require("@akinon/icons");
|
|
5
|
+
const ui_button_1 = require("@akinon/ui-button");
|
|
6
|
+
const ui_space_1 = require("@akinon/ui-space");
|
|
7
|
+
const ui_typography_1 = require("@akinon/ui-typography");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const i18n_1 = require("../i18n");
|
|
10
|
+
const AppliedFilters = ({ filters, onRemove, onClearAll }) => {
|
|
11
|
+
const hasFilters = filters.length > 0;
|
|
12
|
+
return (react_1.default.createElement("div", { className: "akinon-filter__applied", "data-testid": "akifilter-applied" },
|
|
13
|
+
react_1.default.createElement(ui_space_1.Space, { className: "akinon-filter__applied-summary", size: 8 },
|
|
14
|
+
react_1.default.createElement(ui_typography_1.Text, { className: "akinon-filter__applied-label" }, i18n_1.i18n.t('applied.label')),
|
|
15
|
+
hasFilters ? (react_1.default.createElement(ui_space_1.Space, { className: "akinon-filter__applied-items", size: 8, wrap: true }, filters.map(item => (react_1.default.createElement("div", { key: `${item.key}-${item.value}`, className: "akinon-filter__chip" },
|
|
16
|
+
react_1.default.createElement("span", { className: "akinon-filter__chip-label" },
|
|
17
|
+
item.label,
|
|
18
|
+
":"),
|
|
19
|
+
react_1.default.createElement("span", { className: "akinon-filter__chip-value" }, item.value),
|
|
20
|
+
react_1.default.createElement("button", { type: "button", "aria-label": i18n_1.i18n.t('applied.clearSingle', {
|
|
21
|
+
field: item.label
|
|
22
|
+
}), className: "akinon-filter__chip-button", onClick: () => onRemove(item.key) },
|
|
23
|
+
react_1.default.createElement(icons_1.Icon, { icon: "no", size: 16 }))))))) : (react_1.default.createElement(ui_typography_1.Text, { className: "akinon-filter__applied-empty" }, i18n_1.i18n.t('applied.empty')))),
|
|
24
|
+
react_1.default.createElement(ui_button_1.Button, { className: "akinon-filter__clear", icon: "bin", iconSize: 16, onClick: onClearAll, size: "small", type: "icon", title: i18n_1.i18n.t('applied.clearAll'), "aria-label": i18n_1.i18n.t('applied.clearAll'), disabled: !hasFilters })));
|
|
25
|
+
};
|
|
26
|
+
exports.AppliedFilters = AppliedFilters;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type FilterToolbarProps = {
|
|
3
|
+
onOpenModal: () => void;
|
|
4
|
+
enableImportCsv?: boolean;
|
|
5
|
+
enableImportXls?: boolean;
|
|
6
|
+
onImportCsv?: () => void;
|
|
7
|
+
onImportXls?: () => void;
|
|
8
|
+
};
|
|
9
|
+
export declare const FilterToolbar: ({ onOpenModal, enableImportCsv, enableImportXls, onImportCsv, onImportXls }: FilterToolbarProps) => React.JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=filter-toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-toolbar.d.ts","sourceRoot":"","sources":["../../../src/components/filter-toolbar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,KAAK,kBAAkB,GAAG;IACxB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,6EAM3B,kBAAkB,sBAwCpB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FilterToolbar = void 0;
|
|
4
|
+
const ui_button_1 = require("@akinon/ui-button");
|
|
5
|
+
const ui_space_1 = require("@akinon/ui-space");
|
|
6
|
+
const ui_typography_1 = require("@akinon/ui-typography");
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const i18n_1 = require("../i18n");
|
|
9
|
+
const FilterToolbar = ({ onOpenModal, enableImportCsv, enableImportXls, onImportCsv, onImportXls }) => {
|
|
10
|
+
return (react_1.default.createElement("div", { className: "akinon-filter__top" },
|
|
11
|
+
react_1.default.createElement(ui_typography_1.Title, { className: "akinon-filter__title", level: 4 }, i18n_1.i18n.t('header.title')),
|
|
12
|
+
react_1.default.createElement(ui_space_1.Space, { className: "akinon-filter__toolbar", size: 6 },
|
|
13
|
+
enableImportCsv && onImportCsv ? (react_1.default.createElement(ui_button_1.Button, { className: "akinon-filter__toolbar-item", onClick: onImportCsv, type: "primary" }, i18n_1.i18n.t('header.actions.importCsv'))) : null,
|
|
14
|
+
enableImportXls && onImportXls ? (react_1.default.createElement(ui_button_1.Button, { className: "akinon-filter__toolbar-item", onClick: onImportXls, type: "primary" }, i18n_1.i18n.t('header.actions.importXls'))) : null,
|
|
15
|
+
react_1.default.createElement(ui_button_1.Button, { className: "akinon-filter__toolbar-item", icon: "filter", iconSize: 16, onClick: onOpenModal, type: "primary", title: i18n_1.i18n.t('header.actions.selectFilters'), "aria-label": i18n_1.i18n.t('header.actions.selectFilters') }))));
|
|
16
|
+
};
|
|
17
|
+
exports.FilterToolbar = FilterToolbar;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { FieldValues } from '@akinon/akiform';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import type { AkifilterField } from '../types';
|
|
4
|
+
type VisibilityModalProps<TFieldValues extends FieldValues = FieldValues> = {
|
|
5
|
+
open: boolean;
|
|
6
|
+
searchTerm: string;
|
|
7
|
+
paginatedFields: AkifilterField<TFieldValues>[];
|
|
8
|
+
filteredCount: number;
|
|
9
|
+
visibleKeys: string[];
|
|
10
|
+
onClose: () => void;
|
|
11
|
+
onSearchTermChange: (value: string) => void;
|
|
12
|
+
onToggleVisibility: (key: string) => void;
|
|
13
|
+
onPaginationChange: (page: number, pageSize: number) => void;
|
|
14
|
+
page: number;
|
|
15
|
+
pageSize: number;
|
|
16
|
+
};
|
|
17
|
+
export declare const VisibilityModal: <TFieldValues extends FieldValues = FieldValues>({ open, searchTerm, paginatedFields, filteredCount, visibleKeys, onClose, onSearchTermChange, onToggleVisibility, onPaginationChange, page, pageSize }: VisibilityModalProps<TFieldValues>) => React.JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=visibility-modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibility-modal.d.ts","sourceRoot":"","sources":["../../../src/components/visibility-modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAOnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,KAAK,oBAAoB,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW,IAAI;IAC1E,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,wJAYC,oBAAoB,CAAC,YAAY,CAAC,sBAmEpC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VisibilityModal = void 0;
|
|
4
|
+
const icons_1 = require("@akinon/icons");
|
|
5
|
+
const ui_checkbox_1 = require("@akinon/ui-checkbox");
|
|
6
|
+
const ui_input_1 = require("@akinon/ui-input");
|
|
7
|
+
const ui_modal_1 = require("@akinon/ui-modal");
|
|
8
|
+
const ui_pagination_1 = require("@akinon/ui-pagination");
|
|
9
|
+
const ui_typography_1 = require("@akinon/ui-typography");
|
|
10
|
+
const react_1 = require("react");
|
|
11
|
+
const i18n_1 = require("../i18n");
|
|
12
|
+
const schema_1 = require("../utils/schema");
|
|
13
|
+
const VisibilityModal = ({ open, searchTerm, paginatedFields, filteredCount, visibleKeys, onClose, onSearchTermChange, onToggleVisibility, onPaginationChange, page, pageSize }) => {
|
|
14
|
+
const handleSearchChange = react_1.default.useCallback(event => {
|
|
15
|
+
onSearchTermChange(event.target.value);
|
|
16
|
+
}, [onSearchTermChange]);
|
|
17
|
+
return (react_1.default.createElement(ui_modal_1.Modal, { className: "akinon-filter__modal", open: open, onCancel: onClose, footer: null, width: 680, title: i18n_1.i18n.t('modal.title'), destroyOnClose: true },
|
|
18
|
+
react_1.default.createElement("div", { className: "akinon-filter__modal-toolbar" },
|
|
19
|
+
react_1.default.createElement(ui_input_1.Input, { allowClear: true, prefix: react_1.default.createElement(icons_1.Icon, { icon: "search", size: "16", className: "mr-2" }), placeholder: i18n_1.i18n.t('modal.searchPlaceholder'), value: searchTerm, onChange: event => {
|
|
20
|
+
handleSearchChange(event);
|
|
21
|
+
onPaginationChange(1, pageSize);
|
|
22
|
+
}, size: "large" })),
|
|
23
|
+
react_1.default.createElement("div", { className: "akinon-filter__modal-list" }, paginatedFields.length === 0 ? (react_1.default.createElement(ui_typography_1.Text, { type: "secondary" }, i18n_1.i18n.t('modal.empty'))) : (paginatedFields.map(field => {
|
|
24
|
+
const key = String(field.key);
|
|
25
|
+
return (react_1.default.createElement(ui_checkbox_1.Checkbox, { key: key, checked: visibleKeys.includes(key), onChange: () => onToggleVisibility(key), className: "akinon-filter__modal-checkbox" }, (0, schema_1.getDisplayLabel)(field)));
|
|
26
|
+
}))),
|
|
27
|
+
filteredCount > pageSize ? (react_1.default.createElement("div", { className: "akinon-filter__modal-pagination" },
|
|
28
|
+
react_1.default.createElement(ui_pagination_1.Pagination, { current: page, pageSize: pageSize, total: filteredCount, showSizeChanger: false, onChange: onPaginationChange }))) : null));
|
|
29
|
+
};
|
|
30
|
+
exports.VisibilityModal = VisibilityModal;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,qBAAqB,MAAM,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FILTER_DEBOUNCE_DELAY = exports.DEFAULT_MODAL_PAGE_SIZE = exports.DEFAULT_VISIBLE_COUNT = void 0;
|
|
4
|
+
exports.DEFAULT_VISIBLE_COUNT = 8;
|
|
5
|
+
exports.DEFAULT_MODAL_PAGE_SIZE = 40;
|
|
6
|
+
exports.FILTER_DEBOUNCE_DELAY = 300;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-debounced-value.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-debounced-value.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,MAAM,KAAG,CAc9D,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useDebouncedValue = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const useDebouncedValue = (value, delay) => {
|
|
6
|
+
const [debouncedValue, setDebouncedValue] = (0, react_1.useState)(value);
|
|
7
|
+
(0, react_1.useEffect)(() => {
|
|
8
|
+
const timer = setTimeout(() => {
|
|
9
|
+
setDebouncedValue(value);
|
|
10
|
+
}, delay);
|
|
11
|
+
return () => {
|
|
12
|
+
clearTimeout(timer);
|
|
13
|
+
};
|
|
14
|
+
}, [delay, value]);
|
|
15
|
+
return debouncedValue;
|
|
16
|
+
};
|
|
17
|
+
exports.useDebouncedValue = useDebouncedValue;
|
package/dist/cjs/i18n/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
lng: string;
|
|
4
|
-
};
|
|
1
|
+
import { type AkilocaleInstance } from '@akinon/akilocale';
|
|
2
|
+
export declare const i18n: AkilocaleInstance;
|
|
5
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/i18n/index.
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAKtE,eAAO,MAAM,IAAI,EAAE,iBAOjB,CAAC"}
|
package/dist/cjs/i18n/index.js
CHANGED
|
@@ -5,7 +5,7 @@ const akilocale_1 = require("@akinon/akilocale");
|
|
|
5
5
|
const en_1 = require("./translations/en");
|
|
6
6
|
const tr_1 = require("./translations/tr");
|
|
7
7
|
exports.i18n = akilocale_1.Akilocale.createInstance({
|
|
8
|
-
debug:
|
|
8
|
+
debug: false,
|
|
9
9
|
fallbackLng: 'en',
|
|
10
10
|
translations: {
|
|
11
11
|
en: en_1.default,
|
|
@@ -1,5 +1,35 @@
|
|
|
1
|
-
declare const
|
|
2
|
-
readonly
|
|
1
|
+
declare const translations: {
|
|
2
|
+
readonly header: {
|
|
3
|
+
readonly title: "Filters";
|
|
4
|
+
readonly actions: {
|
|
5
|
+
readonly selectFilters: "Select filters";
|
|
6
|
+
readonly importCsv: "Import CSV";
|
|
7
|
+
readonly importXls: "Import XLS/XLSX";
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
readonly applied: {
|
|
11
|
+
readonly label: "Active filters:";
|
|
12
|
+
readonly empty: "No filters applied yet.";
|
|
13
|
+
readonly clearAll: "Clear all";
|
|
14
|
+
readonly clearSingle: "Remove {{field}}";
|
|
15
|
+
};
|
|
16
|
+
readonly form: {
|
|
17
|
+
readonly noVisibleFields: "Select at least one filter to get started.";
|
|
18
|
+
readonly unsupportedField: "Field type \"{{field}}\" is not supported yet.";
|
|
19
|
+
};
|
|
20
|
+
readonly modal: {
|
|
21
|
+
readonly title: "Select visible filters";
|
|
22
|
+
readonly searchPlaceholder: "Search filters by name…";
|
|
23
|
+
readonly empty: "No filters match your search.";
|
|
24
|
+
};
|
|
25
|
+
readonly emptyState: {
|
|
26
|
+
readonly message: "Provide a filter schema to render the Akifilter component.";
|
|
27
|
+
};
|
|
28
|
+
readonly errors: {
|
|
29
|
+
readonly title: "Akifilter failed to load";
|
|
30
|
+
readonly description: "An unexpected error occurred while rendering the filters. Try again or refresh the page.";
|
|
31
|
+
readonly retry: "Try again";
|
|
32
|
+
};
|
|
3
33
|
};
|
|
4
|
-
export default
|
|
34
|
+
export default translations;
|
|
5
35
|
//# sourceMappingURL=en.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../src/i18n/translations/en.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../src/i18n/translations/en.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCR,CAAC;AAEX,eAAe,YAAY,CAAC"}
|
|
@@ -1,6 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
4
|
-
|
|
3
|
+
const translations = {
|
|
4
|
+
header: {
|
|
5
|
+
title: 'Filters',
|
|
6
|
+
actions: {
|
|
7
|
+
selectFilters: 'Select filters',
|
|
8
|
+
importCsv: 'Import CSV',
|
|
9
|
+
importXls: 'Import XLS/XLSX'
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
applied: {
|
|
13
|
+
label: 'Active filters:',
|
|
14
|
+
empty: 'No filters applied yet.',
|
|
15
|
+
clearAll: 'Clear all',
|
|
16
|
+
clearSingle: 'Remove {{field}}'
|
|
17
|
+
},
|
|
18
|
+
form: {
|
|
19
|
+
noVisibleFields: 'Select at least one filter to get started.',
|
|
20
|
+
unsupportedField: 'Field type "{{field}}" is not supported yet.'
|
|
21
|
+
},
|
|
22
|
+
modal: {
|
|
23
|
+
title: 'Select visible filters',
|
|
24
|
+
searchPlaceholder: 'Search filters by name…',
|
|
25
|
+
empty: 'No filters match your search.'
|
|
26
|
+
},
|
|
27
|
+
emptyState: {
|
|
28
|
+
message: 'Provide a filter schema to render the Akifilter component.'
|
|
29
|
+
},
|
|
30
|
+
errors: {
|
|
31
|
+
title: 'Akifilter failed to load',
|
|
32
|
+
description: 'An unexpected error occurred while rendering the filters. Try again or refresh the page.',
|
|
33
|
+
retry: 'Try again'
|
|
34
|
+
}
|
|
5
35
|
};
|
|
6
|
-
exports.default =
|
|
36
|
+
exports.default = translations;
|
|
@@ -1,5 +1,35 @@
|
|
|
1
|
-
declare const
|
|
2
|
-
readonly
|
|
1
|
+
declare const translations: {
|
|
2
|
+
readonly header: {
|
|
3
|
+
readonly title: "Filtreler";
|
|
4
|
+
readonly actions: {
|
|
5
|
+
readonly selectFilters: "Filtreleri seç";
|
|
6
|
+
readonly importCsv: "CSV içe aktar";
|
|
7
|
+
readonly importXls: "XLS/XLSX içe aktar";
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
readonly applied: {
|
|
11
|
+
readonly label: "Aktif filtreler:";
|
|
12
|
+
readonly empty: "Henüz filtre uygulanmadı.";
|
|
13
|
+
readonly clearAll: "Tümünü temizle";
|
|
14
|
+
readonly clearSingle: "{{field}} filtresini kaldır";
|
|
15
|
+
};
|
|
16
|
+
readonly form: {
|
|
17
|
+
readonly noVisibleFields: "Başlamak için en az bir filtre seçin.";
|
|
18
|
+
readonly unsupportedField: "\"{{field}}\" alan tipi henüz desteklenmiyor.";
|
|
19
|
+
};
|
|
20
|
+
readonly modal: {
|
|
21
|
+
readonly title: "Görünen filtreleri seçin";
|
|
22
|
+
readonly searchPlaceholder: "Filtrelerde ara…";
|
|
23
|
+
readonly empty: "Aramanızla eşleşen filtre bulunamadı.";
|
|
24
|
+
};
|
|
25
|
+
readonly emptyState: {
|
|
26
|
+
readonly message: "Akifilter bileşenini göstermek için bir filtre şeması belirtin.";
|
|
27
|
+
};
|
|
28
|
+
readonly errors: {
|
|
29
|
+
readonly title: "Akifilter yüklenemedi";
|
|
30
|
+
readonly description: "Filtreler render edilirken beklenmeyen bir hata oluştu. Lütfen tekrar deneyin veya sayfayı yenileyin.";
|
|
31
|
+
readonly retry: "Tekrar dene";
|
|
32
|
+
};
|
|
3
33
|
};
|
|
4
|
-
export default
|
|
34
|
+
export default translations;
|
|
5
35
|
//# sourceMappingURL=tr.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tr.d.ts","sourceRoot":"","sources":["../../../../src/i18n/translations/tr.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"tr.d.ts","sourceRoot":"","sources":["../../../../src/i18n/translations/tr.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCR,CAAC;AAEX,eAAe,YAAY,CAAC"}
|
|
@@ -1,6 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
4
|
-
|
|
3
|
+
const translations = {
|
|
4
|
+
header: {
|
|
5
|
+
title: 'Filtreler',
|
|
6
|
+
actions: {
|
|
7
|
+
selectFilters: 'Filtreleri seç',
|
|
8
|
+
importCsv: 'CSV içe aktar',
|
|
9
|
+
importXls: 'XLS/XLSX içe aktar'
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
applied: {
|
|
13
|
+
label: 'Aktif filtreler:',
|
|
14
|
+
empty: 'Henüz filtre uygulanmadı.',
|
|
15
|
+
clearAll: 'Tümünü temizle',
|
|
16
|
+
clearSingle: '{{field}} filtresini kaldır'
|
|
17
|
+
},
|
|
18
|
+
form: {
|
|
19
|
+
noVisibleFields: 'Başlamak için en az bir filtre seçin.',
|
|
20
|
+
unsupportedField: '"{{field}}" alan tipi henüz desteklenmiyor.'
|
|
21
|
+
},
|
|
22
|
+
modal: {
|
|
23
|
+
title: 'Görünen filtreleri seçin',
|
|
24
|
+
searchPlaceholder: 'Filtrelerde ara…',
|
|
25
|
+
empty: 'Aramanızla eşleşen filtre bulunamadı.'
|
|
26
|
+
},
|
|
27
|
+
emptyState: {
|
|
28
|
+
message: 'Akifilter bileşenini göstermek için bir filtre şeması belirtin.'
|
|
29
|
+
},
|
|
30
|
+
errors: {
|
|
31
|
+
title: 'Akifilter yüklenemedi',
|
|
32
|
+
description: 'Filtreler render edilirken beklenmeyen bir hata oluştu. Lütfen tekrar deneyin veya sayfayı yenileyin.',
|
|
33
|
+
retry: 'Tekrar dene'
|
|
34
|
+
}
|
|
5
35
|
};
|
|
6
|
-
exports.default =
|
|
36
|
+
exports.default = translations;
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import type { FilterState } from './components/FilterContext';
|
|
5
|
-
export type FilterProps = {
|
|
6
|
-
filterSchema: FormField[];
|
|
7
|
-
useAppliedFilters: [
|
|
8
|
-
FilterState['appliedFilters'],
|
|
9
|
-
React.Dispatch<React.SetStateAction<FilterState['appliedFilters']>>
|
|
10
|
-
];
|
|
11
|
-
conditionalFiltersSchema?: FormField[];
|
|
12
|
-
customMainPath?: string;
|
|
13
|
-
};
|
|
14
|
-
export declare const Akifilter: ({ filterSchema, useAppliedFilters, customMainPath, conditionalFiltersSchema }: FilterProps) => React.JSX.Element;
|
|
1
|
+
export * from './akifilter';
|
|
2
|
+
export * from './i18n';
|
|
3
|
+
export * from './types';
|
|
15
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,34 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const i18n_1 = require("./i18n");
|
|
16
|
-
// TODO: Whats this dayjs block doing here?
|
|
17
|
-
// extend dayjs with plugins so datepicker value can be set outside
|
|
18
|
-
dayjs_1.default.extend(customParseFormat_1.default);
|
|
19
|
-
dayjs_1.default.extend(advancedFormat_1.default);
|
|
20
|
-
dayjs_1.default.extend(weekday_1.default);
|
|
21
|
-
dayjs_1.default.extend(localeData_1.default);
|
|
22
|
-
dayjs_1.default.extend(weekOfYear_1.default);
|
|
23
|
-
dayjs_1.default.extend(weekYear_1.default);
|
|
24
|
-
const Akifilter = ({ filterSchema, useAppliedFilters, customMainPath, conditionalFiltersSchema }) => {
|
|
25
|
-
return (react_1.default.createElement("div", { className: "akinon-filter" },
|
|
26
|
-
react_1.default.createElement(components_1.FilterContextProvider, { filterSchema: filterSchema, customMainPath: customMainPath, useAppliedFilters: useAppliedFilters, conditionalFiltersSchema: conditionalFiltersSchema },
|
|
27
|
-
react_1.default.createElement("div", { className: "akinon-filter__top" },
|
|
28
|
-
react_1.default.createElement(ui_typography_1.Title, { className: "akinon-filter__title", level: 4 }, i18n_1.i18n.t('title')),
|
|
29
|
-
react_1.default.createElement(components_1.SelectShownFilters, null)),
|
|
30
|
-
react_1.default.createElement(components_1.AppliedFilters, null),
|
|
31
|
-
react_1.default.createElement(components_1.ShownFilters, null),
|
|
32
|
-
react_1.default.createElement(components_1.ConditionalFilters, null))));
|
|
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);
|
|
33
15
|
};
|
|
34
|
-
exports
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./akifilter"), exports);
|
|
18
|
+
__exportStar(require("./i18n"), exports);
|
|
19
|
+
__exportStar(require("./types"), exports);
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
.akinon-filter {
|
|
2
|
+
}
|
|
3
|
+
|
|
4
|
+
.akinon-filter__top {
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: space-between;
|
|
8
|
+
gap: 1rem;
|
|
9
|
+
margin-bottom: 0.5rem;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.akinon-filter__title {
|
|
13
|
+
margin: 0;
|
|
14
|
+
font-weight: 600;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.akinon-filter__toolbar-item {
|
|
18
|
+
padding: 0;
|
|
19
|
+
margin: 0;
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
height: 36px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.akinon-filter__applied {
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
padding: 6px;
|
|
29
|
+
background-color: var(--color-ebonyClay-500);
|
|
30
|
+
border-radius: 6px;
|
|
31
|
+
box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.2);
|
|
32
|
+
margin-bottom: 1rem;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.akinon-filter__applied-summary {
|
|
36
|
+
background-color: var(--color-ebonyClay-900);
|
|
37
|
+
flex: 1;
|
|
38
|
+
display: flex;
|
|
39
|
+
align-items: center;
|
|
40
|
+
border-radius: 5px;
|
|
41
|
+
padding: 6px 8px;
|
|
42
|
+
margin-right: 6px;
|
|
43
|
+
height: 36px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.akinon-filter__applied-label {
|
|
47
|
+
color: var(--color-white);
|
|
48
|
+
font-weight: 600;
|
|
49
|
+
font-size: 13px;
|
|
50
|
+
position: relative;
|
|
51
|
+
top: 1px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.akinon-filter__form-grid {
|
|
55
|
+
display: grid;
|
|
56
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
57
|
+
gap: 8px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.akinon-filter__form-grid > .akinon-form-item {
|
|
61
|
+
width: 100%;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.akinon-filter__form-grid > .akinon-form-item .akinon-form-item-control {
|
|
65
|
+
width: 100%;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@media (max-width: 1024px) {
|
|
69
|
+
.akinon-filter__form-grid {
|
|
70
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@media (max-width: 640px) {
|
|
75
|
+
.akinon-filter__form-grid {
|
|
76
|
+
grid-template-columns: minmax(0, 1fr);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.akinon-filter__applied-items {
|
|
81
|
+
display: flex;
|
|
82
|
+
flex-wrap: wrap;
|
|
83
|
+
gap: 8px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.akinon-filter__chip {
|
|
87
|
+
display: inline-flex;
|
|
88
|
+
align-items: center;
|
|
89
|
+
justify-content: center;
|
|
90
|
+
gap: 2px;
|
|
91
|
+
padding: 0 6px;
|
|
92
|
+
border-radius: 4px;
|
|
93
|
+
background-color: var(--color-neutral-100);
|
|
94
|
+
height: 24px;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.akinon-filter__chip-label {
|
|
98
|
+
font-weight: 600;
|
|
99
|
+
color: var(--color-ebonyClay-300);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.akinon-filter__chip-value {
|
|
103
|
+
font-weight: 700;
|
|
104
|
+
color: var(--color-ebonyClay-400);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.akinon-filter__chip-button {
|
|
108
|
+
margin: 0 0 0 0.25rem;
|
|
109
|
+
padding: 0;
|
|
110
|
+
line-height: 1;
|
|
111
|
+
border: none;
|
|
112
|
+
outline: none;
|
|
113
|
+
cursor: pointer;
|
|
114
|
+
color: var(--color-blue-500);
|
|
115
|
+
position: relative;
|
|
116
|
+
top: 1px;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.akinon-filter__applied-empty {
|
|
120
|
+
color: color(--color-ebonyClay-500);
|
|
121
|
+
font-size: 12px;
|
|
122
|
+
position: relative;
|
|
123
|
+
top: 1px;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.akinon-filter__modal-list {
|
|
127
|
+
display: grid;
|
|
128
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
129
|
+
gap: 12px;
|
|
130
|
+
margin-top: 16px;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.akinon-filter__modal-checkbox {
|
|
134
|
+
width: 100%;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.akinon-filter__modal-pagination {
|
|
138
|
+
margin-top: 1rem;
|
|
139
|
+
display: flex;
|
|
140
|
+
justify-content: flex-end;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@media (max-width: 1024px) {
|
|
144
|
+
.akinon-filter__modal-list {
|
|
145
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@media (max-width: 640px) {
|
|
150
|
+
.akinon-filter__modal-list {
|
|
151
|
+
grid-template-columns: minmax(0, 1fr);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.akinon-filter__empty-state,
|
|
156
|
+
.akinon-filter__error-state {
|
|
157
|
+
min-height: 160px;
|
|
158
|
+
display: flex;
|
|
159
|
+
flex-direction: column;
|
|
160
|
+
align-items: center;
|
|
161
|
+
justify-content: center;
|
|
162
|
+
gap: 12px;
|
|
163
|
+
padding: 24px;
|
|
164
|
+
text-align: center;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.akinon-filter__error-title {
|
|
168
|
+
margin: 0;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.akinon-filter__error-description {
|
|
172
|
+
max-width: 360px;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/* Modal window. */
|
|
176
|
+
|
|
177
|
+
.akinon-filter__modal-toolbar {
|
|
178
|
+
margin-bottom: 1rem;
|
|
179
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FieldValues, Path } from '@akinon/akiform';
|
|
2
|
+
import type { FormField } from '@akinon/akiform-builder';
|
|
3
|
+
export type AkifilterField<TFieldValues extends FieldValues = FieldValues> = FormField<TFieldValues> & {
|
|
4
|
+
/**
|
|
5
|
+
* Controls whether the field is shown in the main filter form by default.
|
|
6
|
+
*/
|
|
7
|
+
isVisible?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type AkifilterFieldKey<TFieldValues extends FieldValues = FieldValues> = Path<TFieldValues>;
|
|
10
|
+
export type AkifilterSchema<TFieldValues extends FieldValues = FieldValues> = AkifilterField<TFieldValues>[];
|
|
11
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,MAAM,cAAc,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW,IACvE,SAAS,CAAC,YAAY,CAAC,GAAG;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEJ,MAAM,MAAM,iBAAiB,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW,IAC1E,IAAI,CAAC,YAAY,CAAC,CAAC;AAErB,MAAM,MAAM,eAAe,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW,IACxE,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FieldValues } from '@akinon/akiform';
|
|
2
|
+
import type { AkifilterField, AkifilterSchema } from '../types';
|
|
3
|
+
export declare const getDisplayLabel: <TFieldValues extends FieldValues = FieldValues>(field: AkifilterField<TFieldValues>) => string;
|
|
4
|
+
export declare const getFieldAriaLabel: <TFieldValues extends FieldValues = FieldValues>(field: AkifilterField<TFieldValues>) => string;
|
|
5
|
+
export declare const ensureSchemaOrder: <TFieldValues extends FieldValues = FieldValues>(schema: AkifilterSchema<TFieldValues>, keys: string[]) => string[];
|
|
6
|
+
export declare const deriveDefaultVisibleKeys: <TFieldValues extends FieldValues = FieldValues>(schema: AkifilterSchema<TFieldValues>) => string[];
|
|
7
|
+
export declare const extractDefaultValues: <TFieldValues extends FieldValues = FieldValues>(schema: AkifilterSchema<TFieldValues>) => Partial<TFieldValues>;
|
|
8
|
+
export declare const normaliseValuesBySchema: <TFieldValues extends FieldValues = FieldValues>(schema: AkifilterSchema<TFieldValues>, values?: Partial<TFieldValues>) => Partial<TFieldValues>;
|
|
9
|
+
//# sourceMappingURL=schema.d.ts.map
|