@raystack/apsara 0.12.0 → 0.13.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/index.cjs +190 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +4 -0
- package/dist/index.js +190 -37
- package/dist/index.js.map +1 -1
- package/dist/table/DataTableFilterChips.d.ts.map +1 -1
- package/dist/table/FilteredChip.d.ts +3 -1
- package/dist/table/FilteredChip.d.ts.map +1 -1
- package/dist/table/TableContext.d.ts +3 -0
- package/dist/table/TableContext.d.ts.map +1 -1
- package/dist/table/datatable.d.ts.map +1 -1
- package/dist/table/datatables.types.d.ts +18 -1
- package/dist/table/datatables.types.d.ts.map +1 -1
- package/dist/table/filterFns.d.ts +10 -0
- package/dist/table/filterFns.d.ts.map +1 -0
- package/dist/table/hooks/useTable.d.ts +2 -0
- package/dist/table/hooks/useTable.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -31652,49 +31652,188 @@ const TextField = React.forwardRef(({ leading, className, src, size, state, styl
|
|
|
31652
31652
|
});
|
|
31653
31653
|
TextField.displayName = "TextField";
|
|
31654
31654
|
|
|
31655
|
-
var styles$4 = {"wrapper":"datatable-module_wrapper__Sxg2d","datatable":"datatable-module_datatable__z-Th2","table":"datatable-module_table__x2IkY","head":"datatable-module_head__zCfCW","toolbar":"datatable-module_toolbar__lO-aI","chip":"datatable-module_chip__IiwTD","chipWrapper":"datatable-module_chipWrapper__iz69x"};
|
|
31655
|
+
var styles$4 = {"wrapper":"datatable-module_wrapper__Sxg2d","datatable":"datatable-module_datatable__z-Th2","table":"datatable-module_table__x2IkY","head":"datatable-module_head__zCfCW","toolbar":"datatable-module_toolbar__lO-aI","chip":"datatable-module_chip__IiwTD","chipWrapper":"datatable-module_chipWrapper__iz69x","filterOperator":"datatable-module_filterOperator__qtDsH"};
|
|
31656
31656
|
|
|
31657
|
-
const
|
|
31657
|
+
const columnTypesMap = {
|
|
31658
|
+
select: "select",
|
|
31659
|
+
number: "number",
|
|
31660
|
+
text: "text",
|
|
31661
|
+
};
|
|
31662
|
+
const filterValueTypeMap = {
|
|
31663
|
+
select: "select",
|
|
31664
|
+
text: "text",
|
|
31665
|
+
};
|
|
31666
|
+
|
|
31667
|
+
const operationsOptions = {
|
|
31668
|
+
[columnTypesMap.select]: [
|
|
31669
|
+
{
|
|
31670
|
+
label: "is",
|
|
31671
|
+
value: "is",
|
|
31672
|
+
fn: (row, columnId, filterValue) => {
|
|
31673
|
+
return row.getValue(columnId) === filterValue.value;
|
|
31674
|
+
},
|
|
31675
|
+
},
|
|
31676
|
+
{
|
|
31677
|
+
label: "is not",
|
|
31678
|
+
value: "is not",
|
|
31679
|
+
fn: (row, columnId, filterValue) => {
|
|
31680
|
+
return row.getValue(columnId) !== filterValue.value;
|
|
31681
|
+
},
|
|
31682
|
+
},
|
|
31683
|
+
],
|
|
31684
|
+
[columnTypesMap.number]: [
|
|
31685
|
+
{
|
|
31686
|
+
label: "=",
|
|
31687
|
+
value: "=",
|
|
31688
|
+
fn: (row, columnId, filterValue) => {
|
|
31689
|
+
return Number(row.getValue(columnId)) === Number(filterValue.value);
|
|
31690
|
+
},
|
|
31691
|
+
},
|
|
31692
|
+
{
|
|
31693
|
+
label: "!=",
|
|
31694
|
+
value: "!=",
|
|
31695
|
+
fn: (row, columnId, filterValue) => {
|
|
31696
|
+
return Number(row.getValue(columnId)) !== Number(filterValue.value);
|
|
31697
|
+
},
|
|
31698
|
+
},
|
|
31699
|
+
{
|
|
31700
|
+
label: ">",
|
|
31701
|
+
value: ">",
|
|
31702
|
+
fn: (row, columnId, filterValue) => {
|
|
31703
|
+
return Number(row.getValue(columnId)) > Number(filterValue.value);
|
|
31704
|
+
},
|
|
31705
|
+
},
|
|
31706
|
+
{
|
|
31707
|
+
label: ">=",
|
|
31708
|
+
value: ">=",
|
|
31709
|
+
fn: (row, columnId, filterValue) => {
|
|
31710
|
+
return Number(row.getValue(columnId)) >= Number(filterValue.value);
|
|
31711
|
+
},
|
|
31712
|
+
},
|
|
31713
|
+
{
|
|
31714
|
+
label: "<",
|
|
31715
|
+
value: "<",
|
|
31716
|
+
fn: (row, columnId, filterValue) => {
|
|
31717
|
+
return Number(row.getValue(columnId)) < Number(filterValue.value);
|
|
31718
|
+
},
|
|
31719
|
+
},
|
|
31720
|
+
{
|
|
31721
|
+
label: "<=",
|
|
31722
|
+
value: "<=",
|
|
31723
|
+
fn: (row, columnId, filterValue) => {
|
|
31724
|
+
return Number(row.getValue(columnId)) <= Number(filterValue.value);
|
|
31725
|
+
},
|
|
31726
|
+
},
|
|
31727
|
+
],
|
|
31728
|
+
[columnTypesMap.text]: [
|
|
31729
|
+
{
|
|
31730
|
+
label: "contains",
|
|
31731
|
+
value: "contains",
|
|
31732
|
+
fn: (row, columnId, filterValue) => {
|
|
31733
|
+
const columnValue = row.getValue(columnId).toLowerCase();
|
|
31734
|
+
const filterStr = filterValue.value.toLowerCase();
|
|
31735
|
+
return columnValue.includes(filterStr);
|
|
31736
|
+
},
|
|
31737
|
+
},
|
|
31738
|
+
{
|
|
31739
|
+
label: "does not contains",
|
|
31740
|
+
value: "does not contains",
|
|
31741
|
+
fn: (row, columnId, filterValue) => {
|
|
31742
|
+
const columnValue = row.getValue(columnId).toLowerCase();
|
|
31743
|
+
const filterStr = filterValue.value.toLowerCase();
|
|
31744
|
+
return !columnValue.includes(filterStr);
|
|
31745
|
+
},
|
|
31746
|
+
},
|
|
31747
|
+
{
|
|
31748
|
+
label: "starts with",
|
|
31749
|
+
value: "starts with",
|
|
31750
|
+
fn: (row, columnId, filterValue) => {
|
|
31751
|
+
const columnValue = row.getValue(columnId).toLowerCase();
|
|
31752
|
+
const filterStr = filterValue.value.toLowerCase();
|
|
31753
|
+
return columnValue.startsWith(filterStr);
|
|
31754
|
+
},
|
|
31755
|
+
},
|
|
31756
|
+
{
|
|
31757
|
+
label: "ends with",
|
|
31758
|
+
value: "ends with",
|
|
31759
|
+
fn: (row, columnId, filterValue) => {
|
|
31760
|
+
const columnValue = row.getValue(columnId).toLowerCase();
|
|
31761
|
+
const filterStr = filterValue.value.toLowerCase();
|
|
31762
|
+
return columnValue.endsWith(filterStr);
|
|
31763
|
+
},
|
|
31764
|
+
},
|
|
31765
|
+
{
|
|
31766
|
+
label: "is empty",
|
|
31767
|
+
value: "is empty",
|
|
31768
|
+
fn: (row, columnId, filterValue) => {
|
|
31769
|
+
return row.getValue(columnId).length === 0;
|
|
31770
|
+
},
|
|
31771
|
+
hideValueField: true,
|
|
31772
|
+
},
|
|
31773
|
+
{
|
|
31774
|
+
label: "is not empty",
|
|
31775
|
+
value: "is not empty",
|
|
31776
|
+
fn: (row, columnId, filterValue) => {
|
|
31777
|
+
return row.getValue(columnId).length > 0;
|
|
31778
|
+
},
|
|
31779
|
+
hideValueField: true,
|
|
31780
|
+
},
|
|
31781
|
+
],
|
|
31782
|
+
};
|
|
31783
|
+
|
|
31784
|
+
const FilterValues = ({ columnType = filterValueTypeMap.text, options = [], onValueChange, }) => {
|
|
31785
|
+
const [value, setValue] = React.useState("");
|
|
31786
|
+
const valueType = columnType === columnTypesMap.select
|
|
31787
|
+
? filterValueTypeMap.select
|
|
31788
|
+
: filterValueTypeMap.text;
|
|
31789
|
+
React.useEffect(() => {
|
|
31790
|
+
if (value && onValueChange) {
|
|
31791
|
+
onValueChange({ value });
|
|
31792
|
+
}
|
|
31793
|
+
}, [value]);
|
|
31794
|
+
return valueType === filterValueTypeMap.select ? (jsxRuntimeExports$1.jsxs(Select, { value: value, onValueChange: setValue, children: [jsxRuntimeExports$1.jsx(Select.Trigger, { children: jsxRuntimeExports$1.jsx(Select.Value, { placeholder: "Select value" }) }), jsxRuntimeExports$1.jsx(Select.Content, { children: options.map((opt) => {
|
|
31795
|
+
return (jsxRuntimeExports$1.jsx(Select.Item, { value: opt.value, children: opt.label || opt.value }, opt.key));
|
|
31796
|
+
}) })] })) : (jsxRuntimeExports$1.jsx(TextField, { value: value, onChange: (e) => setValue(e.target.value) }));
|
|
31797
|
+
};
|
|
31798
|
+
const Operation = ({ columnType = columnTypesMap.text, onOperationSelect, }) => {
|
|
31799
|
+
const options = operationsOptions[columnType] || [];
|
|
31800
|
+
const [value, setValue] = React.useState(options?.[0].value);
|
|
31801
|
+
React.useEffect(() => {
|
|
31802
|
+
const selectedOption = options.find((o) => o.value === value);
|
|
31803
|
+
if (selectedOption) {
|
|
31804
|
+
onOperationSelect(selectedOption);
|
|
31805
|
+
}
|
|
31806
|
+
}, [value]);
|
|
31807
|
+
return (jsxRuntimeExports$1.jsxs(Select, { defaultValue: value, onValueChange: setValue, children: [jsxRuntimeExports$1.jsx(Select.Trigger, { className: styles$4.filterOperator, children: jsxRuntimeExports$1.jsx(Select.Value, { placeholder: "Select operation" }) }), jsxRuntimeExports$1.jsx(Select.Content, { children: options.map((opt) => {
|
|
31808
|
+
return (jsxRuntimeExports$1.jsx(Select.Item, { value: opt.label, children: opt.label }, opt.label));
|
|
31809
|
+
}) })] }));
|
|
31810
|
+
};
|
|
31811
|
+
const FilteredChip = ({ column, updateColumnCustomFilter, }) => {
|
|
31812
|
+
const [filterOperation, setFilterOperation] = React.useState();
|
|
31813
|
+
const [filterValue, setFilterValue] = React.useState();
|
|
31658
31814
|
const { table, removeFilterColumn } = useTable();
|
|
31659
31815
|
const { filterVariant } = column?.columnDef;
|
|
31660
31816
|
const options = column?.columnDef?.meta?.data || [];
|
|
31661
|
-
|
|
31662
|
-
const
|
|
31663
|
-
|
|
31664
|
-
|
|
31665
|
-
|
|
31666
|
-
|
|
31667
|
-
|
|
31668
|
-
new Set(column?.getFilterValue());
|
|
31669
|
-
return (jsxRuntimeExports$1.jsxs(Select, { children: [jsxRuntimeExports$1.jsx(Select.Trigger, { children: jsxRuntimeExports$1.jsx(Select.Value, { placeholder: "Select a value" }) }), jsxRuntimeExports$1.jsx(Select.Content, { children: jsxRuntimeExports$1.jsx(Select.Group, { children: options.map((option) => (jsxRuntimeExports$1.jsx(Select.Item, { value: option.value, children: option?.label || option?.value }, option.value))) }) })] }));
|
|
31670
|
-
}
|
|
31671
|
-
default: {
|
|
31672
|
-
const selectedValues = new Set(column?.getFilterValue());
|
|
31673
|
-
return (jsxRuntimeExports$1.jsxs(Popover, { children: [jsxRuntimeExports$1.jsx(Popover.Trigger, { asChild: true, children: jsxRuntimeExports$1.jsxs(Button$1, { children: [selectedValues.size, " selected"] }) }), jsxRuntimeExports$1.jsx(Popover.Content, { align: "start", style: { padding: 0 }, children: jsxRuntimeExports$1.jsxs(Command, { children: [jsxRuntimeExports$1.jsx(Command.Input, {}), jsxRuntimeExports$1.jsxs(Command.List, { children: [jsxRuntimeExports$1.jsx(Command.Empty, { children: "No results found." }), jsxRuntimeExports$1.jsx(Command.Group, { children: options.map((option) => {
|
|
31674
|
-
const isSelected = selectedValues.has(option.value);
|
|
31675
|
-
return (jsxRuntimeExports$1.jsx(Command.Item, { onSelect: () => {
|
|
31676
|
-
if (isSelected) {
|
|
31677
|
-
selectedValues.delete(option.value);
|
|
31678
|
-
}
|
|
31679
|
-
else {
|
|
31680
|
-
selectedValues.add(option.value);
|
|
31681
|
-
}
|
|
31682
|
-
const filterValues = Array.from(selectedValues);
|
|
31683
|
-
console.log(selectedValues, filterValues);
|
|
31684
|
-
column?.setFilterValue(filterValues.length ? filterValues : undefined);
|
|
31685
|
-
}, children: jsxRuntimeExports$1.jsxs(Flex, { justify: "between", gap: "small", children: [jsxRuntimeExports$1.jsxs(Flex, { align: "center", gap: "small", children: [jsxRuntimeExports$1.jsx(Checkbox, { checked: isSelected }), option.icon && (jsxRuntimeExports$1.jsx(option.icon, { className: "mr-2 h-4 w-4 text-muted-foreground" })), jsxRuntimeExports$1.jsx("span", { children: option.label })] }), facets?.get(option.value) && (jsxRuntimeExports$1.jsx("span", { children: facets.get(option.value) }))] }) }, option.value));
|
|
31686
|
-
}) }), selectedValues.size > 0 && (jsxRuntimeExports$1.jsxs(jsxRuntimeExports$1.Fragment, { children: [jsxRuntimeExports$1.jsx(Command.Separator, {}), jsxRuntimeExports$1.jsx(Command.Group, { children: jsxRuntimeExports$1.jsx(Command.Item, { onSelect: () => column?.setFilterValue(undefined), className: "justify-center text-center", children: "Clear filters" }) })] }))] })] }) })] }));
|
|
31687
|
-
}
|
|
31817
|
+
column?.getFacetedUniqueValues();
|
|
31818
|
+
const columnHeader = column?.columnDef?.header;
|
|
31819
|
+
const columnName = (typeof columnHeader === "string" && columnHeader) || column.id;
|
|
31820
|
+
React.useEffect(() => {
|
|
31821
|
+
if (filterOperation?.fn && filterValue) {
|
|
31822
|
+
updateColumnCustomFilter(column.id, filterOperation?.fn);
|
|
31823
|
+
column.setFilterValue(filterValue);
|
|
31688
31824
|
}
|
|
31689
|
-
};
|
|
31690
|
-
|
|
31691
|
-
|
|
31692
|
-
|
|
31693
|
-
|
|
31825
|
+
}, [filterOperation, filterValue]);
|
|
31826
|
+
function removeFilter() {
|
|
31827
|
+
column.setFilterValue(undefined);
|
|
31828
|
+
removeFilterColumn(column.id);
|
|
31829
|
+
setFilterOperation(undefined);
|
|
31830
|
+
setFilterValue({});
|
|
31831
|
+
}
|
|
31832
|
+
return (jsxRuntimeExports$1.jsxs(Box, { className: styles$4.chip, children: [jsxRuntimeExports$1.jsx(Text, { children: columnName }), jsxRuntimeExports$1.jsx(Operation, { columnType: filterVariant, onOperationSelect: setFilterOperation }), filterOperation?.hideValueField ? null : (jsxRuntimeExports$1.jsx(FilterValues, { columnType: filterVariant, options: options, onValueChange: setFilterValue })), jsxRuntimeExports$1.jsx(Flex, { children: jsxRuntimeExports$1.jsx(Cross1Icon, { height: "12", width: "12", onClick: removeFilter }) })] }));
|
|
31694
31833
|
};
|
|
31695
31834
|
|
|
31696
31835
|
function DataTableFilterChips(props) {
|
|
31697
|
-
const { filteredColumns, table } = useTable();
|
|
31836
|
+
const { filteredColumns, table, updateColumnCustomFilter } = useTable();
|
|
31698
31837
|
const tableColumns = table
|
|
31699
31838
|
.getAllColumns()
|
|
31700
31839
|
.filter((column) => typeof column.accessorFn !== "undefined" && column.getCanHide());
|
|
@@ -31702,7 +31841,7 @@ function DataTableFilterChips(props) {
|
|
|
31702
31841
|
return null;
|
|
31703
31842
|
return (jsxRuntimeExports$1.jsxs(Flex, { gap: "small", align: "center", className: styles$4.chipWrapper, ...props, children: [filteredColumns.map((filter, index) => {
|
|
31704
31843
|
const filteredColumn = table.getColumn(filter);
|
|
31705
|
-
return jsxRuntimeExports$1.jsx(FilteredChip, { column: filteredColumn }, index);
|
|
31844
|
+
return (jsxRuntimeExports$1.jsx(FilteredChip, { column: filteredColumn, updateColumnCustomFilter: updateColumnCustomFilter }, index));
|
|
31706
31845
|
}), filteredColumns.length < tableColumns.length && (jsxRuntimeExports$1.jsx(DataTableFilterOptions, { variant: "ghost", style: { border: "none", background: "none" }, children: jsxRuntimeExports$1.jsx(PlusIcon, { width: 16, height: 16 }) }))] }));
|
|
31707
31846
|
}
|
|
31708
31847
|
|
|
@@ -31797,6 +31936,7 @@ const Table = Object.assign(TableRoot, {
|
|
|
31797
31936
|
});
|
|
31798
31937
|
|
|
31799
31938
|
function DataTableRoot({ columns, data, emptyState, children, parentStyle, ShouldShowHeader = true, ...props }) {
|
|
31939
|
+
const [tableCustomFilter, setTableCustomFilter] = React.useState({});
|
|
31800
31940
|
const convertedChildren = React.Children.toArray(children);
|
|
31801
31941
|
const header = convertedChildren.find((child) => child.type === DataTableToolbar) || null;
|
|
31802
31942
|
const footer = convertedChildren.find((child) => child.type === DataTableFooter) || null;
|
|
@@ -31808,9 +31948,20 @@ function DataTableRoot({ columns, data, emptyState, children, parentStyle, Shoul
|
|
|
31808
31948
|
const [rowSelection, setRowSelection] = React.useState({});
|
|
31809
31949
|
const [globalFilter, setGlobalFilter] = React.useState("");
|
|
31810
31950
|
const { filteredColumns, addFilterColumn, removeFilterColumn, resetColumns } = useTableColumn();
|
|
31951
|
+
const columnWithCustomFilter = columns.map((col) => {
|
|
31952
|
+
// @ts-ignore;
|
|
31953
|
+
const colId = col.id || col?.accessorKey;
|
|
31954
|
+
if (colId && tableCustomFilter.hasOwnProperty(colId)) {
|
|
31955
|
+
col.filterFn = tableCustomFilter[colId];
|
|
31956
|
+
}
|
|
31957
|
+
return col;
|
|
31958
|
+
});
|
|
31959
|
+
const updateColumnCustomFilter = (id, filterFn) => {
|
|
31960
|
+
setTableCustomFilter((old) => ({ ...old, [id]: filterFn }));
|
|
31961
|
+
};
|
|
31811
31962
|
const table = useReactTable({
|
|
31812
31963
|
data,
|
|
31813
|
-
columns,
|
|
31964
|
+
columns: columnWithCustomFilter,
|
|
31814
31965
|
globalFilterFn: "auto",
|
|
31815
31966
|
enableRowSelection: true,
|
|
31816
31967
|
manualPagination: true,
|
|
@@ -31846,6 +31997,8 @@ function DataTableRoot({ columns, data, emptyState, children, parentStyle, Shoul
|
|
|
31846
31997
|
resetColumns,
|
|
31847
31998
|
onGlobalFilterChange: setGlobalFilter,
|
|
31848
31999
|
onChange: () => ({}),
|
|
32000
|
+
tableCustomFilter,
|
|
32001
|
+
updateColumnCustomFilter,
|
|
31849
32002
|
}, children: [jsxRuntimeExports$1.jsxs(Flex, { direction: "column", className: styles$4.datatable, children: [header, jsxRuntimeExports$1.jsxs(Flex, { className: styles$4.tableContainer, style: parentStyle, children: [jsxRuntimeExports$1.jsxs(Table, { ...props, style: tableStyle, children: [jsxRuntimeExports$1.jsx(Table.Header, { children: ShouldShowHeader
|
|
31850
32003
|
? table.getHeaderGroups().map((headerGroup) => (jsxRuntimeExports$1.jsx(Table.Row, { children: headerGroup.headers.map((header, index) => {
|
|
31851
32004
|
return (jsxRuntimeExports$1.jsx(Table.Head, { style: {
|