@rytass/bpm-core-react 0.2.0 → 0.3.1
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/README.md +13 -1
- package/dist/chunks/app-navigation-C_mbz7jx.cjs +2 -0
- package/dist/chunks/app-navigation-C_mbz7jx.cjs.map +1 -0
- package/dist/chunks/{app-navigation-CATITRM7.js → app-navigation-uwbNEw9P.js} +66 -67
- package/dist/chunks/app-navigation-uwbNEw9P.js.map +1 -0
- package/dist/chunks/approval-instance-list-page-Mo6wpDPb.cjs +2 -0
- package/dist/chunks/approval-instance-list-page-Mo6wpDPb.cjs.map +1 -0
- package/dist/chunks/approval-instance-list-page-nmzMrj0b.js +281 -0
- package/dist/chunks/approval-instance-list-page-nmzMrj0b.js.map +1 -0
- package/dist/chunks/auth-provider-BV8Iiwfb.cjs +2 -0
- package/dist/chunks/auth-provider-BV8Iiwfb.cjs.map +1 -0
- package/dist/chunks/auth-provider-Bnox5gsx.js +98 -0
- package/dist/chunks/auth-provider-Bnox5gsx.js.map +1 -0
- package/dist/chunks/builder-DPhAH381.cjs +3 -0
- package/dist/chunks/builder-DPhAH381.cjs.map +1 -0
- package/dist/chunks/{FormBuilderView-CvChAvgD.js → builder-DqZskyXC.js} +334 -331
- package/dist/chunks/builder-DqZskyXC.js.map +1 -0
- package/dist/chunks/categories-DEijUOnw.cjs +2 -0
- package/dist/chunks/categories-DEijUOnw.cjs.map +1 -0
- package/dist/chunks/categories-DTEl182t.js +386 -0
- package/dist/chunks/categories-DTEl182t.js.map +1 -0
- package/dist/chunks/dashboard-page-DCmuB0Rw.cjs +2 -0
- package/dist/chunks/dashboard-page-DCmuB0Rw.cjs.map +1 -0
- package/dist/chunks/dashboard-page-Dx5PeEeN.js +117 -0
- package/dist/chunks/dashboard-page-Dx5PeEeN.js.map +1 -0
- package/dist/chunks/delegations-C-ZrwzvU.js +572 -0
- package/dist/chunks/delegations-C-ZrwzvU.js.map +1 -0
- package/dist/chunks/delegations-C5PzZ5Kn.js +645 -0
- package/dist/chunks/delegations-C5PzZ5Kn.js.map +1 -0
- package/dist/chunks/delegations-DOGDvybX.cjs +2 -0
- package/dist/chunks/delegations-DOGDvybX.cjs.map +1 -0
- package/dist/chunks/delegations-DkDBWOQ7.cjs +2 -0
- package/dist/chunks/delegations-DkDBWOQ7.cjs.map +1 -0
- package/dist/chunks/detail-B2gcOPkd.cjs +2 -0
- package/dist/chunks/detail-B2gcOPkd.cjs.map +1 -0
- package/dist/chunks/{InstanceDetailView-C-A-LOCG.js → detail-CfFyU5zC.js} +670 -667
- package/dist/chunks/detail-CfFyU5zC.js.map +1 -0
- package/dist/chunks/{format-date-time-BQyH5U8z.cjs → format-date-time-isOa3e9q.cjs} +2 -2
- package/dist/chunks/{format-date-time-BQyH5U8z.cjs.map → format-date-time-isOa3e9q.cjs.map} +1 -1
- package/dist/chunks/{LoginView-a1iu3cfc.js → login-C20yVxbc.js} +9 -9
- package/dist/chunks/login-C20yVxbc.js.map +1 -0
- package/dist/chunks/login-CQ9MfwcC.cjs +2 -0
- package/dist/chunks/login-CQ9MfwcC.cjs.map +1 -0
- package/dist/chunks/notifications-CPQ-nVar.cjs +2 -0
- package/dist/chunks/notifications-CPQ-nVar.cjs.map +1 -0
- package/dist/chunks/notifications-DweexUVy.js +197 -0
- package/dist/chunks/notifications-DweexUVy.js.map +1 -0
- package/dist/chunks/orgs-DgZ0DQ3-.cjs +2 -0
- package/dist/chunks/orgs-DgZ0DQ3-.cjs.map +1 -0
- package/dist/chunks/{AdminOrgsView-DZaVAbaQ.js → orgs-xrdhb3hS.js} +669 -666
- package/dist/chunks/orgs-xrdhb3hS.js.map +1 -0
- package/dist/chunks/templates-PK_VYvcy.js +383 -0
- package/dist/chunks/templates-PK_VYvcy.js.map +1 -0
- package/dist/chunks/templates-x1OJZmsG.cjs +2 -0
- package/dist/chunks/templates-x1OJZmsG.cjs.map +1 -0
- package/dist/chunks/users-CY4-NK3j.js +218 -0
- package/dist/chunks/users-CY4-NK3j.js.map +1 -0
- package/dist/chunks/users-DHnu_056.cjs +2 -0
- package/dist/chunks/users-DHnu_056.cjs.map +1 -0
- package/dist/components/app-navigation.d.ts +17 -10
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +12 -13
- package/dist/index.js.map +1 -1
- package/dist/lib/notification-drawer-provider.d.ts +1 -1
- package/dist/lib/notification-unread-provider.d.ts +1 -1
- package/dist/lib/providers.d.ts +1 -1
- package/dist/next/BPMNextProviders.d.ts +6 -0
- package/dist/next/index.cjs +2 -0
- package/dist/next/index.cjs.map +1 -0
- package/dist/next/index.d.ts +1 -0
- package/dist/next/index.js +33 -0
- package/dist/next/index.js.map +1 -0
- package/dist/pages/admin/delegations/index.cjs +1 -1
- package/dist/pages/admin/delegations/index.cjs.map +1 -1
- package/dist/pages/admin/delegations/index.js +1 -1
- package/dist/pages/admin/delegations/index.js.map +1 -1
- package/dist/pages/admin/orgs/index.cjs +1 -1
- package/dist/pages/admin/orgs/index.cjs.map +1 -1
- package/dist/pages/admin/orgs/index.js +1 -1
- package/dist/pages/admin/orgs/index.js.map +1 -1
- package/dist/pages/admin/users/index.cjs +1 -1
- package/dist/pages/admin/users/index.cjs.map +1 -1
- package/dist/pages/admin/users/index.js +1 -1
- package/dist/pages/admin/users/index.js.map +1 -1
- package/dist/pages/cc/index.cjs +1 -1
- package/dist/pages/cc/index.cjs.map +1 -1
- package/dist/pages/cc/index.js +1 -1
- package/dist/pages/cc/index.js.map +1 -1
- package/dist/pages/dashboard/index.cjs +1 -1
- package/dist/pages/dashboard/index.cjs.map +1 -1
- package/dist/pages/dashboard/index.js +1 -1
- package/dist/pages/dashboard/index.js.map +1 -1
- package/dist/pages/delegations/index.cjs +1 -1
- package/dist/pages/delegations/index.cjs.map +1 -1
- package/dist/pages/delegations/index.js +1 -1
- package/dist/pages/delegations/index.js.map +1 -1
- package/dist/pages/forms/builder/index.cjs +1 -1
- package/dist/pages/forms/builder/index.cjs.map +1 -1
- package/dist/pages/forms/builder/index.d.ts +5 -7
- package/dist/pages/forms/builder/index.js +1 -1
- package/dist/pages/forms/builder/index.js.map +1 -1
- package/dist/pages/forms/index.cjs +1 -1
- package/dist/pages/forms/index.cjs.map +1 -1
- package/dist/pages/forms/index.js +1 -1
- package/dist/pages/forms/index.js.map +1 -1
- package/dist/pages/inbox/index.cjs +1 -1
- package/dist/pages/inbox/index.cjs.map +1 -1
- package/dist/pages/inbox/index.js +1 -1
- package/dist/pages/inbox/index.js.map +1 -1
- package/dist/pages/instances/detail/index.cjs +1 -1
- package/dist/pages/instances/detail/index.cjs.map +1 -1
- package/dist/pages/instances/detail/index.d.ts +1 -1
- package/dist/pages/instances/detail/index.js +1 -1
- package/dist/pages/instances/detail/index.js.map +1 -1
- package/dist/pages/instances/new/index.cjs +1 -1
- package/dist/pages/instances/new/index.cjs.map +1 -1
- package/dist/pages/instances/new/index.d.ts +5 -1
- package/dist/pages/instances/new/index.js +4 -3
- package/dist/pages/instances/new/index.js.map +1 -1
- package/dist/pages/login/index.cjs +1 -1
- package/dist/pages/login/index.cjs.map +1 -1
- package/dist/pages/login/index.d.ts +5 -1
- package/dist/pages/login/index.js +4 -3
- package/dist/pages/login/index.js.map +1 -1
- package/dist/pages/root/index.cjs +1 -1
- package/dist/pages/root/index.cjs.map +1 -1
- package/dist/pages/root/index.d.ts +7 -5
- package/dist/pages/root/index.js +5 -6
- package/dist/pages/root/index.js.map +1 -1
- package/dist/pages/search/index.cjs +1 -1
- package/dist/pages/search/index.cjs.map +1 -1
- package/dist/pages/search/index.js +1 -1
- package/dist/pages/search/index.js.map +1 -1
- package/dist/pages/sent/index.cjs +1 -1
- package/dist/pages/sent/index.cjs.map +1 -1
- package/dist/pages/sent/index.js +1 -1
- package/dist/pages/sent/index.js.map +1 -1
- package/dist/pages/settings/notifications/index.cjs +1 -1
- package/dist/pages/settings/notifications/index.cjs.map +1 -1
- package/dist/pages/settings/notifications/index.js +1 -1
- package/dist/pages/settings/notifications/index.js.map +1 -1
- package/dist/pages/templates/categories/index.cjs +1 -1
- package/dist/pages/templates/categories/index.cjs.map +1 -1
- package/dist/pages/templates/categories/index.js +1 -1
- package/dist/pages/templates/categories/index.js.map +1 -1
- package/dist/pages/templates/designer/index.cjs +1 -1
- package/dist/pages/templates/designer/index.cjs.map +1 -1
- package/dist/pages/templates/designer/index.d.ts +2 -4
- package/dist/pages/templates/designer/index.js +1 -1
- package/dist/pages/templates/designer/index.js.map +1 -1
- package/dist/pages/templates/index.cjs +1 -1
- package/dist/pages/templates/index.cjs.map +1 -1
- package/dist/pages/templates/index.js +1 -1
- package/dist/pages/templates/index.js.map +1 -1
- package/dist/pages/templates/versions/index.cjs +1 -1
- package/dist/pages/templates/versions/index.cjs.map +1 -1
- package/dist/pages/templates/versions/index.d.ts +2 -4
- package/dist/pages/templates/versions/index.js +1 -1
- package/dist/pages/templates/versions/index.js.map +1 -1
- package/dist/views/admin/delegations/index.cjs +1 -1
- package/dist/views/admin/delegations/index.js +1 -1
- package/dist/views/admin/index.cjs +1 -0
- package/dist/views/admin/index.d.ts +3 -0
- package/dist/views/admin/index.js +4 -0
- package/dist/views/admin/orgs/index.cjs +1 -1
- package/dist/views/admin/orgs/index.js +1 -1
- package/dist/views/admin/users/index.cjs +1 -1
- package/dist/views/admin/users/index.js +1 -1
- package/dist/views/cc/index.cjs +2 -1
- package/dist/views/cc/index.cjs.map +1 -0
- package/dist/views/cc/index.js +19 -2
- package/dist/views/cc/index.js.map +1 -0
- package/dist/views/dashboard/index.cjs +2 -1
- package/dist/views/dashboard/index.cjs.map +1 -0
- package/dist/views/dashboard/index.js +11 -2
- package/dist/views/dashboard/index.js.map +1 -0
- package/dist/views/delegations/index.cjs +1 -1
- package/dist/views/delegations/index.js +1 -1
- package/dist/views/forms/builder/index.cjs +1 -1
- package/dist/views/forms/builder/index.js +1 -1
- package/dist/views/forms/index.cjs +2 -1
- package/dist/views/forms/index.cjs.map +1 -0
- package/dist/views/forms/index.d.ts +1 -0
- package/dist/views/forms/index.js +189 -2
- package/dist/views/forms/index.js.map +1 -0
- package/dist/views/inbox/index.cjs +2 -1
- package/dist/views/inbox/index.cjs.map +1 -0
- package/dist/views/inbox/index.js +293 -2
- package/dist/views/inbox/index.js.map +1 -0
- package/dist/views/instances/detail/index.cjs +1 -1
- package/dist/views/instances/detail/index.js +1 -1
- package/dist/views/instances/index.cjs +1 -0
- package/dist/views/instances/index.d.ts +1 -0
- package/dist/views/instances/index.js +2 -0
- package/dist/views/instances/new/InstanceNewView.d.ts +3 -3
- package/dist/views/instances/new/index.cjs +2 -1
- package/dist/views/instances/new/index.cjs.map +1 -0
- package/dist/views/instances/new/index.js +195 -2
- package/dist/views/instances/new/index.js.map +1 -0
- package/dist/views/login/index.cjs +1 -1
- package/dist/views/login/index.js +1 -1
- package/dist/views/search/index.cjs +2 -1
- package/dist/views/search/index.cjs.map +1 -0
- package/dist/views/search/index.js +19 -2
- package/dist/views/search/index.js.map +1 -0
- package/dist/views/sent/index.cjs +2 -1
- package/dist/views/sent/index.cjs.map +1 -0
- package/dist/views/sent/index.js +19 -2
- package/dist/views/sent/index.js.map +1 -0
- package/dist/views/settings/index.cjs +1 -0
- package/dist/views/settings/index.d.ts +1 -0
- package/dist/views/settings/index.js +2 -0
- package/dist/views/settings/notifications/index.cjs +1 -1
- package/dist/views/settings/notifications/index.js +1 -1
- package/dist/views/templates/categories/index.cjs +1 -1
- package/dist/views/templates/categories/index.js +1 -1
- package/dist/views/templates/designer/index.cjs +51 -1
- package/dist/views/templates/designer/index.cjs.map +1 -0
- package/dist/views/templates/designer/index.js +2275 -2
- package/dist/views/templates/designer/index.js.map +1 -0
- package/dist/views/templates/index.cjs +1 -1
- package/dist/views/templates/index.d.ts +2 -0
- package/dist/views/templates/index.js +4 -2
- package/dist/views/templates/versions/index.cjs +2 -1
- package/dist/views/templates/versions/index.cjs.map +1 -0
- package/dist/views/templates/versions/index.js +113 -2
- package/dist/views/templates/versions/index.js.map +1 -0
- package/dist/views/workflow/index.cjs +1 -0
- package/dist/views/workflow/index.d.ts +4 -0
- package/dist/views/workflow/index.js +5 -0
- package/package.json +28 -3
- package/dist/chunks/AdminDelegationsView-CqNmlVWx.cjs +0 -2
- package/dist/chunks/AdminDelegationsView-CqNmlVWx.cjs.map +0 -1
- package/dist/chunks/AdminDelegationsView-DydMZ9ED.js +0 -642
- package/dist/chunks/AdminDelegationsView-DydMZ9ED.js.map +0 -1
- package/dist/chunks/AdminOrgsView-DZaVAbaQ.js.map +0 -1
- package/dist/chunks/AdminOrgsView-bSsIyMvk.cjs +0 -2
- package/dist/chunks/AdminOrgsView-bSsIyMvk.cjs.map +0 -1
- package/dist/chunks/AdminUsersView-C0oO05Br.js +0 -215
- package/dist/chunks/AdminUsersView-C0oO05Br.js.map +0 -1
- package/dist/chunks/AdminUsersView-DlArLlIr.cjs +0 -2
- package/dist/chunks/AdminUsersView-DlArLlIr.cjs.map +0 -1
- package/dist/chunks/CcView-BsVsya5F.cjs +0 -2
- package/dist/chunks/CcView-BsVsya5F.cjs.map +0 -1
- package/dist/chunks/CcView-Bv0GzA5C.js +0 -19
- package/dist/chunks/CcView-Bv0GzA5C.js.map +0 -1
- package/dist/chunks/DashboardView-Dk1ZQmmk.js +0 -11
- package/dist/chunks/DashboardView-Dk1ZQmmk.js.map +0 -1
- package/dist/chunks/DashboardView-_0zh-rxT.cjs +0 -2
- package/dist/chunks/DashboardView-_0zh-rxT.cjs.map +0 -1
- package/dist/chunks/DelegationsView-DQUqOUV5.js +0 -569
- package/dist/chunks/DelegationsView-DQUqOUV5.js.map +0 -1
- package/dist/chunks/DelegationsView-pKeFV2LN.cjs +0 -2
- package/dist/chunks/DelegationsView-pKeFV2LN.cjs.map +0 -1
- package/dist/chunks/FormBuilderView-BKtyW55e.cjs +0 -3
- package/dist/chunks/FormBuilderView-BKtyW55e.cjs.map +0 -1
- package/dist/chunks/FormBuilderView-CvChAvgD.js.map +0 -1
- package/dist/chunks/FormsView-DYEuik8W.js +0 -185
- package/dist/chunks/FormsView-DYEuik8W.js.map +0 -1
- package/dist/chunks/FormsView-RjJEkIfZ.cjs +0 -2
- package/dist/chunks/FormsView-RjJEkIfZ.cjs.map +0 -1
- package/dist/chunks/InboxView-DDWwmWhA.cjs +0 -2
- package/dist/chunks/InboxView-DDWwmWhA.cjs.map +0 -1
- package/dist/chunks/InboxView-YSoyrYLk.js +0 -291
- package/dist/chunks/InboxView-YSoyrYLk.js.map +0 -1
- package/dist/chunks/InstanceDetailView-C-A-LOCG.js.map +0 -1
- package/dist/chunks/InstanceDetailView-l_kNDCz2.cjs +0 -2
- package/dist/chunks/InstanceDetailView-l_kNDCz2.cjs.map +0 -1
- package/dist/chunks/InstanceNewView-B5hz-FWd.js +0 -190
- package/dist/chunks/InstanceNewView-B5hz-FWd.js.map +0 -1
- package/dist/chunks/InstanceNewView-CdCsxQIu.cjs +0 -2
- package/dist/chunks/InstanceNewView-CdCsxQIu.cjs.map +0 -1
- package/dist/chunks/LoginView-BED07v-7.cjs +0 -2
- package/dist/chunks/LoginView-BED07v-7.cjs.map +0 -1
- package/dist/chunks/LoginView-a1iu3cfc.js.map +0 -1
- package/dist/chunks/RootClientView-rXJt4TDd.cjs +0 -2
- package/dist/chunks/RootClientView-rXJt4TDd.cjs.map +0 -1
- package/dist/chunks/RootClientView-wAkXUEZw.js +0 -34
- package/dist/chunks/RootClientView-wAkXUEZw.js.map +0 -1
- package/dist/chunks/SearchView-CgXPssgE.cjs +0 -2
- package/dist/chunks/SearchView-CgXPssgE.cjs.map +0 -1
- package/dist/chunks/SearchView-WXMbZwRw.js +0 -19
- package/dist/chunks/SearchView-WXMbZwRw.js.map +0 -1
- package/dist/chunks/SentView-BTDoFBrG.cjs +0 -2
- package/dist/chunks/SentView-BTDoFBrG.cjs.map +0 -1
- package/dist/chunks/SentView-CdOL92Rq.js +0 -19
- package/dist/chunks/SentView-CdOL92Rq.js.map +0 -1
- package/dist/chunks/SettingsNotificationsView-B6F6fa7U.js +0 -194
- package/dist/chunks/SettingsNotificationsView-B6F6fa7U.js.map +0 -1
- package/dist/chunks/SettingsNotificationsView-Bnz0CmoJ.cjs +0 -2
- package/dist/chunks/SettingsNotificationsView-Bnz0CmoJ.cjs.map +0 -1
- package/dist/chunks/TemplateCategoriesView-CgZciaSd.js +0 -382
- package/dist/chunks/TemplateCategoriesView-CgZciaSd.js.map +0 -1
- package/dist/chunks/TemplateCategoriesView-U0stGUBc.cjs +0 -2
- package/dist/chunks/TemplateCategoriesView-U0stGUBc.cjs.map +0 -1
- package/dist/chunks/TemplateDesignerView-A38DyYD4.cjs +0 -51
- package/dist/chunks/TemplateDesignerView-A38DyYD4.cjs.map +0 -1
- package/dist/chunks/TemplateDesignerView-Dffx-VZ-.js +0 -2272
- package/dist/chunks/TemplateDesignerView-Dffx-VZ-.js.map +0 -1
- package/dist/chunks/TemplateVersionsView-6sVQbBem.js +0 -110
- package/dist/chunks/TemplateVersionsView-6sVQbBem.js.map +0 -1
- package/dist/chunks/TemplateVersionsView-CMqw3ieU.cjs +0 -2
- package/dist/chunks/TemplateVersionsView-CMqw3ieU.cjs.map +0 -1
- package/dist/chunks/TemplatesView-BLj9f-XI.js +0 -380
- package/dist/chunks/TemplatesView-BLj9f-XI.js.map +0 -1
- package/dist/chunks/TemplatesView-DIOQTUUl.cjs +0 -2
- package/dist/chunks/TemplatesView-DIOQTUUl.cjs.map +0 -1
- package/dist/chunks/app-navigation-CATITRM7.js.map +0 -1
- package/dist/chunks/app-navigation-DAC5gFbG.cjs +0 -2
- package/dist/chunks/app-navigation-DAC5gFbG.cjs.map +0 -1
- package/dist/chunks/approval-instance-list-page-B6vAGvOb.js +0 -278
- package/dist/chunks/approval-instance-list-page-B6vAGvOb.js.map +0 -1
- package/dist/chunks/approval-instance-list-page-DIAmwhvl.cjs +0 -2
- package/dist/chunks/approval-instance-list-page-DIAmwhvl.cjs.map +0 -1
- package/dist/chunks/auth-provider-D2P-qWmY.cjs +0 -2
- package/dist/chunks/auth-provider-D2P-qWmY.cjs.map +0 -1
- package/dist/chunks/auth-provider-TTO9eNZV.js +0 -83
- package/dist/chunks/auth-provider-TTO9eNZV.js.map +0 -1
- package/dist/chunks/dashboard-page-BsW8t104.js +0 -115
- package/dist/chunks/dashboard-page-BsW8t104.js.map +0 -1
- package/dist/chunks/dashboard-page-udYhnyMW.cjs +0 -2
- package/dist/chunks/dashboard-page-udYhnyMW.cjs.map +0 -1
- package/dist/chunks/router-adapter-BdHZXLS3.js +0 -23
- package/dist/chunks/router-adapter-BdHZXLS3.js.map +0 -1
- package/dist/chunks/router-adapter-BybHrCNP.cjs +0 -2
- package/dist/chunks/router-adapter-BybHrCNP.cjs.map +0 -1
- package/dist/chunks/templates.module-B5bg_goX.js +0 -8
- package/dist/chunks/templates.module-B5bg_goX.js.map +0 -1
- package/dist/chunks/templates.module-ClRnQQX4.cjs +0 -2
- package/dist/chunks/templates.module-ClRnQQX4.cjs.map +0 -1
- package/dist/pages/admin/delegations/AdminDelegationsClientView.cjs +0 -2
- package/dist/pages/admin/delegations/AdminDelegationsClientView.cjs.map +0 -1
- package/dist/pages/admin/delegations/AdminDelegationsClientView.d.ts +0 -3
- package/dist/pages/admin/delegations/AdminDelegationsClientView.js +0 -28
- package/dist/pages/admin/delegations/AdminDelegationsClientView.js.map +0 -1
- package/dist/pages/admin/orgs/AdminOrgsClientView.cjs +0 -2
- package/dist/pages/admin/orgs/AdminOrgsClientView.cjs.map +0 -1
- package/dist/pages/admin/orgs/AdminOrgsClientView.d.ts +0 -3
- package/dist/pages/admin/orgs/AdminOrgsClientView.js +0 -28
- package/dist/pages/admin/orgs/AdminOrgsClientView.js.map +0 -1
- package/dist/pages/admin/users/AdminUsersClientView.cjs +0 -2
- package/dist/pages/admin/users/AdminUsersClientView.cjs.map +0 -1
- package/dist/pages/admin/users/AdminUsersClientView.d.ts +0 -3
- package/dist/pages/admin/users/AdminUsersClientView.js +0 -28
- package/dist/pages/admin/users/AdminUsersClientView.js.map +0 -1
- package/dist/pages/cc/CcClientView.cjs +0 -2
- package/dist/pages/cc/CcClientView.cjs.map +0 -1
- package/dist/pages/cc/CcClientView.d.ts +0 -7
- package/dist/pages/cc/CcClientView.js +0 -28
- package/dist/pages/cc/CcClientView.js.map +0 -1
- package/dist/pages/dashboard/DashboardClientView.cjs +0 -2
- package/dist/pages/dashboard/DashboardClientView.cjs.map +0 -1
- package/dist/pages/dashboard/DashboardClientView.d.ts +0 -9
- package/dist/pages/dashboard/DashboardClientView.js +0 -28
- package/dist/pages/dashboard/DashboardClientView.js.map +0 -1
- package/dist/pages/delegations/DelegationsClientView.cjs +0 -2
- package/dist/pages/delegations/DelegationsClientView.cjs.map +0 -1
- package/dist/pages/delegations/DelegationsClientView.d.ts +0 -3
- package/dist/pages/delegations/DelegationsClientView.js +0 -28
- package/dist/pages/delegations/DelegationsClientView.js.map +0 -1
- package/dist/pages/forms/FormsClientView.cjs +0 -2
- package/dist/pages/forms/FormsClientView.cjs.map +0 -1
- package/dist/pages/forms/FormsClientView.d.ts +0 -10
- package/dist/pages/forms/FormsClientView.js +0 -28
- package/dist/pages/forms/FormsClientView.js.map +0 -1
- package/dist/pages/forms/builder/FormBuilderClientView.cjs +0 -2
- package/dist/pages/forms/builder/FormBuilderClientView.cjs.map +0 -1
- package/dist/pages/forms/builder/FormBuilderClientView.d.ts +0 -11
- package/dist/pages/forms/builder/FormBuilderClientView.js +0 -28
- package/dist/pages/forms/builder/FormBuilderClientView.js.map +0 -1
- package/dist/pages/inbox/InboxClientView.cjs +0 -2
- package/dist/pages/inbox/InboxClientView.cjs.map +0 -1
- package/dist/pages/inbox/InboxClientView.d.ts +0 -9
- package/dist/pages/inbox/InboxClientView.js +0 -28
- package/dist/pages/inbox/InboxClientView.js.map +0 -1
- package/dist/pages/instances/detail/InstanceDetailClientView.cjs +0 -2
- package/dist/pages/instances/detail/InstanceDetailClientView.cjs.map +0 -1
- package/dist/pages/instances/detail/InstanceDetailClientView.d.ts +0 -9
- package/dist/pages/instances/detail/InstanceDetailClientView.js +0 -28
- package/dist/pages/instances/detail/InstanceDetailClientView.js.map +0 -1
- package/dist/pages/instances/new/InstanceNewClientView.cjs +0 -2
- package/dist/pages/instances/new/InstanceNewClientView.cjs.map +0 -1
- package/dist/pages/instances/new/InstanceNewClientView.d.ts +0 -8
- package/dist/pages/instances/new/InstanceNewClientView.js +0 -28
- package/dist/pages/instances/new/InstanceNewClientView.js.map +0 -1
- package/dist/pages/login/LoginClientView.cjs +0 -2
- package/dist/pages/login/LoginClientView.cjs.map +0 -1
- package/dist/pages/login/LoginClientView.d.ts +0 -11
- package/dist/pages/login/LoginClientView.js +0 -29
- package/dist/pages/login/LoginClientView.js.map +0 -1
- package/dist/pages/root/RootClientView.cjs +0 -1
- package/dist/pages/root/RootClientView.d.ts +0 -8
- package/dist/pages/root/RootClientView.js +0 -2
- package/dist/pages/search/SearchClientView.cjs +0 -2
- package/dist/pages/search/SearchClientView.cjs.map +0 -1
- package/dist/pages/search/SearchClientView.d.ts +0 -7
- package/dist/pages/search/SearchClientView.js +0 -28
- package/dist/pages/search/SearchClientView.js.map +0 -1
- package/dist/pages/sent/SentClientView.cjs +0 -2
- package/dist/pages/sent/SentClientView.cjs.map +0 -1
- package/dist/pages/sent/SentClientView.d.ts +0 -7
- package/dist/pages/sent/SentClientView.js +0 -28
- package/dist/pages/sent/SentClientView.js.map +0 -1
- package/dist/pages/settings/notifications/SettingsNotificationsClientView.cjs +0 -2
- package/dist/pages/settings/notifications/SettingsNotificationsClientView.cjs.map +0 -1
- package/dist/pages/settings/notifications/SettingsNotificationsClientView.d.ts +0 -3
- package/dist/pages/settings/notifications/SettingsNotificationsClientView.js +0 -28
- package/dist/pages/settings/notifications/SettingsNotificationsClientView.js.map +0 -1
- package/dist/pages/templates/TemplatesClientView.cjs +0 -2
- package/dist/pages/templates/TemplatesClientView.cjs.map +0 -1
- package/dist/pages/templates/TemplatesClientView.d.ts +0 -3
- package/dist/pages/templates/TemplatesClientView.js +0 -28
- package/dist/pages/templates/TemplatesClientView.js.map +0 -1
- package/dist/pages/templates/categories/TemplateCategoriesClientView.cjs +0 -2
- package/dist/pages/templates/categories/TemplateCategoriesClientView.cjs.map +0 -1
- package/dist/pages/templates/categories/TemplateCategoriesClientView.d.ts +0 -3
- package/dist/pages/templates/categories/TemplateCategoriesClientView.js +0 -28
- package/dist/pages/templates/categories/TemplateCategoriesClientView.js.map +0 -1
- package/dist/pages/templates/designer/TemplateDesignerClientView.cjs +0 -2
- package/dist/pages/templates/designer/TemplateDesignerClientView.cjs.map +0 -1
- package/dist/pages/templates/designer/TemplateDesignerClientView.d.ts +0 -3
- package/dist/pages/templates/designer/TemplateDesignerClientView.js +0 -28
- package/dist/pages/templates/designer/TemplateDesignerClientView.js.map +0 -1
- package/dist/pages/templates/versions/TemplateVersionsClientView.cjs +0 -2
- package/dist/pages/templates/versions/TemplateVersionsClientView.cjs.map +0 -1
- package/dist/pages/templates/versions/TemplateVersionsClientView.d.ts +0 -3
- package/dist/pages/templates/versions/TemplateVersionsClientView.js +0 -28
- package/dist/pages/templates/versions/TemplateVersionsClientView.js.map +0 -1
- /package/dist/{templates.css → categories.css} +0 -0
- /package/dist/{AdminDelegationsView.css → delegations.css} +0 -0
- /package/dist/{DelegationsView.css → delegations2.css} +0 -0
- /package/dist/{InstanceDetailView.css → detail.css} +0 -0
- /package/dist/{LoginView.css → login.css} +0 -0
- /package/dist/{SettingsNotificationsView.css → notifications.css} +0 -0
- /package/dist/{AdminOrgsView.css → orgs.css} +0 -0
- /package/dist/{AdminUsersView.css → users.css} +0 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { n as e } from "./auth-provider-Bnox5gsx.js";
|
|
3
|
+
import { t } from "./app-navigation-uwbNEw9P.js";
|
|
4
|
+
import { useEffect as n, useState as r } from "react";
|
|
5
|
+
import { Filter as i, FilterArea as a, FilterLine as o, FormField as s, PageHeader as c, RadioGroup as l, Section as u, SectionGroup as d, Typography as f } from "@mezzanine-ui/react";
|
|
6
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
7
|
+
import { readNotificationPreference as h, updateNotificationPreference as g } from "@rytass/bpm-core-client/workflow";
|
|
8
|
+
import _ from "@mezzanine-ui/react/ContentHeader";
|
|
9
|
+
import { FormFieldLayout as v } from "@mezzanine-ui/core/form";
|
|
10
|
+
import '../notifications.css';var y = {
|
|
11
|
+
preferenceFilter: "bpm_preferenceFilter_snhMa",
|
|
12
|
+
segmentFilterControl: "bpm_segmentFilterControl_piBnq",
|
|
13
|
+
segmentFilterLabel: "bpm_segmentFilterLabel_U0z8J"
|
|
14
|
+
}, b = [{
|
|
15
|
+
id: "INSTANT",
|
|
16
|
+
name: "即時通知"
|
|
17
|
+
}, {
|
|
18
|
+
id: "DAILY",
|
|
19
|
+
name: "每日摘要"
|
|
20
|
+
}], x = [{
|
|
21
|
+
id: "ON",
|
|
22
|
+
name: "開"
|
|
23
|
+
}, {
|
|
24
|
+
id: "OFF",
|
|
25
|
+
name: "關"
|
|
26
|
+
}], S = {
|
|
27
|
+
emailDigestMode: "INSTANT",
|
|
28
|
+
emailEnabled: !0,
|
|
29
|
+
inAppEnabled: !0,
|
|
30
|
+
memberId: "",
|
|
31
|
+
quietHoursEnd: null,
|
|
32
|
+
quietHoursStart: null,
|
|
33
|
+
updatedAt: ""
|
|
34
|
+
};
|
|
35
|
+
function C({ activeHref: C = "/settings/notifications" } = {}) {
|
|
36
|
+
let { member: k } = e(), A = k?.memberId ?? null, [j, M] = r(S), [N, P] = r(!0), [F, I] = r(!1), [L, R] = r(null);
|
|
37
|
+
n(() => {
|
|
38
|
+
A && (P(!0), R(null), h(A).then((e) => {
|
|
39
|
+
M(e);
|
|
40
|
+
}).catch((e) => {
|
|
41
|
+
R(O(e));
|
|
42
|
+
}).finally(() => {
|
|
43
|
+
P(!1);
|
|
44
|
+
}));
|
|
45
|
+
}, [A]);
|
|
46
|
+
async function z(e) {
|
|
47
|
+
if (!A || F) return;
|
|
48
|
+
let t = j;
|
|
49
|
+
M(e), I(!0);
|
|
50
|
+
try {
|
|
51
|
+
M(await g({
|
|
52
|
+
emailDigestMode: e.emailDigestMode,
|
|
53
|
+
emailEnabled: e.emailEnabled,
|
|
54
|
+
inAppEnabled: e.inAppEnabled,
|
|
55
|
+
memberId: A,
|
|
56
|
+
quietHoursEnd: e.quietHoursEnd,
|
|
57
|
+
quietHoursStart: e.quietHoursStart
|
|
58
|
+
}));
|
|
59
|
+
} catch (e) {
|
|
60
|
+
M(t), R(O(e));
|
|
61
|
+
} finally {
|
|
62
|
+
I(!1);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
let B = N || F;
|
|
66
|
+
return /* @__PURE__ */ m(t, {
|
|
67
|
+
activeHref: C,
|
|
68
|
+
children: [/* @__PURE__ */ p(c, { children: /* @__PURE__ */ p(_, {
|
|
69
|
+
description: "調整站內通知、Email 通知與摘要頻率。",
|
|
70
|
+
title: "通知設定"
|
|
71
|
+
}) }), /* @__PURE__ */ p(d, { children: /* @__PURE__ */ p(u, {
|
|
72
|
+
filterArea: /* @__PURE__ */ p(a, {
|
|
73
|
+
className: y.preferenceFilter,
|
|
74
|
+
isDirty: !1,
|
|
75
|
+
children: /* @__PURE__ */ m(o, { children: [
|
|
76
|
+
/* @__PURE__ */ p(i, {
|
|
77
|
+
minWidth: 160,
|
|
78
|
+
span: 1,
|
|
79
|
+
children: /* @__PURE__ */ p(s, {
|
|
80
|
+
layout: v.VERTICAL,
|
|
81
|
+
name: "inAppEnabled",
|
|
82
|
+
style: w,
|
|
83
|
+
children: /* @__PURE__ */ m("div", {
|
|
84
|
+
className: y.segmentFilterControl,
|
|
85
|
+
children: [/* @__PURE__ */ p("span", {
|
|
86
|
+
className: y.segmentFilterLabel,
|
|
87
|
+
children: "站內通知"
|
|
88
|
+
}), /* @__PURE__ */ p(l, {
|
|
89
|
+
disabled: B,
|
|
90
|
+
name: "inAppEnabled",
|
|
91
|
+
onChange: (e) => {
|
|
92
|
+
z({
|
|
93
|
+
...j,
|
|
94
|
+
inAppEnabled: E(e.target.value)
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
options: [...x],
|
|
98
|
+
size: "sub",
|
|
99
|
+
type: "segment",
|
|
100
|
+
value: D(j.inAppEnabled)
|
|
101
|
+
})]
|
|
102
|
+
})
|
|
103
|
+
})
|
|
104
|
+
}),
|
|
105
|
+
/* @__PURE__ */ p(i, {
|
|
106
|
+
minWidth: 180,
|
|
107
|
+
span: 1,
|
|
108
|
+
children: /* @__PURE__ */ p(s, {
|
|
109
|
+
layout: v.VERTICAL,
|
|
110
|
+
name: "emailEnabled",
|
|
111
|
+
style: w,
|
|
112
|
+
children: /* @__PURE__ */ m("div", {
|
|
113
|
+
className: y.segmentFilterControl,
|
|
114
|
+
children: [/* @__PURE__ */ p("span", {
|
|
115
|
+
className: y.segmentFilterLabel,
|
|
116
|
+
children: "Email 通知"
|
|
117
|
+
}), /* @__PURE__ */ p(l, {
|
|
118
|
+
disabled: B,
|
|
119
|
+
name: "emailEnabled",
|
|
120
|
+
onChange: (e) => {
|
|
121
|
+
z({
|
|
122
|
+
...j,
|
|
123
|
+
emailEnabled: E(e.target.value)
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
options: [...x],
|
|
127
|
+
size: "sub",
|
|
128
|
+
type: "segment",
|
|
129
|
+
value: D(j.emailEnabled)
|
|
130
|
+
})]
|
|
131
|
+
})
|
|
132
|
+
})
|
|
133
|
+
}),
|
|
134
|
+
/* @__PURE__ */ p(i, {
|
|
135
|
+
minWidth: 280,
|
|
136
|
+
span: 2,
|
|
137
|
+
children: /* @__PURE__ */ p(s, {
|
|
138
|
+
fullWidth: !0,
|
|
139
|
+
layout: v.VERTICAL,
|
|
140
|
+
name: "emailDigestMode",
|
|
141
|
+
style: w,
|
|
142
|
+
children: /* @__PURE__ */ m("div", {
|
|
143
|
+
className: y.segmentFilterControl,
|
|
144
|
+
children: [/* @__PURE__ */ p("span", {
|
|
145
|
+
className: y.segmentFilterLabel,
|
|
146
|
+
children: "Email 頻率"
|
|
147
|
+
}), /* @__PURE__ */ p(l, {
|
|
148
|
+
disabled: B,
|
|
149
|
+
name: "emailDigestMode",
|
|
150
|
+
onChange: (e) => {
|
|
151
|
+
z({
|
|
152
|
+
...j,
|
|
153
|
+
emailDigestMode: T(e.target.value)
|
|
154
|
+
});
|
|
155
|
+
},
|
|
156
|
+
options: [...b],
|
|
157
|
+
size: "sub",
|
|
158
|
+
type: "segment",
|
|
159
|
+
value: j.emailDigestMode
|
|
160
|
+
})]
|
|
161
|
+
})
|
|
162
|
+
})
|
|
163
|
+
})
|
|
164
|
+
] })
|
|
165
|
+
}),
|
|
166
|
+
children: L ? /* @__PURE__ */ p(f, {
|
|
167
|
+
color: "text-error",
|
|
168
|
+
variant: "body",
|
|
169
|
+
children: L
|
|
170
|
+
}) : /* @__PURE__ */ p(f, {
|
|
171
|
+
color: "text-neutral",
|
|
172
|
+
variant: "body",
|
|
173
|
+
children: "偏好設定會立即生效。"
|
|
174
|
+
})
|
|
175
|
+
}) })]
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
var w = {
|
|
179
|
+
minWidth: 0,
|
|
180
|
+
whiteSpace: "nowrap"
|
|
181
|
+
};
|
|
182
|
+
function T(e) {
|
|
183
|
+
return e === "DAILY" ? "DAILY" : "INSTANT";
|
|
184
|
+
}
|
|
185
|
+
function E(e) {
|
|
186
|
+
return e !== "OFF";
|
|
187
|
+
}
|
|
188
|
+
function D(e) {
|
|
189
|
+
return e ? "ON" : "OFF";
|
|
190
|
+
}
|
|
191
|
+
function O(e) {
|
|
192
|
+
return e instanceof Error ? e.message : "發生未知錯誤";
|
|
193
|
+
}
|
|
194
|
+
//#endregion
|
|
195
|
+
export { C as t };
|
|
196
|
+
|
|
197
|
+
//# sourceMappingURL=notifications-DweexUVy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications-DweexUVy.js","names":[],"sources":["../../src/views/settings/notifications/notification-settings.module.scss","../../src/views/settings/notifications/SettingsNotificationsView.tsx"],"sourcesContent":[".preferenceFilter {\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.segmentFilterControl {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n min-width: 0;\n white-space: nowrap;\n\n :global(.mzn-input-check-group--segmented) {\n align-self: flex-start;\n transform: translateY(-7px);\n }\n}\n\n.segmentFilterLabel {\n flex: 0 0 auto;\n color: var(--mzn-color-text-primary, #1f2937);\n font-size: 13px;\n line-height: 16px;\n}\n","'use client';\n\nimport {\n ChangeEvent,\n CSSProperties,\n ReactElement,\n useEffect,\n useState,\n} from 'react';\nimport {\n Filter,\n FilterArea,\n FilterLine,\n FormField,\n PageHeader,\n RadioGroup,\n Section,\n SectionGroup,\n Typography,\n} from '@mezzanine-ui/react';\nimport ContentHeader from '@mezzanine-ui/react/ContentHeader';\nimport { FormFieldLayout } from '@mezzanine-ui/core/form';\nimport { useAuth } from '../../../lib/auth-provider';\nimport { AppLayout } from '../../../components/app-navigation';\nimport {\n NotificationDigestMode,\n NotificationPreferenceRecord,\n readNotificationPreference,\n updateNotificationPreference,\n} from '@rytass/bpm-core-client/workflow';\nimport styles from './notification-settings.module.scss';\n\ninterface DigestOption {\n readonly id: NotificationDigestMode;\n readonly name: string;\n}\n\ntype EnabledSegmentValue = 'OFF' | 'ON';\n\ninterface EnabledSegmentOption {\n readonly id: EnabledSegmentValue;\n readonly name: string;\n}\n\nconst DIGEST_OPTIONS: readonly DigestOption[] = [\n { id: 'INSTANT', name: '即時通知' },\n { id: 'DAILY', name: '每日摘要' },\n];\n\nconst ENABLED_SEGMENT_OPTIONS: readonly EnabledSegmentOption[] = [\n { id: 'ON', name: '開' },\n { id: 'OFF', name: '關' },\n];\n\nconst DEFAULT_PREFERENCE: NotificationPreferenceRecord = {\n emailDigestMode: 'INSTANT',\n emailEnabled: true,\n inAppEnabled: true,\n memberId: '',\n quietHoursEnd: null,\n quietHoursStart: null,\n updatedAt: '',\n};\n\nexport interface SettingsNotificationsViewProps {\n readonly activeHref?: string;\n}\n\nexport function SettingsNotificationsView({\n activeHref = '/settings/notifications',\n}: SettingsNotificationsViewProps = {}): ReactElement {\n const { member } = useAuth();\n const currentMemberId = member?.memberId ?? null;\n const [preference, setPreference] =\n useState<NotificationPreferenceRecord>(DEFAULT_PREFERENCE);\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n useEffect((): void => {\n if (!currentMemberId) {\n return;\n }\n\n setLoading(true);\n setError(null);\n\n readNotificationPreference(currentMemberId)\n .then((nextPreference): void => {\n setPreference(nextPreference);\n })\n .catch((requestError: unknown): void => {\n setError(readErrorMessage(requestError));\n })\n .finally((): void => {\n setLoading(false);\n });\n }, [currentMemberId]);\n\n async function handlePreferenceChange(\n nextPreference: NotificationPreferenceRecord,\n ): Promise<void> {\n if (!currentMemberId || saving) {\n return;\n }\n\n const previousPreference = preference;\n setPreference(nextPreference);\n setSaving(true);\n\n try {\n setPreference(\n await updateNotificationPreference({\n emailDigestMode: nextPreference.emailDigestMode,\n emailEnabled: nextPreference.emailEnabled,\n inAppEnabled: nextPreference.inAppEnabled,\n memberId: currentMemberId,\n quietHoursEnd: nextPreference.quietHoursEnd,\n quietHoursStart: nextPreference.quietHoursStart,\n }),\n );\n } catch (requestError: unknown) {\n setPreference(previousPreference);\n setError(readErrorMessage(requestError));\n } finally {\n setSaving(false);\n }\n }\n\n const controlsDisabled = loading || saving;\n\n return (\n <AppLayout activeHref={activeHref}>\n <PageHeader>\n <ContentHeader\n description=\"調整站內通知、Email 通知與摘要頻率。\"\n title=\"通知設定\"\n />\n </PageHeader>\n\n <SectionGroup>\n <Section\n filterArea={\n <FilterArea className={styles.preferenceFilter} isDirty={false}>\n <FilterLine>\n <Filter minWidth={160} span={1}>\n <FormField\n layout={FormFieldLayout.VERTICAL}\n name=\"inAppEnabled\"\n style={FILTER_FIELD_STYLE}\n >\n <div className={styles.segmentFilterControl}>\n <span className={styles.segmentFilterLabel}>\n 站內通知\n </span>\n <RadioGroup\n disabled={controlsDisabled}\n name=\"inAppEnabled\"\n onChange={(\n event: ChangeEvent<HTMLInputElement>,\n ): void => {\n void handlePreferenceChange({\n ...preference,\n inAppEnabled: readEnabledSegmentValue(\n event.target.value,\n ),\n });\n }}\n options={[...ENABLED_SEGMENT_OPTIONS]}\n size=\"sub\"\n type=\"segment\"\n value={readEnabledSegmentValueId(\n preference.inAppEnabled,\n )}\n />\n </div>\n </FormField>\n </Filter>\n <Filter minWidth={180} span={1}>\n <FormField\n layout={FormFieldLayout.VERTICAL}\n name=\"emailEnabled\"\n style={FILTER_FIELD_STYLE}\n >\n <div className={styles.segmentFilterControl}>\n <span className={styles.segmentFilterLabel}>\n Email 通知\n </span>\n <RadioGroup\n disabled={controlsDisabled}\n name=\"emailEnabled\"\n onChange={(\n event: ChangeEvent<HTMLInputElement>,\n ): void => {\n void handlePreferenceChange({\n ...preference,\n emailEnabled: readEnabledSegmentValue(\n event.target.value,\n ),\n });\n }}\n options={[...ENABLED_SEGMENT_OPTIONS]}\n size=\"sub\"\n type=\"segment\"\n value={readEnabledSegmentValueId(\n preference.emailEnabled,\n )}\n />\n </div>\n </FormField>\n </Filter>\n <Filter minWidth={280} span={2}>\n <FormField\n fullWidth\n layout={FormFieldLayout.VERTICAL}\n name=\"emailDigestMode\"\n style={FILTER_FIELD_STYLE}\n >\n <div className={styles.segmentFilterControl}>\n <span className={styles.segmentFilterLabel}>\n Email 頻率\n </span>\n <RadioGroup\n disabled={controlsDisabled}\n name=\"emailDigestMode\"\n onChange={(\n event: ChangeEvent<HTMLInputElement>,\n ): void => {\n void handlePreferenceChange({\n ...preference,\n emailDigestMode: readDigestMode(\n event.target.value,\n ),\n });\n }}\n options={[...DIGEST_OPTIONS]}\n size=\"sub\"\n type=\"segment\"\n value={preference.emailDigestMode}\n />\n </div>\n </FormField>\n </Filter>\n </FilterLine>\n </FilterArea>\n }\n >\n {error ? (\n <Typography color=\"text-error\" variant=\"body\">\n {error}\n </Typography>\n ) : (\n <Typography color=\"text-neutral\" variant=\"body\">\n 偏好設定會立即生效。\n </Typography>\n )}\n </Section>\n </SectionGroup>\n </AppLayout>\n );\n}\n\nconst FILTER_FIELD_STYLE = {\n minWidth: 0,\n whiteSpace: 'nowrap',\n} satisfies CSSProperties;\n\nfunction readDigestMode(value: unknown): NotificationDigestMode {\n return value === 'DAILY' ? 'DAILY' : 'INSTANT';\n}\n\nfunction readEnabledSegmentValue(value: unknown): boolean {\n return value !== 'OFF';\n}\n\nfunction readEnabledSegmentValueId(enabled: boolean): EnabledSegmentValue {\n return enabled ? 'ON' : 'OFF';\n}\n\nfunction readErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : '發生未知錯誤';\n}\n"],"mappings":";;;;;;;;;;;;;GC4CM,IAA0C,CAC9C;CAAE,IAAI;CAAW,MAAM;AAAO,GAC9B;CAAE,IAAI;CAAS,MAAM;AAAO,CAC9B,GAEM,IAA2D,CAC/D;CAAE,IAAI;CAAM,MAAM;AAAI,GACtB;CAAE,IAAI;CAAO,MAAM;AAAI,CACzB,GAEM,IAAmD;CACvD,iBAAiB;CACjB,cAAc;CACd,cAAc;CACd,UAAU;CACV,eAAe;CACf,iBAAiB;CACjB,WAAW;AACb;AAMA,SAAgB,EAA0B,EACxC,gBAAa,8BACqB,CAAC,GAAiB;CACpD,IAAM,EAAE,cAAW,EAAQ,GACrB,IAAkB,GAAQ,YAAY,MACtC,CAAC,GAAY,KACjB,EAAuC,CAAkB,GACrD,CAAC,GAAS,KAAc,EAAS,EAAI,GACrC,CAAC,GAAQ,KAAa,EAAS,EAAK,GACpC,CAAC,GAAO,KAAY,EAAwB,IAAI;CAEtD,QAAsB;EACf,MAIL,EAAW,EAAI,GACf,EAAS,IAAI,GAEb,EAA2B,CAAe,EACvC,MAAM,MAAyB;GAC9B,EAAc,CAAc;EAC9B,CAAC,EACA,OAAO,MAAgC;GACtC,EAAS,EAAiB,CAAY,CAAC;EACzC,CAAC,EACA,cAAoB;GACnB,EAAW,EAAK;EAClB,CAAC;CACL,GAAG,CAAC,CAAe,CAAC;CAEpB,eAAe,EACb,GACe;EACf,IAAI,CAAC,KAAmB,GACtB;EAGF,IAAM,IAAqB;EAE3B,AADA,EAAc,CAAc,GAC5B,EAAU,EAAI;EAEd,IAAI;GACF,EACE,MAAM,EAA6B;IACjC,iBAAiB,EAAe;IAChC,cAAc,EAAe;IAC7B,cAAc,EAAe;IAC7B,UAAU;IACV,eAAe,EAAe;IAC9B,iBAAiB,EAAe;GAClC,CAAC,CACH;EACF,SAAS,GAAuB;GAE9B,AADA,EAAc,CAAkB,GAChC,EAAS,EAAiB,CAAY,CAAC;EACzC,UAAU;GACR,EAAU,EAAK;EACjB;CACF;CAEA,IAAM,IAAmB,KAAW;CAEpC,OACE,kBAAC,GAAD;EAAuB;YAAvB,CACI,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GACE,aAAY;GACZ,OAAM;EACP,CAAA,EACS,CAAA,GAEZ,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GACE,YACE,kBAAC,GAAD;IAAY,WAAW,EAAO;IAAkB,SAAS;cACvD,kBAAC,GAAD,EAAA,UAAA;KACE,kBAAC,GAAD;MAAQ,UAAU;MAAK,MAAM;gBAC3B,kBAAC,GAAD;OACE,QAAQ,EAAgB;OACxB,MAAK;OACL,OAAO;iBAEP,kBAAC,OAAD;QAAK,WAAW,EAAO;kBAAvB,CACE,kBAAC,QAAD;SAAM,WAAW,EAAO;mBAAoB;QAEtC,CAAA,GACN,kBAAC,GAAD;SACE,UAAU;SACV,MAAK;SACL,WACE,MACS;UACT,EAA4B;WAC1B,GAAG;WACH,cAAc,EACZ,EAAM,OAAO,KACf;UACF,CAAC;SACH;SACA,SAAS,CAAC,GAAG,CAAuB;SACpC,MAAK;SACL,MAAK;SACL,OAAO,EACL,EAAW,YACb;QACD,CAAA,CACE;;MACI,CAAA;KACL,CAAA;KACR,kBAAC,GAAD;MAAQ,UAAU;MAAK,MAAM;gBAC3B,kBAAC,GAAD;OACE,QAAQ,EAAgB;OACxB,MAAK;OACL,OAAO;iBAEP,kBAAC,OAAD;QAAK,WAAW,EAAO;kBAAvB,CACE,kBAAC,QAAD;SAAM,WAAW,EAAO;mBAAoB;QAEtC,CAAA,GACN,kBAAC,GAAD;SACE,UAAU;SACV,MAAK;SACL,WACE,MACS;UACT,EAA4B;WAC1B,GAAG;WACH,cAAc,EACZ,EAAM,OAAO,KACf;UACF,CAAC;SACH;SACA,SAAS,CAAC,GAAG,CAAuB;SACpC,MAAK;SACL,MAAK;SACL,OAAO,EACL,EAAW,YACb;QACD,CAAA,CACE;;MACI,CAAA;KACL,CAAA;KACR,kBAAC,GAAD;MAAQ,UAAU;MAAK,MAAM;gBAC3B,kBAAC,GAAD;OACE,WAAA;OACA,QAAQ,EAAgB;OACxB,MAAK;OACL,OAAO;iBAEP,kBAAC,OAAD;QAAK,WAAW,EAAO;kBAAvB,CACE,kBAAC,QAAD;SAAM,WAAW,EAAO;mBAAoB;QAEtC,CAAA,GACN,kBAAC,GAAD;SACE,UAAU;SACV,MAAK;SACL,WACE,MACS;UACT,EAA4B;WAC1B,GAAG;WACH,iBAAiB,EACf,EAAM,OAAO,KACf;UACF,CAAC;SACH;SACA,SAAS,CAAC,GAAG,CAAc;SAC3B,MAAK;SACL,MAAK;SACL,OAAO,EAAW;QACnB,CAAA,CACE;;MACI,CAAA;KACL,CAAA;IACE,EAAA,CAAA;GACF,CAAA;aAGb,IACC,kBAAC,GAAD;IAAY,OAAM;IAAa,SAAQ;cACpC;GACS,CAAA,IAEZ,kBAAC,GAAD;IAAY,OAAM;IAAe,SAAQ;cAAO;GAEpC,CAAA;EAEP,CAAA,EACG,CAAA,CACL;;AAEjB;AAEA,IAAM,IAAqB;CACzB,UAAU;CACV,YAAY;AACd;AAEA,SAAS,EAAe,GAAwC;CAC9D,OAAO,MAAU,UAAU,UAAU;AACvC;AAEA,SAAS,EAAwB,GAAyB;CACxD,OAAO,MAAU;AACnB;AAEA,SAAS,EAA0B,GAAuC;CACxE,OAAO,IAAU,OAAO;AAC1B;AAEA,SAAS,EAAiB,GAAwB;CAChD,OAAO,aAAiB,QAAQ,EAAM,UAAU;AAClD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";require('../orgs.css');const e=require("./app-navigation-C_mbz7jx.cjs"),t=require("./admin-pickers-Btvij1at.cjs"),n=require("./bpm-form-field-Bc6k4ZEO.cjs");let r=require("react"),i=require("@mezzanine-ui/react"),a=require("@rytass/bpm-core-client"),o=require("react/jsx-runtime"),s=require("@mezzanine-ui/icons"),c=require("@mezzanine-ui/react/ContentHeader");c=e.o(c,1);let l=require("@mezzanine-ui/core/form"),u=require("@rytass/bpm-core-client/organization"),d=require("@xyflow/react"),f=require("dagre");f=e.o(f,1);function p(e){return new Map(e.map(e=>[e.id,e.parentId]))}function m({orgUnitId:e,parentDraft:t,parentId:n}){let r=n===e?e:n,i=g({orgUnitId:e,parentDraft:t,parentId:r});if(i)return{message:i,parentDraft:t,status:`INVALID`};if((t.get(e)??null)===r)return{message:`父子關係沒有變更。`,parentDraft:t,status:`UNCHANGED`};let a=new Map(t);return a.set(e,r),{message:r?`已暫存新的上層組織。`:`已暫存為根節點。`,parentDraft:a,status:`UPDATED`}}function h({orgUnits:e,parentDraft:t}){return e.map(e=>{let n=t.get(e.id)??null;return n===e.parentId?null:{orgUnitId:e.id,parentId:n,previousParentId:e.parentId}}).filter(e=>!!e)}function g({orgUnitId:e,parentDraft:t,parentId:n}){return t.has(e)?n?t.has(n)?n===e?`組織不可成為自己的上層。`:_({orgUnitId:e,parentDraft:t,parentId:n})?`不可搬移到自己的下層組織。`:null:`找不到新的上層組織。`:null:`找不到要搬移的組織節點。`}function _({orgUnitId:e,parentDraft:t,parentId:n}){let r=new Set,i=n;for(;i;){if(i===e||r.has(i))return!0;r.add(i),i=t.get(i)??null}return!1}var v={orgTreeEditor:`bpm_orgTreeEditor_TMOtD`,orgTreeSummary:`bpm_orgTreeSummary_vpcV8`,orgTreeChangeList:`bpm_orgTreeChangeList_EzmOv`,orgTreeCanvas:`bpm_orgTreeCanvas_MeD7y`,orgTreeNode:`bpm_orgTreeNode_bN4FS`,orgTreeNodeRoot:`bpm_orgTreeNodeRoot_Hr2KD`,orgTreeNodeSelected:`bpm_orgTreeNodeSelected_eRwtL`,orgTreeNodeChanged:`bpm_orgTreeNodeChanged_qPJg0`,orgTreeNodeDeleted:`bpm_orgTreeNodeDeleted_Ab0cI`,orgTreeNodeHeader:`bpm_orgTreeNodeHeader_LEXl-`,orgTreeNodeBadge:`bpm_orgTreeNodeBadge_zLc7t`,orgTreeNodeActions:`bpm_orgTreeNodeActions_cMldI`},y=`__org-tree-root__`,b=232,x=118,S=232,C=86,w=320,T={COMPANY:`公司`,DEPARTMENT:`部門`,DIVISION:`事業群`,TEAM:`小組`},E={orgUnit:O},D=(0,r.forwardRef)(function({onCreateChild:e,onCreateRoot:t,onEditOrgUnit:n,onSaveDraft:a,onStateChange:s,orgUnits:c},l){let[u,f]=(0,r.useState)(!1),[g,_]=(0,r.useState)(null),[b,x]=(0,r.useState)(null),[S,C]=(0,r.useState)(()=>p(c)),[w,T]=(0,r.useState)([]),D=(0,r.useMemo)(()=>new Map(c.map(e=>[e.id,e])),[c]),O=(0,r.useMemo)(()=>h({orgUnits:c,parentDraft:S}),[c,S]),A=(0,r.useMemo)(()=>k({isEditing:u,onCreateChild:n=>{n?e(n):t()},onEditOrgUnit:e=>{let t=D.get(e);t&&n(t)},orgUnits:c,orgUnitsById:D,parentDraft:S,selectedOrgUnitId:b}),[u,e,t,n,c,D,S,b]),N=O.length>0;(0,r.useImperativeHandle)(l,()=>({cancelEditing:te,saveDraft:B,startEditing:z})),(0,r.useEffect)(()=>{s({hasDraftChanges:N,isEditing:u})},[N,u,s]),(0,r.useEffect)(()=>{C(p(c)),x(null),_(null),f(!1)},[c]),(0,r.useEffect)(()=>{T(A.nodes)},[A.nodes]);let P=(0,r.useCallback)((e,t)=>{C(n=>{let r=m({orgUnitId:e,parentDraft:n,parentId:t});return _(r.message),r.parentDraft})},[]),F=(0,r.useCallback)(e=>{if(!u||!e.target||!e.source)return;let t=e.source===y?null:e.source;if(e.target===y){_(`根節點不能搬移到其他節點下。`);return}P(e.target,t)},[P,u]),I=(0,r.useCallback)(e=>{u&&T(t=>(0,d.applyNodeChanges)(e,[...t]))},[u]),R=(0,r.useCallback)((e,t,n)=>{if(!u||t.id===y)return;let r=M(e,t.id)??j(t,n);if(r===void 0){_(`拖曳到目標父節點附近,或從父節點拉線到子節點。`);return}P(t.id,r===y?null:r)},[P,u]);function z(){f(!0),C(p(c)),_(`已進入編輯模式,拖曳節點或拉線只會更新前端草稿。`)}function te(){f(!1),C(p(c)),_(`已取消草稿變更。`)}async function B(){if(!a){_(`批次儲存 API 尚未接上,草稿仍保留在前端。`);return}await a(O),f(!1),_(`組織樹草稿已儲存。`)}return(0,o.jsxs)(`div`,{className:v.orgTreeEditor,children:[(0,o.jsxs)(`div`,{className:v.orgTreeSummary,children:[(0,o.jsx)(i.Typography,{color:`text-neutral`,variant:`caption`,children:g??(N?`目前有 ${O.length} 筆父子關係草稿變更。`:`目前沒有草稿變更。`)}),N?(0,o.jsx)(`ul`,{className:v.orgTreeChangeList,children:O.map(e=>(0,o.jsxs)(`li`,{children:[L(e.orgUnitId,D),`:`,L(e.previousParentId,D),` -> `,L(e.parentId,D)]},e.orgUnitId))}):null]}),(0,o.jsx)(`div`,{className:v.orgTreeCanvas,children:(0,o.jsxs)(d.ReactFlow,{connectionMode:d.ConnectionMode.Strict,edges:[...A.edges],fitView:!0,fitViewOptions:{padding:.18},isValidConnection:e=>ee({source:e.source,target:e.target},S),maxZoom:1.4,minZoom:.25,nodeTypes:E,nodes:[...w],nodesConnectable:u,nodesDraggable:u,onConnect:F,onNodeClick:(e,t)=>{x(t.id===y?null:t.id)},onNodeDoubleClick:(e,t)=>{if(t.id!==y){let e=D.get(t.id);e&&n(e)}},onNodeDragStop:R,onNodesChange:I,onPaneClick:()=>x(null),panOnDrag:!0,proOptions:{hideAttribution:!0},children:[(0,o.jsx)(d.Background,{}),(0,o.jsx)(d.Controls,{}),(0,o.jsx)(d.MiniMap,{pannable:!0,zoomable:!0})]})})]})});function O({data:e,selected:t}){return(0,o.jsxs)(`div`,{className:[v.orgTreeNode,e.isSyntheticRoot?v.orgTreeNodeRoot:``,e.changed?v.orgTreeNodeChanged:``,e.deleted?v.orgTreeNodeDeleted:``,t?v.orgTreeNodeSelected:``].filter(Boolean).join(` `),children:[e.isSyntheticRoot?null:(0,o.jsx)(d.Handle,{id:`target`,isConnectable:e.isEditing,position:d.Position.Top,type:`target`}),(0,o.jsx)(d.Handle,{id:`source`,isConnectable:e.isEditing,position:d.Position.Bottom,type:`source`}),(0,o.jsxs)(`div`,{className:v.orgTreeNodeHeader,children:[(0,o.jsx)(i.Typography,{component:`span`,ellipsis:!0,title:e.name,variant:`label-primary`,children:e.name}),e.changed?(0,o.jsx)(`span`,{className:v.orgTreeNodeBadge,children:`草稿`}):null]}),(0,o.jsx)(i.Typography,{color:`text-neutral`,component:`span`,ellipsis:!0,title:e.code,variant:`caption`,children:e.isSyntheticRoot?`根節點容器`:`${e.typeLabel} · ${e.code}`}),e.isSyntheticRoot?null:(0,o.jsxs)(i.Typography,{color:`text-neutral`,component:`span`,ellipsis:!0,title:e.parentLabel,variant:`caption`,children:[`上層:`,e.parentLabel]}),(0,o.jsx)(`div`,{className:v.orgTreeNodeActions,children:e.isSyntheticRoot?(0,o.jsx)(i.Button,{icon:s.PlusIcon,iconType:`leading`,onClick:()=>e.onCreateChild(null),size:`sub`,variant:`base-secondary`,children:`新增根節點`}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i.Button,{icon:s.EditIcon,iconType:`leading`,onClick:()=>{e.orgUnitId&&e.onEdit(e.orgUnitId)},size:`sub`,variant:`base-secondary`,children:`編輯`}),(0,o.jsx)(i.Button,{icon:s.PlusIcon,iconType:`leading`,onClick:()=>e.onCreateChild(e.orgUnitId),size:`sub`,variant:`base-secondary`,children:`新增子節點`})]})})]})}function k({isEditing:e,onCreateChild:t,onEditOrgUnit:n,orgUnits:r,orgUnitsById:i,parentDraft:a,selectedOrgUnitId:o}){let s=new f.graphlib.Graph;s.setDefaultEdgeLabel(()=>({})),s.setGraph({marginx:36,marginy:36,nodesep:44,rankdir:`TB`}),s.setNode(y,{height:C,width:S}),r.forEach(e=>{s.setNode(e.id,{height:x,width:b})}),r.forEach(e=>{let t=a.get(e.id)??null;s.setEdge(t??y,e.id)}),f.layout(s);let c=A({data:{changed:!1,code:y,deleted:!1,isEditing:e,isSyntheticRoot:!0,name:`組織根節點`,onCreateChild:t,onEdit:n,orgUnitId:null,parentLabel:``,path:``,typeLabel:``},graph:s,height:C,id:y,selected:o===null,width:S}),l=r.map(r=>{let c=a.get(r.id)??null,l=L(c,i);return A({data:{changed:c!==r.parentId,code:r.code,deleted:!!r.deletedAt,isEditing:e,isSyntheticRoot:!1,name:r.name,onCreateChild:t,onEdit:n,orgUnitId:r.id,parentLabel:l,path:r.path,typeLabel:R(r.type)},graph:s,height:x,id:r.id,selected:o===r.id,width:b})});return{edges:r.map(t=>{let n=a.get(t.id)??null,r=n!==t.parentId;return{animated:e&&r,data:{},id:`org-tree-edge-${n??`root`}-${t.id}`,source:n??y,sourceHandle:`source`,style:r?{stroke:`var(--mzn-color-primary, #0057ff)`,strokeWidth:2}:void 0,target:t.id,targetHandle:`target`,type:`smoothstep`}}),nodes:[c,...l]}}function A({data:e,graph:t,height:n,id:r,selected:i,width:a}){let o=t.node(r);return{data:e,height:n,id:r,initialHeight:n,initialWidth:a,position:o?{x:o.x-a/2,y:o.y-n/2}:{x:0,y:0},selected:i,sourcePosition:d.Position.Bottom,targetPosition:d.Position.Top,type:`orgUnit`,width:a}}function j(e,t){let n=F(e);return t.filter(t=>t.id!==e.id).map(e=>({distance:I(n,F(e)),id:e.id})).filter(e=>e.distance<=w).sort((e,t)=>e.distance-t.distance)[0]?.id}function M(e,t){let n=N(e);if(n)return Array.from(document.querySelectorAll(`.react-flow__node[data-id]`)).map(e=>{let r=e.dataset.id;if(!r||r===t)return null;let i=e.getBoundingClientRect();return{distance:I(n,{x:i.left+i.width/2,y:i.top+i.height/2}),id:r}}).filter(e=>!!e).filter(e=>e.distance<=w).sort((e,t)=>e.distance-t.distance)[0]?.id}function N(e){return P(e)?{x:e.clientX,y:e.clientY}:null}function P(e){return typeof e==`object`&&!!e&&`clientX`in e&&`clientY`in e&&typeof e.clientX==`number`&&typeof e.clientY==`number`}function F(e){return{x:e.position.x+(e.width??b)/2,y:e.position.y+(e.height??x)/2}}function I(e,t){return Math.hypot(e.x-t.x,e.y-t.y)}function ee(e,t){return!e.source||!e.target||e.target===y?!1:g({orgUnitId:e.target,parentDraft:t,parentId:e.source===y?null:e.source})===null}function L(e,t){if(!e)return`根節點`;let n=t.get(e);return n?`${n.name} · ${n.code}`:`未知組織`}function R(e){return T[e.toUpperCase()]??`未知類型`}var z={tableIntroActions:`bpm_tableIntroActions_WO4XU`,modalFields:`bpm_modalFields_juyv6`,tableIntro:`bpm_tableIntro_u3hcm`,tableFrame:`bpm_tableFrame_IdbmB`,orgFilterArea:`bpm_orgFilterArea_Xjbbp`,membershipFilterArea:`bpm_membershipFilterArea_zob-Y`,scopeLabel:`bpm_scopeLabel_TLHMC`},te={hasDraftChanges:!1,isEditing:!1},B=[{id:`COMPANY`,name:`公司`},{id:`DIVISION`,name:`事業群`},{id:`DEPARTMENT`,name:`部門`},{id:`TEAM`,name:`小組`}],ne={id:`ALL`,name:`全部類型`},re=[ne,...B],V=[{id:`MEMBER`,name:`指定會員`},{id:`ORG_UNIT`,name:`指定組織`},{id:`POSITION`,name:`指定職位`}],ie={id:`ALL`,name:`全部範圍`},ae=[ie,...V],oe={activeOnly:!1,id:`ALL`,name:`全部狀態`},H=[oe,{activeOnly:!0,id:`ACTIVE`,name:`目前有效`}],U=[{id:`true`,name:`主要歸屬`,value:!0},{id:`false`,name:`一般歸屬`,value:!1}],se=[10,20,50],W=1368,ce=908,le=1292,ue=1124;function de({activeHref:t=`/admin/orgs`}={}){let[n,s]=(0,r.useState)(`ORG_UNITS`),[l,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(null),[m,h]=(0,r.useState)(null),[g,_]=(0,r.useState)(!0),[v,y]=(0,r.useState)(null),[b,x]=(0,r.useState)(oe),[S,C]=(0,r.useState)(1),[w,T]=(0,r.useState)(10),[E,D]=(0,r.useState)(ie),[O,k]=(0,r.useState)(0),[A,j]=(0,r.useState)([]),[M,N]=(0,r.useState)(null),[P,F]=(0,r.useState)(null),[I,ee]=(0,r.useState)(null),[L,R]=(0,r.useState)(1),[z,te]=(0,r.useState)(10),[B,re]=(0,r.useState)(null),[V,ae]=(0,r.useState)(0),[H,U]=(0,r.useState)(null),[se,W]=(0,r.useState)(1),[ce,le]=(0,r.useState)(10),[ue,de]=(0,r.useState)(``),[ge,_e]=(0,r.useState)(0),[ve,ye]=(0,r.useState)(ne),[be,G]=(0,r.useState)(`TABLE`),[K,Me]=(0,r.useState)([]),[Ne,Pe]=(0,r.useState)([]),[Fe,Ie]=(0,r.useState)([]),[Le,Re]=(0,r.useState)(null),[ze,Be]=(0,r.useState)(1),[q,J]=(0,r.useState)(10),[Y,Ve]=(0,r.useState)(``),[He,Ue]=(0,r.useState)(0),[Ge,Ke]=(0,r.useState)([]),[qe,Je]=(0,r.useState)([]),[Ye,Xe]=(0,r.useState)([]),[Z,Ze]=(0,r.useState)(!1);(0,r.useEffect)(()=>{l&&p(l)},[l]);let Qe=l??f,$e=(0,r.useCallback)(async()=>{_(!0),h(null);try{let e=await(0,u.readOrganizationDashboard)({managerActiveOnly:b.activeOnly,managerPage:S,managerPageSize:w,managerScopeType:E.id===`ALL`?null:E.id,membershipActiveOnly:M?.activeOnly??!1,membershipOrgUnitId:I?.id??null,membershipPage:L,membershipPageSize:z,membershipPositionId:B?.id??null,orgUnitPage:se,orgUnitPageSize:ce,orgUnitSearchText:ue,orgUnitType:ve.id===`ALL`?null:ve.id,positionPage:ze,positionPageSize:q,positionSearchText:Y});j(await(0,a.resolveMembers)(Te(e.memberships,e.managerResolutions))),Me(e.orgUnits),_e(e.orgUnitCount),Pe(e.filteredOrgUnits),Ke(e.positions),Ue(e.positionCount),Ie(e.filteredPositions),ae(e.membershipCount),Xe(e.filteredMemberships),k(e.managerResolutionCount),Je(e.filteredManagerResolutions)}catch(e){h(We(e))}finally{_(!1)}},[b,S,w,E,M,I,L,z,B,se,ce,ue,ve,ze,q,Y]);(0,r.useEffect)(()=>{$e()},[$e]);let Q=(0,r.useMemo)(()=>new Map(K.map(e=>[e.id,e])),[K]),et=(0,r.useMemo)(()=>new Map(Ge.map(e=>[e.id,e])),[Ge]),$=(0,r.useMemo)(()=>new Map(A.map(e=>[e.memberId,e])),[A]),tt=(0,r.useMemo)(()=>Ne.map(e=>({...e,key:e.id,parentName:e.parentId?Oe(Q.get(e.parentId)):`根節點`,typeLabel:ke(e.type)})),[Ne,Q]),nt=(0,r.useMemo)(()=>Fe.map(e=>({...e,key:e.id})),[Fe]),rt=(0,r.useMemo)(()=>Ye.map(e=>({...e,key:e.id,memberName:De($.get(e.memberId)),orgUnitName:Oe(Q.get(e.orgUnitId)),positionName:e.positionId?Ae(et.get(e.positionId)):`未指定`})),[$,Ye,Q,et]),it=(0,r.useMemo)(()=>qe.map(e=>({...e,key:e.id,managerName:De($.get(e.managerMemberId)),scopeLabel:Ee(e,{membersById:$,orgUnitsById:Q,positionsById:et})})),[qe,$,Q,et]),at=(0,r.useMemo)(()=>({render:e=>[{name:`編輯`,onClick:()=>U({record:e,type:`EDIT`})},{name:`停用`,onClick:()=>d({confirmText:`停用組織`,description:`停用「${e.name}」後,這個組織節點將不再出現在可用組織清單中。`,id:e.id,title:`停用組織節點`,type:`ORG_UNIT`}),variant:`destructive-secondary`}],variant:`base-secondary`,width:128}),[]),ot=(0,r.useMemo)(()=>({render:e=>[{name:`編輯`,onClick:()=>Re({record:e,type:`EDIT`})}],variant:`base-secondary`,width:88}),[]),st=(0,r.useMemo)(()=>({render:e=>[{name:`編輯`,onClick:()=>F({record:e,type:`EDIT`})},{name:`刪除`,onClick:()=>d({confirmText:`刪除歸屬`,description:`刪除「${e.memberName}」在「${e.orgUnitName}」的會員歸屬。`,id:e.id,title:`刪除會員歸屬`,type:`MEMBERSHIP`}),variant:`destructive-secondary`}],variant:`base-secondary`,width:128}),[]),ct=(0,r.useMemo)(()=>({render:e=>[{name:`編輯`,onClick:()=>y({record:e,type:`EDIT`})},{name:`刪除`,onClick:()=>d({confirmText:`刪除主管規則`,description:`刪除「${e.scopeLabel}」指派給「${e.managerName}」的主管解析規則。`,id:e.id,title:`刪除主管解析規則`,type:`MANAGER_RESOLUTION`}),variant:`destructive-secondary`}],variant:`base-secondary`,width:128}),[]);function lt(e){W(1),de(e)}function ut(e){W(1),ye(e)}function dt(e){Be(1),Ve(e)}function ft(e){R(1),N(e)}function pt(e){R(1),ee(e)}function mt(e){R(1),re(e)}function ht(e){C(1),x(e)}function gt(e){C(1),D(e)}function _t(){Z||d(null)}async function vt(){l&&await bt(async()=>{l.type===`ORG_UNIT`&&await(0,u.deleteOrgUnit)(l.id),l.type===`MEMBERSHIP`&&await(0,u.deleteMembership)(l.id),l.type===`MANAGER_RESOLUTION`&&await(0,u.deleteManagerResolution)(l.id),d(null)})}async function yt(e){Ze(!0),h(null);try{await(0,u.commitOrgUnitTreeDraft)({moves:e.map(e=>({baseUpdatedAt:Q.get(e.orgUnitId)?.updatedAt??``,id:e.orgUnitId,parentId:e.parentId}))}),await $e()}catch(e){throw h(We(e)),e}finally{Ze(!1)}}async function bt(e){Ze(!0),h(null);try{await e(),await $e()}catch(e){h(We(e))}finally{Ze(!1)}}return(0,o.jsxs)(e.t,{activeHref:t,children:[(0,o.jsx)(i.PageHeader,{children:(0,o.jsx)(c.default,{description:`維護組織樹、職位、會員歸屬與簽核主管解析規則。`,title:`組織管理`})}),(0,o.jsx)(i.SectionGroup,{children:(0,o.jsxs)(i.Section,{tab:(0,o.jsxs)(i.Tab,{activeKey:n,onChange:e=>s(je(e)),children:[(0,o.jsx)(i.TabItem,{children:`組織樹`},`ORG_UNITS`),(0,o.jsx)(i.TabItem,{children:`職位`},`POSITIONS`),(0,o.jsx)(i.TabItem,{children:`會員歸屬`},`MEMBERSHIPS`),(0,o.jsx)(i.TabItem,{children:`簽核主管`},`MANAGERS`)]}),children:[m?(0,o.jsx)(i.Typography,{color:`text-error`,variant:`body`,children:m}):null,n===`ORG_UNITS`?(0,o.jsx)(fe,{actions:at,loading:g,onCreate:()=>U({parentId:null,record:null,type:`CREATE`}),onCreateChild:e=>U({parentId:e,record:null,type:`CREATE`}),onEditOrgUnit:e=>U({record:e,type:`EDIT`}),onPageChange:W,onSaveDraft:yt,onPageSizeChange:e=>{W(1),le(e)},onSearchTextChange:lt,onTypeFilterChange:ut,orgUnits:K,page:se,pageSize:ce,rows:tt,searchText:ue,saving:Z,total:ge,typeFilter:ve,viewMode:be,onViewModeChange:G}):null,n===`POSITIONS`?(0,o.jsx)(pe,{actions:ot,loading:g,onCreate:()=>Re({record:null,type:`CREATE`}),onPageChange:Be,onPageSizeChange:e=>{Be(1),J(e)},onSearchTextChange:dt,page:ze,pageSize:q,rows:nt,searchText:Y,total:He}):null,n===`MEMBERSHIPS`?(0,o.jsx)(me,{actions:st,loading:g,onCreate:()=>F({record:null,type:`CREATE`}),onActiveFilterChange:ft,onOrgUnitFilterChange:pt,onPageChange:R,onPageSizeChange:e=>{R(1),te(e)},onPositionFilterChange:mt,orgUnitFilter:I,orgUnits:K,page:L,pageSize:z,positionFilter:B,positions:Ge,rows:rt,statusFilter:M,total:V}):null,n===`MANAGERS`?(0,o.jsx)(he,{actions:ct,loading:g,onCreate:()=>y({record:null,type:`CREATE`}),onActiveFilterChange:ht,onPageChange:C,onPageSizeChange:e=>{C(1),T(e)},onScopeTypeFilterChange:gt,page:S,pageSize:w,rows:it,scopeTypeFilter:E,statusFilter:b,total:O}):null]})}),(0,o.jsx)(xe,{modal:H,onClose:()=>U(null),onSubmit:e=>bt(async()=>{H?.type===`EDIT`&&H.record?await(0,u.updateOrgUnit)({...e,id:H.record.id,metadataJson:null}):await(0,u.createOrgUnit)({code:e.code??``,metadataJson:`{}`,name:e.name??``,parentId:e.parentId,type:e.type??`DEPARTMENT`}),U(null)}),orgUnits:K,saving:Z}),(0,o.jsx)(Se,{modal:Le,onClose:()=>Re(null),onSubmit:e=>bt(async()=>{Le?.type===`EDIT`&&Le.record?await(0,u.updatePosition)({...e,id:Le.record.id,metadataJson:null}):await(0,u.createPosition)({code:e.code??``,level:e.level??0,metadataJson:`{}`,name:e.name??``}),Re(null)}),saving:Z}),(0,o.jsx)(Ce,{membersById:$,modal:P,onClose:()=>F(null),onSubmit:e=>bt(async()=>{P?.type===`EDIT`&&P.record?await(0,u.updateMembership)({...e,id:P.record.id}):await(0,u.createMembership)({effectiveFrom:e.effectiveFrom??X(),effectiveTo:e.effectiveTo,isPrimary:e.isPrimary??!1,memberId:e.memberId??``,orgUnitId:e.orgUnitId??``,positionId:e.positionId}),F(null)}),orgUnits:K,positions:Ge,saving:Z}),(0,o.jsx)(we,{membersById:$,modal:v,onClose:()=>y(null),onSubmit:e=>bt(async()=>{v?.type===`EDIT`&&v.record?await(0,u.updateManagerResolution)({...e,id:v.record.id}):await(0,u.createManagerResolution)({effectiveFrom:e.effectiveFrom??X(),effectiveTo:e.effectiveTo,managerMemberId:e.managerMemberId??``,priority:e.priority??0,scopeId:e.scopeId??``,scopeType:e.scopeType??`MEMBER`}),y(null)}),orgUnits:K,positions:Ge,saving:Z}),(0,o.jsx)(i.Modal,{cancelText:`取消`,confirmButtonProps:{variant:`destructive-primary`},confirmText:Qe?.confirmText??``,loading:Z,modalStatusType:`error`,modalType:`standard`,onCancel:_t,onClose:_t,onConfirm:()=>void vt(),open:!!l,showModalFooter:!0,showModalHeader:!0,size:`regular`,supportingText:`此操作會立即套用,請確認後再繼續。`,title:Qe?.title??``,children:(0,o.jsx)(i.Typography,{color:`text-neutral`,variant:`body`,children:Qe?.description??``})})]})}function fe({actions:e,loading:t,onCreate:n,onCreateChild:a,onEditOrgUnit:c,onPageChange:u,onSaveDraft:d,onPageSizeChange:f,onSearchTextChange:p,onTypeFilterChange:m,onViewModeChange:h,orgUnits:g,page:_,pageSize:v,rows:y,searchText:b,saving:x,total:S,typeFilter:C,viewMode:w}){let T=(0,r.useRef)(null),[E,O]=(0,r.useState)(te),k=w===`TABLE`?`FLOW`:`TABLE`,A=w===`TABLE`?`切換樹狀圖`:`切換表格`,j=w===`FLOW`,M=_e({isTreeMode:j,isTreeEditing:E.isEditing}),N=ve({isTreeMode:j,isTreeEditing:E.isEditing}),P=ye({hasDraftChanges:E.hasDraftChanges,isTreeEditing:E.isEditing,isTreeMode:j,loading:t,saving:x}),F=(0,r.useMemo)(()=>[{dataIndex:`code`,key:`code`,title:`代碼`,width:180},{dataIndex:`name`,key:`name`,title:`名稱`,width:240},{dataIndex:`typeLabel`,key:`typeLabel`,title:`類型`,width:120},{dataIndex:`parentName`,key:`parentName`,title:`上層`,width:280},{dataIndex:`path`,key:`path`,title:`Path`,width:420}],[]);return(0,r.useEffect)(()=>{w===`TABLE`&&O(te)},[w]),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(be,{actionDisabled:P,actionIcon:N,actionLabel:M,actions:(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i.Button,{onClick:()=>h(k),variant:`base-secondary`,children:A}),j&&E.isEditing?(0,o.jsx)(i.Button,{disabled:x,icon:s.CloseIcon,iconType:`leading`,onClick:()=>T.current?.cancelEditing(),variant:`base-secondary`,children:`取消`}):null]}),description:`組織節點使用 ltree path 維護階層,搬移節點會同步更新子節點 path。`,onCreate:()=>{if(!j){n();return}if(E.isEditing){T.current?.saveDraft();return}T.current?.startEditing()},title:`組織樹`}),w===`TABLE`?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i.FilterArea,{className:z.orgFilterArea,size:`sub`,children:(0,o.jsxs)(i.FilterLine,{children:[(0,o.jsx)(i.Filter,{span:3,children:(0,o.jsx)(i.FormField,{fullWidth:!0,layout:l.FormFieldLayout.VERTICAL,name:`orgUnitSearchText`,children:(0,o.jsx)(i.Input,{fullWidth:!0,onChange:e=>p(e.target.value),placeholder:`搜尋組織名稱或代碼`,size:`sub`,value:b,variant:`base`})})}),(0,o.jsx)(i.Filter,{span:2,children:(0,o.jsx)(i.FormField,{fullWidth:!0,layout:l.FormFieldLayout.VERTICAL,name:`orgUnitTypeFilter`,children:(0,o.jsx)(i.Select,{clearable:!1,fullWidth:!0,onChange:e=>m(Ne(e)),options:[...re],placeholder:`類型`,size:`sub`,value:C})})})]})}),(0,o.jsx)(`div`,{className:z.tableFrame,children:(0,o.jsx)(i.Table,{actions:e,columns:F,dataSource:[...y],fullWidth:!0,loading:t,pagination:ge({onPageChange:u,onPageSizeChange:f,page:_,pageSize:v,total:S}),style:{minWidth:W}})})]}):(0,o.jsx)(D,{ref:T,onCreateChild:a,onCreateRoot:n,onEditOrgUnit:c,onSaveDraft:d,onStateChange:O,orgUnits:g,saving:x})]})}function pe({actions:e,loading:t,onCreate:n,onPageChange:a,onPageSizeChange:s,onSearchTextChange:c,page:u,pageSize:d,rows:f,searchText:p,total:m}){let h=(0,r.useMemo)(()=>[{dataIndex:`code`,key:`code`,title:`代碼`,width:180},{dataIndex:`name`,key:`name`,title:`名稱`,width:280},{dataIndex:`level`,key:`level`,title:`職等`,width:96},{dataIndex:`updatedAt`,key:`updatedAt`,title:`更新時間`,width:220}],[]);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(be,{actionLabel:`新增職位`,description:`職位提供會員歸屬與主管解析規則使用。`,onCreate:n,title:`職位`}),(0,o.jsx)(i.FilterArea,{className:z.orgFilterArea,size:`sub`,children:(0,o.jsx)(i.FilterLine,{children:(0,o.jsx)(i.Filter,{span:3,children:(0,o.jsx)(i.FormField,{fullWidth:!0,layout:l.FormFieldLayout.VERTICAL,name:`positionSearchText`,children:(0,o.jsx)(i.Input,{fullWidth:!0,onChange:e=>c(e.target.value),placeholder:`搜尋職位名稱或代碼`,size:`sub`,value:p,variant:`base`})})})})}),(0,o.jsx)(`div`,{className:z.tableFrame,children:(0,o.jsx)(i.Table,{actions:e,columns:h,dataSource:[...f],fullWidth:!0,loading:t,pagination:ge({onPageChange:a,onPageSizeChange:s,page:u,pageSize:d,total:m}),style:{minWidth:ce}})})]})}function me({actions:e,loading:n,onCreate:a,onActiveFilterChange:s,onOrgUnitFilterChange:c,onPageChange:u,onPageSizeChange:d,onPositionFilterChange:f,orgUnitFilter:p,orgUnits:m,page:h,pageSize:g,positionFilter:_,positions:v,rows:y,statusFilter:b,total:x}){let S=(0,r.useMemo)(()=>[{dataIndex:`memberName`,key:`memberName`,title:`會員`,width:280},{dataIndex:`orgUnitName`,key:`orgUnitName`,title:`組織`,width:280},{dataIndex:`positionName`,key:`positionName`,title:`職位`,width:220},{key:`isPrimary`,render:e=>e.isPrimary?`主要`:`一般`,title:`類型`,width:104},{dataIndex:`effectiveFrom`,key:`effectiveFrom`,title:`生效日`,width:140},{dataIndex:`effectiveTo`,key:`effectiveTo`,title:`結束日`,width:140}],[]),C=(0,r.useMemo)(()=>m.map(t.a),[m]),w=(0,r.useMemo)(()=>v.map(t.o),[v]);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(be,{actionLabel:`新增歸屬`,description:`會員歸屬是 BPM 內部組織權限、主管解析與條件判斷的來源。`,onCreate:a,title:`會員歸屬`}),(0,o.jsx)(i.FilterArea,{className:[z.orgFilterArea,z.membershipFilterArea].join(` `),size:`sub`,children:(0,o.jsxs)(i.FilterLine,{children:[(0,o.jsx)(i.Filter,{span:2,children:(0,o.jsx)(i.FormField,{fullWidth:!0,layout:l.FormFieldLayout.VERTICAL,name:`membershipOrgUnitFilter`,children:(0,o.jsx)(i.AutoComplete,{disabledOptionsFilter:!0,emptyText:`沒有符合的組織`,inputProps:{autoCapitalize:`none`,autoCorrect:`off`,name:`membershipOrgUnitFilter`,spellCheck:!1},mode:`single`,name:`membershipOrgUnitFilter`,onChange:e=>c(Re(e)),options:[...C],placeholder:`全部組織`,size:`sub`,value:p})})}),(0,o.jsx)(i.Filter,{span:2,children:(0,o.jsx)(i.FormField,{fullWidth:!0,layout:l.FormFieldLayout.VERTICAL,name:`membershipPositionFilter`,children:(0,o.jsx)(i.AutoComplete,{disabledOptionsFilter:!0,emptyText:`沒有符合的職位`,inputProps:{autoCapitalize:`none`,autoCorrect:`off`,name:`membershipPositionFilter`,spellCheck:!1},mode:`single`,name:`membershipPositionFilter`,onChange:e=>f(ze(e)),options:[...w],placeholder:`全部職位`,size:`sub`,value:_})})}),(0,o.jsx)(i.Filter,{span:2,children:(0,o.jsx)(i.FormField,{fullWidth:!0,layout:l.FormFieldLayout.VERTICAL,name:`membershipStatusFilter`,children:(0,o.jsx)(i.AutoComplete,{disabledOptionsFilter:!0,emptyText:`沒有符合的狀態`,inputProps:{autoCapitalize:`none`,autoCorrect:`off`,name:`membershipStatusFilter`,spellCheck:!1},mode:`single`,name:`membershipStatusFilter`,onChange:e=>s(Le(e)),options:[...H],placeholder:`全部狀態`,size:`sub`,value:b})})})]})}),(0,o.jsx)(`div`,{className:z.tableFrame,children:(0,o.jsx)(i.Table,{actions:e,columns:S,dataSource:[...y],fullWidth:!0,loading:n,pagination:ge({onPageChange:u,onPageSizeChange:d,page:h,pageSize:g,total:x}),style:{minWidth:le}})})]})}function he({actions:e,loading:t,onCreate:n,onActiveFilterChange:a,onPageChange:s,onPageSizeChange:c,onScopeTypeFilterChange:u,page:d,pageSize:f,rows:p,scopeTypeFilter:m,statusFilter:h,total:g}){let _=(0,r.useMemo)(()=>[{dataIndex:`scopeLabel`,key:`scopeLabel`,title:`套用範圍`,width:320},{dataIndex:`managerName`,key:`managerName`,title:`簽核主管`,width:300},{dataIndex:`priority`,key:`priority`,title:`優先序`,width:96},{dataIndex:`effectiveFrom`,key:`effectiveFrom`,title:`生效日`,width:140},{dataIndex:`effectiveTo`,key:`effectiveTo`,title:`結束日`,width:140}],[]);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(be,{actionLabel:`新增主管規則`,description:`簽核主管規則獨立於組織樹 parent,解析優先序為會員、組織、職位。`,onCreate:n,title:`簽核主管`}),(0,o.jsx)(i.FilterArea,{className:z.orgFilterArea,size:`sub`,children:(0,o.jsxs)(i.FilterLine,{children:[(0,o.jsx)(i.Filter,{span:3,children:(0,o.jsx)(i.FormField,{fullWidth:!0,layout:l.FormFieldLayout.VERTICAL,name:`managerScopeTypeFilter`,children:(0,o.jsx)(i.Select,{clearable:!1,fullWidth:!0,onChange:e=>u(Fe(e)),options:[...ae],placeholder:`套用範圍`,size:`sub`,value:m})})}),(0,o.jsx)(i.Filter,{span:2,children:(0,o.jsx)(i.FormField,{fullWidth:!0,layout:l.FormFieldLayout.VERTICAL,name:`managerStatusFilter`,children:(0,o.jsx)(i.Select,{clearable:!1,fullWidth:!0,onChange:e=>a(Ie(e)),options:[...H],placeholder:`狀態`,size:`sub`,value:h})})})]})}),(0,o.jsx)(`div`,{className:z.tableFrame,children:(0,o.jsx)(i.Table,{actions:e,columns:_,dataSource:[...p],fullWidth:!0,loading:t,pagination:ge({onPageChange:s,onPageSizeChange:c,page:d,pageSize:f,total:g}),style:{minWidth:ue}})})]})}function ge({onPageChange:e,onPageSizeChange:t,page:n,pageSize:r,total:i}){return{current:n,onChange:e,onChangePageSize:t,pageSize:r,pageSizeLabel:`每頁筆數`,pageSizeOptions:[...se],renderResultSummary:(e,t,n)=>`顯示 ${e}-${t} 筆,共 ${n} 筆`,showPageSizeOptions:!0,total:i}}function _e({isTreeEditing:e,isTreeMode:t}){return t?e?`儲存`:`開始編輯`:`新增組織`}function ve({isTreeEditing:e,isTreeMode:t}){return t?e?s.SaveIcon:s.EditIcon:s.PlusIcon}function ye({hasDraftChanges:e,isTreeEditing:t,isTreeMode:n,loading:r,saving:i}){return n?t?!e||i:r:!1}function be({actionDisabled:e=!1,actionIcon:t=s.PlusIcon,actionLabel:n,actions:r,description:a,onCreate:c,title:l}){return(0,o.jsxs)(`div`,{className:z.tableIntro,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(i.Typography,{component:`h2`,variant:`h3`,children:l}),(0,o.jsx)(i.Typography,{color:`text-neutral`,variant:`body`,children:a})]}),(0,o.jsxs)(`div`,{className:z.tableIntroActions,children:[r,(0,o.jsx)(i.Button,{disabled:e,icon:t,iconType:`leading`,onClick:c,children:n})]})]})}function xe({modal:e,onClose:a,onSubmit:s,orgUnits:c,saving:l}){let[u,d]=(0,r.useState)(``),[f,p]=(0,r.useState)(``),[m,h]=(0,r.useState)(null),[g,_]=(0,r.useState)(B[2]);return(0,r.useEffect)(()=>{if(!e)return;let n=e.record,r=n?.parentId??e.parentId??null,i=r?c.find(e=>e.id===r)??null:null;d(n?.code??``),p(n?.name??``),h(i?t.a(i):null),_(B.find(e=>e.id===n?.type)??B[2])},[e,c]),(0,o.jsx)(i.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:!u||!f},confirmText:e?.type===`EDIT`?`儲存`:`建立`,loading:l,modalType:`standard`,onCancel:a,onClose:a,onConfirm:()=>void s({code:u,name:f,parentId:m?.id??null,type:g.id}),open:!!e,showModalFooter:!0,showModalHeader:!0,size:`regular`,title:e?.type===`EDIT`?`編輯組織`:`新增組織`,children:(0,o.jsxs)(`div`,{className:z.modalFields,children:[(0,o.jsx)(G,{label:`代碼`,name:`orgCode`,onChange:d,placeholder:`例如 FIN-TW`,value:u}),(0,o.jsx)(G,{label:`名稱`,name:`orgName`,onChange:p,placeholder:`例如 財務部`,value:f}),(0,o.jsx)(n.t,{label:`類型`,name:`orgType`,children:(0,o.jsx)(i.Select,{clearable:!1,fullWidth:!0,onChange:e=>_(Me(e)),options:[...B],placeholder:`選擇組織類型`,value:g})}),(0,o.jsx)(n.t,{label:`上層組織`,name:`parentId`,children:(0,o.jsx)(t.n,{name:`parentId`,onChange:h,orgUnits:c.filter(t=>t.id!==e?.record?.id),placeholder:`選擇上層組織`,value:m})})]})})}function Se({modal:e,onClose:t,onSubmit:n,saving:a}){let[s,c]=(0,r.useState)(``),[l,u]=(0,r.useState)(`0`),[d,f]=(0,r.useState)(``);return(0,r.useEffect)(()=>{e&&(c(e.record?.code??``),u(String(e.record?.level??0)),f(e.record?.name??``))},[e]),(0,o.jsx)(i.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:!s||!d},confirmText:e?.type===`EDIT`?`儲存`:`建立`,loading:a,modalType:`standard`,onCancel:t,onClose:t,onConfirm:()=>void n({code:s,level:Number(l),name:d}),open:!!e,showModalFooter:!0,showModalHeader:!0,size:`regular`,title:e?.type===`EDIT`?`編輯職位`:`新增職位`,children:(0,o.jsxs)(`div`,{className:z.modalFields,children:[(0,o.jsx)(G,{label:`代碼`,name:`positionCode`,onChange:c,placeholder:`例如 FIN-MGR`,value:s}),(0,o.jsx)(G,{label:`名稱`,name:`positionName`,onChange:f,placeholder:`例如 財務主管`,value:d}),(0,o.jsx)(G,{label:`職等`,name:`positionLevel`,onChange:u,placeholder:`例如 5`,value:l})]})})}function Ce({membersById:e,modal:a,onClose:s,onSubmit:c,orgUnits:l,positions:u,saving:d}){let[f,p]=(0,r.useState)(X()),[m,h]=(0,r.useState)(``),[g,_]=(0,r.useState)(U[1]),[v,y]=(0,r.useState)(null),[b,x]=(0,r.useState)(null),[S,C]=(0,r.useState)(null);return(0,r.useEffect)(()=>{if(!a)return;let n=a.record,r=n?e.get(n.memberId):null;p(n?.effectiveFrom??X()),h(n?.effectiveTo??``),_(U.find(e=>e.value===n?.isPrimary)??U[1]),y(r?t.i(r):null),x(Y(l.find(e=>e.id===n?.orgUnitId),t.a)),C(Y(u.find(e=>e.id===n?.positionId),t.o))},[e,a,l,u]),(0,o.jsx)(i.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:!v||!b},confirmText:a?.type===`EDIT`?`儲存`:`建立`,loading:d,modalType:`standard`,onCancel:s,onClose:s,onConfirm:()=>void c({effectiveFrom:f,effectiveTo:m||null,isPrimary:g.value,memberId:v?.id??null,orgUnitId:b?.id??null,positionId:S?.id??null}),open:!!a,showModalFooter:!0,showModalHeader:!0,size:`regular`,title:a?.type===`EDIT`?`編輯會員歸屬`:`新增會員歸屬`,children:(0,o.jsxs)(`div`,{className:z.modalFields,children:[(0,o.jsx)(n.t,{label:`會員`,name:`memberId`,children:(0,o.jsx)(t.t,{name:`memberId`,onChange:y,placeholder:`搜尋會員姓名或信箱`,value:v})}),(0,o.jsx)(n.t,{label:`組織`,name:`orgUnitId`,children:(0,o.jsx)(t.n,{name:`orgUnitId`,onChange:x,orgUnits:l,placeholder:`選擇歸屬組織`,value:b})}),(0,o.jsx)(n.t,{label:`職位`,name:`positionId`,children:(0,o.jsx)(t.r,{name:`positionId`,onChange:C,placeholder:`選擇職位`,positions:u,value:S})}),(0,o.jsx)(n.t,{label:`歸屬類型`,name:`isPrimary`,children:(0,o.jsx)(i.Select,{clearable:!1,fullWidth:!0,onChange:e=>_(Be(e)),options:[...U],placeholder:`選擇歸屬類型`,value:g})}),(0,o.jsx)(K,{label:`生效日`,name:`membershipEffectiveFrom`,onChange:p,placeholder:`YYYY-MM-DD`,value:f}),(0,o.jsx)(K,{label:`結束日`,name:`membershipEffectiveTo`,onChange:h,placeholder:`YYYY-MM-DD,未設定代表無期限`,value:m})]})})}function we({membersById:e,modal:a,onClose:s,onSubmit:c,orgUnits:l,positions:u,saving:d}){let[f,p]=(0,r.useState)(X()),[m,h]=(0,r.useState)(``),[g,_]=(0,r.useState)(null),[v,y]=(0,r.useState)(`0`),[b,x]=(0,r.useState)(null),[S,C]=(0,r.useState)(null),[w,T]=(0,r.useState)(null),[E,D]=(0,r.useState)(V[0]);(0,r.useEffect)(()=>{if(!a)return;let n=a.record,r=V.find(e=>e.id===n?.scopeType)??V[0];p(n?.effectiveFrom??X()),h(n?.effectiveTo??``),_(Y(n?e.get(n.managerMemberId):null,t.i)),y(String(n?.priority??0)),x(r.id===`MEMBER`?Y(n?e.get(n.scopeId):null,t.i):null),C(r.id===`ORG_UNIT`?Y(l.find(e=>e.id===n?.scopeId),t.a):null),T(r.id===`POSITION`?Y(u.find(e=>e.id===n?.scopeId),t.o):null),D(r)},[e,a,l,u]);let O=E.id===`MEMBER`?b?.id:E.id===`ORG_UNIT`?S?.id:w?.id,k=!!(E.id===`MEMBER`&&b?.id&&g?.id&&b.id===g.id);return(0,o.jsx)(i.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:!g||!O||k},confirmText:a?.type===`EDIT`?`儲存`:`建立`,loading:d,modalType:`standard`,onCancel:s,onClose:s,onConfirm:()=>void c({effectiveFrom:f,effectiveTo:m||null,managerMemberId:g?.id??null,priority:Number(v),scopeId:O??null,scopeType:E.id}),open:!!a,showModalFooter:!0,showModalHeader:!0,size:`regular`,title:a?.type===`EDIT`?`編輯主管規則`:`新增主管規則`,children:(0,o.jsxs)(`div`,{className:z.modalFields,children:[(0,o.jsx)(n.t,{label:`套用範圍`,name:`scopeType`,children:(0,o.jsx)(i.Select,{clearable:!1,fullWidth:!0,onChange:e=>D(Pe(e)),options:[...V],placeholder:`選擇套用範圍`,value:E})}),E.id===`MEMBER`?(0,o.jsx)(n.t,{label:`會員`,name:`scopeMemberId`,children:(0,o.jsx)(t.t,{name:`scopeMemberId`,onChange:x,placeholder:`搜尋套用會員`,value:b})}):null,E.id===`ORG_UNIT`?(0,o.jsx)(n.t,{label:`組織`,name:`scopeOrgUnitId`,children:(0,o.jsx)(t.n,{name:`scopeOrgUnitId`,onChange:C,orgUnits:l,placeholder:`選擇套用組織`,value:S})}):null,E.id===`POSITION`?(0,o.jsx)(n.t,{label:`職位`,name:`scopePositionId`,children:(0,o.jsx)(t.r,{name:`scopePositionId`,onChange:T,placeholder:`選擇套用職位`,positions:u,value:w})}):null,(0,o.jsx)(n.t,{label:`簽核主管`,name:`managerMemberId`,children:(0,o.jsx)(t.t,{name:`managerMemberId`,onChange:_,placeholder:`搜尋簽核主管`,value:g})}),k?(0,o.jsx)(i.Typography,{color:`text-error`,variant:`caption`,children:`簽核主管不可設定為套用會員本人。`}):null,(0,o.jsx)(G,{label:`優先序`,name:`managerPriority`,onChange:y,placeholder:`例如 10`,value:v}),(0,o.jsx)(K,{label:`生效日`,name:`managerEffectiveFrom`,onChange:p,placeholder:`YYYY-MM-DD`,value:f}),(0,o.jsx)(K,{label:`結束日`,name:`managerEffectiveTo`,onChange:h,placeholder:`YYYY-MM-DD,未設定代表無期限`,value:m})]})})}function G({label:e,name:t,onChange:r,placeholder:a,value:s}){return(0,o.jsx)(n.t,{label:e,name:t,children:(0,o.jsx)(i.Input,{fullWidth:!0,name:t,onChange:e=>r(e.target.value),placeholder:a,value:s})})}function K({label:e,name:t,onChange:r,placeholder:a,value:s}){return(0,o.jsx)(n.t,{label:e,name:t,children:(0,o.jsx)(i.DatePicker,{format:`YYYY-MM-DD`,fullWidth:!0,inputProps:{name:t},onChange:e=>r(Ve(e)),placeholder:a,value:s.trim()?s:void 0})})}function Te(e,t){return[...new Set([...e.map(e=>e.memberId),...t.map(e=>e.managerMemberId),...t.filter(e=>e.scopeType===`MEMBER`).map(e=>e.scopeId)])]}function Ee(e,t){return e.scopeType===`MEMBER`?`會員:${De(t.membersById.get(e.scopeId))}`:e.scopeType===`ORG_UNIT`?`組織:${Oe(t.orgUnitsById.get(e.scopeId))}`:`職位:${Ae(t.positionsById.get(e.scopeId))}`}function De(e){return e?`${e.name} · ${e.email}`:`未知會員`}function Oe(e){return e?`${e.name} · ${e.code}`:`未知組織`}function ke(e){return B.find(t=>t.id.toLowerCase()===e.toLowerCase())?.name??`未知類型`}function Ae(e){return e?`${e.name} · ${e.code}`:`未指定`}function je(e){return e===`MANAGERS`||e===`MEMBERSHIPS`||e===`POSITIONS`?e:`ORG_UNITS`}function Me(e){let t=J(e)?e:null;if(typeof t?.id==`string`){let e=t.id;return B.find(t=>t.id.toLowerCase()===e.toLowerCase())??B[2]}return B[2]}function Ne(e){let t=J(e)?e:null;if(typeof t?.id==`string`){let e=t.id;return re.find(t=>t.id.toLowerCase()===e.toLowerCase())??ne}return ne}function Pe(e){return q(e,V,V[0])}function Fe(e){return q(e,ae,ie)}function Ie(e){return q(e,H,oe)}function Le(e){let t=J(e)?e:null,n=typeof t?.id==`string`?t.id:null;return H.find(e=>e.id===n)??null}function Re(e){let t=J(e)?e:null,n=typeof t?.id==`string`?t.id:null,r=typeof t?.name==`string`?t.name:null;return n&&r?{id:n,name:r}:null}function ze(e){let t=J(e)?e:null,n=typeof t?.id==`string`?t.id:null,r=typeof t?.name==`string`?t.name:null;return n&&r?{id:n,name:r}:null}function Be(e){return q(e,U,U[1])}function q(e,t,n){let r=J(e)?e:null,i=typeof r?.id==`string`?r.id:null;return t.find(e=>e.id===i)??n}function J(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Y(e,t){return e?t(e):null}function X(){return He(new Date)}function Ve(e){let t=e?new Date(e):null;return t&&!Number.isNaN(t.getTime())?He(t):``}function He(e){return`${e.getFullYear()}-${Ue(e.getMonth()+1)}-${Ue(e.getDate())}`}function Ue(e){return String(e).padStart(2,`0`)}function We(e){return e instanceof Error?e.message:`讀取組織資料失敗。`}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return de}});
|
|
2
|
+
//# sourceMappingURL=orgs-DgZ0DQ3-.cjs.map
|