@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/index.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const index_1 = require("../index");
|
|
6
|
+
const indexModule = require("../index");
|
|
7
|
+
(0, vitest_1.describe)('index.tsx - Public API', () => {
|
|
8
|
+
(0, vitest_1.describe)('Component Exports', () => {
|
|
9
|
+
(0, vitest_1.it)('should export AiModalTable and AiTable components', () => {
|
|
10
|
+
(0, vitest_1.expect)(indexModule).toHaveProperty('AiModalTable');
|
|
11
|
+
(0, vitest_1.expect)(indexModule).toHaveProperty('AiTable');
|
|
12
|
+
(0, vitest_1.expect)(typeof indexModule.AiModalTable).toBe('function');
|
|
13
|
+
(0, vitest_1.expect)(typeof indexModule.AiTable).toBe('function');
|
|
14
|
+
});
|
|
15
|
+
(0, vitest_1.it)('should have only named exports (no default export)', () => {
|
|
16
|
+
const exports = Object.keys(indexModule).sort();
|
|
17
|
+
(0, vitest_1.expect)(exports).toContain('AiModalTable');
|
|
18
|
+
(0, vitest_1.expect)(exports).toContain('AiTable');
|
|
19
|
+
(0, vitest_1.expect)(indexModule.default).toBeUndefined();
|
|
20
|
+
});
|
|
21
|
+
(0, vitest_1.it)('should maintain export consistency', () => {
|
|
22
|
+
(0, vitest_1.expect)(indexModule.AiModalTable).toBe(index_1.AiModalTable);
|
|
23
|
+
(0, vitest_1.expect)(indexModule.AiTable).toBe(index_1.AiTable);
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)('should export components as separate instances', () => {
|
|
26
|
+
const { AiModalTable, AiTable } = indexModule;
|
|
27
|
+
(0, vitest_1.expect)(AiModalTable).not.toBe(AiTable);
|
|
28
|
+
(0, vitest_1.expect)(typeof AiModalTable).toBe('function');
|
|
29
|
+
(0, vitest_1.expect)(typeof AiTable).toBe('function');
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.describe)('Module Structure', () => {
|
|
33
|
+
(0, vitest_1.it)('should be importable as ES module with all exports', () => {
|
|
34
|
+
(0, vitest_1.expect)(Object.keys(indexModule).length).toBeGreaterThanOrEqual(2);
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.it)('should have React components with proper names', () => {
|
|
37
|
+
const getComponentName = (comp) => comp.name || comp.displayName || 'Unknown';
|
|
38
|
+
(0, vitest_1.expect)(getComponentName(indexModule.AiModalTable)).toBeDefined();
|
|
39
|
+
(0, vitest_1.expect)(getComponentName(indexModule.AiTable)).toBeDefined();
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.it)('should not have circular or broken dependencies', () => {
|
|
42
|
+
// Should be able to destructure without errors
|
|
43
|
+
(0, vitest_1.expect)(() => {
|
|
44
|
+
const { AiModalTable: ModalTable, AiTable: Table } = indexModule;
|
|
45
|
+
if (!ModalTable || !Table)
|
|
46
|
+
throw new Error('Missing export');
|
|
47
|
+
}).not.toThrow();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
(0, vitest_1.describe)('Export Stability', () => {
|
|
51
|
+
(0, vitest_1.it)('should maintain stable export references across multiple imports', () => {
|
|
52
|
+
const import1 = indexModule.AiModalTable;
|
|
53
|
+
const import2 = indexModule.AiModalTable;
|
|
54
|
+
const import3 = indexModule.AiTable;
|
|
55
|
+
const import4 = indexModule.AiTable;
|
|
56
|
+
(0, vitest_1.expect)(import1).toBe(import2);
|
|
57
|
+
(0, vitest_1.expect)(import3).toBe(import4);
|
|
58
|
+
});
|
|
59
|
+
(0, vitest_1.it)('should support destructuring without errors', () => {
|
|
60
|
+
// Common user pattern - destructuring from index
|
|
61
|
+
const { AiModalTable, AiTable } = indexModule;
|
|
62
|
+
(0, vitest_1.expect)(AiModalTable).toBeDefined();
|
|
63
|
+
(0, vitest_1.expect)(AiTable).toBeDefined();
|
|
64
|
+
(0, vitest_1.expect)(typeof AiModalTable).toBe('function');
|
|
65
|
+
(0, vitest_1.expect)(typeof AiTable).toBe('function');
|
|
66
|
+
});
|
|
67
|
+
(0, vitest_1.it)('should support namespace import pattern', () => {
|
|
68
|
+
// Common user pattern - namespace import
|
|
69
|
+
const exports = indexModule;
|
|
70
|
+
(0, vitest_1.expect)(exports.AiModalTable).toBeDefined();
|
|
71
|
+
(0, vitest_1.expect)(exports.AiTable).toBeDefined();
|
|
72
|
+
});
|
|
73
|
+
(0, vitest_1.it)('should export both wrapper and content components', () => {
|
|
74
|
+
// Verify architectural separation:
|
|
75
|
+
// - AiModalTable wraps content (modal + AiTable)
|
|
76
|
+
// - AiTable provides table functionality independently
|
|
77
|
+
const { AiModalTable, AiTable } = indexModule;
|
|
78
|
+
(0, vitest_1.expect)(AiModalTable).not.toBe(AiTable);
|
|
79
|
+
(0, vitest_1.expect)(AiModalTable !== AiTable).toBe(true);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
|
|
4
|
+
import { AiModalTable, AiTable } from '../index';
|
|
5
|
+
import * as indexModule from '../index';
|
|
6
|
+
|
|
7
|
+
describe('index.tsx - Public API', () => {
|
|
8
|
+
describe('Component Exports', () => {
|
|
9
|
+
it('should export AiModalTable and AiTable components', () => {
|
|
10
|
+
expect(indexModule).toHaveProperty('AiModalTable');
|
|
11
|
+
expect(indexModule).toHaveProperty('AiTable');
|
|
12
|
+
expect(typeof indexModule.AiModalTable).toBe('function');
|
|
13
|
+
expect(typeof indexModule.AiTable).toBe('function');
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('should have only named exports (no default export)', () => {
|
|
17
|
+
const exports = Object.keys(indexModule).sort();
|
|
18
|
+
expect(exports).toContain('AiModalTable');
|
|
19
|
+
expect(exports).toContain('AiTable');
|
|
20
|
+
expect((indexModule as Record<string, any>).default).toBeUndefined();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('should maintain export consistency', () => {
|
|
24
|
+
expect(indexModule.AiModalTable).toBe(AiModalTable);
|
|
25
|
+
expect(indexModule.AiTable).toBe(AiTable);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('should export components as separate instances', () => {
|
|
29
|
+
const { AiModalTable, AiTable } = indexModule;
|
|
30
|
+
expect(AiModalTable).not.toBe(AiTable);
|
|
31
|
+
expect(typeof AiModalTable).toBe('function');
|
|
32
|
+
expect(typeof AiTable).toBe('function');
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
describe('Module Structure', () => {
|
|
37
|
+
it('should be importable as ES module with all exports', () => {
|
|
38
|
+
expect(Object.keys(indexModule).length).toBeGreaterThanOrEqual(2);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('should have React components with proper names', () => {
|
|
42
|
+
const getComponentName = (comp: any) =>
|
|
43
|
+
comp.name || comp.displayName || 'Unknown';
|
|
44
|
+
|
|
45
|
+
expect(getComponentName(indexModule.AiModalTable)).toBeDefined();
|
|
46
|
+
expect(getComponentName(indexModule.AiTable)).toBeDefined();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('should not have circular or broken dependencies', () => {
|
|
50
|
+
// Should be able to destructure without errors
|
|
51
|
+
expect(() => {
|
|
52
|
+
const { AiModalTable: ModalTable, AiTable: Table } = indexModule;
|
|
53
|
+
if (!ModalTable || !Table) throw new Error('Missing export');
|
|
54
|
+
}).not.toThrow();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
describe('Export Stability', () => {
|
|
59
|
+
it('should maintain stable export references across multiple imports', () => {
|
|
60
|
+
const import1 = indexModule.AiModalTable;
|
|
61
|
+
const import2 = indexModule.AiModalTable;
|
|
62
|
+
const import3 = indexModule.AiTable;
|
|
63
|
+
const import4 = indexModule.AiTable;
|
|
64
|
+
|
|
65
|
+
expect(import1).toBe(import2);
|
|
66
|
+
expect(import3).toBe(import4);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('should support destructuring without errors', () => {
|
|
70
|
+
// Common user pattern - destructuring from index
|
|
71
|
+
const { AiModalTable, AiTable } = indexModule;
|
|
72
|
+
expect(AiModalTable).toBeDefined();
|
|
73
|
+
expect(AiTable).toBeDefined();
|
|
74
|
+
expect(typeof AiModalTable).toBe('function');
|
|
75
|
+
expect(typeof AiTable).toBe('function');
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('should support namespace import pattern', () => {
|
|
79
|
+
// Common user pattern - namespace import
|
|
80
|
+
const exports = indexModule;
|
|
81
|
+
expect(exports.AiModalTable).toBeDefined();
|
|
82
|
+
expect(exports.AiTable).toBeDefined();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it('should export both wrapper and content components', () => {
|
|
86
|
+
// Verify architectural separation:
|
|
87
|
+
// - AiModalTable wraps content (modal + AiTable)
|
|
88
|
+
// - AiTable provides table functionality independently
|
|
89
|
+
const { AiModalTable, AiTable } = indexModule;
|
|
90
|
+
expect(AiModalTable).not.toBe(AiTable);
|
|
91
|
+
expect(AiModalTable !== AiTable).toBe(true);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../../src/ai-modal-table/__tests__/index.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
15
|
+
const react_1 = require("@testing-library/react");
|
|
16
|
+
const react_2 = require("react");
|
|
17
|
+
const vitest_1 = require("vitest");
|
|
18
|
+
vitest_1.vi.mock('@akinon/ui-theme', async (importOriginal) => {
|
|
19
|
+
const actual = (await importOriginal());
|
|
20
|
+
return Object.assign(Object.assign({}, actual), { useToken: () => ({ token: {}, hashId: 'hash123' }) });
|
|
21
|
+
});
|
|
22
|
+
vitest_1.vi.mock('@akinon/ui-layout', () => ({
|
|
23
|
+
Flex: ({ children }) => react_2.default.createElement("div", { "data-testid": "flex" }, children)
|
|
24
|
+
}));
|
|
25
|
+
vitest_1.vi.mock('@akinon/ui-modal', () => ({
|
|
26
|
+
Modal: (_a) => {
|
|
27
|
+
var { children, onCancel, className } = _a, rest = __rest(_a, ["children", "onCancel", "className"]);
|
|
28
|
+
return (react_2.default.createElement("div", Object.assign({ "data-testid": "modal", className: className }, rest),
|
|
29
|
+
react_2.default.createElement("button", { "data-testid": "close-button", onClick: onCancel }),
|
|
30
|
+
children));
|
|
31
|
+
}
|
|
32
|
+
}));
|
|
33
|
+
vitest_1.vi.mock('../ai-table', () => ({
|
|
34
|
+
AiTable: (props) => (react_2.default.createElement("div", { "data-testid": "ai-table" },
|
|
35
|
+
react_2.default.createElement("pre", { "data-testid": "ai-table-props" }, JSON.stringify({
|
|
36
|
+
columns: props.columns,
|
|
37
|
+
data: props.data,
|
|
38
|
+
isLoading: props.isLoading
|
|
39
|
+
})))),
|
|
40
|
+
DEFAULT_ROW_KEY: 'id'
|
|
41
|
+
}));
|
|
42
|
+
const index_1 = require("../index");
|
|
43
|
+
(0, vitest_1.describe)('AiModalTable', () => {
|
|
44
|
+
(0, vitest_1.it)('renders description and passes props to AiTable', () => {
|
|
45
|
+
const columns = [{ title: 'Name', dataIndex: 'name' }];
|
|
46
|
+
const data = [{ id: 1, name: 'Alice' }];
|
|
47
|
+
(0, react_1.render)(react_2.default.createElement(index_1.AiModalTable, { description: "My description", columns: columns, data: data, isLoading: true, submitAllLabel: "Submit All", submitSelectedLabel: "Submit Selected", filters: [], selectedRows: [], onChangeSelectedRows: () => { }, isSubmitting: false, onSubmitAllData: () => { }, onSubmitSelectedData: () => { } }));
|
|
48
|
+
(0, vitest_1.expect)(react_1.screen.getByText('My description')).toBeInTheDocument();
|
|
49
|
+
});
|
|
50
|
+
(0, vitest_1.it)('calls onCancel when modal close clicked and applies class names', () => {
|
|
51
|
+
const onCancel = vitest_1.vi.fn();
|
|
52
|
+
(0, react_1.render)(react_2.default.createElement(index_1.AiModalTable, { description: "My description", columns: [], data: [], isLoading: true, submitAllLabel: "Submit All", submitSelectedLabel: "Submit Selected", filters: [], selectedRows: [], onChangeSelectedRows: () => { }, isSubmitting: false, onSubmitAllData: () => { }, onSubmitSelectedData: () => { }, onCancel: onCancel }));
|
|
53
|
+
const modal = react_1.screen.getByTestId('modal');
|
|
54
|
+
(0, vitest_1.expect)(modal.className).toContain('ai-modal-table');
|
|
55
|
+
(0, vitest_1.expect)(modal.className).toContain('hash123');
|
|
56
|
+
react_1.fireEvent.click(react_1.screen.getByTestId('close-button'));
|
|
57
|
+
(0, vitest_1.expect)(onCancel).toHaveBeenCalledTimes(1);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { fireEvent, render, screen } from '@testing-library/react';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
5
|
+
|
|
6
|
+
vi.mock('@akinon/ui-theme', async importOriginal => {
|
|
7
|
+
const actual = (await importOriginal()) as Record<string, any>;
|
|
8
|
+
|
|
9
|
+
return {
|
|
10
|
+
...actual,
|
|
11
|
+
useToken: () => ({ token: {}, hashId: 'hash123' })
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
vi.mock('@akinon/ui-layout', () => ({
|
|
16
|
+
Flex: ({ children }: any) => <div data-testid="flex">{children}</div>
|
|
17
|
+
}));
|
|
18
|
+
|
|
19
|
+
vi.mock('@akinon/ui-modal', () => ({
|
|
20
|
+
Modal: ({ children, onCancel, className, ...rest }: any) => (
|
|
21
|
+
<div data-testid="modal" className={className} {...rest}>
|
|
22
|
+
<button data-testid="close-button" onClick={onCancel} />
|
|
23
|
+
{children}
|
|
24
|
+
</div>
|
|
25
|
+
)
|
|
26
|
+
}));
|
|
27
|
+
|
|
28
|
+
vi.mock('../ai-table', () => ({
|
|
29
|
+
AiTable: (props: any) => (
|
|
30
|
+
<div data-testid="ai-table">
|
|
31
|
+
<pre data-testid="ai-table-props">
|
|
32
|
+
{JSON.stringify({
|
|
33
|
+
columns: props.columns,
|
|
34
|
+
data: props.data,
|
|
35
|
+
isLoading: props.isLoading
|
|
36
|
+
})}
|
|
37
|
+
</pre>
|
|
38
|
+
</div>
|
|
39
|
+
),
|
|
40
|
+
DEFAULT_ROW_KEY: 'id'
|
|
41
|
+
}));
|
|
42
|
+
|
|
43
|
+
import { AiModalTable } from '../index';
|
|
44
|
+
|
|
45
|
+
describe('AiModalTable', () => {
|
|
46
|
+
it('renders description and passes props to AiTable', () => {
|
|
47
|
+
const columns = [{ title: 'Name', dataIndex: 'name' }];
|
|
48
|
+
const data = [{ id: 1, name: 'Alice' }];
|
|
49
|
+
|
|
50
|
+
render(
|
|
51
|
+
<AiModalTable
|
|
52
|
+
description="My description"
|
|
53
|
+
columns={columns}
|
|
54
|
+
data={data}
|
|
55
|
+
isLoading={true}
|
|
56
|
+
submitAllLabel="Submit All"
|
|
57
|
+
submitSelectedLabel="Submit Selected"
|
|
58
|
+
filters={[]}
|
|
59
|
+
selectedRows={[]}
|
|
60
|
+
onChangeSelectedRows={() => {}}
|
|
61
|
+
isSubmitting={false}
|
|
62
|
+
onSubmitAllData={() => {}}
|
|
63
|
+
onSubmitSelectedData={() => {}}
|
|
64
|
+
/>
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
expect(screen.getByText('My description')).toBeInTheDocument();
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it('calls onCancel when modal close clicked and applies class names', () => {
|
|
71
|
+
const onCancel = vi.fn();
|
|
72
|
+
|
|
73
|
+
render(
|
|
74
|
+
<AiModalTable
|
|
75
|
+
description="My description"
|
|
76
|
+
columns={[]}
|
|
77
|
+
data={[]}
|
|
78
|
+
isLoading={true}
|
|
79
|
+
submitAllLabel="Submit All"
|
|
80
|
+
submitSelectedLabel="Submit Selected"
|
|
81
|
+
filters={[]}
|
|
82
|
+
selectedRows={[]}
|
|
83
|
+
onChangeSelectedRows={() => {}}
|
|
84
|
+
isSubmitting={false}
|
|
85
|
+
onSubmitAllData={() => {}}
|
|
86
|
+
onSubmitSelectedData={() => {}}
|
|
87
|
+
onCancel={onCancel}
|
|
88
|
+
/>
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
const modal = screen.getByTestId('modal');
|
|
92
|
+
expect(modal.className).toContain('ai-modal-table');
|
|
93
|
+
expect(modal.className).toContain('hash123');
|
|
94
|
+
|
|
95
|
+
fireEvent.click(screen.getByTestId('close-button'));
|
|
96
|
+
expect(onCancel).toHaveBeenCalledTimes(1);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { AiModalTableProps } from '../types';
|
|
3
|
+
export declare const AiModalTable: ({ columns, customActionButtons, data, description, editDataIndexes, filters, isLoading, isSubmitting, onChangeSelectedRows, onEdit, onSubmitAllData, onSubmitSelectedData, rowKey, selectedRows, submitAllLabel, submitSelectedLabel, mapperConfig, tableClassName, ...modalProps }: AiModalTableProps) => React.JSX.Element;
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai-modal-table/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,eAAO,MAAM,YAAY,GAAI,qRAoB1B,iBAAiB,sBAoEnB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.AiModalTable = void 0;
|
|
15
|
+
const ui_layout_1 = require("@akinon/ui-layout");
|
|
16
|
+
const ui_modal_1 = require("@akinon/ui-modal");
|
|
17
|
+
const ui_theme_1 = require("@akinon/ui-theme");
|
|
18
|
+
const cssinjs_1 = require("@ant-design/cssinjs");
|
|
19
|
+
const antd_1 = require("antd");
|
|
20
|
+
const classnames_1 = require("classnames");
|
|
21
|
+
const React = require("react");
|
|
22
|
+
const ai_table_1 = require("../ai-table");
|
|
23
|
+
const constants_1 = require("../ai-table/constants");
|
|
24
|
+
const AiModalTable = (_a) => {
|
|
25
|
+
var { columns = [], customActionButtons, data = [], description, editDataIndexes, filters = [], isLoading, isSubmitting, onChangeSelectedRows, onEdit, onSubmitAllData, onSubmitSelectedData, rowKey = constants_1.DEFAULT_ROW_KEY, selectedRows, submitAllLabel, submitSelectedLabel, mapperConfig, tableClassName } = _a, modalProps = __rest(_a, ["columns", "customActionButtons", "data", "description", "editDataIndexes", "filters", "isLoading", "isSubmitting", "onChangeSelectedRows", "onEdit", "onSubmitAllData", "onSubmitSelectedData", "rowKey", "selectedRows", "submitAllLabel", "submitSelectedLabel", "mapperConfig", "tableClassName"]);
|
|
26
|
+
const { onCancel, className } = modalProps, restModalProps = __rest(modalProps, ["onCancel", "className"]);
|
|
27
|
+
const { getPrefixCls, theme } = React.useContext(antd_1.ConfigProvider.ConfigContext);
|
|
28
|
+
const { token, hashId } = (0, ui_theme_1.useToken)();
|
|
29
|
+
const baseCls = getPrefixCls('ai-modal-table');
|
|
30
|
+
const handleCancel = (e) => {
|
|
31
|
+
if (onCancel)
|
|
32
|
+
onCancel(e);
|
|
33
|
+
};
|
|
34
|
+
const useStyle = (0, cssinjs_1.useStyleRegister)({
|
|
35
|
+
token: token,
|
|
36
|
+
path: ['AiModalTable'],
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
+
theme: theme
|
|
39
|
+
}, () => {
|
|
40
|
+
const prefixCls = `:where(.${hashId}).${baseCls}`;
|
|
41
|
+
return {
|
|
42
|
+
[prefixCls]: {
|
|
43
|
+
'.akinon-modal-title': {
|
|
44
|
+
borderBottom: 'none !important'
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
return useStyle(React.createElement(ui_modal_1.Modal, Object.assign({ className: (0, classnames_1.default)(baseCls, hashId, className), footer: null, onCancel: handleCancel, centered: true, destroyOnClose: true, width: 1200 }, restModalProps),
|
|
50
|
+
React.createElement(ui_layout_1.Flex, { gap: 10, vertical: true },
|
|
51
|
+
React.createElement("div", { className: "text-neutral-50 text-sm mb-2" }, description),
|
|
52
|
+
React.createElement(ai_table_1.AiTable, { columns: columns, customActionButtons: customActionButtons, data: data, editDataIndexes: editDataIndexes, filters: filters, isLoading: isLoading, isSubmitting: isSubmitting, onChangeSelectedRows: onChangeSelectedRows, onEdit: onEdit, onSubmitAllData: onSubmitAllData, onSubmitSelectedData: onSubmitSelectedData, rowKey: rowKey, selectedRows: selectedRows, submitAllLabel: submitAllLabel, submitSelectedLabel: submitSelectedLabel, mapperConfig: mapperConfig, tableClassName: tableClassName }))));
|
|
53
|
+
};
|
|
54
|
+
exports.AiModalTable = AiModalTable;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../../src/ai-table/__tests__/index.test.tsx"],"names":[],"mappings":""}
|