aio-table 14.0.1 → 14.1.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/index.css +2 -2
- package/index.d.ts +5 -2
- package/index.js +23 -27
- package/package.json +1 -1
package/index.css
CHANGED
package/index.d.ts
CHANGED
|
@@ -196,8 +196,11 @@ export type I_table_sort<T> = {
|
|
|
196
196
|
active?: boolean;
|
|
197
197
|
dir?: 'dec' | 'inc';
|
|
198
198
|
title?: ReactNode;
|
|
199
|
-
sortId
|
|
200
|
-
getValue?: (row: T) => any;
|
|
199
|
+
sortId?: string;
|
|
200
|
+
getValue?: (row: T, dir: 'inc' | 'dec') => any;
|
|
201
|
+
isDate?: boolean;
|
|
202
|
+
columnId?: string;
|
|
203
|
+
order?: number;
|
|
201
204
|
};
|
|
202
205
|
export declare const useSort: <T>(p: {
|
|
203
206
|
fa?: boolean;
|
package/index.js
CHANGED
|
@@ -58,7 +58,7 @@ const AIOTable = (props) => {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
const res = Object.assign(Object.assign({}, column), col);
|
|
61
|
-
if (
|
|
61
|
+
if (res.value === undefined) {
|
|
62
62
|
res.value = `row.${column.id}`;
|
|
63
63
|
}
|
|
64
64
|
return res;
|
|
@@ -95,25 +95,6 @@ const AIOTable = (props) => {
|
|
|
95
95
|
props.onChangeColumns(newColumns);
|
|
96
96
|
}
|
|
97
97
|
}, 'aio-table-title');
|
|
98
|
-
const getGetValue = (sort, column) => {
|
|
99
|
-
if (sort.getValue) {
|
|
100
|
-
return sort.getValue;
|
|
101
|
-
}
|
|
102
|
-
return (row) => {
|
|
103
|
-
const { type = 'text' } = column;
|
|
104
|
-
const cellValue = tableHook.getCellValue({ row, column, rowIndex: 0 });
|
|
105
|
-
if (type === 'date' || type === 'jalaliDate') {
|
|
106
|
-
const DATE = new AIODate();
|
|
107
|
-
try {
|
|
108
|
-
return DATE.getTime(cellValue);
|
|
109
|
-
}
|
|
110
|
-
catch (_a) {
|
|
111
|
-
return 0;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return cellValue;
|
|
115
|
-
};
|
|
116
|
-
};
|
|
117
98
|
const getSorts = (columns) => {
|
|
118
99
|
let sorts = [];
|
|
119
100
|
for (let i = 0; i < columns.length; i++) {
|
|
@@ -124,11 +105,26 @@ const AIOTable = (props) => {
|
|
|
124
105
|
if (!sort) {
|
|
125
106
|
continue;
|
|
126
107
|
}
|
|
127
|
-
|
|
128
|
-
let
|
|
108
|
+
const { type = 'text' } = column;
|
|
109
|
+
let { active = false, dir = 'dec', sortId, order = Infinity } = sort;
|
|
110
|
+
let sortItem = {
|
|
111
|
+
isDate: type === 'date' || type === 'jalaliDate',
|
|
112
|
+
sortId, active, dir, columnId,
|
|
113
|
+
title: sort.title || column.title, order,
|
|
114
|
+
getValue: (row, dir) => {
|
|
115
|
+
if (sort.getValue) {
|
|
116
|
+
return sort.getValue(row, dir);
|
|
117
|
+
}
|
|
118
|
+
const cellValue = tableHook.getCellValue({ row, column, rowIndex: 0 });
|
|
119
|
+
if (column.type === 'number' && typeof cellValue !== 'number') {
|
|
120
|
+
return dir === 'inc' ? Infinity : -Infinity;
|
|
121
|
+
}
|
|
122
|
+
return cellValue;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
129
125
|
sorts.push(sortItem);
|
|
130
126
|
}
|
|
131
|
-
return sorts;
|
|
127
|
+
return UT.SortArray(sorts, [{ getValue: (o) => o.order, dir: 'inc' }]);
|
|
132
128
|
};
|
|
133
129
|
const sortHook = useSort({
|
|
134
130
|
fa: props.fa,
|
|
@@ -348,7 +344,7 @@ const TableRow = (props) => {
|
|
|
348
344
|
const { rowDetail } = props;
|
|
349
345
|
const { row, rowIndex } = rowDetail;
|
|
350
346
|
const rowId = row._id;
|
|
351
|
-
let {
|
|
347
|
+
let { tableHook, columns } = useProvider();
|
|
352
348
|
function getCells() {
|
|
353
349
|
return columns.map((column) => {
|
|
354
350
|
const { show = true } = column;
|
|
@@ -598,7 +594,7 @@ export const useSort = (p) => {
|
|
|
598
594
|
};
|
|
599
595
|
const changeSorts = (sorts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
600
596
|
if (p.onChangeSort) {
|
|
601
|
-
let res = yield p.onChangeSort(sorts);
|
|
597
|
+
let res = yield p.onChangeSort(sorts.filter((o) => !!o.active));
|
|
602
598
|
if (res !== false) {
|
|
603
599
|
setSorts(sorts);
|
|
604
600
|
}
|
|
@@ -664,7 +660,7 @@ export const useSort = (p) => {
|
|
|
664
660
|
return (_jsx(AISelect, { caret: false, options: sorts, justify: true, option: {
|
|
665
661
|
text: (option) => option.title, checked: (option) => !!option.active, close: () => false, value: (option) => option.sortId,
|
|
666
662
|
after: (option) => renderSortArrow(option),
|
|
667
|
-
onClick: (option) => changeSort(option.sortId, { active: !option.active })
|
|
663
|
+
onClick: (option) => changeSort(option.sortId || '', { active: !option.active })
|
|
668
664
|
}, popover: {
|
|
669
665
|
header: { title: p.fa ? 'مرتب سازی' : 'Sort', onClose: false },
|
|
670
666
|
headerAttrs: { className: 'aio-sort-header' },
|
|
@@ -735,7 +731,7 @@ const usePaging = (p) => {
|
|
|
735
731
|
if (!sizes.length) {
|
|
736
732
|
return null;
|
|
737
733
|
}
|
|
738
|
-
return (_jsx(AISelect, { attrs: { className: 'aio-paging-button aio-paging-size' }, value: size, options: sizes, option: { text:
|
|
734
|
+
return (_jsx(AISelect, { attrs: { className: 'aio-paging-button aio-paging-size' }, value: size, options: sizes, option: { text: (o) => o, value: (o) => o }, justify: true, onChange: (value) => changePaging({ size: value }), popover: { fitHorizontal: true } }));
|
|
739
735
|
}
|
|
740
736
|
const render = () => {
|
|
741
737
|
const paging = getPaging(p.paging);
|