Skip to content

Commit fc9ea79

Browse files
committed
wip: replace lodash with dot-prop
1 parent 9b99e45 commit fc9ea79

29 files changed

Lines changed: 50 additions & 90 deletions

File tree

packages/app-headless-cms-common/src/Fields/FieldElement.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from "react";
2-
import get from "lodash/get.js";
32
import { makeDecoratable } from "@webiny/app-admin";
43
import { i18n } from "@webiny/app/i18n/index.js";
54
import Label from "./Label.js";
@@ -36,7 +35,7 @@ const RenderField = (props: RenderFieldProps) => {
3635
return <>{field.renderer({ field, getBind, Label, contentModel })}</>;
3736
}
3837

39-
const fieldRendererName = get(field, "renderer.name");
38+
const fieldRendererName = field.renderer.name;
4039
if (!fieldRendererName) {
4140
return t`Cannot render "{fieldName}" field - field renderer not defined.`({
4241
fieldName: <strong>{field.fieldId}</strong>

packages/app-headless-cms/src/admin/components/ContentEntryForm/Header/RevisionSelector/RevisionSelector.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from "react";
2-
import get from "lodash/get.js";
32
import { useRoute, useRouter } from "@webiny/app-admin";
43
import { Button, DropdownMenu, Text } from "@webiny/admin-ui";
54
import { ReactComponent as DownButton } from "@webiny/icons/keyboard_arrow_down.svg";
@@ -29,8 +28,8 @@ export const RevisionSelector = () => {
2928
const { entry, revisions, loading } = useContentEntry();
3029

3130
const currentRevision = {
32-
version: get(entry, "meta.version", 1) as number,
33-
status: get(entry, "meta.status", "draft") as CmsContentEntryRevision["meta"]["status"]
31+
version: entry?.meta?.version || 1,
32+
status: entry?.meta?.status || "draft"
3433
};
3534

3635
const allRevisions = revisions.length ? revisions : defaultRevisions;

packages/app-headless-cms/src/admin/components/ContentEntryForm/ParentValue.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { createContext, useCallback, useContext, useEffect, useRef } from "react";
2-
import get from "lodash/get.js";
2+
import { immutableGet } from "@webiny/app/utils";
33
import type { CmsModelField } from "@webiny/app-headless-cms-common/types/index.js";
44
import { useModelField } from "~/admin/components/ModelFieldProvider/index.js";
55
import type { FormAPI } from "@webiny/form";
@@ -66,7 +66,7 @@ export const ParentFieldProvider = ({ path, value, children }: ParentFieldProvid
6666
return;
6767
}
6868

69-
formRef.current.setValue(fieldPath, cb(get(formRef.current.data, fieldPath)));
69+
formRef.current.setValue(fieldPath, cb(immutableGet(formRef.current.data, fieldPath)));
7070
}, []);
7171

7272
const context: ParentField | undefined = field

packages/app-headless-cms/src/admin/components/ContentModelEditor/ContentModelEditorProvider.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { useCallback, useEffect, useMemo, useReducer } from "react";
2-
import get from "lodash/get.js";
32
import pick from "lodash/pick.js";
43
import type { ApolloClient } from "apollo-client";
54
import { useSnackbar, useRouter } from "@webiny/app-admin";
@@ -217,7 +216,7 @@ export const ContentModelEditorProvider = ({
217216
}
218217
});
219218

220-
const { data, error } = get(response, "data.getContentModel");
219+
const { data, error } = response.data.getContentModel;
221220
if (error) {
222221
throw new Error(error.message);
223222
}

packages/app-headless-cms/src/admin/components/FieldEditor/EditFieldDialog/functions/getValue.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import get from "lodash/get.js";
1+
import { immutableGet } from "@webiny/app/utils";
22
import type { BindComponentRenderProp } from "@webiny/form";
33

44
interface Params {
@@ -12,7 +12,7 @@ export const getValue = (params: Params): string[] | undefined => {
1212
const value = bind.value || [];
1313

1414
if (index >= 0) {
15-
return get(value, `${index}.${name}`);
15+
return immutableGet(value, `${index}.${name}`);
1616
}
1717

1818
return value;

packages/app-headless-cms/src/admin/components/FieldEditor/FieldEditor.tsx

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { Fragment } from "react";
2-
import get from "lodash/get.js";
32
import { i18n } from "@webiny/app/i18n/index.js";
43
import { ReactComponent as DragIcon } from "@webiny/icons/drag_indicator.svg";
54
import { Center, Horizontal, Vertical } from "../DropZone/index.js";
@@ -267,10 +266,8 @@ const Editor = () => {
267266
item.type
268267
) &&
269268
(row.length < 4 ||
270-
get(
271-
item,
272-
"pos.row"
273-
) === index)
269+
item.pos?.row ===
270+
index)
274271
)
275272
)}
276273
/>
@@ -300,10 +297,9 @@ const Editor = () => {
300297
item.type
301298
) &&
302299
(row.length < 4 ||
303-
get(
304-
item,
305-
"pos.row"
306-
) === index)
300+
item.pos
301+
?.row ===
302+
index)
307303
);
308304
})
309305
)}

packages/app-headless-cms/src/admin/menus/ContentGroupsMenuItems.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from "react";
2-
import get from "lodash/get.js";
32
import type { ListMenuCmsGroupsQueryResponse } from "~/admin/viewsGraphql.js";
43
import { LIST_MENU_CONTENT_GROUPS_MODELS } from "~/admin/viewsGraphql.js";
54
import useQuery from "~/admin/hooks/useQuery.js";
@@ -10,7 +9,7 @@ import { GroupContentModels } from "./GroupContentModels.js";
109

1110
export const ContentGroupsMenuItems = () => {
1211
const response = useQuery<ListMenuCmsGroupsQueryResponse>(LIST_MENU_CONTENT_GROUPS_MODELS);
13-
const groups: CmsGroup[] = get(response, "data.listContentModelGroups.data") || [];
12+
const groups = response.data?.listContentModelGroups?.data || [];
1413

1514
if (!groups || groups.length === 0) {
1615
return null;

packages/app-headless-cms/src/admin/plugins/editor/defaultBar/CreateContentButton.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from "react";
2-
import get from "lodash/get.js";
32
import { useRouter } from "@webiny/app-admin";
43
import { i18n } from "@webiny/app/i18n/index.js";
54
import { ReactComponent as ListViewIcon } from "@webiny/icons/list.svg";
@@ -24,7 +23,7 @@ const CreateContentButton = () => {
2423
modelId: data.modelId
2524
}
2625
});
27-
const fields = get(getQuery, "getContentModel.data.fields", []);
26+
const fields = getQuery?.getContentModel?.data?.fields ?? [];
2827
const disableViewContent = fields.length === 0;
2928
const message = disableViewContent
3029
? "To view the entries, you first need to add a field and save the form"

packages/app-headless-cms/src/admin/plugins/fieldRenderers/boolean/booleanSwitch.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from "react";
2-
import get from "lodash/get.js";
32
import type { CmsModelFieldRendererPlugin } from "~/types.js";
43
import { i18n } from "@webiny/app/i18n/index.js";
54
import { Switch } from "@webiny/admin-ui";
@@ -15,9 +14,15 @@ const plugin: CmsModelFieldRendererPlugin = {
1514
name: t`Boolean Input`,
1615
description: t`Renders a simple switch button.`,
1716
canUse({ field }) {
18-
return (
19-
field.type === "boolean" && !field.list && !get(field, "predefinedValues.enabled")
20-
);
17+
if (field.type !== "boolean") {
18+
return false;
19+
} else if (!field.list) {
20+
return false;
21+
}
22+
if (field.predefinedValues?.enabled) {
23+
return false;
24+
}
25+
return true;
2126
},
2227
render({ getBind }) {
2328
const { field } = useModelField();

packages/app-headless-cms/src/admin/plugins/fieldRenderers/checkboxes.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from "react";
2-
import get from "lodash/get.js";
32
import type { CmsModelField, CmsModelFieldRendererPlugin } from "~/types.js";
43
import { i18n } from "@webiny/app/i18n/index.js";
54
import { CheckboxGroup } from "@webiny/admin-ui";
@@ -19,7 +18,7 @@ const plugin: CmsModelFieldRendererPlugin = {
1918
name: t`Checkboxes`,
2019
description: t`Renders checkboxes, allowing selection of multiple values.`,
2120
canUse({ field }) {
22-
return !!field.list && !!get(field, "predefinedValues.enabled");
21+
return !!field.list && !!field.predefinedValues?.enabled;
2322
},
2423
render({ getBind }) {
2524
const { field } = useModelField();

0 commit comments

Comments
 (0)