Skip to content

Commit 1c6bd75

Browse files
dsanzchestofwonders
authored andcommitted
LPD-24670 Avoid mutating item by hoisting setItemComponentPropsTransformer to the parent component. This assumes it makes no sense to manage <ClayList.Item> props directly
1 parent 0ed79ca commit 1c6bd75

File tree

2 files changed

+23
-13
lines changed
  • modules/apps/frontend-data-set
    • frontend-data-set-admin-web/src/main/resources/META-INF/resources/item/selector
    • frontend-data-set-web/src/main/resources/META-INF/resources/views/list

2 files changed

+23
-13
lines changed

modules/apps/frontend-data-set/frontend-data-set-admin-web/src/main/resources/META-INF/resources/item/selector/FDSAdminItemSelector.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,15 @@ const views = [
3535
!item.dataSetToDataSetListSections.length
3636
) {
3737

38-
// we need to avoid item mutation
38+
return {
39+
...props, // we need to avoid item mutation
40+
item: {
41+
...item,
42+
symbol: 'warning',
43+
tooltip: 'perico'
44+
}
45+
}
3946

40-
item.symbol = 'warning';
4147
}
4248

4349
return props;

modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/views/list/List.tsx

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,6 @@ const ListItem = forwardRef<HTMLLIElement, any>(
7878
selectionType,
7979
} = useContext(FrontendDataSetContext);
8080

81-
const [viewsContext] = useContext(ViewsContext);
82-
83-
const activeView: IView = viewsContext.activeView;
84-
8581
const {description, image, sticker, symbol, title, titleRenderer} =
8682
schema;
8783

@@ -103,7 +99,6 @@ const ListItem = forwardRef<HTMLLIElement, any>(
10399
return (
104100
<ClayList.Item
105101
{...props}
106-
{...(activeView.setItemComponentProps?.({item, props}) ?? {})}
107102
ref={ref}
108103
>
109104
{!selectable ? (
@@ -212,14 +207,23 @@ const ListItemOptionalDropTarget = ({
212207
}) => {
213208
const {className, dropRef} = useFDSDrop({item});
214209

210+
const [viewsContext] = useContext(ViewsContext);
211+
212+
const activeView: IView = viewsContext.activeView;
213+
214+
const props = {
215+
className,
216+
item,
217+
items,
218+
onItemSelectionChange,
219+
ref:dropRef,
220+
schema,
221+
};
222+
215223
return (
216224
<ListItem
217-
className={className}
218-
item={item}
219-
items={items}
220-
onItemSelectionChange={onItemSelectionChange}
221-
ref={dropRef}
222-
schema={schema}
225+
{...props}
226+
{...(activeView.setItemComponentProps?.({item, props}) ?? {})}
223227
/>
224228
);
225229
};

0 commit comments

Comments
 (0)