@orbe-agro/client-core 5.6.129 → 5.6.130
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/dist/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.js +17 -13
- package/dist/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.js.map +1 -1
- package/dist/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.stories.js +57 -1
- package/dist/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.stories.js.map +1 -1
- package/dist/@types/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.d.ts.map +1 -1
- package/dist/@types/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.stories.d.ts +2 -0
- package/dist/@types/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.stories.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/ticket/cadastros.submenu.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/ticket/relatorios.submenu.d.ts.map +1 -1
- package/dist/base/configs/navigation.config/submenu/ticket/cadastros.submenu.js +19 -7
- package/dist/base/configs/navigation.config/submenu/ticket/cadastros.submenu.js.map +1 -1
- package/dist/base/configs/navigation.config/submenu/ticket/relatorios.submenu.js +13 -1
- package/dist/base/configs/navigation.config/submenu/ticket/relatorios.submenu.js.map +1 -1
- package/lib/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.stories.tsx +67 -0
- package/lib/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.tsx +23 -16
- package/lib/base/configs/navigation.config/submenu/ticket/cadastros.submenu.ts +19 -7
- package/lib/base/configs/navigation.config/submenu/ticket/relatorios.submenu.ts +13 -0
- package/package.json +1 -1
|
@@ -44,20 +44,24 @@ const filterNavigationByAuthority = (navTree, userAuthority) => {
|
|
|
44
44
|
return acc;
|
|
45
45
|
}, []);
|
|
46
46
|
};
|
|
47
|
+
const compareNavigationOrder = (a, b) => {
|
|
48
|
+
const orderA = a.sortOrder ?? Number.MAX_SAFE_INTEGER;
|
|
49
|
+
const orderB = b.sortOrder ?? Number.MAX_SAFE_INTEGER;
|
|
50
|
+
if (orderA !== orderB) {
|
|
51
|
+
return orderA - orderB;
|
|
52
|
+
}
|
|
53
|
+
const titleCompare = a.title.localeCompare(b.title, "pt-BR");
|
|
54
|
+
if (titleCompare !== 0) {
|
|
55
|
+
return titleCompare;
|
|
56
|
+
}
|
|
57
|
+
return a.key.localeCompare(b.key, "pt-BR");
|
|
58
|
+
};
|
|
59
|
+
const sortNavigationNodeList = (navTree) => [...navTree].sort(compareNavigationOrder);
|
|
47
60
|
const sortNavigationRecursively = (navTree) => {
|
|
48
|
-
return
|
|
61
|
+
return sortNavigationNodeList(navTree).map((nav) => ({
|
|
49
62
|
...nav,
|
|
50
63
|
subMenu: nav.subMenu ? sortNavigationRecursively(nav.subMenu) : nav.subMenu
|
|
51
|
-
}))
|
|
52
|
-
if (a.sortOrder !== void 0 || b.sortOrder !== void 0) {
|
|
53
|
-
const orderA = a.sortOrder ?? Number.MAX_SAFE_INTEGER;
|
|
54
|
-
const orderB = b.sortOrder ?? Number.MAX_SAFE_INTEGER;
|
|
55
|
-
if (orderA !== orderB) {
|
|
56
|
-
return orderA - orderB;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return a.title.localeCompare(b.title, "pt-BR");
|
|
60
|
-
});
|
|
64
|
+
}));
|
|
61
65
|
};
|
|
62
66
|
const VerticalMenuContent = (props) => {
|
|
63
67
|
const {
|
|
@@ -79,7 +83,6 @@ const VerticalMenuContent = (props) => {
|
|
|
79
83
|
);
|
|
80
84
|
return sortNavigationRecursively(filteredTree);
|
|
81
85
|
}, [navigationTree, userAuthority]);
|
|
82
|
-
console.log("Filtered Navigation Tree:", filteredNavigationTree);
|
|
83
86
|
const { activedRoute } = useMenuActive(filteredNavigationTree, routeKey);
|
|
84
87
|
useEffect(() => {
|
|
85
88
|
if (activedRoute?.key) {
|
|
@@ -95,7 +98,8 @@ const VerticalMenuContent = (props) => {
|
|
|
95
98
|
};
|
|
96
99
|
const renderNavigation = (navTree, cascade = 0, indent) => {
|
|
97
100
|
const nextCascade = cascade + 1;
|
|
98
|
-
|
|
101
|
+
const orderedNavTree = sortNavigationNodeList(navTree);
|
|
102
|
+
return /* @__PURE__ */ jsx(Fragment, { children: orderedNavTree.map((nav) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
99
103
|
nav.type === NAV_ITEM_TYPE_ITEM && /* @__PURE__ */ jsx(
|
|
100
104
|
VerticalSingleMenuItem,
|
|
101
105
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerticalMenuContent.js","sources":["../../../../../lib/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.tsx"],"sourcesContent":["import { useState, useEffect, useMemo, Fragment } from 'react'\nimport Menu from '@/components/ui/Menu'\nimport VerticalSingleMenuItem from './VerticalSingleMenuItem'\nimport VerticalCollapsedMenuItem from './VerticalCollapsedMenuItem'\nimport { themeConfig } from '@/configs/theme.config'\nimport {\n NAV_ITEM_TYPE_TITLE,\n NAV_ITEM_TYPE_COLLAPSE,\n NAV_ITEM_TYPE_ITEM,\n} from '@/constants/navigation.constant'\nimport useMenuActive from '@/utils/hooks/useMenuActive'\nimport useTranslation from '@/utils/hooks/useTranslation'\nimport { Direction } from '@/@types/theme'\nimport type { NavigationTree } from '@/@types/navigation'\nimport type { TraslationFn } from '@/@types/common'\nimport { LinkRenderer } from '@/components/layouts/Layouts'\n\nexport interface VerticalMenuContentProps {\n collapsed?: boolean\n routeKey: string\n navigationTree?: NavigationTree[]\n onMenuItemClick?: () => void\n direction?: Direction\n translationSetup?: boolean\n userAuthority: string[]\n linkRenderer?: LinkRenderer\n}\n\nconst { MenuGroup } = Menu\n\nconst findAncestorKeys = (\n navTree: NavigationTree[],\n targetKey: string,\n): string[] | null => {\n for (const node of navTree) {\n if (node.key === targetKey) return []\n if (node.subMenu && node.subMenu.length > 0) {\n const found = findAncestorKeys(node.subMenu, targetKey)\n if (found !== null) return [node.key, ...found]\n }\n }\n return null\n}\n\nconst filterNavigationByAuthority = (\n navTree: NavigationTree[],\n userAuthority: string[],\n): NavigationTree[] => {\n return navTree.reduce((acc: NavigationTree[], nav) => {\n // Verifica se deve excluir o item quando o usuário possui alguma funcionalidade específica\n if (nav.excludeWhenHasPaths && nav.excludeWhenHasPaths.length > 0) {\n const shouldExclude = nav.excludeWhenHasPaths.some((path) =>\n userAuthority.includes(path),\n )\n if (shouldExclude) {\n return acc\n }\n }\n\n if (nav.subMenu && nav.subMenu.length > 0) {\n const filteredSubMenu = filterNavigationByAuthority(\n nav.subMenu,\n userAuthority,\n )\n if (filteredSubMenu.length > 0) {\n acc.push({ ...nav, subMenu: filteredSubMenu })\n }\n } else {\n if ((nav.path && userAuthority.includes(nav.path)) || !nav.path) {\n acc.push(nav)\n }\n }\n return acc\n }, [])\n}\n\nconst sortNavigationRecursively = (\n navTree: NavigationTree[],\n): NavigationTree[] => {\n return [...navTree]\n .map((nav) => ({\n ...nav,\n subMenu: nav.subMenu\n ? sortNavigationRecursively(nav.subMenu)\n : nav.subMenu,\n }))\n .sort((a, b) => {\n if (a.sortOrder !== undefined || b.sortOrder !== undefined) {\n const orderA = a.sortOrder ?? Number.MAX_SAFE_INTEGER\n const orderB = b.sortOrder ?? Number.MAX_SAFE_INTEGER\n\n if (orderA !== orderB) {\n return orderA - orderB\n }\n }\n\n return a.title.localeCompare(b.title, 'pt-BR')\n })\n}\n\nconst VerticalMenuContent = (props: VerticalMenuContentProps) => {\n const {\n collapsed,\n routeKey,\n navigationTree = [],\n onMenuItemClick,\n direction = themeConfig.direction,\n translationSetup,\n userAuthority,\n linkRenderer,\n } = props\n\n const { t } = useTranslation(!translationSetup)\n const [defaulExpandKey, setDefaulExpandKey] = useState<string[]>([])\n\n const filteredNavigationTree = useMemo(() => {\n const filteredTree = filterNavigationByAuthority(\n navigationTree,\n userAuthority,\n )\n\n return sortNavigationRecursively(filteredTree)\n }, [navigationTree, userAuthority])\n\n console.log('Filtered Navigation Tree:', filteredNavigationTree)\n\n const { activedRoute } = useMenuActive(filteredNavigationTree, routeKey)\n\n useEffect(() => {\n if (activedRoute?.key) {\n const ancestors = findAncestorKeys(\n filteredNavigationTree,\n activedRoute.key,\n )\n setDefaulExpandKey(ancestors ?? [])\n }\n }, [activedRoute?.key, filteredNavigationTree])\n\n const handleLinkClick = () => {\n onMenuItemClick?.()\n }\n\n const renderNavigation = (\n navTree: NavigationTree[],\n cascade: number = 0,\n indent?: boolean,\n ) => {\n const nextCascade = cascade + 1\n\n return (\n <>\n {navTree.map((nav) => (\n <Fragment key={nav.key}>\n {nav.type === NAV_ITEM_TYPE_ITEM && (\n <VerticalSingleMenuItem\n key={nav.key}\n currentKey={activedRoute?.key}\n parentKeys={defaulExpandKey}\n nav={nav}\n sideCollapsed={collapsed}\n direction={direction}\n indent={indent}\n renderAsIcon={cascade <= 0}\n showIcon={cascade <= 0}\n userAuthority={userAuthority}\n showTitle={\n nav.forceShowTitle ??\n (collapsed ? cascade >= 1 : cascade <= 1)\n }\n t={t as TraslationFn}\n onLinkClick={handleLinkClick}\n linkRenderer={linkRenderer}\n />\n )}\n {nav.type === NAV_ITEM_TYPE_COLLAPSE && (\n <VerticalCollapsedMenuItem\n key={nav.key}\n currentKey={activedRoute?.key}\n parentKeys={defaulExpandKey}\n nav={nav}\n sideCollapsed={collapsed}\n direction={direction}\n indent={nextCascade >= 2}\n dotIndent={nextCascade >= 2}\n renderAsIcon={nextCascade <= 1}\n userAuthority={userAuthority}\n t={t as TraslationFn}\n onLinkClick={onMenuItemClick}\n >\n {nav.subMenu &&\n nav.subMenu.length > 0 &&\n renderNavigation(\n nav.subMenu,\n nextCascade,\n true,\n )}\n </VerticalCollapsedMenuItem>\n )}\n {nav.type === NAV_ITEM_TYPE_TITLE && (\n <MenuGroup\n key={nav.key}\n label={t(nav.translateKey) || nav.title}\n >\n {nav.subMenu &&\n nav.subMenu.length > 0 &&\n renderNavigation(\n nav.subMenu,\n cascade,\n false,\n )}\n </MenuGroup>\n )}\n </Fragment>\n ))}\n </>\n )\n }\n\n return (\n <Menu\n className=\"px-4 pb-4\"\n sideCollapsed={collapsed}\n defaultActiveKeys={activedRoute?.key ? [activedRoute.key] : []}\n defaultExpandedKeys={defaulExpandKey}\n defaultCollapseActiveKeys={\n activedRoute?.parentKey ? [activedRoute.parentKey] : []\n }\n >\n {renderNavigation(filteredNavigationTree, 0)}\n </Menu>\n )\n}\n\nexport default VerticalMenuContent\n"],"names":["Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VerticalMenuContent.js","sources":["../../../../../lib/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.tsx"],"sourcesContent":["import { useState, useEffect, useMemo, Fragment } from 'react'\nimport Menu from '@/components/ui/Menu'\nimport VerticalSingleMenuItem from './VerticalSingleMenuItem'\nimport VerticalCollapsedMenuItem from './VerticalCollapsedMenuItem'\nimport { themeConfig } from '@/configs/theme.config'\nimport {\n NAV_ITEM_TYPE_TITLE,\n NAV_ITEM_TYPE_COLLAPSE,\n NAV_ITEM_TYPE_ITEM,\n} from '@/constants/navigation.constant'\nimport useMenuActive from '@/utils/hooks/useMenuActive'\nimport useTranslation from '@/utils/hooks/useTranslation'\nimport { Direction } from '@/@types/theme'\nimport type { NavigationTree } from '@/@types/navigation'\nimport type { TraslationFn } from '@/@types/common'\nimport { LinkRenderer } from '@/components/layouts/Layouts'\n\nexport interface VerticalMenuContentProps {\n collapsed?: boolean\n routeKey: string\n navigationTree?: NavigationTree[]\n onMenuItemClick?: () => void\n direction?: Direction\n translationSetup?: boolean\n userAuthority: string[]\n linkRenderer?: LinkRenderer\n}\n\nconst { MenuGroup } = Menu\n\nconst findAncestorKeys = (\n navTree: NavigationTree[],\n targetKey: string,\n): string[] | null => {\n for (const node of navTree) {\n if (node.key === targetKey) return []\n if (node.subMenu && node.subMenu.length > 0) {\n const found = findAncestorKeys(node.subMenu, targetKey)\n if (found !== null) return [node.key, ...found]\n }\n }\n return null\n}\n\nconst filterNavigationByAuthority = (\n navTree: NavigationTree[],\n userAuthority: string[],\n): NavigationTree[] => {\n return navTree.reduce((acc: NavigationTree[], nav) => {\n // Verifica se deve excluir o item quando o usuário possui alguma funcionalidade específica\n if (nav.excludeWhenHasPaths && nav.excludeWhenHasPaths.length > 0) {\n const shouldExclude = nav.excludeWhenHasPaths.some((path) =>\n userAuthority.includes(path),\n )\n if (shouldExclude) {\n return acc\n }\n }\n\n if (nav.subMenu && nav.subMenu.length > 0) {\n const filteredSubMenu = filterNavigationByAuthority(\n nav.subMenu,\n userAuthority,\n )\n if (filteredSubMenu.length > 0) {\n acc.push({ ...nav, subMenu: filteredSubMenu })\n }\n } else {\n if ((nav.path && userAuthority.includes(nav.path)) || !nav.path) {\n acc.push(nav)\n }\n }\n return acc\n }, [])\n}\n\nconst compareNavigationOrder = (a: NavigationTree, b: NavigationTree) => {\n const orderA = a.sortOrder ?? Number.MAX_SAFE_INTEGER\n const orderB = b.sortOrder ?? Number.MAX_SAFE_INTEGER\n\n if (orderA !== orderB) {\n return orderA - orderB\n }\n\n const titleCompare = a.title.localeCompare(b.title, 'pt-BR')\n\n if (titleCompare !== 0) {\n return titleCompare\n }\n\n return a.key.localeCompare(b.key, 'pt-BR')\n}\n\nconst sortNavigationNodeList = (navTree: NavigationTree[]): NavigationTree[] =>\n [...navTree].sort(compareNavigationOrder)\n\nconst sortNavigationRecursively = (\n navTree: NavigationTree[],\n): NavigationTree[] => {\n return sortNavigationNodeList(navTree)\n .map((nav) => ({\n ...nav,\n subMenu: nav.subMenu\n ? sortNavigationRecursively(nav.subMenu)\n : nav.subMenu,\n }))\n}\n\nconst VerticalMenuContent = (props: VerticalMenuContentProps) => {\n const {\n collapsed,\n routeKey,\n navigationTree = [],\n onMenuItemClick,\n direction = themeConfig.direction,\n translationSetup,\n userAuthority,\n linkRenderer,\n } = props\n\n const { t } = useTranslation(!translationSetup)\n const [defaulExpandKey, setDefaulExpandKey] = useState<string[]>([])\n\n const filteredNavigationTree = useMemo(() => {\n const filteredTree = filterNavigationByAuthority(\n navigationTree,\n userAuthority,\n )\n\n return sortNavigationRecursively(filteredTree)\n }, [navigationTree, userAuthority])\n\n const { activedRoute } = useMenuActive(filteredNavigationTree, routeKey)\n\n useEffect(() => {\n if (activedRoute?.key) {\n const ancestors = findAncestorKeys(\n filteredNavigationTree,\n activedRoute.key,\n )\n setDefaulExpandKey(ancestors ?? [])\n }\n }, [activedRoute?.key, filteredNavigationTree])\n\n const handleLinkClick = () => {\n onMenuItemClick?.()\n }\n\n const renderNavigation = (\n navTree: NavigationTree[],\n cascade: number = 0,\n indent?: boolean,\n ) => {\n const nextCascade = cascade + 1\n const orderedNavTree = sortNavigationNodeList(navTree)\n\n return (\n <>\n {orderedNavTree.map((nav) => (\n <Fragment key={nav.key}>\n {nav.type === NAV_ITEM_TYPE_ITEM && (\n <VerticalSingleMenuItem\n key={nav.key}\n currentKey={activedRoute?.key}\n parentKeys={defaulExpandKey}\n nav={nav}\n sideCollapsed={collapsed}\n direction={direction}\n indent={indent}\n renderAsIcon={cascade <= 0}\n showIcon={cascade <= 0}\n userAuthority={userAuthority}\n showTitle={\n nav.forceShowTitle ??\n (collapsed ? cascade >= 1 : cascade <= 1)\n }\n t={t as TraslationFn}\n onLinkClick={handleLinkClick}\n linkRenderer={linkRenderer}\n />\n )}\n {nav.type === NAV_ITEM_TYPE_COLLAPSE && (\n <VerticalCollapsedMenuItem\n key={nav.key}\n currentKey={activedRoute?.key}\n parentKeys={defaulExpandKey}\n nav={nav}\n sideCollapsed={collapsed}\n direction={direction}\n indent={nextCascade >= 2}\n dotIndent={nextCascade >= 2}\n renderAsIcon={nextCascade <= 1}\n userAuthority={userAuthority}\n t={t as TraslationFn}\n onLinkClick={onMenuItemClick}\n >\n {nav.subMenu &&\n nav.subMenu.length > 0 &&\n renderNavigation(\n nav.subMenu,\n nextCascade,\n true,\n )}\n </VerticalCollapsedMenuItem>\n )}\n {nav.type === NAV_ITEM_TYPE_TITLE && (\n <MenuGroup\n key={nav.key}\n label={t(nav.translateKey) || nav.title}\n >\n {nav.subMenu &&\n nav.subMenu.length > 0 &&\n renderNavigation(\n nav.subMenu,\n cascade,\n false,\n )}\n </MenuGroup>\n )}\n </Fragment>\n ))}\n </>\n )\n }\n\n return (\n <Menu\n className=\"px-4 pb-4\"\n sideCollapsed={collapsed}\n defaultActiveKeys={activedRoute?.key ? [activedRoute.key] : []}\n defaultExpandedKeys={defaulExpandKey}\n defaultCollapseActiveKeys={\n activedRoute?.parentKey ? [activedRoute.parentKey] : []\n }\n >\n {renderNavigation(filteredNavigationTree, 0)}\n </Menu>\n )\n}\n\nexport default VerticalMenuContent\n"],"names":["Fragment"],"mappings":"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"}
|
|
@@ -1,7 +1,41 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { BrowserRouter } from "react-router-dom";
|
|
3
3
|
import VerticalMenuContent from "./VerticalMenuContent.js";
|
|
4
|
-
import
|
|
4
|
+
import ticketNavigationConfig from "../../../../base/configs/navigation.config/modules.submenu/Ticket/ticket.navigation.js";
|
|
5
|
+
import { NAV_ITEM_TYPE_TITLE, NAV_ITEM_TYPE_ITEM, NAV_ITEM_TYPE_COLLAPSE } from "../../../constants/navigation.constant.js";
|
|
6
|
+
const collectAuthorityPaths = (navTree) => {
|
|
7
|
+
return navTree.reduce((acc, node) => {
|
|
8
|
+
if (node.path) {
|
|
9
|
+
acc.push(node.path);
|
|
10
|
+
}
|
|
11
|
+
if (node.subMenu?.length) {
|
|
12
|
+
acc.push(...collectAuthorityPaths(node.subMenu));
|
|
13
|
+
}
|
|
14
|
+
return acc;
|
|
15
|
+
}, []);
|
|
16
|
+
};
|
|
17
|
+
const ticketAuthority = Array.from(
|
|
18
|
+
new Set(collectAuthorityPaths(ticketNavigationConfig))
|
|
19
|
+
);
|
|
20
|
+
const ticketSubmenuAllExpanded = ticketNavigationConfig.map(
|
|
21
|
+
(menu) => {
|
|
22
|
+
if (menu.key !== "ticket") {
|
|
23
|
+
return menu;
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
...menu,
|
|
27
|
+
subMenu: menu.subMenu.map((subMenu) => {
|
|
28
|
+
if (subMenu.key === "ticket.relatorios" || subMenu.key === "ticket.cadastros") {
|
|
29
|
+
return {
|
|
30
|
+
...subMenu,
|
|
31
|
+
type: NAV_ITEM_TYPE_TITLE
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return subMenu;
|
|
35
|
+
})
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
);
|
|
5
39
|
const mockNavigationTree = [
|
|
6
40
|
{
|
|
7
41
|
key: "inicio",
|
|
@@ -221,12 +255,34 @@ const WithMenuClick = {
|
|
|
221
255
|
onMenuItemClick: () => alert("Menu item clicked!")
|
|
222
256
|
}
|
|
223
257
|
};
|
|
258
|
+
const TicketSubmenu = {
|
|
259
|
+
args: {
|
|
260
|
+
collapsed: false,
|
|
261
|
+
routeKey: "ticket",
|
|
262
|
+
navigationTree: ticketNavigationConfig,
|
|
263
|
+
userAuthority: ticketAuthority,
|
|
264
|
+
direction: "ltr",
|
|
265
|
+
translationSetup: true
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
const TicketSubmenuSortOrderStable = {
|
|
269
|
+
args: {
|
|
270
|
+
collapsed: false,
|
|
271
|
+
routeKey: "ticket",
|
|
272
|
+
navigationTree: ticketSubmenuAllExpanded,
|
|
273
|
+
userAuthority: ticketAuthority,
|
|
274
|
+
direction: "ltr",
|
|
275
|
+
translationSetup: true
|
|
276
|
+
}
|
|
277
|
+
};
|
|
224
278
|
export {
|
|
225
279
|
Collapsed,
|
|
226
280
|
Default,
|
|
227
281
|
LimitedAuthority,
|
|
228
282
|
MinimalNavigation,
|
|
229
283
|
RTLDirection,
|
|
284
|
+
TicketSubmenu,
|
|
285
|
+
TicketSubmenuSortOrderStable,
|
|
230
286
|
WithExpandedMenu,
|
|
231
287
|
WithMenuClick,
|
|
232
288
|
meta as default
|
package/dist/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.stories.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerticalMenuContent.stories.js","sources":["../../../../../lib/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react'\nimport { BrowserRouter } from 'react-router-dom'\nimport VerticalMenuContent from './VerticalMenuContent'\nimport type { NavigationTree } from '@/@types/navigation'\nimport {\n NAV_ITEM_TYPE_COLLAPSE,\n NAV_ITEM_TYPE_ITEM,\n} from '@/constants/navigation.constant'\n\nconst mockNavigationTree: NavigationTree[] = [\n {\n key: 'inicio',\n path: '/inicio',\n title: 'Início',\n translateKey: 'nav.inicio',\n icon: '',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/inicio'],\n subMenu: [],\n },\n {\n key: 'cadastros',\n path: '',\n title: 'Cadastros',\n translateKey: 'nav.cadastros',\n icon: '',\n type: NAV_ITEM_TYPE_COLLAPSE,\n authority: ['/cadastros'],\n subMenu: [\n {\n key: 'clientes',\n path: '/cadastros/clientes',\n title: 'Clientes',\n translateKey: 'nav.clientes',\n icon: '',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/cadastros/clientes'],\n subMenu: [],\n },\n {\n key: 'fornecedores',\n path: '/cadastros/fornecedores',\n title: 'Fornecedores',\n translateKey: 'nav.fornecedores',\n icon: '',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/cadastros/fornecedores'],\n subMenu: [],\n },\n ],\n },\n {\n key: 'relatorios',\n path: '/relatorios',\n title: 'Relatórios',\n translateKey: 'nav.relatorios',\n icon: 'ChartBarIcon',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/relatorios'],\n subMenu: [],\n },\n {\n key: 'configuracoes',\n path: '',\n title: 'Configurações',\n translateKey: 'nav.configuracoes',\n icon: '',\n type: NAV_ITEM_TYPE_COLLAPSE,\n authority: ['/configuracoes'],\n subMenu: [\n {\n key: 'perfil',\n path: '/configuracoes/perfil',\n title: 'Perfil',\n translateKey: 'nav.perfil',\n icon: '',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/configuracoes/perfil'],\n subMenu: [],\n },\n {\n key: 'integracoes',\n path: '',\n title: 'Integrações',\n translateKey: 'nav.integracoes',\n icon: '',\n type: NAV_ITEM_TYPE_COLLAPSE,\n authority: ['/configuracoes/integracoes'],\n subMenu: [\n {\n key: 'webhooks',\n path: '/configuracoes/integracoes/webhooks',\n title: 'Webhooks',\n translateKey: 'nav.webhooks',\n icon: 'WebhookIcon',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/configuracoes/integracoes/webhooks'],\n subMenu: [],\n },\n {\n key: 'lorem.ipsum',\n path: '/configuracoes/integracoes/lorem-ipsum',\n title: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',\n translateKey: 'nav.loremIpsum',\n icon: 'LoremIpsumIcon',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/configuracoes/integracoes/lorem-ipsum'],\n subMenu: [],\n },\n ],\n },\n ],\n },\n]\n\nconst allUserAuthority = [\n '/inicio',\n '/cadastros/clientes',\n '/cadastros/fornecedores',\n '/relatorios',\n '/configuracoes/perfil',\n '/configuracoes/integracoes/webhooks',\n '/configuracoes/integracoes/lorem-ipsum',\n]\n\nconst meta: Meta<typeof VerticalMenuContent> = {\n title: '@ecme/Template/VerticalMenuContent',\n component: VerticalMenuContent,\n parameters: {\n layout: 'padded',\n },\n tags: ['autodocs'],\n decorators: [\n (Story) => (\n <BrowserRouter>\n <Story />\n </BrowserRouter>\n ),\n ],\n argTypes: {\n collapsed: {\n control: 'boolean',\n },\n direction: {\n control: { type: 'select' },\n options: ['ltr', 'rtl'],\n },\n routeKey: {\n control: 'text',\n },\n },\n}\n\nexport default meta\ntype TStory = StoryObj<typeof VerticalMenuContent>\n\nexport const Default: TStory = {\n args: {\n collapsed: false,\n routeKey: '/inicio',\n navigationTree: mockNavigationTree,\n userAuthority: allUserAuthority,\n direction: 'ltr',\n translationSetup: true,\n },\n}\n\nexport const Collapsed: TStory = {\n args: {\n collapsed: true,\n routeKey: '/cadastros/clientes',\n navigationTree: mockNavigationTree,\n userAuthority: allUserAuthority,\n direction: 'ltr',\n translationSetup: true,\n },\n}\n\nexport const WithExpandedMenu: TStory = {\n args: {\n collapsed: false,\n routeKey: '/configuracoes/integracoes/webhooks',\n navigationTree: mockNavigationTree,\n userAuthority: allUserAuthority,\n direction: 'ltr',\n translationSetup: true,\n },\n}\n\nexport const LimitedAuthority: TStory = {\n args: {\n collapsed: false,\n routeKey: '/inicio',\n navigationTree: mockNavigationTree,\n userAuthority: ['/inicio', '/relatorios'],\n direction: 'ltr',\n translationSetup: true,\n },\n}\n\nexport const RTLDirection: TStory = {\n args: {\n collapsed: false,\n routeKey: '/inicio',\n navigationTree: mockNavigationTree,\n userAuthority: allUserAuthority,\n direction: 'rtl',\n translationSetup: true,\n },\n}\n\nexport const MinimalNavigation: TStory = {\n args: {\n collapsed: false,\n routeKey: '/inicio',\n navigationTree: [\n {\n key: 'inicio',\n path: '/inicio',\n title: 'Início',\n translateKey: 'nav.inicio',\n icon: '',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/inicio'],\n subMenu: [],\n },\n ],\n userAuthority: ['/inicio'],\n direction: 'ltr',\n translationSetup: true,\n },\n}\n\nexport const WithMenuClick: TStory = {\n args: {\n collapsed: false,\n routeKey: '/inicio',\n navigationTree: mockNavigationTree,\n userAuthority: allUserAuthority,\n direction: 'ltr',\n translationSetup: true,\n onMenuItemClick: () => alert('Menu item clicked!'),\n },\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VerticalMenuContent.stories.js","sources":["../../../../../lib/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react'\nimport { BrowserRouter } from 'react-router-dom'\nimport VerticalMenuContent from './VerticalMenuContent'\nimport type { NavigationTree } from '@/@types/navigation'\nimport ticketNavigationConfig from '@base/configs/navigation.config/modules.submenu/Ticket/ticket.navigation'\nimport {\n NAV_ITEM_TYPE_COLLAPSE,\n NAV_ITEM_TYPE_ITEM,\n NAV_ITEM_TYPE_TITLE,\n} from '@/constants/navigation.constant'\n\nconst collectAuthorityPaths = (navTree: NavigationTree[]): string[] => {\n return navTree.reduce((acc: string[], node) => {\n if (node.path) {\n acc.push(node.path)\n }\n\n if (node.subMenu?.length) {\n acc.push(...collectAuthorityPaths(node.subMenu))\n }\n\n return acc\n }, [])\n}\n\nconst ticketAuthority = Array.from(\n new Set(collectAuthorityPaths(ticketNavigationConfig)),\n)\n\nconst ticketSubmenuAllExpanded: NavigationTree[] = ticketNavigationConfig.map(\n (menu) => {\n if (menu.key !== 'ticket') {\n return menu\n }\n\n return {\n ...menu,\n subMenu: menu.subMenu.map((subMenu) => {\n if (\n subMenu.key === 'ticket.relatorios' ||\n subMenu.key === 'ticket.cadastros'\n ) {\n return {\n ...subMenu,\n type: NAV_ITEM_TYPE_TITLE,\n }\n }\n\n return subMenu\n }),\n }\n },\n)\n\nconst mockNavigationTree: NavigationTree[] = [\n {\n key: 'inicio',\n path: '/inicio',\n title: 'Início',\n translateKey: 'nav.inicio',\n icon: '',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/inicio'],\n subMenu: [],\n },\n {\n key: 'cadastros',\n path: '',\n title: 'Cadastros',\n translateKey: 'nav.cadastros',\n icon: '',\n type: NAV_ITEM_TYPE_COLLAPSE,\n authority: ['/cadastros'],\n subMenu: [\n {\n key: 'clientes',\n path: '/cadastros/clientes',\n title: 'Clientes',\n translateKey: 'nav.clientes',\n icon: '',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/cadastros/clientes'],\n subMenu: [],\n },\n {\n key: 'fornecedores',\n path: '/cadastros/fornecedores',\n title: 'Fornecedores',\n translateKey: 'nav.fornecedores',\n icon: '',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/cadastros/fornecedores'],\n subMenu: [],\n },\n ],\n },\n {\n key: 'relatorios',\n path: '/relatorios',\n title: 'Relatórios',\n translateKey: 'nav.relatorios',\n icon: 'ChartBarIcon',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/relatorios'],\n subMenu: [],\n },\n {\n key: 'configuracoes',\n path: '',\n title: 'Configurações',\n translateKey: 'nav.configuracoes',\n icon: '',\n type: NAV_ITEM_TYPE_COLLAPSE,\n authority: ['/configuracoes'],\n subMenu: [\n {\n key: 'perfil',\n path: '/configuracoes/perfil',\n title: 'Perfil',\n translateKey: 'nav.perfil',\n icon: '',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/configuracoes/perfil'],\n subMenu: [],\n },\n {\n key: 'integracoes',\n path: '',\n title: 'Integrações',\n translateKey: 'nav.integracoes',\n icon: '',\n type: NAV_ITEM_TYPE_COLLAPSE,\n authority: ['/configuracoes/integracoes'],\n subMenu: [\n {\n key: 'webhooks',\n path: '/configuracoes/integracoes/webhooks',\n title: 'Webhooks',\n translateKey: 'nav.webhooks',\n icon: 'WebhookIcon',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/configuracoes/integracoes/webhooks'],\n subMenu: [],\n },\n {\n key: 'lorem.ipsum',\n path: '/configuracoes/integracoes/lorem-ipsum',\n title: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',\n translateKey: 'nav.loremIpsum',\n icon: 'LoremIpsumIcon',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/configuracoes/integracoes/lorem-ipsum'],\n subMenu: [],\n },\n ],\n },\n ],\n },\n]\n\nconst allUserAuthority = [\n '/inicio',\n '/cadastros/clientes',\n '/cadastros/fornecedores',\n '/relatorios',\n '/configuracoes/perfil',\n '/configuracoes/integracoes/webhooks',\n '/configuracoes/integracoes/lorem-ipsum',\n]\n\nconst meta: Meta<typeof VerticalMenuContent> = {\n title: '@ecme/Template/VerticalMenuContent',\n component: VerticalMenuContent,\n parameters: {\n layout: 'padded',\n },\n tags: ['autodocs'],\n decorators: [\n (Story) => (\n <BrowserRouter>\n <Story />\n </BrowserRouter>\n ),\n ],\n argTypes: {\n collapsed: {\n control: 'boolean',\n },\n direction: {\n control: { type: 'select' },\n options: ['ltr', 'rtl'],\n },\n routeKey: {\n control: 'text',\n },\n },\n}\n\nexport default meta\ntype TStory = StoryObj<typeof VerticalMenuContent>\n\nexport const Default: TStory = {\n args: {\n collapsed: false,\n routeKey: '/inicio',\n navigationTree: mockNavigationTree,\n userAuthority: allUserAuthority,\n direction: 'ltr',\n translationSetup: true,\n },\n}\n\nexport const Collapsed: TStory = {\n args: {\n collapsed: true,\n routeKey: '/cadastros/clientes',\n navigationTree: mockNavigationTree,\n userAuthority: allUserAuthority,\n direction: 'ltr',\n translationSetup: true,\n },\n}\n\nexport const WithExpandedMenu: TStory = {\n args: {\n collapsed: false,\n routeKey: '/configuracoes/integracoes/webhooks',\n navigationTree: mockNavigationTree,\n userAuthority: allUserAuthority,\n direction: 'ltr',\n translationSetup: true,\n },\n}\n\nexport const LimitedAuthority: TStory = {\n args: {\n collapsed: false,\n routeKey: '/inicio',\n navigationTree: mockNavigationTree,\n userAuthority: ['/inicio', '/relatorios'],\n direction: 'ltr',\n translationSetup: true,\n },\n}\n\nexport const RTLDirection: TStory = {\n args: {\n collapsed: false,\n routeKey: '/inicio',\n navigationTree: mockNavigationTree,\n userAuthority: allUserAuthority,\n direction: 'rtl',\n translationSetup: true,\n },\n}\n\nexport const MinimalNavigation: TStory = {\n args: {\n collapsed: false,\n routeKey: '/inicio',\n navigationTree: [\n {\n key: 'inicio',\n path: '/inicio',\n title: 'Início',\n translateKey: 'nav.inicio',\n icon: '',\n type: NAV_ITEM_TYPE_ITEM,\n authority: ['/inicio'],\n subMenu: [],\n },\n ],\n userAuthority: ['/inicio'],\n direction: 'ltr',\n translationSetup: true,\n },\n}\n\nexport const WithMenuClick: TStory = {\n args: {\n collapsed: false,\n routeKey: '/inicio',\n navigationTree: mockNavigationTree,\n userAuthority: allUserAuthority,\n direction: 'ltr',\n translationSetup: true,\n onMenuItemClick: () => alert('Menu item clicked!'),\n },\n}\n\nexport const TicketSubmenu: TStory = {\n args: {\n collapsed: false,\n routeKey: 'ticket',\n navigationTree: ticketNavigationConfig,\n userAuthority: ticketAuthority,\n direction: 'ltr',\n translationSetup: true,\n },\n}\n\nexport const TicketSubmenuSortOrderStable: TStory = {\n args: {\n collapsed: false,\n routeKey: 'ticket',\n navigationTree: ticketSubmenuAllExpanded,\n userAuthority: ticketAuthority,\n direction: 'ltr',\n translationSetup: true,\n },\n}\n"],"names":[],"mappings":"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"}
|
package/dist/@types/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerticalMenuContent.d.ts","sourceRoot":"","sources":["../../../../../../lib/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE3D,MAAM,WAAW,wBAAwB;IACrC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAA;IACjC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC9B;
|
|
1
|
+
{"version":3,"file":"VerticalMenuContent.d.ts","sourceRoot":"","sources":["../../../../../../lib/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE3D,MAAM,WAAW,wBAAwB;IACrC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAA;IACjC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC9B;AAkFD,QAAA,MAAM,mBAAmB,GAAI,OAAO,wBAAwB,4CAkI3D,CAAA;AAED,eAAe,mBAAmB,CAAA"}
|
package/dist/@types/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.stories.d.ts
CHANGED
|
@@ -10,4 +10,6 @@ export declare const LimitedAuthority: TStory;
|
|
|
10
10
|
export declare const RTLDirection: TStory;
|
|
11
11
|
export declare const MinimalNavigation: TStory;
|
|
12
12
|
export declare const WithMenuClick: TStory;
|
|
13
|
+
export declare const TicketSubmenu: TStory;
|
|
14
|
+
export declare const TicketSubmenuSortOrderStable: TStory;
|
|
13
15
|
//# sourceMappingURL=VerticalMenuContent.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerticalMenuContent.stories.d.ts","sourceRoot":"","sources":["../../../../../../lib/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"VerticalMenuContent.stories.d.ts","sourceRoot":"","sources":["../../../../../../lib/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAwKvD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,mBAAmB,CA0B1C,CAAA;AAED,eAAe,IAAI,CAAA;AACnB,KAAK,MAAM,GAAG,QAAQ,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAElD,eAAO,MAAM,OAAO,EAAE,MASrB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,MASvB,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,MAS9B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,MAS9B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,MAS1B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAoB/B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,MAU3B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,MAS3B,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAS1C,CAAA"}
|
package/dist/@types/base/configs/navigation.config/submenu/ticket/cadastros.submenu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cadastros.submenu.d.ts","sourceRoot":"","sources":["../../../../../../../lib/base/configs/navigation.config/submenu/ticket/cadastros.submenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"cadastros.submenu.d.ts","sourceRoot":"","sources":["../../../../../../../lib/base/configs/navigation.config/submenu/ticket/cadastros.submenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAepD,QAAA,MAAM,gBAAgB,EAAE,cAAc,EAcrC,CAAA;AAED,eAAe,gBAAgB,CAAA"}
|
package/dist/@types/base/configs/navigation.config/submenu/ticket/relatorios.submenu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relatorios.submenu.d.ts","sourceRoot":"","sources":["../../../../../../../lib/base/configs/navigation.config/submenu/ticket/relatorios.submenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"relatorios.submenu.d.ts","sourceRoot":"","sources":["../../../../../../../lib/base/configs/navigation.config/submenu/ticket/relatorios.submenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAepD,QAAA,MAAM,iBAAiB,EAAE,cAAc,EAYtC,CAAA;AAED,eAAe,iBAAiB,CAAA"}
|
|
@@ -4,15 +4,27 @@ import vinculoUnidadeMedidaSubmenu from "./config/vinculoUnidadeMedida.submenu.j
|
|
|
4
4
|
import vinculoTransgeniaOperacaoSubmenu from "./config/vinculoTransgeniaOperacao.submenu.js";
|
|
5
5
|
import vinculoProdutoOperacaoSubmenu from "./config/vinculoProdutoOperacao.submenu.js";
|
|
6
6
|
import vinculoProdutorOperacaoSubmenu from "./config/vinculoProdutorOperacao.submenu.js";
|
|
7
|
+
import motivoCancelamentoSubmenu from "./config/motivoCancelamento.submenu.js";
|
|
8
|
+
import cadastrosOperacaoSubmenu from "./config/cadastrosOperacao.submenu.js";
|
|
9
|
+
import operacoesMovimentacaoGraosSubmenu from "./config/operacoesMovimentacaoGraos.submenu.js";
|
|
7
10
|
import recebimentoCentroSubmenu from "./config/recebimentoCentro.submenu.js";
|
|
11
|
+
import rotaRomaneioSubmenu from "./config/rotaRomaneio.submenu.js";
|
|
12
|
+
import tabelaBiodieselSubmenu from "./config/tabelaBiodiesel.submenu.js";
|
|
13
|
+
import tabelaClassificacaoSubmenu from "./config/tabelaClassificacao.submenu.js";
|
|
8
14
|
const cadastrosSubmenu = [
|
|
9
|
-
{ ...
|
|
10
|
-
{ ...
|
|
11
|
-
{ ...
|
|
12
|
-
{ ...
|
|
13
|
-
{ ...
|
|
14
|
-
{ ...
|
|
15
|
-
{ ...
|
|
15
|
+
{ ...operacoesMovimentacaoGraosSubmenu, sortOrder: 1 },
|
|
16
|
+
{ ...recebimentoCentroSubmenu, sortOrder: 2 },
|
|
17
|
+
{ ...vinculoSafraOperacaoSubmenu, sortOrder: 3 },
|
|
18
|
+
{ ...vinculoDepositoOperacaoSubmenu, sortOrder: 4 },
|
|
19
|
+
{ ...vinculoUnidadeMedidaSubmenu, sortOrder: 5 },
|
|
20
|
+
{ ...vinculoTransgeniaOperacaoSubmenu, sortOrder: 6 },
|
|
21
|
+
{ ...vinculoProdutoOperacaoSubmenu, sortOrder: 7 },
|
|
22
|
+
{ ...vinculoProdutorOperacaoSubmenu, sortOrder: 8 },
|
|
23
|
+
{ ...motivoCancelamentoSubmenu, sortOrder: 9 },
|
|
24
|
+
{ ...cadastrosOperacaoSubmenu, sortOrder: 10 },
|
|
25
|
+
{ ...rotaRomaneioSubmenu, sortOrder: 11 },
|
|
26
|
+
{ ...tabelaBiodieselSubmenu, sortOrder: 12 },
|
|
27
|
+
{ ...tabelaClassificacaoSubmenu, sortOrder: 13 }
|
|
16
28
|
];
|
|
17
29
|
export {
|
|
18
30
|
cadastrosSubmenu as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cadastros.submenu.js","sources":["../../../../../../lib/base/configs/navigation.config/submenu/ticket/cadastros.submenu.ts"],"sourcesContent":["import { NavigationTree } from \"@/@types/navigation\"\nimport vinculoSafraOperacaoSubmenu from \"./config/vinculoSafraOperacao.submenu\"\nimport vinculoDepositoOperacaoSubmenu from \"./config/vinculoDepositoOperacao.submenu\"\nimport vinculoUnidadeMedidaSubmenu from \"./config/vinculoUnidadeMedida.submenu\"\nimport vinculoTransgeniaOperacaoSubmenu from \"./config/vinculoTransgeniaOperacao.submenu\"\nimport vinculoProdutoOperacaoSubmenu from \"./config/vinculoProdutoOperacao.submenu\"\nimport vinculoProdutorOperacaoSubmenu from \"./config/vinculoProdutorOperacao.submenu\"\nimport recebimentoCentroSubmenu from \"./config/recebimentoCentro.submenu\"\n\nconst cadastrosSubmenu: NavigationTree[] = [\n { ...
|
|
1
|
+
{"version":3,"file":"cadastros.submenu.js","sources":["../../../../../../lib/base/configs/navigation.config/submenu/ticket/cadastros.submenu.ts"],"sourcesContent":["import { NavigationTree } from \"@/@types/navigation\"\nimport vinculoSafraOperacaoSubmenu from \"./config/vinculoSafraOperacao.submenu\"\nimport vinculoDepositoOperacaoSubmenu from \"./config/vinculoDepositoOperacao.submenu\"\nimport vinculoUnidadeMedidaSubmenu from \"./config/vinculoUnidadeMedida.submenu\"\nimport vinculoTransgeniaOperacaoSubmenu from \"./config/vinculoTransgeniaOperacao.submenu\"\nimport vinculoProdutoOperacaoSubmenu from \"./config/vinculoProdutoOperacao.submenu\"\nimport vinculoProdutorOperacaoSubmenu from \"./config/vinculoProdutorOperacao.submenu\"\nimport motivoCancelamentoSubmenu from \"./config/motivoCancelamento.submenu\"\nimport cadastrosOperacaoSubmenu from \"./config/cadastrosOperacao.submenu\"\nimport operacoesMovimentacaoGraosSubmenu from \"./config/operacoesMovimentacaoGraos.submenu\"\nimport recebimentoCentroSubmenu from \"./config/recebimentoCentro.submenu\"\nimport rotaRomaneioSubmenu from \"./config/rotaRomaneio.submenu\"\nimport tabelaBiodieselSubmenu from \"./config/tabelaBiodiesel.submenu\"\nimport tabelaClassificacaoSubmenu from \"./config/tabelaClassificacao.submenu\"\n\nconst cadastrosSubmenu: NavigationTree[] = [\n { ...operacoesMovimentacaoGraosSubmenu, sortOrder: 1 },\n { ...recebimentoCentroSubmenu, sortOrder: 2 },\n { ...vinculoSafraOperacaoSubmenu, sortOrder: 3 },\n { ...vinculoDepositoOperacaoSubmenu, sortOrder: 4 },\n { ...vinculoUnidadeMedidaSubmenu, sortOrder: 5 },\n { ...vinculoTransgeniaOperacaoSubmenu, sortOrder: 6 },\n { ...vinculoProdutoOperacaoSubmenu, sortOrder: 7 },\n { ...vinculoProdutorOperacaoSubmenu, sortOrder: 8 },\n { ...motivoCancelamentoSubmenu, sortOrder: 9 },\n { ...cadastrosOperacaoSubmenu, sortOrder: 10 },\n { ...rotaRomaneioSubmenu, sortOrder: 11 },\n { ...tabelaBiodieselSubmenu, sortOrder: 12 },\n { ...tabelaClassificacaoSubmenu, sortOrder: 13 },\n]\n\nexport default cadastrosSubmenu\n"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,MAAM,mBAAqC;AAAA,EACvC,EAAE,GAAG,mCAAmC,WAAW,EAAA;AAAA,EACnD,EAAE,GAAG,0BAA0B,WAAW,EAAA;AAAA,EAC1C,EAAE,GAAG,6BAA6B,WAAW,EAAA;AAAA,EAC7C,EAAE,GAAG,gCAAgC,WAAW,EAAA;AAAA,EAChD,EAAE,GAAG,6BAA6B,WAAW,EAAA;AAAA,EAC7C,EAAE,GAAG,kCAAkC,WAAW,EAAA;AAAA,EAClD,EAAE,GAAG,+BAA+B,WAAW,EAAA;AAAA,EAC/C,EAAE,GAAG,gCAAgC,WAAW,EAAA;AAAA,EAChD,EAAE,GAAG,2BAA2B,WAAW,EAAA;AAAA,EAC3C,EAAE,GAAG,0BAA0B,WAAW,GAAA;AAAA,EAC1C,EAAE,GAAG,qBAAqB,WAAW,GAAA;AAAA,EACrC,EAAE,GAAG,wBAAwB,WAAW,GAAA;AAAA,EACxC,EAAE,GAAG,4BAA4B,WAAW,GAAA;AAChD;"}
|
|
@@ -1,14 +1,26 @@
|
|
|
1
|
+
import extratoProdutorSubmenu from "./config/extratoProdutor.submenu.js";
|
|
2
|
+
import controleTicketSubmenu from "./config/controleTicket.submenu.js";
|
|
1
3
|
import motivoCancelamentoSubmenu from "./config/motivoCancelamento.submenu.js";
|
|
2
4
|
import cadastrosOperacaoSubmenu from "./config/cadastrosOperacao.submenu.js";
|
|
3
5
|
import operacoesMovimentacaoGraosSubmenu from "./config/operacoesMovimentacaoGraos.submenu.js";
|
|
6
|
+
import relatorioFisicoFiscalSubmenu from "./config/relatorioFisicoFiscal.submenu.js";
|
|
7
|
+
import recebimentoCentroSubmenu from "./config/recebimentoCentro.submenu.js";
|
|
4
8
|
import rotaRomaneioSubmenu from "./config/rotaRomaneio.submenu.js";
|
|
5
9
|
import tabelaBiodieselSubmenu from "./config/tabelaBiodiesel.submenu.js";
|
|
10
|
+
import toleranciaDiferencaPrecoSubmenu from "./config/toleranciaDiferencaPreco.submenu.js";
|
|
11
|
+
import relatorioMediaPonderadaSubmenu from "./config/relatorioMediaPonderada.submenu.js";
|
|
6
12
|
const relatoriosSubmenu = [
|
|
7
13
|
{ ...motivoCancelamentoSubmenu, sortOrder: 1 },
|
|
8
14
|
{ ...cadastrosOperacaoSubmenu, sortOrder: 2 },
|
|
9
15
|
{ ...operacoesMovimentacaoGraosSubmenu, sortOrder: 3 },
|
|
10
16
|
{ ...rotaRomaneioSubmenu, sortOrder: 4 },
|
|
11
|
-
{ ...tabelaBiodieselSubmenu, sortOrder: 5 }
|
|
17
|
+
{ ...tabelaBiodieselSubmenu, sortOrder: 5 },
|
|
18
|
+
{ ...extratoProdutorSubmenu, sortOrder: 6 },
|
|
19
|
+
{ ...controleTicketSubmenu, sortOrder: 7 },
|
|
20
|
+
{ ...relatorioFisicoFiscalSubmenu, sortOrder: 8 },
|
|
21
|
+
{ ...relatorioMediaPonderadaSubmenu, sortOrder: 9 },
|
|
22
|
+
{ ...recebimentoCentroSubmenu, sortOrder: 10 },
|
|
23
|
+
{ ...toleranciaDiferencaPrecoSubmenu, sortOrder: 11 }
|
|
12
24
|
];
|
|
13
25
|
export {
|
|
14
26
|
relatoriosSubmenu as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relatorios.submenu.js","sources":["../../../../../../lib/base/configs/navigation.config/submenu/ticket/relatorios.submenu.ts"],"sourcesContent":["import { NavigationTree } from \"@/@types/navigation\"\nimport motivoCancelamentoSubmenu from \"./config/motivoCancelamento.submenu\"\nimport cadastrosOperacaoSubmenu from \"./config/cadastrosOperacao.submenu\"\nimport operacoesMovimentacaoGraosSubmenu from \"./config/operacoesMovimentacaoGraos.submenu\"\nimport rotaRomaneioSubmenu from \"./config/rotaRomaneio.submenu\"\nimport tabelaBiodieselSubmenu from \"./config/tabelaBiodiesel.submenu\"\n\n\nconst relatoriosSubmenu: NavigationTree[] = [\n { ...motivoCancelamentoSubmenu, sortOrder: 1 },\n { ...cadastrosOperacaoSubmenu, sortOrder: 2 },\n { ...operacoesMovimentacaoGraosSubmenu, sortOrder: 3 },\n { ...rotaRomaneioSubmenu, sortOrder: 4 },\n { ...tabelaBiodieselSubmenu, sortOrder: 5 },\n]\n\nexport default relatoriosSubmenu\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relatorios.submenu.js","sources":["../../../../../../lib/base/configs/navigation.config/submenu/ticket/relatorios.submenu.ts"],"sourcesContent":["import { NavigationTree } from \"@/@types/navigation\"\nimport extratoProdutorSubmenu from \"./config/extratoProdutor.submenu\"\nimport controleTicketSubmenu from \"./config/controleTicket.submenu\"\nimport motivoCancelamentoSubmenu from \"./config/motivoCancelamento.submenu\"\nimport cadastrosOperacaoSubmenu from \"./config/cadastrosOperacao.submenu\"\nimport operacoesMovimentacaoGraosSubmenu from \"./config/operacoesMovimentacaoGraos.submenu\"\nimport relatorioFisicoFiscalSubmenu from \"./config/relatorioFisicoFiscal.submenu\"\nimport recebimentoCentroSubmenu from \"./config/recebimentoCentro.submenu\"\nimport rotaRomaneioSubmenu from \"./config/rotaRomaneio.submenu\"\nimport tabelaBiodieselSubmenu from \"./config/tabelaBiodiesel.submenu\"\nimport tabelaClassificacaoSubmenu from \"./config/tabelaClassificacao.submenu\"\nimport toleranciaDiferencaPrecoSubmenu from \"./config/toleranciaDiferencaPreco.submenu\"\nimport relatorioMediaPonderadaSubmenu from \"./config/relatorioMediaPonderada.submenu\"\n\n\nconst relatoriosSubmenu: NavigationTree[] = [\n { ...motivoCancelamentoSubmenu, sortOrder: 1 },\n { ...cadastrosOperacaoSubmenu, sortOrder: 2 },\n { ...operacoesMovimentacaoGraosSubmenu, sortOrder: 3 },\n { ...rotaRomaneioSubmenu, sortOrder: 4 },\n { ...tabelaBiodieselSubmenu, sortOrder: 5 },\n { ...extratoProdutorSubmenu, sortOrder: 6 },\n { ...controleTicketSubmenu, sortOrder: 7 },\n { ...relatorioFisicoFiscalSubmenu, sortOrder: 8 },\n { ...relatorioMediaPonderadaSubmenu, sortOrder: 9 },\n { ...recebimentoCentroSubmenu, sortOrder: 10 },\n { ...toleranciaDiferencaPrecoSubmenu, sortOrder: 11 },\n]\n\nexport default relatoriosSubmenu\n"],"names":[],"mappings":";;;;;;;;;;;AAeA,MAAM,oBAAsC;AAAA,EACxC,EAAE,GAAG,2BAA2B,WAAW,EAAA;AAAA,EAC3C,EAAE,GAAG,0BAA0B,WAAW,EAAA;AAAA,EAC1C,EAAE,GAAG,mCAAmC,WAAW,EAAA;AAAA,EACnD,EAAE,GAAG,qBAAqB,WAAW,EAAA;AAAA,EACrC,EAAE,GAAG,wBAAwB,WAAW,EAAA;AAAA,EACxC,EAAE,GAAG,wBAAwB,WAAW,EAAA;AAAA,EACxC,EAAE,GAAG,uBAAuB,WAAW,EAAA;AAAA,EACvC,EAAE,GAAG,8BAA8B,WAAW,EAAA;AAAA,EAC9C,EAAE,GAAG,gCAAgC,WAAW,EAAA;AAAA,EAChD,EAAE,GAAG,0BAA0B,WAAW,GAAA;AAAA,EAC1C,EAAE,GAAG,iCAAiC,WAAW,GAAA;AACrD;"}
|
|
@@ -2,11 +2,56 @@ import type { Meta, StoryObj } from '@storybook/react'
|
|
|
2
2
|
import { BrowserRouter } from 'react-router-dom'
|
|
3
3
|
import VerticalMenuContent from './VerticalMenuContent'
|
|
4
4
|
import type { NavigationTree } from '@/@types/navigation'
|
|
5
|
+
import ticketNavigationConfig from '@base/configs/navigation.config/modules.submenu/Ticket/ticket.navigation'
|
|
5
6
|
import {
|
|
6
7
|
NAV_ITEM_TYPE_COLLAPSE,
|
|
7
8
|
NAV_ITEM_TYPE_ITEM,
|
|
9
|
+
NAV_ITEM_TYPE_TITLE,
|
|
8
10
|
} from '@/constants/navigation.constant'
|
|
9
11
|
|
|
12
|
+
const collectAuthorityPaths = (navTree: NavigationTree[]): string[] => {
|
|
13
|
+
return navTree.reduce((acc: string[], node) => {
|
|
14
|
+
if (node.path) {
|
|
15
|
+
acc.push(node.path)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (node.subMenu?.length) {
|
|
19
|
+
acc.push(...collectAuthorityPaths(node.subMenu))
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return acc
|
|
23
|
+
}, [])
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const ticketAuthority = Array.from(
|
|
27
|
+
new Set(collectAuthorityPaths(ticketNavigationConfig)),
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
const ticketSubmenuAllExpanded: NavigationTree[] = ticketNavigationConfig.map(
|
|
31
|
+
(menu) => {
|
|
32
|
+
if (menu.key !== 'ticket') {
|
|
33
|
+
return menu
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return {
|
|
37
|
+
...menu,
|
|
38
|
+
subMenu: menu.subMenu.map((subMenu) => {
|
|
39
|
+
if (
|
|
40
|
+
subMenu.key === 'ticket.relatorios' ||
|
|
41
|
+
subMenu.key === 'ticket.cadastros'
|
|
42
|
+
) {
|
|
43
|
+
return {
|
|
44
|
+
...subMenu,
|
|
45
|
+
type: NAV_ITEM_TYPE_TITLE,
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return subMenu
|
|
50
|
+
}),
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
)
|
|
54
|
+
|
|
10
55
|
const mockNavigationTree: NavigationTree[] = [
|
|
11
56
|
{
|
|
12
57
|
key: 'inicio',
|
|
@@ -242,3 +287,25 @@ export const WithMenuClick: TStory = {
|
|
|
242
287
|
onMenuItemClick: () => alert('Menu item clicked!'),
|
|
243
288
|
},
|
|
244
289
|
}
|
|
290
|
+
|
|
291
|
+
export const TicketSubmenu: TStory = {
|
|
292
|
+
args: {
|
|
293
|
+
collapsed: false,
|
|
294
|
+
routeKey: 'ticket',
|
|
295
|
+
navigationTree: ticketNavigationConfig,
|
|
296
|
+
userAuthority: ticketAuthority,
|
|
297
|
+
direction: 'ltr',
|
|
298
|
+
translationSetup: true,
|
|
299
|
+
},
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
export const TicketSubmenuSortOrderStable: TStory = {
|
|
303
|
+
args: {
|
|
304
|
+
collapsed: false,
|
|
305
|
+
routeKey: 'ticket',
|
|
306
|
+
navigationTree: ticketSubmenuAllExpanded,
|
|
307
|
+
userAuthority: ticketAuthority,
|
|
308
|
+
direction: 'ltr',
|
|
309
|
+
translationSetup: true,
|
|
310
|
+
},
|
|
311
|
+
}
|
|
@@ -74,28 +74,36 @@ const filterNavigationByAuthority = (
|
|
|
74
74
|
}, [])
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
const compareNavigationOrder = (a: NavigationTree, b: NavigationTree) => {
|
|
78
|
+
const orderA = a.sortOrder ?? Number.MAX_SAFE_INTEGER
|
|
79
|
+
const orderB = b.sortOrder ?? Number.MAX_SAFE_INTEGER
|
|
80
|
+
|
|
81
|
+
if (orderA !== orderB) {
|
|
82
|
+
return orderA - orderB
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const titleCompare = a.title.localeCompare(b.title, 'pt-BR')
|
|
86
|
+
|
|
87
|
+
if (titleCompare !== 0) {
|
|
88
|
+
return titleCompare
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return a.key.localeCompare(b.key, 'pt-BR')
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const sortNavigationNodeList = (navTree: NavigationTree[]): NavigationTree[] =>
|
|
95
|
+
[...navTree].sort(compareNavigationOrder)
|
|
96
|
+
|
|
77
97
|
const sortNavigationRecursively = (
|
|
78
98
|
navTree: NavigationTree[],
|
|
79
99
|
): NavigationTree[] => {
|
|
80
|
-
return
|
|
100
|
+
return sortNavigationNodeList(navTree)
|
|
81
101
|
.map((nav) => ({
|
|
82
102
|
...nav,
|
|
83
103
|
subMenu: nav.subMenu
|
|
84
104
|
? sortNavigationRecursively(nav.subMenu)
|
|
85
105
|
: nav.subMenu,
|
|
86
106
|
}))
|
|
87
|
-
.sort((a, b) => {
|
|
88
|
-
if (a.sortOrder !== undefined || b.sortOrder !== undefined) {
|
|
89
|
-
const orderA = a.sortOrder ?? Number.MAX_SAFE_INTEGER
|
|
90
|
-
const orderB = b.sortOrder ?? Number.MAX_SAFE_INTEGER
|
|
91
|
-
|
|
92
|
-
if (orderA !== orderB) {
|
|
93
|
-
return orderA - orderB
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return a.title.localeCompare(b.title, 'pt-BR')
|
|
98
|
-
})
|
|
99
107
|
}
|
|
100
108
|
|
|
101
109
|
const VerticalMenuContent = (props: VerticalMenuContentProps) => {
|
|
@@ -122,8 +130,6 @@ const VerticalMenuContent = (props: VerticalMenuContentProps) => {
|
|
|
122
130
|
return sortNavigationRecursively(filteredTree)
|
|
123
131
|
}, [navigationTree, userAuthority])
|
|
124
132
|
|
|
125
|
-
console.log('Filtered Navigation Tree:', filteredNavigationTree)
|
|
126
|
-
|
|
127
133
|
const { activedRoute } = useMenuActive(filteredNavigationTree, routeKey)
|
|
128
134
|
|
|
129
135
|
useEffect(() => {
|
|
@@ -146,10 +152,11 @@ const VerticalMenuContent = (props: VerticalMenuContentProps) => {
|
|
|
146
152
|
indent?: boolean,
|
|
147
153
|
) => {
|
|
148
154
|
const nextCascade = cascade + 1
|
|
155
|
+
const orderedNavTree = sortNavigationNodeList(navTree)
|
|
149
156
|
|
|
150
157
|
return (
|
|
151
158
|
<>
|
|
152
|
-
{
|
|
159
|
+
{orderedNavTree.map((nav) => (
|
|
153
160
|
<Fragment key={nav.key}>
|
|
154
161
|
{nav.type === NAV_ITEM_TYPE_ITEM && (
|
|
155
162
|
<VerticalSingleMenuItem
|
|
@@ -5,16 +5,28 @@ import vinculoUnidadeMedidaSubmenu from "./config/vinculoUnidadeMedida.submenu"
|
|
|
5
5
|
import vinculoTransgeniaOperacaoSubmenu from "./config/vinculoTransgeniaOperacao.submenu"
|
|
6
6
|
import vinculoProdutoOperacaoSubmenu from "./config/vinculoProdutoOperacao.submenu"
|
|
7
7
|
import vinculoProdutorOperacaoSubmenu from "./config/vinculoProdutorOperacao.submenu"
|
|
8
|
+
import motivoCancelamentoSubmenu from "./config/motivoCancelamento.submenu"
|
|
9
|
+
import cadastrosOperacaoSubmenu from "./config/cadastrosOperacao.submenu"
|
|
10
|
+
import operacoesMovimentacaoGraosSubmenu from "./config/operacoesMovimentacaoGraos.submenu"
|
|
8
11
|
import recebimentoCentroSubmenu from "./config/recebimentoCentro.submenu"
|
|
12
|
+
import rotaRomaneioSubmenu from "./config/rotaRomaneio.submenu"
|
|
13
|
+
import tabelaBiodieselSubmenu from "./config/tabelaBiodiesel.submenu"
|
|
14
|
+
import tabelaClassificacaoSubmenu from "./config/tabelaClassificacao.submenu"
|
|
9
15
|
|
|
10
16
|
const cadastrosSubmenu: NavigationTree[] = [
|
|
11
|
-
{ ...
|
|
12
|
-
{ ...
|
|
13
|
-
{ ...
|
|
14
|
-
{ ...
|
|
15
|
-
{ ...
|
|
16
|
-
{ ...
|
|
17
|
-
{ ...
|
|
17
|
+
{ ...operacoesMovimentacaoGraosSubmenu, sortOrder: 1 },
|
|
18
|
+
{ ...recebimentoCentroSubmenu, sortOrder: 2 },
|
|
19
|
+
{ ...vinculoSafraOperacaoSubmenu, sortOrder: 3 },
|
|
20
|
+
{ ...vinculoDepositoOperacaoSubmenu, sortOrder: 4 },
|
|
21
|
+
{ ...vinculoUnidadeMedidaSubmenu, sortOrder: 5 },
|
|
22
|
+
{ ...vinculoTransgeniaOperacaoSubmenu, sortOrder: 6 },
|
|
23
|
+
{ ...vinculoProdutoOperacaoSubmenu, sortOrder: 7 },
|
|
24
|
+
{ ...vinculoProdutorOperacaoSubmenu, sortOrder: 8 },
|
|
25
|
+
{ ...motivoCancelamentoSubmenu, sortOrder: 9 },
|
|
26
|
+
{ ...cadastrosOperacaoSubmenu, sortOrder: 10 },
|
|
27
|
+
{ ...rotaRomaneioSubmenu, sortOrder: 11 },
|
|
28
|
+
{ ...tabelaBiodieselSubmenu, sortOrder: 12 },
|
|
29
|
+
{ ...tabelaClassificacaoSubmenu, sortOrder: 13 },
|
|
18
30
|
]
|
|
19
31
|
|
|
20
32
|
export default cadastrosSubmenu
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { NavigationTree } from "@/@types/navigation"
|
|
2
|
+
import extratoProdutorSubmenu from "./config/extratoProdutor.submenu"
|
|
3
|
+
import controleTicketSubmenu from "./config/controleTicket.submenu"
|
|
2
4
|
import motivoCancelamentoSubmenu from "./config/motivoCancelamento.submenu"
|
|
3
5
|
import cadastrosOperacaoSubmenu from "./config/cadastrosOperacao.submenu"
|
|
4
6
|
import operacoesMovimentacaoGraosSubmenu from "./config/operacoesMovimentacaoGraos.submenu"
|
|
7
|
+
import relatorioFisicoFiscalSubmenu from "./config/relatorioFisicoFiscal.submenu"
|
|
8
|
+
import recebimentoCentroSubmenu from "./config/recebimentoCentro.submenu"
|
|
5
9
|
import rotaRomaneioSubmenu from "./config/rotaRomaneio.submenu"
|
|
6
10
|
import tabelaBiodieselSubmenu from "./config/tabelaBiodiesel.submenu"
|
|
11
|
+
import tabelaClassificacaoSubmenu from "./config/tabelaClassificacao.submenu"
|
|
12
|
+
import toleranciaDiferencaPrecoSubmenu from "./config/toleranciaDiferencaPreco.submenu"
|
|
13
|
+
import relatorioMediaPonderadaSubmenu from "./config/relatorioMediaPonderada.submenu"
|
|
7
14
|
|
|
8
15
|
|
|
9
16
|
const relatoriosSubmenu: NavigationTree[] = [
|
|
@@ -12,6 +19,12 @@ const relatoriosSubmenu: NavigationTree[] = [
|
|
|
12
19
|
{ ...operacoesMovimentacaoGraosSubmenu, sortOrder: 3 },
|
|
13
20
|
{ ...rotaRomaneioSubmenu, sortOrder: 4 },
|
|
14
21
|
{ ...tabelaBiodieselSubmenu, sortOrder: 5 },
|
|
22
|
+
{ ...extratoProdutorSubmenu, sortOrder: 6 },
|
|
23
|
+
{ ...controleTicketSubmenu, sortOrder: 7 },
|
|
24
|
+
{ ...relatorioFisicoFiscalSubmenu, sortOrder: 8 },
|
|
25
|
+
{ ...relatorioMediaPonderadaSubmenu, sortOrder: 9 },
|
|
26
|
+
{ ...recebimentoCentroSubmenu, sortOrder: 10 },
|
|
27
|
+
{ ...toleranciaDiferencaPrecoSubmenu, sortOrder: 11 },
|
|
15
28
|
]
|
|
16
29
|
|
|
17
30
|
export default relatoriosSubmenu
|
package/package.json
CHANGED