@uxf/cms 2.2.3 → 2.3.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.
- package/README.md +63 -0
- package/lab/ContentBuilderPage/ContentBuilder.d.ts +5 -0
- package/lab/ContentBuilderPage/ContentBuilder.js +93 -0
- package/lab/ContentBuilderPage/ContentHeader.d.ts +3 -0
- package/lab/ContentBuilderPage/ContentHeader.js +54 -0
- package/lab/ContentBuilderPage/components/Form.d.ts +6 -0
- package/lab/ContentBuilderPage/components/Form.js +66 -0
- package/lab/ContentBuilderPage/components/FormContent.d.ts +7 -0
- package/lab/ContentBuilderPage/components/FormContent.js +41 -0
- package/lab/ContentBuilderPage/components/FormRootFields.d.ts +2 -0
- package/lab/ContentBuilderPage/components/FormRootFields.js +55 -0
- package/lab/ContentBuilderPage/content/Wysiwyg.d.ts +3 -0
- package/lab/ContentBuilderPage/content/Wysiwyg.js +41 -0
- package/lab/ContentBuilderPage/index.d.ts +3 -0
- package/lab/ContentBuilderPage/index.js +16 -0
- package/lab/ContentBuilderPage/types.d.ts +49 -0
- package/lab/ContentBuilderPage/types.js +3 -0
- package/package.json +2 -1
- package/ui/FileInput/FileInput.js +4 -4
- package/ui/FileInput/types.d.ts +1 -0
package/README.md
CHANGED
@@ -96,6 +96,69 @@ import { Paper } from "@uxf/cms/ui/Paper";
|
|
96
96
|
|
97
97
|
## Pages
|
98
98
|
|
99
|
+
### ContentBuilder
|
100
|
+
|
101
|
+
```tsx
|
102
|
+
import { ContentBuilder } from "@uxf/cms/lab/ContentBuilder";
|
103
|
+
import { Wysiwyg, WysiwygContent } from "@uxf/cms/lab/ContentBuilder/content/Wysiwyg"
|
104
|
+
|
105
|
+
type Contents = WysiwygContent | ...;
|
106
|
+
|
107
|
+
export default ContentBuilder<Contents>({
|
108
|
+
contentComponents: [ Wysiwyg ],
|
109
|
+
initialValues: {
|
110
|
+
active: false,
|
111
|
+
publishedAt: moment().startOf("day").add(1, "month").toISOString(),
|
112
|
+
name: "",
|
113
|
+
author: "",
|
114
|
+
visibilityLevel: "PRIVATE",
|
115
|
+
seo: {},
|
116
|
+
image: null,
|
117
|
+
content: [
|
118
|
+
{
|
119
|
+
type: "wysiwyg",
|
120
|
+
content: null,
|
121
|
+
},
|
122
|
+
],
|
123
|
+
},
|
124
|
+
onSubmit: async (content) => {
|
125
|
+
// implement me
|
126
|
+
},
|
127
|
+
ui: {
|
128
|
+
Layout: (props) => (
|
129
|
+
<Layout menuConfiguration={menu} title="Nový článek">
|
130
|
+
{props.children}
|
131
|
+
</Layout>
|
132
|
+
),
|
133
|
+
},
|
134
|
+
});
|
135
|
+
```
|
136
|
+
|
137
|
+
#### Custom section
|
138
|
+
|
139
|
+
```tsx
|
140
|
+
import { ContentHeader, Content } from "@uxf/cms/pages/ContentBuilder";
|
141
|
+
import { TextInput } from "@uxf/cms/forms/components/TextInput";
|
142
|
+
|
143
|
+
export type WysiwygContent = Content<"wysiwyg", any>;
|
144
|
+
|
145
|
+
export const Wysiwyg: ContentComponent<WysiwygContent> = (props) => {
|
146
|
+
const { name } = props;
|
147
|
+
|
148
|
+
return (
|
149
|
+
<Paper>
|
150
|
+
<ContentHeader {...props} />
|
151
|
+
<TextInput name="text" label="Wysiwyg" />
|
152
|
+
</Paper>
|
153
|
+
);
|
154
|
+
};
|
155
|
+
|
156
|
+
Wysiwyg.getConfig = () => ({
|
157
|
+
type: "wysiwyg",
|
158
|
+
label: "Strukturovaný text",
|
159
|
+
});
|
160
|
+
```
|
161
|
+
|
99
162
|
### ForgottenPasswordPage
|
100
163
|
|
101
164
|
```tsx
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { Content, ContentBuilderConfig } from "./types";
|
3
|
+
export declare const ContentBuilder: <T extends Content<string, any>>(config: ContentBuilderConfig<T>) => React.FunctionComponent<any> & {
|
4
|
+
getInitialProps?(context: import("next").NextPageContext): any;
|
5
|
+
};
|
@@ -0,0 +1,93 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
20
|
+
});
|
21
|
+
};
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
26
|
+
function step(op) {
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
28
|
+
while (_) try {
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
31
|
+
switch (op[0]) {
|
32
|
+
case 0: case 1: t = op; break;
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
36
|
+
default:
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
41
|
+
if (t[2]) _.ops.pop();
|
42
|
+
_.trys.pop(); continue;
|
43
|
+
}
|
44
|
+
op = body.call(thisArg, _);
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
47
|
+
}
|
48
|
+
};
|
49
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
50
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
51
|
+
};
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
53
|
+
exports.ContentBuilder = void 0;
|
54
|
+
var react_1 = __importDefault(require("react"));
|
55
|
+
var Form_1 = require("./components/Form");
|
56
|
+
var DefaultLayout = function (props) { return react_1.default.createElement("div", __assign({}, props)); };
|
57
|
+
var ContentBuilderComponent = function (props) {
|
58
|
+
var _a;
|
59
|
+
var config = props.config, initialValues = props.initialValues;
|
60
|
+
var ui = config.ui;
|
61
|
+
var Layout = (_a = ui.Layout) !== null && _a !== void 0 ? _a : DefaultLayout;
|
62
|
+
return (react_1.default.createElement(Layout, null,
|
63
|
+
react_1.default.createElement(Form_1.Form, { config: config, onSubmit: config.onSubmit, initialValues: initialValues })));
|
64
|
+
};
|
65
|
+
ContentBuilderComponent.displayName = "ContentBuilderComponent";
|
66
|
+
var ContentBuilder = function (config) {
|
67
|
+
var Page = function (_a) {
|
68
|
+
var initialValues = _a.initialValues;
|
69
|
+
return react_1.default.createElement(ContentBuilderComponent, { config: config, initialValues: initialValues });
|
70
|
+
};
|
71
|
+
Page.getInitialProps = function (ctx) { return __awaiter(void 0, void 0, void 0, function () {
|
72
|
+
var initialValues, _a;
|
73
|
+
return __generator(this, function (_b) {
|
74
|
+
switch (_b.label) {
|
75
|
+
case 0:
|
76
|
+
if (!(typeof config.initialValues === "function")) return [3 /*break*/, 2];
|
77
|
+
return [4 /*yield*/, config.initialValues(ctx)];
|
78
|
+
case 1:
|
79
|
+
_a = _b.sent();
|
80
|
+
return [3 /*break*/, 3];
|
81
|
+
case 2:
|
82
|
+
_a = config.initialValues;
|
83
|
+
_b.label = 3;
|
84
|
+
case 3:
|
85
|
+
initialValues = _a;
|
86
|
+
return [2 /*return*/, { initialValues: initialValues }];
|
87
|
+
}
|
88
|
+
});
|
89
|
+
}); };
|
90
|
+
return Page;
|
91
|
+
};
|
92
|
+
exports.ContentBuilder = ContentBuilder;
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFiL0NvbnRlbnRCdWlsZGVyUGFnZS9Db250ZW50QnVpbGRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxnREFBMEI7QUFFMUIsMENBQXlDO0FBRXpDLElBQU0sYUFBYSxHQUFhLFVBQUMsS0FBSyxJQUFLLE9BQUEsa0RBQVMsS0FBSyxFQUFJLEVBQWxCLENBQWtCLENBQUM7QUFFOUQsSUFBTSx1QkFBdUIsR0FBd0UsVUFBQyxLQUFLOztJQUMvRixJQUFBLE1BQU0sR0FBb0IsS0FBSyxPQUF6QixFQUFFLGFBQWEsR0FBSyxLQUFLLGNBQVYsQ0FBVztJQUNoQyxJQUFBLEVBQUUsR0FBSyxNQUFNLEdBQVgsQ0FBWTtJQUV0QixJQUFNLE1BQU0sR0FBRyxNQUFBLEVBQUUsQ0FBQyxNQUFNLG1DQUFJLGFBQWEsQ0FBQztJQUUxQyxPQUFPLENBQ0gsOEJBQUMsTUFBTTtRQUNILDhCQUFDLFdBQUksSUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxhQUFhLEdBQUksQ0FDNUUsQ0FDWixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBQ0YsdUJBQXVCLENBQUMsV0FBVyxHQUFHLHlCQUF5QixDQUFDO0FBRXpELElBQU0sY0FBYyxHQUFHLFVBQWlDLE1BQStCO0lBQzFGLElBQU0sSUFBSSxHQUFrQixVQUFDLEVBQWlCO1lBQWYsYUFBYSxtQkFBQTtRQUN4QyxPQUFPLDhCQUFDLHVCQUF1QixJQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsR0FBSSxDQUFDO0lBQ3JGLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBTyxHQUFHOzs7Ozt5QkFFekIsQ0FBQSxPQUFPLE1BQU0sQ0FBQyxhQUFhLEtBQUssVUFBVSxDQUFBLEVBQTFDLHdCQUEwQztvQkFBRyxxQkFBTSxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFBOztvQkFBL0IsS0FBQSxTQUErQixDQUFBOzs7b0JBQUcsS0FBQSxNQUFNLENBQUMsYUFBYSxDQUFBOzs7b0JBRGpHLGFBQWEsS0FDb0Y7b0JBRXZHLHNCQUFPLEVBQUUsYUFBYSxlQUFBLEVBQUUsRUFBQzs7O1NBQzVCLENBQUM7SUFFRixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFiVyxRQUFBLGNBQWMsa0JBYXpCIn0=
|
@@ -0,0 +1,54 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
14
|
+
var t = {};
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
16
|
+
t[p] = s[p];
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
20
|
+
t[p[i]] = s[p[i]];
|
21
|
+
}
|
22
|
+
return t;
|
23
|
+
};
|
24
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
25
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
26
|
+
};
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
28
|
+
exports.ContentHeader = void 0;
|
29
|
+
var react_1 = __importDefault(require("react"));
|
30
|
+
var Typography_1 = __importDefault(require("@mui/material/Typography"));
|
31
|
+
var Box_1 = __importDefault(require("@mui/material/Box"));
|
32
|
+
var FormControl_1 = __importDefault(require("@mui/material/FormControl"));
|
33
|
+
var InputLabel_1 = __importDefault(require("@mui/material/InputLabel"));
|
34
|
+
var Select_1 = __importDefault(require("@mui/material/Select"));
|
35
|
+
var MenuItem_1 = __importDefault(require("@mui/material/MenuItem"));
|
36
|
+
var Divider_1 = __importDefault(require("@mui/material/Divider"));
|
37
|
+
var ContentHeader = function (props) {
|
38
|
+
var index = props.index, name = props.name, TypeInputProps = props.TypeInputProps;
|
39
|
+
var inputId = "field-".concat(name);
|
40
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
41
|
+
react_1.default.createElement(Typography_1.default, { variant: "h3", pt: 2, px: 2 },
|
42
|
+
"Sekce #",
|
43
|
+
index + 1),
|
44
|
+
react_1.default.createElement(Box_1.default, { p: 2 },
|
45
|
+
react_1.default.createElement(FormControl_1.default, { fullWidth: true },
|
46
|
+
react_1.default.createElement(InputLabel_1.default, { id: inputId }, "Typ"),
|
47
|
+
react_1.default.createElement(Select_1.default, __assign({ label: "Typ", size: "small", labelId: inputId }, TypeInputProps), TypeInputProps.options.map(function (_a) {
|
48
|
+
var children = _a.children, menuItemProps = __rest(_a, ["children"]);
|
49
|
+
return (react_1.default.createElement(MenuItem_1.default, __assign({ key: index }, menuItemProps), children));
|
50
|
+
})))),
|
51
|
+
react_1.default.createElement(Divider_1.default, null)));
|
52
|
+
};
|
53
|
+
exports.ContentHeader = ContentHeader;
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudEhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYWIvQ29udGVudEJ1aWxkZXJQYWdlL0NvbnRlbnRIZWFkZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxnREFBMEI7QUFDMUIsd0VBQWtEO0FBQ2xELDBEQUFvQztBQUNwQywwRUFBb0Q7QUFDcEQsd0VBQWtEO0FBQ2xELGdFQUEwQztBQUMxQyxvRUFBOEM7QUFDOUMsa0VBQTRDO0FBRXJDLElBQU0sYUFBYSxHQUEyQixVQUFDLEtBQUs7SUFDL0MsSUFBQSxLQUFLLEdBQTJCLEtBQUssTUFBaEMsRUFBRSxJQUFJLEdBQXFCLEtBQUssS0FBMUIsRUFBRSxjQUFjLEdBQUssS0FBSyxlQUFWLENBQVc7SUFFOUMsSUFBTSxPQUFPLEdBQUcsZ0JBQVMsSUFBSSxDQUFFLENBQUM7SUFFaEMsT0FBTyxDQUNIO1FBQ0ksOEJBQUMsb0JBQVUsSUFBQyxPQUFPLEVBQUMsSUFBSSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7O1lBQ3pCLEtBQUssR0FBRyxDQUFDLENBQ1I7UUFDYiw4QkFBQyxhQUFHLElBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCw4QkFBQyxxQkFBVyxJQUFDLFNBQVM7Z0JBQ2xCLDhCQUFDLG9CQUFVLElBQUMsRUFBRSxFQUFFLE9BQU8sVUFBa0I7Z0JBQ3pDLDhCQUFDLGdCQUFNLGFBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxJQUFJLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBRSxPQUFPLElBQU0sY0FBYyxHQUNoRSxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFDLEVBQThCO29CQUE1QixJQUFBLFFBQVEsY0FBQSxFQUFLLGFBQWEsY0FBNUIsWUFBOEIsQ0FBRjtvQkFDckQsT0FBTyxDQUNILDhCQUFDLGtCQUFRLGFBQUMsR0FBRyxFQUFFLEtBQUssSUFBTSxhQUFhLEdBQ2xDLFFBQVEsQ0FDRixDQUNkLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQ0csQ0FDQyxDQUNaO1FBQ04sOEJBQUMsaUJBQU8sT0FBRyxDQUNaLENBQ04sQ0FBQztBQUNOLENBQUMsQ0FBQztBQTNCVyxRQUFBLGFBQWEsaUJBMkJ4QiJ9
|
@@ -0,0 +1,66 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
14
|
+
var t = {};
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
16
|
+
t[p] = s[p];
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
20
|
+
t[p[i]] = s[p[i]];
|
21
|
+
}
|
22
|
+
return t;
|
23
|
+
};
|
24
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
25
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
26
|
+
};
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
28
|
+
exports.Form = void 0;
|
29
|
+
var react_1 = __importDefault(require("react"));
|
30
|
+
var react_final_form_1 = require("react-final-form");
|
31
|
+
var final_form_arrays_1 = __importDefault(require("final-form-arrays"));
|
32
|
+
var react_final_form_arrays_1 = require("react-final-form-arrays");
|
33
|
+
var Button_1 = __importDefault(require("@mui/material/Button"));
|
34
|
+
var Grid_1 = __importDefault(require("@mui/material/Grid"));
|
35
|
+
var FormContent_1 = require("./FormContent");
|
36
|
+
var Save_1 = __importDefault(require("@mui/icons-material/Save"));
|
37
|
+
var Fab_1 = __importDefault(require("@mui/material/Fab"));
|
38
|
+
var FormRootFields_1 = require("./FormRootFields");
|
39
|
+
var Form = function (props) {
|
40
|
+
var config = props.config, formProps = __rest(props, ["config"]);
|
41
|
+
return (react_1.default.createElement(react_final_form_1.Form, __assign({}, formProps, { mutators: __assign({}, final_form_arrays_1.default) }), function (_a) {
|
42
|
+
var handleSubmit = _a.handleSubmit, submitting = _a.submitting;
|
43
|
+
return (react_1.default.createElement("form", { onSubmit: handleSubmit },
|
44
|
+
react_1.default.createElement(Grid_1.default, { container: true, spacing: 2 },
|
45
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
46
|
+
react_1.default.createElement(FormRootFields_1.FormRootFields, null)),
|
47
|
+
react_1.default.createElement(react_final_form_arrays_1.FieldArray, { name: "content" }, function (_a) {
|
48
|
+
var fields = _a.fields;
|
49
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
50
|
+
fields.map(function (name, index) { return (react_1.default.createElement(Grid_1.default, { key: name, item: true, xs: 12 },
|
51
|
+
react_1.default.createElement(FormContent_1.FormContent, { name: name, contentComponents: config.contentComponents, index: index, onRemove: function () { return fields.remove(index); } }))); }),
|
52
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
53
|
+
react_1.default.createElement(Button_1.default, { variant: "outlined", type: "button", onClick: function () {
|
54
|
+
var _a, _b;
|
55
|
+
return fields.push({
|
56
|
+
type: (_b = (_a = config.contentComponents[0]) === null || _a === void 0 ? void 0 : _a.getConfig().type) !== null && _b !== void 0 ? _b : "unknown",
|
57
|
+
content: null,
|
58
|
+
});
|
59
|
+
} }, "P\u0159idat sekci"))));
|
60
|
+
})),
|
61
|
+
react_1.default.createElement(Fab_1.default, { color: "primary", type: "submit", sx: { position: "fixed", bottom: 16, right: 16 }, disabled: submitting },
|
62
|
+
react_1.default.createElement(Save_1.default, null))));
|
63
|
+
}));
|
64
|
+
};
|
65
|
+
exports.Form = Form;
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9sYWIvQ29udGVudEJ1aWxkZXJQYWdlL2NvbXBvbmVudHMvRm9ybS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUEwQjtBQUMxQixxREFBcUU7QUFDckUsd0VBQThDO0FBQzlDLG1FQUFxRDtBQUNyRCxnRUFBMEM7QUFDMUMsNERBQXNDO0FBQ3RDLDZDQUE0QztBQUM1QyxrRUFBZ0Q7QUFDaEQsMERBQW9DO0FBRXBDLG1EQUFrRDtBQUUzQyxJQUFNLElBQUksR0FBa0YsVUFBQyxLQUFLO0lBQzdGLElBQUEsTUFBTSxHQUFtQixLQUFLLE9BQXhCLEVBQUssU0FBUyxVQUFLLEtBQUssRUFBaEMsVUFBd0IsQ0FBRixDQUFXO0lBRXZDLE9BQU8sQ0FDSCw4QkFBQyx1QkFBYyxlQUNQLFNBQVMsSUFDYixRQUFRLGVBQ0QsMkJBQWEsTUFHbkIsVUFBQyxFQUE0QjtZQUExQixZQUFZLGtCQUFBLEVBQUUsVUFBVSxnQkFBQTtRQUFPLE9BQUEsQ0FDL0Isd0NBQU0sUUFBUSxFQUFFLFlBQVk7WUFDeEIsOEJBQUMsY0FBSSxJQUFDLFNBQVMsUUFBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdEIsOEJBQUMsY0FBSSxJQUFDLElBQUksUUFBQyxFQUFFLEVBQUUsRUFBRTtvQkFDYiw4QkFBQywrQkFBYyxPQUFHLENBQ2Y7Z0JBQ1AsOEJBQUMsb0NBQVUsSUFBQyxJQUFJLEVBQUMsU0FBUyxJQUNyQixVQUFDLEVBQVU7d0JBQVIsTUFBTSxZQUFBO29CQUFPLE9BQUEsQ0FDYjt3QkFDSyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQUMsSUFBSSxFQUFFLEtBQUssSUFBSyxPQUFBLENBQ3pCLDhCQUFDLGNBQUksSUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksUUFBQyxFQUFFLEVBQUUsRUFBRTs0QkFDeEIsOEJBQUMseUJBQVcsSUFDUixJQUFJLEVBQUUsSUFBSSxFQUNWLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsRUFDM0MsS0FBSyxFQUFFLEtBQUssRUFDWixRQUFRLEVBQUUsY0FBTSxPQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQXBCLENBQW9CLEdBQ3RDLENBQ0MsQ0FDVixFQVQ0QixDQVM1QixDQUFDO3dCQUNGLDhCQUFDLGNBQUksSUFBQyxJQUFJLFFBQUMsRUFBRSxFQUFFLEVBQUU7NEJBQ2IsOEJBQUMsZ0JBQU0sSUFDSCxPQUFPLEVBQUMsVUFBVSxFQUNsQixJQUFJLEVBQUMsUUFBUSxFQUNiLE9BQU8sRUFBRTs7b0NBQ0wsT0FBQSxNQUFNLENBQUMsSUFBSSxDQUFDO3dDQUNSLElBQUksRUFBRSxNQUFBLE1BQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQywwQ0FBRSxTQUFTLEdBQUcsSUFBSSxtQ0FBSSxTQUFTO3dDQUNoRSxPQUFPLEVBQUUsSUFBSTtxQ0FDaEIsQ0FBQyxDQUFBO2lDQUFBLHdCQUlELENBQ04sQ0FDUixDQUNOO2dCQTNCZ0IsQ0EyQmhCLENBQ1EsQ0FDVjtZQUNQLDhCQUFDLGFBQUcsSUFDQSxLQUFLLEVBQUMsU0FBUyxFQUNmLElBQUksRUFBQyxRQUFRLEVBQ2IsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFDaEQsUUFBUSxFQUFFLFVBQVU7Z0JBRXBCLDhCQUFDLGNBQVEsT0FBRyxDQUNWLENBQ0gsQ0FDVjtJQTlDa0MsQ0E4Q2xDLENBQ1ksQ0FDcEIsQ0FBQztBQUNOLENBQUMsQ0FBQztBQTNEVyxRQUFBLElBQUksUUEyRGYifQ==
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { ContentComponent, ContentProps } from "../types";
|
3
|
+
interface FormSectionProps extends Omit<ContentProps, "TypeInputProps"> {
|
4
|
+
contentComponents: ContentComponent<any>[];
|
5
|
+
}
|
6
|
+
export declare const FormContent: React.FC<FormSectionProps>;
|
7
|
+
export {};
|
@@ -0,0 +1,41 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
exports.FormContent = void 0;
|
18
|
+
var react_1 = __importDefault(require("react"));
|
19
|
+
var react_final_form_1 = require("react-final-form");
|
20
|
+
var Box_1 = __importDefault(require("@mui/material/Box"));
|
21
|
+
var Warning_1 = __importDefault(require("@mui/icons-material/Warning"));
|
22
|
+
var Typography_1 = __importDefault(require("@mui/material/Typography"));
|
23
|
+
var getSection = function (sections, type) {
|
24
|
+
return sections.find(function (s) { return s.getConfig().type === type; });
|
25
|
+
};
|
26
|
+
var FormContent = function (props) {
|
27
|
+
var contentComponents = props.contentComponents, onRemove = props.onRemove, name = props.name, index = props.index;
|
28
|
+
var input = (0, react_final_form_1.useField)("".concat(name, ".type")).input;
|
29
|
+
var SectionContent = getSection(contentComponents, input.value);
|
30
|
+
if (SectionContent) {
|
31
|
+
return (react_1.default.createElement(SectionContent, { name: "".concat(name, ".content"), onRemove: onRemove, index: index, TypeInputProps: __assign(__assign({}, input), { options: contentComponents.map(function (s) { return ({
|
32
|
+
value: s.getConfig().type,
|
33
|
+
children: s.getConfig().label,
|
34
|
+
}); }) }) }));
|
35
|
+
}
|
36
|
+
return (react_1.default.createElement(Box_1.default, { display: "flex", alignItems: "center", justifyContent: "center", p: 2 },
|
37
|
+
react_1.default.createElement(Warning_1.default, { color: "error" }),
|
38
|
+
react_1.default.createElement(Typography_1.default, { color: "error", ml: 2, fontWeight: "bold" }, "Nepodporovan\u00E1 sekce")));
|
39
|
+
};
|
40
|
+
exports.FormContent = FormContent;
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybUNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGFiL0NvbnRlbnRCdWlsZGVyUGFnZS9jb21wb25lbnRzL0Zvcm1Db250ZW50LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUEwQjtBQUMxQixxREFBNEM7QUFDNUMsMERBQW9DO0FBQ3BDLHdFQUFzRDtBQUN0RCx3RUFBa0Q7QUFPbEQsSUFBTSxVQUFVLEdBQUcsVUFBQyxRQUFpQyxFQUFFLElBQVk7SUFDL0QsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQTNCLENBQTJCLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQUM7QUFFSyxJQUFNLFdBQVcsR0FBK0IsVUFBQyxLQUFLO0lBQ2pELElBQUEsaUJBQWlCLEdBQTRCLEtBQUssa0JBQWpDLEVBQUUsUUFBUSxHQUFrQixLQUFLLFNBQXZCLEVBQUUsSUFBSSxHQUFZLEtBQUssS0FBakIsRUFBRSxLQUFLLEdBQUssS0FBSyxNQUFWLENBQVc7SUFFbkQsSUFBQSxLQUFLLEdBQUssSUFBQSwyQkFBUSxFQUFDLFVBQUcsSUFBSSxVQUFPLENBQUMsTUFBN0IsQ0FBOEI7SUFFM0MsSUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVsRSxJQUFJLGNBQWMsRUFBRTtRQUNoQixPQUFPLENBQ0gsOEJBQUMsY0FBYyxJQUNYLElBQUksRUFBRSxVQUFHLElBQUksYUFBVSxFQUN2QixRQUFRLEVBQUUsUUFBUSxFQUNsQixLQUFLLEVBQUUsS0FBSyxFQUNaLGNBQWMsd0JBQ1AsS0FBSyxLQUNSLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBQyxDQUFDLElBQUssT0FBQSxDQUFDO29CQUNuQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUk7b0JBQ3pCLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSztpQkFDaEMsQ0FBQyxFQUhvQyxDQUdwQyxDQUFDLE1BRVQsQ0FDTCxDQUFDO0tBQ0w7SUFFRCxPQUFPLENBQ0gsOEJBQUMsYUFBRyxJQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxjQUFjLEVBQUMsUUFBUSxFQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2hFLDhCQUFDLGlCQUFXLElBQUMsS0FBSyxFQUFDLE9BQU8sR0FBRztRQUM3Qiw4QkFBQyxvQkFBVSxJQUFDLEtBQUssRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUMsTUFBTSwrQkFFckMsQ0FDWCxDQUNULENBQUM7QUFDTixDQUFDLENBQUM7QUFoQ1csUUFBQSxXQUFXLGVBZ0N0QiJ9
|
@@ -0,0 +1,55 @@
|
|
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.FormRootFields = void 0;
|
7
|
+
var Typography_1 = __importDefault(require("@mui/material/Typography"));
|
8
|
+
var Grid_1 = __importDefault(require("@mui/material/Grid"));
|
9
|
+
var Checkbox_1 = require("../../../forms/components/Checkbox");
|
10
|
+
var TextInput_1 = require("../../../forms/components/TextInput");
|
11
|
+
var Paper_1 = __importDefault(require("@mui/material/Paper"));
|
12
|
+
var react_1 = __importDefault(require("react"));
|
13
|
+
var Divider_1 = __importDefault(require("@mui/material/Divider"));
|
14
|
+
var DateTimePicker_1 = require("../../../forms/components/DateTimePicker");
|
15
|
+
var FileInput_1 = require("../../../ui/FileInput");
|
16
|
+
var SelectDeprecated_1 = require("../../../forms/components/SelectDeprecated");
|
17
|
+
var options = [
|
18
|
+
{ id: "PRIVATE", label: "Privátní" },
|
19
|
+
{ id: "PUBLIC_WITHOUT_SITEMAP", label: "Veřejný bez sitemapy" },
|
20
|
+
{ id: "PUBLIC", label: "Veřejný" },
|
21
|
+
];
|
22
|
+
var FormRootFields = function () {
|
23
|
+
return (react_1.default.createElement(Paper_1.default, null,
|
24
|
+
react_1.default.createElement(Typography_1.default, { variant: "h3", pt: 2, px: 2 }, "Z\u00E1kladn\u00ED nastaven\u00ED"),
|
25
|
+
react_1.default.createElement(Grid_1.default, { container: true, spacing: 2, p: 2 },
|
26
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12, md: 6 },
|
27
|
+
react_1.default.createElement(Checkbox_1.Checkbox, { name: "active", label: "Aktivn\u00ED" })),
|
28
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12, md: 6 },
|
29
|
+
react_1.default.createElement(SelectDeprecated_1.SelectDeprecated, { name: "visibilityLevel", label: "Viditelnost", options: options, required: true })),
|
30
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
31
|
+
react_1.default.createElement(TextInput_1.TextInput, { name: "name", label: "N\u00E1zev", required: true })),
|
32
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
33
|
+
react_1.default.createElement(DateTimePicker_1.DateTimePicker, { name: "publishedAt", label: "Datum publikace", required: true })),
|
34
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
35
|
+
react_1.default.createElement(TextInput_1.TextInput, { name: "author", label: "Autor" })),
|
36
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
37
|
+
react_1.default.createElement(FileInput_1.FileInput, { disabled: true, id: "image", value: null, onChange: function () { return null; }, name: "image", label: "Obr\u00E1zek" }))),
|
38
|
+
react_1.default.createElement(Divider_1.default, null),
|
39
|
+
react_1.default.createElement(Typography_1.default, { variant: "h3", pt: 2, px: 2 }, "SEO"),
|
40
|
+
react_1.default.createElement(Grid_1.default, { container: true, spacing: 2, p: 2 },
|
41
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
42
|
+
react_1.default.createElement(TextInput_1.TextInput, { name: "seo.name", label: "N\u00E1zev" })),
|
43
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
44
|
+
react_1.default.createElement(TextInput_1.TextInput, { name: "seo.title", label: "Nadpis" })),
|
45
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
46
|
+
react_1.default.createElement(TextInput_1.TextInput, { name: "seo.description", label: "Popis" })),
|
47
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
48
|
+
react_1.default.createElement(TextInput_1.TextInput, { name: "seo.ogTitle", label: "OG nadpis" })),
|
49
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
50
|
+
react_1.default.createElement(TextInput_1.TextInput, { name: "seo.ogDescription", label: "OG popis" })),
|
51
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12 },
|
52
|
+
react_1.default.createElement(FileInput_1.FileInput, { disabled: true, id: "seo.ogImage", value: null, onChange: function () { return null; }, name: "seo.ogImage", label: "OG obr\u00E1zek" })))));
|
53
|
+
};
|
54
|
+
exports.FormRootFields = FormRootFields;
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybVJvb3RGaWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGFiL0NvbnRlbnRCdWlsZGVyUGFnZS9jb21wb25lbnRzL0Zvcm1Sb290RmllbGRzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3RUFBa0Q7QUFDbEQsNERBQXNDO0FBQ3RDLCtEQUE4RDtBQUM5RCxpRUFBZ0U7QUFDaEUsOERBQXdDO0FBQ3hDLGdEQUEwQjtBQUMxQixrRUFBNEM7QUFDNUMsMkVBQTBFO0FBQzFFLG1EQUFrRDtBQUNsRCwrRUFBOEU7QUFHOUUsSUFBTSxPQUFPLEdBQWtEO0lBQzNELEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO0lBQ3BDLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRTtJQUMvRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtDQUNyQyxDQUFDO0FBRUssSUFBTSxjQUFjLEdBQWE7SUFDcEMsT0FBTyxDQUNILDhCQUFDLGVBQUs7UUFDRiw4QkFBQyxvQkFBVSxJQUFDLE9BQU8sRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyx3Q0FFeEI7UUFDYiw4QkFBQyxjQUFJLElBQUMsU0FBUyxRQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDNUIsOEJBQUMsY0FBSSxJQUFDLElBQUksUUFBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUNwQiw4QkFBQyxtQkFBUSxJQUFDLElBQUksRUFBQyxRQUFRLEVBQUMsS0FBSyxFQUFDLGNBQVMsR0FBRyxDQUN2QztZQUNQLDhCQUFDLGNBQUksSUFBQyxJQUFJLFFBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsOEJBQUMs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
|
@@ -0,0 +1,41 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
exports.Wysiwyg = void 0;
|
18
|
+
var react_1 = __importDefault(require("react"));
|
19
|
+
var Box_1 = __importDefault(require("@mui/material/Box"));
|
20
|
+
var Editor_1 = require("@uxf/wysiwyg/Editor");
|
21
|
+
var react_final_form_1 = require("react-final-form");
|
22
|
+
var Paper_1 = __importDefault(require("@mui/material/Paper"));
|
23
|
+
var ContentHeader_1 = require("../ContentHeader");
|
24
|
+
var Wysiwyg = function (props) {
|
25
|
+
var name = props.name;
|
26
|
+
var input = (0, react_final_form_1.useField)("".concat(name, ".content"), { allowNull: true }).input;
|
27
|
+
return (react_1.default.createElement(Paper_1.default, null,
|
28
|
+
react_1.default.createElement(ContentHeader_1.ContentHeader, __assign({}, props)),
|
29
|
+
react_1.default.createElement(Box_1.default, { sx: { "> .MuiPaper-root": { border: "none" } } },
|
30
|
+
react_1.default.createElement(Editor_1.WysiwygEditor, { value: input.value, onChange: input.onChange, imageNamespace: "default" // TODO
|
31
|
+
, imageUrlClient: function () { return ""; }, onUploadImage: function () {
|
32
|
+
// TODO
|
33
|
+
return Promise.resolve({ id: 1, name: "", namespace: "", type: "", url: "", extension: "", uuid: "" });
|
34
|
+
} }))));
|
35
|
+
};
|
36
|
+
exports.Wysiwyg = Wysiwyg;
|
37
|
+
exports.Wysiwyg.getConfig = function () { return ({
|
38
|
+
type: "wysiwyg",
|
39
|
+
label: "Strukturovaný text",
|
40
|
+
}); };
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV3lzaXd5Zy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9sYWIvQ29udGVudEJ1aWxkZXJQYWdlL2NvbnRlbnQvV3lzaXd5Zy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBMEI7QUFFMUIsMERBQW9DO0FBQ3BDLDhDQUFvRDtBQUNwRCxxREFBNEM7QUFDNUMsOERBQXdDO0FBQ3hDLGtEQUFpRDtBQUkxQyxJQUFNLE9BQU8sR0FBcUMsVUFBQyxLQUFLO0lBQ25ELElBQUEsSUFBSSxHQUFLLEtBQUssS0FBVixDQUFXO0lBQ2YsSUFBQSxLQUFLLEdBQUssSUFBQSwyQkFBUSxFQUFDLFVBQUcsSUFBSSxhQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBckQsQ0FBc0Q7SUFFbkUsT0FBTyxDQUNILDhCQUFDLGVBQUs7UUFDRiw4QkFBQyw2QkFBYSxlQUFLLEtBQUssRUFBSTtRQUM1Qiw4QkFBQyxhQUFHLElBQUMsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDL0MsOEJBQUMsc0JBQWEsSUFDVixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFDbEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQ3hCLGNBQWMsRUFBQyxTQUFTLENBQUMsT0FBTztrQkFDaEMsY0FBYyxFQUFFLGNBQU0sT0FBQSxFQUFFLEVBQUYsQ0FBRSxFQUN4QixhQUFhLEVBQUU7b0JBQ1gsT0FBTztvQkFDUCxPQUFBLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7Z0JBQS9GLENBQStGLEdBRXJHLENBQ0EsQ0FDRixDQUNYLENBQUM7QUFDTixDQUFDLENBQUM7QUFyQlcsUUFBQSxPQUFPLFdBcUJsQjtBQUVGLGVBQU8sQ0FBQyxTQUFTLEdBQUcsY0FBTSxPQUFBLENBQUM7SUFDdkIsSUFBSSxFQUFFLFNBQVM7SUFDZixLQUFLLEVBQUUsb0JBQW9CO0NBQzlCLENBQUMsRUFId0IsQ0FHeEIsQ0FBQyJ9
|
@@ -0,0 +1,16 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
5
|
+
}) : (function(o, m, k, k2) {
|
6
|
+
if (k2 === undefined) k2 = k;
|
7
|
+
o[k2] = m[k];
|
8
|
+
}));
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
11
|
+
};
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
13
|
+
__exportStar(require("./types"), exports);
|
14
|
+
__exportStar(require("./ContentBuilder"), exports);
|
15
|
+
__exportStar(require("./ContentHeader"), exports);
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFiL0NvbnRlbnRCdWlsZGVyUGFnZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsbURBQWlDO0FBQ2pDLGtEQUFnQyJ9
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import React, { ReactNode } from "react";
|
2
|
+
import { MenuItemProps } from "@mui/material/MenuItem";
|
3
|
+
import { NextPageContext } from "next";
|
4
|
+
import { FieldInputProps, FormProps } from "react-final-form";
|
5
|
+
export interface ContentProps {
|
6
|
+
name: string;
|
7
|
+
index: number;
|
8
|
+
onRemove: () => void;
|
9
|
+
TypeInputProps: FieldInputProps<string> & {
|
10
|
+
options: MenuItemProps[];
|
11
|
+
};
|
12
|
+
}
|
13
|
+
export declare type ContentComponent<T extends Content<string, any>> = React.FC<ContentProps> & {
|
14
|
+
getConfig: () => {
|
15
|
+
type: T["type"];
|
16
|
+
label: ReactNode;
|
17
|
+
};
|
18
|
+
};
|
19
|
+
export interface ContentBuilderConfig<Contents extends Content<string, any>> {
|
20
|
+
contentComponents: ContentComponent<any>[];
|
21
|
+
onSubmit: FormProps<RootContent<Contents>>["onSubmit"];
|
22
|
+
initialValues: RootContent<Contents> | ((ctx: NextPageContext) => Promise<RootContent<Contents>>);
|
23
|
+
allowedRoles?: string[];
|
24
|
+
ui: {
|
25
|
+
Layout?: React.FC;
|
26
|
+
};
|
27
|
+
}
|
28
|
+
export interface Content<Type extends string, Content> {
|
29
|
+
type: Type;
|
30
|
+
content: Content;
|
31
|
+
}
|
32
|
+
export declare type VisibilityLevel = "PUBLIC" | "PUBLIC_WITHOUT_SITEMAP" | "PRIVATE";
|
33
|
+
export declare type RootContent<T> = {
|
34
|
+
active: boolean;
|
35
|
+
visibilityLevel: VisibilityLevel;
|
36
|
+
name: string;
|
37
|
+
publishedAt: string;
|
38
|
+
author: string;
|
39
|
+
image: any;
|
40
|
+
seo?: {
|
41
|
+
name?: string;
|
42
|
+
title?: string;
|
43
|
+
description?: string;
|
44
|
+
ogTitle?: string;
|
45
|
+
ogDescription?: string;
|
46
|
+
ogImage?: any;
|
47
|
+
};
|
48
|
+
content: T[];
|
49
|
+
};
|
@@ -0,0 +1,3 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFiL0NvbnRlbnRCdWlsZGVyUGFnZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@uxf/cms",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.3.0",
|
4
4
|
"description": "UXF Cms",
|
5
5
|
"author": "UXFans <dev@uxf.cz>",
|
6
6
|
"homepage": "https://gitlab.com/uxf-npm/cms#readme",
|
@@ -52,6 +52,7 @@
|
|
52
52
|
"@uxf/data-grid": "^3.1.1",
|
53
53
|
"@uxf/eslint-config": "^1.1.0",
|
54
54
|
"@uxf/router": "^1.7.0",
|
55
|
+
"@uxf/wysiwyg": "^1.0.0-beta.3",
|
55
56
|
"axios": "^0.21.1",
|
56
57
|
"axios-hooks": "^2.7.0",
|
57
58
|
"eslint": "^7.32.0",
|
@@ -48,7 +48,7 @@ var Tooltip_1 = __importDefault(require("@mui/material/Tooltip"));
|
|
48
48
|
var Typography_1 = __importDefault(require("@mui/material/Typography"));
|
49
49
|
var react_1 = __importDefault(require("react"));
|
50
50
|
var FileInput = function (props) {
|
51
|
-
var id = props.id, name = props.name, label = props.label, placeholder = props.placeholder, value = props.value, onChange = props.onChange;
|
51
|
+
var id = props.id, name = props.name, label = props.label, placeholder = props.placeholder, value = props.value, onChange = props.onChange, disabled = props.disabled;
|
52
52
|
var handleChange = function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
53
53
|
var files;
|
54
54
|
var _a;
|
@@ -74,7 +74,7 @@ var FileInput = function (props) {
|
|
74
74
|
height: "40px",
|
75
75
|
alignItems: "center",
|
76
76
|
"&:hover": {
|
77
|
-
borderColor: "#212121",
|
77
|
+
borderColor: disabled ? undefined : "#212121",
|
78
78
|
},
|
79
79
|
} },
|
80
80
|
react_1.default.createElement("input", { type: "file", id: id, name: name, style: { display: "none" }, onChange: handleChange }),
|
@@ -83,7 +83,7 @@ var FileInput = function (props) {
|
|
83
83
|
react_1.default.createElement(Typography_1.default, { flex: 1, color: function (theme) { return (value ? undefined : theme.palette.text.disabled); }, textOverflow: "ellipsis", minWidth: 0, whiteSpace: "nowrap", overflow: "hidden", sx: { lineBreak: "anywhere" }, pr: 1 }, value ? value.name : placeholder),
|
84
84
|
value ? (react_1.default.createElement(Tooltip_1.default, { title: "Smazat" },
|
85
85
|
react_1.default.createElement(IconButton_1.default, { onClick: function () { return onChange(null); } },
|
86
|
-
react_1.default.createElement(Clear_1.default, null)))) : (react_1.default.createElement(Button_1.default, { component: "label", size: "small", variant: "contained", htmlFor: id }, "Vybrat soubor")))));
|
86
|
+
react_1.default.createElement(Clear_1.default, null)))) : (react_1.default.createElement(Button_1.default, { disabled: disabled, component: "label", size: "small", variant: "contained", htmlFor: id }, "Vybrat soubor")))));
|
87
87
|
};
|
88
88
|
exports.FileInput = FileInput;
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VpL0ZpbGVJbnB1dC9GaWxlSW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9FQUFrRDtBQUNsRCwwREFBb0M7QUFDcEMsZ0VBQTBDO0FBQzFDLHdFQUFrRDtBQUNsRCxrRUFBNEM7QUFDNUMsd0VBQWtEO0FBQ2xELGdEQUEwQjtBQUduQixJQUFNLFNBQVMsR0FBNkIsVUFBQyxLQUFLO0lBQzdDLElBQUEsRUFBRSxHQUEwRCxLQUFLLEdBQS9ELEVBQUUsSUFBSSxHQUFvRCxLQUFLLEtBQXpELEVBQUUsS0FBSyxHQUE2QyxLQUFLLE1BQWxELEVBQUUsV0FBVyxHQUFnQyxLQUFLLFlBQXJDLEVBQUUsS0FBSyxHQUF5QixLQUFLLE1BQTlCLEVBQUUsUUFBUSxHQUFlLEtBQUssU0FBcEIsRUFBRSxRQUFRLEdBQUssS0FBSyxTQUFWLENBQVc7SUFFMUUsSUFBTSxZQUFZLEdBQUcsVUFBTyxDQUFzQzs7OztZQUM5RCxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFTixLQUFLLEdBQUcsTUFBQSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssbUNBQUksRUFBRSxDQUFDO1lBRW5DLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2xCLG9DQUFvQztnQkFDcEMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7YUFDcEM7WUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNwQixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEI7OztTQUNKLENBQUM7SUFFRiwrQ0FBK0M7SUFFL0MsT0FBTyxDQUNIO1FBQ0ksOEJBQUMsYUFBRyxJQUNBLFFBQVEsRUFBQyxVQUFVLEVBQ25CLE9BQU8sRUFBQyxNQUFNLEVBQ2QsYUFBYSxFQUFDLEtBQUssRUFDbkIsRUFBRSxFQUFFLEdBQUcsRUFDUCxFQUFFLEVBQUUsQ0FBQyxFQUNMLEVBQUUsRUFBRTtnQkFDQSxZQUFZLEVBQUUsS0FBSztnQkFDbkIsTUFBTSxFQUFFLG1CQUFtQjtnQkFDM0IsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLFNBQVMsRUFBRTtvQkFDUCxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7aUJBQ2hEO2FBQ0o7WUFFRCx5Q0FBTyxJQUFJLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksR0FBSTtZQUM3Riw4QkFBQyxhQUFHLElBQUMsUUFBUSxFQUFDLFVBQVUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUU7Z0JBQ2pGLDhCQUFDLG9CQUFVLElBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxLQUFLLEVBQUMsaUJBQWlCLElBQy9DLEtBQUssQ0FDRyxDQUNYO1lBQ04sOEJBQUMsb0JBQVUsSUFDUCxJQUFJLEVBQUUsQ0FBQyxFQUNQLEtBQUssRUFBRSxVQUFDLEtBQUssSUFBSyxPQUFBLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFqRCxDQUFpRCxFQUNuRSxZQUFZLEVBQUMsVUFBVSxFQUN2QixRQUFRLEVBQUUsQ0FBQyxFQUNYLFVBQVUsRUFBQyxRQUFRLEVBQ25CLFFBQVEsRUFBQyxRQUFRLEVBQ2pCLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFDN0IsRUFBRSxFQUFFLENBQUMsSUFFSixLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FDeEI7WUFDWixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ0wsOEJBQUMsaUJBQU8sSUFBQyxLQUFLLEVBQUMsUUFBUTtnQkFDbkIsOEJBQUMsb0JBQVUsSUFBQyxPQUFPLEVBQUUsY0FBTSxPQUFBLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBZCxDQUFjO29CQUNyQyw4QkFBQyxlQUFTLE9BQUcsQ0FDSixDQUNQLENBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FDQSw4QkFBQyxnQkFBTSxJQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLE9BQU8sRUFBQyxJQUFJLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxXQUFXLEVBQUMsT0FBTyxFQUFFLEVBQUUsb0JBRWpGLENBQ1osQ0FDQyxDQUNQLENBQ04sQ0FBQztBQUNOLENBQUMsQ0FBQztBQXZFVyxRQUFBLFNBQVMsYUF1RXBCIn0=
|