Skip to content

Commit 16db8bc

Browse files
committed
refactor: apply feedback
1 parent 11eef55 commit 16db8bc

File tree

8 files changed

+41
-38
lines changed

8 files changed

+41
-38
lines changed

packages/pluggableWidgets/datagrid-web/src/components/GridBody.tsx

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import { useInfiniteControl } from "@mendix/widget-plugin-grid/components/InfiniteBody";
21
import classNames from "classnames";
32
import { observer } from "mobx-react-lite";
4-
import { Fragment, PropsWithChildren, ReactElement, ReactNode, RefObject, UIEventHandler, useCallback } from "react";
3+
import { Fragment, PropsWithChildren, ReactElement, ReactNode } from "react";
54
import {
65
useDatagridConfig,
76
useItemCount,
87
useLoaderViewModel,
98
usePaginationService,
109
useVisibleColumnsCount
1110
} from "../model/hooks/injection-hooks";
11+
import { useBodyScroll } from "../model/hooks/useBodyScroll";
1212
import { RowSkeletonLoader } from "./loader/RowSkeletonLoader";
1313
import { SpinnerLoader } from "./loader/SpinnerLoader";
1414

@@ -76,30 +76,6 @@ const ContentGuard = observer(function ContentGuard(props: PropsWithChildren): R
7676
);
7777
});
7878

79-
function useBodyScroll(): {
80-
handleScroll: UIEventHandler<HTMLDivElement> | undefined;
81-
bodySize: number;
82-
containerRef: RefObject<HTMLDivElement | null>;
83-
isInfinite: boolean;
84-
} {
85-
const paging = usePaginationService();
86-
const setPage = useCallback((cb: (n: number) => number) => paging.setPage(cb), [paging]);
87-
88-
const isInfinite = paging.pagination === "virtualScrolling";
89-
const [trackScrolling, bodySize, containerRef] = useInfiniteControl({
90-
hasMoreItems: paging.hasMoreItems,
91-
isInfinite,
92-
setPage
93-
});
94-
95-
return {
96-
handleScroll: isInfinite ? trackScrolling : undefined,
97-
bodySize,
98-
containerRef,
99-
isInfinite
100-
};
101-
}
102-
10379
const Spinner = (): ReactNode => (
10480
<div className="widget-datagrid-loader-container">
10581
<SpinnerLoader withMargins size="large" />

packages/pluggableWidgets/datagrid-web/src/components/Widget.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ReactNode } from "react";
1+
import { ReactElement } from "react";
22
import { ExportProgressDialog } from "../features/data-export/ExportProgressDialog";
33
import { EmptyPlaceholder } from "../features/empty-message/EmptyPlaceholder";
44
import { SelectAllBar } from "../features/select-all/SelectAllBar";
@@ -14,7 +14,7 @@ import { WidgetHeader } from "./WidgetHeader";
1414
import { WidgetRoot } from "./WidgetRoot";
1515
import { WidgetTopBar } from "./WidgetTopBar";
1616

17-
export function Widget(props: { onExportCancel?: () => void }): ReactNode {
17+
export function Widget(props: { onExportCancel?: () => void }): ReactElement {
1818
return (
1919
<WidgetRoot>
2020
<WidgetTopBar />

packages/pluggableWidgets/datagrid-web/src/components/WidgetFooter.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { useSelectionCounterViewModel } from "../features/selection-counter/inje
66
import { useDatagridConfig, usePaginationService, useTexts } from "../model/hooks/injection-hooks";
77
import { Pagination } from "./Pagination";
88

9-
export const WidgetFooter = observer(function WidgetFooter(): ReactElement | null {
9+
export const WidgetFooter = observer(function WidgetFooter(): ReactElement {
1010
const config = useDatagridConfig();
1111
const paging = usePaginationService();
1212
const { loadMoreButtonCaption } = useTexts();

packages/pluggableWidgets/datagrid-web/src/components/WidgetHeader.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { getGlobalFilterContextObject } from "@mendix/widget-plugin-filtering/context";
22
import { getGlobalSelectionContext, useCreateSelectionContextValue } from "@mendix/widget-plugin-grid/selection";
3-
import { PropsWithChildren, ReactElement, ReactNode } from "react";
3+
import { PropsWithChildren, ReactElement } from "react";
44
import { useDatagridFilterAPI, useMainGate, useSelectionHelper, useTexts } from "../model/hooks/injection-hooks";
55

66
const Selection = getGlobalSelectionContext();
@@ -16,7 +16,7 @@ function HeaderContainer(props: PropsWithChildren): ReactElement {
1616
);
1717
}
1818

19-
export const WidgetHeader = function WidgetHeader(): ReactNode {
19+
export const WidgetHeader = function WidgetHeader(): ReactElement | null {
2020
const { headerAriaLabel } = useTexts();
2121
const { filtersPlaceholder } = useMainGate().props;
2222

packages/pluggableWidgets/datagrid-web/src/features/data-export/ExportProgressDialog.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
import { ReactNode } from "react";
1+
import { ReactElement } from "react";
22
import { ExportAlert } from "../../components/ExportAlert";
33
import { PseudoModal } from "../../components/PseudoModal";
44
import { useExportProgressService, useTexts } from "../../model/hooks/injection-hooks";
55

6-
export const ExportProgressDialog = function ExportProgressDialog(props: { onExportCancel?: () => void }): ReactNode {
6+
export const ExportProgressDialog = function ExportProgressDialog(props: {
7+
onExportCancel?: () => void;
8+
}): ReactElement | null {
79
const progressSrv = useExportProgressService();
810
const texts = useTexts();
911

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { useInfiniteControl } from "@mendix/widget-plugin-grid/components/InfiniteBody";
2+
import { RefObject, UIEventHandler, useCallback } from "react";
3+
import { usePaginationService } from "./injection-hooks";
4+
5+
export function useBodyScroll(): {
6+
handleScroll: UIEventHandler<HTMLDivElement> | undefined;
7+
bodySize: number;
8+
containerRef: RefObject<HTMLDivElement | null>;
9+
isInfinite: boolean;
10+
} {
11+
const paging = usePaginationService();
12+
const setPage = useCallback((cb: (n: number) => number) => paging.setPage(cb), [paging]);
13+
14+
const isInfinite = paging.pagination === "virtualScrolling";
15+
const [trackScrolling, bodySize, containerRef] = useInfiniteControl({
16+
hasMoreItems: paging.hasMoreItems,
17+
isInfinite,
18+
setPage
19+
});
20+
21+
return {
22+
handleScroll: isInfinite ? trackScrolling : undefined,
23+
bodySize,
24+
containerRef,
25+
isInfinite
26+
};
27+
}

packages/pluggableWidgets/datagrid-web/src/utils/test-utils.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
import { dynamic, list, listAttr, listExp } from "@mendix/widget-plugin-test-utils";
1+
import { dynamic, list, listAttribute, listExpression } from "@mendix/widget-plugin-test-utils";
22
import { ColumnsType, DatagridContainerProps } from "../../typings/DatagridProps";
33
import { ColumnStore } from "../helpers/state/column/ColumnStore";
44
import { IColumnParentStore } from "../helpers/state/ColumnGroupStore";
5-
// import { SelectActionHelper } from "../model/services/GridSelectActionsProvider.service";
65
import { ColumnId, GridColumn } from "../typings/GridColumn";
76

87
export const column = (header = "Test", patch?: (col: ColumnsType) => void): ColumnsType => {
98
const c: ColumnsType = {
109
alignment: "left" as const,
11-
attribute: listAttr(() => "Attr value"),
12-
dynamicText: listExp(() => "Dynamic text"),
10+
attribute: listAttribute(() => "Attr value"),
11+
dynamicText: listExpression(() => "Dynamic text"),
1312
draggable: false,
1413
header: dynamic(header),
1514
hidable: "no" as const,

packages/shared/widget-plugin-grid/src/interfaces/MultiSelectionService.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { MoveEvent1D, MoveEvent2D, MultiSelectionStatus, SelectionMode } from ".
44
export interface MultiSelectionService {
55
type: "Multi";
66
selectionStatus: MultiSelectionStatus;
7-
togglePageSelection(): void;
87
isSelected(item: ObjectItem): boolean;
98
add(item: ObjectItem): void;
109
remove(item: ObjectItem): void;

0 commit comments

Comments
 (0)