@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.
Files changed (437) hide show
  1. package/README.md +13 -1
  2. package/dist/chunks/app-navigation-C_mbz7jx.cjs +2 -0
  3. package/dist/chunks/app-navigation-C_mbz7jx.cjs.map +1 -0
  4. package/dist/chunks/{app-navigation-CATITRM7.js → app-navigation-uwbNEw9P.js} +66 -67
  5. package/dist/chunks/app-navigation-uwbNEw9P.js.map +1 -0
  6. package/dist/chunks/approval-instance-list-page-Mo6wpDPb.cjs +2 -0
  7. package/dist/chunks/approval-instance-list-page-Mo6wpDPb.cjs.map +1 -0
  8. package/dist/chunks/approval-instance-list-page-nmzMrj0b.js +281 -0
  9. package/dist/chunks/approval-instance-list-page-nmzMrj0b.js.map +1 -0
  10. package/dist/chunks/auth-provider-BV8Iiwfb.cjs +2 -0
  11. package/dist/chunks/auth-provider-BV8Iiwfb.cjs.map +1 -0
  12. package/dist/chunks/auth-provider-Bnox5gsx.js +98 -0
  13. package/dist/chunks/auth-provider-Bnox5gsx.js.map +1 -0
  14. package/dist/chunks/builder-DPhAH381.cjs +3 -0
  15. package/dist/chunks/builder-DPhAH381.cjs.map +1 -0
  16. package/dist/chunks/{FormBuilderView-CvChAvgD.js → builder-DqZskyXC.js} +334 -331
  17. package/dist/chunks/builder-DqZskyXC.js.map +1 -0
  18. package/dist/chunks/categories-DEijUOnw.cjs +2 -0
  19. package/dist/chunks/categories-DEijUOnw.cjs.map +1 -0
  20. package/dist/chunks/categories-DTEl182t.js +386 -0
  21. package/dist/chunks/categories-DTEl182t.js.map +1 -0
  22. package/dist/chunks/dashboard-page-DCmuB0Rw.cjs +2 -0
  23. package/dist/chunks/dashboard-page-DCmuB0Rw.cjs.map +1 -0
  24. package/dist/chunks/dashboard-page-Dx5PeEeN.js +117 -0
  25. package/dist/chunks/dashboard-page-Dx5PeEeN.js.map +1 -0
  26. package/dist/chunks/delegations-C-ZrwzvU.js +572 -0
  27. package/dist/chunks/delegations-C-ZrwzvU.js.map +1 -0
  28. package/dist/chunks/delegations-C5PzZ5Kn.js +645 -0
  29. package/dist/chunks/delegations-C5PzZ5Kn.js.map +1 -0
  30. package/dist/chunks/delegations-DOGDvybX.cjs +2 -0
  31. package/dist/chunks/delegations-DOGDvybX.cjs.map +1 -0
  32. package/dist/chunks/delegations-DkDBWOQ7.cjs +2 -0
  33. package/dist/chunks/delegations-DkDBWOQ7.cjs.map +1 -0
  34. package/dist/chunks/detail-B2gcOPkd.cjs +2 -0
  35. package/dist/chunks/detail-B2gcOPkd.cjs.map +1 -0
  36. package/dist/chunks/{InstanceDetailView-C-A-LOCG.js → detail-CfFyU5zC.js} +670 -667
  37. package/dist/chunks/detail-CfFyU5zC.js.map +1 -0
  38. package/dist/chunks/{format-date-time-BQyH5U8z.cjs → format-date-time-isOa3e9q.cjs} +2 -2
  39. package/dist/chunks/{format-date-time-BQyH5U8z.cjs.map → format-date-time-isOa3e9q.cjs.map} +1 -1
  40. package/dist/chunks/{LoginView-a1iu3cfc.js → login-C20yVxbc.js} +9 -9
  41. package/dist/chunks/login-C20yVxbc.js.map +1 -0
  42. package/dist/chunks/login-CQ9MfwcC.cjs +2 -0
  43. package/dist/chunks/login-CQ9MfwcC.cjs.map +1 -0
  44. package/dist/chunks/notifications-CPQ-nVar.cjs +2 -0
  45. package/dist/chunks/notifications-CPQ-nVar.cjs.map +1 -0
  46. package/dist/chunks/notifications-DweexUVy.js +197 -0
  47. package/dist/chunks/notifications-DweexUVy.js.map +1 -0
  48. package/dist/chunks/orgs-DgZ0DQ3-.cjs +2 -0
  49. package/dist/chunks/orgs-DgZ0DQ3-.cjs.map +1 -0
  50. package/dist/chunks/{AdminOrgsView-DZaVAbaQ.js → orgs-xrdhb3hS.js} +669 -666
  51. package/dist/chunks/orgs-xrdhb3hS.js.map +1 -0
  52. package/dist/chunks/templates-PK_VYvcy.js +383 -0
  53. package/dist/chunks/templates-PK_VYvcy.js.map +1 -0
  54. package/dist/chunks/templates-x1OJZmsG.cjs +2 -0
  55. package/dist/chunks/templates-x1OJZmsG.cjs.map +1 -0
  56. package/dist/chunks/users-CY4-NK3j.js +218 -0
  57. package/dist/chunks/users-CY4-NK3j.js.map +1 -0
  58. package/dist/chunks/users-DHnu_056.cjs +2 -0
  59. package/dist/chunks/users-DHnu_056.cjs.map +1 -0
  60. package/dist/components/app-navigation.d.ts +17 -10
  61. package/dist/index.cjs +1 -1
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.js +12 -13
  64. package/dist/index.js.map +1 -1
  65. package/dist/lib/notification-drawer-provider.d.ts +1 -1
  66. package/dist/lib/notification-unread-provider.d.ts +1 -1
  67. package/dist/lib/providers.d.ts +1 -1
  68. package/dist/next/BPMNextProviders.d.ts +6 -0
  69. package/dist/next/index.cjs +2 -0
  70. package/dist/next/index.cjs.map +1 -0
  71. package/dist/next/index.d.ts +1 -0
  72. package/dist/next/index.js +33 -0
  73. package/dist/next/index.js.map +1 -0
  74. package/dist/pages/admin/delegations/index.cjs +1 -1
  75. package/dist/pages/admin/delegations/index.cjs.map +1 -1
  76. package/dist/pages/admin/delegations/index.js +1 -1
  77. package/dist/pages/admin/delegations/index.js.map +1 -1
  78. package/dist/pages/admin/orgs/index.cjs +1 -1
  79. package/dist/pages/admin/orgs/index.cjs.map +1 -1
  80. package/dist/pages/admin/orgs/index.js +1 -1
  81. package/dist/pages/admin/orgs/index.js.map +1 -1
  82. package/dist/pages/admin/users/index.cjs +1 -1
  83. package/dist/pages/admin/users/index.cjs.map +1 -1
  84. package/dist/pages/admin/users/index.js +1 -1
  85. package/dist/pages/admin/users/index.js.map +1 -1
  86. package/dist/pages/cc/index.cjs +1 -1
  87. package/dist/pages/cc/index.cjs.map +1 -1
  88. package/dist/pages/cc/index.js +1 -1
  89. package/dist/pages/cc/index.js.map +1 -1
  90. package/dist/pages/dashboard/index.cjs +1 -1
  91. package/dist/pages/dashboard/index.cjs.map +1 -1
  92. package/dist/pages/dashboard/index.js +1 -1
  93. package/dist/pages/dashboard/index.js.map +1 -1
  94. package/dist/pages/delegations/index.cjs +1 -1
  95. package/dist/pages/delegations/index.cjs.map +1 -1
  96. package/dist/pages/delegations/index.js +1 -1
  97. package/dist/pages/delegations/index.js.map +1 -1
  98. package/dist/pages/forms/builder/index.cjs +1 -1
  99. package/dist/pages/forms/builder/index.cjs.map +1 -1
  100. package/dist/pages/forms/builder/index.d.ts +5 -7
  101. package/dist/pages/forms/builder/index.js +1 -1
  102. package/dist/pages/forms/builder/index.js.map +1 -1
  103. package/dist/pages/forms/index.cjs +1 -1
  104. package/dist/pages/forms/index.cjs.map +1 -1
  105. package/dist/pages/forms/index.js +1 -1
  106. package/dist/pages/forms/index.js.map +1 -1
  107. package/dist/pages/inbox/index.cjs +1 -1
  108. package/dist/pages/inbox/index.cjs.map +1 -1
  109. package/dist/pages/inbox/index.js +1 -1
  110. package/dist/pages/inbox/index.js.map +1 -1
  111. package/dist/pages/instances/detail/index.cjs +1 -1
  112. package/dist/pages/instances/detail/index.cjs.map +1 -1
  113. package/dist/pages/instances/detail/index.d.ts +1 -1
  114. package/dist/pages/instances/detail/index.js +1 -1
  115. package/dist/pages/instances/detail/index.js.map +1 -1
  116. package/dist/pages/instances/new/index.cjs +1 -1
  117. package/dist/pages/instances/new/index.cjs.map +1 -1
  118. package/dist/pages/instances/new/index.d.ts +5 -1
  119. package/dist/pages/instances/new/index.js +4 -3
  120. package/dist/pages/instances/new/index.js.map +1 -1
  121. package/dist/pages/login/index.cjs +1 -1
  122. package/dist/pages/login/index.cjs.map +1 -1
  123. package/dist/pages/login/index.d.ts +5 -1
  124. package/dist/pages/login/index.js +4 -3
  125. package/dist/pages/login/index.js.map +1 -1
  126. package/dist/pages/root/index.cjs +1 -1
  127. package/dist/pages/root/index.cjs.map +1 -1
  128. package/dist/pages/root/index.d.ts +7 -5
  129. package/dist/pages/root/index.js +5 -6
  130. package/dist/pages/root/index.js.map +1 -1
  131. package/dist/pages/search/index.cjs +1 -1
  132. package/dist/pages/search/index.cjs.map +1 -1
  133. package/dist/pages/search/index.js +1 -1
  134. package/dist/pages/search/index.js.map +1 -1
  135. package/dist/pages/sent/index.cjs +1 -1
  136. package/dist/pages/sent/index.cjs.map +1 -1
  137. package/dist/pages/sent/index.js +1 -1
  138. package/dist/pages/sent/index.js.map +1 -1
  139. package/dist/pages/settings/notifications/index.cjs +1 -1
  140. package/dist/pages/settings/notifications/index.cjs.map +1 -1
  141. package/dist/pages/settings/notifications/index.js +1 -1
  142. package/dist/pages/settings/notifications/index.js.map +1 -1
  143. package/dist/pages/templates/categories/index.cjs +1 -1
  144. package/dist/pages/templates/categories/index.cjs.map +1 -1
  145. package/dist/pages/templates/categories/index.js +1 -1
  146. package/dist/pages/templates/categories/index.js.map +1 -1
  147. package/dist/pages/templates/designer/index.cjs +1 -1
  148. package/dist/pages/templates/designer/index.cjs.map +1 -1
  149. package/dist/pages/templates/designer/index.d.ts +2 -4
  150. package/dist/pages/templates/designer/index.js +1 -1
  151. package/dist/pages/templates/designer/index.js.map +1 -1
  152. package/dist/pages/templates/index.cjs +1 -1
  153. package/dist/pages/templates/index.cjs.map +1 -1
  154. package/dist/pages/templates/index.js +1 -1
  155. package/dist/pages/templates/index.js.map +1 -1
  156. package/dist/pages/templates/versions/index.cjs +1 -1
  157. package/dist/pages/templates/versions/index.cjs.map +1 -1
  158. package/dist/pages/templates/versions/index.d.ts +2 -4
  159. package/dist/pages/templates/versions/index.js +1 -1
  160. package/dist/pages/templates/versions/index.js.map +1 -1
  161. package/dist/views/admin/delegations/index.cjs +1 -1
  162. package/dist/views/admin/delegations/index.js +1 -1
  163. package/dist/views/admin/index.cjs +1 -0
  164. package/dist/views/admin/index.d.ts +3 -0
  165. package/dist/views/admin/index.js +4 -0
  166. package/dist/views/admin/orgs/index.cjs +1 -1
  167. package/dist/views/admin/orgs/index.js +1 -1
  168. package/dist/views/admin/users/index.cjs +1 -1
  169. package/dist/views/admin/users/index.js +1 -1
  170. package/dist/views/cc/index.cjs +2 -1
  171. package/dist/views/cc/index.cjs.map +1 -0
  172. package/dist/views/cc/index.js +19 -2
  173. package/dist/views/cc/index.js.map +1 -0
  174. package/dist/views/dashboard/index.cjs +2 -1
  175. package/dist/views/dashboard/index.cjs.map +1 -0
  176. package/dist/views/dashboard/index.js +11 -2
  177. package/dist/views/dashboard/index.js.map +1 -0
  178. package/dist/views/delegations/index.cjs +1 -1
  179. package/dist/views/delegations/index.js +1 -1
  180. package/dist/views/forms/builder/index.cjs +1 -1
  181. package/dist/views/forms/builder/index.js +1 -1
  182. package/dist/views/forms/index.cjs +2 -1
  183. package/dist/views/forms/index.cjs.map +1 -0
  184. package/dist/views/forms/index.d.ts +1 -0
  185. package/dist/views/forms/index.js +189 -2
  186. package/dist/views/forms/index.js.map +1 -0
  187. package/dist/views/inbox/index.cjs +2 -1
  188. package/dist/views/inbox/index.cjs.map +1 -0
  189. package/dist/views/inbox/index.js +293 -2
  190. package/dist/views/inbox/index.js.map +1 -0
  191. package/dist/views/instances/detail/index.cjs +1 -1
  192. package/dist/views/instances/detail/index.js +1 -1
  193. package/dist/views/instances/index.cjs +1 -0
  194. package/dist/views/instances/index.d.ts +1 -0
  195. package/dist/views/instances/index.js +2 -0
  196. package/dist/views/instances/new/InstanceNewView.d.ts +3 -3
  197. package/dist/views/instances/new/index.cjs +2 -1
  198. package/dist/views/instances/new/index.cjs.map +1 -0
  199. package/dist/views/instances/new/index.js +195 -2
  200. package/dist/views/instances/new/index.js.map +1 -0
  201. package/dist/views/login/index.cjs +1 -1
  202. package/dist/views/login/index.js +1 -1
  203. package/dist/views/search/index.cjs +2 -1
  204. package/dist/views/search/index.cjs.map +1 -0
  205. package/dist/views/search/index.js +19 -2
  206. package/dist/views/search/index.js.map +1 -0
  207. package/dist/views/sent/index.cjs +2 -1
  208. package/dist/views/sent/index.cjs.map +1 -0
  209. package/dist/views/sent/index.js +19 -2
  210. package/dist/views/sent/index.js.map +1 -0
  211. package/dist/views/settings/index.cjs +1 -0
  212. package/dist/views/settings/index.d.ts +1 -0
  213. package/dist/views/settings/index.js +2 -0
  214. package/dist/views/settings/notifications/index.cjs +1 -1
  215. package/dist/views/settings/notifications/index.js +1 -1
  216. package/dist/views/templates/categories/index.cjs +1 -1
  217. package/dist/views/templates/categories/index.js +1 -1
  218. package/dist/views/templates/designer/index.cjs +51 -1
  219. package/dist/views/templates/designer/index.cjs.map +1 -0
  220. package/dist/views/templates/designer/index.js +2275 -2
  221. package/dist/views/templates/designer/index.js.map +1 -0
  222. package/dist/views/templates/index.cjs +1 -1
  223. package/dist/views/templates/index.d.ts +2 -0
  224. package/dist/views/templates/index.js +4 -2
  225. package/dist/views/templates/versions/index.cjs +2 -1
  226. package/dist/views/templates/versions/index.cjs.map +1 -0
  227. package/dist/views/templates/versions/index.js +113 -2
  228. package/dist/views/templates/versions/index.js.map +1 -0
  229. package/dist/views/workflow/index.cjs +1 -0
  230. package/dist/views/workflow/index.d.ts +4 -0
  231. package/dist/views/workflow/index.js +5 -0
  232. package/package.json +28 -3
  233. package/dist/chunks/AdminDelegationsView-CqNmlVWx.cjs +0 -2
  234. package/dist/chunks/AdminDelegationsView-CqNmlVWx.cjs.map +0 -1
  235. package/dist/chunks/AdminDelegationsView-DydMZ9ED.js +0 -642
  236. package/dist/chunks/AdminDelegationsView-DydMZ9ED.js.map +0 -1
  237. package/dist/chunks/AdminOrgsView-DZaVAbaQ.js.map +0 -1
  238. package/dist/chunks/AdminOrgsView-bSsIyMvk.cjs +0 -2
  239. package/dist/chunks/AdminOrgsView-bSsIyMvk.cjs.map +0 -1
  240. package/dist/chunks/AdminUsersView-C0oO05Br.js +0 -215
  241. package/dist/chunks/AdminUsersView-C0oO05Br.js.map +0 -1
  242. package/dist/chunks/AdminUsersView-DlArLlIr.cjs +0 -2
  243. package/dist/chunks/AdminUsersView-DlArLlIr.cjs.map +0 -1
  244. package/dist/chunks/CcView-BsVsya5F.cjs +0 -2
  245. package/dist/chunks/CcView-BsVsya5F.cjs.map +0 -1
  246. package/dist/chunks/CcView-Bv0GzA5C.js +0 -19
  247. package/dist/chunks/CcView-Bv0GzA5C.js.map +0 -1
  248. package/dist/chunks/DashboardView-Dk1ZQmmk.js +0 -11
  249. package/dist/chunks/DashboardView-Dk1ZQmmk.js.map +0 -1
  250. package/dist/chunks/DashboardView-_0zh-rxT.cjs +0 -2
  251. package/dist/chunks/DashboardView-_0zh-rxT.cjs.map +0 -1
  252. package/dist/chunks/DelegationsView-DQUqOUV5.js +0 -569
  253. package/dist/chunks/DelegationsView-DQUqOUV5.js.map +0 -1
  254. package/dist/chunks/DelegationsView-pKeFV2LN.cjs +0 -2
  255. package/dist/chunks/DelegationsView-pKeFV2LN.cjs.map +0 -1
  256. package/dist/chunks/FormBuilderView-BKtyW55e.cjs +0 -3
  257. package/dist/chunks/FormBuilderView-BKtyW55e.cjs.map +0 -1
  258. package/dist/chunks/FormBuilderView-CvChAvgD.js.map +0 -1
  259. package/dist/chunks/FormsView-DYEuik8W.js +0 -185
  260. package/dist/chunks/FormsView-DYEuik8W.js.map +0 -1
  261. package/dist/chunks/FormsView-RjJEkIfZ.cjs +0 -2
  262. package/dist/chunks/FormsView-RjJEkIfZ.cjs.map +0 -1
  263. package/dist/chunks/InboxView-DDWwmWhA.cjs +0 -2
  264. package/dist/chunks/InboxView-DDWwmWhA.cjs.map +0 -1
  265. package/dist/chunks/InboxView-YSoyrYLk.js +0 -291
  266. package/dist/chunks/InboxView-YSoyrYLk.js.map +0 -1
  267. package/dist/chunks/InstanceDetailView-C-A-LOCG.js.map +0 -1
  268. package/dist/chunks/InstanceDetailView-l_kNDCz2.cjs +0 -2
  269. package/dist/chunks/InstanceDetailView-l_kNDCz2.cjs.map +0 -1
  270. package/dist/chunks/InstanceNewView-B5hz-FWd.js +0 -190
  271. package/dist/chunks/InstanceNewView-B5hz-FWd.js.map +0 -1
  272. package/dist/chunks/InstanceNewView-CdCsxQIu.cjs +0 -2
  273. package/dist/chunks/InstanceNewView-CdCsxQIu.cjs.map +0 -1
  274. package/dist/chunks/LoginView-BED07v-7.cjs +0 -2
  275. package/dist/chunks/LoginView-BED07v-7.cjs.map +0 -1
  276. package/dist/chunks/LoginView-a1iu3cfc.js.map +0 -1
  277. package/dist/chunks/RootClientView-rXJt4TDd.cjs +0 -2
  278. package/dist/chunks/RootClientView-rXJt4TDd.cjs.map +0 -1
  279. package/dist/chunks/RootClientView-wAkXUEZw.js +0 -34
  280. package/dist/chunks/RootClientView-wAkXUEZw.js.map +0 -1
  281. package/dist/chunks/SearchView-CgXPssgE.cjs +0 -2
  282. package/dist/chunks/SearchView-CgXPssgE.cjs.map +0 -1
  283. package/dist/chunks/SearchView-WXMbZwRw.js +0 -19
  284. package/dist/chunks/SearchView-WXMbZwRw.js.map +0 -1
  285. package/dist/chunks/SentView-BTDoFBrG.cjs +0 -2
  286. package/dist/chunks/SentView-BTDoFBrG.cjs.map +0 -1
  287. package/dist/chunks/SentView-CdOL92Rq.js +0 -19
  288. package/dist/chunks/SentView-CdOL92Rq.js.map +0 -1
  289. package/dist/chunks/SettingsNotificationsView-B6F6fa7U.js +0 -194
  290. package/dist/chunks/SettingsNotificationsView-B6F6fa7U.js.map +0 -1
  291. package/dist/chunks/SettingsNotificationsView-Bnz0CmoJ.cjs +0 -2
  292. package/dist/chunks/SettingsNotificationsView-Bnz0CmoJ.cjs.map +0 -1
  293. package/dist/chunks/TemplateCategoriesView-CgZciaSd.js +0 -382
  294. package/dist/chunks/TemplateCategoriesView-CgZciaSd.js.map +0 -1
  295. package/dist/chunks/TemplateCategoriesView-U0stGUBc.cjs +0 -2
  296. package/dist/chunks/TemplateCategoriesView-U0stGUBc.cjs.map +0 -1
  297. package/dist/chunks/TemplateDesignerView-A38DyYD4.cjs +0 -51
  298. package/dist/chunks/TemplateDesignerView-A38DyYD4.cjs.map +0 -1
  299. package/dist/chunks/TemplateDesignerView-Dffx-VZ-.js +0 -2272
  300. package/dist/chunks/TemplateDesignerView-Dffx-VZ-.js.map +0 -1
  301. package/dist/chunks/TemplateVersionsView-6sVQbBem.js +0 -110
  302. package/dist/chunks/TemplateVersionsView-6sVQbBem.js.map +0 -1
  303. package/dist/chunks/TemplateVersionsView-CMqw3ieU.cjs +0 -2
  304. package/dist/chunks/TemplateVersionsView-CMqw3ieU.cjs.map +0 -1
  305. package/dist/chunks/TemplatesView-BLj9f-XI.js +0 -380
  306. package/dist/chunks/TemplatesView-BLj9f-XI.js.map +0 -1
  307. package/dist/chunks/TemplatesView-DIOQTUUl.cjs +0 -2
  308. package/dist/chunks/TemplatesView-DIOQTUUl.cjs.map +0 -1
  309. package/dist/chunks/app-navigation-CATITRM7.js.map +0 -1
  310. package/dist/chunks/app-navigation-DAC5gFbG.cjs +0 -2
  311. package/dist/chunks/app-navigation-DAC5gFbG.cjs.map +0 -1
  312. package/dist/chunks/approval-instance-list-page-B6vAGvOb.js +0 -278
  313. package/dist/chunks/approval-instance-list-page-B6vAGvOb.js.map +0 -1
  314. package/dist/chunks/approval-instance-list-page-DIAmwhvl.cjs +0 -2
  315. package/dist/chunks/approval-instance-list-page-DIAmwhvl.cjs.map +0 -1
  316. package/dist/chunks/auth-provider-D2P-qWmY.cjs +0 -2
  317. package/dist/chunks/auth-provider-D2P-qWmY.cjs.map +0 -1
  318. package/dist/chunks/auth-provider-TTO9eNZV.js +0 -83
  319. package/dist/chunks/auth-provider-TTO9eNZV.js.map +0 -1
  320. package/dist/chunks/dashboard-page-BsW8t104.js +0 -115
  321. package/dist/chunks/dashboard-page-BsW8t104.js.map +0 -1
  322. package/dist/chunks/dashboard-page-udYhnyMW.cjs +0 -2
  323. package/dist/chunks/dashboard-page-udYhnyMW.cjs.map +0 -1
  324. package/dist/chunks/router-adapter-BdHZXLS3.js +0 -23
  325. package/dist/chunks/router-adapter-BdHZXLS3.js.map +0 -1
  326. package/dist/chunks/router-adapter-BybHrCNP.cjs +0 -2
  327. package/dist/chunks/router-adapter-BybHrCNP.cjs.map +0 -1
  328. package/dist/chunks/templates.module-B5bg_goX.js +0 -8
  329. package/dist/chunks/templates.module-B5bg_goX.js.map +0 -1
  330. package/dist/chunks/templates.module-ClRnQQX4.cjs +0 -2
  331. package/dist/chunks/templates.module-ClRnQQX4.cjs.map +0 -1
  332. package/dist/pages/admin/delegations/AdminDelegationsClientView.cjs +0 -2
  333. package/dist/pages/admin/delegations/AdminDelegationsClientView.cjs.map +0 -1
  334. package/dist/pages/admin/delegations/AdminDelegationsClientView.d.ts +0 -3
  335. package/dist/pages/admin/delegations/AdminDelegationsClientView.js +0 -28
  336. package/dist/pages/admin/delegations/AdminDelegationsClientView.js.map +0 -1
  337. package/dist/pages/admin/orgs/AdminOrgsClientView.cjs +0 -2
  338. package/dist/pages/admin/orgs/AdminOrgsClientView.cjs.map +0 -1
  339. package/dist/pages/admin/orgs/AdminOrgsClientView.d.ts +0 -3
  340. package/dist/pages/admin/orgs/AdminOrgsClientView.js +0 -28
  341. package/dist/pages/admin/orgs/AdminOrgsClientView.js.map +0 -1
  342. package/dist/pages/admin/users/AdminUsersClientView.cjs +0 -2
  343. package/dist/pages/admin/users/AdminUsersClientView.cjs.map +0 -1
  344. package/dist/pages/admin/users/AdminUsersClientView.d.ts +0 -3
  345. package/dist/pages/admin/users/AdminUsersClientView.js +0 -28
  346. package/dist/pages/admin/users/AdminUsersClientView.js.map +0 -1
  347. package/dist/pages/cc/CcClientView.cjs +0 -2
  348. package/dist/pages/cc/CcClientView.cjs.map +0 -1
  349. package/dist/pages/cc/CcClientView.d.ts +0 -7
  350. package/dist/pages/cc/CcClientView.js +0 -28
  351. package/dist/pages/cc/CcClientView.js.map +0 -1
  352. package/dist/pages/dashboard/DashboardClientView.cjs +0 -2
  353. package/dist/pages/dashboard/DashboardClientView.cjs.map +0 -1
  354. package/dist/pages/dashboard/DashboardClientView.d.ts +0 -9
  355. package/dist/pages/dashboard/DashboardClientView.js +0 -28
  356. package/dist/pages/dashboard/DashboardClientView.js.map +0 -1
  357. package/dist/pages/delegations/DelegationsClientView.cjs +0 -2
  358. package/dist/pages/delegations/DelegationsClientView.cjs.map +0 -1
  359. package/dist/pages/delegations/DelegationsClientView.d.ts +0 -3
  360. package/dist/pages/delegations/DelegationsClientView.js +0 -28
  361. package/dist/pages/delegations/DelegationsClientView.js.map +0 -1
  362. package/dist/pages/forms/FormsClientView.cjs +0 -2
  363. package/dist/pages/forms/FormsClientView.cjs.map +0 -1
  364. package/dist/pages/forms/FormsClientView.d.ts +0 -10
  365. package/dist/pages/forms/FormsClientView.js +0 -28
  366. package/dist/pages/forms/FormsClientView.js.map +0 -1
  367. package/dist/pages/forms/builder/FormBuilderClientView.cjs +0 -2
  368. package/dist/pages/forms/builder/FormBuilderClientView.cjs.map +0 -1
  369. package/dist/pages/forms/builder/FormBuilderClientView.d.ts +0 -11
  370. package/dist/pages/forms/builder/FormBuilderClientView.js +0 -28
  371. package/dist/pages/forms/builder/FormBuilderClientView.js.map +0 -1
  372. package/dist/pages/inbox/InboxClientView.cjs +0 -2
  373. package/dist/pages/inbox/InboxClientView.cjs.map +0 -1
  374. package/dist/pages/inbox/InboxClientView.d.ts +0 -9
  375. package/dist/pages/inbox/InboxClientView.js +0 -28
  376. package/dist/pages/inbox/InboxClientView.js.map +0 -1
  377. package/dist/pages/instances/detail/InstanceDetailClientView.cjs +0 -2
  378. package/dist/pages/instances/detail/InstanceDetailClientView.cjs.map +0 -1
  379. package/dist/pages/instances/detail/InstanceDetailClientView.d.ts +0 -9
  380. package/dist/pages/instances/detail/InstanceDetailClientView.js +0 -28
  381. package/dist/pages/instances/detail/InstanceDetailClientView.js.map +0 -1
  382. package/dist/pages/instances/new/InstanceNewClientView.cjs +0 -2
  383. package/dist/pages/instances/new/InstanceNewClientView.cjs.map +0 -1
  384. package/dist/pages/instances/new/InstanceNewClientView.d.ts +0 -8
  385. package/dist/pages/instances/new/InstanceNewClientView.js +0 -28
  386. package/dist/pages/instances/new/InstanceNewClientView.js.map +0 -1
  387. package/dist/pages/login/LoginClientView.cjs +0 -2
  388. package/dist/pages/login/LoginClientView.cjs.map +0 -1
  389. package/dist/pages/login/LoginClientView.d.ts +0 -11
  390. package/dist/pages/login/LoginClientView.js +0 -29
  391. package/dist/pages/login/LoginClientView.js.map +0 -1
  392. package/dist/pages/root/RootClientView.cjs +0 -1
  393. package/dist/pages/root/RootClientView.d.ts +0 -8
  394. package/dist/pages/root/RootClientView.js +0 -2
  395. package/dist/pages/search/SearchClientView.cjs +0 -2
  396. package/dist/pages/search/SearchClientView.cjs.map +0 -1
  397. package/dist/pages/search/SearchClientView.d.ts +0 -7
  398. package/dist/pages/search/SearchClientView.js +0 -28
  399. package/dist/pages/search/SearchClientView.js.map +0 -1
  400. package/dist/pages/sent/SentClientView.cjs +0 -2
  401. package/dist/pages/sent/SentClientView.cjs.map +0 -1
  402. package/dist/pages/sent/SentClientView.d.ts +0 -7
  403. package/dist/pages/sent/SentClientView.js +0 -28
  404. package/dist/pages/sent/SentClientView.js.map +0 -1
  405. package/dist/pages/settings/notifications/SettingsNotificationsClientView.cjs +0 -2
  406. package/dist/pages/settings/notifications/SettingsNotificationsClientView.cjs.map +0 -1
  407. package/dist/pages/settings/notifications/SettingsNotificationsClientView.d.ts +0 -3
  408. package/dist/pages/settings/notifications/SettingsNotificationsClientView.js +0 -28
  409. package/dist/pages/settings/notifications/SettingsNotificationsClientView.js.map +0 -1
  410. package/dist/pages/templates/TemplatesClientView.cjs +0 -2
  411. package/dist/pages/templates/TemplatesClientView.cjs.map +0 -1
  412. package/dist/pages/templates/TemplatesClientView.d.ts +0 -3
  413. package/dist/pages/templates/TemplatesClientView.js +0 -28
  414. package/dist/pages/templates/TemplatesClientView.js.map +0 -1
  415. package/dist/pages/templates/categories/TemplateCategoriesClientView.cjs +0 -2
  416. package/dist/pages/templates/categories/TemplateCategoriesClientView.cjs.map +0 -1
  417. package/dist/pages/templates/categories/TemplateCategoriesClientView.d.ts +0 -3
  418. package/dist/pages/templates/categories/TemplateCategoriesClientView.js +0 -28
  419. package/dist/pages/templates/categories/TemplateCategoriesClientView.js.map +0 -1
  420. package/dist/pages/templates/designer/TemplateDesignerClientView.cjs +0 -2
  421. package/dist/pages/templates/designer/TemplateDesignerClientView.cjs.map +0 -1
  422. package/dist/pages/templates/designer/TemplateDesignerClientView.d.ts +0 -3
  423. package/dist/pages/templates/designer/TemplateDesignerClientView.js +0 -28
  424. package/dist/pages/templates/designer/TemplateDesignerClientView.js.map +0 -1
  425. package/dist/pages/templates/versions/TemplateVersionsClientView.cjs +0 -2
  426. package/dist/pages/templates/versions/TemplateVersionsClientView.cjs.map +0 -1
  427. package/dist/pages/templates/versions/TemplateVersionsClientView.d.ts +0 -3
  428. package/dist/pages/templates/versions/TemplateVersionsClientView.js +0 -28
  429. package/dist/pages/templates/versions/TemplateVersionsClientView.js.map +0 -1
  430. /package/dist/{templates.css → categories.css} +0 -0
  431. /package/dist/{AdminDelegationsView.css → delegations.css} +0 -0
  432. /package/dist/{DelegationsView.css → delegations2.css} +0 -0
  433. /package/dist/{InstanceDetailView.css → detail.css} +0 -0
  434. /package/dist/{LoginView.css → login.css} +0 -0
  435. /package/dist/{SettingsNotificationsView.css → notifications.css} +0 -0
  436. /package/dist/{AdminOrgsView.css → orgs.css} +0 -0
  437. /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