@uxf/cms 11.66.1 → 11.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
+ import { FieldProps } from "@uxf/form/form-renderer";
1
2
  import React from "react";
2
- import { ContentComponent } from "../../content-builder";
3
- import { FieldProps } from "../types";
3
+ import { ContentComponent } from "../../pages/content-builder";
4
4
  export interface Props extends FieldProps {
5
5
  contentComponents?: ContentComponent<any>[];
6
6
  }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const content_builder_1 = require("../../pages/content-builder");
8
+ const wysiwyg_1 = require("../../pages/content-builder/content/wysiwyg");
9
+ function Component(props) {
10
+ var _a, _b;
11
+ return (react_1.default.createElement("fieldset", null,
12
+ react_1.default.createElement("legend", null, props.fieldSchema.label),
13
+ react_1.default.createElement(content_builder_1.ContentField, { contentComponents: (_a = props.contentComponents) !== null && _a !== void 0 ? _a : [wysiwyg_1.Wysiwyg], control: props.control, name: `${(_b = props.prefix) !== null && _b !== void 0 ? _b : ""}${props.fieldSchema.name}` })));
14
+ }
15
+ exports.default = Component;
@@ -0,0 +1,5 @@
1
+ import { FieldProps } from "@uxf/form/form-renderer";
2
+ import React, { FunctionComponent } from "react";
3
+ import { ContentComponent } from "../../pages/content-builder";
4
+ export declare const Content: React.ComponentType<import("./content-dynamic").Props>;
5
+ export declare function createContentField(contentComponents: ContentComponent<any>[]): FunctionComponent<FieldProps>;
@@ -27,5 +27,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.Content = void 0;
30
+ exports.createContentField = createContentField;
30
31
  const dynamic_1 = __importDefault(require("next/dynamic"));
32
+ const react_1 = __importDefault(require("react"));
31
33
  exports.Content = (0, dynamic_1.default)(() => Promise.resolve().then(() => __importStar(require("./content-dynamic"))), { ssr: false });
34
+ function createContentField(contentComponents) {
35
+ return function ContentField(props) {
36
+ return react_1.default.createElement(exports.Content, { ...props, contentComponents: contentComponents });
37
+ };
38
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/cms",
3
- "version": "11.66.1",
3
+ "version": "11.67.0",
4
4
  "description": "UXF Cms",
5
5
  "author": "UXFans <dev@uxf.cz>",
6
6
  "homepage": "https://gitlab.com/uxf-npm/cms#readme",
@@ -30,13 +30,13 @@
30
30
  "@dnd-kit/utilities": "3.2.2",
31
31
  "@floating-ui/react": "0.26.28",
32
32
  "@redux-devtools/extension": "3.3.0",
33
- "@uxf/core": "11.60.1",
34
- "@uxf/core-react": "11.66.0",
35
- "@uxf/data-grid": "11.66.0",
36
- "@uxf/form": "11.66.1",
33
+ "@uxf/core": "11.67.0",
34
+ "@uxf/core-react": "11.67.0",
35
+ "@uxf/data-grid": "11.67.0",
36
+ "@uxf/form": "11.67.0",
37
37
  "@uxf/router": "11.49.1",
38
- "@uxf/ui": "11.66.0",
39
- "@uxf/wysiwyg": "11.66.0",
38
+ "@uxf/ui": "11.67.0",
39
+ "@uxf/wysiwyg": "11.67.0",
40
40
  "axios": "1.7.5",
41
41
  "axios-hooks": "5.0.2",
42
42
  "es6-error": "4.1.1",
@@ -42,7 +42,7 @@ function FormRootFields(props) {
42
42
  react_1.default.createElement(combobox_1.Combobox, { control: props.control, label: "Kategorie", loadOptions: (term) => (0, api_1.autocomplete)(null, { name: "content-category" }, { term }).then((r) => r.data), name: "category" })),
43
43
  react_1.default.createElement(multi_combobox_1.MultiCombobox, { control: props.control, label: "Tagy", loadOptions: (term) => (0, api_1.autocomplete)(null, { name: "content-tag" }, { term }).then((r) => r.data), name: "tags" }),
44
44
  react_1.default.createElement(hide_1.Hide, { when: Boolean((_e = props.config.hide) === null || _e === void 0 ? void 0 : _e.image) },
45
- react_1.default.createElement(file_input_1.FileInput, { control: props.control, id: "image", label: "Hlavn\u00ED obr\u00E1zek", name: "image", onUploadFile: on_upload_file_1.onUploadFile })),
45
+ react_1.default.createElement(file_input_1.FileInput, { control: props.control, id: "image", label: "Hlavn\u00ED obr\u00E1zek", name: "image", onUploadFile: (file) => (0, on_upload_file_1.onUploadFile)(file) })),
46
46
  react_1.default.createElement(checkbox_input_1.CheckboxInput, { control: props.control, label: "Aktivn\u00ED", name: "active" }),
47
47
  react_1.default.createElement(select_1.Select, { control: props.control, isRequired: true, label: "Viditelnost", name: "visibilityLevel", options: options })),
48
48
  react_1.default.createElement(tabs_1.Tabs.Panel, { classNamePanel: "space-y-8 px-4 pb-4", isAlwaysMounted: true, label: "SEO", name: constants_1.ContentBuilderTabs.Seo },
@@ -56,6 +56,6 @@ function FormRootFields(props) {
56
56
  react_1.default.createElement(hide_1.Hide, { when: Boolean((_o = (_m = props.config.hide) === null || _m === void 0 ? void 0 : _m.seo) === null || _o === void 0 ? void 0 : _o.ogDescription) },
57
57
  react_1.default.createElement(text_input_1.TextInput, { control: props.control, helperText: "Popis kter\u00FD bude zobrazen p\u0159i sd\u00EDlen\u00ED na Facebooku, ...", label: "OG popis", name: "seo.ogDescription", type: "text" })),
58
58
  react_1.default.createElement(hide_1.Hide, { when: Boolean((_q = (_p = props.config.hide) === null || _p === void 0 ? void 0 : _p.seo) === null || _q === void 0 ? void 0 : _q.ogImage) },
59
- react_1.default.createElement(file_input_1.FileInput, { control: props.control, helperText: "Obr\u00E1zek kter\u00FD bude zobrazen p\u0159i sd\u00EDlen\u00ED na Facebooku, ...", id: "seo.ogImage", label: "OG obr\u00E1zek", name: "seo.ogImage", onUploadFile: on_upload_file_1.onUploadFile })))),
59
+ react_1.default.createElement(file_input_1.FileInput, { control: props.control, helperText: "Obr\u00E1zek kter\u00FD bude zobrazen p\u0159i sd\u00EDlen\u00ED na Facebooku, ...", id: "seo.ogImage", label: "OG obr\u00E1zek", name: "seo.ogImage", onUploadFile: (file) => (0, on_upload_file_1.onUploadFile)(file) })))),
60
60
  props.children));
61
61
  }
@@ -37,7 +37,7 @@ const People = (props) => {
37
37
  react_1.default.createElement("div", { className: "col-span-12 sm:col-span-6" },
38
38
  react_1.default.createElement(text_input_1.TextInput, { control: props.control, isRequired: true, label: "Jm\u00E9no", name: `${props.name}.people.${index}.name` })),
39
39
  react_1.default.createElement("div", { className: "col-span-12 sm:col-span-6" },
40
- react_1.default.createElement(file_input_1.FileInput, { control: props.control, id: `${props.name}.people.${index}.image`, label: "Obr\u00E1zek", name: `${props.name}.people.${index}.image`, onUploadFile: on_upload_file_1.onUploadFile })),
40
+ react_1.default.createElement(file_input_1.FileInput, { control: props.control, id: `${props.name}.people.${index}.image`, label: "Obr\u00E1zek", name: `${props.name}.people.${index}.image`, onUploadFile: (file) => (0, on_upload_file_1.onUploadFile)(file) })),
41
41
  react_1.default.createElement("div", { className: "col-span-12" },
42
42
  react_1.default.createElement(text_input_1.TextInput, { control: props.control, label: "Popisek", name: `${props.name}.people.${index}.subtitle` })),
43
43
  react_1.default.createElement("div", { className: "col-span-12" },
@@ -1,3 +0,0 @@
1
- import { FC } from "react";
2
- import { FieldProps } from "./types";
3
- export declare const BaseField: FC<FieldProps>;
@@ -1,89 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BaseField = void 0;
7
- const empty_array_1 = require("@uxf/core/constants/empty-array");
8
- const checkbox_input_1 = require("@uxf/form/checkbox-input");
9
- const combobox_1 = require("@uxf/form/combobox");
10
- const date_picker_input_1 = require("@uxf/form/date-picker-input");
11
- const datetime_picker_input_1 = require("@uxf/form/datetime-picker-input");
12
- const dropzone_input_1 = require("@uxf/form/dropzone/dropzone-input");
13
- const dropzone_list_1 = require("@uxf/form/dropzone/dropzone-list");
14
- const file_input_1 = require("@uxf/form/file-input");
15
- const multi_combobox_1 = require("@uxf/form/multi-combobox");
16
- const number_input_1 = require("@uxf/form/number-input");
17
- const select_1 = require("@uxf/form/select");
18
- const text_input_1 = require("@uxf/form/text-input");
19
- const textarea_1 = require("@uxf/form/textarea");
20
- const time_picker_input_1 = require("@uxf/form/time-picker-input");
21
- const label_1 = require("@uxf/ui/label");
22
- const react_1 = __importDefault(require("react"));
23
- const api_1 = require("../../api");
24
- const on_upload_dropzone_file_1 = require("../../forms/utils/on-upload-dropzone-file");
25
- const on_upload_file_1 = require("../../forms/utils/on-upload-file");
26
- const remove_confirm_handler_1 = require("../../utils/remove-confirm-handler");
27
- const field_array_1 = require("./field-array"); // eslint-disable-line import/no-cycle
28
- const content_1 = require("./field/content");
29
- // eslint-disable-next-line complexity
30
- const BaseField = (props) => {
31
- // eslint-disable-next-line react/destructuring-assignment
32
- const { fieldSchema, entityAlias, isEditing, prefix = "", control } = props;
33
- const { editable, label, name, readOnly, type, options } = fieldSchema;
34
- const fieldName = `${prefix}${name}`;
35
- const disabled = readOnly || (isEditing && !editable);
36
- const required = !disabled && fieldSchema.required;
37
- /*eslint complexity: ["error", 21]*/
38
- switch (type) {
39
- case "file":
40
- case "logo":
41
- case "image":
42
- return (react_1.default.createElement(file_input_1.FileInput, { control: control, id: fieldName, isClearable: !required, isDisabled: disabled, isRequired: required, label: label, name: fieldName, onUploadFile: on_upload_file_1.onUploadFile }));
43
- case "enum":
44
- return (react_1.default.createElement(select_1.Select, { control: control, isClearable: !required, isDisabled: disabled, isRequired: required, label: label, name: fieldName, options: options !== null && options !== void 0 ? options : empty_array_1.EMPTY_ARRAY }));
45
- case "content":
46
- return react_1.default.createElement(content_1.Content, { ...props });
47
- case "boolean":
48
- return (react_1.default.createElement(checkbox_input_1.CheckboxInput, { control: control, isDisabled: disabled, isRequired: required, label: label, name: fieldName }));
49
- case "date":
50
- return (react_1.default.createElement(date_picker_input_1.DatePickerInput, { control: control, isClearable: !required, isDisabled: disabled, isRequired: required, label: label, name: fieldName }));
51
- case "datetime":
52
- return (react_1.default.createElement(datetime_picker_input_1.DatetimePickerInput, { control: control, isClearable: !required, isDisabled: disabled, isRequired: required, label: label, name: fieldName }));
53
- case "time":
54
- return (react_1.default.createElement(time_picker_input_1.TimePickerInput, { control: control, isClearable: !required, isDisabled: disabled, isRequired: required, label: label, name: fieldName }));
55
- case "files":
56
- case "images":
57
- return (react_1.default.createElement(react_1.default.Fragment, null,
58
- react_1.default.createElement(label_1.Label, null, label),
59
- react_1.default.createElement("div", { className: "mb-3" },
60
- react_1.default.createElement(dropzone_input_1.DropzoneInput, { control: control, label: label, name: fieldName, onUploadFile: on_upload_dropzone_file_1.onUploadDropzoneFile })),
61
- react_1.default.createElement(dropzone_list_1.DropzoneList, { control: control, errorText: "Soubor se nepoda\u0159ilo nahr\u00E1t.", name: fieldName, onRemoveConfirm: remove_confirm_handler_1.removeConfirmHandler })));
62
- case "manyToMany":
63
- return (react_1.default.createElement(multi_combobox_1.MultiCombobox, { control: control, isDisabled: disabled, isRequired: required, label: label, loadOptions: (term) => { var _a; return (0, api_1.autocomplete)(null, { name: (_a = fieldSchema.autocomplete) !== null && _a !== void 0 ? _a : "" }, { term }).then((r) => r.data); }, name: fieldName }));
64
- case "manyToOne":
65
- return (react_1.default.createElement(combobox_1.Combobox, { control: control, isClearable: !required, isDisabled: disabled, isRequired: required, label: label, loadOptions: (term) => { var _a; return (0, api_1.autocomplete)(null, { name: (_a = fieldSchema.autocomplete) !== null && _a !== void 0 ? _a : "" }, { term }).then((r) => r.data); }, name: fieldName }));
66
- case "oneToMany":
67
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
68
- if (fieldSchema.fields === null) {
69
- return null;
70
- }
71
- return (react_1.default.createElement(react_1.default.Fragment, null,
72
- react_1.default.createElement("p", { className: "mb-2 font-medium" }, fieldSchema.label),
73
- react_1.default.createElement(field_array_1.FieldArray, { control: control, entityAlias: entityAlias, fieldName: fieldName, fieldSchema: fieldSchema, isEditing: isEditing })));
74
- case "embedded":
75
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
76
- if (fieldSchema.fields === null) {
77
- return null;
78
- }
79
- return (react_1.default.createElement(react_1.default.Fragment, null, fieldSchema.fields.map((schema, i) => (react_1.default.createElement("div", { key: i },
80
- react_1.default.createElement(exports.BaseField, { ...props, fieldSchema: { ...schema, label: `${fieldSchema.label} ${schema.label}` }, prefix: `${fieldSchema.name}.` }))))));
81
- case "integer":
82
- return (react_1.default.createElement(number_input_1.NumberInput, { control: control, isDisabled: disabled, isRequired: required, label: label, name: fieldName }));
83
- case "text":
84
- return (react_1.default.createElement(textarea_1.Textarea, { control: control, isDisabled: disabled, isRequired: required, label: label, name: fieldName }));
85
- default:
86
- return (react_1.default.createElement(text_input_1.TextInput, { control: control, isDisabled: disabled, isRequired: required, label: label, name: fieldName }));
87
- }
88
- };
89
- exports.BaseField = BaseField;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
7
- const content_builder_1 = require("../../content-builder");
8
- const wysiwyg_1 = require("../../content-builder/content/wysiwyg");
9
- function Component(props) {
10
- // eslint-disable-next-line react/destructuring-assignment
11
- const { fieldSchema, prefix = "", contentComponents, control } = props;
12
- return (react_1.default.createElement("fieldset", null,
13
- react_1.default.createElement("legend", null, fieldSchema.label),
14
- react_1.default.createElement(content_builder_1.ContentField, { contentComponents: contentComponents !== null && contentComponents !== void 0 ? contentComponents : [wysiwyg_1.Wysiwyg], control: control, name: `${prefix}${fieldSchema.name}` })));
15
- }
16
- exports.default = Component;
@@ -1 +0,0 @@
1
- export declare const Content: import("react").ComponentType<import("./content-dynamic").Props>;
@@ -1,10 +0,0 @@
1
- import { FC } from "react";
2
- import { Control } from "react-hook-form";
3
- import { FieldSchemaResponse } from "../../api";
4
- export declare const FieldArray: FC<{
5
- fieldName: string;
6
- fieldSchema: FieldSchemaResponse;
7
- entityAlias: string;
8
- isEditing?: boolean;
9
- control: Control<any>;
10
- }>;
@@ -1,53 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.FieldArray = void 0;
27
- const button_1 = require("@uxf/ui/button");
28
- const icon_1 = require("@uxf/ui/icon");
29
- const react_1 = __importStar(require("react"));
30
- const react_hook_form_1 = require("react-hook-form");
31
- // eslint-disable-next-line import/no-cycle
32
- const base_field_1 = require("./base-field");
33
- const FieldArray = (props) => {
34
- // eslint-disable-next-line react/destructuring-assignment
35
- const { fieldName, fieldSchema, isEditing, entityAlias, control } = props;
36
- const { fields, remove, append } = (0, react_hook_form_1.useFieldArray)({ control, name: fieldName });
37
- return (react_1.default.createElement(react_1.default.Fragment, null,
38
- react_1.default.createElement("div", { className: "grid gap-2" }, fields.map((name, index) => (react_1.default.createElement(react_1.Fragment, { key: name.id },
39
- fieldSchema.fields.map((schema, i) => {
40
- if (schema.name === "id") {
41
- return react_1.default.createElement("input", { key: `${schema.name}-${i}`, name: "id", type: "hidden" });
42
- }
43
- return (react_1.default.createElement("div", { key: `${schema.name}-${i}` },
44
- react_1.default.createElement(base_field_1.BaseField, { control: control, entityAlias: entityAlias, fieldSchema: schema, isEditing: isEditing, prefix: `${index}.` })));
45
- }),
46
- react_1.default.createElement("div", { className: "flex justify-end" },
47
- react_1.default.createElement(button_1.Button, { isIconButton: true, onClick: () => remove(index), variant: "secondary" },
48
- react_1.default.createElement(icon_1.Icon, { name: "trash", size: 20 }))))))),
49
- react_1.default.createElement("div", { className: "mt-2" },
50
- react_1.default.createElement(button_1.Button, { isIconButton: true, onClick: () => append({ id: null }), variant: "secondary" },
51
- react_1.default.createElement(icon_1.Icon, { name: "plus", size: 20 })))));
52
- };
53
- exports.FieldArray = FieldArray;
@@ -1,15 +0,0 @@
1
- import { DefaultValues } from "react-hook-form";
2
- import { EntityMetaSchema, FormSchemaResponse } from "../../api";
3
- import { FormPageConfig } from "./types";
4
- export interface InitialProps<T extends {
5
- id?: number | null;
6
- }> {
7
- formSchema: FormSchemaResponse;
8
- initialValues: DefaultValues<T>;
9
- entityAlias: string;
10
- entityId: number | null;
11
- entityMetaSchema: EntityMetaSchema;
12
- }
13
- export declare const FormPage: <T extends {
14
- id?: number | null;
15
- }>(config: FormPageConfig<T>) => import("next").NextComponentType<import("../../deprecated/types/app").IAppContext, object, object>;
@@ -1,106 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.FormPage = void 0;
30
- const is_not_nil_1 = require("@uxf/core/utils/is-not-nil");
31
- const router_1 = __importDefault(require("next/router"));
32
- const react_1 = __importStar(require("react"));
33
- const react_hook_form_1 = require("react-hook-form");
34
- const api_1 = require("../../api");
35
- const config_1 = require("../../config");
36
- const with_authenticate_1 = require("../../deprecated/hoc/with-authenticate");
37
- const ValidationError_1 = require("../../errors/ValidationError");
38
- const base_field_1 = require("./base-field");
39
- const form_1 = require("./form");
40
- const mapper_1 = require("./mapper");
41
- const resolve = (value, ctx) => (typeof value === "function" ? value(ctx) : (value !== null && value !== void 0 ? value : null));
42
- const FormPage = (config) => {
43
- var _a, _b, _c;
44
- const entityIdResolver = (_a = config.entityId) !== null && _a !== void 0 ? _a : (({ query }) => (query.id ? Number.parseInt(query.id, 10) : null));
45
- const entityAliasResolver = (_b = config.entityAlias) !== null && _b !== void 0 ? _b : (({ query }) => (query.entityAlias ? `${query.entityAlias}` : null));
46
- const onSaveDone = (_c = config.onSaveDone) !== null && _c !== void 0 ? _c : router_1.default.back;
47
- const Component = (props) => {
48
- var _a, _b, _c, _d;
49
- const { formSchema, entityAlias, entityId, entityMetaSchema } = props;
50
- const formApi = (0, react_hook_form_1.useForm)({ defaultValues: props.initialValues });
51
- const onSubmit = (0, react_1.useCallback)(async (values) => {
52
- try {
53
- const newInitialValues = config.onSave
54
- ? await config.onSave(values, entityAlias)
55
- : await (0, api_1.saveFormValues)(null, { entityAlias, id: entityId }, (0, mapper_1.mapToRequestObject)(values, formSchema)).then((r) => r.data);
56
- formApi.reset(newInitialValues);
57
- onSaveDone(newInitialValues, entityAlias);
58
- }
59
- catch (e) {
60
- if (e instanceof ValidationError_1.ValidationError) {
61
- // eslint-disable-next-line no-console
62
- console.error(e);
63
- return e.fields;
64
- }
65
- config_1.container.get("service.error").handleError(e);
66
- return { ["ERROR"]: "Error" }; // TODO
67
- }
68
- }, [entityAlias, entityId, formSchema, formApi]);
69
- const FieldComponentElement = (_b = (_a = config.ui) === null || _a === void 0 ? void 0 : _a.Field) !== null && _b !== void 0 ? _b : base_field_1.BaseField;
70
- const Layout = (_d = (_c = config.ui) === null || _c === void 0 ? void 0 : _c.Layout) !== null && _d !== void 0 ? _d : react_1.default.createElement("div", null);
71
- const Content = (react_1.default.createElement(form_1.Form, { Field: FieldComponentElement, entityAlias: entityAlias, formApi: formApi, id: `${entityAlias}-form`, isEditing: (0, is_not_nil_1.isNotNil)(entityId), onSubmit: onSubmit, schema: formSchema }));
72
- return (0, react_1.cloneElement)(typeof Layout === "function" ? Layout(entityMetaSchema) : Layout, {
73
- children: Content,
74
- });
75
- };
76
- Component.getInitialProps = async (ctx) => {
77
- var _a;
78
- const entityId = resolve(entityIdResolver, ctx);
79
- const entityAlias = (_a = resolve(entityAliasResolver, ctx)) !== null && _a !== void 0 ? _a : "";
80
- const metaSchemas = await (0, api_1.getEntityMetaSchemas)(ctx).then((r) => r.data);
81
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
82
- if (!metaSchemas[entityAlias]) {
83
- throw new Error(`Entity meta schema for alias ${entityAlias} does not exist.`);
84
- }
85
- const formSchema = await (0, api_1.getFormSchema)(ctx, { entityAlias }).then((r) => r.data);
86
- let initialValues; // TODO vejvis
87
- if (typeof config.initialValues === "function") {
88
- initialValues = await config.initialValues(ctx);
89
- }
90
- else if (config.initialValues) {
91
- initialValues = config.initialValues;
92
- }
93
- else if (entityId) {
94
- initialValues = await (0, api_1.getFormValues)(ctx, { entityAlias, id: entityId }).then((r) => r.data);
95
- }
96
- return {
97
- entityId,
98
- entityAlias,
99
- entityMetaSchema: metaSchemas[entityAlias],
100
- formSchema: config.configureSchema ? config.configureSchema(formSchema) : formSchema,
101
- initialValues,
102
- };
103
- };
104
- return (0, with_authenticate_1.withAuthenticate)({ allowedRoles: config.allowedRoles || ["ROLE_ROOT"] })(Component);
105
- };
106
- exports.FormPage = FormPage;
@@ -1,18 +0,0 @@
1
- import { FormProps as UXFFormProps } from "@uxf/form/form";
2
- import React, { FC } from "react";
3
- import { FieldValues, FormState } from "react-hook-form";
4
- import { FormSchemaResponse } from "../../api";
5
- import { FieldComponent } from "./types";
6
- type SubmitButtonComponent<TFieldValues extends FieldValues = FieldValues> = FC<{
7
- formState: FormState<TFieldValues>;
8
- }>;
9
- interface FormProps<T extends FieldValues> extends Omit<UXFFormProps<T>, "children"> {
10
- className?: string;
11
- schema: FormSchemaResponse;
12
- Field?: FieldComponent;
13
- entityAlias: string;
14
- isEditing?: boolean;
15
- SubmitButton?: SubmitButtonComponent<T>;
16
- }
17
- export declare function Form<T extends FieldValues>(props: FormProps<T>): React.JSX.Element;
18
- export {};
@@ -1,25 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Form = Form;
7
- const form_1 = require("@uxf/form/form");
8
- const button_1 = require("@uxf/ui/button");
9
- const react_1 = __importDefault(require("react"));
10
- const widget_1 = require("../../ui/widget");
11
- const base_field_1 = require("./base-field");
12
- const BaseSubmitButton = (props) => {
13
- const { isSubmitting } = props.formState;
14
- return (react_1.default.createElement(button_1.Button, { isDisabled: isSubmitting, type: "submit" }, "Ulo\u017Eit"));
15
- };
16
- function Form(props) {
17
- var _a, _b, _c;
18
- const SubmitButton = (_a = props.SubmitButton) !== null && _a !== void 0 ? _a : BaseSubmitButton;
19
- const Field = (_b = props.Field) !== null && _b !== void 0 ? _b : base_field_1.BaseField;
20
- return (react_1.default.createElement(form_1.Form, { formApi: props.formApi, id: props.id, onSubmit: props.onSubmit },
21
- react_1.default.createElement("div", { className: (_c = props.className) !== null && _c !== void 0 ? _c : "pb-10" },
22
- react_1.default.createElement(widget_1.Widget, { footer: react_1.default.createElement("div", { className: "text-right" },
23
- react_1.default.createElement(SubmitButton, { formState: props.formApi.formState })), withDividers: true }, props.schema.fields.map((field, i) => (react_1.default.createElement("div", { className: "p-4", key: i },
24
- react_1.default.createElement(Field, { control: props.formApi.control, entityAlias: props.entityAlias, fieldSchema: field, isEditing: props.isEditing }))))))));
25
- }
@@ -1,5 +0,0 @@
1
- export * from "./base-field";
2
- export * from "./form";
3
- export * from "./form-page";
4
- export * from "./mapper";
5
- export * from "./types";
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./base-field"), exports);
18
- __exportStar(require("./form"), exports);
19
- __exportStar(require("./form-page"), exports);
20
- __exportStar(require("./mapper"), exports);
21
- __exportStar(require("./types"), exports);
@@ -1,2 +0,0 @@
1
- import { FormSchemaResponse } from "../../api";
2
- export declare const mapToRequestObject: (values: any, schema: FormSchemaResponse) => any;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapToRequestObject = void 0;
4
- const empty_array_1 = require("@uxf/core/constants/empty-array");
5
- const mapToRequestObject = (values, schema) => {
6
- var _a, _b;
7
- const requestObject = { ...values };
8
- for (const field of schema.fields) {
9
- const { name, type } = field;
10
- const value = requestObject[name];
11
- switch (type) {
12
- case "file":
13
- case "image":
14
- requestObject[name] = value ? value.id : value;
15
- break;
16
- case "content":
17
- // TODO search string
18
- requestObject[name] = value ? { data: (_a = value.data) !== null && _a !== void 0 ? _a : empty_array_1.EMPTY_ARRAY, search: (_b = value.search) !== null && _b !== void 0 ? _b : "" } : null;
19
- break;
20
- case "embedded":
21
- requestObject[name] = (0, exports.mapToRequestObject)(value, field);
22
- break;
23
- }
24
- }
25
- return requestObject;
26
- };
27
- exports.mapToRequestObject = mapToRequestObject;
@@ -1,30 +0,0 @@
1
- import { FC, ReactElement } from "react";
2
- import { Control } from "react-hook-form";
3
- import { EntityMetaSchema, FieldSchemaResponse, FormSchemaResponse } from "../../api";
4
- export interface FieldProps {
5
- fieldSchema: FieldSchemaResponse;
6
- entityAlias: string;
7
- isEditing?: boolean;
8
- prefix?: string;
9
- control: Control<any>;
10
- }
11
- export type FieldComponent = FC<FieldProps>;
12
- export interface FormPageConfig<T = {
13
- id?: number | null;
14
- }> {
15
- allowedRoles?: string[];
16
- initialValues?: ((ctx: any) => Promise<T>) | T;
17
- configureSchema?: (schema: FormSchemaResponse) => FormSchemaResponse;
18
- entityAlias?: string | ((ctx: any) => string);
19
- entityId?: number | ((ctx: any) => number);
20
- onSave?: (data: T, entityAlias: string) => Promise<T>;
21
- onSaveDone?: (data: T, entityAlias: string) => void;
22
- ui?: {
23
- Field?: FieldComponent;
24
- Layout?: ReactElement | ((entityMetaSchema: EntityMetaSchema) => ReactElement);
25
- };
26
- }
27
- export interface FormPageQueryParams {
28
- id?: string;
29
- entityAlias: string;
30
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });