@erpsquad/common 1.11.5 → 1.11.6
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/chunks/{DynamicDependentField-Bug_QweP.esm.js → DynamicDependentField-C0XXmMlG.esm.js} +2 -2
- package/dist/chunks/{DynamicDependentField-Bug_QweP.esm.js.map → DynamicDependentField-C0XXmMlG.esm.js.map} +1 -1
- package/dist/chunks/{DynamicDependentField-GTIwrPfP.js → DynamicDependentField-CQIfDDqc.js} +2 -2
- package/dist/chunks/{DynamicDependentField-GTIwrPfP.js.map → DynamicDependentField-CQIfDDqc.js.map} +1 -1
- package/dist/chunks/{FORMS-QqBksLc2.esm.js → FORMS-B40NtUdz.esm.js} +5 -5
- package/dist/chunks/{FORMS-QqBksLc2.esm.js.map → FORMS-B40NtUdz.esm.js.map} +1 -1
- package/dist/chunks/{FORMS-DITDFHy1.js → FORMS-K5QYZYJc.js} +5 -5
- package/dist/chunks/{FORMS-DITDFHy1.js.map → FORMS-K5QYZYJc.js.map} +1 -1
- package/dist/chunks/{FlexibleReduxExample-CMUylyy1.js → FlexibleReduxExample-WGpR03V0.js} +3 -3
- package/dist/chunks/{FlexibleReduxExample-CMUylyy1.js.map → FlexibleReduxExample-WGpR03V0.js.map} +1 -1
- package/dist/chunks/{FlexibleReduxExample-BweOhhft.esm.js → FlexibleReduxExample-lJRAIjmS.esm.js} +3 -3
- package/dist/chunks/{FlexibleReduxExample-BweOhhft.esm.js.map → FlexibleReduxExample-lJRAIjmS.esm.js.map} +1 -1
- package/dist/chunks/{SectionFlowEditor-COarQdF5.esm.js → SectionFlowEditor-CFfJBYKx.esm.js} +2 -2
- package/dist/chunks/{SectionFlowEditor-COarQdF5.esm.js.map → SectionFlowEditor-CFfJBYKx.esm.js.map} +1 -1
- package/dist/chunks/{SectionFlowEditor--gfRgdM2.js → SectionFlowEditor-sKsZ3oQo.js} +2 -2
- package/dist/chunks/{SectionFlowEditor--gfRgdM2.js.map → SectionFlowEditor-sKsZ3oQo.js.map} +1 -1
- package/dist/chunks/{action-bar-sX54kFo9.esm.js → action-bar-C7Alva4T.esm.js} +3 -3
- package/dist/chunks/{action-bar-sX54kFo9.esm.js.map → action-bar-C7Alva4T.esm.js.map} +1 -1
- package/dist/chunks/{action-bar-CGP-GLkt.js → action-bar-DdtpxWNk.js} +3 -3
- package/dist/chunks/{action-bar-CGP-GLkt.js.map → action-bar-DdtpxWNk.js.map} +1 -1
- package/dist/chunks/{add-template-xyPHm3zV.esm.js → add-template-DVvbD9a4.esm.js} +2 -2
- package/dist/chunks/{add-template-xyPHm3zV.esm.js.map → add-template-DVvbD9a4.esm.js.map} +1 -1
- package/dist/chunks/{add-template-vpXcccHo.js → add-template-Dohg2bHJ.js} +2 -2
- package/dist/chunks/{add-template-vpXcccHo.js.map → add-template-Dohg2bHJ.js.map} +1 -1
- package/dist/chunks/{address-modal-DFd5sQtR.js → address-modal-CYhiC7ui.js} +2 -2
- package/dist/chunks/{address-modal-DFd5sQtR.js.map → address-modal-CYhiC7ui.js.map} +1 -1
- package/dist/chunks/{address-modal-DRT30GGc.esm.js → address-modal-CkDBjnye.esm.js} +2 -2
- package/dist/chunks/{address-modal-DRT30GGc.esm.js.map → address-modal-CkDBjnye.esm.js.map} +1 -1
- package/dist/chunks/{app-switcher-VhH9z0Rd.js → app-switcher-CyEQmYAN.js} +2 -2
- package/dist/chunks/{app-switcher-VhH9z0Rd.js.map → app-switcher-CyEQmYAN.js.map} +1 -1
- package/dist/chunks/{app-switcher-B6eapuGG.esm.js → app-switcher-D-Bvz9uO.esm.js} +2 -2
- package/dist/chunks/{app-switcher-B6eapuGG.esm.js.map → app-switcher-D-Bvz9uO.esm.js.map} +1 -1
- package/dist/chunks/{appbar-D5moUuMm.esm.js → appbar-BdTp1k68.esm.js} +2 -2
- package/dist/chunks/{appbar-D5moUuMm.esm.js.map → appbar-BdTp1k68.esm.js.map} +1 -1
- package/dist/chunks/{appbar-WvWT7p_M.js → appbar-DyIptRTa.js} +2 -2
- package/dist/chunks/{appbar-WvWT7p_M.js.map → appbar-DyIptRTa.js.map} +1 -1
- package/dist/chunks/{common-PH2uWkqL.js → common-CS5L0Ld_.js} +2 -2
- package/dist/chunks/{common-PH2uWkqL.js.map → common-CS5L0Ld_.js.map} +1 -1
- package/dist/chunks/{common-Cl5oGXmX.esm.js → common-yORBIVv-.esm.js} +2 -2
- package/dist/chunks/{common-Cl5oGXmX.esm.js.map → common-yORBIVv-.esm.js.map} +1 -1
- package/dist/chunks/{constants-D_xuLHSu.js → constants-06kIVUBw.js} +2 -2
- package/dist/chunks/{constants-D_xuLHSu.js.map → constants-06kIVUBw.js.map} +1 -1
- package/dist/chunks/{constants-BrmMAwu2.esm.js → constants-nmkxkzps.esm.js} +2 -2
- package/dist/chunks/{constants-BrmMAwu2.esm.js.map → constants-nmkxkzps.esm.js.map} +1 -1
- package/dist/chunks/{custom-form-T4yc_sE_.js → custom-form-CFU7NEVb.js} +4 -4
- package/dist/chunks/{custom-form-T4yc_sE_.js.map → custom-form-CFU7NEVb.js.map} +1 -1
- package/dist/chunks/{custom-form-B0iJKE-f.esm.js → custom-form-DD7YOHMF.esm.js} +4 -4
- package/dist/chunks/{custom-form-B0iJKE-f.esm.js.map → custom-form-DD7YOHMF.esm.js.map} +1 -1
- package/dist/chunks/{dashboard-u68tvYf2.esm.js → dashboard-B5qcT2Dt.esm.js} +3 -3
- package/dist/chunks/{dashboard-u68tvYf2.esm.js.map → dashboard-B5qcT2Dt.esm.js.map} +1 -1
- package/dist/chunks/{dashboard-Ck4clis4.js → dashboard-Dzts5-X6.js} +3 -3
- package/dist/chunks/{dashboard-Ck4clis4.js.map → dashboard-Dzts5-X6.js.map} +1 -1
- package/dist/chunks/{filter-BxLWUhFQ.esm.js → filter-COXKBEER.esm.js} +3 -3
- package/dist/chunks/{filter-BxLWUhFQ.esm.js.map → filter-COXKBEER.esm.js.map} +1 -1
- package/dist/chunks/{filter-DQNAPq4l.js → filter-Cr_OSIpb.js} +3 -3
- package/dist/chunks/{filter-DQNAPq4l.js.map → filter-Cr_OSIpb.js.map} +1 -1
- package/dist/chunks/{footer-DioOh69g.js → footer-CD3kMRdS.js} +2 -2
- package/dist/chunks/{footer-DioOh69g.js.map → footer-CD3kMRdS.js.map} +1 -1
- package/dist/chunks/{footer-BXClGYIb.esm.js → footer-m3_dlNl8.esm.js} +2 -2
- package/dist/chunks/{footer-BXClGYIb.esm.js.map → footer-m3_dlNl8.esm.js.map} +1 -1
- package/dist/chunks/{form-fields-DKFiyLCi.esm.js → form-fields-hMMnB_wE.esm.js} +2 -2
- package/dist/chunks/{form-fields-DKFiyLCi.esm.js.map → form-fields-hMMnB_wE.esm.js.map} +1 -1
- package/dist/chunks/{form-fields-BYDhbAgB.js → form-fields-yE9kwjvb.js} +2 -2
- package/dist/chunks/{form-fields-BYDhbAgB.js.map → form-fields-yE9kwjvb.js.map} +1 -1
- package/dist/chunks/{form-parser-C95b2on7.esm.js → form-parser-DbnSn5eY.esm.js} +2 -2
- package/dist/chunks/{form-parser-C95b2on7.esm.js.map → form-parser-DbnSn5eY.esm.js.map} +1 -1
- package/dist/chunks/{form-parser-BnMdMDSb.js → form-parser-m4fnw38a.js} +2 -2
- package/dist/chunks/{form-parser-BnMdMDSb.js.map → form-parser-m4fnw38a.js.map} +1 -1
- package/dist/chunks/{form-section-CFeWD-tF.js → form-section-CPIyMdk2.js} +5 -5
- package/dist/chunks/{form-section-CFeWD-tF.js.map → form-section-CPIyMdk2.js.map} +1 -1
- package/dist/chunks/{form-section-Bx_D21gW.esm.js → form-section-TMjdOVeW.esm.js} +5 -5
- package/dist/chunks/{form-section-Bx_D21gW.esm.js.map → form-section-TMjdOVeW.esm.js.map} +1 -1
- package/dist/chunks/{fullScreen-q9u5VL-5.js → fullScreen-B5iqC1y0.js} +2 -2
- package/dist/chunks/{fullScreen-q9u5VL-5.js.map → fullScreen-B5iqC1y0.js.map} +1 -1
- package/dist/chunks/{fullScreen-DTQ6tqij.esm.js → fullScreen-D-isf0wv.esm.js} +2 -2
- package/dist/chunks/{fullScreen-DTQ6tqij.esm.js.map → fullScreen-D-isf0wv.esm.js.map} +1 -1
- package/dist/chunks/{global-search-DCsutWXD.esm.js → global-search-BOkxXiZ0.esm.js} +2 -2
- package/dist/chunks/{global-search-DCsutWXD.esm.js.map → global-search-BOkxXiZ0.esm.js.map} +1 -1
- package/dist/chunks/{global-search-BTV5iL6-.js → global-search-BjKPmzsQ.js} +2 -2
- package/dist/chunks/{global-search-BTV5iL6-.js.map → global-search-BjKPmzsQ.js.map} +1 -1
- package/dist/chunks/{header-CqTEaHw3.js → header-DQ_e75rt.js} +6 -6
- package/dist/chunks/{header-CqTEaHw3.js.map → header-DQ_e75rt.js.map} +1 -1
- package/dist/chunks/{header-I2izTvvZ.esm.js → header-D_pPOjdz.esm.js} +6 -6
- package/dist/chunks/{header-I2izTvvZ.esm.js.map → header-D_pPOjdz.esm.js.map} +1 -1
- package/dist/chunks/{header-enhanced-Dxdetx0I.js → header-enhanced-DCDMljaN.js} +3 -3
- package/dist/chunks/{header-enhanced-Dxdetx0I.js.map → header-enhanced-DCDMljaN.js.map} +1 -1
- package/dist/chunks/{header-enhanced-D31BpL2H.esm.js → header-enhanced-OiKzLG4i.esm.js} +3 -3
- package/dist/chunks/{header-enhanced-D31BpL2H.esm.js.map → header-enhanced-OiKzLG4i.esm.js.map} +1 -1
- package/dist/chunks/{inline-edit-fields-CjqUhdIv.esm.js → inline-edit-fields-BYhRpPcH.esm.js} +2 -2
- package/dist/chunks/{inline-edit-fields-CjqUhdIv.esm.js.map → inline-edit-fields-BYhRpPcH.esm.js.map} +1 -1
- package/dist/chunks/{inline-edit-fields-Cd_qUOjU.js → inline-edit-fields-atDP84QL.js} +2 -2
- package/dist/chunks/{inline-edit-fields-Cd_qUOjU.js.map → inline-edit-fields-atDP84QL.js.map} +1 -1
- package/dist/chunks/{inventory-reports-title-bar-BfUMM54c.js → inventory-reports-title-bar-Bog2i0dr.js} +2 -2
- package/dist/chunks/{inventory-reports-title-bar-BfUMM54c.js.map → inventory-reports-title-bar-Bog2i0dr.js.map} +1 -1
- package/dist/chunks/{inventory-reports-title-bar-DPS3r5V2.esm.js → inventory-reports-title-bar-CP8FzW6A.esm.js} +2 -2
- package/dist/chunks/{inventory-reports-title-bar-DPS3r5V2.esm.js.map → inventory-reports-title-bar-CP8FzW6A.esm.js.map} +1 -1
- package/dist/chunks/{item-response-details-BheThTTK.js → item-response-details-DsGQ7Dlc.js} +2 -2
- package/dist/chunks/{item-response-details-BheThTTK.js.map → item-response-details-DsGQ7Dlc.js.map} +1 -1
- package/dist/chunks/{item-response-details-BtCmz7XT.esm.js → item-response-details-SHSD-nBh.esm.js} +2 -2
- package/dist/chunks/{item-response-details-BtCmz7XT.esm.js.map → item-response-details-SHSD-nBh.esm.js.map} +1 -1
- package/dist/chunks/{listing-Ck-RqIjL.esm.js → listing-C0Yb6MVq.esm.js} +4 -4
- package/dist/chunks/{listing-Ck-RqIjL.esm.js.map → listing-C0Yb6MVq.esm.js.map} +1 -1
- package/dist/chunks/{listing-BDN5cLvI.js → listing-DIuzQrzb.js} +4 -4
- package/dist/chunks/{listing-BDN5cLvI.js.map → listing-DIuzQrzb.js.map} +1 -1
- package/dist/chunks/{location-select-jwR8SCYN.esm.js → location-select-CFa00fy4.esm.js} +2 -2
- package/dist/chunks/{location-select-jwR8SCYN.esm.js.map → location-select-CFa00fy4.esm.js.map} +1 -1
- package/dist/chunks/{location-select-CLyRUilk.js → location-select-g5uczAUF.js} +2 -2
- package/dist/chunks/{location-select-CLyRUilk.js.map → location-select-g5uczAUF.js.map} +1 -1
- package/dist/chunks/{material-editable-table-DFGB0q-s.js → material-editable-table-BGLjrTzT.js} +3 -3
- package/dist/chunks/{material-editable-table-DFGB0q-s.js.map → material-editable-table-BGLjrTzT.js.map} +1 -1
- package/dist/chunks/{material-editable-table-qC9FTg-4.esm.js → material-editable-table-pAyK7KYf.esm.js} +3 -3
- package/dist/chunks/{material-editable-table-qC9FTg-4.esm.js.map → material-editable-table-pAyK7KYf.esm.js.map} +1 -1
- package/dist/chunks/{modules-DTRr7zwt.js → modules-BZNWOWrz.js} +2 -2
- package/dist/chunks/{modules-DTRr7zwt.js.map → modules-BZNWOWrz.js.map} +1 -1
- package/dist/chunks/{modules-enwLrpfQ.esm.js → modules-CWV4WSHs.esm.js} +2 -2
- package/dist/chunks/{modules-enwLrpfQ.esm.js.map → modules-CWV4WSHs.esm.js.map} +1 -1
- package/dist/chunks/{notification-menu-B00hDUbn.js → notification-menu-D7ASm-K1.js} +2 -2
- package/dist/chunks/{notification-menu-B00hDUbn.js.map → notification-menu-D7ASm-K1.js.map} +1 -1
- package/dist/chunks/{notification-menu-B_4BOTgX.esm.js → notification-menu-XAadkn-e.esm.js} +2 -2
- package/dist/chunks/{notification-menu-B_4BOTgX.esm.js.map → notification-menu-XAadkn-e.esm.js.map} +1 -1
- package/dist/chunks/{page-action-TMFOytDw.js → page-action-BPzaL2KJ.js} +2 -2
- package/dist/chunks/{page-action-TMFOytDw.js.map → page-action-BPzaL2KJ.js.map} +1 -1
- package/dist/chunks/{page-action-0S_h4623.esm.js → page-action-C07iGjvN.esm.js} +2 -2
- package/dist/chunks/{page-action-0S_h4623.esm.js.map → page-action-C07iGjvN.esm.js.map} +1 -1
- package/dist/chunks/{page-navigator-B17f-mUz.esm.js → page-navigator-8gZpp9_P.esm.js} +2 -2
- package/dist/chunks/{page-navigator-B17f-mUz.esm.js.map → page-navigator-8gZpp9_P.esm.js.map} +1 -1
- package/dist/chunks/{page-navigator-DdRsmtLy.js → page-navigator-Cgbh3tTG.js} +2 -2
- package/dist/chunks/{page-navigator-DdRsmtLy.js.map → page-navigator-Cgbh3tTG.js.map} +1 -1
- package/dist/chunks/{page-view-CnzxewUy.esm.js → page-view-CokUNMBn.esm.js} +3 -3
- package/dist/chunks/{page-view-CnzxewUy.esm.js.map → page-view-CokUNMBn.esm.js.map} +1 -1
- package/dist/chunks/{page-view-CvfqzV03.js → page-view-DJ6HS_dV.js} +3 -3
- package/dist/chunks/{page-view-CvfqzV03.js.map → page-view-DJ6HS_dV.js.map} +1 -1
- package/dist/chunks/{pathname.rental-CwK6JuID.js → pathname.rental-DgH4LoG7.js} +7 -2
- package/dist/chunks/{pathname.rental-CwK6JuID.js.map → pathname.rental-DgH4LoG7.js.map} +1 -1
- package/dist/chunks/{pathname.rental-CqHO_l_D.esm.js → pathname.rental-qsAe3XFd.esm.js} +81 -76
- package/dist/chunks/{pathname.rental-CqHO_l_D.esm.js.map → pathname.rental-qsAe3XFd.esm.js.map} +1 -1
- package/dist/chunks/{reports-title-bar-CqVqKrPd.esm.js → reports-title-bar-Cay4E8SQ.esm.js} +2 -2
- package/dist/chunks/{reports-title-bar-CqVqKrPd.esm.js.map → reports-title-bar-Cay4E8SQ.esm.js.map} +1 -1
- package/dist/chunks/{reports-title-bar-B1_IweEc.js → reports-title-bar-Kz6JjqsY.js} +2 -2
- package/dist/chunks/{reports-title-bar-B1_IweEc.js.map → reports-title-bar-Kz6JjqsY.js.map} +1 -1
- package/dist/chunks/{route-page-map-CSg28AvB.esm.js → route-page-map-DkWoisiB.esm.js} +132 -75
- package/dist/chunks/{route-page-map-CSg28AvB.esm.js.map → route-page-map-DkWoisiB.esm.js.map} +1 -1
- package/dist/chunks/{route-page-map-__F1KHUj.js → route-page-map-Dn-SAbdf.js} +59 -2
- package/dist/chunks/{route-page-map-__F1KHUj.js.map → route-page-map-Dn-SAbdf.js.map} +1 -1
- package/dist/chunks/{routes-DauYjaxu.esm.js → routes-Be8qxaVS.esm.js} +3 -3
- package/dist/chunks/{routes-DauYjaxu.esm.js.map → routes-Be8qxaVS.esm.js.map} +1 -1
- package/dist/chunks/{routes-Bs7dqd7j.js → routes-Bi8lChPT.js} +3 -3
- package/dist/chunks/{routes-Bs7dqd7j.js.map → routes-Bi8lChPT.js.map} +1 -1
- package/dist/chunks/{schedule-report-BwmZ5jea.js → schedule-report-B4ZfEuiU.js} +4 -4
- package/dist/chunks/{schedule-report-BwmZ5jea.js.map → schedule-report-B4ZfEuiU.js.map} +1 -1
- package/dist/chunks/{schedule-report-D2oYKVGN.esm.js → schedule-report-CLXjjfjc.esm.js} +4 -4
- package/dist/chunks/{schedule-report-D2oYKVGN.esm.js.map → schedule-report-CLXjjfjc.esm.js.map} +1 -1
- package/dist/chunks/{schedule-report-modal-maDNFV-h.esm.js → schedule-report-modal-CB3G9H7x.esm.js} +2 -2
- package/dist/chunks/{schedule-report-modal-maDNFV-h.esm.js.map → schedule-report-modal-CB3G9H7x.esm.js.map} +1 -1
- package/dist/chunks/{schedule-report-modal-iNnWP9s4.js → schedule-report-modal-iwoDI-sg.js} +2 -2
- package/dist/chunks/{schedule-report-modal-iNnWP9s4.js.map → schedule-report-modal-iwoDI-sg.js.map} +1 -1
- package/dist/chunks/{searchable-select-CcG1qflA.esm.js → searchable-select-0F6E4XAr.esm.js} +2 -2
- package/dist/chunks/{searchable-select-CcG1qflA.esm.js.map → searchable-select-0F6E4XAr.esm.js.map} +1 -1
- package/dist/chunks/{searchable-select-DVUCWWti.js → searchable-select-_DCkITfk.js} +2 -2
- package/dist/chunks/{searchable-select-DVUCWWti.js.map → searchable-select-_DCkITfk.js.map} +1 -1
- package/dist/chunks/{share-modal-CQYd5GU0.esm.js → share-modal-BaEyZs2h.esm.js} +2 -2
- package/dist/chunks/{share-modal-CQYd5GU0.esm.js.map → share-modal-BaEyZs2h.esm.js.map} +1 -1
- package/dist/chunks/{share-modal-CobK7BN7.js → share-modal-DrXvh-fV.js} +2 -2
- package/dist/chunks/{share-modal-CobK7BN7.js.map → share-modal-DrXvh-fV.js.map} +1 -1
- package/dist/chunks/{share-modal-enhanced-DVarD-jt.js → share-modal-enhanced-BTr0zRhF.js} +2 -2
- package/dist/chunks/{share-modal-enhanced-DVarD-jt.js.map → share-modal-enhanced-BTr0zRhF.js.map} +1 -1
- package/dist/chunks/{share-modal-enhanced-04WjO7Ej.esm.js → share-modal-enhanced-DnEdDBmu.esm.js} +2 -2
- package/dist/chunks/{share-modal-enhanced-04WjO7Ej.esm.js.map → share-modal-enhanced-DnEdDBmu.esm.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-BvaFDSr8.js → sidebarScreen-3iZYCAMn.js} +2 -2
- package/dist/chunks/{sidebarScreen-BvaFDSr8.js.map → sidebarScreen-3iZYCAMn.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-CLsGgJpX.esm.js → sidebarScreen-CYUn8OsB.esm.js} +2 -2
- package/dist/chunks/{sidebarScreen-CLsGgJpX.esm.js.map → sidebarScreen-CYUn8OsB.esm.js.map} +1 -1
- package/dist/chunks/{table-Bpt6ggr3.js → table-DWx7x8zw.js} +2 -2
- package/dist/chunks/{table-Bpt6ggr3.js.map → table-DWx7x8zw.js.map} +1 -1
- package/dist/chunks/{table-DgCWox6A.esm.js → table-gxAlAeTq.esm.js} +2 -2
- package/dist/chunks/{table-DgCWox6A.esm.js.map → table-gxAlAeTq.esm.js.map} +1 -1
- package/dist/chunks/{template-editor-router-Dq3Hsw99.js → template-editor-router-BRxF8Dj_.js} +2 -2
- package/dist/chunks/{template-editor-router-Dq3Hsw99.js.map → template-editor-router-BRxF8Dj_.js.map} +1 -1
- package/dist/chunks/{template-editor-router-DAGjgCfA.esm.js → template-editor-router-BV5FrwJm.esm.js} +2 -2
- package/dist/chunks/{template-editor-router-DAGjgCfA.esm.js.map → template-editor-router-BV5FrwJm.esm.js.map} +1 -1
- package/dist/chunks/{templates-BkVjG5c0.js → templates-BY9HF32G.js} +4 -4
- package/dist/chunks/{templates-BkVjG5c0.js.map → templates-BY9HF32G.js.map} +1 -1
- package/dist/chunks/{templates-DrKOJkmh.esm.js → templates-DxvU4PQY.esm.js} +4 -4
- package/dist/chunks/{templates-DrKOJkmh.esm.js.map → templates-DxvU4PQY.esm.js.map} +1 -1
- package/dist/chunks/{uom-field-wrapper-DyhwLo9Q.esm.js → uom-field-wrapper-CTbEc-MB.esm.js} +2 -2
- package/dist/chunks/{uom-field-wrapper-DyhwLo9Q.esm.js.map → uom-field-wrapper-CTbEc-MB.esm.js.map} +1 -1
- package/dist/chunks/{uom-field-wrapper-CSqeiVPY.js → uom-field-wrapper-DXZgzOYB.js} +2 -2
- package/dist/chunks/{uom-field-wrapper-CSqeiVPY.js.map → uom-field-wrapper-DXZgzOYB.js.map} +1 -1
- package/dist/chunks/{use-translations-RGIbWjPM.esm.js → use-translations-BzykVZOP.esm.js} +2 -2
- package/dist/chunks/{use-translations-RGIbWjPM.esm.js.map → use-translations-BzykVZOP.esm.js.map} +1 -1
- package/dist/chunks/{use-translations-Cn3b4Kqh.js → use-translations-CNI_xsIo.js} +2 -2
- package/dist/chunks/{use-translations-Cn3b4Kqh.js.map → use-translations-CNI_xsIo.js.map} +1 -1
- package/dist/chunks/{value-editor-Br7X_wEB.js → value-editor-BSS9Ns2T.js} +2 -2
- package/dist/chunks/{value-editor-Br7X_wEB.js.map → value-editor-BSS9Ns2T.js.map} +1 -1
- package/dist/chunks/{value-editor-DkDNIrZ4.esm.js → value-editor-DQ1qgZ2u.esm.js} +2 -2
- package/dist/chunks/{value-editor-DkDNIrZ4.esm.js.map → value-editor-DQ1qgZ2u.esm.js.map} +1 -1
- package/dist/chunks/{vendor-ai-summary-C33oHYPA.esm.js → vendor-ai-summary-BA6m2dH9.esm.js} +2 -2
- package/dist/chunks/{vendor-ai-summary-C33oHYPA.esm.js.map → vendor-ai-summary-BA6m2dH9.esm.js.map} +1 -1
- package/dist/chunks/{vendor-ai-summary-zranZkfk.js → vendor-ai-summary-DWmAaQ_N.js} +2 -2
- package/dist/chunks/{vendor-ai-summary-zranZkfk.js.map → vendor-ai-summary-DWmAaQ_N.js.map} +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js +1 -1
- package/dist/components/action-bar/action-bar/index.js +1 -1
- package/dist/components/action-bar/index.esm.js +1 -1
- package/dist/components/action-bar/index.js +1 -1
- package/dist/components/address-modal/index.esm.js +1 -1
- package/dist/components/address-modal/index.js +1 -1
- package/dist/components/appbar/appbar/index.esm.js +1 -1
- package/dist/components/appbar/appbar/index.js +1 -1
- package/dist/components/appbar/index.esm.js +1 -1
- package/dist/components/appbar/index.js +1 -1
- package/dist/components/custom-forms/FORMS/index.esm.js +1 -1
- package/dist/components/custom-forms/FORMS/index.js +1 -1
- package/dist/components/custom-forms/index.esm.js +1 -1
- package/dist/components/custom-forms/index.js +1 -1
- package/dist/components/department-add-modal/index.esm.js +1 -1
- package/dist/components/department-add-modal/index.js +1 -1
- package/dist/components/designation-add-modal/index.esm.js +1 -1
- package/dist/components/designation-add-modal/index.js +1 -1
- package/dist/components/examples/FlexibleReduxExample/index.esm.js +1 -1
- package/dist/components/examples/FlexibleReduxExample/index.js +1 -1
- package/dist/components/examples/index.esm.js +1 -1
- package/dist/components/examples/index.js +1 -1
- package/dist/components/filter/components/index.esm.js +1 -1
- package/dist/components/filter/components/index.js +1 -1
- package/dist/components/filter/components/value-editor/index.esm.js +1 -1
- package/dist/components/filter/components/value-editor/index.js +1 -1
- package/dist/components/filter/filter/index.esm.js +1 -1
- package/dist/components/filter/filter/index.js +1 -1
- package/dist/components/filter/index.esm.js +2 -2
- package/dist/components/filter/index.js +2 -2
- package/dist/components/footer/footer/index.esm.js +1 -1
- package/dist/components/footer/footer/index.js +1 -1
- package/dist/components/footer/index.esm.js +1 -1
- package/dist/components/footer/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/index.esm.js +3 -3
- package/dist/components/form-control/form-builder/form-builder-element/index.js +3 -3
- package/dist/components/form-control/form-builder/form-builder-element/location-add-modal/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/location-add-modal/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/select-configuration/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/select-configuration/index.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/table/index.esm.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/table/index.js +1 -1
- package/dist/components/form-control/form-builder/index.esm.js +3 -3
- package/dist/components/form-control/form-builder/index.js +3 -3
- package/dist/components/form-control/form-parser/form-parser/index.esm.js +1 -1
- package/dist/components/form-control/form-parser/form-parser/index.js +1 -1
- package/dist/components/form-control/form-parser/form-section/index.esm.js +1 -1
- package/dist/components/form-control/form-parser/form-section/index.js +1 -1
- package/dist/components/form-control/form-parser/index.esm.js +2 -2
- package/dist/components/form-control/form-parser/index.js +2 -2
- package/dist/components/form-control/index.esm.js +5 -5
- package/dist/components/form-control/index.js +5 -5
- package/dist/components/header/components/app-switcher/index.esm.js +1 -1
- package/dist/components/header/components/app-switcher/index.js +1 -1
- package/dist/components/header/components/global-search/index.esm.js +1 -1
- package/dist/components/header/components/global-search/index.js +1 -1
- package/dist/components/header/components/index.esm.js +1 -1
- package/dist/components/header/components/index.js +1 -1
- package/dist/components/header/components/notification-menu/index.esm.js +1 -1
- package/dist/components/header/components/notification-menu/index.js +1 -1
- package/dist/components/header/components/notification-menu/notification-menu/index.esm.js +1 -1
- package/dist/components/header/components/notification-menu/notification-menu/index.js +1 -1
- package/dist/components/header/header/index.esm.js +1 -1
- package/dist/components/header/header/index.js +1 -1
- package/dist/components/header/header-enhanced/index.esm.js +1 -1
- package/dist/components/header/header-enhanced/index.js +1 -1
- package/dist/components/header/index.esm.js +3 -3
- package/dist/components/header/index.js +3 -3
- package/dist/components/index.esm.js +26 -26
- package/dist/components/index.js +26 -26
- package/dist/components/inventory-reports-title-bar/index.esm.js +1 -1
- package/dist/components/inventory-reports-title-bar/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/inventory-reports-title-bar/index.esm.js +1 -1
- package/dist/components/inventory-reports-title-bar/inventory-reports-title-bar/index.js +1 -1
- package/dist/components/listing/index.esm.js +1 -1
- package/dist/components/listing/index.js +1 -1
- package/dist/components/listing/listing/index.esm.js +1 -1
- package/dist/components/listing/listing/index.js +1 -1
- package/dist/components/location-select/index.esm.js +1 -1
- package/dist/components/location-select/index.js +1 -1
- package/dist/components/material-editable-table/components/index.esm.js +1 -1
- package/dist/components/material-editable-table/components/index.js +1 -1
- package/dist/components/material-editable-table/components/inline-edit-fields/index.esm.js +1 -1
- package/dist/components/material-editable-table/components/inline-edit-fields/index.js +1 -1
- package/dist/components/material-editable-table/index.esm.js +2 -2
- package/dist/components/material-editable-table/index.js +2 -2
- package/dist/components/material-editable-table/material-editable-table/index.esm.js +1 -1
- package/dist/components/material-editable-table/material-editable-table/index.js +1 -1
- package/dist/components/material-table/components/index.esm.js +1 -1
- package/dist/components/material-table/components/index.js +1 -1
- package/dist/components/material-table/components/inline-edit-fields/index.esm.js +1 -1
- package/dist/components/material-table/components/inline-edit-fields/index.js +1 -1
- package/dist/components/material-table/index.esm.js +1 -1
- package/dist/components/material-table/index.js +1 -1
- package/dist/components/material-table/material-table/index.esm.js +1 -1
- package/dist/components/material-table/material-table/index.js +1 -1
- package/dist/components/page-navigator/components/index.esm.js +1 -1
- package/dist/components/page-navigator/components/index.js +1 -1
- package/dist/components/page-navigator/components/page-action/index.esm.js +1 -1
- package/dist/components/page-navigator/components/page-action/index.js +1 -1
- package/dist/components/page-navigator/index.esm.js +2 -2
- package/dist/components/page-navigator/index.js +2 -2
- package/dist/components/page-navigator/page-navigator/index.esm.js +1 -1
- package/dist/components/page-navigator/page-navigator/index.js +1 -1
- package/dist/components/parties-modal/index.esm.js +1 -1
- package/dist/components/parties-modal/index.js +1 -1
- package/dist/components/parties-modal/parties-modal/index.esm.js +1 -1
- package/dist/components/parties-modal/parties-modal/index.js +1 -1
- package/dist/components/reports-title-bar/index.esm.js +1 -1
- package/dist/components/reports-title-bar/index.js +1 -1
- package/dist/components/reports-title-bar/reports-title-bar/index.esm.js +1 -1
- package/dist/components/reports-title-bar/reports-title-bar/index.js +1 -1
- package/dist/components/rfq-response/index.esm.js +1 -1
- package/dist/components/rfq-response/index.js +1 -1
- package/dist/components/rfq-response/item-response-details/index.esm.js +1 -1
- package/dist/components/rfq-response/item-response-details/index.js +1 -1
- package/dist/components/schedule-report/index.esm.js +2 -2
- package/dist/components/schedule-report/index.js +2 -2
- package/dist/components/schedule-report/schedule-report/index.esm.js +1 -1
- package/dist/components/schedule-report/schedule-report/index.js +1 -1
- package/dist/components/schedule-report/schedule-report-modal/index.esm.js +1 -1
- package/dist/components/schedule-report/schedule-report-modal/index.js +1 -1
- package/dist/components/searchable-select/index.esm.js +1 -1
- package/dist/components/searchable-select/index.js +1 -1
- package/dist/components/share-modal/index.esm.js +2 -2
- package/dist/components/share-modal/index.js +2 -2
- package/dist/components/share-modal/share-modal/index.esm.js +1 -1
- package/dist/components/share-modal/share-modal/index.js +1 -1
- package/dist/components/share-modal/share-modal-enhanced/index.esm.js +1 -1
- package/dist/components/share-modal/share-modal-enhanced/index.js +1 -1
- package/dist/components/team-add-modal/index.esm.js +1 -1
- package/dist/components/team-add-modal/index.js +1 -1
- package/dist/components/uom-field-wrapper/index.esm.js +1 -1
- package/dist/components/uom-field-wrapper/index.js +1 -1
- package/dist/components/uom-field-wrapper/uom-field-wrapper/index.esm.js +1 -1
- package/dist/components/uom-field-wrapper/uom-field-wrapper/index.js +1 -1
- package/dist/components/vendor-ai-summary/index.esm.js +1 -1
- package/dist/components/vendor-ai-summary/index.js +1 -1
- package/dist/constants/index.esm.js +145 -143
- package/dist/constants/index.js +5 -3
- package/dist/constants/index.js.map +1 -1
- package/dist/hooks/index.esm.js +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/use-translations/index.esm.js +1 -1
- package/dist/hooks/use-translations/index.js +1 -1
- package/dist/index.esm.js +182 -180
- package/dist/index.js +43 -41
- package/dist/index.js.map +1 -1
- package/dist/layout/fullScreen/index.esm.js +1 -1
- package/dist/layout/fullScreen/index.js +1 -1
- package/dist/layout/index.esm.js +2 -2
- package/dist/layout/index.js +2 -2
- package/dist/layout/sidebarScreen/index.esm.js +1 -1
- package/dist/layout/sidebarScreen/index.js +1 -1
- package/dist/runtime/index.esm.js +2 -2
- package/dist/runtime/index.js +2 -2
- package/dist/src/constants/defaultColumns.d.ts +1 -0
- package/dist/src/constants/pathnames/pathname.procurement.d.ts +4 -0
- package/dist/utils/export-filters/index.esm.js +1 -0
- package/dist/utils/export-filters/index.esm.js.map +1 -1
- package/dist/utils/export-filters/index.js +1 -0
- package/dist/utils/export-filters/index.js.map +1 -1
- package/dist/views/afterAuth/dashboard/index.esm.js +1 -1
- package/dist/views/afterAuth/dashboard/index.js +1 -1
- package/dist/views/afterAuth/index.esm.js +2 -2
- package/dist/views/afterAuth/index.js +2 -2
- package/dist/views/afterAuth/page-view/index.esm.js +1 -1
- package/dist/views/afterAuth/page-view/index.js +1 -1
- package/dist/views/form-builder/custom-form/index.esm.js +1 -1
- package/dist/views/form-builder/custom-form/index.js +1 -1
- package/dist/views/form-builder/form-fields/index.esm.js +1 -1
- package/dist/views/form-builder/form-fields/index.js +1 -1
- package/dist/views/form-builder/index.esm.js +3 -3
- package/dist/views/form-builder/index.js +3 -3
- package/dist/views/form-builder/utils/index.esm.js +1 -1
- package/dist/views/form-builder/utils/index.js +1 -1
- package/dist/views/index.esm.js +10 -10
- package/dist/views/index.js +10 -10
- package/dist/views/template-editor/add-template/index.esm.js +1 -1
- package/dist/views/template-editor/add-template/index.js +1 -1
- package/dist/views/template-editor/components/index.esm.js +1 -1
- package/dist/views/template-editor/components/index.js +1 -1
- package/dist/views/template-editor/index.esm.js +5 -5
- package/dist/views/template-editor/index.js +5 -5
- package/dist/views/template-editor/routes/index.esm.js +1 -1
- package/dist/views/template-editor/routes/index.js +1 -1
- package/dist/views/template-editor/templates/index.esm.js +1 -1
- package/dist/views/template-editor/templates/index.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-switcher-B6eapuGG.esm.js","sources":["../../src/components/header/components/app-switcher/app-switcher.tsx"],"sourcesContent":["import React, { useState, useCallback, useMemo, useRef } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Popover } from \"@mui/material\";\n\nimport { IModule } from \"../../types\";\nimport { MODULE_META } from \"../../constants\";\nimport { IconApps, IconPinFilled, IconPinOutline } from \"../../icons\";\n\ninterface AppSwitcherProps {\n erp_modules: IModule[];\n selectedModule: IModule | null;\n}\n\nexport function AppSwitcher({ erp_modules, selectedModule }: AppSwitcherProps) {\n const navigate = useNavigate();\n const appSwitchRef = useRef<HTMLButtonElement>(null);\n const [appSwitchOpen, setAppSwitchOpen] = useState(false);\n const [asSrch, setAsSrch] = useState(\"\");\n const [pinnedModules, setPinnedModules] = useState<string[]>(() => {\n try { return JSON.parse(localStorage.getItem(\"_pinned_modules\") || \"[]\"); }\n catch { return []; }\n });\n\n const togglePin = useCallback((link: string, e: React.MouseEvent) => {\n e.stopPropagation();\n setPinnedModules(prev => {\n const next = prev.includes(link) ? prev.filter(l => l !== link) : [...prev, link];\n localStorage.setItem(\"_pinned_modules\", JSON.stringify(next));\n return next;\n });\n }, []);\n\n const filteredModules = useMemo(() => {\n if (!asSrch.trim()) return erp_modules;\n return erp_modules.filter(m =>\n String(m.label).toLowerCase().includes(asSrch.toLowerCase())\n );\n }, [erp_modules, asSrch]);\n\n const pinnedList = useMemo(() =>\n erp_modules.filter(m => pinnedModules.includes(m.link)),\n [erp_modules, pinnedModules]\n );\n\n return (\n <>\n <button\n ref={appSwitchRef}\n className={`app-switch${appSwitchOpen ? \" open\" : \"\"}`}\n type=\"button\"\n aria-label=\"Switch module\"\n aria-haspopup=\"true\"\n aria-expanded={appSwitchOpen}\n onClick={() => setAppSwitchOpen(v => !v)}\n >\n <IconApps />\n </button>\n\n <Popover\n open={appSwitchOpen}\n anchorEl={appSwitchRef.current}\n onClose={() => { setAppSwitchOpen(false); setAsSrch(\"\"); }}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\n slotProps={{ paper: { className: \"as-pop\", elevation: 0 } }}\n marginThreshold={8}\n disableScrollLock\n >\n <div className=\"as-head\">\n <input\n className=\"as-search-input\"\n placeholder=\"Search modules, apps, recent…\"\n value={asSrch}\n onChange={(e) => setAsSrch(e.target.value)}\n autoFocus\n />\n <span className=\"as-pin\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" style={{ width: 11, height: 11 }}>\n <path d=\"M12 2v10\"/><path d=\"M5 12l7 7 7-7\"/>\n </svg>\n Pin to start\n </span>\n </div>\n\n <div className=\"as-body\">\n {pinnedList.length > 0 && (\n <div className=\"as-section\">\n <div className=\"as-section-label\">\n Pinned <span className=\"badge\">{pinnedList.length}</span>\n </div>\n <div className=\"as-grid\">\n {pinnedList.map((m, i) => (\n <button\n key={i}\n className=\"as-tile pinned\"\n type=\"button\"\n style={{ \"--tile-bg\": m.bg || \"#F2F3F4\", \"--tile-fg\": MODULE_META[m.link]?.fg || \"#4A4C50\" } as React.CSSProperties}\n onClick={() => { setAppSwitchOpen(false); navigate(m.link); setAsSrch(\"\"); }}\n >\n <span className=\"as-tile-icon\">\n <img src={m.icon} alt=\"\" width={15} height={15} />\n </span>\n <div>\n <div className=\"as-tile-row\">\n <div className=\"as-tile-name\">{m.label}</div>\n {MODULE_META[m.link]?.isNew && <span className=\"new-pill\">NEW</span>}\n </div>\n {MODULE_META[m.link]?.meta && (\n <div className=\"as-tile-meta\">{MODULE_META[m.link].meta}</div>\n )}\n </div>\n <span className=\"pin\" onClick={(e) => togglePin(m.link, e)} title=\"Unpin\">\n <IconPinFilled />\n </span>\n </button>\n ))}\n </div>\n </div>\n )}\n\n <div className=\"as-section\">\n {pinnedList.length > 0 && (\n <div className=\"as-section-label\">\n All Apps <span className=\"badge\">{filteredModules.length}</span>\n </div>\n )}\n <div className=\"as-grid\">\n {filteredModules.map((m, i) => {\n const isPinned = pinnedModules.includes(m.link);\n const isActive = selectedModule?.link === m.link;\n return (\n <button\n key={i}\n className={`as-tile${isPinned ? \" pinned\" : \"\"}${isActive ? \" active\" : \"\"}`}\n type=\"button\"\n style={{ \"--tile-bg\": m.bg || \"#F2F3F4\", \"--tile-fg\": MODULE_META[m.link]?.fg || \"#4A4C50\" } as React.CSSProperties}\n onClick={() => { setAppSwitchOpen(false); navigate(m.link); setAsSrch(\"\"); }}\n >\n <span className=\"as-tile-icon\">\n <img src={m.icon} alt=\"\" width={15} height={15} />\n </span>\n <div>\n <div className=\"as-tile-row\">\n <div className=\"as-tile-name\">{m.label}</div>\n {MODULE_META[m.link]?.isNew && <span className=\"new-pill\">NEW</span>}\n </div>\n {MODULE_META[m.link]?.meta && (\n <div className=\"as-tile-meta\">{MODULE_META[m.link].meta}</div>\n )}\n </div>\n <span\n className=\"pin\"\n onClick={(e) => togglePin(m.link, e)}\n title={isPinned ? \"Unpin\" : \"Pin\"}\n >\n {isPinned ? <IconPinFilled /> : <IconPinOutline />}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n </div>\n\n <div className=\"as-foot\">\n <span>⌘ + 1–9 to switch modules instantly</span>\n <span className=\"right\">\n <a onClick={() => setAppSwitchOpen(false)}>Customize workspace →</a>\n </span>\n </div>\n </Popover>\n </>\n );\n}\n\nexport default AppSwitcher;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-switcher-D-Bvz9uO.esm.js","sources":["../../src/components/header/components/app-switcher/app-switcher.tsx"],"sourcesContent":["import React, { useState, useCallback, useMemo, useRef } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Popover } from \"@mui/material\";\n\nimport { IModule } from \"../../types\";\nimport { MODULE_META } from \"../../constants\";\nimport { IconApps, IconPinFilled, IconPinOutline } from \"../../icons\";\n\ninterface AppSwitcherProps {\n erp_modules: IModule[];\n selectedModule: IModule | null;\n}\n\nexport function AppSwitcher({ erp_modules, selectedModule }: AppSwitcherProps) {\n const navigate = useNavigate();\n const appSwitchRef = useRef<HTMLButtonElement>(null);\n const [appSwitchOpen, setAppSwitchOpen] = useState(false);\n const [asSrch, setAsSrch] = useState(\"\");\n const [pinnedModules, setPinnedModules] = useState<string[]>(() => {\n try { return JSON.parse(localStorage.getItem(\"_pinned_modules\") || \"[]\"); }\n catch { return []; }\n });\n\n const togglePin = useCallback((link: string, e: React.MouseEvent) => {\n e.stopPropagation();\n setPinnedModules(prev => {\n const next = prev.includes(link) ? prev.filter(l => l !== link) : [...prev, link];\n localStorage.setItem(\"_pinned_modules\", JSON.stringify(next));\n return next;\n });\n }, []);\n\n const filteredModules = useMemo(() => {\n if (!asSrch.trim()) return erp_modules;\n return erp_modules.filter(m =>\n String(m.label).toLowerCase().includes(asSrch.toLowerCase())\n );\n }, [erp_modules, asSrch]);\n\n const pinnedList = useMemo(() =>\n erp_modules.filter(m => pinnedModules.includes(m.link)),\n [erp_modules, pinnedModules]\n );\n\n return (\n <>\n <button\n ref={appSwitchRef}\n className={`app-switch${appSwitchOpen ? \" open\" : \"\"}`}\n type=\"button\"\n aria-label=\"Switch module\"\n aria-haspopup=\"true\"\n aria-expanded={appSwitchOpen}\n onClick={() => setAppSwitchOpen(v => !v)}\n >\n <IconApps />\n </button>\n\n <Popover\n open={appSwitchOpen}\n anchorEl={appSwitchRef.current}\n onClose={() => { setAppSwitchOpen(false); setAsSrch(\"\"); }}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\n slotProps={{ paper: { className: \"as-pop\", elevation: 0 } }}\n marginThreshold={8}\n disableScrollLock\n >\n <div className=\"as-head\">\n <input\n className=\"as-search-input\"\n placeholder=\"Search modules, apps, recent…\"\n value={asSrch}\n onChange={(e) => setAsSrch(e.target.value)}\n autoFocus\n />\n <span className=\"as-pin\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" style={{ width: 11, height: 11 }}>\n <path d=\"M12 2v10\"/><path d=\"M5 12l7 7 7-7\"/>\n </svg>\n Pin to start\n </span>\n </div>\n\n <div className=\"as-body\">\n {pinnedList.length > 0 && (\n <div className=\"as-section\">\n <div className=\"as-section-label\">\n Pinned <span className=\"badge\">{pinnedList.length}</span>\n </div>\n <div className=\"as-grid\">\n {pinnedList.map((m, i) => (\n <button\n key={i}\n className=\"as-tile pinned\"\n type=\"button\"\n style={{ \"--tile-bg\": m.bg || \"#F2F3F4\", \"--tile-fg\": MODULE_META[m.link]?.fg || \"#4A4C50\" } as React.CSSProperties}\n onClick={() => { setAppSwitchOpen(false); navigate(m.link); setAsSrch(\"\"); }}\n >\n <span className=\"as-tile-icon\">\n <img src={m.icon} alt=\"\" width={15} height={15} />\n </span>\n <div>\n <div className=\"as-tile-row\">\n <div className=\"as-tile-name\">{m.label}</div>\n {MODULE_META[m.link]?.isNew && <span className=\"new-pill\">NEW</span>}\n </div>\n {MODULE_META[m.link]?.meta && (\n <div className=\"as-tile-meta\">{MODULE_META[m.link].meta}</div>\n )}\n </div>\n <span className=\"pin\" onClick={(e) => togglePin(m.link, e)} title=\"Unpin\">\n <IconPinFilled />\n </span>\n </button>\n ))}\n </div>\n </div>\n )}\n\n <div className=\"as-section\">\n {pinnedList.length > 0 && (\n <div className=\"as-section-label\">\n All Apps <span className=\"badge\">{filteredModules.length}</span>\n </div>\n )}\n <div className=\"as-grid\">\n {filteredModules.map((m, i) => {\n const isPinned = pinnedModules.includes(m.link);\n const isActive = selectedModule?.link === m.link;\n return (\n <button\n key={i}\n className={`as-tile${isPinned ? \" pinned\" : \"\"}${isActive ? \" active\" : \"\"}`}\n type=\"button\"\n style={{ \"--tile-bg\": m.bg || \"#F2F3F4\", \"--tile-fg\": MODULE_META[m.link]?.fg || \"#4A4C50\" } as React.CSSProperties}\n onClick={() => { setAppSwitchOpen(false); navigate(m.link); setAsSrch(\"\"); }}\n >\n <span className=\"as-tile-icon\">\n <img src={m.icon} alt=\"\" width={15} height={15} />\n </span>\n <div>\n <div className=\"as-tile-row\">\n <div className=\"as-tile-name\">{m.label}</div>\n {MODULE_META[m.link]?.isNew && <span className=\"new-pill\">NEW</span>}\n </div>\n {MODULE_META[m.link]?.meta && (\n <div className=\"as-tile-meta\">{MODULE_META[m.link].meta}</div>\n )}\n </div>\n <span\n className=\"pin\"\n onClick={(e) => togglePin(m.link, e)}\n title={isPinned ? \"Unpin\" : \"Pin\"}\n >\n {isPinned ? <IconPinFilled /> : <IconPinOutline />}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n </div>\n\n <div className=\"as-foot\">\n <span>⌘ + 1–9 to switch modules instantly</span>\n <span className=\"right\">\n <a onClick={() => setAppSwitchOpen(false)}>Customize workspace →</a>\n </span>\n </div>\n </Popover>\n </>\n );\n}\n\nexport default AppSwitcher;\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Toolbar, styled, AppBar as AppBar$1 } from "@mui/material";
|
|
3
|
-
import { H as Header } from "./header-
|
|
3
|
+
import { H as Header } from "./header-D_pPOjdz.esm.js";
|
|
4
4
|
import "./appbar-l0sNRNKZ.esm.js";
|
|
5
5
|
let drawerWidth;
|
|
6
6
|
const closedSidebarWidth = (theme) => `calc(${theme.spacing(8)} + 1px)`;
|
|
@@ -54,4 +54,4 @@ const AppBarWrapper = (props) => {
|
|
|
54
54
|
export {
|
|
55
55
|
AppBarWrapper as A
|
|
56
56
|
};
|
|
57
|
-
//# sourceMappingURL=appbar-
|
|
57
|
+
//# sourceMappingURL=appbar-BdTp1k68.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appbar-
|
|
1
|
+
{"version":3,"file":"appbar-BdTp1k68.esm.js","sources":["../../src/components/appbar/appbar.tsx"],"sourcesContent":["import { styled } from \"@mui/material\";\nimport { AppBar as MuiAppBar, AppBarProps as MuiAppBarProps } from \"@mui/material\";\nimport { Toolbar } from \"@mui/material\";\n// import MenuIcon from \"@mui/icons-material/Menu\";\nimport { IconButton } from \"@mui/material\";\n\n// import { Box, FormControl, FormControlLabel, FormLabel, Radio, RadioGroup, ThemeProvider } from '@mui/material';\n\nimport Header from \"../header/header\";\n// import ThemeSelector from \"../../utils/themeSelector\";\n\nimport \"./appbar.scss\";\nimport images from \"../../assets/images\";\n// import { Box } from \"@mui/material\";\n\nlet drawerWidth: any;\n\ninterface AppBarProps extends MuiAppBarProps {\n open?: boolean;\n}\n\n// const getTheme = (selectedTheme: any) => {\n// switch (selectedTheme) {\n// case ThemeSelector.PRIMARY:\n// return themes.redStone;\n// case ThemeSelector.SECONDARY:\n// return themes.blueNavy;\n// case ThemeSelector.TERTIARY:\n// return themes.oliveGreen;\n// default:\n// return themes.redStone;\n// }\n// };\n\n// Width of the sidebar when collapsed — must match sidebar.tsx closedMixin\nconst closedSidebarWidth = (theme: any) => `calc(${theme.spacing(8)} + 1px)`;\n\nconst AppBar = styled(MuiAppBar, {\n shouldForwardProp: (prop) => prop !== \"open\",\n})<AppBarProps>(({ theme, open }) => {\n const isRtl = document.body.dir === \"rtl\";\n const collapsedW = closedSidebarWidth(theme);\n return {\n zIndex: theme.zIndex.drawer + 2,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n // Base: always offset by collapsed sidebar so the header never hides behind it\n marginLeft: isRtl ? 0 : collapsedW,\n marginRight: isRtl ? collapsedW : 0,\n width: `calc(100% - ${collapsedW})`,\n ...(open && {\n marginLeft: isRtl ? 0 : drawerWidth,\n marginRight: isRtl ? drawerWidth : 0,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n }),\n boxShadow: \"none\",\n overflow: \"visible\",\n };\n});\n\nexport const AppBarWrapper = (props: any) => {\n drawerWidth = props.width;\n\n // const handleThemeChange = (e: any) => setSelectedTheme(e.target.value);\n\n return (\n <AppBar\n position=\"fixed\"\n open={props?.open}\n sx={(theme) => ({\n borderBottom: \"1px solid\",\n borderColor: theme.palette.theme?.secondary[200],\n backgroundColor: theme.palette.theme?.secondary[100],\n })}\n >\n {/* <FormControl>\n <FormLabel id=\"theme-radio-buttons-group-label\">Theme</FormLabel>\n <RadioGroup\n row\n value={selectedTheme}\n onChange={handleThemeChange}\n aria-labelledby=\"theme-radio-buttons-group-label\"\n name=\"row-radio-buttons-group\"\n >\n {Object.keys(ThemeSelector)?.map((variant: any, index: any) => (\n <FormControlLabel\n key={index}\n value={ThemeSelector[variant]}\n control={<Radio />}\n label={ThemeSelector[variant]}\n sx={{\n '.MuiFormControlLabel-label': {\n color: 'theme.text',\n },\n }}\n />\n ))}\n </RadioGroup>\n </FormControl> */}\n <Toolbar disableGutters sx={{ backgroundColor: 'grey.100', minHeight: '60px !important', p: 0 }}>\n <Header />\n </Toolbar>\n {/* <Header /> */}\n </AppBar>\n );\n};\n\nexport default AppBarWrapper;\n"],"names":["MuiAppBar"],"mappings":";;;;AAeA,IAAI;AAoBJ,MAAM,qBAAqB,CAAC,UAAe,QAAQ,MAAM,QAAQ,CAAC,CAAC;AAEnE,MAAM,SAAS,OAAOA,UAAW;AAAA,EAC/B,mBAAmB,CAAC,SAAS,SAAS;AACxC,CAAC,EAAe,CAAC,EAAE,OAAO,WAAW;AACnC,QAAM,QAAQ,SAAS,KAAK,QAAQ;AACpC,QAAM,aAAa,mBAAmB,KAAK;AAC3C,SAAO;AAAA,IACL,QAAQ,MAAM,OAAO,SAAS;AAAA,IAC9B,YAAY,MAAM,YAAY,OAAO,CAAC,SAAS,QAAQ,GAAG;AAAA,MACxD,QAAQ,MAAM,YAAY,OAAO;AAAA,MACjC,UAAU,MAAM,YAAY,SAAS;AAAA,IAAA,CACtC;AAAA;AAAA,IAED,YAAY,QAAQ,IAAI;AAAA,IACxB,aAAa,QAAQ,aAAa;AAAA,IAClC,OAAO,eAAe,UAAU;AAAA,IAChC,GAAI,QAAQ;AAAA,MACV,YAAY,QAAQ,IAAI;AAAA,MACxB,aAAa,QAAQ,cAAc;AAAA,MACnC,OAAO,eAAe,WAAW;AAAA,MACjC,YAAY,MAAM,YAAY,OAAO,CAAC,SAAS,QAAQ,GAAG;AAAA,QACxD,QAAQ,MAAM,YAAY,OAAO;AAAA,QACjC,UAAU,MAAM,YAAY,SAAS;AAAA,MAAA,CACtC;AAAA,IAAA;AAAA,IAEH,WAAW;AAAA,IACX,UAAU;AAAA,EAAA;AAEd,CAAC;AAEM,MAAM,gBAAgB,CAAC,UAAe;AAC3C,gBAAc,MAAM;AAIpB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,MAAM,+BAAO;AAAA,MACb,IAAI,CAAC,UAAA;;AAAW;AAAA,UACd,cAAc;AAAA,UACd,cAAa,WAAM,QAAQ,UAAd,mBAAqB,UAAU;AAAA,UAC5C,kBAAiB,WAAM,QAAQ,UAAd,mBAAqB,UAAU;AAAA,QAAG;AAAA;AAAA,MA2BrD,UAAA,oBAAC,SAAA,EAAQ,gBAAc,MAAC,IAAI,EAAE,iBAAiB,YAAY,WAAW,mBAAmB,GAAG,EAAA,GAC1F,UAAA,oBAAC,UAAO,EAAA,CACV;AAAA,IAAA;AAAA,EAAA;AAIN;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const jsxRuntime = require("react/jsx-runtime");
|
|
3
3
|
const material = require("@mui/material");
|
|
4
|
-
const header = require("./header-
|
|
4
|
+
const header = require("./header-DQ_e75rt.js");
|
|
5
5
|
require("./appbar-Dyvby5gX.js");
|
|
6
6
|
let drawerWidth;
|
|
7
7
|
const closedSidebarWidth = (theme) => `calc(${theme.spacing(8)} + 1px)`;
|
|
@@ -53,4 +53,4 @@ const AppBarWrapper = (props) => {
|
|
|
53
53
|
);
|
|
54
54
|
};
|
|
55
55
|
exports.AppBarWrapper = AppBarWrapper;
|
|
56
|
-
//# sourceMappingURL=appbar-
|
|
56
|
+
//# sourceMappingURL=appbar-DyIptRTa.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appbar-
|
|
1
|
+
{"version":3,"file":"appbar-DyIptRTa.js","sources":["../../src/components/appbar/appbar.tsx"],"sourcesContent":["import { styled } from \"@mui/material\";\nimport { AppBar as MuiAppBar, AppBarProps as MuiAppBarProps } from \"@mui/material\";\nimport { Toolbar } from \"@mui/material\";\n// import MenuIcon from \"@mui/icons-material/Menu\";\nimport { IconButton } from \"@mui/material\";\n\n// import { Box, FormControl, FormControlLabel, FormLabel, Radio, RadioGroup, ThemeProvider } from '@mui/material';\n\nimport Header from \"../header/header\";\n// import ThemeSelector from \"../../utils/themeSelector\";\n\nimport \"./appbar.scss\";\nimport images from \"../../assets/images\";\n// import { Box } from \"@mui/material\";\n\nlet drawerWidth: any;\n\ninterface AppBarProps extends MuiAppBarProps {\n open?: boolean;\n}\n\n// const getTheme = (selectedTheme: any) => {\n// switch (selectedTheme) {\n// case ThemeSelector.PRIMARY:\n// return themes.redStone;\n// case ThemeSelector.SECONDARY:\n// return themes.blueNavy;\n// case ThemeSelector.TERTIARY:\n// return themes.oliveGreen;\n// default:\n// return themes.redStone;\n// }\n// };\n\n// Width of the sidebar when collapsed — must match sidebar.tsx closedMixin\nconst closedSidebarWidth = (theme: any) => `calc(${theme.spacing(8)} + 1px)`;\n\nconst AppBar = styled(MuiAppBar, {\n shouldForwardProp: (prop) => prop !== \"open\",\n})<AppBarProps>(({ theme, open }) => {\n const isRtl = document.body.dir === \"rtl\";\n const collapsedW = closedSidebarWidth(theme);\n return {\n zIndex: theme.zIndex.drawer + 2,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n // Base: always offset by collapsed sidebar so the header never hides behind it\n marginLeft: isRtl ? 0 : collapsedW,\n marginRight: isRtl ? collapsedW : 0,\n width: `calc(100% - ${collapsedW})`,\n ...(open && {\n marginLeft: isRtl ? 0 : drawerWidth,\n marginRight: isRtl ? drawerWidth : 0,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n }),\n boxShadow: \"none\",\n overflow: \"visible\",\n };\n});\n\nexport const AppBarWrapper = (props: any) => {\n drawerWidth = props.width;\n\n // const handleThemeChange = (e: any) => setSelectedTheme(e.target.value);\n\n return (\n <AppBar\n position=\"fixed\"\n open={props?.open}\n sx={(theme) => ({\n borderBottom: \"1px solid\",\n borderColor: theme.palette.theme?.secondary[200],\n backgroundColor: theme.palette.theme?.secondary[100],\n })}\n >\n {/* <FormControl>\n <FormLabel id=\"theme-radio-buttons-group-label\">Theme</FormLabel>\n <RadioGroup\n row\n value={selectedTheme}\n onChange={handleThemeChange}\n aria-labelledby=\"theme-radio-buttons-group-label\"\n name=\"row-radio-buttons-group\"\n >\n {Object.keys(ThemeSelector)?.map((variant: any, index: any) => (\n <FormControlLabel\n key={index}\n value={ThemeSelector[variant]}\n control={<Radio />}\n label={ThemeSelector[variant]}\n sx={{\n '.MuiFormControlLabel-label': {\n color: 'theme.text',\n },\n }}\n />\n ))}\n </RadioGroup>\n </FormControl> */}\n <Toolbar disableGutters sx={{ backgroundColor: 'grey.100', minHeight: '60px !important', p: 0 }}>\n <Header />\n </Toolbar>\n {/* <Header /> */}\n </AppBar>\n );\n};\n\nexport default AppBarWrapper;\n"],"names":["styled","MuiAppBar","jsx","Toolbar","Header"],"mappings":";;;;;AAeA,IAAI;AAoBJ,MAAM,qBAAqB,CAAC,UAAe,QAAQ,MAAM,QAAQ,CAAC,CAAC;AAEnE,MAAM,SAASA,SAAAA,OAAOC,iBAAW;AAAA,EAC/B,mBAAmB,CAAC,SAAS,SAAS;AACxC,CAAC,EAAe,CAAC,EAAE,OAAO,WAAW;AACnC,QAAM,QAAQ,SAAS,KAAK,QAAQ;AACpC,QAAM,aAAa,mBAAmB,KAAK;AAC3C,SAAO;AAAA,IACL,QAAQ,MAAM,OAAO,SAAS;AAAA,IAC9B,YAAY,MAAM,YAAY,OAAO,CAAC,SAAS,QAAQ,GAAG;AAAA,MACxD,QAAQ,MAAM,YAAY,OAAO;AAAA,MACjC,UAAU,MAAM,YAAY,SAAS;AAAA,IAAA,CACtC;AAAA;AAAA,IAED,YAAY,QAAQ,IAAI;AAAA,IACxB,aAAa,QAAQ,aAAa;AAAA,IAClC,OAAO,eAAe,UAAU;AAAA,IAChC,GAAI,QAAQ;AAAA,MACV,YAAY,QAAQ,IAAI;AAAA,MACxB,aAAa,QAAQ,cAAc;AAAA,MACnC,OAAO,eAAe,WAAW;AAAA,MACjC,YAAY,MAAM,YAAY,OAAO,CAAC,SAAS,QAAQ,GAAG;AAAA,QACxD,QAAQ,MAAM,YAAY,OAAO;AAAA,QACjC,UAAU,MAAM,YAAY,SAAS;AAAA,MAAA,CACtC;AAAA,IAAA;AAAA,IAEH,WAAW;AAAA,IACX,UAAU;AAAA,EAAA;AAEd,CAAC;AAEM,MAAM,gBAAgB,CAAC,UAAe;AAC3C,gBAAc,MAAM;AAIpB,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,MAAM,+BAAO;AAAA,MACb,IAAI,CAAC,UAAA;;AAAW;AAAA,UACd,cAAc;AAAA,UACd,cAAa,WAAM,QAAQ,UAAd,mBAAqB,UAAU;AAAA,UAC5C,kBAAiB,WAAM,QAAQ,UAAd,mBAAqB,UAAU;AAAA,QAAG;AAAA;AAAA,MA2BrD,UAAAA,2BAAAA,IAACC,kBAAA,EAAQ,gBAAc,MAAC,IAAI,EAAE,iBAAiB,YAAY,WAAW,mBAAmB,GAAG,EAAA,GAC1F,UAAAD,+BAACE,OAAAA,UAAO,EAAA,CACV;AAAA,IAAA;AAAA,EAAA;AAIN;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const React = require("react");
|
|
3
3
|
const utils_formBuilderDeconversion = require("../utils/form-builder-deconversion/index.js");
|
|
4
|
-
const pathname_rental = require("./pathname.rental-
|
|
4
|
+
const pathname_rental = require("./pathname.rental-DgH4LoG7.js");
|
|
5
5
|
const pathname_hrms = require("./pathname.hrms-CbKA0UGK.js");
|
|
6
6
|
const MODULE_PATHS = {
|
|
7
7
|
accounting: pathname_rental.PathnameAccounting.FORMS,
|
|
@@ -286,4 +286,4 @@ exports.processMembers = processMembers;
|
|
|
286
286
|
exports.processTableColumns = processTableColumns;
|
|
287
287
|
exports.useFormDataEffect = useFormDataEffect;
|
|
288
288
|
exports.useFormDataProcessor = useFormDataProcessor;
|
|
289
|
-
//# sourceMappingURL=common-
|
|
289
|
+
//# sourceMappingURL=common-CS5L0Ld_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-PH2uWkqL.js","sources":["../../src/views/form-builder/utils/common.ts"],"sourcesContent":["// React imports\nimport { useEffect, useMemo } from \"react\";\n\n// ERP Common imports\nimport formBuilderDeConversion from \"@/utils/form-builder-deconversion\";\n\n// Module pathname imports\nimport { PathnameAccounting } from \"../../../constants/pathnames/pathname.accounting\";\nimport { PathnameCrm } from \"../../../constants/pathnames/pathname.crm\";\nimport { PathnameInventory } from \"../../../constants/pathnames/pathname.inventory\";\nimport { PathnameManufacturing } from \"../../../constants/pathnames/pathname.manufacturing\";\nimport { PathnamePurchase } from \"../../../constants/pathnames/pathname.procurement\";\nimport { PathnameRental } from \"../../../constants/pathnames/pathname.rental\";\nimport { PathnameUsers } from \"../../../constants/pathnames/pathname.user\";\nimport { PathnameHrms } from \"../../../constants/pathnames/pathname.hrms\";\n\n// Types for better type safety\nexport interface TableColumn {\n header: string;\n accessorKey: string;\n visible: boolean;\n}\n\nexport interface FormMember {\n field_type: string;\n table?: string;\n table_columns?: TableColumn[];\n [key: string]: any;\n}\n\nexport interface FormSection {\n field_type: string;\n label: string;\n is_accordion: boolean;\n id: string;\n remove_section: boolean;\n form_switcher_label?: string;\n form_switcher_name?: string;\n is_section_field?: boolean;\n section_type?: string;\n switcher_forms?: any;\n members: FormMember[];\n}\n\nexport interface TabData {\n tab_order: number;\n data: FormSection[];\n}\n\nexport interface ProcessedData {\n tab?: TabData[];\n section?: FormSection[];\n tabsData?: TabData[];\n}\n\n// Constants for module paths\nconst MODULE_PATHS = {\n accounting: PathnameAccounting.FORMS,\n inventory: PathnameInventory.FORMS,\n manufacturing: PathnameManufacturing.FORMS,\n procurement: PathnamePurchase.FORMS,\n crm: PathnameCrm.FORMS,\n rental: PathnameRental.FORMS,\n user: PathnameUsers.FORMS,\n hrms: PathnameHrms.FORMS,\n} as const;\n\nexport type ModuleType = keyof typeof MODULE_PATHS;\n\n// Helper function to format text (converts snake_case to Title Case)\nexport const formatText = (text: string): string => {\n return text ? text\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ') : '';\n};\n\n// Helper function to get redirection path\nconst getRedirectionPath = (currentModule: string): string => {\n if (!isValidModule(currentModule)) {\n throw new Error(`Invalid module: ${currentModule}`);\n }\n return MODULE_PATHS[currentModule as ModuleType];\n};\n\n// Type guard for module validation\nconst isValidModule = (module: string): module is ModuleType => {\n return module in MODULE_PATHS;\n};\n\n// Helper function to create default table columns\nexport const createDefaultTableColumns = (): TableColumn[] => [\n { header: \"Column 1\", accessorKey: \"column_1\", visible: true },\n { header: \"Column 2\", accessorKey: \"column_2\", visible: true },\n];\n\n// Helper function to process table columns\nexport const processTableColumns = (\n member: FormMember,\n formBuilder: any\n): TableColumn[] => {\n // Return existing columns if they exist\n if (member.table_columns?.length) {\n return member.table_columns;\n }\n\n // Check if table exists and has fields\n if (!member.table || !formBuilder.fields?.[member.table]) {\n return createDefaultTableColumns();\n }\n\n const fields = formBuilder.fields[member.table];\n if (!Array.isArray(fields) || fields.length === 0) {\n return createDefaultTableColumns();\n }\n\n return fields.map((field: any, index: number) => ({\n header: formatText(field.field),\n accessorKey: field.field,\n visible: index <= 3, // Show first 4 columns by default\n }));\n};\n\n// Helper function to process members\nexport const processMembers = (\n sections: FormSection[],\n formBuilder: any\n): FormMember[] => {\n return sections.flatMap((section) =>\n section.members.map((member) => {\n if (member.field_type === \"table\") {\n return {\n ...member,\n table_columns: processTableColumns(member, formBuilder),\n };\n }\n return { ...member };\n })\n );\n};\n\n// Helper function to extract sections data\nexport const extractSections = (sections: FormSection[]): Omit<FormSection, 'members'>[] => {\n return sections.map(({\n field_type,\n label,\n is_accordion,\n id,\n remove_section,\n form_switcher_label,\n form_switcher_name,\n is_section_field,\n section_type,\n switcher_forms,\n }) => ({\n field_type,\n label,\n is_accordion,\n id,\n remove_section,\n form_switcher_label,\n form_switcher_name,\n is_section_field,\n section_type,\n switcher_forms,\n }));\n};\n\n// Main processing function\nconst processData = (\n data: ProcessedData,\n activeTabId: number = 0,\n formBuilder: any,\n tabsData: TabData[] | null,\n // Callback functions\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { removeSection, remove, setTabsData, append, appendSection } = callbacks;\n\n try {\n // Clear existing data\n removeSection();\n remove();\n\n if (data.tab) {\n processTabData(data.tab, activeTabId, formBuilder, callbacks);\n } else if (data.section) {\n processSectionData(data.section, formBuilder, callbacks);\n } else if (data.tabsData && tabsData) {\n processExistingTabsData(tabsData, activeTabId, callbacks);\n } else {\n throw new Error(\"Invalid data format: Missing required properties (tab, section, or tabsData)\");\n }\n } catch (error) {\n console.error(\"Error processing data:\", error);\n // You might want to show a user-friendly error message instead of alert\n alert(error instanceof Error ? error.message : \"An error occurred while processing data\");\n }\n};\n\n// Process tab data\nconst processTabData = (\n tabs: TabData[],\n activeTabId: number,\n formBuilder: any,\n callbacks: {\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { setTabsData, append, appendSection } = callbacks;\n\n setTabsData(tabs);\n\n const activeTab = tabs.find(tab => tab.tab_order === activeTabId + 1);\n if (!activeTab?.data) {\n console.warn(`No active tab found for tab order: ${activeTabId + 1}`);\n return;\n }\n\n const sections = extractSections(activeTab.data);\n const members = processMembers(activeTab.data, formBuilder);\n\n append(members);\n appendSection(sections);\n};\n\n// Process section data\nconst processSectionData = (\n sections: FormSection[],\n formBuilder: any,\n callbacks: {\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { append, appendSection } = callbacks;\n\n const extractedSections = extractSections(sections);\n const members = processMembers(sections, formBuilder);\n\n append(members);\n appendSection(extractedSections);\n};\n\n// Process existing tabs data\nconst processExistingTabsData = (\n tabsData: TabData[],\n activeTabId: number,\n callbacks: {\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { append, appendSection } = callbacks;\n\n const activeTab = tabsData.find(tab => tab.tab_order === activeTabId + 1);\n if (!activeTab?.data) {\n console.warn(`No active tab found for tab order: ${activeTabId + 1}`);\n return;\n }\n\n const sections = extractSections(activeTab.data);\n const members = activeTab.data.flatMap(section =>\n section.members.map(member => ({ ...member }))\n );\n\n if (members.length > 0) append(members);\n if (sections.length > 0) appendSection(sections);\n};\n\n// Custom hook for form data processing\nexport const useFormDataProcessor = (\n formBuilder: any,\n tabsData: TabData[],\n activeTabValue: number,\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n) => {\n const { removeSection, remove, append } = callbacks;\n\n // Memoize the serialized form data to avoid unnecessary re-renders\n const serializedFormData = useMemo(() =>\n JSON.stringify(formBuilder?.formData),\n [formBuilder?.formData]\n );\n\n // Memoize the initial data processing\n const initialData = useMemo(() => {\n if (!formBuilder?.formData?.length) return null;\n\n try {\n return formBuilderDeConversion(formBuilder.formData);\n } catch (error) {\n console.error('Error processing form data:', error);\n return null;\n }\n }, [serializedFormData]);\n\n useEffect(() => {\n // Handle case when there's no initial data\n if (!initialData) {\n removeSection();\n remove();\n append([]);\n return;\n }\n\n // Determine processing strategy based on available data\n try {\n if (tabsData.length > 0) {\n // Process existing tabs data\n processData(\n { tabsData: tabsData },\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.tab) {\n // Process new tab data\n processData(\n initialData,\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.section) {\n // Process section data\n processData(\n initialData,\n 0, // No active tab for section-only data\n formBuilder,\n tabsData,\n callbacks\n );\n } else {\n console.warn('No valid data structure found in initialData');\n removeSection();\n remove();\n append([]);\n }\n } catch (error) {\n console.error('Error in form data processing:', error);\n // Reset to clean state on error\n removeSection();\n remove();\n append([]);\n }\n }, [activeTabValue, serializedFormData, tabsData.length, initialData, callbacks, formBuilder]);\n\n return { initialData };\n};\n\n// Alternative: Direct useEffect implementation (if you prefer not to use custom hook)\nexport const useFormDataEffect = (\n formBuilder: any,\n tabsData: TabData[],\n activeTabValue: number = 0,\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n) => {\n const { removeSection, remove, append } = callbacks;\n\n useEffect(() => {\n let initialData: ProcessedData | null = null;\n\n // Process initial data\n if (formBuilder?.formData?.length) {\n try {\n initialData = formBuilderDeConversion(formBuilder.formData);\n } catch (error) {\n console.error('Error converting form data:', error);\n }\n }\n\n // Handle empty initial data\n if (!initialData) {\n removeSection();\n remove();\n append([]);\n return;\n }\n\n // Process data based on available structure\n try {\n if (tabsData.length > 0) {\n processData(\n { tabsData: tabsData },\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.tab) {\n processData(\n initialData,\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.section) {\n processData(\n initialData,\n 0,\n formBuilder,\n tabsData,\n callbacks\n );\n } else {\n console.warn('Invalid data structure in initialData');\n removeSection();\n remove();\n append([]);\n }\n } catch (error) {\n console.error('Error processing form data:', error);\n // Reset to clean state on error\n removeSection();\n remove();\n append([]);\n }\n }, [activeTabValue, JSON.stringify(formBuilder?.formData), tabsData.length]);\n};\n\n// Usage example:\n/*\n// Option 1: Using custom hook\nconst { initialData } = useFormDataProcessor(\n formBuilder,\n tabsData,\n activeTabValue,\n {\n removeSection,\n remove,\n setTabsData,\n append,\n appendSection\n }\n);\n\n// Option 2: Using direct useEffect\nuseFormDataEffect(\n formBuilder,\n tabsData,\n activeTabValue,\n {\n removeSection,\n remove,\n setTabsData,\n append,\n appendSection\n }\n);\n*/\n\n// Path generation utility (separate from the effect)\nexport const generateModulePath = (currentModule: string): string => {\n try {\n const redirectionPath = getRedirectionPath(currentModule);\n return `/dashboard/${currentModule}${redirectionPath}`;\n } catch (error) {\n console.error('Error generating module path:', error);\n throw error;\n }\n};\n\nexport const generateCustomFormPath = (currentModule,redirectionPath): any => {\n try {\n return `/dashboard/${currentModule}${redirectionPath}`;\n } catch (error) {\n console.error('Error generating module path:', error);\n throw error;\n }\n};"],"names":["PathnameAccounting","PathnameInventory","PathnameManufacturing","PathnamePurchase","PathnameCrm","PathnameRental","PathnameUsers","PathnameHrms","module","useMemo","formBuilderDeConversion","useEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common-CS5L0Ld_.js","sources":["../../src/views/form-builder/utils/common.ts"],"sourcesContent":["// React imports\nimport { useEffect, useMemo } from \"react\";\n\n// ERP Common imports\nimport formBuilderDeConversion from \"@/utils/form-builder-deconversion\";\n\n// Module pathname imports\nimport { PathnameAccounting } from \"../../../constants/pathnames/pathname.accounting\";\nimport { PathnameCrm } from \"../../../constants/pathnames/pathname.crm\";\nimport { PathnameInventory } from \"../../../constants/pathnames/pathname.inventory\";\nimport { PathnameManufacturing } from \"../../../constants/pathnames/pathname.manufacturing\";\nimport { PathnamePurchase } from \"../../../constants/pathnames/pathname.procurement\";\nimport { PathnameRental } from \"../../../constants/pathnames/pathname.rental\";\nimport { PathnameUsers } from \"../../../constants/pathnames/pathname.user\";\nimport { PathnameHrms } from \"../../../constants/pathnames/pathname.hrms\";\n\n// Types for better type safety\nexport interface TableColumn {\n header: string;\n accessorKey: string;\n visible: boolean;\n}\n\nexport interface FormMember {\n field_type: string;\n table?: string;\n table_columns?: TableColumn[];\n [key: string]: any;\n}\n\nexport interface FormSection {\n field_type: string;\n label: string;\n is_accordion: boolean;\n id: string;\n remove_section: boolean;\n form_switcher_label?: string;\n form_switcher_name?: string;\n is_section_field?: boolean;\n section_type?: string;\n switcher_forms?: any;\n members: FormMember[];\n}\n\nexport interface TabData {\n tab_order: number;\n data: FormSection[];\n}\n\nexport interface ProcessedData {\n tab?: TabData[];\n section?: FormSection[];\n tabsData?: TabData[];\n}\n\n// Constants for module paths\nconst MODULE_PATHS = {\n accounting: PathnameAccounting.FORMS,\n inventory: PathnameInventory.FORMS,\n manufacturing: PathnameManufacturing.FORMS,\n procurement: PathnamePurchase.FORMS,\n crm: PathnameCrm.FORMS,\n rental: PathnameRental.FORMS,\n user: PathnameUsers.FORMS,\n hrms: PathnameHrms.FORMS,\n} as const;\n\nexport type ModuleType = keyof typeof MODULE_PATHS;\n\n// Helper function to format text (converts snake_case to Title Case)\nexport const formatText = (text: string): string => {\n return text ? text\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ') : '';\n};\n\n// Helper function to get redirection path\nconst getRedirectionPath = (currentModule: string): string => {\n if (!isValidModule(currentModule)) {\n throw new Error(`Invalid module: ${currentModule}`);\n }\n return MODULE_PATHS[currentModule as ModuleType];\n};\n\n// Type guard for module validation\nconst isValidModule = (module: string): module is ModuleType => {\n return module in MODULE_PATHS;\n};\n\n// Helper function to create default table columns\nexport const createDefaultTableColumns = (): TableColumn[] => [\n { header: \"Column 1\", accessorKey: \"column_1\", visible: true },\n { header: \"Column 2\", accessorKey: \"column_2\", visible: true },\n];\n\n// Helper function to process table columns\nexport const processTableColumns = (\n member: FormMember,\n formBuilder: any\n): TableColumn[] => {\n // Return existing columns if they exist\n if (member.table_columns?.length) {\n return member.table_columns;\n }\n\n // Check if table exists and has fields\n if (!member.table || !formBuilder.fields?.[member.table]) {\n return createDefaultTableColumns();\n }\n\n const fields = formBuilder.fields[member.table];\n if (!Array.isArray(fields) || fields.length === 0) {\n return createDefaultTableColumns();\n }\n\n return fields.map((field: any, index: number) => ({\n header: formatText(field.field),\n accessorKey: field.field,\n visible: index <= 3, // Show first 4 columns by default\n }));\n};\n\n// Helper function to process members\nexport const processMembers = (\n sections: FormSection[],\n formBuilder: any\n): FormMember[] => {\n return sections.flatMap((section) =>\n section.members.map((member) => {\n if (member.field_type === \"table\") {\n return {\n ...member,\n table_columns: processTableColumns(member, formBuilder),\n };\n }\n return { ...member };\n })\n );\n};\n\n// Helper function to extract sections data\nexport const extractSections = (sections: FormSection[]): Omit<FormSection, 'members'>[] => {\n return sections.map(({\n field_type,\n label,\n is_accordion,\n id,\n remove_section,\n form_switcher_label,\n form_switcher_name,\n is_section_field,\n section_type,\n switcher_forms,\n }) => ({\n field_type,\n label,\n is_accordion,\n id,\n remove_section,\n form_switcher_label,\n form_switcher_name,\n is_section_field,\n section_type,\n switcher_forms,\n }));\n};\n\n// Main processing function\nconst processData = (\n data: ProcessedData,\n activeTabId: number = 0,\n formBuilder: any,\n tabsData: TabData[] | null,\n // Callback functions\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { removeSection, remove, setTabsData, append, appendSection } = callbacks;\n\n try {\n // Clear existing data\n removeSection();\n remove();\n\n if (data.tab) {\n processTabData(data.tab, activeTabId, formBuilder, callbacks);\n } else if (data.section) {\n processSectionData(data.section, formBuilder, callbacks);\n } else if (data.tabsData && tabsData) {\n processExistingTabsData(tabsData, activeTabId, callbacks);\n } else {\n throw new Error(\"Invalid data format: Missing required properties (tab, section, or tabsData)\");\n }\n } catch (error) {\n console.error(\"Error processing data:\", error);\n // You might want to show a user-friendly error message instead of alert\n alert(error instanceof Error ? error.message : \"An error occurred while processing data\");\n }\n};\n\n// Process tab data\nconst processTabData = (\n tabs: TabData[],\n activeTabId: number,\n formBuilder: any,\n callbacks: {\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { setTabsData, append, appendSection } = callbacks;\n\n setTabsData(tabs);\n\n const activeTab = tabs.find(tab => tab.tab_order === activeTabId + 1);\n if (!activeTab?.data) {\n console.warn(`No active tab found for tab order: ${activeTabId + 1}`);\n return;\n }\n\n const sections = extractSections(activeTab.data);\n const members = processMembers(activeTab.data, formBuilder);\n\n append(members);\n appendSection(sections);\n};\n\n// Process section data\nconst processSectionData = (\n sections: FormSection[],\n formBuilder: any,\n callbacks: {\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { append, appendSection } = callbacks;\n\n const extractedSections = extractSections(sections);\n const members = processMembers(sections, formBuilder);\n\n append(members);\n appendSection(extractedSections);\n};\n\n// Process existing tabs data\nconst processExistingTabsData = (\n tabsData: TabData[],\n activeTabId: number,\n callbacks: {\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { append, appendSection } = callbacks;\n\n const activeTab = tabsData.find(tab => tab.tab_order === activeTabId + 1);\n if (!activeTab?.data) {\n console.warn(`No active tab found for tab order: ${activeTabId + 1}`);\n return;\n }\n\n const sections = extractSections(activeTab.data);\n const members = activeTab.data.flatMap(section =>\n section.members.map(member => ({ ...member }))\n );\n\n if (members.length > 0) append(members);\n if (sections.length > 0) appendSection(sections);\n};\n\n// Custom hook for form data processing\nexport const useFormDataProcessor = (\n formBuilder: any,\n tabsData: TabData[],\n activeTabValue: number,\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n) => {\n const { removeSection, remove, append } = callbacks;\n\n // Memoize the serialized form data to avoid unnecessary re-renders\n const serializedFormData = useMemo(() =>\n JSON.stringify(formBuilder?.formData),\n [formBuilder?.formData]\n );\n\n // Memoize the initial data processing\n const initialData = useMemo(() => {\n if (!formBuilder?.formData?.length) return null;\n\n try {\n return formBuilderDeConversion(formBuilder.formData);\n } catch (error) {\n console.error('Error processing form data:', error);\n return null;\n }\n }, [serializedFormData]);\n\n useEffect(() => {\n // Handle case when there's no initial data\n if (!initialData) {\n removeSection();\n remove();\n append([]);\n return;\n }\n\n // Determine processing strategy based on available data\n try {\n if (tabsData.length > 0) {\n // Process existing tabs data\n processData(\n { tabsData: tabsData },\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.tab) {\n // Process new tab data\n processData(\n initialData,\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.section) {\n // Process section data\n processData(\n initialData,\n 0, // No active tab for section-only data\n formBuilder,\n tabsData,\n callbacks\n );\n } else {\n console.warn('No valid data structure found in initialData');\n removeSection();\n remove();\n append([]);\n }\n } catch (error) {\n console.error('Error in form data processing:', error);\n // Reset to clean state on error\n removeSection();\n remove();\n append([]);\n }\n }, [activeTabValue, serializedFormData, tabsData.length, initialData, callbacks, formBuilder]);\n\n return { initialData };\n};\n\n// Alternative: Direct useEffect implementation (if you prefer not to use custom hook)\nexport const useFormDataEffect = (\n formBuilder: any,\n tabsData: TabData[],\n activeTabValue: number = 0,\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n) => {\n const { removeSection, remove, append } = callbacks;\n\n useEffect(() => {\n let initialData: ProcessedData | null = null;\n\n // Process initial data\n if (formBuilder?.formData?.length) {\n try {\n initialData = formBuilderDeConversion(formBuilder.formData);\n } catch (error) {\n console.error('Error converting form data:', error);\n }\n }\n\n // Handle empty initial data\n if (!initialData) {\n removeSection();\n remove();\n append([]);\n return;\n }\n\n // Process data based on available structure\n try {\n if (tabsData.length > 0) {\n processData(\n { tabsData: tabsData },\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.tab) {\n processData(\n initialData,\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.section) {\n processData(\n initialData,\n 0,\n formBuilder,\n tabsData,\n callbacks\n );\n } else {\n console.warn('Invalid data structure in initialData');\n removeSection();\n remove();\n append([]);\n }\n } catch (error) {\n console.error('Error processing form data:', error);\n // Reset to clean state on error\n removeSection();\n remove();\n append([]);\n }\n }, [activeTabValue, JSON.stringify(formBuilder?.formData), tabsData.length]);\n};\n\n// Usage example:\n/*\n// Option 1: Using custom hook\nconst { initialData } = useFormDataProcessor(\n formBuilder,\n tabsData,\n activeTabValue,\n {\n removeSection,\n remove,\n setTabsData,\n append,\n appendSection\n }\n);\n\n// Option 2: Using direct useEffect\nuseFormDataEffect(\n formBuilder,\n tabsData,\n activeTabValue,\n {\n removeSection,\n remove,\n setTabsData,\n append,\n appendSection\n }\n);\n*/\n\n// Path generation utility (separate from the effect)\nexport const generateModulePath = (currentModule: string): string => {\n try {\n const redirectionPath = getRedirectionPath(currentModule);\n return `/dashboard/${currentModule}${redirectionPath}`;\n } catch (error) {\n console.error('Error generating module path:', error);\n throw error;\n }\n};\n\nexport const generateCustomFormPath = (currentModule,redirectionPath): any => {\n try {\n return `/dashboard/${currentModule}${redirectionPath}`;\n } catch (error) {\n console.error('Error generating module path:', error);\n throw error;\n }\n};"],"names":["PathnameAccounting","PathnameInventory","PathnameManufacturing","PathnamePurchase","PathnameCrm","PathnameRental","PathnameUsers","PathnameHrms","module","useMemo","formBuilderDeConversion","useEffect"],"mappings":";;;;;AAwDA,MAAM,eAAe;AAAA,EACnB,YAAYA,gBAAAA,mBAAmB;AAAA,EAC/B,WAAWC,gBAAAA,kBAAkB;AAAA,EAC7B,eAAeC,gBAAAA,sBAAsB;AAAA,EACrC,aAAaC,gBAAAA,iBAAiB;AAAA,EAC9B,KAAKC,gBAAAA,YAAY;AAAA,EACjB,QAAQC,gBAAAA,eAAe;AAAA,EACvB,MAAMC,cAAAA,cAAc;AAAA,EACpB,MAAMC,cAAAA,aAAa;AACrB;AAKO,MAAM,aAAa,CAAC,SAAyB;AAClD,SAAO,OAAO,KACX,MAAM,GAAG,EACT,IAAI,CAAA,SAAQ,KAAK,OAAO,CAAC,EAAE,gBAAgB,KAAK,MAAM,CAAC,EAAE,aAAa,EACtE,KAAK,GAAG,IAAI;AACjB;AAGA,MAAM,qBAAqB,CAAC,kBAAkC;AAC5D,MAAI,CAAC,cAAc,aAAa,GAAG;AACjC,UAAM,IAAI,MAAM,mBAAmB,aAAa,EAAE;AAAA,EACpD;AACA,SAAO,aAAa,aAA2B;AACjD;AAGA,MAAM,gBAAgB,CAACC,YAAyC;AAC9D,SAAOA,WAAU;AACnB;AAGO,MAAM,4BAA4B,MAAqB;AAAA,EAC5D,EAAE,QAAQ,YAAY,aAAa,YAAY,SAAS,KAAA;AAAA,EACxD,EAAE,QAAQ,YAAY,aAAa,YAAY,SAAS,KAAA;AAC1D;AAGO,MAAM,sBAAsB,CACjC,QACA,gBACkB;;AAElB,OAAI,YAAO,kBAAP,mBAAsB,QAAQ;AAChC,WAAO,OAAO;AAAA,EAChB;AAGA,MAAI,CAAC,OAAO,SAAS,GAAC,iBAAY,WAAZ,mBAAqB,OAAO,SAAQ;AACxD,WAAO,0BAAA;AAAA,EACT;AAEA,QAAM,SAAS,YAAY,OAAO,OAAO,KAAK;AAC9C,MAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,GAAG;AACjD,WAAO,0BAAA;AAAA,EACT;AAEA,SAAO,OAAO,IAAI,CAAC,OAAY,WAAmB;AAAA,IAChD,QAAQ,WAAW,MAAM,KAAK;AAAA,IAC9B,aAAa,MAAM;AAAA,IACnB,SAAS,SAAS;AAAA;AAAA,EAAA,EAClB;AACJ;AAGO,MAAM,iBAAiB,CAC5B,UACA,gBACiB;AACjB,SAAO,SAAS;AAAA,IAAQ,CAAC,YACvB,QAAQ,QAAQ,IAAI,CAAC,WAAW;AAC9B,UAAI,OAAO,eAAe,SAAS;AACjC,eAAO;AAAA,UACL,GAAG;AAAA,UACH,eAAe,oBAAoB,QAAQ,WAAW;AAAA,QAAA;AAAA,MAE1D;AACA,aAAO,EAAE,GAAG,OAAA;AAAA,IACd,CAAC;AAAA,EAAA;AAEL;AAGO,MAAM,kBAAkB,CAAC,aAA4D;AAC1F,SAAO,SAAS,IAAI,CAAC;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,OACK;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA;AACJ;AAGA,MAAM,cAAc,CAClB,MACA,cAAsB,GACtB,aACA,UAEA,cAOS;AACT,QAAM,EAAE,eAAe,QAAQ,aAAa,QAAQ,kBAAkB;AAEtE,MAAI;AAEF,kBAAA;AACA,WAAA;AAEA,QAAI,KAAK,KAAK;AACZ,qBAAe,KAAK,KAAK,aAAa,aAAa,SAAS;AAAA,IAC9D,WAAW,KAAK,SAAS;AACvB,yBAAmB,KAAK,SAAS,aAAa,SAAS;AAAA,IACzD,WAAW,KAAK,YAAY,UAAU;AACpC,8BAAwB,UAAU,aAAa,SAAS;AAAA,IAC1D,OAAO;AACL,YAAM,IAAI,MAAM,8EAA8E;AAAA,IAChG;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,0BAA0B,KAAK;AAE7C,UAAM,iBAAiB,QAAQ,MAAM,UAAU,yCAAyC;AAAA,EAC1F;AACF;AAGA,MAAM,iBAAiB,CACrB,MACA,aACA,aACA,cAKS;AACT,QAAM,EAAE,aAAa,QAAQ,cAAA,IAAkB;AAE/C,cAAY,IAAI;AAEhB,QAAM,YAAY,KAAK,KAAK,SAAO,IAAI,cAAc,cAAc,CAAC;AACpE,MAAI,EAAC,uCAAW,OAAM;AACpB,YAAQ,KAAK,sCAAsC,cAAc,CAAC,EAAE;AACpE;AAAA,EACF;AAEA,QAAM,WAAW,gBAAgB,UAAU,IAAI;AAC/C,QAAM,UAAU,eAAe,UAAU,MAAM,WAAW;AAE1D,SAAO,OAAO;AACd,gBAAc,QAAQ;AACxB;AAGA,MAAM,qBAAqB,CACzB,UACA,aACA,cAIS;AACT,QAAM,EAAE,QAAQ,cAAA,IAAkB;AAElC,QAAM,oBAAoB,gBAAgB,QAAQ;AAClD,QAAM,UAAU,eAAe,UAAU,WAAW;AAEpD,SAAO,OAAO;AACd,gBAAc,iBAAiB;AACjC;AAGA,MAAM,0BAA0B,CAC9B,UACA,aACA,cAIS;AACT,QAAM,EAAE,QAAQ,cAAA,IAAkB;AAElC,QAAM,YAAY,SAAS,KAAK,SAAO,IAAI,cAAc,cAAc,CAAC;AACxE,MAAI,EAAC,uCAAW,OAAM;AACpB,YAAQ,KAAK,sCAAsC,cAAc,CAAC,EAAE;AACpE;AAAA,EACF;AAEA,QAAM,WAAW,gBAAgB,UAAU,IAAI;AAC/C,QAAM,UAAU,UAAU,KAAK;AAAA,IAAQ,CAAA,YACrC,QAAQ,QAAQ,IAAI,aAAW,EAAE,GAAG,SAAS;AAAA,EAAA;AAG/C,MAAI,QAAQ,SAAS,EAAG,QAAO,OAAO;AACtC,MAAI,SAAS,SAAS,EAAG,eAAc,QAAQ;AACjD;AAGO,MAAM,uBAAuB,CAClC,aACA,UACA,gBACA,cAOG;AACH,QAAM,EAAE,eAAe,QAAQ,OAAA,IAAW;AAG1C,QAAM,qBAAqBC,MAAAA;AAAAA,IAAQ,MACjC,KAAK,UAAU,2CAAa,QAAQ;AAAA,IACpC,CAAC,2CAAa,QAAQ;AAAA,EAAA;AAIxB,QAAM,cAAcA,MAAAA,QAAQ,MAAM;;AAChC,QAAI,GAAC,gDAAa,aAAb,mBAAuB,QAAQ,QAAO;AAE3C,QAAI;AACF,aAAOC,8BAAAA,QAAwB,YAAY,QAAQ;AAAA,IACrD,SAAS,OAAO;AACd,cAAQ,MAAM,+BAA+B,KAAK;AAClD,aAAO;AAAA,IACT;AAAA,EACF,GAAG,CAAC,kBAAkB,CAAC;AAEvBC,QAAAA,UAAU,MAAM;AAEd,QAAI,CAAC,aAAa;AAChB,oBAAA;AACA,aAAA;AACA,aAAO,CAAA,CAAE;AACT;AAAA,IACF;AAGA,QAAI;AACF,UAAI,SAAS,SAAS,GAAG;AAEvB;AAAA,UACE,EAAE,SAAA;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,WAAW,YAAY,KAAK;AAE1B;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,WAAW,YAAY,SAAS;AAE9B;AAAA,UACE;AAAA,UACA;AAAA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,OAAO;AACL,gBAAQ,KAAK,8CAA8C;AAC3D,sBAAA;AACA,eAAA;AACA,eAAO,CAAA,CAAE;AAAA,MACX;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,kCAAkC,KAAK;AAErD,oBAAA;AACA,aAAA;AACA,aAAO,CAAA,CAAE;AAAA,IACX;AAAA,EACF,GAAG,CAAC,gBAAgB,oBAAoB,SAAS,QAAQ,aAAa,WAAW,WAAW,CAAC;AAE7F,SAAO,EAAE,YAAA;AACX;AAGO,MAAM,oBAAoB,CAC/B,aACA,UACA,iBAAyB,GACzB,cAOG;AACH,QAAM,EAAE,eAAe,QAAQ,OAAA,IAAW;AAE1CA,QAAAA,UAAU,MAAM;;AACd,QAAI,cAAoC;AAGxC,SAAI,gDAAa,aAAb,mBAAuB,QAAQ;AACjC,UAAI;AACF,sBAAcD,8BAAAA,QAAwB,YAAY,QAAQ;AAAA,MAC5D,SAAS,OAAO;AACd,gBAAQ,MAAM,+BAA+B,KAAK;AAAA,MACpD;AAAA,IACF;AAGA,QAAI,CAAC,aAAa;AAChB,oBAAA;AACA,aAAA;AACA,aAAO,CAAA,CAAE;AACT;AAAA,IACF;AAGA,QAAI;AACF,UAAI,SAAS,SAAS,GAAG;AACvB;AAAA,UACE,EAAE,SAAA;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,WAAW,YAAY,KAAK;AAC1B;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,WAAW,YAAY,SAAS;AAC9B;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,OAAO;AACL,gBAAQ,KAAK,uCAAuC;AACpD,sBAAA;AACA,eAAA;AACA,eAAO,CAAA,CAAE;AAAA,MACX;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,+BAA+B,KAAK;AAElD,oBAAA;AACA,aAAA;AACA,aAAO,CAAA,CAAE;AAAA,IACX;AAAA,EACF,GAAG,CAAC,gBAAgB,KAAK,UAAU,2CAAa,QAAQ,GAAG,SAAS,MAAM,CAAC;AAC7E;AAkCO,MAAM,qBAAqB,CAAC,kBAAkC;AACnE,MAAI;AACF,UAAM,kBAAkB,mBAAmB,aAAa;AACxD,WAAO,cAAc,aAAa,GAAG,eAAe;AAAA,EACtD,SAAS,OAAO;AACd,YAAQ,MAAM,iCAAiC,KAAK;AACpD,UAAM;AAAA,EACR;AACF;AAEO,MAAM,yBAAyB,CAAC,eAAc,oBAAyB;AAC5E,MAAI;AACF,WAAO,cAAc,aAAa,GAAG,eAAe;AAAA,EACtD,SAAS,OAAO;AACd,YAAQ,MAAM,iCAAiC,KAAK;AACpD,UAAM;AAAA,EACR;AACF;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useEffect, useMemo } from "react";
|
|
2
2
|
import formBuilderDeConversion from "../utils/form-builder-deconversion/index.esm.js";
|
|
3
|
-
import { e as PathnameRental, a as PathnameCrm, d as PathnamePurchase, c as PathnameManufacturing, b as PathnameInventory, P as PathnameAccounting } from "./pathname.rental-
|
|
3
|
+
import { e as PathnameRental, a as PathnameCrm, d as PathnamePurchase, c as PathnameManufacturing, b as PathnameInventory, P as PathnameAccounting } from "./pathname.rental-qsAe3XFd.esm.js";
|
|
4
4
|
import { P as PathnameHrms, a as PathnameUsers } from "./pathname.hrms-Jflm4teT.esm.js";
|
|
5
5
|
const MODULE_PATHS = {
|
|
6
6
|
accounting: PathnameAccounting.FORMS,
|
|
@@ -287,4 +287,4 @@ export {
|
|
|
287
287
|
processMembers as p,
|
|
288
288
|
useFormDataEffect as u
|
|
289
289
|
};
|
|
290
|
-
//# sourceMappingURL=common-
|
|
290
|
+
//# sourceMappingURL=common-yORBIVv-.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-Cl5oGXmX.esm.js","sources":["../../src/views/form-builder/utils/common.ts"],"sourcesContent":["// React imports\nimport { useEffect, useMemo } from \"react\";\n\n// ERP Common imports\nimport formBuilderDeConversion from \"@/utils/form-builder-deconversion\";\n\n// Module pathname imports\nimport { PathnameAccounting } from \"../../../constants/pathnames/pathname.accounting\";\nimport { PathnameCrm } from \"../../../constants/pathnames/pathname.crm\";\nimport { PathnameInventory } from \"../../../constants/pathnames/pathname.inventory\";\nimport { PathnameManufacturing } from \"../../../constants/pathnames/pathname.manufacturing\";\nimport { PathnamePurchase } from \"../../../constants/pathnames/pathname.procurement\";\nimport { PathnameRental } from \"../../../constants/pathnames/pathname.rental\";\nimport { PathnameUsers } from \"../../../constants/pathnames/pathname.user\";\nimport { PathnameHrms } from \"../../../constants/pathnames/pathname.hrms\";\n\n// Types for better type safety\nexport interface TableColumn {\n header: string;\n accessorKey: string;\n visible: boolean;\n}\n\nexport interface FormMember {\n field_type: string;\n table?: string;\n table_columns?: TableColumn[];\n [key: string]: any;\n}\n\nexport interface FormSection {\n field_type: string;\n label: string;\n is_accordion: boolean;\n id: string;\n remove_section: boolean;\n form_switcher_label?: string;\n form_switcher_name?: string;\n is_section_field?: boolean;\n section_type?: string;\n switcher_forms?: any;\n members: FormMember[];\n}\n\nexport interface TabData {\n tab_order: number;\n data: FormSection[];\n}\n\nexport interface ProcessedData {\n tab?: TabData[];\n section?: FormSection[];\n tabsData?: TabData[];\n}\n\n// Constants for module paths\nconst MODULE_PATHS = {\n accounting: PathnameAccounting.FORMS,\n inventory: PathnameInventory.FORMS,\n manufacturing: PathnameManufacturing.FORMS,\n procurement: PathnamePurchase.FORMS,\n crm: PathnameCrm.FORMS,\n rental: PathnameRental.FORMS,\n user: PathnameUsers.FORMS,\n hrms: PathnameHrms.FORMS,\n} as const;\n\nexport type ModuleType = keyof typeof MODULE_PATHS;\n\n// Helper function to format text (converts snake_case to Title Case)\nexport const formatText = (text: string): string => {\n return text ? text\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ') : '';\n};\n\n// Helper function to get redirection path\nconst getRedirectionPath = (currentModule: string): string => {\n if (!isValidModule(currentModule)) {\n throw new Error(`Invalid module: ${currentModule}`);\n }\n return MODULE_PATHS[currentModule as ModuleType];\n};\n\n// Type guard for module validation\nconst isValidModule = (module: string): module is ModuleType => {\n return module in MODULE_PATHS;\n};\n\n// Helper function to create default table columns\nexport const createDefaultTableColumns = (): TableColumn[] => [\n { header: \"Column 1\", accessorKey: \"column_1\", visible: true },\n { header: \"Column 2\", accessorKey: \"column_2\", visible: true },\n];\n\n// Helper function to process table columns\nexport const processTableColumns = (\n member: FormMember,\n formBuilder: any\n): TableColumn[] => {\n // Return existing columns if they exist\n if (member.table_columns?.length) {\n return member.table_columns;\n }\n\n // Check if table exists and has fields\n if (!member.table || !formBuilder.fields?.[member.table]) {\n return createDefaultTableColumns();\n }\n\n const fields = formBuilder.fields[member.table];\n if (!Array.isArray(fields) || fields.length === 0) {\n return createDefaultTableColumns();\n }\n\n return fields.map((field: any, index: number) => ({\n header: formatText(field.field),\n accessorKey: field.field,\n visible: index <= 3, // Show first 4 columns by default\n }));\n};\n\n// Helper function to process members\nexport const processMembers = (\n sections: FormSection[],\n formBuilder: any\n): FormMember[] => {\n return sections.flatMap((section) =>\n section.members.map((member) => {\n if (member.field_type === \"table\") {\n return {\n ...member,\n table_columns: processTableColumns(member, formBuilder),\n };\n }\n return { ...member };\n })\n );\n};\n\n// Helper function to extract sections data\nexport const extractSections = (sections: FormSection[]): Omit<FormSection, 'members'>[] => {\n return sections.map(({\n field_type,\n label,\n is_accordion,\n id,\n remove_section,\n form_switcher_label,\n form_switcher_name,\n is_section_field,\n section_type,\n switcher_forms,\n }) => ({\n field_type,\n label,\n is_accordion,\n id,\n remove_section,\n form_switcher_label,\n form_switcher_name,\n is_section_field,\n section_type,\n switcher_forms,\n }));\n};\n\n// Main processing function\nconst processData = (\n data: ProcessedData,\n activeTabId: number = 0,\n formBuilder: any,\n tabsData: TabData[] | null,\n // Callback functions\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { removeSection, remove, setTabsData, append, appendSection } = callbacks;\n\n try {\n // Clear existing data\n removeSection();\n remove();\n\n if (data.tab) {\n processTabData(data.tab, activeTabId, formBuilder, callbacks);\n } else if (data.section) {\n processSectionData(data.section, formBuilder, callbacks);\n } else if (data.tabsData && tabsData) {\n processExistingTabsData(tabsData, activeTabId, callbacks);\n } else {\n throw new Error(\"Invalid data format: Missing required properties (tab, section, or tabsData)\");\n }\n } catch (error) {\n console.error(\"Error processing data:\", error);\n // You might want to show a user-friendly error message instead of alert\n alert(error instanceof Error ? error.message : \"An error occurred while processing data\");\n }\n};\n\n// Process tab data\nconst processTabData = (\n tabs: TabData[],\n activeTabId: number,\n formBuilder: any,\n callbacks: {\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { setTabsData, append, appendSection } = callbacks;\n\n setTabsData(tabs);\n\n const activeTab = tabs.find(tab => tab.tab_order === activeTabId + 1);\n if (!activeTab?.data) {\n console.warn(`No active tab found for tab order: ${activeTabId + 1}`);\n return;\n }\n\n const sections = extractSections(activeTab.data);\n const members = processMembers(activeTab.data, formBuilder);\n\n append(members);\n appendSection(sections);\n};\n\n// Process section data\nconst processSectionData = (\n sections: FormSection[],\n formBuilder: any,\n callbacks: {\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { append, appendSection } = callbacks;\n\n const extractedSections = extractSections(sections);\n const members = processMembers(sections, formBuilder);\n\n append(members);\n appendSection(extractedSections);\n};\n\n// Process existing tabs data\nconst processExistingTabsData = (\n tabsData: TabData[],\n activeTabId: number,\n callbacks: {\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { append, appendSection } = callbacks;\n\n const activeTab = tabsData.find(tab => tab.tab_order === activeTabId + 1);\n if (!activeTab?.data) {\n console.warn(`No active tab found for tab order: ${activeTabId + 1}`);\n return;\n }\n\n const sections = extractSections(activeTab.data);\n const members = activeTab.data.flatMap(section =>\n section.members.map(member => ({ ...member }))\n );\n\n if (members.length > 0) append(members);\n if (sections.length > 0) appendSection(sections);\n};\n\n// Custom hook for form data processing\nexport const useFormDataProcessor = (\n formBuilder: any,\n tabsData: TabData[],\n activeTabValue: number,\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n) => {\n const { removeSection, remove, append } = callbacks;\n\n // Memoize the serialized form data to avoid unnecessary re-renders\n const serializedFormData = useMemo(() =>\n JSON.stringify(formBuilder?.formData),\n [formBuilder?.formData]\n );\n\n // Memoize the initial data processing\n const initialData = useMemo(() => {\n if (!formBuilder?.formData?.length) return null;\n\n try {\n return formBuilderDeConversion(formBuilder.formData);\n } catch (error) {\n console.error('Error processing form data:', error);\n return null;\n }\n }, [serializedFormData]);\n\n useEffect(() => {\n // Handle case when there's no initial data\n if (!initialData) {\n removeSection();\n remove();\n append([]);\n return;\n }\n\n // Determine processing strategy based on available data\n try {\n if (tabsData.length > 0) {\n // Process existing tabs data\n processData(\n { tabsData: tabsData },\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.tab) {\n // Process new tab data\n processData(\n initialData,\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.section) {\n // Process section data\n processData(\n initialData,\n 0, // No active tab for section-only data\n formBuilder,\n tabsData,\n callbacks\n );\n } else {\n console.warn('No valid data structure found in initialData');\n removeSection();\n remove();\n append([]);\n }\n } catch (error) {\n console.error('Error in form data processing:', error);\n // Reset to clean state on error\n removeSection();\n remove();\n append([]);\n }\n }, [activeTabValue, serializedFormData, tabsData.length, initialData, callbacks, formBuilder]);\n\n return { initialData };\n};\n\n// Alternative: Direct useEffect implementation (if you prefer not to use custom hook)\nexport const useFormDataEffect = (\n formBuilder: any,\n tabsData: TabData[],\n activeTabValue: number = 0,\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n) => {\n const { removeSection, remove, append } = callbacks;\n\n useEffect(() => {\n let initialData: ProcessedData | null = null;\n\n // Process initial data\n if (formBuilder?.formData?.length) {\n try {\n initialData = formBuilderDeConversion(formBuilder.formData);\n } catch (error) {\n console.error('Error converting form data:', error);\n }\n }\n\n // Handle empty initial data\n if (!initialData) {\n removeSection();\n remove();\n append([]);\n return;\n }\n\n // Process data based on available structure\n try {\n if (tabsData.length > 0) {\n processData(\n { tabsData: tabsData },\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.tab) {\n processData(\n initialData,\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.section) {\n processData(\n initialData,\n 0,\n formBuilder,\n tabsData,\n callbacks\n );\n } else {\n console.warn('Invalid data structure in initialData');\n removeSection();\n remove();\n append([]);\n }\n } catch (error) {\n console.error('Error processing form data:', error);\n // Reset to clean state on error\n removeSection();\n remove();\n append([]);\n }\n }, [activeTabValue, JSON.stringify(formBuilder?.formData), tabsData.length]);\n};\n\n// Usage example:\n/*\n// Option 1: Using custom hook\nconst { initialData } = useFormDataProcessor(\n formBuilder,\n tabsData,\n activeTabValue,\n {\n removeSection,\n remove,\n setTabsData,\n append,\n appendSection\n }\n);\n\n// Option 2: Using direct useEffect\nuseFormDataEffect(\n formBuilder,\n tabsData,\n activeTabValue,\n {\n removeSection,\n remove,\n setTabsData,\n append,\n appendSection\n }\n);\n*/\n\n// Path generation utility (separate from the effect)\nexport const generateModulePath = (currentModule: string): string => {\n try {\n const redirectionPath = getRedirectionPath(currentModule);\n return `/dashboard/${currentModule}${redirectionPath}`;\n } catch (error) {\n console.error('Error generating module path:', error);\n throw error;\n }\n};\n\nexport const generateCustomFormPath = (currentModule,redirectionPath): any => {\n try {\n return `/dashboard/${currentModule}${redirectionPath}`;\n } catch (error) {\n console.error('Error generating module path:', error);\n throw error;\n }\n};"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common-yORBIVv-.esm.js","sources":["../../src/views/form-builder/utils/common.ts"],"sourcesContent":["// React imports\nimport { useEffect, useMemo } from \"react\";\n\n// ERP Common imports\nimport formBuilderDeConversion from \"@/utils/form-builder-deconversion\";\n\n// Module pathname imports\nimport { PathnameAccounting } from \"../../../constants/pathnames/pathname.accounting\";\nimport { PathnameCrm } from \"../../../constants/pathnames/pathname.crm\";\nimport { PathnameInventory } from \"../../../constants/pathnames/pathname.inventory\";\nimport { PathnameManufacturing } from \"../../../constants/pathnames/pathname.manufacturing\";\nimport { PathnamePurchase } from \"../../../constants/pathnames/pathname.procurement\";\nimport { PathnameRental } from \"../../../constants/pathnames/pathname.rental\";\nimport { PathnameUsers } from \"../../../constants/pathnames/pathname.user\";\nimport { PathnameHrms } from \"../../../constants/pathnames/pathname.hrms\";\n\n// Types for better type safety\nexport interface TableColumn {\n header: string;\n accessorKey: string;\n visible: boolean;\n}\n\nexport interface FormMember {\n field_type: string;\n table?: string;\n table_columns?: TableColumn[];\n [key: string]: any;\n}\n\nexport interface FormSection {\n field_type: string;\n label: string;\n is_accordion: boolean;\n id: string;\n remove_section: boolean;\n form_switcher_label?: string;\n form_switcher_name?: string;\n is_section_field?: boolean;\n section_type?: string;\n switcher_forms?: any;\n members: FormMember[];\n}\n\nexport interface TabData {\n tab_order: number;\n data: FormSection[];\n}\n\nexport interface ProcessedData {\n tab?: TabData[];\n section?: FormSection[];\n tabsData?: TabData[];\n}\n\n// Constants for module paths\nconst MODULE_PATHS = {\n accounting: PathnameAccounting.FORMS,\n inventory: PathnameInventory.FORMS,\n manufacturing: PathnameManufacturing.FORMS,\n procurement: PathnamePurchase.FORMS,\n crm: PathnameCrm.FORMS,\n rental: PathnameRental.FORMS,\n user: PathnameUsers.FORMS,\n hrms: PathnameHrms.FORMS,\n} as const;\n\nexport type ModuleType = keyof typeof MODULE_PATHS;\n\n// Helper function to format text (converts snake_case to Title Case)\nexport const formatText = (text: string): string => {\n return text ? text\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ') : '';\n};\n\n// Helper function to get redirection path\nconst getRedirectionPath = (currentModule: string): string => {\n if (!isValidModule(currentModule)) {\n throw new Error(`Invalid module: ${currentModule}`);\n }\n return MODULE_PATHS[currentModule as ModuleType];\n};\n\n// Type guard for module validation\nconst isValidModule = (module: string): module is ModuleType => {\n return module in MODULE_PATHS;\n};\n\n// Helper function to create default table columns\nexport const createDefaultTableColumns = (): TableColumn[] => [\n { header: \"Column 1\", accessorKey: \"column_1\", visible: true },\n { header: \"Column 2\", accessorKey: \"column_2\", visible: true },\n];\n\n// Helper function to process table columns\nexport const processTableColumns = (\n member: FormMember,\n formBuilder: any\n): TableColumn[] => {\n // Return existing columns if they exist\n if (member.table_columns?.length) {\n return member.table_columns;\n }\n\n // Check if table exists and has fields\n if (!member.table || !formBuilder.fields?.[member.table]) {\n return createDefaultTableColumns();\n }\n\n const fields = formBuilder.fields[member.table];\n if (!Array.isArray(fields) || fields.length === 0) {\n return createDefaultTableColumns();\n }\n\n return fields.map((field: any, index: number) => ({\n header: formatText(field.field),\n accessorKey: field.field,\n visible: index <= 3, // Show first 4 columns by default\n }));\n};\n\n// Helper function to process members\nexport const processMembers = (\n sections: FormSection[],\n formBuilder: any\n): FormMember[] => {\n return sections.flatMap((section) =>\n section.members.map((member) => {\n if (member.field_type === \"table\") {\n return {\n ...member,\n table_columns: processTableColumns(member, formBuilder),\n };\n }\n return { ...member };\n })\n );\n};\n\n// Helper function to extract sections data\nexport const extractSections = (sections: FormSection[]): Omit<FormSection, 'members'>[] => {\n return sections.map(({\n field_type,\n label,\n is_accordion,\n id,\n remove_section,\n form_switcher_label,\n form_switcher_name,\n is_section_field,\n section_type,\n switcher_forms,\n }) => ({\n field_type,\n label,\n is_accordion,\n id,\n remove_section,\n form_switcher_label,\n form_switcher_name,\n is_section_field,\n section_type,\n switcher_forms,\n }));\n};\n\n// Main processing function\nconst processData = (\n data: ProcessedData,\n activeTabId: number = 0,\n formBuilder: any,\n tabsData: TabData[] | null,\n // Callback functions\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { removeSection, remove, setTabsData, append, appendSection } = callbacks;\n\n try {\n // Clear existing data\n removeSection();\n remove();\n\n if (data.tab) {\n processTabData(data.tab, activeTabId, formBuilder, callbacks);\n } else if (data.section) {\n processSectionData(data.section, formBuilder, callbacks);\n } else if (data.tabsData && tabsData) {\n processExistingTabsData(tabsData, activeTabId, callbacks);\n } else {\n throw new Error(\"Invalid data format: Missing required properties (tab, section, or tabsData)\");\n }\n } catch (error) {\n console.error(\"Error processing data:\", error);\n // You might want to show a user-friendly error message instead of alert\n alert(error instanceof Error ? error.message : \"An error occurred while processing data\");\n }\n};\n\n// Process tab data\nconst processTabData = (\n tabs: TabData[],\n activeTabId: number,\n formBuilder: any,\n callbacks: {\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { setTabsData, append, appendSection } = callbacks;\n\n setTabsData(tabs);\n\n const activeTab = tabs.find(tab => tab.tab_order === activeTabId + 1);\n if (!activeTab?.data) {\n console.warn(`No active tab found for tab order: ${activeTabId + 1}`);\n return;\n }\n\n const sections = extractSections(activeTab.data);\n const members = processMembers(activeTab.data, formBuilder);\n\n append(members);\n appendSection(sections);\n};\n\n// Process section data\nconst processSectionData = (\n sections: FormSection[],\n formBuilder: any,\n callbacks: {\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { append, appendSection } = callbacks;\n\n const extractedSections = extractSections(sections);\n const members = processMembers(sections, formBuilder);\n\n append(members);\n appendSection(extractedSections);\n};\n\n// Process existing tabs data\nconst processExistingTabsData = (\n tabsData: TabData[],\n activeTabId: number,\n callbacks: {\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n): void => {\n const { append, appendSection } = callbacks;\n\n const activeTab = tabsData.find(tab => tab.tab_order === activeTabId + 1);\n if (!activeTab?.data) {\n console.warn(`No active tab found for tab order: ${activeTabId + 1}`);\n return;\n }\n\n const sections = extractSections(activeTab.data);\n const members = activeTab.data.flatMap(section =>\n section.members.map(member => ({ ...member }))\n );\n\n if (members.length > 0) append(members);\n if (sections.length > 0) appendSection(sections);\n};\n\n// Custom hook for form data processing\nexport const useFormDataProcessor = (\n formBuilder: any,\n tabsData: TabData[],\n activeTabValue: number,\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n) => {\n const { removeSection, remove, append } = callbacks;\n\n // Memoize the serialized form data to avoid unnecessary re-renders\n const serializedFormData = useMemo(() =>\n JSON.stringify(formBuilder?.formData),\n [formBuilder?.formData]\n );\n\n // Memoize the initial data processing\n const initialData = useMemo(() => {\n if (!formBuilder?.formData?.length) return null;\n\n try {\n return formBuilderDeConversion(formBuilder.formData);\n } catch (error) {\n console.error('Error processing form data:', error);\n return null;\n }\n }, [serializedFormData]);\n\n useEffect(() => {\n // Handle case when there's no initial data\n if (!initialData) {\n removeSection();\n remove();\n append([]);\n return;\n }\n\n // Determine processing strategy based on available data\n try {\n if (tabsData.length > 0) {\n // Process existing tabs data\n processData(\n { tabsData: tabsData },\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.tab) {\n // Process new tab data\n processData(\n initialData,\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.section) {\n // Process section data\n processData(\n initialData,\n 0, // No active tab for section-only data\n formBuilder,\n tabsData,\n callbacks\n );\n } else {\n console.warn('No valid data structure found in initialData');\n removeSection();\n remove();\n append([]);\n }\n } catch (error) {\n console.error('Error in form data processing:', error);\n // Reset to clean state on error\n removeSection();\n remove();\n append([]);\n }\n }, [activeTabValue, serializedFormData, tabsData.length, initialData, callbacks, formBuilder]);\n\n return { initialData };\n};\n\n// Alternative: Direct useEffect implementation (if you prefer not to use custom hook)\nexport const useFormDataEffect = (\n formBuilder: any,\n tabsData: TabData[],\n activeTabValue: number = 0,\n callbacks: {\n removeSection: () => void;\n remove: () => void;\n setTabsData: (data: TabData[]) => void;\n append: (members: FormMember[]) => void;\n appendSection: (sections: Omit<FormSection, 'members'>[]) => void;\n }\n) => {\n const { removeSection, remove, append } = callbacks;\n\n useEffect(() => {\n let initialData: ProcessedData | null = null;\n\n // Process initial data\n if (formBuilder?.formData?.length) {\n try {\n initialData = formBuilderDeConversion(formBuilder.formData);\n } catch (error) {\n console.error('Error converting form data:', error);\n }\n }\n\n // Handle empty initial data\n if (!initialData) {\n removeSection();\n remove();\n append([]);\n return;\n }\n\n // Process data based on available structure\n try {\n if (tabsData.length > 0) {\n processData(\n { tabsData: tabsData },\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.tab) {\n processData(\n initialData,\n activeTabValue,\n formBuilder,\n tabsData,\n callbacks\n );\n } else if (initialData.section) {\n processData(\n initialData,\n 0,\n formBuilder,\n tabsData,\n callbacks\n );\n } else {\n console.warn('Invalid data structure in initialData');\n removeSection();\n remove();\n append([]);\n }\n } catch (error) {\n console.error('Error processing form data:', error);\n // Reset to clean state on error\n removeSection();\n remove();\n append([]);\n }\n }, [activeTabValue, JSON.stringify(formBuilder?.formData), tabsData.length]);\n};\n\n// Usage example:\n/*\n// Option 1: Using custom hook\nconst { initialData } = useFormDataProcessor(\n formBuilder,\n tabsData,\n activeTabValue,\n {\n removeSection,\n remove,\n setTabsData,\n append,\n appendSection\n }\n);\n\n// Option 2: Using direct useEffect\nuseFormDataEffect(\n formBuilder,\n tabsData,\n activeTabValue,\n {\n removeSection,\n remove,\n setTabsData,\n append,\n appendSection\n }\n);\n*/\n\n// Path generation utility (separate from the effect)\nexport const generateModulePath = (currentModule: string): string => {\n try {\n const redirectionPath = getRedirectionPath(currentModule);\n return `/dashboard/${currentModule}${redirectionPath}`;\n } catch (error) {\n console.error('Error generating module path:', error);\n throw error;\n }\n};\n\nexport const generateCustomFormPath = (currentModule,redirectionPath): any => {\n try {\n return `/dashboard/${currentModule}${redirectionPath}`;\n } catch (error) {\n console.error('Error generating module path:', error);\n throw error;\n }\n};"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const pathname = require("./pathname-7-q_H5dJ.js");
|
|
3
|
-
const pathname_rental = require("./pathname.rental-
|
|
3
|
+
const pathname_rental = require("./pathname.rental-DgH4LoG7.js");
|
|
4
4
|
const utils_routeUtils = require("../utils/route-utils/index.js");
|
|
5
5
|
const MODULE_META = {
|
|
6
6
|
"/dashboard/user": { meta: "Users & Permissions", fg: "#7C3AED" },
|
|
@@ -138,4 +138,4 @@ exports.DOC_TYPE_LABEL = DOC_TYPE_LABEL;
|
|
|
138
138
|
exports.MODULE_META = MODULE_META;
|
|
139
139
|
exports.MODULE_THUMB_COLOR = MODULE_THUMB_COLOR;
|
|
140
140
|
exports.getSearchResultUrl = getSearchResultUrl;
|
|
141
|
-
//# sourceMappingURL=constants-
|
|
141
|
+
//# sourceMappingURL=constants-06kIVUBw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants-D_xuLHSu.js","sources":["../../src/components/header/constants.ts"],"sourcesContent":["import { Pathname } from \"../../constants/pathnames/pathname\";\nimport { PathnameAccounting } from \"../../constants/pathnames/pathname.accounting\";\nimport { PathnameInventory } from \"../../constants/pathnames/pathname.inventory\";\nimport { PathnamePurchase } from \"../../constants/pathnames/pathname.procurement\";\nimport { PathnameCrm } from \"../../constants/pathnames/pathname.crm\";\nimport { PathnameRental } from \"../../constants/pathnames/pathname.rental\";\nimport {\n workOrderCrudPaths,\n billOfMaterialCrudPaths,\n buildOrderCrudPaths,\n jobCardsCrudPaths,\n productionPlanPaths,\n equipmentsCrudPaths,\n gateEntriesCrudPaths,\n} from \"../../constants/pathnames/pathname.manufacturing\";\nimport { generateRouteWithId } from \"../../utils/route-utils\";\n\n// ─── App-switcher ────────────────────────────────────────────────────────────\n\nexport const MODULE_META: Record<string, { meta: string; isNew?: boolean; fg: string }> = {\n \"/dashboard/user\": { meta: \"Users & Permissions\", fg: \"#7C3AED\" },\n \"/dashboard/drive\": { meta: \"Files & Documents\", fg: \"#C2410C\" },\n \"/dashboard/accounting\": { meta: \"Finance & Ledger\", fg: \"#16A34A\" },\n \"/dashboard/inventory\": { meta: \"Stock & Warehouses\", fg: \"#4F46E5\" },\n \"/dashboard/project\": { meta: \"Tasks & Milestones\", fg: \"#BE185D\" },\n \"/dashboard/procurement\": { meta: \"Orders & Vendors\", fg: \"#BE123C\" },\n \"/dashboard/manufacturing\": { meta: \"Production & BOM\", fg: \"#DC2626\" },\n \"/dashboard/crm\": { meta: \"Leads & Pipelines\", fg: \"#6D28D9\" },\n \"/dashboard/hrms\": { meta: \"Employees & Payroll\", fg: \"#0284C7\", isNew: true },\n \"/dashboard/office\": { meta: \"Assets & Spaces\", fg: \"#0D9488\" },\n \"/dashboard/rental\": { meta: \"Rentals & Contracts\", fg: \"#15803D\", isNew: true },\n \"/dashboard/settings\": { meta: \"System Configuration\", fg: \"#4338CA\" },\n \"/dashboard/onboarding\": { meta: \"Setup & Guides\", fg: \"#7C3AED\" },\n};\n\n// ─── Global search ───────────────────────────────────────────────────────────\n\nexport const DOC_TYPE_LABEL: Record<string, string> = {\n // Account\n sales_invoices: 'Sales Invoices',\n purchase_invoices: 'Purchase Invoices',\n payment_entries: 'Payments',\n credit_notes: 'Credit Notes',\n debit_notes: 'Debit Notes',\n journal_entries: 'Journal Entries',\n expense_reimbursements: 'Expenses',\n cash_expenses: 'Cash Expenses',\n budgets: 'Budgets',\n assets: 'Fixed Assets',\n asset_transfers: 'Asset Transfers',\n parties: 'Parties',\n // Sales / CRM\n sales_orders: 'Sales Orders',\n sl_sales_orders: 'Sales Orders',\n sl_quotation: 'Quotations',\n sl_delivery_orders: 'Delivery Orders',\n sl_customer_returns: 'Customer Returns',\n sl_opportunity_parties: 'Opportunities',\n sl_promotions: 'Promotions',\n // Purchase\n purchase_orders: 'Purchase Orders',\n pr_purchase_orders: 'Purchase Orders',\n pr_purchase_requests: 'Purchase Requests',\n pr_rfqs: 'RFQs',\n pr_vras: 'Vendor Returns',\n pr_delivery_orders: 'Purchase Delivery Orders',\n pr_purchase_agreements: 'Purchase Agreements',\n // Inventory\n items: 'Items',\n warehouse_location: 'Warehouses',\n inventory_adjustments: 'Stock Adjustments',\n bin_transfers: 'Bin Transfers',\n stock_transfers: 'Stock Transfers',\n // Manufacturing\n mf_work_orders: 'Work Orders',\n mf_bom: 'Bill of Materials',\n mf_build_orders: 'Build Orders',\n mf_job_cards: 'Job Cards',\n mf_production_plan: 'Production Plans',\n mf_equipments: 'Equipment',\n mf_gate_registers: 'Gate Registers',\n};\n\nexport const MODULE_THUMB_COLOR: Record<string, string> = {\n inventory: 'linear-gradient(135deg,#4F46E5,#3730A3)',\n account: 'linear-gradient(135deg,#16A34A,#15803D)',\n hrms: 'linear-gradient(135deg,#0284C7,#0369A1)',\n sales: 'linear-gradient(135deg,#C2410C,#9A3412)',\n purchase: 'linear-gradient(135deg,#BE123C,#9F1239)',\n manufacturing: 'linear-gradient(135deg,#DC2626,#B91C1C)',\n rental: 'linear-gradient(135deg,#15803D,#166534)',\n document: 'linear-gradient(135deg,#C2410C,#9A3412)',\n};\n\nconst PathnameGeneratorAccounting = (name: string) => Pathname.DASHBOARD_ACCOUNTING + name;\nconst PathnameGeneratorInventory = (name: string) => Pathname.DASHBOARD_INVENTORY + name;\nconst PathnameGeneratorPurchase = (name: string) => Pathname.DASHBOARD_PROCUREMENT + name;\nconst PathnameGeneratorCrm = (name: string) => Pathname.DASHBOARD_CRM + name;\nconst PathnameGeneratorRental = (name: string) => Pathname.DASHBOARD_RENTAL + name;\nconst PathnameGeneratorManufacturing = (name: string) => Pathname.DASHBOARD_MANUFACTURING + name;\n\nexport const getSearchResultUrl = (docType: string, sourceId: number, item?: any): string | null => {\n const id = sourceId.toString();\n const routeMap: Record<string, () => string> = {\n // ── Account ──────────────────────────────────────────────────────────────\n journal_entries: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_JOURNAL_ENTRY), id),\n payment_entries: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_PAYMENT_ENTRY), id),\n sales_invoices: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_SALES_INVOICES), id),\n purchase_invoices: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_PURCHASE_INVOICE), id),\n cash_expenses: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_CASH_EXPENSE), id),\n expense_reimbursements: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), id),\n credit_notes: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_CREDIT_NOTE), id),\n debit_notes: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_DEBIT_NOTE), id),\n budgets: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_BUDGET), id),\n assets: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_ASSET), id),\n asset_transfers: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_ASSET_TRANSFER), id),\n parties: () => {\n const isVendor = item?.transaction_type === 'vendor';\n const route = isVendor ? PathnameAccounting.VIEW_VENDOR_MANAGEMENT : PathnameAccounting.VIEW_CUSTOMER_MANAGEMENT;\n return generateRouteWithId(PathnameGeneratorAccounting(route), id);\n },\n\n // ── Sales / CRM (both with and without sl_ prefix) ───────────────────────\n sales_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), id),\n sl_sales_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), id),\n sl_quotation: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_QUOTATION), id),\n sl_delivery_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_DELIVERTY_ORDER), id),\n sl_customer_returns: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), id),\n sl_opportunity_parties: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_OPPORTUNITY), id),\n sl_promotions: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_PROMOTIONS), id),\n\n // ── Purchase (both with and without pr_ prefix) ───────────────────────────\n purchase_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), id),\n pr_purchase_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), id),\n pr_purchase_requests: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_REQUEST), id),\n pr_rfqs: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_RFQ), id),\n pr_vras: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), id),\n pr_delivery_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_DELIVERY_ORDER), id),\n pr_purchase_agreements: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), id),\n\n // ── Inventory ─────────────────────────────────────────────────────────────\n stock_transfers: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), id),\n items: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_INVENTORY_ITEM), id),\n warehouse_location: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_LOCATION), id),\n inventory_adjustments: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_INVENTORY_ADJUSTMENT), id),\n bin_transfers: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_BIN_TRANSFER), id),\n\n // ── Manufacturing ─────────────────────────────────────────────────────────\n mf_work_orders: () => generateRouteWithId(PathnameGeneratorManufacturing(workOrderCrudPaths.VIEW_WORK_ORDER), id),\n mf_bom: () => generateRouteWithId(PathnameGeneratorManufacturing(billOfMaterialCrudPaths.VIEW_BILL_OF_MATERIAL), id),\n mf_build_orders: () => generateRouteWithId(PathnameGeneratorManufacturing(buildOrderCrudPaths.VIEW_BUILD_ORDER), id),\n mf_job_cards: () => generateRouteWithId(PathnameGeneratorManufacturing(jobCardsCrudPaths.VIEW_JOB_CARDS), id),\n mf_production_plan: () => generateRouteWithId(PathnameGeneratorManufacturing(productionPlanPaths.PRODUCTION_PLAN_VIEW), id),\n mf_equipments: () => generateRouteWithId(PathnameGeneratorManufacturing(equipmentsCrudPaths.VIEW_EQUIPMENTS), id),\n mf_gate_registers: () => generateRouteWithId(PathnameGeneratorManufacturing(gateEntriesCrudPaths.VIEW_GATE_REGISTER), id),\n\n // ── Rental ────────────────────────────────────────────────────────────────\n rental_orders: () => generateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), id),\n };\n return routeMap[docType]?.() ?? null;\n};\n"],"names":["Pathname","generateRouteWithId","PathnameAccounting","PathnameCrm","PathnamePurchase","PathnameInventory","workOrderCrudPaths","billOfMaterialCrudPaths","buildOrderCrudPaths","jobCardsCrudPaths","productionPlanPaths","equipmentsCrudPaths","gateEntriesCrudPaths","PathnameRental"],"mappings":";;;;AAmBO,MAAM,cAA6E;AAAA,EACxF,mBAA4B,EAAE,MAAM,uBAA0B,IAAI,UAAA;AAAA,EAClE,oBAA4B,EAAE,MAAM,qBAA0B,IAAI,UAAA;AAAA,EAClE,yBAA4B,EAAE,MAAM,oBAA0B,IAAI,UAAA;AAAA,EAClE,wBAA4B,EAAE,MAAM,sBAA0B,IAAI,UAAA;AAAA,EAClE,sBAA4B,EAAE,MAAM,sBAA0B,IAAI,UAAA;AAAA,EAClE,0BAA4B,EAAE,MAAM,oBAA0B,IAAI,UAAA;AAAA,EAClE,4BAA4B,EAAE,MAAM,oBAA0B,IAAI,UAAA;AAAA,EAClE,kBAA4B,EAAE,MAAM,qBAA0B,IAAI,UAAA;AAAA,EAClE,mBAA4B,EAAE,MAAM,uBAA0B,IAAI,WAAW,OAAO,KAAA;AAAA,EACpF,qBAA4B,EAAE,MAAM,mBAA0B,IAAI,UAAA;AAAA,EAClE,qBAA4B,EAAE,MAAM,uBAA0B,IAAI,WAAW,OAAO,KAAA;AAAA,EACpF,uBAA4B,EAAE,MAAM,wBAA0B,IAAI,UAAA;AAAA,EAClE,yBAA4B,EAAE,MAAM,kBAA0B,IAAI,UAAA;AACpE;AAIO,MAAM,iBAAyC;AAAA;AAAA,EAEpD,gBAAyB;AAAA,EACzB,mBAAyB;AAAA,EACzB,iBAAyB;AAAA,EACzB,cAAyB;AAAA,EACzB,aAAyB;AAAA,EACzB,iBAAyB;AAAA,EACzB,wBAAyB;AAAA,EACzB,eAAyB;AAAA,EACzB,SAAyB;AAAA,EACzB,QAAyB;AAAA,EACzB,iBAAyB;AAAA,EACzB,SAAyB;AAAA;AAAA,EAEzB,cAAyB;AAAA,EACzB,iBAAyB;AAAA,EACzB,cAAyB;AAAA,EACzB,oBAAyB;AAAA,EACzB,qBAAyB;AAAA,EACzB,wBAAyB;AAAA,EACzB,eAAyB;AAAA;AAAA,EAEzB,iBAAyB;AAAA,EACzB,oBAAyB;AAAA,EACzB,sBAAyB;AAAA,EACzB,SAAyB;AAAA,EACzB,SAAyB;AAAA,EACzB,oBAAyB;AAAA,EACzB,wBAAyB;AAAA;AAAA,EAEzB,OAAyB;AAAA,EACzB,oBAAyB;AAAA,EACzB,uBAAyB;AAAA,EACzB,eAAyB;AAAA,EACzB,iBAAyB;AAAA;AAAA,EAEzB,gBAAyB;AAAA,EACzB,QAAyB;AAAA,EACzB,iBAAyB;AAAA,EACzB,cAAyB;AAAA,EACzB,oBAAyB;AAAA,EACzB,eAAyB;AAAA,EACzB,mBAAyB;AAC3B;AAEO,MAAM,qBAA6C;AAAA,EACxD,WAAe;AAAA,EACf,SAAe;AAAA,EACf,MAAe;AAAA,EACf,OAAe;AAAA,EACf,UAAe;AAAA,EACf,eAAe;AAAA,EACf,QAAe;AAAA,EACf,UAAe;AACjB;AAEA,MAAM,8BAAiC,CAAC,SAAiBA,SAAAA,SAAS,uBAAuB;AACzF,MAAM,6BAAiC,CAAC,SAAiBA,SAAAA,SAAS,sBAAsB;AACxF,MAAM,4BAAiC,CAAC,SAAiBA,SAAAA,SAAS,wBAAwB;AAC1F,MAAM,uBAAiC,CAAC,SAAiBA,SAAAA,SAAS,gBAAgB;AAClF,MAAM,0BAAiC,CAAC,SAAiBA,SAAAA,SAAS,mBAAmB;AACrF,MAAM,iCAAiC,CAAC,SAAiBA,SAAAA,SAAS,0BAA0B;AAErF,MAAM,qBAAqB,CAAC,SAAiB,UAAkB,SAA8B;;AAClG,QAAM,KAAK,SAAS,SAAA;AACpB,QAAM,WAAyC;AAAA;AAAA,IAE7C,iBAAwB,MAAMC,iBAAAA,oBAAoB,4BAA4BC,gBAAAA,mBAAmB,kBAAkB,GAAG,EAAE;AAAA,IACxH,iBAAwB,MAAMD,iBAAAA,oBAAoB,4BAA4BC,gBAAAA,mBAAmB,kBAAkB,GAAG,EAAE;AAAA,IACxH,gBAAwB,MAAMD,iBAAAA,oBAAoB,4BAA4BC,gBAAAA,mBAAmB,mBAAmB,GAAG,EAAE;AAAA,IACzH,mBAAwB,MAAMD,iBAAAA,oBAAoB,4BAA4BC,gBAAAA,mBAAmB,qBAAqB,GAAG,EAAE;AAAA,IAC3H,eAAwB,MAAMD,iBAAAA,oBAAoB,4BAA4BC,gBAAAA,mBAAmB,iBAAiB,GAAG,EAAE;AAAA,IACvH,wBAAwB,MAAMD,iBAAAA,oBAAoB,4BAA4BC,gBAAAA,mBAAmB,0BAA0B,GAAG,EAAE;AAAA,IAChI,cAAwB,MAAMD,iBAAAA,oBAAoB,4BAA4BC,gBAAAA,mBAAmB,gBAAgB,GAAG,EAAE;AAAA,IACtH,aAAwB,MAAMD,iBAAAA,oBAAoB,4BAA4BC,gBAAAA,mBAAmB,eAAe,GAAG,EAAE;AAAA,IACrH,SAAwB,MAAMD,iBAAAA,oBAAoB,4BAA4BC,gBAAAA,mBAAmB,WAAW,GAAG,EAAE;AAAA,IACjH,QAAwB,MAAMD,iBAAAA,oBAAoB,4BAA4BC,gBAAAA,mBAAmB,UAAU,GAAG,EAAE;AAAA,IAChH,iBAAwB,MAAMD,iBAAAA,oBAAoB,4BAA4BC,gBAAAA,mBAAmB,mBAAmB,GAAG,EAAE;AAAA,IACzH,SAAwB,MAAM;AAC5B,YAAM,YAAW,6BAAM,sBAAqB;AAC5C,YAAM,QAAQ,WAAWA,gBAAAA,mBAAmB,yBAAyBA,gBAAAA,mBAAmB;AACxF,aAAOD,qCAAoB,4BAA4B,KAAK,GAAG,EAAE;AAAA,IACnE;AAAA;AAAA,IAGA,cAAwB,MAAMA,iBAAAA,oBAAoB,qBAAqBE,gBAAAA,YAAY,gBAAgB,GAAG,EAAE;AAAA,IACxG,iBAAwB,MAAMF,iBAAAA,oBAAoB,qBAAqBE,gBAAAA,YAAY,gBAAgB,GAAG,EAAE;AAAA,IACxG,cAAwB,MAAMF,iBAAAA,oBAAoB,qBAAqBE,gBAAAA,YAAY,cAAc,GAAG,EAAE;AAAA,IACtG,oBAAwB,MAAMF,iBAAAA,oBAAoB,qBAAqBE,gBAAAA,YAAY,oBAAoB,GAAG,EAAE;AAAA,IAC5G,qBAAwB,MAAMF,iBAAAA,oBAAoB,qBAAqBE,gBAAAA,YAAY,qBAAqB,GAAG,EAAE;AAAA,IAC7G,wBAAwB,MAAMF,iBAAAA,oBAAoB,qBAAqBE,gBAAAA,YAAY,gBAAgB,GAAG,EAAE;AAAA,IACxG,eAAwB,MAAMF,iBAAAA,oBAAoB,qBAAqBE,gBAAAA,YAAY,eAAe,GAAG,EAAE;AAAA;AAAA,IAGvG,iBAAwB,MAAMF,iBAAAA,oBAAoB,0BAA0BG,gBAAAA,iBAAiB,mBAAmB,GAAG,EAAE;AAAA,IACrH,oBAAwB,MAAMH,iBAAAA,oBAAoB,0BAA0BG,gBAAAA,iBAAiB,mBAAmB,GAAG,EAAE;AAAA,IACrH,sBAAwB,MAAMH,iBAAAA,oBAAoB,0BAA0BG,gBAAAA,iBAAiB,YAAY,GAAG,EAAE;AAAA,IAC9G,SAAwB,MAAMH,iBAAAA,oBAAoB,0BAA0BG,gBAAAA,iBAAiB,QAAQ,GAAG,EAAE;AAAA,IAC1G,SAAwB,MAAMH,iBAAAA,oBAAoB,0BAA0BG,gBAAAA,iBAAiB,mBAAmB,GAAG,EAAE;AAAA,IACrH,oBAAwB,MAAMH,iBAAAA,oBAAoB,0BAA0BG,gBAAAA,iBAAiB,mBAAmB,GAAG,EAAE;AAAA,IACrH,wBAAwB,MAAMH,iBAAAA,oBAAoB,0BAA0BG,gBAAAA,iBAAiB,uBAAuB,GAAG,EAAE;AAAA;AAAA,IAGzH,iBAAwB,MAAMH,iBAAAA,oBAAoB,2BAA2BI,gBAAAA,kBAAkB,mBAAmB,GAAG,EAAE;AAAA,IACvH,OAAwB,MAAMJ,iBAAAA,oBAAoB,2BAA2BI,gBAAAA,kBAAkB,mBAAmB,GAAG,EAAE;AAAA,IACvH,oBAAwB,MAAMJ,iBAAAA,oBAAoB,2BAA2BI,gBAAAA,kBAAkB,aAAa,GAAG,EAAE;AAAA,IACjH,uBAAwB,MAAMJ,iBAAAA,oBAAoB,2BAA2BI,gBAAAA,kBAAkB,yBAAyB,GAAG,EAAE;AAAA,IAC7H,eAAwB,MAAMJ,iBAAAA,oBAAoB,2BAA2BI,gBAAAA,kBAAkB,iBAAiB,GAAG,EAAE;AAAA;AAAA,IAGrH,gBAAwB,MAAMJ,iBAAAA,oBAAoB,+BAA+BK,gBAAAA,mBAAmB,eAAe,GAAG,EAAE;AAAA,IACxH,QAAwB,MAAML,iBAAAA,oBAAoB,+BAA+BM,gBAAAA,wBAAwB,qBAAqB,GAAG,EAAE;AAAA,IACnI,iBAAwB,MAAMN,iBAAAA,oBAAoB,+BAA+BO,gBAAAA,oBAAoB,gBAAgB,GAAG,EAAE;AAAA,IAC1H,cAAwB,MAAMP,iBAAAA,oBAAoB,+BAA+BQ,gBAAAA,kBAAkB,cAAc,GAAG,EAAE;AAAA,IACtH,oBAAwB,MAAMR,iBAAAA,oBAAoB,+BAA+BS,gBAAAA,oBAAoB,oBAAoB,GAAG,EAAE;AAAA,IAC9H,eAAwB,MAAMT,iBAAAA,oBAAoB,+BAA+BU,gBAAAA,oBAAoB,eAAe,GAAG,EAAE;AAAA,IACzH,mBAAwB,MAAMV,iBAAAA,oBAAoB,+BAA+BW,gBAAAA,qBAAqB,kBAAkB,GAAG,EAAE;AAAA;AAAA,IAG7H,eAAwB,MAAMX,iBAAAA,oBAAoB,wBAAwBY,gBAAAA,eAAe,iBAAiB,GAAG,EAAE;AAAA,EAAA;AAEjH,WAAO,cAAS,aAAT,sCAAyB;AAClC;;;;;"}
|
|
1
|
+
{"version":3,"file":"constants-06kIVUBw.js","sources":["../../src/components/header/constants.ts"],"sourcesContent":["import { Pathname } from \"../../constants/pathnames/pathname\";\nimport { PathnameAccounting } from \"../../constants/pathnames/pathname.accounting\";\nimport { PathnameInventory } from \"../../constants/pathnames/pathname.inventory\";\nimport { PathnamePurchase } from \"../../constants/pathnames/pathname.procurement\";\nimport { PathnameCrm } from \"../../constants/pathnames/pathname.crm\";\nimport { PathnameRental } from \"../../constants/pathnames/pathname.rental\";\nimport {\n workOrderCrudPaths,\n billOfMaterialCrudPaths,\n buildOrderCrudPaths,\n jobCardsCrudPaths,\n productionPlanPaths,\n equipmentsCrudPaths,\n gateEntriesCrudPaths,\n} from \"../../constants/pathnames/pathname.manufacturing\";\nimport { generateRouteWithId } from \"../../utils/route-utils\";\n\n// ─── App-switcher ────────────────────────────────────────────────────────────\n\nexport const MODULE_META: Record<string, { meta: string; isNew?: boolean; fg: string }> = {\n \"/dashboard/user\": { meta: \"Users & Permissions\", fg: \"#7C3AED\" },\n \"/dashboard/drive\": { meta: \"Files & Documents\", fg: \"#C2410C\" },\n \"/dashboard/accounting\": { meta: \"Finance & Ledger\", fg: \"#16A34A\" },\n \"/dashboard/inventory\": { meta: \"Stock & Warehouses\", fg: \"#4F46E5\" },\n \"/dashboard/project\": { meta: \"Tasks & Milestones\", fg: \"#BE185D\" },\n \"/dashboard/procurement\": { meta: \"Orders & Vendors\", fg: \"#BE123C\" },\n \"/dashboard/manufacturing\": { meta: \"Production & BOM\", fg: \"#DC2626\" },\n \"/dashboard/crm\": { meta: \"Leads & Pipelines\", fg: \"#6D28D9\" },\n \"/dashboard/hrms\": { meta: \"Employees & Payroll\", fg: \"#0284C7\", isNew: true },\n \"/dashboard/office\": { meta: \"Assets & Spaces\", fg: \"#0D9488\" },\n \"/dashboard/rental\": { meta: \"Rentals & Contracts\", fg: \"#15803D\", isNew: true },\n \"/dashboard/settings\": { meta: \"System Configuration\", fg: \"#4338CA\" },\n \"/dashboard/onboarding\": { meta: \"Setup & Guides\", fg: \"#7C3AED\" },\n};\n\n// ─── Global search ───────────────────────────────────────────────────────────\n\nexport const DOC_TYPE_LABEL: Record<string, string> = {\n // Account\n sales_invoices: 'Sales Invoices',\n purchase_invoices: 'Purchase Invoices',\n payment_entries: 'Payments',\n credit_notes: 'Credit Notes',\n debit_notes: 'Debit Notes',\n journal_entries: 'Journal Entries',\n expense_reimbursements: 'Expenses',\n cash_expenses: 'Cash Expenses',\n budgets: 'Budgets',\n assets: 'Fixed Assets',\n asset_transfers: 'Asset Transfers',\n parties: 'Parties',\n // Sales / CRM\n sales_orders: 'Sales Orders',\n sl_sales_orders: 'Sales Orders',\n sl_quotation: 'Quotations',\n sl_delivery_orders: 'Delivery Orders',\n sl_customer_returns: 'Customer Returns',\n sl_opportunity_parties: 'Opportunities',\n sl_promotions: 'Promotions',\n // Purchase\n purchase_orders: 'Purchase Orders',\n pr_purchase_orders: 'Purchase Orders',\n pr_purchase_requests: 'Purchase Requests',\n pr_rfqs: 'RFQs',\n pr_vras: 'Vendor Returns',\n pr_delivery_orders: 'Purchase Delivery Orders',\n pr_purchase_agreements: 'Purchase Agreements',\n // Inventory\n items: 'Items',\n warehouse_location: 'Warehouses',\n inventory_adjustments: 'Stock Adjustments',\n bin_transfers: 'Bin Transfers',\n stock_transfers: 'Stock Transfers',\n // Manufacturing\n mf_work_orders: 'Work Orders',\n mf_bom: 'Bill of Materials',\n mf_build_orders: 'Build Orders',\n mf_job_cards: 'Job Cards',\n mf_production_plan: 'Production Plans',\n mf_equipments: 'Equipment',\n mf_gate_registers: 'Gate Registers',\n};\n\nexport const MODULE_THUMB_COLOR: Record<string, string> = {\n inventory: 'linear-gradient(135deg,#4F46E5,#3730A3)',\n account: 'linear-gradient(135deg,#16A34A,#15803D)',\n hrms: 'linear-gradient(135deg,#0284C7,#0369A1)',\n sales: 'linear-gradient(135deg,#C2410C,#9A3412)',\n purchase: 'linear-gradient(135deg,#BE123C,#9F1239)',\n manufacturing: 'linear-gradient(135deg,#DC2626,#B91C1C)',\n rental: 'linear-gradient(135deg,#15803D,#166534)',\n document: 'linear-gradient(135deg,#C2410C,#9A3412)',\n};\n\nconst PathnameGeneratorAccounting = (name: string) => Pathname.DASHBOARD_ACCOUNTING + name;\nconst PathnameGeneratorInventory = (name: string) => Pathname.DASHBOARD_INVENTORY + name;\nconst PathnameGeneratorPurchase = (name: string) => Pathname.DASHBOARD_PROCUREMENT + name;\nconst PathnameGeneratorCrm = (name: string) => Pathname.DASHBOARD_CRM + name;\nconst PathnameGeneratorRental = (name: string) => Pathname.DASHBOARD_RENTAL + name;\nconst PathnameGeneratorManufacturing = (name: string) => Pathname.DASHBOARD_MANUFACTURING + name;\n\nexport const getSearchResultUrl = (docType: string, sourceId: number, item?: any): string | null => {\n const id = sourceId.toString();\n const routeMap: Record<string, () => string> = {\n // ── Account ──────────────────────────────────────────────────────────────\n journal_entries: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_JOURNAL_ENTRY), id),\n payment_entries: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_PAYMENT_ENTRY), id),\n sales_invoices: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_SALES_INVOICES), id),\n purchase_invoices: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_PURCHASE_INVOICE), id),\n cash_expenses: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_CASH_EXPENSE), id),\n expense_reimbursements: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), id),\n credit_notes: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_CREDIT_NOTE), id),\n debit_notes: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_DEBIT_NOTE), id),\n budgets: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_BUDGET), id),\n assets: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_ASSET), id),\n asset_transfers: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_ASSET_TRANSFER), id),\n parties: () => {\n const isVendor = item?.transaction_type === 'vendor';\n const route = isVendor ? PathnameAccounting.VIEW_VENDOR_MANAGEMENT : PathnameAccounting.VIEW_CUSTOMER_MANAGEMENT;\n return generateRouteWithId(PathnameGeneratorAccounting(route), id);\n },\n\n // ── Sales / CRM (both with and without sl_ prefix) ───────────────────────\n sales_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), id),\n sl_sales_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), id),\n sl_quotation: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_QUOTATION), id),\n sl_delivery_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_DELIVERTY_ORDER), id),\n sl_customer_returns: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), id),\n sl_opportunity_parties: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_OPPORTUNITY), id),\n sl_promotions: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_PROMOTIONS), id),\n\n // ── Purchase (both with and without pr_ prefix) ───────────────────────────\n purchase_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), id),\n pr_purchase_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), id),\n pr_purchase_requests: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_REQUEST), id),\n pr_rfqs: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_RFQ), id),\n pr_vras: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), id),\n pr_delivery_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_DELIVERY_ORDER), id),\n pr_purchase_agreements: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), id),\n\n // ── Inventory ─────────────────────────────────────────────────────────────\n stock_transfers: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), id),\n items: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_INVENTORY_ITEM), id),\n warehouse_location: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_LOCATION), id),\n inventory_adjustments: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_INVENTORY_ADJUSTMENT), id),\n bin_transfers: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_BIN_TRANSFER), id),\n\n // ── Manufacturing ─────────────────────────────────────────────────────────\n mf_work_orders: () => generateRouteWithId(PathnameGeneratorManufacturing(workOrderCrudPaths.VIEW_WORK_ORDER), id),\n mf_bom: () => generateRouteWithId(PathnameGeneratorManufacturing(billOfMaterialCrudPaths.VIEW_BILL_OF_MATERIAL), id),\n mf_build_orders: () => generateRouteWithId(PathnameGeneratorManufacturing(buildOrderCrudPaths.VIEW_BUILD_ORDER), id),\n mf_job_cards: () => generateRouteWithId(PathnameGeneratorManufacturing(jobCardsCrudPaths.VIEW_JOB_CARDS), id),\n mf_production_plan: () => generateRouteWithId(PathnameGeneratorManufacturing(productionPlanPaths.PRODUCTION_PLAN_VIEW), id),\n mf_equipments: () => generateRouteWithId(PathnameGeneratorManufacturing(equipmentsCrudPaths.VIEW_EQUIPMENTS), id),\n mf_gate_registers: () => generateRouteWithId(PathnameGeneratorManufacturing(gateEntriesCrudPaths.VIEW_GATE_REGISTER), id),\n\n // ── Rental ────────────────────────────────────────────────────────────────\n rental_orders: () => generateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), id),\n };\n return routeMap[docType]?.() ?? null;\n};\n"],"names":["Pathname","generateRouteWithId","PathnameAccounting","PathnameCrm","PathnamePurchase","PathnameInventory","workOrderCrudPaths","billOfMaterialCrudPaths","buildOrderCrudPaths","jobCardsCrudPaths","productionPlanPaths","equipmentsCrudPaths","gateEntriesCrudPaths","PathnameRental"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { P as Pathname } from "./pathname-DkK1_yYM.esm.js";
|
|
2
|
-
import { e as PathnameRental, A as gateEntriesCrudPaths, y as equipmentsCrudPaths,
|
|
2
|
+
import { e as PathnameRental, A as gateEntriesCrudPaths, y as equipmentsCrudPaths, a0 as productionPlanPaths, G as jobCardsCrudPaths, k as buildOrderCrudPaths, g as billOfMaterialCrudPaths, aF as workOrderCrudPaths, b as PathnameInventory, d as PathnamePurchase, a as PathnameCrm, P as PathnameAccounting } from "./pathname.rental-qsAe3XFd.esm.js";
|
|
3
3
|
import { generateRouteWithId } from "../utils/route-utils/index.esm.js";
|
|
4
4
|
const MODULE_META = {
|
|
5
5
|
"/dashboard/user": { meta: "Users & Permissions", fg: "#7C3AED" },
|
|
@@ -139,4 +139,4 @@ export {
|
|
|
139
139
|
MODULE_THUMB_COLOR as a,
|
|
140
140
|
getSearchResultUrl as g
|
|
141
141
|
};
|
|
142
|
-
//# sourceMappingURL=constants-
|
|
142
|
+
//# sourceMappingURL=constants-nmkxkzps.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants-BrmMAwu2.esm.js","sources":["../../src/components/header/constants.ts"],"sourcesContent":["import { Pathname } from \"../../constants/pathnames/pathname\";\nimport { PathnameAccounting } from \"../../constants/pathnames/pathname.accounting\";\nimport { PathnameInventory } from \"../../constants/pathnames/pathname.inventory\";\nimport { PathnamePurchase } from \"../../constants/pathnames/pathname.procurement\";\nimport { PathnameCrm } from \"../../constants/pathnames/pathname.crm\";\nimport { PathnameRental } from \"../../constants/pathnames/pathname.rental\";\nimport {\n workOrderCrudPaths,\n billOfMaterialCrudPaths,\n buildOrderCrudPaths,\n jobCardsCrudPaths,\n productionPlanPaths,\n equipmentsCrudPaths,\n gateEntriesCrudPaths,\n} from \"../../constants/pathnames/pathname.manufacturing\";\nimport { generateRouteWithId } from \"../../utils/route-utils\";\n\n// ─── App-switcher ────────────────────────────────────────────────────────────\n\nexport const MODULE_META: Record<string, { meta: string; isNew?: boolean; fg: string }> = {\n \"/dashboard/user\": { meta: \"Users & Permissions\", fg: \"#7C3AED\" },\n \"/dashboard/drive\": { meta: \"Files & Documents\", fg: \"#C2410C\" },\n \"/dashboard/accounting\": { meta: \"Finance & Ledger\", fg: \"#16A34A\" },\n \"/dashboard/inventory\": { meta: \"Stock & Warehouses\", fg: \"#4F46E5\" },\n \"/dashboard/project\": { meta: \"Tasks & Milestones\", fg: \"#BE185D\" },\n \"/dashboard/procurement\": { meta: \"Orders & Vendors\", fg: \"#BE123C\" },\n \"/dashboard/manufacturing\": { meta: \"Production & BOM\", fg: \"#DC2626\" },\n \"/dashboard/crm\": { meta: \"Leads & Pipelines\", fg: \"#6D28D9\" },\n \"/dashboard/hrms\": { meta: \"Employees & Payroll\", fg: \"#0284C7\", isNew: true },\n \"/dashboard/office\": { meta: \"Assets & Spaces\", fg: \"#0D9488\" },\n \"/dashboard/rental\": { meta: \"Rentals & Contracts\", fg: \"#15803D\", isNew: true },\n \"/dashboard/settings\": { meta: \"System Configuration\", fg: \"#4338CA\" },\n \"/dashboard/onboarding\": { meta: \"Setup & Guides\", fg: \"#7C3AED\" },\n};\n\n// ─── Global search ───────────────────────────────────────────────────────────\n\nexport const DOC_TYPE_LABEL: Record<string, string> = {\n // Account\n sales_invoices: 'Sales Invoices',\n purchase_invoices: 'Purchase Invoices',\n payment_entries: 'Payments',\n credit_notes: 'Credit Notes',\n debit_notes: 'Debit Notes',\n journal_entries: 'Journal Entries',\n expense_reimbursements: 'Expenses',\n cash_expenses: 'Cash Expenses',\n budgets: 'Budgets',\n assets: 'Fixed Assets',\n asset_transfers: 'Asset Transfers',\n parties: 'Parties',\n // Sales / CRM\n sales_orders: 'Sales Orders',\n sl_sales_orders: 'Sales Orders',\n sl_quotation: 'Quotations',\n sl_delivery_orders: 'Delivery Orders',\n sl_customer_returns: 'Customer Returns',\n sl_opportunity_parties: 'Opportunities',\n sl_promotions: 'Promotions',\n // Purchase\n purchase_orders: 'Purchase Orders',\n pr_purchase_orders: 'Purchase Orders',\n pr_purchase_requests: 'Purchase Requests',\n pr_rfqs: 'RFQs',\n pr_vras: 'Vendor Returns',\n pr_delivery_orders: 'Purchase Delivery Orders',\n pr_purchase_agreements: 'Purchase Agreements',\n // Inventory\n items: 'Items',\n warehouse_location: 'Warehouses',\n inventory_adjustments: 'Stock Adjustments',\n bin_transfers: 'Bin Transfers',\n stock_transfers: 'Stock Transfers',\n // Manufacturing\n mf_work_orders: 'Work Orders',\n mf_bom: 'Bill of Materials',\n mf_build_orders: 'Build Orders',\n mf_job_cards: 'Job Cards',\n mf_production_plan: 'Production Plans',\n mf_equipments: 'Equipment',\n mf_gate_registers: 'Gate Registers',\n};\n\nexport const MODULE_THUMB_COLOR: Record<string, string> = {\n inventory: 'linear-gradient(135deg,#4F46E5,#3730A3)',\n account: 'linear-gradient(135deg,#16A34A,#15803D)',\n hrms: 'linear-gradient(135deg,#0284C7,#0369A1)',\n sales: 'linear-gradient(135deg,#C2410C,#9A3412)',\n purchase: 'linear-gradient(135deg,#BE123C,#9F1239)',\n manufacturing: 'linear-gradient(135deg,#DC2626,#B91C1C)',\n rental: 'linear-gradient(135deg,#15803D,#166534)',\n document: 'linear-gradient(135deg,#C2410C,#9A3412)',\n};\n\nconst PathnameGeneratorAccounting = (name: string) => Pathname.DASHBOARD_ACCOUNTING + name;\nconst PathnameGeneratorInventory = (name: string) => Pathname.DASHBOARD_INVENTORY + name;\nconst PathnameGeneratorPurchase = (name: string) => Pathname.DASHBOARD_PROCUREMENT + name;\nconst PathnameGeneratorCrm = (name: string) => Pathname.DASHBOARD_CRM + name;\nconst PathnameGeneratorRental = (name: string) => Pathname.DASHBOARD_RENTAL + name;\nconst PathnameGeneratorManufacturing = (name: string) => Pathname.DASHBOARD_MANUFACTURING + name;\n\nexport const getSearchResultUrl = (docType: string, sourceId: number, item?: any): string | null => {\n const id = sourceId.toString();\n const routeMap: Record<string, () => string> = {\n // ── Account ──────────────────────────────────────────────────────────────\n journal_entries: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_JOURNAL_ENTRY), id),\n payment_entries: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_PAYMENT_ENTRY), id),\n sales_invoices: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_SALES_INVOICES), id),\n purchase_invoices: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_PURCHASE_INVOICE), id),\n cash_expenses: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_CASH_EXPENSE), id),\n expense_reimbursements: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), id),\n credit_notes: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_CREDIT_NOTE), id),\n debit_notes: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_DEBIT_NOTE), id),\n budgets: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_BUDGET), id),\n assets: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_ASSET), id),\n asset_transfers: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_ASSET_TRANSFER), id),\n parties: () => {\n const isVendor = item?.transaction_type === 'vendor';\n const route = isVendor ? PathnameAccounting.VIEW_VENDOR_MANAGEMENT : PathnameAccounting.VIEW_CUSTOMER_MANAGEMENT;\n return generateRouteWithId(PathnameGeneratorAccounting(route), id);\n },\n\n // ── Sales / CRM (both with and without sl_ prefix) ───────────────────────\n sales_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), id),\n sl_sales_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), id),\n sl_quotation: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_QUOTATION), id),\n sl_delivery_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_DELIVERTY_ORDER), id),\n sl_customer_returns: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), id),\n sl_opportunity_parties: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_OPPORTUNITY), id),\n sl_promotions: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_PROMOTIONS), id),\n\n // ── Purchase (both with and without pr_ prefix) ───────────────────────────\n purchase_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), id),\n pr_purchase_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), id),\n pr_purchase_requests: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_REQUEST), id),\n pr_rfqs: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_RFQ), id),\n pr_vras: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), id),\n pr_delivery_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_DELIVERY_ORDER), id),\n pr_purchase_agreements: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), id),\n\n // ── Inventory ─────────────────────────────────────────────────────────────\n stock_transfers: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), id),\n items: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_INVENTORY_ITEM), id),\n warehouse_location: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_LOCATION), id),\n inventory_adjustments: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_INVENTORY_ADJUSTMENT), id),\n bin_transfers: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_BIN_TRANSFER), id),\n\n // ── Manufacturing ─────────────────────────────────────────────────────────\n mf_work_orders: () => generateRouteWithId(PathnameGeneratorManufacturing(workOrderCrudPaths.VIEW_WORK_ORDER), id),\n mf_bom: () => generateRouteWithId(PathnameGeneratorManufacturing(billOfMaterialCrudPaths.VIEW_BILL_OF_MATERIAL), id),\n mf_build_orders: () => generateRouteWithId(PathnameGeneratorManufacturing(buildOrderCrudPaths.VIEW_BUILD_ORDER), id),\n mf_job_cards: () => generateRouteWithId(PathnameGeneratorManufacturing(jobCardsCrudPaths.VIEW_JOB_CARDS), id),\n mf_production_plan: () => generateRouteWithId(PathnameGeneratorManufacturing(productionPlanPaths.PRODUCTION_PLAN_VIEW), id),\n mf_equipments: () => generateRouteWithId(PathnameGeneratorManufacturing(equipmentsCrudPaths.VIEW_EQUIPMENTS), id),\n mf_gate_registers: () => generateRouteWithId(PathnameGeneratorManufacturing(gateEntriesCrudPaths.VIEW_GATE_REGISTER), id),\n\n // ── Rental ────────────────────────────────────────────────────────────────\n rental_orders: () => generateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), id),\n };\n return routeMap[docType]?.() ?? null;\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants-nmkxkzps.esm.js","sources":["../../src/components/header/constants.ts"],"sourcesContent":["import { Pathname } from \"../../constants/pathnames/pathname\";\nimport { PathnameAccounting } from \"../../constants/pathnames/pathname.accounting\";\nimport { PathnameInventory } from \"../../constants/pathnames/pathname.inventory\";\nimport { PathnamePurchase } from \"../../constants/pathnames/pathname.procurement\";\nimport { PathnameCrm } from \"../../constants/pathnames/pathname.crm\";\nimport { PathnameRental } from \"../../constants/pathnames/pathname.rental\";\nimport {\n workOrderCrudPaths,\n billOfMaterialCrudPaths,\n buildOrderCrudPaths,\n jobCardsCrudPaths,\n productionPlanPaths,\n equipmentsCrudPaths,\n gateEntriesCrudPaths,\n} from \"../../constants/pathnames/pathname.manufacturing\";\nimport { generateRouteWithId } from \"../../utils/route-utils\";\n\n// ─── App-switcher ────────────────────────────────────────────────────────────\n\nexport const MODULE_META: Record<string, { meta: string; isNew?: boolean; fg: string }> = {\n \"/dashboard/user\": { meta: \"Users & Permissions\", fg: \"#7C3AED\" },\n \"/dashboard/drive\": { meta: \"Files & Documents\", fg: \"#C2410C\" },\n \"/dashboard/accounting\": { meta: \"Finance & Ledger\", fg: \"#16A34A\" },\n \"/dashboard/inventory\": { meta: \"Stock & Warehouses\", fg: \"#4F46E5\" },\n \"/dashboard/project\": { meta: \"Tasks & Milestones\", fg: \"#BE185D\" },\n \"/dashboard/procurement\": { meta: \"Orders & Vendors\", fg: \"#BE123C\" },\n \"/dashboard/manufacturing\": { meta: \"Production & BOM\", fg: \"#DC2626\" },\n \"/dashboard/crm\": { meta: \"Leads & Pipelines\", fg: \"#6D28D9\" },\n \"/dashboard/hrms\": { meta: \"Employees & Payroll\", fg: \"#0284C7\", isNew: true },\n \"/dashboard/office\": { meta: \"Assets & Spaces\", fg: \"#0D9488\" },\n \"/dashboard/rental\": { meta: \"Rentals & Contracts\", fg: \"#15803D\", isNew: true },\n \"/dashboard/settings\": { meta: \"System Configuration\", fg: \"#4338CA\" },\n \"/dashboard/onboarding\": { meta: \"Setup & Guides\", fg: \"#7C3AED\" },\n};\n\n// ─── Global search ───────────────────────────────────────────────────────────\n\nexport const DOC_TYPE_LABEL: Record<string, string> = {\n // Account\n sales_invoices: 'Sales Invoices',\n purchase_invoices: 'Purchase Invoices',\n payment_entries: 'Payments',\n credit_notes: 'Credit Notes',\n debit_notes: 'Debit Notes',\n journal_entries: 'Journal Entries',\n expense_reimbursements: 'Expenses',\n cash_expenses: 'Cash Expenses',\n budgets: 'Budgets',\n assets: 'Fixed Assets',\n asset_transfers: 'Asset Transfers',\n parties: 'Parties',\n // Sales / CRM\n sales_orders: 'Sales Orders',\n sl_sales_orders: 'Sales Orders',\n sl_quotation: 'Quotations',\n sl_delivery_orders: 'Delivery Orders',\n sl_customer_returns: 'Customer Returns',\n sl_opportunity_parties: 'Opportunities',\n sl_promotions: 'Promotions',\n // Purchase\n purchase_orders: 'Purchase Orders',\n pr_purchase_orders: 'Purchase Orders',\n pr_purchase_requests: 'Purchase Requests',\n pr_rfqs: 'RFQs',\n pr_vras: 'Vendor Returns',\n pr_delivery_orders: 'Purchase Delivery Orders',\n pr_purchase_agreements: 'Purchase Agreements',\n // Inventory\n items: 'Items',\n warehouse_location: 'Warehouses',\n inventory_adjustments: 'Stock Adjustments',\n bin_transfers: 'Bin Transfers',\n stock_transfers: 'Stock Transfers',\n // Manufacturing\n mf_work_orders: 'Work Orders',\n mf_bom: 'Bill of Materials',\n mf_build_orders: 'Build Orders',\n mf_job_cards: 'Job Cards',\n mf_production_plan: 'Production Plans',\n mf_equipments: 'Equipment',\n mf_gate_registers: 'Gate Registers',\n};\n\nexport const MODULE_THUMB_COLOR: Record<string, string> = {\n inventory: 'linear-gradient(135deg,#4F46E5,#3730A3)',\n account: 'linear-gradient(135deg,#16A34A,#15803D)',\n hrms: 'linear-gradient(135deg,#0284C7,#0369A1)',\n sales: 'linear-gradient(135deg,#C2410C,#9A3412)',\n purchase: 'linear-gradient(135deg,#BE123C,#9F1239)',\n manufacturing: 'linear-gradient(135deg,#DC2626,#B91C1C)',\n rental: 'linear-gradient(135deg,#15803D,#166534)',\n document: 'linear-gradient(135deg,#C2410C,#9A3412)',\n};\n\nconst PathnameGeneratorAccounting = (name: string) => Pathname.DASHBOARD_ACCOUNTING + name;\nconst PathnameGeneratorInventory = (name: string) => Pathname.DASHBOARD_INVENTORY + name;\nconst PathnameGeneratorPurchase = (name: string) => Pathname.DASHBOARD_PROCUREMENT + name;\nconst PathnameGeneratorCrm = (name: string) => Pathname.DASHBOARD_CRM + name;\nconst PathnameGeneratorRental = (name: string) => Pathname.DASHBOARD_RENTAL + name;\nconst PathnameGeneratorManufacturing = (name: string) => Pathname.DASHBOARD_MANUFACTURING + name;\n\nexport const getSearchResultUrl = (docType: string, sourceId: number, item?: any): string | null => {\n const id = sourceId.toString();\n const routeMap: Record<string, () => string> = {\n // ── Account ──────────────────────────────────────────────────────────────\n journal_entries: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_JOURNAL_ENTRY), id),\n payment_entries: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_PAYMENT_ENTRY), id),\n sales_invoices: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_SALES_INVOICES), id),\n purchase_invoices: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_PURCHASE_INVOICE), id),\n cash_expenses: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_CASH_EXPENSE), id),\n expense_reimbursements: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), id),\n credit_notes: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_CREDIT_NOTE), id),\n debit_notes: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_DEBIT_NOTE), id),\n budgets: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_BUDGET), id),\n assets: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_ASSET), id),\n asset_transfers: () => generateRouteWithId(PathnameGeneratorAccounting(PathnameAccounting.VIEW_ASSET_TRANSFER), id),\n parties: () => {\n const isVendor = item?.transaction_type === 'vendor';\n const route = isVendor ? PathnameAccounting.VIEW_VENDOR_MANAGEMENT : PathnameAccounting.VIEW_CUSTOMER_MANAGEMENT;\n return generateRouteWithId(PathnameGeneratorAccounting(route), id);\n },\n\n // ── Sales / CRM (both with and without sl_ prefix) ───────────────────────\n sales_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), id),\n sl_sales_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), id),\n sl_quotation: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_QUOTATION), id),\n sl_delivery_orders: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_DELIVERTY_ORDER), id),\n sl_customer_returns: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), id),\n sl_opportunity_parties: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_OPPORTUNITY), id),\n sl_promotions: () => generateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_PROMOTIONS), id),\n\n // ── Purchase (both with and without pr_ prefix) ───────────────────────────\n purchase_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), id),\n pr_purchase_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), id),\n pr_purchase_requests: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_REQUEST), id),\n pr_rfqs: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_RFQ), id),\n pr_vras: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), id),\n pr_delivery_orders: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_DELIVERY_ORDER), id),\n pr_purchase_agreements: () => generateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), id),\n\n // ── Inventory ─────────────────────────────────────────────────────────────\n stock_transfers: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), id),\n items: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_INVENTORY_ITEM), id),\n warehouse_location: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_LOCATION), id),\n inventory_adjustments: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_INVENTORY_ADJUSTMENT), id),\n bin_transfers: () => generateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_BIN_TRANSFER), id),\n\n // ── Manufacturing ─────────────────────────────────────────────────────────\n mf_work_orders: () => generateRouteWithId(PathnameGeneratorManufacturing(workOrderCrudPaths.VIEW_WORK_ORDER), id),\n mf_bom: () => generateRouteWithId(PathnameGeneratorManufacturing(billOfMaterialCrudPaths.VIEW_BILL_OF_MATERIAL), id),\n mf_build_orders: () => generateRouteWithId(PathnameGeneratorManufacturing(buildOrderCrudPaths.VIEW_BUILD_ORDER), id),\n mf_job_cards: () => generateRouteWithId(PathnameGeneratorManufacturing(jobCardsCrudPaths.VIEW_JOB_CARDS), id),\n mf_production_plan: () => generateRouteWithId(PathnameGeneratorManufacturing(productionPlanPaths.PRODUCTION_PLAN_VIEW), id),\n mf_equipments: () => generateRouteWithId(PathnameGeneratorManufacturing(equipmentsCrudPaths.VIEW_EQUIPMENTS), id),\n mf_gate_registers: () => generateRouteWithId(PathnameGeneratorManufacturing(gateEntriesCrudPaths.VIEW_GATE_REGISTER), id),\n\n // ── Rental ────────────────────────────────────────────────────────────────\n rental_orders: () => generateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), id),\n };\n return routeMap[docType]?.() ?? null;\n};\n"],"names":[],"mappings":"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"}
|