@uxf/cms 11.31.2 → 11.32.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. package/api/index.js +22 -20
  2. package/config/container.js +3 -3
  3. package/context/cms-provider.d.ts +2 -2
  4. package/context/cms-provider.js +1 -2
  5. package/deprecated/redux/entities/selectors.js +3 -2
  6. package/deprecated/redux/redux-helper.js +1 -2
  7. package/forms/change-password-form/change-password-form.js +1 -1
  8. package/forms/components/wysiwyg-input/wysiwyg-input.js +8 -8
  9. package/forms/forgotten-password-form/forgotten-password-form.js +3 -3
  10. package/forms/invite-user-form/invite-user-form.js +7 -7
  11. package/forms/login-form/login-form.js +4 -4
  12. package/lib/api/create-axios-instance.d.ts +1 -1
  13. package/lib/api/create-axios-instance.js +1 -2
  14. package/lib/api/create-use-axios-request.d.ts +1 -1
  15. package/lib/layout/breadcrumbs.js +4 -2
  16. package/lib/layout/layout.js +3 -3
  17. package/lib/layout/sidebar.js +5 -5
  18. package/lib/layout/types.d.ts +9 -9
  19. package/lib/menu/factory.js +7 -8
  20. package/lib/menu/mobile-bar.js +6 -6
  21. package/lib/menu/model.js +4 -2
  22. package/lib/menu/ui/list-item/list-item.d.ts +1 -1
  23. package/lib/menu/ui/list-item/list-item.js +10 -10
  24. package/lib/menu/ui/menu-item.js +1 -1
  25. package/lib/menu/ui/sub-menu/sub-menu-item.js +1 -1
  26. package/lib/menu/ui/sub-menu/sub-menu-mobile.js +1 -1
  27. package/lib/menu/ui/sub-menu/sub-menu.js +1 -1
  28. package/lib/menu/ui/sub-menu/use-sub-menu.d.ts +7 -8
  29. package/lib/menu/ui/sub-menu/use-sub-menu.js +2 -3
  30. package/lib/menu/ui/user-menu.js +6 -4
  31. package/package.json +19 -19
  32. package/pages/content-builder/components/form-content.js +7 -7
  33. package/pages/content-builder/components/form-root-fields.js +20 -19
  34. package/pages/content-builder/components/form.js +2 -2
  35. package/pages/content-builder/components/header.js +1 -1
  36. package/pages/content-builder/content/feature-section.js +9 -9
  37. package/pages/content-builder/content/gallery.js +1 -1
  38. package/pages/content-builder/content/hero-section.js +4 -4
  39. package/pages/content-builder/content/people.js +9 -9
  40. package/pages/content-builder/content/wysiwyg.js +2 -2
  41. package/pages/content-builder/content-builder-page.js +2 -2
  42. package/pages/content-builder/content-field.js +12 -12
  43. package/pages/content-builder/content-header.js +4 -4
  44. package/pages/content-builder/context/details-visibility-context.js +2 -1
  45. package/pages/content-builder/mapper.js +5 -5
  46. package/pages/content-builder/types.d.ts +33 -33
  47. package/pages/forgotten-password-page/forgotten-password-page.js +1 -1
  48. package/pages/form-page/base-field.js +15 -15
  49. package/pages/form-page/field/content.js +1 -1
  50. package/pages/form-page/field-array.js +3 -3
  51. package/pages/form-page/form-page.d.ts +1 -1
  52. package/pages/form-page/form-page.js +3 -2
  53. package/pages/form-page/form.d.ts +1 -1
  54. package/pages/form-page/form.js +7 -8
  55. package/pages/form-page/mapper.js +2 -1
  56. package/pages/grid-page/get-initial-props-helper.js +2 -3
  57. package/pages/grid-page/grid-page.js +4 -3
  58. package/pages/grid-page/types.d.ts +12 -13
  59. package/pages/login-page/login-page.js +2 -1
  60. package/pages/renew-password-page/renew-password-page.js +1 -1
  61. package/security/use-logged-user.js +1 -2
  62. package/ui/avatar/get-avatar-user-letters.js +5 -4
  63. package/ui/copy-to-clipboard/copy-to-clipboard.js +3 -2
  64. package/utils/on-remove-confirm.js +1 -2
  65. package/utils/use-viewport-height.js +1 -2
package/api/index.js CHANGED
@@ -1,25 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.uploadFile = exports.userConfigGet = exports.userConfigGetAll = exports.userConfigSave = exports.removeEntity = exports.saveFormValues = exports.autocomplete = exports.login = exports.getFormValues = exports.getFormSchema = exports.getEntityMetaSchemas = exports.getLoggedUser = exports.forgottenPassword = exports.dataGridAutocompleteGet = exports.dataGridSchemaGet = exports.contentUpdate = exports.contentCreate = exports.contentGet = void 0;
3
+ exports.dataGridAutocompleteGet = void 0;
4
+ exports.contentGet = contentGet;
5
+ exports.contentCreate = contentCreate;
6
+ exports.contentUpdate = contentUpdate;
7
+ exports.dataGridSchemaGet = dataGridSchemaGet;
8
+ exports.forgottenPassword = forgottenPassword;
9
+ exports.getLoggedUser = getLoggedUser;
10
+ exports.getEntityMetaSchemas = getEntityMetaSchemas;
11
+ exports.getFormSchema = getFormSchema;
12
+ exports.getFormValues = getFormValues;
13
+ exports.login = login;
14
+ exports.autocomplete = autocomplete;
15
+ exports.saveFormValues = saveFormValues;
16
+ exports.removeEntity = removeEntity;
17
+ exports.userConfigSave = userConfigSave;
18
+ exports.userConfigGetAll = userConfigGetAll;
19
+ exports.userConfigGet = userConfigGet;
20
+ exports.uploadFile = uploadFile;
21
+ const is_not_nil_1 = require("@uxf/core/utils/is-not-nil");
4
22
  // eslint-disable-next-line import/no-cycle
5
23
  const api_1 = require("../lib/api");
6
24
  const { axiosRequest, axiosInstance } = (0, api_1.createAxiosInstance)();
7
25
  function contentGet(ctx, contentId) {
8
26
  return axiosRequest(ctx, `/api/cms/content/${contentId}`, "get", null, null);
9
27
  }
10
- exports.contentGet = contentGet;
11
28
  function contentCreate(ctx, content) {
12
29
  return axiosRequest(ctx, "/api/cms/content", "post", content, null);
13
30
  }
14
- exports.contentCreate = contentCreate;
15
31
  function contentUpdate(ctx, contentId, content) {
16
32
  return axiosRequest(ctx, `/api/cms/content/${contentId}`, "put", content, null);
17
33
  }
18
- exports.contentUpdate = contentUpdate;
19
34
  function dataGridSchemaGet(ctx, gridName) {
20
35
  return axiosRequest(ctx, `/api/cms/datagrid/schema/${gridName}`, "get", null, null);
21
36
  }
22
- exports.dataGridSchemaGet = dataGridSchemaGet;
23
37
  const dataGridAutocompleteGet = (ctx, gridName, filterName, text) => {
24
38
  return axiosRequest(ctx, `/api/cms/datagrid/autocomplete/${gridName}/${filterName}`, "get", null, { s: text }).then((r) => r.data);
25
39
  };
@@ -27,49 +41,38 @@ exports.dataGridAutocompleteGet = dataGridAutocompleteGet;
27
41
  function forgottenPassword(ctx, email, cms = true) {
28
42
  return axiosRequest(ctx, "/api/forgotten-password", "post", { email, cms }, null).then(() => undefined);
29
43
  }
30
- exports.forgottenPassword = forgottenPassword;
31
44
  function getLoggedUser(ctx = null) {
32
45
  return axiosRequest(ctx, `/api/cms/user`, "get", null, null).then((r) => r.data.user);
33
46
  }
34
- exports.getLoggedUser = getLoggedUser;
35
47
  function getEntityMetaSchemas(ctx) {
36
48
  return axiosRequest(ctx, "/api/cms/tables", "get", null, null);
37
49
  }
38
- exports.getEntityMetaSchemas = getEntityMetaSchemas;
39
50
  function getFormSchema(ctx, path) {
40
51
  return axiosRequest(ctx, `/api/cms/form/${path.entityAlias}/schema`, "get", null, null);
41
52
  }
42
- exports.getFormSchema = getFormSchema;
43
53
  function getFormValues(ctx, path) {
44
54
  return axiosRequest(ctx, `/api/cms/form/${path.entityAlias}/${path.id}`, "get", null, null);
45
55
  }
46
- exports.getFormValues = getFormValues;
47
56
  function login(ctx, body) {
48
57
  return axiosRequest(ctx, "/api/login", "post", body, null);
49
58
  }
50
- exports.login = login;
51
59
  function autocomplete(ctx, path, query) {
52
60
  return axiosRequest(ctx, `/api/cms/autocomplete/${path.name}`, "get", null, query);
53
61
  }
54
- exports.autocomplete = autocomplete;
55
62
  function saveFormValues(ctx, path, body) {
56
63
  return path.id
57
64
  ? axiosRequest(ctx, `/api/cms/form/${path.entityAlias}/${path.id}`, "put", body, null)
58
65
  : axiosRequest(ctx, `/api/cms/form/${path.entityAlias}`, "post", body, null);
59
66
  }
60
- exports.saveFormValues = saveFormValues;
61
67
  function removeEntity(ctx, path) {
62
68
  return axiosRequest(ctx, `/api/cms/form/${path.entityAlias}/${path.id}`, "delete", null, null);
63
69
  }
64
- exports.removeEntity = removeEntity;
65
70
  async function userConfigSave(name, data) {
66
71
  return axiosRequest(null, "/api/cms/user-config", "post", { name, data }, null);
67
72
  }
68
- exports.userConfigSave = userConfigSave;
69
73
  function userConfigGetAll(ctx) {
70
74
  return axiosRequest(ctx, "/api/cms/user-config", "get", null, null);
71
75
  }
72
- exports.userConfigGetAll = userConfigGetAll;
73
76
  async function userConfigGet(ctx, name, defaultValue) {
74
77
  const configs = await userConfigGetAll(ctx).then((r) => r.data);
75
78
  const configsName = configs[name];
@@ -78,7 +81,6 @@ async function userConfigGet(ctx, name, defaultValue) {
78
81
  }
79
82
  return defaultValue;
80
83
  }
81
- exports.userConfigGet = userConfigGet;
82
84
  async function uploadFile(file, namespace = "default") {
83
85
  const formData = new FormData();
84
86
  formData.append("files[]", file);
@@ -86,9 +88,9 @@ async function uploadFile(file, namespace = "default") {
86
88
  timeout: 100 * 1000,
87
89
  params: namespace ? { namespace } : {},
88
90
  });
89
- if (response.data.length > 0) {
90
- return response.data[0];
91
+ const firstFile = response.data.at(0);
92
+ if ((0, is_not_nil_1.isNotNil)(firstFile)) {
93
+ return firstFile;
91
94
  }
92
95
  throw new Error("Response is null");
93
96
  }
94
- exports.uploadFile = uploadFile;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Container = void 0;
4
- // eslint-disable-next-line import/no-cycle
5
- const api_1 = require("../api");
4
+ const is_not_nil_1 = require("@uxf/core/utils/is-not-nil");
5
+ const api_1 = require("../api"); // eslint-disable-line import/no-cycle
6
6
  class Container {
7
7
  constructor() {
8
8
  // TODO @vejvis - move initial values to better place
@@ -23,7 +23,7 @@ class Container {
23
23
  return value;
24
24
  }
25
25
  has(key) {
26
- return !!this.store[key];
26
+ return (0, is_not_nil_1.isNotNil)(this.store[key]);
27
27
  }
28
28
  }
29
29
  exports.Container = Container;
@@ -1,2 +1,2 @@
1
- import React, { PropsWithChildren } from "react";
2
- export declare function CmsProvider(props: PropsWithChildren): React.JSX.Element;
1
+ import { PropsWithChildren, ReactNode } from "react";
2
+ export declare function CmsProvider(props: PropsWithChildren): ReactNode;
@@ -3,11 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CmsProvider = void 0;
6
+ exports.CmsProvider = CmsProvider;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const swr_1 = require("swr");
9
9
  const fetcher = (input, init) => fetch(input, init).then((res) => res.json());
10
10
  function CmsProvider(props) {
11
11
  return react_1.default.createElement(swr_1.SWRConfig, { value: { provider: () => new Map(), fetcher } }, props.children);
12
12
  }
13
- exports.CmsProvider = CmsProvider;
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formSchemaSelector = exports.formSchemaExistsSelector = exports.gridSchemaSelector = exports.gridSchemaExistsSelector = exports.metaSchemaSelector = exports.metaSchemaExistsSelector = void 0;
4
+ const is_not_nil_1 = require("@uxf/core/utils/is-not-nil");
4
5
  const metaSchemaExistsSelector = (state) => Object.keys(state.entities.meta).length > 0;
5
6
  exports.metaSchemaExistsSelector = metaSchemaExistsSelector;
6
7
  const metaSchemaSelector = (entityAlias) => (state) => state.entities.meta[entityAlias];
7
8
  exports.metaSchemaSelector = metaSchemaSelector;
8
- const gridSchemaExistsSelector = (entityAlias) => (state) => !!state.entities.grid[entityAlias];
9
+ const gridSchemaExistsSelector = (entityAlias) => (state) => (0, is_not_nil_1.isNotNil)(state.entities.grid[entityAlias]);
9
10
  exports.gridSchemaExistsSelector = gridSchemaExistsSelector;
10
11
  const gridSchemaSelector = (entityAlias) => (state) => state.entities.grid[entityAlias];
11
12
  exports.gridSchemaSelector = gridSchemaSelector;
12
- const formSchemaExistsSelector = (entityAlias) => (state) => !!state.entities.form[entityAlias];
13
+ const formSchemaExistsSelector = (entityAlias) => (state) => (0, is_not_nil_1.isNotNil)(state.entities.form[entityAlias]);
13
14
  exports.formSchemaExistsSelector = formSchemaExistsSelector;
14
15
  const formSchemaSelector = (entityAlias) => (state) => state.entities.form[entityAlias];
15
16
  exports.formSchemaSelector = formSchemaSelector;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createAction = void 0;
3
+ exports.createAction = createAction;
4
4
  function createAction(type, payload) {
5
5
  return payload === undefined ? { type } : { type, payload };
6
6
  }
7
- exports.createAction = createAction;
@@ -18,7 +18,7 @@ const ChangePasswordForm = (props) => {
18
18
  });
19
19
  return (react_1.default.createElement(form_1.Form, { formApi: formApi, id: "change-password-form", ...formProps },
20
20
  react_1.default.createElement(widget_1.Widget, { className: "[&>*]:p-4", footer: react_1.default.createElement("div", { className: "text-right" },
21
- react_1.default.createElement(button_1.Button, { type: "submit", isDisabled: formApi.formState.isSubmitting }, "Ulo\u017Eit")), withDividers: true },
21
+ react_1.default.createElement(button_1.Button, { isDisabled: formApi.formState.isSubmitting, type: "submit" }, "Ulo\u017Eit")), withDividers: true },
22
22
  react_1.default.createElement(text_input_1.TextInput, { control: formApi.control, isRequired: true, label: "P\u016Fvodn\u00ED heslo", name: "originalPassword", type: "password" }),
23
23
  react_1.default.createElement(text_input_1.TextInput, { control: formApi.control, isRequired: true, label: "Nov\u00E9 heslo", name: "newPassword", rules: props.passwordRules, type: "password" }),
24
24
  react_1.default.createElement(text_input_1.TextInput, { control: formApi.control, isRequired: true, label: "Nov\u00E9 heslo znovu", name: "newPasswordAgain", rules: { validate: (v) => v === formApi.getValues("newPassword") || "Hesla musí být stejná" }, type: "password" }))));
@@ -23,11 +23,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.WysiwygInput = void 0;
26
+ exports.WysiwygInput = WysiwygInput;
27
27
  const use_input_focus_1 = require("@uxf/core-react/hooks/use-input-focus");
28
28
  const classes_1 = require("@uxf/core/constants/classes");
29
29
  const cx_1 = require("@uxf/core/utils/cx");
30
30
  const file_1 = require("@uxf/core/utils/file");
31
+ const is_not_nil_1 = require("@uxf/core/utils/is-not-nil");
31
32
  const form_component_1 = require("@uxf/ui/form-component");
32
33
  const wysiwyg_1 = require("@uxf/wysiwyg");
33
34
  const create_all_plugins_with_ui_1 = require("@uxf/wysiwyg/create-all-plugins-with-ui");
@@ -35,14 +36,14 @@ const react_1 = __importStar(require("react"));
35
36
  const react_hook_form_1 = require("react-hook-form");
36
37
  const api_1 = require("../../../api");
37
38
  function WysiwygInput(props) {
38
- var _a, _b, _c, _d, _e;
39
+ var _a, _b, _c, _d;
39
40
  const { field, fieldState } = (0, react_hook_form_1.useController)({
40
41
  control: props.control,
41
42
  defaultValue: props.defaultValue,
42
43
  name: props.name,
43
44
  rules: {
44
45
  required: props.isRequired ? props.requiredMessage || "Toto pole je povinné" : undefined,
45
- ...((_a = props.rules) !== null && _a !== void 0 ? _a : {}),
46
+ ...props.rules,
46
47
  },
47
48
  shouldUnregister: props.shouldUnregister,
48
49
  });
@@ -53,19 +54,19 @@ function WysiwygInput(props) {
53
54
  : (0, create_all_plugins_with_ui_1.createAllPluginsWithUi)((_a = props.allPluginsOptions) !== null && _a !== void 0 ? _a : { image: { getImageUrl: file_1.getFileUrl, uploadImage: api_1.uploadFile } });
54
55
  }, [props.allPluginsOptions, props.plugins]);
55
56
  const generatedId = (0, react_1.useId)();
56
- const id = (_b = props.id) !== null && _b !== void 0 ? _b : generatedId;
57
+ const id = (_a = props.id) !== null && _a !== void 0 ? _a : generatedId;
57
58
  const innerRef = (0, react_1.useRef)(null);
58
59
  const input = (0, use_input_focus_1.useInputFocus)(innerRef, props.onBlur, props.onFocus);
59
- const isInvalid = !!fieldState.error;
60
+ const isInvalid = (0, is_not_nil_1.isNotNil)(fieldState.error);
60
61
  const errorId = isInvalid ? `${props.id}--error-message` : undefined;
61
- const rootClassName = (0, cx_1.cx)("uxf-text-input", ((_c = props.isFocused) !== null && _c !== void 0 ? _c : input.focused) && classes_1.CLASSES.IS_FOCUSED, props.isDisabled && classes_1.CLASSES.IS_DISABLED, isInvalid && classes_1.CLASSES.IS_INVALID, props.isReadOnly && classes_1.CLASSES.IS_READONLY, props.isRequired && classes_1.CLASSES.IS_REQUIRED, props.className);
62
+ const rootClassName = (0, cx_1.cx)("uxf-text-input", ((_b = props.isFocused) !== null && _b !== void 0 ? _b : input.focused) && classes_1.CLASSES.IS_FOCUSED, props.isDisabled && classes_1.CLASSES.IS_DISABLED, isInvalid && classes_1.CLASSES.IS_INVALID, props.isReadOnly && classes_1.CLASSES.IS_READONLY, props.isRequired && classes_1.CLASSES.IS_REQUIRED, props.className);
62
63
  const onBlur = (0, react_1.useCallback)((e) => {
63
64
  var _a;
64
65
  field.onBlur();
65
66
  input.onBlur(e);
66
67
  (_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props, e);
67
68
  }, [field, input, props]);
68
- return (react_1.default.createElement(form_component_1.FormComponent, { className: rootClassName, errorId: errorId, form: props.form, helperText: (_e = (_d = fieldState.error) === null || _d === void 0 ? void 0 : _d.message) !== null && _e !== void 0 ? _e : props.helperText, hiddenLabel: props.hiddenLabel, inputId: id, isRequired: props.isRequired, label: props.label, name: props.name },
69
+ return (react_1.default.createElement(form_component_1.FormComponent, { className: rootClassName, errorId: errorId, form: props.form, helperText: (_d = (_c = fieldState.error) === null || _c === void 0 ? void 0 : _c.message) !== null && _d !== void 0 ? _d : props.helperText, hiddenLabel: props.hiddenLabel, inputId: id, isRequired: props.isRequired, label: props.label, name: props.name },
69
70
  react_1.default.createElement(wysiwyg_1.WysiwygEditor, { editableProps: {
70
71
  "aria-describedby": errorId,
71
72
  "aria-invalid": isInvalid,
@@ -80,4 +81,3 @@ function WysiwygInput(props) {
80
81
  required: props.isRequired,
81
82
  }, id: id, initialValue: field.value, onChange: field.onChange, plugins: plugins, ...props.editorProps })));
82
83
  }
83
- exports.WysiwygInput = WysiwygInput;
@@ -42,9 +42,9 @@ const ForgottenPasswordForm = (props) => {
42
42
  }, []);
43
43
  return (react_1.default.createElement(form_1.Form, { formApi: formApi, id: "forgotten-password-form", ...formProps },
44
44
  react_1.default.createElement("div", { className: "space-y-6" },
45
- react_1.default.createElement(text_input_1.TextInput, { control: formApi.control, isDisabled: formDisabled, label: "E-mail", name: "username", isRequired: true, type: "text" }),
46
- react_1.default.createElement(button_1.Button, { isDisabled: formDisabled || formApi.formState.isSubmitting, isLoading: formApi.formState.isSubmitting, type: "submit", isFullWidth: true }, "Obnovit heslo"),
45
+ react_1.default.createElement(text_input_1.TextInput, { control: formApi.control, isDisabled: formDisabled, isRequired: true, label: "E-mail", name: "username", type: "text" }),
46
+ react_1.default.createElement(button_1.Button, { isDisabled: formDisabled || formApi.formState.isSubmitting, isFullWidth: true, isLoading: formApi.formState.isSubmitting, type: "submit" }, "Obnovit heslo"),
47
47
  onLogin && (react_1.default.createElement("div", { className: "text-right" },
48
- react_1.default.createElement(text_link_1.TextLink, { onClick: onLogin, disabled: formApi.formState.isSubmitting, className: "uxf-typo-medium2 text-primary" }, "P\u0159ihl\u00E1sit"))))));
48
+ react_1.default.createElement(text_link_1.TextLink, { className: "uxf-typo-medium2 text-primary", disabled: formApi.formState.isSubmitting, onClick: onLogin }, "P\u0159ihl\u00E1sit"))))));
49
49
  };
50
50
  exports.ForgottenPasswordForm = ForgottenPasswordForm;
@@ -20,12 +20,12 @@ const InviteUserForm = (props) => {
20
20
  defaultValues,
21
21
  });
22
22
  return (react_1.default.createElement(form_1.Form, { formApi: formApi, id: "invite-user-form", ...formProps },
23
- react_1.default.createElement(widget_1.Widget, { withDividers: true, className: "[&>*]:p-4", footer: react_1.default.createElement("div", { className: "text-right" },
24
- react_1.default.createElement(button_1.Button, { type: "submit", isDisabled: formApi.formState.isSubmitting }, "Ulo\u017Eit")) },
25
- react_1.default.createElement(text_input_1.TextInput, { name: "email", type: "email", label: "E-mail", isRequired: true, control: formApi.control }),
26
- react_1.default.createElement(text_input_1.TextInput, { name: "name", label: "Jm\u00E9no", isRequired: true, control: formApi.control }),
27
- react_1.default.createElement(text_input_1.TextInput, { name: "surname", label: "P\u0159\u00EDjmen\u00ED", isRequired: true, control: formApi.control }),
28
- react_1.default.createElement(multi_combobox_1.MultiCombobox, { name: "roles", label: "Role", isRequired: true, control: formApi.control, loadOptions: props.onLoadRoles }),
29
- react_1.default.createElement(checkbox_input_1.CheckboxInput, { name: "sendInvitation", label: "Odeslat pozv\u00E1nku", control: formApi.control }))));
23
+ react_1.default.createElement(widget_1.Widget, { className: "[&>*]:p-4", footer: react_1.default.createElement("div", { className: "text-right" },
24
+ react_1.default.createElement(button_1.Button, { isDisabled: formApi.formState.isSubmitting, type: "submit" }, "Ulo\u017Eit")), withDividers: true },
25
+ react_1.default.createElement(text_input_1.TextInput, { control: formApi.control, isRequired: true, label: "E-mail", name: "email", type: "email" }),
26
+ react_1.default.createElement(text_input_1.TextInput, { control: formApi.control, isRequired: true, label: "Jm\u00E9no", name: "name" }),
27
+ react_1.default.createElement(text_input_1.TextInput, { control: formApi.control, isRequired: true, label: "P\u0159\u00EDjmen\u00ED", name: "surname" }),
28
+ react_1.default.createElement(multi_combobox_1.MultiCombobox, { control: formApi.control, isRequired: true, label: "Role", loadOptions: props.onLoadRoles, name: "roles" }),
29
+ react_1.default.createElement(checkbox_input_1.CheckboxInput, { control: formApi.control, label: "Odeslat pozv\u00E1nku", name: "sendInvitation" }))));
30
30
  };
31
31
  exports.InviteUserForm = InviteUserForm;
@@ -40,10 +40,10 @@ const LoginForm = (props) => {
40
40
  }, []);
41
41
  return (react_1.default.createElement(form_1.Form, { formApi: formApi, id: "login-form", ...formProps },
42
42
  react_1.default.createElement("div", { className: "space-y-6" },
43
- react_1.default.createElement(text_input_1.TextInput, { isDisabled: formDisabled, label: "E-mail", name: "username", type: "email", control: formApi.control, isRequired: true }),
44
- react_1.default.createElement(text_input_1.TextInput, { isDisabled: formDisabled, label: "Heslo", name: "password", type: "password", control: formApi.control, isRequired: true }),
43
+ react_1.default.createElement(text_input_1.TextInput, { control: formApi.control, isDisabled: formDisabled, isRequired: true, label: "E-mail", name: "username", type: "email" }),
44
+ react_1.default.createElement(text_input_1.TextInput, { control: formApi.control, isDisabled: formDisabled, isRequired: true, label: "Heslo", name: "password", type: "password" }),
45
45
  onForgottenPassword && (react_1.default.createElement("div", { className: "text-right" },
46
- react_1.default.createElement(text_link_1.TextLink, { onClick: onForgottenPassword, disabled: formApi.formState.isSubmitting, className: "uxf-typo-medium2 text-primary" }, "Nepamatujete si sv\u00E9 heslo?"))),
47
- react_1.default.createElement(button_1.Button, { type: "submit", isFullWidth: true }, "P\u0159ihl\u00E1sit se"))));
46
+ react_1.default.createElement(text_link_1.TextLink, { className: "uxf-typo-medium2 text-primary", disabled: formApi.formState.isSubmitting, onClick: onForgottenPassword }, "Nepamatujete si sv\u00E9 heslo?"))),
47
+ react_1.default.createElement(button_1.Button, { isFullWidth: true, type: "submit" }, "P\u0159ihl\u00E1sit se"))));
48
48
  };
49
49
  exports.LoginForm = LoginForm;
@@ -2,5 +2,5 @@ import { AxiosRequestConfig } from "axios";
2
2
  export declare function createAxiosInstance(requestConfig?: AxiosRequestConfig): {
3
3
  axiosInstance: import("axios").AxiosInstance;
4
4
  axiosRequest: <Response>(ctx: any, url: string, method: import("axios").Method, body: object | null, query: object | null) => Promise<import("axios").AxiosResponse<Response, any>>;
5
- useAxiosRequest: <Response_1 extends boolean | Record<string, any>, RequestBody extends Record<string, any> | null, RequestQuery extends Record<string, any> | null, RequestPath extends Record<string, any> | null>(url: string, method: import("axios").Method, config: import("./types").RequestConfig<RequestBody, RequestQuery, RequestPath>) => [import("axios-hooks").ResponseValues<Response_1, any, any>, import("./types").Execute<Response_1, RequestBody, RequestQuery, RequestPath>];
5
+ useAxiosRequest: <Response extends Record<string, any> | boolean, RequestBody extends Record<string, any> | null, RequestQuery extends Record<string, any> | null, RequestPath extends Record<string, any> | null>(url: string, method: import("axios").Method, config: import("./types").RequestConfig<RequestBody, RequestQuery, RequestPath>) => [import("axios-hooks").ResponseValues<Response, any, any>, import("./types").Execute<Response, RequestBody, RequestQuery, RequestPath>];
6
6
  };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createAxiosInstance = void 0;
6
+ exports.createAxiosInstance = createAxiosInstance;
7
7
  const axios_1 = __importDefault(require("axios"));
8
8
  // eslint-disable-next-line import/no-cycle
9
9
  const create_axios_request_1 = require("./create-axios-request");
@@ -16,4 +16,3 @@ function createAxiosInstance(requestConfig = {}) {
16
16
  useAxiosRequest: (0, create_use_axios_request_1.createUseAxiosRequest)(instance, requestConfig),
17
17
  };
18
18
  }
19
- exports.createAxiosInstance = createAxiosInstance;
@@ -1,4 +1,4 @@
1
1
  import { AxiosInstance, AxiosRequestConfig, Method } from "axios";
2
2
  import { ResponseValues } from "axios-hooks";
3
3
  import { Execute, RequestConfig } from "./types";
4
- export declare const createUseAxiosRequest: (axiosInstance: AxiosInstance, requestConfig: AxiosRequestConfig) => <Response extends boolean | Record<string, any>, RequestBody extends Record<string, any> | null, RequestQuery extends Record<string, any> | null, RequestPath extends Record<string, any> | null>(url: string, method: Method, config: RequestConfig<RequestBody, RequestQuery, RequestPath>) => [ResponseValues<Response, any, any>, Execute<Response, RequestBody, RequestQuery, RequestPath>];
4
+ export declare const createUseAxiosRequest: (axiosInstance: AxiosInstance, requestConfig: AxiosRequestConfig) => <Response extends Record<string, any> | boolean, RequestBody extends Record<string, any> | null, RequestQuery extends Record<string, any> | null, RequestPath extends Record<string, any> | null>(url: string, method: Method, config: RequestConfig<RequestBody, RequestQuery, RequestPath>) => [ResponseValues<Response, any, any>, Execute<Response, RequestBody, RequestQuery, RequestPath>];
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Breadcrumbs = void 0;
7
+ const hide_1 = require("@uxf/core-react/components/hide");
7
8
  const icon_1 = require("@uxf/ui/icon");
8
9
  const link_1 = __importDefault(require("next/link"));
9
10
  const react_1 = __importDefault(require("react"));
@@ -12,8 +13,9 @@ const Breadcrumbs = (props) => {
12
13
  return null;
13
14
  }
14
15
  return (react_1.default.createElement("div", { className: "uxf-cms-breadcrumbs" }, props.items.map((item, index) => (react_1.default.createElement("span", { className: "uxf-cms-breadcrumbs__item", key: index },
15
- !!index && react_1.default.createElement(icon_1.Icon, { className: "uxf-cms-breadcrumbs__divide-icon", name: "angleRight", size: 16 }),
16
- item.href ? (react_1.default.createElement(link_1.default, { href: item.href, className: "uxf-cms-breadcrumbs__link" },
16
+ react_1.default.createElement(hide_1.Hide, { when: index === 0 },
17
+ react_1.default.createElement(icon_1.Icon, { className: "uxf-cms-breadcrumbs__divide-icon", name: "angleRight", size: 16 })),
18
+ item.href ? (react_1.default.createElement(link_1.default, { className: "uxf-cms-breadcrumbs__link", href: item.href },
17
19
  react_1.default.createElement("span", null, item.title))) : (react_1.default.createElement("span", null, item.title)))))));
18
20
  };
19
21
  exports.Breadcrumbs = Breadcrumbs;
@@ -18,12 +18,12 @@ const Layout = (props) => {
18
18
  var _a, _b;
19
19
  return (react_1.default.createElement(react_1.default.Fragment, null,
20
20
  react_1.default.createElement(head_1.default, null,
21
- react_1.default.createElement("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }),
21
+ react_1.default.createElement("meta", { content: "width=device-width, initial-scale=1", name: "viewport" }),
22
22
  react_1.default.createElement("meta", { charSet: "utf-8" }),
23
23
  react_1.default.createElement("title", null, `${props.title} | ${config_1.config.get("app-name") || ""}`)),
24
24
  react_1.default.createElement("div", { className: "uxf-cms-layout" },
25
25
  react_1.default.createElement("div", { className: "uxf-cms-layout__wrapper" },
26
- react_1.default.createElement(sidebar_1.Sidebar, { menuConfiguration: props.menuConfiguration, Logo: props.Logo }),
26
+ react_1.default.createElement(sidebar_1.Sidebar, { Logo: props.Logo, menuConfiguration: props.menuConfiguration }),
27
27
  react_1.default.createElement("main", { className: `uxf-cms-layout__main ${(_a = props.mainClassName) !== null && _a !== void 0 ? _a : ""}`, style: { "--drawer-width": (0, rem_1.rem)(styles_1.drawerWidth) } },
28
28
  props.loading ? (react_1.default.createElement("div", { className: "uxf-cms-layout__loading" },
29
29
  react_1.default.createElement("div", { className: "uxf-cms-layout__loading-inner" },
@@ -32,7 +32,7 @@ const Layout = (props) => {
32
32
  props.CustomHeader ? (props.CustomHeader) : (react_1.default.createElement("div", { className: `${props.Header ? "uxf-cms-layout__header" : ""} ${props.stickyHeader ? "uxf-cms-layout__header--sticky" : ""}` },
33
33
  props.ToolbarRight && (react_1.default.createElement("div", { className: "uxf-cms-layout__toolbar" }, props.ToolbarRight)),
34
34
  props.MessageBar,
35
- react_1.default.createElement(layout_container_1.LayoutContainer, { type: (_b = props.headerContainerType) !== null && _b !== void 0 ? _b : props.containerType, className: "uxf-cms-layout__container--basic" },
35
+ react_1.default.createElement(layout_container_1.LayoutContainer, { className: "uxf-cms-layout__container--basic", type: (_b = props.headerContainerType) !== null && _b !== void 0 ? _b : props.containerType },
36
36
  react_1.default.createElement("div", { className: "uxf-cms-layout__avatar-title-wrapper" },
37
37
  props.Avatar,
38
38
  react_1.default.createElement("div", { className: "uxf-cms-layout__breadcrumbs-title-wrapper" },
@@ -31,11 +31,11 @@ const menu_1 = require("../menu");
31
31
  const mobile_bar_1 = require("../menu/mobile-bar");
32
32
  const user_menu_1 = require("../menu/ui/user-menu");
33
33
  const styles_1 = require("./styles");
34
- const uxfLogo = (react_1.default.createElement("svg", { width: "134", height: "30", viewBox: "0 0 179 40" },
35
- react_1.default.createElement("path", { fill: "#FFF", fillRule: "evenodd", d: "M33.563 12.874a9.103 9.103 0 0 0 0-12.874L20.69 12.874l.107.105a9.103 9.103 0 0 0 12.766-.105Zm-20.69-6.437a9.103 9.103 0 0 1 .106 12.766l-.105.107L0 6.437a9.103 9.103 0 0 1 12.874 0ZM40 33.563 27.127 20.69l-.106.107a9.103 9.103 0 0 0 12.98 12.766Zm-20.69-6.437-.107-.105A9.103 9.103 0 0 0 6.437 40l12.874-12.874Z", clipRule: "evenodd" }),
36
- react_1.default.createElement("path", { fill: "#FFF", fillRule: "evenodd", d: "m84.325 7.295 5.133 8.675h.199l5.158-8.675h6.078l-7.768 12.727 7.942 12.727h-6.19l-5.22-8.687h-.199l-5.22 8.687h-6.165l7.967-12.727-7.818-12.727h6.103Zm-24.194 0v16.07c0 .97.214 1.832.64 2.586a4.58 4.58 0 0 0 1.809 1.777c.779.431 1.686.647 2.722.647 1.044 0 1.953-.216 2.728-.647a4.591 4.591 0 0 0 1.802-1.777c.427-.754.64-1.616.64-2.585V7.296h5.382v16.53c0 1.856-.441 3.48-1.324 4.872-.882 1.392-2.115 2.475-3.697 3.25-1.583.775-3.426 1.162-5.531 1.162-2.113 0-3.96-.387-5.543-1.162-1.583-.775-2.813-1.858-3.692-3.25-.878-1.392-1.317-3.016-1.317-4.872V7.296h5.381ZM170.25 13.41c2.411 0 4.311.51 5.698 1.529 1.388 1.019 2.198 2.407 2.43 4.164l-4.847.298a2.555 2.555 0 0 0-.534-1.125 2.942 2.942 0 0 0-1.075-.808c-.444-.203-.972-.304-1.585-.304-.821 0-1.512.172-2.076.515-.563.344-.845.802-.845 1.374 0 .456.182.84.547 1.156.364.315.99.567 1.877.758l3.455.696c1.856.381 3.24.994 4.151 1.84.912.845 1.367 1.955 1.367 3.33 0 1.252-.366 2.35-1.1 3.294-.733.945-1.736 1.68-3.007 2.206-1.272.526-2.737.79-4.394.79-2.527 0-4.539-.529-6.034-1.585-1.496-1.057-2.372-2.496-2.629-4.32l5.208-.273c.157.77.538 1.357 1.143 1.759.605.402 1.38.603 2.324.603.928 0 1.676-.18 2.244-.54.567-.361.855-.827.864-1.4-.009-.48-.212-.875-.609-1.186-.398-.31-1.011-.55-1.84-.715l-3.306-.659c-1.864-.372-3.25-1.019-4.157-1.938-.908-.92-1.361-2.093-1.361-3.518 0-1.226.333-2.283 1-3.17.667-.886 1.608-1.57 2.821-2.05 1.214-.48 2.637-.72 4.27-.72Zm-36.686.373a12.285 12.285 0 0 0-3.051-.373c-1.525 0-2.865.23-4.021.69-1.156.46-2.098 1.114-2.827 1.964-.73.849-1.219 1.854-1.467 3.014l4.897.397c.182-.63.555-1.153 1.119-1.572.563-.418 1.321-.627 2.274-.627.903 0 1.601.215 2.094.646.493.43.74 1.04.74 1.827v.075c0 .405-.153.712-.46.92-.307.206-.8.362-1.479.465-.68.104-1.574.214-2.685.33-.944.09-1.845.248-2.703.472a7.698 7.698 0 0 0-2.293.994 4.727 4.727 0 0 0-1.591 1.74c-.39.721-.584 1.612-.584 2.673 0 1.259.275 2.31.826 3.15a5.147 5.147 0 0 0 2.256 1.902c.953.427 2.038.64 3.257.64.944 0 1.777-.126 2.498-.38a5.55 5.55 0 0 0 1.852-1.055 5.31 5.31 0 0 0 1.23-1.573h.149v2.648h5.022V19.873c0-1.135-.22-2.11-.659-2.927a5.655 5.655 0 0 0-1.796-2.007 8.039 8.039 0 0 0-2.598-1.156Zm-13.424-2.05V7.294h-16.853v25.454h5.381V22.235h10.354v-4.438h-10.354v-6.065h11.472Zm32.603 1.677c1.326 0 2.482.29 3.468.87.986.58 1.753 1.407 2.3 2.48.546 1.073.82 2.35.82 3.834V32.75h-5.295V21.539c.008-1.169-.29-2.082-.895-2.74-.605-.66-1.437-.989-2.498-.989-.713 0-1.34.153-1.883.46a3.166 3.166 0 0 0-1.268 1.336c-.302.584-.458 1.286-.466 2.107V32.75h-5.295V13.659h5.047v3.368H147a5.358 5.358 0 0 1 2.126-2.641c.994-.65 2.2-.976 3.616-.976Zm-20.061 10.782c.286-.087.512-.184.678-.292v2.026c0 .671-.17 1.272-.51 1.802-.34.53-.808.951-1.404 1.262-.597.31-1.285.466-2.064.466-.812 0-1.481-.189-2.007-.566-.526-.377-.789-.925-.789-1.646 0-.497.128-.914.385-1.25.257-.335.617-.602 1.082-.801a6.547 6.547 0 0 1 1.628-.435l.969-.143a24.15 24.15 0 0 0 1.069-.186c.356-.071.677-.15.963-.237Z", clipRule: "evenodd" })));
34
+ const uxfLogo = (react_1.default.createElement("svg", { height: "30", viewBox: "0 0 179 40", width: "134" },
35
+ react_1.default.createElement("path", { clipRule: "evenodd", d: "M33.563 12.874a9.103 9.103 0 0 0 0-12.874L20.69 12.874l.107.105a9.103 9.103 0 0 0 12.766-.105Zm-20.69-6.437a9.103 9.103 0 0 1 .106 12.766l-.105.107L0 6.437a9.103 9.103 0 0 1 12.874 0ZM40 33.563 27.127 20.69l-.106.107a9.103 9.103 0 0 0 12.98 12.766Zm-20.69-6.437-.107-.105A9.103 9.103 0 0 0 6.437 40l12.874-12.874Z", fill: "#FFF", fillRule: "evenodd" }),
36
+ react_1.default.createElement("path", { clipRule: "evenodd", d: "m84.325 7.295 5.133 8.675h.199l5.158-8.675h6.078l-7.768 12.727 7.942 12.727h-6.19l-5.22-8.687h-.199l-5.22 8.687h-6.165l7.967-12.727-7.818-12.727h6.103Zm-24.194 0v16.07c0 .97.214 1.832.64 2.586a4.58 4.58 0 0 0 1.809 1.777c.779.431 1.686.647 2.722.647 1.044 0 1.953-.216 2.728-.647a4.591 4.591 0 0 0 1.802-1.777c.427-.754.64-1.616.64-2.585V7.296h5.382v16.53c0 1.856-.441 3.48-1.324 4.872-.882 1.392-2.115 2.475-3.697 3.25-1.583.775-3.426 1.162-5.531 1.162-2.113 0-3.96-.387-5.543-1.162-1.583-.775-2.813-1.858-3.692-3.25-.878-1.392-1.317-3.016-1.317-4.872V7.296h5.381ZM170.25 13.41c2.411 0 4.311.51 5.698 1.529 1.388 1.019 2.198 2.407 2.43 4.164l-4.847.298a2.555 2.555 0 0 0-.534-1.125 2.942 2.942 0 0 0-1.075-.808c-.444-.203-.972-.304-1.585-.304-.821 0-1.512.172-2.076.515-.563.344-.845.802-.845 1.374 0 .456.182.84.547 1.156.364.315.99.567 1.877.758l3.455.696c1.856.381 3.24.994 4.151 1.84.912.845 1.367 1.955 1.367 3.33 0 1.252-.366 2.35-1.1 3.294-.733.945-1.736 1.68-3.007 2.206-1.272.526-2.737.79-4.394.79-2.527 0-4.539-.529-6.034-1.585-1.496-1.057-2.372-2.496-2.629-4.32l5.208-.273c.157.77.538 1.357 1.143 1.759.605.402 1.38.603 2.324.603.928 0 1.676-.18 2.244-.54.567-.361.855-.827.864-1.4-.009-.48-.212-.875-.609-1.186-.398-.31-1.011-.55-1.84-.715l-3.306-.659c-1.864-.372-3.25-1.019-4.157-1.938-.908-.92-1.361-2.093-1.361-3.518 0-1.226.333-2.283 1-3.17.667-.886 1.608-1.57 2.821-2.05 1.214-.48 2.637-.72 4.27-.72Zm-36.686.373a12.285 12.285 0 0 0-3.051-.373c-1.525 0-2.865.23-4.021.69-1.156.46-2.098 1.114-2.827 1.964-.73.849-1.219 1.854-1.467 3.014l4.897.397c.182-.63.555-1.153 1.119-1.572.563-.418 1.321-.627 2.274-.627.903 0 1.601.215 2.094.646.493.43.74 1.04.74 1.827v.075c0 .405-.153.712-.46.92-.307.206-.8.362-1.479.465-.68.104-1.574.214-2.685.33-.944.09-1.845.248-2.703.472a7.698 7.698 0 0 0-2.293.994 4.727 4.727 0 0 0-1.591 1.74c-.39.721-.584 1.612-.584 2.673 0 1.259.275 2.31.826 3.15a5.147 5.147 0 0 0 2.256 1.902c.953.427 2.038.64 3.257.64.944 0 1.777-.126 2.498-.38a5.55 5.55 0 0 0 1.852-1.055 5.31 5.31 0 0 0 1.23-1.573h.149v2.648h5.022V19.873c0-1.135-.22-2.11-.659-2.927a5.655 5.655 0 0 0-1.796-2.007 8.039 8.039 0 0 0-2.598-1.156Zm-13.424-2.05V7.294h-16.853v25.454h5.381V22.235h10.354v-4.438h-10.354v-6.065h11.472Zm32.603 1.677c1.326 0 2.482.29 3.468.87.986.58 1.753 1.407 2.3 2.48.546 1.073.82 2.35.82 3.834V32.75h-5.295V21.539c.008-1.169-.29-2.082-.895-2.74-.605-.66-1.437-.989-2.498-.989-.713 0-1.34.153-1.883.46a3.166 3.166 0 0 0-1.268 1.336c-.302.584-.458 1.286-.466 2.107V32.75h-5.295V13.659h5.047v3.368H147a5.358 5.358 0 0 1 2.126-2.641c.994-.65 2.2-.976 3.616-.976Zm-20.061 10.782c.286-.087.512-.184.678-.292v2.026c0 .671-.17 1.272-.51 1.802-.34.53-.808.951-1.404 1.262-.597.31-1.285.466-2.064.466-.812 0-1.481-.189-2.007-.566-.526-.377-.789-.925-.789-1.646 0-.497.128-.914.385-1.25.257-.335.617-.602 1.082-.801a6.547 6.547 0 0 1 1.628-.435l.969-.143a24.15 24.15 0 0 0 1.069-.186c.356-.071.677-.15.963-.237Z", fill: "#FFF", fillRule: "evenodd" })));
37
37
  const Sidebar = (props) => {
38
- var _a, _b;
38
+ var _a, _b, _c;
39
39
  const [deviceHeight, setDeviceHeight] = (0, react_1.useState)(0);
40
40
  const [isMenuOpen, setIsMenuOpen] = (0, react_1.useState)(false);
41
41
  const toggleMenu = () => setIsMenuOpen((prev) => !prev);
@@ -67,7 +67,7 @@ const Sidebar = (props) => {
67
67
  react_1.default.createElement("div", { className: `uxf-cms-sidebar__content ${isMenuOpen ? "uxf-cms-sidebar__content--open" : "uxf-cms-sidebar__content--closed"}`, style: { "--device-height": (0, rem_1.rem)(deviceHeight) } },
68
68
  react_1.default.createElement("div", { className: "uxf-cms-sidebar__logo" }, (_b = props.Logo) !== null && _b !== void 0 ? _b : uxfLogo),
69
69
  props.menuConfiguration && props.menuConfiguration.length > 0 && (react_1.default.createElement(react_1.default.Fragment, null,
70
- react_1.default.createElement("div", { className: `uxf-cms-sidebar__nav ${props.menuConfiguration[0].type === "super-section"
70
+ react_1.default.createElement("div", { className: `uxf-cms-sidebar__nav ${((_c = props.menuConfiguration.at(0)) === null || _c === void 0 ? void 0 : _c.type) === "super-section"
71
71
  ? "uxf-cms-sidebar__nav--super-section"
72
72
  : ""}` },
73
73
  react_1.default.createElement(menu_1.Menu, { menu: props.menuConfiguration })),
@@ -5,6 +5,15 @@ export type LayoutContainerType = "fullWidth" | "wide" | "narrow" | "none";
5
5
  export interface LayoutContainerProps extends HTMLAttributes<HTMLDivElement> {
6
6
  type?: LayoutContainerType;
7
7
  }
8
+ export interface AppBarProps {
9
+ Logo?: ReactNode;
10
+ ToolbarRight?: ReactNode;
11
+ }
12
+ export interface SidebarProps {
13
+ Logo?: ReactNode;
14
+ menuConfiguration?: MenuItem[];
15
+ CustomSidebar?: ReactElement;
16
+ }
8
17
  export type LayoutProps = SidebarProps & {
9
18
  Avatar?: ReactNode;
10
19
  children?: ReactNode;
@@ -24,12 +33,3 @@ export type LayoutProps = SidebarProps & {
24
33
  stickyHeader?: boolean;
25
34
  CustomHeader?: ReactNode;
26
35
  };
27
- export interface AppBarProps {
28
- Logo?: ReactNode;
29
- ToolbarRight?: ReactNode;
30
- }
31
- export interface SidebarProps {
32
- Logo?: ReactNode;
33
- menuConfiguration?: MenuItem[];
34
- CustomSidebar?: ReactElement;
35
- }
@@ -1,20 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTableLink = exports.createUserMenu = exports.createExternalLink = exports.createLink = exports.createSection = exports.createSuperSection = exports.createCustomContent = void 0;
3
+ exports.createCustomContent = createCustomContent;
4
+ exports.createSuperSection = createSuperSection;
5
+ exports.createSection = createSection;
6
+ exports.createLink = createLink;
7
+ exports.createExternalLink = createExternalLink;
8
+ exports.createUserMenu = createUserMenu;
9
+ exports.createTableLink = createTableLink;
4
10
  const active_item_resolver_1 = require("./active-item-resolver");
5
11
  const model_1 = require("./model");
6
12
  function createCustomContent(title, content) {
7
13
  return model_1.MenuItem.create(title, "custom").setContent(content);
8
14
  }
9
- exports.createCustomContent = createCustomContent;
10
15
  function createSuperSection(title, children) {
11
16
  return model_1.MenuItem.create(title, "super-section").setChildren(children);
12
17
  }
13
- exports.createSuperSection = createSuperSection;
14
18
  function createSection(title, icon, children) {
15
19
  return model_1.MenuItem.create(title, "section").setIcon(icon).setChildren(children);
16
20
  }
17
- exports.createSection = createSection;
18
21
  function createLink(title, routeName, routeParams, icon, endElement) {
19
22
  return model_1.MenuItem.create(title, "link")
20
23
  .setRoute(routeName, routeParams)
@@ -22,15 +25,12 @@ function createLink(title, routeName, routeParams, icon, endElement) {
22
25
  .setEndElement(endElement)
23
26
  .setActiveResolver(active_item_resolver_1.ActiveItemResolver.anyOf([routeName]));
24
27
  }
25
- exports.createLink = createLink;
26
28
  function createExternalLink(title, href, icon, endElement) {
27
29
  return model_1.MenuItem.create(title, "link").setIsExternal(true).setIcon(icon).setEndElement(endElement).setUrl(href);
28
30
  }
29
- exports.createExternalLink = createExternalLink;
30
31
  function createUserMenu(userMenuData, children) {
31
32
  return model_1.MenuItem.create("Můj profil", "super-section").setUserMenuData(userMenuData).setChildren(children);
32
33
  }
33
- exports.createUserMenu = createUserMenu;
34
34
  function createTableLink(title, entityAlias, icon, endElement) {
35
35
  return model_1.MenuItem.create(title, "link")
36
36
  .setRoute("cms/table", { entityAlias })
@@ -38,4 +38,3 @@ function createTableLink(title, entityAlias, icon, endElement) {
38
38
  .setEndElement(endElement)
39
39
  .setActiveResolver(active_item_resolver_1.ActiveItemResolver.tableLink());
40
40
  }
41
- exports.createTableLink = createTableLink;
@@ -36,19 +36,19 @@ const MobileBar = (props) => {
36
36
  mobileBarMenu.map((item, index) => {
37
37
  var _a, _b, _c, _d;
38
38
  if (item.children.length) {
39
- return (react_1.default.createElement(sub_menu_mobile_1.SubMenuMobile, { key: index, content: item.children, title: item.title },
40
- react_1.default.createElement("button", { type: "button", className: buttonClassName }, item.userMenuData ? (react_1.default.createElement(avatar_1.Avatar, { className: "uxf-cms-mobile-bar__avatar", letters: (0, get_avatar_user_letters_1.getAvatarUserLetters)(item.userMenuData.name), size: "sm", src: item.userMenuData.avatar, variant: "rounded" })) : (react_1.default.createElement(react_1.default.Fragment, null,
39
+ return (react_1.default.createElement(sub_menu_mobile_1.SubMenuMobile, { content: item.children, key: index, title: item.title },
40
+ react_1.default.createElement("button", { className: buttonClassName, type: "button" }, item.userMenuData ? (react_1.default.createElement(avatar_1.Avatar, { className: "uxf-cms-mobile-bar__avatar", letters: (0, get_avatar_user_letters_1.getAvatarUserLetters)(item.userMenuData.name), size: "sm", src: item.userMenuData.avatar, variant: "rounded" })) : (react_1.default.createElement(react_1.default.Fragment, null,
41
41
  react_1.default.createElement(icon_1.Icon, { name: (_a = item.icon) !== null && _a !== void 0 ? _a : "", size: 24 }),
42
- react_1.default.createElement(icon_1.Icon, { name: "caretDown", size: 16, className: "uxf-cms-mobile-bar__caret" }))))));
42
+ react_1.default.createElement(icon_1.Icon, { className: "uxf-cms-mobile-bar__caret", name: "caretDown", size: 16 }))))));
43
43
  }
44
44
  if (item.url || item.route) {
45
- return (react_1.default.createElement(link_1.default, { key: index, href: (_b = item.url) !== null && _b !== void 0 ? _b : config_1.container.get("route")(item.route, item.routeParams), target: item.isExternal ? "_blank" : undefined, rel: item.isExternal ? "noreferrer noopener" : undefined, className: buttonClassName },
45
+ return (react_1.default.createElement(link_1.default, { className: buttonClassName, href: (_b = item.url) !== null && _b !== void 0 ? _b : config_1.container.get("route")(item.route, item.routeParams), key: index, rel: item.isExternal ? "noreferrer noopener" : undefined, target: item.isExternal ? "_blank" : undefined },
46
46
  react_1.default.createElement(icon_1.Icon, { name: (_c = item.icon) !== null && _c !== void 0 ? _c : "user", size: 24 })));
47
47
  }
48
- return (react_1.default.createElement("span", { key: index, className: buttonClassName },
48
+ return (react_1.default.createElement("span", { className: buttonClassName, key: index },
49
49
  react_1.default.createElement(icon_1.Icon, { name: (_d = item.icon) !== null && _d !== void 0 ? _d : "user", size: 24 })));
50
50
  }),
51
- react_1.default.createElement("button", { type: "button", className: buttonClassName, onClick: props.toggleMenu },
51
+ react_1.default.createElement("button", { className: buttonClassName, onClick: props.toggleMenu, type: "button" },
52
52
  react_1.default.createElement(icon_1.Icon, { name: "bars", size: 24 }))));
53
53
  };
54
54
  exports.MobileBar = MobileBar;
package/lib/menu/model.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MenuItem = void 0;
4
+ const empty_array_1 = require("@uxf/core/constants/empty-array");
5
+ const is_not_nil_1 = require("@uxf/core/utils/is-not-nil");
4
6
  class MenuItem {
5
7
  static create(title, type) {
6
8
  return new MenuItem(title, type);
@@ -23,7 +25,7 @@ class MenuItem {
23
25
  return this;
24
26
  }
25
27
  setChildren(children) {
26
- this._children = children !== null && children !== void 0 ? children : [];
28
+ this._children = children !== null && children !== void 0 ? children : empty_array_1.EMPTY_ARRAY;
27
29
  return this;
28
30
  }
29
31
  setRoute(route, routeParams) {
@@ -52,7 +54,7 @@ class MenuItem {
52
54
  return this;
53
55
  }
54
56
  isActive(router, activeRoute) {
55
- return !!(this._activeItemResolver && this._activeItemResolver(router, activeRoute));
57
+ return (0, is_not_nil_1.isNotNil)(this._activeItemResolver && this._activeItemResolver(router, activeRoute));
56
58
  }
57
59
  hasActiveChildren(router, activeRoute) {
58
60
  return this.children.some((item) => item.isActive(router, activeRoute));
@@ -1,3 +1,3 @@
1
1
  import { ReactElement } from "react";
2
2
  import { ListItemProps } from "./types";
3
- export declare const ListItem: <T extends Record<string, any>>(props: ListItemProps<T>) => ReactElement;
3
+ export declare function ListItem<T extends Record<string, any>>(props: ListItemProps<T>): ReactElement;