@akinon/ai-modal-table 1.0.0
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/dist/cjs/__tests__/index.test.d.ts +2 -0
- package/dist/cjs/__tests__/index.test.d.ts.map +1 -0
- package/dist/cjs/__tests__/index.test.js +82 -0
- package/dist/cjs/__tests__/index.test.tsx +94 -0
- package/dist/cjs/ai-modal-table/__tests__/index.test.d.ts +2 -0
- package/dist/cjs/ai-modal-table/__tests__/index.test.d.ts.map +1 -0
- package/dist/cjs/ai-modal-table/__tests__/index.test.js +59 -0
- package/dist/cjs/ai-modal-table/__tests__/index.test.tsx +98 -0
- package/dist/cjs/ai-modal-table/index.d.ts +4 -0
- package/dist/cjs/ai-modal-table/index.d.ts.map +1 -0
- package/dist/cjs/ai-modal-table/index.js +54 -0
- package/dist/cjs/ai-table/__tests__/index.test.d.ts +2 -0
- package/dist/cjs/ai-table/__tests__/index.test.d.ts.map +1 -0
- package/dist/cjs/ai-table/__tests__/index.test.js +348 -0
- package/dist/cjs/ai-table/__tests__/index.test.tsx +572 -0
- package/dist/cjs/ai-table/components/__tests__/content.test.d.ts +2 -0
- package/dist/cjs/ai-table/components/__tests__/content.test.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/__tests__/content.test.js +1349 -0
- package/dist/cjs/ai-table/components/__tests__/content.test.tsx +1637 -0
- package/dist/cjs/ai-table/components/__tests__/filters.test.d.ts +2 -0
- package/dist/cjs/ai-table/components/__tests__/filters.test.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/__tests__/filters.test.js +400 -0
- package/dist/cjs/ai-table/components/__tests__/filters.test.tsx +534 -0
- package/dist/cjs/ai-table/components/__tests__/footer.test.d.ts +2 -0
- package/dist/cjs/ai-table/components/__tests__/footer.test.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/__tests__/footer.test.js +465 -0
- package/dist/cjs/ai-table/components/__tests__/footer.test.tsx +597 -0
- package/dist/cjs/ai-table/components/__tests__/mapper.test.d.ts +2 -0
- package/dist/cjs/ai-table/components/__tests__/mapper.test.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/__tests__/mapper.test.js +453 -0
- package/dist/cjs/ai-table/components/__tests__/mapper.test.tsx +601 -0
- package/dist/cjs/ai-table/components/__tests__/pagination.test.d.ts +2 -0
- package/dist/cjs/ai-table/components/__tests__/pagination.test.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/__tests__/pagination.test.js +430 -0
- package/dist/cjs/ai-table/components/__tests__/pagination.test.tsx +629 -0
- package/dist/cjs/ai-table/components/__tests__/row-actions.test.d.ts +2 -0
- package/dist/cjs/ai-table/components/__tests__/row-actions.test.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/__tests__/row-actions.test.js +382 -0
- package/dist/cjs/ai-table/components/__tests__/row-actions.test.tsx +507 -0
- package/dist/cjs/ai-table/components/content.d.ts +11 -0
- package/dist/cjs/ai-table/components/content.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/content.js +309 -0
- package/dist/cjs/ai-table/components/filters.d.ts +10 -0
- package/dist/cjs/ai-table/components/filters.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/filters.js +55 -0
- package/dist/cjs/ai-table/components/footer.d.ts +12 -0
- package/dist/cjs/ai-table/components/footer.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/footer.js +24 -0
- package/dist/cjs/ai-table/components/mapper.d.ts +11 -0
- package/dist/cjs/ai-table/components/mapper.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/mapper.js +21 -0
- package/dist/cjs/ai-table/components/pagination.d.ts +11 -0
- package/dist/cjs/ai-table/components/pagination.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/pagination.js +106 -0
- package/dist/cjs/ai-table/components/row-actions.d.ts +14 -0
- package/dist/cjs/ai-table/components/row-actions.d.ts.map +1 -0
- package/dist/cjs/ai-table/components/row-actions.js +52 -0
- package/dist/cjs/ai-table/constants/index.d.ts +17 -0
- package/dist/cjs/ai-table/constants/index.d.ts.map +1 -0
- package/dist/cjs/ai-table/constants/index.js +19 -0
- package/dist/cjs/ai-table/i18n/index.d.ts +3 -0
- package/dist/cjs/ai-table/i18n/index.d.ts.map +1 -0
- package/dist/cjs/ai-table/i18n/index.js +14 -0
- package/dist/cjs/ai-table/i18n/translations/en.d.ts +8 -0
- package/dist/cjs/ai-table/i18n/translations/en.d.ts.map +1 -0
- package/dist/cjs/ai-table/i18n/translations/en.js +9 -0
- package/dist/cjs/ai-table/i18n/translations/tr.d.ts +8 -0
- package/dist/cjs/ai-table/i18n/translations/tr.d.ts.map +1 -0
- package/dist/cjs/ai-table/i18n/translations/tr.js +9 -0
- package/dist/cjs/ai-table/index.d.ts +4 -0
- package/dist/cjs/ai-table/index.d.ts.map +1 -0
- package/dist/cjs/ai-table/index.js +71 -0
- package/dist/cjs/ai-table/utils/data-format/__tests__/index.test.d.ts +2 -0
- package/dist/cjs/ai-table/utils/data-format/__tests__/index.test.d.ts.map +1 -0
- package/dist/cjs/ai-table/utils/data-format/__tests__/index.test.js +146 -0
- package/dist/cjs/ai-table/utils/data-format/__tests__/index.test.ts +184 -0
- package/dist/cjs/ai-table/utils/data-format/index.d.ts +7 -0
- package/dist/cjs/ai-table/utils/data-format/index.d.ts.map +1 -0
- package/dist/cjs/ai-table/utils/data-format/index.js +43 -0
- package/dist/cjs/ai-table/utils/render-mapper-fields/__tests__/index.test.d.ts +2 -0
- package/dist/cjs/ai-table/utils/render-mapper-fields/__tests__/index.test.d.ts.map +1 -0
- package/dist/cjs/ai-table/utils/render-mapper-fields/__tests__/index.test.js +291 -0
- package/dist/cjs/ai-table/utils/render-mapper-fields/__tests__/index.test.tsx +399 -0
- package/dist/cjs/ai-table/utils/render-mapper-fields/index.d.ts +10 -0
- package/dist/cjs/ai-table/utils/render-mapper-fields/index.d.ts.map +1 -0
- package/dist/cjs/ai-table/utils/render-mapper-fields/index.js +48 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +7 -0
- package/dist/cjs/types/index.d.ts +134 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +2 -0
- package/dist/esm/__tests__/index.test.d.ts +2 -0
- package/dist/esm/__tests__/index.test.d.ts.map +1 -0
- package/dist/esm/__tests__/index.test.js +80 -0
- package/dist/esm/__tests__/index.test.tsx +94 -0
- package/dist/esm/ai-modal-table/__tests__/index.test.d.ts +2 -0
- package/dist/esm/ai-modal-table/__tests__/index.test.d.ts.map +1 -0
- package/dist/esm/ai-modal-table/__tests__/index.test.js +57 -0
- package/dist/esm/ai-modal-table/__tests__/index.test.tsx +98 -0
- package/dist/esm/ai-modal-table/index.d.ts +4 -0
- package/dist/esm/ai-modal-table/index.d.ts.map +1 -0
- package/dist/esm/ai-modal-table/index.js +50 -0
- package/dist/esm/ai-table/__tests__/index.test.d.ts +2 -0
- package/dist/esm/ai-table/__tests__/index.test.d.ts.map +1 -0
- package/dist/esm/ai-table/__tests__/index.test.js +346 -0
- package/dist/esm/ai-table/__tests__/index.test.tsx +572 -0
- package/dist/esm/ai-table/components/__tests__/content.test.d.ts +2 -0
- package/dist/esm/ai-table/components/__tests__/content.test.d.ts.map +1 -0
- package/dist/esm/ai-table/components/__tests__/content.test.js +1347 -0
- package/dist/esm/ai-table/components/__tests__/content.test.tsx +1637 -0
- package/dist/esm/ai-table/components/__tests__/filters.test.d.ts +2 -0
- package/dist/esm/ai-table/components/__tests__/filters.test.d.ts.map +1 -0
- package/dist/esm/ai-table/components/__tests__/filters.test.js +398 -0
- package/dist/esm/ai-table/components/__tests__/filters.test.tsx +534 -0
- package/dist/esm/ai-table/components/__tests__/footer.test.d.ts +2 -0
- package/dist/esm/ai-table/components/__tests__/footer.test.d.ts.map +1 -0
- package/dist/esm/ai-table/components/__tests__/footer.test.js +463 -0
- package/dist/esm/ai-table/components/__tests__/footer.test.tsx +597 -0
- package/dist/esm/ai-table/components/__tests__/mapper.test.d.ts +2 -0
- package/dist/esm/ai-table/components/__tests__/mapper.test.d.ts.map +1 -0
- package/dist/esm/ai-table/components/__tests__/mapper.test.js +451 -0
- package/dist/esm/ai-table/components/__tests__/mapper.test.tsx +601 -0
- package/dist/esm/ai-table/components/__tests__/pagination.test.d.ts +2 -0
- package/dist/esm/ai-table/components/__tests__/pagination.test.d.ts.map +1 -0
- package/dist/esm/ai-table/components/__tests__/pagination.test.js +428 -0
- package/dist/esm/ai-table/components/__tests__/pagination.test.tsx +629 -0
- package/dist/esm/ai-table/components/__tests__/row-actions.test.d.ts +2 -0
- package/dist/esm/ai-table/components/__tests__/row-actions.test.d.ts.map +1 -0
- package/dist/esm/ai-table/components/__tests__/row-actions.test.js +380 -0
- package/dist/esm/ai-table/components/__tests__/row-actions.test.tsx +507 -0
- package/dist/esm/ai-table/components/content.d.ts +11 -0
- package/dist/esm/ai-table/components/content.d.ts.map +1 -0
- package/dist/esm/ai-table/components/content.js +305 -0
- package/dist/esm/ai-table/components/filters.d.ts +10 -0
- package/dist/esm/ai-table/components/filters.d.ts.map +1 -0
- package/dist/esm/ai-table/components/filters.js +51 -0
- package/dist/esm/ai-table/components/footer.d.ts +12 -0
- package/dist/esm/ai-table/components/footer.d.ts.map +1 -0
- package/dist/esm/ai-table/components/footer.js +20 -0
- package/dist/esm/ai-table/components/mapper.d.ts +11 -0
- package/dist/esm/ai-table/components/mapper.d.ts.map +1 -0
- package/dist/esm/ai-table/components/mapper.js +17 -0
- package/dist/esm/ai-table/components/pagination.d.ts +11 -0
- package/dist/esm/ai-table/components/pagination.d.ts.map +1 -0
- package/dist/esm/ai-table/components/pagination.js +102 -0
- package/dist/esm/ai-table/components/row-actions.d.ts +14 -0
- package/dist/esm/ai-table/components/row-actions.d.ts.map +1 -0
- package/dist/esm/ai-table/components/row-actions.js +48 -0
- package/dist/esm/ai-table/constants/index.d.ts +17 -0
- package/dist/esm/ai-table/constants/index.d.ts.map +1 -0
- package/dist/esm/ai-table/constants/index.js +16 -0
- package/dist/esm/ai-table/i18n/index.d.ts +3 -0
- package/dist/esm/ai-table/i18n/index.d.ts.map +1 -0
- package/dist/esm/ai-table/i18n/index.js +11 -0
- package/dist/esm/ai-table/i18n/translations/en.d.ts +8 -0
- package/dist/esm/ai-table/i18n/translations/en.d.ts.map +1 -0
- package/dist/esm/ai-table/i18n/translations/en.js +7 -0
- package/dist/esm/ai-table/i18n/translations/tr.d.ts +8 -0
- package/dist/esm/ai-table/i18n/translations/tr.d.ts.map +1 -0
- package/dist/esm/ai-table/i18n/translations/tr.js +7 -0
- package/dist/esm/ai-table/index.d.ts +4 -0
- package/dist/esm/ai-table/index.d.ts.map +1 -0
- package/dist/esm/ai-table/index.js +67 -0
- package/dist/esm/ai-table/utils/data-format/__tests__/index.test.d.ts +2 -0
- package/dist/esm/ai-table/utils/data-format/__tests__/index.test.d.ts.map +1 -0
- package/dist/esm/ai-table/utils/data-format/__tests__/index.test.js +144 -0
- package/dist/esm/ai-table/utils/data-format/__tests__/index.test.ts +184 -0
- package/dist/esm/ai-table/utils/data-format/index.d.ts +7 -0
- package/dist/esm/ai-table/utils/data-format/index.d.ts.map +1 -0
- package/dist/esm/ai-table/utils/data-format/index.js +38 -0
- package/dist/esm/ai-table/utils/render-mapper-fields/__tests__/index.test.d.ts +2 -0
- package/dist/esm/ai-table/utils/render-mapper-fields/__tests__/index.test.d.ts.map +1 -0
- package/dist/esm/ai-table/utils/render-mapper-fields/__tests__/index.test.js +289 -0
- package/dist/esm/ai-table/utils/render-mapper-fields/__tests__/index.test.tsx +399 -0
- package/dist/esm/ai-table/utils/render-mapper-fields/index.d.ts +10 -0
- package/dist/esm/ai-table/utils/render-mapper-fields/index.d.ts.map +1 -0
- package/dist/esm/ai-table/utils/render-mapper-fields/index.js +44 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/types/index.d.ts +134 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const FILTER_TYPES: {
|
|
2
|
+
INPUT: string;
|
|
3
|
+
};
|
|
4
|
+
export declare const DEBOUNCE_DELAY = 300;
|
|
5
|
+
export declare const DEFAULT_PAGE_SIZE = 20;
|
|
6
|
+
export declare const DEFAULT_CURRENT_PAGE = 1;
|
|
7
|
+
export declare const PAGE_SIZE_OPTIONS: {
|
|
8
|
+
label: number;
|
|
9
|
+
value: number;
|
|
10
|
+
}[];
|
|
11
|
+
export declare const DEFAULT_ROW_KEY = "pk";
|
|
12
|
+
export declare const IS_EDITING_INITIAL_VALUE: null;
|
|
13
|
+
export declare const MAPPER_ITEM_TYPES: {
|
|
14
|
+
readonly SELECT: "select";
|
|
15
|
+
readonly TEXT: "text";
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai-table/constants/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;CAExB,CAAC;AAEF,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,eAAO,MAAM,iBAAiB;;;GAG3B,CAAC;AAEJ,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,eAAO,MAAM,wBAAwB,MAAO,CAAC;AAE7C,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAPPER_ITEM_TYPES = exports.IS_EDITING_INITIAL_VALUE = exports.DEFAULT_ROW_KEY = exports.PAGE_SIZE_OPTIONS = exports.DEFAULT_CURRENT_PAGE = exports.DEFAULT_PAGE_SIZE = exports.DEBOUNCE_DELAY = exports.FILTER_TYPES = void 0;
|
|
4
|
+
exports.FILTER_TYPES = {
|
|
5
|
+
INPUT: 'text'
|
|
6
|
+
};
|
|
7
|
+
exports.DEBOUNCE_DELAY = 300;
|
|
8
|
+
exports.DEFAULT_PAGE_SIZE = 20;
|
|
9
|
+
exports.DEFAULT_CURRENT_PAGE = 1;
|
|
10
|
+
exports.PAGE_SIZE_OPTIONS = [20, 50, 100, 250].map(item => ({
|
|
11
|
+
label: item,
|
|
12
|
+
value: item
|
|
13
|
+
}));
|
|
14
|
+
exports.DEFAULT_ROW_KEY = 'pk';
|
|
15
|
+
exports.IS_EDITING_INITIAL_VALUE = null;
|
|
16
|
+
exports.MAPPER_ITEM_TYPES = {
|
|
17
|
+
SELECT: 'select',
|
|
18
|
+
TEXT: 'text'
|
|
19
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai-table/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAKtE,eAAO,MAAM,IAAI,EAAE,iBAOjB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.i18n = void 0;
|
|
4
|
+
const akilocale_1 = require("@akinon/akilocale");
|
|
5
|
+
const en_1 = require("./translations/en");
|
|
6
|
+
const tr_1 = require("./translations/tr");
|
|
7
|
+
exports.i18n = akilocale_1.Akilocale.createInstance({
|
|
8
|
+
debug: false,
|
|
9
|
+
fallbackLng: 'en',
|
|
10
|
+
translations: {
|
|
11
|
+
en: en_1.default,
|
|
12
|
+
tr: tr_1.default
|
|
13
|
+
}
|
|
14
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare const translations: {
|
|
2
|
+
readonly 'show.value': "Show Value";
|
|
3
|
+
readonly 'filter.no.match': "No matching results found";
|
|
4
|
+
readonly 'expand.all': "Expand All";
|
|
5
|
+
readonly 'collapse.all': "Collapse All";
|
|
6
|
+
};
|
|
7
|
+
export default translations;
|
|
8
|
+
//# sourceMappingURL=en.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../../src/ai-table/i18n/translations/en.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY;;;;;CAKR,CAAC;AAEX,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const translations = {
|
|
4
|
+
'show.value': 'Show Value',
|
|
5
|
+
'filter.no.match': 'No matching results found',
|
|
6
|
+
'expand.all': 'Expand All',
|
|
7
|
+
'collapse.all': 'Collapse All'
|
|
8
|
+
};
|
|
9
|
+
exports.default = translations;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare const translations: {
|
|
2
|
+
readonly 'show.value': "Değer Göster";
|
|
3
|
+
readonly 'filter.no.match': "Filtreye uygun sonuç bulunamadı";
|
|
4
|
+
readonly 'expand.all': "Tümünü Genişlet";
|
|
5
|
+
readonly 'collapse.all': "Tümünü Daralt";
|
|
6
|
+
};
|
|
7
|
+
export default translations;
|
|
8
|
+
//# sourceMappingURL=tr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tr.d.ts","sourceRoot":"","sources":["../../../../../src/ai-table/i18n/translations/tr.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY;;;;;CAKR,CAAC;AAEX,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const translations = {
|
|
4
|
+
'show.value': 'Değer Göster',
|
|
5
|
+
'filter.no.match': 'Filtreye uygun sonuç bulunamadı',
|
|
6
|
+
'expand.all': 'Tümünü Genişlet',
|
|
7
|
+
'collapse.all': 'Tümünü Daralt'
|
|
8
|
+
};
|
|
9
|
+
exports.default = translations;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { AiTableProps } from '../types';
|
|
3
|
+
export declare const AiTable: ({ columns, customActionButtons, data, editDataIndexes, filters, isLoading, isSubmitting, onChangeSelectedRows, onEdit, onSubmitAllData, onSubmitSelectedData, rowKey, selectedRows, submitAllLabel, submitSelectedLabel, mapperConfig, tableClassName }: AiTableProps) => React.JSX.Element;
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai-table/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAe7C,eAAO,MAAM,OAAO,GAAI,yPAkBrB,YAAY,sBA4Hd,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AiTable = void 0;
|
|
4
|
+
const ui_ai_spinner_1 = require("@akinon/ui-ai-spinner");
|
|
5
|
+
const ui_button_1 = require("@akinon/ui-button");
|
|
6
|
+
const ui_layout_1 = require("@akinon/ui-layout");
|
|
7
|
+
const React = require("react");
|
|
8
|
+
const content_1 = require("./components/content");
|
|
9
|
+
const filters_1 = require("./components/filters");
|
|
10
|
+
const footer_1 = require("./components/footer");
|
|
11
|
+
const pagination_1 = require("./components/pagination");
|
|
12
|
+
const constants_1 = require("./constants");
|
|
13
|
+
const i18n_1 = require("./i18n");
|
|
14
|
+
const data_format_1 = require("./utils/data-format");
|
|
15
|
+
const { t } = i18n_1.i18n;
|
|
16
|
+
const AiTable = ({ columns = [], customActionButtons, data = [], editDataIndexes, filters = [], isLoading, isSubmitting, onChangeSelectedRows, onEdit, onSubmitAllData, onSubmitSelectedData, rowKey = constants_1.DEFAULT_ROW_KEY, selectedRows, submitAllLabel, submitSelectedLabel, mapperConfig, tableClassName }) => {
|
|
17
|
+
const [currentPage, setCurrentPage] = React.useState(constants_1.DEFAULT_CURRENT_PAGE);
|
|
18
|
+
const [pageSize, setPageSize] = React.useState(constants_1.DEFAULT_PAGE_SIZE);
|
|
19
|
+
const [filterValues, setFilterValues] = React.useState({});
|
|
20
|
+
const [expandedRows, setExpandedRows] = React.useState([]);
|
|
21
|
+
const hasMapper = !!mapperConfig;
|
|
22
|
+
const filteredData = React.useMemo(() => {
|
|
23
|
+
return (0, data_format_1.filterDataByFilters)(data, filterValues);
|
|
24
|
+
}, [data, filterValues]);
|
|
25
|
+
const paginatedData = React.useMemo(() => {
|
|
26
|
+
return (0, data_format_1.paginateData)({ currentPage, data: filteredData, pageSize });
|
|
27
|
+
}, [filteredData, currentPage, pageSize]);
|
|
28
|
+
const handleFilterChange = (key, value) => {
|
|
29
|
+
if (currentPage !== constants_1.DEFAULT_CURRENT_PAGE) {
|
|
30
|
+
setCurrentPage(constants_1.DEFAULT_CURRENT_PAGE);
|
|
31
|
+
}
|
|
32
|
+
setFilterValues(prev => (Object.assign(Object.assign({}, prev), { [key]: value })));
|
|
33
|
+
};
|
|
34
|
+
const handleToggleSelection = React.useCallback((rowId) => {
|
|
35
|
+
const newSelectedRows = selectedRows.includes(rowId)
|
|
36
|
+
? selectedRows.filter(id => id !== rowId)
|
|
37
|
+
: [...selectedRows, rowId];
|
|
38
|
+
onChangeSelectedRows(newSelectedRows);
|
|
39
|
+
}, [selectedRows, onChangeSelectedRows]);
|
|
40
|
+
const handlePageChange = (page) => {
|
|
41
|
+
setCurrentPage(page);
|
|
42
|
+
};
|
|
43
|
+
const handlePageSizeChange = (size) => {
|
|
44
|
+
setPageSize(size);
|
|
45
|
+
};
|
|
46
|
+
const handleToggleExpand = React.useCallback((rowId) => {
|
|
47
|
+
setExpandedRows(prev => prev.includes(rowId) ? prev.filter(id => id !== rowId) : [...prev, rowId]);
|
|
48
|
+
}, []);
|
|
49
|
+
const handleExpandAll = React.useCallback(() => {
|
|
50
|
+
const allRowIds = data.map(row => row[rowKey]);
|
|
51
|
+
setExpandedRows(allRowIds);
|
|
52
|
+
}, [data, rowKey]);
|
|
53
|
+
const handleCollapseAll = React.useCallback(() => {
|
|
54
|
+
setExpandedRows([]);
|
|
55
|
+
}, []);
|
|
56
|
+
if (isLoading) {
|
|
57
|
+
return (React.createElement("div", { className: "w-full h-80" },
|
|
58
|
+
React.createElement(ui_ai_spinner_1.AiSpinner, null)));
|
|
59
|
+
}
|
|
60
|
+
return (React.createElement(ui_layout_1.Flex, { gap: 10, vertical: true, className: tableClassName },
|
|
61
|
+
React.createElement(ui_layout_1.Flex, { justify: "space-between", align: "center" },
|
|
62
|
+
React.createElement(ui_layout_1.Flex, { align: "center", gap: 22 },
|
|
63
|
+
React.createElement(filters_1.TableFilters, { filters: filters, filterValues: filterValues, onFilterChange: handleFilterChange }),
|
|
64
|
+
hasMapper && (React.createElement(ui_layout_1.Flex, { gap: 8 },
|
|
65
|
+
React.createElement(ui_button_1.Button, { size: "small", onClick: handleExpandAll }, t('expand.all')),
|
|
66
|
+
React.createElement(ui_button_1.Button, { size: "small", onClick: handleCollapseAll }, t('collapse.all'))))),
|
|
67
|
+
React.createElement(pagination_1.TablePagination, { currentPage: currentPage, onPageChange: handlePageChange, onPageSizeChange: handlePageSizeChange, pageSize: pageSize, total: filteredData.length })),
|
|
68
|
+
React.createElement(content_1.TableContent, { columns: columns, customActionButtons: customActionButtons, data: paginatedData, editDataIndexes: editDataIndexes, expandedRows: expandedRows, onEdit: onEdit, onToggleExpand: handleToggleExpand, onToggleSelection: handleToggleSelection, rowKey: rowKey, selectedRows: selectedRows, mapperConfig: mapperConfig }),
|
|
69
|
+
React.createElement(footer_1.TableFooter, { isSubmitting: isSubmitting, selectedCount: selectedRows.length, submitAllLabel: submitAllLabel, submitSelectedLabel: submitSelectedLabel, onSubmitAll: onSubmitAllData, onSubmitSelected: onSubmitSelectedData })));
|
|
70
|
+
};
|
|
71
|
+
exports.AiTable = AiTable;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../../../../src/ai-table/utils/data-format/__tests__/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const index_1 = require("../index");
|
|
5
|
+
(0, vitest_1.describe)('filterDataByFilters', () => {
|
|
6
|
+
const mockData = [
|
|
7
|
+
{ id: 1, name: 'Ali', category: 'Electronics' },
|
|
8
|
+
{ id: 2, name: 'Ayşe', category: 'Clothing' },
|
|
9
|
+
{ id: 3, name: 'Mehmet', category: 'Electronics' }
|
|
10
|
+
];
|
|
11
|
+
(0, vitest_1.it)('should return all data when filter values are empty', () => {
|
|
12
|
+
const result = (0, index_1.filterDataByFilters)(mockData, {});
|
|
13
|
+
(0, vitest_1.expect)(result).toEqual(mockData);
|
|
14
|
+
});
|
|
15
|
+
(0, vitest_1.it)('should return all data when filter values is null or undefined', () => {
|
|
16
|
+
const result1 = (0, index_1.filterDataByFilters)(mockData, {});
|
|
17
|
+
(0, vitest_1.expect)(result1).toEqual(mockData);
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.it)('should filter data by single field', () => {
|
|
20
|
+
const result = (0, index_1.filterDataByFilters)(mockData, { category: 'Electronics' });
|
|
21
|
+
(0, vitest_1.expect)(result).toHaveLength(2);
|
|
22
|
+
(0, vitest_1.expect)(result).toEqual([
|
|
23
|
+
{ id: 1, name: 'Ali', category: 'Electronics' },
|
|
24
|
+
{ id: 3, name: 'Mehmet', category: 'Electronics' }
|
|
25
|
+
]);
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.it)('should filter data by multiple fields', () => {
|
|
28
|
+
const result = (0, index_1.filterDataByFilters)(mockData, {
|
|
29
|
+
category: 'Electronics',
|
|
30
|
+
name: 'Ali'
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.expect)(result).toHaveLength(1);
|
|
33
|
+
(0, vitest_1.expect)(result[0]).toEqual({ id: 1, name: 'Ali', category: 'Electronics' });
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.it)('should be case insensitive', () => {
|
|
36
|
+
const result = (0, index_1.filterDataByFilters)(mockData, { category: 'electronics' });
|
|
37
|
+
(0, vitest_1.expect)(result).toHaveLength(2);
|
|
38
|
+
});
|
|
39
|
+
(0, vitest_1.it)('should handle Turkish characters correctly', () => {
|
|
40
|
+
const turkishData = [
|
|
41
|
+
{ id: 1, name: 'Çağlar' },
|
|
42
|
+
{ id: 2, name: 'Şahan' },
|
|
43
|
+
{ id: 3, name: 'Züleyha' }
|
|
44
|
+
];
|
|
45
|
+
const result = (0, index_1.filterDataByFilters)(turkishData, { name: 'çağ' });
|
|
46
|
+
(0, vitest_1.expect)(result).toHaveLength(1);
|
|
47
|
+
(0, vitest_1.expect)(result[0].name).toBe('Çağlar');
|
|
48
|
+
});
|
|
49
|
+
(0, vitest_1.it)('should ignore empty string filter values', () => {
|
|
50
|
+
const result = (0, index_1.filterDataByFilters)(mockData, {
|
|
51
|
+
category: 'Electronics',
|
|
52
|
+
name: ''
|
|
53
|
+
});
|
|
54
|
+
(0, vitest_1.expect)(result).toHaveLength(2);
|
|
55
|
+
});
|
|
56
|
+
(0, vitest_1.it)('should ignore whitespace-only filter values', () => {
|
|
57
|
+
const result = (0, index_1.filterDataByFilters)(mockData, {
|
|
58
|
+
category: 'Electronics',
|
|
59
|
+
name: ' '
|
|
60
|
+
});
|
|
61
|
+
(0, vitest_1.expect)(result).toHaveLength(2);
|
|
62
|
+
});
|
|
63
|
+
(0, vitest_1.it)('should handle nested property paths', () => {
|
|
64
|
+
const nestedData = [
|
|
65
|
+
{ id: 1, user: { name: 'Ali', role: 'admin' } },
|
|
66
|
+
{ id: 2, user: { name: 'Ayşe', role: 'user' } }
|
|
67
|
+
];
|
|
68
|
+
const result = (0, index_1.filterDataByFilters)(nestedData, { 'user.name': 'Ali' });
|
|
69
|
+
(0, vitest_1.expect)(result).toHaveLength(1);
|
|
70
|
+
(0, vitest_1.expect)(result[0].id).toBe(1);
|
|
71
|
+
});
|
|
72
|
+
(0, vitest_1.it)('should return empty array when no matches found', () => {
|
|
73
|
+
const result = (0, index_1.filterDataByFilters)(mockData, { name: 'Nonexistent' });
|
|
74
|
+
(0, vitest_1.expect)(result).toHaveLength(0);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
(0, vitest_1.describe)('paginateData', () => {
|
|
78
|
+
const mockData = Array.from({ length: 25 }, (_, i) => ({
|
|
79
|
+
id: i + 1,
|
|
80
|
+
title: `Item ${i + 1}`
|
|
81
|
+
}));
|
|
82
|
+
(0, vitest_1.it)('should return first page correctly', () => {
|
|
83
|
+
const result = (0, index_1.paginateData)({
|
|
84
|
+
data: mockData,
|
|
85
|
+
currentPage: 1,
|
|
86
|
+
pageSize: 10
|
|
87
|
+
});
|
|
88
|
+
(0, vitest_1.expect)(result).toHaveLength(10);
|
|
89
|
+
(0, vitest_1.expect)(result[0].id).toBe(1);
|
|
90
|
+
(0, vitest_1.expect)(result[9].id).toBe(10);
|
|
91
|
+
});
|
|
92
|
+
(0, vitest_1.it)('should return second page correctly', () => {
|
|
93
|
+
const result = (0, index_1.paginateData)({
|
|
94
|
+
data: mockData,
|
|
95
|
+
currentPage: 2,
|
|
96
|
+
pageSize: 10
|
|
97
|
+
});
|
|
98
|
+
(0, vitest_1.expect)(result).toHaveLength(10);
|
|
99
|
+
(0, vitest_1.expect)(result[0].id).toBe(11);
|
|
100
|
+
(0, vitest_1.expect)(result[9].id).toBe(20);
|
|
101
|
+
});
|
|
102
|
+
(0, vitest_1.it)('should return last page with remaining items', () => {
|
|
103
|
+
const result = (0, index_1.paginateData)({
|
|
104
|
+
data: mockData,
|
|
105
|
+
currentPage: 3,
|
|
106
|
+
pageSize: 10
|
|
107
|
+
});
|
|
108
|
+
(0, vitest_1.expect)(result).toHaveLength(5);
|
|
109
|
+
(0, vitest_1.expect)(result[0].id).toBe(21);
|
|
110
|
+
(0, vitest_1.expect)(result[4].id).toBe(25);
|
|
111
|
+
});
|
|
112
|
+
(0, vitest_1.it)('should return empty array when page is beyond data length', () => {
|
|
113
|
+
const result = (0, index_1.paginateData)({
|
|
114
|
+
data: mockData,
|
|
115
|
+
currentPage: 10,
|
|
116
|
+
pageSize: 10
|
|
117
|
+
});
|
|
118
|
+
(0, vitest_1.expect)(result).toHaveLength(0);
|
|
119
|
+
});
|
|
120
|
+
(0, vitest_1.it)('should handle single item per page', () => {
|
|
121
|
+
const result = (0, index_1.paginateData)({
|
|
122
|
+
data: mockData,
|
|
123
|
+
currentPage: 1,
|
|
124
|
+
pageSize: 1
|
|
125
|
+
});
|
|
126
|
+
(0, vitest_1.expect)(result).toHaveLength(1);
|
|
127
|
+
(0, vitest_1.expect)(result[0].id).toBe(1);
|
|
128
|
+
});
|
|
129
|
+
(0, vitest_1.it)('should handle data length less than page size', () => {
|
|
130
|
+
const smallData = mockData.slice(0, 5);
|
|
131
|
+
const result = (0, index_1.paginateData)({
|
|
132
|
+
data: smallData,
|
|
133
|
+
currentPage: 1,
|
|
134
|
+
pageSize: 10
|
|
135
|
+
});
|
|
136
|
+
(0, vitest_1.expect)(result).toHaveLength(5);
|
|
137
|
+
});
|
|
138
|
+
(0, vitest_1.it)('should return empty array for empty data', () => {
|
|
139
|
+
const result = (0, index_1.paginateData)({
|
|
140
|
+
data: [],
|
|
141
|
+
currentPage: 1,
|
|
142
|
+
pageSize: 10
|
|
143
|
+
});
|
|
144
|
+
(0, vitest_1.expect)(result).toHaveLength(0);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
|
|
3
|
+
import { filterDataByFilters, paginateData } from '../index';
|
|
4
|
+
|
|
5
|
+
describe('filterDataByFilters', () => {
|
|
6
|
+
const mockData = [
|
|
7
|
+
{ id: 1, name: 'Ali', category: 'Electronics' },
|
|
8
|
+
{ id: 2, name: 'Ayşe', category: 'Clothing' },
|
|
9
|
+
{ id: 3, name: 'Mehmet', category: 'Electronics' }
|
|
10
|
+
];
|
|
11
|
+
|
|
12
|
+
it('should return all data when filter values are empty', () => {
|
|
13
|
+
const result = filterDataByFilters(mockData, {});
|
|
14
|
+
|
|
15
|
+
expect(result).toEqual(mockData);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('should return all data when filter values is null or undefined', () => {
|
|
19
|
+
const result1 = filterDataByFilters(mockData, {});
|
|
20
|
+
|
|
21
|
+
expect(result1).toEqual(mockData);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('should filter data by single field', () => {
|
|
25
|
+
const result = filterDataByFilters(mockData, { category: 'Electronics' });
|
|
26
|
+
|
|
27
|
+
expect(result).toHaveLength(2);
|
|
28
|
+
expect(result).toEqual([
|
|
29
|
+
{ id: 1, name: 'Ali', category: 'Electronics' },
|
|
30
|
+
{ id: 3, name: 'Mehmet', category: 'Electronics' }
|
|
31
|
+
]);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('should filter data by multiple fields', () => {
|
|
35
|
+
const result = filterDataByFilters(mockData, {
|
|
36
|
+
category: 'Electronics',
|
|
37
|
+
name: 'Ali'
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
expect(result).toHaveLength(1);
|
|
41
|
+
expect(result[0]).toEqual({ id: 1, name: 'Ali', category: 'Electronics' });
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('should be case insensitive', () => {
|
|
45
|
+
const result = filterDataByFilters(mockData, { category: 'electronics' });
|
|
46
|
+
|
|
47
|
+
expect(result).toHaveLength(2);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it('should handle Turkish characters correctly', () => {
|
|
51
|
+
const turkishData = [
|
|
52
|
+
{ id: 1, name: 'Çağlar' },
|
|
53
|
+
{ id: 2, name: 'Şahan' },
|
|
54
|
+
{ id: 3, name: 'Züleyha' }
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
const result = filterDataByFilters(turkishData, { name: 'çağ' });
|
|
58
|
+
|
|
59
|
+
expect(result).toHaveLength(1);
|
|
60
|
+
expect(result[0].name).toBe('Çağlar');
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it('should ignore empty string filter values', () => {
|
|
64
|
+
const result = filterDataByFilters(mockData, {
|
|
65
|
+
category: 'Electronics',
|
|
66
|
+
name: ''
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
expect(result).toHaveLength(2);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('should ignore whitespace-only filter values', () => {
|
|
73
|
+
const result = filterDataByFilters(mockData, {
|
|
74
|
+
category: 'Electronics',
|
|
75
|
+
name: ' '
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
expect(result).toHaveLength(2);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('should handle nested property paths', () => {
|
|
82
|
+
const nestedData = [
|
|
83
|
+
{ id: 1, user: { name: 'Ali', role: 'admin' } },
|
|
84
|
+
{ id: 2, user: { name: 'Ayşe', role: 'user' } }
|
|
85
|
+
];
|
|
86
|
+
|
|
87
|
+
const result = filterDataByFilters(nestedData, { 'user.name': 'Ali' });
|
|
88
|
+
|
|
89
|
+
expect(result).toHaveLength(1);
|
|
90
|
+
expect(result[0].id).toBe(1);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('should return empty array when no matches found', () => {
|
|
94
|
+
const result = filterDataByFilters(mockData, { name: 'Nonexistent' });
|
|
95
|
+
|
|
96
|
+
expect(result).toHaveLength(0);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
describe('paginateData', () => {
|
|
101
|
+
const mockData = Array.from({ length: 25 }, (_, i) => ({
|
|
102
|
+
id: i + 1,
|
|
103
|
+
title: `Item ${i + 1}`
|
|
104
|
+
}));
|
|
105
|
+
|
|
106
|
+
it('should return first page correctly', () => {
|
|
107
|
+
const result = paginateData({
|
|
108
|
+
data: mockData,
|
|
109
|
+
currentPage: 1,
|
|
110
|
+
pageSize: 10
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
expect(result).toHaveLength(10);
|
|
114
|
+
expect(result[0].id).toBe(1);
|
|
115
|
+
expect(result[9].id).toBe(10);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
it('should return second page correctly', () => {
|
|
119
|
+
const result = paginateData({
|
|
120
|
+
data: mockData,
|
|
121
|
+
currentPage: 2,
|
|
122
|
+
pageSize: 10
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
expect(result).toHaveLength(10);
|
|
126
|
+
expect(result[0].id).toBe(11);
|
|
127
|
+
expect(result[9].id).toBe(20);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
it('should return last page with remaining items', () => {
|
|
131
|
+
const result = paginateData({
|
|
132
|
+
data: mockData,
|
|
133
|
+
currentPage: 3,
|
|
134
|
+
pageSize: 10
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
expect(result).toHaveLength(5);
|
|
138
|
+
expect(result[0].id).toBe(21);
|
|
139
|
+
expect(result[4].id).toBe(25);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it('should return empty array when page is beyond data length', () => {
|
|
143
|
+
const result = paginateData({
|
|
144
|
+
data: mockData,
|
|
145
|
+
currentPage: 10,
|
|
146
|
+
pageSize: 10
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
expect(result).toHaveLength(0);
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
it('should handle single item per page', () => {
|
|
153
|
+
const result = paginateData({
|
|
154
|
+
data: mockData,
|
|
155
|
+
currentPage: 1,
|
|
156
|
+
pageSize: 1
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
expect(result).toHaveLength(1);
|
|
160
|
+
expect(result[0].id).toBe(1);
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it('should handle data length less than page size', () => {
|
|
164
|
+
const smallData = mockData.slice(0, 5);
|
|
165
|
+
|
|
166
|
+
const result = paginateData({
|
|
167
|
+
data: smallData,
|
|
168
|
+
currentPage: 1,
|
|
169
|
+
pageSize: 10
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
expect(result).toHaveLength(5);
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
it('should return empty array for empty data', () => {
|
|
176
|
+
const result = paginateData({
|
|
177
|
+
data: [],
|
|
178
|
+
currentPage: 1,
|
|
179
|
+
pageSize: 10
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
expect(result).toHaveLength(0);
|
|
183
|
+
});
|
|
184
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const filterDataByFilters: (data: Record<string, any>[], filterValues: Record<string, string>) => Record<string, any>[];
|
|
2
|
+
export declare const paginateData: ({ currentPage, data, pageSize }: {
|
|
3
|
+
data: Record<string, any>[];
|
|
4
|
+
currentPage: number;
|
|
5
|
+
pageSize: number;
|
|
6
|
+
}) => Record<string, any>[];
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ai-table/utils/data-format/index.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,mBAAmB,GAC9B,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAC3B,cAAc,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,0BAgBrC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,iCAI1B;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,0BAIA,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.paginateData = exports.filterDataByFilters = void 0;
|
|
5
|
+
const lodash_es_1 = require("lodash-es");
|
|
6
|
+
const includesMultiLocale = (sourceText, searchText) => {
|
|
7
|
+
const locale1 = 'tr-TR';
|
|
8
|
+
const locale2 = 'en-US';
|
|
9
|
+
return (sourceText
|
|
10
|
+
.toLocaleLowerCase(locale1)
|
|
11
|
+
.includes(searchText.toLocaleLowerCase(locale1)) ||
|
|
12
|
+
sourceText
|
|
13
|
+
.toLocaleLowerCase(locale2)
|
|
14
|
+
.includes(searchText.toLocaleLowerCase(locale2)) ||
|
|
15
|
+
// Additional cross-locale matching for better Turkish character handling
|
|
16
|
+
sourceText
|
|
17
|
+
.toLocaleLowerCase(locale1)
|
|
18
|
+
.includes(searchText.toLocaleLowerCase(locale2)) ||
|
|
19
|
+
sourceText
|
|
20
|
+
.toLocaleLowerCase(locale2)
|
|
21
|
+
.includes(searchText.toLocaleLowerCase(locale1)));
|
|
22
|
+
};
|
|
23
|
+
const filterDataByFilters = (data, filterValues) => {
|
|
24
|
+
if (!filterValues || Object.keys(filterValues).length === 0) {
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
27
|
+
return data.filter(item => {
|
|
28
|
+
return Object.entries(filterValues).every(([dataIndex, filterValue]) => {
|
|
29
|
+
if (!filterValue || filterValue.trim() === '') {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
const itemValue = (0, lodash_es_1.get)(item, dataIndex, '');
|
|
33
|
+
return includesMultiLocale(String(itemValue), filterValue.trim());
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
exports.filterDataByFilters = filterDataByFilters;
|
|
38
|
+
const paginateData = ({ currentPage, data, pageSize }) => {
|
|
39
|
+
const startIndex = (currentPage - 1) * pageSize;
|
|
40
|
+
const endIndex = startIndex + pageSize;
|
|
41
|
+
return data.slice(startIndex, endIndex);
|
|
42
|
+
};
|
|
43
|
+
exports.paginateData = paginateData;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../../../../src/ai-table/utils/render-mapper-fields/__tests__/index.test.tsx"],"names":[],"mappings":""}
|