@rytass/bpm-core-react 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +56 -0
  3. package/dist/AdminDelegationsView.css +1 -0
  4. package/dist/AdminOrgsView.css +1 -0
  5. package/dist/AdminUsersView.css +1 -0
  6. package/dist/DelegationsView.css +1 -0
  7. package/dist/InstanceDetailView.css +1 -0
  8. package/dist/LoginView.css +1 -0
  9. package/dist/SettingsNotificationsView.css +1 -0
  10. package/dist/admin-pickers.css +1 -0
  11. package/dist/app-navigation.css +1 -0
  12. package/dist/approval-instance-list-page.css +1 -0
  13. package/dist/auth-provider.css +1 -0
  14. package/dist/chunks/AdminDelegationsView-CqNmlVWx.cjs +2 -0
  15. package/dist/chunks/AdminDelegationsView-CqNmlVWx.cjs.map +1 -0
  16. package/dist/chunks/AdminDelegationsView-DydMZ9ED.js +642 -0
  17. package/dist/chunks/AdminDelegationsView-DydMZ9ED.js.map +1 -0
  18. package/dist/chunks/AdminOrgsView-DZaVAbaQ.js +1945 -0
  19. package/dist/chunks/AdminOrgsView-DZaVAbaQ.js.map +1 -0
  20. package/dist/chunks/AdminOrgsView-bSsIyMvk.cjs +2 -0
  21. package/dist/chunks/AdminOrgsView-bSsIyMvk.cjs.map +1 -0
  22. package/dist/chunks/AdminUsersView-C0oO05Br.js +215 -0
  23. package/dist/chunks/AdminUsersView-C0oO05Br.js.map +1 -0
  24. package/dist/chunks/AdminUsersView-DlArLlIr.cjs +2 -0
  25. package/dist/chunks/AdminUsersView-DlArLlIr.cjs.map +1 -0
  26. package/dist/chunks/CcView-BsVsya5F.cjs +2 -0
  27. package/dist/chunks/CcView-BsVsya5F.cjs.map +1 -0
  28. package/dist/chunks/CcView-Bv0GzA5C.js +19 -0
  29. package/dist/chunks/CcView-Bv0GzA5C.js.map +1 -0
  30. package/dist/chunks/DashboardView-Dk1ZQmmk.js +11 -0
  31. package/dist/chunks/DashboardView-Dk1ZQmmk.js.map +1 -0
  32. package/dist/chunks/DashboardView-_0zh-rxT.cjs +2 -0
  33. package/dist/chunks/DashboardView-_0zh-rxT.cjs.map +1 -0
  34. package/dist/chunks/DelegationsView-DQUqOUV5.js +569 -0
  35. package/dist/chunks/DelegationsView-DQUqOUV5.js.map +1 -0
  36. package/dist/chunks/DelegationsView-pKeFV2LN.cjs +2 -0
  37. package/dist/chunks/DelegationsView-pKeFV2LN.cjs.map +1 -0
  38. package/dist/chunks/FormBuilderView-BKtyW55e.cjs +3 -0
  39. package/dist/chunks/FormBuilderView-BKtyW55e.cjs.map +1 -0
  40. package/dist/chunks/FormBuilderView-CvChAvgD.js +1300 -0
  41. package/dist/chunks/FormBuilderView-CvChAvgD.js.map +1 -0
  42. package/dist/chunks/FormRendererView-BwVsH2eX.cjs +2 -0
  43. package/dist/chunks/FormRendererView-BwVsH2eX.cjs.map +1 -0
  44. package/dist/chunks/FormRendererView-DrHsuSVo.js +220 -0
  45. package/dist/chunks/FormRendererView-DrHsuSVo.js.map +1 -0
  46. package/dist/chunks/FormsView-DYEuik8W.js +185 -0
  47. package/dist/chunks/FormsView-DYEuik8W.js.map +1 -0
  48. package/dist/chunks/FormsView-RjJEkIfZ.cjs +2 -0
  49. package/dist/chunks/FormsView-RjJEkIfZ.cjs.map +1 -0
  50. package/dist/chunks/InboxView-DDWwmWhA.cjs +2 -0
  51. package/dist/chunks/InboxView-DDWwmWhA.cjs.map +1 -0
  52. package/dist/chunks/InboxView-YSoyrYLk.js +291 -0
  53. package/dist/chunks/InboxView-YSoyrYLk.js.map +1 -0
  54. package/dist/chunks/InstanceDetailView-C-A-LOCG.js +1519 -0
  55. package/dist/chunks/InstanceDetailView-C-A-LOCG.js.map +1 -0
  56. package/dist/chunks/InstanceDetailView-l_kNDCz2.cjs +2 -0
  57. package/dist/chunks/InstanceDetailView-l_kNDCz2.cjs.map +1 -0
  58. package/dist/chunks/InstanceNewView-B5hz-FWd.js +190 -0
  59. package/dist/chunks/InstanceNewView-B5hz-FWd.js.map +1 -0
  60. package/dist/chunks/InstanceNewView-CdCsxQIu.cjs +2 -0
  61. package/dist/chunks/InstanceNewView-CdCsxQIu.cjs.map +1 -0
  62. package/dist/chunks/LoginView-BED07v-7.cjs +2 -0
  63. package/dist/chunks/LoginView-BED07v-7.cjs.map +1 -0
  64. package/dist/chunks/LoginView-a1iu3cfc.js +157 -0
  65. package/dist/chunks/LoginView-a1iu3cfc.js.map +1 -0
  66. package/dist/chunks/RootClientView-rXJt4TDd.cjs +2 -0
  67. package/dist/chunks/RootClientView-rXJt4TDd.cjs.map +1 -0
  68. package/dist/chunks/RootClientView-wAkXUEZw.js +34 -0
  69. package/dist/chunks/RootClientView-wAkXUEZw.js.map +1 -0
  70. package/dist/chunks/SearchView-CgXPssgE.cjs +2 -0
  71. package/dist/chunks/SearchView-CgXPssgE.cjs.map +1 -0
  72. package/dist/chunks/SearchView-WXMbZwRw.js +19 -0
  73. package/dist/chunks/SearchView-WXMbZwRw.js.map +1 -0
  74. package/dist/chunks/SentView-BTDoFBrG.cjs +2 -0
  75. package/dist/chunks/SentView-BTDoFBrG.cjs.map +1 -0
  76. package/dist/chunks/SentView-CdOL92Rq.js +19 -0
  77. package/dist/chunks/SentView-CdOL92Rq.js.map +1 -0
  78. package/dist/chunks/SettingsNotificationsView-B6F6fa7U.js +194 -0
  79. package/dist/chunks/SettingsNotificationsView-B6F6fa7U.js.map +1 -0
  80. package/dist/chunks/SettingsNotificationsView-Bnz0CmoJ.cjs +2 -0
  81. package/dist/chunks/SettingsNotificationsView-Bnz0CmoJ.cjs.map +1 -0
  82. package/dist/chunks/TemplateCategoriesView-CgZciaSd.js +382 -0
  83. package/dist/chunks/TemplateCategoriesView-CgZciaSd.js.map +1 -0
  84. package/dist/chunks/TemplateCategoriesView-U0stGUBc.cjs +2 -0
  85. package/dist/chunks/TemplateCategoriesView-U0stGUBc.cjs.map +1 -0
  86. package/dist/chunks/TemplateDesignerView-A38DyYD4.cjs +51 -0
  87. package/dist/chunks/TemplateDesignerView-A38DyYD4.cjs.map +1 -0
  88. package/dist/chunks/TemplateDesignerView-Dffx-VZ-.js +2272 -0
  89. package/dist/chunks/TemplateDesignerView-Dffx-VZ-.js.map +1 -0
  90. package/dist/chunks/TemplateVersionsView-6sVQbBem.js +110 -0
  91. package/dist/chunks/TemplateVersionsView-6sVQbBem.js.map +1 -0
  92. package/dist/chunks/TemplateVersionsView-CMqw3ieU.cjs +2 -0
  93. package/dist/chunks/TemplateVersionsView-CMqw3ieU.cjs.map +1 -0
  94. package/dist/chunks/TemplatesView-BLj9f-XI.js +380 -0
  95. package/dist/chunks/TemplatesView-BLj9f-XI.js.map +1 -0
  96. package/dist/chunks/TemplatesView-DIOQTUUl.cjs +2 -0
  97. package/dist/chunks/TemplatesView-DIOQTUUl.cjs.map +1 -0
  98. package/dist/chunks/admin-pickers-Btvij1at.cjs +2 -0
  99. package/dist/chunks/admin-pickers-Btvij1at.cjs.map +1 -0
  100. package/dist/chunks/admin-pickers-DLlG_1du.js +140 -0
  101. package/dist/chunks/admin-pickers-DLlG_1du.js.map +1 -0
  102. package/dist/chunks/app-navigation-CATITRM7.js +263 -0
  103. package/dist/chunks/app-navigation-CATITRM7.js.map +1 -0
  104. package/dist/chunks/app-navigation-DAC5gFbG.cjs +2 -0
  105. package/dist/chunks/app-navigation-DAC5gFbG.cjs.map +1 -0
  106. package/dist/chunks/approval-instance-list-page-B6vAGvOb.js +278 -0
  107. package/dist/chunks/approval-instance-list-page-B6vAGvOb.js.map +1 -0
  108. package/dist/chunks/approval-instance-list-page-DIAmwhvl.cjs +2 -0
  109. package/dist/chunks/approval-instance-list-page-DIAmwhvl.cjs.map +1 -0
  110. package/dist/chunks/auth-provider-D2P-qWmY.cjs +2 -0
  111. package/dist/chunks/auth-provider-D2P-qWmY.cjs.map +1 -0
  112. package/dist/chunks/auth-provider-TTO9eNZV.js +83 -0
  113. package/dist/chunks/auth-provider-TTO9eNZV.js.map +1 -0
  114. package/dist/chunks/bpm-form-field-Bc6k4ZEO.cjs +2 -0
  115. package/dist/chunks/bpm-form-field-Bc6k4ZEO.cjs.map +1 -0
  116. package/dist/chunks/bpm-form-field-Cao0rMol.js +17 -0
  117. package/dist/chunks/bpm-form-field-Cao0rMol.js.map +1 -0
  118. package/dist/chunks/dashboard-page-BsW8t104.js +115 -0
  119. package/dist/chunks/dashboard-page-BsW8t104.js.map +1 -0
  120. package/dist/chunks/dashboard-page-udYhnyMW.cjs +2 -0
  121. package/dist/chunks/dashboard-page-udYhnyMW.cjs.map +1 -0
  122. package/dist/chunks/form-name-modal-C3OEvkCV.js +64 -0
  123. package/dist/chunks/form-name-modal-C3OEvkCV.js.map +1 -0
  124. package/dist/chunks/form-name-modal-uZCHbtRH.cjs +2 -0
  125. package/dist/chunks/form-name-modal-uZCHbtRH.cjs.map +1 -0
  126. package/dist/chunks/format-date-time-BQyH5U8z.cjs +2 -0
  127. package/dist/chunks/format-date-time-BQyH5U8z.cjs.map +1 -0
  128. package/dist/chunks/format-date-time-CB-LxzqT.js +9 -0
  129. package/dist/chunks/format-date-time-CB-LxzqT.js.map +1 -0
  130. package/dist/chunks/router-adapter-BdHZXLS3.js +23 -0
  131. package/dist/chunks/router-adapter-BdHZXLS3.js.map +1 -0
  132. package/dist/chunks/router-adapter-BybHrCNP.cjs +2 -0
  133. package/dist/chunks/router-adapter-BybHrCNP.cjs.map +1 -0
  134. package/dist/chunks/templates.module-B5bg_goX.js +8 -0
  135. package/dist/chunks/templates.module-B5bg_goX.js.map +1 -0
  136. package/dist/chunks/templates.module-ClRnQQX4.cjs +2 -0
  137. package/dist/chunks/templates.module-ClRnQQX4.cjs.map +1 -0
  138. package/dist/components/admin-pickers.d.ts +65 -0
  139. package/dist/components/app-navigation.d.ts +34 -0
  140. package/dist/components/approval-instance-list-page.d.ts +18 -0
  141. package/dist/components/bpm-form-field.d.ts +10 -0
  142. package/dist/components/dashboard-page.d.ts +10 -0
  143. package/dist/components/notification-drawer.d.ts +10 -0
  144. package/dist/components/org-unit-tree-draft-editor.d.ts +24 -0
  145. package/dist/components/pdf-preview.d.ts +12 -0
  146. package/dist/dashboard-page.css +1 -0
  147. package/dist/index.cjs +2 -0
  148. package/dist/index.cjs.map +1 -0
  149. package/dist/index.d.ts +12 -0
  150. package/dist/index.js +209 -0
  151. package/dist/index.js.map +1 -0
  152. package/dist/lib/auth-provider.d.ts +37 -0
  153. package/dist/lib/format-date-time.d.ts +5 -0
  154. package/dist/lib/notification-drawer-provider.d.ts +26 -0
  155. package/dist/lib/notification-unread-provider.d.ts +24 -0
  156. package/dist/lib/org-tree-draft.d.ts +27 -0
  157. package/dist/lib/providers.d.ts +30 -0
  158. package/dist/lib/router-adapter.d.ts +47 -0
  159. package/dist/pages/admin/delegations/AdminDelegationsClientView.cjs +2 -0
  160. package/dist/pages/admin/delegations/AdminDelegationsClientView.cjs.map +1 -0
  161. package/dist/pages/admin/delegations/AdminDelegationsClientView.d.ts +3 -0
  162. package/dist/pages/admin/delegations/AdminDelegationsClientView.js +28 -0
  163. package/dist/pages/admin/delegations/AdminDelegationsClientView.js.map +1 -0
  164. package/dist/pages/admin/delegations/index.cjs +2 -0
  165. package/dist/pages/admin/delegations/index.cjs.map +1 -0
  166. package/dist/pages/admin/delegations/index.d.ts +4 -0
  167. package/dist/pages/admin/delegations/index.js +14 -0
  168. package/dist/pages/admin/delegations/index.js.map +1 -0
  169. package/dist/pages/admin/orgs/AdminOrgsClientView.cjs +2 -0
  170. package/dist/pages/admin/orgs/AdminOrgsClientView.cjs.map +1 -0
  171. package/dist/pages/admin/orgs/AdminOrgsClientView.d.ts +3 -0
  172. package/dist/pages/admin/orgs/AdminOrgsClientView.js +28 -0
  173. package/dist/pages/admin/orgs/AdminOrgsClientView.js.map +1 -0
  174. package/dist/pages/admin/orgs/index.cjs +2 -0
  175. package/dist/pages/admin/orgs/index.cjs.map +1 -0
  176. package/dist/pages/admin/orgs/index.d.ts +4 -0
  177. package/dist/pages/admin/orgs/index.js +14 -0
  178. package/dist/pages/admin/orgs/index.js.map +1 -0
  179. package/dist/pages/admin/users/AdminUsersClientView.cjs +2 -0
  180. package/dist/pages/admin/users/AdminUsersClientView.cjs.map +1 -0
  181. package/dist/pages/admin/users/AdminUsersClientView.d.ts +3 -0
  182. package/dist/pages/admin/users/AdminUsersClientView.js +28 -0
  183. package/dist/pages/admin/users/AdminUsersClientView.js.map +1 -0
  184. package/dist/pages/admin/users/index.cjs +2 -0
  185. package/dist/pages/admin/users/index.cjs.map +1 -0
  186. package/dist/pages/admin/users/index.d.ts +4 -0
  187. package/dist/pages/admin/users/index.js +14 -0
  188. package/dist/pages/admin/users/index.js.map +1 -0
  189. package/dist/pages/cc/CcClientView.cjs +2 -0
  190. package/dist/pages/cc/CcClientView.cjs.map +1 -0
  191. package/dist/pages/cc/CcClientView.d.ts +7 -0
  192. package/dist/pages/cc/CcClientView.js +28 -0
  193. package/dist/pages/cc/CcClientView.js.map +1 -0
  194. package/dist/pages/cc/index.cjs +2 -0
  195. package/dist/pages/cc/index.cjs.map +1 -0
  196. package/dist/pages/cc/index.d.ts +16 -0
  197. package/dist/pages/cc/index.js +11 -0
  198. package/dist/pages/cc/index.js.map +1 -0
  199. package/dist/pages/dashboard/DashboardClientView.cjs +2 -0
  200. package/dist/pages/dashboard/DashboardClientView.cjs.map +1 -0
  201. package/dist/pages/dashboard/DashboardClientView.d.ts +9 -0
  202. package/dist/pages/dashboard/DashboardClientView.js +28 -0
  203. package/dist/pages/dashboard/DashboardClientView.js.map +1 -0
  204. package/dist/pages/dashboard/index.cjs +2 -0
  205. package/dist/pages/dashboard/index.cjs.map +1 -0
  206. package/dist/pages/dashboard/index.d.ts +16 -0
  207. package/dist/pages/dashboard/index.js +11 -0
  208. package/dist/pages/dashboard/index.js.map +1 -0
  209. package/dist/pages/delegations/DelegationsClientView.cjs +2 -0
  210. package/dist/pages/delegations/DelegationsClientView.cjs.map +1 -0
  211. package/dist/pages/delegations/DelegationsClientView.d.ts +3 -0
  212. package/dist/pages/delegations/DelegationsClientView.js +28 -0
  213. package/dist/pages/delegations/DelegationsClientView.js.map +1 -0
  214. package/dist/pages/delegations/index.cjs +2 -0
  215. package/dist/pages/delegations/index.cjs.map +1 -0
  216. package/dist/pages/delegations/index.d.ts +4 -0
  217. package/dist/pages/delegations/index.js +14 -0
  218. package/dist/pages/delegations/index.js.map +1 -0
  219. package/dist/pages/forms/FormsClientView.cjs +2 -0
  220. package/dist/pages/forms/FormsClientView.cjs.map +1 -0
  221. package/dist/pages/forms/FormsClientView.d.ts +10 -0
  222. package/dist/pages/forms/FormsClientView.js +28 -0
  223. package/dist/pages/forms/FormsClientView.js.map +1 -0
  224. package/dist/pages/forms/builder/FormBuilderClientView.cjs +2 -0
  225. package/dist/pages/forms/builder/FormBuilderClientView.cjs.map +1 -0
  226. package/dist/pages/forms/builder/FormBuilderClientView.d.ts +11 -0
  227. package/dist/pages/forms/builder/FormBuilderClientView.js +28 -0
  228. package/dist/pages/forms/builder/FormBuilderClientView.js.map +1 -0
  229. package/dist/pages/forms/builder/index.cjs +2 -0
  230. package/dist/pages/forms/builder/index.cjs.map +1 -0
  231. package/dist/pages/forms/builder/index.d.ts +23 -0
  232. package/dist/pages/forms/builder/index.js +15 -0
  233. package/dist/pages/forms/builder/index.js.map +1 -0
  234. package/dist/pages/forms/index.cjs +2 -0
  235. package/dist/pages/forms/index.cjs.map +1 -0
  236. package/dist/pages/forms/index.d.ts +17 -0
  237. package/dist/pages/forms/index.js +14 -0
  238. package/dist/pages/forms/index.js.map +1 -0
  239. package/dist/pages/inbox/InboxClientView.cjs +2 -0
  240. package/dist/pages/inbox/InboxClientView.cjs.map +1 -0
  241. package/dist/pages/inbox/InboxClientView.d.ts +9 -0
  242. package/dist/pages/inbox/InboxClientView.js +28 -0
  243. package/dist/pages/inbox/InboxClientView.js.map +1 -0
  244. package/dist/pages/inbox/index.cjs +2 -0
  245. package/dist/pages/inbox/index.cjs.map +1 -0
  246. package/dist/pages/inbox/index.d.ts +16 -0
  247. package/dist/pages/inbox/index.js +11 -0
  248. package/dist/pages/inbox/index.js.map +1 -0
  249. package/dist/pages/instances/detail/InstanceDetailClientView.cjs +2 -0
  250. package/dist/pages/instances/detail/InstanceDetailClientView.cjs.map +1 -0
  251. package/dist/pages/instances/detail/InstanceDetailClientView.d.ts +9 -0
  252. package/dist/pages/instances/detail/InstanceDetailClientView.js +28 -0
  253. package/dist/pages/instances/detail/InstanceDetailClientView.js.map +1 -0
  254. package/dist/pages/instances/detail/index.cjs +2 -0
  255. package/dist/pages/instances/detail/index.cjs.map +1 -0
  256. package/dist/pages/instances/detail/index.d.ts +23 -0
  257. package/dist/pages/instances/detail/index.js +12 -0
  258. package/dist/pages/instances/detail/index.js.map +1 -0
  259. package/dist/pages/instances/new/InstanceNewClientView.cjs +2 -0
  260. package/dist/pages/instances/new/InstanceNewClientView.cjs.map +1 -0
  261. package/dist/pages/instances/new/InstanceNewClientView.d.ts +8 -0
  262. package/dist/pages/instances/new/InstanceNewClientView.js +28 -0
  263. package/dist/pages/instances/new/InstanceNewClientView.js.map +1 -0
  264. package/dist/pages/instances/new/index.cjs +2 -0
  265. package/dist/pages/instances/new/index.cjs.map +1 -0
  266. package/dist/pages/instances/new/index.d.ts +16 -0
  267. package/dist/pages/instances/new/index.js +11 -0
  268. package/dist/pages/instances/new/index.js.map +1 -0
  269. package/dist/pages/login/LoginClientView.cjs +2 -0
  270. package/dist/pages/login/LoginClientView.cjs.map +1 -0
  271. package/dist/pages/login/LoginClientView.d.ts +11 -0
  272. package/dist/pages/login/LoginClientView.js +29 -0
  273. package/dist/pages/login/LoginClientView.js.map +1 -0
  274. package/dist/pages/login/index.cjs +2 -0
  275. package/dist/pages/login/index.cjs.map +1 -0
  276. package/dist/pages/login/index.d.ts +17 -0
  277. package/dist/pages/login/index.js +14 -0
  278. package/dist/pages/login/index.js.map +1 -0
  279. package/dist/pages/root/RootClientView.cjs +1 -0
  280. package/dist/pages/root/RootClientView.d.ts +8 -0
  281. package/dist/pages/root/RootClientView.js +2 -0
  282. package/dist/pages/root/index.cjs +2 -0
  283. package/dist/pages/root/index.cjs.map +1 -0
  284. package/dist/pages/root/index.d.ts +16 -0
  285. package/dist/pages/root/index.js +11 -0
  286. package/dist/pages/root/index.js.map +1 -0
  287. package/dist/pages/search/SearchClientView.cjs +2 -0
  288. package/dist/pages/search/SearchClientView.cjs.map +1 -0
  289. package/dist/pages/search/SearchClientView.d.ts +7 -0
  290. package/dist/pages/search/SearchClientView.js +28 -0
  291. package/dist/pages/search/SearchClientView.js.map +1 -0
  292. package/dist/pages/search/index.cjs +2 -0
  293. package/dist/pages/search/index.cjs.map +1 -0
  294. package/dist/pages/search/index.d.ts +16 -0
  295. package/dist/pages/search/index.js +11 -0
  296. package/dist/pages/search/index.js.map +1 -0
  297. package/dist/pages/sent/SentClientView.cjs +2 -0
  298. package/dist/pages/sent/SentClientView.cjs.map +1 -0
  299. package/dist/pages/sent/SentClientView.d.ts +7 -0
  300. package/dist/pages/sent/SentClientView.js +28 -0
  301. package/dist/pages/sent/SentClientView.js.map +1 -0
  302. package/dist/pages/sent/index.cjs +2 -0
  303. package/dist/pages/sent/index.cjs.map +1 -0
  304. package/dist/pages/sent/index.d.ts +16 -0
  305. package/dist/pages/sent/index.js +11 -0
  306. package/dist/pages/sent/index.js.map +1 -0
  307. package/dist/pages/settings/notifications/SettingsNotificationsClientView.cjs +2 -0
  308. package/dist/pages/settings/notifications/SettingsNotificationsClientView.cjs.map +1 -0
  309. package/dist/pages/settings/notifications/SettingsNotificationsClientView.d.ts +3 -0
  310. package/dist/pages/settings/notifications/SettingsNotificationsClientView.js +28 -0
  311. package/dist/pages/settings/notifications/SettingsNotificationsClientView.js.map +1 -0
  312. package/dist/pages/settings/notifications/index.cjs +2 -0
  313. package/dist/pages/settings/notifications/index.cjs.map +1 -0
  314. package/dist/pages/settings/notifications/index.d.ts +4 -0
  315. package/dist/pages/settings/notifications/index.js +14 -0
  316. package/dist/pages/settings/notifications/index.js.map +1 -0
  317. package/dist/pages/templates/TemplatesClientView.cjs +2 -0
  318. package/dist/pages/templates/TemplatesClientView.cjs.map +1 -0
  319. package/dist/pages/templates/TemplatesClientView.d.ts +3 -0
  320. package/dist/pages/templates/TemplatesClientView.js +28 -0
  321. package/dist/pages/templates/TemplatesClientView.js.map +1 -0
  322. package/dist/pages/templates/categories/TemplateCategoriesClientView.cjs +2 -0
  323. package/dist/pages/templates/categories/TemplateCategoriesClientView.cjs.map +1 -0
  324. package/dist/pages/templates/categories/TemplateCategoriesClientView.d.ts +3 -0
  325. package/dist/pages/templates/categories/TemplateCategoriesClientView.js +28 -0
  326. package/dist/pages/templates/categories/TemplateCategoriesClientView.js.map +1 -0
  327. package/dist/pages/templates/categories/index.cjs +2 -0
  328. package/dist/pages/templates/categories/index.cjs.map +1 -0
  329. package/dist/pages/templates/categories/index.d.ts +4 -0
  330. package/dist/pages/templates/categories/index.js +14 -0
  331. package/dist/pages/templates/categories/index.js.map +1 -0
  332. package/dist/pages/templates/designer/TemplateDesignerClientView.cjs +2 -0
  333. package/dist/pages/templates/designer/TemplateDesignerClientView.cjs.map +1 -0
  334. package/dist/pages/templates/designer/TemplateDesignerClientView.d.ts +3 -0
  335. package/dist/pages/templates/designer/TemplateDesignerClientView.js +28 -0
  336. package/dist/pages/templates/designer/TemplateDesignerClientView.js.map +1 -0
  337. package/dist/pages/templates/designer/index.cjs +2 -0
  338. package/dist/pages/templates/designer/index.cjs.map +1 -0
  339. package/dist/pages/templates/designer/index.d.ts +10 -0
  340. package/dist/pages/templates/designer/index.js +15 -0
  341. package/dist/pages/templates/designer/index.js.map +1 -0
  342. package/dist/pages/templates/index.cjs +2 -0
  343. package/dist/pages/templates/index.cjs.map +1 -0
  344. package/dist/pages/templates/index.d.ts +4 -0
  345. package/dist/pages/templates/index.js +14 -0
  346. package/dist/pages/templates/index.js.map +1 -0
  347. package/dist/pages/templates/versions/TemplateVersionsClientView.cjs +2 -0
  348. package/dist/pages/templates/versions/TemplateVersionsClientView.cjs.map +1 -0
  349. package/dist/pages/templates/versions/TemplateVersionsClientView.d.ts +3 -0
  350. package/dist/pages/templates/versions/TemplateVersionsClientView.js +28 -0
  351. package/dist/pages/templates/versions/TemplateVersionsClientView.js.map +1 -0
  352. package/dist/pages/templates/versions/index.cjs +2 -0
  353. package/dist/pages/templates/versions/index.cjs.map +1 -0
  354. package/dist/pages/templates/versions/index.d.ts +10 -0
  355. package/dist/pages/templates/versions/index.js +15 -0
  356. package/dist/pages/templates/versions/index.js.map +1 -0
  357. package/dist/templates.css +1 -0
  358. package/dist/views/admin/delegations/AdminDelegationsView.d.ts +5 -0
  359. package/dist/views/admin/delegations/index.cjs +1 -0
  360. package/dist/views/admin/delegations/index.d.ts +1 -0
  361. package/dist/views/admin/delegations/index.js +2 -0
  362. package/dist/views/admin/orgs/AdminOrgsView.d.ts +5 -0
  363. package/dist/views/admin/orgs/index.cjs +1 -0
  364. package/dist/views/admin/orgs/index.d.ts +1 -0
  365. package/dist/views/admin/orgs/index.js +2 -0
  366. package/dist/views/admin/users/AdminUsersView.d.ts +5 -0
  367. package/dist/views/admin/users/index.cjs +1 -0
  368. package/dist/views/admin/users/index.d.ts +1 -0
  369. package/dist/views/admin/users/index.js +2 -0
  370. package/dist/views/cc/CcView.d.ts +9 -0
  371. package/dist/views/cc/index.cjs +1 -0
  372. package/dist/views/cc/index.d.ts +1 -0
  373. package/dist/views/cc/index.js +2 -0
  374. package/dist/views/dashboard/DashboardView.d.ts +9 -0
  375. package/dist/views/dashboard/index.cjs +1 -0
  376. package/dist/views/dashboard/index.d.ts +1 -0
  377. package/dist/views/dashboard/index.js +2 -0
  378. package/dist/views/delegations/DelegationsView.d.ts +5 -0
  379. package/dist/views/delegations/index.cjs +1 -0
  380. package/dist/views/delegations/index.d.ts +1 -0
  381. package/dist/views/delegations/index.js +2 -0
  382. package/dist/views/forms/FormsView.d.ts +4 -0
  383. package/dist/views/forms/builder/FormBuilderView.d.ts +9 -0
  384. package/dist/views/forms/builder/index.cjs +1 -0
  385. package/dist/views/forms/builder/index.d.ts +1 -0
  386. package/dist/views/forms/builder/index.js +2 -0
  387. package/dist/views/forms/builder/json-code-editor.d.ts +11 -0
  388. package/dist/views/forms/form-name-modal.d.ts +12 -0
  389. package/dist/views/forms/index.cjs +1 -0
  390. package/dist/views/forms/index.d.ts +1 -0
  391. package/dist/views/forms/index.js +2 -0
  392. package/dist/views/forms/renderer/FormRendererView.d.ts +19 -0
  393. package/dist/views/forms/renderer/index.cjs +1 -0
  394. package/dist/views/forms/renderer/index.d.ts +1 -0
  395. package/dist/views/forms/renderer/index.js +2 -0
  396. package/dist/views/inbox/InboxView.d.ts +9 -0
  397. package/dist/views/inbox/index.cjs +1 -0
  398. package/dist/views/inbox/index.d.ts +1 -0
  399. package/dist/views/inbox/index.js +2 -0
  400. package/dist/views/instances/detail/InstanceDetailView.d.ts +12 -0
  401. package/dist/views/instances/detail/index.cjs +1 -0
  402. package/dist/views/instances/detail/index.d.ts +1 -0
  403. package/dist/views/instances/detail/index.js +2 -0
  404. package/dist/views/instances/new/InstanceNewView.d.ts +15 -0
  405. package/dist/views/instances/new/index.cjs +1 -0
  406. package/dist/views/instances/new/index.d.ts +1 -0
  407. package/dist/views/instances/new/index.js +2 -0
  408. package/dist/views/login/LoginView.d.ts +47 -0
  409. package/dist/views/login/index.cjs +1 -0
  410. package/dist/views/login/index.d.ts +1 -0
  411. package/dist/views/login/index.js +2 -0
  412. package/dist/views/root/RootView.d.ts +12 -0
  413. package/dist/views/root/index.d.ts +1 -0
  414. package/dist/views/search/SearchView.d.ts +9 -0
  415. package/dist/views/search/index.cjs +1 -0
  416. package/dist/views/search/index.d.ts +1 -0
  417. package/dist/views/search/index.js +2 -0
  418. package/dist/views/sent/SentView.d.ts +9 -0
  419. package/dist/views/sent/index.cjs +1 -0
  420. package/dist/views/sent/index.d.ts +1 -0
  421. package/dist/views/sent/index.js +2 -0
  422. package/dist/views/settings/notifications/SettingsNotificationsView.d.ts +5 -0
  423. package/dist/views/settings/notifications/index.cjs +1 -0
  424. package/dist/views/settings/notifications/index.d.ts +1 -0
  425. package/dist/views/settings/notifications/index.js +2 -0
  426. package/dist/views/templates/TemplatesView.d.ts +5 -0
  427. package/dist/views/templates/categories/TemplateCategoriesView.d.ts +5 -0
  428. package/dist/views/templates/categories/index.cjs +1 -0
  429. package/dist/views/templates/categories/index.d.ts +1 -0
  430. package/dist/views/templates/categories/index.js +2 -0
  431. package/dist/views/templates/designer/TemplateDesignerView.d.ts +6 -0
  432. package/dist/views/templates/designer/index.cjs +1 -0
  433. package/dist/views/templates/designer/index.d.ts +1 -0
  434. package/dist/views/templates/designer/index.js +2 -0
  435. package/dist/views/templates/index.cjs +1 -0
  436. package/dist/views/templates/index.d.ts +1 -0
  437. package/dist/views/templates/index.js +2 -0
  438. package/dist/views/templates/template-name-modal.d.ts +22 -0
  439. package/dist/views/templates/versions/TemplateVersionsView.d.ts +6 -0
  440. package/dist/views/templates/versions/index.cjs +1 -0
  441. package/dist/views/templates/versions/index.d.ts +1 -0
  442. package/dist/views/templates/versions/index.js +2 -0
  443. package/package.json +272 -0
@@ -0,0 +1,1945 @@
1
+ "use client";
2
+ import { t as e } from "./app-navigation-CATITRM7.js";
3
+ import { a as t, i as n, n as r, o as i, r as a, t as o } from "./admin-pickers-DLlG_1du.js";
4
+ import { t as s } from "./bpm-form-field-Cao0rMol.js";
5
+ import { forwardRef as c, useCallback as l, useEffect as u, useImperativeHandle as d, useMemo as f, useRef as p, useState as m } from "react";
6
+ import { AutoComplete as h, Button as g, DatePicker as _, Filter as v, FilterArea as y, FilterLine as b, FormField as x, Input as S, Layout as C, Modal as w, PageHeader as T, Section as E, SectionGroup as D, Select as O, Tab as k, TabItem as A, Table as j, Typography as M } from "@mezzanine-ui/react";
7
+ import { resolveMembers as N } from "@rytass/bpm-core-client";
8
+ import { Fragment as P, jsx as F, jsxs as I } from "react/jsx-runtime";
9
+ import { CloseIcon as ee, EditIcon as te, PlusIcon as L, SaveIcon as ne } from "@mezzanine-ui/icons";
10
+ import re from "@mezzanine-ui/react/ContentHeader";
11
+ import { FormFieldLayout as R } from "@mezzanine-ui/core/form";
12
+ import { Background as ie, ConnectionMode as ae, Controls as oe, Handle as se, MiniMap as ce, Position as le, ReactFlow as ue, applyNodeChanges as de } from "@xyflow/react";
13
+ import * as fe from "dagre";
14
+ import { commitOrgUnitTreeDraft as pe, createManagerResolution as me, createMembership as he, createOrgUnit as ge, createPosition as _e, deleteManagerResolution as ve, deleteMembership as ye, deleteOrgUnit as be, readOrganizationDashboard as xe, updateManagerResolution as Se, updateMembership as Ce, updateOrgUnit as we, updatePosition as Te } from "@rytass/bpm-core-client/organization";
15
+ import '../AdminOrgsView.css';//#region src/lib/org-tree-draft.ts
16
+ function Ee(e) {
17
+ return new Map(e.map((e) => [e.id, e.parentId]));
18
+ }
19
+ function De({ orgUnitId: e, parentDraft: t, parentId: n }) {
20
+ let r = n === e ? e : n, i = ke({
21
+ orgUnitId: e,
22
+ parentDraft: t,
23
+ parentId: r
24
+ });
25
+ if (i) return {
26
+ message: i,
27
+ parentDraft: t,
28
+ status: "INVALID"
29
+ };
30
+ if ((t.get(e) ?? null) === r) return {
31
+ message: "父子關係沒有變更。",
32
+ parentDraft: t,
33
+ status: "UNCHANGED"
34
+ };
35
+ let a = new Map(t);
36
+ return a.set(e, r), {
37
+ message: r ? "已暫存新的上層組織。" : "已暫存為根節點。",
38
+ parentDraft: a,
39
+ status: "UPDATED"
40
+ };
41
+ }
42
+ function Oe({ orgUnits: e, parentDraft: t }) {
43
+ return e.map((e) => {
44
+ let n = t.get(e.id) ?? null;
45
+ return n === e.parentId ? null : {
46
+ orgUnitId: e.id,
47
+ parentId: n,
48
+ previousParentId: e.parentId
49
+ };
50
+ }).filter((e) => !!e);
51
+ }
52
+ function ke({ orgUnitId: e, parentDraft: t, parentId: n }) {
53
+ return t.has(e) ? n ? t.has(n) ? n === e ? "組織不可成為自己的上層。" : Ae({
54
+ orgUnitId: e,
55
+ parentDraft: t,
56
+ parentId: n
57
+ }) ? "不可搬移到自己的下層組織。" : null : "找不到新的上層組織。" : null : "找不到要搬移的組織節點。";
58
+ }
59
+ function Ae({ orgUnitId: e, parentDraft: t, parentId: n }) {
60
+ let r = /* @__PURE__ */ new Set(), i = n;
61
+ for (; i;) {
62
+ if (i === e || r.has(i)) return !0;
63
+ r.add(i), i = t.get(i) ?? null;
64
+ }
65
+ return !1;
66
+ }
67
+ var z = {
68
+ orgTreeEditor: "bpm_orgTreeEditor_TMOtD",
69
+ orgTreeSummary: "bpm_orgTreeSummary_vpcV8",
70
+ orgTreeChangeList: "bpm_orgTreeChangeList_EzmOv",
71
+ orgTreeCanvas: "bpm_orgTreeCanvas_MeD7y",
72
+ orgTreeNode: "bpm_orgTreeNode_bN4FS",
73
+ orgTreeNodeRoot: "bpm_orgTreeNodeRoot_Hr2KD",
74
+ orgTreeNodeSelected: "bpm_orgTreeNodeSelected_eRwtL",
75
+ orgTreeNodeChanged: "bpm_orgTreeNodeChanged_qPJg0",
76
+ orgTreeNodeDeleted: "bpm_orgTreeNodeDeleted_Ab0cI",
77
+ orgTreeNodeHeader: "bpm_orgTreeNodeHeader_LEXl-",
78
+ orgTreeNodeBadge: "bpm_orgTreeNodeBadge_zLc7t",
79
+ orgTreeNodeActions: "bpm_orgTreeNodeActions_cMldI"
80
+ }, B = "__org-tree-root__", V = 232, je = 118, Me = 232, Ne = 86, Pe = 320, Fe = {
81
+ COMPANY: "公司",
82
+ DEPARTMENT: "部門",
83
+ DIVISION: "事業群",
84
+ TEAM: "小組"
85
+ }, Ie = { orgUnit: Re }, Le = c(function({ onCreateChild: e, onCreateRoot: t, onEditOrgUnit: n, onSaveDraft: r, onStateChange: i, orgUnits: a }, o) {
86
+ let [s, c] = m(!1), [p, h] = m(null), [g, _] = m(null), [v, y] = m(() => Ee(a)), [b, x] = m([]), S = f(() => new Map(a.map((e) => [e.id, e])), [a]), C = f(() => Oe({
87
+ orgUnits: a,
88
+ parentDraft: v
89
+ }), [a, v]), w = f(() => ze({
90
+ isEditing: s,
91
+ onCreateChild: (n) => {
92
+ n ? e(n) : t();
93
+ },
94
+ onEditOrgUnit: (e) => {
95
+ let t = S.get(e);
96
+ t && n(t);
97
+ },
98
+ orgUnits: a,
99
+ orgUnitsById: S,
100
+ parentDraft: v,
101
+ selectedOrgUnitId: g
102
+ }), [
103
+ s,
104
+ e,
105
+ t,
106
+ n,
107
+ a,
108
+ S,
109
+ v,
110
+ g
111
+ ]), T = C.length > 0;
112
+ d(o, () => ({
113
+ cancelEditing: j,
114
+ saveDraft: N,
115
+ startEditing: A
116
+ })), u(() => {
117
+ i({
118
+ hasDraftChanges: T,
119
+ isEditing: s
120
+ });
121
+ }, [
122
+ T,
123
+ s,
124
+ i
125
+ ]), u(() => {
126
+ y(Ee(a)), _(null), h(null), c(!1);
127
+ }, [a]), u(() => {
128
+ x(w.nodes);
129
+ }, [w.nodes]);
130
+ let E = l((e, t) => {
131
+ y((n) => {
132
+ let r = De({
133
+ orgUnitId: e,
134
+ parentDraft: n,
135
+ parentId: t
136
+ });
137
+ return h(r.message), r.parentDraft;
138
+ });
139
+ }, []), D = l((e) => {
140
+ if (!s || !e.target || !e.source) return;
141
+ let t = e.source === B ? null : e.source;
142
+ if (e.target === B) {
143
+ h("根節點不能搬移到其他節點下。");
144
+ return;
145
+ }
146
+ E(e.target, t);
147
+ }, [E, s]), O = l((e) => {
148
+ s && x((t) => de(e, [...t]));
149
+ }, [s]), k = l((e, t, n) => {
150
+ if (!s || t.id === B) return;
151
+ let r = Ve(e, t.id) ?? H(t, n);
152
+ if (r === void 0) {
153
+ h("拖曳到目標父節點附近,或從父節點拉線到子節點。");
154
+ return;
155
+ }
156
+ E(t.id, r === B ? null : r);
157
+ }, [E, s]);
158
+ function A() {
159
+ c(!0), y(Ee(a)), h("已進入編輯模式,拖曳節點或拉線只會更新前端草稿。");
160
+ }
161
+ function j() {
162
+ c(!1), y(Ee(a)), h("已取消草稿變更。");
163
+ }
164
+ async function N() {
165
+ if (!r) {
166
+ h("批次儲存 API 尚未接上,草稿仍保留在前端。");
167
+ return;
168
+ }
169
+ await r(C), c(!1), h("組織樹草稿已儲存。");
170
+ }
171
+ return /* @__PURE__ */ I("div", {
172
+ className: z.orgTreeEditor,
173
+ children: [/* @__PURE__ */ I("div", {
174
+ className: z.orgTreeSummary,
175
+ children: [/* @__PURE__ */ F(M, {
176
+ color: "text-neutral",
177
+ variant: "caption",
178
+ children: p ?? (T ? `目前有 ${C.length} 筆父子關係草稿變更。` : "目前沒有草稿變更。")
179
+ }), T ? /* @__PURE__ */ F("ul", {
180
+ className: z.orgTreeChangeList,
181
+ children: C.map((e) => /* @__PURE__ */ I("li", { children: [
182
+ U(e.orgUnitId, S),
183
+ ":",
184
+ U(e.previousParentId, S),
185
+ " -> ",
186
+ U(e.parentId, S)
187
+ ] }, e.orgUnitId))
188
+ }) : null]
189
+ }), /* @__PURE__ */ F("div", {
190
+ className: z.orgTreeCanvas,
191
+ children: /* @__PURE__ */ I(ue, {
192
+ connectionMode: ae.Strict,
193
+ edges: [...w.edges],
194
+ fitView: !0,
195
+ fitViewOptions: { padding: .18 },
196
+ isValidConnection: (e) => Ke({
197
+ source: e.source,
198
+ target: e.target
199
+ }, v),
200
+ maxZoom: 1.4,
201
+ minZoom: .25,
202
+ nodeTypes: Ie,
203
+ nodes: [...b],
204
+ nodesConnectable: s,
205
+ nodesDraggable: s,
206
+ onConnect: D,
207
+ onNodeClick: (e, t) => {
208
+ _(t.id === B ? null : t.id);
209
+ },
210
+ onNodeDoubleClick: (e, t) => {
211
+ if (t.id !== B) {
212
+ let e = S.get(t.id);
213
+ e && n(e);
214
+ }
215
+ },
216
+ onNodeDragStop: k,
217
+ onNodesChange: O,
218
+ onPaneClick: () => _(null),
219
+ panOnDrag: !0,
220
+ proOptions: { hideAttribution: !0 },
221
+ children: [
222
+ /* @__PURE__ */ F(ie, {}),
223
+ /* @__PURE__ */ F(oe, {}),
224
+ /* @__PURE__ */ F(ce, {
225
+ pannable: !0,
226
+ zoomable: !0
227
+ })
228
+ ]
229
+ })
230
+ })]
231
+ });
232
+ });
233
+ function Re({ data: e, selected: t }) {
234
+ return /* @__PURE__ */ I("div", {
235
+ className: [
236
+ z.orgTreeNode,
237
+ e.isSyntheticRoot ? z.orgTreeNodeRoot : "",
238
+ e.changed ? z.orgTreeNodeChanged : "",
239
+ e.deleted ? z.orgTreeNodeDeleted : "",
240
+ t ? z.orgTreeNodeSelected : ""
241
+ ].filter(Boolean).join(" "),
242
+ children: [
243
+ e.isSyntheticRoot ? null : /* @__PURE__ */ F(se, {
244
+ id: "target",
245
+ isConnectable: e.isEditing,
246
+ position: le.Top,
247
+ type: "target"
248
+ }),
249
+ /* @__PURE__ */ F(se, {
250
+ id: "source",
251
+ isConnectable: e.isEditing,
252
+ position: le.Bottom,
253
+ type: "source"
254
+ }),
255
+ /* @__PURE__ */ I("div", {
256
+ className: z.orgTreeNodeHeader,
257
+ children: [/* @__PURE__ */ F(M, {
258
+ component: "span",
259
+ ellipsis: !0,
260
+ title: e.name,
261
+ variant: "label-primary",
262
+ children: e.name
263
+ }), e.changed ? /* @__PURE__ */ F("span", {
264
+ className: z.orgTreeNodeBadge,
265
+ children: "草稿"
266
+ }) : null]
267
+ }),
268
+ /* @__PURE__ */ F(M, {
269
+ color: "text-neutral",
270
+ component: "span",
271
+ ellipsis: !0,
272
+ title: e.code,
273
+ variant: "caption",
274
+ children: e.isSyntheticRoot ? "根節點容器" : `${e.typeLabel} · ${e.code}`
275
+ }),
276
+ e.isSyntheticRoot ? null : /* @__PURE__ */ I(M, {
277
+ color: "text-neutral",
278
+ component: "span",
279
+ ellipsis: !0,
280
+ title: e.parentLabel,
281
+ variant: "caption",
282
+ children: ["上層:", e.parentLabel]
283
+ }),
284
+ /* @__PURE__ */ F("div", {
285
+ className: z.orgTreeNodeActions,
286
+ children: e.isSyntheticRoot ? /* @__PURE__ */ F(g, {
287
+ icon: L,
288
+ iconType: "leading",
289
+ onClick: () => e.onCreateChild(null),
290
+ size: "sub",
291
+ variant: "base-secondary",
292
+ children: "新增根節點"
293
+ }) : /* @__PURE__ */ I(P, { children: [/* @__PURE__ */ F(g, {
294
+ icon: te,
295
+ iconType: "leading",
296
+ onClick: () => {
297
+ e.orgUnitId && e.onEdit(e.orgUnitId);
298
+ },
299
+ size: "sub",
300
+ variant: "base-secondary",
301
+ children: "編輯"
302
+ }), /* @__PURE__ */ F(g, {
303
+ icon: L,
304
+ iconType: "leading",
305
+ onClick: () => e.onCreateChild(e.orgUnitId),
306
+ size: "sub",
307
+ variant: "base-secondary",
308
+ children: "新增子節點"
309
+ })] })
310
+ })
311
+ ]
312
+ });
313
+ }
314
+ function ze({ isEditing: e, onCreateChild: t, onEditOrgUnit: n, orgUnits: r, orgUnitsById: i, parentDraft: a, selectedOrgUnitId: o }) {
315
+ let s = new fe.graphlib.Graph();
316
+ s.setDefaultEdgeLabel(() => ({})), s.setGraph({
317
+ marginx: 36,
318
+ marginy: 36,
319
+ nodesep: 44,
320
+ rankdir: "TB"
321
+ }), s.setNode(B, {
322
+ height: Ne,
323
+ width: Me
324
+ }), r.forEach((e) => {
325
+ s.setNode(e.id, {
326
+ height: je,
327
+ width: V
328
+ });
329
+ }), r.forEach((e) => {
330
+ let t = a.get(e.id) ?? null;
331
+ s.setEdge(t ?? B, e.id);
332
+ }), fe.layout(s);
333
+ let c = Be({
334
+ data: {
335
+ changed: !1,
336
+ code: B,
337
+ deleted: !1,
338
+ isEditing: e,
339
+ isSyntheticRoot: !0,
340
+ name: "組織根節點",
341
+ onCreateChild: t,
342
+ onEdit: n,
343
+ orgUnitId: null,
344
+ parentLabel: "",
345
+ path: "",
346
+ typeLabel: ""
347
+ },
348
+ graph: s,
349
+ height: Ne,
350
+ id: B,
351
+ selected: o === null,
352
+ width: Me
353
+ }), l = r.map((r) => {
354
+ let c = a.get(r.id) ?? null, l = U(c, i);
355
+ return Be({
356
+ data: {
357
+ changed: c !== r.parentId,
358
+ code: r.code,
359
+ deleted: !!r.deletedAt,
360
+ isEditing: e,
361
+ isSyntheticRoot: !1,
362
+ name: r.name,
363
+ onCreateChild: t,
364
+ onEdit: n,
365
+ orgUnitId: r.id,
366
+ parentLabel: l,
367
+ path: r.path,
368
+ typeLabel: qe(r.type)
369
+ },
370
+ graph: s,
371
+ height: je,
372
+ id: r.id,
373
+ selected: o === r.id,
374
+ width: V
375
+ });
376
+ });
377
+ return {
378
+ edges: r.map((t) => {
379
+ let n = a.get(t.id) ?? null, r = n !== t.parentId;
380
+ return {
381
+ animated: e && r,
382
+ data: {},
383
+ id: `org-tree-edge-${n ?? "root"}-${t.id}`,
384
+ source: n ?? B,
385
+ sourceHandle: "source",
386
+ style: r ? {
387
+ stroke: "var(--mzn-color-primary, #0057ff)",
388
+ strokeWidth: 2
389
+ } : void 0,
390
+ target: t.id,
391
+ targetHandle: "target",
392
+ type: "smoothstep"
393
+ };
394
+ }),
395
+ nodes: [c, ...l]
396
+ };
397
+ }
398
+ function Be({ data: e, graph: t, height: n, id: r, selected: i, width: a }) {
399
+ let o = t.node(r);
400
+ return {
401
+ data: e,
402
+ height: n,
403
+ id: r,
404
+ initialHeight: n,
405
+ initialWidth: a,
406
+ position: o ? {
407
+ x: o.x - a / 2,
408
+ y: o.y - n / 2
409
+ } : {
410
+ x: 0,
411
+ y: 0
412
+ },
413
+ selected: i,
414
+ sourcePosition: le.Bottom,
415
+ targetPosition: le.Top,
416
+ type: "orgUnit",
417
+ width: a
418
+ };
419
+ }
420
+ function H(e, t) {
421
+ let n = We(e);
422
+ return t.filter((t) => t.id !== e.id).map((e) => ({
423
+ distance: Ge(n, We(e)),
424
+ id: e.id
425
+ })).filter((e) => e.distance <= Pe).sort((e, t) => e.distance - t.distance)[0]?.id;
426
+ }
427
+ function Ve(e, t) {
428
+ let n = He(e);
429
+ if (n) return Array.from(document.querySelectorAll(".react-flow__node[data-id]")).map((e) => {
430
+ let r = e.dataset.id;
431
+ if (!r || r === t) return null;
432
+ let i = e.getBoundingClientRect();
433
+ return {
434
+ distance: Ge(n, {
435
+ x: i.left + i.width / 2,
436
+ y: i.top + i.height / 2
437
+ }),
438
+ id: r
439
+ };
440
+ }).filter((e) => !!e).filter((e) => e.distance <= Pe).sort((e, t) => e.distance - t.distance)[0]?.id;
441
+ }
442
+ function He(e) {
443
+ return Ue(e) ? {
444
+ x: e.clientX,
445
+ y: e.clientY
446
+ } : null;
447
+ }
448
+ function Ue(e) {
449
+ return typeof e == "object" && !!e && "clientX" in e && "clientY" in e && typeof e.clientX == "number" && typeof e.clientY == "number";
450
+ }
451
+ function We(e) {
452
+ return {
453
+ x: e.position.x + (e.width ?? V) / 2,
454
+ y: e.position.y + (e.height ?? je) / 2
455
+ };
456
+ }
457
+ function Ge(e, t) {
458
+ return Math.hypot(e.x - t.x, e.y - t.y);
459
+ }
460
+ function Ke(e, t) {
461
+ return !e.source || !e.target || e.target === B ? !1 : ke({
462
+ orgUnitId: e.target,
463
+ parentDraft: t,
464
+ parentId: e.source === B ? null : e.source
465
+ }) === null;
466
+ }
467
+ function U(e, t) {
468
+ if (!e) return "根節點";
469
+ let n = t.get(e);
470
+ return n ? `${n.name} · ${n.code}` : "未知組織";
471
+ }
472
+ function qe(e) {
473
+ return Fe[e.toUpperCase()] ?? "未知類型";
474
+ }
475
+ var W = {
476
+ tableIntroActions: "bpm_tableIntroActions_WO4XU",
477
+ modalFields: "bpm_modalFields_juyv6",
478
+ tableIntro: "bpm_tableIntro_u3hcm",
479
+ tableFrame: "bpm_tableFrame_IdbmB",
480
+ orgFilterArea: "bpm_orgFilterArea_Xjbbp",
481
+ membershipFilterArea: "bpm_membershipFilterArea_zob-Y",
482
+ scopeLabel: "bpm_scopeLabel_TLHMC"
483
+ }, Je = {
484
+ hasDraftChanges: !1,
485
+ isEditing: !1
486
+ }, G = [
487
+ {
488
+ id: "COMPANY",
489
+ name: "公司"
490
+ },
491
+ {
492
+ id: "DIVISION",
493
+ name: "事業群"
494
+ },
495
+ {
496
+ id: "DEPARTMENT",
497
+ name: "部門"
498
+ },
499
+ {
500
+ id: "TEAM",
501
+ name: "小組"
502
+ }
503
+ ], Ye = {
504
+ id: "ALL",
505
+ name: "全部類型"
506
+ }, Xe = [Ye, ...G], K = [
507
+ {
508
+ id: "MEMBER",
509
+ name: "指定會員"
510
+ },
511
+ {
512
+ id: "ORG_UNIT",
513
+ name: "指定組織"
514
+ },
515
+ {
516
+ id: "POSITION",
517
+ name: "指定職位"
518
+ }
519
+ ], Ze = {
520
+ id: "ALL",
521
+ name: "全部範圍"
522
+ }, Qe = [Ze, ...K], $e = {
523
+ activeOnly: !1,
524
+ id: "ALL",
525
+ name: "全部狀態"
526
+ }, et = [$e, {
527
+ activeOnly: !0,
528
+ id: "ACTIVE",
529
+ name: "目前有效"
530
+ }], q = [{
531
+ id: "true",
532
+ name: "主要歸屬",
533
+ value: !0
534
+ }, {
535
+ id: "false",
536
+ name: "一般歸屬",
537
+ value: !1
538
+ }], tt = [
539
+ 10,
540
+ 20,
541
+ 50
542
+ ], nt = 1368, rt = 908, it = 1292, at = 1124;
543
+ function J({ activeHref: t = "/admin/orgs" } = {}) {
544
+ let [n, r] = m("ORG_UNITS"), [i, a] = m(null), [o, s] = m(null), [c, d] = m(null), [p, h] = m(!0), [g, _] = m(null), [v, y] = m($e), [b, x] = m(1), [S, O] = m(10), [j, P] = m(Ze), [ee, te] = m(0), [L, ne] = m([]), [R, ie] = m(null), [ae, oe] = m(null), [se, ce] = m(null), [le, ue] = m(1), [de, fe] = m(10), [Ee, De] = m(null), [Oe, ke] = m(0), [Ae, z] = m(null), [B, V] = m(1), [je, Me] = m(10), [Ne, Pe] = m(""), [Fe, Ie] = m(0), [Le, Re] = m(Ye), [ze, Be] = m("TABLE"), [H, Ve] = m([]), [He, Ue] = m([]), [We, Ge] = m([]), [Ke, U] = m(null), [qe, W] = m(1), [Je, G] = m(10), [Xe, K] = m(""), [Qe, et] = m(0), [q, tt] = m([]), [nt, rt] = m([]), [it, at] = m([]), [J, Y] = m(!1);
545
+ u(() => {
546
+ i && s(i);
547
+ }, [i]);
548
+ let ut = i ?? o, dt = l(async () => {
549
+ h(!0), d(null);
550
+ try {
551
+ let e = await xe({
552
+ managerActiveOnly: v.activeOnly,
553
+ managerPage: b,
554
+ managerPageSize: S,
555
+ managerScopeType: j.id === "ALL" ? null : j.id,
556
+ membershipActiveOnly: R?.activeOnly ?? !1,
557
+ membershipOrgUnitId: se?.id ?? null,
558
+ membershipPage: le,
559
+ membershipPageSize: de,
560
+ membershipPositionId: Ee?.id ?? null,
561
+ orgUnitPage: B,
562
+ orgUnitPageSize: je,
563
+ orgUnitSearchText: Ne,
564
+ orgUnitType: Le.id === "ALL" ? null : Le.id,
565
+ positionPage: qe,
566
+ positionPageSize: Je,
567
+ positionSearchText: Xe
568
+ });
569
+ ne(await N(_t(e.memberships, e.managerResolutions))), Ve(e.orgUnits), Ie(e.orgUnitCount), Ue(e.filteredOrgUnits), tt(e.positions), et(e.positionCount), Ge(e.filteredPositions), ke(e.membershipCount), at(e.filteredMemberships), te(e.managerResolutionCount), rt(e.filteredManagerResolutions);
570
+ } catch (e) {
571
+ d(zt(e));
572
+ } finally {
573
+ h(!1);
574
+ }
575
+ }, [
576
+ v,
577
+ b,
578
+ S,
579
+ j,
580
+ R,
581
+ se,
582
+ le,
583
+ de,
584
+ Ee,
585
+ B,
586
+ je,
587
+ Ne,
588
+ Le,
589
+ qe,
590
+ Je,
591
+ Xe
592
+ ]);
593
+ u(() => {
594
+ dt();
595
+ }, [dt]);
596
+ let X = f(() => new Map(H.map((e) => [e.id, e])), [H]), Z = f(() => new Map(q.map((e) => [e.id, e])), [q]), Q = f(() => new Map(L.map((e) => [e.memberId, e])), [L]), gt = f(() => He.map((e) => ({
597
+ ...e,
598
+ key: e.id,
599
+ parentName: e.parentId ? bt(X.get(e.parentId)) : "根節點",
600
+ typeLabel: xt(e.type)
601
+ })), [He, X]), wt = f(() => We.map((e) => ({
602
+ ...e,
603
+ key: e.id
604
+ })), [We]), Tt = f(() => it.map((e) => ({
605
+ ...e,
606
+ key: e.id,
607
+ memberName: yt(Q.get(e.memberId)),
608
+ orgUnitName: bt(X.get(e.orgUnitId)),
609
+ positionName: e.positionId ? St(Z.get(e.positionId)) : "未指定"
610
+ })), [
611
+ Q,
612
+ it,
613
+ X,
614
+ Z
615
+ ]), Et = f(() => nt.map((e) => ({
616
+ ...e,
617
+ key: e.id,
618
+ managerName: yt(Q.get(e.managerMemberId)),
619
+ scopeLabel: vt(e, {
620
+ membersById: Q,
621
+ orgUnitsById: X,
622
+ positionsById: Z
623
+ })
624
+ })), [
625
+ nt,
626
+ Q,
627
+ X,
628
+ Z
629
+ ]), Dt = f(() => ({
630
+ render: (e) => [{
631
+ name: "編輯",
632
+ onClick: () => z({
633
+ record: e,
634
+ type: "EDIT"
635
+ })
636
+ }, {
637
+ name: "停用",
638
+ onClick: () => a({
639
+ confirmText: "停用組織",
640
+ description: `停用「${e.name}」後,這個組織節點將不再出現在可用組織清單中。`,
641
+ id: e.id,
642
+ title: "停用組織節點",
643
+ type: "ORG_UNIT"
644
+ }),
645
+ variant: "destructive-secondary"
646
+ }],
647
+ variant: "base-secondary",
648
+ width: 128
649
+ }), []), Ot = f(() => ({
650
+ render: (e) => [{
651
+ name: "編輯",
652
+ onClick: () => U({
653
+ record: e,
654
+ type: "EDIT"
655
+ })
656
+ }],
657
+ variant: "base-secondary",
658
+ width: 88
659
+ }), []), kt = f(() => ({
660
+ render: (e) => [{
661
+ name: "編輯",
662
+ onClick: () => oe({
663
+ record: e,
664
+ type: "EDIT"
665
+ })
666
+ }, {
667
+ name: "刪除",
668
+ onClick: () => a({
669
+ confirmText: "刪除歸屬",
670
+ description: `刪除「${e.memberName}」在「${e.orgUnitName}」的會員歸屬。`,
671
+ id: e.id,
672
+ title: "刪除會員歸屬",
673
+ type: "MEMBERSHIP"
674
+ }),
675
+ variant: "destructive-secondary"
676
+ }],
677
+ variant: "base-secondary",
678
+ width: 128
679
+ }), []), At = f(() => ({
680
+ render: (e) => [{
681
+ name: "編輯",
682
+ onClick: () => _({
683
+ record: e,
684
+ type: "EDIT"
685
+ })
686
+ }, {
687
+ name: "刪除",
688
+ onClick: () => a({
689
+ confirmText: "刪除主管規則",
690
+ description: `刪除「${e.scopeLabel}」指派給「${e.managerName}」的主管解析規則。`,
691
+ id: e.id,
692
+ title: "刪除主管解析規則",
693
+ type: "MANAGER_RESOLUTION"
694
+ }),
695
+ variant: "destructive-secondary"
696
+ }],
697
+ variant: "base-secondary",
698
+ width: 128
699
+ }), []);
700
+ function jt(e) {
701
+ V(1), Pe(e);
702
+ }
703
+ function Mt(e) {
704
+ V(1), Re(e);
705
+ }
706
+ function Nt(e) {
707
+ W(1), K(e);
708
+ }
709
+ function $(e) {
710
+ ue(1), ie(e);
711
+ }
712
+ function Pt(e) {
713
+ ue(1), ce(e);
714
+ }
715
+ function It(e) {
716
+ ue(1), De(e);
717
+ }
718
+ function Lt(e) {
719
+ x(1), y(e);
720
+ }
721
+ function Rt(e) {
722
+ x(1), P(e);
723
+ }
724
+ function Bt() {
725
+ J || a(null);
726
+ }
727
+ async function Vt() {
728
+ i && await Ut(async () => {
729
+ i.type === "ORG_UNIT" && await be(i.id), i.type === "MEMBERSHIP" && await ye(i.id), i.type === "MANAGER_RESOLUTION" && await ve(i.id), a(null);
730
+ });
731
+ }
732
+ async function Ht(e) {
733
+ Y(!0), d(null);
734
+ try {
735
+ await pe({ moves: e.map((e) => ({
736
+ baseUpdatedAt: X.get(e.orgUnitId)?.updatedAt ?? "",
737
+ id: e.orgUnitId,
738
+ parentId: e.parentId
739
+ })) }), await dt();
740
+ } catch (e) {
741
+ throw d(zt(e)), e;
742
+ } finally {
743
+ Y(!1);
744
+ }
745
+ }
746
+ async function Ut(e) {
747
+ Y(!0), d(null);
748
+ try {
749
+ await e(), await dt();
750
+ } catch (e) {
751
+ d(zt(e));
752
+ } finally {
753
+ Y(!1);
754
+ }
755
+ }
756
+ return /* @__PURE__ */ I(C, { children: [/* @__PURE__ */ F(e, { activeHref: t }), /* @__PURE__ */ I(C.Main, { children: [
757
+ /* @__PURE__ */ F(T, { children: /* @__PURE__ */ F(re, {
758
+ description: "維護組織樹、職位、會員歸屬與簽核主管解析規則。",
759
+ title: "組織管理"
760
+ }) }),
761
+ /* @__PURE__ */ F(D, { children: /* @__PURE__ */ I(E, {
762
+ tab: /* @__PURE__ */ I(k, {
763
+ activeKey: n,
764
+ onChange: (e) => r(Ct(e)),
765
+ children: [
766
+ /* @__PURE__ */ F(A, { children: "組織樹" }, "ORG_UNITS"),
767
+ /* @__PURE__ */ F(A, { children: "職位" }, "POSITIONS"),
768
+ /* @__PURE__ */ F(A, { children: "會員歸屬" }, "MEMBERSHIPS"),
769
+ /* @__PURE__ */ F(A, { children: "簽核主管" }, "MANAGERS")
770
+ ]
771
+ }),
772
+ children: [
773
+ c ? /* @__PURE__ */ F(M, {
774
+ color: "text-error",
775
+ variant: "body",
776
+ children: c
777
+ }) : null,
778
+ n === "ORG_UNITS" ? /* @__PURE__ */ F(ot, {
779
+ actions: Dt,
780
+ loading: p,
781
+ onCreate: () => z({
782
+ parentId: null,
783
+ record: null,
784
+ type: "CREATE"
785
+ }),
786
+ onCreateChild: (e) => z({
787
+ parentId: e,
788
+ record: null,
789
+ type: "CREATE"
790
+ }),
791
+ onEditOrgUnit: (e) => z({
792
+ record: e,
793
+ type: "EDIT"
794
+ }),
795
+ onPageChange: V,
796
+ onSaveDraft: Ht,
797
+ onPageSizeChange: (e) => {
798
+ V(1), Me(e);
799
+ },
800
+ onSearchTextChange: jt,
801
+ onTypeFilterChange: Mt,
802
+ orgUnits: H,
803
+ page: B,
804
+ pageSize: je,
805
+ rows: gt,
806
+ searchText: Ne,
807
+ saving: J,
808
+ total: Fe,
809
+ typeFilter: Le,
810
+ viewMode: ze,
811
+ onViewModeChange: Be
812
+ }) : null,
813
+ n === "POSITIONS" ? /* @__PURE__ */ F(st, {
814
+ actions: Ot,
815
+ loading: p,
816
+ onCreate: () => U({
817
+ record: null,
818
+ type: "CREATE"
819
+ }),
820
+ onPageChange: W,
821
+ onPageSizeChange: (e) => {
822
+ W(1), G(e);
823
+ },
824
+ onSearchTextChange: Nt,
825
+ page: qe,
826
+ pageSize: Je,
827
+ rows: wt,
828
+ searchText: Xe,
829
+ total: Qe
830
+ }) : null,
831
+ n === "MEMBERSHIPS" ? /* @__PURE__ */ F(ct, {
832
+ actions: kt,
833
+ loading: p,
834
+ onCreate: () => oe({
835
+ record: null,
836
+ type: "CREATE"
837
+ }),
838
+ onActiveFilterChange: $,
839
+ onOrgUnitFilterChange: Pt,
840
+ onPageChange: ue,
841
+ onPageSizeChange: (e) => {
842
+ ue(1), fe(e);
843
+ },
844
+ onPositionFilterChange: It,
845
+ orgUnitFilter: se,
846
+ orgUnits: H,
847
+ page: le,
848
+ pageSize: de,
849
+ positionFilter: Ee,
850
+ positions: q,
851
+ rows: Tt,
852
+ statusFilter: R,
853
+ total: Oe
854
+ }) : null,
855
+ n === "MANAGERS" ? /* @__PURE__ */ F(lt, {
856
+ actions: At,
857
+ loading: p,
858
+ onCreate: () => _({
859
+ record: null,
860
+ type: "CREATE"
861
+ }),
862
+ onActiveFilterChange: Lt,
863
+ onPageChange: x,
864
+ onPageSizeChange: (e) => {
865
+ x(1), O(e);
866
+ },
867
+ onScopeTypeFilterChange: Rt,
868
+ page: b,
869
+ pageSize: S,
870
+ rows: Et,
871
+ scopeTypeFilter: j,
872
+ statusFilter: v,
873
+ total: ee
874
+ }) : null
875
+ ]
876
+ }) }),
877
+ /* @__PURE__ */ F(ft, {
878
+ modal: Ae,
879
+ onClose: () => z(null),
880
+ onSubmit: (e) => Ut(async () => {
881
+ Ae?.type === "EDIT" && Ae.record ? await we({
882
+ ...e,
883
+ id: Ae.record.id,
884
+ metadataJson: null
885
+ }) : await ge({
886
+ code: e.code ?? "",
887
+ metadataJson: "{}",
888
+ name: e.name ?? "",
889
+ parentId: e.parentId,
890
+ type: e.type ?? "DEPARTMENT"
891
+ }), z(null);
892
+ }),
893
+ orgUnits: H,
894
+ saving: J
895
+ }),
896
+ /* @__PURE__ */ F(pt, {
897
+ modal: Ke,
898
+ onClose: () => U(null),
899
+ onSubmit: (e) => Ut(async () => {
900
+ Ke?.type === "EDIT" && Ke.record ? await Te({
901
+ ...e,
902
+ id: Ke.record.id,
903
+ metadataJson: null
904
+ }) : await _e({
905
+ code: e.code ?? "",
906
+ level: e.level ?? 0,
907
+ metadataJson: "{}",
908
+ name: e.name ?? ""
909
+ }), U(null);
910
+ }),
911
+ saving: J
912
+ }),
913
+ /* @__PURE__ */ F(mt, {
914
+ membersById: Q,
915
+ modal: ae,
916
+ onClose: () => oe(null),
917
+ onSubmit: (e) => Ut(async () => {
918
+ ae?.type === "EDIT" && ae.record ? await Ce({
919
+ ...e,
920
+ id: ae.record.id
921
+ }) : await he({
922
+ effectiveFrom: e.effectiveFrom ?? Ft(),
923
+ effectiveTo: e.effectiveTo,
924
+ isPrimary: e.isPrimary ?? !1,
925
+ memberId: e.memberId ?? "",
926
+ orgUnitId: e.orgUnitId ?? "",
927
+ positionId: e.positionId
928
+ }), oe(null);
929
+ }),
930
+ orgUnits: H,
931
+ positions: q,
932
+ saving: J
933
+ }),
934
+ /* @__PURE__ */ F(ht, {
935
+ membersById: Q,
936
+ modal: g,
937
+ onClose: () => _(null),
938
+ onSubmit: (e) => Ut(async () => {
939
+ g?.type === "EDIT" && g.record ? await Se({
940
+ ...e,
941
+ id: g.record.id
942
+ }) : await me({
943
+ effectiveFrom: e.effectiveFrom ?? Ft(),
944
+ effectiveTo: e.effectiveTo,
945
+ managerMemberId: e.managerMemberId ?? "",
946
+ priority: e.priority ?? 0,
947
+ scopeId: e.scopeId ?? "",
948
+ scopeType: e.scopeType ?? "MEMBER"
949
+ }), _(null);
950
+ }),
951
+ orgUnits: H,
952
+ positions: q,
953
+ saving: J
954
+ }),
955
+ /* @__PURE__ */ F(w, {
956
+ cancelText: "取消",
957
+ confirmButtonProps: { variant: "destructive-primary" },
958
+ confirmText: ut?.confirmText ?? "",
959
+ loading: J,
960
+ modalStatusType: "error",
961
+ modalType: "standard",
962
+ onCancel: Bt,
963
+ onClose: Bt,
964
+ onConfirm: () => void Vt(),
965
+ open: !!i,
966
+ showModalFooter: !0,
967
+ showModalHeader: !0,
968
+ size: "regular",
969
+ supportingText: "此操作會立即套用,請確認後再繼續。",
970
+ title: ut?.title ?? "",
971
+ children: /* @__PURE__ */ F(M, {
972
+ color: "text-neutral",
973
+ variant: "body",
974
+ children: ut?.description ?? ""
975
+ })
976
+ })
977
+ ] })] });
978
+ }
979
+ function ot({ actions: e, loading: t, onCreate: n, onCreateChild: r, onEditOrgUnit: i, onPageChange: a, onSaveDraft: o, onPageSizeChange: s, onSearchTextChange: c, onTypeFilterChange: l, onViewModeChange: d, orgUnits: h, page: _, pageSize: C, rows: w, searchText: T, saving: E, total: D, typeFilter: k, viewMode: A }) {
980
+ let M = p(null), [N, te] = m(Je), L = A === "TABLE" ? "FLOW" : "TABLE", ne = A === "TABLE" ? "切換樹狀圖" : "切換表格", re = A === "FLOW", ie = ut({
981
+ isTreeMode: re,
982
+ isTreeEditing: N.isEditing
983
+ }), ae = dt({
984
+ isTreeMode: re,
985
+ isTreeEditing: N.isEditing
986
+ }), oe = X({
987
+ hasDraftChanges: N.hasDraftChanges,
988
+ isTreeEditing: N.isEditing,
989
+ isTreeMode: re,
990
+ loading: t,
991
+ saving: E
992
+ }), se = f(() => [
993
+ {
994
+ dataIndex: "code",
995
+ key: "code",
996
+ title: "代碼",
997
+ width: 180
998
+ },
999
+ {
1000
+ dataIndex: "name",
1001
+ key: "name",
1002
+ title: "名稱",
1003
+ width: 240
1004
+ },
1005
+ {
1006
+ dataIndex: "typeLabel",
1007
+ key: "typeLabel",
1008
+ title: "類型",
1009
+ width: 120
1010
+ },
1011
+ {
1012
+ dataIndex: "parentName",
1013
+ key: "parentName",
1014
+ title: "上層",
1015
+ width: 280
1016
+ },
1017
+ {
1018
+ dataIndex: "path",
1019
+ key: "path",
1020
+ title: "Path",
1021
+ width: 420
1022
+ }
1023
+ ], []);
1024
+ return u(() => {
1025
+ A === "TABLE" && te(Je);
1026
+ }, [A]), /* @__PURE__ */ I(P, { children: [/* @__PURE__ */ F(Z, {
1027
+ actionDisabled: oe,
1028
+ actionIcon: ae,
1029
+ actionLabel: ie,
1030
+ actions: /* @__PURE__ */ I(P, { children: [/* @__PURE__ */ F(g, {
1031
+ onClick: () => d(L),
1032
+ variant: "base-secondary",
1033
+ children: ne
1034
+ }), re && N.isEditing ? /* @__PURE__ */ F(g, {
1035
+ disabled: E,
1036
+ icon: ee,
1037
+ iconType: "leading",
1038
+ onClick: () => M.current?.cancelEditing(),
1039
+ variant: "base-secondary",
1040
+ children: "取消"
1041
+ }) : null] }),
1042
+ description: "組織節點使用 ltree path 維護階層,搬移節點會同步更新子節點 path。",
1043
+ onCreate: () => {
1044
+ if (!re) {
1045
+ n();
1046
+ return;
1047
+ }
1048
+ if (N.isEditing) {
1049
+ M.current?.saveDraft();
1050
+ return;
1051
+ }
1052
+ M.current?.startEditing();
1053
+ },
1054
+ title: "組織樹"
1055
+ }), A === "TABLE" ? /* @__PURE__ */ I(P, { children: [/* @__PURE__ */ F(y, {
1056
+ className: W.orgFilterArea,
1057
+ size: "sub",
1058
+ children: /* @__PURE__ */ I(b, { children: [/* @__PURE__ */ F(v, {
1059
+ span: 3,
1060
+ children: /* @__PURE__ */ F(x, {
1061
+ fullWidth: !0,
1062
+ layout: R.VERTICAL,
1063
+ name: "orgUnitSearchText",
1064
+ children: /* @__PURE__ */ F(S, {
1065
+ fullWidth: !0,
1066
+ onChange: (e) => c(e.target.value),
1067
+ placeholder: "搜尋組織名稱或代碼",
1068
+ size: "sub",
1069
+ value: T,
1070
+ variant: "base"
1071
+ })
1072
+ })
1073
+ }), /* @__PURE__ */ F(v, {
1074
+ span: 2,
1075
+ children: /* @__PURE__ */ F(x, {
1076
+ fullWidth: !0,
1077
+ layout: R.VERTICAL,
1078
+ name: "orgUnitTypeFilter",
1079
+ children: /* @__PURE__ */ F(O, {
1080
+ clearable: !1,
1081
+ fullWidth: !0,
1082
+ onChange: (e) => l(Tt(e)),
1083
+ options: [...Xe],
1084
+ placeholder: "類型",
1085
+ size: "sub",
1086
+ value: k
1087
+ })
1088
+ })
1089
+ })] })
1090
+ }), /* @__PURE__ */ F("div", {
1091
+ className: W.tableFrame,
1092
+ children: /* @__PURE__ */ F(j, {
1093
+ actions: e,
1094
+ columns: se,
1095
+ dataSource: [...w],
1096
+ fullWidth: !0,
1097
+ loading: t,
1098
+ pagination: Y({
1099
+ onPageChange: a,
1100
+ onPageSizeChange: s,
1101
+ page: _,
1102
+ pageSize: C,
1103
+ total: D
1104
+ }),
1105
+ style: { minWidth: nt }
1106
+ })
1107
+ })] }) : /* @__PURE__ */ F(Le, {
1108
+ ref: M,
1109
+ onCreateChild: r,
1110
+ onCreateRoot: n,
1111
+ onEditOrgUnit: i,
1112
+ onSaveDraft: o,
1113
+ onStateChange: te,
1114
+ orgUnits: h,
1115
+ saving: E
1116
+ })] });
1117
+ }
1118
+ function st({ actions: e, loading: t, onCreate: n, onPageChange: r, onPageSizeChange: i, onSearchTextChange: a, page: o, pageSize: s, rows: c, searchText: l, total: u }) {
1119
+ let d = f(() => [
1120
+ {
1121
+ dataIndex: "code",
1122
+ key: "code",
1123
+ title: "代碼",
1124
+ width: 180
1125
+ },
1126
+ {
1127
+ dataIndex: "name",
1128
+ key: "name",
1129
+ title: "名稱",
1130
+ width: 280
1131
+ },
1132
+ {
1133
+ dataIndex: "level",
1134
+ key: "level",
1135
+ title: "職等",
1136
+ width: 96
1137
+ },
1138
+ {
1139
+ dataIndex: "updatedAt",
1140
+ key: "updatedAt",
1141
+ title: "更新時間",
1142
+ width: 220
1143
+ }
1144
+ ], []);
1145
+ return /* @__PURE__ */ I(P, { children: [
1146
+ /* @__PURE__ */ F(Z, {
1147
+ actionLabel: "新增職位",
1148
+ description: "職位提供會員歸屬與主管解析規則使用。",
1149
+ onCreate: n,
1150
+ title: "職位"
1151
+ }),
1152
+ /* @__PURE__ */ F(y, {
1153
+ className: W.orgFilterArea,
1154
+ size: "sub",
1155
+ children: /* @__PURE__ */ F(b, { children: /* @__PURE__ */ F(v, {
1156
+ span: 3,
1157
+ children: /* @__PURE__ */ F(x, {
1158
+ fullWidth: !0,
1159
+ layout: R.VERTICAL,
1160
+ name: "positionSearchText",
1161
+ children: /* @__PURE__ */ F(S, {
1162
+ fullWidth: !0,
1163
+ onChange: (e) => a(e.target.value),
1164
+ placeholder: "搜尋職位名稱或代碼",
1165
+ size: "sub",
1166
+ value: l,
1167
+ variant: "base"
1168
+ })
1169
+ })
1170
+ }) })
1171
+ }),
1172
+ /* @__PURE__ */ F("div", {
1173
+ className: W.tableFrame,
1174
+ children: /* @__PURE__ */ F(j, {
1175
+ actions: e,
1176
+ columns: d,
1177
+ dataSource: [...c],
1178
+ fullWidth: !0,
1179
+ loading: t,
1180
+ pagination: Y({
1181
+ onPageChange: r,
1182
+ onPageSizeChange: i,
1183
+ page: o,
1184
+ pageSize: s,
1185
+ total: u
1186
+ }),
1187
+ style: { minWidth: rt }
1188
+ })
1189
+ })
1190
+ ] });
1191
+ }
1192
+ function ct({ actions: e, loading: n, onCreate: r, onActiveFilterChange: a, onOrgUnitFilterChange: o, onPageChange: s, onPageSizeChange: c, onPositionFilterChange: l, orgUnitFilter: u, orgUnits: d, page: p, pageSize: m, positionFilter: g, positions: _, rows: S, statusFilter: C, total: w }) {
1193
+ let T = f(() => [
1194
+ {
1195
+ dataIndex: "memberName",
1196
+ key: "memberName",
1197
+ title: "會員",
1198
+ width: 280
1199
+ },
1200
+ {
1201
+ dataIndex: "orgUnitName",
1202
+ key: "orgUnitName",
1203
+ title: "組織",
1204
+ width: 280
1205
+ },
1206
+ {
1207
+ dataIndex: "positionName",
1208
+ key: "positionName",
1209
+ title: "職位",
1210
+ width: 220
1211
+ },
1212
+ {
1213
+ key: "isPrimary",
1214
+ render: (e) => e.isPrimary ? "主要" : "一般",
1215
+ title: "類型",
1216
+ width: 104
1217
+ },
1218
+ {
1219
+ dataIndex: "effectiveFrom",
1220
+ key: "effectiveFrom",
1221
+ title: "生效日",
1222
+ width: 140
1223
+ },
1224
+ {
1225
+ dataIndex: "effectiveTo",
1226
+ key: "effectiveTo",
1227
+ title: "結束日",
1228
+ width: 140
1229
+ }
1230
+ ], []), E = f(() => d.map(t), [d]), D = f(() => _.map(i), [_]);
1231
+ return /* @__PURE__ */ I(P, { children: [
1232
+ /* @__PURE__ */ F(Z, {
1233
+ actionLabel: "新增歸屬",
1234
+ description: "會員歸屬是 BPM 內部組織權限、主管解析與條件判斷的來源。",
1235
+ onCreate: r,
1236
+ title: "會員歸屬"
1237
+ }),
1238
+ /* @__PURE__ */ F(y, {
1239
+ className: [W.orgFilterArea, W.membershipFilterArea].join(" "),
1240
+ size: "sub",
1241
+ children: /* @__PURE__ */ I(b, { children: [
1242
+ /* @__PURE__ */ F(v, {
1243
+ span: 2,
1244
+ children: /* @__PURE__ */ F(x, {
1245
+ fullWidth: !0,
1246
+ layout: R.VERTICAL,
1247
+ name: "membershipOrgUnitFilter",
1248
+ children: /* @__PURE__ */ F(h, {
1249
+ disabledOptionsFilter: !0,
1250
+ emptyText: "沒有符合的組織",
1251
+ inputProps: {
1252
+ autoCapitalize: "none",
1253
+ autoCorrect: "off",
1254
+ name: "membershipOrgUnitFilter",
1255
+ spellCheck: !1
1256
+ },
1257
+ mode: "single",
1258
+ name: "membershipOrgUnitFilter",
1259
+ onChange: (e) => o(At(e)),
1260
+ options: [...E],
1261
+ placeholder: "全部組織",
1262
+ size: "sub",
1263
+ value: u
1264
+ })
1265
+ })
1266
+ }),
1267
+ /* @__PURE__ */ F(v, {
1268
+ span: 2,
1269
+ children: /* @__PURE__ */ F(x, {
1270
+ fullWidth: !0,
1271
+ layout: R.VERTICAL,
1272
+ name: "membershipPositionFilter",
1273
+ children: /* @__PURE__ */ F(h, {
1274
+ disabledOptionsFilter: !0,
1275
+ emptyText: "沒有符合的職位",
1276
+ inputProps: {
1277
+ autoCapitalize: "none",
1278
+ autoCorrect: "off",
1279
+ name: "membershipPositionFilter",
1280
+ spellCheck: !1
1281
+ },
1282
+ mode: "single",
1283
+ name: "membershipPositionFilter",
1284
+ onChange: (e) => l(jt(e)),
1285
+ options: [...D],
1286
+ placeholder: "全部職位",
1287
+ size: "sub",
1288
+ value: g
1289
+ })
1290
+ })
1291
+ }),
1292
+ /* @__PURE__ */ F(v, {
1293
+ span: 2,
1294
+ children: /* @__PURE__ */ F(x, {
1295
+ fullWidth: !0,
1296
+ layout: R.VERTICAL,
1297
+ name: "membershipStatusFilter",
1298
+ children: /* @__PURE__ */ F(h, {
1299
+ disabledOptionsFilter: !0,
1300
+ emptyText: "沒有符合的狀態",
1301
+ inputProps: {
1302
+ autoCapitalize: "none",
1303
+ autoCorrect: "off",
1304
+ name: "membershipStatusFilter",
1305
+ spellCheck: !1
1306
+ },
1307
+ mode: "single",
1308
+ name: "membershipStatusFilter",
1309
+ onChange: (e) => a(kt(e)),
1310
+ options: [...et],
1311
+ placeholder: "全部狀態",
1312
+ size: "sub",
1313
+ value: C
1314
+ })
1315
+ })
1316
+ })
1317
+ ] })
1318
+ }),
1319
+ /* @__PURE__ */ F("div", {
1320
+ className: W.tableFrame,
1321
+ children: /* @__PURE__ */ F(j, {
1322
+ actions: e,
1323
+ columns: T,
1324
+ dataSource: [...S],
1325
+ fullWidth: !0,
1326
+ loading: n,
1327
+ pagination: Y({
1328
+ onPageChange: s,
1329
+ onPageSizeChange: c,
1330
+ page: p,
1331
+ pageSize: m,
1332
+ total: w
1333
+ }),
1334
+ style: { minWidth: it }
1335
+ })
1336
+ })
1337
+ ] });
1338
+ }
1339
+ function lt({ actions: e, loading: t, onCreate: n, onActiveFilterChange: r, onPageChange: i, onPageSizeChange: a, onScopeTypeFilterChange: o, page: s, pageSize: c, rows: l, scopeTypeFilter: u, statusFilter: d, total: p }) {
1340
+ let m = f(() => [
1341
+ {
1342
+ dataIndex: "scopeLabel",
1343
+ key: "scopeLabel",
1344
+ title: "套用範圍",
1345
+ width: 320
1346
+ },
1347
+ {
1348
+ dataIndex: "managerName",
1349
+ key: "managerName",
1350
+ title: "簽核主管",
1351
+ width: 300
1352
+ },
1353
+ {
1354
+ dataIndex: "priority",
1355
+ key: "priority",
1356
+ title: "優先序",
1357
+ width: 96
1358
+ },
1359
+ {
1360
+ dataIndex: "effectiveFrom",
1361
+ key: "effectiveFrom",
1362
+ title: "生效日",
1363
+ width: 140
1364
+ },
1365
+ {
1366
+ dataIndex: "effectiveTo",
1367
+ key: "effectiveTo",
1368
+ title: "結束日",
1369
+ width: 140
1370
+ }
1371
+ ], []);
1372
+ return /* @__PURE__ */ I(P, { children: [
1373
+ /* @__PURE__ */ F(Z, {
1374
+ actionLabel: "新增主管規則",
1375
+ description: "簽核主管規則獨立於組織樹 parent,解析優先序為會員、組織、職位。",
1376
+ onCreate: n,
1377
+ title: "簽核主管"
1378
+ }),
1379
+ /* @__PURE__ */ F(y, {
1380
+ className: W.orgFilterArea,
1381
+ size: "sub",
1382
+ children: /* @__PURE__ */ I(b, { children: [/* @__PURE__ */ F(v, {
1383
+ span: 3,
1384
+ children: /* @__PURE__ */ F(x, {
1385
+ fullWidth: !0,
1386
+ layout: R.VERTICAL,
1387
+ name: "managerScopeTypeFilter",
1388
+ children: /* @__PURE__ */ F(O, {
1389
+ clearable: !1,
1390
+ fullWidth: !0,
1391
+ onChange: (e) => o(Dt(e)),
1392
+ options: [...Qe],
1393
+ placeholder: "套用範圍",
1394
+ size: "sub",
1395
+ value: u
1396
+ })
1397
+ })
1398
+ }), /* @__PURE__ */ F(v, {
1399
+ span: 2,
1400
+ children: /* @__PURE__ */ F(x, {
1401
+ fullWidth: !0,
1402
+ layout: R.VERTICAL,
1403
+ name: "managerStatusFilter",
1404
+ children: /* @__PURE__ */ F(O, {
1405
+ clearable: !1,
1406
+ fullWidth: !0,
1407
+ onChange: (e) => r(Ot(e)),
1408
+ options: [...et],
1409
+ placeholder: "狀態",
1410
+ size: "sub",
1411
+ value: d
1412
+ })
1413
+ })
1414
+ })] })
1415
+ }),
1416
+ /* @__PURE__ */ F("div", {
1417
+ className: W.tableFrame,
1418
+ children: /* @__PURE__ */ F(j, {
1419
+ actions: e,
1420
+ columns: m,
1421
+ dataSource: [...l],
1422
+ fullWidth: !0,
1423
+ loading: t,
1424
+ pagination: Y({
1425
+ onPageChange: i,
1426
+ onPageSizeChange: a,
1427
+ page: s,
1428
+ pageSize: c,
1429
+ total: p
1430
+ }),
1431
+ style: { minWidth: at }
1432
+ })
1433
+ })
1434
+ ] });
1435
+ }
1436
+ function Y({ onPageChange: e, onPageSizeChange: t, page: n, pageSize: r, total: i }) {
1437
+ return {
1438
+ current: n,
1439
+ onChange: e,
1440
+ onChangePageSize: t,
1441
+ pageSize: r,
1442
+ pageSizeLabel: "每頁筆數",
1443
+ pageSizeOptions: [...tt],
1444
+ renderResultSummary: (e, t, n) => `顯示 ${e}-${t} 筆,共 ${n} 筆`,
1445
+ showPageSizeOptions: !0,
1446
+ total: i
1447
+ };
1448
+ }
1449
+ function ut({ isTreeEditing: e, isTreeMode: t }) {
1450
+ return t ? e ? "儲存" : "開始編輯" : "新增組織";
1451
+ }
1452
+ function dt({ isTreeEditing: e, isTreeMode: t }) {
1453
+ return t ? e ? ne : te : L;
1454
+ }
1455
+ function X({ hasDraftChanges: e, isTreeEditing: t, isTreeMode: n, loading: r, saving: i }) {
1456
+ return n ? t ? !e || i : r : !1;
1457
+ }
1458
+ function Z({ actionDisabled: e = !1, actionIcon: t = L, actionLabel: n, actions: r, description: i, onCreate: a, title: o }) {
1459
+ return /* @__PURE__ */ I("div", {
1460
+ className: W.tableIntro,
1461
+ children: [/* @__PURE__ */ I("div", { children: [/* @__PURE__ */ F(M, {
1462
+ component: "h2",
1463
+ variant: "h3",
1464
+ children: o
1465
+ }), /* @__PURE__ */ F(M, {
1466
+ color: "text-neutral",
1467
+ variant: "body",
1468
+ children: i
1469
+ })] }), /* @__PURE__ */ I("div", {
1470
+ className: W.tableIntroActions,
1471
+ children: [r, /* @__PURE__ */ F(g, {
1472
+ disabled: e,
1473
+ icon: t,
1474
+ iconType: "leading",
1475
+ onClick: a,
1476
+ children: n
1477
+ })]
1478
+ })]
1479
+ });
1480
+ }
1481
+ function ft({ modal: e, onClose: n, onSubmit: i, orgUnits: a, saving: o }) {
1482
+ let [c, l] = m(""), [d, f] = m(""), [p, h] = m(null), [g, _] = m(G[2]);
1483
+ return u(() => {
1484
+ if (!e) return;
1485
+ let n = e.record, r = n?.parentId ?? e.parentId ?? null, i = r ? a.find((e) => e.id === r) ?? null : null;
1486
+ l(n?.code ?? ""), f(n?.name ?? ""), h(i ? t(i) : null), _(G.find((e) => e.id === n?.type) ?? G[2]);
1487
+ }, [e, a]), /* @__PURE__ */ F(w, {
1488
+ cancelText: "取消",
1489
+ confirmButtonProps: { disabled: !c || !d },
1490
+ confirmText: e?.type === "EDIT" ? "儲存" : "建立",
1491
+ loading: o,
1492
+ modalType: "standard",
1493
+ onCancel: n,
1494
+ onClose: n,
1495
+ onConfirm: () => void i({
1496
+ code: c,
1497
+ name: d,
1498
+ parentId: p?.id ?? null,
1499
+ type: g.id
1500
+ }),
1501
+ open: !!e,
1502
+ showModalFooter: !0,
1503
+ showModalHeader: !0,
1504
+ size: "regular",
1505
+ title: e?.type === "EDIT" ? "編輯組織" : "新增組織",
1506
+ children: /* @__PURE__ */ I("div", {
1507
+ className: W.modalFields,
1508
+ children: [
1509
+ /* @__PURE__ */ F(Q, {
1510
+ label: "代碼",
1511
+ name: "orgCode",
1512
+ onChange: l,
1513
+ placeholder: "例如 FIN-TW",
1514
+ value: c
1515
+ }),
1516
+ /* @__PURE__ */ F(Q, {
1517
+ label: "名稱",
1518
+ name: "orgName",
1519
+ onChange: f,
1520
+ placeholder: "例如 財務部",
1521
+ value: d
1522
+ }),
1523
+ /* @__PURE__ */ F(s, {
1524
+ label: "類型",
1525
+ name: "orgType",
1526
+ children: /* @__PURE__ */ F(O, {
1527
+ clearable: !1,
1528
+ fullWidth: !0,
1529
+ onChange: (e) => _(wt(e)),
1530
+ options: [...G],
1531
+ placeholder: "選擇組織類型",
1532
+ value: g
1533
+ })
1534
+ }),
1535
+ /* @__PURE__ */ F(s, {
1536
+ label: "上層組織",
1537
+ name: "parentId",
1538
+ children: /* @__PURE__ */ F(r, {
1539
+ name: "parentId",
1540
+ onChange: h,
1541
+ orgUnits: a.filter((t) => t.id !== e?.record?.id),
1542
+ placeholder: "選擇上層組織",
1543
+ value: p
1544
+ })
1545
+ })
1546
+ ]
1547
+ })
1548
+ });
1549
+ }
1550
+ function pt({ modal: e, onClose: t, onSubmit: n, saving: r }) {
1551
+ let [i, a] = m(""), [o, s] = m("0"), [c, l] = m("");
1552
+ return u(() => {
1553
+ e && (a(e.record?.code ?? ""), s(String(e.record?.level ?? 0)), l(e.record?.name ?? ""));
1554
+ }, [e]), /* @__PURE__ */ F(w, {
1555
+ cancelText: "取消",
1556
+ confirmButtonProps: { disabled: !i || !c },
1557
+ confirmText: e?.type === "EDIT" ? "儲存" : "建立",
1558
+ loading: r,
1559
+ modalType: "standard",
1560
+ onCancel: t,
1561
+ onClose: t,
1562
+ onConfirm: () => void n({
1563
+ code: i,
1564
+ level: Number(o),
1565
+ name: c
1566
+ }),
1567
+ open: !!e,
1568
+ showModalFooter: !0,
1569
+ showModalHeader: !0,
1570
+ size: "regular",
1571
+ title: e?.type === "EDIT" ? "編輯職位" : "新增職位",
1572
+ children: /* @__PURE__ */ I("div", {
1573
+ className: W.modalFields,
1574
+ children: [
1575
+ /* @__PURE__ */ F(Q, {
1576
+ label: "代碼",
1577
+ name: "positionCode",
1578
+ onChange: a,
1579
+ placeholder: "例如 FIN-MGR",
1580
+ value: i
1581
+ }),
1582
+ /* @__PURE__ */ F(Q, {
1583
+ label: "名稱",
1584
+ name: "positionName",
1585
+ onChange: l,
1586
+ placeholder: "例如 財務主管",
1587
+ value: c
1588
+ }),
1589
+ /* @__PURE__ */ F(Q, {
1590
+ label: "職等",
1591
+ name: "positionLevel",
1592
+ onChange: s,
1593
+ placeholder: "例如 5",
1594
+ value: o
1595
+ })
1596
+ ]
1597
+ })
1598
+ });
1599
+ }
1600
+ function mt({ membersById: e, modal: c, onClose: l, onSubmit: d, orgUnits: f, positions: p, saving: h }) {
1601
+ let [g, _] = m(Ft()), [v, y] = m(""), [b, x] = m(q[1]), [S, C] = m(null), [T, E] = m(null), [D, k] = m(null);
1602
+ return u(() => {
1603
+ if (!c) return;
1604
+ let r = c.record, a = r ? e.get(r.memberId) : null;
1605
+ _(r?.effectiveFrom ?? Ft()), y(r?.effectiveTo ?? ""), x(q.find((e) => e.value === r?.isPrimary) ?? q[1]), C(a ? n(a) : null), E(Pt(f.find((e) => e.id === r?.orgUnitId), t)), k(Pt(p.find((e) => e.id === r?.positionId), i));
1606
+ }, [
1607
+ e,
1608
+ c,
1609
+ f,
1610
+ p
1611
+ ]), /* @__PURE__ */ F(w, {
1612
+ cancelText: "取消",
1613
+ confirmButtonProps: { disabled: !S || !T },
1614
+ confirmText: c?.type === "EDIT" ? "儲存" : "建立",
1615
+ loading: h,
1616
+ modalType: "standard",
1617
+ onCancel: l,
1618
+ onClose: l,
1619
+ onConfirm: () => void d({
1620
+ effectiveFrom: g,
1621
+ effectiveTo: v || null,
1622
+ isPrimary: b.value,
1623
+ memberId: S?.id ?? null,
1624
+ orgUnitId: T?.id ?? null,
1625
+ positionId: D?.id ?? null
1626
+ }),
1627
+ open: !!c,
1628
+ showModalFooter: !0,
1629
+ showModalHeader: !0,
1630
+ size: "regular",
1631
+ title: c?.type === "EDIT" ? "編輯會員歸屬" : "新增會員歸屬",
1632
+ children: /* @__PURE__ */ I("div", {
1633
+ className: W.modalFields,
1634
+ children: [
1635
+ /* @__PURE__ */ F(s, {
1636
+ label: "會員",
1637
+ name: "memberId",
1638
+ children: /* @__PURE__ */ F(o, {
1639
+ name: "memberId",
1640
+ onChange: C,
1641
+ placeholder: "搜尋會員姓名或信箱",
1642
+ value: S
1643
+ })
1644
+ }),
1645
+ /* @__PURE__ */ F(s, {
1646
+ label: "組織",
1647
+ name: "orgUnitId",
1648
+ children: /* @__PURE__ */ F(r, {
1649
+ name: "orgUnitId",
1650
+ onChange: E,
1651
+ orgUnits: f,
1652
+ placeholder: "選擇歸屬組織",
1653
+ value: T
1654
+ })
1655
+ }),
1656
+ /* @__PURE__ */ F(s, {
1657
+ label: "職位",
1658
+ name: "positionId",
1659
+ children: /* @__PURE__ */ F(a, {
1660
+ name: "positionId",
1661
+ onChange: k,
1662
+ placeholder: "選擇職位",
1663
+ positions: p,
1664
+ value: D
1665
+ })
1666
+ }),
1667
+ /* @__PURE__ */ F(s, {
1668
+ label: "歸屬類型",
1669
+ name: "isPrimary",
1670
+ children: /* @__PURE__ */ F(O, {
1671
+ clearable: !1,
1672
+ fullWidth: !0,
1673
+ onChange: (e) => x(Mt(e)),
1674
+ options: [...q],
1675
+ placeholder: "選擇歸屬類型",
1676
+ value: b
1677
+ })
1678
+ }),
1679
+ /* @__PURE__ */ F(gt, {
1680
+ label: "生效日",
1681
+ name: "membershipEffectiveFrom",
1682
+ onChange: _,
1683
+ placeholder: "YYYY-MM-DD",
1684
+ value: g
1685
+ }),
1686
+ /* @__PURE__ */ F(gt, {
1687
+ label: "結束日",
1688
+ name: "membershipEffectiveTo",
1689
+ onChange: y,
1690
+ placeholder: "YYYY-MM-DD,未設定代表無期限",
1691
+ value: v
1692
+ })
1693
+ ]
1694
+ })
1695
+ });
1696
+ }
1697
+ function ht({ membersById: e, modal: c, onClose: l, onSubmit: d, orgUnits: f, positions: p, saving: h }) {
1698
+ let [g, _] = m(Ft()), [v, y] = m(""), [b, x] = m(null), [S, C] = m("0"), [T, E] = m(null), [D, k] = m(null), [A, j] = m(null), [N, P] = m(K[0]);
1699
+ u(() => {
1700
+ if (!c) return;
1701
+ let r = c.record, a = K.find((e) => e.id === r?.scopeType) ?? K[0];
1702
+ _(r?.effectiveFrom ?? Ft()), y(r?.effectiveTo ?? ""), x(Pt(r ? e.get(r.managerMemberId) : null, n)), C(String(r?.priority ?? 0)), E(a.id === "MEMBER" ? Pt(r ? e.get(r.scopeId) : null, n) : null), k(a.id === "ORG_UNIT" ? Pt(f.find((e) => e.id === r?.scopeId), t) : null), j(a.id === "POSITION" ? Pt(p.find((e) => e.id === r?.scopeId), i) : null), P(a);
1703
+ }, [
1704
+ e,
1705
+ c,
1706
+ f,
1707
+ p
1708
+ ]);
1709
+ let ee = N.id === "MEMBER" ? T?.id : N.id === "ORG_UNIT" ? D?.id : A?.id, te = !!(N.id === "MEMBER" && T?.id && b?.id && T.id === b.id);
1710
+ return /* @__PURE__ */ F(w, {
1711
+ cancelText: "取消",
1712
+ confirmButtonProps: { disabled: !b || !ee || te },
1713
+ confirmText: c?.type === "EDIT" ? "儲存" : "建立",
1714
+ loading: h,
1715
+ modalType: "standard",
1716
+ onCancel: l,
1717
+ onClose: l,
1718
+ onConfirm: () => void d({
1719
+ effectiveFrom: g,
1720
+ effectiveTo: v || null,
1721
+ managerMemberId: b?.id ?? null,
1722
+ priority: Number(S),
1723
+ scopeId: ee ?? null,
1724
+ scopeType: N.id
1725
+ }),
1726
+ open: !!c,
1727
+ showModalFooter: !0,
1728
+ showModalHeader: !0,
1729
+ size: "regular",
1730
+ title: c?.type === "EDIT" ? "編輯主管規則" : "新增主管規則",
1731
+ children: /* @__PURE__ */ I("div", {
1732
+ className: W.modalFields,
1733
+ children: [
1734
+ /* @__PURE__ */ F(s, {
1735
+ label: "套用範圍",
1736
+ name: "scopeType",
1737
+ children: /* @__PURE__ */ F(O, {
1738
+ clearable: !1,
1739
+ fullWidth: !0,
1740
+ onChange: (e) => P(Et(e)),
1741
+ options: [...K],
1742
+ placeholder: "選擇套用範圍",
1743
+ value: N
1744
+ })
1745
+ }),
1746
+ N.id === "MEMBER" ? /* @__PURE__ */ F(s, {
1747
+ label: "會員",
1748
+ name: "scopeMemberId",
1749
+ children: /* @__PURE__ */ F(o, {
1750
+ name: "scopeMemberId",
1751
+ onChange: E,
1752
+ placeholder: "搜尋套用會員",
1753
+ value: T
1754
+ })
1755
+ }) : null,
1756
+ N.id === "ORG_UNIT" ? /* @__PURE__ */ F(s, {
1757
+ label: "組織",
1758
+ name: "scopeOrgUnitId",
1759
+ children: /* @__PURE__ */ F(r, {
1760
+ name: "scopeOrgUnitId",
1761
+ onChange: k,
1762
+ orgUnits: f,
1763
+ placeholder: "選擇套用組織",
1764
+ value: D
1765
+ })
1766
+ }) : null,
1767
+ N.id === "POSITION" ? /* @__PURE__ */ F(s, {
1768
+ label: "職位",
1769
+ name: "scopePositionId",
1770
+ children: /* @__PURE__ */ F(a, {
1771
+ name: "scopePositionId",
1772
+ onChange: j,
1773
+ placeholder: "選擇套用職位",
1774
+ positions: p,
1775
+ value: A
1776
+ })
1777
+ }) : null,
1778
+ /* @__PURE__ */ F(s, {
1779
+ label: "簽核主管",
1780
+ name: "managerMemberId",
1781
+ children: /* @__PURE__ */ F(o, {
1782
+ name: "managerMemberId",
1783
+ onChange: x,
1784
+ placeholder: "搜尋簽核主管",
1785
+ value: b
1786
+ })
1787
+ }),
1788
+ te ? /* @__PURE__ */ F(M, {
1789
+ color: "text-error",
1790
+ variant: "caption",
1791
+ children: "簽核主管不可設定為套用會員本人。"
1792
+ }) : null,
1793
+ /* @__PURE__ */ F(Q, {
1794
+ label: "優先序",
1795
+ name: "managerPriority",
1796
+ onChange: C,
1797
+ placeholder: "例如 10",
1798
+ value: S
1799
+ }),
1800
+ /* @__PURE__ */ F(gt, {
1801
+ label: "生效日",
1802
+ name: "managerEffectiveFrom",
1803
+ onChange: _,
1804
+ placeholder: "YYYY-MM-DD",
1805
+ value: g
1806
+ }),
1807
+ /* @__PURE__ */ F(gt, {
1808
+ label: "結束日",
1809
+ name: "managerEffectiveTo",
1810
+ onChange: y,
1811
+ placeholder: "YYYY-MM-DD,未設定代表無期限",
1812
+ value: v
1813
+ })
1814
+ ]
1815
+ })
1816
+ });
1817
+ }
1818
+ function Q({ label: e, name: t, onChange: n, placeholder: r, value: i }) {
1819
+ return /* @__PURE__ */ F(s, {
1820
+ label: e,
1821
+ name: t,
1822
+ children: /* @__PURE__ */ F(S, {
1823
+ fullWidth: !0,
1824
+ name: t,
1825
+ onChange: (e) => n(e.target.value),
1826
+ placeholder: r,
1827
+ value: i
1828
+ })
1829
+ });
1830
+ }
1831
+ function gt({ label: e, name: t, onChange: n, placeholder: r, value: i }) {
1832
+ return /* @__PURE__ */ F(s, {
1833
+ label: e,
1834
+ name: t,
1835
+ children: /* @__PURE__ */ F(_, {
1836
+ format: "YYYY-MM-DD",
1837
+ fullWidth: !0,
1838
+ inputProps: { name: t },
1839
+ onChange: (e) => n(It(e)),
1840
+ placeholder: r,
1841
+ value: i.trim() ? i : void 0
1842
+ })
1843
+ });
1844
+ }
1845
+ function _t(e, t) {
1846
+ return [...new Set([
1847
+ ...e.map((e) => e.memberId),
1848
+ ...t.map((e) => e.managerMemberId),
1849
+ ...t.filter((e) => e.scopeType === "MEMBER").map((e) => e.scopeId)
1850
+ ])];
1851
+ }
1852
+ function vt(e, t) {
1853
+ return e.scopeType === "MEMBER" ? `會員:${yt(t.membersById.get(e.scopeId))}` : e.scopeType === "ORG_UNIT" ? `組織:${bt(t.orgUnitsById.get(e.scopeId))}` : `職位:${St(t.positionsById.get(e.scopeId))}`;
1854
+ }
1855
+ function yt(e) {
1856
+ return e ? `${e.name} · ${e.email}` : "未知會員";
1857
+ }
1858
+ function bt(e) {
1859
+ return e ? `${e.name} · ${e.code}` : "未知組織";
1860
+ }
1861
+ function xt(e) {
1862
+ return G.find((t) => t.id.toLowerCase() === e.toLowerCase())?.name ?? "未知類型";
1863
+ }
1864
+ function St(e) {
1865
+ return e ? `${e.name} · ${e.code}` : "未指定";
1866
+ }
1867
+ function Ct(e) {
1868
+ return e === "MANAGERS" || e === "MEMBERSHIPS" || e === "POSITIONS" ? e : "ORG_UNITS";
1869
+ }
1870
+ function wt(e) {
1871
+ let t = $(e) ? e : null;
1872
+ if (typeof t?.id == "string") {
1873
+ let e = t.id;
1874
+ return G.find((t) => t.id.toLowerCase() === e.toLowerCase()) ?? G[2];
1875
+ }
1876
+ return G[2];
1877
+ }
1878
+ function Tt(e) {
1879
+ let t = $(e) ? e : null;
1880
+ if (typeof t?.id == "string") {
1881
+ let e = t.id;
1882
+ return Xe.find((t) => t.id.toLowerCase() === e.toLowerCase()) ?? Ye;
1883
+ }
1884
+ return Ye;
1885
+ }
1886
+ function Et(e) {
1887
+ return Nt(e, K, K[0]);
1888
+ }
1889
+ function Dt(e) {
1890
+ return Nt(e, Qe, Ze);
1891
+ }
1892
+ function Ot(e) {
1893
+ return Nt(e, et, $e);
1894
+ }
1895
+ function kt(e) {
1896
+ let t = $(e) ? e : null, n = typeof t?.id == "string" ? t.id : null;
1897
+ return et.find((e) => e.id === n) ?? null;
1898
+ }
1899
+ function At(e) {
1900
+ let t = $(e) ? e : null, n = typeof t?.id == "string" ? t.id : null, r = typeof t?.name == "string" ? t.name : null;
1901
+ return n && r ? {
1902
+ id: n,
1903
+ name: r
1904
+ } : null;
1905
+ }
1906
+ function jt(e) {
1907
+ let t = $(e) ? e : null, n = typeof t?.id == "string" ? t.id : null, r = typeof t?.name == "string" ? t.name : null;
1908
+ return n && r ? {
1909
+ id: n,
1910
+ name: r
1911
+ } : null;
1912
+ }
1913
+ function Mt(e) {
1914
+ return Nt(e, q, q[1]);
1915
+ }
1916
+ function Nt(e, t, n) {
1917
+ let r = $(e) ? e : null, i = typeof r?.id == "string" ? r.id : null;
1918
+ return t.find((e) => e.id === i) ?? n;
1919
+ }
1920
+ function $(e) {
1921
+ return typeof e == "object" && !!e && !Array.isArray(e);
1922
+ }
1923
+ function Pt(e, t) {
1924
+ return e ? t(e) : null;
1925
+ }
1926
+ function Ft() {
1927
+ return Lt(/* @__PURE__ */ new Date());
1928
+ }
1929
+ function It(e) {
1930
+ let t = e ? new Date(e) : null;
1931
+ return t && !Number.isNaN(t.getTime()) ? Lt(t) : "";
1932
+ }
1933
+ function Lt(e) {
1934
+ return `${e.getFullYear()}-${Rt(e.getMonth() + 1)}-${Rt(e.getDate())}`;
1935
+ }
1936
+ function Rt(e) {
1937
+ return String(e).padStart(2, "0");
1938
+ }
1939
+ function zt(e) {
1940
+ return e instanceof Error ? e.message : "讀取組織資料失敗。";
1941
+ }
1942
+ //#endregion
1943
+ export { J as t };
1944
+
1945
+ //# sourceMappingURL=AdminOrgsView-DZaVAbaQ.js.map