import { mount, configure } from "enzyme";
import * as Adapter from "enzyme-adapter-react-16";
import ColumnSelector, { ColumnSelectorProps, ColumnSelectorTrigger } from "./column-selector";
-import { DataColumn } from "../data-table/data-column";
import { ListItem, Checkbox } from "@material-ui/core";
+import { DataColumns } from "../data-table/data-table";
configure({ adapter: new Adapter() });
describe("<ColumnSelector />", () => {
it("shows only configurable columns", () => {
- const columns: Array<DataColumn<void>> = [
+ const columns: DataColumns<void> = [
{
name: "Column 1",
render: () => <span />,
});
it("renders checked checkboxes next to selected columns", () => {
- const columns: Array<DataColumn<void>> = [
+ const columns: DataColumns<void> = [
{
name: "Column 1",
render: () => <span />,
});
it("calls onColumnToggle with clicked column", () => {
- const columns: Array<DataColumn<void>> = [
+ const columns: DataColumns<void> = [
{
name: "Column 1",
render: () => <span />,
import { DataColumn, isColumnConfigurable } from '../data-table/data-column';
import Popover from "../popover/popover";
import { IconButtonProps } from '@material-ui/core/IconButton';
+import { DataColumns } from '../data-table/data-table';
export interface ColumnSelectorProps {
- columns: Array<DataColumn<any>>;
+ columns: DataColumns<any>;
onColumnToggle: (column: DataColumn<any>) => void;
}
import MoreVertIcon from "@material-ui/icons/MoreVert";
import ContextMenu, { ContextMenuActionGroup, ContextMenuAction } from "../../components/context-menu/context-menu";
import ColumnSelector from "../../components/column-selector/column-selector";
-import DataTable from "../../components/data-table/data-table";
+import DataTable, { DataColumns } from "../../components/data-table/data-table";
import { mockAnchorFromMouseEvent } from "../../components/popover/helpers";
-import { DataColumn, toggleSortDirection } from "../../components/data-table/data-column";
+import { DataColumn } from "../../components/data-table/data-column";
import { DataTableFilterItem } from '../../components/data-table-filters/data-table-filters';
import SearchInput from '../search-input/search-input';
interface DataExplorerProps<T> {
items: T[];
- columns: Array<DataColumn<T>>;
+ columns: DataColumns<T>;
contextActions: ContextMenuActionGroup[];
searchValue: string;
rowsPerPage: number;
import { mount, configure } from "enzyme";
import { TableHead, TableCell, Typography, TableBody, Button, TableSortLabel } from "@material-ui/core";
import * as Adapter from "enzyme-adapter-react-16";
-import DataTable from "./data-table";
-import { DataColumn } from "./data-column";
+import DataTable, { DataColumns } from "./data-table";
import DataTableFilters from "../data-table-filters/data-table-filters";
configure({ adapter: new Adapter() });
describe("<DataTable />", () => {
it("shows only selected columns", () => {
- const columns: Array<DataColumn<string>> = [
+ const columns: DataColumns<string> = [
{
name: "Column 1",
render: () => <span />,
});
it("renders column name", () => {
- const columns: Array<DataColumn<string>> = [
+ const columns: DataColumns<string> = [
{
name: "Column 1",
render: () => <span />,
});
it("uses renderHeader instead of name prop", () => {
- const columns: Array<DataColumn<string>> = [
+ const columns: DataColumns<string> = [
{
name: "Column 1",
renderHeader: () => <span>Column Header</span>,
});
it("passes column key prop to corresponding cells", () => {
- const columns: Array<DataColumn<string>> = [
+ const columns: DataColumns<string> = [
{
name: "Column 1",
key: "column-1-key",
});
it("shows information that items array is empty", () => {
- const columns: Array<DataColumn<string>> = [
+ const columns: DataColumns<string> = [
{
name: "Column 1",
render: () => <span />,
});
it("renders items", () => {
- const columns: Array<DataColumn<string>> = [
+ const columns: DataColumns<string> = [
{
name: "Column 1",
render: (item) => <Typography>{item}</Typography>,
});
it("passes sorting props to <TableSortLabel />", () => {
- const columns: Array<DataColumn<string>> = [{
+ const columns: DataColumns<string> = [{
name: "Column 1",
sortDirection: "asc",
selected: true,
});
it("passes filter props to <DataTableFilter />", () => {
- const columns: Array<DataColumn<string>> = [{
+ const columns: DataColumns<string> = [{
name: "Column 1",
sortDirection: "asc",
selected: true,
import { default as unionize, ofType, UnionOf } from "unionize";
import { SortDirection, DataColumn } from "../../components/data-table/data-column";
import { DataTableFilterItem } from "../../components/data-table-filters/data-table-filters";
+import { DataColumns } from "../../components/data-table/data-table";
type WithId<T> = T & { id: string };
const actions = unionize({
- SET_COLUMNS: ofType<WithId<{ columns: Array<DataColumn<any>> }>>(),
+ SET_COLUMNS: ofType<WithId<{ columns: DataColumns<any> }>>(),
SET_FILTERS: ofType<WithId<{columnName: string, filters: DataTableFilterItem[]}>>(),
SET_ITEMS: ofType<WithId<{items: any[]}>>(),
SET_PAGE: ofType<WithId<{page: number}>>(),
import dataExplorerReducer, { initialDataExplorer } from "./data-explorer-reducer";
import actions from "./data-explorer-action";
-import { DataColumn } from "../../components/data-table/data-column";
import { DataTableFilterItem } from "../../components/data-table-filters/data-table-filters";
+import { DataColumns } from "../../components/data-table/data-table";
describe('data-explorer-reducer', () => {
it('should set columns', () => {
- const columns: Array<DataColumn<any>> = [{
+ const columns: DataColumns<any> = [{
name: "Column 1",
render: jest.fn(),
selected: true
});
it('should toggle sorting', () => {
- const columns: Array<DataColumn<any>> = [{
+ const columns: DataColumns<any> = [{
name: "Column 1",
render: jest.fn(),
selected: true,
});
it('should set filters', () => {
- const columns: Array<DataColumn<any>> = [{
+ const columns: DataColumns<any> = [{
name: "Column 1",
render: jest.fn(),
selected: true,
import { DataColumn, toggleSortDirection, resetSortDirection } from "../../components/data-table/data-column";
import actions, { DataExplorerAction } from "./data-explorer-action";
import { DataTableFilterItem } from "../../components/data-table-filters/data-table-filters";
+import { DataColumns } from "../../components/data-table/data-table";
interface DataExplorer {
- columns: Array<DataColumn<any>>;
+ columns: DataColumns<any>;
items: any[];
page: number;
rowsPerPage: number;
const update = (state: DataExplorerState, id: string, updateFn: (dataExplorer: DataExplorer) => DataExplorer) =>
({ ...state, [id]: updateFn(getDataExplorer(state, id)) });
-const setColumns = (columns: Array<DataColumn<any>>) =>
+const setColumns = (columns: DataColumns<any>) =>
(dataExplorer: DataExplorer) =>
({ ...dataExplorer, columns });
import { Grid, Typography } from '@material-ui/core';
import { formatDate, formatFileSize } from '../../common/formatters';
import DataExplorer from '../data-explorer/data-explorer';
-import { DataColumn, toggleSortDirection, resetSortDirection } from '../../components/data-table/data-column';
+import { DataColumn } from '../../components/data-table/data-column';
import { DataTableFilterItem } from '../../components/data-table-filters/data-table-filters';
import { ContextMenuAction } from '../../components/context-menu/context-menu';
import { DispatchProp, connect } from 'react-redux';
import actions from "../../store/data-explorer/data-explorer-action";
+import { DataColumns } from '../../components/data-table/data-table';
export const PROJECT_EXPLORER_ID = "projectExplorer";
class ProjectExplorer extends React.Component<DispatchProp> {
{item.status || "-"}
</Typography>;
-const columns: Array<DataColumn<ProjectExplorerItem>> = [{
+const columns: DataColumns<ProjectExplorerItem> = [{
name: "Name",
selected: true,
sortDirection: "asc",