@uxf/cms 10.0.0-beta.63 → 10.0.0-beta.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
1
  import { MenuItem, UserMenuData } from "./model";
2
2
  import { IconName } from "@uxf/ui/icon/types";
3
- import { ReactNode } from "react";
3
+ import { ReactElement, ReactNode } from "react";
4
4
  export declare function createCustomContent(title: string, content: ReactNode): MenuItem;
5
5
  export declare function createSuperSection(title: string, children?: MenuItem[]): MenuItem;
6
6
  export declare function createSection(title: string, icon?: IconName, children?: MenuItem[]): MenuItem;
7
- export declare function createLink(title: string, routeName: string, routeParams?: any, icon?: IconName): MenuItem;
8
- export declare function createExternalLink(title: string, href: string, icon?: IconName): MenuItem;
7
+ export declare function createLink(title: string, routeName: string, routeParams?: any, icon?: IconName, endElement?: ReactElement): MenuItem;
8
+ export declare function createExternalLink(title: string, href: string, icon?: IconName, endElement?: ReactElement): MenuItem;
9
9
  export declare function createUserMenu(userMenuData: UserMenuData, children?: MenuItem[]): MenuItem;
10
- export declare function createTableLink(title: string, entityAlias: string, icon?: IconName): MenuItem;
10
+ export declare function createTableLink(title: string, entityAlias: string, icon?: IconName, endElement?: ReactElement): MenuItem;
@@ -15,25 +15,27 @@ function createSection(title, icon, children) {
15
15
  return model_1.MenuItem.create(title, "section").setIcon(icon).setChildren(children);
16
16
  }
17
17
  exports.createSection = createSection;
18
- function createLink(title, routeName, routeParams, icon) {
18
+ function createLink(title, routeName, routeParams, icon, endElement) {
19
19
  return model_1.MenuItem.create(title, "link")
20
20
  .setRoute(routeName, routeParams)
21
21
  .setIcon(icon)
22
+ .setEndElement(endElement)
22
23
  .setActiveResolver(active_item_resolver_1.ActiveItemResolver.anyOf([routeName]));
23
24
  }
24
25
  exports.createLink = createLink;
25
- function createExternalLink(title, href, icon) {
26
- return model_1.MenuItem.create(title, "link").setIsExternal(true).setIcon(icon).setUrl(href);
26
+ function createExternalLink(title, href, icon, endElement) {
27
+ return model_1.MenuItem.create(title, "link").setIsExternal(true).setIcon(icon).setEndElement(endElement).setUrl(href);
27
28
  }
28
29
  exports.createExternalLink = createExternalLink;
29
30
  function createUserMenu(userMenuData, children) {
30
31
  return model_1.MenuItem.create("Můj profil", "super-section").setUserMenuData(userMenuData).setChildren(children);
31
32
  }
32
33
  exports.createUserMenu = createUserMenu;
33
- function createTableLink(title, entityAlias, icon) {
34
+ function createTableLink(title, entityAlias, icon, endElement) {
34
35
  return model_1.MenuItem.create(title, "link")
35
36
  .setRoute("cms/table", { entityAlias })
36
37
  .setIcon(icon)
38
+ .setEndElement(endElement)
37
39
  .setActiveResolver(active_item_resolver_1.ActiveItemResolver.tableLink());
38
40
  }
39
41
  exports.createTableLink = createTableLink;
@@ -2,7 +2,7 @@ import { LoggedUser } from "../../config/container";
2
2
  import { Resolver } from "./types";
3
3
  import { NextRouter } from "next/router";
4
4
  import { IconName } from "@uxf/ui/icon/types";
5
- import { ReactNode } from "react";
5
+ import { ReactElement, ReactNode } from "react";
6
6
  type ItemType = "custom" | "super-section" | "section" | "link";
7
7
  export type UserMenuData = {
8
8
  avatar?: string;
@@ -18,6 +18,7 @@ export declare class MenuItem {
18
18
  private _routeParams?;
19
19
  private _isExternal?;
20
20
  private _icon?;
21
+ private _endElement?;
21
22
  private _activeItemResolver?;
22
23
  private _allowedRoles?;
23
24
  private _content?;
@@ -26,6 +27,7 @@ export declare class MenuItem {
26
27
  constructor(title: string, type: ItemType);
27
28
  setContent(content: ReactNode): MenuItem;
28
29
  setIcon(icon?: IconName): MenuItem;
30
+ setEndElement(endElement?: ReactElement): MenuItem;
29
31
  setChildren(children?: MenuItem[]): MenuItem;
30
32
  setRoute(route: string, routeParams?: object): MenuItem;
31
33
  setUrl(url: string): MenuItem;
@@ -45,6 +47,7 @@ export declare class MenuItem {
45
47
  get routeParams(): any;
46
48
  get isExternal(): boolean | undefined;
47
49
  get icon(): IconName | undefined;
50
+ get endElement(): ReactElement | undefined;
48
51
  get allowedRoles(): string[] | undefined;
49
52
  get content(): ReactNode;
50
53
  get userMenuData(): UserMenuData | undefined;
package/lib/menu/model.js CHANGED
@@ -18,6 +18,10 @@ class MenuItem {
18
18
  this._icon = icon;
19
19
  return this;
20
20
  }
21
+ setEndElement(endElement) {
22
+ this._endElement = endElement;
23
+ return this;
24
+ }
21
25
  setChildren(children) {
22
26
  this._children = children !== null && children !== void 0 ? children : [];
23
27
  return this;
@@ -91,6 +95,9 @@ class MenuItem {
91
95
  get icon() {
92
96
  return this._icon;
93
97
  }
98
+ get endElement() {
99
+ return this._endElement;
100
+ }
94
101
  get allowedRoles() {
95
102
  return this._allowedRoles;
96
103
  }
@@ -16,6 +16,7 @@ const ListItem = (props) => {
16
16
  const Content = (_b = props.children) !== null && _b !== void 0 ? _b : (react_1.default.createElement("div", { className: `uxf-cms-menu__item uxf-cms-menu__item--basic ${props.selected ? classes_1.CLASSES.IS_SELECTED : ""}` },
17
17
  react_1.default.createElement("div", { className: `uxf-cms-menu__icon-wrapper ${props.level === 1 ? "uxf-cms-menu__icon-wrapper--level-one" : ""}` }, !!props.icon && props.level !== 1 && react_1.default.createElement(icon_1.Icon, { name: props.icon, size: 16 })),
18
18
  react_1.default.createElement("div", { className: "uxf-cms-menu__item-label" }, props.label),
19
+ react_1.default.createElement("div", { className: "uxf-cms-menu__item-end-element" }, props.endElement),
19
20
  hasSubMenu && (react_1.default.createElement(icon_1.Icon, { name: "caretDown", size: 16, className: `uxf-cms-menu__caret ${!props.isOpen ? classes_1.CLASSES.IS_OPEN : ""}` }))));
20
21
  // eslint-disable-next-line react/destructuring-assignment
21
22
  const Button = ({ className }) => (react_1.default.createElement("button", { type: "button", onClick: props.toggle, className: className }, Content));
@@ -3,16 +3,17 @@ import { IconName } from "@uxf/ui/icon/types";
3
3
  import { MenuItem } from "../../model";
4
4
  export interface ListItemProps<RouteList> {
5
5
  children?: ReactElement;
6
+ endElement?: ReactElement;
7
+ href?: string;
6
8
  icon?: IconName;
9
+ isExternal?: boolean;
10
+ isInitiallyOpen?: boolean;
11
+ isOpen?: boolean;
7
12
  label: string;
8
13
  level?: number;
9
14
  params?: any;
10
15
  route?: keyof RouteList;
11
16
  selected?: boolean;
12
- href?: string;
13
17
  subMenu?: MenuItem[];
14
- isOpen?: boolean;
15
- isInitiallyOpen?: boolean;
16
18
  toggle?: () => void;
17
- isExternal?: boolean;
18
19
  }
@@ -46,10 +46,10 @@ const MenuItem = (props) => {
46
46
  return null;
47
47
  }
48
48
  return (react_1.default.createElement("div", { className: "uxf-cms-menu__item-wrapper uxf-cms-menu__item-wrapper--basic" },
49
- react_1.default.createElement(list_item_1.ListItem, { label: props.item.title, icon: props.item.icon, href: (_a = props.item.url) !== null && _a !== void 0 ? _a : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.url, route: (_b = props.item.route) !== null && _b !== void 0 ? _b : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.route, params: (_d = (_c = props.item.routeParams) !== null && _c !== void 0 ? _c : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.routeParams) !== null && _d !== void 0 ? _d : null, selected: isActive, subMenu: props.item.children, isOpen: isSubmenuOpen, toggle: toggle, isInitiallyOpen: isInitiallyOpen, isExternal: props.item.isExternal }),
49
+ react_1.default.createElement(list_item_1.ListItem, { endElement: props.item.endElement, href: (_a = props.item.url) !== null && _a !== void 0 ? _a : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.url, icon: props.item.icon, isExternal: props.item.isExternal, isInitiallyOpen: isInitiallyOpen, isOpen: isSubmenuOpen, label: props.item.title, params: (_c = (_b = props.item.routeParams) !== null && _b !== void 0 ? _b : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.routeParams) !== null && _c !== void 0 ? _c : null, route: (_d = props.item.route) !== null && _d !== void 0 ? _d : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.route, selected: isActive, subMenu: props.item.children, toggle: toggle }),
50
50
  isSubmenuOpen && (react_1.default.createElement("div", { className: "uxf-cms-menu__submenu-list" }, visibleChildren.map((i) => {
51
51
  const isSelected = i.isActive(router, activeRoute);
52
- return (react_1.default.createElement(list_item_1.ListItem, { key: i.title, label: i.title, href: i.url, icon: i.icon, route: i.route, params: i.routeParams, level: 1, selected: isSelected, isExternal: i.isExternal }));
52
+ return (react_1.default.createElement(list_item_1.ListItem, { endElement: i.endElement, href: i.url, icon: i.icon, isExternal: i.isExternal, key: i.title, label: i.title, level: 1, params: i.routeParams, route: i.route, selected: isSelected }));
53
53
  })))));
54
54
  };
55
55
  exports.MenuItem = MenuItem;
@@ -40,7 +40,7 @@ const Component = (props) => {
40
40
  react_1.default.createElement("div", { className: "uxf-cms-user-menu__name" }, props.name),
41
41
  react_1.default.createElement("div", { className: "uxf-cms-user-menu__roles" }, props.roles)),
42
42
  react_1.default.createElement("div", { className: "uxf-cms-user-menu__caret-wrapper" }, hasSubmenu && (react_1.default.createElement(icon_1.Icon, { name: "caretDown", size: 16, className: `uxf-cms-user-menu__caret ${!isSubmenuOpen ? classes_1.CLASSES.IS_OPEN : ""}` })))),
43
- isSubmenuOpen && (react_1.default.createElement("div", { className: "uxf-cms-user-menu__sub-menu" }, props.submenu.map((item, index) => (react_1.default.createElement(list_item_1.ListItem, { href: item.url, label: item.title, route: item.route, params: item.routeParams, icon: item.icon, key: index })))))));
43
+ isSubmenuOpen && (react_1.default.createElement("div", { className: "uxf-cms-user-menu__sub-menu" }, props.submenu.map((item, index) => (react_1.default.createElement(list_item_1.ListItem, { endElement: item.endElement, href: item.url, label: item.title, route: item.route, params: item.routeParams, icon: item.icon, key: index })))))));
44
44
  };
45
45
  const UserMenu = (props) => {
46
46
  var _a, _b, _c, _d, _e, _f;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/cms",
3
- "version": "10.0.0-beta.63",
3
+ "version": "10.0.0-beta.64",
4
4
  "description": "UXF Cms",
5
5
  "author": "UXFans <dev@uxf.cz>",
6
6
  "homepage": "https://gitlab.com/uxf-npm/cms#readme",
@@ -68,6 +68,10 @@
68
68
  }
69
69
  }
70
70
 
71
+ &__item-end-element {
72
+ margin-left: auto;
73
+ }
74
+
71
75
  &__icon-wrapper {
72
76
  flex-shrink: 0;
73
77
  }