udp-react-enterprise-component-library 25.18.1-beta.16 → 25.18.1-beta.18
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/{FieldArrayCard-56TLTaZc.js → FieldArrayCard-KGSDXwrq.js} +1 -1
- package/dist/{FieldArrayCard-56TLTaZc.js.map → FieldArrayCard-KGSDXwrq.js.map} +1 -1
- package/dist/{FluentProfileMenuCard-DNEXKlnU.js → FluentProfileMenuCard-DPPx-nDJ.js} +5 -5
- package/dist/{FluentProfileMenuCard-DNEXKlnU.js.map → FluentProfileMenuCard-DPPx-nDJ.js.map} +1 -1
- package/dist/{MyExportsPage-lqTyApig.js → MyExportsPage-3e8kRwNT.js} +2 -2
- package/dist/{MyExportsPage-lqTyApig.js.map → MyExportsPage-3e8kRwNT.js.map} +1 -1
- package/dist/{MyExportsPage-Bw0ueYE_.js → MyExportsPage-D3yr41VC.js} +2 -2
- package/dist/{RejectIcon-9a6AQhFS.js → RejectIcon-DNo11W_H.js} +1 -1
- package/dist/{RejectIcon-9a6AQhFS.js.map → RejectIcon-DNo11W_H.js.map} +1 -1
- package/dist/{Shell-CtVpJXxY.js → Shell-FkTfRpO5.js} +2 -2
- package/dist/{Shell-CtVpJXxY.js.map → Shell-FkTfRpO5.js.map} +1 -1
- package/dist/{SimpleTable-qZ0yJQ7F.js → SimpleTable-DX9xdKYK.js} +1 -1
- package/dist/{SimpleTable-qZ0yJQ7F.js.map → SimpleTable-DX9xdKYK.js.map} +1 -1
- package/dist/{StatusCellRenderer-DOYDkiZu.js → StatusCellRenderer-DK3MexwY.js} +1 -1
- package/dist/{StatusCellRenderer-DOYDkiZu.js.map → StatusCellRenderer-DK3MexwY.js.map} +1 -1
- package/dist/{SupportCaseSideSheet-DPfapAFC.js → SupportCaseSideSheet-BTCZjI26.js} +1 -1
- package/dist/{SupportCaseSideSheet-DPfapAFC.js.map → SupportCaseSideSheet-BTCZjI26.js.map} +1 -1
- package/dist/{SupportCaseSideSheet-D5VyeXgu.js → SupportCaseSideSheet-Bv9FsrIk.js} +1 -1
- package/dist/UI/accordion/index.js +1 -1
- package/dist/UI/advancedSearchBuilder/index.js +1 -1
- package/dist/UI/charts/index.js +1 -1
- package/dist/UI/components/dataDisplay/index.js +1 -1
- package/dist/UI/components/feedback/index.js +1 -1
- package/dist/UI/components/index.js +3 -3
- package/dist/UI/containers/index.js +1 -1
- package/dist/UI/dataDisplay/FluentActivity/index.js +1 -1
- package/dist/UI/dataDisplay/FluentDataTable/index.js +1 -1
- package/dist/UI/dataDisplay/index.js +3 -3
- package/dist/UI/feedback/index.js +1 -1
- package/dist/UI/fileViewer/index.js +1 -1
- package/dist/UI/floorplans/index.js +1 -1
- package/dist/UI/forms/index.js +2 -2
- package/dist/UI/iframe/index.js +1 -1
- package/dist/UI/index.js +41 -41
- package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
- package/dist/UI/loading/index.js +1 -1
- package/dist/UI/mapLayout/index.js +1 -1
- package/dist/UI/maps/index.js +2 -2
- package/dist/UI/navigation/index.js +4 -4
- package/dist/UI/navigation/menus/index.js +1 -1
- package/dist/UI/navigation/tabs/defaultTabs/index.js +1 -1
- package/dist/UI/navigation/tabs/index.js +2 -2
- package/dist/UI/property/index.js +1 -1
- package/dist/UI/stepper/index.js +1 -1
- package/dist/UI/support/index.js +2 -2
- package/dist/UI/surfaces/NestedGrid/index.js +2 -2
- package/dist/UI/surfaces/NestedGrid/ui/index.js +1 -1
- package/dist/UI/surfaces/cards/index.js +1 -1
- package/dist/UI/surfaces/index.js +4 -4
- package/dist/UI/templates/index.js +1 -1
- package/dist/UI/templates/ui/renderers/index.js +2 -1
- package/dist/UI/timeline/fluentTimeline/index.js +1 -1
- package/dist/UI/timeline/index.js +2 -2
- package/dist/UI/utilityDisplay/alerts/index.js +1 -1
- package/dist/UI/utilityDisplay/index.js +5 -5
- package/dist/UI/utilityDisplay/ui/index.js +1 -1
- package/dist/UI/utilityDisplay/utilities/index.js +1 -1
- package/dist/UI/utilityDisplay/utilityHeader/index.js +1 -1
- package/dist/UI/widgets/FluentComponents/index.js +1 -1
- package/dist/UI/widgets/index.js +1 -1
- package/dist/UI/widgets/library/TableWidget/index.js +1 -1
- package/dist/{UdpFormsSubmissionGrid-Bzo5wcCS.js → UdpFormsSubmissionGrid-DesZibh4.js} +139 -20
- package/dist/UdpFormsSubmissionGrid-DesZibh4.js.map +1 -0
- package/dist/{UdpMap-DB0qsBfI.js → UdpMap-BgkNp2X2.js} +1 -1
- package/dist/{UdpMap-DB0qsBfI.js.map → UdpMap-BgkNp2X2.js.map} +1 -1
- package/dist/{UdpRoutes-CI1py_NT.js → UdpRoutes-Bbd0O-Yg.js} +3 -3
- package/dist/{UdpRoutes-CI1py_NT.js.map → UdpRoutes-Bbd0O-Yg.js.map} +1 -1
- package/dist/{UserFormSideSheet-DI9PhY_8.js → UserFormSideSheet-2QRJUUnm.js} +1 -1
- package/dist/{UserFormSideSheet-DI9PhY_8.js.map → UserFormSideSheet-2QRJUUnm.js.map} +1 -1
- package/dist/{UserFormSideSheet-D7hlvi7a.js → UserFormSideSheet-DGU02bqo.js} +1 -1
- package/dist/{VirtualBrowser-5hAz3UE3.js → VirtualBrowser-CKvzgu8L.js} +2 -2
- package/dist/{VirtualBrowser-5hAz3UE3.js.map → VirtualBrowser-CKvzgu8L.js.map} +1 -1
- package/dist/{VirtualBrowser-rYIbYWoG.js → VirtualBrowser-CxAjZWKa.js} +2 -2
- package/dist/{VirtualForm-IeyAdA0M.js → VirtualForm-Dj5FMp9u.js} +1 -1
- package/dist/{VirtualForm-IeyAdA0M.js.map → VirtualForm-Dj5FMp9u.js.map} +1 -1
- package/dist/actions/index.js +2 -2
- package/dist/actions/sidebar/index.js +1 -1
- package/dist/actions/utils/index.js +1 -1
- package/dist/{cards-DPBDLDXw.js → cards-Bpy1zoxV.js} +1 -1
- package/dist/{cards-DPBDLDXw.js.map → cards-Bpy1zoxV.js.map} +1 -1
- package/dist/componentSystems/multiThreadTimeline/functions/index.js +1 -1
- package/dist/componentSystems/multiThreadTimeline/index.js +5 -5
- package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +1 -1
- package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +1 -1
- package/dist/componentSystems/multiThreadTimeline/ui/index.js +2 -2
- package/dist/componentSystems/multiThreadTimeline/ui/modified/index.js +1 -1
- package/dist/componentSystems/pageRenderer/hocs/index.js +1 -1
- package/dist/componentSystems/pageRenderer/hooks/index.js +1 -1
- package/dist/componentSystems/pageRenderer/index.js +4 -4
- package/dist/componentSystems/pageRenderer/utils/index.js +1 -1
- package/dist/componentSystems/pageRenderer/wrappers/index.js +1 -1
- package/dist/dataBrowser/forms/index.js +1 -1
- package/dist/dataBrowser/index.js +1 -1
- package/dist/{dataDisplay-BSQWZtf2.js → dataDisplay-CBFgak2F.js} +1 -1
- package/dist/{dataDisplay-BSQWZtf2.js.map → dataDisplay-CBFgak2F.js.map} +1 -1
- package/dist/{defaultTabs-DWvaZLda.js → defaultTabs-CVeUq9lw.js} +1 -1
- package/dist/{defaultTabs-DWvaZLda.js.map → defaultTabs-CVeUq9lw.js.map} +1 -1
- package/dist/index.js +11 -10
- package/dist/maintenanceEngine/crudBrowser/index.js +1 -1
- package/dist/maintenanceEngine/index.js +5 -5
- package/dist/maintenanceEngine/tableBrowser/index.js +1 -1
- package/dist/maintenanceEngine/virtualBrowser/index.js +3 -3
- package/dist/routes/index.js +1 -1
- package/dist/shell/index.js +6 -6
- package/dist/shell/ui/addUser/index.js +2 -2
- package/dist/shell/ui/appSwitcher/index.js +1 -1
- package/dist/shell/ui/index.js +5 -5
- package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/udp/export/index.js +2 -2
- package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +7 -1
- package/dist/{ui-D8rpUgCH.js → ui-gRqaK08H.js} +1 -1
- package/dist/{ui-D8rpUgCH.js.map → ui-gRqaK08H.js.map} +1 -1
- package/dist/utilities/customIcons/index.js +1 -1
- package/dist/workflow/components/index.js +1 -1
- package/dist/workflow/index.js +2 -2
- package/dist/workflow/menus/index.js +1 -1
- package/dist/wrappers-CGE2HK5z.js +1 -0
- package/export-map.json +1 -1
- package/package.json +2 -2
- package/dist/UdpFormsSubmissionGrid-Bzo5wcCS.js.map +0 -1
- /package/dist/{FluentActivity-ZmR91KuL.js → FluentActivity-DNv5ppko.js} +0 -0
- /package/dist/{FluentDataTable-D6CwFLEV.js → FluentDataTable-BXPIqR8m.js} +0 -0
- /package/dist/{NestedGrid-Bpe6Gn2t.js → NestedGrid-CQ_tEe-B.js} +0 -0
- /package/dist/{accordion-Cna7x6KZ.js → accordion-BLXGkcTH.js} +0 -0
- /package/dist/{addUser-Rm753Rdx.js → addUser-D2pqu0AW.js} +0 -0
- /package/dist/{advancedSearchBuilder-B90LZRh_.js → advancedSearchBuilder-DAGBcP1-.js} +0 -0
- /package/dist/{alerts-BEzneJqz.js → alerts-Gbvcpl4E.js} +0 -0
- /package/dist/{appSwitcher-CyJs9WuC.js → appSwitcher-Cj_OxE8O.js} +0 -0
- /package/dist/{charts-Du-Q0llq.js → charts-R51kXdbo.js} +0 -0
- /package/dist/{components-C5coF-wQ.js → components-BbPynQ4E.js} +0 -0
- /package/dist/{components-CoC-8_zm.js → components-HFPHj0Z0.js} +0 -0
- /package/dist/{containers-_3rkuZoE.js → containers-Do3V9CjC.js} +0 -0
- /package/dist/{crudBrowser-CdhcPPcg.js → crudBrowser-CNJMNMPk.js} +0 -0
- /package/dist/{dataDisplay-DIgTM1UM.js → dataDisplay-CHdSKRO0.js} +0 -0
- /package/dist/{feedback-B05CkZXj.js → feedback-DL6EKTOa.js} +0 -0
- /package/dist/{feedback-BDi9oRUo.js → feedback-Dw-Qh7A6.js} +0 -0
- /package/dist/{fileViewer-DRwdxYw_.js → fileViewer-CMBhBXGp.js} +0 -0
- /package/dist/{floorplans-Dl2AyLhb.js → floorplans-CtbDAfnq.js} +0 -0
- /package/dist/{fluentTimeline--3Q718UR.js → fluentTimeline-BbvrZFSz.js} +0 -0
- /package/dist/{forms-BHhy_qYQ.js → forms-Bqbd2PSS.js} +0 -0
- /package/dist/{forms-CVEaCedp.js → forms-uSV7-14b.js} +0 -0
- /package/dist/{functions-CwSJZI3C.js → functions-BKH-pLPX.js} +0 -0
- /package/dist/{hocs-DuC-vCkb.js → hocs-DwAy8u5A.js} +0 -0
- /package/dist/{hooks-D_mILYbQ.js → hooks-B7ab4j1m.js} +0 -0
- /package/dist/{iframe-AW8kvPvm.js → iframe-TEQyCzjj.js} +0 -0
- /package/dist/{loading-B3JBL1wZ.js → loading-BwkuGJoi.js} +0 -0
- /package/dist/{mapLayout-C6RRQSQH.js → mapLayout-Cg6spO9k.js} +0 -0
- /package/dist/{maps-BtJVT799.js → maps-D2whP8Zh.js} +0 -0
- /package/dist/{menus-C7WHOHJR.js → menus-DugtDOhA.js} +0 -0
- /package/dist/{menus-DShZlpFc.js → menus-VWidUTp_.js} +0 -0
- /package/dist/{modified-BPc6aUrP.js → modified--RrdyRlS.js} +0 -0
- /package/dist/{mttMainTimeline-DUbkEEOm.js → mttMainTimeline-DFHSLEBw.js} +0 -0
- /package/dist/{mttSummary-CQ7CNsq1.js → mttSummary-BrQ0Tb62.js} +0 -0
- /package/dist/{navigation-CJVbXvHa.js → navigation-2kyWDJg1.js} +0 -0
- /package/dist/{property-CbQRfYWe.js → property-CB8U10nw.js} +0 -0
- /package/dist/{sidebar-CNPzO9Fp.js → renderers-BI4w5Al3.js} +0 -0
- /package/dist/{stepper-B7huBKfi.js → sidebar-C8yBp4eL.js} +0 -0
- /package/dist/{support-NC4OMh9O.js → stepper-sZXSP0dk.js} +0 -0
- /package/dist/{surfaces-BCTDrjpT.js → support-BhMVhBcD.js} +0 -0
- /package/dist/{tableBrowser-Bn8IK1Xe.js → surfaces-B445R0FQ.js} +0 -0
- /package/dist/{tabs-BNJtY5Hp.js → tableBrowser-BRVY65f3.js} +0 -0
- /package/dist/{templates-B2aOg0L7.js → tabs-BMrd1KM-.js} +0 -0
- /package/dist/{timeline-DJIkHTcL.js → templates-CQ8zAjnU.js} +0 -0
- /package/dist/{ui-BcDKhtx3.js → timeline-x3kpYbLD.js} +0 -0
- /package/dist/{ui-C--uraG2.js → ui-BjpkPJO5.js} +0 -0
- /package/dist/{ui-DKHa8sM6.js → ui-Bqag992Z.js} +0 -0
- /package/dist/{utilities-CxBf7Ev-.js → ui-DBhxlgrk.js} +0 -0
- /package/dist/{utilityDisplay-BaXrFO-O.js → utilities-CMoiGbGt.js} +0 -0
- /package/dist/{utilityHeader-Dt6H4wad.js → utilityDisplay-BHYWs3gf.js} +0 -0
- /package/dist/{utils-B-VgChNQ.js → utilityHeader-BsUlwtE7.js} +0 -0
- /package/dist/{utils-CfkvLUFW.js → utils-CRdMZZPC.js} +0 -0
- /package/dist/{virtualBrowser-n3zfV2w2.js → utils-Cpcp_Rx8.js} +0 -0
- /package/dist/{widgets-CATYcCRH.js → virtualBrowser-pfw07Czd.js} +0 -0
- /package/dist/{wrappers-BaMCCFNw.js → widgets-BcHFxfRK.js} +0 -0
|
@@ -4,6 +4,6 @@ import "../../FluentTextFieldAutoComplete-5Hp3qpk6.js";
|
|
|
4
4
|
import "../../widgets-TW8ap2gq.js";
|
|
5
5
|
import "../../TimeField-CeEYEvD_.js";
|
|
6
6
|
import { i as getPropertiesForFieldValues, n as PropertyFields, r as getFieldValuesForProperties, t as PropertyField } from "../../PropertyFields-E53XCnE7.js";
|
|
7
|
-
import "../../property-
|
|
7
|
+
import "../../property-CB8U10nw.js";
|
|
8
8
|
|
|
9
9
|
export { PropertyField, PropertyFields, getFieldValuesForProperties, getPropertiesForFieldValues };
|
package/dist/UI/stepper/index.js
CHANGED
package/dist/UI/support/index.js
CHANGED
|
@@ -28,7 +28,7 @@ import "../../LinearProgress-DM2DNWCe.js";
|
|
|
28
28
|
import "../../FluentTextField-CXvZawOG.js";
|
|
29
29
|
import "../../formatBytes-Cq2rh3hB.js";
|
|
30
30
|
import "../../DragDropFileUpload-TFHchivz.js";
|
|
31
|
-
import { t as SupportCaseSideSheet } from "../../SupportCaseSideSheet-
|
|
32
|
-
import "../../support-
|
|
31
|
+
import { t as SupportCaseSideSheet } from "../../SupportCaseSideSheet-BTCZjI26.js";
|
|
32
|
+
import "../../support-BhMVhBcD.js";
|
|
33
33
|
|
|
34
34
|
export { SupportCaseSideSheet };
|
|
@@ -2,7 +2,7 @@ import "../../../FluentIcon-DQ6nSDJg.js";
|
|
|
2
2
|
import "../../../FluentIconButton-Dc95mE3v.js";
|
|
3
3
|
import { i as toggleHeader, n as NestWrapper, r as NestedGrid, t as NestParent } from "../../../NestedGrid-DoJN7e4x.js";
|
|
4
4
|
import { t as ExpandRenderer } from "../../../ExpandRenderer-B8RDzjXQ.js";
|
|
5
|
-
import "../../../ui-
|
|
6
|
-
import "../../../NestedGrid-
|
|
5
|
+
import "../../../ui-BjpkPJO5.js";
|
|
6
|
+
import "../../../NestedGrid-CQ_tEe-B.js";
|
|
7
7
|
|
|
8
8
|
export { ExpandRenderer, NestParent, NestWrapper, NestedGrid, toggleHeader };
|
|
@@ -3,6 +3,6 @@ import "../../../FluentCard-C3qSYfiz.js";
|
|
|
3
3
|
import { t as BioCard } from "../../../BioCard-M1ZP7x1X.js";
|
|
4
4
|
import { t as QuickViewCard } from "../../../QuickViewCard-odqSWVkJ.js";
|
|
5
5
|
import { t as InfoCard } from "../../../InfoCard-CvkmC7Sv.js";
|
|
6
|
-
import { t as ContentDisplayCard } from "../../../cards-
|
|
6
|
+
import { t as ContentDisplayCard } from "../../../cards-Bpy1zoxV.js";
|
|
7
7
|
|
|
8
8
|
export { BioCard, ContentDisplayCard, InfoCard, QuickViewCard };
|
|
@@ -11,9 +11,9 @@ import { t as QuickViewCard } from "../../QuickViewCard-odqSWVkJ.js";
|
|
|
11
11
|
import { i as toggleHeader, n as NestWrapper, r as NestedGrid, t as NestParent } from "../../NestedGrid-DoJN7e4x.js";
|
|
12
12
|
import { t as ExpandRenderer } from "../../ExpandRenderer-B8RDzjXQ.js";
|
|
13
13
|
import { t as InfoCard } from "../../InfoCard-CvkmC7Sv.js";
|
|
14
|
-
import "../../ui-
|
|
15
|
-
import "../../NestedGrid-
|
|
16
|
-
import { t as ContentDisplayCard } from "../../cards-
|
|
17
|
-
import "../../surfaces-
|
|
14
|
+
import "../../ui-BjpkPJO5.js";
|
|
15
|
+
import "../../NestedGrid-CQ_tEe-B.js";
|
|
16
|
+
import { t as ContentDisplayCard } from "../../cards-Bpy1zoxV.js";
|
|
17
|
+
import "../../surfaces-B445R0FQ.js";
|
|
18
18
|
|
|
19
19
|
export { BaseSideSheet, BioCard, ContentDisplayCard, ExpandRenderer, InfoCard, NestParent, NestWrapper, NestedGrid, QuickViewCard, SideSheet, toggleHeader };
|
|
@@ -6,6 +6,6 @@ import "../../Ellipse-DGTaApGj.js";
|
|
|
6
6
|
import "../../Token-rFpVjQT_.js";
|
|
7
7
|
import "../../ExtenderToggle-CKt1tY6l.js";
|
|
8
8
|
import { n as SapFlexibleTemplate, t as ToggleSection } from "../../ToggleSection-D08xH-j8.js";
|
|
9
|
-
import "../../templates-
|
|
9
|
+
import "../../templates-CQ8zAjnU.js";
|
|
10
10
|
|
|
11
11
|
export { DraggableSidebarTemplate, OpenPage, SapFlexibleTemplate, ToggleSection };
|
|
@@ -20,6 +20,7 @@ import { t as IconRenderer } from "../../../../IconRenderer-B2FUVnhs.js";
|
|
|
20
20
|
import "../../../../FluentDialog-B5ZxvX1E.js";
|
|
21
21
|
import "../../../../IconButtonWithToolTip-DswviiJB.js";
|
|
22
22
|
import { t as ActionsRenderer } from "../../../../ActionsRenderer-B1ImXko3.js";
|
|
23
|
-
import { t as StatusCellRenderer } from "../../../../StatusCellRenderer-
|
|
23
|
+
import { t as StatusCellRenderer } from "../../../../StatusCellRenderer-DK3MexwY.js";
|
|
24
|
+
import "../../../../renderers-BI4w5Al3.js";
|
|
24
25
|
|
|
25
26
|
export { ActionsRenderer, IconRenderer, StatusCellRenderer };
|
|
@@ -9,6 +9,6 @@ import "../../../SearchUtilities-Df1gkDw9.js";
|
|
|
9
9
|
import "../../../GroupNode-BxnXH0gG.js";
|
|
10
10
|
import "../../../TreeUtilities-C6e2dd4g.js";
|
|
11
11
|
import { n as FluentTimelineContent, r as FluentTimelineHeader, t as FluentTimeline } from "../../../FluentTimeline-vLyX4O7h.js";
|
|
12
|
-
import "../../../fluentTimeline
|
|
12
|
+
import "../../../fluentTimeline-BbvrZFSz.js";
|
|
13
13
|
|
|
14
14
|
export { FluentTimeline, FluentTimelineContent, FluentTimelineHeader };
|
|
@@ -10,7 +10,7 @@ import "../../GroupNode-BxnXH0gG.js";
|
|
|
10
10
|
import "../../TreeUtilities-C6e2dd4g.js";
|
|
11
11
|
import { a as UdpTimelineContent, c as TimeEntryStates, i as UdpTimelineDot, n as UdpTimelineConnector, o as UdpTimeline, r as UdpTimelineItem, s as TimeLine, t as UdpTimelineSeparator } from "../../UdpTimelineItemSeparator-jXg9Fier.js";
|
|
12
12
|
import { n as FluentTimelineContent, r as FluentTimelineHeader, t as FluentTimeline } from "../../FluentTimeline-vLyX4O7h.js";
|
|
13
|
-
import "../../fluentTimeline
|
|
14
|
-
import "../../timeline-
|
|
13
|
+
import "../../fluentTimeline-BbvrZFSz.js";
|
|
14
|
+
import "../../timeline-x3kpYbLD.js";
|
|
15
15
|
|
|
16
16
|
export { FluentTimeline, FluentTimelineContent, FluentTimelineHeader, TimeEntryStates, TimeLine, UdpTimeline, UdpTimelineConnector, UdpTimelineContent, UdpTimelineDot, UdpTimelineItem, UdpTimelineSeparator };
|
|
@@ -20,6 +20,6 @@ import "../../../NumberOperator-k6iXs38S.js";
|
|
|
20
20
|
import "../../../aggregateUtils-BTBSWD8I.js";
|
|
21
21
|
import "../../../AggregateChip-BDugg_kG.js";
|
|
22
22
|
import { n as UdpAlert, t as UdpAlertsContainer } from "../../../UdpAlertsContainer-DehnlBcE.js";
|
|
23
|
-
import "../../../alerts-
|
|
23
|
+
import "../../../alerts-Gbvcpl4E.js";
|
|
24
24
|
|
|
25
25
|
export { UdpAlert, UdpAlertsContainer };
|
|
@@ -65,10 +65,10 @@ import "../../FluentSimpleTabs-DczLNWuA.js";
|
|
|
65
65
|
import { n as UtilityTabHeader, t as PAHAdditionalTitleComponent } from "../../PAHAdditionalTitleComponent-BxXnCmRL.js";
|
|
66
66
|
import { t as FormControlLabel } from "../../FormControlLabel-CtB6GV-I.js";
|
|
67
67
|
import { t as InputAdornment } from "../../InputAdornment-D7eaaFHG.js";
|
|
68
|
-
import "../../utilityHeader-
|
|
69
|
-
import "../../alerts-
|
|
70
|
-
import { t as UtilitySearch } from "../../ui-
|
|
71
|
-
import "../../utilities-
|
|
72
|
-
import "../../utilityDisplay-
|
|
68
|
+
import "../../utilityHeader-BsUlwtE7.js";
|
|
69
|
+
import "../../alerts-Gbvcpl4E.js";
|
|
70
|
+
import { t as UtilitySearch } from "../../ui-gRqaK08H.js";
|
|
71
|
+
import "../../utilities-CMoiGbGt.js";
|
|
72
|
+
import "../../utilityDisplay-BHYWs3gf.js";
|
|
73
73
|
|
|
74
74
|
export { AggregateChip, BulkActionsGridButton, ChipSection, Divider, FormControl, FormControlLabel, GridActionBar, GridPrimaryBar, IndicatorChip, InputAdornment, PAHAdditionalRightComponent, PAHAdditionalTitleComponent, PAHExport, PrimaryActionHeader, SaveViewFormDialog, TeleportSource, UdpAlert, UdpAlertsContainer, UtilityBar, UtilitySearch, UtilitySideBar, UtilityTabHeader, getThresholdStatus, useAllTeleporters };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "../../../unitySystemEnums-DQSkCr3D.js";
|
|
2
2
|
import "../../../NumberOperator-k6iXs38S.js";
|
|
3
3
|
import { t as getThresholdStatus } from "../../../aggregateUtils-BTBSWD8I.js";
|
|
4
|
-
import "../../../utilities-
|
|
4
|
+
import "../../../utilities-CMoiGbGt.js";
|
|
5
5
|
|
|
6
6
|
export { getThresholdStatus };
|
|
@@ -12,6 +12,6 @@ import "../../../StatusChip-DZAN88VU.js";
|
|
|
12
12
|
import "../../../UdpTabs-DVZGEwOC.js";
|
|
13
13
|
import "../../../FluentSimpleTabs-DczLNWuA.js";
|
|
14
14
|
import { n as UtilityTabHeader, t as PAHAdditionalTitleComponent } from "../../../PAHAdditionalTitleComponent-BxXnCmRL.js";
|
|
15
|
-
import "../../../utilityHeader-
|
|
15
|
+
import "../../../utilityHeader-BsUlwtE7.js";
|
|
16
16
|
|
|
17
17
|
export { PAHAdditionalRightComponent, PAHAdditionalTitleComponent, PAHExport, PrimaryActionHeader, TeleportSource, UtilityTabHeader, useAllTeleporters };
|
package/dist/UI/widgets/index.js
CHANGED
|
@@ -14,6 +14,6 @@ import "../../useItemSubCard-CJ3DL7fz.js";
|
|
|
14
14
|
import "../../WidgetCard-CDqYxK5O.js";
|
|
15
15
|
import "../../EmptyStateDisplay-CVeCBelv.js";
|
|
16
16
|
import { t as ItemsWidgetCard } from "../../ItemsWidgetCard-D1rGMaXQ.js";
|
|
17
|
-
import "../../widgets-
|
|
17
|
+
import "../../widgets-BcHFxfRK.js";
|
|
18
18
|
|
|
19
19
|
export { ItemsWidgetCard };
|
|
@@ -5,7 +5,7 @@ import "../../../../FluentCard-C3qSYfiz.js";
|
|
|
5
5
|
import "../../../../useId-I-OmRBmB.js";
|
|
6
6
|
import "../../../../FUIMenuItem-BZJKJa91.js";
|
|
7
7
|
import { t as WidgetCard_default } from "../../../../WidgetCard-CDqYxK5O.js";
|
|
8
|
-
import { t as SimpleTable_default } from "../../../../SimpleTable-
|
|
8
|
+
import { t as SimpleTable_default } from "../../../../SimpleTable-DX9xdKYK.js";
|
|
9
9
|
import React, { forwardRef } from "react";
|
|
10
10
|
|
|
11
11
|
//#region src/UI/widgets/library/TableWidget/TableWidget.jsx
|
|
@@ -6,10 +6,11 @@ import { t as useTenant } from "./useTenant-MqKOZve_.js";
|
|
|
6
6
|
import { t as SearchMethodUdpGrid } from "./SearchMethodUdpGrid-QU4FZ0Gk.js";
|
|
7
7
|
import { t as LoadingIndicator } from "./LoadingIndicator-DJ4rFzOc.js";
|
|
8
8
|
import { t as CustomMenuPage_default } from "./menuPage-Df5ucoQW.js";
|
|
9
|
-
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
9
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
10
10
|
import { useSnackbar } from "notistack";
|
|
11
11
|
import { useHistory } from "react-router-dom";
|
|
12
12
|
import { useTranslation } from "react-i18next";
|
|
13
|
+
import { UdpSelector, UdpSideSheet } from "udp-react-stencil-component-library";
|
|
13
14
|
|
|
14
15
|
//#region src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.jsx
|
|
15
16
|
const UdpFormsSubmissionStatusEnum = Object.freeze({
|
|
@@ -34,18 +35,26 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {
|
|
|
34
35
|
const [innerMenuItemList, setInnerMenuItemList] = useState([]);
|
|
35
36
|
const [formSubmissionViewDataRaw, setFormSubmissionViewDataRaw] = useState([]);
|
|
36
37
|
const [formDataRaw, setFormDataRaw] = useState([]);
|
|
38
|
+
const [isSidesheetOpen, setIsSidesheetOpen] = useState(false);
|
|
39
|
+
const [selectedFormValue, setSelectedFormValue] = useState("");
|
|
40
|
+
const selectorRef = useRef(null);
|
|
41
|
+
const pendingNavRef = useRef(null);
|
|
42
|
+
const handleSideSheetClosed = () => {
|
|
43
|
+
setIsSidesheetOpen(false);
|
|
44
|
+
};
|
|
37
45
|
const consolidateAndSortFormSubmissionsByFormId = useCallback((submissions) => {
|
|
38
46
|
const resultMap = /* @__PURE__ */ new Map();
|
|
39
47
|
for (const item of submissions) {
|
|
40
48
|
const { formSubmission_FormId: formId, formSubmission_FormVersion: formVersion, form_Name: formName, form_Description: formDescription, formSubmission_InitialCreatedOn: initialCreatedOn } = item;
|
|
41
|
-
if (!formId ||
|
|
49
|
+
if (!formId || formVersion == null) continue;
|
|
42
50
|
const key = `${formId}`;
|
|
43
51
|
const existing = resultMap.get(key);
|
|
52
|
+
const versionNum = Number(formVersion) || 0;
|
|
44
53
|
const ts = initialCreatedOn ? new Date(initialCreatedOn).getTime() : 0;
|
|
45
54
|
if (!existing) resultMap.set(key, {
|
|
46
55
|
id: key,
|
|
47
56
|
formId,
|
|
48
|
-
formVersion,
|
|
57
|
+
formVersion: versionNum,
|
|
49
58
|
name: formName || t("Untitled Form"),
|
|
50
59
|
submissionCount: 1,
|
|
51
60
|
description: formDescription || "",
|
|
@@ -54,6 +63,11 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {
|
|
|
54
63
|
else {
|
|
55
64
|
existing.submissionCount += 1;
|
|
56
65
|
existing.mostRecentCreatedOn = Math.max(existing.mostRecentCreatedOn || 0, ts);
|
|
66
|
+
if (versionNum > (existing.formVersion || 0)) {
|
|
67
|
+
existing.formVersion = versionNum;
|
|
68
|
+
if (formName) existing.name = formName;
|
|
69
|
+
if (formDescription) existing.description = formDescription;
|
|
70
|
+
}
|
|
57
71
|
}
|
|
58
72
|
}
|
|
59
73
|
return Array.from(resultMap.values()).sort((a, b) => b.mostRecentCreatedOn - a.mostRecentCreatedOn);
|
|
@@ -66,6 +80,11 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {
|
|
|
66
80
|
searchOperator: "=",
|
|
67
81
|
searchValue: tenant.activeTenant.tenantId
|
|
68
82
|
});
|
|
83
|
+
if (!isManagerMode) filterElements.push({
|
|
84
|
+
searchField: "FormSubmission_UnityUserId",
|
|
85
|
+
searchOperator: "=",
|
|
86
|
+
searchValue: user.id
|
|
87
|
+
});
|
|
69
88
|
setFormSubmissionViewDataRaw((await apiMutate(ConfigService.productV1ApiUrl, `UdpFormWithSubmissionsView/search`, {
|
|
70
89
|
method: "POST",
|
|
71
90
|
data: {
|
|
@@ -92,16 +111,14 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {
|
|
|
92
111
|
searchOperator: "=",
|
|
93
112
|
searchValue: tenant.activeTenant.tenantId
|
|
94
113
|
});
|
|
95
|
-
|
|
114
|
+
setFormDataRaw((await apiMutate(ConfigService.productV1ApiUrl, `UdpForm/search`, {
|
|
96
115
|
method: "POST",
|
|
97
116
|
data: {
|
|
98
117
|
eagerLoad: false,
|
|
99
118
|
getAll: true,
|
|
100
119
|
filterElements
|
|
101
120
|
}
|
|
102
|
-
}, {}))?.data.pageList || [];
|
|
103
|
-
console.log("forms", forms);
|
|
104
|
-
setFormDataRaw(forms);
|
|
121
|
+
}, {}))?.data.pageList || []);
|
|
105
122
|
} catch (e) {
|
|
106
123
|
console.error("fetchForms error:", e);
|
|
107
124
|
}
|
|
@@ -141,10 +158,11 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {
|
|
|
141
158
|
}, [user, isManagerMode]);
|
|
142
159
|
const getGridHeaderConfig = useCallback((formId, formVersion, formTitle) => {
|
|
143
160
|
const config = { title: formTitle };
|
|
144
|
-
|
|
161
|
+
config.primaryActionButton = {
|
|
145
162
|
label: t("Submit New Form"),
|
|
146
163
|
onClick: () => {
|
|
147
|
-
history.push(`/page/${UdpPageEnums.Udp_Form_Renderer_Page}?udpf_formId=${formId}&udpf_version=${formVersion}`);
|
|
164
|
+
if (formId && formVersion) history.push(`/page/${UdpPageEnums.Udp_Form_Renderer_Page}?udpf_formId=${formId}&udpf_version=${formVersion}`);
|
|
165
|
+
else setIsSidesheetOpen(true);
|
|
148
166
|
}
|
|
149
167
|
};
|
|
150
168
|
return config;
|
|
@@ -159,6 +177,28 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {
|
|
|
159
177
|
}
|
|
160
178
|
};
|
|
161
179
|
}, []);
|
|
180
|
+
const getStatus = useMemo(() => {
|
|
181
|
+
return {
|
|
182
|
+
Created: "info",
|
|
183
|
+
InProgress: "warning",
|
|
184
|
+
Submitted: "success",
|
|
185
|
+
Overdue: "error"
|
|
186
|
+
};
|
|
187
|
+
}, []);
|
|
188
|
+
const getSubmissionStatusLabel = (node) => {
|
|
189
|
+
const formStatus = node?.data?.formSubmission_Status;
|
|
190
|
+
const dueDateRaw = node?.data?.formSubmission_DueDate;
|
|
191
|
+
if (dueDateRaw && formStatus != UdpFormsSubmissionStatusEnum.Submitted) {
|
|
192
|
+
const dueTs = Date.parse(String(dueDateRaw));
|
|
193
|
+
if (!Number.isNaN(dueTs) && Date.now() > dueTs) return "Overdue";
|
|
194
|
+
}
|
|
195
|
+
switch (formStatus) {
|
|
196
|
+
case UdpFormsSubmissionStatusEnum.InProgress: return "InProgress";
|
|
197
|
+
case UdpFormsSubmissionStatusEnum.Created: return "Created";
|
|
198
|
+
case UdpFormsSubmissionStatusEnum.Submitted: return "Submitted";
|
|
199
|
+
default: return "Unknown";
|
|
200
|
+
}
|
|
201
|
+
};
|
|
162
202
|
const columnDefs = useMemo(() => [
|
|
163
203
|
{
|
|
164
204
|
headerName: "Form ID",
|
|
@@ -185,14 +225,12 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {
|
|
|
185
225
|
field: "formSubmission_UserDisplayName"
|
|
186
226
|
},
|
|
187
227
|
{
|
|
188
|
-
headerName:
|
|
228
|
+
headerName: "Form Status",
|
|
189
229
|
field: "formSubmission_Status",
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
if (s === UdpFormsSubmissionStatusEnum.InProgress) return "In-Progress";
|
|
195
|
-
return "Unknown";
|
|
230
|
+
cellRenderer: "statusRenderer",
|
|
231
|
+
cellRendererParams: {
|
|
232
|
+
statusMappingConfig: getStatus,
|
|
233
|
+
getStatusValue: getSubmissionStatusLabel
|
|
196
234
|
}
|
|
197
235
|
},
|
|
198
236
|
{
|
|
@@ -238,6 +276,69 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {
|
|
|
238
276
|
{ name: "agGridResetColumns" },
|
|
239
277
|
{ name: "agGridHideShowColumns" }
|
|
240
278
|
], []);
|
|
279
|
+
const handleSidesheetPrimaryClick = useCallback(() => {
|
|
280
|
+
const [id, versionStr] = (selectedFormValue || "").split("|");
|
|
281
|
+
const version = Number(versionStr || 0);
|
|
282
|
+
if (!id || !version) {
|
|
283
|
+
console.warn("Invalid selection:", selectedFormValue);
|
|
284
|
+
setIsSidesheetOpen(false);
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
history.push(`/page/${UdpPageEnums.Udp_Form_Renderer_Page}?udpf_formId=${encodeURIComponent(id)}&udpf_version=${version}`);
|
|
288
|
+
pendingNavRef.current = {
|
|
289
|
+
id,
|
|
290
|
+
version
|
|
291
|
+
};
|
|
292
|
+
setIsSidesheetOpen(false);
|
|
293
|
+
}, [
|
|
294
|
+
selectedFormValue,
|
|
295
|
+
formDataRaw,
|
|
296
|
+
history
|
|
297
|
+
]);
|
|
298
|
+
const selectableItems = useMemo(() => {
|
|
299
|
+
const map = /* @__PURE__ */ new Map();
|
|
300
|
+
for (const f of formDataRaw || []) {
|
|
301
|
+
const formType = f.form_Type ?? f.formType ?? f.type;
|
|
302
|
+
if (Number(formType) !== 1) continue;
|
|
303
|
+
const formId = f.id ?? f.form_Id ?? f.formId ?? String(f?.Id ?? "");
|
|
304
|
+
const version = Number(f.version ?? f.form_Version ?? f.formVersion ?? 0);
|
|
305
|
+
const name = f.name ?? f.form_Name ?? f.formName ?? f.Form_Name ?? f.displayName ?? t("Untitled Form");
|
|
306
|
+
const description = f.description ?? f.form_Description ?? "";
|
|
307
|
+
const existing = map.get(formId);
|
|
308
|
+
if (!existing || version > existing.version) map.set(formId, {
|
|
309
|
+
id: formId,
|
|
310
|
+
name,
|
|
311
|
+
version,
|
|
312
|
+
description
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
return Array.from(map.values()).sort((a, b) => b.version - a.version);
|
|
316
|
+
}, [formDataRaw, t]);
|
|
317
|
+
const selectorOptions = useMemo(() => {
|
|
318
|
+
return (selectableItems || []).map((s) => ({
|
|
319
|
+
value: `${s.id}|${s.version}`,
|
|
320
|
+
label: s.version ? `${s.name} (v${s.version})` : s.name
|
|
321
|
+
}));
|
|
322
|
+
}, [selectableItems]);
|
|
323
|
+
useEffect(() => {
|
|
324
|
+
const el = selectorRef.current;
|
|
325
|
+
if (!el || !isSidesheetOpen) return;
|
|
326
|
+
const onChange = (e) => {
|
|
327
|
+
setSelectedFormValue((e?.detail ?? (e?.target && e.target.value) ?? "") || "");
|
|
328
|
+
};
|
|
329
|
+
el.addEventListener("change", onChange);
|
|
330
|
+
el.addEventListener("input", onChange);
|
|
331
|
+
if (selectedFormValue) el.value = selectedFormValue;
|
|
332
|
+
return () => {
|
|
333
|
+
el.removeEventListener("change", onChange);
|
|
334
|
+
el.removeEventListener("input", onChange);
|
|
335
|
+
};
|
|
336
|
+
}, [
|
|
337
|
+
selectorRef,
|
|
338
|
+
selectorOptions,
|
|
339
|
+
isSidesheetOpen,
|
|
340
|
+
selectedFormValue
|
|
341
|
+
]);
|
|
241
342
|
const getMainGridContent = ({ selectedNode, menuItemsList, idMap, classes }) => {
|
|
242
343
|
if (!selectedNode) return /* @__PURE__ */ React.createElement(LoadingIndicator, null);
|
|
243
344
|
const formId = parseIdAndVersion(selectedNode.id);
|
|
@@ -245,7 +346,22 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {
|
|
|
245
346
|
const newestFormVersion = formDataRaw.filter((formObj) => formObj.id == formId).reduce((acc, curr) => {
|
|
246
347
|
return Math.max(acc, curr.version);
|
|
247
348
|
}, 0);
|
|
248
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
349
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(UdpSideSheet, {
|
|
350
|
+
open: isSidesheetOpen,
|
|
351
|
+
title: t("Submit New Form"),
|
|
352
|
+
position: "right",
|
|
353
|
+
width: "md",
|
|
354
|
+
primaryButtonLabel: t("Next"),
|
|
355
|
+
primaryButtonDisabled: !selectedFormValue,
|
|
356
|
+
onUdpPrimaryButtonClick: handleSidesheetPrimaryClick,
|
|
357
|
+
onUdpSideSheetClose: handleSideSheetClosed
|
|
358
|
+
}, isSidesheetOpen && /* @__PURE__ */ React.createElement(UdpSelector, {
|
|
359
|
+
ref: selectorRef,
|
|
360
|
+
options: selectorOptions,
|
|
361
|
+
initialValue: selectedFormValue,
|
|
362
|
+
multiSelect: false,
|
|
363
|
+
label: t("Select a Form")
|
|
364
|
+
})), /* @__PURE__ */ React.createElement(SearchMethodUdpGrid, {
|
|
249
365
|
searchMethodConfig: getSearchMethodConfig(formId),
|
|
250
366
|
columnDefs,
|
|
251
367
|
gridOptions: getGridOptions(),
|
|
@@ -273,7 +389,10 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {
|
|
|
273
389
|
consolidateAndSortFormSubmissionsByFormId,
|
|
274
390
|
t
|
|
275
391
|
]);
|
|
276
|
-
|
|
392
|
+
useCallback((value) => {
|
|
393
|
+
setSelectedFormValue(value || "");
|
|
394
|
+
}, [setSelectedFormValue]);
|
|
395
|
+
return /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(CustomMenuPage_default, {
|
|
277
396
|
menuTitle: t("Forms"),
|
|
278
397
|
items: innerMenuItemList,
|
|
279
398
|
idPrefix: "form-submission",
|
|
@@ -287,9 +406,9 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {
|
|
|
287
406
|
classes
|
|
288
407
|
}));
|
|
289
408
|
}
|
|
290
|
-
});
|
|
409
|
+
}));
|
|
291
410
|
};
|
|
292
411
|
|
|
293
412
|
//#endregion
|
|
294
413
|
export { UdpFormsSubmissionGrid as t };
|
|
295
|
-
//# sourceMappingURL=UdpFormsSubmissionGrid-
|
|
414
|
+
//# sourceMappingURL=UdpFormsSubmissionGrid-DesZibh4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UdpFormsSubmissionGrid-DesZibh4.js","names":["CustomMenuPage"],"sources":["../src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.jsx"],"sourcesContent":["import React, {\n useMemo,\n useState,\n useEffect,\n useCallback,\n useRef\n} from 'react';\nimport { useUser } from '../../../utilities/auth/useUser';\nimport { useTenant } from '../../../utilities/tenant/useTenant';\nimport { useHistory } from 'react-router-dom';\nimport { useSnackbar } from 'notistack';\nimport { CustomMenuPage } from '../../../menuPage';\nimport { useTranslation } from 'react-i18next';\nimport { apiMutate } from '../../../utilities';\nimport { ConfigService } from '../../../configService';\nimport { SearchMethodUdpGrid } from '../../../UI/templates/newGrid';\nimport { LoadingIndicator } from '../../../UI/loading/LoadingIndicator';\nimport { UdpPageEnums } from '../../../enums';\nimport { StatusCellRenderer } from '../../../UI/templates/ui/renderers';\nimport { UdpSideSheet } from 'udp-react-stencil-component-library';\nimport { SelectableList } from 'udp-react-stencil-component-library';\nimport { UdpSelector } from 'udp-react-stencil-component-library';\n\nconst UdpFormsSubmissionStatusEnum = Object.freeze({\n InProgress: 1,\n Submitted: 2,\n Created: 3\n});\n\nconst dateFormatter = (dateString) =>\n new Date(dateString).toLocaleString(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n hour12: true\n });\n\nexport const UdpFormsSubmissionGrid = ({ isManagerMode = false }) => {\n const user = useUser();\n const tenant = useTenant();\n const history = useHistory();\n const { t } = useTranslation();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const [innerMenuItemList, setInnerMenuItemList] = useState([]);\n const [formSubmissionViewDataRaw, setFormSubmissionViewDataRaw] = useState(\n []\n );\n const [formDataRaw, setFormDataRaw] = useState([]);\n const [isSidesheetOpen, setIsSidesheetOpen] = useState(false);\n const [selectedFormValue, setSelectedFormValue] = useState('');\n\n const selectorRef = useRef(null);\n\n const pendingNavRef = useRef(null);\n const handleSideSheetClosed = () => {\n setIsSidesheetOpen(false);\n };\n\n const consolidateAndSortFormSubmissionsByFormId = useCallback(\n (submissions) => {\n const resultMap = new Map();\n for (const item of submissions) {\n const {\n formSubmission_FormId: formId,\n formSubmission_FormVersion: formVersion,\n form_Name: formName,\n form_Description: formDescription,\n formSubmission_InitialCreatedOn: initialCreatedOn\n } = item;\n if (!formId || formVersion == null) continue;\n\n const key = `${formId}`;\n const existing = resultMap.get(key);\n\n // normalize version and timestamp\n const versionNum = Number(formVersion) || 0;\n const ts = initialCreatedOn ? new Date(initialCreatedOn).getTime() : 0;\n\n if (!existing) {\n resultMap.set(key, {\n id: key,\n formId,\n formVersion: versionNum,\n name: formName || t('Untitled Form'),\n submissionCount: 1,\n description: formDescription || '',\n mostRecentCreatedOn: ts\n });\n } else {\n existing.submissionCount += 1;\n existing.mostRecentCreatedOn = Math.max(\n existing.mostRecentCreatedOn || 0,\n ts\n );\n\n // keep metadata (name/description/formVersion) from the highest version seen\n if (versionNum > (existing.formVersion || 0)) {\n existing.formVersion = versionNum;\n if (formName) existing.name = formName;\n if (formDescription) existing.description = formDescription;\n }\n }\n }\n\n const sortedOptions = Array.from(resultMap.values()).sort(\n (a, b) => b.mostRecentCreatedOn - a.mostRecentCreatedOn\n );\n return sortedOptions;\n },\n [t]\n );\n\n const fetchSubmissions = useCallback(async () => {\n try {\n const filterElements = [];\n\n filterElements.push({\n searchField: 'Form_TenantId',\n searchOperator: '=',\n searchValue: tenant.activeTenant.tenantId\n });\n\n if (!isManagerMode) {\n filterElements.push({\n searchField: 'FormSubmission_UnityUserId',\n searchOperator: '=',\n searchValue: user.id\n });\n }\n\n const formSubmissionViewSearchResponse = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpFormWithSubmissionsView/search`,\n {\n method: 'POST',\n data: {\n eagerLoad: false,\n getAll: true,\n filterElements\n }\n },\n {}\n );\n\n const submissions = formSubmissionViewSearchResponse?.data.pageList || [];\n setFormSubmissionViewDataRaw(submissions);\n } catch (e) {\n console.error('fetchSubmissions error:', e);\n }\n }, [\n user,\n tenant,\n isManagerMode,\n consolidateAndSortFormSubmissionsByFormId,\n t\n ]);\n\n const fetchForms = useCallback(async () => {\n try {\n const filterElements = [];\n\n filterElements.push({\n searchField: 'tenantId',\n searchOperator: '=',\n searchValue: tenant.activeTenant.tenantId\n });\n\n const formResponse = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpForm/search`,\n {\n method: 'POST',\n data: {\n eagerLoad: false,\n getAll: true,\n filterElements\n }\n },\n {}\n );\n\n const forms = formResponse?.data.pageList || [];\n setFormDataRaw(forms);\n } catch (e) {\n console.error('fetchForms error:', e);\n }\n }, [user, tenant, consolidateAndSortFormSubmissionsByFormId]);\n\n const parseIdAndVersion = useCallback((input) => {\n const formSubmissionId = input.replace(/^form-submission-/, '');\n // Check for \"all forms\" special case\n if (formSubmissionId.includes('all-forms-key')) {\n return null;\n }\n return formSubmissionId;\n }, []);\n\n const getSearchMethodConfig = useCallback(\n (formId) => {\n const filterElements = [];\n\n if (!isManagerMode) {\n filterElements.push({\n searchField: 'formSubmission_unityUserId',\n searchOperator: '=',\n searchValue: user.id || ''\n });\n }\n\n if (formId) {\n filterElements.push({\n searchField: 'formSubmission_formId',\n searchOperator: '=',\n searchValue: formId\n });\n // filterElements.push({\n // searchField: 'formSubmission_formVersion',\n // searchOperator: '=',\n // searchValue: formVersion\n // });\n }\n\n return {\n requestUrl: `${ConfigService.productV1ApiUrl}/UdpFormWithSubmissionsView/search`,\n customSearchObject: {\n eagerLoad: false,\n filterElements,\n orderElements: [\n {\n sortColumn: 'initialCreatedOn',\n sortDirection: 'DESC'\n }\n ]\n }\n // logicalSearchOperator: 1,\n // groupingType: '',\n // groupProperty: [],\n // groupOperationList: [],\n // type: 'advanced',\n // pageNumber: 1,\n // pageSize: 20,\n };\n },\n [user, isManagerMode]\n );\n\n const getGridHeaderConfig = useCallback(\n (formId, formVersion, formTitle) => {\n const config = {\n title: formTitle\n };\n\n config.primaryActionButton = {\n label: t('Submit New Form'),\n onClick: () => {\n // Only show submit button when we have a specific form id and version\n if (formId && formVersion) {\n history.push(\n `/page/${UdpPageEnums.Udp_Form_Renderer_Page}?udpf_formId=${formId}&udpf_version=${formVersion}`\n );\n } else {\n setIsSidesheetOpen(true);\n }\n }\n };\n\n return config;\n },\n [history, t]\n );\n\n const getGridOptions = useCallback(() => {\n return {\n pagination: true,\n defaultColDef: {\n sortable: true,\n filter: true,\n resizable: true\n }\n };\n }, []);\n\n const getStatus = useMemo(() => {\n return {\n Created: 'info',\n InProgress: 'warning',\n Submitted: 'success',\n Overdue: 'error'\n };\n }, []);\n\n const getSubmissionStatusLabel = (node) => {\n const formStatus = node?.data?.formSubmission_Status;\n const dueDateRaw = node?.data?.formSubmission_DueDate;\n\n // overdue check\n if (dueDateRaw && formStatus != UdpFormsSubmissionStatusEnum.Submitted) {\n const dueTs = Date.parse(String(dueDateRaw));\n if (!Number.isNaN(dueTs) && Date.now() > dueTs) return 'Overdue';\n }\n\n switch (formStatus) {\n case UdpFormsSubmissionStatusEnum.InProgress:\n return 'InProgress';\n case UdpFormsSubmissionStatusEnum.Created:\n return 'Created';\n case UdpFormsSubmissionStatusEnum.Submitted:\n return 'Submitted';\n default:\n return 'Unknown';\n }\n };\n\n const columnDefs = useMemo(\n () => [\n { headerName: 'Form ID', field: 'formSubmission_FormId', hide: true },\n {\n headerName: t('Form Name'),\n field: 'form_Name',\n sortable: true\n },\n {\n headerName: t('Form Version'),\n field: 'formSubmission_FormVersion',\n hide: false\n },\n {\n headerName: t('Description'),\n field: 'form_Description',\n sortable: true\n },\n {\n headerName: t('Submitted By'),\n field: 'formSubmission_UserDisplayName'\n },\n {\n headerName: 'Form Status',\n // filter: true,\n field: 'formSubmission_Status',\n cellRenderer: 'statusRenderer',\n cellRendererParams: {\n statusMappingConfig: getStatus,\n getStatusValue: getSubmissionStatusLabel\n }\n },\n {\n headerName: t('Created On'),\n field: 'formSubmission_InitialCreatedOn',\n valueFormatter: (p) => (p.value ? dateFormatter(p.value) : ''),\n sortable: true\n },\n {\n headerName: t('Last Modified On'),\n field: 'formSubmission_LastModifiedOn',\n valueFormatter: (p) => (p.value ? dateFormatter(p.value) : ''),\n sortable: true\n },\n {\n headerName: t('Submitted On'),\n field: 'formSubmission_SubmittedOn',\n valueFormatter: (p) => (p.value ? dateFormatter(p.value) : ''),\n sortable: true\n },\n {\n headerName: t('Due On'),\n field: 'formSubmission_DueDate',\n valueFormatter: (p) => (p.value ? dateFormatter(p.value) : ''),\n sortable: true\n },\n {\n field: 'actions',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList: [\n {\n id: 0,\n iconName: 'view',\n title: t('Open This Submission'),\n handleOnClick: (e, params) => {\n history.push(\n `/page/${UdpPageEnums.Udp_Form_Renderer_Page}?udpf_submissionId=${params?.data?.formSubmission_Id}`\n );\n }\n }\n ]\n }\n }\n ],\n [history, t]\n );\n\n const gridFunctions = useMemo(\n () => [\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n { name: 'agGridResetColumns' },\n { name: 'agGridHideShowColumns' }\n ],\n []\n );\n\n const handleSidesheetPrimaryClick = useCallback(() => {\n // selectedFormValue format is \"formId|formVersion\"\n const raw = selectedFormValue || '';\n const [id, versionStr] = raw.split('|');\n const version = Number(versionStr || 0);\n if (!id || !version) {\n console.warn('Invalid selection:', selectedFormValue);\n setIsSidesheetOpen(false);\n return;\n }\n\n history.push(\n `/page/${\n UdpPageEnums.Udp_Form_Renderer_Page\n }?udpf_formId=${encodeURIComponent(id)}&udpf_version=${version}`\n );\n\n // schedule navigation after sheet closes to ensure Stencil cleans up its portal DOM\n pendingNavRef.current = { id, version };\n setIsSidesheetOpen(false);\n }, [selectedFormValue, formDataRaw, history]);\n\n // prepare items for SelectableList (normalize keys)\n const selectableItems = useMemo(() => {\n const map = new Map();\n\n for (const f of formDataRaw || []) {\n const formType = f.form_Type ?? f.formType ?? f.type;\n if (Number(formType) !== 1) continue;\n\n const formId = f.id ?? f.form_Id ?? f.formId ?? String(f?.Id ?? '');\n const version = Number(f.version ?? f.form_Version ?? f.formVersion ?? 0);\n const name =\n f.name ??\n f.form_Name ??\n f.formName ??\n f.Form_Name ??\n f.displayName ??\n t('Untitled Form');\n const description = f.description ?? f.form_Description ?? '';\n\n const existing = map.get(formId);\n if (!existing || version > existing.version) {\n map.set(formId, { id: formId, name, version, description });\n }\n }\n\n return Array.from(map.values()).sort((a, b) => b.version - a.version);\n }, [formDataRaw, t]);\n\n const selectorOptions = useMemo(() => {\n return (selectableItems || []).map((s) => ({\n value: `${s.id}|${s.version}`,\n label: s.version ? `${s.name} (v${s.version})` : s.name\n }));\n }, [selectableItems]);\n\n // attach stencil custom event listeners only while sidesheet is open\n useEffect(() => {\n const el = selectorRef.current;\n if (!el || !isSidesheetOpen) return;\n\n const onChange = (e) => {\n const val = e?.detail ?? (e?.target && e.target.value) ?? '';\n setSelectedFormValue(val || '');\n };\n\n el.addEventListener('change', onChange);\n el.addEventListener('input', onChange);\n\n // keep selector controlled-ish by syncing value -> element.value\n if (selectedFormValue) el.value = selectedFormValue;\n\n return () => {\n el.removeEventListener('change', onChange);\n el.removeEventListener('input', onChange);\n };\n }, [selectorRef, selectorOptions, isSidesheetOpen, selectedFormValue]);\n\n const getMainGridContent = ({\n selectedNode,\n menuItemsList,\n idMap,\n classes\n }) => {\n if (!selectedNode) {\n return <LoadingIndicator />;\n }\n const formId = parseIdAndVersion(selectedNode.id);\n // const formId = selectedNode.id;\n const found = innerMenuItemList.find((form) => form.formId == formId);\n const formTitle = `${found?.name}` || 'Unknown Form';\n const newestFormVersion = formDataRaw\n .filter((formObj) => formObj.id == formId)\n .reduce((acc, curr) => {\n return Math.max(acc, curr.version);\n }, 0);\n\n return (\n <>\n <UdpSideSheet\n open={isSidesheetOpen}\n title={t('Submit New Form')}\n position='right'\n width={'md'}\n primaryButtonLabel={t('Next')}\n primaryButtonDisabled={!selectedFormValue}\n onUdpPrimaryButtonClick={handleSidesheetPrimaryClick}\n onUdpSideSheetClose={handleSideSheetClosed}\n >\n {isSidesheetOpen && (\n <UdpSelector\n ref={selectorRef}\n options={selectorOptions}\n initialValue={selectedFormValue}\n multiSelect={false}\n label={t('Select a Form')}\n />\n )}\n </UdpSideSheet>\n <SearchMethodUdpGrid\n searchMethodConfig={getSearchMethodConfig(formId)}\n columnDefs={columnDefs}\n gridOptions={getGridOptions()}\n gridHeaderConfig={getGridHeaderConfig(\n formId,\n newestFormVersion,\n formTitle\n )}\n gridFunctions={gridFunctions}\n />\n </>\n );\n };\n\n useEffect(() => {\n (async () => {\n await fetchSubmissions();\n await fetchForms();\n })();\n }, [fetchSubmissions, fetchForms]);\n\n // derive menu items from fetched submissions (separate effect to avoid refetch loop)\n useEffect(() => {\n const resultArray = consolidateAndSortFormSubmissionsByFormId(\n formSubmissionViewDataRaw || []\n );\n\n resultArray.unshift({\n id: 'all-forms-key',\n name: t(\n isManagerMode ? 'All Form Submissions' : 'All My Form Submissions'\n ),\n submissionCount: formSubmissionViewDataRaw?.length || 0\n });\n setInnerMenuItemList(resultArray);\n }, [\n formSubmissionViewDataRaw,\n isManagerMode,\n consolidateAndSortFormSubmissionsByFormId,\n t\n ]);\n\n const handleSelectableChange = useCallback(\n (value) => {\n setSelectedFormValue(value || '');\n },\n [setSelectedFormValue]\n );\n\n return (\n <div>\n <CustomMenuPage\n menuTitle={t('Forms')}\n items={innerMenuItemList}\n idPrefix='form-submission'\n showItemCount={true}\n itemCountAccessor={(item) => item?.submissionCount ?? 0}\n mainContent={({ selectedNode, menuItemsList, idMap, classes }) => {\n return (\n <div>\n {getMainGridContent({\n selectedNode,\n menuItemsList,\n idMap,\n classes\n })}\n </div>\n );\n }}\n />\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AAuBA,MAAM,+BAA+B,OAAO,OAAO;CACjD,YAAY;CACZ,WAAW;CACX,SAAS;CACV,CAAC;AAEF,MAAM,iBAAiB,eACrB,IAAI,KAAK,WAAW,CAAC,eAAe,QAAW;CAC7C,MAAM;CACN,OAAO;CACP,KAAK;CACL,MAAM;CACN,QAAQ;CACR,QAAQ;CACT,CAAC;AAEJ,MAAa,0BAA0B,EAAE,gBAAgB,YAAY;CACnE,MAAM,OAAO,SAAS;CACtB,MAAM,SAAS,WAAW;CAC1B,MAAM,UAAU,YAAY;CAC5B,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,EAAE,iBAAiB,kBAAkB,aAAa;CACxD,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,EAAE,CAAC;CAC9D,MAAM,CAAC,2BAA2B,gCAAgC,SAChE,EAAE,CACH;CACD,MAAM,CAAC,aAAa,kBAAkB,SAAS,EAAE,CAAC;CAClD,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,MAAM;CAC7D,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,GAAG;CAE9D,MAAM,cAAc,OAAO,KAAK;CAEhC,MAAM,gBAAgB,OAAO,KAAK;CAClC,MAAM,8BAA8B;AAClC,qBAAmB,MAAM;;CAG3B,MAAM,4CAA4C,aAC/C,gBAAgB;EACf,MAAM,4BAAY,IAAI,KAAK;AAC3B,OAAK,MAAM,QAAQ,aAAa;GAC9B,MAAM,EACJ,uBAAuB,QACvB,4BAA4B,aAC5B,WAAW,UACX,kBAAkB,iBAClB,iCAAiC,qBAC/B;AACJ,OAAI,CAAC,UAAU,eAAe,KAAM;GAEpC,MAAM,MAAM,GAAG;GACf,MAAM,WAAW,UAAU,IAAI,IAAI;GAGnC,MAAM,aAAa,OAAO,YAAY,IAAI;GAC1C,MAAM,KAAK,mBAAmB,IAAI,KAAK,iBAAiB,CAAC,SAAS,GAAG;AAErE,OAAI,CAAC,SACH,WAAU,IAAI,KAAK;IACjB,IAAI;IACJ;IACA,aAAa;IACb,MAAM,YAAY,EAAE,gBAAgB;IACpC,iBAAiB;IACjB,aAAa,mBAAmB;IAChC,qBAAqB;IACtB,CAAC;QACG;AACL,aAAS,mBAAmB;AAC5B,aAAS,sBAAsB,KAAK,IAClC,SAAS,uBAAuB,GAChC,GACD;AAGD,QAAI,cAAc,SAAS,eAAe,IAAI;AAC5C,cAAS,cAAc;AACvB,SAAI,SAAU,UAAS,OAAO;AAC9B,SAAI,gBAAiB,UAAS,cAAc;;;;AAQlD,SAHsB,MAAM,KAAK,UAAU,QAAQ,CAAC,CAAC,MAClD,GAAG,MAAM,EAAE,sBAAsB,EAAE,oBACrC;IAGH,CAAC,EAAE,CACJ;CAED,MAAM,mBAAmB,YAAY,YAAY;AAC/C,MAAI;GACF,MAAM,iBAAiB,EAAE;AAEzB,kBAAe,KAAK;IAClB,aAAa;IACb,gBAAgB;IAChB,aAAa,OAAO,aAAa;IAClC,CAAC;AAEF,OAAI,CAAC,cACH,gBAAe,KAAK;IAClB,aAAa;IACb,gBAAgB;IAChB,aAAa,KAAK;IACnB,CAAC;AAkBJ,iCAfyC,MAAM,UAC7C,cAAc,iBACd,qCACA;IACE,QAAQ;IACR,MAAM;KACJ,WAAW;KACX,QAAQ;KACR;KACD;IACF,EACD,EAAE,CACH,GAEqD,KAAK,YAAY,EAAE,CAChC;WAClC,GAAG;AACV,WAAQ,MAAM,2BAA2B,EAAE;;IAE5C;EACD;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,aAAa,YAAY,YAAY;AACzC,MAAI;GACF,MAAM,iBAAiB,EAAE;AAEzB,kBAAe,KAAK;IAClB,aAAa;IACb,gBAAgB;IAChB,aAAa,OAAO,aAAa;IAClC,CAAC;AAiBF,mBAfqB,MAAM,UACzB,cAAc,iBACd,kBACA;IACE,QAAQ;IACR,MAAM;KACJ,WAAW;KACX,QAAQ;KACR;KACD;IACF,EACD,EAAE,CACH,GAE2B,KAAK,YAAY,EAAE,CAC1B;WACd,GAAG;AACV,WAAQ,MAAM,qBAAqB,EAAE;;IAEtC;EAAC;EAAM;EAAQ;EAA0C,CAAC;CAE7D,MAAM,oBAAoB,aAAa,UAAU;EAC/C,MAAM,mBAAmB,MAAM,QAAQ,qBAAqB,GAAG;AAE/D,MAAI,iBAAiB,SAAS,gBAAgB,CAC5C,QAAO;AAET,SAAO;IACN,EAAE,CAAC;CAEN,MAAM,wBAAwB,aAC3B,WAAW;EACV,MAAM,iBAAiB,EAAE;AAEzB,MAAI,CAAC,cACH,gBAAe,KAAK;GAClB,aAAa;GACb,gBAAgB;GAChB,aAAa,KAAK,MAAM;GACzB,CAAC;AAGJ,MAAI,OACF,gBAAe,KAAK;GAClB,aAAa;GACb,gBAAgB;GAChB,aAAa;GACd,CAAC;AAQJ,SAAO;GACL,YAAY,GAAG,cAAc,gBAAgB;GAC7C,oBAAoB;IAClB,WAAW;IACX;IACA,eAAe,CACb;KACE,YAAY;KACZ,eAAe;KAChB,CACF;IACF;GAQF;IAEH,CAAC,MAAM,cAAc,CACtB;CAED,MAAM,sBAAsB,aACzB,QAAQ,aAAa,cAAc;EAClC,MAAM,SAAS,EACb,OAAO,WACR;AAED,SAAO,sBAAsB;GAC3B,OAAO,EAAE,kBAAkB;GAC3B,eAAe;AAEb,QAAI,UAAU,YACZ,SAAQ,KACN,SAAS,aAAa,uBAAuB,eAAe,OAAO,gBAAgB,cACpF;QAED,oBAAmB,KAAK;;GAG7B;AAED,SAAO;IAET,CAAC,SAAS,EAAE,CACb;CAED,MAAM,iBAAiB,kBAAkB;AACvC,SAAO;GACL,YAAY;GACZ,eAAe;IACb,UAAU;IACV,QAAQ;IACR,WAAW;IACZ;GACF;IACA,EAAE,CAAC;CAEN,MAAM,YAAY,cAAc;AAC9B,SAAO;GACL,SAAS;GACT,YAAY;GACZ,WAAW;GACX,SAAS;GACV;IACA,EAAE,CAAC;CAEN,MAAM,4BAA4B,SAAS;EACzC,MAAM,aAAa,MAAM,MAAM;EAC/B,MAAM,aAAa,MAAM,MAAM;AAG/B,MAAI,cAAc,cAAc,6BAA6B,WAAW;GACtE,MAAM,QAAQ,KAAK,MAAM,OAAO,WAAW,CAAC;AAC5C,OAAI,CAAC,OAAO,MAAM,MAAM,IAAI,KAAK,KAAK,GAAG,MAAO,QAAO;;AAGzD,UAAQ,YAAR;GACE,KAAK,6BAA6B,WAChC,QAAO;GACT,KAAK,6BAA6B,QAChC,QAAO;GACT,KAAK,6BAA6B,UAChC,QAAO;GACT,QACE,QAAO;;;CAIb,MAAM,aAAa,cACX;EACJ;GAAE,YAAY;GAAW,OAAO;GAAyB,MAAM;GAAM;EACrE;GACE,YAAY,EAAE,YAAY;GAC1B,OAAO;GACP,UAAU;GACX;EACD;GACE,YAAY,EAAE,eAAe;GAC7B,OAAO;GACP,MAAM;GACP;EACD;GACE,YAAY,EAAE,cAAc;GAC5B,OAAO;GACP,UAAU;GACX;EACD;GACE,YAAY,EAAE,eAAe;GAC7B,OAAO;GACR;EACD;GACE,YAAY;GAEZ,OAAO;GACP,cAAc;GACd,oBAAoB;IAClB,qBAAqB;IACrB,gBAAgB;IACjB;GACF;EACD;GACE,YAAY,EAAE,aAAa;GAC3B,OAAO;GACP,iBAAiB,MAAO,EAAE,QAAQ,cAAc,EAAE,MAAM,GAAG;GAC3D,UAAU;GACX;EACD;GACE,YAAY,EAAE,mBAAmB;GACjC,OAAO;GACP,iBAAiB,MAAO,EAAE,QAAQ,cAAc,EAAE,MAAM,GAAG;GAC3D,UAAU;GACX;EACD;GACE,YAAY,EAAE,eAAe;GAC7B,OAAO;GACP,iBAAiB,MAAO,EAAE,QAAQ,cAAc,EAAE,MAAM,GAAG;GAC3D,UAAU;GACX;EACD;GACE,YAAY,EAAE,SAAS;GACvB,OAAO;GACP,iBAAiB,MAAO,EAAE,QAAQ,cAAc,EAAE,MAAM,GAAG;GAC3D,UAAU;GACX;EACD;GACE,OAAO;GACP,cAAc;GACd,oBAAoB,EAClB,YAAY,CACV;IACE,IAAI;IACJ,UAAU;IACV,OAAO,EAAE,uBAAuB;IAChC,gBAAgB,GAAG,WAAW;AAC5B,aAAQ,KACN,SAAS,aAAa,uBAAuB,qBAAqB,QAAQ,MAAM,oBACjF;;IAEJ,CACF,EACF;GACF;EACF,EACD,CAAC,SAAS,EAAE,CACb;CAED,MAAM,gBAAgB,cACd;EACJ,EAAE,MAAM,0BAA0B;EAClC,EAAE,MAAM,yBAAyB;EACjC,EAAE,MAAM,sBAAsB;EAC9B,EAAE,MAAM,yBAAyB;EAClC,EACD,EAAE,CACH;CAED,MAAM,8BAA8B,kBAAkB;EAGpD,MAAM,CAAC,IAAI,eADC,qBAAqB,IACJ,MAAM,IAAI;EACvC,MAAM,UAAU,OAAO,cAAc,EAAE;AACvC,MAAI,CAAC,MAAM,CAAC,SAAS;AACnB,WAAQ,KAAK,sBAAsB,kBAAkB;AACrD,sBAAmB,MAAM;AACzB;;AAGF,UAAQ,KACN,SACE,aAAa,uBACd,eAAe,mBAAmB,GAAG,CAAC,gBAAgB,UACxD;AAGD,gBAAc,UAAU;GAAE;GAAI;GAAS;AACvC,qBAAmB,MAAM;IACxB;EAAC;EAAmB;EAAa;EAAQ,CAAC;CAG7C,MAAM,kBAAkB,cAAc;EACpC,MAAM,sBAAM,IAAI,KAAK;AAErB,OAAK,MAAM,KAAK,eAAe,EAAE,EAAE;GACjC,MAAM,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE;AAChD,OAAI,OAAO,SAAS,KAAK,EAAG;GAE5B,MAAM,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,OAAO,GAAG,MAAM,GAAG;GACnE,MAAM,UAAU,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE;GACzE,MAAM,OACJ,EAAE,QACF,EAAE,aACF,EAAE,YACF,EAAE,aACF,EAAE,eACF,EAAE,gBAAgB;GACpB,MAAM,cAAc,EAAE,eAAe,EAAE,oBAAoB;GAE3D,MAAM,WAAW,IAAI,IAAI,OAAO;AAChC,OAAI,CAAC,YAAY,UAAU,SAAS,QAClC,KAAI,IAAI,QAAQ;IAAE,IAAI;IAAQ;IAAM;IAAS;IAAa,CAAC;;AAI/D,SAAO,MAAM,KAAK,IAAI,QAAQ,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,QAAQ;IACpE,CAAC,aAAa,EAAE,CAAC;CAEpB,MAAM,kBAAkB,cAAc;AACpC,UAAQ,mBAAmB,EAAE,EAAE,KAAK,OAAO;GACzC,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE;GACpB,OAAO,EAAE,UAAU,GAAG,EAAE,KAAK,KAAK,EAAE,QAAQ,KAAK,EAAE;GACpD,EAAE;IACF,CAAC,gBAAgB,CAAC;AAGrB,iBAAgB;EACd,MAAM,KAAK,YAAY;AACvB,MAAI,CAAC,MAAM,CAAC,gBAAiB;EAE7B,MAAM,YAAY,MAAM;AAEtB,yBADY,GAAG,WAAW,GAAG,UAAU,EAAE,OAAO,UAAU,OAC9B,GAAG;;AAGjC,KAAG,iBAAiB,UAAU,SAAS;AACvC,KAAG,iBAAiB,SAAS,SAAS;AAGtC,MAAI,kBAAmB,IAAG,QAAQ;AAElC,eAAa;AACX,MAAG,oBAAoB,UAAU,SAAS;AAC1C,MAAG,oBAAoB,SAAS,SAAS;;IAE1C;EAAC;EAAa;EAAiB;EAAiB;EAAkB,CAAC;CAEtE,MAAM,sBAAsB,EAC1B,cACA,eACA,OACA,cACI;AACJ,MAAI,CAAC,aACH,QAAO,oCAAC,uBAAmB;EAE7B,MAAM,SAAS,kBAAkB,aAAa,GAAG;EAGjD,MAAM,YAAY,GADJ,kBAAkB,MAAM,SAAS,KAAK,UAAU,OAAO,EACzC,UAAU;EACtC,MAAM,oBAAoB,YACvB,QAAQ,YAAY,QAAQ,MAAM,OAAO,CACzC,QAAQ,KAAK,SAAS;AACrB,UAAO,KAAK,IAAI,KAAK,KAAK,QAAQ;KACjC,EAAE;AAEP,SACE,0DACE,oCAAC;GACC,MAAM;GACN,OAAO,EAAE,kBAAkB;GAC3B,UAAS;GACT,OAAO;GACP,oBAAoB,EAAE,OAAO;GAC7B,uBAAuB,CAAC;GACxB,yBAAyB;GACzB,qBAAqB;KAEpB,mBACC,oCAAC;GACC,KAAK;GACL,SAAS;GACT,cAAc;GACd,aAAa;GACb,OAAO,EAAE,gBAAgB;IACzB,CAES,EACf,oCAAC;GACC,oBAAoB,sBAAsB,OAAO;GACrC;GACZ,aAAa,gBAAgB;GAC7B,kBAAkB,oBAChB,QACA,mBACA,UACD;GACc;IACf,CACD;;AAIP,iBAAgB;AACd,GAAC,YAAY;AACX,SAAM,kBAAkB;AACxB,SAAM,YAAY;MAChB;IACH,CAAC,kBAAkB,WAAW,CAAC;AAGlC,iBAAgB;EACd,MAAM,cAAc,0CAClB,6BAA6B,EAAE,CAChC;AAED,cAAY,QAAQ;GAClB,IAAI;GACJ,MAAM,EACJ,gBAAgB,yBAAyB,0BAC1C;GACD,iBAAiB,2BAA2B,UAAU;GACvD,CAAC;AACF,uBAAqB,YAAY;IAChC;EACD;EACA;EACA;EACA;EACD,CAAC;AAE6B,cAC5B,UAAU;AACT,uBAAqB,SAAS,GAAG;IAEnC,CAAC,qBAAqB,CACvB;AAED,QACE,oCAAC,aACC,oCAACA;EACC,WAAW,EAAE,QAAQ;EACrB,OAAO;EACP,UAAS;EACT,eAAe;EACf,oBAAoB,SAAS,MAAM,mBAAmB;EACtD,cAAc,EAAE,cAAc,eAAe,OAAO,cAAc;AAChE,UACE,oCAAC,aACE,mBAAmB;IAClB;IACA;IACA;IACA;IACD,CAAC,CACE;;GAGV,CACE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UdpMap-
|
|
1
|
+
{"version":3,"file":"UdpMap-BgkNp2X2.js","names":["UdpMap: React.FC<UdpMapProps>","Map"],"sources":["../src/UI/maps/UdpMap.tsx"],"sourcesContent":["import React from 'react';\nimport { UdpMap as Map } from 'udp-react-stencil-component-library';\n\nexport interface UdpMapProps {\n /* Enables the toolbar */\n enableToolbar?: boolean;\n\n /* Title appearing on map */\n mapTitle?: string;\n\n /* Feature data (in either Geo-JSON format or not). Geo-JSON format: [{ type: string, id: string, geometry: { type: 'Point' | 'LineString' | 'Polygon', coordinates: Coordinate }, properties: any }] */\n data?: any[];\n\n /* Boolean stating if the data is in Geo-JSON format */\n isGeoJsonFormat?: boolean;\n\n /* Method - If data is not in Geo-JSON format, returns data in Geo-JSON format */\n geoJsonMappingConfig?: any;\n\n /* Allows zoom */\n enableZoom?: boolean;\n\n /* Default map zoom */\n mapZoom?: number;\n\n /* Default map center */\n mapCenter?: any;\n\n /* Map height */\n mapHeight?: string;\n\n /* Coordinate reference system used */\n crs?: any;\n\n /* Map feature projection used */\n mapProjection?: string;\n\n /* Map data projection used */\n mapDataProjection?: string;\n\n /* Method - Custom filter for map features */\n getFilteredMapData?: any;\n\n /* Method - Returns custom styles for features */\n getFeatureStyles?: any;\n\n /* Method - Returns custom styles for selected features */\n getSelectedFeatureStyles?: any;\n\n /* Custom filter panel */\n filterPanel?: string;\n\n /* Method - Callback to filter features from custom filter panel */\n filterPanelCallback?: any;\n\n /* Allows selecting tile layer */\n enableTileSelection?: boolean;\n\n /* List of tile layers visible on the map */\n tileLayersOptions?: any[];\n\n /* Default tile layer name */\n defaultTileOptionName?: string;\n\n /* List of options for vector layers */\n layerOptions?: any[];\n\n /* Vector layers selected in the layer filter on initial map load */\n initialSelectedLayers?: any[];\n\n /* Callback to return layers that are selected */\n handleSelectLayersCallback: any;\n\n /* Custom action panel for selected features */\n bulkSelectedFeaturesActionPanel?: string;\n\n /* Method - Retrieves selected features when bulk selected */\n handleSetSelectedFeaturesOnBulkSelect: any;\n\n /* Method - Retrieves selected feature when individually selected */\n handleSetSelectedFeatureOnSelect: any;\n\n /* Enables filtering layers by role */\n filterLayersByRole: boolean;\n\n /* Layer keys to get the current feature layer when adding layers with features to the map */\n layerKeys?: string[];\n\n /* Layer key separator to get the current feature layer when adding layers with features to the map */\n layerKeySeparator?: string;\n\n /* Authenticated user from Unity - used to filter layers by role */\n user?: any;\n\n /* Layers assigned to roles */\n layerRoles?: any;\n\n /* Callback method to refresh map */\n handleRefresh?: any;\n\n /* Custom tooltip message on refresh button */\n refreshButtonTooltip?: string;\n\n /* Map is read-only (setting true removes the add, edit, delete functionality) */\n readOnlyMap: boolean;\n\n /* Enables adding a new feature by drawing on the map */\n enableAdd: boolean;\n\n /* When adding features on the map by drawing, this callback method returns the newly added features */\n handleAddNewFeatures: any;\n\n /* When adding features by drawing, add multiple features */\n addMultipleFeatures: boolean;\n\n /* Enables splitting line strings on the map */\n enableSplitFeature: boolean;\n\n /* Callback function to return split feature */\n handleSplitFeature: any;\n\n /* Enables viewing a selected feature */\n enableViewFeature: boolean;\n\n /* Method to enable viewing a selected feature */\n handleViewFeature: any;\n\n /* Enables deleting a selected feature */\n enableDeleteFeature: boolean;\n\n /* Callback method to handle deleting a selected feature */\n handleDeleteFeature?: any;\n\n /* Enables editing a selected feature */\n enableEditFeature: boolean;\n\n /* Callback method to handle editing a selected feature */\n handleEditFeature?: any;\n\n /* Callback method to return map zoom and extent when the resolution changes */\n handleGetZoomExtent?: any;\n\n /* Configuration object for customizing the popover card's appearance or behavior */\n cardConfig?: any;\n\n /* Array of primary action configurations for the popover (e.g., buttons) */\n popoverPrimaryActions?: { id?: string; name: string; iconName: string; onClick: (data: any) => void }[];\n\n /* Array of additional actions for the popover's \"more\" icon button (e.g., menu items) */\n popoverMoreIconButtonActions?: { id?: string; name: string; iconName: string; onClick: (data: any) => void }[];\n\n /* Function to get the message text to display in the popover, based on feature data */\n getMessagePopover?: (data: any) => string;\n\n /* Function to get the icon to display in the popover, based on feature data */\n getMessageIconPopover?: (data: any) => any;\n\n /* Boolean to control whether the message icon in the popover should be hidden */\n hideMessageIconPopover?: boolean;\n\n /* List of layers that are read only */\n readOnlyLayers?: string[];\n\n minZoom?: number;\n maxZoom?: number\n}\n\nexport const UdpMap: React.FC<UdpMapProps> = (props: UdpMapProps) => {\n return <Map {...props} />;\n};\n"],"mappings":";;;;AAuKA,MAAaA,YAAiC,UAAuB;AACnE,QAAO,oCAACC,QAAQ,MAAS"}
|
|
@@ -61,12 +61,12 @@ const PrivateRoute = ({ ...otherProps }) => {
|
|
|
61
61
|
|
|
62
62
|
//#endregion
|
|
63
63
|
//#region src/routes/UdpRoutes.jsx
|
|
64
|
-
const VirtualBrowser = lazy(() => import("./VirtualBrowser-
|
|
64
|
+
const VirtualBrowser = lazy(() => import("./VirtualBrowser-CxAjZWKa.js"));
|
|
65
65
|
const MenuPage = lazy(() => import("./MenuPage-HFTfG0b-.js"));
|
|
66
66
|
const UdpPublicForm = lazy(() => import("./udp/pages/UdpPublicForm/index.js"));
|
|
67
67
|
const WorkflowContainer = lazy(() => import("./WorkflowContainer-CW9NJXbF.js"));
|
|
68
68
|
const PasswordResetRedirect = lazy(() => import("./PasswordResetRedirect-DK8PFqW9.js"));
|
|
69
|
-
const MyExportsPage = lazy(() => import("./MyExportsPage-
|
|
69
|
+
const MyExportsPage = lazy(() => import("./MyExportsPage-D3yr41VC.js"));
|
|
70
70
|
const PageNotFoundRoute = lazy(() => import("./PageNotFoundRoute-CBxqlkDM.js"));
|
|
71
71
|
const UdpMaintenanceConfigPage = lazy(() => import("./udp/pages/UdpMaintenanceConfigPage/index.js"));
|
|
72
72
|
const UdpMaintenanceEnginePage = lazy(() => import("./udp/pages/UdpMaintenanceEnginePage/index.js"));
|
|
@@ -120,4 +120,4 @@ const UdpRoutes = (props) => {
|
|
|
120
120
|
|
|
121
121
|
//#endregion
|
|
122
122
|
export { PrivateRoute as n, UdpRoutes as t };
|
|
123
|
-
//# sourceMappingURL=UdpRoutes-
|
|
123
|
+
//# sourceMappingURL=UdpRoutes-Bbd0O-Yg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UdpRoutes-
|
|
1
|
+
{"version":3,"file":"UdpRoutes-Bbd0O-Yg.js","names":["props"],"sources":["../src/routes/PrivateRoute.jsx","../src/routes/UdpRoutes.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useIsUnityAuthenticated } from '../utilities/auth/useIsUnityAuthenticated';\r\nimport { useUser } from '../utilities/auth/useUser';\r\nimport { PageForbiddenRoute } from './components/PageForbiddenRoute';\r\n\r\nexport const PrivateRoute = ({ ...otherProps }) => {\r\n const isAuthenticated = useIsUnityAuthenticated();\r\n const user = useUser();\r\n const { t } = useTranslation();\r\n const { rolesMap, menuActiveMap } = otherProps;\r\n const userRoles = user.roleIds;\r\n //path is passed from frontend so making sure it meets expected fromat of all lowercase, no spaces, and has format /pathname or /pathname/:param\r\n let pathAsKey = otherProps.path\r\n .toLowerCase()\r\n .replaceAll(' ', '')\r\n .replace('/', '');\r\n pathAsKey = pathAsKey.split('/:')[0];\r\n\r\n const userHasAccessToTenant = useMemo(() => {\r\n if (user?.tenantIds?.includes(user.currentTenantId)) {\r\n return true;\r\n }\r\n return false;\r\n }, [user]);\r\n\r\n const userHasRoles = useMemo(() => {\r\n if (rolesMap?.size > 0) {\r\n if (!rolesMap.has(pathAsKey)) {\r\n return false;\r\n }\r\n const routeRoles = rolesMap.get(pathAsKey);\r\n return routeRoles.every((element) => userRoles.includes(element));\r\n }\r\n }, [userRoles, rolesMap, pathAsKey]);\r\n\r\n const menuIsActive = useMemo(() => {\r\n if (menuActiveMap?.size > 0 && menuActiveMap.has(pathAsKey)) {\r\n return menuActiveMap.get(pathAsKey);\r\n }\r\n }, [menuActiveMap, pathAsKey]);\r\n\r\n if (!userHasAccessToTenant && isAuthenticated && user?.statusCode === 200) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'You do not have access to this tenant. Please select a different Tenant.'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (rolesMap?.has(pathAsKey) && !menuIsActive) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'Trying to access inactive menu. Please check your menu configurations'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (!user.isUnitySystemAdmin && rolesMap?.size > 0 && !userHasRoles) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'You do not have the required roles to access this page.Please contact an administrator to get access'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (isAuthenticated && user?.statusCode === 200) {\r\n return <Route {...otherProps} />;\r\n }\r\n\r\n return null;\r\n};\r\n","import React, { Suspense, lazy } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { PrivateRoute } from './PrivateRoute';\nimport { UdpPageEnums } from '../enums/pageEnums';\nimport { ConfigService } from '../configService';\nimport { PageLoading } from '../UI/feedback/PageLoading';\n\n// Lazy load route components\nconst VirtualBrowser = lazy(() =>\n import('../maintenanceEngine/virtualBrowser/VirtualBrowser')\n);\nconst MenuPage = lazy(() => import('../menuPage/MenuPage'));\nconst UdpPublicForm = lazy(() => import('../udp/pages/UdpPublicForm'));\nconst WorkflowContainer = lazy(() => import('../workflow/WorkflowContainer'));\nconst PasswordResetRedirect = lazy(() =>\n import('./components/PasswordResetRedirect')\n);\nconst MyExportsPage = lazy(() => import('../udp/export/MyExportsPage'));\nconst PageNotFoundRoute = lazy(() => import('./components/PageNotFoundRoute'));\nconst UdpMaintenanceConfigPage = lazy(() =>\n import('../udp/pages/UdpMaintenanceConfigPage')\n);\nconst UdpMaintenanceEnginePage = lazy(() =>\n import('../udp/pages/UdpMaintenanceEnginePage')\n);\n\nexport const UdpRoutes = (props) => {\n const { ...other } = props;\n return (\n <Suspense fallback={<PageLoading />}>\n <Switch>\n <PrivateRoute\n path='/virtual/:id'\n render={(props) => <VirtualBrowser {...props} {...other} />}\n />\n <PrivateRoute\n path='/menupage/:id'\n render={(props) => <MenuPage {...props} {...other} />}\n />\n\n <Route\n path={`/page/${UdpPageEnums.Udp_Public_Forms_Page}`}\n render={(props) => <UdpPublicForm {...props} {...other} />}\n />\n <Route\n path={`/passwordresetsuccess`}\n render={(props) => <PasswordResetRedirect props={props} />}\n />\n <PrivateRoute\n path='/workflowtask/:id'\n render={(props) => <WorkflowContainer {...props} {...other} />}\n />\n <PrivateRoute\n path='/myexports'\n render={(props) => (\n <MyExportsPage\n productId={ConfigService.config.UNITY_PRODUCT_ID}\n {...props}\n {...other}\n />\n )}\n />\n <PrivateRoute\n path='/crudbrowser'\n render={(props) => <UdpMaintenanceEnginePage {...props} />}\n />\n <PrivateRoute\n path='/tablebrowser'\n render={(props) => <UdpMaintenanceConfigPage {...props} />}\n />\n <PrivateRoute path='*' component={PageNotFoundRoute} />\n </Switch>\n </Suspense>\n );\n};\n"],"mappings":"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"}
|