@uxf/cms 11.36.0 → 11.38.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/cms",
3
- "version": "11.36.0",
3
+ "version": "11.38.0",
4
4
  "description": "UXF Cms",
5
5
  "author": "UXFans <dev@uxf.cz>",
6
6
  "homepage": "https://gitlab.com/uxf-npm/cms#readme",
@@ -32,11 +32,11 @@
32
32
  "@redux-devtools/extension": "3.3.0",
33
33
  "@uxf/core": "11.35.0",
34
34
  "@uxf/core-react": "11.36.0",
35
- "@uxf/data-grid": "11.36.0",
36
- "@uxf/form": "11.36.0",
35
+ "@uxf/data-grid": "11.38.0",
36
+ "@uxf/form": "11.37.0",
37
37
  "@uxf/router": "11.32.0",
38
- "@uxf/ui": "11.36.0",
39
- "@uxf/wysiwyg": "11.36.0",
38
+ "@uxf/ui": "11.37.0",
39
+ "@uxf/wysiwyg": "11.37.0",
40
40
  "axios": "1.7.5",
41
41
  "axios-hooks": "5.0.2",
42
42
  "es6-error": "4.1.1",
@@ -1,11 +1,14 @@
1
- import { FC, ReactNode } from "react";
1
+ import React, { Dispatch, ReactNode, SetStateAction } from "react";
2
2
  import { Control } from "react-hook-form";
3
+ import { ContentBuilderTabs } from "../constants";
3
4
  import { ContentBuilderConfig } from "../types";
4
5
  interface Props {
5
- config: ContentBuilderConfig<any>;
6
- id: number | null;
6
+ activeTab: ContentBuilderTabs;
7
7
  children?: ReactNode;
8
+ config: ContentBuilderConfig<any>;
8
9
  control: Control<any>;
10
+ id: number | null;
11
+ setActiveTab: Dispatch<SetStateAction<ContentBuilderTabs>>;
9
12
  }
10
- export declare const FormRootFields: FC<Props>;
13
+ export declare function FormRootFields(props: Props): React.JSX.Element;
11
14
  export {};
@@ -1,29 +1,10 @@
1
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;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.FormRootFields = void 0;
6
+ exports.FormRootFields = FormRootFields;
7
+ const hide_1 = require("@uxf/core-react/components/hide");
27
8
  const is_not_nil_1 = require("@uxf/core/utils/is-not-nil");
28
9
  const checkbox_input_1 = require("@uxf/form/checkbox-input");
29
10
  const combobox_1 = require("@uxf/form/combobox/combobox");
@@ -34,57 +15,64 @@ const select_1 = require("@uxf/form/select");
34
15
  const text_input_1 = require("@uxf/form/text-input");
35
16
  const textarea_1 = require("@uxf/form/textarea");
36
17
  const tabs_1 = require("@uxf/ui/tabs");
37
- const react_1 = __importStar(require("react"));
18
+ const react_1 = __importDefault(require("react"));
38
19
  const api_1 = require("../../../api");
39
20
  const on_upload_file_1 = require("../../../forms/utils/on-upload-file");
21
+ const constants_1 = require("../constants");
40
22
  const options = [
41
23
  { id: "PRIVATE", label: "Privátní" },
42
24
  { id: "PUBLIC_WITHOUT_SITEMAP", label: "Veřejný bez sitemapy" },
43
25
  { id: "PUBLIC", label: "Veřejný" },
44
26
  ];
45
- const FormRootFields = (props) => {
27
+ function FormRootFields(props) {
46
28
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
47
- // eslint-disable-next-line react/destructuring-assignment
48
- const { children, config, id, control } = props;
49
- const [activeTab, setActiveTab] = (0, react_1.useState)("basic");
50
29
  return (react_1.default.createElement("div", { className: "pb-2 pt-4" },
51
- react_1.default.createElement(tabs_1.Tabs, { onChange: setActiveTab, value: activeTab },
52
- react_1.default.createElement(tabs_1.Tabs.Panel, { label: "Z\u00E1kladn\u00ED", name: "basic" },
30
+ react_1.default.createElement(tabs_1.Tabs, { onChange: props.setActiveTab, value: props.activeTab },
31
+ react_1.default.createElement(tabs_1.Tabs.Panel, { isAlwaysMounted: true, label: "Z\u00E1kladn\u00ED", name: constants_1.ContentBuilderTabs.Basic },
53
32
  react_1.default.createElement("div", { className: "space-y-8 px-4 pb-4" },
54
- config.allowedTypes && (react_1.default.createElement("div", null,
55
- react_1.default.createElement(select_1.Select, { control: control, isReadOnly: (0, is_not_nil_1.isNotNil)(id), isRequired: true, label: "Typ", name: "type", options: config.allowedTypes }))),
33
+ props.config.allowedTypes && (react_1.default.createElement("div", null,
34
+ react_1.default.createElement(select_1.Select, { control: props.control, isReadOnly: (0, is_not_nil_1.isNotNil)(props.id), isRequired: true, label: "Typ", name: "type", options: props.config.allowedTypes }))),
56
35
  react_1.default.createElement("div", null,
57
- react_1.default.createElement(text_input_1.TextInput, { control: control, isRequired: true, label: "Nadpis", name: "name" })),
58
- !((_a = config.hide) === null || _a === void 0 ? void 0 : _a.publishedAt) && (react_1.default.createElement("div", null,
59
- react_1.default.createElement(datetime_picker_input_1.DatetimePickerInput, { control: control, isRequired: true, label: "Datum publikace", name: "publishedAt" }))),
60
- !((_b = config.hide) === null || _b === void 0 ? void 0 : _b.perex) && (react_1.default.createElement("div", null,
61
- react_1.default.createElement(textarea_1.Textarea, { control: control, label: "Perex", name: "perex", rows: 3 }))),
62
- !((_c = config.hide) === null || _c === void 0 ? void 0 : _c.author) && (react_1.default.createElement("div", null,
63
- react_1.default.createElement(combobox_1.Combobox, { control: control, label: "Autor", loadOptions: (term) => (0, api_1.autocomplete)(null, { name: "content-author" }, { term }).then((r) => r.data), name: "author" }))),
64
- !((_d = config.hide) === null || _d === void 0 ? void 0 : _d.category) && (react_1.default.createElement("div", null,
65
- react_1.default.createElement(combobox_1.Combobox, { control: control, label: "Kategorie", loadOptions: (term) => (0, api_1.autocomplete)(null, { name: "content-category" }, { term }).then((r) => r.data), name: "category" }))),
36
+ react_1.default.createElement(text_input_1.TextInput, { control: props.control, isRequired: true, label: "Nadpis", name: "name", type: "text" })),
37
+ react_1.default.createElement(hide_1.Hide, { when: Boolean((_a = props.config.hide) === null || _a === void 0 ? void 0 : _a.publishedAt) },
38
+ react_1.default.createElement("div", null,
39
+ react_1.default.createElement(datetime_picker_input_1.DatetimePickerInput, { control: props.control, isRequired: true, label: "Datum publikace", name: "publishedAt" }))),
40
+ react_1.default.createElement(hide_1.Hide, { when: Boolean((_b = props.config.hide) === null || _b === void 0 ? void 0 : _b.perex) },
41
+ react_1.default.createElement("div", null,
42
+ react_1.default.createElement(textarea_1.Textarea, { control: props.control, label: "Perex", name: "perex", rows: 3 }))),
43
+ react_1.default.createElement(hide_1.Hide, { when: Boolean((_c = props.config.hide) === null || _c === void 0 ? void 0 : _c.author) },
44
+ react_1.default.createElement("div", null,
45
+ react_1.default.createElement(combobox_1.Combobox, { control: props.control, label: "Autor", loadOptions: (term) => (0, api_1.autocomplete)(null, { name: "content-author" }, { term }).then((r) => r.data), name: "author" }))),
46
+ react_1.default.createElement(hide_1.Hide, { when: Boolean((_d = props.config.hide) === null || _d === void 0 ? void 0 : _d.category) },
47
+ react_1.default.createElement("div", null,
48
+ 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" }))),
66
49
  react_1.default.createElement("div", null,
67
- react_1.default.createElement(multi_combobox_1.MultiCombobox, { control: control, label: "Tagy", loadOptions: (term) => (0, api_1.autocomplete)(null, { name: "content-tag" }, { term }).then((r) => r.data), name: "tags" })),
68
- !((_e = config.hide) === null || _e === void 0 ? void 0 : _e.image) && (react_1.default.createElement("div", null,
69
- react_1.default.createElement(file_input_1.FileInput, { control: control, id: "image", label: "Hlavn\u00ED obr\u00E1zek", name: "image", onUploadFile: on_upload_file_1.onUploadFile }))),
50
+ 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" })),
51
+ react_1.default.createElement(hide_1.Hide, { when: Boolean((_e = props.config.hide) === null || _e === void 0 ? void 0 : _e.image) },
52
+ react_1.default.createElement("div", null,
53
+ 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 }))),
70
54
  react_1.default.createElement("div", null,
71
- react_1.default.createElement(checkbox_input_1.CheckboxInput, { control: control, label: "Aktivn\u00ED", name: "active" })),
55
+ react_1.default.createElement(checkbox_input_1.CheckboxInput, { control: props.control, label: "Aktivn\u00ED", name: "active" })),
72
56
  react_1.default.createElement("div", null,
73
- react_1.default.createElement(select_1.Select, { control: control, isRequired: true, label: "Viditelnost", name: "visibilityLevel", options: options })))),
74
- react_1.default.createElement(tabs_1.Tabs.Panel, { label: "SEO", name: "seo" },
57
+ react_1.default.createElement(select_1.Select, { control: props.control, isRequired: true, label: "Viditelnost", name: "visibilityLevel", options: options })))),
58
+ react_1.default.createElement(tabs_1.Tabs.Panel, { isAlwaysMounted: true, label: "SEO", name: constants_1.ContentBuilderTabs.Seo },
75
59
  react_1.default.createElement("div", { className: "space-y-8 px-4 pb-4" },
76
60
  react_1.default.createElement("div", null,
77
- react_1.default.createElement(text_input_1.TextInput, { control: control, helperText: "Slug = unik\u00E1tn\u00ED koncovka URL adresy", label: "Slug", name: "seo.name" })),
78
- !((_g = (_f = config.hide) === null || _f === void 0 ? void 0 : _f.seo) === null || _g === void 0 ? void 0 : _g.title) && (react_1.default.createElement("div", null,
79
- react_1.default.createElement(text_input_1.TextInput, { control: control, label: "Nadpis", name: "seo.title" }))),
80
- !((_j = (_h = config.hide) === null || _h === void 0 ? void 0 : _h.seo) === null || _j === void 0 ? void 0 : _j.description) && (react_1.default.createElement("div", null,
81
- react_1.default.createElement(text_input_1.TextInput, { control: control, label: "Popis", name: "seo.description" }))),
82
- !((_l = (_k = config.hide) === null || _k === void 0 ? void 0 : _k.seo) === null || _l === void 0 ? void 0 : _l.ogTitle) && (react_1.default.createElement("div", null,
83
- react_1.default.createElement(text_input_1.TextInput, { control: control, helperText: "Nadpis kter\u00FD bude zobrazen p\u0159i sd\u00EDlen\u00ED na Facebooku, ...", label: "OG nadpis", name: "seo.ogTitle" }))),
84
- !((_o = (_m = config.hide) === null || _m === void 0 ? void 0 : _m.seo) === null || _o === void 0 ? void 0 : _o.ogDescription) && (react_1.default.createElement("div", null,
85
- react_1.default.createElement(text_input_1.TextInput, { control: control, helperText: "Popis kter\u00FD bude zobrazen p\u0159i sd\u00EDlen\u00ED na Facebooku, ...", label: "OG popis", name: "seo.ogDescription" }))),
86
- !((_q = (_p = config.hide) === null || _p === void 0 ? void 0 : _p.seo) === null || _q === void 0 ? void 0 : _q.ogImage) && (react_1.default.createElement("div", null,
87
- react_1.default.createElement(file_input_1.FileInput, { control: 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 })))))),
88
- children));
89
- };
90
- exports.FormRootFields = FormRootFields;
61
+ react_1.default.createElement(text_input_1.TextInput, { control: props.control, helperText: "Slug = unik\u00E1tn\u00ED koncovka URL adresy", isRequired: true, label: "Slug", name: "seo.name", type: "text" })),
62
+ react_1.default.createElement(hide_1.Hide, { when: Boolean((_g = (_f = props.config.hide) === null || _f === void 0 ? void 0 : _f.seo) === null || _g === void 0 ? void 0 : _g.title) },
63
+ react_1.default.createElement("div", null,
64
+ react_1.default.createElement(text_input_1.TextInput, { control: props.control, label: "Nadpis", name: "seo.title", type: "text" }))),
65
+ react_1.default.createElement(hide_1.Hide, { when: Boolean((_j = (_h = props.config.hide) === null || _h === void 0 ? void 0 : _h.seo) === null || _j === void 0 ? void 0 : _j.description) },
66
+ react_1.default.createElement("div", null,
67
+ react_1.default.createElement(text_input_1.TextInput, { control: props.control, label: "Popis", name: "seo.description", type: "text" }))),
68
+ react_1.default.createElement(hide_1.Hide, { when: Boolean((_l = (_k = props.config.hide) === null || _k === void 0 ? void 0 : _k.seo) === null || _l === void 0 ? void 0 : _l.ogTitle) },
69
+ react_1.default.createElement("div", null,
70
+ react_1.default.createElement(text_input_1.TextInput, { control: props.control, helperText: "Nadpis kter\u00FD bude zobrazen p\u0159i sd\u00EDlen\u00ED na Facebooku, ...", label: "OG nadpis", name: "seo.ogTitle", type: "text" }))),
71
+ 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) },
72
+ react_1.default.createElement("div", null,
73
+ 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" }))),
74
+ 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) },
75
+ react_1.default.createElement("div", null,
76
+ 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 })))))),
77
+ props.children));
78
+ }
@@ -1,10 +1,10 @@
1
1
  import { FormProps as UXFFormProps } from "@uxf/form/form";
2
- import { FC } from "react";
2
+ import React from "react";
3
3
  import { DefaultValues } from "react-hook-form";
4
4
  import { ContentBuilderConfig, RootContent } from "../types";
5
- export interface FormProps extends Omit<UXFFormProps<RootContent<any>>, "children" | "formApi" | "id" | "omitSubmitInput"> {
5
+ export interface FormProps extends Omit<UXFFormProps<RootContent<any>>, "children" | "formApi" | "id" | "shouldOmitSubmitInput"> {
6
6
  config: ContentBuilderConfig<any>;
7
7
  id: number | null;
8
8
  defaultValues?: DefaultValues<any>;
9
9
  }
10
- export declare const Form: FC<FormProps>;
10
+ export declare function Form(props: FormProps): React.JSX.Element;
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Form = void 0;
26
+ exports.Form = Form;
27
27
  const form_1 = require("@uxf/form/form");
28
28
  const rem_1 = require("@uxf/styles/units/rem");
29
29
  const react_1 = __importStar(require("react"));
@@ -33,10 +33,28 @@ const constants_1 = require("../constants");
33
33
  const content_field_1 = require("../content-field");
34
34
  const details_visibility_context_1 = require("../context/details-visibility-context");
35
35
  const form_root_fields_1 = require("./form-root-fields");
36
- const Form = (props) => {
37
- const formApi = (0, react_hook_form_1.useForm)({ defaultValues: props.defaultValues });
36
+ // TODO: Mapování inputů na taby, asi by šlo udělat lépe
37
+ const INPUT_TAB_MAP = {
38
+ active: constants_1.ContentBuilderTabs.Basic,
39
+ author: constants_1.ContentBuilderTabs.Basic,
40
+ category: constants_1.ContentBuilderTabs.Basic,
41
+ content: constants_1.ContentBuilderTabs.Basic,
42
+ image: constants_1.ContentBuilderTabs.Basic,
43
+ name: constants_1.ContentBuilderTabs.Basic,
44
+ perex: constants_1.ContentBuilderTabs.Basic,
45
+ publishedAt: constants_1.ContentBuilderTabs.Basic,
46
+ seo: constants_1.ContentBuilderTabs.Seo,
47
+ tags: constants_1.ContentBuilderTabs.Basic,
48
+ type: constants_1.ContentBuilderTabs.Basic,
49
+ visibilityLevel: constants_1.ContentBuilderTabs.Basic,
50
+ };
51
+ function Form(props) {
52
+ const formApi = (0, react_hook_form_1.useForm)({
53
+ defaultValues: props.defaultValues,
54
+ });
38
55
  const viewportHeight = (0, use_viewport_height_1.useViewportHeight)(true);
39
56
  const [headerHeight, setHeaderHeight] = (0, react_1.useState)(0);
57
+ const [activeTab, setActiveTab] = (0, react_1.useState)(constants_1.ContentBuilderTabs.Basic);
40
58
  (0, react_1.useEffect)(() => {
41
59
  const header = document.getElementById(constants_1.CONTENT_BUILDER_PAGE_HEADER_ID);
42
60
  if (header) {
@@ -44,12 +62,20 @@ const Form = (props) => {
44
62
  }
45
63
  }, []);
46
64
  const height = viewportHeight === "100vh" ? viewportHeight : (0, rem_1.rem)(viewportHeight);
47
- return (react_1.default.createElement(form_1.Form, { formApi: formApi, id: constants_1.CONTENT_BUILDER_FORM_ID, onSubmit: props.onSubmit },
65
+ const handleError = (errors) => {
66
+ //TODO: přepnutí na tab s chybou, asi by šlo udělat lépe
67
+ for (const inputName in errors) {
68
+ if (inputName in INPUT_TAB_MAP) {
69
+ setActiveTab(INPUT_TAB_MAP[inputName]);
70
+ break;
71
+ }
72
+ }
73
+ };
74
+ return (react_1.default.createElement(form_1.Form, { formApi: formApi, id: constants_1.CONTENT_BUILDER_FORM_ID, onError: handleError, onSubmit: props.onSubmit },
48
75
  react_1.default.createElement("div", { className: "flex flex-col-reverse overflow-hidden xl:h-[calc(var(--viewport-height)-var(--header-height))] xl:flex-row", style: { "--viewport-height": height, "--header-height": (0, rem_1.rem)(headerHeight) } },
49
76
  react_1.default.createElement(details_visibility_context_1.DetailsVisibilityProvider, null,
50
77
  react_1.default.createElement(content_field_1.ContentField, { contentComponents: props.config.contentComponents, control: formApi.control, name: "content" })),
51
- react_1.default.createElement("div", { className: "basis-[500px] bg-white px-4 pb-8 xl:overflow-y-auto dark:bg-gray-950" },
78
+ react_1.default.createElement("div", { className: "shrink-0 basis-[500px] bg-white px-4 pb-8 xl:overflow-y-auto dark:bg-gray-950" },
52
79
  react_1.default.createElement("h2", { className: "uxf-typo-h5 px-4 pb-4 pt-6" }, "Nastaven\u00ED"),
53
- react_1.default.createElement(form_root_fields_1.FormRootFields, { config: props.config, control: formApi.control, id: props.id })))));
54
- };
55
- exports.Form = Form;
80
+ react_1.default.createElement(form_root_fields_1.FormRootFields, { activeTab: activeTab, config: props.config, control: formApi.control, id: props.id, setActiveTab: setActiveTab })))));
81
+ }
@@ -1,6 +1,6 @@
1
- import { FC } from "react";
1
+ import React from "react";
2
2
  interface HeaderProps {
3
3
  title: string;
4
4
  }
5
- export declare const Header: FC<HeaderProps>;
5
+ export declare function Header(props: HeaderProps): React.JSX.Element;
6
6
  export {};
@@ -1,44 +1,16 @@
1
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;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Header = void 0;
27
- const button_1 = require("@uxf/ui/button");
28
- const button_group_1 = require("@uxf/ui/button-group");
29
- const react_1 = __importStar(require("react"));
6
+ exports.Header = Header;
7
+ const react_1 = __importDefault(require("react"));
30
8
  const layout_container_1 = require("../../../lib/layout/layout-container");
31
9
  const constants_1 = require("../constants");
32
- const Header = (props) => {
33
- const [language, setLanguage] = (0, react_1.useState)("cs");
10
+ function Header(props) {
34
11
  return (react_1.default.createElement("div", { className: "sticky top-0 z-10 bg-white shadow-md dark:bg-gray-950", id: constants_1.CONTENT_BUILDER_PAGE_HEADER_ID },
35
12
  react_1.default.createElement(layout_container_1.LayoutContainer, { className: "flex items-center justify-between py-4" },
36
13
  react_1.default.createElement("h1", { className: "uxf-typo-h5" }, props.title),
37
- react_1.default.createElement("div", { className: "flex space-x-4" },
38
- react_1.default.createElement(button_group_1.ButtonGroup, null,
39
- react_1.default.createElement(button_1.Button, { onClick: () => setLanguage("cs"), size: "sm", variant: language === "cs" ? "default" : "secondary" }, "CS"),
40
- react_1.default.createElement(button_1.Button, { onClick: () => setLanguage("en"), size: "sm", variant: language === "en" ? "default" : "secondary" }, "EN"),
41
- react_1.default.createElement(button_1.Button, { onClick: () => setLanguage("de"), size: "sm", variant: language === "de" ? "default" : "secondary" }, "DE")),
42
- react_1.default.createElement("button", { className: "uxf-button uxf-button--color-default uxf-button--size-default uxf-button--variant-default is-hoverable", form: constants_1.CONTENT_BUILDER_FORM_ID, type: "submit" }, "Ulo\u017Eit")))));
43
- };
44
- exports.Header = Header;
14
+ " ",
15
+ react_1.default.createElement("button", { className: "uxf-button uxf-button--color-default uxf-button--size-default uxf-button--variant-default is-hoverable", form: constants_1.CONTENT_BUILDER_FORM_ID, type: "submit" }, "Ulo\u017Eit"))));
16
+ }
@@ -1,2 +1,6 @@
1
1
  export declare const CONTENT_BUILDER_FORM_ID = "content-builder-form";
2
2
  export declare const CONTENT_BUILDER_PAGE_HEADER_ID = "content-builder-page-header";
3
+ export declare enum ContentBuilderTabs {
4
+ Basic = "basic",
5
+ Seo = "seo"
6
+ }
@@ -1,5 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CONTENT_BUILDER_PAGE_HEADER_ID = exports.CONTENT_BUILDER_FORM_ID = void 0;
3
+ exports.ContentBuilderTabs = exports.CONTENT_BUILDER_PAGE_HEADER_ID = exports.CONTENT_BUILDER_FORM_ID = void 0;
4
4
  exports.CONTENT_BUILDER_FORM_ID = "content-builder-form";
5
5
  exports.CONTENT_BUILDER_PAGE_HEADER_ID = "content-builder-page-header";
6
+ var ContentBuilderTabs;
7
+ (function (ContentBuilderTabs) {
8
+ ContentBuilderTabs["Basic"] = "basic";
9
+ ContentBuilderTabs["Seo"] = "seo";
10
+ })(ContentBuilderTabs || (exports.ContentBuilderTabs = ContentBuilderTabs = {}));
@@ -8,7 +8,7 @@ const dropzone_input_1 = require("@uxf/form/dropzone/dropzone-input");
8
8
  const dropzone_list_1 = require("@uxf/form/dropzone/dropzone-list");
9
9
  const react_1 = __importDefault(require("react"));
10
10
  const on_upload_dropzone_file_1 = require("../../../forms/utils/on-upload-dropzone-file");
11
- const on_remove_confirm_1 = require("../../../utils/on-remove-confirm");
11
+ const remove_confirm_handler_1 = require("../../../utils/remove-confirm-handler");
12
12
  const content_header_1 = require("../content-header");
13
13
  const details_visibility_context_1 = require("../context/details-visibility-context");
14
14
  const Gallery = (props) => {
@@ -17,7 +17,7 @@ const Gallery = (props) => {
17
17
  react_1.default.createElement(content_header_1.ContentHeader, { ...props }),
18
18
  visibility && (react_1.default.createElement("div", { className: "p-4" },
19
19
  react_1.default.createElement(dropzone_input_1.DropzoneInput, { control: props.control, name: `${props.name}.images`, onUploadFile: on_upload_dropzone_file_1.onUploadDropzoneFile }),
20
- react_1.default.createElement(dropzone_list_1.DropzoneList, { control: props.control, name: `${props.name}.images`, onRemoveConfirm: on_remove_confirm_1.onRemoveConfirm })))));
20
+ react_1.default.createElement(dropzone_list_1.DropzoneList, { className: "mt-4", control: props.control, name: `${props.name}.images`, onRemoveConfirm: remove_confirm_handler_1.removeConfirmHandler })))));
21
21
  };
22
22
  exports.Gallery = Gallery;
23
23
  exports.Gallery.getConfig = () => ({
@@ -25,16 +25,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.ContentHeader = void 0;
27
27
  const use_clickable_props_1 = require("@uxf/core-react/hooks/use-clickable-props");
28
- const button_1 = require("@uxf/ui/button");
29
- const datetime_picker_input_1 = require("@uxf/ui/datetime-picker-input");
30
28
  const icon_1 = require("@uxf/ui/icon");
31
- const modal_service_1 = require("@uxf/ui/modal/modal-service");
32
- const paper_1 = require("@uxf/ui/paper/paper");
29
+ const icon_button_1 = require("@uxf/ui/icon-button");
33
30
  const react_1 = __importStar(require("react"));
34
31
  const details_visibility_context_1 = require("./context/details-visibility-context");
35
32
  const ContentHeader = (props) => {
36
- const [validityFrom, setValidityFrom] = (0, react_1.useState)(null);
37
- const [validityTo, setValidityTo] = (0, react_1.useState)(null);
38
33
  const [visibility, toggleVisibility] = (0, details_visibility_context_1.useDetailsVisibilityForSection)(props.id);
39
34
  const removeHandler = (0, react_1.useCallback)((event) => {
40
35
  event.stopPropagation();
@@ -49,23 +44,10 @@ const ContentHeader = (props) => {
49
44
  className: "flex w-full cursor-pointer flex-row items-center justify-between p-4",
50
45
  onClick: toggleVisibility,
51
46
  });
52
- const setVisibilityHandler = (event) => {
53
- event.stopPropagation();
54
- (0, modal_service_1.openModal)({
55
- children: (react_1.default.createElement(paper_1.Paper, { className: "space-y-4 p-4 dark:bg-gray-950" },
56
- react_1.default.createElement(datetime_picker_input_1.DatetimePickerInput, { label: "Platnost od", name: "visibilityFrom", onChange: (value) => setValidityFrom(value), value: validityFrom }),
57
- react_1.default.createElement(datetime_picker_input_1.DatetimePickerInput, { label: "Platnost do", name: "visibilityTo", onChange: (value) => setValidityTo(value), value: validityTo }))),
58
- width: "sm",
59
- });
60
- };
61
47
  return (react_1.default.createElement("div", { ...clickableProps },
62
48
  react_1.default.createElement("h3", { className: "uxf-typo-h6" }, props.title),
63
49
  react_1.default.createElement("div", { className: "flex items-center space-x-4" },
64
- react_1.default.createElement("div", { className: "flex space-x-2" },
65
- react_1.default.createElement(button_1.Button, { isIconButton: true, onClick: (event) => setVisibilityHandler(event), size: "sm", variant: "secondary" },
66
- react_1.default.createElement(icon_1.Icon, { name: "calendar" })),
67
- react_1.default.createElement(button_1.Button, { isIconButton: true, onClick: (event) => removeHandler(event), size: "sm", variant: "secondary" },
68
- react_1.default.createElement(icon_1.Icon, { name: "delete" }))),
50
+ react_1.default.createElement(icon_button_1.IconButton, { iconName: "delete", label: "d", onClick: removeHandler, size: "sm", variant: "secondary" }),
69
51
  react_1.default.createElement(icon_1.Icon, { name: `${visibility ? "chevronUp" : "chevronDown"}`, size: 16 }))));
70
52
  };
71
53
  exports.ContentHeader = ContentHeader;
@@ -23,7 +23,7 @@ const react_1 = __importDefault(require("react"));
23
23
  const api_1 = require("../../api");
24
24
  const on_upload_dropzone_file_1 = require("../../forms/utils/on-upload-dropzone-file");
25
25
  const on_upload_file_1 = require("../../forms/utils/on-upload-file");
26
- const on_remove_confirm_1 = require("../../utils/on-remove-confirm");
26
+ const remove_confirm_handler_1 = require("../../utils/remove-confirm-handler");
27
27
  const field_array_1 = require("./field-array"); // eslint-disable-line import/no-cycle
28
28
  const content_1 = require("./field/content");
29
29
  // eslint-disable-next-line complexity
@@ -58,7 +58,7 @@ const BaseField = (props) => {
58
58
  react_1.default.createElement(label_1.Label, null, label),
59
59
  react_1.default.createElement("div", { className: "mb-3" },
60
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: on_remove_confirm_1.onRemoveConfirm })));
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
62
  case "manyToMany":
63
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
64
  case "manyToOne":
@@ -129,7 +129,7 @@ const GridPageComponent = (props) => {
129
129
  : undefined);
130
130
  return (react_1.default.createElement(Layout, { key: props.entityAlias, title: (_j = (_g = props.title) !== null && _g !== void 0 ? _g : (_h = props.metaSchema) === null || _h === void 0 ? void 0 : _h.title) !== null && _j !== void 0 ? _j : "" },
131
131
  react_1.default.createElement("div", { className: "mb-10" },
132
- react_1.default.createElement(data_grid_1.DataGrid, { NoRowsFallback: (_k = props.ui) === null || _k === void 0 ? void 0 : _k.NoRowsFallback, SelectedRowsToolbarActions: (_l = props.ui) === null || _l === void 0 ? void 0 : _l.SelectedRowsToolbarActions, actionCell: actionCell, actions: actions, bodyCells: (_m = props.ui) === null || _m === void 0 ? void 0 : _m.BodyCells, customActions: cActions, data: data, error: error, filterHandlers: (_o = props.ui) === null || _o === void 0 ? void 0 : _o.FilterHandlers, gridName: props.entityAlias, isLoading: isLoading, isRowSelectable: props.selectable, noBorder: true, onCsvDownload: (r) => window.open(`/api/cms/datagrid/export/${props.entityAlias}?${(0, qs_1.stringify)(r)}`), onReload: onReload, rowHeight: props.rowHeight, schema: props.gridSchema, state: state }))));
132
+ react_1.default.createElement(data_grid_1.DataGrid, { NoRowsFallback: (_k = props.ui) === null || _k === void 0 ? void 0 : _k.NoRowsFallback, SelectedRowsToolbarActions: (_l = props.ui) === null || _l === void 0 ? void 0 : _l.SelectedRowsToolbarActions, actionCell: actionCell, actions: actions, bodyCells: (_m = props.ui) === null || _m === void 0 ? void 0 : _m.BodyCells, customActions: cActions, data: data, error: error, filterHandlers: (_o = props.ui) === null || _o === void 0 ? void 0 : _o.FilterHandlers, gridName: props.entityAlias, isLoading: isLoading, isRowSelectable: props.selectable, onCsvDownload: (r) => window.open(`/api/cms/datagrid/export/${props.entityAlias}?${(0, qs_1.stringify)(r)}`), onReload: onReload, rowHeight: props.rowHeight, schema: props.gridSchema, state: state }))));
133
133
  };
134
134
  GridPageComponent.displayName = "GridPageComponent";
135
135
  const GridPage = (config) => {
@@ -0,0 +1 @@
1
+ export declare function removeConfirmHandler(): Promise<boolean>;
@@ -0,0 +1,27 @@
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.removeConfirmHandler = removeConfirmHandler;
7
+ const button_1 = require("@uxf/ui/button");
8
+ const modal_1 = require("@uxf/ui/modal");
9
+ const modal_dialog_1 = require("@uxf/ui/modal-dialog/modal-dialog");
10
+ const react_1 = __importDefault(require("react"));
11
+ function removeConfirmHandler() {
12
+ return new Promise((resolve) => {
13
+ (0, modal_1.openModal)({
14
+ disableBackdropClose: true,
15
+ children: (react_1.default.createElement(modal_dialog_1.ModalDialog, { footer: react_1.default.createElement(react_1.default.Fragment, null,
16
+ react_1.default.createElement(button_1.Button, { onClick: () => {
17
+ resolve(false);
18
+ (0, modal_1.closeModal)();
19
+ } }, "Zru\u0161it"),
20
+ react_1.default.createElement(button_1.Button, { color: "negative", onClick: () => {
21
+ resolve(true);
22
+ (0, modal_1.closeModal)();
23
+ } }, "Ano, smazat")), title: "Opravdu chcete smazat tento soubor?" })),
24
+ width: "sm",
25
+ });
26
+ });
27
+ }
@@ -1 +0,0 @@
1
- export declare function onRemoveConfirm(): Promise<boolean>;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.onRemoveConfirm = onRemoveConfirm;
4
- const message_1 = require("@uxf/ui/message");
5
- function onRemoveConfirm() {
6
- return new Promise((resolve) => {
7
- message_1.MessageService.openConfirm({
8
- acceptLabel: "Yes, delete",
9
- cancelLabel: "Cancel",
10
- title: "Do you want to delete the file?",
11
- color: "error",
12
- variant: "centered",
13
- onAccept: () => resolve(true),
14
- onCancel: () => resolve(false),
15
- CustomIconComponent: null,
16
- });
17
- });
18
- }