Skip to content

Commit bbe7b18

Browse files
committed
refactor: move autoselect config to selection tab
1 parent 6ec7ce4 commit bbe7b18

File tree

3 files changed

+19
-19
lines changed

3 files changed

+19
-19
lines changed

packages/pluggableWidgets/datagrid-web/src/Datagrid.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616
<caption>Refresh time (in seconds)</caption>
1717
<description />
1818
</property>
19-
<property key="autoSelect" type="boolean" defaultValue="false">
20-
<caption>Auto select first row</caption>
21-
<description>Automatically select the first row</description>
22-
</property>
2319
</propertyGroup>
2420
<propertyGroup caption="Columns">
2521
<property key="columns" type="object" isList="true">
@@ -226,6 +222,10 @@
226222
<enumerationValue key="rowClick">Row click</enumerationValue>
227223
</enumerationValues>
228224
</property>
225+
<property key="autoSelect" type="boolean" defaultValue="false">
226+
<caption>Auto select first row</caption>
227+
<description>Automatically select the first row</description>
228+
</property>
229229
<property key="itemSelectionMode" type="enumeration" defaultValue="clear">
230230
<caption>Toggle on click</caption>
231231
<description>Defines item selection behavior.</description>

packages/pluggableWidgets/datagrid-web/typings/DatagridProps.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ export interface DatagridContainerProps {
100100
tabIndex?: number;
101101
datasource: ListValue;
102102
refreshInterval: number;
103-
autoSelect: boolean;
104103
columns: ColumnsType[];
105104
columnsFilterable: boolean;
106105
onClickTrigger: OnClickTriggerEnum;
@@ -109,6 +108,7 @@ export interface DatagridContainerProps {
109108
filtersPlaceholder?: ReactNode;
110109
itemSelection?: SelectionSingleValue | SelectionMultiValue;
111110
itemSelectionMethod: ItemSelectionMethodEnum;
111+
autoSelect: boolean;
112112
itemSelectionMode: ItemSelectionModeEnum;
113113
showSelectAllToggle: boolean;
114114
enableSelectAll: boolean;
@@ -160,7 +160,6 @@ export interface DatagridPreviewProps {
160160
translate: (text: string) => string;
161161
datasource: {} | { caption: string } | { type: string } | null;
162162
refreshInterval: number | null;
163-
autoSelect: boolean;
164163
columns: ColumnsPreviewType[];
165164
columnsFilterable: boolean;
166165
onClickTrigger: OnClickTriggerEnum;
@@ -169,6 +168,7 @@ export interface DatagridPreviewProps {
169168
filtersPlaceholder: { widgetCount: number; renderer: ComponentType<{ children: ReactNode; caption?: string }> };
170169
itemSelection: "None" | "Single" | "Multi";
171170
itemSelectionMethod: ItemSelectionMethodEnum;
171+
autoSelect: boolean;
172172
itemSelectionMode: ItemSelectionModeEnum;
173173
showSelectAllToggle: boolean;
174174
enableSelectAll: boolean;

packages/shared/widget-plugin-grid/src/selection/createSelectionHelper.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,21 +59,21 @@ export function createSelectionHelper(
5959
add(cleanup);
6060
}
6161
if (helper.type === "Single" && config.autoSelect) {
62-
const dispose = autorun(() => {
63-
const { datasource, selection } = gate.props;
64-
const firstItem = datasource.items?.[0];
62+
const dispose = autorun(
63+
() => {
64+
const { datasource } = gate.props;
65+
const firstItem = datasource.items?.[0];
6566

66-
if (datasource.status === "available") {
67-
if (firstItem && !selection?.selection) {
68-
setTimeout(() => {
69-
if (!gate.props.selection?.selection) {
70-
(gate.props.selection as SelectionSingleValue)?.setSelection(firstItem);
71-
}
72-
}, 0);
67+
if (!firstItem) return;
68+
69+
if (helper.isSelected(firstItem)) {
70+
dispose();
71+
} else {
72+
helper.reduceTo(firstItem);
7373
}
74-
dispose();
75-
}
76-
});
74+
},
75+
{ delay: 100 }
76+
);
7777
add(dispose);
7878
}
7979
return disposeAll;

0 commit comments

Comments
 (0)