@rytass/bpm-core-react 0.2.0
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/LICENSE +21 -0
- package/README.md +56 -0
- package/dist/AdminDelegationsView.css +1 -0
- package/dist/AdminOrgsView.css +1 -0
- package/dist/AdminUsersView.css +1 -0
- package/dist/DelegationsView.css +1 -0
- package/dist/InstanceDetailView.css +1 -0
- package/dist/LoginView.css +1 -0
- package/dist/SettingsNotificationsView.css +1 -0
- package/dist/admin-pickers.css +1 -0
- package/dist/app-navigation.css +1 -0
- package/dist/approval-instance-list-page.css +1 -0
- package/dist/auth-provider.css +1 -0
- package/dist/chunks/AdminDelegationsView-CqNmlVWx.cjs +2 -0
- package/dist/chunks/AdminDelegationsView-CqNmlVWx.cjs.map +1 -0
- package/dist/chunks/AdminDelegationsView-DydMZ9ED.js +642 -0
- package/dist/chunks/AdminDelegationsView-DydMZ9ED.js.map +1 -0
- package/dist/chunks/AdminOrgsView-DZaVAbaQ.js +1945 -0
- package/dist/chunks/AdminOrgsView-DZaVAbaQ.js.map +1 -0
- package/dist/chunks/AdminOrgsView-bSsIyMvk.cjs +2 -0
- package/dist/chunks/AdminOrgsView-bSsIyMvk.cjs.map +1 -0
- package/dist/chunks/AdminUsersView-C0oO05Br.js +215 -0
- package/dist/chunks/AdminUsersView-C0oO05Br.js.map +1 -0
- package/dist/chunks/AdminUsersView-DlArLlIr.cjs +2 -0
- package/dist/chunks/AdminUsersView-DlArLlIr.cjs.map +1 -0
- package/dist/chunks/CcView-BsVsya5F.cjs +2 -0
- package/dist/chunks/CcView-BsVsya5F.cjs.map +1 -0
- package/dist/chunks/CcView-Bv0GzA5C.js +19 -0
- package/dist/chunks/CcView-Bv0GzA5C.js.map +1 -0
- package/dist/chunks/DashboardView-Dk1ZQmmk.js +11 -0
- package/dist/chunks/DashboardView-Dk1ZQmmk.js.map +1 -0
- package/dist/chunks/DashboardView-_0zh-rxT.cjs +2 -0
- package/dist/chunks/DashboardView-_0zh-rxT.cjs.map +1 -0
- package/dist/chunks/DelegationsView-DQUqOUV5.js +569 -0
- package/dist/chunks/DelegationsView-DQUqOUV5.js.map +1 -0
- package/dist/chunks/DelegationsView-pKeFV2LN.cjs +2 -0
- package/dist/chunks/DelegationsView-pKeFV2LN.cjs.map +1 -0
- package/dist/chunks/FormBuilderView-BKtyW55e.cjs +3 -0
- package/dist/chunks/FormBuilderView-BKtyW55e.cjs.map +1 -0
- package/dist/chunks/FormBuilderView-CvChAvgD.js +1300 -0
- package/dist/chunks/FormBuilderView-CvChAvgD.js.map +1 -0
- package/dist/chunks/FormRendererView-BwVsH2eX.cjs +2 -0
- package/dist/chunks/FormRendererView-BwVsH2eX.cjs.map +1 -0
- package/dist/chunks/FormRendererView-DrHsuSVo.js +220 -0
- package/dist/chunks/FormRendererView-DrHsuSVo.js.map +1 -0
- package/dist/chunks/FormsView-DYEuik8W.js +185 -0
- package/dist/chunks/FormsView-DYEuik8W.js.map +1 -0
- package/dist/chunks/FormsView-RjJEkIfZ.cjs +2 -0
- package/dist/chunks/FormsView-RjJEkIfZ.cjs.map +1 -0
- package/dist/chunks/InboxView-DDWwmWhA.cjs +2 -0
- package/dist/chunks/InboxView-DDWwmWhA.cjs.map +1 -0
- package/dist/chunks/InboxView-YSoyrYLk.js +291 -0
- package/dist/chunks/InboxView-YSoyrYLk.js.map +1 -0
- package/dist/chunks/InstanceDetailView-C-A-LOCG.js +1519 -0
- package/dist/chunks/InstanceDetailView-C-A-LOCG.js.map +1 -0
- package/dist/chunks/InstanceDetailView-l_kNDCz2.cjs +2 -0
- package/dist/chunks/InstanceDetailView-l_kNDCz2.cjs.map +1 -0
- package/dist/chunks/InstanceNewView-B5hz-FWd.js +190 -0
- package/dist/chunks/InstanceNewView-B5hz-FWd.js.map +1 -0
- package/dist/chunks/InstanceNewView-CdCsxQIu.cjs +2 -0
- package/dist/chunks/InstanceNewView-CdCsxQIu.cjs.map +1 -0
- package/dist/chunks/LoginView-BED07v-7.cjs +2 -0
- package/dist/chunks/LoginView-BED07v-7.cjs.map +1 -0
- package/dist/chunks/LoginView-a1iu3cfc.js +157 -0
- package/dist/chunks/LoginView-a1iu3cfc.js.map +1 -0
- package/dist/chunks/RootClientView-rXJt4TDd.cjs +2 -0
- package/dist/chunks/RootClientView-rXJt4TDd.cjs.map +1 -0
- package/dist/chunks/RootClientView-wAkXUEZw.js +34 -0
- package/dist/chunks/RootClientView-wAkXUEZw.js.map +1 -0
- package/dist/chunks/SearchView-CgXPssgE.cjs +2 -0
- package/dist/chunks/SearchView-CgXPssgE.cjs.map +1 -0
- package/dist/chunks/SearchView-WXMbZwRw.js +19 -0
- package/dist/chunks/SearchView-WXMbZwRw.js.map +1 -0
- package/dist/chunks/SentView-BTDoFBrG.cjs +2 -0
- package/dist/chunks/SentView-BTDoFBrG.cjs.map +1 -0
- package/dist/chunks/SentView-CdOL92Rq.js +19 -0
- package/dist/chunks/SentView-CdOL92Rq.js.map +1 -0
- package/dist/chunks/SettingsNotificationsView-B6F6fa7U.js +194 -0
- package/dist/chunks/SettingsNotificationsView-B6F6fa7U.js.map +1 -0
- package/dist/chunks/SettingsNotificationsView-Bnz0CmoJ.cjs +2 -0
- package/dist/chunks/SettingsNotificationsView-Bnz0CmoJ.cjs.map +1 -0
- package/dist/chunks/TemplateCategoriesView-CgZciaSd.js +382 -0
- package/dist/chunks/TemplateCategoriesView-CgZciaSd.js.map +1 -0
- package/dist/chunks/TemplateCategoriesView-U0stGUBc.cjs +2 -0
- package/dist/chunks/TemplateCategoriesView-U0stGUBc.cjs.map +1 -0
- package/dist/chunks/TemplateDesignerView-A38DyYD4.cjs +51 -0
- package/dist/chunks/TemplateDesignerView-A38DyYD4.cjs.map +1 -0
- package/dist/chunks/TemplateDesignerView-Dffx-VZ-.js +2272 -0
- package/dist/chunks/TemplateDesignerView-Dffx-VZ-.js.map +1 -0
- package/dist/chunks/TemplateVersionsView-6sVQbBem.js +110 -0
- package/dist/chunks/TemplateVersionsView-6sVQbBem.js.map +1 -0
- package/dist/chunks/TemplateVersionsView-CMqw3ieU.cjs +2 -0
- package/dist/chunks/TemplateVersionsView-CMqw3ieU.cjs.map +1 -0
- package/dist/chunks/TemplatesView-BLj9f-XI.js +380 -0
- package/dist/chunks/TemplatesView-BLj9f-XI.js.map +1 -0
- package/dist/chunks/TemplatesView-DIOQTUUl.cjs +2 -0
- package/dist/chunks/TemplatesView-DIOQTUUl.cjs.map +1 -0
- package/dist/chunks/admin-pickers-Btvij1at.cjs +2 -0
- package/dist/chunks/admin-pickers-Btvij1at.cjs.map +1 -0
- package/dist/chunks/admin-pickers-DLlG_1du.js +140 -0
- package/dist/chunks/admin-pickers-DLlG_1du.js.map +1 -0
- package/dist/chunks/app-navigation-CATITRM7.js +263 -0
- package/dist/chunks/app-navigation-CATITRM7.js.map +1 -0
- package/dist/chunks/app-navigation-DAC5gFbG.cjs +2 -0
- package/dist/chunks/app-navigation-DAC5gFbG.cjs.map +1 -0
- package/dist/chunks/approval-instance-list-page-B6vAGvOb.js +278 -0
- package/dist/chunks/approval-instance-list-page-B6vAGvOb.js.map +1 -0
- package/dist/chunks/approval-instance-list-page-DIAmwhvl.cjs +2 -0
- package/dist/chunks/approval-instance-list-page-DIAmwhvl.cjs.map +1 -0
- package/dist/chunks/auth-provider-D2P-qWmY.cjs +2 -0
- package/dist/chunks/auth-provider-D2P-qWmY.cjs.map +1 -0
- package/dist/chunks/auth-provider-TTO9eNZV.js +83 -0
- package/dist/chunks/auth-provider-TTO9eNZV.js.map +1 -0
- package/dist/chunks/bpm-form-field-Bc6k4ZEO.cjs +2 -0
- package/dist/chunks/bpm-form-field-Bc6k4ZEO.cjs.map +1 -0
- package/dist/chunks/bpm-form-field-Cao0rMol.js +17 -0
- package/dist/chunks/bpm-form-field-Cao0rMol.js.map +1 -0
- package/dist/chunks/dashboard-page-BsW8t104.js +115 -0
- package/dist/chunks/dashboard-page-BsW8t104.js.map +1 -0
- package/dist/chunks/dashboard-page-udYhnyMW.cjs +2 -0
- package/dist/chunks/dashboard-page-udYhnyMW.cjs.map +1 -0
- package/dist/chunks/form-name-modal-C3OEvkCV.js +64 -0
- package/dist/chunks/form-name-modal-C3OEvkCV.js.map +1 -0
- package/dist/chunks/form-name-modal-uZCHbtRH.cjs +2 -0
- package/dist/chunks/form-name-modal-uZCHbtRH.cjs.map +1 -0
- package/dist/chunks/format-date-time-BQyH5U8z.cjs +2 -0
- package/dist/chunks/format-date-time-BQyH5U8z.cjs.map +1 -0
- package/dist/chunks/format-date-time-CB-LxzqT.js +9 -0
- package/dist/chunks/format-date-time-CB-LxzqT.js.map +1 -0
- package/dist/chunks/router-adapter-BdHZXLS3.js +23 -0
- package/dist/chunks/router-adapter-BdHZXLS3.js.map +1 -0
- package/dist/chunks/router-adapter-BybHrCNP.cjs +2 -0
- package/dist/chunks/router-adapter-BybHrCNP.cjs.map +1 -0
- package/dist/chunks/templates.module-B5bg_goX.js +8 -0
- package/dist/chunks/templates.module-B5bg_goX.js.map +1 -0
- package/dist/chunks/templates.module-ClRnQQX4.cjs +2 -0
- package/dist/chunks/templates.module-ClRnQQX4.cjs.map +1 -0
- package/dist/components/admin-pickers.d.ts +65 -0
- package/dist/components/app-navigation.d.ts +34 -0
- package/dist/components/approval-instance-list-page.d.ts +18 -0
- package/dist/components/bpm-form-field.d.ts +10 -0
- package/dist/components/dashboard-page.d.ts +10 -0
- package/dist/components/notification-drawer.d.ts +10 -0
- package/dist/components/org-unit-tree-draft-editor.d.ts +24 -0
- package/dist/components/pdf-preview.d.ts +12 -0
- package/dist/dashboard-page.css +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +209 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth-provider.d.ts +37 -0
- package/dist/lib/format-date-time.d.ts +5 -0
- package/dist/lib/notification-drawer-provider.d.ts +26 -0
- package/dist/lib/notification-unread-provider.d.ts +24 -0
- package/dist/lib/org-tree-draft.d.ts +27 -0
- package/dist/lib/providers.d.ts +30 -0
- package/dist/lib/router-adapter.d.ts +47 -0
- package/dist/pages/admin/delegations/AdminDelegationsClientView.cjs +2 -0
- package/dist/pages/admin/delegations/AdminDelegationsClientView.cjs.map +1 -0
- package/dist/pages/admin/delegations/AdminDelegationsClientView.d.ts +3 -0
- package/dist/pages/admin/delegations/AdminDelegationsClientView.js +28 -0
- package/dist/pages/admin/delegations/AdminDelegationsClientView.js.map +1 -0
- package/dist/pages/admin/delegations/index.cjs +2 -0
- package/dist/pages/admin/delegations/index.cjs.map +1 -0
- package/dist/pages/admin/delegations/index.d.ts +4 -0
- package/dist/pages/admin/delegations/index.js +14 -0
- package/dist/pages/admin/delegations/index.js.map +1 -0
- package/dist/pages/admin/orgs/AdminOrgsClientView.cjs +2 -0
- package/dist/pages/admin/orgs/AdminOrgsClientView.cjs.map +1 -0
- package/dist/pages/admin/orgs/AdminOrgsClientView.d.ts +3 -0
- package/dist/pages/admin/orgs/AdminOrgsClientView.js +28 -0
- package/dist/pages/admin/orgs/AdminOrgsClientView.js.map +1 -0
- package/dist/pages/admin/orgs/index.cjs +2 -0
- package/dist/pages/admin/orgs/index.cjs.map +1 -0
- package/dist/pages/admin/orgs/index.d.ts +4 -0
- package/dist/pages/admin/orgs/index.js +14 -0
- package/dist/pages/admin/orgs/index.js.map +1 -0
- package/dist/pages/admin/users/AdminUsersClientView.cjs +2 -0
- package/dist/pages/admin/users/AdminUsersClientView.cjs.map +1 -0
- package/dist/pages/admin/users/AdminUsersClientView.d.ts +3 -0
- package/dist/pages/admin/users/AdminUsersClientView.js +28 -0
- package/dist/pages/admin/users/AdminUsersClientView.js.map +1 -0
- package/dist/pages/admin/users/index.cjs +2 -0
- package/dist/pages/admin/users/index.cjs.map +1 -0
- package/dist/pages/admin/users/index.d.ts +4 -0
- package/dist/pages/admin/users/index.js +14 -0
- package/dist/pages/admin/users/index.js.map +1 -0
- package/dist/pages/cc/CcClientView.cjs +2 -0
- package/dist/pages/cc/CcClientView.cjs.map +1 -0
- package/dist/pages/cc/CcClientView.d.ts +7 -0
- package/dist/pages/cc/CcClientView.js +28 -0
- package/dist/pages/cc/CcClientView.js.map +1 -0
- package/dist/pages/cc/index.cjs +2 -0
- package/dist/pages/cc/index.cjs.map +1 -0
- package/dist/pages/cc/index.d.ts +16 -0
- package/dist/pages/cc/index.js +11 -0
- package/dist/pages/cc/index.js.map +1 -0
- package/dist/pages/dashboard/DashboardClientView.cjs +2 -0
- package/dist/pages/dashboard/DashboardClientView.cjs.map +1 -0
- package/dist/pages/dashboard/DashboardClientView.d.ts +9 -0
- package/dist/pages/dashboard/DashboardClientView.js +28 -0
- package/dist/pages/dashboard/DashboardClientView.js.map +1 -0
- package/dist/pages/dashboard/index.cjs +2 -0
- package/dist/pages/dashboard/index.cjs.map +1 -0
- package/dist/pages/dashboard/index.d.ts +16 -0
- package/dist/pages/dashboard/index.js +11 -0
- package/dist/pages/dashboard/index.js.map +1 -0
- package/dist/pages/delegations/DelegationsClientView.cjs +2 -0
- package/dist/pages/delegations/DelegationsClientView.cjs.map +1 -0
- package/dist/pages/delegations/DelegationsClientView.d.ts +3 -0
- package/dist/pages/delegations/DelegationsClientView.js +28 -0
- package/dist/pages/delegations/DelegationsClientView.js.map +1 -0
- package/dist/pages/delegations/index.cjs +2 -0
- package/dist/pages/delegations/index.cjs.map +1 -0
- package/dist/pages/delegations/index.d.ts +4 -0
- package/dist/pages/delegations/index.js +14 -0
- package/dist/pages/delegations/index.js.map +1 -0
- package/dist/pages/forms/FormsClientView.cjs +2 -0
- package/dist/pages/forms/FormsClientView.cjs.map +1 -0
- package/dist/pages/forms/FormsClientView.d.ts +10 -0
- package/dist/pages/forms/FormsClientView.js +28 -0
- package/dist/pages/forms/FormsClientView.js.map +1 -0
- package/dist/pages/forms/builder/FormBuilderClientView.cjs +2 -0
- package/dist/pages/forms/builder/FormBuilderClientView.cjs.map +1 -0
- package/dist/pages/forms/builder/FormBuilderClientView.d.ts +11 -0
- package/dist/pages/forms/builder/FormBuilderClientView.js +28 -0
- package/dist/pages/forms/builder/FormBuilderClientView.js.map +1 -0
- package/dist/pages/forms/builder/index.cjs +2 -0
- package/dist/pages/forms/builder/index.cjs.map +1 -0
- package/dist/pages/forms/builder/index.d.ts +23 -0
- package/dist/pages/forms/builder/index.js +15 -0
- package/dist/pages/forms/builder/index.js.map +1 -0
- package/dist/pages/forms/index.cjs +2 -0
- package/dist/pages/forms/index.cjs.map +1 -0
- package/dist/pages/forms/index.d.ts +17 -0
- package/dist/pages/forms/index.js +14 -0
- package/dist/pages/forms/index.js.map +1 -0
- package/dist/pages/inbox/InboxClientView.cjs +2 -0
- package/dist/pages/inbox/InboxClientView.cjs.map +1 -0
- package/dist/pages/inbox/InboxClientView.d.ts +9 -0
- package/dist/pages/inbox/InboxClientView.js +28 -0
- package/dist/pages/inbox/InboxClientView.js.map +1 -0
- package/dist/pages/inbox/index.cjs +2 -0
- package/dist/pages/inbox/index.cjs.map +1 -0
- package/dist/pages/inbox/index.d.ts +16 -0
- package/dist/pages/inbox/index.js +11 -0
- package/dist/pages/inbox/index.js.map +1 -0
- package/dist/pages/instances/detail/InstanceDetailClientView.cjs +2 -0
- package/dist/pages/instances/detail/InstanceDetailClientView.cjs.map +1 -0
- package/dist/pages/instances/detail/InstanceDetailClientView.d.ts +9 -0
- package/dist/pages/instances/detail/InstanceDetailClientView.js +28 -0
- package/dist/pages/instances/detail/InstanceDetailClientView.js.map +1 -0
- package/dist/pages/instances/detail/index.cjs +2 -0
- package/dist/pages/instances/detail/index.cjs.map +1 -0
- package/dist/pages/instances/detail/index.d.ts +23 -0
- package/dist/pages/instances/detail/index.js +12 -0
- package/dist/pages/instances/detail/index.js.map +1 -0
- package/dist/pages/instances/new/InstanceNewClientView.cjs +2 -0
- package/dist/pages/instances/new/InstanceNewClientView.cjs.map +1 -0
- package/dist/pages/instances/new/InstanceNewClientView.d.ts +8 -0
- package/dist/pages/instances/new/InstanceNewClientView.js +28 -0
- package/dist/pages/instances/new/InstanceNewClientView.js.map +1 -0
- package/dist/pages/instances/new/index.cjs +2 -0
- package/dist/pages/instances/new/index.cjs.map +1 -0
- package/dist/pages/instances/new/index.d.ts +16 -0
- package/dist/pages/instances/new/index.js +11 -0
- package/dist/pages/instances/new/index.js.map +1 -0
- package/dist/pages/login/LoginClientView.cjs +2 -0
- package/dist/pages/login/LoginClientView.cjs.map +1 -0
- package/dist/pages/login/LoginClientView.d.ts +11 -0
- package/dist/pages/login/LoginClientView.js +29 -0
- package/dist/pages/login/LoginClientView.js.map +1 -0
- package/dist/pages/login/index.cjs +2 -0
- package/dist/pages/login/index.cjs.map +1 -0
- package/dist/pages/login/index.d.ts +17 -0
- package/dist/pages/login/index.js +14 -0
- package/dist/pages/login/index.js.map +1 -0
- package/dist/pages/root/RootClientView.cjs +1 -0
- package/dist/pages/root/RootClientView.d.ts +8 -0
- package/dist/pages/root/RootClientView.js +2 -0
- package/dist/pages/root/index.cjs +2 -0
- package/dist/pages/root/index.cjs.map +1 -0
- package/dist/pages/root/index.d.ts +16 -0
- package/dist/pages/root/index.js +11 -0
- package/dist/pages/root/index.js.map +1 -0
- package/dist/pages/search/SearchClientView.cjs +2 -0
- package/dist/pages/search/SearchClientView.cjs.map +1 -0
- package/dist/pages/search/SearchClientView.d.ts +7 -0
- package/dist/pages/search/SearchClientView.js +28 -0
- package/dist/pages/search/SearchClientView.js.map +1 -0
- package/dist/pages/search/index.cjs +2 -0
- package/dist/pages/search/index.cjs.map +1 -0
- package/dist/pages/search/index.d.ts +16 -0
- package/dist/pages/search/index.js +11 -0
- package/dist/pages/search/index.js.map +1 -0
- package/dist/pages/sent/SentClientView.cjs +2 -0
- package/dist/pages/sent/SentClientView.cjs.map +1 -0
- package/dist/pages/sent/SentClientView.d.ts +7 -0
- package/dist/pages/sent/SentClientView.js +28 -0
- package/dist/pages/sent/SentClientView.js.map +1 -0
- package/dist/pages/sent/index.cjs +2 -0
- package/dist/pages/sent/index.cjs.map +1 -0
- package/dist/pages/sent/index.d.ts +16 -0
- package/dist/pages/sent/index.js +11 -0
- package/dist/pages/sent/index.js.map +1 -0
- package/dist/pages/settings/notifications/SettingsNotificationsClientView.cjs +2 -0
- package/dist/pages/settings/notifications/SettingsNotificationsClientView.cjs.map +1 -0
- package/dist/pages/settings/notifications/SettingsNotificationsClientView.d.ts +3 -0
- package/dist/pages/settings/notifications/SettingsNotificationsClientView.js +28 -0
- package/dist/pages/settings/notifications/SettingsNotificationsClientView.js.map +1 -0
- package/dist/pages/settings/notifications/index.cjs +2 -0
- package/dist/pages/settings/notifications/index.cjs.map +1 -0
- package/dist/pages/settings/notifications/index.d.ts +4 -0
- package/dist/pages/settings/notifications/index.js +14 -0
- package/dist/pages/settings/notifications/index.js.map +1 -0
- package/dist/pages/templates/TemplatesClientView.cjs +2 -0
- package/dist/pages/templates/TemplatesClientView.cjs.map +1 -0
- package/dist/pages/templates/TemplatesClientView.d.ts +3 -0
- package/dist/pages/templates/TemplatesClientView.js +28 -0
- package/dist/pages/templates/TemplatesClientView.js.map +1 -0
- package/dist/pages/templates/categories/TemplateCategoriesClientView.cjs +2 -0
- package/dist/pages/templates/categories/TemplateCategoriesClientView.cjs.map +1 -0
- package/dist/pages/templates/categories/TemplateCategoriesClientView.d.ts +3 -0
- package/dist/pages/templates/categories/TemplateCategoriesClientView.js +28 -0
- package/dist/pages/templates/categories/TemplateCategoriesClientView.js.map +1 -0
- package/dist/pages/templates/categories/index.cjs +2 -0
- package/dist/pages/templates/categories/index.cjs.map +1 -0
- package/dist/pages/templates/categories/index.d.ts +4 -0
- package/dist/pages/templates/categories/index.js +14 -0
- package/dist/pages/templates/categories/index.js.map +1 -0
- package/dist/pages/templates/designer/TemplateDesignerClientView.cjs +2 -0
- package/dist/pages/templates/designer/TemplateDesignerClientView.cjs.map +1 -0
- package/dist/pages/templates/designer/TemplateDesignerClientView.d.ts +3 -0
- package/dist/pages/templates/designer/TemplateDesignerClientView.js +28 -0
- package/dist/pages/templates/designer/TemplateDesignerClientView.js.map +1 -0
- package/dist/pages/templates/designer/index.cjs +2 -0
- package/dist/pages/templates/designer/index.cjs.map +1 -0
- package/dist/pages/templates/designer/index.d.ts +10 -0
- package/dist/pages/templates/designer/index.js +15 -0
- package/dist/pages/templates/designer/index.js.map +1 -0
- package/dist/pages/templates/index.cjs +2 -0
- package/dist/pages/templates/index.cjs.map +1 -0
- package/dist/pages/templates/index.d.ts +4 -0
- package/dist/pages/templates/index.js +14 -0
- package/dist/pages/templates/index.js.map +1 -0
- package/dist/pages/templates/versions/TemplateVersionsClientView.cjs +2 -0
- package/dist/pages/templates/versions/TemplateVersionsClientView.cjs.map +1 -0
- package/dist/pages/templates/versions/TemplateVersionsClientView.d.ts +3 -0
- package/dist/pages/templates/versions/TemplateVersionsClientView.js +28 -0
- package/dist/pages/templates/versions/TemplateVersionsClientView.js.map +1 -0
- package/dist/pages/templates/versions/index.cjs +2 -0
- package/dist/pages/templates/versions/index.cjs.map +1 -0
- package/dist/pages/templates/versions/index.d.ts +10 -0
- package/dist/pages/templates/versions/index.js +15 -0
- package/dist/pages/templates/versions/index.js.map +1 -0
- package/dist/templates.css +1 -0
- package/dist/views/admin/delegations/AdminDelegationsView.d.ts +5 -0
- package/dist/views/admin/delegations/index.cjs +1 -0
- package/dist/views/admin/delegations/index.d.ts +1 -0
- package/dist/views/admin/delegations/index.js +2 -0
- package/dist/views/admin/orgs/AdminOrgsView.d.ts +5 -0
- package/dist/views/admin/orgs/index.cjs +1 -0
- package/dist/views/admin/orgs/index.d.ts +1 -0
- package/dist/views/admin/orgs/index.js +2 -0
- package/dist/views/admin/users/AdminUsersView.d.ts +5 -0
- package/dist/views/admin/users/index.cjs +1 -0
- package/dist/views/admin/users/index.d.ts +1 -0
- package/dist/views/admin/users/index.js +2 -0
- package/dist/views/cc/CcView.d.ts +9 -0
- package/dist/views/cc/index.cjs +1 -0
- package/dist/views/cc/index.d.ts +1 -0
- package/dist/views/cc/index.js +2 -0
- package/dist/views/dashboard/DashboardView.d.ts +9 -0
- package/dist/views/dashboard/index.cjs +1 -0
- package/dist/views/dashboard/index.d.ts +1 -0
- package/dist/views/dashboard/index.js +2 -0
- package/dist/views/delegations/DelegationsView.d.ts +5 -0
- package/dist/views/delegations/index.cjs +1 -0
- package/dist/views/delegations/index.d.ts +1 -0
- package/dist/views/delegations/index.js +2 -0
- package/dist/views/forms/FormsView.d.ts +4 -0
- package/dist/views/forms/builder/FormBuilderView.d.ts +9 -0
- package/dist/views/forms/builder/index.cjs +1 -0
- package/dist/views/forms/builder/index.d.ts +1 -0
- package/dist/views/forms/builder/index.js +2 -0
- package/dist/views/forms/builder/json-code-editor.d.ts +11 -0
- package/dist/views/forms/form-name-modal.d.ts +12 -0
- package/dist/views/forms/index.cjs +1 -0
- package/dist/views/forms/index.d.ts +1 -0
- package/dist/views/forms/index.js +2 -0
- package/dist/views/forms/renderer/FormRendererView.d.ts +19 -0
- package/dist/views/forms/renderer/index.cjs +1 -0
- package/dist/views/forms/renderer/index.d.ts +1 -0
- package/dist/views/forms/renderer/index.js +2 -0
- package/dist/views/inbox/InboxView.d.ts +9 -0
- package/dist/views/inbox/index.cjs +1 -0
- package/dist/views/inbox/index.d.ts +1 -0
- package/dist/views/inbox/index.js +2 -0
- package/dist/views/instances/detail/InstanceDetailView.d.ts +12 -0
- package/dist/views/instances/detail/index.cjs +1 -0
- package/dist/views/instances/detail/index.d.ts +1 -0
- package/dist/views/instances/detail/index.js +2 -0
- package/dist/views/instances/new/InstanceNewView.d.ts +15 -0
- package/dist/views/instances/new/index.cjs +1 -0
- package/dist/views/instances/new/index.d.ts +1 -0
- package/dist/views/instances/new/index.js +2 -0
- package/dist/views/login/LoginView.d.ts +47 -0
- package/dist/views/login/index.cjs +1 -0
- package/dist/views/login/index.d.ts +1 -0
- package/dist/views/login/index.js +2 -0
- package/dist/views/root/RootView.d.ts +12 -0
- package/dist/views/root/index.d.ts +1 -0
- package/dist/views/search/SearchView.d.ts +9 -0
- package/dist/views/search/index.cjs +1 -0
- package/dist/views/search/index.d.ts +1 -0
- package/dist/views/search/index.js +2 -0
- package/dist/views/sent/SentView.d.ts +9 -0
- package/dist/views/sent/index.cjs +1 -0
- package/dist/views/sent/index.d.ts +1 -0
- package/dist/views/sent/index.js +2 -0
- package/dist/views/settings/notifications/SettingsNotificationsView.d.ts +5 -0
- package/dist/views/settings/notifications/index.cjs +1 -0
- package/dist/views/settings/notifications/index.d.ts +1 -0
- package/dist/views/settings/notifications/index.js +2 -0
- package/dist/views/templates/TemplatesView.d.ts +5 -0
- package/dist/views/templates/categories/TemplateCategoriesView.d.ts +5 -0
- package/dist/views/templates/categories/index.cjs +1 -0
- package/dist/views/templates/categories/index.d.ts +1 -0
- package/dist/views/templates/categories/index.js +2 -0
- package/dist/views/templates/designer/TemplateDesignerView.d.ts +6 -0
- package/dist/views/templates/designer/index.cjs +1 -0
- package/dist/views/templates/designer/index.d.ts +1 -0
- package/dist/views/templates/designer/index.js +2 -0
- package/dist/views/templates/index.cjs +1 -0
- package/dist/views/templates/index.d.ts +1 -0
- package/dist/views/templates/index.js +2 -0
- package/dist/views/templates/template-name-modal.d.ts +22 -0
- package/dist/views/templates/versions/TemplateVersionsView.d.ts +6 -0
- package/dist/views/templates/versions/index.cjs +1 -0
- package/dist/views/templates/versions/index.d.ts +1 -0
- package/dist/views/templates/versions/index.js +2 -0
- package/package.json +272 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-page-BsW8t104.js","names":[],"sources":["../../src/components/dashboard-page.module.scss","../../src/components/dashboard-page.tsx"],"sourcesContent":[".metricCard {\n color: inherit;\n cursor: pointer;\n text-decoration: none;\n}\n\n.metricCard:hover {\n text-decoration: none;\n}\n","'use client';\n\nimport type { KeyboardEvent, ReactElement } from 'react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n BaseCard,\n Button,\n CardGroup,\n Layout,\n PageHeader,\n Section,\n SectionGroup,\n Typography,\n} from '@mezzanine-ui/react';\nimport ContentHeader from '@mezzanine-ui/react/ContentHeader';\nimport { PlusIcon } from '@mezzanine-ui/icons';\nimport {\n readWorkflowDashboardSummary,\n type WorkflowDashboardSummaryRecord,\n} from '@rytass/bpm-core-client/workflow';\nimport { useAuth } from '../lib/auth-provider';\nimport { useRouterAdapter } from '../lib/router-adapter';\nimport { AppNavigation } from './app-navigation';\nimport styles from './dashboard-page.module.scss';\n\nexport interface DashboardPageProps {\n readonly activeHref: string;\n}\n\ninterface Metric {\n readonly caption: string;\n readonly href: string;\n readonly label: string;\n readonly value: string;\n}\n\nconst EMPTY_DASHBOARD_SUMMARY: WorkflowDashboardSummaryRecord = {\n activeInstanceCount: 0,\n completedInstanceCount: 0,\n overdueTaskCount: 0,\n pendingTaskCount: 0,\n rejectedInstanceCount: 0,\n totalInstanceCount: 0,\n unreadNotificationCount: 0,\n};\n\n/**\n * Operator dashboard — shows pending/unread/active counts for the\n * currently-authenticated member. Reads {@link readWorkflowDashboardSummary}\n * and renders five metric tiles that navigate via {@link useRouterAdapter}.\n */\nexport function DashboardPage({ activeHref }: DashboardPageProps): ReactElement {\n const router = useRouterAdapter();\n const { member } = useAuth();\n const currentMemberId = member?.memberId ?? null;\n const [error, setError] = useState<string | null>(null);\n const [loading, setLoading] = useState(true);\n const [summary, setSummary] = useState<WorkflowDashboardSummaryRecord>(\n EMPTY_DASHBOARD_SUMMARY,\n );\n\n const refreshSummary = useCallback(async (): Promise<void> => {\n if (!currentMemberId) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n setSummary(\n await readWorkflowDashboardSummary({\n currentMemberId,\n from: null,\n to: null,\n }),\n );\n } catch (requestError: unknown) {\n setError(readErrorMessage(requestError));\n } finally {\n setLoading(false);\n }\n }, [currentMemberId]);\n\n useEffect((): void => {\n void refreshSummary();\n }, [refreshSummary]);\n\n const metrics = useMemo(\n (): readonly Metric[] => [\n {\n caption: '目前需要你處理的任務',\n href: '/inbox',\n label: '待處理簽核',\n value: readMetricValue(summary.pendingTaskCount, loading),\n },\n {\n caption: '尚未讀取的站內通知',\n href: '/notifications',\n label: '未讀通知',\n value: readMetricValue(summary.unreadNotificationCount, loading),\n },\n {\n caption: '目前仍在流程中的案件',\n href: '/search',\n label: '進行中案件',\n value: readMetricValue(summary.activeInstanceCount, loading),\n },\n {\n caption: '已超過 SLA 的待處理任務',\n href: '/inbox',\n label: '逾時任務',\n value: readMetricValue(summary.overdueTaskCount, loading),\n },\n {\n caption: '你有權限查看的全部案件',\n href: '/search',\n label: '案件總數',\n value: readMetricValue(summary.totalInstanceCount, loading),\n },\n ],\n [loading, summary],\n );\n\n return (\n <Layout>\n <AppNavigation activeHref={activeHref} />\n\n <Layout.Main>\n <PageHeader>\n <ContentHeader\n description=\"查看待處理簽核、近期通知與你發起的案件進度。\"\n title=\"工作台\"\n >\n <Button\n icon={PlusIcon}\n iconType=\"leading\"\n onClick={(): void => router.push('/instances/new')}\n variant=\"base-primary\"\n >\n 發起簽核\n </Button>\n </ContentHeader>\n </PageHeader>\n\n <SectionGroup>\n <Section>\n {error ? (\n <Typography color=\"text-error\" variant=\"body\">\n {error}\n </Typography>\n ) : null}\n <CardGroup>\n {metrics.map((metric) => (\n <BaseCard\n aria-label={`前往${metric.label}`}\n className={styles.metricCard}\n description={metric.value}\n key={metric.label}\n onClick={(): void => router.push(metric.href)}\n onKeyDown={(event: KeyboardEvent<HTMLElement>): void => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n router.push(metric.href);\n }\n }}\n role=\"link\"\n tabIndex={0}\n title={metric.label}\n >\n <Typography color=\"text-neutral\" variant=\"caption\">\n {metric.caption}\n </Typography>\n </BaseCard>\n ))}\n </CardGroup>\n </Section>\n </SectionGroup>\n </Layout.Main>\n </Layout>\n );\n}\n\nfunction readMetricValue(value: number, loading: boolean): string {\n return loading ? '-' : String(value);\n}\n\nfunction readErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : '讀取工作台摘要失敗。';\n}\n"],"mappings":";;;;;;;;;;gDCoCM,IAA0D;CAC9D,qBAAqB;CACrB,wBAAwB;CACxB,kBAAkB;CAClB,kBAAkB;CAClB,uBAAuB;CACvB,oBAAoB;CACpB,yBAAyB;AAC3B;AAOA,SAAgB,EAAc,EAAE,iBAAgD;CAC9E,IAAM,IAAS,EAAiB,GAC1B,EAAE,cAAW,EAAQ,GACrB,IAAkB,GAAQ,YAAY,MACtC,CAAC,GAAO,KAAY,EAAwB,IAAI,GAChD,CAAC,GAAS,KAAc,EAAS,EAAI,GACrC,CAAC,GAAS,KAAc,EAC5B,CACF,GAEM,IAAiB,EAAY,YAA2B;EAC5D,IAAI,CAAC,GAAiB;GACpB,EAAW,EAAK;GAChB;EACF;EAGA,AADA,EAAW,EAAI,GACf,EAAS,IAAI;EAEb,IAAI;GACF,EACE,MAAM,EAA6B;IACjC;IACA,MAAM;IACN,IAAI;GACN,CAAC,CACH;EACF,SAAS,GAAuB;GAC9B,EAAS,EAAiB,CAAY,CAAC;EACzC,UAAU;GACR,EAAW,EAAK;EAClB;CACF,GAAG,CAAC,CAAe,CAAC;CAEpB,QAAsB;EACpB,EAAoB;CACtB,GAAG,CAAC,CAAc,CAAC;CAEnB,IAAM,IAAU,QACW;EACvB;GACE,SAAS;GACT,MAAM;GACN,OAAO;GACP,OAAO,EAAgB,EAAQ,kBAAkB,CAAO;EAC1D;EACA;GACE,SAAS;GACT,MAAM;GACN,OAAO;GACP,OAAO,EAAgB,EAAQ,yBAAyB,CAAO;EACjE;EACA;GACE,SAAS;GACT,MAAM;GACN,OAAO;GACP,OAAO,EAAgB,EAAQ,qBAAqB,CAAO;EAC7D;EACA;GACE,SAAS;GACT,MAAM;GACN,OAAO;GACP,OAAO,EAAgB,EAAQ,kBAAkB,CAAO;EAC1D;EACA;GACE,SAAS;GACT,MAAM;GACN,OAAO;GACP,OAAO,EAAgB,EAAQ,oBAAoB,CAAO;EAC5D;CACF,GACA,CAAC,GAAS,CAAO,CACnB;CAEA,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAA2B,cAAa,CAAA,GAExC,kBAAC,EAAO,MAAR,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EACE,aAAY;EACZ,OAAM;YAEN,kBAAC,GAAD;GACE,MAAM;GACN,UAAS;GACT,eAAqB,EAAO,KAAK,gBAAgB;GACjD,SAAQ;aACT;EAEO,CAAA;CACK,CAAA,EACL,CAAA,GAEZ,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAA,CACG,IACC,kBAAC,GAAD;EAAY,OAAM;EAAa,SAAQ;YACpC;CACS,CAAA,IACV,MACJ,kBAAC,GAAD,EAAA,UACG,EAAQ,KAAK,MACZ,kBAAC,GAAD;EACE,cAAY,KAAK,EAAO;EACxB,WAAW,EAAO;EAClB,aAAa,EAAO;EAEpB,eAAqB,EAAO,KAAK,EAAO,IAAI;EAC5C,YAAY,MAA4C;GACtD,CAAI,EAAM,QAAQ,WAAW,EAAM,QAAQ,SACzC,EAAM,eAAe,GACrB,EAAO,KAAK,EAAO,IAAI;EAE3B;EACA,MAAK;EACL,UAAU;EACV,OAAO,EAAO;YAEd,kBAAC,GAAD;GAAY,OAAM;GAAe,SAAQ;aACtC,EAAO;EACE,CAAA;CACJ,GAfH,EAAO,KAeJ,CACX,EACQ,CAAA,CACJ,EAAA,CAAA,EACG,CAAA,CACH,EAAA,CAAA,CACP,EAAA,CAAA;AAEZ;AAEA,SAAS,EAAgB,GAAe,GAA0B;CAChE,OAAO,IAAU,MAAM,OAAO,CAAK;AACrC;AAEA,SAAS,EAAiB,GAAwB;CAChD,OAAO,aAAiB,QAAQ,EAAM,UAAU;AAClD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";require('../dashboard-page.css');const e=require("./app-navigation-DAC5gFbG.cjs"),t=require("./router-adapter-BybHrCNP.cjs"),n=require("./auth-provider-D2P-qWmY.cjs");let r=require("react"),i=require("@mezzanine-ui/react"),a=require("react/jsx-runtime"),o=require("@rytass/bpm-core-client/workflow"),s=require("@mezzanine-ui/icons"),c=require("@mezzanine-ui/react/ContentHeader");c=e.o(c,1);var l={metricCard:`bpm_metricCard_vp2qC`},u={activeInstanceCount:0,completedInstanceCount:0,overdueTaskCount:0,pendingTaskCount:0,rejectedInstanceCount:0,totalInstanceCount:0,unreadNotificationCount:0};function d({activeHref:d}){let m=t.r(),{member:h}=n.n(),g=h?.memberId??null,[_,v]=(0,r.useState)(null),[y,b]=(0,r.useState)(!0),[x,S]=(0,r.useState)(u),C=(0,r.useCallback)(async()=>{if(!g){b(!1);return}b(!0),v(null);try{S(await(0,o.readWorkflowDashboardSummary)({currentMemberId:g,from:null,to:null}))}catch(e){v(p(e))}finally{b(!1)}},[g]);(0,r.useEffect)(()=>{C()},[C]);let w=(0,r.useMemo)(()=>[{caption:`目前需要你處理的任務`,href:`/inbox`,label:`待處理簽核`,value:f(x.pendingTaskCount,y)},{caption:`尚未讀取的站內通知`,href:`/notifications`,label:`未讀通知`,value:f(x.unreadNotificationCount,y)},{caption:`目前仍在流程中的案件`,href:`/search`,label:`進行中案件`,value:f(x.activeInstanceCount,y)},{caption:`已超過 SLA 的待處理任務`,href:`/inbox`,label:`逾時任務`,value:f(x.overdueTaskCount,y)},{caption:`你有權限查看的全部案件`,href:`/search`,label:`案件總數`,value:f(x.totalInstanceCount,y)}],[y,x]);return(0,a.jsxs)(i.Layout,{children:[(0,a.jsx)(e.t,{activeHref:d}),(0,a.jsxs)(i.Layout.Main,{children:[(0,a.jsx)(i.PageHeader,{children:(0,a.jsx)(c.default,{description:`查看待處理簽核、近期通知與你發起的案件進度。`,title:`工作台`,children:(0,a.jsx)(i.Button,{icon:s.PlusIcon,iconType:`leading`,onClick:()=>m.push(`/instances/new`),variant:`base-primary`,children:`發起簽核`})})}),(0,a.jsx)(i.SectionGroup,{children:(0,a.jsxs)(i.Section,{children:[_?(0,a.jsx)(i.Typography,{color:`text-error`,variant:`body`,children:_}):null,(0,a.jsx)(i.CardGroup,{children:w.map(e=>(0,a.jsx)(i.BaseCard,{"aria-label":`前往${e.label}`,className:l.metricCard,description:e.value,onClick:()=>m.push(e.href),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),m.push(e.href))},role:`link`,tabIndex:0,title:e.label,children:(0,a.jsx)(i.Typography,{color:`text-neutral`,variant:`caption`,children:e.caption})},e.label))})]})})]})]})}function f(e,t){return t?`-`:String(e)}function p(e){return e instanceof Error?e.message:`讀取工作台摘要失敗。`}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return d}});
|
|
2
|
+
//# sourceMappingURL=dashboard-page-udYhnyMW.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-page-udYhnyMW.cjs","names":[],"sources":["../../src/components/dashboard-page.module.scss","../../src/components/dashboard-page.tsx"],"sourcesContent":[".metricCard {\n color: inherit;\n cursor: pointer;\n text-decoration: none;\n}\n\n.metricCard:hover {\n text-decoration: none;\n}\n","'use client';\n\nimport type { KeyboardEvent, ReactElement } from 'react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n BaseCard,\n Button,\n CardGroup,\n Layout,\n PageHeader,\n Section,\n SectionGroup,\n Typography,\n} from '@mezzanine-ui/react';\nimport ContentHeader from '@mezzanine-ui/react/ContentHeader';\nimport { PlusIcon } from '@mezzanine-ui/icons';\nimport {\n readWorkflowDashboardSummary,\n type WorkflowDashboardSummaryRecord,\n} from '@rytass/bpm-core-client/workflow';\nimport { useAuth } from '../lib/auth-provider';\nimport { useRouterAdapter } from '../lib/router-adapter';\nimport { AppNavigation } from './app-navigation';\nimport styles from './dashboard-page.module.scss';\n\nexport interface DashboardPageProps {\n readonly activeHref: string;\n}\n\ninterface Metric {\n readonly caption: string;\n readonly href: string;\n readonly label: string;\n readonly value: string;\n}\n\nconst EMPTY_DASHBOARD_SUMMARY: WorkflowDashboardSummaryRecord = {\n activeInstanceCount: 0,\n completedInstanceCount: 0,\n overdueTaskCount: 0,\n pendingTaskCount: 0,\n rejectedInstanceCount: 0,\n totalInstanceCount: 0,\n unreadNotificationCount: 0,\n};\n\n/**\n * Operator dashboard — shows pending/unread/active counts for the\n * currently-authenticated member. Reads {@link readWorkflowDashboardSummary}\n * and renders five metric tiles that navigate via {@link useRouterAdapter}.\n */\nexport function DashboardPage({ activeHref }: DashboardPageProps): ReactElement {\n const router = useRouterAdapter();\n const { member } = useAuth();\n const currentMemberId = member?.memberId ?? null;\n const [error, setError] = useState<string | null>(null);\n const [loading, setLoading] = useState(true);\n const [summary, setSummary] = useState<WorkflowDashboardSummaryRecord>(\n EMPTY_DASHBOARD_SUMMARY,\n );\n\n const refreshSummary = useCallback(async (): Promise<void> => {\n if (!currentMemberId) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n setSummary(\n await readWorkflowDashboardSummary({\n currentMemberId,\n from: null,\n to: null,\n }),\n );\n } catch (requestError: unknown) {\n setError(readErrorMessage(requestError));\n } finally {\n setLoading(false);\n }\n }, [currentMemberId]);\n\n useEffect((): void => {\n void refreshSummary();\n }, [refreshSummary]);\n\n const metrics = useMemo(\n (): readonly Metric[] => [\n {\n caption: '目前需要你處理的任務',\n href: '/inbox',\n label: '待處理簽核',\n value: readMetricValue(summary.pendingTaskCount, loading),\n },\n {\n caption: '尚未讀取的站內通知',\n href: '/notifications',\n label: '未讀通知',\n value: readMetricValue(summary.unreadNotificationCount, loading),\n },\n {\n caption: '目前仍在流程中的案件',\n href: '/search',\n label: '進行中案件',\n value: readMetricValue(summary.activeInstanceCount, loading),\n },\n {\n caption: '已超過 SLA 的待處理任務',\n href: '/inbox',\n label: '逾時任務',\n value: readMetricValue(summary.overdueTaskCount, loading),\n },\n {\n caption: '你有權限查看的全部案件',\n href: '/search',\n label: '案件總數',\n value: readMetricValue(summary.totalInstanceCount, loading),\n },\n ],\n [loading, summary],\n );\n\n return (\n <Layout>\n <AppNavigation activeHref={activeHref} />\n\n <Layout.Main>\n <PageHeader>\n <ContentHeader\n description=\"查看待處理簽核、近期通知與你發起的案件進度。\"\n title=\"工作台\"\n >\n <Button\n icon={PlusIcon}\n iconType=\"leading\"\n onClick={(): void => router.push('/instances/new')}\n variant=\"base-primary\"\n >\n 發起簽核\n </Button>\n </ContentHeader>\n </PageHeader>\n\n <SectionGroup>\n <Section>\n {error ? (\n <Typography color=\"text-error\" variant=\"body\">\n {error}\n </Typography>\n ) : null}\n <CardGroup>\n {metrics.map((metric) => (\n <BaseCard\n aria-label={`前往${metric.label}`}\n className={styles.metricCard}\n description={metric.value}\n key={metric.label}\n onClick={(): void => router.push(metric.href)}\n onKeyDown={(event: KeyboardEvent<HTMLElement>): void => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n router.push(metric.href);\n }\n }}\n role=\"link\"\n tabIndex={0}\n title={metric.label}\n >\n <Typography color=\"text-neutral\" variant=\"caption\">\n {metric.caption}\n </Typography>\n </BaseCard>\n ))}\n </CardGroup>\n </Section>\n </SectionGroup>\n </Layout.Main>\n </Layout>\n );\n}\n\nfunction readMetricValue(value: number, loading: boolean): string {\n return loading ? '-' : String(value);\n}\n\nfunction readErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : '讀取工作台摘要失敗。';\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as e } from "./bpm-form-field-Cao0rMol.js";
|
|
3
|
+
import { useEffect as t, useState as n } from "react";
|
|
4
|
+
import { Input as r, Modal as i, Typography as a } from "@mezzanine-ui/react";
|
|
5
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
6
|
+
//#region src/views/forms/form-name-modal.tsx
|
|
7
|
+
function c({ confirmText: c, initialName: u, loading: d, onClose: f, onSubmit: p, open: m, title: h }) {
|
|
8
|
+
let [g, _] = n(u), [v, y] = n(null), b = g.trim();
|
|
9
|
+
t(() => {
|
|
10
|
+
m && (_(u), y(null));
|
|
11
|
+
}, [u, m]);
|
|
12
|
+
async function x() {
|
|
13
|
+
if (!b) {
|
|
14
|
+
y("請輸入表單名稱");
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
await p(b);
|
|
19
|
+
} catch (e) {
|
|
20
|
+
y(l(e));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return /* @__PURE__ */ s(i, {
|
|
24
|
+
cancelText: "取消",
|
|
25
|
+
confirmButtonProps: { disabled: !b },
|
|
26
|
+
confirmText: c,
|
|
27
|
+
loading: d,
|
|
28
|
+
modalType: "standard",
|
|
29
|
+
onCancel: f,
|
|
30
|
+
onClose: f,
|
|
31
|
+
onConfirm: () => void x(),
|
|
32
|
+
open: m,
|
|
33
|
+
showModalFooter: !0,
|
|
34
|
+
showModalHeader: !0,
|
|
35
|
+
size: "narrow",
|
|
36
|
+
title: h,
|
|
37
|
+
children: [/* @__PURE__ */ o(e, {
|
|
38
|
+
label: "表單名稱",
|
|
39
|
+
name: "formName",
|
|
40
|
+
required: !0,
|
|
41
|
+
children: /* @__PURE__ */ o(r, {
|
|
42
|
+
autoFocus: !0,
|
|
43
|
+
fullWidth: !0,
|
|
44
|
+
onChange: (e) => {
|
|
45
|
+
_(e.target.value), y(null);
|
|
46
|
+
},
|
|
47
|
+
placeholder: "例如:費用申請單",
|
|
48
|
+
value: g,
|
|
49
|
+
variant: "base"
|
|
50
|
+
})
|
|
51
|
+
}), v ? /* @__PURE__ */ o(a, {
|
|
52
|
+
color: "text-error",
|
|
53
|
+
variant: "body",
|
|
54
|
+
children: v
|
|
55
|
+
}) : null]
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function l(e) {
|
|
59
|
+
return e instanceof Error ? e.message : "發生未知錯誤";
|
|
60
|
+
}
|
|
61
|
+
//#endregion
|
|
62
|
+
export { c as t };
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=form-name-modal-C3OEvkCV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-name-modal-C3OEvkCV.js","names":[],"sources":["../../src/views/forms/form-name-modal.tsx"],"sourcesContent":["'use client';\n\nimport { ChangeEvent, ReactElement, useEffect, useState } from 'react';\nimport { Input, Modal, Typography } from '@mezzanine-ui/react';\nimport { BPMFormField } from '../../components/bpm-form-field';\n\ninterface FormNameModalProps {\n readonly confirmText: string;\n readonly initialName: string;\n readonly loading: boolean;\n readonly onClose: () => void;\n readonly onSubmit: (name: string) => Promise<void>;\n readonly open: boolean;\n readonly title: string;\n}\n\nexport function FormNameModal({\n confirmText,\n initialName,\n loading,\n onClose,\n onSubmit,\n open,\n title,\n}: FormNameModalProps): ReactElement {\n const [name, setName] = useState(initialName);\n const [error, setError] = useState<string | null>(null);\n const trimmedName = name.trim();\n\n useEffect((): void => {\n if (!open) {\n return;\n }\n\n setName(initialName);\n setError(null);\n }, [initialName, open]);\n\n async function handleConfirm(): Promise<void> {\n if (!trimmedName) {\n setError('請輸入表單名稱');\n return;\n }\n\n try {\n await onSubmit(trimmedName);\n } catch (submitError: unknown) {\n setError(readErrorMessage(submitError));\n }\n }\n\n return (\n <Modal\n cancelText=\"取消\"\n confirmButtonProps={{ disabled: !trimmedName }}\n confirmText={confirmText}\n loading={loading}\n modalType=\"standard\"\n onCancel={onClose}\n onClose={onClose}\n onConfirm={(): void => void handleConfirm()}\n open={open}\n showModalFooter\n showModalHeader\n size=\"narrow\"\n title={title}\n >\n <BPMFormField label=\"表單名稱\" name=\"formName\" required>\n <Input\n autoFocus\n fullWidth\n onChange={(event: ChangeEvent<HTMLInputElement>): void => {\n setName(event.target.value);\n setError(null);\n }}\n placeholder=\"例如:費用申請單\"\n value={name}\n variant=\"base\"\n />\n </BPMFormField>\n {error ? (\n <Typography color=\"text-error\" variant=\"body\">\n {error}\n </Typography>\n ) : null}\n </Modal>\n );\n}\n\nfunction readErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : '發生未知錯誤';\n}\n"],"mappings":";;;;;;AAgBA,SAAgB,EAAc,EAC5B,gBACA,gBACA,YACA,YACA,aACA,SACA,YACmC;CACnC,IAAM,CAAC,GAAM,KAAW,EAAS,CAAW,GACtC,CAAC,GAAO,KAAY,EAAwB,IAAI,GAChD,IAAc,EAAK,KAAK;CAE9B,QAAsB;EACf,MAIL,EAAQ,CAAW,GACnB,EAAS,IAAI;CACf,GAAG,CAAC,GAAa,CAAI,CAAC;CAEtB,eAAe,IAA+B;EAC5C,IAAI,CAAC,GAAa;GAChB,EAAS,SAAS;GAClB;EACF;EAEA,IAAI;GACF,MAAM,EAAS,CAAW;EAC5B,SAAS,GAAsB;GAC7B,EAAS,EAAiB,CAAW,CAAC;EACxC;CACF;CAEA,OACE,kBAAC,GAAD;EACE,YAAW;EACX,oBAAoB,EAAE,UAAU,CAAC,EAAY;EAChC;EACJ;EACT,WAAU;EACV,UAAU;EACD;EACT,iBAAuB,KAAK,EAAc;EACpC;EACN,iBAAA;EACA,iBAAA;EACA,MAAK;EACE;YAbT,CAeE,kBAAC,GAAD;GAAc,OAAM;GAAO,MAAK;GAAW,UAAA;aACzC,kBAAC,GAAD;IACE,WAAA;IACA,WAAA;IACA,WAAW,MAA+C;KAExD,AADA,EAAQ,EAAM,OAAO,KAAK,GAC1B,EAAS,IAAI;IACf;IACA,aAAY;IACZ,OAAO;IACP,SAAQ;GACT,CAAA;EACW,CAAA,GACb,IACC,kBAAC,GAAD;GAAY,OAAM;GAAa,SAAQ;aACpC;EACS,CAAA,IACV,IACC;;AAEX;AAEA,SAAS,EAAiB,GAAwB;CAChD,OAAO,aAAiB,QAAQ,EAAM,UAAU;AAClD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";const e=require("./bpm-form-field-Bc6k4ZEO.cjs");let t=require("react"),n=require("@mezzanine-ui/react"),r=require("react/jsx-runtime");function i({confirmText:i,initialName:o,loading:s,onClose:c,onSubmit:l,open:u,title:d}){let[f,p]=(0,t.useState)(o),[m,h]=(0,t.useState)(null),g=f.trim();(0,t.useEffect)(()=>{u&&(p(o),h(null))},[o,u]);async function _(){if(!g){h(`請輸入表單名稱`);return}try{await l(g)}catch(e){h(a(e))}}return(0,r.jsxs)(n.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:!g},confirmText:i,loading:s,modalType:`standard`,onCancel:c,onClose:c,onConfirm:()=>void _(),open:u,showModalFooter:!0,showModalHeader:!0,size:`narrow`,title:d,children:[(0,r.jsx)(e.t,{label:`表單名稱`,name:`formName`,required:!0,children:(0,r.jsx)(n.Input,{autoFocus:!0,fullWidth:!0,onChange:e=>{p(e.target.value),h(null)},placeholder:`例如:費用申請單`,value:f,variant:`base`})}),m?(0,r.jsx)(n.Typography,{color:`text-error`,variant:`body`,children:m}):null]})}function a(e){return e instanceof Error?e.message:`發生未知錯誤`}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
|
|
2
|
+
//# sourceMappingURL=form-name-modal-uZCHbtRH.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-name-modal-uZCHbtRH.cjs","names":[],"sources":["../../src/views/forms/form-name-modal.tsx"],"sourcesContent":["'use client';\n\nimport { ChangeEvent, ReactElement, useEffect, useState } from 'react';\nimport { Input, Modal, Typography } from '@mezzanine-ui/react';\nimport { BPMFormField } from '../../components/bpm-form-field';\n\ninterface FormNameModalProps {\n readonly confirmText: string;\n readonly initialName: string;\n readonly loading: boolean;\n readonly onClose: () => void;\n readonly onSubmit: (name: string) => Promise<void>;\n readonly open: boolean;\n readonly title: string;\n}\n\nexport function FormNameModal({\n confirmText,\n initialName,\n loading,\n onClose,\n onSubmit,\n open,\n title,\n}: FormNameModalProps): ReactElement {\n const [name, setName] = useState(initialName);\n const [error, setError] = useState<string | null>(null);\n const trimmedName = name.trim();\n\n useEffect((): void => {\n if (!open) {\n return;\n }\n\n setName(initialName);\n setError(null);\n }, [initialName, open]);\n\n async function handleConfirm(): Promise<void> {\n if (!trimmedName) {\n setError('請輸入表單名稱');\n return;\n }\n\n try {\n await onSubmit(trimmedName);\n } catch (submitError: unknown) {\n setError(readErrorMessage(submitError));\n }\n }\n\n return (\n <Modal\n cancelText=\"取消\"\n confirmButtonProps={{ disabled: !trimmedName }}\n confirmText={confirmText}\n loading={loading}\n modalType=\"standard\"\n onCancel={onClose}\n onClose={onClose}\n onConfirm={(): void => void handleConfirm()}\n open={open}\n showModalFooter\n showModalHeader\n size=\"narrow\"\n title={title}\n >\n <BPMFormField label=\"表單名稱\" name=\"formName\" required>\n <Input\n autoFocus\n fullWidth\n onChange={(event: ChangeEvent<HTMLInputElement>): void => {\n setName(event.target.value);\n setError(null);\n }}\n placeholder=\"例如:費用申請單\"\n value={name}\n variant=\"base\"\n />\n </BPMFormField>\n {error ? (\n <Typography color=\"text-error\" variant=\"body\">\n {error}\n </Typography>\n ) : null}\n </Modal>\n );\n}\n\nfunction readErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : '發生未知錯誤';\n}\n"],"mappings":"qJAgBA,SAAgB,EAAc,CAC5B,cACA,cACA,UACA,UACA,WACA,OACA,SACmC,CACnC,GAAM,CAAC,EAAM,IAAA,EAAA,EAAA,UAAoB,CAAW,EACtC,CAAC,EAAO,IAAA,EAAA,EAAA,UAAoC,IAAI,EAChD,EAAc,EAAK,KAAK,GAE9B,EAAA,EAAA,eAAsB,CACf,IAIL,EAAQ,CAAW,EACnB,EAAS,IAAI,EACf,EAAG,CAAC,EAAa,CAAI,CAAC,EAEtB,eAAe,GAA+B,CAC5C,GAAI,CAAC,EAAa,CAChB,EAAS,SAAS,EAClB,MACF,CAEA,GAAI,CACF,MAAM,EAAS,CAAW,CAC5B,OAAS,EAAsB,CAC7B,EAAS,EAAiB,CAAW,CAAC,CACxC,CACF,CAEA,OACE,EAAA,EAAA,MAAC,EAAA,MAAD,CACE,WAAW,KACX,mBAAoB,CAAE,SAAU,CAAC,CAAY,EAChC,cACJ,UACT,UAAU,WACV,SAAU,EACD,UACT,cAAuB,KAAK,EAAc,EACpC,OACN,gBAAA,GACA,gBAAA,GACA,KAAK,SACE,iBAbT,EAeE,EAAA,EAAA,KAAC,EAAA,EAAD,CAAc,MAAM,OAAO,KAAK,WAAW,SAAA,aACzC,EAAA,EAAA,KAAC,EAAA,MAAD,CACE,UAAA,GACA,UAAA,GACA,SAAW,GAA+C,CACxD,EAAQ,EAAM,OAAO,KAAK,EAC1B,EAAS,IAAI,CACf,EACA,YAAY,WACZ,MAAO,EACP,QAAQ,MACT,CAAA,CACW,CAAA,EACb,GACC,EAAA,EAAA,KAAC,EAAA,WAAD,CAAY,MAAM,aAAa,QAAQ,gBACpC,CACS,CAAA,EACV,IACC,GAEX,CAEA,SAAS,EAAiB,EAAwB,CAChD,OAAO,aAAiB,MAAQ,EAAM,QAAU,QAClD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./app-navigation-DAC5gFbG.cjs");let t=require("moment");t=e.o(t,1);function n(e){return e?(0,t.default)(e).format(`YYYY-MM-DD HH:mm:ss`):`-`}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return n}});
|
|
2
|
+
//# sourceMappingURL=format-date-time-BQyH5U8z.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-date-time-BQyH5U8z.cjs","names":[],"sources":["../../src/lib/format-date-time.ts"],"sourcesContent":["import moment from 'moment';\n\n/**\n * Default BPM datetime formatter: `YYYY-MM-DD HH:mm:ss`. Returns `'-'` for\n * `null` / `undefined` so list cells render a consistent placeholder.\n */\nexport function formatDateTime(value: string | null | undefined): string {\n return value ? moment(value).format('YYYY-MM-DD HH:mm:ss') : '-';\n}\n"],"mappings":"oFAMA,SAAgB,EAAe,EAA0C,CACvE,OAAO,GAAA,EAAA,EAAA,SAAe,CAAK,EAAE,OAAO,qBAAqB,EAAI,GAC/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-date-time-CB-LxzqT.js","names":[],"sources":["../../src/lib/format-date-time.ts"],"sourcesContent":["import moment from 'moment';\n\n/**\n * Default BPM datetime formatter: `YYYY-MM-DD HH:mm:ss`. Returns `'-'` for\n * `null` / `undefined` so list cells render a consistent placeholder.\n */\nexport function formatDateTime(value: string | null | undefined): string {\n return value ? moment(value).format('YYYY-MM-DD HH:mm:ss') : '-';\n}\n"],"mappings":";;AAMA,SAAgB,EAAe,GAA0C;CACvE,OAAO,IAAQ,EAAO,CAAK,EAAE,OAAO,qBAAqB,IAAI;AAC/D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext as e, useContext as t } from "react";
|
|
3
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
4
|
+
//#region src/lib/router-adapter.tsx
|
|
5
|
+
var r = e(null);
|
|
6
|
+
function i({ value: e, children: t }) {
|
|
7
|
+
return /* @__PURE__ */ n(r.Provider, {
|
|
8
|
+
value: e,
|
|
9
|
+
children: t
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function a() {
|
|
13
|
+
let e = t(r);
|
|
14
|
+
if (!e) throw Error("useRouterAdapter must be used inside <RouterAdapterProvider>. In Next.js, wrap your app with <NextRouterAdapterProvider> from `@rytass/bpm-core-react/pages/router-adapter`.");
|
|
15
|
+
return e;
|
|
16
|
+
}
|
|
17
|
+
function o() {
|
|
18
|
+
return typeof window > "u" ? new URLSearchParams() : new URLSearchParams(window.location.search);
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { o as n, a as r, i as t };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=router-adapter-BdHZXLS3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-adapter-BdHZXLS3.js","names":[],"sources":["../../src/lib/router-adapter.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, useContext, type ReactNode } from 'react';\n\n/**\n * Framework-agnostic router contract every BPM view consumes.\n *\n * Next.js App Router consumers wire it from `useRouter()` / `usePathname()`,\n * but the contract is intentionally generic so SPA / Remix / Tanstack Router\n * hosts can plug in the same `<RouterAdapterProvider>` with their own\n * navigation primitives.\n */\nexport interface RouterAdapter {\n /** Current pathname (e.g. \"/inbox\"). `null` during SSR before hydration. */\n readonly pathname: string | null;\n /** Navigate to `href` (push onto history). */\n push(href: string): void;\n /** Navigate to `href` and replace the current history entry. */\n replace(href: string): void;\n /** Optional: go back. Falls back to `history.back()` when omitted. */\n back?(): void;\n /**\n * Optional search params accessor. Returned `URLSearchParams` should be\n * read-only — mutating it does not navigate. Default implementation reads\n * `window.location.search` on the client.\n */\n searchParams?(): URLSearchParams;\n}\n\nconst RouterAdapterContext = createContext<RouterAdapter | null>(null);\n\nexport interface RouterAdapterProviderProps {\n readonly value: RouterAdapter;\n readonly children: ReactNode;\n}\n\n/**\n * Wraps the BPM React tree so `useRouterAdapter()` resolves to the host's\n * navigation primitives. Consumers typically put this once at the very root\n * of their layout (or inside a `'use client'` shim that reads\n * `useRouter()` + `usePathname()` from `next/navigation`).\n */\nexport function RouterAdapterProvider({\n value,\n children,\n}: RouterAdapterProviderProps): React.ReactElement {\n return (\n <RouterAdapterContext.Provider value={value}>\n {children}\n </RouterAdapterContext.Provider>\n );\n}\n\n/**\n * Reads the host-provided {@link RouterAdapter}. Throws when used outside a\n * `<RouterAdapterProvider>` to surface wiring mistakes early.\n */\nexport function useRouterAdapter(): RouterAdapter {\n const value = useContext(RouterAdapterContext);\n if (!value) {\n throw new Error(\n 'useRouterAdapter must be used inside <RouterAdapterProvider>. ' +\n 'In Next.js, wrap your app with <NextRouterAdapterProvider> from ' +\n '`@rytass/bpm-core-react/pages/router-adapter`.',\n );\n }\n return value;\n}\n\n/**\n * Pure default search-params reader for the browser. Server-side returns an\n * empty `URLSearchParams`. Used internally when a {@link RouterAdapter}\n * does not override `searchParams()`.\n */\nexport function defaultBrowserSearchParams(): URLSearchParams {\n if (typeof window === 'undefined') return new URLSearchParams();\n return new URLSearchParams(window.location.search);\n}\n"],"mappings":";;;;AA6BA,IAAM,IAAuB,EAAoC,IAAI;AAarE,SAAgB,EAAsB,EACpC,UACA,eACiD;CACjD,OACE,kBAAC,EAAqB,UAAtB;EAAsC;EACnC;CAC4B,CAAA;AAEnC;AAMA,SAAgB,IAAkC;CAChD,IAAM,IAAQ,EAAW,CAAoB;CAC7C,IAAI,CAAC,GACH,MAAU,MACR,8KAGF;CAEF,OAAO;AACT;AAOA,SAAgB,IAA8C;CAE5D,OADI,OAAO,SAAW,MAAoB,IAAI,gBAAgB,IACvD,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACnD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";let e=require("react"),t=require("react/jsx-runtime");var n=(0,e.createContext)(null);function r({value:e,children:r}){return(0,t.jsx)(n.Provider,{value:e,children:r})}function i(){let t=(0,e.useContext)(n);if(!t)throw Error("useRouterAdapter must be used inside <RouterAdapterProvider>. In Next.js, wrap your app with <NextRouterAdapterProvider> from `@rytass/bpm-core-react/pages/router-adapter`.");return t}function a(){return typeof window>`u`?new URLSearchParams:new URLSearchParams(window.location.search)}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
|
|
2
|
+
//# sourceMappingURL=router-adapter-BybHrCNP.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-adapter-BybHrCNP.cjs","names":[],"sources":["../../src/lib/router-adapter.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, useContext, type ReactNode } from 'react';\n\n/**\n * Framework-agnostic router contract every BPM view consumes.\n *\n * Next.js App Router consumers wire it from `useRouter()` / `usePathname()`,\n * but the contract is intentionally generic so SPA / Remix / Tanstack Router\n * hosts can plug in the same `<RouterAdapterProvider>` with their own\n * navigation primitives.\n */\nexport interface RouterAdapter {\n /** Current pathname (e.g. \"/inbox\"). `null` during SSR before hydration. */\n readonly pathname: string | null;\n /** Navigate to `href` (push onto history). */\n push(href: string): void;\n /** Navigate to `href` and replace the current history entry. */\n replace(href: string): void;\n /** Optional: go back. Falls back to `history.back()` when omitted. */\n back?(): void;\n /**\n * Optional search params accessor. Returned `URLSearchParams` should be\n * read-only — mutating it does not navigate. Default implementation reads\n * `window.location.search` on the client.\n */\n searchParams?(): URLSearchParams;\n}\n\nconst RouterAdapterContext = createContext<RouterAdapter | null>(null);\n\nexport interface RouterAdapterProviderProps {\n readonly value: RouterAdapter;\n readonly children: ReactNode;\n}\n\n/**\n * Wraps the BPM React tree so `useRouterAdapter()` resolves to the host's\n * navigation primitives. Consumers typically put this once at the very root\n * of their layout (or inside a `'use client'` shim that reads\n * `useRouter()` + `usePathname()` from `next/navigation`).\n */\nexport function RouterAdapterProvider({\n value,\n children,\n}: RouterAdapterProviderProps): React.ReactElement {\n return (\n <RouterAdapterContext.Provider value={value}>\n {children}\n </RouterAdapterContext.Provider>\n );\n}\n\n/**\n * Reads the host-provided {@link RouterAdapter}. Throws when used outside a\n * `<RouterAdapterProvider>` to surface wiring mistakes early.\n */\nexport function useRouterAdapter(): RouterAdapter {\n const value = useContext(RouterAdapterContext);\n if (!value) {\n throw new Error(\n 'useRouterAdapter must be used inside <RouterAdapterProvider>. ' +\n 'In Next.js, wrap your app with <NextRouterAdapterProvider> from ' +\n '`@rytass/bpm-core-react/pages/router-adapter`.',\n );\n }\n return value;\n}\n\n/**\n * Pure default search-params reader for the browser. Server-side returns an\n * empty `URLSearchParams`. Used internally when a {@link RouterAdapter}\n * does not override `searchParams()`.\n */\nexport function defaultBrowserSearchParams(): URLSearchParams {\n if (typeof window === 'undefined') return new URLSearchParams();\n return new URLSearchParams(window.location.search);\n}\n"],"mappings":"mEA6BA,IAAM,GAAA,EAAA,EAAA,eAA2D,IAAI,EAarE,SAAgB,EAAsB,CACpC,QACA,YACiD,CACjD,OACE,EAAA,EAAA,KAAC,EAAqB,SAAtB,CAAsC,QACnC,UAC4B,CAAA,CAEnC,CAMA,SAAgB,GAAkC,CAChD,IAAM,GAAA,EAAA,EAAA,YAAmB,CAAoB,EAC7C,GAAI,CAAC,EACH,MAAU,MACR,8KAGF,EAEF,OAAO,CACT,CAOA,SAAgB,GAA8C,CAE5D,OADI,OAAO,OAAW,IAAoB,IAAI,gBACvC,IAAI,gBAAgB,OAAO,SAAS,MAAM,CACnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.module-B5bg_goX.js","names":[],"sources":["../../src/views/templates/templates.module.scss"],"sourcesContent":[".templateFilterArea {\n :global(.mzn-filter-area__actions) {\n display: none;\n }\n\n :global(.mzn-form-field__label-area) {\n display: none;\n }\n\n :global(.mzn-form-field__control-field-slot--main) {\n width: 100%;\n min-width: 0;\n }\n}\n\n.templateModalFields {\n display: grid;\n gap: 16px;\n}\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.module-ClRnQQX4.cjs","names":[],"sources":["../../src/views/templates/templates.module.scss"],"sourcesContent":[".templateFilterArea {\n :global(.mzn-filter-area__actions) {\n display: none;\n }\n\n :global(.mzn-form-field__label-area) {\n display: none;\n }\n\n :global(.mzn-form-field__control-field-slot--main) {\n width: 100%;\n min-width: 0;\n }\n}\n\n.templateModalFields {\n display: grid;\n gap: 16px;\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { OrgUnitRecord, PositionRecord } from '../../libs/bpm-core-client/src/lib/organization/index.ts';
|
|
3
|
+
export type MemberOption = Readonly<{
|
|
4
|
+
email: string;
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
}>;
|
|
8
|
+
export type OrgUnitOption = Readonly<{
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
}>;
|
|
12
|
+
export type PositionOption = Readonly<{
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
}>;
|
|
16
|
+
interface MemberPickerProps {
|
|
17
|
+
readonly disabled?: boolean;
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly onChange: (option: MemberOption | null) => void;
|
|
20
|
+
readonly placeholder?: string;
|
|
21
|
+
readonly size?: 'main' | 'sub';
|
|
22
|
+
readonly value: MemberOption | null;
|
|
23
|
+
}
|
|
24
|
+
interface OrgUnitPickerProps {
|
|
25
|
+
readonly disabled?: boolean;
|
|
26
|
+
readonly name: string;
|
|
27
|
+
readonly onChange: (option: OrgUnitOption | null) => void;
|
|
28
|
+
readonly orgUnits: readonly OrgUnitRecord[];
|
|
29
|
+
readonly placeholder?: string;
|
|
30
|
+
readonly size?: 'main' | 'sub';
|
|
31
|
+
readonly value: OrgUnitOption | null;
|
|
32
|
+
}
|
|
33
|
+
interface PositionPickerProps {
|
|
34
|
+
readonly disabled?: boolean;
|
|
35
|
+
readonly name: string;
|
|
36
|
+
readonly onChange: (option: PositionOption | null) => void;
|
|
37
|
+
readonly placeholder?: string;
|
|
38
|
+
readonly positions: readonly PositionRecord[];
|
|
39
|
+
readonly size?: 'main' | 'sub';
|
|
40
|
+
readonly value: PositionOption | null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* AutoComplete-backed picker that searches the BPM member directory via
|
|
44
|
+
* `searchMembers()`. Emits a {@link MemberOption} `{ id, name, email }`
|
|
45
|
+
* on selection (or `null` when cleared).
|
|
46
|
+
*/
|
|
47
|
+
export declare function MemberPicker({ disabled, name, onChange, placeholder, size, value, }: MemberPickerProps): ReactElement;
|
|
48
|
+
/**
|
|
49
|
+
* Static `<Select>` over a pre-fetched list of org units. Caller is
|
|
50
|
+
* responsible for fetching the org units (typically via
|
|
51
|
+
* `readOrganizationDashboard` from `@rytass/bpm-core-client/organization`).
|
|
52
|
+
*/
|
|
53
|
+
export declare function OrgUnitPicker({ disabled, onChange, orgUnits, placeholder, size, value, }: OrgUnitPickerProps): ReactElement;
|
|
54
|
+
/**
|
|
55
|
+
* Static `<Select>` over a pre-fetched list of positions.
|
|
56
|
+
*/
|
|
57
|
+
export declare function PositionPicker({ disabled, onChange, placeholder, positions, size, value, }: PositionPickerProps): ReactElement;
|
|
58
|
+
export declare function readMemberOption(member: {
|
|
59
|
+
readonly email: string;
|
|
60
|
+
readonly memberId: string;
|
|
61
|
+
readonly name: string;
|
|
62
|
+
}): MemberOption;
|
|
63
|
+
export declare function readOrgUnitOption(orgUnit: OrgUnitRecord): OrgUnitOption;
|
|
64
|
+
export declare function readPositionOption(position: PositionRecord): PositionOption;
|
|
65
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { IconDefinition } from '@mezzanine-ui/icons';
|
|
3
|
+
interface NavigationItem {
|
|
4
|
+
readonly href: string;
|
|
5
|
+
readonly icon: IconDefinition;
|
|
6
|
+
readonly label: string;
|
|
7
|
+
readonly requiresAdmin?: boolean;
|
|
8
|
+
}
|
|
9
|
+
interface NavigationGroup {
|
|
10
|
+
readonly title: string;
|
|
11
|
+
readonly items: readonly NavigationItem[];
|
|
12
|
+
}
|
|
13
|
+
export interface AppNavigationProps {
|
|
14
|
+
/** Override the active href detection (defaults to router's pathname). */
|
|
15
|
+
readonly activeHref?: string;
|
|
16
|
+
/** Logo image URL displayed in the sidebar header. */
|
|
17
|
+
readonly logoSrc?: string;
|
|
18
|
+
/** Sidebar title (defaults to "BPM Admin"). */
|
|
19
|
+
readonly title?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Override the entire navigation tree. When omitted, the default 4-group
|
|
22
|
+
* BPM admin nav (`我的工作` / `查詢與代理` / `簽核設計` / `系統管理`) is used.
|
|
23
|
+
*/
|
|
24
|
+
readonly groups?: readonly NavigationGroup[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* BPM admin sidebar — composes Mezzanine UI `<Navigation>` with the
|
|
28
|
+
* default 4-group BPM tree. Reads `useAuth` to gate admin-only routes,
|
|
29
|
+
* `useNotificationUnread` to render the bell badge count, and the host's
|
|
30
|
+
* `RouterAdapter` to derive the active route. Calls `logoutApi()` and
|
|
31
|
+
* navigates back to `/login` on logout.
|
|
32
|
+
*/
|
|
33
|
+
export declare function AppNavigation({ activeHref, logoSrc, title, groups, }?: AppNavigationProps): ReactElement;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { ApprovalInstanceState, ApprovalInstanceView } from '../../libs/bpm-core-client/src/lib/workflow/index.ts';
|
|
3
|
+
export interface ApprovalInstanceListPageProps {
|
|
4
|
+
readonly activeHref: string;
|
|
5
|
+
readonly defaultState: ApprovalInstanceState | null;
|
|
6
|
+
readonly description: string;
|
|
7
|
+
readonly emptyMessage: string;
|
|
8
|
+
readonly searchPlaceholder: string;
|
|
9
|
+
readonly title: string;
|
|
10
|
+
readonly view: ApprovalInstanceView;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Shared list page for any approval-instance "view" (inbox / sent / cc /
|
|
14
|
+
* delegated). Caller picks the view + default state filter; the page renders
|
|
15
|
+
* the standard BPM filter bar + paginated table and navigates to
|
|
16
|
+
* `/instances/:id` on row action.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ApprovalInstanceListPage({ activeHref, defaultState, description, emptyMessage, searchPlaceholder, title, view, }: ApprovalInstanceListPageProps): ReactElement;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { FormFieldProps } from '@mezzanine-ui/react';
|
|
3
|
+
type BPMFormFieldProps = Omit<FormFieldProps, 'density' | 'fullWidth' | 'layout'> & Partial<Pick<FormFieldProps, 'density' | 'fullWidth' | 'layout'>>;
|
|
4
|
+
/**
|
|
5
|
+
* Mezzanine `<FormField>` pre-configured with the BPM admin defaults
|
|
6
|
+
* (`TIGHT` density, `HORIZONTAL` layout, full width). Use everywhere a
|
|
7
|
+
* label-aligned field is needed.
|
|
8
|
+
*/
|
|
9
|
+
export declare function BPMFormField({ density, fullWidth, layout, ...props }: BPMFormFieldProps): ReactElement;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
export interface DashboardPageProps {
|
|
3
|
+
readonly activeHref: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Operator dashboard — shows pending/unread/active counts for the
|
|
7
|
+
* currently-authenticated member. Reads {@link readWorkflowDashboardSummary}
|
|
8
|
+
* and renders five metric tiles that navigate via {@link useRouterAdapter}.
|
|
9
|
+
*/
|
|
10
|
+
export declare function DashboardPage({ activeHref }: DashboardPageProps): ReactElement;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Right-side notification drawer mounted at the root by `<Providers>`.
|
|
4
|
+
* Opens / closes via `useNotificationDrawer()`, polls
|
|
5
|
+
* `listNotifications()` for the current member, supports filter
|
|
6
|
+
* (`all` / `read` / `unread`), per-row mark-read, bulk mark-all-read, and
|
|
7
|
+
* load-more pagination. Clicking a row with an `instanceId` navigates to
|
|
8
|
+
* `/instances/<id>` via the host's router adapter.
|
|
9
|
+
*/
|
|
10
|
+
export declare function NotificationDrawer(): ReactElement | null;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { OrgUnitRecord } from '../../libs/bpm-core-client/src/lib/organization/index.ts';
|
|
2
|
+
import { OrgUnitHierarchyDraftChange } from '../lib/org-tree-draft';
|
|
3
|
+
export type OrgUnitTreeDraftEditorHandle = Readonly<{
|
|
4
|
+
cancelEditing: () => void;
|
|
5
|
+
saveDraft: () => Promise<void>;
|
|
6
|
+
startEditing: () => void;
|
|
7
|
+
}>;
|
|
8
|
+
export type OrgUnitTreeDraftEditorState = Readonly<{
|
|
9
|
+
hasDraftChanges: boolean;
|
|
10
|
+
isEditing: boolean;
|
|
11
|
+
}>;
|
|
12
|
+
export declare const OrgUnitTreeDraftEditor: import('react').ForwardRefExoticComponent<Readonly<{
|
|
13
|
+
onCreateChild: (parentId: string) => void;
|
|
14
|
+
onCreateRoot: () => void;
|
|
15
|
+
onEditOrgUnit: (orgUnit: OrgUnitRecord) => void;
|
|
16
|
+
onSaveDraft?: (changes: readonly OrgUnitHierarchyDraftChange[]) => Promise<void>;
|
|
17
|
+
onStateChange: (state: OrgUnitTreeDraftEditorState) => void;
|
|
18
|
+
orgUnits: readonly OrgUnitRecord[];
|
|
19
|
+
saving: boolean;
|
|
20
|
+
}> & import('react').RefAttributes<Readonly<{
|
|
21
|
+
cancelEditing: () => void;
|
|
22
|
+
saveDraft: () => Promise<void>;
|
|
23
|
+
startEditing: () => void;
|
|
24
|
+
}>>>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
export declare function configurePdfWorker(workerSrc: string): void;
|
|
3
|
+
export interface PDFPreviewProps {
|
|
4
|
+
readonly filename: string;
|
|
5
|
+
readonly fileUrl: string;
|
|
6
|
+
readonly onDownload?: () => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Mezzanine-styled PDF preview powered by `react-pdf`. Used by the instance
|
|
10
|
+
* detail view to preview PDF attachments inline.
|
|
11
|
+
*/
|
|
12
|
+
export declare function PDFPreview({ filename, fileUrl, onDownload, }: PDFPreviewProps): ReactElement;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.bpm_metricCard_vp2qC{color:inherit;cursor:pointer;text-decoration:none}.bpm_metricCard_vp2qC:hover{text-decoration:none}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/app-navigation-DAC5gFbG.cjs"),t=require("./chunks/router-adapter-BybHrCNP.cjs"),n=require("./chunks/auth-provider-D2P-qWmY.cjs"),r=require("./chunks/format-date-time-BQyH5U8z.cjs"),i=require("./chunks/admin-pickers-Btvij1at.cjs"),a=require("./chunks/approval-instance-list-page-DIAmwhvl.cjs"),o=require("./chunks/bpm-form-field-Bc6k4ZEO.cjs"),s=require("./chunks/dashboard-page-udYhnyMW.cjs");let c=require("react"),l=require("react/jsx-runtime"),u=require("@rytass/bpm-core-client/workflow"),d=require("@mezzanine-ui/react/moment"),f=require("@mezzanine-ui/react/Drawer");f=e.o(f,1);let p=require("@mezzanine-ui/react/NotificationCenter");p=e.o(p,1);var m=[`today`,`yesterday`,`past7Days`,`earlier`],h={earlier:`更早`,past7Days:`過去七天`,today:`今天`,yesterday:`昨天`},g=50;function _(){let r=t.r(),{member:i}=n.n(),{close:a,isOpen:o}=e.a(),{refreshUnreadCount:s}=e.r(),d=i?.memberId??null,[_,x]=(0,c.useState)([]),[S,C]=(0,c.useState)(0),[w,T]=(0,c.useState)(1),[E,D]=(0,c.useState)(!1),[O,k]=(0,c.useState)(!1),[A,j]=(0,c.useState)(null),[M,N]=(0,c.useState)(`all`),P=(0,c.useCallback)(async(e,t)=>{if(d){D(!0),j(null);try{let n=await(0,u.listNotifications)({includeRead:!0,page:e,pageSize:g,recipientMemberId:d});x(e=>t?[...e,...n.notifications]:n.notifications),C(n.totalCount),T(e),await s()}catch(e){j(b(e))}finally{D(!1)}}},[d,s]);(0,c.useEffect)(()=>{!o||!d||P(1,!1)},[o,d,P]);let F=(0,c.useCallback)(e=>{let t=e.target.value;(t===`all`||t===`read`||t===`unread`)&&N(t)},[]),I=(0,c.useCallback)(async()=>{if(!(!d||O)){k(!0),j(null);try{await(0,u.markAllNotificationsRead)({recipientMemberId:d}),await P(1,!1)}catch(e){j(b(e))}finally{k(!1)}}},[O,d,P]),L=(0,c.useCallback)(()=>{E||P(w+1,!0)},[E,P,w]),R=(0,c.useCallback)(async e=>{if(d)try{await(0,u.markNotificationRead)({id:e,readerMemberId:d}),await P(1,!1)}catch(e){j(b(e))}},[d,P]),z=(0,c.useCallback)(async e=>{if(!(!e.instanceId||!d))try{e.status!==`READ`&&(await(0,u.markNotificationRead)({id:e.id,readerMemberId:d}),await s()),a(),r.push(`/instances/${e.instanceId}`)}catch(e){j(b(e))}},[a,d,s,r]),B=(0,c.useMemo)(()=>_.filter(e=>M===`all`?!0:M===`read`?e.status===`READ`:e.status!==`READ`),[M,_]),V=(0,c.useMemo)(()=>{let e=new Date,t=m.reduce((e,t)=>(e[t]=[],e),{earlier:[],past7Days:[],today:[],yesterday:[]});return B.forEach(n=>{t[y(n.createdAt,e)].push(n)}),m.map(e=>[e,t[e]]).filter(([,e])=>e.length>0)},[B]),H=_.length<S;return d?(0,l.jsx)(f.default,{bottomGhostActionDisabled:O||E,bottomGhostActionLoading:O,bottomGhostActionText:`全部標為已讀`,bottomOnGhostActionClick:()=>{I()},bottomOnPrimaryActionClick:()=>{L()},bottomPrimaryActionDisabled:!H||E,bottomPrimaryActionLoading:E&&H,bottomPrimaryActionText:H?`載入更多`:`已顯示全部`,contentKey:`${M}:${_.length}`,filterAreaAllRadioLabel:`全部`,filterAreaOnRadioChange:F,filterAreaReadRadioLabel:`已讀`,filterAreaShow:!0,filterAreaUnreadRadioLabel:`未讀`,filterAreaValue:M,headerTitle:`通知中心`,isBottomDisplay:!0,isHeaderDisplay:!0,onClose:a,open:o,size:`medium`,children:(0,l.jsxs)(`div`,{role:`list`,children:[A?(0,l.jsx)(`p`,{role:`alert`,style:{color:`var(--mzn-color-text-error, #d92d20)`,padding:`12px 16px`},children:A}):null,V.length===0?(0,l.jsx)(`p`,{style:{color:`var(--mzn-color-text-secondary, #6b7280)`,padding:`24px 16px`,textAlign:`center`},children:E?`載入中…`:`目前沒有通知`}):null,V.map(([e,t],n)=>(0,l.jsx)(c.Fragment,{children:t.map((r,i)=>(0,l.jsx)(p.default,{appendTips:n===V.length-1&&i===t.length-1&&!H?`已顯示全部通知`:void 0,cancelButtonText:r.status===`READ`?void 0:`標為已讀`,description:r.body,onCancel:r.status===`READ`?void 0:()=>{R(r.id)},onConfirm:r.instanceId?()=>{z(r)}:void 0,confirmButtonText:r.instanceId?`查看案件`:void 0,prependTips:i===0?h[e]:void 0,reference:r.id,severity:v(r.type),showBadge:r.status!==`READ`,timeStamp:r.createdAt,title:r.title,type:`drawer`},r.id))},e))]})}):null}function v(e){return e===`SLA_OVERDUE`?`error`:e===`SLA_WARNING`?`warning`:e===`INSTANCE_COMPLETED`?`success`:`info`}function y(e,t){let n=new Date(e);if(Number.isNaN(n.getTime()))return`earlier`;let r=new Date(t.getFullYear(),t.getMonth(),t.getDate()),i=new Date(n.getFullYear(),n.getMonth(),n.getDate());if(i.getTime()===r.getTime())return`today`;let a=new Date(r);return a.setDate(a.getDate()-1),i.getTime()===a.getTime()?`yesterday`:(t.getTime()-n.getTime())/(1e3*60*60*24)<=7?`past7Days`:`earlier`}function b(e){return e instanceof Error?e.message:`發生未知錯誤`}function x({children:t,locale:r=d.CalendarLocale.ZH_TW,publicPaths:i,loginPath:a}){return(0,l.jsx)(d.CalendarConfigProviderMoment,{locale:r,children:(0,l.jsx)(n.t,{publicPaths:i,loginPath:a,children:(0,l.jsx)(e.n,{children:(0,l.jsxs)(e.i,{children:[t,(0,l.jsx)(_,{})]})})})})}exports.AppNavigation=e.t,exports.ApprovalInstanceListPage=a.t,exports.AuthProvider=n.t,exports.BPMFormField=o.t,exports.DashboardPage=s.t,exports.MemberPicker=i.t,exports.NotificationDrawer=_,exports.NotificationDrawerProvider=e.i,exports.NotificationUnreadProvider=e.n,exports.OrgUnitPicker=i.n,exports.PositionPicker=i.r,exports.Providers=x,exports.RouterAdapterProvider=t.t,exports.defaultBrowserSearchParams=t.n,exports.formatDateTime=r.t,exports.readMemberOption=i.i,exports.readOrgUnitOption=i.a,exports.readPositionOption=i.o,exports.useAuth=n.n,exports.useNotificationDrawer=e.a,exports.useNotificationUnread=e.r,exports.useRouterAdapter=t.r;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../src/components/notification-drawer.tsx","../src/lib/providers.tsx"],"sourcesContent":["'use client';\n\nimport {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ChangeEvent,\n type ReactElement,\n} from 'react';\nimport Drawer from '@mezzanine-ui/react/Drawer';\nimport NotificationCenter from '@mezzanine-ui/react/NotificationCenter';\nimport type { NotificationSeverity } from '@mezzanine-ui/core/notification-center';\nimport {\n listNotifications,\n markAllNotificationsRead,\n markNotificationRead,\n type NotificationRecord,\n type NotificationType,\n} from '@rytass/bpm-core-client/workflow';\nimport { useAuth } from '../lib/auth-provider';\nimport { useNotificationDrawer } from '../lib/notification-drawer-provider';\nimport { useNotificationUnread } from '../lib/notification-unread-provider';\nimport { useRouterAdapter } from '../lib/router-adapter';\n\ntype FilterValue = 'all' | 'read' | 'unread';\n\ntype TimeGroup = 'today' | 'yesterday' | 'past7Days' | 'earlier';\n\nconst TIME_GROUP_ORDER: readonly TimeGroup[] = [\n 'today',\n 'yesterday',\n 'past7Days',\n 'earlier',\n];\n\nconst TIME_GROUP_LABEL: Readonly<Record<TimeGroup, string>> = {\n earlier: '更早',\n past7Days: '過去七天',\n today: '今天',\n yesterday: '昨天',\n};\n\nconst PAGE_SIZE = 50;\n\n/**\n * Right-side notification drawer mounted at the root by `<Providers>`.\n * Opens / closes via `useNotificationDrawer()`, polls\n * `listNotifications()` for the current member, supports filter\n * (`all` / `read` / `unread`), per-row mark-read, bulk mark-all-read, and\n * load-more pagination. Clicking a row with an `instanceId` navigates to\n * `/instances/<id>` via the host's router adapter.\n */\nexport function NotificationDrawer(): ReactElement | null {\n const router = useRouterAdapter();\n const { member } = useAuth();\n const { close, isOpen } = useNotificationDrawer();\n const { refreshUnreadCount } = useNotificationUnread();\n const currentMemberId = member?.memberId ?? null;\n const [rows, setRows] = useState<readonly NotificationRecord[]>([]);\n const [totalCount, setTotalCount] = useState(0);\n const [page, setPage] = useState(1);\n const [loading, setLoading] = useState(false);\n const [bulkLoading, setBulkLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [filter, setFilter] = useState<FilterValue>('all');\n\n const loadPage = useCallback(\n async (nextPage: number, append: boolean): Promise<void> => {\n if (!currentMemberId) return;\n setLoading(true);\n setError(null);\n try {\n const result = await listNotifications({\n includeRead: true,\n page: nextPage,\n pageSize: PAGE_SIZE,\n recipientMemberId: currentMemberId,\n });\n setRows((current): readonly NotificationRecord[] =>\n append ? [...current, ...result.notifications] : result.notifications,\n );\n setTotalCount(result.totalCount);\n setPage(nextPage);\n await refreshUnreadCount();\n } catch (e: unknown) {\n setError(readErrorMessage(e));\n } finally {\n setLoading(false);\n }\n },\n [currentMemberId, refreshUnreadCount],\n );\n\n useEffect((): void => {\n if (!isOpen || !currentMemberId) return;\n void loadPage(1, false);\n }, [isOpen, currentMemberId, loadPage]);\n\n const handleFilterChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>): void => {\n const next = event.target.value;\n if (next === 'all' || next === 'read' || next === 'unread') setFilter(next);\n },\n [],\n );\n\n const handleMarkAllRead = useCallback(async (): Promise<void> => {\n if (!currentMemberId || bulkLoading) return;\n setBulkLoading(true);\n setError(null);\n try {\n await markAllNotificationsRead({ recipientMemberId: currentMemberId });\n await loadPage(1, false);\n } catch (e: unknown) {\n setError(readErrorMessage(e));\n } finally {\n setBulkLoading(false);\n }\n }, [bulkLoading, currentMemberId, loadPage]);\n\n const handleLoadMore = useCallback((): void => {\n if (loading) return;\n void loadPage(page + 1, true);\n }, [loading, loadPage, page]);\n\n const handleMarkRead = useCallback(\n async (id: string): Promise<void> => {\n if (!currentMemberId) return;\n try {\n await markNotificationRead({ id, readerMemberId: currentMemberId });\n await loadPage(1, false);\n } catch (e: unknown) {\n setError(readErrorMessage(e));\n }\n },\n [currentMemberId, loadPage],\n );\n\n const handleOpenInstance = useCallback(\n async (record: NotificationRecord): Promise<void> => {\n if (!record.instanceId || !currentMemberId) return;\n try {\n if (record.status !== 'READ') {\n await markNotificationRead({\n id: record.id,\n readerMemberId: currentMemberId,\n });\n await refreshUnreadCount();\n }\n close();\n router.push(`/instances/${record.instanceId}`);\n } catch (e: unknown) {\n setError(readErrorMessage(e));\n }\n },\n [close, currentMemberId, refreshUnreadCount, router],\n );\n\n const filteredRows = useMemo(\n (): readonly NotificationRecord[] =>\n rows.filter((row): boolean => {\n if (filter === 'all') return true;\n if (filter === 'read') return row.status === 'READ';\n return row.status !== 'READ';\n }),\n [filter, rows],\n );\n\n const groupedRows = useMemo(\n (): ReadonlyArray<readonly [TimeGroup, readonly NotificationRecord[]]> => {\n const now = new Date();\n const buckets = TIME_GROUP_ORDER.reduce<\n Record<TimeGroup, NotificationRecord[]>\n >(\n (accumulator, group) => {\n accumulator[group] = [];\n return accumulator;\n },\n { earlier: [], past7Days: [], today: [], yesterday: [] },\n );\n filteredRows.forEach((row): void => {\n buckets[resolveTimeGroup(row.createdAt, now)].push(row);\n });\n return TIME_GROUP_ORDER.map(\n (group) => [group, buckets[group]] as const,\n ).filter(([, items]) => items.length > 0);\n },\n [filteredRows],\n );\n\n const hasMore = rows.length < totalCount;\n\n if (!currentMemberId) return null;\n\n return (\n <Drawer\n bottomGhostActionDisabled={bulkLoading || loading}\n bottomGhostActionLoading={bulkLoading}\n bottomGhostActionText=\"全部標為已讀\"\n bottomOnGhostActionClick={(): void => {\n void handleMarkAllRead();\n }}\n bottomOnPrimaryActionClick={(): void => {\n handleLoadMore();\n }}\n bottomPrimaryActionDisabled={!hasMore || loading}\n bottomPrimaryActionLoading={loading && hasMore}\n bottomPrimaryActionText={hasMore ? '載入更多' : '已顯示全部'}\n contentKey={`${filter}:${rows.length}`}\n filterAreaAllRadioLabel=\"全部\"\n filterAreaOnRadioChange={handleFilterChange}\n filterAreaReadRadioLabel=\"已讀\"\n filterAreaShow\n filterAreaUnreadRadioLabel=\"未讀\"\n filterAreaValue={filter}\n headerTitle=\"通知中心\"\n isBottomDisplay\n isHeaderDisplay\n onClose={close}\n open={isOpen}\n size=\"medium\"\n >\n <div role=\"list\">\n {error ? (\n <p\n role=\"alert\"\n style={{\n color: 'var(--mzn-color-text-error, #d92d20)',\n padding: '12px 16px',\n }}\n >\n {error}\n </p>\n ) : null}\n {groupedRows.length === 0 ? (\n <p\n style={{\n color: 'var(--mzn-color-text-secondary, #6b7280)',\n padding: '24px 16px',\n textAlign: 'center',\n }}\n >\n {loading ? '載入中…' : '目前沒有通知'}\n </p>\n ) : null}\n {groupedRows.map(([group, items], groupIndex) => (\n <Fragment key={group}>\n {items.map((record, itemIndex) => (\n <NotificationCenter\n appendTips={\n groupIndex === groupedRows.length - 1 &&\n itemIndex === items.length - 1 &&\n !hasMore\n ? '已顯示全部通知'\n : undefined\n }\n cancelButtonText={\n record.status !== 'READ' ? '標為已讀' : undefined\n }\n description={record.body}\n key={record.id}\n onCancel={\n record.status !== 'READ'\n ? (): void => {\n void handleMarkRead(record.id);\n }\n : undefined\n }\n onConfirm={\n record.instanceId\n ? (): void => {\n void handleOpenInstance(record);\n }\n : undefined\n }\n confirmButtonText={record.instanceId ? '查看案件' : undefined}\n prependTips={itemIndex === 0 ? TIME_GROUP_LABEL[group] : undefined}\n reference={record.id}\n severity={toSeverity(record.type)}\n showBadge={record.status !== 'READ'}\n timeStamp={record.createdAt}\n title={record.title}\n type=\"drawer\"\n />\n ))}\n </Fragment>\n ))}\n </div>\n </Drawer>\n );\n}\n\nfunction toSeverity(type: NotificationType): NotificationSeverity {\n if (type === 'SLA_OVERDUE') return 'error';\n if (type === 'SLA_WARNING') return 'warning';\n if (type === 'INSTANCE_COMPLETED') return 'success';\n return 'info';\n}\n\nfunction resolveTimeGroup(value: string, now: Date): TimeGroup {\n const notificationDate = new Date(value);\n if (Number.isNaN(notificationDate.getTime())) return 'earlier';\n const nowStartOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n const notificationStartOfDay = new Date(\n notificationDate.getFullYear(),\n notificationDate.getMonth(),\n notificationDate.getDate(),\n );\n if (notificationStartOfDay.getTime() === nowStartOfDay.getTime()) return 'today';\n const yesterdayStartOfDay = new Date(nowStartOfDay);\n yesterdayStartOfDay.setDate(yesterdayStartOfDay.getDate() - 1);\n if (notificationStartOfDay.getTime() === yesterdayStartOfDay.getTime())\n return 'yesterday';\n const diffInDays =\n (now.getTime() - notificationDate.getTime()) / (1000 * 60 * 60 * 24);\n if (diffInDays <= 7) return 'past7Days';\n return 'earlier';\n}\n\nfunction readErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : '發生未知錯誤';\n}\n","'use client';\n\nimport type { ReactElement, ReactNode } from 'react';\nimport {\n CalendarConfigProviderMoment,\n CalendarLocale,\n} from '@mezzanine-ui/react/moment';\nimport { AuthProvider } from './auth-provider';\nimport { NotificationDrawer } from '../components/notification-drawer';\nimport { NotificationDrawerProvider } from './notification-drawer-provider';\nimport { NotificationUnreadProvider } from './notification-unread-provider';\n\ninterface ProvidersProps {\n readonly children: ReactNode;\n /** Override Mezzanine calendar locale. Defaults to `CalendarLocale.ZH_TW`. */\n readonly locale?: CalendarLocale;\n /**\n * Public paths that should not trigger redirect to `/login` when there\n * is no session. Forwarded to `<AuthProvider>`. Defaults to `['/login']`.\n */\n readonly publicPaths?: readonly string[];\n /** Where to send unauthenticated users. Defaults to `'/login'`. */\n readonly loginPath?: string;\n}\n\n/**\n * One-stop BPM admin provider stack. Wires:\n *\n * - Mezzanine UI calendar locale (moment-based, `ZH_TW` by default)\n * - `<AuthProvider>` (BPM session via REST `/auth/*`)\n * - `<NotificationUnreadProvider>` (polls unread count)\n * - `<NotificationDrawerProvider>` (controls drawer open/close state)\n * - `<NotificationDrawer />` mounted at the root so the bell-icon button in\n * `<AppNavigation />` can open it.\n *\n * Consumer hosts wrap this **inside** a `<RouterAdapterProvider>` (provided\n * by the `pages/*` subpath shims when consuming via Next.js, or wired by\n * hand for other frameworks).\n */\nexport function Providers({\n children,\n locale = CalendarLocale.ZH_TW,\n publicPaths,\n loginPath,\n}: ProvidersProps): ReactElement {\n return (\n <CalendarConfigProviderMoment locale={locale}>\n <AuthProvider publicPaths={publicPaths} loginPath={loginPath}>\n <NotificationUnreadProvider>\n <NotificationDrawerProvider>\n {children}\n <NotificationDrawer />\n </NotificationDrawerProvider>\n </NotificationUnreadProvider>\n </AuthProvider>\n </CalendarConfigProviderMoment>\n );\n}\n"],"mappings":"qvBA8BA,IAAM,EAAyC,CAC7C,QACA,YACA,YACA,SACF,EAEM,EAAwD,CAC5D,QAAS,KACT,UAAW,OACX,MAAO,KACP,UAAW,IACb,EAEM,EAAY,GAUlB,SAAgB,GAA0C,CACxD,IAAM,EAAS,EAAA,EAAiB,EAC1B,CAAE,UAAW,EAAA,EAAQ,EACrB,CAAE,QAAO,UAAW,EAAA,EAAsB,EAC1C,CAAE,sBAAuB,EAAA,EAAsB,EAC/C,EAAkB,GAAQ,UAAY,KACtC,CAAC,EAAM,IAAA,EAAA,EAAA,UAAmD,CAAC,CAAC,EAC5D,CAAC,EAAY,IAAA,EAAA,EAAA,UAA0B,CAAC,EACxC,CAAC,EAAM,IAAA,EAAA,EAAA,UAAoB,CAAC,EAC5B,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,EAAK,EACtC,CAAC,EAAa,IAAA,EAAA,EAAA,UAA2B,EAAK,EAC9C,CAAC,EAAO,IAAA,EAAA,EAAA,UAAoC,IAAI,EAChD,CAAC,EAAQ,IAAA,EAAA,EAAA,UAAmC,KAAK,EAEjD,GAAA,EAAA,EAAA,aACJ,MAAO,EAAkB,IAAmC,CACrD,KAEL,CADA,EAAW,EAAI,EACf,EAAS,IAAI,EACb,GAAI,CACF,IAAM,EAAS,MAAA,EAAA,EAAA,mBAAwB,CACrC,YAAa,GACb,KAAM,EACN,SAAU,EACV,kBAAmB,CACrB,CAAC,EACD,EAAS,GACP,EAAS,CAAC,GAAG,EAAS,GAAG,EAAO,aAAa,EAAI,EAAO,aAC1D,EACA,EAAc,EAAO,UAAU,EAC/B,EAAQ,CAAQ,EAChB,MAAM,EAAmB,CAC3B,OAAS,EAAY,CACnB,EAAS,EAAiB,CAAC,CAAC,CAC9B,QAAU,CACR,EAAW,EAAK,CAClB,CAlBa,CAmBf,EACA,CAAC,EAAiB,CAAkB,CACtC,GAEA,EAAA,EAAA,eAAsB,CAChB,CAAC,GAAU,CAAC,GAChB,EAAc,EAAG,EAAK,CACxB,EAAG,CAAC,EAAQ,EAAiB,CAAQ,CAAC,EAEtC,IAAM,GAAA,EAAA,EAAA,aACH,GAA+C,CAC9C,IAAM,EAAO,EAAM,OAAO,OACtB,IAAS,OAAS,IAAS,QAAU,IAAS,WAAU,EAAU,CAAI,CAC5E,EACA,CAAC,CACH,EAEM,GAAA,EAAA,EAAA,aAAgC,SAA2B,CAC3D,MAAC,GAAmB,GAExB,CADA,EAAe,EAAI,EACnB,EAAS,IAAI,EACb,GAAI,CACF,MAAA,EAAA,EAAA,0BAA+B,CAAE,kBAAmB,CAAgB,CAAC,EACrE,MAAM,EAAS,EAAG,EAAK,CACzB,OAAS,EAAY,CACnB,EAAS,EAAiB,CAAC,CAAC,CAC9B,QAAU,CACR,EAAe,EAAK,CACtB,CARa,CASf,EAAG,CAAC,EAAa,EAAiB,CAAQ,CAAC,EAErC,GAAA,EAAA,EAAA,iBAAyC,CACzC,GACJ,EAAc,EAAO,EAAG,EAAI,CAC9B,EAAG,CAAC,EAAS,EAAU,CAAI,CAAC,EAEtB,GAAA,EAAA,EAAA,aACJ,KAAO,IAA8B,CAC9B,KACL,GAAI,CACF,MAAA,EAAA,EAAA,sBAA2B,CAAE,KAAI,eAAgB,CAAgB,CAAC,EAClE,MAAM,EAAS,EAAG,EAAK,CACzB,OAAS,EAAY,CACnB,EAAS,EAAiB,CAAC,CAAC,CAC9B,CACF,EACA,CAAC,EAAiB,CAAQ,CAC5B,EAEM,GAAA,EAAA,EAAA,aACJ,KAAO,IAA8C,CAC/C,MAAC,EAAO,YAAc,CAAC,GAC3B,GAAI,CACE,EAAO,SAAW,SACpB,MAAA,EAAA,EAAA,sBAA2B,CACzB,GAAI,EAAO,GACX,eAAgB,CAClB,CAAC,EACD,MAAM,EAAmB,GAE3B,EAAM,EACN,EAAO,KAAK,cAAc,EAAO,YAAY,CAC/C,OAAS,EAAY,CACnB,EAAS,EAAiB,CAAC,CAAC,CAC9B,CACF,EACA,CAAC,EAAO,EAAiB,EAAoB,CAAM,CACrD,EAEM,GAAA,EAAA,EAAA,aAEF,EAAK,OAAQ,GACP,IAAW,MAAc,GACzB,IAAW,OAAe,EAAI,SAAW,OACtC,EAAI,SAAW,MACvB,EACH,CAAC,EAAQ,CAAI,CACf,EAEM,GAAA,EAAA,EAAA,aACsE,CACxE,IAAM,EAAM,IAAI,KACV,EAAU,EAAiB,QAG9B,EAAa,KACZ,EAAY,GAAS,CAAC,EACf,GAET,CAAE,QAAS,CAAC,EAAG,UAAW,CAAC,EAAG,MAAO,CAAC,EAAG,UAAW,CAAC,CAAE,CACzD,EAIA,OAHA,EAAa,QAAS,GAAc,CAClC,EAAQ,EAAiB,EAAI,UAAW,CAAG,GAAG,KAAK,CAAG,CACxD,CAAC,EACM,EAAiB,IACrB,GAAU,CAAC,EAAO,EAAQ,EAAM,CACnC,EAAE,QAAQ,EAAG,KAAW,EAAM,OAAS,CAAC,CAC1C,EACA,CAAC,CAAY,CACf,EAEM,EAAU,EAAK,OAAS,EAI9B,OAFK,GAGH,EAAA,EAAA,KAAC,EAAA,QAAD,CACE,0BAA2B,GAAe,EAC1C,yBAA0B,EAC1B,sBAAsB,SACtB,6BAAsC,CACpC,EAAuB,CACzB,EACA,+BAAwC,CACtC,EAAe,CACjB,EACA,4BAA6B,CAAC,GAAW,EACzC,2BAA4B,GAAW,EACvC,wBAAyB,EAAU,OAAS,QAC5C,WAAY,GAAG,EAAO,GAAG,EAAK,SAC9B,wBAAwB,KACxB,wBAAyB,EACzB,yBAAyB,KACzB,eAAA,GACA,2BAA2B,KAC3B,gBAAiB,EACjB,YAAY,OACZ,gBAAA,GACA,gBAAA,GACA,QAAS,EACT,KAAM,EACN,KAAK,mBAEL,EAAA,EAAA,MAAC,MAAD,CAAK,KAAK,gBAAV,CACG,GACC,EAAA,EAAA,KAAC,IAAD,CACE,KAAK,QACL,MAAO,CACL,MAAO,uCACP,QAAS,WACX,WAEC,CACA,CAAA,EACD,KACH,EAAY,SAAW,GACtB,EAAA,EAAA,KAAC,IAAD,CACE,MAAO,CACL,MAAO,2CACP,QAAS,YACT,UAAW,QACb,WAEC,EAAU,OAAS,QACnB,CAAA,EACD,KACH,EAAY,KAAK,CAAC,EAAO,GAAQ,KAChC,EAAA,EAAA,KAAC,EAAA,SAAD,CAAA,SACG,EAAM,KAAK,EAAQ,KAClB,EAAA,EAAA,KAAC,EAAA,QAAD,CACE,WACE,IAAe,EAAY,OAAS,GACpC,IAAc,EAAM,OAAS,GAC7B,CAAC,EACG,UACA,IAAA,GAEN,iBACE,EAAO,SAAW,OAAkB,IAAA,GAAT,OAE7B,YAAa,EAAO,KAEpB,SACE,EAAO,SAAW,OAId,IAAA,OAHY,CACV,EAAoB,EAAO,EAAE,CAC/B,EAGN,UACE,EAAO,eACS,CACV,EAAwB,CAAM,CAChC,EACA,IAAA,GAEN,kBAAmB,EAAO,WAAa,OAAS,IAAA,GAChD,YAAa,IAAc,EAAI,EAAiB,GAAS,IAAA,GACzD,UAAW,EAAO,GAClB,SAAU,EAAW,EAAO,IAAI,EAChC,UAAW,EAAO,SAAW,OAC7B,UAAW,EAAO,UAClB,MAAO,EAAO,MACd,KAAK,QACN,EAvBM,EAAO,EAuBb,CACF,CACO,EAvCK,CAuCL,CACX,CACE,GACC,CAAA,EAhGmB,IAkG/B,CAEA,SAAS,EAAW,EAA8C,CAIhE,OAHI,IAAS,cAAsB,QAC/B,IAAS,cAAsB,UAC/B,IAAS,qBAA6B,UACnC,MACT,CAEA,SAAS,EAAiB,EAAe,EAAsB,CAC7D,IAAM,EAAmB,IAAI,KAAK,CAAK,EACvC,GAAI,OAAO,MAAM,EAAiB,QAAQ,CAAC,EAAG,MAAO,UACrD,IAAM,EAAgB,IAAI,KAAK,EAAI,YAAY,EAAG,EAAI,SAAS,EAAG,EAAI,QAAQ,CAAC,EACzE,EAAyB,IAAI,KACjC,EAAiB,YAAY,EAC7B,EAAiB,SAAS,EAC1B,EAAiB,QAAQ,CAC3B,EACA,GAAI,EAAuB,QAAQ,IAAM,EAAc,QAAQ,EAAG,MAAO,QACzE,IAAM,EAAsB,IAAI,KAAK,CAAa,EAOlD,OANA,EAAoB,QAAQ,EAAoB,QAAQ,EAAI,CAAC,EACzD,EAAuB,QAAQ,IAAM,EAAoB,QAAQ,EAC5D,aAEN,EAAI,QAAQ,EAAI,EAAiB,QAAQ,IAAM,IAAO,GAAK,GAAK,KACjD,EAAU,YACrB,SACT,CAEA,SAAS,EAAiB,EAAwB,CAChD,OAAO,aAAiB,MAAQ,EAAM,QAAU,QAClD,CC5RA,SAAgB,EAAU,CACxB,WACA,SAAS,EAAA,eAAe,MACxB,cACA,aAC+B,CAC/B,OACE,EAAA,EAAA,KAAC,EAAA,6BAAD,CAAsC,mBACpC,EAAA,EAAA,KAAC,EAAA,EAAD,CAA2B,cAAwB,sBACjD,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACE,EAAA,EAAA,MAAC,EAAA,EAAD,CAAA,SAAA,CACG,GACD,EAAA,EAAA,KAAC,EAAD,CAAqB,CAAA,CACK,CAAA,CAAA,CACF,CAAA,CAChB,CAAA,CACc,CAAA,CAElC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './lib/auth-provider';
|
|
2
|
+
export * from './lib/format-date-time';
|
|
3
|
+
export * from './lib/notification-drawer-provider';
|
|
4
|
+
export * from './lib/notification-unread-provider';
|
|
5
|
+
export * from './lib/providers';
|
|
6
|
+
export * from './lib/router-adapter';
|
|
7
|
+
export * from './components/admin-pickers';
|
|
8
|
+
export * from './components/app-navigation';
|
|
9
|
+
export * from './components/approval-instance-list-page';
|
|
10
|
+
export * from './components/bpm-form-field';
|
|
11
|
+
export * from './components/dashboard-page';
|
|
12
|
+
export * from './components/notification-drawer';
|