@orbe-agro/client-core 5.6.144 → 5.6.146
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/layouts/PostLoginLayout/components/CollapsibleSide.stories.js +25 -0
- package/dist/@ecme/components/layouts/PostLoginLayout/components/CollapsibleSide.stories.js.map +1 -0
- package/dist/@ecme/components/layouts/PostLoginLayout/components/ContentOverlay.stories.js +22 -0
- package/dist/@ecme/components/layouts/PostLoginLayout/components/ContentOverlay.stories.js.map +1 -0
- package/dist/@ecme/components/layouts/PostLoginLayout/components/FrameLessSide.stories.js +22 -0
- package/dist/@ecme/components/layouts/PostLoginLayout/components/FrameLessSide.stories.js.map +1 -0
- package/dist/@ecme/components/layouts/PostLoginLayout/components/StackedSide.stories.js +25 -0
- package/dist/@ecme/components/layouts/PostLoginLayout/components/StackedSide.stories.js.map +1 -0
- package/dist/@ecme/components/layouts/PostLoginLayout/components/TopBarClassic.stories.js +25 -0
- package/dist/@ecme/components/layouts/PostLoginLayout/components/TopBarClassic.stories.js.map +1 -0
- package/dist/@ecme/components/template/Footer.js +1 -1
- package/dist/@ecme/components/template/Header.stories.js +42 -0
- package/dist/@ecme/components/template/Header.stories.js.map +1 -0
- package/dist/@ecme/components/template/Search.js +32 -2
- package/dist/@ecme/components/template/Search.js.map +1 -1
- package/dist/@ecme/components/template/Search.stories.js +61 -0
- package/dist/@ecme/components/template/Search.stories.js.map +1 -0
- package/dist/@ecme/index.js +3 -0
- package/dist/@ecme/index.js.map +1 -1
- package/dist/@ecme/locales/index.js +4 -1
- package/dist/@ecme/locales/index.js.map +1 -1
- package/dist/@ecme/locales/initAll.js +26 -0
- package/dist/@ecme/locales/initAll.js.map +1 -0
- package/dist/@ecme/locales/lang/en/common.js +43 -0
- package/dist/@ecme/locales/lang/en/common.js.map +1 -1
- package/dist/@ecme/locales/lang/en/index.js +3 -1
- package/dist/@ecme/locales/lang/en/index.js.map +1 -1
- package/dist/@ecme/locales/lang/ptBR/common.js +43 -0
- package/dist/@ecme/locales/lang/ptBR/common.js.map +1 -1
- package/dist/@ecme/locales/lang/ptBR/index.js +3 -1
- package/dist/@ecme/locales/lang/ptBR/index.js.map +1 -1
- package/dist/@ecme/locales/lang/ptBR/nav.js +307 -4
- package/dist/@ecme/locales/lang/ptBR/nav.js.map +1 -1
- package/dist/@ecme/views/auth/lang/index.js +2 -2
- package/dist/@ecme/views/auth/lang/index.js.map +1 -1
- package/dist/@types/@ecme/components/template/Search.d.ts.map +1 -1
- package/dist/@types/@ecme/locales/index.d.ts +1 -0
- package/dist/@types/@ecme/locales/index.d.ts.map +1 -1
- package/dist/@types/@ecme/locales/initAll.d.ts +3 -0
- package/dist/@types/@ecme/locales/initAll.d.ts.map +1 -0
- package/dist/@types/@ecme/locales/lang/en/common.d.ts +43 -0
- package/dist/@types/@ecme/locales/lang/en/common.d.ts.map +1 -1
- package/dist/@types/@ecme/locales/lang/en/index.d.ts +98 -0
- package/dist/@types/@ecme/locales/lang/en/index.d.ts.map +1 -1
- package/dist/@types/@ecme/locales/lang/ptBR/common.d.ts.map +1 -1
- package/dist/@types/@ecme/locales/lang/ptBR/index.d.ts +98 -0
- package/dist/@types/@ecme/locales/lang/ptBR/index.d.ts.map +1 -1
- package/dist/@types/@ecme/locales/lang/ptBR/nav.d.ts.map +1 -1
- package/dist/@types/base/@types/models/performance/index.d.ts +1 -0
- package/dist/@types/base/@types/models/performance/index.d.ts.map +1 -1
- package/dist/@types/base/@types/models/performance/ppr.d.ts +22 -0
- package/dist/@types/base/@types/models/performance/ppr.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts +6 -0
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/performance/config/ppr.d.ts +8 -0
- package/dist/@types/base/configs/endpoints.config/performance/config/ppr.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/performance/performance.d.ts +6 -0
- package/dist/@types/base/configs/endpoints.config/performance/performance.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/performance/config/aberturaAnoPpr.submenu.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/submenu/performance/config/aberturaAnoPpr.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/performance/config/avaliacoes.submenu.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/submenu/performance/config/avaliacoes.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/performance/config/ppr.submenu.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/submenu/performance/config/ppr.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/performance/performance.submenu.d.ts.map +1 -1
- package/dist/@types/base/services/modules/performance/PerformanceService.d.ts +5 -0
- package/dist/@types/base/services/modules/performance/PerformanceService.d.ts.map +1 -1
- package/dist/base/@types/models/performance/index.js +1 -0
- package/dist/base/@types/models/performance/index.js.map +1 -1
- package/dist/base/@types/models/performance/ppr.js +2 -0
- package/dist/base/@types/models/performance/ppr.js.map +1 -0
- package/dist/base/configs/endpoints.config/performance/config/ppr.js +10 -0
- package/dist/base/configs/endpoints.config/performance/config/ppr.js.map +1 -0
- package/dist/base/configs/endpoints.config/performance/performance.js +3 -1
- package/dist/base/configs/endpoints.config/performance/performance.js.map +1 -1
- package/dist/base/configs/navigation.config/submenu/performance/config/aberturaAnoPpr.submenu.js +17 -0
- package/dist/base/configs/navigation.config/submenu/performance/config/aberturaAnoPpr.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/performance/config/avaliacoes.submenu.js +25 -0
- package/dist/base/configs/navigation.config/submenu/performance/config/avaliacoes.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/performance/config/ppr.submenu.js +19 -0
- package/dist/base/configs/navigation.config/submenu/performance/config/ppr.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/performance/performance.submenu.js +4 -8
- package/dist/base/configs/navigation.config/submenu/performance/performance.submenu.js.map +1 -1
- package/dist/base/index.js +5 -1
- package/dist/base/locales/index.js +2 -2
- package/dist/base/locales/index.js.map +1 -1
- package/dist/base/services/index.js +5 -1
- package/dist/base/services/modules/index.js +5 -1
- package/dist/base/services/modules/performance/PerformanceService.js +31 -0
- package/dist/base/services/modules/performance/PerformanceService.js.map +1 -1
- package/dist/base/services/modules/performance/index.js +5 -1
- package/lib/@ecme/components/layouts/PostLoginLayout/components/CollapsibleSide.stories.tsx +38 -0
- package/lib/@ecme/components/layouts/PostLoginLayout/components/ContentOverlay.stories.tsx +35 -0
- package/lib/@ecme/components/layouts/PostLoginLayout/components/FrameLessSide.stories.tsx +35 -0
- package/lib/@ecme/components/layouts/PostLoginLayout/components/StackedSide.stories.tsx +38 -0
- package/lib/@ecme/components/layouts/PostLoginLayout/components/TopBarClassic.stories.tsx +38 -0
- package/lib/@ecme/components/template/Header.stories.tsx +46 -0
- package/lib/@ecme/components/template/Search.stories.tsx +79 -0
- package/lib/@ecme/components/template/Search.tsx +41 -14
- package/lib/@ecme/locales/index.ts +4 -0
- package/lib/@ecme/locales/initAll.ts +25 -0
- package/lib/@ecme/locales/lang/en/common.ts +43 -0
- package/lib/@ecme/locales/lang/en/index.ts +2 -0
- package/lib/@ecme/locales/lang/ptBR/common.ts +44 -1
- package/lib/@ecme/locales/lang/ptBR/index.ts +2 -0
- package/lib/@ecme/locales/lang/ptBR/nav.ts +308 -5
- package/lib/@ecme/views/auth/lang/index.ts +2 -2
- package/lib/base/@types/models/performance/index.ts +6 -5
- package/lib/base/@types/models/performance/ppr.ts +24 -0
- package/lib/base/configs/endpoints.config/performance/config/ppr.ts +8 -0
- package/lib/base/configs/endpoints.config/performance/performance.ts +3 -1
- package/lib/base/configs/navigation.config/submenu/performance/config/aberturaAnoPpr.submenu.ts +17 -0
- package/lib/base/configs/navigation.config/submenu/performance/config/avaliacoes.submenu.ts +25 -0
- package/lib/base/configs/navigation.config/submenu/performance/config/ppr.submenu.ts +19 -0
- package/lib/base/configs/navigation.config/submenu/performance/performance.submenu.ts +4 -8
- package/lib/base/locales/index.ts +2 -2
- package/lib/base/services/modules/performance/PerformanceService.ts +32 -0
- package/package.json +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { BrowserRouter } from "react-router-dom";
|
|
3
|
+
import CollapsibleSide from "./CollapsibleSide.js";
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "@ecme/Layouts/PostLogin/CollapsibleSide",
|
|
6
|
+
component: CollapsibleSide,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: "fullscreen"
|
|
9
|
+
},
|
|
10
|
+
tags: ["autodocs"],
|
|
11
|
+
decorators: [
|
|
12
|
+
(Story) => /* @__PURE__ */ jsx(BrowserRouter, { children: /* @__PURE__ */ jsx(Story, {}) })
|
|
13
|
+
]
|
|
14
|
+
};
|
|
15
|
+
const Default = {
|
|
16
|
+
args: {
|
|
17
|
+
pageTitle: "Dashboard"
|
|
18
|
+
},
|
|
19
|
+
render: (args) => /* @__PURE__ */ jsx(CollapsibleSide, { ...args, children: /* @__PURE__ */ jsx("div", { className: "p-4", children: /* @__PURE__ */ jsx("div", { className: "rounded border border-gray-200 p-4", children: "Conteudo da pagina" }) }) })
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
Default,
|
|
23
|
+
meta as default
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=CollapsibleSide.stories.js.map
|
package/dist/@ecme/components/layouts/PostLoginLayout/components/CollapsibleSide.stories.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollapsibleSide.stories.js","sources":["../../../../../../lib/@ecme/components/layouts/PostLoginLayout/components/CollapsibleSide.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react'\nimport { BrowserRouter } from 'react-router-dom'\nimport CollapsibleSide from './CollapsibleSide'\n\nconst meta = {\n title: '@ecme/Layouts/PostLogin/CollapsibleSide',\n component: CollapsibleSide,\n parameters: {\n layout: 'fullscreen',\n },\n tags: ['autodocs'],\n decorators: [\n (Story) => (\n <BrowserRouter>\n <Story />\n </BrowserRouter>\n ),\n ],\n} satisfies Meta<typeof CollapsibleSide>\n\nexport default meta\n\ntype TStory = StoryObj<typeof meta>\n\nexport const Default: TStory = {\n args: {\n pageTitle: 'Dashboard',\n },\n render: (args) => (\n <CollapsibleSide {...args}>\n <div className=\"p-4\">\n <div className=\"rounded border border-gray-200 p-4\">\n Conteudo da pagina\n </div>\n </div>\n </CollapsibleSide>\n ),\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,OAAO;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACR,QAAQ;AAAA,EAAA;AAAA,EAEZ,MAAM,CAAC,UAAU;AAAA,EACjB,YAAY;AAAA,IACR,CAAC,UACG,oBAAC,eAAA,EACG,UAAA,oBAAC,SAAM,EAAA,CACX;AAAA,EAAA;AAGZ;AAMO,MAAM,UAAkB;AAAA,EAC3B,MAAM;AAAA,IACF,WAAW;AAAA,EAAA;AAAA,EAEf,QAAQ,CAAC,SACL,oBAAC,iBAAA,EAAiB,GAAG,MACjB,UAAA,oBAAC,OAAA,EAAI,WAAU,OACX,UAAA,oBAAC,OAAA,EAAI,WAAU,sCAAqC,UAAA,sBAEpD,GACJ,EAAA,CACJ;AAER;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { BrowserRouter } from "react-router-dom";
|
|
3
|
+
import ContentOverlay from "./ContentOverlay.js";
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "@ecme/Layouts/PostLogin/ContentOverlay",
|
|
6
|
+
component: ContentOverlay,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: "fullscreen"
|
|
9
|
+
},
|
|
10
|
+
tags: ["autodocs"],
|
|
11
|
+
decorators: [
|
|
12
|
+
(Story) => /* @__PURE__ */ jsx(BrowserRouter, { children: /* @__PURE__ */ jsx(Story, {}) })
|
|
13
|
+
]
|
|
14
|
+
};
|
|
15
|
+
const Default = {
|
|
16
|
+
render: () => /* @__PURE__ */ jsx(ContentOverlay, { children: /* @__PURE__ */ jsx("div", { className: "p-4", children: /* @__PURE__ */ jsx("div", { className: "rounded border border-gray-200 bg-white p-4 dark:bg-gray-900", children: "Conteudo da pagina" }) }) })
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
Default,
|
|
20
|
+
meta as default
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=ContentOverlay.stories.js.map
|
package/dist/@ecme/components/layouts/PostLoginLayout/components/ContentOverlay.stories.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentOverlay.stories.js","sources":["../../../../../../lib/@ecme/components/layouts/PostLoginLayout/components/ContentOverlay.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react'\nimport { BrowserRouter } from 'react-router-dom'\nimport ContentOverlay from './ContentOverlay'\n\nconst meta = {\n title: '@ecme/Layouts/PostLogin/ContentOverlay',\n component: ContentOverlay,\n parameters: {\n layout: 'fullscreen',\n },\n tags: ['autodocs'],\n decorators: [\n (Story) => (\n <BrowserRouter>\n <Story />\n </BrowserRouter>\n ),\n ],\n} satisfies Meta<typeof ContentOverlay>\n\nexport default meta\n\ntype TStory = StoryObj<typeof meta>\n\nexport const Default: TStory = {\n render: () => (\n <ContentOverlay>\n <div className=\"p-4\">\n <div className=\"rounded border border-gray-200 bg-white p-4 dark:bg-gray-900\">\n Conteudo da pagina\n </div>\n </div>\n </ContentOverlay>\n ),\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,OAAO;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACR,QAAQ;AAAA,EAAA;AAAA,EAEZ,MAAM,CAAC,UAAU;AAAA,EACjB,YAAY;AAAA,IACR,CAAC,UACG,oBAAC,eAAA,EACG,UAAA,oBAAC,SAAM,EAAA,CACX;AAAA,EAAA;AAGZ;AAMO,MAAM,UAAkB;AAAA,EAC3B,QAAQ,MACJ,oBAAC,gBAAA,EACG,8BAAC,OAAA,EAAI,WAAU,OACX,UAAA,oBAAC,OAAA,EAAI,WAAU,gEAA+D,UAAA,sBAE9E,GACJ,EAAA,CACJ;AAER;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { BrowserRouter } from "react-router-dom";
|
|
3
|
+
import FrameLessSide from "./FrameLessSide.js";
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "@ecme/Layouts/PostLogin/FrameLessSide",
|
|
6
|
+
component: FrameLessSide,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: "fullscreen"
|
|
9
|
+
},
|
|
10
|
+
tags: ["autodocs"],
|
|
11
|
+
decorators: [
|
|
12
|
+
(Story) => /* @__PURE__ */ jsx(BrowserRouter, { children: /* @__PURE__ */ jsx(Story, {}) })
|
|
13
|
+
]
|
|
14
|
+
};
|
|
15
|
+
const Default = {
|
|
16
|
+
render: () => /* @__PURE__ */ jsx(FrameLessSide, { children: /* @__PURE__ */ jsx("div", { className: "p-4", children: /* @__PURE__ */ jsx("div", { className: "rounded border border-gray-200 bg-white p-4 dark:bg-gray-900", children: "Conteudo da pagina" }) }) })
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
Default,
|
|
20
|
+
meta as default
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=FrameLessSide.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameLessSide.stories.js","sources":["../../../../../../lib/@ecme/components/layouts/PostLoginLayout/components/FrameLessSide.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react'\nimport { BrowserRouter } from 'react-router-dom'\nimport FrameLessSide from './FrameLessSide'\n\nconst meta = {\n title: '@ecme/Layouts/PostLogin/FrameLessSide',\n component: FrameLessSide,\n parameters: {\n layout: 'fullscreen',\n },\n tags: ['autodocs'],\n decorators: [\n (Story) => (\n <BrowserRouter>\n <Story />\n </BrowserRouter>\n ),\n ],\n} satisfies Meta<typeof FrameLessSide>\n\nexport default meta\n\ntype TStory = StoryObj<typeof meta>\n\nexport const Default: TStory = {\n render: () => (\n <FrameLessSide>\n <div className=\"p-4\">\n <div className=\"rounded border border-gray-200 bg-white p-4 dark:bg-gray-900\">\n Conteudo da pagina\n </div>\n </div>\n </FrameLessSide>\n ),\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,OAAO;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACR,QAAQ;AAAA,EAAA;AAAA,EAEZ,MAAM,CAAC,UAAU;AAAA,EACjB,YAAY;AAAA,IACR,CAAC,UACG,oBAAC,eAAA,EACG,UAAA,oBAAC,SAAM,EAAA,CACX;AAAA,EAAA;AAGZ;AAMO,MAAM,UAAkB;AAAA,EAC3B,QAAQ,MACJ,oBAAC,eAAA,EACG,8BAAC,OAAA,EAAI,WAAU,OACX,UAAA,oBAAC,OAAA,EAAI,WAAU,gEAA+D,UAAA,sBAE9E,GACJ,EAAA,CACJ;AAER;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { BrowserRouter } from "react-router-dom";
|
|
3
|
+
import StackedSide from "./StackedSide.js";
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "@ecme/Layouts/PostLogin/StackedSide",
|
|
6
|
+
component: StackedSide,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: "fullscreen"
|
|
9
|
+
},
|
|
10
|
+
tags: ["autodocs"],
|
|
11
|
+
decorators: [
|
|
12
|
+
(Story) => /* @__PURE__ */ jsx(BrowserRouter, { children: /* @__PURE__ */ jsx(Story, {}) })
|
|
13
|
+
]
|
|
14
|
+
};
|
|
15
|
+
const Default = {
|
|
16
|
+
args: {
|
|
17
|
+
pageTitle: "Dashboard"
|
|
18
|
+
},
|
|
19
|
+
render: (args) => /* @__PURE__ */ jsx(StackedSide, { ...args, children: /* @__PURE__ */ jsx("div", { className: "p-4", children: /* @__PURE__ */ jsx("div", { className: "rounded border border-gray-200 p-4", children: "Conteudo da pagina" }) }) })
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
Default,
|
|
23
|
+
meta as default
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=StackedSide.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StackedSide.stories.js","sources":["../../../../../../lib/@ecme/components/layouts/PostLoginLayout/components/StackedSide.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react'\nimport { BrowserRouter } from 'react-router-dom'\nimport StackedSide from './StackedSide'\n\nconst meta = {\n title: '@ecme/Layouts/PostLogin/StackedSide',\n component: StackedSide,\n parameters: {\n layout: 'fullscreen',\n },\n tags: ['autodocs'],\n decorators: [\n (Story) => (\n <BrowserRouter>\n <Story />\n </BrowserRouter>\n ),\n ],\n} satisfies Meta<typeof StackedSide>\n\nexport default meta\n\ntype TStory = StoryObj<typeof meta>\n\nexport const Default: TStory = {\n args: {\n pageTitle: 'Dashboard',\n },\n render: (args) => (\n <StackedSide {...args}>\n <div className=\"p-4\">\n <div className=\"rounded border border-gray-200 p-4\">\n Conteudo da pagina\n </div>\n </div>\n </StackedSide>\n ),\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,OAAO;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACR,QAAQ;AAAA,EAAA;AAAA,EAEZ,MAAM,CAAC,UAAU;AAAA,EACjB,YAAY;AAAA,IACR,CAAC,UACG,oBAAC,eAAA,EACG,UAAA,oBAAC,SAAM,EAAA,CACX;AAAA,EAAA;AAGZ;AAMO,MAAM,UAAkB;AAAA,EAC3B,MAAM;AAAA,IACF,WAAW;AAAA,EAAA;AAAA,EAEf,QAAQ,CAAC,SACL,oBAAC,aAAA,EAAa,GAAG,MACb,UAAA,oBAAC,OAAA,EAAI,WAAU,OACX,UAAA,oBAAC,OAAA,EAAI,WAAU,sCAAqC,UAAA,sBAEpD,GACJ,EAAA,CACJ;AAER;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { BrowserRouter } from "react-router-dom";
|
|
3
|
+
import TopBarClassic from "./TopBarClassic.js";
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "@ecme/Layouts/PostLogin/TopBarClassic",
|
|
6
|
+
component: TopBarClassic,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: "fullscreen"
|
|
9
|
+
},
|
|
10
|
+
tags: ["autodocs"],
|
|
11
|
+
decorators: [
|
|
12
|
+
(Story) => /* @__PURE__ */ jsx(BrowserRouter, { children: /* @__PURE__ */ jsx(Story, {}) })
|
|
13
|
+
]
|
|
14
|
+
};
|
|
15
|
+
const Default = {
|
|
16
|
+
args: {
|
|
17
|
+
pageTitle: "Dashboard"
|
|
18
|
+
},
|
|
19
|
+
render: (args) => /* @__PURE__ */ jsx(TopBarClassic, { ...args, children: /* @__PURE__ */ jsx("div", { className: "p-4", children: /* @__PURE__ */ jsx("div", { className: "rounded border border-gray-200 p-4", children: "Conteudo da pagina" }) }) })
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
Default,
|
|
23
|
+
meta as default
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=TopBarClassic.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TopBarClassic.stories.js","sources":["../../../../../../lib/@ecme/components/layouts/PostLoginLayout/components/TopBarClassic.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react'\nimport { BrowserRouter } from 'react-router-dom'\nimport TopBarClassic from './TopBarClassic'\n\nconst meta = {\n title: '@ecme/Layouts/PostLogin/TopBarClassic',\n component: TopBarClassic,\n parameters: {\n layout: 'fullscreen',\n },\n tags: ['autodocs'],\n decorators: [\n (Story) => (\n <BrowserRouter>\n <Story />\n </BrowserRouter>\n ),\n ],\n} satisfies Meta<typeof TopBarClassic>\n\nexport default meta\n\ntype TStory = StoryObj<typeof meta>\n\nexport const Default: TStory = {\n args: {\n pageTitle: 'Dashboard',\n },\n render: (args) => (\n <TopBarClassic {...args}>\n <div className=\"p-4\">\n <div className=\"rounded border border-gray-200 p-4\">\n Conteudo da pagina\n </div>\n </div>\n </TopBarClassic>\n ),\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,OAAO;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACR,QAAQ;AAAA,EAAA;AAAA,EAEZ,MAAM,CAAC,UAAU;AAAA,EACjB,YAAY;AAAA,IACR,CAAC,UACG,oBAAC,eAAA,EACG,UAAA,oBAAC,SAAM,EAAA,CACX;AAAA,EAAA;AAGZ;AAMO,MAAM,UAAkB;AAAA,EAC3B,MAAM;AAAA,IACF,WAAW;AAAA,EAAA;AAAA,EAEf,QAAQ,CAAC,SACL,oBAAC,eAAA,EAAe,GAAG,MACf,UAAA,oBAAC,OAAA,EAAI,WAAU,OACX,UAAA,oBAAC,OAAA,EAAI,WAAU,sCAAqC,UAAA,sBAEpD,GACJ,EAAA,CACJ;AAER;"}
|
|
@@ -3,7 +3,7 @@ import Container from "../shared/Container.js";
|
|
|
3
3
|
import classNames from "../../utils/classNames.js";
|
|
4
4
|
import { APP_NAME } from "../../constants/app.constant.js";
|
|
5
5
|
import { PAGE_CONTAINER_GUTTER_X } from "../../constants/theme.constant.js";
|
|
6
|
-
const version = true ? "5.6.
|
|
6
|
+
const version = true ? "5.6.146" : "0.0.0";
|
|
7
7
|
const FooterContent = () => {
|
|
8
8
|
return /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-auto items-center justify-between", children: [
|
|
9
9
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import Header from "./Header.js";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: "@ecme/Template/Header",
|
|
5
|
+
component: Header,
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: "fullscreen"
|
|
8
|
+
},
|
|
9
|
+
tags: ["autodocs"],
|
|
10
|
+
argTypes: {
|
|
11
|
+
container: {
|
|
12
|
+
control: "boolean"
|
|
13
|
+
},
|
|
14
|
+
className: {
|
|
15
|
+
control: "text"
|
|
16
|
+
},
|
|
17
|
+
wrapperClass: {
|
|
18
|
+
control: "text"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const Default = {
|
|
23
|
+
args: {
|
|
24
|
+
container: false,
|
|
25
|
+
className: "",
|
|
26
|
+
wrapperClass: ""
|
|
27
|
+
},
|
|
28
|
+
render: (args) => /* @__PURE__ */ jsx(
|
|
29
|
+
Header,
|
|
30
|
+
{
|
|
31
|
+
...args,
|
|
32
|
+
headerStart: /* @__PURE__ */ jsx("div", { className: "px-4 text-sm font-semibold", children: "Minha Marca" }),
|
|
33
|
+
headerMiddle: /* @__PURE__ */ jsx("div", { className: "text-sm", children: "Área central" }),
|
|
34
|
+
headerEnd: /* @__PURE__ */ jsx("div", { className: "px-4 text-sm text-gray-600", children: "Usuário" })
|
|
35
|
+
}
|
|
36
|
+
)
|
|
37
|
+
};
|
|
38
|
+
export {
|
|
39
|
+
Default,
|
|
40
|
+
meta as default
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=Header.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.stories.js","sources":["../../../../lib/@ecme/components/template/Header.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react'\nimport Header from './Header'\n\nconst meta = {\n title: '@ecme/Template/Header',\n component: Header,\n parameters: {\n layout: 'fullscreen',\n },\n tags: ['autodocs'],\n argTypes: {\n container: {\n control: 'boolean',\n },\n className: {\n control: 'text',\n },\n wrapperClass: {\n control: 'text',\n },\n },\n} satisfies Meta<typeof Header>\n\nexport default meta\n\ntype TStory = StoryObj<typeof meta>\n\nexport const Default: TStory = {\n args: {\n container: false,\n className: '',\n wrapperClass: '',\n },\n render: (args) => (\n <Header\n {...args}\n headerStart={\n <div className=\"px-4 text-sm font-semibold\">Minha Marca</div>\n }\n headerMiddle={<div className=\"text-sm\">Área central</div>}\n headerEnd={\n <div className=\"px-4 text-sm text-gray-600\">Usuário</div>\n }\n />\n ),\n}\n"],"names":[],"mappings":";;AAGA,MAAM,OAAO;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACR,QAAQ;AAAA,EAAA;AAAA,EAEZ,MAAM,CAAC,UAAU;AAAA,EACjB,UAAU;AAAA,IACN,WAAW;AAAA,MACP,SAAS;AAAA,IAAA;AAAA,IAEb,WAAW;AAAA,MACP,SAAS;AAAA,IAAA;AAAA,IAEb,cAAc;AAAA,MACV,SAAS;AAAA,IAAA;AAAA,EACb;AAER;AAMO,MAAM,UAAkB;AAAA,EAC3B,MAAM;AAAA,IACF,WAAW;AAAA,IACX,WAAW;AAAA,IACX,cAAc;AAAA,EAAA;AAAA,EAElB,QAAQ,CAAC,SACL;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAG;AAAA,MACJ,aACI,oBAAC,OAAA,EAAI,WAAU,8BAA6B,UAAA,eAAW;AAAA,MAE3D,cAAc,oBAAC,OAAA,EAAI,WAAU,WAAU,UAAA,gBAAY;AAAA,MACnD,WACI,oBAAC,OAAA,EAAI,WAAU,8BAA6B,UAAA,UAAA,CAAO;AAAA,IAAA;AAAA,EAAA;AAInE;"}
|
|
@@ -4,6 +4,7 @@ import "../ui/Dialog/index.js";
|
|
|
4
4
|
import "../ui/ScrollBar/index.js";
|
|
5
5
|
import navigationConfig from "../../configs/navigation.config/index.js";
|
|
6
6
|
import { NAV_ITEM_TYPE_ITEM } from "../../constants/navigation.constant.js";
|
|
7
|
+
import { useSessionUser } from "../../store/authStore.js";
|
|
7
8
|
import classNames from "../../utils/classNames.js";
|
|
8
9
|
import withHeaderItem from "../../utils/hoc/withHeaderItem.js";
|
|
9
10
|
import debounce from "lodash/debounce";
|
|
@@ -18,6 +19,30 @@ import Dialog from "../ui/Dialog/Dialog.js";
|
|
|
18
19
|
import Button from "../ui/Button/Button.js";
|
|
19
20
|
import Spinner from "../ui/Spinner/Spinner.js";
|
|
20
21
|
import ScrollBar from "../ui/ScrollBar/ScrollBar.js";
|
|
22
|
+
const filterNavigationByAuthority = (navTree, userAuthority) => {
|
|
23
|
+
return navTree.reduce((acc, nav) => {
|
|
24
|
+
if (nav.excludeWhenHasPaths && nav.excludeWhenHasPaths.length > 0) {
|
|
25
|
+
const shouldExclude = nav.excludeWhenHasPaths.some(
|
|
26
|
+
(path) => userAuthority.includes(path)
|
|
27
|
+
);
|
|
28
|
+
if (shouldExclude) {
|
|
29
|
+
return acc;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (nav.subMenu && nav.subMenu.length > 0) {
|
|
33
|
+
const filteredSubMenu = filterNavigationByAuthority(
|
|
34
|
+
nav.subMenu,
|
|
35
|
+
userAuthority
|
|
36
|
+
);
|
|
37
|
+
if (filteredSubMenu.length > 0) {
|
|
38
|
+
acc.push({ ...nav, subMenu: filteredSubMenu });
|
|
39
|
+
}
|
|
40
|
+
} else if (nav.path && userAuthority.includes(nav.path) || !nav.path) {
|
|
41
|
+
acc.push(nav);
|
|
42
|
+
}
|
|
43
|
+
return acc;
|
|
44
|
+
}, []);
|
|
45
|
+
};
|
|
21
46
|
const ListItem = (props) => {
|
|
22
47
|
const { icon, label, url = "", keyWord, onNavigate, breadcrumbs } = props;
|
|
23
48
|
const makeBreadcrumbs = (breadcrumbs2) => {
|
|
@@ -53,6 +78,7 @@ const _Search = ({ className }) => {
|
|
|
53
78
|
const [searchDialogOpen, setSearchDialogOpen] = useState(false);
|
|
54
79
|
const [searchResult, setSearchResult] = useState([]);
|
|
55
80
|
const [noResult, setNoResult] = useState(false);
|
|
81
|
+
const userAuthority = useSessionUser((state) => state.user.authority);
|
|
56
82
|
const inputRef = useRef(null);
|
|
57
83
|
const handleReset = () => {
|
|
58
84
|
setNoResult(false);
|
|
@@ -69,6 +95,10 @@ const _Search = ({ className }) => {
|
|
|
69
95
|
const { t } = useTranslation();
|
|
70
96
|
const flatNavTree = useMemo(() => {
|
|
71
97
|
const arr = [];
|
|
98
|
+
const filteredNavigationTree = filterNavigationByAuthority(
|
|
99
|
+
navigationConfig,
|
|
100
|
+
userAuthority || []
|
|
101
|
+
);
|
|
72
102
|
const makeflat = (item, parents) => {
|
|
73
103
|
if (Array.isArray(item.subMenu) && item.subMenu.length > 0) {
|
|
74
104
|
item.subMenu.forEach(
|
|
@@ -77,11 +107,11 @@ const _Search = ({ className }) => {
|
|
|
77
107
|
}
|
|
78
108
|
arr.push({ ...item, parents });
|
|
79
109
|
};
|
|
80
|
-
|
|
110
|
+
filteredNavigationTree.forEach(function f(item) {
|
|
81
111
|
makeflat(item, [t(item.translateKey)]);
|
|
82
112
|
});
|
|
83
113
|
return arr;
|
|
84
|
-
}, [
|
|
114
|
+
}, [userAuthority, t]);
|
|
85
115
|
const filterNavigationTreeFlat = (text, tree) => {
|
|
86
116
|
const results = tree.filter(
|
|
87
117
|
(item) => item.type === NAV_ITEM_TYPE_ITEM && item.parents.join().toUpperCase().includes(text.toUpperCase())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Search.js","sources":["../../../../lib/@ecme/components/template/Search.tsx"],"sourcesContent":["import { NavigationTree } from '@/@types/navigation'\nimport Button from '@/components/ui/Button'\nimport Dialog from '@/components/ui/Dialog'\nimport ScrollBar from '@/components/ui/ScrollBar'\nimport navigationIcon from '@/configs/navigation-icon.config'\nimport navigationConfig from '@/configs/navigation.config'\nimport { NAV_ITEM_TYPE_ITEM } from '@/constants/navigation.constant'\nimport {\n GUIDE_PREFIX_PATH,\n UI_COMPONENTS_PREFIX_PATH,\n} from '@/constants/route.constant'\nimport classNames from '@/utils/classNames'\nimport withHeaderItem from '@/utils/hoc/withHeaderItem'\nimport {\n filterDeep,\n findDeep,\n findPathDeep,\n findValueDeep,\n} from 'deepdash-es/standalone'\nimport { flatten, flattenDeep } from 'lodash'\nimport debounce from 'lodash/debounce'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport Highlighter from 'react-highlight-words'\nimport { useTranslation } from 'react-i18next'\nimport { HiChevronRight, HiOutlineSearch } from 'react-icons/hi'\nimport { PiMagnifyingGlassDuotone } from 'react-icons/pi'\nimport { Link } from 'react-router-dom'\nimport { Spinner } from '../ui'\n\ntype SearchData = {\n key: string\n path: string\n title: string\n icon: string\n category: string\n categoryTitle: string\n breadcrumbs: string[]\n}\n\ntype SearchResult = {\n title: string\n data: SearchData[]\n}\n\nconst ListItem = (props: {\n icon: string\n label: string\n url: string\n isLast?: boolean\n keyWord: string\n breadcrumbs: string[]\n onNavigate: () => void\n}) => {\n const { icon, label, url = '', keyWord, onNavigate, breadcrumbs } = props\n\n const makeBreadcrumbs = (breadcrumbs: string[]) => {\n return breadcrumbs.join(' / ')\n }\n\n return (\n <Link to={url} onClick={onNavigate}>\n <div\n className={classNames(\n 'flex items-center justify-between rounded-xl p-3 cursor-pointer user-select',\n 'hover:bg-gray-100 dark:hover:bg-gray-700',\n )}\n >\n <div className=\"flex items-center gap-2\">\n {/* <div\n className={classNames(\n 'rounded-lg border-2 border-gray-200 shadow-sm text-xl group-hover:shadow h-10 w-10 flex items-center justify-center bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100',\n )}\n >\n {icon && navigationIcon[icon]}\n </div> */}\n <div className=\"text-gray-900 dark:text-gray-300\">\n <Highlighter\n autoEscape\n highlightClassName={classNames(\n 'text-primary',\n 'underline bg-transparent font-semibold dark:text-white',\n )}\n searchWords={[keyWord]}\n textToHighlight={makeBreadcrumbs(breadcrumbs)}\n />\n </div>\n </div>\n <HiChevronRight className=\"text-lg\" />\n </div>\n </Link>\n )\n}\n\ntype NavigationTreeFlat = NavigationTree & { parents: string[] }\n\nconst _Search = ({ className }: { className?: string }) => {\n const [loading, setLoading] = useState(false)\n const [searchDialogOpen, setSearchDialogOpen] = useState(false)\n const [searchResult, setSearchResult] = useState<SearchResult[]>([])\n const [noResult, setNoResult] = useState(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleReset = () => {\n setNoResult(false)\n setSearchResult([])\n }\n\n const handleSearchOpen = () => {\n setSearchDialogOpen(true)\n }\n\n const handleSearchClose = () => {\n setSearchDialogOpen(false)\n handleReset()\n }\n\n const debounceFn = debounce(handleDebounceFn, 750)\n\n const { t } = useTranslation()\n\n const flatNavTree = useMemo(() => {\n const arr: NavigationTreeFlat[] = []\n\n const makeflat = (item: NavigationTree, parents: string[]) => {\n if (Array.isArray(item.subMenu) && item.subMenu.length > 0) {\n item.subMenu.forEach((item) =>\n makeflat(item, [...parents, t(item.translateKey)]),\n )\n }\n arr.push({ ...item, parents })\n }\n\n navigationConfig.forEach(function f(item) {\n makeflat(item, [t(item.translateKey)])\n })\n return arr\n }, [navigationConfig, t])\n\n const filterNavigationTreeFlat = (\n text: string,\n tree: NavigationTreeFlat[],\n ): NavigationTreeFlat[] => {\n const results = tree.filter(\n (item) =>\n item.type === NAV_ITEM_TYPE_ITEM &&\n item.parents.join().toUpperCase().includes(text.toUpperCase()),\n )\n\n return results\n }\n\n function navTreeFlatToSearchResult(\n tree: NavigationTreeFlat[],\n ): SearchResult[] {\n const navTreeSearchResult: SearchResult = {\n title: t('base.layout.search.results.navTree'),\n data: [],\n }\n tree.forEach((item) => {\n navTreeSearchResult.data.push({\n category: item.path,\n categoryTitle: item.title,\n icon: item.icon,\n key: item.key,\n path: item.path,\n title: t(item.translateKey, item.title),\n breadcrumbs: item.parents,\n })\n })\n return [navTreeSearchResult]\n }\n\n async function handleDebounceFn(query: string) {\n if (!query) {\n setLoading(false)\n setSearchResult([])\n return\n }\n\n if (noResult) {\n setNoResult(false)\n }\n\n const res = await filterNavigationTreeFlat(query, flatNavTree)\n\n if (res) {\n if (res.length === 0) {\n setNoResult(true)\n setSearchResult([])\n } else {\n setSearchResult(navTreeFlatToSearchResult(res))\n }\n }\n\n setLoading(false)\n }\n\n const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => {\n setLoading(true)\n debounceFn(e.target.value)\n }\n\n useEffect(() => {\n if (searchDialogOpen) {\n const timeout = setTimeout(() => inputRef.current?.focus(), 100)\n return () => {\n clearTimeout(timeout)\n }\n }\n }, [searchDialogOpen])\n\n const handleNavigate = () => {\n handleSearchClose()\n }\n\n return (\n <>\n <div\n className={classNames(className, 'text-2xl')}\n onClick={handleSearchOpen}\n >\n <PiMagnifyingGlassDuotone />\n </div>\n <Dialog\n contentClassName=\"p-0\"\n isOpen={searchDialogOpen}\n closable={false}\n onRequestClose={handleSearchClose}\n >\n <div>\n <div className=\"flex items-center justify-between border-b border-gray-200 px-4 dark:border-gray-600\">\n <div className=\"flex items-center\">\n <HiOutlineSearch className=\"text-xl\" />\n <input\n ref={inputRef}\n className=\"block w-full bg-transparent p-4 text-base text-gray-900 outline-none ring-0 dark:text-gray-100\"\n placeholder={t('common.input.placeholder.search')}\n onChange={handleSearch}\n />\n </div>\n <Button size=\"xs\" onClick={handleSearchClose}>\n Esc\n </Button>\n </div>\n <div className=\"px-5 py-6\">\n {loading ? (\n <div\n className={classNames(\n 'flex items-center justify-center',\n )}\n >\n <Spinner size={40} />\n </div>\n ) : (\n <>\n <ScrollBar className=\"max-h-[350px] overflow-y-auto\">\n {searchResult.map((result) => (\n <div\n key={result.title}\n className=\"mb-4\"\n >\n <h6 className=\"mb-3\">\n {result.title}\n </h6>\n {result.data.map((data, index) => (\n <ListItem\n key={data.title + index}\n icon={data.icon}\n breadcrumbs={\n data.breadcrumbs\n }\n label={data.title}\n url={data.path}\n keyWord={\n inputRef.current\n ?.value || ''\n }\n onNavigate={handleNavigate}\n />\n ))}\n </div>\n ))}\n {searchResult.length === 0 && noResult && (\n <div className=\"my-10 text-center text-lg\">\n <span className=\"pr-1\">\n {t(\n 'common.status.noResultsFor',\n )}\n </span>\n <span className=\"heading-text\">\n {`'`}\n {inputRef.current?.value}\n {`'`}\n </span>\n </div>\n )}\n </ScrollBar>\n </>\n )}\n </div>\n </div>\n </Dialog>\n </>\n )\n}\n\nconst Search = withHeaderItem(_Search)\n\nexport default Search\n"],"names":["breadcrumbs","item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Search.js","sources":["../../../../lib/@ecme/components/template/Search.tsx"],"sourcesContent":["import { NavigationTree } from '@/@types/navigation'\nimport Button from '@/components/ui/Button'\nimport Dialog from '@/components/ui/Dialog'\nimport ScrollBar from '@/components/ui/ScrollBar'\nimport navigationConfig from '@/configs/navigation.config'\nimport { NAV_ITEM_TYPE_ITEM } from '@/constants/navigation.constant'\nimport { useSessionUser } from '@/store/authStore'\nimport classNames from '@/utils/classNames'\nimport withHeaderItem from '@/utils/hoc/withHeaderItem'\nimport debounce from 'lodash/debounce'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport Highlighter from 'react-highlight-words'\nimport { useTranslation } from 'react-i18next'\nimport { HiChevronRight, HiOutlineSearch } from 'react-icons/hi'\nimport { PiMagnifyingGlassDuotone } from 'react-icons/pi'\nimport { Link } from 'react-router-dom'\nimport { Spinner } from '../ui'\n\ntype SearchData = {\n key: string\n path: string\n title: string\n icon: string\n category: string\n categoryTitle: string\n breadcrumbs: string[]\n}\n\ntype SearchResult = {\n title: string\n data: SearchData[]\n}\n\nconst filterNavigationByAuthority = (\n navTree: NavigationTree[],\n userAuthority: string[],\n): NavigationTree[] => {\n return navTree.reduce((acc: NavigationTree[], nav) => {\n if (nav.excludeWhenHasPaths && nav.excludeWhenHasPaths.length > 0) {\n const shouldExclude = nav.excludeWhenHasPaths.some((path) =>\n userAuthority.includes(path),\n )\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\n if (filteredSubMenu.length > 0) {\n acc.push({ ...nav, subMenu: filteredSubMenu })\n }\n } else if ((nav.path && userAuthority.includes(nav.path)) || !nav.path) {\n acc.push(nav)\n }\n\n return acc\n }, [])\n}\n\nconst ListItem = (props: {\n icon: string\n label: string\n url: string\n isLast?: boolean\n keyWord: string\n breadcrumbs: string[]\n onNavigate: () => void\n}) => {\n const { icon, label, url = '', keyWord, onNavigate, breadcrumbs } = props\n\n const makeBreadcrumbs = (breadcrumbs: string[]) => {\n return breadcrumbs.join(' / ')\n }\n\n return (\n <Link to={url} onClick={onNavigate}>\n <div\n className={classNames(\n 'flex items-center justify-between rounded-xl p-3 cursor-pointer user-select',\n 'hover:bg-gray-100 dark:hover:bg-gray-700',\n )}\n >\n <div className=\"flex items-center gap-2\">\n {/* <div\n className={classNames(\n 'rounded-lg border-2 border-gray-200 shadow-sm text-xl group-hover:shadow h-10 w-10 flex items-center justify-center bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100',\n )}\n >\n {icon && navigationIcon[icon]}\n </div> */}\n <div className=\"text-gray-900 dark:text-gray-300\">\n <Highlighter\n autoEscape\n highlightClassName={classNames(\n 'text-primary',\n 'underline bg-transparent font-semibold dark:text-white',\n )}\n searchWords={[keyWord]}\n textToHighlight={makeBreadcrumbs(breadcrumbs)}\n />\n </div>\n </div>\n <HiChevronRight className=\"text-lg\" />\n </div>\n </Link>\n )\n}\n\ntype NavigationTreeFlat = NavigationTree & { parents: string[] }\n\nconst _Search = ({ className }: { className?: string }) => {\n const [loading, setLoading] = useState(false)\n const [searchDialogOpen, setSearchDialogOpen] = useState(false)\n const [searchResult, setSearchResult] = useState<SearchResult[]>([])\n const [noResult, setNoResult] = useState(false)\n const userAuthority = useSessionUser((state) => state.user.authority)\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleReset = () => {\n setNoResult(false)\n setSearchResult([])\n }\n\n const handleSearchOpen = () => {\n setSearchDialogOpen(true)\n }\n\n const handleSearchClose = () => {\n setSearchDialogOpen(false)\n handleReset()\n }\n\n const debounceFn = debounce(handleDebounceFn, 750)\n\n const { t } = useTranslation()\n\n const flatNavTree = useMemo(() => {\n const arr: NavigationTreeFlat[] = []\n const filteredNavigationTree = filterNavigationByAuthority(\n navigationConfig,\n userAuthority || [],\n )\n\n const makeflat = (item: NavigationTree, parents: string[]) => {\n if (Array.isArray(item.subMenu) && item.subMenu.length > 0) {\n item.subMenu.forEach((item) =>\n makeflat(item, [...parents, t(item.translateKey)]),\n )\n }\n arr.push({ ...item, parents })\n }\n\n filteredNavigationTree.forEach(function f(item) {\n makeflat(item, [t(item.translateKey)])\n })\n\n return arr\n }, [userAuthority, t])\n\n const filterNavigationTreeFlat = (\n text: string,\n tree: NavigationTreeFlat[],\n ): NavigationTreeFlat[] => {\n const results = tree.filter(\n (item) =>\n item.type === NAV_ITEM_TYPE_ITEM &&\n item.parents.join().toUpperCase().includes(text.toUpperCase()),\n )\n\n return results\n }\n\n function navTreeFlatToSearchResult(\n tree: NavigationTreeFlat[],\n ): SearchResult[] {\n const navTreeSearchResult: SearchResult = {\n title: t('base.layout.search.results.navTree'),\n data: [],\n }\n tree.forEach((item) => {\n navTreeSearchResult.data.push({\n category: item.path,\n categoryTitle: item.title,\n icon: item.icon,\n key: item.key,\n path: item.path,\n title: t(item.translateKey, item.title),\n breadcrumbs: item.parents,\n })\n })\n return [navTreeSearchResult]\n }\n\n async function handleDebounceFn(query: string) {\n if (!query) {\n setLoading(false)\n setSearchResult([])\n return\n }\n\n if (noResult) {\n setNoResult(false)\n }\n\n const res = await filterNavigationTreeFlat(query, flatNavTree)\n\n if (res) {\n if (res.length === 0) {\n setNoResult(true)\n setSearchResult([])\n } else {\n setSearchResult(navTreeFlatToSearchResult(res))\n }\n }\n\n setLoading(false)\n }\n\n const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => {\n setLoading(true)\n debounceFn(e.target.value)\n }\n\n useEffect(() => {\n if (searchDialogOpen) {\n const timeout = setTimeout(() => inputRef.current?.focus(), 100)\n return () => {\n clearTimeout(timeout)\n }\n }\n }, [searchDialogOpen])\n\n const handleNavigate = () => {\n handleSearchClose()\n }\n\n return (\n <>\n <div\n className={classNames(className, 'text-2xl')}\n onClick={handleSearchOpen}\n >\n <PiMagnifyingGlassDuotone />\n </div>\n <Dialog\n contentClassName=\"p-0\"\n isOpen={searchDialogOpen}\n closable={false}\n onRequestClose={handleSearchClose}\n >\n <div>\n <div className=\"flex items-center justify-between border-b border-gray-200 px-4 dark:border-gray-600\">\n <div className=\"flex items-center\">\n <HiOutlineSearch className=\"text-xl\" />\n <input\n ref={inputRef}\n className=\"block w-full bg-transparent p-4 text-base text-gray-900 outline-none ring-0 dark:text-gray-100\"\n placeholder={t('common.input.placeholder.search')}\n onChange={handleSearch}\n />\n </div>\n <Button size=\"xs\" onClick={handleSearchClose}>\n Esc\n </Button>\n </div>\n <div className=\"px-5 py-6\">\n {loading ? (\n <div\n className={classNames(\n 'flex items-center justify-center',\n )}\n >\n <Spinner size={40} />\n </div>\n ) : (\n <>\n <ScrollBar className=\"max-h-[350px] overflow-y-auto\">\n {searchResult.map((result) => (\n <div\n key={result.title}\n className=\"mb-4\"\n >\n <h6 className=\"mb-3\">\n {result.title}\n </h6>\n {result.data.map((data, index) => (\n <ListItem\n key={data.title + index}\n icon={data.icon}\n breadcrumbs={\n data.breadcrumbs\n }\n label={data.title}\n url={data.path}\n keyWord={\n inputRef.current\n ?.value || ''\n }\n onNavigate={handleNavigate}\n />\n ))}\n </div>\n ))}\n {searchResult.length === 0 && noResult && (\n <div className=\"my-10 text-center text-lg\">\n <span className=\"pr-1\">\n {t(\n 'common.status.noResultsFor',\n )}\n </span>\n <span className=\"heading-text\">\n {`'`}\n {inputRef.current?.value}\n {`'`}\n </span>\n </div>\n )}\n </ScrollBar>\n </>\n )}\n </div>\n </div>\n </Dialog>\n </>\n )\n}\n\nconst Search = withHeaderItem(_Search)\n\nexport default Search\n"],"names":["breadcrumbs","item"],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
import { BrowserRouter } from "react-router-dom";
|
|
4
|
+
import navigationConfig from "../../configs/navigation.config/index.js";
|
|
5
|
+
import { useSessionUser } from "../../store/authStore.js";
|
|
6
|
+
import Search from "./Search.js";
|
|
7
|
+
const collectAuthorityPaths = (navTree) => {
|
|
8
|
+
return navTree.reduce((acc, node) => {
|
|
9
|
+
if (node.path) {
|
|
10
|
+
acc.push(node.path);
|
|
11
|
+
}
|
|
12
|
+
if (node.subMenu?.length) {
|
|
13
|
+
acc.push(...collectAuthorityPaths(node.subMenu));
|
|
14
|
+
}
|
|
15
|
+
return acc;
|
|
16
|
+
}, []);
|
|
17
|
+
};
|
|
18
|
+
const allAuthority = Array.from(new Set(collectAuthorityPaths(navigationConfig)));
|
|
19
|
+
const WithSimulatedAuthorities = ({
|
|
20
|
+
children
|
|
21
|
+
}) => {
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
const previousUser = useSessionUser.getState().user;
|
|
24
|
+
useSessionUser.setState({
|
|
25
|
+
user: {
|
|
26
|
+
...previousUser,
|
|
27
|
+
authority: allAuthority
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return () => {
|
|
31
|
+
useSessionUser.setState({ user: previousUser });
|
|
32
|
+
};
|
|
33
|
+
}, []);
|
|
34
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
35
|
+
};
|
|
36
|
+
const meta = {
|
|
37
|
+
title: "@ecme/Template/Search",
|
|
38
|
+
component: Search,
|
|
39
|
+
parameters: {
|
|
40
|
+
layout: "padded"
|
|
41
|
+
},
|
|
42
|
+
tags: ["autodocs"],
|
|
43
|
+
decorators: [
|
|
44
|
+
(Story) => /* @__PURE__ */ jsx(BrowserRouter, { children: /* @__PURE__ */ jsx(WithSimulatedAuthorities, { children: /* @__PURE__ */ jsx(Story, {}) }) })
|
|
45
|
+
],
|
|
46
|
+
argTypes: {
|
|
47
|
+
className: {
|
|
48
|
+
control: "text"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const Default = {
|
|
53
|
+
args: {
|
|
54
|
+
className: ""
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
export {
|
|
58
|
+
Default,
|
|
59
|
+
meta as default
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=Search.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Search.stories.js","sources":["../../../../lib/@ecme/components/template/Search.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react'\nimport { useEffect } from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport navigationConfig from '@/configs/navigation.config'\nimport type { NavigationTree } from '@/@types/navigation'\nimport { useSessionUser } from '@/store/authStore'\nimport Search from './Search'\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 allAuthority = Array.from(new Set(collectAuthorityPaths(navigationConfig)))\n\nconst WithSimulatedAuthorities = ({\n children,\n}: {\n children: React.ReactNode\n}) => {\n useEffect(() => {\n const previousUser = useSessionUser.getState().user\n\n useSessionUser.setState({\n user: {\n ...previousUser,\n authority: allAuthority,\n },\n })\n\n return () => {\n useSessionUser.setState({ user: previousUser })\n }\n }, [])\n\n return <>{children}</>\n}\n\nconst meta = {\n title: '@ecme/Template/Search',\n component: Search,\n parameters: {\n layout: 'padded',\n },\n tags: ['autodocs'],\n decorators: [\n (Story) => (\n <BrowserRouter>\n <WithSimulatedAuthorities>\n <Story />\n </WithSimulatedAuthorities>\n </BrowserRouter>\n ),\n ],\n argTypes: {\n className: {\n control: 'text',\n },\n },\n} satisfies Meta<typeof Search>\n\nexport default meta\n\ntype TStory = StoryObj<typeof meta>\n\nexport const Default: TStory = {\n args: {\n className: '',\n },\n}\n"],"names":[],"mappings":";;;;;;AAQA,MAAM,wBAAwB,CAAC,YAAwC;AACnE,SAAO,QAAQ,OAAO,CAAC,KAAe,SAAS;AAC3C,QAAI,KAAK,MAAM;AACX,UAAI,KAAK,KAAK,IAAI;AAAA,IACtB;AAEA,QAAI,KAAK,SAAS,QAAQ;AACtB,UAAI,KAAK,GAAG,sBAAsB,KAAK,OAAO,CAAC;AAAA,IACnD;AAEA,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AACT;AAEA,MAAM,eAAe,MAAM,KAAK,IAAI,IAAI,sBAAsB,gBAAgB,CAAC,CAAC;AAEhF,MAAM,2BAA2B,CAAC;AAAA,EAC9B;AACJ,MAEM;AACF,YAAU,MAAM;AACZ,UAAM,eAAe,eAAe,SAAA,EAAW;AAE/C,mBAAe,SAAS;AAAA,MACpB,MAAM;AAAA,QACF,GAAG;AAAA,QACH,WAAW;AAAA,MAAA;AAAA,IACf,CACH;AAED,WAAO,MAAM;AACT,qBAAe,SAAS,EAAE,MAAM,aAAA,CAAc;AAAA,IAClD;AAAA,EACJ,GAAG,CAAA,CAAE;AAEL,yCAAU,UAAS;AACvB;AAEA,MAAM,OAAO;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACR,QAAQ;AAAA,EAAA;AAAA,EAEZ,MAAM,CAAC,UAAU;AAAA,EACjB,YAAY;AAAA,IACR,CAAC,UACG,oBAAC,eAAA,EACG,8BAAC,0BAAA,EACG,UAAA,oBAAC,OAAA,CAAA,CAAM,EAAA,CACX,EAAA,CACJ;AAAA,EAAA;AAAA,EAGR,UAAU;AAAA,IACN,WAAW;AAAA,MACP,SAAS;AAAA,IAAA;AAAA,EACb;AAER;AAMO,MAAM,UAAkB;AAAA,EAC3B,MAAM;AAAA,IACF,WAAW;AAAA,EAAA;AAEnB;"}
|
package/dist/@ecme/index.js
CHANGED
|
@@ -164,6 +164,7 @@ import { countryList } from "./constants/countries.constant.js";
|
|
|
164
164
|
import { dashboardsPlaceholder } from "./views/dashboards/index.js";
|
|
165
165
|
import { dateLocales } from "./locales/locales.js";
|
|
166
166
|
import { docsStyles } from "./assets/styles/docs/index.js";
|
|
167
|
+
import { ensureAppLocaleResourcesLoaded, initAllAppLocaleResources } from "./locales/initAll.js";
|
|
167
168
|
import { default as default108 } from "./utils/fileSizeUnit.js";
|
|
168
169
|
import { default as default109 } from "./configs/firebase.config.js";
|
|
169
170
|
import { guidePlaceholder } from "./views/guide/index.js";
|
|
@@ -437,10 +438,12 @@ export {
|
|
|
437
438
|
dashboardsPlaceholder,
|
|
438
439
|
dateLocales,
|
|
439
440
|
docsStyles,
|
|
441
|
+
ensureAppLocaleResourcesLoaded,
|
|
440
442
|
default108 as fileSizeUnit,
|
|
441
443
|
default109 as firebaseConfig,
|
|
442
444
|
guidePlaceholder,
|
|
443
445
|
default110 as hooks,
|
|
446
|
+
initAllAppLocaleResources,
|
|
444
447
|
default111 as isLastChild,
|
|
445
448
|
default112 as navigationIconConfig,
|
|
446
449
|
othersPlaceholder,
|
package/dist/@ecme/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { dateLocales } from "./locales.js";
|
|
2
|
+
import { ensureAppLocaleResourcesLoaded, initAllAppLocaleResources } from "./initAll.js";
|
|
2
3
|
import i18n from "i18next";
|
|
3
4
|
import { default as default2 } from "i18next";
|
|
4
5
|
export {
|
|
5
6
|
dateLocales,
|
|
6
|
-
default2 as default
|
|
7
|
+
default2 as default,
|
|
8
|
+
ensureAppLocaleResourcesLoaded,
|
|
9
|
+
initAllAppLocaleResources
|
|
7
10
|
};
|
|
8
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import "./locales.js";
|
|
2
|
+
import { addBaseLocaleResources } from "../../base/locales/index.js";
|
|
3
|
+
import { addPageLocaleResources } from "../views/auth/lang/index.js";
|
|
4
|
+
import i18n from "i18next";
|
|
5
|
+
function initAllAppLocaleResources() {
|
|
6
|
+
addBaseLocaleResources();
|
|
7
|
+
addPageLocaleResources();
|
|
8
|
+
}
|
|
9
|
+
async function ensureAppLocaleResourcesLoaded() {
|
|
10
|
+
initAllAppLocaleResources();
|
|
11
|
+
if (i18n.isInitialized) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
await new Promise((resolve) => {
|
|
15
|
+
const handleInitialized = () => {
|
|
16
|
+
i18n.off("initialized", handleInitialized);
|
|
17
|
+
resolve();
|
|
18
|
+
};
|
|
19
|
+
i18n.on("initialized", handleInitialized);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
ensureAppLocaleResourcesLoaded,
|
|
24
|
+
initAllAppLocaleResources
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=initAll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initAll.js","sources":["../../../lib/@ecme/locales/initAll.ts"],"sourcesContent":["import i18n from './locales'\nimport { addBaseLocaleResources } from '@base/locales'\nimport { addPageLocaleResources } from '@/views/auth/lang'\n\nexport function initAllAppLocaleResources() {\n addBaseLocaleResources()\n addPageLocaleResources()\n}\n\nexport async function ensureAppLocaleResourcesLoaded() {\n initAllAppLocaleResources()\n\n if (i18n.isInitialized) {\n return\n }\n\n await new Promise<void>((resolve) => {\n const handleInitialized = () => {\n i18n.off('initialized', handleInitialized)\n resolve()\n }\n\n i18n.on('initialized', handleInitialized)\n })\n}"],"names":[],"mappings":";;;;AAIO,SAAS,4BAA4B;AACxC,yBAAA;AACA,yBAAA;AACJ;AAEA,eAAsB,iCAAiC;AACnD,4BAAA;AAEA,MAAI,KAAK,eAAe;AACpB;AAAA,EACJ;AAEA,QAAM,IAAI,QAAc,CAAC,YAAY;AACjC,UAAM,oBAAoB,MAAM;AAC5B,WAAK,IAAI,eAAe,iBAAiB;AACzC,cAAA;AAAA,IACJ;AAEA,SAAK,GAAG,eAAe,iBAAiB;AAAA,EAC5C,CAAC;AACL;"}
|
|
@@ -87,6 +87,49 @@ const common = {
|
|
|
87
87
|
of: "of",
|
|
88
88
|
all: "All"
|
|
89
89
|
},
|
|
90
|
+
layout: {
|
|
91
|
+
search: {
|
|
92
|
+
results: {
|
|
93
|
+
navTree: "Navigation"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
profile: {
|
|
97
|
+
dropdown: {
|
|
98
|
+
options: {
|
|
99
|
+
profile: "Profile",
|
|
100
|
+
settings: "Settings",
|
|
101
|
+
activity: "Activity",
|
|
102
|
+
signOut: "Sign Out"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
themeConfig: {
|
|
107
|
+
title: "Theme Configuration",
|
|
108
|
+
options: {
|
|
109
|
+
darkMode: "Dark mode",
|
|
110
|
+
darkModeDesc: "Toggle between light and dark theme",
|
|
111
|
+
direction: "Direction",
|
|
112
|
+
directionDesc: "User interface direction",
|
|
113
|
+
theme: "Theme",
|
|
114
|
+
layout: "Layout",
|
|
115
|
+
layoutCollapsible: "Collapsible",
|
|
116
|
+
layoutStacked: "Stacked",
|
|
117
|
+
layoutTopbar: "Topbar",
|
|
118
|
+
layoutFrameless: "Frameless",
|
|
119
|
+
layoutOverlay: "Overlay",
|
|
120
|
+
layoutBlank: "Blank"
|
|
121
|
+
},
|
|
122
|
+
buttons: {
|
|
123
|
+
copyConfig: "Copy config"
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
notifications: {
|
|
127
|
+
title: "Notifications",
|
|
128
|
+
actions: {
|
|
129
|
+
readAll: "Mark all as read"
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
},
|
|
90
133
|
...EnModulesCommon
|
|
91
134
|
}
|
|
92
135
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sources":["../../../../../lib/@ecme/locales/lang/en/common.ts"],"sourcesContent":["import EnModulesCommon from '@base/locales/lang/en/modules/modules.common'\n\nexport default {\n common: {\n actions: {\n save: 'Save',\n cancel: 'Cancel',\n new: 'New',\n delete: 'Delete',\n edit: 'Edit',\n filter: 'Filter',\n search: 'Search',\n back: 'Back',\n continue: 'Continue',\n reset: 'Reset',\n clear: 'Clear',\n close: 'Close',\n confirm: 'Confirm',\n signIn: 'Sign In',\n signOut: 'Sign Out',\n signUp: 'Sign Up',\n recover: 'Recover',\n send: 'Send',\n done: 'Done',\n add: 'Add',\n remove: 'Remove',\n yes: 'Yes',\n no: 'No',\n accept: 'Accept',\n reject: 'Reject',\n approve: 'Approve',\n rejectAll: 'Reject All',\n approveAll: 'Approve All',\n rejectSelected: 'Reject Selected',\n approveSelected: 'Approve Selected',\n rejectAllSelected: 'Reject All Selected',\n approveAllSelected: 'Approve All Selected',\n selectAll: 'Select All',\n deselectAll: 'Deselect All',\n select: 'Select',\n deselect: 'Deselect',\n download: 'Download',\n upload: 'Upload',\n finish: 'Finish'\n },\n validation: {\n required: 'This field is required',\n invalidEmail: 'Invalid email',\n invalidPassword: 'Invalid password',\n invalidDate: 'Invalid date',\n invalidTime: 'Invalid time',\n invalidDateTime: 'Invalid date time',\n invalidPhone: 'Invalid phone',\n invalidCPF: 'Invalid CPF',\n invalidCNPJ: 'Invalid CNPJ',\n invalidFormat: 'Invalid format',\n invalidLength: 'Invalid length',\n invalidURL: 'Invalid URL',\n invalidNumber: 'Invalid number',\n atLeastOne: 'Select at least one',\n minLength: 'Minimum length is {{min}}',\n maxLength: 'Maximum length is {{max}}',\n },\n status: {\n submitting: 'Submitting...',\n loading: 'Loading...',\n noResultsFor: 'No results for',\n },\n input: {\n placeholder: {\n search: 'Search...',\n searchBy: 'Search by...',\n select: 'Select...',\n },\n },\n button: {\n actions: 'Actions',\n },\n table: {\n noData: 'No data',\n noResults: 'No results',\n noResultsFound: 'No results found',\n noDataFound: 'No data found',\n loading: 'Loading...',\n rowsPerPage: 'Rows per page',\n page: 'page',\n pageAbbr: 'pg.',\n of: 'of',\n all: 'All',\n },\n ...EnModulesCommon,\n },\n}\n"],"names":[],"mappings":";AAEA,MAAA,SAAe;AAAA,EACX,QAAQ;AAAA,IACJ,SAAS;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,MACpB,WAAW;AAAA,MACX,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,IAAA;AAAA,IAEZ,YAAY;AAAA,MACR,UAAU;AAAA,MACV,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,eAAe;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,WAAW;AAAA,IAAA;AAAA,IAEf,QAAQ;AAAA,MACJ,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,cAAc;AAAA,IAAA;AAAA,IAElB,OAAO;AAAA,MACH,aAAa;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AAAA,MAAA;AAAA,IACZ;AAAA,IAEJ,QAAQ;AAAA,MACJ,SAAS;AAAA,IAAA;AAAA,IAEb,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,MACN,UAAU;AAAA,MACV,IAAI;AAAA,MACJ,KAAK;AAAA,IAAA;AAAA,IAET,GAAG;AAAA,EAAA;AAEX;"}
|
|
1
|
+
{"version":3,"file":"common.js","sources":["../../../../../lib/@ecme/locales/lang/en/common.ts"],"sourcesContent":["import EnModulesCommon from '@base/locales/lang/en/modules/modules.common'\n\nexport default {\n common: {\n actions: {\n save: 'Save',\n cancel: 'Cancel',\n new: 'New',\n delete: 'Delete',\n edit: 'Edit',\n filter: 'Filter',\n search: 'Search',\n back: 'Back',\n continue: 'Continue',\n reset: 'Reset',\n clear: 'Clear',\n close: 'Close',\n confirm: 'Confirm',\n signIn: 'Sign In',\n signOut: 'Sign Out',\n signUp: 'Sign Up',\n recover: 'Recover',\n send: 'Send',\n done: 'Done',\n add: 'Add',\n remove: 'Remove',\n yes: 'Yes',\n no: 'No',\n accept: 'Accept',\n reject: 'Reject',\n approve: 'Approve',\n rejectAll: 'Reject All',\n approveAll: 'Approve All',\n rejectSelected: 'Reject Selected',\n approveSelected: 'Approve Selected',\n rejectAllSelected: 'Reject All Selected',\n approveAllSelected: 'Approve All Selected',\n selectAll: 'Select All',\n deselectAll: 'Deselect All',\n select: 'Select',\n deselect: 'Deselect',\n download: 'Download',\n upload: 'Upload',\n finish: 'Finish'\n },\n validation: {\n required: 'This field is required',\n invalidEmail: 'Invalid email',\n invalidPassword: 'Invalid password',\n invalidDate: 'Invalid date',\n invalidTime: 'Invalid time',\n invalidDateTime: 'Invalid date time',\n invalidPhone: 'Invalid phone',\n invalidCPF: 'Invalid CPF',\n invalidCNPJ: 'Invalid CNPJ',\n invalidFormat: 'Invalid format',\n invalidLength: 'Invalid length',\n invalidURL: 'Invalid URL',\n invalidNumber: 'Invalid number',\n atLeastOne: 'Select at least one',\n minLength: 'Minimum length is {{min}}',\n maxLength: 'Maximum length is {{max}}',\n },\n status: {\n submitting: 'Submitting...',\n loading: 'Loading...',\n noResultsFor: 'No results for',\n },\n input: {\n placeholder: {\n search: 'Search...',\n searchBy: 'Search by...',\n select: 'Select...',\n },\n },\n button: {\n actions: 'Actions',\n },\n table: {\n noData: 'No data',\n noResults: 'No results',\n noResultsFound: 'No results found',\n noDataFound: 'No data found',\n loading: 'Loading...',\n rowsPerPage: 'Rows per page',\n page: 'page',\n pageAbbr: 'pg.',\n of: 'of',\n all: 'All',\n },\n layout: {\n search: {\n results: {\n navTree: 'Navigation',\n },\n },\n profile: {\n dropdown: {\n options: {\n profile: 'Profile',\n settings: 'Settings',\n activity: 'Activity',\n signOut: 'Sign Out',\n },\n },\n },\n themeConfig: {\n title: 'Theme Configuration',\n options: {\n darkMode: 'Dark mode',\n darkModeDesc: 'Toggle between light and dark theme',\n direction: 'Direction',\n directionDesc: 'User interface direction',\n theme: 'Theme',\n layout: 'Layout',\n layoutCollapsible: 'Collapsible',\n layoutStacked: 'Stacked',\n layoutTopbar: 'Topbar',\n layoutFrameless: 'Frameless',\n layoutOverlay: 'Overlay',\n layoutBlank: 'Blank',\n },\n buttons: {\n copyConfig: 'Copy config',\n },\n },\n notifications: {\n title: 'Notifications',\n actions: {\n readAll: 'Mark all as read',\n },\n },\n },\n ...EnModulesCommon,\n },\n}\n"],"names":[],"mappings":";AAEA,MAAA,SAAe;AAAA,EACX,QAAQ;AAAA,IACJ,SAAS;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,MACpB,WAAW;AAAA,MACX,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,IAAA;AAAA,IAEZ,YAAY;AAAA,MACR,UAAU;AAAA,MACV,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,eAAe;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,WAAW;AAAA,IAAA;AAAA,IAEf,QAAQ;AAAA,MACJ,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,cAAc;AAAA,IAAA;AAAA,IAElB,OAAO;AAAA,MACH,aAAa;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AAAA,MAAA;AAAA,IACZ;AAAA,IAEJ,QAAQ;AAAA,MACJ,SAAS;AAAA,IAAA;AAAA,IAEb,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,MACN,UAAU;AAAA,MACV,IAAI;AAAA,MACJ,KAAK;AAAA,IAAA;AAAA,IAET,QAAQ;AAAA,MACJ,QAAQ;AAAA,QACJ,SAAS;AAAA,UACL,SAAS;AAAA,QAAA;AAAA,MACb;AAAA,MAEJ,SAAS;AAAA,QACL,UAAU;AAAA,UACN,SAAS;AAAA,YACL,SAAS;AAAA,YACT,UAAU;AAAA,YACV,UAAU;AAAA,YACV,SAAS;AAAA,UAAA;AAAA,QACb;AAAA,MACJ;AAAA,MAEJ,aAAa;AAAA,QACT,OAAO;AAAA,QACP,SAAS;AAAA,UACL,UAAU;AAAA,UACV,cAAc;AAAA,UACd,WAAW;AAAA,UACX,eAAe;AAAA,UACf,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,mBAAmB;AAAA,UACnB,eAAe;AAAA,UACf,cAAc;AAAA,UACd,iBAAiB;AAAA,UACjB,eAAe;AAAA,UACf,aAAa;AAAA,QAAA;AAAA,QAEjB,SAAS;AAAA,UACL,YAAY;AAAA,QAAA;AAAA,MAChB;AAAA,MAEJ,eAAe;AAAA,QACX,OAAO;AAAA,QACP,SAAS;AAAA,UACL,SAAS;AAAA,QAAA;AAAA,MACb;AAAA,IACJ;AAAA,IAEJ,GAAG;AAAA,EAAA;AAEX;"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import common from "./common.js";
|
|
2
2
|
import nav from "./nav.js";
|
|
3
3
|
import pages from "./pages.js";
|
|
4
|
+
import en$1 from "../../../../base/locales/lang/en/index.js";
|
|
4
5
|
const en = {
|
|
5
6
|
...nav,
|
|
6
7
|
...common,
|
|
7
|
-
...pages
|
|
8
|
+
...pages,
|
|
9
|
+
...en$1
|
|
8
10
|
};
|
|
9
11
|
export {
|
|
10
12
|
en as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../lib/@ecme/locales/lang/en/index.ts"],"sourcesContent":["import common from './common'\nimport nav from './nav'\nimport pages from './pages'\n\nexport default {\n ...nav,\n ...common,\n ...pages,\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../lib/@ecme/locales/lang/en/index.ts"],"sourcesContent":["import common from './common'\nimport nav from './nav'\nimport pages from './pages'\nimport base from '@base/locales/lang/en'\n\nexport default {\n ...nav,\n ...common,\n ...pages,\n ...base,\n}\n"],"names":["base"],"mappings":";;;;AAKA,MAAA,KAAe;AAAA,EACX,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAGA;AACP;"}
|